Sei sulla pagina 1di 11

Captulo 3

Permission is granted to copy and distribute this material for e ducational purposes only, provided that the complete bibliographic citation and following credit line is included: "Copyright 1998 Morgan Kaufmann Publishers." Permission is granted to alter and distribute thismaterial provided that the following credit line is included: "Adapted from Computer Organization and Design: The Hardware/Software Interface, 2nd Edition David A. Patterson , John L. Hennessy Morgan Kaufmann, 2nd ed., 1997, ISBN 1558604286 Copyright 1998 Morgan Kaufmann Publishers."

Lecture slides created by Michael Wahl inEnglish Traduo: Christian Lyra Gomes Reviso: Wagner M. N. Zola

This material may not be copied or distributed for commercial pu rposes without express written permission of the copyright holder.
? 1 9 9 8 Morgan Kaufmann Publishers

Instrues:
Linguagem da mquina Mais primitivas do que linguagens de alto nvel ex. no possuem controles de fluxo sofisticados Muito restritivas ex. instrues aritmticas MIPS

Ns estaremos trabalhando com a arquitetura de conjunto de instrues MIPS similar a outras arquiteturas desenvolvidas desde 1980 usada por NEC, Nintendo, Silicon Graphics, Sony

Objetivos do projeto: maximizar desempenho e reduzir custos, r eduzir tempo de projeto

? 1 9 9 8 Morgan Kaufmann Publishers

Aritmtica MIPS
Todas as instrues tem 3 operandos A ordem dos operando fixa (primeiro destino) Exemplo: Cdigo C: Cdigo MIPS : A = B + C add $s0, $s1, $s2 (associado a variveis pelo compilador)

? 1 9 9 8 Morgan Kaufmann Publishers

Aritmtica MIPS
Princpio de projeto: simplicidade favorece regularidade. Claro que isso complica outras coisas... cdigo C: A = B + C + D; E = F - A; add $t0, $s1, $s2 add $s0, $t0, $s3 sub $s4, $s5, $s0 Por que?

cdigo MIPS:

Operandos precisam ser registradores, e apenas 32 registradores so fornecidos Princpio de projeto: menor mais rpido. Por que?

? 1 9 9 8 Morgan Kaufmann Publishers

Registradores vs. Memria


Operandos de instrus aritmticas precisam ser registradores, apenas 32 registradores so fornecidos O compilador associa variveis com registradores E quando o programa possui muitas variveis?

Controle Memria Datapath


Processador

Entrada

Sada
I/O

? 1 9 9 8 Morgan Kaufmann Publishers

Organizao da memria
vista como uma lista (array) uni-dimensional grande, com endereos. Um endereo de memria um ndice do array Endereamento do Byte" significa que um ndice aponta para um byte na memria. 0 1 2 3 4 5 6 ...
8 bits de dados 8 bits de dados 8 bits de dados 8 bits de dados 8 bits de dados 8 bits de dados 8 bits de dados

? 1 9 9 8 Morgan Kaufmann Publishers

Organizao da memria
Bytes so legais, mas a maioria dos items de dados usam palavras maiores No MIPS, uma palavra so 32 bits ou 4 bytes. 0 4 8 12 ... 232 bytes com endereos de bytes de 0 a 232 -1 230 palavras com endereos de bytes 0, 4, 8, ... 232 -4 Palavras so alinhadas Quais so os dois bits menos significativos de um endereo de palavra?
32 bits de dados 32 bits de dados 32 bits de dados 32 bits de dados

Registradores armazenam 32 bits de dados

? 1 9 9 8 Morgan Kaufmann Publishers

Instrues
Instrues de carga e armazenamento Exemplo: cdigo C: cdigo MIPS: A[8] = h + A[8]; lw $t0, 32($s3) add $t0, $s2, $t0 sw $t0, 32($s3)

instruo de armazenamento tem o destino por ltimo Lembre-se operandos aritmticos so registradores e no memria!

? 1 9 9 8 Morgan Kaufmann Publishers

Nosso primeiro exemplo


Conseguimos entender esse cdigo?
swap( int v[], int k); { int temp; temp = v[k] v[k] = v[k+1]; v[k+1] = temp ; }

swap: muli $2, $5, 4 add $2, $4, $2 lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) jr $ 3 1

? 1 9 9 8 Morgan Kaufmann Publishers

At ento ns aprendemos:
MIPS carregamos palavras mas endereamos bytes aritmtica utiliza registradores apenas Instruo add $s1, $s2, $s3 sub $s1, $s2, $s3 lw $s1, 100($s2) sw $s1, 100($s2) Significado $s1 = $s2 + $s3 $s1 = $s2 $s3 $s1 = Memria[$s2+100] Memria[$s2+100] = $s1

