Arquitetura de Computadores



Documentos relacionados
ARQUITETURA DE COMPUTADORES

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Organização de Computadores 1

Conjunto de Instruções e Arquitectura p.1

Aula 14: Instruções e Seus Tipos

Arquitetura de Computadores. Prof. João Bosco Jr.

Aula 26: Arquiteturas RISC vs. CISC

O Nível ISA. Modelo de programação Arquitecturas CISC e RISC Introdução ao IA-32 da Intel

RISC simples. Aula de Março de

Organização e Arquitetura de Computadores I

Arquiteturas RISC. (Reduced Instructions Set Computers)

Caminho dos Dados e Atrasos

Introdução à Organização de Computadores. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann

RISC - Reduced Instruction Set Computer

ANHANGUERA EDUCACIONAL. Capítulo 2. Conceitos de Hardware e Software

28/3/2011. Família Intel 80x86. Arquitetura dos Processadores Intel 80x86

Linguagem de Montagem

Arquitetura de Computadores. Tipos de Instruções

Conjunto de instruções. O Conjunto de Instruções. Conjunto de instruções. Instruções típicas. Instruções típicas. Instruções típicas

Computadores de Programação (MAB353)

Processador ( CPU ) E/S. Memória. Sistema composto por Processador, Memória e dispositivos de E/S, interligados por um barramento

Arquitetura de Computadores. Linguagem de Máquina

Conjunto de instruções do CPU. Arquitectura de um computador. Definição das instruções (1) Definição das instruções (2)

Conjunto de instruções e modos de. aula 4. Profa. Débora Matos

Primeiro nível desenvolvido, historicamente Atualmente existente entre o nível da microarquitetura e do sistema operacional

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES ARQUITETURAS RISC E CISC. Prof. Dr. Daniel Caetano

Arquitetura de Computadores

RISC X CISC - Pipeline

4-1. Parte2: A Arquitetura do Conjunto de Instruções

Objetivos Gerais. Arquitetura de Computadores. Arquiteturas estudadas. O Computador Neander

ULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

Arquitetura do conjunto de instruções (ISA); características de instruções de máquina; tipos de operandos

Componentes do Computador e. aula 3. Profa. Débora Matos

Organização e Arquitetura de Computadores I

SIS17 - Arquitetura de Computadores

Arquitetura de Computadores - Arquitetura RISC. por Helcio Wagner da Silva

Laboratório de Sistemas Processadores e Periféricos Lista de comandos de Assembly

Linguagem de Montagem

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

ArchC. Wesley Nunes Gonçalves

ULA Sinais de Controle enviados pela UC

Arquitetura de processadores: RISC e CISC

Sistemas Processadores e Periféricos Aula 5 - Revisão

MODOS DE ENDEREÇAMENTO

Programando o computador IAS

Informática I. Aula 5. Aula 5-13/05/2006 1

2 Formalidades referentes ao trabalho

Nível da Microarquitetura

Sistemas Computacionais II Professor Frederico Sauer


Arquitetura de Computadores RISC x CISC. Gustavo Pinto Vilar

Arquitetura de Computadores - Princípio de Funcionamento da CPU. Por Helcio Wagner da Silva

Evolução dos Processadores

Organização de Computadores

Geração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO

Linguagem de Montagem 2. Operações e Operandos

Edeyson Andrade Gomes

CAPÍTULO 3 NÍVEL ISA. 3.1 Introdução ao Nível de Arquitetura do Conjunto de Instruções

Organização de Computadores 1

Anotações da 2a Edição

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 10

Introdução à Arquitetura de Computadores. Renan Manola Introdução ao Computador 2010/01

ARQUITETURA DE COMPUTADORES

Pipeline. Todos os estágios devem estar prontos ao mesmo tempo para prosseguir.

Linguagem de Montagem Funcionamento de CPU e Assembly Rudimentar

Arquitetura de Computadores I

Arquitetura e Organização de Computadores

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias:

