Escolar Documentos
Profissional Documentos
Cultura Documentos
O Processador Datapath e Unidade de Controle Datapath Componente do processador que realiza operaes aritmticas Controle Componente do processador que comanda o datapath, memria e dispositivos de E/S de acodo com as instrues de um programa Independente da classe da instruo, as duas primeiras etapas para sua execuo so as mesmas: Enviar o PC para a memria e buscar ao instruo Ler um ou dois registradores (usando o campo da instruo, para selecionar os registradores a serem lidos) Os passos seguintes dependem da classe da instruo (referncia memria, lgica-aritmtica e desvios) estes passos so bastantes semelhantes e independem do opcode Por exemplo, todas as instrues, independente da classe utilizam a ULA aps a leitura de um registrador. Para uma instruo de referncia memria, utiliza para clculo do endereo, lgica-aritmtica para execuo e desvios para comparao Aps a utilizao da ULA, os passos so diferentes para as diferentes classes.
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
112
Data Register # PC A ddress Instruction m em ory Instruction Registers Register # Register # Data Data m em ory ALU Address
Reviso/Convenes adotadas Sinal lgico alto asserted Sinal que pode ser logicamente alto - assert Elementos combinacionais Exemplo: ULA Elementos de estado Exemplo: Registradores e Memria Sinal de Clock usado para determinar quando se pode escrever em um elemento de estado. A leitura pode ser a qualquer momento Metodologia de sincronizao sincroniza o elemento de estado para a permisso de leitura e de escrita Porque necessrio ?
ARQUITETURA DE COMPUTADORES - RICARDO PANNAIN 113
State element 1
Combinational logic
State element 2
Clock cycle
Figura 5.3 A metodologia edge-triggered permite a um elemento de estado ler e escrever no mesmo perodo de clock.
State element
Combinational logic
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
114
Datapath OBS.: Primeiro implementaremos um Datapath utilizando apenas um clock com ciclo grande. Cada instruo comea a ser executada em uma transio e acaba na prxima transio do clock na prtica isto no factvel, pois temos instrues de diferentes classes e portanto de diferentes nmeros de ciclos de clock Para construir um Datapath: Um lugar para armazenar as instrues do programa Memria de instrues Um lugar para armazenar o endereo da instruo a ser lida na memia Program Counter - PC Somador para incrementar o PC para que ele aponte para a prxima instruo Figura 5.4 Elementos necessrios a armazenar e acessar informaes mais um somador para calcular o endereo do prximo estado.
Instruction address PC Instruction Instruction memory Add Sum
a. Instruction memory
b. Program counter
c. Adder
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
115
PC
Instrues R-type Instrues aritmticas e lgicas add, sub, slt Estrutura de registradores (32) chamada de register file que um conjunto de registradores que podem ser acessados (lidos ou escritos) especificando seu nmero. Nele se encontra o registrador de estado da mquina Instrues de formato R tem 3 operandos registradores (add $t1,$t2,$t3) necessidade de ler 2 dados do register file e escrever um dado nele, para cada instruo Para ler um dado do register file preciso de uma entrada (nmero do do registrador) e uma sada (o dado lido) Para escrever um dado no register file, so necessrias duas entradas: o nmero do registrador e o dado a ser escrito Para escrever sinal de controle (RegWrite) A ULA controlada por um sinal de controle (ALU control)
ARQUITETURA DE COMPUTADORES - RICARDO PANNAIN 116
Figura 5.6 Elementos necessrios para a implementao de operaes da ULA, de instrues do tipo-R.
ALU control
5 Register numbers 5 5
ALU
Data
Read register 1 Instruction Read register 2 Registers Write register Write data
3 Read data 1
ALU operation
RegWrite
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
117
Instrues LOAD e STORE lw $t1,offset_value($t2) e sw $t1,offset_value,($t2) Endereo de memria = value_offset + $t2 Value_offset offset sinalizado de 16 bits preciso de um register file e uma ULA Unidade que transforme valor de 16 bits sinalizado em um valor de 32 bits Unidade de memria de dados com controle de leitura (MemRead) e escrita (MemWrite) Figura 5.8 Unidades para implementao de lw e sw
MemWrite
Address
16
Sign extend
32
Write data
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
118
Read register 1 Instruction Read register 2 Registers Write register Write data RegWrite 16
3 Read data 1
Address
MemRead
Instruo beq beq $t1,$t2,offset 2 registradores que so comparados e um offset de 16 bits usado para calcular o endereo relativo, alvo do branch A base para o clculo do endereo alvo de branch o endereo da prxima instruo em relao instruo branch O campo offset deslocado de 2 bits para aumentar o alcance do desvio (multiplicado por 4) Alm do clculo do endereo do branch, deve-se determinar qual endereo ser escolhido, o do branch (taken) ou o armazenado em PC (not taken) dependendo do resultado da comparao OBS.: Instruo jump os 28 bits menos significativos de PC so substitudos pelos 26 bits do imediato, deslocado de 2 bits ( X 4 ).
ARQUITETURA DE COMPUTADORES - RICARDO PANNAIN 119
Instruction
LU operation 3 A
Rea d register 1 Instructio n Read data 1
M u x
RegW rite
16 Sign extend 3 2
Write data
M em Read
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
120
Add 4 Reg isters Read registe r 1 Read Read data 1 register 2 Write registe r Write data RegWrite 16 Sign 32 e xtend Read data 2 3 ALUSrc M u x AL U operation
PC
MemWrite MemtoReg
Address
Read data
Write data
Data memory
M u x
MemRead
Controle da ULA
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
121
PCSrc Add 4 Shift lef t 2 Registers Read re gister 1 Read Read data 1 regist er 2 Write re gister Write data RegWrite 16 Read data 2 3 ALU operation MemWrite Me mtoReg Address Read data Add ALU result M u x
PC
ALUSrc
M u x
Data memory
M u x
MemRead
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
122
Projeto da Unidade de Controle Principal Figura 5.16 Classes de instrues - tipo-R, load&store e branch)
O campo opcode bits 31-26 Os dois registradores a serem lidos rs e rt bits 25-21 e 20-16 O registrador base (load e store) bits 15-0 O valor a ser guardado no PC que pode vir do clculo de um endereo de salto ou simplesmente do PC + 4. O registrador destino (a ser escrito), que dever ser selecionado dentre 2 opes, o que requer um multiplexador: para um load bits 20-16 (rt) para instrues R-type bits 15-11 (rd) O valor guardado no banco de registradores que pode vir da ALU (R-type) ou da memria (sw)
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
123
PCSrc 1 M u x 0
Add 4 RegWrite Instruction [25 21] PC Read address Instruction [31 0] Instruction memory Instruction [20 16] 1 M u Instruction [15 11] x 0 RegDst Instruction [15 0] Read register 1 Read register 2 Shift left 2 Add ALU result
MemWrite ALUSrc 1 M u x 0 32 ALU control Zero ALU ALU result MemtoReg Address Read data 1 M u x 0
Sign extend
Write data
Data memory
MemRead
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
124
0 M u x Add A dd 4 Instruct ion [31 26] Co ntrol Reg Dst Branch Me mRead Me mt oReg ALUOp Me mWrit e ALUSrc RegWrit e Re ad register 1 Shift left 2 ALU result 1 PCSrc
Instruct ion [25 21] PC Read address Instruct ion [20 16] Instru ction [31 0 ] Instruction memory Instruct ion [15 11] 0 M u x 1
Read dat a 1 Re ad register 2 Registers Read Write dat a 2 register Write data
0 M u x 1
Address
1 M u x 0
Instruction [5 0]
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
125
Operao do Datapath instruo R-type add $t1,$t2,$t3 fetch da instruo leitura de $t2 e $t3 operao da ULA com os dados lidos resultado da ULA escrito em $t1 Figura 5.21 Fetch e incremento de PC instruo R-TYPE
0 M u x Add Add 4 I nstruction [31 26] Control RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite Read register 1 Shift le ft 2 ALU re sult 1
I nstruction [25 21] PC Read ad dress Instruction [3 1 0] Instruction memory I nstruction [15 11] I nstruction [20 16] 0 M u x 1
Instruction [5 0]
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
126
Read data 1 Read regis ter 2 Register s Read Wr ite data 2 regis ter Wr ite data
0 M u x 1
Address
1 M u x 0
Instruc tion [5 0]
Control
Instruction [25 21] PC Read address Instruction [31 0] Instruction memory Instruction [15 11] Instruction [20 16] 0 M u x 1
Read data 1 Read register 2 Registers Read Write data 2 register Write data
0 M u x 1
Address
1 M u x 0
Instruction [5 0]
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
127
Control
Read data 1 Read register 2 Registers Read Write data 2 register Write data
0 M u x 1
ALU
Address
1 M u x 0
Instr uction [5 0]
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
128
Instruo load word lw $t1, offset($t2) Instruction Fetch $t2 lido ULA calcula a soma do valor lido e o imediato de 16 bits O resultado usado como endereo da memria de dados O dado da memria de dados escrito no register file Figura 5.25 Operao de um lw com um esquema simples de controle.
0 M u x ALU Add result Add 4 Instruction [31 26] RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite Instruction [25 21] PC Read address Instruction [31 0] Instruction memory Instruction [15 11] Instruction [20 16] 0 M u x 1 Read register 1 Shift left 2 1
Control
Read data 1 Read register 2 Registers Read Write data 2 register Write data
0 M u x 1
Address
1 M u x 0
Instruction [5 0]
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
129
Instruo de branch beq $t1,$t2,offset Fetch da instruo $t1 e $t2 so lidos ULA faz subtrao dos valores lidos. PC+4 adicionado ao imediato de 16 bits, deslocado de 2 bits resultado o endereo do desvio A sada Zero usada para decidir qual endereo ser armazenado em PC Figura 5.26 Datapath para a instruo beq
0 M u x Add Add 4 Instr uction [31 26] RegDst Branch MemRead Control MemtoReg ALUOp MemWrite ALUSr c RegWr ite Instr uction [25 21] PC Read address Instruction [31 0] Instruction memory Instr uction [15 11] Instr uction [20 16] 0 M u x 1 Read register 1 Shift left 2 ALU result 1
Read data 1 Read register 2 Registers Read Write data 2 register Write data
0 M u x 1
Addr ess
1 M u x 0
Instruction [5 0]
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
130
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
131
Instruo de jump
2
31-26
endereo
25-0
PC formado pelos 4 bits mais significativos + 26 bits do imediato + 00 (deslocamento de 2) Figura 5.29 Datapath para instruo de jump
Instruction [25 0]
Shift 26 left 2 28
RegDst Jump Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite Instruction [25 21] Read register 1
Shift left 2
PC
Read data 1 Read register 2 Registers Read Write data 2 register Write data
0 M u x 1
Address
1 M u x 0
Instruction [5 0]
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
132
Implementao em um ciclo de clock no usada Funciona corretamente mas no eficiente Para single-cycle o ciclo do clock deve ter o mesmo comprimento para todas as instrues CPI = 1 para isto, o ciclo de clock determinado pelo maior caminho no datapath da mquina ( instruo de load que usa 5 unidades funcionais em srie: instruction memory, register file, ULA, data memory e register file) Exemplo. Sejam os seguintes tempos de operao: unidade de memria : 2 ns ULA e somadores: 2ns register file (read ou write) : 1 ns unidade de controle, multiplexadores, acesso ao PC, circuito para extenso do sinal e linhas no tem atraso, quais das seguintes implementaes seria mais rpida e quanto ? 1. Uma implementao na qual cada instruo opera em um ciclo de clock de tamanho fixo 2. Uma implementao onde cada instruo executada usando clock de tamanho de ciclo varivel (exatamente do tamanho necessrio para a execuo da respectiva instruo tambm no utilizado na prtica)
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
133
Para comparar a performance, assuma que o seguinte conjunto de instrues : 24% de loads, 12% de store, 44% instrues tipo R, 18% de branches e 2% de jumps. Soluo: tempo de execuo CPU = nmero de instrues X CPI X perodo do clock CPI = 1 tempo de execuo CPU = nmero de instrues X perodo do clock Temos que encontrar o perodo do clock para as duas implementaes, pois o nmero de instrues e a CPI so iguais para ambas implementaes. O caminho crtico para cada classe de instruo : Classe da Instruo R-TYPE LW SW BRANCH JUMP Unidades funcionais envolvidas Inst. fetch Inst. fetch Inst. fetch Inst. fetch Inst. fetch Reg. access Reg. access Reg. access Reg. access ALU Reg. access ALU Mem access Reg access ALU Mem access ALU
Usando o caminho crtico, podemos computar o comprimento do ciclo de clock necessrio para cada classe de instruo: Classe da Memria Leitur ALU Memria Escrita Total Instruo Instrs. a Regs. oper. Dados Regs. R-TYPE 2 1 2 0 1 6 ns LW 2 1 2 2 1 8 ns SW 2 1 2 2 7 ns BRANCH 2 1 2 5 ns JUMP 2 2 ns
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
134
O perodo do clock para a mquina com um nico clock determinado pela maior instruo 8ns A mquina com clock varivel, ter seus perodos de clock variando entre 2ns e 8ns. O clcock mdio ser: Tempo de clock da CPU = 8 X 24% + 7 X 12% + 6 X 44% + 5 X 18 % + 2 X 2% = 6.3ns CPU perfomancevc / CPU perfomancesc = = tempo de execuo CPUsc / tempo de execuo CPUvc = = IC X perodo de clock da CPUsc / IC X perodo de clock da CPUvc = = perodo de clock da CPUsc / perodo de clock da CPUvc = = 8 / 6.3 = 1.27 Exemplo FP unit 8ns para add e 16ns para mul todos os loads tem o mesmo tempo e so 33% das instrues todos os stores tem mesmo tempo e so 21% das instrues instrues tipo R so 27 % das instrues Branches so 5 % e jumps 2% das instrues FP add e sub tem o mesmo tempo e juntos tem 7% das instrues FP mul e div tem o mesmo tempo e &5 das instrues
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
135
Soluo CPU perfomancevc / CPU perfomancesc = = tempo de execuo CPUsc / tempo de execuo CPUvc Para a mquina de nico clock perodo do clock = ciclo da instruo FP mul (mais longa) 2+1+16+1 = 20ns Para a mquina de clock varivel: perodo do clock CPU = 8 X 31% + 7 X 21% + 6 X 27% + 5 X 5% = 7.0 ns Portanto: CPU perfomancevc / CPU perfomancesc = = tempo de execuo CPUsc / tempo de execuo CPUvc = 20/7 = 2.9
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
136
Implementao Multiciclos a execuo de cada instruo dividida em etapas, onde cada etapa corresponde a uma operao de uma unidade funcional implementao multiciclos cada etapa executada em um ciclo, isto permite que uma unidade funcional possa ser usada por mais de uma instruo compartilhamento pode diminuir a quantidade de HW necessria Figura 5.30 Datapath multiciclos
Memory
Data
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
137
Diferenas com a verso single-cycle Uma s memria usada para dados e instrues Uma ULA em vez de uma ULA e dois somadores Reduo de rea reduo de custos alguns registradores a mais para manter a sada de uma unidade funcional para outra unidade funcional, em um ciclo de clock posterior: Instruction Register IR armazenar uma instruo lida da memria (a instruo deve ser mantida at o fim de sua execuo) Memory Data Register MDR armazenar dados lidos da memria registrador A e registrador B usados para manter os operandos lidos do register file registrador ALUOut para manter a sada da ULA Incluso de multiplexadores Figura 5.31 Datapth multiciclos para as instrues bsicas
PC
0 M u x 1
Address
Memory MemDat a Writ e data
Instruction [25 21] Instruction [20 16] Instruction [15 0] Instruction register Instruction [15 0] 0 M I nstruction u x [ 15 11] 1 0 M u x 1 16
Read register 1 Read Read register 2 data 1 Regist ers Write Read register data 2 Write data A
0 M u x 1
A LUOut
B 4
0 1 M u 2 x 3
Sign extend
32
S hift left 2
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
138
PC
0 M u x 1
Ins truction [25 21] Ins truction [20 16] Ins truction [150] Instruction regis ter Instruction [15 0] Memory data regis ter 0 M Instruction u x [15 11] 1 0 M u x 1 16
Read register 1 Read Read data 1 register 2 Registers Write Read register data 2 Write data A
0 M u x 1 0 4 1 M u 2 x 3
ALUOut
Sign ex tend
32
Shift left 2
ALU control
Instruction [5 0]
MemtoReg
ALUSrcB ALUOp
Figura 5.33 - Datapath para implementao multiciclos com sinais de controle completo incluindo atualizao do PC
PCSo urce PCWrite Outpu ts AL UOp IorD ALUSrcB MemRea d ALUSrcA Co ntrol MemWri te Reg Wri te Memto Reg IRWri te Op [5 0 ] Re gDst 0 M x 2 PCWrite Con d
Instr uction [25 0] Instruction [31-26] Address Memory MemData Write data Instr uction [25 21] Instr uction [20 16] Instr uction [15 0] Instr uction register Instruction [15 0] Memory data r egister 0 M Instruction u x [15 11] 1 0 M u x 1 16 Sign extend 32 Shift left 2 Read register 1 Read Read register 2 data 1 Register s Write Read register data 2 Write data A 0 M u x 1 0 1 M u 2 x 3
26
S hift left 2
28
1 u
PC
0 M u x 1
PC [31- 28 ]
B 4
ALU contr ol
Instruction [5 0]
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
139
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
140
Diviso da execuo de uma instruo em ciclos de clock e respectivos sinais de controle 1. Instruction fetch O incremento do PC e leitura da da instruo em paralelo: IR = Memory[PC]; PC = PC + 4; Sinais ativados MemRead (1), Irwrite (1), IorD (0 PC como endereo), ALUSrcA (0 PC para ULA), ALUSrcB (01 4 para a ULA), ALUOp (00 add) e PCWrite (1 o novo valor de PC no visvel at o prximo ciclo de clock). 2. Instruction decode e register fetch Como temos regularidade no formato das instrues, podemos, sem saber a natureza da instruo, fazer: ler dois registradores do register file, mesmo que eles no sejam utilizados e armazen-los nos registradores A e B; computar os endereos de branch e guard-los e ALUOut, mesmo que a instruo no venha a ser um branch. A = Reg[IR[25-21]]; B = Reg[IR[20-16]]; ALUOut = PC + (sign-extend (IR[15-0] << 2) Sinais ativados: ALUSrcA (0 PC vai para a ULA), ALUSrcB (11- sign extended e shifted enviado a UAL) e ALUOp (00 add).
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
141
3. Execution, memory address computation ou branch completion Primeira etapa determinada pelo tipo de instruo. Para cada classe temos: Referncia memria: ALUOut = A + sign-extend (IR[15-0]); Sinais ativados: ALUSrcA (1 - A para ULA), ALUSrcB (10 saida da unidade sign-extension para a ULA) e ALUOp (00 - add). Instrues Aritmticas-lgicas ( R-type) ALUOut = A op B; Sinais ativados: ALUSrcA (1 - A para ULA), ALUSrcB (00 B para a ULA) e ALUOp (10 o campo funct usado para determinar os sianis de controle da ULA). Branch if ( A == B ) PC = ALUOut; Sinais ativados: ALUSrcA (1 - A para ULA), ALUSrcB (00 B para a ULA) e ALUOp (01 sub para teste de igualdade), PCCondWrite (1 se Zero=1) e PCSource (01 PC recebe dado vindo de ALUOut).
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
142
Jump PC = PC[31-28] || (IR[25-0]<<2) Sinais ativados: PCSource(10- jump address para PC) e PCWrite (1). 4. Memory access or R-type instruction completion Nesta etapa, uma instruo de load ou store acessa a memria ou uma instruo R-type escreve seu resultado. Referncia memria MDR = Memory [ALUOut]; - load ou Memory [ALUOut] = B; - store Sinais ativados: MemRead (1 - para load) ou MemWrite (1 - para store), IorD ( 1 para load, para que o endereo de memria venha da ULA). instrues R-type Reg[IR[15-11]] = ALUOut; Sinais ativados: RegDst ( 1 campo rd (15-11) usado como entrada do register file para escrita), RegWrite (1) e Memto Reg (0 para saida da ULA ser escrita).
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
143
5. Memory read completion Load Reg[IR[20-16]] = MDR; Sinais ativados: MemtoReg ( 1 para escrver o resultado da memria), RegWrite ( 1- escrita no register file) e RegDst ( 0 para escolher rt (20-16) como nmero do registrador). Figura 5.35 - Resumo das etapas de execuo para as diversas classes
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
144
Projeto da Unidade de Controle Mquinas de estados finitos conjunto de estados e como estes estados podem mudar ( esta mudana prximo estado). Controle de estados finitos corresponde s cinco etapas de execuo de uma instruo, onde cada etapa executada em um ciclo de clock. Unidade de Controle implementada como mquina de estados finitos:
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
145
Instruction fetch 0 MemRead ALUSrcA = 0 IorD = 0 IRWrite ALUSrcB = 01 ALUOp = 00 PCWrite PCSource = 00
-t =R ) yp e
Start
(O p
or W ') = 'L
( Op
(O
W ') = 'S
p=
(Op
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
(Op = 'JMP')
'B EQ ')
146
From state 1 (Op = 'LW') or (Op = 'SW') Memory address computation 2 ALUSrcA = 1 ALUSrcB = 10 ALUOp = 00
(O
(Op = 'LW')
p = W 'S ')
Memory access 5
Memory access
3 MemRead IorD = 1
MemWrite IorD = 1
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
147
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
148
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
149
Instruction fetch 0 MemRead ALUSrcA = 0 IorD = 0 IRWrite ALUSrcB = 01 ALUOp = 00 PCWrite PCSource = 00
')
(O
Start
(O
) LW'
p= or ( O
'SW
Branch completion
(Op = 'J')
yp R-t p=
'B EQ
e)
')
Jump completion
(O
(Op = 'LW')
p = W 'S ')
Memory access 5
R-type completion
3 MemRead IorD = 1
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
150
CPI em uma CPU multicycles Exemplo: Usando a figura anterior o conjunto de instrues abaixo, qual a CPI, assumindo que cada estado necessita de 1 clico de clock ? conjunto de instrues: 22% loads, 11% de stores, 49% de R-type, 16% de branches e 2% de jumps ( gcc ). Soluo: O nmero de ciclos de clocks para cada classe (da figura anteiror): loads: 5 stores: 4 R-type : 4 branches : 3 jumps: 3
CPI = ciclos de clock da CPU / nmero de instrues CPI = (num. de instruesi X CPIi) / num. de instrues CPI = ((num. de instruesi/ num. de instrues) X CPIi) CPI = 0.22 X 5 + 0.11 X 4 + 0.49 X 4 + 0.16 X 3 + 0.02 X 3 CPI = 4.04 4.04 melhor que a CPI de uma CPU em que todas as instrues tivessem o mesmo nmero de ciclos de clock ( CPI pior caso = 5).
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
151
Figura 5.43 - Implementao de uma Unidade de Controle com mquina de estados finitos
Outputs
Inputs
Next state Inputs from instruction register opcode field State register
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
152
Microprogramao Projeto simplificado da Unidade de Controle Representao grfica til para pequenas mquinas de estados. Cada microinstruo tem o efeito de ativar os sinais de controle especificados por elas Um microprograma uma representao simblica da unidade de controle que ser traduzida por um programa para a lgica de controle. O formato da microinstruo deve ser escolhida de tal forma a simplificar sua representao. Para evitar microinstrues inconsistentes, cada campo da microinstruo deve especificar um conjunto de sinais que no acontecem simultaneamente. Figura 5.44 Tabela com os sete campos da microinstruo
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
153
da
microinstruo
dado
1. Incrementar o endereo da microinstruo corrente para obter ao endereo da prxima microinstruo. Este comportamento indicado, colocando Seq no campo de Seqncia.
2. Desviar para a microinstruo que inicia a execuo da prxima instruo (estado 0 - fetch). Este comportamento indicado colocando Fetch no campo de Seqncia.
3. Escolher a prxima microinstruo baseada em entradas da unidade de controle. Este comportamento chamado dispatch e usualmente implementado criando uma tabela (implementada em ROM ou PLA) contendo os endereos das microinstrues alvo. Geralmente existe muitas tabelas, neste caso temos duas a do estado 1 e a do estado 2. Isto indicado no campo Seqncia por Dispatch i, onde i o nmero da tabela.
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
154
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
155
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
156
Dispatch table 1 usada para selecionar uma das 4 seqncias de microinstrues: Mem1 instrues de referncia memria Rformat1 instrues R-type BEQ1 instrues beq JUMP1 instrues de jump
Microprograma para Mem1 Tabelas da pgina 405 e primeira tabela da pgina 406
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
157
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
158
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
159
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
160
Excees e interrupes Exceo um evento inesperado, interno ao processador (p. ex. overflow), que causa uma mudana no fluxo normal de execuo das instrues. Interrupo um evento inesperado, externo ao processador (p. ex. interrupo de I/O), que causa uma mudana no fluxo normal de execuo das instrues.
Tabela da pgina 411 Tipo de Evento Requisio de I/O Chamada Overflow aritimtico Uso de instruo no definida Malfuncionamento do hardware Fonte Externa Interna Interna Interna Ambos Terminologia MIPS Interrupo Exceo Exceo Exceo Exceo ou Interrupo
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
161
Deteco de exceo Dois tipos de exceo sero tratados: execuo de uma instruo no definida e overflow aritmtico. Quando ocorre uma exceo, o endereo da instruo afetada guardada no EPC (exception program counter) e o controle transferido ao sistema operacional em um endereo especificado. Dependendo da atitude do SO e do tipo de exceo, o programa pode ser interrompido ou reiniciado a partir do endereo armazenado em EPC. Para o SO tratar a exceo, ele tem que conhecer qual a exceo. H duas maneiras: status register (Cause), que tem um campo que especifica a exceo e vectored interrupts o SO sabe a razo da exceo pelo endereo de entrada no vetor. O SO sabe a razo da exceo pelo endereo passado para ele.
Tabela da pgina 412 Tipo de exceo Intruo no definida Overflow aritimtico Endereo no vetor de exees(hexa) C0 00 00 00hex C0 00 00 20hex
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
162
Para tratar a exceo vamos supor o primeiro mtodo. Temos 2 registradores extra: EPC de 32 bits, usado para manter o endereo da instruo afetada e Cause (32 bits), usado para armazenar a causa da exceo. Vamos assumir que o bit menos significativo seja usado para codificar a causa da exceo ( instruo indefinida = 0 e overflow = 1) Precisamos de dois sinais de controle EPCWrite e CauseWrite, o sinal do bit menos significativo de Cause IntCause. Precisamos tambm escrever o endereo de exceo, no qual o SO entra para tratar a mesma (supor C000000016). O multiplexador de entrada de PC dever ser alterado de 3 para 4 entradas (entrada C000000016). A ULA deve subtrair 4 do valor de PC para poder guardar em EPC.
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
163
Instruction [25 0] Instruction [31-26] PC 0 M u x 1 Address Memory MemData Instruction [15 0] Write data In struction register Instruction [15 0] Me mory data register Instruction [25 21] Instruction [20 16] 0 M Inst ruction u x [15 11] 1 0 M u x 1 16 Sign extend 32 Shift le ft 2 Read register 1 Read Read register 2 data 1 Registers Write Read register data 2 Write data A 0 M u x 1
26
S hift left 2
28
1M
2 u x
C O 00 00 00
PC [31-28]
B 4
ALU Out
EPC
0 1M u 2 x 3
1 ALU control
0 M u x 1
Cause
Instruction [5 0 ]
Para detectar as excees e transferir o controle para o estado apropriado temos: Instruo indefinida: detectada quando o prximo estado definido do estado 1 para o valor op. Tratamos definindo o prximo estado, para qualquer valor de op, como estado 10. Overflow aritmtico: o sinal de overflow (sada da ULA) usado para modificar a mquina de estados para especificar um prximo estado para o estado 7.
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
164
Start
Q ')
(Op = 'J')
r) th e =o
W' = 'L
Op or (
Branch completion
(O p
(O
'B E
Jump completion
9 PCWrite PCSource = 10
p (O
(Op = 'LW')
= W 'S ')
Memory access 5
3 MemRead IorD = 1
10
ARQUITETURA DE COMPUTADORES
- RICARDO PANNAIN
165