Upload
thiaguim-oliveira
View
35
Download
4
Embed Size (px)
Citation preview
MC542 7.1
2007
Prof. Paulo Cesar Centoducatte
www.ic.unicamp.br/~ducatte
MC542
Organização de ComputadoresTeoria e Prática
MC542 7.2
MC542
Arquitetura de Computadores
Micro-Arquitetura PipelineExceções
“DDCA” - (Capítulo 7)
“COD” - (Capítulo #)
MC542 7.3
Sumário
• Exceções• Micro-Arquiteturas Avançadas
– Deep Pipelining– Branch Prediction– Superscalar Processors– Out of Order Processors– Register Renaming– SIMD– Multithreading– Multiprocessors
MC542 7.4
Exceções
Revisão:
• Chamada de procedimento não “prevista” para tratamento de uma exceção
• Causado por:– Hardware, também chamado de interrupção
(keyboard, …)– Software, também chamado de traps (instrução
indefinida, …)
• Quando uma exceção ocorre, o processador:– Registra a causa da exceção (Cause register)– Salta para a rotina de tratamento da exceção no
endereço de instrução 0x80000180– Retorna ao programa (EPC register)
MC542 7.6
Registradores de Exceção
• Não faz parte do register file.
– Cause» Registra a causa da exceção» Coprocessor 0 register 13
– EPC (Exception PC)» Registra o PC onde ocorreu a exceção» Coprocessor 0 register 14
• Move from Coprocessor 0– mfc0 $t0, EPC
– Move o conteúdo de EPC para $t0
MC542 7.7
Causa de Exceções
Exception Cause
Hardware Interrupt 0x00000000
System Call 0x00000020
Breakpoint / Divide by 0 0x00000024
Undefined Instruction 0x00000028
Arithmetic Overflow 0x00000030
Modificar o MIPS multiciclos para tratar as duas últimas exceções.
MC542 7.8
1. O Processador salva a causa e o PC em Cause e EPC
2. Processador desvia para o exception handler (0x80000180)
3. Exception handler:– Salva os registradores na pilha– Lê o registrador Cause
mfc0 Cause, $t0
– Trata a exceção– Restaura os registradores– Retorna ao programa
mfc0 EPC, $k0
jr $k0
MC542 7.9
Exceções: passos 1 e 2
SignImm
CLK
ARD
Instr / DataMemory
A1
A3
WD3
RD2
RD1WE3
A2
CLK
Sign Extend
RegisterFile
0
1
0
1PC0
1
PC' Instr25:21
20:16
15:0
SrcB20:16
15:11
<<2
ALUResult
SrcA
ALUOut
RegDst BranchMemWrite MemtoReg ALUSrcARegWrite
Zero
PCSrc1:0
CLK
ALUControl2:0
AL
U
WD
WE
CLK
Adr
0
1Data
CLK
CLK
A
B 00
01
10
11
4
CLK
ENEN
ALUSrcB1:0IRWriteIorD PCWrite
PCEn
<<2
25:0 (jump)
31:28
27:0
PCJump
00
01
10
11
0x8000 0180
Overflow
CLK
EN
EPCWrite
CLK
EN
CauseWrite
0
1
IntCause
0x30
0x28EPC
Cause
1. O Processador salva a causa e o PC em Cause e EPC
2. Processador desvia para 0x80000180
MC542 7.10
Exceções: passo 3 (mfc0)
• mfc0 $t0, Cause Exception handler
op 00000 $t0 (8) Cause (13) 00000000000
mfc0
31:26 25:21 20:16 15:11 10:0
MC542 7.11
Exceções: passo 3 (mfc0)
SignImm
CLK
ARD
Instr / DataMemory
A1
A3
WD3
RD2
RD1WE3
A2
CLK
Sign Extend
RegisterFile
0
1
0
1PC0
1
PC' Instr25:21
20:16
15:0
SrcB20:16
15:11
<<2
ALUResult
SrcA
ALUOut
RegDst BranchMemWrite MemtoReg1:0 ALUSrcARegWrite
Zero
PCSrc1:0
CLK
ALUControl2:0
ALU
WD
WE
CLK
Adr
0001
Data
CLK
CLK
A
B00
01
10
11
4
CLK
ENEN
ALUSrcB1:0IRWriteIorD PCWrite
PCEn
<<2
25:0 (jump)
31:28
27:0
PCJump
00
01
10
11
0x8000 0180
CLK
EN
EPCWrite
CLK
EN
CauseWrite
0
1
IntCause
0x30
0x28EPC
Cause
Overflow
...
01101
01110
...15:11
10
C0
MC542 7.12
Exceções: FSM de Controle
IorD = 0AluSrcA = 0
ALUSrcB = 01ALUOp = 00PCSrc = 00
IRWritePCWrite
ALUSrcA = 0ALUSrcB = 11ALUOp = 00
ALUSrcA = 1ALUSrcB = 10ALUOp = 00
IorD = 1RegDst = 1
MemtoReg = 00RegWrite
IorD = 1MemWrite
ALUSrcA = 1ALUSrcB = 00ALUOp = 10
ALUSrcA = 1ALUSrcB = 00ALUOp = 01PCSrc = 01
Branch
Reset
S0: Fetch
S2: MemAdr
S1: Decode
S3: MemReadS5: MemWrite
S6: Execute
S7: ALUWriteback
S8: Branch
Op = LWor
Op = SW
Op = R-type
Op = BEQ
Op = LW
Op = SW
RegDst = 0MemtoReg = 01
RegWrite
S4: MemWriteback
ALUSrcA = 1ALUSrcB = 10ALUOp = 00
RegDst = 0MemtoReg = 00
RegWrite
Op = ADDI
S9: ADDIExecute
S10: ADDIWriteback
PCSrc = 10PCWrite
Op = J
S11: Jump
Overflow OverflowS13:
OverflowPCSrc = 11
PCWriteIntCause = 0CauseWriteEPCWrite
Op = others
PCSrc = 11PCWrite
IntCause = 1CauseWriteEPCWrite
S12: Undefined
RegDst = 0Memtoreg = 10
RegWrite
Op = mfc0
S14: MFC0
MC542 7.13
Micro-Arquiteturas Avançadas
• Deep Pipelining• Branch Prediction• Superscalar Processors• Out of Order Processors• Register Renaming• SIMD• Multithreading• Multiprocessors
MC542 7.14
Deep Pipelining
• Tipicamente 10 a 20 estágios
• O Número de estágios é limitado por:
– Pipeline hazards– Sequencing overhead– Cost
MC542 7.15
Branch Prediction
• Processador pepilined Ideal: CPI = 1
• Branch misprediction aumenta o CPI
• Static branch prediction:– Avalia a direção do branch (forward ou backward)– se backward: predict taken– Caso contrário: predict not taken
• Dynamic branch prediction:– Mantém histórico dos últimos (centenas) branches
em um branch target buffer (Branch History Table) que mantém:
» Destino do Branch» E se o branch foi taken
MC542 7.16
Branch Prediction: Exemplo
add $s1, $0, $0 # sum = 0
add $s0, $0, $0 # i = 0
addi $t0, $0, 10 # $t0 = 10
for:
beq $t0, $t0, done # if i == 10, branch
add $s1, $s1, $s0 # sum = sum + i
addi $s0, $s0, 1 # increment i
j for
……
done:
MC542 7.17
1-Bit Branch Predictor
• Desempenho = ƒ(precisão, custo do misprediction)• Branch History Table: Bits menos significativos do PC
usados como índice de uma tabela de valores de 1 bit– Informa se o branch foi tomado ou não na última vez– Não há comparação do endereço (menos HW, mas pode
não ser o branch correto)
0 1 1 0 0 1 1 1 0 0 0 0 0 1 0 1
0 1 2 3 4 5 6 7 8 9 A B C D E F
Addi $t0, $s0, 10Beq $t0, $t0, 0xfff00002Add $s1, $s1, $s0
0xaaa00028
BranchHistoryTable
MC542 7.18
1-Bit Branch Prediction
• Quando descobre que errou, atualiza a entrada correta, elimina as instruções erradas do pipeline e recomeça o fetch de 0xfff00002
• Problema: em um loop, 1-bit BHT irá causar 2 mispredictions (em média nos loops – na entrada e na saída):
– No fim do loop quando ele termina– Na entrada do loop quando ele preve exit no lugar de
looping– Em um loop com 10 iterações
» somente 80% de precisão » mesmo que os Taken sejam 90% do tempo
MC542 7.19
2-Bit Branch Predictor
• Solução: esquema com 2-bit onde só há troca na previsão se houver duas misprediction:
• Vermelho: not taken• Verde: taken• Adicionado uma Histerese (inércia) para tomar
a decisão
T
T
NT
Predict Taken
Predict Not Taken
Predict Taken
Predict Not TakenT
NT
T
NT
NT
MC542 7.20
Branch Predictor
Vários outros esquemas:
• Correlating Branches• Execução Predicada• Tournament Predictors• Branch Target Buffer (BTB)• Return Addresses stack
MC542 7.21
Superscalar• Múltiplas copias do datapath executando múltiplas
instruções
• Dependências dificultam o despacho (Issue) de
múltiplas instruções por vez
CLK CLK CLK CLK
ARD A1
A2RD1A3
WD3WD6
A4A5A6
RD4
RD2RD5
InstructionMemory
RegisterFile Data
Memory
ALU
s
PC
CLK
A1A2
WD1WD2
RD1RD2
MC542 7.22
Superscalar: Exemplolw $t0, 40($s0)
add $t1, $s1, $s2
sub $t2, $s1, $s3 IPC Ideal: 2and $t3, $s3, $s4 IPC: 2or $t4, $s1, $s5
sw $s5, 80($s0)
Time (cycles)
1 2 3 4 5 6 7 8
RF40
$s0
RF
$t0+
DMIM
lw
add
lw $t0, 40($s0)
add $t1, $s1, $s2
sub $t2, $s1, $s3
and $t3, $s3, $s4
or $t4, $s1, $s5
sw $s5, 80($s0)
$t1$s2
$s1
+
RF$s3
$s1
RF
$t2-
DMIM
sub
and $t3$s4
$s3
&
RF$s5
$s1
RF
$t4|
DMIM
or
sw80
$s0
+ $s5
MC542 7.23
Superscalar Exemplo com Dependências
lw $t0, 40($s0)
add $t1, $t0, $s1
sub $t0, $s2, $s3 IPC Ideal: 2and $t2, $s4, $t0 IPC: 6/5 = 1.17or $t3, $s5, $s6
sw $s7, 80($t3)
Stall
Time (cycles)
1 2 3 4 5 6 7 8
RF40
$s0
RF
$t0+
DMIM
lwlw $t0, 40($s0)
add $t1, $t0, $s1
sub $t0, $s2, $s3
and $t2, $s4, $t0
sw $s7, 80($t3)
RF$s1
$t0add
RF$s1
$t0
RF
$t1+
DM
RF$t0
$s4
RF
$t2&
DMIM
and
IMor
and
sub
|$s6
$s5$t3
RF80
$t3
RF+
DM
sw
IM
$s7
9
$s3
$s2
$s3
$s2-
$t0
oror $t3, $s5, $s6
IM
MC542 7.24
Processador Out of Order
• Avaliar múltiplas instruções para despachar o máximo possível por vez
• Despachar instruções out of order se não tem dependências
• Dependências:– RAW (read after write): one instruction writes, and later
instruction reads a register– WAR (write after read): one instruction reads, and a later
instruction writes a register (also called an antidependence)– WAW (write after write): one instruction writes, and a later
instruction writes a register (also called an output dependence)
• Instruction level parallelism: número de instruções que podem ser despachadas simultaneamente (na prática < 3)
MC542 7.25
Processador Out of Order
• Instruction level parallelism: número de instruções que podem ser despachadas simultaneamente (na prática < 3)
• Scoreboard: tabela que mantém:
– Instruções esperando para serem despachadas – Unidades funcionais disponíveis– Dependências
• Tomasulo:– Instruções esperando para serem despachadas – Unidades funcionais disponíveis– Dependências– Register Rename
MC542 7.26
Processador Out of Order: Exemplolw $t0, 40($s0)
add $t1, $t0, $s1
sub $t0, $s2, $s3 IPC Ideal: 2and $t2, $s4, $t0 IPC: 6/4 = 1.5or $t3, $s5, $s6
sw $s7, 80($t3)
Time (cycles)
1 2 3 4 5 6 7 8
RF40
$s0
RF
$t0+
DMIM
lwlw $t0, 40($s0)
add $t1, $t0, $s1
sub $t0, $s2, $s3
and $t2, $s4, $t0
sw $s7, 80($t3)
or|$s6
$s5$t3
RF80
$t3
RF+
DM
sw $s7
or $t3, $s5, $s6
IM
RF$s1
$t0
RF
$t1+
DMIM
add
sub-$s3
$s2$t0
two cycle latencybetween load anduse of $t0
RAW
WAR
RAW
RF$t0
$s4
RF&
DM
and
IM
$t2
RAW
MC542 7.27
Register Renaming
Time (cycles)
1 2 3 4 5 6 7
RF40
$s0
RF
$t0+
DMIM
lwlw $t0, 40($s0)
add $t1, $t0, $s1
sub $r0, $s2, $s3
and $t2, $s4, $r0
sw $s7, 80($t3)
sub-$s3
$s2$r0
RF$r0
$s4
RF&
DM
and
$s7
or $t3, $s5, $s6IM
RF$s1
$t0
RF
$t1+
DMIM
add
sw+80
$t3
RAW
$s6
$s5|
or
2-cycle RAW
RAW
$t2
$t3
lw $t0, 40($s0)
add $t1, $t0, $s1
sub $t0, $s2, $s3 IPC Ideal: 2and $t2, $s4, $t0 IPC: 6/3 = 2or $t3, $s5, $s6
sw $s7, 80($t3)
MC542 7.28
Algoritmo de TomasuloExemplo
• Foco: Unidades de ponto-flutuante e load-store
• Cada estágio pode ter um número arbitrário de ciclos
• Múltiplas unidades funcionais
• Diferentes instruções possuem tempos diferentes no
estágio EX
• Unidades disponíveis: load-store; mult e adder
MC542 7.29
Scheduling DinâmicoImplementação - MIPS
IFIF IDID MEM WB
EXEXInteira
A1A1 A2A2 A3A3
DIV
M1M1 M2M2 M3M3M4M4 M5M5 M6M6 M7M7
A4A4
MC542 7.30
Estrutura Básica de uma Implementação do Algoritmo de
Tomasulo (para o MIPS)
FP addersFP adders
Add1Add2Add3
FP multipliersFP multipliers
Mult1Mult2
From Mem FP Registers
Reservation Stations
Common Data Bus (CDB)
To Mem
FP OpQueue
Load Buffers
Store Buffers
Load1Load2Load3Load4Load5Load6
MC542 7.31
Reservation Station
Busy Op Vj Vk Qj Qk A
Valores a serem calculados0 – já foi calculado ou não usado
Valores já conhecidos
Operação
0/1
Load/StoreImediato/Endereço Efetivo
OBS.: Register FileQi = N0. RS
OBS.: Terminologia do Screboard Do CDC (ver apêndice A)
MC542 7.32
Reservation Station
Op: Operação a ser executada na unidade (e.g., + or –)
Vj, Vk: Valores dos operantos Fontes– Store buffers tem campos V, resultados devem ser
armazenados
Qj, Qk: Reservation Stations produzirá os operandos correspondentes (valores a serem escritos)– Qj,Qk = 0 => ready– Store buffers tem somente Qi para RS producing result
Busy: Indica que a Reservation Station e sua FU estão ocupadas
A: Mantém informação sobre o end. de memória calculado para load ou store
Register result status (campo Qi no register file) — Indica para cada registrador a unidade funcional (reservation station) que irá escreve-lo. Em branco se não há instruções pendentes que escreve no registrador.
MC542 7.33
3 estágios do algoritmo de Tomasulo
1. Issue— pega a instrução na “FP Op Queue” Se a reservation station está livre (não há hazard
estrutural), issues instr & envia operandos (renames registers)
2.Execute —executa a operação sobre os operandos (EX) Se os dois operandos estão prontos executa a
operação; Se não, monitora o Common Data Bus (espera pelo
cálculo do operando, essa espera resolve RAW) (quando um operando está pronto -> reservation table)
3.Write result — termina a execução (WB) Broadcast via Common Data Bus o resultados para todas
unidades; marca a reservation station como disponível
MC542 7.34
3 estágios do algoritmo de Tomasulo
• data bus normal: dado + destino (“go to” bus)
• Common data bus: dado + source (“come from” bus)
– 64 bits de dados + 4 bits para endereço da Functional Unit
– Escreve se há casamento com a Functional Unit (produz resultado)
– broadcast
MC542 7.35
SIMD• Single Instruction Multiple Data (SIMD)
– Uma única instrução aplicada a múltiplos (pedaços de) dados
– Aplicação Comum: computação gráfica– Executa operações aritméticas curtas (também
denominadas de packed arithmetic)
• Exemplo, quatro add de elementos de 8-bit• ALU deve ser modificada para eliminar os
carries entre os valores de 8-bit
padd8 $s2, $s0, $s1
a0
0781516232432 Bit position
$s0a1a2a3
b0 $s1b1b2b3
a0 + b0 $s2a1 + b1a2 + b2a3 + b3
+
MC542 7.36
Técnicas Avançadas
• Multithreading– Wordprocessor: thread para typing, spell checking,
printing
• Multiprocessors– Múltiplos processadores (cores) em um único chip
MC542 7.37
Multithreading: Algumas Definições
• Processo: programa executando em um computador• Múltiplos processos podem estar em execução ao mesmo
tempo: navegando na Web, ouvindo musica, escrevendo um artigo etc
• Thread: parte de um programa• Cada processo possue múltiplas threads: em processador
de texto tem threads para typing, spell checking, printing …
• Em um computador convencional:– Uma thread está em execução por vez– Quando uma thread para (por exemplo, devido a um page
fault):» O estado da thread é guardado (registradores, ….)» O estado da thread em espera é carregado no
processador e inicia-se sua execução» Chamado de context switching
– Para o usuário parece que todas as threads executam simultaneamente (existem outras condições que provocam mudança da thread em execução: acesso a disco, time-out, …)
MC542 7.38
Multithreading• Múltiplas cópias de status da arquitetura (uma por
thread)
• Múltiplas threads activas por vez:
– Quando uma thread para, outra inicia sua execução imediatamente (não é necessário armazenar e restaurar o status)
– Se uma thread não tem todas as unidades de execução necessárias, outra thread pode ser executada
• Não aumenta o ILP de uma única of thread, porém aumenta o throughput
MC542 7.39
Multiprocessors• Multiple processors (cores) com alguma forma de
comunicação entre eles
• Tipos de multiprocessamento:
– Symmetric multiprocessing (SMT): múltiplos cores com memória compartilhada
– Asymmetric multiprocessing: cores separados para diferentes tarefas (por examplo, DSP e CPU em um telefone celular)
– Clusters: cada core possue seu próprio sistema de memória
MC542 7.40
Outras Fontes para Leitura
• Patterson & Hennessy’s: Computer Architecture: A Quantitative Approach 3ª e 4ª Edições
• Conferências:– www.cs.wisc.edu/~arch/www/– ISCA (International Symposium on Computer
Architecture)– HPCA (International Symposium on High
Performance Computer Architecture)