Vous êtes sur la page 1sur 26

Universidade Federal do Rio Grande do Sul Instituto de Informtica Programa de Ps-Graduao em Computao

Arquitetura e Organizao de Processadores Aula 2 Processadores RISC Apresentao do processador MIPS

CMP237

1. Processadores RISC
dcada de 60 introduo de famlias de computadores (ex: IBM 360) distino entre arquitetura e organizao uso de microprogramao arquitetura x organizao possvel compromisso entre custo e desempenho no definido unicamente pela arquitetura impacto de uma instruo no decisivo na implementao microprogramao memria principal: ncleos, grande tempo de acesso memria de controle: semicondutora, barata grandes microprogramas no acrescentavam custo maior desempenho: mover software para microprogramas
CMP237

Processadores CISC
instrues mais complexas
facilitar tarefa dos compiladores aumentar desempenho

Digital VAX 11/780 303 instrues 16 modos de endereamento Intel 386 111 instrues 8 modos de endereamento Motorola 68020 109 instrues 18 modos de endereamento instrues com comprimento e formato variveis

CMP237

Mudanas no contexto
a partir da metade da dcada de 70 memria principal: semicondutores no lugar de ncleos memria principal no era mais 10 vezes mais lenta que memria de controle introduo de memrias cache baratas e rpidas acessos memria cache to rpidos quanto memria de controle efeitos colaterais de conjuntos complexos de instrues tempo de projeto mais longo, mais erros de projeto dificuldade no desenvolvimento de microcdigos com at 400 Kbytes

CMP237

Mudanas no contexto
compiladores utilizando sub-conjuntos da arquitetura difcil utilizao de instrues complexas otimizao de cdigo tornava possvel utilizao de instrues mais simples maioria das instrues do conjunto eram pouco utilizadas nas aplicaes mais comuns advento de circuitos VLSI e problemas no projeto de processadores em um chip nico

CMP237

Uso de instrues
exemplo: uso mdio de instrues do 8086 em 3 aplicaes assembler MASM, compilador Turbo C, Lotus 1-2-3 Transferncia de dados MOV 29 PUSH / POP 12 LEA 3 Aritmticas / lgicas CMP SAL / SHR / RCR INC / DEC ADD OR / XOR 2 4 4 10
CMP237

7 5 5 3 3

Controle / desvio JMP LOOP CALL / RET desvios condicionais

Fundamentos RISC
idia lanada no final da dcada de 70 por pesquisadores da Universidade de Berkeley desenvolver conjunto de instrues pequeno e bem simples mquina com arquitetura bem simples pode ter organizao mais eficiente e maior velocidade de operao perspectiva global de aumento de desempenho processador num chip nico
melhor aproveitamento de recursos escassos ganho na lgica de controle aproveitado no bloco operacional

maior nmero de instrues nos programas compensado por instrues mais rpidas instrues mais curtas transferir para o software ( compilador ) o esforo de otimizao do tempo de execuo

CMP237

Ganho na lgica de controle


uso de lgica hardwired, e no microprogramada maior velocidade microprocessadores convencionais ocupam at 50% do espao com bloco de controle processadores RISC: controle ocupa apenas 10% do espao aumento do nmero de registradores no espao ganho
diminuio do gargalo de von Neumann

maior possibilidade de uso de pipelines homogneos

CMP237

Exemplo
V1 = V2 + V3 + V4 + V5 V1 a V5 so variveis em memria Processador CISC supondo instrues com 3 endereos, ocupando 3 palavras V1 = V2 + V3 V1 = V1 + V4 V1 = V1 + V5 3 x 3 = 9 palavras 3 x 6 = 18 acessos memria LOAD LOAD ADD LOAD ADD LOAD ADD STORE R2, V2 R3, V3 R1, R2, R3 R4, V4 R1, R1, R4 R5, V5 R1, R1, R5 V1, R1 Processador RISC instrues ocupam 1 palavra

8 x 1 = 8 palavras 8 x 1 + 5 x 1 = 13 acessos memria


CMP237

