Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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)
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?
Entrada
Sada
I/O
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
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
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!
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
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
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
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
12
Processador
Memria
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: ....
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: ...
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
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
17 2
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?
19 3
Depois devemos deixar os bits de ordem mais baixa certos, i.e., ori $t0, $t0, 1010101010101010
1010101010101010 0000000000000000 ori 1010101010101010 1010101010101010 0000000000000000 1010101010101010
20
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.
22
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
23
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?
24
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
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
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)
Comentrio
Trs operandos; dados nos registradores Trs operandos; dados nos registradores
Aritmtica
$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
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
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
$s1, $s2, 100 if ($s2 < 100) $s1 = 1; 2500 $ra 2500
Saltos
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
Reg s te i r
Byte
Hal f o d w r
Word
PC
Wo rd
PC
Wo rd
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
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
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
30
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!
32