Objetivos. Tópico 02: Arquitetura do Conjunto de Instruções. Page 1. Estudar as principais características de arquiteturas de conjunto de instruções.

Documentos relacionados
Arquiteturas de Computadores. Princípios e exemplos de conjuntos de instruções

Processadores para computação de alto desempenho

SSC0114 Arquitetura de Computadores

Infraestrutura de Hardware. Instruindo um Computador

PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR

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

Sistemas de Computação. Instruções de Linguagem de Máquina

SSC0611 Arquitetura de Computadores

Organização e Arquitetura de Computadores I

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I

Registradores na Arquitetura MIPS. 29/4/2016 MIPS - Instruction Set Architecture

Organização e Projetos de Computadores. Capítulo 2. Organização e Projetos de Computadores. Instruções

Conjunto de Instruções. Prof. Leonardo Barreto Campos 1

MIPS ISA (Instruction Set Architecture)

William Stallings Arquitetura e Organização de Computadores 8 a Edição

Conjunto de Instruções. Alisson Brito

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

O Funcionamento do Processador

O Funcionamento do Processador

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

Operações de Controle de Fluxo e Acesso a Memória. Na Aula Anterior... Nesta Aula. Instruções de Controle de Fluxo. if then - else.

Arquitetura e Organização de Computadores

Organização de Computadores

Arquitetura de Computadores II

Organização de Computadores

Microcontroladores e Interfaces

Relembrando desempenho...

Relembrando desempenho...

Organização de Computadores

Arquitetura e Organização de Computadores

Arquitetura de Computadores I. Prof. Ricardo Santos (Cap 2)

Unidade 4* - Aulas 1/2: Pipelines, Hazards e Forwarding

1. A pastilha do processador Intel possui uma memória cache única para dados e instruções. Esse processador tem capacidade de 8 Kbytes e é

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA


Compiladores e Computabilidade

O estudo da arquitectura de computadores efectua-se com recurso à Abstracção

AJProença, Sistemas de Computação, UMinho, 2017/18 1. Componentes (físicos) a analisar: a unidade de processamento / o processador:

Universidade Federal do Rio de Janeiro Bacharelado em Ciência da Computação. Arquitetura de Computadores I. Organização Básica do Computador

CAPÍTULO 4 CAMINHO DE DADOS E CONTROLE

ção de Computadores II

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

Infraestrutura de Hardware. Implementação Monociclo de um Processador Simples

Organização e Arquitetura de Computadores I

Organização de Sistemas de Computadores

Esse programa inclui dependências de tipo: escrita-escrita, leitura-escrita e escrita-leitura. Identifique e mostre estas dependências.

Infraestrutura de Hardware. Instruindo um Computador Subrotinas, Tipos de Dados e Modos de Endereçamento

Notas de Aula Guilherme Sipahi Arquitetura de Computadores

Arquitetura de Computadores

MIPS Implementação. sw) or, slt. Vamos examinar uma implementação que inclui um subconjunto de instruções do MIPS

Infraestrutura de Hardware. Implementação Multiciclo de um Processador Simples

Universidade de São Paulo

UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

AULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS

Arquitetura de Computadores

Arquitetura de Computadores. Prof. Alexandro Baldassin. 1o semestre/2017

1) Enumere e dê exemplo dos tipos de conflitos que podem ocorrer em um pipeline de instruções de um processador.

SSC0902 Organização e Arquitetura de Computadores

Arquiteturas RISC e CISC. Adão de Melo Neto

Capítulo 3. Instruções: Aritmética MIPS

Arquitetura de Computadores. Conjunto de Instruções

Organização e Arquitetura de Computadores I

Faculdade de Computação

Nível do Conjunto de Instruções Prof. Edson Pedro Ferlin

Aula 04: Arquitetura do Conjunto de Instruções. Revisão do Último Capítulo Preço vs. Custo

COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto

PSI3441 Arquitetura de Sistemas Embarcados

