Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de...
Transcript of Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de...
![Page 1: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/1.jpg)
MC542
Organização de ComputadoresTeoria e Prática
MC5427.1
2007
Prof. Paulo Cesar Centoducatte
www.ic.unicamp.br/~ducatte
![Page 2: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/2.jpg)
MC542
Arquitetura de Computadores
ExceçõesMicro-Arquitetura Avançadas
MC5427.2
“DDCA” - (Capítulo 7)
“COD” - (Capítulo #)
![Page 3: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/3.jpg)
Sumário
• Exceções• Micro-Arquiteturas Avançadas
– Deep Pipelining– Branch Prediction– Superscalar Processors– Out of Order Processors– Register Renaming– SIMD– Multithreading
MC5427.3
– Multithreading– Multiprocessors
![Page 4: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/4.jpg)
Exceções
• 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 (MIPS):
MC5427.4
• Quando uma exceção ocorre, o processador (MIPS):– 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)
![Page 5: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/5.jpg)
Exemplo de Exceções
MC5427.5
![Page 6: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/6.jpg)
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
MC5427.6
» 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
![Page 7: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/7.jpg)
Causa de Exceções
Exception Cause
Hardware Interrupt 0x00000000
System Call 0x00000020
Breakpoint / Divide by 0 0x00000024
MC5427.7
Undefined Instruction 0x00000028
Arithmetic Overflow 0x00000030
Modificar o MIPS multiciclos para tratar as duas últimas exceções.
![Page 8: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/8.jpg)
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
MC5427.8
mfc0 Cause, $t0
– Trata a exceção
– Restaura os registradores
– Retorna ao programamfc0 EPC, $k0
jr $k0
![Page 9: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/9.jpg)
Exceções: passos 1 e 2
CLK
WE3
CLK
0 SrcA
RegDst BranchMemWrite MemtoReg ALUSrcARegWrite
Zero
PCSrc1:0
CLK
ALUControl2:0
WE
CLK CLK
CLK
ALUSrcB1:0IRWriteIorD PCWrite
PCEn
CLK
EN
EPCWrite
CLK
EN
CauseWrite
0
1
IntCause
0x30
0x28EPC
Cause
1. O Processador salva a causa e o PC em Cause e EPC2. Processador desvia para 0x80000180
MC5427.9
SignImm
ARD
Instr / DataMemory
A1
A3
WD3
RD2
RD1WE3
A2
Sign Extend
RegisterFile
0
1
0
1PC0
1
PC' Instr25:21
20:16
15:0
SrcB20:16
15:11
<<2
ALUResult
SrcA
ALUOut
Zero
AL
U
WD
WE
Adr
0
1Data
CLK
A
B00
01
10
11
4
CLK
ENEN
<<2
25:0 (jump)
31:28
27:0
PCJump
00
01
10
11
0x8000 0180
Overflow
![Page 10: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/10.jpg)
Exceções: passo 3 (mfc0)
• mfc0 $t0, Cause Exception handler
op 00000 $t0 (8) Cause (13) 00000000000
mfc0
MC5427.10
31:26 25:21 20:16 15:11 10:0
![Page 11: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/11.jpg)
Exceções: passo 3 (mfc0)
CLK
A1 RD1WE3
CLK
0
125:21
SrcA
RegDst BranchMemWrite MemtoReg1:0
ALUSrcARegWrite
Zero
PCSrc1:0
CLK
ALUControl2:0
WE
CLK CLK
A CLK
ALUSrcB1:0
IRWriteIorD PCWrite
PCEn
31:28
CLK
EN
EPCWrite
CLK
EN
CauseWrite
0
1
IntCause
0x30
0x28EPC
Cause...
01101
01110
...15:11
C0
MC5427.11
SignImm
ARD
Instr / DataMemory
A1
A3
WD3
RD2
RD1WE3
A2
Sign Extend
RegisterFile
0
1
1PC0
1
PC' Instr25:21
20:16
15:0
SrcB20:16
15:11
<<2
ALUResult ALUOut
Zero
ALU
WD
WE
Adr
0001
Data
CLK
A
B00
01
10
11
4
CLK
ENEN
<<2
25:0 (jump)
31:28
27:0
PCJump
00
01
10
11
0x8000 0180
Overflow
10
![Page 12: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/12.jpg)
Exceções: FSM de Controle
IorD = 0AluSrcA = 0
ALUSrcB = 01ALUOp = 00
PCSrc = 00IRWritePCWrite
ALUSrcA = 0ALUSrcB = 11
ALUOp = 00
Reset
S0: Fetch
S2: MemAdr
S1: Decode
S6: Execute
Op = LWor
Op = SW
Op = R-type
Op = BEQOp = ADDI
PCSrc = 10
PCWrite
Op = J
S11: Jump
Op = others
PCSrc = 11
PCWriteIntCause = 1
CauseWriteEPCWrite
S12: Undefined
RegDst = 0
Memtoreg = 10RegWrite
Op = mfc0
S14: MFC0
MC5427.12
ALUSrcA = 1ALUSrcB = 10ALUOp = 00
IorD = 1RegDst = 1
MemtoReg = 00
RegWrite
IorD = 1
MemWrite
ALUSrcA = 1ALUSrcB = 00ALUOp = 10
ALUSrcA = 1
ALUSrcB = 00ALUOp = 01PCSrc = 01
Branch
S2: MemAdr
S3: MemReadS5: MemWrite
S6: Execute
S7: ALUWriteback
S8: Branch
Op = SW
Op = LW
Op = SW
RegDst = 0MemtoReg = 01
RegWrite
S4: MemWriteback
ALUSrcA = 1ALUSrcB = 10ALUOp = 00
RegDst = 0MemtoReg = 00
RegWrite
S9: ADDI
Execute
S10: ADDIWriteback
Overflow Overflow
S13:Overflow
PCSrc = 11PCWrite
IntCause = 0CauseWrite
EPCWrite
![Page 13: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/13.jpg)
Micro-Arquiteturas Avançadas
• Deep Pipelining
• Branch Prediction
• Superscalar Processors
• Out of Order Processors
• Register Renaming
• SIMD
MC5427.13
• SIMD
• Multithreading
• Multiprocessors
![Page 14: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/14.jpg)
Deep Pipelining
• Tipicamente 10 a 20 estágios
• O Número de estágios é limitado por:
– Pipeline hazards
– Sequencing overhead
– Cost
MC5427.14
– Cost
![Page 15: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/15.jpg)
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
MC5427.15
– 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
![Page 16: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/16.jpg)
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
MC5427.16
addi $s0, $s0, 1 # increment i
j for
……
done:
![Page 17: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/17.jpg)
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 2 3 4 5 6 7 8 9 A B C D E F Branch
MC5427.17
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, 10
Beq $t0, $t0, 0xfff00002Add $s1, $s1, $s0
0xaaa00028
BranchHistoryTable
![Page 18: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/18.jpg)
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
MC5427.18
• 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
![Page 19: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/19.jpg)
2-Bit Branch Predictor
• Solução: esquema com 2-bit onde só há troca na previsão se houver duas misprediction:
T
T
Predict Taken Predict TakenT
NT
NT
MC5427.19
• Vermelho: not taken
• Verde: taken
• Adicionado uma Histerese (inércia) para tomar a decisão
T
NT
Predict Not Taken
Predict Not TakenT
NT
NT
![Page 20: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/20.jpg)
Branch Predictor
Vários outros esquemas:
• Correlating Branches
• Execução Predicada
• Tournament Predictors
• Branch Target Buffer (BTB)
MC5427.20
• Branch Target Buffer (BTB)
• Return Addresses stack
![Page 21: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/21.jpg)
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
CLK
MC5427.21
ARD A1
A2RD1A3
WD3WD6
A4A5A6
RD4
RD2RD5
InstructionMemory
RegisterFile Data
Memory
ALU
s
PC
A1A2
WD1WD2
RD1RD2
![Page 22: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/22.jpg)
Superscalar: Exemplolw $t0, 40($s0)
add $t1, $s1, $s2
sub $t2, $s1, $s3 IPC Ideal: 2
and $t3, $s3, $s4 IPC: 2
or $t4, $s1, $s5
sw $s5, 80($s0)
1 2 3 4 5 6 7 8
MC5427.22
Time (cycles)
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
![Page 23: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/23.jpg)
Superscalar Exemplo com Dependências
lw $t0, 40($s0)
add $t1, $t0, $s1
sub $t0, $s2, $s3 IPC Ideal: 2
and $t2, $s4, $t0 IPC: 6/5 = 1.17
or $t3, $s5, $s6
sw $s7, 80($t3)
Time (cycles)
1 2 3 4 5 6 7 8 9
MC5427.23
Stall
Time (cycles)
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
$s3
$s2
$s3
$s2
-$t0
oror $t3, $s5, $s6
IM
![Page 24: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/24.jpg)
Processador Out of Order
• Avaliar múltiplas instruções para despachar o máximopossível por vez
• Executar instruções out of order se não tem dependências
• Dependências:– RAW (read after write): one instruction writes, and later
MC5427.24
– 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 quepodem ser despachadas simultaneamente
![Page 25: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/25.jpg)
Processador Out of Order
• Instruction level parallelism: número de instruçõesque podem ser despachadas simultaneamente
• Scoreboard: tabela que mantém:
– Instruções esperando para serem despachadas e executadas
– Unidades funcionais disponíveis
MC5427.25
– Unidades funcionais disponíveis
– Dependências
• Tomasulo:– Instruções esperando para serem despachadas e executadas
– Unidades funcionais disponíveis
– Dependências
– Register Rename
![Page 26: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/26.jpg)
Processador Out of Order: Exemplolw $t0, 40($s0)
add $t1, $t0, $s1
sub $t0, $s2, $s3 IPC Ideal: 2
and $t2, $s4, $t0 IPC: 6/4 = 1.5
or $t3, $s5, $s6
sw $s7, 80($t3)
Time (cycles)
1 2 3 4 5 6 7 8
MC5427.26
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 latency
between load anduse of $t0
RAW
WAR
RAW
RF$t0
$s4
RF
&
DM
and
IM
$t2
RAW
![Page 27: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/27.jpg)
Register Renaming
1 2 3 4 5 6 7
lw $t0, 40($s0)
add $t1, $t0, $s1
sub $t0, $s2, $s3 IPC Ideal: 2
and $t2, $s4, $t0 IPC: 6/3 = 2
or $t3, $s5, $s6
sw $s7, 80($t3)
MC5427.27
Time (cycles)
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, $s6
IM
RF$s1
$t0
RF
$t1+
DMIM
add
sw+80
$t3
RAW
$s6
$s5
|or
2-cycle RAW
RAW
$t2
$t3
![Page 28: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/28.jpg)
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
MC5427.28
• Múltiplas unidades funcionais
• Diferentes instruções possuem tempos diferentes no
estágio EX
• Unidades disponíveis: load-store; mult e adder
![Page 29: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/29.jpg)
Scheduling DinâmicoImplementação - MIPS
IF ID MEM WB
EXInteira
M1 M2 M3 M4 M5 M6 M7
MC5427.29
IF ID MEM WB
A1 A2 A3
DIV
A4
![Page 30: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/30.jpg)
Estrutura Básica de uma Implementação do Algoritmo de Tomasulo (para o MIPS)
From Mem FP RegistersFP OpQueue
Load Buffers
Store Buffers
Load1Load2Load3Load4Load5Load6
MC5427.30
FP addersFP adders
Add1Add2Add3
FP multipliersFP multipliers
Mult1Mult2
Reservation Stations
Common Data Bus (CDB)
To Mem
Buffers
![Page 31: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/31.jpg)
Reservation Station
Busy Op Vj Vk Qj Qk A
0/1
Load/StoreImediato/Endereço Efetivo
MC5427.31
Valores a serem calculados0 – já foi calculado ou não usado
Valores já conhecidos
Operação
0/1
OBS.: Register FileQi = N0. RS
OBS.: Terminologia do ScreboardDo CDC (ver apêndice A)
![Page 32: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/32.jpg)
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
MC5427.32
– 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.
![Page 33: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/33.jpg)
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)
MC5427.33
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)
![Page 34: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/34.jpg)
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
MC5427.34
Functional Unit
– Escreve se há casamento com a Functional Unit (produz resultado)
– broadcast
![Page 35: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/35.jpg)
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
MC5427.35
• 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
+
![Page 36: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/36.jpg)
Técnicas Avançadas
• Multithreading– Wordprocessor: thread para typing, spell checking, printing
MC5427.36
• Multiprocessors– Múltiplos processadores (cores) em um único chip
![Page 37: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/37.jpg)
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:
MC5427.37
• 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, …)
![Page 38: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/38.jpg)
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,
MC5427.38
– 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
![Page 39: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/39.jpg)
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
MC5427.39
– 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
![Page 40: Organização de Computadoresducatte/mc542/Slides/mc542_A_07_2s0… · MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas MC542 7.2 “DDCA” - (Capítulo](https://reader036.fdocument.pub/reader036/viewer/2022063005/5f9ece7f2ceb793c4b671cc1/html5/thumbnails/40.jpg)
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)
MC5427.40
– ISCA (International Symposium on Computer Architecture)
– HPCA (International Symposium on High Performance Computer Architecture)