? 1 9 9 8 Morgan Kaufmann Publishers

10

Linguagem de mquina
Instrues, assim como registradores e palavras de dados, tambm tem largura de 32 bits Exemplo: add $t0, $s1, $s2 registradores possuem nmeros, $t0=9, $s1=17, $s2=18 Formato da Instruo: 000000 10001 op rs 10010 rt 01000 rd 00000 shamt 100000 funct

Voc consegue descobrir o que significa os nomes dos campos?

? 1 9 9 8 Morgan Kaufmann Publishers

11

Linguagem de mquina
Considere as instrues de carga de palavra e armazenamento de palavra, O que os princpios de regularidade nos levaria a fazer? Novo princpio: Bom projeto demanda um compromisso Introduz um novo tipo de formato de instruo Tipo-I (I -type) para instrues de transferncia de dados o outro formato era o tipo-R (R -type) para registradores Exemplo: lw $t0, 32($s2) 35 op 18 rs 9 rt 32 nmero de16 bits

Onde est o compromisso?

? 1 9 9 8 Morgan Kaufmann Publishers

12

Conceito de programa armazenado


Instrues so bits Programas so armazenado na memria para serem lidos ou escritos, da mesma forma que dados

Processador

Memria

Memria para dados, programas, compiladores, editores, etc.

Ciclo de Busca e Execuo Instrues so buscadas e colocadas em um registrador especial Bits no registrador controlam as aes subsequentes Busca a prxima instruo e continua
? 1 9 9 8 Morgan Kaufmann Publishers

13

Controle
Instrues de tomada de deciso altera o controle do fluxo, isto , mudam a prxima instruo a ser executada instrues de desvio condicional do MIPS: bne $t0, $t1, Label beq $t0, $t1, Label Exemplo: if (i==j) h = i + j;

bne $s0, $s1, Label add $s3, $s0, $s1 Label: ....

? 1 9 9 8 Morgan Kaufmann Publishers

14

Controle
Instrues de desvio incondicionais do MIPS: j label Exemplo: if (i!=j) h=i+j; else h=i- j; beq $s4, $s5, Lab1 add $s3, $s4, $s5 j Lab2 Lab1: sub $s3, $s4, $s5 Lab2: ...

Voc consegue construir um loop simples?

? 1 9 9 8 Morgan Kaufmann Publishers

15

At ento:
Instruo add $s1,$s2,$s3 sub $s1,$s2,$s3 lw $s1,100($s2) sw $s1,100($s2) bne $s4,$s5,L beq $s4,$s5,L j Label R I J Formatos: op op op rs rs rt rt rd shamt funct Significado $s1 = $s2 + $s3 $s1 = $s2 $s3 $s1 = Memory[$s2+100] Memory[$s2+100] = $s1 Prox. Instruc em Label se $s4 $s5 Prox. Instruc em Label se $s4 = $s5 Prox. Instruc em Label

16 bit address

26 bit address

? 1 9 9 8 Morgan Kaufmann Publishers

16

Controle de fluxo
Ns temos: beq, bne, e Branch-if -less-than (desvia se menor que)? Nova instruo: if $s1 < $s2 then $t0 = 1 slt $t0, $s1, $s2 else $t0 = 0 Podemos usar essa instruo para construir "blt $s1, $s2, Label" podemos agora construir estruturas de controle genricas Note que o assembler necessita de um registrador para fazer isso, existe uma poltica de convenes de uso dos registradores

? 1 9 9 8 Morgan Kaufmann Publishers

17 2

Poltica de Convenes de Uso


Nome $zero $v0-$v1 $a0-$a3 $t0-$t7 $s0-$s7 $t8-$t9 $gp $sp $fp $ra Registrador No Uso 0 valor constante 0 valores para resultados e avaliao 2-3 de expresses 4-7 argumentos 8-15 temporrios 16-23 salvos 24-25 mais temporrios 28 ponteiro global 29 stack pointer 30 frame pointer 31 endereo de retorno

? 1 9 9 8 Morgan Kaufmann Publishers

18

Constantes
Constantes pequenas so usadas com bastante freqncia (50% dos operandos) ex., A = A + 5; B = B + 1; C = C - 18; Solues? Por que no? Colocar as constantes tpicas em memria e carregar elas. Criar registradores fixos (como o $zero) para constantes como o um (1). Instrues MIPS: addi $29, $29, 4 slti $8, $18, 10 andi $29, $29, 6 ori $29, $29, 4 Como fazer isso funcionar?

? 1 9 9 8 Morgan Kaufmann Publishers

19 3

E quando as constantes so grandes?