Organização de Unidades de Processamento

Prof. Gustavo Oliveira Cavalcanti

Capítulo 3. This material may not be copied or distributed for commercial purposes without express written permission of the copyright holder.

Arquitetura e Organização de Processadores. Aula 08. Arquiteturas VLIW

Infra-estrutura de Hardware

1. Considere a execução do seguinte troço de código num processador com ISA compatível

SSC0611 Arquitetura de Computadores

William Stallings Arquitetura e Organização de Computadores 8 a Edição. Capítulo 12 Estrutura e função do processador

Conjunto de Instruções e Arquitectura p.1

Arquitetura de Computadores

Arquiteturas de Computadores

Explorando o paralelismo entre instruções

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Aula 1. Cibele Lemos Freire Viginoski

3. INSTRUÇÕES. Instrução é uma palavra da linguagem de máquina. Instruction Set do MIPS ( usado pela NEC, Nintendo, Silicon Graphics e Sony.

a) Calcule o valor médio de CPI apresentado na execução deste programa P, utilizando-se C1 sem e com otimização.

Infraestrutura de Hardware. Melhorando Desempenho de Pipeline Processadores Superpipeline, Superescalares, VLIW

RISC simples. Aula de Março de

PSI3441 Arquitetura de Sistemas Embarcados

Prova 1 Eng. Elétrica Arquitetura de Computadores Prof. Celso A. Saibel Santos Nome: Data:

Arquitetura de Computadores Aula 11 - Multiprocessamento

Arquitetura de Computadores I. Prof. Ricardo Santos (Cap 2)

a) Calcule o valor médio de CPI apresentado na execução deste programa P, utilizando-se C1 sem e com otimização. Resposta:

William Stallings Arquitetura e Organização de Computadores 8 a Edição

Faculdade de Computação Arquitetura e Organização de Computadores 2 3 a Lista de Exercícios Prof. Cláudio C. Rodrigues Data de Entrega: 22/11/2018

Pipeline. Ciclos de Operação da CPU Estágios do Pipeline Previsão de Desvio. Estrutura da CPU. Em cada ciclo, a CPU deve:

Organização e Arquitetura de Computadores I

Prof. Leonardo Augusto Casillo

Conjunto de Instruções MIPS Parte IV

Neander - características

Nível Máquina Formatos de Instruções

Arquitectura de Computadores II. Introdução

Transcrição:

Tópico 02: Arquitetura do Conjunto de Instruções Objetivos Estudar as principais características de arquiteturas de conjunto de instruções. Instruction set architecture (ISA) Baseando-se em propriedades extraídas de programas reais (típicos)... Como deve ser a ISA de uma máquina contemporânea? Que instruções e modos de endereçamento? Que formatos e tamanho de campos? Qual o impacto da ISA no compilador? Some pictures are adapted from Computer Architecture: A Quantitative Approach, J. Hennessy and D. Patterson, Morgan Kaufmann Publishers. 3rd edition. CA, A2, slide 1 CA, A2, slide 2 Page 1

Sumário Arquiteturas de conjuntos de instruções Classificação» Pilha, acumulador, registrador-memória, load/store Medidas independentes de ISA» Endereçamento de memória» Tipo e tamanho de operandos» Operações Codificação de instruções» Formatos e seu impacto Sumário O papel dos compiladores Estrutura de um compilador moderno Impacto das otimizações no desempenho Sintonia compilador «ISA» Impacto da tecnologia de compiladores no projeto de uma ISA» Impacto do projeto de uma ISA na eficiência do compilador A arquitetura do MIPS 64 Exemplo real de uma ISA contemporânea CA, A2, slide 3 CA, A2, slide 4 Page 2

ISA: classificação ISA: classificação TOS TOS ULA ULA ULA CPU CPU CPU MEM Pilha MEM Pilha MEM Acumulador CA, A2, slide 5 CA, A2, slide 6 Page 3

