You are on page 1of 69

Arquitetura de Computadores I

T02
Aula 6
Data: 12/03/2014
Arquitetura de Computadores I 1 Prof Ma Daniela Catelan
Roteiro
Introduo a Linguaguem MIPS
Operao de Hardware
Operandos no Hardware
Representando Instrues no Computador
Exemplos
Exerccios
Arquitetura de Computadores I Prof Ma Daniela Catelan 2
Introduo
Para comandar o hardware do computador,
necessrio que falemos sua lngua:
As palavrasda linguagem de mquina so
chamadas de instrues;
O vocabulrioforma o conjunto de
instrues, que determina a interface
hardware/software.
Arquitetura de Computadores I Prof Ma Daniela Catelan 3
Introduo
Objetivo comum: encontrar uma linguagem que facilite o projeto do
hardware e do compilador enquanto maximiza o desempenho e
minimiza o custo.
fcil ver, por mtodos lgicos formais, que existem certos
[conjuntos de instrues] que so adequados para controlar e causar
a execuo de qualquer seqncia de operaes... As consideraes
decisivas, do ponto de vista atual, na seleo de um [conjunto de
instrues], so mais de natureza prtica: a simplicidade do
equipamento exigido pelo [conjunto de instrues] e a clareza de
sua aplicao para os problemas realmente importantes, junto com a
velocidade com que tratam esses problemas.
Burks, Goldstine e von Neumann, 1947
Arquitetura de Computadores I Prof Ma Daniela Catelan 4
Introduo
As linguagens de mquina so bastante parecidas entre si.
Aprendendo bem uma fcil aprender outra.
Isto ocorre porque:
Todas so baseadas nos mesmos princpios (arquitetura de von
Neumann);
Existe um conjunto de operaes bsicas que todas as mquinas
devem fornecer;
Projetistas tm um mesmo objetivo:
encontrar uma linguagem que torne fcil a construo do hardware e de
compiladores, maximizando a performance e minimizando os custos
SIMPLICIDADE.
Arquitetura de Computadores I Prof Ma Daniela Catelan 5
Introduo
Ao longo da histria, a Appleprojetou seu processador e acabou competindo
com a Intel, tambm com um processador prprio. Ambas competiam pelo
espao no mercado de processadores.
A Intel lidera essa concorrncia de forma geral, principalmente no que se
diz respeito aos computadores pessoais.
Pentium, Celeron, entre outros.
Existe uma diferena bsica entre os dois processadores dessas duas
companhias:
a quantidade de instrues que eles podem realizar.
A Appleutiliza um conjunto reduzido de instrues (RISC), enquanto a
Intel utiliza um conjunto complexo de instrues (CISC).
Sempre houve uma grande polmica em torno de qual dessas plataformas
melhor.
interessante compreender a diferena entre estas duas plataformas, para
entender vrios aspectos dos processadores modernos.
Arquitetura de Computadores I
Prof Ma Daniela Catelan
6
Introduo
Um processador CISC (Complex Instruction Set Computer, ou computador com
um conjunto complexo de instrues), capaz de executar vrias centenas de
instrues complexas diferentes, sendo extremamente verstil.
No comeo da dcada de 80, a tendncia era construir chips com conjuntos de
instrues cada vez mais complexos.
Alguns fabricantes porm, resolveram seguir o caminho oposto, criando o padro
RISC (Reduced Instruction Set Computer, ou computador com um
conjunto reduzido de instrues).
Ao contrrio dos complexos CISC, os processadores RISCso capazes de executar
apenas algumas poucas instrues simples.
J ustamente por isso, os chips baseados nesta arquitetura so mais simples e muito
mais baratos.
Outra vantagem dos processadores RISC, que, por terem um menor nmero de
circuitos internos, podem trabalhar a frequncias mais altas.
Um exemplo so os processadores Alpha, que em 97 j operavam a 600 Mhz.
Arquitetura de Computadores I Prof Ma Daniela Catelan 7
CISC
CISC Complex Instruction Set Computer:
Programas menores;
Simplicidade nos projetos de compiladores;
Grande nmero de instrues.
CISC caracterizada pelo grande nmeros de
conjunto de instrues complexas, objetivando o uso
mnimo de memria;
Arquitetura de Computadores I Prof Ma Daniela Catelan 8
CISC
CISC incorpora complexos modos de endereamento para
os operandos e usa um pequeno nmero de registradores;
Mquinas CISC foram, na maioria, construdas como micro
programadas e s agora comeou a implementar
micro/macro instrues RISC;
Exemplos de mquinas CISC:
386 e 486
PDP-11, Intel i86, Motorola 68K
CISC com micro/macro - instrues RISC: Pentium, AMD
Athlon;
Arquitetura de Computadores I Prof Ma Daniela Catelan 9
RISC
RISC Reduced Instruction Set Computer:
Simplicidade. Poucas instrues com poucos formatos;
Poucos modos de endereamento;
Operaes entre registradores;
Uma instruo por ciclo.
RISC caracterizada por usar um conjunto pequeno e
simples de instrues;
Mquinas RISC geralmente possuem um nmero elevado de
registradores;
Arquitetura de Computadores I Prof Ma Daniela Catelan 10
RISC
Exemplos de processadores RISC'scomerciais:
SPARC =Sun Microsystems - 1987
RS/6000 =IBM 1990
ALPHA =DEC 1992
POWER PC =IBM/MOTOROLA/APPLE
Arquitetura de Computadores I Prof Ma Daniela Catelan 11
CISC X RISC
indiscutvel, porm, que em muitas tarefas os processadores CISC
saem-se melhor, principalmente pelo seu grande nmero de recursos.
Por isso, ao invs da vitria de uma das duas tecnologias, atualmente
vemos processadores hbridos, que so essencialmente
processadores CISC, mas incorporam muitos recursos encontrados
nos processadores RISC (ou vice-versa).
Arquitetura de Computadores I Prof Ma Daniela Catelan 12
MIPS
Arquitetura de Computadores I 13 Prof Ma Daniela Catelan
MIPS
1980: David A. Patterson e Carlo Squin (Universidade da Califrnia,
Berkely), comeam a projetar pastilhas RISC VLSI (RISC I e RISC
II)
1981: J ohn L. Hennessy (Universidade Stanford, So Francisco)
projetou e fabricou uma RISC um pouco diferente, que ele chamou
de MIPS.
Conjunto de instrues criados a partir da dcada de 80.
100 milhes de processadores fabricados em 2002.
ATI, Broadcom, Cisco, NEC, Nintendo, Silicon Graphics, Sony, Texas
Instruments e Toshiba.
Possui um conjunto de instrues que utilizado em muitos
produtos destes fabricantes.
Arquitetura de Computadores I Prof Ma Daniela Catelan 14
Operaes do Hardware
Todo computador precisa realizar operaes aritmticas:
add a, b, c
A instruo acima instrui o computador a realizar a soma entre as
variveis b e c e armazenar o resultado em a.
Exemplo: colocar a soma de b, c, d, e e na varivel a:
Em linguagem de alto nvel
a =b +c +d +e
Em Assembly MIPS:
add a, b, c # soma b+c colocada em a
add a, a, d # soma b+c+d est em a
add a, a, e # soma b+c+d+e est em a
So necessrias trs instrues para realizar a soma de quatro variveis.
Arquitetura de Computadores I Prof Ma Daniela Catelan 15
Operaes do Hardware
O nmero natural de operandos para uma operao de adio so trs.
Dois nmeros sendo somados;
Umlocal para guardar a soma.
Exigir que cada instruo tenha exatamente trs operandos, nem mais
nem menos, est de acordo com manter o hardware simples.
Princpio de Projeto 1:
simplicidade favorece a regularidade.
Arquitetura de Computadores I Prof Ma Daniela Catelan 16
Operaes do Hardware Exemplo 1
Arquitetura de Computadores I 17 Prof Ma Daniela Catelan
Operaes do Hardware Exemplo 1
Tendo o trecho de cdigo em LAN, traduza
para a linguagem MIPS.
a = b + c;
d = a e;
A traduo realizada pelo compilador.
Em MIPS:
add a, b, c
sub d, a, e
Arquitetura de Computadores I Prof Ma Daniela Catelan 18
Operaes do Hardware Exemplo 2
Arquitetura de Computadores I 19 Prof Ma Daniela Catelan
Operaes do Hardware Exemplo 2
Compile esta instruo complexa no MIPS.
f = (g + h) (i + j)
O compilador precisa desmembrar essa instruo em vrias instrues
assembly, pois somente uma operao realizada por instruo MIPS.
add t0, g, h # var. temp. t0 contm g+h
add t1, i, j # var. temp. t1 contm i+j
sub f, t0, t1 # f recebe t0 t1
Note que uma expresso na linguagem C gera 3 instrues assembly
para o MIPS.
Arquitetura de Computadores I Prof Ma Daniela Catelan 20
Operandos no Hardware
Arquitetura de Computadores I 21 Prof Ma Daniela Catelan
Operandos no Hardware
Ao contrrio dos programas nas linguagens de alto nvel, os
operandos das instrues aritmticas so restritos, precisam ser de um
grupo limitado de locais especiais, embutidos diretamente no
hardware, chamados registradores (registers).
Os registradores so os tijolos da construo do computador
primitivas usadas no projeto do computador e so visveis para o
programador.
O tamanho dos registrados na arquitetura MIPS 32 bits;
Grupos de 32 bits ocorrem com tanta freqncia no MIPS que
recebem o nome de palavra (word).
Arquitetura de Computadores I Prof Ma Daniela Catelan 22
Operandos no Hardware
Uma diferena entre variveis de um programa em linguagem de alto nvel e os
registradores que o nmero de registradores limitado.
O computador MIPS tem 32 registradores.
Princpio de projeto 2:
menor significa mais rpido
Uma quantidade muito grande de registradores pode aumentar o tempo do ciclo de
clock simplesmente porque os sinais eletrnicos levam mais tempo quando precisam
atravessar uma distncia maior.
Deve-se equilibrar o desejo dos programas por mais registradores com o desejo do
projetista de manter o ciclo de clock mais rpido.
Um nmero maior de registradores necessita de um nmero maior de bits para
representao: influncia no tamanho da instruo.
Arquitetura de Computadores I Prof Ma Daniela Catelan 23
Operandos no Hardware
Arquitetura de Computadores I Prof Ma Daniela Catelan 24
Registradores do MIPS:
Os
Registradores
no MIPS
sempre
comeamcom
$
Operandos no Hardware
Exemplo 3
Arquitetura de Computadores I 25 Prof Ma Daniela Catelan
Operandos no Hardware Exemplo 3
tarefa do compilador associar variveis do programa aos
registradores.
Considere, por exemplo, a instruo de atribuio do
exemplo anterior:
f =(g +h) (i +j)
As variveis f, g, h, i e j so associadas aos registradores
$s0, $s1, $s2, $s3, e $s4, respectivamente.
Qual o cdigo MIPS compilado?
add $t0, $s1, $s2
add $t1, $s3, $s4
sub $s0, $t0, $t1
Arquitetura de Computadores I Prof Ma Daniela Catelan 26
Operandos no Hardware:
Operandos na Memria
Arquitetura de Computadores I 27 Prof Ma Daniela Catelan
Operandos no Hardware
Operando na Memria
Operaes aritmticas s ocorrem com os registradoresnas instrues MIPS;
Assim o MIPS deve ter instrues que transferem os dados entre o processador e a
memria:
instrues de transferncia de dados.
Para acessar uma word na memria, necessrio passar o endereo de memria a
ser utilizado.
Arquitetura de Computadores I Prof Ma Daniela Catelan 28
Operandos no Hardware
Operando na Memria
A instruo que copiadados da memria para um registrador
tradicionalmente chamada de load.
O formato da instruo load o nome da operao seguido pelo
registrador a ser carregado, depois uma constante e o registrador
usado para acessar a memria.
lw $t0, 8($s3)
A soma da parte constante da instruo com o contedo do segundo
registrador forma o endereo de memria.
O registrador $t0, recebe o que est em $s3[8]
Arquitetura de Computadores I Prof Ma Daniela Catelan 29
Operandos no Hardware
Operando na Memria
Alm de associar variveis a registradores, o compilador aloca estrutura de dados, como
vetores, em locais na memria.
Como os bytes de 8 bits so teis em muitos programas, a maioria das arquiteturas enderea
bytes individuais.
Endereos de words combinam os endereos dos 4 bytes dentro da palavra.
No MIPS, palavras precisam comear em endereos que sejam mltiplos de 4.
Figura 2.2
Prof Ma Daniela Catelan 30
Operandos no Hardware:
Operandos na Memria
Exemplo 4
Arquitetura de Computadores I 31 Prof Ma Daniela Catelan
Operandos no Hardware Exemplo 4
Compilando uma atribuio quando um operando est na memria.
Vamos supor que A seja uma sequncia de 100 words e que o compilador tenha
associado as variveis ge haos registradores $s1e $s2.
Vamos supor que o endereo inicial da seqncia esteja no endereo armazenado
em $s3(endereo base).
g = h + A[8];
Embora haja uma nica operao nessa instruo de atribuio, um dos operandos
est na memria, de modo que precisamos transferir A[8] para um registrador
($s3contm elemento base) :
lw $t0, 8($s3) #registrador temporrio recebe A[8]
A instruo seguinte (add) pode operar sobre o valor em $t0, j que um
registrador:
lw $t0, 8($s3)
add $s1, $s2, $t0
A constante na instruo chamada de offset e o registrador acrescentado para
formar o endereo chamado de registrador base.
Arquitetura de Computadores I Prof Ma Daniela Catelan 32
Operandos no Hardware
Operando na Memria
No MIPS, palavras precisam comear em endereos que
sejam mltiplos de 4 (restrio de alinhamento).
O endereamento em bytes afeta o ndice do array:
para obter o endereo em bytes de maneira apropriada o
offset necessita ser igual a: 4 x 8 =32
A instruo complementar ao load chama-se store.
Ela copia dados de um registrador para a memria.
A instruo store representada pelo mnemnico sw.
Arquitetura de Computadores I Prof Ma Daniela Catelan 33
Operandos no Hardware:
Operandos na Memria
Exemplo 5
Arquitetura de Computadores I 34 Prof Ma Daniela Catelan
Operandos no Hardware Exemplo 5
Compilando com load e store
Suponha que a varivel h esteja associada ao registrador $s2e o endereo base do
vetor A esteja armazenado em $s3.
Qual cdigo assembly do MIPS para a instruo de atribuio C a seguir?
A[12] =h +A[8]
Embora seja uma instruo na linguagem C, dois operandos esto na memria;
So necessrias instrues para buscar os dois operandos da memria:
lw $t0, 32($s3) # reg. temp. $t0 recebe A[8]
add $t0, $s2, $t0 # reg. temp. $t0 recebe h + A[8]
sw $t0, 48($s3) # armazena resultado em A[12]
Para obter o endereo em bytes apropriado no cdigo anterior, o offset a ser somado
ao registrador base $s3precisa ser 4 x 8, ou 32.
J o outro endereo precisa ser 12x 4, ou 48.
Arquitetura de Computadores I Prof Ma Daniela Catelan 35
Operandosno Hardware:
Constantes ou OperandosImediatos
Arquitetura de Computadores I 36 Prof Ma Daniela Catelan
Operandos no Hardware
Constantes ou Operandos Imediatos
Muitos programas possuem mais variveis do que os
computadores possuem registradores.
Com isso, o compilador tenta manter as variveis mais
utilizadas nos registradores e coloca as restantes na
memria.
Utilizam loads e stores para mover.
O processo de colocar variveis menos utilizadas na
memria denominado spilling registers.
Arquitetura de Computadores I Prof Ma Daniela Catelan 37
Operandos no Hardware
Constantes ou Operandos Imediatos
Uma instruo aritmticaMIPS pode:
Ler dois registradores;
Atuar sobre eles;
Escrever o resultado.
Uma instruo de transferncia de dados MIPS pode:
L um operando;
Escreve um operando;
No atua sobre o operando.
Arquitetura de Computadores I Prof Ma Daniela Catelan 38
Operandosno Hardware:
Constantes ou OperandosImediatos
Exemplo 6
Arquitetura de Computadores I 39 Prof Ma Daniela Catelan
Operandos no Hardware Exemplo 6
Usando apenas as instrues vistas at aqui, como poderamos somar a constante 4
ao registrador $s3?
lw $t0, EndConstante4($s1)
add $s3, $s3, $t0
Supondo que EndConstante4 seja o endereo de memria da constante 4.
Arquitetura de Computadores I Prof Ma Daniela Catelan 40
Operandos no Hardware
Qual seria a alternativa para evitarmos a instruo load no Exemplo 6?
A alternativa oferecer instrues aritmticas em que o operando seja uma
constante.
Essa instruo (no caso de uma soma) chamada de add imediato, ou addi.
addi $s3, $s3, 4 # $s3 = $s3 + 4
Arquitetura de Computadores I Prof Ma Daniela Catelan 41
Operandos no Hardware
Constantes ou Operandos Imediatos
Princpio de projeto 3:
agilize os casos mais comuns.
Os operandos com constantes ocorrem com bastante
frequncia e, com a incluso de constantes dentro das
instrues aritmticas, as operaes tornam-se mais rpidas
para serem executadas.
Arquitetura de Computadores I Prof Ma Daniela Catelan 42
Resumo das Instrues
Arquitetura de Computadores I 43 Prof Ma Daniela Catelan
Operandos no Hardware
Resumo das instrues vistas at o momento
Arquitetura de Computadores I Prof Ma Daniela Catelan 44
Operandos no Hardware:
Exemplo 7
Arquitetura de Computadores I 45 Prof Ma Daniela Catelan
Operandos no Hardware Exemplo 7
Arquitetura de Computadores I Prof Ma Daniela Catelan 46
addi $s2, $s1, -1 # $s2 = $s1 + (-1)
# $s2 = 3 + (-1)
# $s2 = 2
Representando Instrues no
Computador
Arquitetura de Computadores I 47 Prof Ma Daniela Catelan
Representando Instrues no Computador
Arquitetura de Computadores I Prof Ma Daniela Catelan 48
A fim de manter os princpios de simplicidade e regularidade, todas
as instrues do MIPS podem ser agrupadas em trs formatos bsicos:
Instrues Registrador-Registrador (R-type)
Instrues envolvendo valor imediato (I-type)
Instrues de Desvio (J -type)
Representando Instrues no Computador
Embora quando programa-se em assembly utiliza-se mnemnicos
(como lw, sw, add e sub), as instrues so representadas e executadas
atravs de um conjunto de bits.
Alm disso, como os registradores so parte de quase todas as
instrues, preciso haver uma conveno para mapear os nomes
dos registradores em nmeros binrios:
$s0 a $s7 so mapeados nos registradores de 16 a 23;
$t0 a $t7 so mapeados nos registradores de 8 a 15;
Exemplo: qual o cdigo binrio para o registrador $s7?
10111b = 23d
Arquitetura de Computadores I Prof Ma Daniela Catelan 49
Representando Instrues no Computador
Formato R
Arquitetura de Computadores I 50 Prof Ma Daniela Catelan
Representando Instrues no Computador
Formato Registrador (R)
Arquitetura de Computadores I Prof Ma Daniela Catelan 51
Representando Instrues no Computador
Formato Registrador (R)
Add $t0, $s1, $s2
Arquitetura de Computadores I Prof Ma Daniela Catelan 52
Instruo
(opcodee
function)
Reg.
Destino
(rd)
Reg. do
primeiro
operando
de origem
(rs)
Reg. do
segundo
operando
de origem
(rt)
Representando Instrues no Computador
Formato R
Exemplo 8
Arquitetura de Computadores I 53 Prof Ma Daniela Catelan
Representando Instrues no Computador
Exemplo 8
Traduza uma instruo assembly MIPS para uma instruo de
mquina.
Add $t0, $s1, $s2
Campos do MIPS:
Representao Decimal:
Linguagem de Mquina:
Arquitetura de Computadores I Prof Ma Daniela Catelan 54
Representando Instrues no Computador
Exemplo 8
Cada um dos segmentos de uma instruo chamado campo;
O primeiroe o ltimocampos combinados dizem ao computador
MIPS que essa instruo realiza soma.
O segundocampo indica o nmero do registrador que o primeiro
operando de origem da operao de soma (17 =$t1)
O terceirocampo indica o outro operando de origem (18 =$t2)
O quartocampo contm o nmero do registrador que recebero
resultado (8 =$s0)
O quintocampo no empregado nessa instruo.
Arquitetura de Computadores I Prof Ma Daniela Catelan 55
Representando Instrues no Computador
Problemas de endereamento
Existe um problema quando uma instruo precisa de campos maiores do que
aqueles mostrados.
Por exemplo:
a instruo lw precisa especificar dois registradores e uma constante;
se o endereo tivesse apenas 5 bits do formato anterior, a constante estaria
limitada a 32 (2
5
).
Existe ento um conflito:
manter o desejo de que todas as instrues tenham o mesmo tamanho e o desejo de ter
um formato de instruo nico.
Princpio de Projeto 4:
um bom projeto exige bons compromissos.
Arquitetura de Computadores I Prof Ma Daniela Catelan 56
Representando Instrues no Computador
Princpio de Projeto 4:
um bom projeto exige bons compromissos.
O compromisso escolhido pelos projetistas do MIPS manter todas as
instrues com o mesmo tamanho, exigindo assim diferentes formatos
para os campos para diferentes tipos de instrues.
O formato anterior chamado de tipo R (de registrador) ou formato R.
Um segundo tipo de formato de instruo chamado de formato I,
utilizando pelas instrues imediatas e de transferncia de dados.
Arquitetura de Computadores I Prof Ma Daniela Catelan 57
Representando Instrues no Computador
Formato I
Arquitetura de Computadores I 58 Prof Ma Daniela Catelan
Representando Instrues no Computador
Formato Imediato (I)
Arquitetura de Computadores I Prof Ma Daniela Catelan 59
Representando Instrues no Computador
Formato Imediato(I)
lw $t0, 32 ($s3)
Arquitetura de Computadores I Prof Ma Daniela Catelan 60
Instruo
(opcode)
Reg.
Destino
(rt)
Endereo de
memria ou
constante numrica
(immediate)
Reg. Do
operando
de origem
(rs)
Representando Instrues no Computador
Formato I
Exemplo 9
Arquitetura de Computadores I 61 Prof Ma Daniela Catelan
Representando Instrues no Computador
Exemplo 9
Traduza uma instruo assembly MIPS para uma instruo de
mquina.
lw $t0, 32 ($s3)
Campos do MIPS:
Representao Decimal:
Linguagem de Mquina:
Arquitetura de Computadores I Prof Ma Daniela Catelan 62
Exemplo 10
Arquitetura de Computadores I 63 Prof Ma Daniela Catelan
Exemplo 10: Completo
Traduza o cdigo abaixo para o assembly MIPS e depois para a linguagem de
mquina, considerando que: $t1possui a base do array A e $s2corresponde a h.
A[300] = h + A[300];
Assembly MIPS:
lw $t0, 1200($t1) #reg. $t0 recebe A[300]
add $t0, $s2, $t0 #reg. $t0 recebe h +A[300]
sw $t0, 1200($t1) #armazena h +A[300] na mem.
Representao Decimal:
Linguagem de Mquina:
Arquitetura de Computadores I Prof Ma Daniela Catelan 64
Resumo dos Formatos de Instruo
Arquitetura de Computadores I 65 Prof Ma Daniela Catelan
Resumo dos Formatos de Instruo
Arquitetura de Computadores I Prof Ma Daniela Catelan 66
Exerccios
Arquitetura de Computadores I 67 Prof Ma Daniela Catelan
Exerccios
1. Quantos nmeros naturais de
operandosso necessrios para uma
operao de soma?
2. O que diz o Primeiro Princpio de
Projeto?
3. Por que o MIPS possui um nmero
limitado de registradores?
4. Defina spilling registers.
5. Quais as vantagens dos registradores
sobre as memrias no MIPS?
6. Defina Layout da instruo.
7. Demonstre para a instruo a seguir a
sua representao decimal e binria:
sw $t0, 32($s2).
Arquitetura de Computadores I Prof Ma Daniela Catelan 68
8. Converta o cdigo em C seguinte para o cdigo
assembly MIPS. Suponha que os valores das
variveis x, y e z estejam armazenados em $s2, $s3 e
$s4 e que o endereo base da matriz B esteja
armazenada em $s6.
main() {
int x, y, z;
int B[20];
B[0] = x;
y = B[2] + B[3];
}
9. Converta o cdigo assembly para o cdigo de
mquina.
sw $s2, 0($s6)
lw $t0, 8($s6)
lw $t1, 12($s6)
add $s2,$t0,$t1
Arquitetura de Computadores I Prof Ma Daniela Catelan 69
DVIDAS?
Obrigada.