ArquiteturadeComputadores
Prof.AlexandroBaldassin
1osemestre/2017
PersonagensdaSemana
DavidPa5erson(le9)
JohnHennessy(right)
In2000theysharedtheIEEEJohn
VonNeumannMedal“forcrea(nga
revolu(onincomputerarchitecture
throughtheirexplora(on,
populariza(on,and
commercializa(onofarchitectural
innova(ons.”
ArquiteturadeComputadores
2
ARQUITETURADOCONJUNTODE
INSTRUÇÕES(CONTINUAÇÃO)
Tradeoffs
P&H2.1,2.20
ArquiteturadeComputadores
3
Fatoresdacomplexidade
•  Oníveldecomplexidadedasinstruçõeséumdos
fatoresmaisdeterminantesnoprojetodeumISA
•  Porém,essefatoréumasomadediversosoutrosvistos
aseguir
–  Formatodasinstruções
–  Tipodearmazenamentointerno,númerodeoperandose
restriçõesdeprocessamento
–  Modosdeendereçamento
–  Memóriaesub-sistemaeentradaesaída
ArquiteturadeComputadores
4
Formatodasinstruções
•  Umainstruçãoconsistebasicamentedeumcódigode
operaçãoeoperandos
–  Códigodeoperação
•  oqueainstruçãofaz
–  Operandos
•  Valoresusadosnaexecuçãodaoperaçãocorrespondente
Duasvisões
LinguagemdeMontagem LinguagemdeMáquina
addr1,r2,r3
operação
operandos
00101000010111111
Formatobem
definido
necessário!
Quaisbitsdeterminama
operaçãoequaisosoperandos?
ArquiteturadeComputadores
5
Formatodasinstruções
•  RISCexemplo:MIPS
ArquiteturadeComputadores
6
Formatodasinstruções
•  CISCexemplo:x86
ArquiteturadeComputadores
7
Formatodasinstruções:compromissos
•  Tamanhofixo:todasasinstruçõespossuemmesmo
tamanho
–  Vantagens
•  Decodificaçãopelohardwareésimples
•  Maissimplesdedecodificarmaisdeumainstruçãoaomesmotempo
–  Desvantagens
•  Bitsdesperdiçados(porqueissoéruim?)
•  MaisdikcildeestenderoISA
•  Tamanhovariável:tamanhodasinstruçõesdiferem
–  Vantagens
•  Codificaçãocompacta,maisfácildeestenderoISA
–  Desvantagens
•  Maislógicanecessáriaparadecodificação
•  Maisdikcildedecodificarmúllplasinstruçõessimultaneamente
ArquiteturadeComputadores
8
Instruçõesx86aolongodotempo
Fonte:ISAAging:AX86CaseStudy
2013–InsltutodeComputação(UNICAMP)
ArquiteturadeComputadores
9
Tamanhomédiodeopcodes(x86)
Fonte:ISAAging:AX86CaseStudy
2013–InsltutodeComputação(UNICAMP)
ArquiteturadeComputadores
10
Notasobreformatos
•  Geralmentearquiteturascomformatodetamanhofixo
possuemdecodificaçãouniforme
–  osmesmosbitsemcadainstruçãoestãonasmesmas
posições,emespecialocódigodeoperação
–  Permiteolmizaçõesdehardware(prediçãodesaltos,visto
maisadiante)
ArquiteturadeComputadores
11
ClassesdeISA
•  UmISApodeserdivididoemclassesdeacordocomolpodearmazenamento
interno,númerodeoperandoserestriçõesdeprocessamento(ULA)
Máquinaapilha(0-addressmachine)
0operandos
•  Osoperandosestãoimplicitamentenotopodapilha
(TOS)
•  Operaçõespushepopsãousadasparatransferir
operandosentreamemóriaeapilha
Exemplo(C=A+B)
PUSHA
PUSHB
ADD
POPC
ArquiteturadeComputadores
12
ClassesdeISA
•  UmISApodeserdivididoemclassesdeacordocomolpodearmazenamento
interno,númerodeoperandoserestriçõesdeprocessamento(ULA)
Máquinaacumuladora(1-addressmachine)
1operando
•  Umregistradorchamadodeacumuladorésempre
usadoimplicitamentenasoperações
Exemplo(C=A+B)
LOADA
ADDB
STOREC
ArquiteturadeComputadores
13
ClassesdeISA
•  UmISApodeserdivididoemclassesdeacordocomolpodearmazenamento
interno,númerodeoperandoserestriçõesdeprocessamento(ULA)
Register-Memory(2-addressmachine)
2operandos
•  1dosoperandospodeestarnamemória
•  1dosregistradoresfontestambémédeslno
•  Registradoresestãoexplícitosnainstrução
Exemplo(C=A+B)
LOADR1,A
ADDR1,B
STORER1,C
ArquiteturadeComputadores
14
ClassesdeISA
•  UmISApodeserdivididoemclassesdeacordocomolpodearmazenamento
interno,númerodeoperandoserestriçõesdeprocessamento(ULA)
Load-Store(3-addressmachine)
3operandos
•  OperandosdaULAsãoapenasregistradores
•  Instruçõesespecíficasusadasparabuscarelevar
(load-store)valoresnamemória
Exemplo(C=A+B)
LOADR1,A
LOADR2,B
ADDR3,R1,R2
STORER3,C
ArquiteturadeComputadores
15
NotasobreclassesdeISA
•  Umaarquiteturamemory-memorypermitequetodosos
operandos(2ou3)estejamemmemória
–  Ex:VAX(ADDC,A,B)
–  Nenhumamáquinaatualimplementa(porquê?)
•  Arquiteturasextended-accumulatorouspecial-purpose
register
–  Possuemmaisqueapenasumacumuladormasimpõem
restriçõesdeuso
ArquiteturadeComputadores
16
A=BC+XY
Completeoquadro.Assumaqueexisteinstruçãoparamullplicação.
Pilha
Acumulador
RegisterMemory
MemoryMemory
Load-Store
PUSHB
LOADB
LOADR1,B
MULR1,B,C
LOADR1,B
PUSHC
MULC
MULR1,C
MULR2,X,Y
LOADR2,C
MUL
STOREtemp
LOADR2,X
ADDA,R1,R2 LOADR3,X
PUSHX
LOADX
MULR2,Y
LOADR4,Y
PUSHY
MULY
ADDR1,R2
MULR1,R1,R2
MUL
ADDtemp
STORER1,A
MULR3,R3,R4
ADD
STOREA
ADDR1,R1,R3
POPA
STORER1,A
ArquiteturadeComputadores
17
Algunscompromissos
Tipo
Vantagens
Desvantagens
Pilha
•  Tamanhodeinstruçãoreduzido
•  Chamadasdeprocedimento
eficientes
•  Nãopodeaplicaroperaçõesem
muitosvaloresaomesmotempo
•  Operaçãodeveserpossíveldeser
representadanaformaposfixa
Microarquiteturacustosa
Umoperandofonteésempre
subsltuídopeloresultadoda
operação
Register/Memory •  Dadopodeseracessadosema
necessidadedeumainstrução
LOADseparada
•  Boadensidadedecódigo
• 
• 
Memory/
Memory
•  Representaçãocompacta–não
desperdiçaregistradorescom
temporários
•  Microarquiteturacomplexa
•  Memóriaégargalo
Load/Store
•  Forçaousoderegistradores
(porqueissoébom?–vistoa
seguir)
•  Implementaçãomaissimples
ArquiteturadeComputadores
•  Maiornúmerodeinstruções
18
Registradores
•  Virtualmentetodanovaarquiteturaprojetadaaparlr
de1980usaomodeloload-store
–  Usarregistradoresébom!
•  Porqueterregistradoreséumaboaideia?
–  Usaoprincípiodalocalidadetemporalparaevitarterdeir
paraamemóriafrequentemente(memóriaémaislenta)
–  Compiladortemmaisoportunidadeparaolmizarocódigo
ArquiteturadeComputadores
19
Registradores:compromissos
•  Quanldadederegistradoresafeta:
–  Númerodebitsusadosparacodificaçãonainstrução
–  Númerodevaloresdislntosmanldosparaacessorápido
–  Lógica,tempodeacesso,consumodeenergia
•  Númerograndederegistradores
–  Vantagens
•  Possibilitamelhorusodealocaçãoderegistradorespelocompilador
–  Desvantagens
•  Formatodainstruçãomaior
•  Maiscomponenteslógicosparaimplementação(tamanho)
ArquiteturadeComputadores
20
Impactonúmeroderegistradores
•  Suaarquiteturapossui16instruçõese16registradores
(de0até15).Asinstruçõesdasuaarquiteturapossuem
formatofixode16bits.Quantosoperandosem
registradoressuaarquiteturaconsegueespecificar
explicitamenteemumainstruçãoADD?
16instruções->necessário4bits
Sobram12bitspararegistradores
16registradores->necessário4bitsparaendereçá-los(0-15)
Cadaoperando4bits=>12/4=>3operandos
•  Esehouvessem32registradores?
ArquiteturadeComputadores
21
Modosdeendereçamento
•  Ummododeendereçamentodeterminaalocalização
dosoperandosdainstrução
–  Registrador
–  Imediato
–  Memória
•  Hámuitosmodosparacálculodoendereçodememória
•  Nãohánaliteraturaumanormalizaçãoparaosnomes
dosmodosdeendereçamento
–  Usaremososusadosnoslivrostextos
ArquiteturadeComputadores
22
ModosdeendereçamentoMIPS
addir2,r3,#100
addr2,r3,r4
lwr2,10(r3)
beqr1,r2,100
j1000
ArquiteturadeComputadores
23
ModosdeendereçamentoMIPS
addir2,r3,#100
addr2,r3,r4
lwr2,10(r3)
beqr1,r2,100
j1000
ArquiteturadeComputadores
24
ModosdeendereçamentoMIPS
addir2,r3,#100
addr2,r3,r4
lwr2,10(r3)
beqr1,r2,100
j1000
ArquiteturadeComputadores
25
ModosdeendereçamentoMIPS
addir2,r3,#100
addr2,r3,r4
lwr2,10(r3)
beqr1,r2,100
j1000
ArquiteturadeComputadores
26
ModosdeendereçamentoMIPS
addir2,r3,#100
addr2,r3,r4
lwr2,10(r3)
beqr1,r2,100
j1000
ArquiteturadeComputadores
27
Modosdeendereçamento
•  Quaisasvantagensdemaismodosdeendereçamentos?
–  Melhormapeamentoentreconstruçõesdealtonívelebaixo
nível
•  Acessoaarrays,indireção…
–  Menornúmerodeinstruções/programaetamanhodocódigo
•  Edesvantagens?
–  Compiladorpodeterdificuldadesparadecidirqualusar
•  Muitasformasdefazeramesmacoisacomplicaoprojetodo
compilador
–  Hardwaremaiscomplexo
ArquiteturadeComputadores
28
Memória
•  Espaçodeendereçamento
–  Qualaquanldadedememóriaendereçada?
•  Formadeendereçamento(addressability)
–  Quantosdadosumaúnicaposiçãodememóriaarmazena?
•  Endereçadaabytes(maioriadosISAs),palavras,…
•  Vantagensedesvantagens?
•  Ordemdesubpalavrasnamemóriaquandoumapalavra
éacessada
–  LiEleversusbigendian(quandoéproblema?)
ArquiteturadeComputadores
29
…maissobrememória
•  Restriçõesdealinhamento
–  Nemtodoendereçopodeseracessadoportodainstrução
–  Ex:instruçõesdeload/storedepalavrasnoMIPSnecessitam
queoendereçosejamúllplode4(porquê?)
•  Suporteparamemóriavirtual
–  Programastemailusãodequeamemóriaksicaémaiordo
querealmenteé
–  Comparecomousedeoverlays…
ArquiteturadeComputadores
30
Sub-sistemadeentrada/saída
•  Comointerfacearcomdisposilvosdeentrada/saida?
–  Memóriamapeada
•  Regiãodememóriaémapeadaparadisposilvos
•  Operaçõessãoinstruçõesdeload/storenoendereçodesses
disposilvos
–  Instruçõesespeciais
•  Instruçõesespecíficasparacomunicaçãocomdisposilvos
•  Vantagens/Desvantagensdecadaesquema?
–  Qualémaisgeral?
–  Qualpotencialmenteeconomizaespaçodeendereçamento?
ArquiteturadeComputadores
31
OutrostópicosenvolvendoISA
•  Modosdeoperaçãopriveligiados(proteção)?
–  Modousuárioversusmodokernel
•  Tiposdedados
•  Falhadepáginatratadapeloso{wareouhardware?
•  Coerênciadecachegerenciadapeloso{wareou
hardware?
•  Tratamentodeinterrupção/exceção
–  Interrupçãovetorizada?
–  Exceçõesprecisas/imprecisas
ArquiteturadeComputadores
32
Resumindo…
•  Usualmentetemos:
CISC
RISC
Instruçõescomplexas
Instruçõessimples
Muitosformatosdeinstrução
Poucosformatosdeinstrução
Formatovariável
Formatofixo
Decodificaçãonão-uniforme
Decodificaçãouniforme
Muitosmodosdeendereçamentos
Poucosmodosdeendereçamentos
Register-memory/memory-memory
Load-store
ArquiteturadeComputadores
33
Leiturasrecomendadas
•  G.M.Amdahl,G.A.BlaauwandF.P.Brooks-
ArchitectureoftheIBMSystem/360,IBMJournal,1964
•  D.Pa}erson,C.Sequin-RISCI:AReducedInstruc@on
SetVLSIComputer,ISCA,1981
•  G.Radin-The801minicomputer,ASPLOS,1982
ArquiteturadeComputadores
34
ARQUITETURAMIPS
Aspectosgeraisdaarquitetura
Linguagemdemontagemedemáquina
P&H2.2,2.3,2.5,2.6,2.7,2.10
H&H6.2,6.3,6.4,6.5
ArquiteturadeComputadores
35
MIPS
•  EstudaremoscommaisdetalhesoprocessadorMIPS
–  MIPS–MicroprocessorwithoutInterlockedPipelineStages
–  Bastanteusadoemsistemasembarcados
–  UsadonosconsolesNintendo64,Playstalon1e2
–  Microarquitetura(earquitetura)simplesedidálca
•  ComeçaremosvendoaspectosdoISAealinguagemde
montagem
–  Importanteparaposteriormenteentendermoscomoamicroarquiteturafunciona
ArquiteturadeComputadores
36
MIPS–Resumodaarquitetura
•  Formatosdetamanhofixo(apenas3)
–  32bits,decodificaçãohomogênea
•  Conjuntoderegistradoresdepropósitogeral
–  32registradoresde32bitscada
•  Arquiteturaload-storecom3operandos
•  Poucosmodosdeendereçamento(cercade5)
•  Espaçodeendereçamentode4Gb
–  Memóriaendereçadaabyte
–  Endiannessconfigurável
–  Instruçõesdeload/storedepalavrasprecisamestaralinhadas
•  Peloexposto,MIPSéumaarquiteturaRISCouCISC?
ArquiteturadeComputadores
37
Linguagemdemontagem
•  LinguagemdeMontagem
–  versãotextualdalinguagemdemáquina(podevariarde
montadorparamontador)
•  Sintaxeparainstruçõescom3operandos:
mnoop1,op2,op3
mnemônicoda
operação
operando
desZno
ArquiteturadeComputadores
operandos
fonte
38
Operandos
•  Operandospodemserdivididosem3classesprincipais
1.  Registradores
2.  Imediatos(constantes)
3.  Posiçãodememória
ArquiteturadeComputadores
39
Registradores
•  Registradorespodemserreferenciadospelonúmeroou
nome
Nome
Número
Função
$zero
$0
constantezero
$at
$1
reservadoparamontador
$v0-$v1
$2-$3
valoresderetornodeprocedimento
$a0-$a3
$4-$7
argumentosparaprocedimento
$t0-$t7
$8-$15
variáveistemporárias
$s0-$s7
$16-$23
variáveislocais(preservadosatravésdachamada)
$t8-$t9
$24-$25
variáveistemporárias
$k0-$k1
$26-$7
reservadoparasistemaoperacional
$gp
$28
globalpointer
$sp
$29
stackpointer
$fp
$30
framepointer
$ra
$31
endereçoderetornodeprocedimento
ArquiteturadeComputadores
40
Instruçõesaritmélcas
•  Adição
add
$s0, $s1, $s2
a=b+c
altonível
•  Subtração
sub
$s0, $s1, $s2
a=b-c
ArquiteturadeComputadores
41
Instruçõesaritmélcas
•  Qualsequênciadeinstruçõeséequivalenteà
expressãoabaixo?
a=b+c+d-e
add
sub
add
$t0, $s1, $s2
$t1, $s3, $s4
$s0, $t0, $t1
# temp0 = b+c
# temp1 = d-e
# a = (b+c) + (d-e)
ArquiteturadeComputadores
42
Imediatos
•  Umdosoperandospodeserespecificadocomo
imediato
•  Imediatossãocodificadosnaprópriainstrução
•  Exemplo:instruçãodesomacomimediato
addi $s0, $s1, 10
a = b + 10
ArquiteturadeComputadores
complemento
de2
43
Imediatos
•  Porquenãoháinstruçãodesubtraçãocomimediatono
MIPS?
a = b - 10
addi $s0, $s1, -10
•  Comofazeratribuição?
a=b
add
$s0, $s1, $zero
ArquiteturadeComputadores
44
Memória
•  Endereçadaabytes
•  Instruçõesparatransferênciadedados
–  memória→registrador
–  registrador→memória
arquitetura
load/store
•  Todaoperaçãoemmemóriadeveserfeitaatravésdas
instruçõesdeleituraeescrita!!!
ArquiteturadeComputadores
45
Transferênciadedados
•  Sintaxedasinstruções
registradorarmazenando
dadolido(load)ouescrito
(store)
operaçãodeleituraou
escrita
mno reg1,imm(reg2)
deslocamento(offset)aparZrda
basedamemória(dadoembytes!)
ArquiteturadeComputadores
endereçodememória
registradorcomendereço
basedamemória
46
Leituradememória
•  Leituradepalavras:lw
li}le/big
endian?
.
.
.
lw $t0, 12($s0)
12
assumindo$s0==0
+
ArquiteturadeComputadores
0xAA
15
0x1F
14
0x37
13
0x91
12
0xBF
11
.
.
.
0x13
1
0xF1
0
47
Leituradememória
•  Sequênciadeinstruçõesequivalenteàexpressão:
vetordepalavras
a = b + A[5]
use: a = $s0, b = $s1, A = $s2
lw
add
$t0, 20($s2)
$s0, $s1, $t0
# temp = A[5]
# a = b + A[5]
ArquiteturadeComputadores
48
Escritadememória
•  Escritadepalavras:sw
–  similaràoperaçãodeleitura
sw $t0, 12($s0)
•  Lembre-sequeoimediatoindicaumnúmeroem
complementode2(podesernegalvo)embytes.
ArquiteturadeComputadores
49
Instruçõesdedesvio
•  Alteramofluxodeexecução
•  Desviocondicional
–  condiçãoétestada
–  desviopodesertomadoounão
•  Desvioincondicional
–  desviosempretomado
•  Rótulo
–  determinapróximainstruçãoaserexecutadacasodesvioseja
tomado
ArquiteturadeComputadores
50
Desviocondicional
•  Condiçãotestada
–  igualdadeentredoisregistradores
•  Duasinstruçõesprincipais
beq
reg1,reg2,rótulo
bne
saltapararótulosereg1
==reg2
reg1,reg2,rótulo
saltapararótulose
reg1!=reg2
ArquiteturadeComputadores
51
Desviocondicional
•  TransformarparalinguagemdemontagemdoMIPS:
// assuma: $s0 = a, $s1 = b, $s2 = c, $s3 = i, $s4 = j
if (i==j)
a = b + c;
a = a – i;
L1:
bne
add
$s3, $s4, L1
$s0, $s1, $s2
# se i != j, desconsidera bloco ‘if’
#a=b+c
sub
$s0, $s0, $s3
#a=a-i
ArquiteturadeComputadores
52
Desvioincondicional
•  Saltosempretomado
–  necessárioespecificarapenasorótulo
j
DESTINO
•  TransformarparalinguagemdemontagemdoMIPS
// assuma: $s0 = a, $s1 = b, $s2 = c, $s3 = i, $s4 = j
if (i==j) a = b + c;
else a = b – c;
ArquiteturadeComputadores
53
Desvioincondicional
beq
sub
j
BLK_IF:
add
FIM:
$s3, $s4, BLK_IF
$s0, $s1, $s2
# se i == j, executa bloco ‘if’
# bloco else: a = b – c
$s0, $s1, $s2
#a=b+c
FIM
ArquiteturadeComputadores
54
Desigualdades
•  Comotestaraseguintecondição?
if (a < b) {}
•  InstruçãoSLT(setlessthan)
slt regDest,regSrc1,regSrc2
if(regSrc1<regSrc2)regDest=1;
elseRegDest=0;
slt
bne
$t0, $s0, $s1
$t0, $zero, L1
# $t0 = ($s0 < $s1)
# salta se ($s0 < $s1)
ArquiteturadeComputadores
55
Outrasinstruções
•  Lógicas
–  AND,ANDI,OR,ORI
•  Shi{s(deslocamentos)
–  SLL–shi{le{logical
–  SRL–shi{rightlogical
–  Ex:
sll reg1,reg2,shamt
resultado bitsadeslocar deslocamento(<32)
ArquiteturadeComputadores
56
Linguagemdemáquina
•  LinguagemdeMontagem
–  descriçãotextualdasinstruções
–  computador“nãoentende”texto
•  LinguagemdeMáquina
–  0’se1’s
•  Montador(assembler)
–  convertelinguagemdemontagemparalinguagemde
máquina
ArquiteturadeComputadores
57
Tradução
homem
altonível→linguagemdemontagem
temp = v[k];
v[k] = v[k+1];
v[k+1] = temp;
compilador
lw
lw
sw
sw
máquina
$t0,
$t1,
$t1,
$t0,
linguagemdemontagem→
linguagemdemáquina
0($2)
4($2)
0($2)
4($2)
montador
00001001110001101010111101011000
10101111010110000000100111000110
11000110101011110101100000001001
01011000000010011100011010101111
ArquiteturadeComputadores
58
Codificação
•  Todasinstruçõespossuem32bits
•  Trêsformatosprincipais
–  Tipo-R
•  operandossãotodosregistradores
–  Tipo-I
•  umoperandoéimediato
–  Tipo-J
•  instruçõesdedesvioincondicional
ArquiteturadeComputadores
59
CodificaçãolpoR
add
6bits
5bits
$8,$9,$10
5bits
5bits
5bits
6bits
opcodersrtrdshamtfunct
ArquiteturadeComputadores
60
CodificaçãolpoR
add
$8,$9,$10
opcode
funct
0x00
6bits
0x20
5bits
5bits
5bits
5bits
6bits
opcodersrtrdshamtfunct
ArquiteturadeComputadores
61
CodificaçãolpoR
add
rs
0x00
6bits
$8,$9,$10
rt
rd
0x09
0x0A
0x08
5bits
5bits
5bits
0x20
5bits
6bits
opcodersrtrdshamtfunct
ArquiteturadeComputadores
62
CodificaçãolpoR
add
0x00
6bits
$8,$9,$10
0x09
0x0A
0x08
0x00
0x20
5bits
5bits
5bits
5bits
6bits
opcodersrtrdshamtfunct
ArquiteturadeComputadores
63
CodificaçãolpoR
add
0x00
6bits
$8,$9,$10
0x09
0x0A
0x08
0x00
0x20
5bits
5bits
5bits
5bits
6bits
Qualainstruçãoemhexadecimal?
ArquiteturadeComputadores
64
CodificaçãolpoR
add
$8,$9,$10
0x00
0x09
0x0A
0x08
0x00
0x20
000000
01001
01010
01000
00000
100000
5bits
5bits
5bits
5bits
6bits
6bits
ArquiteturadeComputadores
65
CodificaçãolpoR
add
$8,$9,$10
0x00
0x09
0x0A
0x08
0x00
0x20
000000
01001
01010
01000
00000
100000
5bits
5bits
5bits
5bits
6bits
6bits
0x0 0x1
0x2
0xA 0x4 0x0
ArquiteturadeComputadores
0x2 0x0
66
CodificaçãolpoR
add
0x00
0x09
$8,$9,$10
0x0A
0x08
0x00
0x20
instruçãoemhexadecimal
000000
6bits
01001
01010
01000
00000
100000
5bits
5bits
5bits
5bits
6bits
0x0 0x1
0x2
0xA 0x4 0x0
ArquiteturadeComputadores
0x2 0x0
→0x012A4020
67
TipoI
•  Necessáriocodificaroimediatonainstrução
•  Desejávelquesejaconsistentecomlpo-R
lpo-R
lpo-I
op
rs
rt
rd
6bits
5bits
5bits
5bits
6bits
5bits
5bits
16bits
op
rs
rt
imm
fonte deslno
shamt
funct
5bits
6bits
complementode2
[-32768,+32767]
ArquiteturadeComputadores
68
CodificaçãolpoI
addi $21,$22,-50
0x08
6bits
0x16
0x15
5bits
5bits
0xFFCE
16bits
0x22D5FFCE
ArquiteturadeComputadores
69
Imediatosemdesvioscondicionais
•  Seimediatorepresentasseendereçoefelvo,somente
umapequenapartedamemóriaseriaendereçável
•  Solução
–  endereçamentorelalvoaoPC
–  imediatoésomadoaovalordoPC
–  possívelsaltar±215bytesaparlrdaposiçãoatual
•  Comomelhorar?
ArquiteturadeComputadores
70
Imediatosemdesvioscondicionais
•  NoMIPSinstruçõessãopalavras(32bits),logosão
alinhadasem4bytes
–  representarimediatoscomopalavrasaoinvésdebytes
–  possívelsaltar±215palavrasaparlrdoPC(±217bytes)
•  Cálculodoendereço
–  Sesaltonãoétomado
PC=PC+4
–  Sesaltoétomado
PC=(PC+4)+(imediato*4)
ArquiteturadeComputadores
71
Codificaçãodedesvioscondicionais
lpo-I
op
rs
rt
endereço(imm)
LOOP:
beq
$t1, $zero, FIM
addi
$s1, $s1, 2
addi
$s0, $t1, 1
j LOOP
FIM:
0x04
0x09
0x00
ArquiteturadeComputadores
???
72
Codificaçãodedesvioscondicionais
lpo-I
op
rs
rt
endereço(imm)
LOOP:
beq
$t1, $zero, FIM
addi
$s1, $s1, 2
addi
$s0, $t1, 1
j LOOP
FIM:
0x04
0x09
0x00
0x0003
ArquiteturadeComputadores
73
EndereçamentorelalvoaoPC
•  Semovermosocódigodeposição,ovalordoimediato
emumainstruçãodesaltocondicionalprecisaser
alterado?
–  não(PIC–Posi(onIndependentCode)
•  Eseodeslnodosaltoeslveralémde215instruções?
–  reorganizarocódigoeusarsaltoincondicional
ArquiteturadeComputadores
74
TipoJ
•  Idealmente,gostaríamosdepodersaltarparaqualquer
lugarnamemória(30bits)
•  Necessáriocampoparacódigodaoperação(op)
lpo-J
op
6bits
endereço
26bits
226palavras=256MB
•  Operandoespecifica28bitsdoendereço.Eos4bits
restantes?
ArquiteturadeComputadores
75
Cálculodoendereçodesalto
endereçoefelvo
4bits
4bitsmaissignificantesdePC+4
26bits
operando
00
alinhadoempalavras
•  Atenção!
–  endereçodadopelooperandoemumainstruçãodesalto
incondicionaléabsoluto(aocontráriodossaltoscondicionais,
ondeoendereçoérelalvoaoPC)
ArquiteturadeComputadores
76
Saltosincondicionais
•  Instruçãojpermiteumafaixadeendereçamentode226
palavras
•  Okpara99.99999%doscasos,mas...
•  Eseprecisarsaltarparaumafaixadeendereçoalémda
permildaporj?
–  Usarinstruçãojr$reg
•  códigosaltaparaendereçoespecificadopeloregistrador
ArquiteturadeComputadores
77
Codificaçãodeinstruções
•  Transformeparalinguagemdemáquinaassumindoque
codecorrespondaaoendereço0x00080000
code: addi $t0, $t0, 2
laco:
slt
$t1, $t0, $s0
bne
$t1, $zero, exit
# 3 outras instrucoes aqui
j
laco
exit:
ArquiteturadeComputadores
78
Codificaçãodeinstruções
•  Transformeparalinguagemdemáquinaassumindoque
codecorrespondaaoendereço0x00080000
code: addi $t0, $t0, 2
laco:
slt
$t1, $t0, $s0
bne
$t1, $zero, exit
# 3 outras instrucoes aqui
j
laco
exit:
0x21080002
addi$t0,$t0,2
op=0x8 rs=0x8 rt=0x8imm=0x2 [0x8|0x8|0x8|0x2]
001000 010000100000....10
0x21080002
ArquiteturadeComputadores
79
Codificaçãodeinstruções
•  Transformeparalinguagemdemáquinaassumindoque
codecorrespondaaoendereço0x00080000
code: addi $t0, $t0, 2
laco:
slt
$t1, $t0, $s0
bne
$t1, $zero, exit
# 3 outras instrucoes aqui
j
laco
exit:
0x21080002
0x0110482A
slt $t1,$t0,$s0
op=0x0 rs=0x8rt=0x10rd=0x9shamt=0funct=0x2A
[0x0|0x8|0x10|0x9|0x2A]
000000 01000100000100100000101010
0x0110482A
ArquiteturadeComputadores
80
Codificaçãodeinstruções
•  Transformeparalinguagemdemáquinaassumindoque
codecorrespondaaoendereço0x00080000
code: addi $t0, $t0, 2
laco:
slt
$t1, $t0, $s0
bne
$t1, $zero, exit
# 3 outras instrucoes aqui
j
laco
exit:
0x21080002
0x0110482A
0x15200004
bne$t1,$zero,exit
op=0x5 rs=0x9rt=0x0imm=0x4 [0x5|0x9|0x0|0x4]
000101 010010000000..100
0x15200004
ArquiteturadeComputadores
81
Codificaçãodeinstruções
•  Transformeparalinguagemdemáquinaassumindoque
codecorrespondaaoendereço0x00080000
code: addi $t0, $t0, 2
laco:
slt
$t1, $t0, $s0
bne
$t1, $zero, exit
# 3 outras instrucoes aqui
j
laco
exit:
0x21080002
0x0110482A
0x15200004
0x08020001
j
laco
op=0x2 imm=0x20001 [0x2|0x20001]
000010 00000000100000000000000001
0x08020001
ArquiteturadeComputadores
82