ISA: classificação ISA: classificação TOS TOS ULA ULA ULA ULA ULA ULA ULA CPU CPU CPU CPU CPU CPU CPU MEM Pilha MEM Acumulador MEM Reg-Memória MEM Pilha MEM Acumulador MEM Reg-Memória MEM Load/Store CA, A2, slide 7 CA, A2, slide 8 Page 4

ISA: exemplo ISA: classificação C = A+B Instruções ALU: operandos e endereços Pilha Acumulador Reg-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 Número de endereços de memória Número máximo de operandos permitidos Tipo de ISA Exemplos 0 3 Alpha, ARM, MIPS, PowerPC, Load/Store SPARC, Trimedia TM5200 1 2 Reg-Mem IBM 360/370, Intel 80x86, Motorola 68000 2 2 Mem-Mem VAX 3 3 Mem-Mem VAX CA, A2, slide 9 CA, A2, slide 10 Page 5

ISA: vantagens e desvantagens Modos de endereçamento: classificação Tipo Vantagens Desvantagens Reg-Reg (0,3) Reg-Mem (1,2) Codificação: comprimento fixo. Geração de código: simples. CPI: pouco variável Número de instruções: reduzido, pois dispensa pré-carga. Codificação: comprimento variável. Densidade: boa Número de instruções: o mais alto Densidade: a mais baixa Operandos: um fonte é destruído CPI: variável com a posição do operando Codificação: comprimento muito Mem-Mem (2,2) ou (3,3) Densidade: a mais alta. variável CPI: muito variável entre instruções Modo Exemplo Significado Registrador Add R4, R3 Regs[R4] <= Regs[R4] + Regs[R3] Imediato Add R4, #3 Regs[R4] <= Regs[R4] + 3 Deslocamento Add R4, 100(R1) Regs[R4] <= Regs[R4] + Mem[100+Regs[R1]] Indireto de registrador Add R4, (R1) Regs[R4] <= Regs[R4] + Mem[Regs[R1]] Indexado Add R3, (R1+R2) Regs[R3] <= Regs[R3] + Mem[Regs[R1]+Regs[R2]] Direto ou absoluto Add R1, (1001) Regs[R1] <= Regs[R1] + Mem[1001] CA, A2, slide 11 CA, A2, slide 12 Page 6

Modos de endereçamento: classificação Modo Exemplo Significado Indireto de memória Add R1, @(R3) Regs[R1] <= Regs[R1] + Mem[Mem[Regs[R3]]] Auto-incremento Add R1, (R2) + Regs[R1] <= Regs[R1] + Mem[Regs[R2]] Regs[R2] <= Regs[R2] + d Modos de endereçamento: utilização 50% do acesso a operandos Modo registrador 50% dos acessos usam outros modos Quais? Em que proporção? Regs[R2] <= Regs[R2] - d Auto-decremento Add R1, - (R2) Regs[R1] <= Regs[R1] + Mem[Regs[R2]] Regs[R1] <= Regs[R1] + Mem[100+Regs[R2]] + Escalonado Add R1, 100(R2) [R3] Regs[R3]*d CA, A2, slide 13 CA, A2, slide 14 Page 7

Modos de endereçamento: utilização outros Indireto de memória Escalonado Indireto de registrador Imediato Deslocamento 0% 3% 3% 1% 1% 6% 0% 6% 3% 11% 16% 17% 24% 43% 39% 32% 40% 55% 0% 10% 20% 30% 40% 50% 60% TeX spice gcc Deslocamento: distribuição de valores % ocorrência # bits magnitude (log 2 d - 1) 40% 35% 30% 25% 20% 15% 10% 5% 0% 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 inteiros ponto flutuante CA, A2, slide 15 75% 99% CA, A2, slide 16 Page 8