Ns queremos carregar constantes de 32 bits em um registrador Devemos usar duas instrues, nova instruo "load upper immediate" lui $t0, 1010101010101010
1010101010101010 0000000000000000

Preenchido com zeros

Depois devemos deixar os bits de ordem mais baixa certos, i.e., ori $t0, $t0, 1010101010101010
1010101010101010 0000000000000000 ori 1010101010101010 1010101010101010 0000000000000000 1010101010101010

? 1 9 9 8 Morgan Kaufmann Publishers

20

Linguagem Assembly vs . Linguagem de Mquina


Assembly prov uma representao simblica conveniente Muito mais simples do que escrever nmeros ex., destino primeiro Linguagem de mquina a realidade por debaixo ex., destino no mais por primeiro Assembly pode prover 'pseudo instrues' ex., mover $t0, $t1 existe apenas no Assembly Pode ser implementada usando add $t0,$t1,$zero Quando for considerar o desempenho voc deve contar as instrues reais

? 1 9 9 8 Morgan Kaufmann Publishers

21

Outros pontos
Coisas que no iremos cobrir suporte para procedimentos ligadores (linkers), carregadores (loaders), layout de memria stacks, frames, recurso manipulao de strings e ponteiros interrupes e excesses chamadas de sistema e convenes alguns desses ns iremos falar mais tarde Ns focaremos nos pontos relativos a arquitetura bsico da linguagem assembly MIPS e cdigo de mquina Ns construiremos um processador para executar essas instrues.

? 1 9 9 8 Morgan Kaufmann Publishers

22

Viso geral do MIPS


Instrues simples tem largura de 32 bits bem estruturada, sem bagagem desnecessria apenas 3 formatos de instruo R I J op op op rs rs rt rt rd shamt funct

16 bit address

26 bit address

depende do compilador para alcanar desempenho quais devem ser os objetivos do compilador? Ajudar o compilador onde for possvel

? 1 9 9 8 Morgan Kaufmann Publishers

23

Endereos em desvios e saltos


Instrues: bne $t4,$t5,Label beq $t4,$t5,Label j Label Formatos: I J op op rs rt 16 bit address

Prxima instruo no Label se $t4 $t5 Prxima instruo no Label se $t4 = $t5 Prxima instruo no Label

26 bit address

Endereos no so 32 bits Como ns lidamos com isso nas instrues para carregar e armazenar?

? 1 9 9 8 Morgan Kaufmann Publishers

24

Endereos nos desvios


Instrues: bne $t4,$t5,Label beq $t4,$t5,Label Formatos: I op rs rt 16 bit address

Prxima instruo no Label se $t4$t5 Prxima instruo no Label se $t4=$t5

Podemos especificar um registrador (como no lw e sw) e adicionar ele ao endereo usa o Registrador de Endereo de Instruo (PC = program counter) A maioria dos desvios local (princpio da localidade) Instrues de salto usam os bits de alta ordem do PC limitaes de endereo de 256 MB

? 1 9 9 8 Morgan Kaufmann Publishers

25

Resumindo:
Operandos MIPS Exemplo Comentrio $s0-$s7, $t0-$t9, $zero, Localizao rpida de dados. No MIPS, os dados devem estar em registradores para 32 registers $a0-$a3, $v0-$v1, $gp, serem usados em op aritmticas. No MIPS o registrador $zero sempre igual a 0. $fp, $sp, $ra, $at O registrador $at reservado pelo assembler para lidar com constantes grandes. Memory[0],
Acessado apenas pelas instrues de transferncia de dados. MIPS usa endereos de byte, ento palavras em seqncia diferem por 4. Memria guarda estruturas de dados, como arrays, e cospem registradores, como aqueles salvos nas chamadas de procedmento.
Linguagem assembly MIPS Categoria
add

Nome

2 30 memory Memory[4], ...,


words Memory[4294967292]

Instruo

Exemplo add $s1, $s2, $s3 sub $s1, $s2, $s3 addi $s1, $s2, 100 lw $s1, 100($s2) sw lb sb $s1, 100($s2) $s1, 100($s2) $s1, 100($s2)

Significado $s1 = $s2 + $s3 $s1 = $s2 - $s3

Comentrio
Trs operandos; dados nos registradores Trs operandos; dados nos registradores

Aritmtica

subtract add immediate load word store word load byte

$s1 = $s2 + 100 Usado para adicionar constantes $s1 = Memory[ $s2 + 100]Palavra da memria para o registrador Memory[$s2 + 1 0 0 ] = $ s 1 Palavra do registrador para memria $s1 = Memory[ $s2 + 100]Byte da memria para o registrador Memory[$s2 + 1 0 0 ] = $ s 1 Byte do registrador para a memria $s1 = 100 * 2
16