Medidas concretas
fase de execuo da instruo num nico ciclo de relgio instrues to rpidas quanto micro-instrues todas as instrues do mesmo tamanho e com o mesmo formato (ou com poucas variaes de formato) simplificar implementao do controle dados imediatos pequenos e deslocamentos pequenos usar modos de endereamento bem simples e poucos tipos de dados acesso memria principal apenas atravs de instrues LOAD e STORE demais instrues fazem operaes apenas entre registradores simplificar implementao do controle ( pipeline ) tornar operaes aritmticas e lgicas mais rpidas

CMP237

2. MIPS - Registradores
32 registradores de propsitos gerais de 32 bits
$0, $1, , $31 operaes inteiras endereamento

$0 tem sempre valor 0 $31 guarda endereo de retorno de sub-rotina 32 registradores de ponto flutuante de 32 bits (preciso simples) $f0, $f1, , $f31
podem ser usados em pares para preciso dupla

registradores Hi e Lo para uso em multiplicao e diviso

CMP237

3. MIPS - Tipos de dados


dados inteiros disponveis em instrues load e store
bytes meias-palavras de 16 bits palavras de 32 bits

dados inteiros disponveis em instrues aritmticas e lgicas


meias-palavras de 16 bits (estendidos para 32 bits) palavras de 32 bits

dados em ponto flutuante


preciso simples em 32 bits (expoente: 8 bits, magnitude: 24 bits) preciso dupla em 64 bits (expoente: 11 bits, magnitude: 53 bits)

CMP237

4. MIPS - Modos de endereamento


acessos memria devem ser alinhados
dados de 32 bits devem estar em endereos mltiplos de 4 dados de 16 bits devem estar em endereos mltiplos de 2

modo registrador
para instrues aritmticas e lgicas: dado est em registrador para instrues de desvio incondicional: endereo est em registrador

modo base e deslocamento


para instrues load e store base registrador inteiro de 32 bits deslocamento de 16 bits contido na prpria instruo

modo relativo ao PC
para instrues de branch condicional endereo a soma do PC com deslocamento contido na instruo deslocamento dado em palavras e precisa ser multiplicado por 4
CMP237

Modos de endereamento
modo imediato
para instrues aritmticas e lgicas dado imediato de 16 bits contido na prpria instruo dado estendido para 32 bits extenso com sinal nas instrues aritmticas extenso sem sinal nas instrues lgicas

para que se possa especificar constantes de 32 bits


instruo lui (load upper immediate) carrega 16 bits imediatos na parte superior do registrador parte inferior do registrador zerada instruo seguinte precisa fazer soma imediata do registrador com 16 bits da parte inferior

CMP237

Modos de endereamento
modo absoluto
para instrues de desvio incondicional instruo tem campo com endereo de palavra com 26 bits endereo de byte obtido com dois bits menos significativos iguais a 0 4 bits mais significativos obtidos do PC s permite desvios dentro de uma rea de 256 Mbytes

PC

00 4 bits 26 bits

CMP237

5. MIPS - Formatos das instrues


todas as instrues tm 32 bits
todas tm op-code de 6 bits modo de endereamento codificado juntamente com o op-code

instrues de tipo I
loads, stores operaes aritmticas e lgicas com operando imediato desvios condicionais (branches) desvios incondicionais para endereo em registrador
6 5 5 16

op-code

rs

rt

oper. imed. ou deslocam.

CMP237

Formatos das instrues


instrues de tipo R
instrues aritmticas e lgicas instrues de movimentao entre registradores shamt (shift amount) usado em instrues de deslocamento funct a operao a ser feita pela ALU
6 5 5 5 5 6

op-code

rs

rt

rd

shamt

funct

instrues de tipo J
desvios com endereamento absoluto chamada de sub-rotina
6 26

op-code

endereo
CMP237

6. MIPS - Tipos de instrues


instrues load / store
so sempre tipo I qualquer registrador de propsitos gerais pode ser carregado ou armazenado da / na memria pode-se carregar ou armazenar bytes, meias palavras, palavras endereamento sempre por base e deslocamento

lb, lh, lw load byte, halfword, word