Modo imediato: utilização Imediato: distribuição de valores 23% Cargas 22% 25% Operações da ALU 19% 21% Todas 16% 0% 5% 10% 15% 20% 25% 30% Ponto flutuante Inteiros % ocorrência # bits magnitude (log 2 i - 1) 45% 40% 35% 30% 25% 20% 15% 10% 5% 0% 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Conclusão: Inteiros: 1/5 das instruções; Ponto flutuante: 1/6 das instruções CA, A2, slide 17 inteiros ponto flutuante 50% 80% CA, A2, slide 18 Page 9

Operações no conjunto de instruções As 10 instruções mais freqüentes no 80x86 Desvios: nomenclatura Desvio condicional Desvio ou Branch» Exemplo: BNE R3,R4, nome Desvio incondicional Salto ou Jump» Exemplo: J nome CA, A2, slide 19 CA, A2, slide 20 Page 10

Desvios e saltos: utilização Call/Return Jump Branch 8% 6% 10% 19% 75% 82% 0% 20% 40% 60% 80% 100% Ponto flutuante Inteiros CA, A2, slide 21 Desvios e saltos: destino Conhecido em tempo de compilação Salto direto» J nome Salto e vínculo» JAL nome Desvio condicional» BNE R3,R4, nome Desconhecido em tempo de compilação Retorno Salto indireto» JR R3 CA, A2, slide 22 Page 11

Salto indireto: utilização Case ou switch Tabela de endereços Funções ou métodos virtuais Chamadas de rotinas diferentes Dependendo do tipo do argumento Ponteiros de Funções Passagem de funções como parâmetros Bibliotecas compartilhadas dinamicamente Carregadas e ligadas sob demanda Desvios: distribuição de deslocamentos % ocorrência # bits magnitude (log 2 d - 1) 30% 25% 20% 15% 10% 5% 0% 0 1 2 3 4 5 6 7 8 9 10 1112 13 1415 16 1718 19 20 inteiros ponto flutuante CA, A2, slide 23 85% CA, A2, slide 24 Page 12

Desvio condicional: alternativas Nome Exemplos Como a condição é testada Código condicional (CC) 80x86, 68000, PowerPC, ARM, SPARC Registrador de condição Alpha, MIPS Comparação e desvio PA-RISC, VAX Operação da ULA define bit especial, que é testado pela instrução de desvio Resultado de uma comparação armazenado em registrador arbitrário, que é testado pela instrução de desvio A comparação faz parte da instrução de desvio CA, A2, slide 25 Desvio condicional: alternativas If (A > B) then S1; S2; CMP B, A BLE end S1 end: S2 Define CC (68020) SLT X, B, A BEQ X, $zero,end S1 end: S2 Não define CC (MIPS) BLE B, A,end S1 end: S2 Em geral só quando teste é simples (<0, >0, 0, 0) CA, A2, slide 26 Page 13

Desvio condicional: teste Desvios: comparações com zero não = 2% 5% Não requerem o uso da ULA = 18% 16% >= 0% 11% <= 33% 44% < 35% 34% S Z 0% 10% 20% 30% 40% 50% Ponto flutuante Inteiros Teste > ocorre em porcentagem desprezível BLTZ < 0 S BLEZ 0 S + Z BGEZ 0 S BGTZ > 0 S. Z CA, A2, slide 27 CA, A2, slide 28 Page 14

Operandos: tipos e tamanhos Byte (8 bits) 10% 1% Meia palavra (16 bits) 5% 0% Palavra (32 bits) 26% 29% Palavra dupla (64 bits) 59% 70% 0% 20% 40% 60% 80% Ponto flutuante Inteiros Operação e número de operandos Codificação de instruções Especificador de endereço 1 Comprimento variável: VAX, Intel 80x86 Operação Campo de endereço 1 Campo de endereço 1 Campo de endereço 2... Campo de endereço 3 Comprimento fixo: Alpha, ARM, MIPS, PowerPC, SPARC Operação Operação Especificador de endereço Especificador de endereço 1 Campo de endereço Especificador de endereço 2 Especificador de endereço n Campo de endereço Campo de endereço n CA, A2, slide 29 Operação Especificador de endereço Híbrido: IBM 360/70, MIPS16, Thumb Campo de endereço 1 Campo de endereço 2 CA, A2, slide 30 Page 15

