Arquitetura de Computadores
Arquitetura de Computadores
(caminho de dados + unidade de controle)
(caminho de dados + unidade de controle)
(Monociclo)
(Monociclo)
quinta-feira, 3 de abril de 2008
Departamento de Sistemas e Computação
2
Fatores que afetam o desempenho de uma mFatores que afetam o desempenho de uma mááquina :quina :
NNúúmero de instrumero de instruçções executadas; (ões executadas; (compilador + arquiteturacompilador + arquitetura))
PerPerííodo do odo do clockclock (processador(processador))
NNúúmero de ciclos por instrumero de ciclos por instruçção (ão (processadorprocessador))
ImplementaImplementaçção: ão: InstruInstruçções de referência ões de referência àà memmemóória :ria :lwlw, , swsw;; Instru
Instruçções lões lóógicas e aritmgicas e aritmééticas: ticas: addadd, sub, and, , sub, and, oror, , sltslt; ; Instru
Instruçções de controle de fluxo : ões de controle de fluxo : beqbeq, j;, j;
Arquitetura do repertArquitetura do repertóório de instrurio de instruççõesões →→ Definem aspectos da Definem aspectos da implementa
implementaçção ão →→ Diferentes estratDiferentes estratéégias de implementagias de implementaçção ão →→ Afetam a Afetam a frequência
frequência do do clockclock e a CPI da me a CPI da mááquinaquina
ImplementaImplementaçção de instruão de instruçções :ões : Passos comuns + passos especPassos comuns + passos especííficosficos
Processador : Caminho de Dados + Controle
Implementa
Implementa
ç
ç
ão Gen
ão Gen
é
é
rica:
rica:
Uso do contador de programa (PC) p/fornecer endereUso do contador de programa (PC) p/fornecer endereçço da o da
instru
instruçção ão àà memmemóória de instruria de instruçções;ões;
ApApóós a busca da instrus a busca da instruçção, os ão, os operandosoperandos armazenados nos armazenados nos
registradores são obtidos;
registradores são obtidos;
CalculaCalcula--se o enderese o endereçço de memo de memóória (ria (LoadLoad//StoreStore), c), cáálculo de uma lculo de uma
opera
operaçção aritmão aritméética ou comparatica ou comparaçções para desvios, na ALU.ões para desvios, na ALU.
Resultado da ALU Resultado da ALU éé usado como endereusado como endereçço tanto para armazenar o tanto para armazenar
valores na mem
valores na memóória vindos de ria vindos de registregist quanto para carregar valores na quanto para carregar valores na mem
memóória em ria em registregist..
R e gis ters R eg ister # D ata R eg ister # D a ta m e m ory A d dre ss D ata R eg ister # PC In stru ctio n AL U In stru ction m em ory Ad d res s
Processador : Caminho de Dados + Controle
quinta-feira, 3 de abril de 2008 Departamento de Sistemas e Computação 4
A
A
ç
ç
ões espec
ões espec
í
í
ficas das instru
ficas das instru
ç
ç
ões : (pr
ões : (pr
ó
ó
ximo passo)
ximo passo)
InstruInstruçções de transferência : Ler/Escrever dado na memões de transferência : Ler/Escrever dado na memóória;ria;
InstruInstruçções aritmões aritmééticas : Escrever dados no registrador destino;ticas : Escrever dados no registrador destino;
InstruInstruçções de desvio : Modifica endereões de desvio : Modifica endereçço da pro da próóxima instruxima instruçção;ão;
obs.: Uso do princ
obs.: Uso do princíípio da regularidade pio da regularidade
Conven
Conven
ç
ç
ões da L
ões da L
ó
ó
gica Digital e
gica Digital e
Clock
Clock
Sinal ativo Sinal ativo -- NNíível lvel lóógico alto;gico alto;
Tipos de elementos lTipos de elementos lóógicos :gicos :
CombinacionaisCombinacionais -- (operam sobre os dados: entrada (operam sobre os dados: entrada ----> mesma sa> mesma saíída);da);
SeqSeqüüenciais ou de Estado enciais ou de Estado -- (armazenam informa(armazenam informaçção): memão): memóórias +rias +
registradores
registradores
Processador : Caminho de Dados + Controle
Uso do clock: determina quando da atualização do elemento de estado; Saída de um elemento de estado: Valor escrito ciclo de clock anterior Leitura de um elemento de estado : podem ocorrer a qualquer instante;
Metodologia de Temporização :
Define quando os sinais podem ser lidos e escritos; Evita imprevisibilidade;
Metodologia sensível às transições do sinal de clock;
cycle time
rising edge
falling edge
Processador : Caminho de Dados + Controle
quinta-feira, 3 de abril de 2008 Departamento de Sistemas e Computação 6 Leitura
ExecuExecuçção Tão Tíípica :pica :
Ler conteLer conteúúdo de alguns elementos de estado;do de alguns elementos de estado;
Enviar valores atravEnviar valores atravéés da ls da lóógica gica combinacionalcombinacional;;
Escrever resultados para um ou mais elementos de estado;Escrever resultados para um ou mais elementos de estado;
Realimentação permitida
Escrita
Processador : Caminho de Dados + Controle
Processador : Caminho de Dados + Controle
Clock cycle State element 1 Combinational logic State element 2
M u x Register 0 Register 1 Register n – 1 Register n M u x Read data 1 Read data 2 Read register number 1 Read register number 2 Read register number 1 Read data 1 Read data 2 Read register number 2 Register file Write register Write data Write
Construção usando flip-flop D
n-to-1 decoder Register 0 Register 1 Register n – 1 C C D D Register n C C D D Register number Write Register data 0 1 n – 1 n Escrita Leitura
Processador : Caminho de Dados + Controle
quinta-feira, 3 de abril de 2008 Departamento de Sistemas e Computação 8 Implementa
Implementaçção do subconjunto do MIPS ão do subconjunto do MIPS -- Ciclo Ciclo ÚÚnico de nico de ClockClock
•
• Ciclo do Ciclo do clockclock corresponde a instrucorresponde a instruçção mais demorada;ão mais demorada; •
• ImplementaImplementaçção muito lenta;ão muito lenta; •
• Controle mais simples;Controle mais simples;
Constru
Construçção do Caminho de Dadosão do Caminho de Dados
•
• Elementos comuns a todas as instruElementos comuns a todas as instruççõesões
b. Program counter c.Somador a.Memória de Instrução P PCC AAdddd SSuumm Endere Endereçço o da instru
da instruççãoão
instru
instruççãoão
Mem
Memóória de ria de instru
1
1ºº passo)passo) Busca da instruBusca da instruçção na memão na memóória e incremento do PC;ria e incremento do PC;
P PCC I Innssttrruuccttiioonn m meemmoorryy I Innssttrruuccttiioonn a addddrreessss I Innssttrruuccttiioonn A Adddd SSuumm 4 4
Seq
quinta-feira, 3 de abril de 2008
Departamento de Sistemas e Computação
10 2ºº passo)passo) DecodificaDecodificaçção : 2 registros de entrada e 1 de saão : 2 registros de entrada e 1 de saíídada
3
3ºº passo)passo) ExecuExecuçção : Operandos da ALUão : Operandos da ALU
Sinal de Controle: EscReg (RegWrite)
Sinal de Controle: Controle da ALU (ALUcontrolALUcontrol))
Seq
Seq
ü
ü
ência de execu
ência de execu
ç
ç
ão
ão
Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita Dado lido #1 Dado lido #2 EscReg 5 5 5 dados dados Endereço dos registradores Zero Resultado da ALU ALU Operação da ALU 3
Caminho de dados instruCaminho de dados instruçção tipo ão tipo -- R ( R ( addadd $t0, $t1, $t2$t0, $t1, $t2))
InstruInstruçções de transferência de dados : (ões de transferência de dados : (lwlw e e swsw -- tipotipo--I)I) Sinais de controle :
- EscMem (MemWrite)
- LerMem (MemRead)
Seq
Seq
ü
ü
ência de execu
ência de execu
ç
ç
ão
ão
Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita Dado lido #1 Zero Dado lido #2 Resultado da ALU ALU Instrução EscReg Operação da ALU 3
Endereço Dado lido
Dado a ser escrito Memória de dados Extensor de sinal 32 16 LerMem EscMem
quinta-feira, 3 de abril de 2008
Departamento de Sistemas e Computação
12
Caminho de dados instruções de transferência (lw, sw)
• lw $t0, 32($t1) $t0 = memória[$t1 + 32] (MEM REG)
• sw $t2, 64($t3) memória [$t3 + 64] = $t2 (REG MEM)
Seq
Seq
ü
ü
ência de execu
ência de execu
ç
ç
ão
ão
Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita Dado lido #1 Zero Dado lido #2 Resultado da ALU ALU Instrução EscReg 3
Endereço Dado lido
Dado a ser escrito Memória de dados Extensor de sinal 32 16 Operação da ALU EscMem LerMem
Caminho de dados das instruções de desvio condicional • beq $t1, $t2, 25 Instrução 16 32 Sign extend Add Sum Lógica de controle de desvio condicional
Endereço alvo do desvio condicional PC+4 Desl. a esq. 2 bits
Seq
Seq
ü
ü
ência de execu
ência de execu
ç
ç
ão
ão
Operação da ALU 3 Reg a ser lido #1 Reg a ser lido #2 Reg a ser escrito Dado de escrita Dado lido #1 Dado lido #2 ALU Zero Resultado da ALU
quinta-feira, 3 de abril de 2008
Departamento de Sistemas e Computação
14
■Criação de um único Caminho de Dados
■ Necessidade de replicação da memória (Instrução + Dados) ■ Compartilhamento de recursos por meio de multiplexadores
Seq
Seq
ü
ü
ência de execu
ência de execu
ç
ç
ão
ão
P C In s tru c tio n m e m o ry R e a d a d d re s s In s tru c tio n 1 6 3 2 A d d A L U r e s u lt M u x R e g is te rs W rite re g ist e r W rite d a ta R e a d d a ta 1 R e a d d a ta 2 R e a d re g ist e r 1 R e a d re g is te r 2 S h ift le ft 2 4 M u x A L U o p e ra tio n 3 R e g W rite M e m R e a d M e m W rite P C Srrc A L U S rc M e m to R e g A L U re s u lt Z e ro A L U D a ta m e m o ry A d d re s s W rite d a ta R e a d d a ta M u x S ig n e x te n d Ad d Add
■ Selecionar as operações a realizar (ALU, read/write, desvio etc.) ■ Controlar o fluxo de dados (entradas do multiplexador)
■ Informação vem dos 32 bits da instrução
■ Operação da ALU baseada no tipo de instrução e código da função
Controle da ALU
Controle da ALU
Ent. de Controle Função
000 And
001 Or
010 Add
110 Subtract
111 Set-on-Less-Than
Instrução Operação da ALU
Lw, Sw, Add soma
Sub, Beq subtração
And E lógico
Or Ou lógico
Slt Set on Less Than
Unidade de Controle
quinta-feira, 3 de abril de 2008
Departamento de Sistemas e Computação
16
ALUOp Funct field Operation
ALUOp1 ALUOp0 F5 F4 F3 F2 F1 F0 0 0 X X X X X X 010 X 1 X X X X X X 110 1 X X X 0 0 0 0 010 1 X X X 0 0 1 0 110 1 X X X 0 1 0 0 000 1 X X X 0 1 0 1 001 1 X X X 1 0 1 0 111 Tabela da Verdade Controle da ALU
Unidade de Controle da ALU
Unidade de Controle da ALU
Operation2 Operation1 Operation0 Operation ALUOp1 F3 F2 F1 F0 F (5– 0) ALUOp0 ALUOp
Unidade de Controle Geral
Unidade de Controle Geral
-
-
UC
UC
PC Instruction memory Read address Instruction [31– 0] Instruction [20– 16] Instruction [25– 21] Add Instruction [5– 0] MemtoReg ALUOp MemWrite RegWrite MemRead Branch RegDst ALUSrc Instruction [31– 26] 4 16 32 Instruction [15– 0] 0 0 M u x 0 1 Control
AddresultALU
M u x 0 1 Registers W rite register W rite data Read data 1 Read data 2 Read register 1 Read register 2 Sign extend Shift left 2 M u x 1 ALU result Zero Data memory Write data Read data M u x 1 Instruction [15– 11] ALU control ALU Address
Instruction RegDst ALUSrc
Memto-Reg Reg Write Mem Read Mem
Write Branch ALUOp1 ALUp0
R-format 1 0 0 1 0 0 0 1 0
lw 0 1 1 1 1 0 0 0 0
sw X 1 X 0 0 1 0 0 0
quinta-feira, 3 de abril de 2008
Departamento de Sistemas e Computação
18
Controle Nome do sinal Formato-R Lw Sw Beq
Op5 0 1 1 0 Op4 0 0 0 0 Op3 0 0 1 0 Input Op2 0 0 0 1 Op1 0 1 1 0 Op0 0 1 1 0 RegDst 1 0 X X AluSrc 0 1 1 0 MemtoReg 0 1 X X Output RegWrite 1 1 0 0 MemRead 0 1 0 0 MemWrite 0 0 1 0 Branch(DvC) 0 0 0 1 AluOp1 1 0 0 0 AluOp0 0 0 0 1
Unidade de Controle Geral
Unidade de Controle Geral
-
-
UC
UC
R-format Iw sw beq Op0 Op1 Op2 Op3 Op4 Op5 Inputs Outputs RegDst ALUSrc MemtoReg RegWrite MemRead MemWrite Branch ALUOp1
ALUOpO Tabela da Verdade
Opera
Opera
ç
ç
ão do Caminho de Dados
ão do Caminho de Dados
■ Instruções do tipo-R PC Instruction memory Read address Instruction [31– 0] Instruction [20– 16] Instruction [25– 21] Add Instruction [5– 0] MemtoReg ALUOp MemWrite RegWrite MemRead Branch RegDst ALUSrc Instruction [31– 26] 4 16 32 Instruction [15– 0] 0 0 M u x 0 1 Control Add ALU result M u x 0 1 Registers Write register Write data Read data 1 Read data 2 Read register 1 Read register 2 Sign extend Shift left 2 M u x 1 ALU result Zero Data memory Write data Read data M u x 1 Instruction [15– 11] ALU control ALU Address rs op rt rd shamt funct R- type
■Exemplo: Instrução tipo R ■add $t1, $t2, $t3
■1) Busca Instruções e incrementa PC
■2) dois regist. $t2 e $t3 são lidos do banco regis
■3)A ULA opera sobre os dados lidos (bits 5-0 campo funct)
■4)Resultado da ULA
escrito no banco usando 15-11 da instrução para
selecionar o reg destino $t1
quinta-feira, 3 de abril de 2008 Departamento de Sistemas e Computação 20
Opera
Opera
ç
ç
ão do Caminho de Dados
ão do Caminho de Dados
■ Instruções load ou store word
PC Instruction memory Read address Instruction [31– 0] Instruction [20– 16] Instruction [25– 21] Add Instruction [5– 0] MemtoReg ALUOp MemWrite RegWrite MemRead Branch RegDst ALUSrc Instruction [31– 26] 4 16 32 Instruction [15– 0] 0 0 M u x 0 1 Control Add ALU result M u x 0 1 Registers Write register Write data Read data 1 Read data 2 Read register 1 Read register 2 Sign extend Shift left 2 M u x 1 ALU result Zero Data memory Write data Read data M u x 1 Instruction [15– 11] ALU control ALU Address rs op rt endereço Load word
■Instrução load/store word ■lw $t1, desloc($t2) ■1) Busca Instruções e
incrementa PC
■2) leitura do reg $t2 do banco ■3) Cálculo da soma do valor
obtido no banco com o resultado da extensão do sinal dos 16 bits menos significativos (desloc)
■4) Resultado da soma é usado
para endereçar a mem de dados.
■5) Dado vindo da unid de mem
é escrito no banco: dado pelos bits 20-16 da instrução $t1.
Opera
Opera
ç
ç
ão do Caminho de Dados
ão do Caminho de Dados
■ Instruções desvio condicional
PC Instruction memory Read address Instruction [31– 0] Instruction [20– 16] Instruction [25– 21] Add Instruction [5– 0] MemtoReg ALUOp MemWrite RegWrite MemRead Branch RegDst ALUSrc Instruction [31– 26] 4 16 32 Instruction [15– 0] 0 0 M u x 0 1 Control Add ALU result M u x 0 1 Registers Write register Write data Read data 1 Read data 2 Read register 1 Read register 2 Sign extend Shift left 2 M u x 1 ALU result Zero Data memory Write data Read data M u x 1 Instruction [15– 11] ALU control ALU Address rs rt endereço 31-26 25-21 20-16 15-0 Desvio cond
■Exemplo: Instrução branch ■beq $t1, $t2, desloc
■Parece com Tipo-R, só que a saida da
ULA é usada para determinar se o PC é atualizado com PC+4 ou com o valor do endereço alvo do desvio
■1) Busca instrução e incrementa PC ■2) leitura do conteúdo dos regist $t1 e $t2
do banco
■3) Subtração pela ULA sobre os valores
lidos no banco. O valor de PC+4 é somado ao resultado da extensão do sinal dos 16 bits menos significat, deslocado de 2 bits a esquerda. Este resultado é o endereço alvo do desvio.
■4) A saída resultado_zero da ULA é usada
para decidir se o PC deve ser atualizado com o valor de PC+4 ou com p valor do endereço alvo do desvio.
quinta-feira, 3 de abril de 2008 Departamento de Sistemas e Computação 22
Opera
Opera
ç
ç
ão do Caminho de Dados
ão do Caminho de Dados
• IntroduIntroduçção do desvio Incondicional ão do desvio Incondicional -- JJ
PC Instruction memory Read address Instruction [31– 0] Instruction [20– 16] Instruction [25– 21] Add Instruction [5–0] o M RegDst Instruction [31–26] 4 16 32 Instruction [15–0] 0 0 M u x 0 1 Control Add ALU result M u x 0 1 Registers Write register Write data Read data 1 Read data 2 Read register 1 Read register 2 Sign extend Shift left 2 M u x 1 ALU result Zero Data memory Write data Read data M u x 1 Instruction [15– 11] ALU control ALU Address Desl . esq. 2 bits Instrução [25-0] 26 28 PC+4[31-28] DvI Endereço do desvio incondicional [31-0] Bran chMemRead MemToReg ALUOp MemWrite ALUSrc RegWrite M u x 0 1
■Exemplo: Instrução jump (op=2) ■Jump procedimento
■Parece com o condicional, mas o cálculo
do endereço-alvo do desvio de modo diferente.
■Pode-se implementar um desvio
incondicional armazenando no PC o resultado da concatenação:
■Dos 4 bits de mais alta ordem do
valor de PC+4 (31-28) do endereço imediatamente seguinte à instrução de desvio.
■Dos 26 bits do campo imediato da
instrição de desvio incondicional.
■Dos bits 00
■Novo multiplexador precisa ser usado
para selecionar a fonte do novo valor a ser armazenado no PC, que pode vir a ser o valor atual do PC acrescido de 4 unidades, ou o endereço alvo do desvio incondicional
■Também é necessário adicionar um novo
sinal de controle (DVI)
endereço
31-26 25-0
Desvio cond
Instru
Instru
ç
ç
ões são executadas em um
ões são executadas em um
ú
ú
nico ciclo de
nico ciclo de
clock
clock
Ineficiente (ciclo do Ineficiente (ciclo do clockclock ----> instru> instruçção de maior tempo de ão de maior tempo de
execu
execuçção)ão)
Viola princViola princíípio de projeto : caso comum mais rpio de projeto : caso comum mais ráápidopido
Necessidade de duplicaNecessidade de duplicaçção do hw ão do hw –– (aumento custo (aumento custo
implementa
implementaçção)ão)
Implementa
quinta-feira, 3 de abril de 2008
Departamento de Sistemas e Computação
24
Performance de M
Performance de M
á
á
quina Monociclo x
quina Monociclo x
Multiciclo
Multiciclo
Exemplo :Exemplo : Supor tempo de operaSupor tempo de operaçção das principais unidades ão das principais unidades
funcionais são os seguintes :
funcionais são os seguintes :
--
Unidade de Mem
Unidade de Mem
ó
ó
ria :
ria :
2ns 2ns
--
Alu
Alu
e Somadores :
e Somadores :
2ns2ns--
Banco de registradores
Banco de registradores
(leitura e escrita): 1ns (leitura e escrita): 1ns-- MuxMux´´ss + UC + + UC + UnidUnid. Ext. sinal + fios : 0ns. Ext. sinal + fios : 0ns
Avalia
Busca de Instruções Jump ULA Acesso ao Reg Busca de Instruções Branch Acesso à MEM ULA Acesso ao Reg Busca de Instruções Store word Acesso ao REG Acesso à MEM ULA Acesso ao Reg Busca de Instruções Load word Acesso ao REg ULA Acesso ao Reg Busca de Instruções Formato R
Unidades Funcionais usadas pela classe de instrução Classe de Instrução 1 1 Escrita no REG Total Memória de Dados Operação na ULA Leitura de Registrador Memória de INstruções Classe de INstrução 2 ns 2 Jump 5 ns 2 1 2 Branch 7 ns 2 2 1 2 Store word 8 ns 2 2 1 2 Load word 6 ns 0 2 1 2 Formato R
Caminhos Cr
quinta-feira, 3 de abril de 2008
Departamento de Sistemas e Computação
26
(a) Instruções de um ciclo de clock de tamanho fixo;
(b) Instruções de um ciclo de clock de tamanho variável;
Mix de instruções : 24% Lw, 12% Sw, 44% Tipo-R, 18% DvC,
2%DvI
Tempo de execução = Número instruções executados x CPI x Ciclo Clock Ciclo de clock (a) = 8 ns
ciclo de clpock (b) = 8x24% + 7x12% + 6x44% + 5x18% + 2x2% = 6,3ns Performance processadorclock variável Tempo de execução clock fixo
Performance processadorclock fixo Tempo de execução clock variável Ciclo de clock clock fixo
Ciclo de clock clock variável
8 ns 6,3ns 1,27
Avalia
Verificar a solu
Verificar a soluçção para ponto flutuante, supondo que para realizar uma ão para ponto flutuante, supondo que para realizar uma soma em ponto flutuante gasta
soma em ponto flutuante gasta--se 8ns e uma multiplicase 8ns e uma multiplicaçção 16ns.ão 16ns. (a) Instru
(a) Instruçções ciclo tamanho fixoões ciclo tamanho fixo (b) Instru(b) Instruçções ciclo tamanho variões ciclo tamanho variáável;vel; Mix
Mix de instrude instruçções : 31% ões : 31% LwLw, 21% , 21% SwSw, 27% Tipo, 27% Tipo--R, 5% R, 5% DvCDvC, 2%, 2%DvIDvI Add
Add e Sub = 7% do total e e Sub = 7% do total e MuxMux e e DivDiv= 7% do total= 7% do total
Tempo de execu
Tempo de execuçção = Não = Núúmero instrumero instruçções executados x CPI x Ciclo ões executados x CPI x Ciclo ClockClock Ciclo de
Ciclo de clockclock (a) = Inst. Multiplica(a) = Inst. Multiplicaçção = 2 + 1 + 16 + 1 = 20 ns ão = 2 + 1 + 16 + 1 = 20 ns ciclo de
ciclo de clpockclpock (b) = 8x31% + 7x21% + 6x27% + 5x5% + 2x2% + 20x7% + (b) = 8x31% + 7x21% + 6x27% + 5x5% + 2x2% + 20x7% + 12x7% = 7,0 ns
12x7% = 7,0 ns
Performance
Performance processadorprocessadorclockclockvarivariáávelvel Tempo de execuTempo de execuçção ão clockclockfixofixo Performance
Performance processadorprocessadorclockclockfixofixo Tempo de execuTempo de execuçção ão clockclockvarivariáávelvel Ciclo de
Ciclo de clockclock clockclockfixofixo Ciclo de
Ciclo de clockclock clockclockvarivariáávelvel
20
20
7