sinal estendido em lb e lh

lbu, lhu load byte, halfword sem extenso de sinal sb, sh, sw store byte, halfword, word
6 5 5 16

op-code rs (base)

rt

deslocamento
CMP237

Instrues aritmticas e lgicas


operao entre 2 registradores, resultado num terceiro registrador
tipo R

add, sub, and, or, nor, xor comparao slt compara dois registradores e coloca valor 1 ou 0 em registrador destino
6 5 5 5 5 6

op-code

rs

rt

rd

funct

existem verses com operando imediato, de tipo I


addi, andi, ori, xori, slti
6 5 5 16

op-code

rs

rt

operando imediato
CMP237

Instrues aritmticas e lgicas


$0 usado para sintetizar operaes populares carga de constante = soma imediata onde $0 um dos operandos
addi
6

$5, $0, 10
5 5 16

op-code

add
6

rs

rt

operando imediato

mover de registrador para registrador = soma com $0


$6, $2, $0
5 5 5 5 6

op-code

rs

rt

rd

funct

CMP237

Instrues aritmticas e lgicas


instrues de deslocamento varivel
tipo R sllv, srlv shift lgico (entra 0 na extremidade) srav shift aritmtico (duplica sinal) desloca registrador rt pela distncia especificada no registrador rs e coloca resultado no registrador rd

instrues de deslocamento constante


tipo R sll, sra, srl desloca registrador rt pela distncia especificada no campo shamt e coloca resultado no registrador rd
6 5 5 5 5 6

op-code

rs

rt

rd

shamt

funct
CMP237

Instrues aritmticas e lgicas


instruo de multiplicao: mul
multiplica registradores rs e rt resultado colocado em hi (32 msb) e lo (32 lsb)

instruo de diviso: div


divide registrador rs pelo registrador rt quociente colocado em lo resto colocado em hi
6 5 5 10 6

instrues de movimentao permitem transferir dados entre hi e lo e os demais registradores


mfhi Rd, mflo Rd mthi Rs, mtlo Rs
CMP237

op-code

rs

rt

funct

Instrues de desvio incondicional


instruo j
tipo J endereo destino = concatenao dos 4 msb do PC com endereo imediato de 28 bits
6 26

op-code
instruo jr

endereo

tipo I: endereo destino contido em registrador tambm serve para retornar de sub-rotina
6 5 15 6

op-code

rs

8
CMP237

Instrues de desvio incondicional


instruo jal (jump and link)
tipo J desvio para sub-rotina, endereo especificado na instruo endereo de retorno salvo em $31
6 26

op-code

endereo

instruo jalr (jump and link register)


tipo R desvio para sub-rotina, endereo especificado em rs endereo de retorno salvo em rd
6 5 5 5 5 6

op-code

rs

rd

funct
CMP237

Instrues de desvio condicional


so sempre tipo I endereo destino = soma do PC com offset imediato de 16 bits instrues que testam um nico registrador
bgez, bgtz, blez, bltz desvia se registrador , >, , < zero bgezal, bltzal como bgez e bltz, mas salva de endereo de retorno em $31

instrues que comparam dois registradores


beq, bne desvia se registradores so iguais (ou diferentes)
6 5 5 16

op-code

rs

rt

offset

CMP237

Instrues de ponto flutuante


mover operandos de preciso simples ou dupla entre registradores
mov.d, mov.s

soma, subtrao, negao, multiplicao, diviso em preciso simples e dupla


add.s, sub.s, neg.s, mul.s, div.s add.d, sub.d, neg.d, mul.d, div.d

comparaes em preciso simples e dupla


c.eq.s, c.le.s, c.lt.s, c.eq.d, c.le.d, c.lt.d,

converso para ponto flutuante de preciso simples (ou dupla)


cvt.s.d, cvt.s.w converter FP double (ou inteiro) para FP single cvt.d.s, cvt.d.w converter FP single (ou inteiro) para FP double

converso de ponto flutuante para inteiro


cvt.w.s, cvt.w.d converter FP double (ou single) para inteiro

CMP237

Vous aimerez peut-être aussi