O papel dos compiladores Compiladores: estrutura Desempenho Tecnologia de CIs Organização do HW Tecnologia de Compiladores Que características do ISA resultam em código mais eficiente? Que características do ISA tornam mais fácil escrever compiladores eficientes? Front-end por linguagem Representação intermediária Otimizações de alto nível Otimizador global Traduzir linguagem para formato intermediário comum Otimização de laços e inserção de in-lining Otimizações locais, globais e alocação de registradores CA, A2, slide 31 Gerador de código Seleção de instruções e escalonamento de código CA, A2, slide 32 Page 16

Compiladores: estrutura Compiladores: objetivos Correção Front-end por linguagem Representação intermediária Otimizações de alto nível Dependência da linguagem Dependência da máquina Velocidade do código compilado Compilação rápida Suporte para depuração... Otimizador global Gerador de código CA, A2, slide 33 CA, A2, slide 34 Page 17

Compiladores: complexidade Complexidade impede solução monolítica Solução: Múltiplos passos (fases) Vantagem: reduz complexidade Desvantagem: problema de ordenação de fases Exemplo: Eliminação de expressões comuns» Assume temporário em registrador Decidir se inlining» Antes de conhecer o tamanho do procedimento Compiladores: otimizações Otimizações de alto nível Integração de procedimentos ( inlining )» Exemplo: Definição: inline int metodo(a,b,c) {return a+b-c;} Chamada: z = metodo(w,x,y); Resultado: z = w+x-y; Transformação de laços» Exemplo: loop unrolling for (i=0; i < N; i=i+1) { a[i]=b[i]*c[i];}» Resultado: for (i=0; i < N; i=i+2) { a[i]=b[i]*c[i]; a[i+1]=b[i+1]*c[i+1];} CA, A2, slide 35 CA, A2, slide 36 Page 18

Compiladores: otimizações Otimizações de alto nível Integração de procedimentos ( inlining )» Exemplo: Definição: inline int metodo(a,b,c) {return a+b-c;} Chamada: z = metodo(w,x,y); Resultado: z = w+x-y; Transformação de laços» Exemplo: loop unrolling for (i=0; i < N; i=i+1) { a[i]=b[i]*c[i];}» Resultado: for (i=0; i < N/2; i=i+1) { a[i*2]=b[i*2]*c[i*2]; a[i*2+1]=b[i*2+1]*c[i*2+1];} Compiladores: otimizações Otimizações locais Escopo = bloco básico» Eliminação de expressões comuns a = x+y;... b = a+1;... c = x+y+z; a = x+y;... b = a+1;... c = a+z; CA, A2, slide 37 CA, A2, slide 38 Page 19

Compiladores: otimizações Compiladores: otimizações Otimizações locais Escopo = bloco básico» Propagação de constantes e variáveis a = 0;... b = a+1;... c = 2*b; a = x;... b = a+1;... c = 2*a; a = 0;... b = 1;... c = 2; a = x;... b = x+1;... c = 2*x; CA, A2, slide 39 Otimizações globais Escopo: além do bloco básico» Eliminação global de expressões comuns» Code Motion x = y+a[i]; if (x == y) { a = k + w; b = f + g; } else a = k - w; A[i] = a; x = y+a[i]; a = k + w; if (x == y) { b = f + g; } else a = k - w; A[i] = a; CA, A2, slide 40 Page 20