transferncia store byte de dados


load upper immediate branch on equal

lui $s1, 100 beq $s1, $s2, 25 $s1, $s2, 25 $s1, $s2, $s3

Carrega constante nos 16 bits superiores Teste Igual; Desvio relativo ao PC Teste no igual; relativo ao PC comparao menor que; para beq, bne Comparao menor que constante

branch on not equal bne

Desvio Condicional

if ($s1 == $s2) go to PC + 4 + 100 if ($s1 != $s2) go to PC + 4 + 100 if ($s2 < $s3) $s1 = 1; else $s1 = 0 else $s1 = 0

set on less than set less than immediate

slt slti j jr jal

$s1, $s2, 100 if ($s2 < 100) $s1 = 1; 2500 $ra 2500

Saltos

jump jump register jump and link

go to 10000 Salta para endereo go to $ra Para troca, retorno de procedimento $ra = PC + 4; go to 10000 para chamada de procedimento
? 1 9 9 8 Morgan Kaufmann Publishers

26

1. Im medi a ad te dress i n g op rs rt Imm ed ate i

2. R e ster ad gi dress i n g op rs rt rd . .. funct Reg s te i rs Reg s t r i e

3. B a e addre s i g s s n op rs rt Add s res Memor y

Reg s te i r

Byte

Hal f o d w r

Word

4. P C-rel ti ve a a ddress i g n op rs rt Add s res Memor y

PC

Wo rd

5. P seu dodi ec t a r ddre s i g s n op Address Memor y

PC

Wo rd

? 1 9 9 8 Morgan Kaufmann Publishers

27

Arquiteturas Alternativas
Projeto alternativo: prover operaes mais poderosas objetivo reduzir o nmero de instrues executadas o perigo ter um tempo de ciclo mais lento e/ou uma maior CPI As vezes referido como RISC v s. CISC virtualmente todas os novos conjuntos de instruo so RISC desde 1982 VAX: minimiza o tamanho do cdigo, faz com que a linguagem assembly seja fcil instrues variando de 1 a 54 bytes de comprimento! Ns iremos olhar o PowerPc e o 80x86

? 1 9 9 8 Morgan Kaufmann Publishers

28

PowerPC
Endereamento Indexado exemplo: lw $t1,$a0+$s3 #$t1=Memory[$a0+$s3] O que ns temos que fazer no MIPS? Endereamento atualizado atualiza um registrador como parte da carga (para percorrer arrays ) exemplo: lwu $t0,4($s3) #$t0=Memory[$s3+4];$s3=$s3+4 O que ns temos que fazer no MIPS? Outros: carga mltipla/armazenamento mltiplo um registrador contador especial bc Loop decrementa contador, se no 0 vai para loop

? 1 9 9 8 Morgan Kaufmann Publishers

29

80x86
1978: O Intel 8086 anunciado (arquitetura de 16 bits) 1980: O co-processador de ponto flutuante 8087 adicionado 1982: O 80286 aumenta o espao de endereamento para 24 bits, +instrues 1985: O 80386 estende para 32 bits, novos modos de endereamento 1989-1995: O 80486, Pentium, Pentium Pro adicionam novas instrues (maioria projetada para aumentar o desempenho) 1997: MMX adicionado
Essa histria ilustra o impacto das algemas de ouro da compatibilidade Adicionando novos recursos como quem adiciona roupas a uma mala amontoada uma arquitetura que difcil de explicar e impossvel de amar

? 1 9 9 8 Morgan Kaufmann Publishers

30

Uma arquitetura dominante: 80x86


Veja o seu livro texto para uma descrio mais detalhada Complexidade: Instrues de 1 a 17 bytes de comprimento um operando pode agir como uma fonte e um destino ao mesmo tempo um operando pode vir da memria modos de endereamento complexos ex., ndice base ou escalonado com deslocamento de 8 ou 32 bits Ajuda salvadora: as instrues mais freqentemente usadas no so difceis de construir compiladores evitam as partes da arquitetura que so mais lentas

o que falta em estilo ao 80x86 sobra em quantidade, o que faz ele bonito a partir da perspectiva certa
? 1 9 9 8 Morgan Kaufmann Publishers

31

Sumrio
Complexidade das Instrues apenas uma varivel menor contagem de instrues v s. maior CPI / menor freqncia de relgio Princpios de projeto: simplicidade favorece regularidade menor mais rpido bom projeto demanda compromisso torne o caso comum rpido arquitetura de conjunto de instrues uma abstrao muito importante!

? 1 9 9 8 Morgan Kaufmann Publishers

32

Potrebbero piacerti anche