Organização de um processador
João Canas Ferreira
Arquitectura de Computadores
FEUP/LEIC
Contém figuras de “Computer Organization and Design” (cap. 5), D. Patterson & J. Hennessey, 3ª. ed., MKP
Tópicos
1 Introdução
2 Caminho de dados (datapath)
3 Unidade de controlo uniciclo
4 Unidade de controlo multiciclo
ArqComp: Organização de um processador 2/44 2006-03-31
1 Introdução
2 Caminho de dados (datapath)
3 Unidade de controlo uniciclo
4 Unidade de controlo multiciclo
ArqComp: Organização de um processador 3/44 2006-03-31
Generalidades
+ O desempenho do processador depende do número de instruçõesexecutadas, do CPI e do período do relógio.
+ Período de relógio e CPI dependem da organização doprocessador.
+ Organização do processador depende do conjunto de instruçõesa suportar.
+ RISC = Reduced Instruction Set Computer: instruções simples,que facilitam o projecto do CPU, beneficiando CPI e período derelógio em detrimento do nº de instruções: MIPS, Alpha, Sparc.
+ CISC = Complex Instruction Set Computer: instruções maispoderosas, cuja implementação é mais complicada: Intel IA-32.
+ CPU = caminho de dados + unidade de controlo
ArqComp: Organização de um processador 4/44 2006-03-31
Instruções suportadas
+ Instruções lógico-aritméticasI add $t3, $t2, $t1 $t3 = $t2 + $t1I addi $t4, $t5, 120 $t4 = $t5 + 120
Valor imediato de 16 bits (com sinal): sofre extensão de sinalpara 32 bits.
+ Instruções de acesso a memória (load/store)I lw $t0, 150($t1) $t0← mem[$t1+100]I sw $t0, 150($t1) mem[$t1+100]← $t0
Deslocamento (imediato) de 16 bits (sofre extensão de sinal).
+ Saltos condicionais e incondicionais
I beq $t0, $t1, 150 PC← PC + 4 + (150 << 2)Deslocamento relativo é número de 16 bits (com sinal);sofre extensão para 32 bits após deslocamento de 2 bits.
I j 10000 PC←PC+4; PC←{PC[31:28],26’d10000 << 2}
ArqComp: Organização de um processador 5/44 2006-03-31
Codificação das instruções suportadas
+ Instruções tipo R056101115162021252631
opcode rs rt rd shamt funct
add $t0, $t1, $t2 com $t0: rd, $t1: rs, $t2: rt+ Instruções do tipo I
015162021252631
opcode rs rt imediato
addi $t0, $t1, 187 com $t0: rt , $t1: rslw $t0, 150($t1) com $t0: rt, $t1: rs
+ Instruções do tipo J0252631
opcode endereço
j 10000
ArqComp: Organização de um processador 6/44 2006-03-31
Aspectos comuns
Obs: Para já, ignorar a instrução de salto incondicional.
+ Os dois primeiros passos do tratamento de todas as instruçõessão idênticos:
1. Enviar o conteúdo do contador de programa (PC) para amemória de instruções e obter a instrução.
2. Ler um ou dois registos (usando os campos da instruçãopara os seleccionar). A instrução de load apenas necessitade ler um registo.
+ As acções subsequentes dependem da instrução, mas sãosemelhantes para instruções da mesma classe.
+ Mesmo instruções de classes diferentes têm semelhanças. Porexemplo, todas (excepto o salto incondicional) utilizam a ALU:
I lógico-aritméticas: ALU efectua a operação;I load/store: ALU é usada para cálculo do endereço efectivo;I salto condicional: ALU é usada para efectuar a comparação.
ArqComp: Organização de um processador 7/44 2006-03-31
Vista geral do processador MIPS básico
Data
Register #
Register #
Register #
PC Address Instruction
Instruction memory
Registers ALU Address
Data
Data memory
AddAdd
4
Diagrama abstracto (algumas entradas estão ligadas a várias fontes).
ArqComp: Organização de um processador 8/44 2006-03-31
Organização do processador MIPS básico
Data
Register #
Register #
Register #
PC Address Instruction
Instruction memory
Registers ALU Address
Data
Data memory
AddAdd
4
MemWrite
MemRead
M u x
M u x
M u x
Control
RegWrite
Zero
Branch
ALU operation
ArqComp: Organização de um processador 9/44 2006-03-31
1 Introdução
2 Caminho de dados (datapath)
3 Unidade de controlo uniciclo
4 Unidade de controlo multiciclo
ArqComp: Organização de um processador 10/44 2006-03-31
Elementos para obtenção de instruções
PC
Instruction address
Instruction
Instruction memory
Add Sum
a. Memória de instruções b. Contador de programa c. Somador
ArqComp: Organização de um processador 11/44 2006-03-31
Obtenção de instruções
PC Read address
Instruction
Instruction memory
Add
4
ArqComp: Organização de um processador 12/44 2006-03-31
Elementos para instruções do tipo R
Read register 1
Read register 2
Write register
Write Data
Registers ALUData
Data
Zero
ALU result
RegWrite
a. Banco de registos b. ALU
5
5
5
Register numbers
Read data 1
Read data 2
ALU operation4
ArqComp: Organização de um processador 13/44 2006-03-31
Elementos para cálculo de endereços
Address Read data
Data memory
a. Memória de dados
Write data
MemRead
MemWrite
b. Unidade de extensão de sinal
Sign extend
16 32
ArqComp: Organização de um processador 14/44 2006-03-31
Elementos para avaliação da condição de salto
Read register 1
Read register 2
Write register
Write data
Registers ALU Zero
RegWrite
Read data 1
Read data 2
ALU operation4
Para controlodo salto
Add Sum Destino dosalto
PC4 +
Sign extend
16 32
Instrução
Shift left 2
ArqComp: Organização de um processador 15/44 2006-03-31
Instruções tipo R e acessos a memória
Read register 1
Read register 2
Write register
Write data
Write data
Registers ALUZero
RegWrite
MemRead
MemWriteMemtoReg
Read data 1
Read data 2
ALU operation4
Sign extend
16 32
InstruçãoALU
resultM u x
0
1
M u x
1
0
ALUSrcAddress
Data memory
Read data
ArqComp: Organização de um processador 16/44 2006-03-31
Caminho de dados (quase) completo
Read register 1
Read register 2
Write register
Write data
Write data
Registers ALU
Add
Zero
RegWrite
MemRead
MemWrite
PCSrc
MemtoReg
Read data 1
Read data 2
ALU operation4
Sign extend
16 32
Instruction ALU result
Add
ALU result
M u x
M u x
M u x
ALUSrc
Address
Data memory
Read data
Shift left 2
4
Read address
Instruction memory
PC
+ Ainda não inclui suporte para saltos incondicionais (j).
ArqComp: Organização de um processador 17/44 2006-03-31
1 Introdução
2 Caminho de dados (datapath)
3 Unidade de controlo uniciclo
4 Unidade de controlo multiciclo
ArqComp: Organização de um processador 18/44 2006-03-31
Controlo da ALU
opcode rs rt functrd shamt
Controladorprincipal
Sinais de contrologerais
Controladorda ALU
ALUOp
Sinais de controlopara ALU
+ A ALU funciona em três contextos diferentes.1. instruções lógico-aritméticas: ALUOp=102. cálculo de endereços: ALUOp=003. comparação: ALUOp=01
ArqComp: Organização de um processador 19/44 2006-03-31
Especificação do controlador da ALU
A especificação detalhada do controlador de ALU é a seguinte:
opcode ALUOp Operação Funct Op. ALU Ctrl ALU
lw 00 load word XXXXXX soma 0010sw 00 store word XXXXXX soma 0010beq 01 branch equal XXXXXX subtracção 0110R 10 soma 100000 soma 0010R 10 subtracção 100010 subtracção 0110R 10 AND 100100 e-lógico 0000R 10 OR 100101 ou-lógico 0001R 10 set on less than 101010 set on less than 0111
A coluna Ctrl ALU especifica os valores que a entrada de controloda ALU deve receber, por forma a que este componente execute aoperação apropriada a cada “contexto”.
ArqComp: Organização de um processador 20/44 2006-03-31
Observações gerais sobre a descodificação
+ Os bits 31:26 da instrução contêm sempre o código da instrução.
+ Os dois registos a serem lidos são sempre especificados peloscampos rs e rt (posições 25:21 e 20:16). [Instruções tipo R,beq e sw]
+ O registo de base para acessos a memória esta sempre nasposições 25:21 (rs). [Instruções lw e sw]
+ A constante de 16 bits ocupa sempre as posições 15:0.[Instruções beq, lw e st]
+ O registo de destino está em uma de duas posições:1. posição 20:16 (rt)) [ instrução lw]2. posição 15:11 (rd) [instrução R]
É necessário acrescentar um multiplexador para seleccionarentre as duas “fontes”.
ArqComp: Organização de um processador 21/44 2006-03-31
Caminho de dados com multiplexadores e controlo
Read register 1
Read register 2
Write register
Write data
Write data
Registers
ALU
Add
Zero
MemRead
MemWrite
RegWrite
PCSrc
MemtoReg
Read data 1
Read data 2
Sign extend
16 32
Instruction [31:0] ALU
result
Add
ALU result
M u x
M u x
M u x
ALUSrc
Address
Data memory
Read data
Shift left 2
4
Read address
Instruction memory
PC
1
0
0
1
0
1
M u x
0
1
ALU control
ALUOpInstruction [5:0]
Instruction [25:21]
Instruction [15:11]
Instruction [20:16]
Instruction [15:0]
RegDst
ArqComp: Organização de um processador 22/44 2006-03-31
Especificação dos sinais de controlo
O efeito dos 8 sinais de controlo é o seguinte:
Nome Efeito se = 0 Efeito se = 1
RegDst O endereço do registo a alterarvem da posição 20:16 (rt)
O endereço do registo a alterarvem da posição 15:11 (rd)
RegWrite Nenhum O registo especificado por RegDsté alterado para o valor presentena entrada Write data
ALUSrc 2º operando da ALU vem da saída2 do banco de registos.
2º operando da ALU é a constanteincluída na instrução
PCSrc PC assume valor PC+4 PC assume valor produzido por so-mador do endereço.
MemRead Nenhum Memória fornece valor pedido.MemWRite Nenhum Memória guarda valor especificado
por entrada WriteDataMemtoReg O valor a escrever no banco de re-
gistos provem da ALUO Valor a escrever no banco de re-gistos provem da memória
Branch Instrução não é beq Instrução é beq
ArqComp: Organização de um processador 23/44 2006-03-31
Detalhes das ligações da unidade de controlo
Read register 1
Read register 2
Write register
Write data
Write data
Registers
ALU
Add
Zero
Read data 1
Read data 2
Sign extend
16 32
Instruction [31Ð0] ALU
result
Add
ALU result
M u x
M u x
M u x
Address
Data memory
Read data
Shift left 2
4
Read address
Instruction memory
PC
1
0
0
1
0
1
M u x
0
1
ALU control
Instruction [5Ð0]
Instruction [25Ð21]
Instruction [31Ð26]
Instruction [15Ð11]
Instruction [20Ð16]
Instruction [15Ð0]
RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite
Control
ArqComp: Organização de um processador 24/44 2006-03-31
Especificação do controlador principal
Instrução RegDst ALUSrc MemtoReg RegWrite
R 1 0 0 1lw 0 1 1 1sw X 1 X 0beq X 0 X 0
Instrução MemRead MemWrite Branch ALUop[1] ALUop[0]
R 0 0 0 1 0lw 1 0 0 0 0sw 0 1 0 0 0beq 0 0 1 0 1
Para obter tabelas de verdade regulares, basta substituir o nome dasinstruções pelo seu código numérico.
ArqComp: Organização de um processador 25/44 2006-03-31
Tratamento de instruções do tipo R
Read register 1
Read register 2
Write register
Write data
Write data
Registers
ALU
Add
Zero
Read data 1
Read data 2
Sign extend
16 32
Instruction [31–0] ALU
result
Add
ALU result
M u x
M u x
M u x
Address
Data memory
Read data
Shift left 2
4
Read address
Instruction memory
PC
1
0
0
1
0
1
M u x
0
1
ALU control
Instruction [5–0]
Instruction [25–21]
Instruction [31–26]
Instruction [15–11]
Instruction [20–16]
Instruction [15–0]
RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite
Control
ArqComp: Organização de um processador 26/44 2006-03-31
Tratamento de instruções de load
Read register 1
Read register 2
Write register
Write data
Write data
Registers
ALU
Add
Zero
Read data 1
Read data 2
Sign extend
16 32
Instruction [31-0] ALU
result
Add
ALU result
M u x
M u x
M u x
Address
Data memory
Read data
Shift left 2
4
Read address
Instruction memory
PC
1
0
0
1
0
1
M u x
0
1
ALU control
Instruction [5-0]
Instruction [25-21]
Instruction [31-26]
Instruction [15-11]
Instruction [20-16]
Instruction [15-0]
RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite
Control
ArqComp: Organização de um processador 27/44 2006-03-31
Tratamento da instrução de salto condicional
Read register 1
Read register 2
Write register
Write data
Write data
Registers
Add
Read data 1
Read data 2
Sign extend
16 32
Instruction [31-0]
Add
ALU result
M u x
M u x
M u x
Address
Data memory
Read data
Shift left 2
4
Read address
Instruction memory
PC
1
0
0
1
0
1
M u x
0
1
ALU control
Instruction [5-0]
Instruction [25-21]
Instruction [31-26]
Instruction [15-11]
Instruction [20-16]
Instruction [15–0]
RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite
Control
ALU
Zero
ALU result
ArqComp: Organização de um processador 28/44 2006-03-31
Tratamento da instrução de salto incondicional
Read register 1
Read register 2
Write register
Write data
Write data
Registers
Add
Read data 1
Read data 2
Sign extend
16 32
Instruction [31-0]
Add
ALU result
M u x
M u x
M u x
Address
Data memory
Read data
Shift left 2
Shift left 2
4
Read address
Instruction memory
PC
1
0
0
1
1
0
M u x
0
1
M u x
0
1
ALU control
Instruction [5-0]
Instruction [25-21]
Instruction [31Ð26]
Instruction [15-11]
Instruction [20-16]
Instruction [15-0]
RegDst Jump Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite
Control
Instruction [25-0] Jump address [31-0]
26 28PC + 4 [31-28]
ALUZero
ALU result
ArqComp: Organização de um processador 29/44 2006-03-31
Limitações da implementação uniciclo
+ Unidades de controlo “uniciclo” não são usadas emprocessadores actuais.
+ O período de relógio é determinado pela instrução maisdemorada (provavelmente a instrução de load).
+ CPI=1, mas período de relógio demorado.+ Para CPUs muito simples, pode ser um abordagem viável.+ Para CPUs com instruções de complexidade muito diferente, não
é uma boa abordagem.+ Exemplos:
I divisão inteira é muito mais demorada que somaI operações de vírgula flutuante são muito mais demoradas
que operações sobre inteiros+ Esta abordagem não permite seguir a regra: reduzir o tempo de
processamento dos casos mais comuns+ Alternativa: dividir tratamento de instruções em etapas e usar
um período de relógio mais curto (um ciclo por etapa).ArqComp: Organização de um processador 30/44 2006-03-31
1 Introdução
2 Caminho de dados (datapath)
3 Unidade de controlo uniciclo
4 Unidade de controlo multiciclo
ArqComp: Organização de um processador 31/44 2006-03-31
Características de uma implementação multiciclo
+ O tratamento de cada instrução é dividido em etapas.
+ O número de etapas varia com o tipo de instrução, mas é sempreo mesmo para uma dada instrução.
+ Durante um ciclo de relógio, o processador executa apenas umaetapa.
+ Uma unidade funcional pode ser usada mais que uma vezdurante o processamento de uma instrução, desde que seja emetapas diferentes.
+ É necessário inroduzir registos internos para preservar os sinaisproduzidos numa dada etapa e que sejam necessários numaetapa subsequente da mesma instrução.
+ Dados necessários para instruções subsequentes devem serpreservados em elementos de memória “visíveis” aoprogramador: banco de registos, PC ou memória.
ArqComp: Organização de um processador 32/44 2006-03-31
Datapath para implementação multiciclo
Data
Register #
Register #
Register #
PC Address
Instruction or dataMemory Registers ALU
Instruction register
Memory data
register
ALUOut
A
BData
+ uma única unidade de memória+ uma única ALU (em vez de uma ALU e dois somadores)+ registos internos adicionais:
registo de instruções (IR), registo de dados de memória (MDR),saída da ALU (ALUOut), entradas da ALU (A e B).
ArqComp: Organização de um processador 33/44 2006-03-31
Datapath para instruções básicas
Read register 1
Read register 2
Write register
Write data
Registers ALUZero
Read data 1
Read data 2
Sign extend
16 32
Instruction [25-21]
Instruction [20-16]
Instruction [15-0]
ALU result
M u x
M u x
Shift left 2
Instruction register
PC 0
1
M u x
0
1
M u x
0
1
M u x
0
1A
B 0 1 2 3
ALUOut
Instruction [15-0]
Memory data
register
Address
Write data
MemoryMemData
4
Instruction [15-11]
(faltam alguns elementos para o tratamento de saltos)
+ multiplexador adicional na entrada superior da ALU
+ multiplexador 4:1 na entrada inferior da ALU
ArqComp: Organização de um processador 34/44 2006-03-31
Datapath com sinais de controlo
Read register 1
Read register 2
Write register
Write data
Registers ALU
Zero
Read data 1
Read data 2
Sign extend
16 32
Instruction [25–21]
Instruction [20–16]
Instruction [15–0]
ALU result
M u x
M u x
Shift left 2
Instruction register
PC 0
1
M u x
0
1
M u x
0
1
M u x
0
1A
B 0
1
2
3
ALUOut
Instruction [15–0]
Memory data
register
Address
Write data
MemoryMemData
4
Instruction [15–11]
ALU control
Instruction [5–0]
MemtoReg ALUSrcB ALUOp
IorD MemRead MemWrite IRWrite RegDst RegWrite ALUSrcA
ArqComp: Organização de um processador 35/44 2006-03-31
Processador multiciclo completo
Read register 1
Read register 2
Write register
Write data
Registers ALUZero
Read data 1
Read data 2
Sign extend
16 32
Instruction
[31-26] Instruction
[25-21] Instruction
[20-16] Instruction
[15-0]ALU
result
M u x
M u x
Shift left 2
Shift left 2
Instruction register
PC 0
1
M u x
0
1
M u x
0
1
M u x
0
1A
B 0 1 2 3
M u x
0
1
2
ALUOut
Instruction [15-0]
Memory data
register
Address
Write data
MemoryMemData
4
Instruction [15-11]
PCWriteCond PCWrite
IorD MemRead MemWrite
MemtoReg IRWrite
PCSource
ALUOp
ALUSrcB
ALUSrcA
RegWrite
RegDst
26 28
Outputs
Control
Op [5-0]
ALU control
PC [31-28]
Instruction [25-0]
Instruction [5-0]
Jump address [31-0]
ArqComp: Organização de um processador 36/44 2006-03-31
Especificação dos sinais de controlo (1/2)
Sinais de controlo de 1 bit:
Nome Efeito se = 0 Efeito se = 1
RegDst Destino de escrita no RF é espe-cificado por rt
Destino de escrita no RF é espe-cificado por rd
RegWrite Nada Efectua-se escrita no RFALUSrcA 1º operando da ALU é PC 1º operando vem do registo A
MemRead Nada Memória fornece item de dadosMemWrite Nada Memória guarda item de dadosMemtoReg Valor a escrever em RF vem de
ALUOutValor a escrever em RF vem deMDR
IorD PC fornece endereço de memória ALUOut fornece endereço de me-mória
IRWrite Nada Saída de memória escrita em IRPCWrite Nada PC actualizadoPCWRiteCond Nada PC actualizado se saída Zero da
ALU estiver activa
ArqComp: Organização de um processador 37/44 2006-03-31
Especificação dos sinais de controlo (2/2)
Sinais de controlo de 2 bits:
Nome Valor Efeito
ALUop 00 ALU soma01 ALU subtrai10 O campo funct determina a operação da ALU
ALUSrcB 00 2ª entrada da ALU provém de B01 2ª entrada da ALU é 410 2ª entrada da ALU é IR[15:0], c/ extensão de sinal11 2ª entrada da ALU é IR[15:0], c/ extensão de sinal e
deslocamento de 2 bits à esquerda
PCSource 00 Saída da ALU é enviada para PC01 Valor de ALUOut é enviado para PC10 Destino de salto incondicional enviado para PC
ArqComp: Organização de um processador 38/44 2006-03-31
Etapas do processamento de instruções
Etapa Tipo R Mem Branch Jump
1 IR← Mem[PC];PC← PC+4
2 A← reg[IR[25:21]]; B← reg[IR[20:16]];ALUOut← PC + ExtSin(IR[15:0]) << 2
3 ALUOut← A op B ALUOut←A + ExtSin(IR[15:0])
if (A==B)PC← ALUOut
PC←{PC[31:28],IR[25:0],00}
4 Reg[IR[15:11]] ←ALUOut
Load:MDR← Mem[ALUOut]ou Store:Mem[ALUOut]← B
5 Load:Reg[IR[20:16]]← MDR
+ Banco de registos é “lido” em todos os ciclos, mas desde que IRnão se modifique, os valores à saída do banco são sempre osmesmos (qualquer actualização só acontece na etapa final dotratamento da instrução).
ArqComp: Organização de um processador 39/44 2006-03-31
Obtenção de instruções e descodificação
MemRead ALUSrcA = 0
IorD = 0 IRWrite
ALUSrcB = 01 ALUOp = 00
PCWrite PCSource = 00
ALUSrcA = 0 ALUSrcB = 11 ALUOp = 00
Memory-reference FSM R-type FSM Branch FSM Jump FSM
Instruction decode/ Register fetch
Instruction fetch
0 1
Start
(Op = 'LW') or (Op = 'SW')
(Op = R-type)
(Op =
'BEQ
')
(Op =
'J')
ArqComp: Organização de um processador 40/44 2006-03-31
Acessos a memória
ALUSrcA = 1 ALUSrcB = 10 ALUOp = 00
From state 1
(Op = 'LW') or (Op = 'SW')
Memory address computation
Memory access
MemRead IorD = 1
MemWrite IorD = 1
RegWrite MemtoReg =1
RegDst = 0
Memory read completion step
To state 0 (Figure 5.32)
2
3
4
5
Memory access
(Op = 'SW')
(Op =
'LW
')
ArqComp: Organização de um processador 41/44 2006-03-31
Instruções do tipo R
ALUSrcA = 1 ALUSrcB = 00 ALUOp = 10
From state 1
(Op = R-Type)
Execution
RegDst =1 RegWrite
MemtoReg = 0
To state 0 (Figure 5.32)
6
7R-type completion
ArqComp: Organização de um processador 42/44 2006-03-31
Instruções de salto
Condicional Incondicional
ALUSrcA = 1 ALUSrcB = 00 ALUOp = 01
PCWriteCond PCSource = 01
From state 1
(Op = 'BEQ')
Branch completion
To state 0 (Figure 5.32)
8
PCWrite PCSource = 10
From state 1
(Op = 'J')
Jump completion
To state 0 (Figure 5.32)
9
ArqComp: Organização de um processador 43/44 2006-03-31
Unidade de controlo completa
MemRead ALUSrcA = 0
IorD = 0 IRWrite
ALUSrcB = 01 ALUOp = 00
PCWrite PCSource = 00
ALUSrcA = 0 ALUSrcB = 11 ALUOp = 00
ALUSrcA = 1 ALUSrcB = 00 ALUOp = 10
ALUSrcA = 1 ALUSrcB = 10 ALUOp = 00
MemRead IorD = 1
MemWrite IorD = 1
RegDst = 1 RegWrite
MemtoReg = 0
RegDst = 1 RegWrite
MemtoReg = 0
PCWrite PCSource = 10
ALUSrcA = 1 ALUSrcB = 00 ALUOp = 01
PCWriteCond PCSource = 01
Instruction decode/ register fetch
Instruction fetch
0 1
Start
(Op = 'LW') or (Op = 'SW')
(Op = R-typ
e)
(Op =
'BEQ
')
(Op =
'J')
Jump completion
9862
3
4
5 7
Memory read completon step
R-type completionMemory access
Memory access
ExecutionBranch
completionMemory address
computation
(Op = 'SW')
(Op =
'LW
')
ArqComp: Organização de um processador 44/44 2006-03-31