Otimizações: code motion LD R1, 0(R2) IF ID EX ME WB DADD R3, R4, R1 X IF ID EX ME WB BNE R5, R6, else IF ID EX ME WB DADD R7, R8, R9 X IF ID EX ME WB DADD R10, R11, R12 IF ID EX ME WB J exit IF ID EX ME WB else DSUB R7, R8, R9 exit SD R7, 0(R2) IF ID EX ME WB... Compiladores: otimizações Alocação de registradores Mapeamento de variáveis para registradores Talvez a mais importante otimização» Aceleração do código» Torna outras otimizações úteis LD R1, 0(R2) IF ID EX ME WB DADD R7, R8, R9 IF ID EX ME WB DADD R3, R4, R1 IF ID EX ME WB BNE R5, R6, else IF ID EX ME WB DADD R10, R11, R12 X IF ID EX ME WB J exit IF ID EX ME WB else DSUB R7, R8, R9 exit SD R7, 0(R2) IF ID EX ME WB... CA, A2, slide 41 CA, A2, slide 42 Page 21

Compiladores: otimizações Otimizações dependentes da máquina Seleção de instruções Exemplo: a = b * 2;» MULT R1, R2, #2 ou» SLLI R1, R2, #2 Escalonamento de código Reordenamento de instruções para melhorar o desempenho» Redução do número de pausas devidas a hazards Otimizações: escalonamento de código Exemplo: x = y + A[i]; z = w - B[i]; LD R1, 0(R8) IF ID EX ME WB DADD R3, R4, R1 X IF ID EX ME WB LD R5, 0(R9) IF ID EX ME WB DSUB R6, R7, R5 X IF ID EX ME WB LD R1, 0(R8) IF ID EX ME WB LD R5, 0(R9) IF ID EX ME WB DADD R3, R4, R1 IF ID EX ME WB DSUB R6, R7, R5 IF ID EX ME WB CA, A2, slide 43 CA, A2, slide 44 Page 22

Otimizações: impacto Alocação de registradores lucas, nível 3 lucas, nível 2 11% 12% x 0,57 Coloração de grafos Problema NP-completo lucas, nível 1 lucas, nível 0 mcf, nível 3 mcf, nível 2 mcf, nível 1 mcf, nível 0 21% 76% 76% 84% x 0,21 x 0,90 x 0,84 Mas, há heurísticas eficientes» Desde que #vértices > 16» Difícil construir bom alocador com poucos regs. Poucos registradores» Não somente há poucas posições de armazenamento» Mas também são mal gerenciadas 0 20 40 60 80 100 ULA: inteiros ULA: ponto flutuante Desvios/Chamadas Load/Store CA, A2, slide 45 CA, A2, slide 46 Page 23

Alocação de registradores Alocação de registradores Áreas de dados Pilha (endereços relativos ao SP)» Variáveis locais Área de dados globais» Váriaveis globais, constantes, arranjos Heap (acesso via ponteiros)» Objetos alocados dinamicamente Aliases (nomes alternativos) Dificultam alocação de registradores Exemplo: p = &a; a =... *p =......a... Restrições Mais efetiva para objetos alocados na pilha Impossível para objetos na heap Variáveis globais possuem diversos alias» Ilegal alocá-las em registradores CA, A2, slide 47 CA, A2, slide 48 Page 24

ISA «Compilador Propriedades desejáveis de uma ISA Regularidade» Operações e modos de endereçamento ortogonais Oferta de primitivas não de soluções completas» Não tentar sintonizar compilador com a linguagem Ex.: salvamento automático para chamada de procedure Simplicidade em avaliar alternativas» Reg-mem: depois de quantas referências uma variável deve ser alocada em registrador? Características desejáveis de uma máquina contemporânea Registradores de uso geral + load/store Modos de endereçamento simples deslocamento (12 a 16 bits) imediato (8 a 16 bits) indireto de registrador Tipo e tamanho de dados inteiros (8, 16,32 e 64 bits ); PF (32 e 64 bits) CA, A2, slide 49 CA, A2, slide 50 Page 25

