MIPS Pipeline
Click here to load reader
-
Upload
diego-streck -
Category
Technology
-
view
635 -
download
6
description
Transcript of MIPS Pipeline
Arquitetura de Computadores “A”
Aula 7
Pipeline
1
Em relação a performance...• O que é vantajoso no processador Monociclo?
• CPI = 1
• O que é desvantajoso no processador Monociclo?• Frequência baixa (Regrada pela instrução mais lenta)
• O que se ganhou na implementação Multiciclo?• Aumento na Frequência (Regrada pelo passo mais lento)
• O que se perdeu na implementação Multiciclo?• CPI > 1
Como agregar as vantagens das duas implementações?
CPI baixo e Frequência alta
2
Shiftleft 2
PC
Memory
MemData
Writedata
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]
Instructionregister
1 Mux
0
3
2
Mux
ALUresult
ALUZero
Memorydata
register
Instruction[15– 11]
A
B
ALUOut
0
1
Address
No multiciclo..o que se pode melhorar?
• Hardware dividido para executar os 5 passos• Somente uma parte do hardware está sendo utilizada por
ciclo (sempre UMA instrução dentro do processador)• Solução?
3
Sumário• Princípios Básicos• MIPS Pipeline: Caminho de Dados• MIPS Pipeline: Controle• Outros exemplos• Exercícios
4
Sumário• Princípios Básicos• MIPS Pipeline: Caminho de Dados• MIPS Pipeline: Controle• Outros exemplos• Exercícios
5
• Analogia com o processo de lavagem de roupas• Dividido em 4 passos:
• Lavar• Secar• Dobrar• Guardar
• Assumindo que cada passo dure 30 minutos
• Cada processo dura 2 horas• Três processos duram 6 horas• Recursos ociosos na maior parte do tempo!
Multiciclo
• Eliminação da ociosidade dos recursos• Inicia-se um processo a cada passo• Um processo continua durando 2 horas• Três processos duram 3 horas e 30 minutos
Pipeline
Monociclo
Instructionfetch
Reg ALU Dataaccess
Reg
8 nsInstruction
fetchReg ALU Data
accessReg
8 nsInstruction
fetch
8 ns
Time
lw $1, 100($0)
lw $2, 200($0)
lw $3, 300($0)
2 4 6 8 10 12 14 16 18
...
Programexecutionorder(in instructions)
Assuma:• 2ns para acessos à memória e operação na ULA. • 1ns para acesso ao banco de registradores.
• Período do monociclo é 8 ns• CPI = 1• Tempo de execução de um load = 8ns• Tempo de execução de três loads = 24ns
Multiciclo
Instructionfetch
Reg ALU Dataaccess
Reg
Time
lw $1, 100($0)
lw $2, 200($0)
lw $3, 300($0)
2 4 6 8 10 12 14 16 18Programexecutionorder(in instructions)
Assuma:• 2ns para acessos à memória e operação na ULA. • 1ns para acesso ao banco de registradores.
• Período do multiciclo é 2 ns• CPI > 1• Tempo de execução de um load = 10ns• Tempo de execução de três loads = 30ns
2 nsInstruction
fetchReg ALU Data
accessReg
2 nsInstruction
fetch
2 ns.
Pipeline Assuma:
• 2ns para acessos à memória e operação na ULA. • 1ns para acesso ao banco de registradores.
• Período do pipeline é 2 ns• CPI ~= 1• Tempo de execução de um load = 10ns• Tempo de execução de três loads = 14ns
2 4 6 8 10 12 14
Instructionfetch
Reg ALUData
accessReg
Time
lw $1, 100($0)
lw $2, 200($0)
lw $3, 300($0)
2 nsInstruction
fetchReg ALU
Dataaccess
Reg
2 nsInstruction
fetchReg ALU
Dataaccess
Reg
2 ns 2 ns 2 ns 2 ns 2 ns
Programexecutionorder(in instructions)
Pipeline: preste atenção• Pipelining não reduz a latência de uma instrução, mas
aumenta o throughput (vazão) de todo workload • Executar bilhões de instruções, então throughput é o que
interessa; • Questões:
• O período do pipeline é limitado pelo estágio mais longo• Ganho em potencial = número de estágios• Períodos desbalanceados dos estágio reduzem o aumento de desempenho
em relação a frequência
• Há um tempo gasto para encher o pipeline e para esvaziá-lo• Múltiplas instruções estão no pipeline concomitantemente
• Uma em cada estágio do pipeline• Mas somente uma instrução pode terminar (write back) por ciclo
11
O MIPS facilita para o pipelining?• Todas instruções tem o mesmo comprimento
• Busca e decodificação são similares para todas instruções
• Poucos formatos de instruções• Simplifica a decodificação, que pode ser feita em um estágio
• Operandos de memória parecem apenas em loads/stores• Acessos à memória podem ser realizados em um estágio específico
12
Sumário• Princípios Básicos• MIPS Pipeline: Caminho de Dados• MIPS Pipeline: Controle• Outros exemplos• Exercícios
13
Caminho de dados• Vamos construir o bloco operativo• Primeiro, lembre-se dos cinco passos
• Busca de Instruções e incremento do PC (IF)• Decodificação da instrução e busca dos registradores (ID)• Execução e cálculo do Endereço (EX)• Acesso à Memória (MEM)• Gravação do resultado no banco de registradores (WB)
14
Caminho de dados• No monociclo
• Todos os passos feitos em apenas um ciclo• Hardware dedicado para cada passo
• No multiciclo• Passos são realizados em ciclos diferentes• Alguns componentes de hardware são compartilhados
• Memórias, somadores,etc.
• No pipeline• Devemos implementá-lo a partir do caminho de dados do
monociclo ou multiciclo?• Monociclo
• Temos instruções diferentes em cada passo que necessitam de HW dedicado
15
(IF)Instruction Fetch
(ID)Instruction Decode
(EX)Execute
(MEM)Memory
(WB)Write Back
5 516
RD1
RD2
RN1 RN2 WN
WDRegister File ALU
EXTND
16 32
RD
WD
DataMemory
ADDR
5
Instruction I32
MUX
<<2RD
InstructionMemory
ADDR
PC
4
ADD
ADD
MUX
32
Zero
Revisão dos “passos”
Pipeline• Como iremos isolar os resultados de cada instrução
em cada estágio do pipeline?• Precisamos de registradores extras para guardar os dados entre
os ciclos• Registradores do pipeline
17
5 516
RD1
RD2
RN1 RN2 WN
WDRegister File ALU
EXTND
16 32
RD
WD
DataMemory
ADDR
5
Instruction I32
MUX
<<2RD
InstructionMemory
ADDR
PC
4
ADD
ADD
MUX
32
Zero
IF/ID
Registradores do Pipeline
ID/EX EX/MEM MEM/WB
64 bits97 bits 64 bits
128 bits
Largos o suficiente para manter os dados
Bloco operativo com pipeline
Exemplo no Pipeline• Considere a seguinte sequência de instruções
lw $t0, 10($t1) sw $t3, 20($t4) add $t5, $t6, $t7 sub $t8, $t9, $t10
Diagrama de ciclo: Ciclo 1LW
5
RD1
RD2
RN1
RN2
WN
WD
RegisterFile
ALU
EXTND
16 32
RD
WD
DataMemory
ADDR
32
MUX
<<2
RD
InstructionMemory
ADDR
PC
4
ADD
ADD
MUX
5
5
5
IF/ID ID/EX EX/MEM MEM/WB
Zero
5
RD1
RD2
RN1
RN2
WN
WD
RegisterFile
ALU
EXTND
16 32
RD
WD
DataMemory
ADDR
32
MUX
<<2
RD
InstructionMemory
ADDR
PC
4
ADD
ADD
MUX
5
5
5
IF/ID ID/EX EX/MEM MEM/WB
Zero
LWSW
Diagrama de ciclo: Ciclo 2
5
RD1
RD2
RN1
RN2
WN
WD
RegisterFile
ALU
EXTND
16 32
RD
WD
DataMemory
ADDR
32
MUX
<<2
RD
InstructionMemory
ADDR
PC
4
ADD
ADD
MUX
5
5
5
IF/ID ID/EX EX/MEM MEM/WB
Zero
LWSWADD
Diagrama de ciclo: Ciclo 3
5
RD1
RD2
RN1
RN2
WN
WD
RegisterFile
ALU
EXTND
16 32
RD
WD
DataMemory
ADDR
32
MUX
<<2
RD
InstructionMemory
ADDR
PC
4
ADD
ADD
MUX
5
5
5
IF/ID ID/EX EX/MEM MEM/WB
Zero
LWSWADDSUB
Diagrama de ciclo: Ciclo 4
5
RD1
RD2
RN1
RN2
WN
WD
RegisterFile
ALU
EXTND
16 32
RD
WD
DataMemory
ADDR
32
MUX
<<2
RD
InstructionMemory
ADDR
PC
4
ADD
ADD
MUX
5
5
5
IF/ID ID/EX EX/MEM MEM/WB
Zero
LWSWADDSUB
Diagrama de ciclo: Ciclo 5
5
RD1
RD2
RN1
RN2
WN
WD
RegisterFile
ALU
EXTND
16 32
RD
WD
DataMemory
ADDR
32
MUX
<<2
RD
InstructionMemory
ADDR
PC
4
ADD
ADD
MUX
5
5
5
IF/ID ID/EX EX/MEM MEM/WB
Zero
SWADDSUB
Diagrama de ciclo: Ciclo 6
Diagrama de ciclo: Ciclo 7
5
RD1
RD2
RN1
RN2
WN
WD
RegisterFile
ALU
EXTND
16 32
RD
WD
DataMemory
ADDR
32
MUX
<<2
RD
InstructionMemory
ADDR
PC
4
ADD
ADD
MUX
5
5
5
IF/ID ID/EX EX/MEM MEM/WB
Zero
ADDSUB
Diagrama de ciclo: Ciclo 8
5
RD1
RD2
RN1
RN2
WN
WD
RegisterFile
ALU
EXTND
16 32
RD
WD
DataMemory
ADDR
32
MUX
<<2
RD
InstructionMemory
ADDR
PC
4
ADD
ADD
MUX
5
5
5
IF/ID ID/EX EX/MEM MEM/WB
Zero
SUB
Exemplo no Pipeline• Considere a seguinte sequência de instruções
lw $t0, 10($t1) sw $t3, 20($t4) add $t5, $t6, $t7 sub $t8, $t9, $t10
Algo novo na execução?
Diagrama de ciclo: Ciclo 1LW
5
RD1
RD2
RN1
RN2
WN
WD
RegisterFile
ALU
EXTND
16 32
RD
WD
DataMemory
ADDR
32
MUX
<<2
RD
InstructionMemory
ADDR
PC
4
ADD
ADD
MUX
5
5
5
IF/ID ID/EX EX/MEM MEM/WB
Zero
5
RD1
RD2
RN1
RN2
WN
WD
RegisterFile
ALU
EXTND
16 32
RD
WD
DataMemory
ADDR
32
MUX
<<2
RD
InstructionMemory
ADDR
PC
4
ADD
ADD
MUX
5
5
5
IF/ID ID/EX EX/MEM MEM/WB
Zero
LWSW
Diagrama de ciclo: Ciclo 2
5
RD1
RD2
RN1
RN2
WN
WD
RegisterFile
ALU
EXTND
16 32
RD
WD
DataMemory
ADDR
32
MUX
<<2
RD
InstructionMemory
ADDR
PC
4
ADD
ADD
MUX
5
5
5
IF/ID ID/EX EX/MEM MEM/WB
Zero
LWSWADD
Diagrama de ciclo: Ciclo 3
5
RD1
RD2
RN1
RN2
WN
WD
RegisterFile
ALU
EXTND
16 32
RD
WD
DataMemory
ADDR
32
MUX
<<2
RD
InstructionMemory
ADDR
PC
4
ADD
ADD
MUX
5
5
5
IF/ID ID/EX EX/MEM MEM/WB
Zero
LWSWADDSUB
Diagrama de ciclo: Ciclo 4
LWSWADDSUB
Diagrama de ciclo: Ciclo 5
5
RD1
RD2
RN1
RN2
WN
WD
RegisterFile
ALU
EXTND
16 32
RD
WD
DataMemory
ADDR
32
MUX
<<2
RD
InstructionMemory
ADDR
PC
4
ADD
ADD
MUX
5
5
IF/ID ID/EX EX/MEM MEM/WB
Zero
5 516
RD1
RD2
RN1 RN2 WN
WDRegister File ALU
EXTND
16 32
RD
WD
DataMemory
ADDR
5
Instruction I32
MUX
<<2RD
InstructionMemory
ADDR
PC
4
ADD
ADD
MUX
32
Zero
IF/ID ID/EX EX/MEM MEM/WB
64 bits97 bits 64 bits
128 bits
Bloco operativo com pipeline (2)
Endereço do registrador de escrita vem de OUTRA instrução, que está após no pipeline
O número do registrador de destino também é passado através dos registradores ID/EX, EX/MEM e MEM/WB, que agora tem de ter 5 bits a mais
5 516
RD1
RD2
RN1 RN2 WN
WDRegister File ALU
EXTND
16 32
RD
WD
DataMemory
ADDR
Instruction I32
MUX
<<2RD
InstructionMemory
ADDR
PC
4
ADD
ADD
MUX
32
Zero
IF/ID ID/EX EX/MEM MEM/WB
64 bits102 bits 69 bits
133 bits
Bloco operativo com pipeline (3)
5
5 516
RD1
RD2
RN1 RN2 WN
WDRegister File ALU
EXTND
16 32
RD
WD
DataMemory
ADDR
5
Instruction I32
MUX
<<2RD
InstructionMemory
ADDR
PC
4
ADD
ADD
MUX
32
Zero
IF/ID ID/EX EX/MEM MEM/WB
64 bits97 bits 64 bits
128 bits
Bloco operativo com pipeline (4)
Dados sendo movidos da direita para a esquerda podem causar hazard de dados
• Branches e escrita no último passo
Visão alternativa – Diagramas com vários Ciclos de relógio
IM REG ALU DM REGlw $t0, 10($t1)
sw $t3, 20($t4)
add $t5, $t6, $t7
CC 1 CC 2 CC 3 CC 4 CC 5 CC 6 CC 7
IM REG ALU DM REG
IM REG ALU DM REG
sub $t8, $t9, $t10 IM REG ALU DM REG
CC 8
Tempo
Pipeline Completo
Address
4
32
0
Add Addresult
Shiftleft 2
Ins
tru
ctio
n
Mux
0
1
Add
PC
0
Address
Writedata
Mux
1
Readdata 1
Readdata 2
Readregister 1
Readregister 2
16Sign
extend
Writeregister
Writedata
Readdata
1
ALUresult
Mux
ALU
Zero
Imem
Dmem
Regs
IF/ID ID/EX EX/MEM MEM/WB
64 bits 133 bits 102 bits 69 bits
5
Busca Decodificação Execução Memória Escr. Reg.
Notas• Uma diferença significativa na execução do tipo-R entre
multiciclo e pipeline• Escrita no banco de registradores é feito no 5º estágio do pipeline• No Multiciclo, é no 4º passo. Por quê?
• A grande diferença entre o pipeline e o multiciclo é o desacoplamento dos passos
• O CPI do pipeline ideal é de 1. Por quê?
39
Sumário• Princípios Básicos• MIPS Pipeline: Caminho de Dados• MIPS Pipeline: Controle• Outros exemplos• Exercícios
40
Controle do Pipeline• Design inicial motivado pelo monociclo
• Mesmos sinais de controle
• Observe que• Não há sinal separado para gravação no PC• Não há sinais separados para registradores que são escritos
em todo o ciclo• Não há sinal de leitura para a memória de instruções• Não há sinal de leitura para o banco de registradores
• É necessário configurar os bits para cada estágio do pipeline
• Necessidade de agrupar os sinais de controle para cada estágio
41
Bloco Operativo com Controle I
PC
Instructionmemory
Address
Inst
ruct
ion
Instruction[20– 16]
MemtoReg
ALUOp
Branch
RegDst
ALUSrc
4
16 32Instruction[15– 0]
0
0Registers
Writeregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Signextend
Mux
1Write
data
Read
data Mux
1
ALUcontrol
RegWrite
MemRead
Instruction[15– 11]
6
IF/ID ID/EX EX/MEM MEM/WB
MemWrite
Address
Datamemory
PCSrc
Zero
AddAdd
result
Shiftleft 2
ALUresult
ALU
Zero
Add
0
1
Mux
0
1
Mux
• 5 estágios• Busca de Instruções e incremento do PC
(IF)• Decodificação da instrução e busca dos
registradores (ID)• Execução e cálculo do Endereço (EX)• Acesso à Memória• Gravação do resultado no banco de
registradores (WB)
Sinais de controle I
Execution/Address Calculation stage control
linesMemory access stage
control lines
Write-back stage control
lines
InstructionReg Dst
ALU Op1
ALU Op0
ALU Src
Branch
Mem Read
Mem Write
R-format 1 1 0 0 0 0 0lw 0 0 0 1 0 1 0sw X 0 0 1 0 0 1beq X 0 1 0 1 0 0
Nada para controlar porque a leitura na memória de instruções e a escrita no
PC estão sempre habilitadas
• Controle é propagado junto com os dados – cada registrador de pipeline é estendido para guardar os bits de controle para dos estágio seguintes
• Os 6 bits do campo FUNCT (tipo R) são recuperados no EX pelo campo de imediato que propaga nos registradores de dados do pipeline
Controle através dos Estágios
Control
EX
M
WB
M
WB
WB
IF/ID ID/EX EX/MEM MEM/WB
Instruction
PC
Instructionmemory
Inst
ruct
ion
Add
Instruction[20– 16]
Mem
toR
eg
ALUOp
Branch
RegDst
ALUSrc
4
16 32Instruction[15– 0]
0
0
Mux
0
1
Add Addresult
RegistersWriteregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Signextend
Mux
1
ALUresult
Zero
Writedata
Readdata
Mux
1
ALUcontrol
Shiftleft 2
Re
gWrit
e
MemRead
Control
ALU
Instruction[15– 11]
6
EX
M
WB
M
WB
WBIF/ID
PCSrc
ID/EX
EX/MEM
MEM/WB
Mux
0
1
Mem
Writ
e
AddressData
memory
Address
Bloco Operativo com Controle II
Campo FUNCT
Execuçãocom controle• Sequência
de instruções:
lw $10, 20($1)sub $11, $2, $3and $12, $4, $7or $13, $6, $7add $14, $8, $9
“before<i>” significa a i-nésimaInstrução antes de lw
Ciclo 1 Ciclo 2
Execuçãocom controle• Sequência
de instruções:
lw $10, 20($1)sub $11, $2, $3and $12, $4, $7or $13, $6, $7add $14, $8, $9
“before<i>” significa a i-nésimaInstrução antes de lw
Ciclo 2
Execuçãocom controle• Sequência
de instruções:
lw $10, 20($1)sub $11, $2, $3and $12, $4, $7or $13, $6, $7add $14, $8, $9
“before<i>” significa a i-nésimaInstrução antes de lw
Ciclo 3
Execuçãocom controle• Sequência
de instruções:
lw $10, 20($1)sub $11, $2, $3and $12, $4, $7or $13, $6, $7add $14, $8, $9
“before<i>” significa a i-nésimaInstrução antes de lw
Ciclo 4
Execuçãocom controle• Sequência
de instruções:
lw $10, 20($1)sub $11, $2, $3and $12, $4, $7or $13, $6, $7add $14, $8, $9
Ciclo 5
Execuçãocom controle• Sequência
de instruções:
lw $10, 20($1)sub $11, $2, $3and $12, $4, $7or $13, $6, $7add $14, $8, $9
Ciclo 6“after <i>” significa a i-nésimaInstrução depois de add
Execuçãocom controle• Sequência
de instruções:
lw $10, 20($1)sub $11, $2, $3and $12, $4, $7or $13, $6, $7add $14, $8, $9
Ciclo 7“after <i>” significa a i-nésimaInstrução depois de add
Execuçãocom controle• Sequência
de instruções:
lw $10, 20($1)sub $11, $2, $3and $12, $4, $7or $13, $6, $7add $14, $8, $9
Ciclo 8“after <i>” significa a i-nésimaInstrução depois de add
WB
EX
M
Instructionmemory
Address
Mem
toR
eg
ALUOp
Branch
RegDst
ALUSrc
4
0
0
1
Add Addresult
1
ALUresult
Zero
ALUcontrol
Shiftleft 2
Reg
Writ
e
M
WB
Inst
ruct
ion
IF/ID EX/MEMID/EX
ID: after<3> EX: after<2> MEM: after<1> WB: add $14, . . .
MEM/WB
IF: after<4>
000
00
0000
000
00
000
0
00
00
0
1
0
Mux
0
1
Add
PC
0Writedata
Mux
1
Control
Registers
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Instruction[20– 16]
Instruction[15– 0] Sign
extend
Instruction[15– 11]
MemRead
Mem
Wri
te
Mux
Mux
ALUReaddata
WB
14
14
Writeregister
Writedata
Datamemory
Address
Clock 9
Ciclo 9
Execuçãocom controle• Sequência
de instruções:
lw $10, 20($1)sub $11, $2, $3and $12, $4, $7or $13, $6, $7add $14, $8, $9
“after <i>” significa a i-nésimaInstrução depois de add
Sumário• Princípios Básicos• MIPS Pipeline: Caminho de Dados• MIPS Pipeline: Controle• Outros exemplos• Exercícios
55
56
Pipelines de Instruções• Evolução no número de estágios:
– 2 estágios
• fetch/decodificação, execução– 3 estágios
• fetch, decodificação/busca de operandos, execução– 4 estágios
• fetch, decodificação/busca de operandos, execução, store– 5 estágios
• fetch, decodificação/cálculo de endereço de operandos, busca de operandos, execução, store
– 6 estágios
• fetch, decodificação, cálculo de endereço de operandos, busca de operandos, execução, store
• Estágio só de decodificação é usual em processadores CISC. Por que?• Porque a tendência da evolução é quebrar o pipeline em mais estágios?
Exemplos Atuais – Pentium III e IV
57
Exemplos Atuais - ARM
58
Exemplos Atuais - Atom
59
Exemplos Atuais – Core i7
60
Mudança no Cenário
61
• 2000 – Pentium 4 – 20 estágios de pipeline • 1.3 – 2 GHz
• 2008 – Pentium D – Dual Core – 31 estágios de pipeline• 2.66 - 3.73 GHz
• 2012 – Corei 7 – 6 Cores – 14 estágios de pipeline• ~ 2GHz
Porque a frequência baixou?
62
Pipeline Aritmético• O pipeline pode ser empregado também em outros lugares.
• Ex.: pipeline aritmético
• O pipeline aritmético é empregado para acelerar as funções lógicas e aritméticas das ULAs.
• É a divisão das operações aritméticas em suboperações.• Todos microprocessadores modernos possuem pipeline aritmético.
• Pipeline de Somador de Ponto Flutuante com 5 estágios• Os cinco estágios:
• Comparação dos operandos A e B,• Ajuste da mantissa,• Soma dos operandos A e B• Verificação dos zeros da soma• Ajuste do expoente final
• Resulta no final um expoente e uma mantissa
63
Pipeline Aritmético
Sumário• Princípios Básicos• MIPS Pipeline: Caminho de Dados• MIPS Pipeline: Controle• Outros exemplos• Exercícios
64
• Dado um processador com 5 estágios de pipeline (F,DR,E,M,W), Tciclo = 2ns, pede-se:• quanto tempo será tomado para executar 1B de instruções,
supondo CPI = 1?• qual a aceleração em relação a:
• uma máquina monociclo com Período = 8ns;• uma máquina multiciclo com Período = 2ns, CPI = 4;
• Graças a melhora na tecnologia, passa-se o pipeline a 8 estágios (F1,F2,DR,E1,E2,M1,M2,W), com Tciclo = 1ns. • Quanto tempo será tomado para executar 1B de instruções,
supondo CPI = 1?• Qual a aceleração em relação a:
• uma máquina single-cycle com Tcycle = 8ns;• uma máquina multi-cycle com Tcycle = 1ns, CPI = 5;
Exercícios
Para Ler• Patterson, 2ª Edição e 3ª Edição
• 6.1 – 6.3
66
• Dicas• Tempo de execução = Nº instruções x CPI x Tciclo• Pipeline => Cuidado => Tencher + Tesvaziar
Exercícios