Nível da Arquitetura do Conjunto de Instruções. Ronaldo de Freitas Zampolo

MICROPROCESSADORES. Arquitectura do Conjunto de Instruções. Nuno Cavaco Gomes Horta. Universidade Técnica de Lisboa / Instituto Superior Técnico

Introdução à Organização de Computadores. Execução de Programas Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

3. O NIVEL DA LINGUAGEM DE MONTAGEM

Implementação de um soft-core em VHDL baseado no conjunto de instruções MIPS-I

Unidade 10: A Unidade Lógica Aritmética e as Instruções em Linguagem de Máquina Prof. Daniel Caetano

2 - Processadores. CEFET-RS Curso de Eletrônica. Organização de Computadores. Profs. Roberta Nobre & Sandro Silva

Conjunto de Instruções

Visão Geral da Arquitetura de Computadores. Prof. Elthon Scariel Dias

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Organização e Arquitetura de Computadores I

Arquitectura de Computadores

Conjunto de Instruções. Conjunto de Instruções

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Computadores de Programação (MAB353)

Arquitetura de Computadores I

Arquitectura do conjunto de instruções

Introdução. ULA: Faz os Cálculos UC: Como isso tudo ocorre?

Processadores BIP. Conforme Morandi et al (2006), durante o desenvolvimento do BIP, foram definidas três diretrizes de projeto:

Visão Geral de Pipelining

2. A influência do tamanho da palavra

Infraestrutura de Hardware. Instruindo um Computador

28/9/2010. Unidade de Controle Funcionamento e Implementação

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

Estrutura de um Computador

Predição de Desvios e Processadores Superescalares Especulativos

Transcrição:

Arquitetura de Computadores Prof. Fábio M. Costa Instituto de Informática UFG 1S/2004 ISA: Arquitetura de Conjunto de Instruções

Roteiro Introdução Classificação de conjuntos de instruções Endereçamento de memória Tipos de operações Tipos de dados (operandos) Formatos de instruções Controle de fluxo (procedimentos e subrotinas, interrupções)

Introdução

ISA: Definição software instruction set architecture hardware A parte do computador visível ao programador ou ao implementador de compiladores Interface entre o Hardware e o Software

Componentes do nível ISA Conjunto de instruções Conjunto de registradores Tipos de dados nativos Modos de endereçamento da memória Esquemas de E/S

Exemplo: ISA do MIPS R3000 Categorias de instruções Load/Store Computacionais Desvio Ponto flutuante co-processador Gerenciamento de memória Especiais Registradores R0 - R31 PC HI LO 3 Formatos de Instruções: todos com largura de 32 bits OP OP OP rs rt rd sa funct rs rt immediate jump target

Outro exemplo: IAS (bem antigo... mas dá uma boa idéia) Formato de dados (números inteiros) 0 1 39 bit de sinal Formato de instruções Instrução esquerda Instrução direita 0 8 19 20 28 39 Código da Operação (opcode) Endereço Código da Operação (opcode) Endereço

Organização do IAS Observe os registradores AC e MQ eles são usados como operandos em toda operação aritimética ou lógica executada

Conjunto de instruções do IAS (muito simples) Instruções de transferência de dados opcode mnemônico significado 00001010 LOAD MQ AC MQ 00001001 LOAD MQ,M(X) MQ mem(x) 00100001 STOR M(X) mem(x) AC 00000001 LOAD M(X) AC mem(x) 00000010 LOAD M(X) AC mem(x) 00000011 LOAD M(X) AC abs(mem(x)) 00000100 LOAD M(X) AC -abs(mem(x))

Conjunto de instruções do IAS (muito simples) Instruções de desvio incondicional opcode mnemônico significado 00001101 00001110 JUMP M(X,0:19) JUMP M(X,20:39) próx. instr.: metade esq. de mem(x) próx. instr.: metade dir. de mem(x)

Conjunto de instruções do IAS (muito simples) Instruções de desvio condicional opcode mnemônico significado 00001111 JUMP +(X,0:19) se AC >= 0, próx. instr.: metade esq. de mem(x) 00010000 JUMP +M(X,20:39) se AC >= 0, próx. instr.: metade dir. de mem(x)