Características desejáveis de uma máquina contemporânea Instruções simples, pois dominantes: load/store, soma, subtração, move entre registradores, deslocamento Comparações: Igual, diferente, menor que Desvios condicional (com endereçamento relativo ao PC) incondicional (salto) chamada retorno Características desejáveis de uma máquina contemporânea Formato de instrução fixo (desempenho) variável (tamanho do código) Mais de 16 registradores de uso geral Registradores separados para PF Modos de endereçamento regulares Aplicam-se a todas as instruções de transferência CA, A2, slide 51 CA, A2, slide 52 Page 26

MIPS64: um modelo arquitetônico Características Um conjunto simples de instruções Máquina load/store Projeto orientado à eficiência do pipeline» codificação fixa de instruções Projeto orientado à eficiência do compilador MIPS64: um modelo arquitetônico Registradores GPRs: 32 reg. de uso geral (64 bits)» R0,..., R31;» R0 = zero; FPRs: registradores para PF (32 ou 64 bits)» F0,..., F31 CA, A2, slide 53 CA, A2, slide 54 Page 27

MIPS64: um modelo arquitetônico Tipos de dados Inteiros» byte (8), meias palavras (16)» palavras (32), palavras duplas (64) Ponto flutuante» precisão simples (32)» precisão dupla (64) Operações Sobre inteiros de 64 bits ou valores em ponto flutuante de 32 ou 64 bits Meias palavras e bytes carregados em GPRs com ou sem extensão de sinal CA, A2, slide 55 MIPS64: um modelo arquitetônico Modos de endereçamento Só imediato e deslocamento» Indireto e absoluto como casos particulares» Valor codificado em 16 bits Memória Endereçável por byte Endereço: 64 bits Ordem dos bytes configurável» Big endian ou little endian CA, A2, slide 56 Page 28

MIPS64: um modelo arquitetônico MIPS64: formatos de instrução Máquina Load/store GPRs:» byte, meia palavra, palavra ou palavra dupla FPRs:» precisão simples ou dupla Acesso à memória Alinhamento obrigatório I R J 6 5 5 16 Opcode rs rt imediato 6 5 5 5 5 6 Opcode rs 6 Opcode rt rd shamt funct 26 deslocamento adicionado ao PC CA, A2, slide 57 CA, A2, slide 58 Page 29

MIPS64: um modelo arquitetônico Exemplos de instruções Instruções de load/store» Figura 2.28 Instruções aritméticas/lógicas» Figura 2.29 Instruções que afetam o fluxo de controle» Figura 2.30 Instruções de ponto flutuante» Figura 2.31 Conjunto completo de instruções» Apêndice C (www.campus.com.br) CA, A2, slide 59 MIPS64: freqüência de instruções load imm call/return compare store cond branch and/or/xor add/sub load 2% 2% 5% 10% 12% 16% 21% 26% 0% 10% 20% 30% Média inteiros CA, A2, slide 60 Page 30

MIPS64: freqüência de instruções Perspectiva histórica: VAX MIPS store int 2% compare int 2% and/or/xor 3% cond branch 4% load imm 5% store PF 7% mul PF 8% add/sub PF 10% load int 15% load PF 15% add/sub int 25% 0% 5% 10% 15% 20% 25% 30% VAX compilador simples, densidade de código» Instruções e modos de endereçamento poderosos, formato de instrução variável, poucos registradores MIPS alto desempenho via pipelining, facilidade de implementação do HW, compatibilidade com compiladores altamente otimizados» Instruções e modos de endereçamento simples, formato de instrução fixo, muitos registradores Média PF CA, A2, slide 61 CA, A2, slide 62 Page 31

VAX 8700 MIPS M2000 Razão: MIPS/VAX VAX 8700 MIPS M2000 Razão: MIPS/VAX = 3/1 CA, A2, slide 64 I MIPS /I VAX» 2 CPI MIPS /CPI VAX» 1/6 I MIPS /I VAX» 2 CPI MIPS /CPI VAX» 1/6 CA, A2, slide 63 Page 32