View
212
Download
0
Category
Preview:
Citation preview
1? 1998 Morgan Kaufmann Publishers
Capítulo 5
This material may not be copied or distributed for commercial purposes without express written permission of the copyright holder.
Permission is granted to copy and distribute this material for educational purposes only, provided that the complete bibliographic citation and following credit line is included: "Copyright 1998 Morgan Kaufmann Publishers." Permission is granted to alter and distribute this material provided that the following credit line is included: "Adapted from Computer Organization and Design: The Hardware/Software Interface, 2nd Edition David A. Patterson, John L. Hennessy Morgan Kaufmann, 2nd ed., 1997, ISBN 1558604286 Copyright 1998 Morgan Kaufmann Publishers."
Lecture slides created by Michael Wahl in English
Tradução: Christian Lyra Gomes
Revisão: Wagner M. N. Zola
2? 1998 Morgan Kaufmann Publishers
• Nós estamos prontos para olhar uma implementação do MIPS• Simplificada para conter apenas:
– instruções de referência a memória: lw, sw – instruções lógico-aritméticas: add, sub, and, or, slt– instruções de controle de fluxo: beq, j
? Implementação Genérica:
– usa o contador de programa (PC) para fornecer o endereço das instruções
– pega a instrução da memória– ler registradores– usa a instrução para decidir exatamente o que fazer
? Todas as instruções usam a ULA após ler os registradoresPor que? referência a memória? aritmética? controle de fluxo?
O Processador: Datapath & Controle
3? 1998 Morgan Kaufmann Publishers
• Visão Abstrata / Simplificada:
Dois tipos de unidades funcionais:– elementos que operam sobre valores de dados (combinacional)– elementos que contêm estados (seqüencial)
Mais detalhes da implementação
RegistersRegister #
Data
Register #
Datamemory
Address
Data
Register #
PC Instruction ALU
Instructionmemory
Address
4? 1998 Morgan Kaufmann Publishers
• Não-cronometrado vs. Cronometrado (clocked)• Relógios usados em lógica síncrona
– quando um elemento que contêm um estado deve ser atualizado?
Tempo de CicloBorda de subida
Borda de descida
Elementos de Estado
5? 1998 Morgan Kaufmann Publishers
• A trava RS (set-reset latch)– a saída depende da entrada presente e também de entradas
passadas
Um elemento de estado não-cronometrado
6? 1998 Morgan Kaufmann Publishers
• Saída é igual ao valor armazenando no elemento(Não precisa pedir permissão para olhar o valor)
• Mudança de estado (valor) é baseado no relógio• Travas: quando a entrada muda, e o pulso de relógio está em “1”• Flip-flop: Estado muda apenas na borda do pulso de relógio
(edge-triggered methodology)
”verdadeiro lógico", — pode significar um sinal elétrico baixo
Uma metodologia de relógio define quando um sinal pode ser lido e escrito— Não se deseja ler um sinal ao mesmo tempo em que ele está sendo escrito
Travas (Latches) e Flip-flops
7? 1998 Morgan Kaufmann Publishers
• Duas entradas:– o valor a ser armazenado (D)– o sinal do relógio (C) indicando quando ler e armazenar D
• Duas saídas:– o valor do estado interno (Q) e o seu complemento
Trava-D
Q
C
D
_Q
D
C
Q
8? 1998 Morgan Kaufmann Publishers
Flip-flop D
• Saída muda apenas na borda do relógio
_Q
Q
_Q
Dlatch
D
C
Dlatch
DD
C
C
D
C
Q
9? 1998 Morgan Kaufmann Publishers
Nossa Implementação
• Usamos metodologia de gatilho pela borda do pulso de relógio• Execução típica:
– ler o conteúdo de alguns elementos de estado,– enviar o conteúdo através de alguma lógica combinacional– escrever o resultado em um ou mais elementos de estado
Clock cycle
Stateelement
1Combinational logic
Stateelement
2
10? 1998 Morgan Kaufmann Publishers
• Construído usando flip-flops D
Banco de Registradores (register file)
Mux
Register 0
Register 1
Register n – 1
Register n
Mux
Read data 1
Read data 2
Read registernumber 1
Read registernumber 2
R ea d regis ternu mber 1 R ea d
da ta 1
R ea dda ta 2
R ea d regis ternu mber 2
Regi ster f ileW riteregiste r
W ri teda ta Writ e
11? 1998 Morgan Kaufmann Publishers
Banco de registradores (register file)
• Nota: nós ainda usamos o relógio real para determinar quando escrever
n - to -1d e co d e r
R e g is te r 0
R e g is te r 1
R e g i s te r n – 1C
C
D
DR e g i s te r n
C
C
D
D
R e g i s te r n u m b e r
W r i te
R e g i s te r d a ta
0
1
n – 1n
12? 1998 Morgan Kaufmann Publishers
Implementação Simples
• Inclui as unidades funcionais que precisamos para cada instrução
Por que precisamos dessascoisas?
PC
Instructionmemory
Instructionaddress
Instruction
a. Instruction memory b. Program counter
Add Sum
c. Adder
ALU control
RegWrite
RegistersWriteregister
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Writedata
ALUresult
ALU
Data
Data
Registernumbers
a. Registers b. ALU
Zero5
5
5 3
16 32Sign
extend
b. Sign-extension unit
Me mRead
Me mWrite
D atamemory
Writedata
Readdata
a. Data memory unit
Address
13? 1998 Morgan Kaufmann Publishers
Construindo o Datapath
• Use multiplexadores para “grudar” as partes
PC
Instruct ionmemory
Readaddress
Ins truc tion
16 32
Add ALUresult
Mux
Regis ters
WriteregisterWritedata
Readdata 1
Readdata 2
Readregister 1Readregister 2
Shiftleft 2
4
Mux
ALU operation3
RegW rite
MemRead
MemWrite
PCSrc
ALUSrc
MemtoReg
ALUresult
Z eroALU
Datamemory
Address
Writedata
Readdata M
ux
Signextend
Add
14? 1998 Morgan Kaufmann Publishers
Controle
• Seleciona as operações a serem executadas (ULA, leitura/escrita, etc.)
• Controla o fluxo de dados (entradas dos multiplexadores)
• A Informação vem de instruções de 32 bits
• Exemplo:
add $8, $17, $18 Formato de Instrução:
000000 10001 10010 01000 00000 100000
op rs rt rd shamt funct
• Operações da ULA são baseadas no tipo de instrução e no código de função
15? 1998 Morgan Kaufmann Publishers
• ex., O que a ULA deve fazer com essa instrução• Exemplo: lw $1, 100($2)
35 2 1 100
op rs rt 16 bit offset
• Controle de entrada da ULA
000 E001 OU010 adição110 subtração111 Ajusta-se-menor-que (set-on-less-than)
• Por que o código para subtração é 110 e não 011?
Controle
16? 1998 Morgan Kaufmann Publishers
• Devemos descrever o hardware para computar a uma entrada de 3-bit de controle de ULA– dado um tipo de instrução
00 = lw, sw01 = beq, 11 = aritmética
– código de função para aritmética
• Descreva ele usando uma tabela verdade (que pode ser transformadaem portas):
ULA Op computado a partir do tipo de instrução
Controle
ALUOp Funct field OperationALUOp1 ALUOp0 F5 F4 F3 F2 F1 F0
0 0 X X X X X X 010X 1 X X X X X X 1101 X X X 0 0 0 0 0101 X X X 0 0 1 0 1101 X X X 0 1 0 0 0001 X X X 0 1 0 1 0011 X X X 1 0 1 0 111
17? 1998 Morgan Kaufmann Publishers
Controle
Instruction RegDst ALUSrcMemto-
RegReg
WriteMem Read
Mem Write Branch ALUOp1 ALUp0
R-format 1 0 0 1 0 0 0 1 0lw 0 1 1 1 1 0 0 0 0sw X 1 X 0 0 1 0 0 0beq X 0 X 0 0 0 1 0 1
PC
I ns tr u c tio nme mo ry
R ea da d d re s s
In s tr u ct io n[3 1 – 0 ]
In s tr u ct io n [2 0 – 1 6 ]
In s tr u ct io n [2 5 – 2 1 ]
Ad d
In s tr u ct io n [ 5– 0 ]
Me mt o Re gAL U O p
Me mW r ite
Re g W r ite
Me mR e a dBra n chR e g D st
AL U Src
In s tr u ct io n [3 1 – 2 6 ]
4
1 6 3 2In s tr u ct io n [1 5 – 0 ]
0
0Mux
0
1
C o n tro l
A d d A L Ure su lt
Mux
0
1
R e g ist e rsW r it ere g is te r
W r it ed a t a
R e a dd a t a 1
R e a dd a t a 2
R e a dre g is te r 1
R e a dre g is te r 2
Sig ne xt e nd
Sh if tle ft 2
Mux
1
A L Ure su lt
Ze ro
Da t ame m ory
Wr it eda t a
R e a dd a ta
Mux
1
In s tr u ct io n [1 5 – 1 1 ]
AL Uc o n tro l
A LUA d d re s s
18? 1998 Morgan Kaufmann Publishers
Controle
• Lógica combinacional simples (tabelas verdade)
Operation2
Operation1
Operation0
Operation
ALUOp1
F3
F2
F1
F0
F (5– 0)
ALUOp0
ALUOp
ALU control block
R-format Iw sw beq
Op0
Op1Op2Op3
Op4Op5
Inp uts
Outputs
R egD st
A LUSrc
M emtoRe g
R egWrite
M emRea d
M emWrite
B ranch
A LUOp1
A LUOpO
19? 1998 Morgan Kaufmann Publishers
• Toda a lógica é combinacional
• Nós esperamos tudo estabilizar, e a coisa certa a se fazer
– ULA pode não produzir a “resposta correta” imediatamente
– nós usamos sinais de escrita junto com o relógio para determinarquando escrever
• Tempo de ciclo determinado pelo tamanho do maior caminho
Nossa Estrutura de Controle Simples
Nós estamos ignorando alguns detalhes como tempos de “setup”e “hold”
Clock cyc le
Stateelement
1Com binational logic
Stateelement
2
20? 1998 Morgan Kaufmann Publishers
Implementação de ciclo único
• Calcula o tempo de ciclo assumindo atrasos negligenciáveis exceto:– memória(2ns)(porque?), ULA e somadores (2ns), acesso a bloco
de registradores (1ns)
MemtoReg
MemRead
MemWrite
ALUOp
ALUSrc
RegDst
PC
Instruct ionmemory
Readaddress
Instruction[31– 0]
Instruction [20– 16]
Instruction [25– 21]
Add
Instruction [5– 0]
RegWr ite
4
16 32Instruction [15– 0]
0Registers
WriteregisterWritedata
Writedata
Readdata 1
Readdata 2
Readregister 1Readregister 2
Signextend
ALUresult
Zero
Datamemory
Address Readdata M
ux
1
0
Mux
1
0
Mux
1
0
Mux
1
Instruction [15– 11]
ALUcontrol
Shiftleft 2
PCSrc
ALU
Add ALUresult
21? 1998 Morgan Kaufmann Publishers
Para onde estamos nos dirigindo
• Problemas de ciclo único:– E se nós tivermos uma instrução mais complicada, como uma
instrução de ponto flutuante?– Desperdício de área
• Uma solução:– use um tempo de ciclo menor– faça com que diferentes instruções usem diferentes números de
ciclos– um datapath “multiciclo” :
P C
M em o r y
Ad dr e ss
In s tr uc t iono r da ta
D at a
I ns tr u c tio nr eg is te r
Re g is ter sR eg is te r #
D at a
R eg is te r #
R eg is te r #
A LU
M e m or yda ta
r eg is te r
A
B
A LU O ut
22? 1998 Morgan Kaufmann Publishers
• Nós iremos re-utilizar as unidades funcionais– ULA utilizada para computar endereços e incrementar o PC– Memória utilizada para instruções e dados
• Nossos sinais de controle não serão determinados unicamente pelainstrução– ex., O que a ULA deve fazer para a instrução de subtração?
• Nós iremos usar uma máquina de estados finitos para o controle
Abordagem Multiciclo
23? 1998 Morgan Kaufmann Publishers
• Máquina de estados finitos:– um conjunto de estados e– função de próximo estado (determinada pelo estado corrente e a
entrada)– função de saída (determinada pelo estado corrente e possível
entrada
– Nós usaremos uma máquina de Moore (saída baseada apenas no estado corrente)
Revisão: Máquina de estados finitos
Ne xt-statefunct io nCu rren t sta te
Clo ck
Outp utfunct io n
N extstate
Out put s
In put s
24? 1998 Morgan Kaufmann Publishers
Revisão: Máquina de estados finitos
• Exemplo:
B. 21 Um amigo gostaria que você construísse um “olho eletrônico” para ser usado como um falso dispositivo de segurança. O dispositivo consiste de três luzes alinhadas, controladas pelas saídas Esquerda, Meio e Direita, que quando ligadas, indicam qual a luz deve estar acesa. Somente uma luz deve estar acesa em um determinado momento, e as luzes se “movem” da esquerda para a direita e depois da direita para a esquerda, espantando assim os ladrões que acreditarão que o dispositivo está monitorando a atividade deles. Desenhe uma representação gráfica da máquina de estados finitos usada para especificar o olho eletrônico. Observe que a velocidade de movimentação do olho será controlada pela freqüência de relógio (que não deve ser muito grande) e que essencialmente não há entradas.
25? 1998 Morgan Kaufmann Publishers
• Quebre a instrução em passos, cada passo leva um ciclo– balanceie a quantidade de trabalho a ser feita– restrinja cada ciclo a usar apenas uma unidade funcional maior
• No final de cada ciclo– armazene os valores para uso em ciclos posteriores (a coisa
mais fácil a ser feita)– introduza registradores “internos” adicionais
Abordagem Multiciclos
Shif tleft 2
PC
Memory
MemData
Wri tedata
Mux
0
1
RegistersWriteregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Mux
0
1
Mux
0
1
4
Instruction[15– 0]
Signextend
3216
Instruction[25– 21]
Instruction[20– 16]
Instruction[15– 0]
Instruct ionregister
1 Mux
0
3
2
Mux
ALUresult
ALUZero
Memorydata
register
Instruct ion[15– 11]
A
B
ALUOut
0
1
Address
26? 1998 Morgan Kaufmann Publishers
• Instrução Busca
• Instrução Decodifica e Busca Registrador
• Execução, Cálculo de Endereço de Memória, ou Conclusão de Desvio
• Acesso à Memória ou Conclusão de instruções tipo-R
• Passo de “Write-back”
INSTRUÇÕES LEVAM 3 - 5 CICLOS!
Cinco passos de execução
27? 1998 Morgan Kaufmann Publishers
• Usa o PC para pegar a instrução e coloca a instrução no Registrador de Instrução.
• Incrementa PC em 4 e coloca o resultado de volta no PC.• Pode ser descrito de forma sucinta usando a “Linguagem
Transferência-Registrador” - RTL "Register-Transfer Language"
IR = Memory[PC];PC = PC + 4;
Nós conseguimos descobrir os valores dos sinais de controle?
Qual é a vantagem de se atualizar o PC agora?
Passo 1: Instrução Busca
28? 1998 Morgan Kaufmann Publishers
• Leia os registradores rs e rt para o caso de precisarmos deles• Compute o endereço de desvio no caso da instrução ser um desvio• RTL:
A = Reg[IR[25-21]];B = Reg[IR[20-16]];ALUOut = PC + (sign-extend(IR[15-0]) << 2);
• Nós não estamos ajustando nenhuma linha de controle baseado no tipo de instrução
(Nós estamos ocupados “decodificando” ela em nossa lógica de controle)
Passo 2: Instrução Decodifica e Busca Registrador
29? 1998 Morgan Kaufmann Publishers
• A ULA está desempenhando uma das 3 funções, baseada no tipo de instrução
• Referência à memória:
ALUOut = A + sign-extend(IR[15-0]);
• Tipo-R:
ALUOut = A op B;
• Desvio:
if (A==B) PC = ALUOut;
Passo 3 (dependente de instrução)
30? 1998 Morgan Kaufmann Publishers
• Carrega ou armazena na memória
MDR = Memory[ALUOut];or
Memory[ALUOut] = B;
• Finaliza instruções Tipo-R
Reg[IR[15-11]] = ALUOut;
A escrita acontece no final do ciclo na borda
Passo 4 (Tipo-R ou acesso-memória)
31? 1998 Morgan Kaufmann Publishers
• Reg[IR[20-16]]= MDR;
E sobre todas as outras instruções?
Passo “Write-back”
32? 1998 Morgan Kaufmann Publishers
Sumário:
PassoAção para
instruções Tipo-RAção para instruções referência à memória
Ação para desvios Ação para saltos
Busca Instrução IR = Memory[PC]PC = PC + 4
Instrução A = Reg [IR[25-21]]Decodifica/busca reg. B = Reg [IR[20-16]]
ALUOut = PC + (sign-extend (IR[15-0]) << 2)
Execução, cálculo de ALUOut = A op B ALUOut = A + sign-extend if (A ==B) then PC = PC [31-28] IIendereço, desvio/ (IR[15-0]) PC = ALUOut (IR[25-0]<<2)fim de saltoAcesso Memória ou fim Reg [IR[15-11]] = Load: MDR = Memory[ALUOut]de Tipo-R ALUOut or
Store: Memory [ALUOut] = B
fim leitura de Memória Load: Reg[IR[20-16]] = MDR
33? 1998 Morgan Kaufmann Publishers
• Quantos ciclos leva para executar esse código?
lw $t2, 0($t3)lw $t3, 4($t3)beq $t2, $t3, Label #assuma nãoadd $t5, $t2, $t3sw $t5, 8($t3)
Label: ...
• O que está acontecendo durante o oitavo ciclo de execução?• Em que ciclo acontece realmente a adição de $t2 e $t3?
Questões Simples
34? 1998 Morgan Kaufmann Publishers
• O Valor dos sinais de controle dependem de:– Qual instrução está sendo executada– Qual passo esta sendo executado
• Use as informações que nós acumulamos para especificar uma máquina de estados finitos– Especifique a máquina de estados finitos graficamente, ou– utilize microprogramação
• A Implementação pode ser derivada da especificação
Implementando o Controle
• Quantos bits de estados nós precisaremos?
Representação Gráfica da MEF
PCWri tePCSource = 10
ALUSrcA = 1ALUSrcB = 00
ALUOp = 01PCWriteCond
PCSource = 01
ALUSrcA = 1ALUSrcB = 00
ALUOp= 10
RegDst = 1RegWrite
MemtoReg = 0
MemWriteIorD = 1
MemReadIorD = 1
ALUSrcA = 1ALUSrcB = 10ALUO p = 00
RegDst= 0RegWrite
MemtoReg= 1
ALUSrcA = 0ALUSrcB = 11ALUOp = 00
MemReadALUSrcA = 0
IorD = 0IRWrite
ALUSrcB = 01ALUOp = 00
PCWritePCSource = 00
Instruct ion fetchInstruction decode/
register fetch
Jumpcompletio n
Branchcompleti onExecut ion
Memory addresscomputat ion
Memorya ccess
Memoryaccess R-type completion
Write-back step
(Op = 'LW') or (Op = 'SW') (Op = R-type)
(Op
= 'BE
Q')
(Op
= 'J'
)
(Op = 'SW')
(Op
= 'L
W')
4
01
9862
753
Start
36? 1998 Morgan Kaufmann Publishers
• Implementação:
Máquina de Estados Finitos para o Controle
PCWrite
PCWriteCond
IorD
MemtoReg
PCSource
ALUOp
ALUSrcB
ALUSrcA
RegWrite
RegDst
NS3NS2NS1NS0
Op5
Op4
Op3
Op2
Op1
Op0
S3
S2
S1
S0
S tate register
IRWrite
MemRead
MemW rite
Instruction registeropcode f ield
Outputs
Control logic
Inputs
37? 1998 Morgan Kaufmann Publishers
Implementação PLA
• Se eu pegar uma linha horizontal e uma vertical você consegue explicar ela?Op5
Op4
Op3
Op2
Op1
Op0
S3
S2
S1
S0
IorD
IRWrite
M emReadM emWri te
PCWritePCWriteCond
M emtoRegPCSource1
ALUOp1
ALUSrcB0ALUSrcARegWriteRegDstNS3NS2NS1NS0
ALUSrcB1ALUOp0
PCSource0
38? 1998 Morgan Kaufmann Publishers
• ROM = “Memória de leitura apenas” ("Read Only Memory”)– Valores de locais da memória são fixados previamente
• Uma ROM pode ser usada para implementar uma tabela verdade– Se o endereço tem m-bits, nós podemos endereçar 2m entradas
na ROM.– Nossas saídas são os bits de dados para os quais o endereço
aponta.
m é a ”altura", e n é a ”largura"
Implementação ROM
m n
0 0 0 0 0 1 10 0 1 1 1 0 00 1 0 1 1 0 00 1 1 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 11 1 0 0 1 1 01 1 1 0 1 1 1
39? 1998 Morgan Kaufmann Publishers
• Quantas entradas existem lá?6 bits para opcode, 4 bits para o estado = 10 linhas de endereço(i.e., 210 = 1024 endereços diferentes)
• Quantas saídas existem lá? 16 Saídas de controle datapath, 4 bits de estado = 20 saídas
• ROM é 210 x 20 = 20K bits (é um tamanho um tanto estranho)
• Um tanto esbanjador, já que para um monte de entradas, as saídassão as mesmas
— i.e., o opcode é freqüentemente ignorado
Implementação ROM
40? 1998 Morgan Kaufmann Publishers
• Divida a tabela em duas partes— 4 bits de estado te retornam 16 saídas, 24 x 16 bits de ROM— 10 bits te retornam os 4 bits do próximo estado, 210 x 4 bits
de ROM— Total: 4.3K bits de ROM
• PLA é muito menor— pode compartilhar termos de produtos— precisa apenas de entradas que produzem saídas ativas— pode levar em conta os “não importa”
• O tamanho é (#entradas ? #termos-produto) + (#saídas ? #termos-produto)
Para este exemplo = (10x17)+(20x17) = 460 células PLA
• Células PLA são usualmente do mesmo tamanho de uma célula de ROM (ligeiramente maior)
ROM vs PLA
41? 1998 Morgan Kaufmann Publishers
• Instruções Complexas: o “próximo estado” é freqüentemente o estado atual + 1
Outro Estilo de Implementação
AddrCtl
O utputs
PLA or ROM
State
Address select l og icO
p[5–
0]
Adder
Instruction registe ropcode fi eld
1
Control unit
Input
PCWri tePCWri teCondIorD
MemtoRegPCSourceALUOpALUSrcBALUSrcARegWriteRegDst
IRWri te
MemReadMemWrite
BWrite
42? 1998 Morgan Kaufmann Publishers
DetalhesDispatch ROM 1 Dispatch ROM 2
Op Opcode name Value O p Opcode name Value000000 R-format 0110 100011 lw 0011000010 jmp 1001 101011 sw 0101000100 beq 1000100011 lw 0010101011 sw 0010
número estado Ação do endereço de controle valor do AddrCtl0 Usa incremento de estado 31 Usa dispatch ROM 1 12 Usa dispatch ROM 2 23 Usa incremento de estado 34 Troca número de estado por 0 05 Troca número de estado por 0 06 Usa incremento de estado 37 Troca número de estado por 0 08 Troca número de estado por 0 09 Troca número de estado por 0 0
State
Op
Adder
1
PLA or ROM
Mux3 2 1 0
Di spatch RO M 1Dispatch ROM 2
0
AddrCt l
Ad dress select logi c
Instructi on registeropcode f ield
43? 1998 Morgan Kaufmann Publishers
Microprogramação
• O que são “micro-instruções”?
PCWritePCWriteCondIorD
MemtoRegPCSourceALUOpALUSrcBALUSrcARegWrite
AddrCt l
Outputs
Microcode memory
IRW rite
MemReadMemWrite
RegDst
Control uni t
Input
Microprogram counter
Address sel ect logi c
Op[
5–0]
Adder
1
Datapath
Instruct ion registeropco de fi el d
BWrite
44? 1998 Morgan Kaufmann Publishers
• Uma metodologia de especificação– apropriada se temos centenas de opcodes, modos, ciclos, etc.– sinais são especificados simbolicamente com micro-instruções
• Duas implementações da mesma arquitetura terão o mesmo micro código?• O que deverá fazer o micro assembler?
Microprogramação
LabelALU
control SRC1 SRC2Register control Memory
PCWrite control Sequencing
Fetch Add PC 4 Read PC ALU SeqAdd PC Extshft Read Dispatch 1
Mem1 Add A Extend Dispatch 2LW2 Read ALU Seq
Write MDR FetchSW2 Write ALU FetchRformat1 Func code A B Seq
Write ALU FetchBEQ1 Subt A B ALUOut-cond FetchJUMP1 Jump address Fetch
Formato Micro-instruçãoNome do Campo Valor Sinais Ativos Comentários
Add ALUOp = 00 Faz a ULA adicionarALU control Subt ALUOp = 01 Faz a ILA subtrair; Isso implementa a comparaçao para
desvios.Func code ALUOp = 10 Usa o código de função da instrução para determinar o controle da ULA
SRC1 PC ALUSrcA = 0 Usa o PC como a primeira entrada da ULA.A ALUSrcA = 1 Registrador A é a primeira entrada da ULA.B ALUSrcB = 00 Registrador B é a segunda entrada da ULA.
SRC2 4 ALUSrcB = 01 Usa "4" como a segunda entrada da ULA.Extend ALUSrcB = 10 Usa a saída da unidade de extensão de sinal como a segunda entrada da ULA.Extshft ALUSrcB = 11 Usa saída da unidade desloca-2 como a segunda entrada da ULA.Read Lê dois registradores usando os campos rs e rt do IR como números de
registradores e coloca os dados nos registradores A e B.Write ALU RegWrite, Escreve em um registrador usando o campo rd do IR como número do registrador e
Register RegDst = 1, o contéudo da ALUOut como os dados.control MemtoReg = 0
Write MDR RegWrite, Escreve em um registrador usando o campo rt do IR como número do registrador eRegDst = 0, o conteúdo do MDR como os dados.MemtoReg = 1
Read PC MemRead, L6e a memória usando o PC como endereço; escreve o resulado no IR (elorD = 0 o MDR).
Memory Read ALU MemRead, Lê a memória usando o ALUOut como endereço; escreve o resultado no MDR.lorD = 1
Write ALU MemWrite, Escreve na memória usando o ALUOut como endereço, e o conteúdo de B como dado.lorD = 1
ALU PCSource = 00 Escreve a saída da ULA no PC.PCWrite
PC write control ALUOut-cond PCSource = 01, Se a saída Zero estiver ativa, escreve o PC com o conteúdoPCWriteCond do registrador ALUOut.
jump address PCSource = 10, Escreve o PC com endereço de salto da instrução.PCWrite
Seq AddrCtl = 11 Escolhe a próxima micro-instrução sequencialmente.Sequencing Fetch AddrCtl = 00 vai para a primeira micro-instrução para começar uma nova instrução.
Dispatch 1 AddrCtl = 01 Dispacha usando a ROM 1.Dispatch 2 AddrCtl = 10 Dispacha usando a ROM 2.
46? 1998 Morgan Kaufmann Publishers
• Nenhuma codificação:
– 1 bit para cada operação do datapath– mais rápida, requer mais memória (lógica)
– usada para o Vax 780 — incríveis 400K de memória!
• Muita codificação:
– envia micro-instruções através de lógica para pegar os sinais de controle
– usa menos memória, mais lento
• Contexto histórico do CISC:
– Muita lógica para colocar num único chip com todo o resto
– Usa uma ROM (ou mesmo RAM) para armazenar o microcódigo– é fácil adicionar novas instruções
Codificação Maximizada Vs Minimizada
47? 1998 Morgan Kaufmann Publishers
Microcódigo: Compromissos
• A distinção entre a especificação e a implementação é muitas vezes misturada
• Vantagens da Especificação:
– Fácil de projetar e escrever
– Projeto da arquitetura e microcódigo em paralelo
• Vantagens da Implementação (“off-chip ROM”)
– Fácil de mudar já que os valores estão na memória
– Pode emular outras arquiteturas
– Pode usar os registradores internos
• Desvantagens da Implementação, mais LENTO já que:
– Controle é implementado no mesmo chip que o processador
– ROM não é mais rápida que RAM
– Não há necessidade de voltar e fazer mudanças
48? 1998 Morgan Kaufmann Publishers
O Grande Quadro
Initialrepresentati on
Finite stated iagram M icroprogram
Se quencingcont rol
Expli cit nextstate function
Microprogram counter+ dispatch ROM S
Logi crepresentati on
Logicequat ions
Truthtables
Implem entat ionte chnique
Program mablelogic array
Read onlymem ory
Recommended