Arquitetura de Computadores
Apresentação Teóricas Prof. Helder Daniel Gab: 2.66 hdaniel@ualg.pt Práticas Prof. Amine Berquia Gab: 2.?? hdaniel@ualg.pt AA2011/2012 ArqC - DEEI - UAlg 2 /
Programa Práticas (resumido) Introdução Representação de dados Arquitetura MIPS Registos Memória Instruções MIPS Saltos Condições / Ciclos Funções Stack Recursividade Exceções Diretivas Aritmética Lógica / Shift Acesso/escrita de memória I/O AA2011/2012 ArqC - DEEI - UAlg 3 /
Disclaimer As apresentações mostradas nas aulas Praticas não abrangem toda a matéria apresentada. Desta forma os alunos deverão assistir a todas as aulas. Estas apresentações encontram-se na versão beta 0.1, pelo que poderão apresentar algumas incorreções. Agradece-se que esses erros sejam comunicados para que sejam corrigidos. Aceitam-se sugestões para a melhoria das apresentações. AA2011/2012 ArqC - DEEI - UAlg 4 /
Arquitetura de Computadores Definições... a estrutura de um computador que um programador de código máquina tem de entender para escrever corretamente um programa para essa máquina (P&H) Por outras palavras: a parte do conjunto de instruções visível ao programador Descrição lógica dos componentes básicos + operações básicas (do computador) Através de uma Linguagem chamada Assembly AA2011/2012 ArqC - DEEI - UAlg 5 /
Arquitetura de Computadores (2) Todos os processadores têm a mesma arquitetura? Não! As arquiteturas dividem-se em famílias MIPS, PIC, SPARC, Alpha, Motorola, Intel, etc... Cada família têm a sua própria arquitetura Consequentemente, cada arquitetura tem a sua linguagem Assembly ( idioma ) A mesma arquitetura implica o mesmo hardware? Não! AMD e Intel utilizam mesma arquitetura (e.g. x86) ter mesma arquitetura correr mesmos programas AA2011/2012 ArqC - DEEI - UAlg 6 /
Idioma do Computador Para compreender a arquitetura de um computador Aprender o idioma do computador Idioma conjunto de palavras Palavras da linguagem do computador Instruções Idioma do computador Conjunto de instruções Instruction Set Arquitecture (ISA) Parte da arquitetura relacionada com a programação AA2011/2012 ArqC - DEEI - UAlg 7 /
Código Máquina O computador fala binário Instruções em código máquina: 000000 01001 01010 01000 00000 100000 É difícil para os humanos ler código máquina Preferimos representar as instruções num formato simbólico chamado: Assembly: add $t0, $t1, $t2 Muito mais simples de ler! AA2011/2012 ArqC - DEEI - UAlg 8 /
Do código fonte ao código máquina Compilar Assemblar Linkar Compilador: tradutor para assembly de cada arquitetura p.ex. com gcc pode-se pedir compilar apenas: gcc -S programa.c Assemblador: produz código máquina (ficheiros objeto.o) Tradução de assembly para código máquina: ASSEMBLAGEM p.ex. com gcc pode-se pedir compilar e assemblar apenas: gcc -c programa.c Não tem ligação às bibliotecas, por isso, não pode ser executado Linkador: Liga os vários ficheiros objeto (com as bibliotecas) e produz o executável Nesta cadeira, vamos trabalhar com compiladores para MIPS32 AA2011/2012 ArqC - DEEI - UAlg 9 /
Camadas do Computador AA2011/2012 ArqC - DEEI - UAlg 10 /
Linguagem Assembly É a visualização da arquitetura de um computador em termos de programação Estudá-la é o mesmo que estudar a arquitetura do processador para o qual se programa Objetivo: conhecer melhor o funcionamento dos computadores AA2011/2012 ArqC - DEEI - UAlg 11 /
Linguagem Assembly (2) Linguagem de baixo nível (mais baixo só binário) Uma instrução Assembly corresponde a uma instrução máquina (Assembly puro) Exemplo de programa em Assembly MIPS (não puro):.data msg_ola:.asciiz "Ola mundo!\n";.text main: la $4, msg_ola li $2, 4 syscall li $2, 10 syscall AA2011/2012 ArqC - DEEI - UAlg 12 /
Linguagem Assembly (3) Não é frequente programar-se em Assembly Os programas são, normalmente, feitos numa linguagem de alto nível (e.g. Java, C) Programas feitos em: Linguagens de alto nível são independentes (supostamente) da máquina onde correm Java são totalmente independentes do processador onde correm Assembly são escritos completamente em função do processador AA2011/2012 ArqC - DEEI - UAlg 13 /
Assembly, para quê? Além dos motivos pedagógicos (arquitetura) A linguagem assembly é ideal para problemas onde a arquitetura do processador precise ser visível Sistemas operativos, compiladores, drivers, gráficos de baixo nível Sistemas Embebidos (principalmente), onde o processador é parte de uma máquina criada para um problema específico AA2011/2012 ArqC - DEEI - UAlg 14 /
MIPS32 Porquê? MIPS: Microprocessor without Interlocked Pipeline Stages É uma arquitetura RISC De todas as ISAs, a MIPS32 é das mais simples Simples = Eficiente Simples = Mais fácil de aprender mais simples que IA32 (A ISA para a arquitetura x86) Abrange os conceitos básicos de qualquer arquitetura mais evoluída AA2011/2012 ArqC - DEEI - UAlg 15 /
Utilizadores de MIPS Routers Cisco, Linksys Sony Playstation 2, e PSP Dispositivos WinCE Telemóveis Tablets etc... AA2011/2012 ArqC - DEEI - UAlg 16 /
Emulação Outra vez: Arquitetura de um processador? Descrição lógica dos componentes e operações básicas Pode ser implementada em hardware ou em software! Em hardware: processador (em silício) Em software: emulador (em execução num computador) Emuladores da arquitetura MIPS: PCSPIM, xspim, MARS, AA2011/2012 ArqC - DEEI - UAlg 17 /
MARS (1) Vamos utilizar o emulador da arquitetura MIPS32, MARS MARS: MIPS Assembler and Runtime Simulator Funciona sobre a JVM (JRE) Pode ser descarregado em: http://courses.missouristate.edu/kenvollmar/mars/ ou na tutoria eletrónica AA2011/2012 ArqC - DEEI - UAlg 18 /
MARS (2) AA2011/2012 ArqC - DEEI - UAlg 19 /
MARS (3) AA2011/2012 ArqC - DEEI - UAlg 20 /
Série de Fibonacci
Exercícios Explique em que consiste a Arquitetura de um Computador Diga se computadores com arquiteturas diferentes podem correr programas compilados em arquiteturas diferentes. Explique porquê. Relacione os termos Arquitetura de Computador e Instruction Set Arquitecture Explique o que é a Linguagem Assembly, e como é que esta é, normalmente, produzida? Explique o que é a Emulação, no contexto da cadeira. Descreva o processo pelo qual, um programa escrito numa linguagem de alto nível, tem de passar até poder ser executado num computador. Diga qual a arquitetura que vamos utilizar na cadeira. O que é o MARS? AA2011/2012 ArqC - DEEI - UAlg 22 /