Conjunto de instruções do IAS (muito simples) Instruções aritiméticas opcode mnemônico significado 00000101 ADD M(X) AC AC + mem(x) 00000111 ADD M(X) AC AC + mem(x) 00000110 SUB M(X) AC AC mem(x) 00001000 SUB M(X) AC AC mem(x) 00001011 MUL M(X) AC:MQ MQ * mem(x) 00001100 DIV M(X) MQ:AC AC / mem(x) 00010100 LSH AC AC * 2 (shift esq.) 00010101 RSH AC AC / 2 (shift dir.)

Conjunto de instruções do IAS (muito simples) Instruções de alteração de endereço opcode mnemônico significado 00010010 STOR M(X,8:19) substitui o campo de endereço à esq. de mem(x) pelos 12 bits mais à dir. de AC 00010011 STOR M(X,28:39) subst. o campo de endereço à dir. de mem(x) pelos 12 bits mais à esq. de AC

Classificação de Conjuntos de Instruções

Tipos de arquiteturas comuns Arquiteturas de pilha JVM Arquiteturas de acumulador IAS, Z80 (algum exemplo recente???) Arquiteturas registrador-registrador load-store computadores RISC típicos (MIPS, SPARC,...) Arquiteturas registrador-memória 80x86

Os 4 tipos de arquiteturas

C = A + B... Pilha Acumulador Registrador- Memória load-store Push A Load A Load R1, A Load R1, A Push B Add B Add R3, R1, B Load R2, B Add Store C Store R3, C Add R3, R1, R2 Pop C Store R3, C

Registradores Espaço de armazenamento de rápido acesso interno ao processador Usos: avaliação de expressões passagem de parâmetros armazenamento de variáveis muito usadas Arquiteturas de registrador: dois tipos registradores de propósito geral registradores com finalidades específicas

Exemplos de arquiteturas de registradores: MC68000 D0 Registradores de Dados D7 Estado do Programa Contador de Programa Reg. de status A0 Registradores de Endereços A7 A7

Exemplos de arquiteturas de registradores: 8086 AX BX CX DX Registradores Genéricos Acumulador Base Contador Dados CS DS ES SS Registradores de Segmento Código Dados Extra Pilha SP BP SI DI Registradores Índice Ponteiro de Pilha Ponteiro Base Índice Fonte Índice Destino PC flags Estado do Programa Contador de progr. Flags de status

Exemplos de arquiteturas de registradores: 80386 P II EAX EBX ECX EDX ESP EBP ESI EDI Registradores genéricos AX BX CX DX Registradores de índice SP BP SI DI PC flags Estado do Programa Contador de programa Flags de status

Operandos de uma instrução: classificação Número de endereços de memória Número máximo de operandos Tipos de arquitetura Exemplos 0 3 Reg-Reg (load-store) Alpha, ARM, MIPS, PowerPC, SPARC, SuperH, Trimedia, TM5200 1 2 Reg-Mem IBM 360/370, 80x86, Motorola 68K, TI TMS320C54x 2 2 Mem-Mem VAX 3 3 Mem-Mem VAX

Comparação Tipo Vantagens Desvantagens Reg-Reg (0,3) Reg-Mem (1,2) Mem-Mem (2,2) ou (3,3) instruções simples e de tamanho fixo toda instrução consome o mesmo número de ciclos de clock dados podem ser acessados sem antes fazer uma operação de carga (load) separada resulta em programas menores programas mais compactos não gasta registradores com itens temporários contagem de instruções mais alta programas maiores operandos não são equivalentes (um deles é fonte-resultado) codificação reduz o número de registradores CPI variável grande variação no tamanho de instruções acessos freqüentes à memoria: gargalo obsoleto

RISC vs. CISC RISC (Reduced Instruction Set Computer) instruções simples poucas instruções geralmente load-store instruções de tamanho fixo mais oportunidades de otimização (e.g., pipelines) instruções executadas diretamente pelo hardware CISC (Complex Instruction Set Computer) instruções mais complexas muitas instruções geralmente registrador-memória instruções de tamanho variável mais difícil otimizar instruções interpretadas por meio de microprograma Tendência atual: arquiteturas híbridas (e.g., P4)

Endereçamento de Memória

Interpretação de endereços de memória Memória endereçada em bytes Quantidades endereçadas: byte (8 bits) meia palavra (16 bits) palavra (32 bits) palavra dupla (64 bits)

Interpretação de endereços de memória: Ordem dos bytes Little-Endian bytes armazenados da direita para a esquerda Ex.: i.e., byte menos significativo fica no endereço menor palavra dupla com endereço xx...x000 X Big-Endian bytes armazenados da esquerda para a direita Ex.: i.e., byte mais significativo fica no endereço menor palavra dupla com endereço xx...x000 xx...x000 7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 xx...x000

Interpretação de endereços de memória: Alinhamento Em muitos computadores, os acessos a objetos maiores que um byte devem ser através de endereços alinhados Um acesso a um objeto de tamanho s bytes no endereço de byte A está alinhado se A mod s = 0 i.e., se o endereço é divisível pelo tamanho do objeto Acessos alinhados geralmente são mais eficientes

Modos de endereçamento Registrador Imediato Deslocamento Indireto de registrador Indexado Direto ou absoluto Indireto de memória Auto-incremento Autodecremento Escalonado

Modo Registrador Exemplo: Add R4, R3 Significado: Regs[R4] Regs[R4] + Regs[R3] Usando quando um ou mais operandos está em registradores (inclusive o operando de destino)

Modo Registrador (2) Opcode Instrução Nome do Registr. R Registradores Operando

Modo Imediato Exemplo: Add R4, #3 Significado: Regs[R4] Regs[R4] + 3 Usando quando um dos operandos é uma constante (codificada no programa) Opcode Instrução Operando

Modo Direto ou Absoluto Exemplo: Add R1, (1001) Significado: Regs[R1] Regs[R1] + Mem[1001] Usando no acesso a dados alocados estaticamente na memória (endereço constante)

Modo Direto ou Absoluto (2) Opcode Instrução Endereço A Memória Operando

Modo Indireto de Memória Exemplo: Add R1, @(R3) Significado: Regs[R1] Regs[R1] + Mem[Mem[Regs[R3]] Usando para de-referenciar um ponteiro

Modo Indireto de Memória (2) Opcode Instrução Nome do Registrador R Registradores Memória Ponteiro p/ operando Ponteiro p/ ponteiro Operando

Modo Indireto Registrador Exemplo: Add R4, (R1) Significado: Regs[R4] Regs[R4] + Mem[Regs[R1]] Usando à memória com uso de ponteiros para cálculo de endereço

Modo Indireto Registrador (2) Opcode Instrução Nome do Registr. R Memória Registradores Ponteiro p/ Operando Operando

Modo Deslocamento Exemplo: Add R4, 100(R1) Significado: Regs[R4] Regs[R4] + Mem[100+Regs[R1]] Usando para acesso a variáveis locais

Modo Deslocamento (2) Opcode Registr. R Instrução Endereço A Memória Registradores Ponteiro p/ Operando + Operando

Modo Indexado Exemplo: Add R3, (R1+R2) Significado: Regs[R3] Regs[R3] + Mem[Regs[R1]+Regs[R2]] Usando no acesso aos elementos de um vetor (R1=base, R2=índice)

Modo de Auto-Incremento Exemplo: Add R1, (R2)+ Significado: Regs[R1] Regs[R1] + Mem[Regs[R2]] Regs[R2] Regs[R2] + d Útil para percorrer arrays em loop R2 é inicializado com o endereço do primeiro elemento do array R2 incrementado de d unidades a cada iteração

Modo de Autodecremento Exemplo: Add R1, -(R2) Significado: Regs[R2] Regs[R2] d Idem Regs[R1] Regs[R1] + Mem[Regs[R2]] R2 é decrementado de d unidades a cada iteração

Modo Escalonado Exemplo: Add R1, 100(R2)[R3] Significado: Regs[R1] Regs[R1] + Mem[100 + Regs[R2] + Regs[R3] * d] Usado para indexar arrays cujos elementos tenham tamanhos não convencionais

Modos de endereçamento: Estatísticas de uso Modo Registrador (direto): 50% do total

Tipo e Tamanho de Operandos Especificação: como parte do opcode marcador (tag) junto ao operando Na memória: apenas bits Tipo e tamanho dependem da interpretação Instruções apropriadas para cada tipo de dados

Tipos e Tamanhos Comuns de Operandos Tipo caractere caractere Unicode inteiro inteiro curto ponto flutuante prec. simples ponto flutuante prec. dupla decimal codificado em binário (BCD) strings Tamanho 8 bits 16 bits 32 bits 16 bits 32 bits 64 bits 4 bits nx8bits

Tamanhos de Operandos: Estatísticas de uso

Tipos de Operações Tipo de operação Aritiméticas e lógicas Transferência de dados Controle Ponto flutuante Decimal String Gráficos Exemplos Adição, subtração, e, ou, multiplicação, divisão Operações de carga e armazenamento Desvio, salto, chamada e retorno de procedimento, traps Adição, multiplicação, divisão, comparação Adição, multiplicação, conversões de formato Movimentação, comparação e pesquisa de strings Transformações com pixels e vértices, (des)compactação

Exemplo: Instruções mais comuns na família Intel x86 Instrução load desvio condicional comparação store add and sub trasf. registrador-registrador call (chamada de procedimento) return (retorno de procedimento) Total Freqüência para inteiros 22% 20% 16% 12% 8% 6% 5% 4% 1% 1% 96%

Instruções de Controle do Fluxo de Execução Desvios condicionais Saltos (incondicionais) Chamadas de procedimentos Retorno de procedimentos Interrupções ou traps

Instruções de Controle de Fluxo: Freqüência

Controle de Fluxo: Especificando o endereço alvo Na própria instrução (imediato) geralmente com o uso de rótulos estático Em um registrador (indireto) dinâmico (endereço não é conhecido a priori) Em uma posição de memória (indireto) geralmente na pilha dinâmico (endereço não é conhecido a priori)

Usos de instruções de controle de fluxo Desvios simples, para uma instrução conhecida estaticamente Desvios dinâmicos, com endereço calculado pelo programa case/switch, funções e métodos virtuais, ponteiros para funções em C, bibliotecas de carga dinâmica Chamada de procedimentos Retorno de procedimentos (dinâmico)

Desvios relativos ao PC Ex.1) Memória Ex.2) Memória próx. instrução O endereço de desvio especificado na instrução é somado ao (subtraído do) PC PC jump 4 PC jump -3 próx. instrução PC: Contador de Programa determina a próxima instrução a ser executada

Desvios relativos ao PC Ex.1) Memória Ex.2) PC Memória próx. instrução O endereço de desvio especificado na instrução é somado ao (subtraído do) PC jump 4 jump -3 PC próx. instrução PC: Contador de Programa determina a próxima instrução a ser executada

Desvios relativos ao PC Vantagem: Economiza bits no campo de endereço da instrução Maioria dos desvios são para instruções próximas à instrução atual Impacto direto no tamanho das instruções de desvio

Distribuição das distâncias de desvios Eixo x: número de bits necessários para o campo de endereço de destino

Desvios Condicionais Desvio baseado na satisfação de uma condição lógica Três opções para especificar a condição: códigos condicionais (flags) registrador de condição instruções de comparação e desvio Com base no resultado da última operação executada pela ALU

Desvios condicionais: Freqüência de uso de condições

Codificação de Conjuntos de Instruções

Referências Capítulos 9 e 10 Capítulo 2 Capítulo 3