SlideShare uma empresa Scribd logo
1 de 40
MC542
7.1
2007
Prof. Paulo Cesar Centoducatte
ducatte@ic.unicamp.br
www.ic.unicamp.br/~ducatte
MC542
Organização de Computadores
Teoria e Prática
MC542
7.2
MC542
Arquitetura de Computadores
Micro-Arquitetura Pipeline
Exceçõ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.5
Exemplo de Exceções
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
A
RD
Instr / Data
Memory
A1
A3
WD3
RD2
RD1
WE3
A2
CLK
Sign Extend
Register
File
0
1
0
1PC
0
1
PC' Instr
25:21
20:16
15:0
SrcB20:16
15:11
<<2
ALUResult
SrcA
ALUOut
RegDst BranchMemWrite MemtoReg ALUSrcARegWrite
Zero
PCSrc1:0
CLK
ALUControl2:0
ALU
WD
WE
CLK
Adr
0
1
Data
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
0x28
EPC
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
A
RD
Instr / Data
Memory
A1
A3
WD3
RD2
RD1
WE3
A2
CLK
Sign Extend
Register
File
0
1
0
1PC
0
1
PC' Instr
25: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
00
01
Data
CLK
CLK
A
B
00
01
10
11
4
CLK
ENEN
ALUSrcB1:0
IRWriteIorD PCWrite
PCEn
<<2
25:0 (jump)
31:28
27:0
PCJump
00
01
10
11
0x80000180
CLK
EN
EPCWrite
CLK
EN
CauseWrite
0
1
IntCause
0x30
0x28
EPC
Cause
Overflow
...
01101
01110
...
15:11
10
C0
MC542
7.12
Exceções: FSM de Controle
IorD = 0
AluSrcA = 0
ALUSrcB = 01
ALUOp = 00
PCSrc = 00
IRWrite
PCWrite
ALUSrcA = 0
ALUSrcB = 11
ALUOp = 00
ALUSrcA = 1
ALUSrcB = 10
ALUOp = 00
IorD = 1
RegDst = 1
MemtoReg = 00
RegWrite
IorD = 1
MemWrite
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 10
ALUSrcA = 1
ALUSrcB = 00
ALUOp = 01
PCSrc = 01
Branch
Reset
S0: Fetch
S2: MemAdr
S1: Decode
S3: MemRead
S5: MemWrite
S6: Execute
S7: ALU
Writeback
S8: Branch
Op = LW
or
Op = SW
Op = R-type
Op = BEQ
Op = LW
Op = SW
RegDst = 0
MemtoReg = 01
RegWrite
S4: Mem
Writeback
ALUSrcA = 1
ALUSrcB = 10
ALUOp = 00
RegDst = 0
MemtoReg = 00
RegWrite
Op = ADDI
S9: ADDI
Execute
S10: ADDI
Writeback
PCSrc = 10
PCWrite
Op = J
S11: Jump
Overflow Overflow
S13:
Overflow
PCSrc = 11
PCWrite
IntCause = 0
CauseWrite
EPCWrite
Op = others
PCSrc = 11
PCWrite
IntCause = 1
CauseWrite
EPCWrite
S12: Undefined
RegDst = 0
Memtoreg = 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, 10
Beq $t0, $t0, 0xfff00002
Add $s1, $s1, $s0
0xaaa00028
Branch
History
Table
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
A
RD A1
A2
RD1A3
WD3
WD6
A4
A5
A6
RD4
RD2
RD5
Instruction
Memory
Register
File Data
Memory
ALUs
PC
CLK
A1
A2
WD1
WD2
RD1
RD2
MC542
7.22
Superscalar: Exemplo
lw $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)
Time (cycles)
1 2 3 4 5 6 7 8
RF
40
$s0
RF
$t0
+
DM
IM
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
-
DM
IM
sub
and $t3
$s4
$s3
&
RF
$s5
$s1
RF
$t4
|
DM
IM
or
sw
80
$s0
+ $s5
MC542
7.23
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)
Stall
Time (cycles)
1 2 3 4 5 6 7 8
RF
40
$s0
RF
$t0
+
DM
IM
lw
lw $t0, 40($s0)
add $t1, $t0, $s1
sub $t0, $s2, $s3
and $t2, $s4, $t0
sw $s7, 80($t3)
RF
$s1
$t0
add
RF
$s1
$t0
RF
$t1
+
DM
RF
$t0
$s4
RF
$t2
&
DM
IM
and
IM
or
and
sub
|$s6
$s5
$t3
RF
80
$t3
RF
+
DM
sw
IM
$s7
9
$s3
$s2
$s3
$s2
-
$t0
or
or $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: Exemplo
lw $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
RF
40
$s0
RF
$t0
+
DM
IM
lw
lw $t0, 40($s0)
add $t1, $t0, $s1
sub $t0, $s2, $s3
and $t2, $s4, $t0
sw $s7, 80($t3)
or
|$s6
$s5
$t3
RF
80
$t3
RF
+
DM
sw $s7
or $t3, $s5, $s6
IM
RF
$s1
$t0
RF
$t1
+
DM
IM
add
sub
-$s3
$s2
$t0
two cycle latency
between load and
use 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
RF
40
$s0
RF
$t0
+
DM
IM
lw
lw $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
+
DM
IM
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: 2
and $t2, $s4, $t0 IPC: 6/3 = 2
or $t3, $s5, $s6
sw $s7, 80($t3)
MC542
7.28
Algoritmo de Tomasulo
Exemplo
• 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âmico
Implementação - MIPS
IFIF IDID MEM WB
EXEX
Inteira
A1
A1
A2
A2
A3
A3
DIV
M1
M1
M2
M2 M3
M3
M4
M4 M5
M5
M6
M6
M7
M7
A4
A4
MC542
7.30
Estrutura Básica de uma Implementação do
Algoritmo de Tomasulo (para o MIPS)
FP addersFP adders
Add1
Add2
Add3
FP multipliersFP multipliers
Mult1
Mult2
From Mem FP Registers
Reservation
Stations
Common Data Bus (CDB)
To Mem
FP Op
Queue
Load Buffers
Store
Buffers
Load1
Load2
Load3
Load4
Load5
Load6
MC542
7.31
Reservation Station
Busy Op Vj Vk Qj Qk A
Valores a serem calculados
0 – já foi calculado ou não usado
Valores já conhecidos
Operação
0/1
Load/Store
Imediato/Endereço Efetivo
OBS.: Register File
Qi = 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)
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)

Mais conteúdo relacionado

Destaque

Etica y valores como esencia del ser humano
Etica y valores como esencia del ser humanoEtica y valores como esencia del ser humano
Etica y valores como esencia del ser humanorubeme
 
Annual report final for print
Annual report final for printAnnual report final for print
Annual report final for printablecharities
 
New york images and labels
New york images and labelsNew york images and labels
New york images and labelscorominasanna
 
Cookingverbs waystage2
Cookingverbs waystage2Cookingverbs waystage2
Cookingverbs waystage2alejobiancha
 
The Chrooma+ Approach to Enrich Video Content using HTML5
The Chrooma+ Approach to Enrich Video Content using HTML5The Chrooma+ Approach to Enrich Video Content using HTML5
The Chrooma+ Approach to Enrich Video Content using HTML5Michael Krug
 
Bloque ii. subtema i
Bloque ii. subtema iBloque ii. subtema i
Bloque ii. subtema iRox Campos
 
академическое или аргументированное эссе
академическое или аргументированное эссеакадемическое или аргументированное эссе
академическое или аргументированное эссеAdelya Nuralina
 
Contoh RPP 2013 - Masalah pokok ekonomi
Contoh RPP 2013 - Masalah pokok ekonomiContoh RPP 2013 - Masalah pokok ekonomi
Contoh RPP 2013 - Masalah pokok ekonomiMentari Ritonga
 
New york, new york lesson plan
New york, new york lesson planNew york, new york lesson plan
New york, new york lesson plancorominasanna
 

Destaque (10)

Etica y valores como esencia del ser humano
Etica y valores como esencia del ser humanoEtica y valores como esencia del ser humano
Etica y valores como esencia del ser humano
 
Annual report final for print
Annual report final for printAnnual report final for print
Annual report final for print
 
New york images and labels
New york images and labelsNew york images and labels
New york images and labels
 
New york, new york
New york, new yorkNew york, new york
New york, new york
 
Cookingverbs waystage2
Cookingverbs waystage2Cookingverbs waystage2
Cookingverbs waystage2
 
The Chrooma+ Approach to Enrich Video Content using HTML5
The Chrooma+ Approach to Enrich Video Content using HTML5The Chrooma+ Approach to Enrich Video Content using HTML5
The Chrooma+ Approach to Enrich Video Content using HTML5
 
Bloque ii. subtema i
Bloque ii. subtema iBloque ii. subtema i
Bloque ii. subtema i
 
академическое или аргументированное эссе
академическое или аргументированное эссеакадемическое или аргументированное эссе
академическое или аргументированное эссе
 
Contoh RPP 2013 - Masalah pokok ekonomi
Contoh RPP 2013 - Masalah pokok ekonomiContoh RPP 2013 - Masalah pokok ekonomi
Contoh RPP 2013 - Masalah pokok ekonomi
 
New york, new york lesson plan
New york, new york lesson planNew york, new york lesson plan
New york, new york lesson plan
 

Semelhante a Comunidades Virtuais

Desempenho e Escalabilidade de Banco de Dados em ambiente x86
Desempenho e Escalabilidade de Banco de Dados em ambiente x86Desempenho e Escalabilidade de Banco de Dados em ambiente x86
Desempenho e Escalabilidade de Banco de Dados em ambiente x86Rodrigo Campos
 
Webinar: Porque o RTOS não faz o que eu quero?
Webinar: Porque o RTOS não faz o que eu quero?Webinar: Porque o RTOS não faz o que eu quero?
Webinar: Porque o RTOS não faz o que eu quero?Embarcados
 
TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
TechEd 2010: SQL Server com Foco em Diagnóstico de DesempenhoTechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
TechEd 2010: SQL Server com Foco em Diagnóstico de DesempenhoFabrício Catae
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosRodrigo Almeida
 
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Cláudio Alves
 
Microcontroladores pic ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicampFrancisco Fambrini
 
Virtualização de Banco de Dados por Bruno Domingues
Virtualização de Banco de Dados por Bruno DominguesVirtualização de Banco de Dados por Bruno Domingues
Virtualização de Banco de Dados por Bruno DominguesJoao Galdino Mello de Souza
 
Julio Silvello - Tms320 C55 X
Julio Silvello -  Tms320 C55 XJulio Silvello -  Tms320 C55 X
Julio Silvello - Tms320 C55 Xjsilvello
 
Isolamento e mvcc
Isolamento e mvccIsolamento e mvcc
Isolamento e mvccLocaweb
 
Apostila de montagem e manutenção de computadores emi mario gurgel
Apostila de montagem e manutenção de computadores emi mario gurgelApostila de montagem e manutenção de computadores emi mario gurgel
Apostila de montagem e manutenção de computadores emi mario gurgelPablo Mariano
 
Frequency Meter using Microchip PIC16F877A SPI to Arduino Virtual COM to PC
Frequency Meter using Microchip PIC16F877A SPI to Arduino Virtual COM to PCFrequency Meter using Microchip PIC16F877A SPI to Arduino Virtual COM to PC
Frequency Meter using Microchip PIC16F877A SPI to Arduino Virtual COM to PCPaulo Duarte
 
Curso CAT3D 2015 - Resumo das noviades entre 2014 e 2015
Curso CAT3D 2015 - Resumo das noviades entre 2014 e 2015Curso CAT3D 2015 - Resumo das noviades entre 2014 e 2015
Curso CAT3D 2015 - Resumo das noviades entre 2014 e 2015Armando Alaminos Bouza
 
Hierarquia dos Processadores da Intel.pptx
Hierarquia dos Processadores da Intel.pptxHierarquia dos Processadores da Intel.pptx
Hierarquia dos Processadores da Intel.pptxOsvaldoJooNhabete
 

Semelhante a Comunidades Virtuais (20)

Desempenho e Escalabilidade de Banco de Dados em ambiente x86
Desempenho e Escalabilidade de Banco de Dados em ambiente x86Desempenho e Escalabilidade de Banco de Dados em ambiente x86
Desempenho e Escalabilidade de Banco de Dados em ambiente x86
 
MIPS Pipeline
MIPS Pipeline MIPS Pipeline
MIPS Pipeline
 
Webinar: Porque o RTOS não faz o que eu quero?
Webinar: Porque o RTOS não faz o que eu quero?Webinar: Porque o RTOS não faz o que eu quero?
Webinar: Porque o RTOS não faz o que eu quero?
 
Miniseminario fetch size
Miniseminario fetch sizeMiniseminario fetch size
Miniseminario fetch size
 
TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
TechEd 2010: SQL Server com Foco em Diagnóstico de DesempenhoTechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
TechEd 2010: SQL Server com Foco em Diagnóstico de Desempenho
 
Arq orgcom (1)
Arq orgcom (1)Arq orgcom (1)
Arq orgcom (1)
 
ArqOrgCom.ppt
ArqOrgCom.pptArqOrgCom.ppt
ArqOrgCom.ppt
 
Desenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcadosDesenvolvimento de drivers para sistemas embarcados
Desenvolvimento de drivers para sistemas embarcados
 
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
 
Microcontroladores pic ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicamp
 
Aulavoxnotebooks
AulavoxnotebooksAulavoxnotebooks
Aulavoxnotebooks
 
Virtualização de Banco de Dados por Bruno Domingues
Virtualização de Banco de Dados por Bruno DominguesVirtualização de Banco de Dados por Bruno Domingues
Virtualização de Banco de Dados por Bruno Domingues
 
Julio Silvello - Tms320 C55 X
Julio Silvello -  Tms320 C55 XJulio Silvello -  Tms320 C55 X
Julio Silvello - Tms320 C55 X
 
Isolamento e mvcc
Isolamento e mvccIsolamento e mvcc
Isolamento e mvcc
 
Apostila de montagem e manutenção de computadores emi mario gurgel
Apostila de montagem e manutenção de computadores emi mario gurgelApostila de montagem e manutenção de computadores emi mario gurgel
Apostila de montagem e manutenção de computadores emi mario gurgel
 
Frequency Meter using Microchip PIC16F877A SPI to Arduino Virtual COM to PC
Frequency Meter using Microchip PIC16F877A SPI to Arduino Virtual COM to PCFrequency Meter using Microchip PIC16F877A SPI to Arduino Virtual COM to PC
Frequency Meter using Microchip PIC16F877A SPI to Arduino Virtual COM to PC
 
Curso CAT3D 2015 - Resumo das noviades entre 2014 e 2015
Curso CAT3D 2015 - Resumo das noviades entre 2014 e 2015Curso CAT3D 2015 - Resumo das noviades entre 2014 e 2015
Curso CAT3D 2015 - Resumo das noviades entre 2014 e 2015
 
Hierarquia dos Processadores da Intel.pptx
Hierarquia dos Processadores da Intel.pptxHierarquia dos Processadores da Intel.pptx
Hierarquia dos Processadores da Intel.pptx
 
Quantas Instruções por Ciclo?
Quantas Instruções por Ciclo?Quantas Instruções por Ciclo?
Quantas Instruções por Ciclo?
 
Pro2 07p
Pro2 07pPro2 07p
Pro2 07p
 

Comunidades Virtuais

  • 1. MC542 7.1 2007 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br www.ic.unicamp.br/~ducatte MC542 Organização de Computadores Teoria e Prática
  • 2. MC542 7.2 MC542 Arquitetura de Computadores Micro-Arquitetura Pipeline Exceções “DDCA” - (Capítulo 7) “COD” - (Capítulo #)
  • 3. 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
  • 4. 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)
  • 6. 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
  • 7. 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.
  • 8. 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
  • 9. MC542 7.9 Exceções: passos 1 e 2 SignImm CLK A RD Instr / Data Memory A1 A3 WD3 RD2 RD1 WE3 A2 CLK Sign Extend Register File 0 1 0 1PC 0 1 PC' Instr 25:21 20:16 15:0 SrcB20:16 15:11 <<2 ALUResult SrcA ALUOut RegDst BranchMemWrite MemtoReg ALUSrcARegWrite Zero PCSrc1:0 CLK ALUControl2:0 ALU WD WE CLK Adr 0 1 Data 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 0x28 EPC Cause 1. O Processador salva a causa e o PC em Cause e EPC 2. Processador desvia para 0x80000180
  • 10. 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
  • 11. MC542 7.11 Exceções: passo 3 (mfc0) SignImm CLK A RD Instr / Data Memory A1 A3 WD3 RD2 RD1 WE3 A2 CLK Sign Extend Register File 0 1 0 1PC 0 1 PC' Instr 25: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 00 01 Data CLK CLK A B 00 01 10 11 4 CLK ENEN ALUSrcB1:0 IRWriteIorD PCWrite PCEn <<2 25:0 (jump) 31:28 27:0 PCJump 00 01 10 11 0x80000180 CLK EN EPCWrite CLK EN CauseWrite 0 1 IntCause 0x30 0x28 EPC Cause Overflow ... 01101 01110 ... 15:11 10 C0
  • 12. MC542 7.12 Exceções: FSM de Controle IorD = 0 AluSrcA = 0 ALUSrcB = 01 ALUOp = 00 PCSrc = 00 IRWrite PCWrite ALUSrcA = 0 ALUSrcB = 11 ALUOp = 00 ALUSrcA = 1 ALUSrcB = 10 ALUOp = 00 IorD = 1 RegDst = 1 MemtoReg = 00 RegWrite IorD = 1 MemWrite ALUSrcA = 1 ALUSrcB = 00 ALUOp = 10 ALUSrcA = 1 ALUSrcB = 00 ALUOp = 01 PCSrc = 01 Branch Reset S0: Fetch S2: MemAdr S1: Decode S3: MemRead S5: MemWrite S6: Execute S7: ALU Writeback S8: Branch Op = LW or Op = SW Op = R-type Op = BEQ Op = LW Op = SW RegDst = 0 MemtoReg = 01 RegWrite S4: Mem Writeback ALUSrcA = 1 ALUSrcB = 10 ALUOp = 00 RegDst = 0 MemtoReg = 00 RegWrite Op = ADDI S9: ADDI Execute S10: ADDI Writeback PCSrc = 10 PCWrite Op = J S11: Jump Overflow Overflow S13: Overflow PCSrc = 11 PCWrite IntCause = 0 CauseWrite EPCWrite Op = others PCSrc = 11 PCWrite IntCause = 1 CauseWrite EPCWrite S12: Undefined RegDst = 0 Memtoreg = 10 RegWrite Op = mfc0 S14: MFC0
  • 13. MC542 7.13 Micro-Arquiteturas Avançadas • Deep Pipelining • Branch Prediction • Superscalar Processors • Out of Order Processors • Register Renaming • SIMD • Multithreading • Multiprocessors
  • 14. MC542 7.14 Deep Pipelining • Tipicamente 10 a 20 estágios • O Número de estágios é limitado por: – Pipeline hazards – Sequencing overhead – Cost
  • 15. 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
  • 16. 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:
  • 17. 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, 10 Beq $t0, $t0, 0xfff00002 Add $s1, $s1, $s0 0xaaa00028 Branch History Table
  • 18. 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
  • 19. 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
  • 20. MC542 7.20 Branch Predictor Vários outros esquemas: • Correlating Branches • Execução Predicada • Tournament Predictors • Branch Target Buffer (BTB) • Return Addresses stack
  • 21. 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 A RD A1 A2 RD1A3 WD3 WD6 A4 A5 A6 RD4 RD2 RD5 Instruction Memory Register File Data Memory ALUs PC CLK A1 A2 WD1 WD2 RD1 RD2
  • 22. MC542 7.22 Superscalar: Exemplo lw $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) Time (cycles) 1 2 3 4 5 6 7 8 RF 40 $s0 RF $t0 + DM IM 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 - DM IM sub and $t3 $s4 $s3 & RF $s5 $s1 RF $t4 | DM IM or sw 80 $s0 + $s5
  • 23. MC542 7.23 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) Stall Time (cycles) 1 2 3 4 5 6 7 8 RF 40 $s0 RF $t0 + DM IM lw lw $t0, 40($s0) add $t1, $t0, $s1 sub $t0, $s2, $s3 and $t2, $s4, $t0 sw $s7, 80($t3) RF $s1 $t0 add RF $s1 $t0 RF $t1 + DM RF $t0 $s4 RF $t2 & DM IM and IM or and sub |$s6 $s5 $t3 RF 80 $t3 RF + DM sw IM $s7 9 $s3 $s2 $s3 $s2 - $t0 or or $t3, $s5, $s6 IM
  • 24. 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)
  • 25. 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
  • 26. MC542 7.26 Processador Out of Order: Exemplo lw $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 RF 40 $s0 RF $t0 + DM IM lw lw $t0, 40($s0) add $t1, $t0, $s1 sub $t0, $s2, $s3 and $t2, $s4, $t0 sw $s7, 80($t3) or |$s6 $s5 $t3 RF 80 $t3 RF + DM sw $s7 or $t3, $s5, $s6 IM RF $s1 $t0 RF $t1 + DM IM add sub -$s3 $s2 $t0 two cycle latency between load and use of $t0 RAW WAR RAW RF $t0 $s4 RF & DM and IM $t2 RAW
  • 27. MC542 7.27 Register Renaming Time (cycles) 1 2 3 4 5 6 7 RF 40 $s0 RF $t0 + DM IM lw lw $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 + DM IM 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: 2 and $t2, $s4, $t0 IPC: 6/3 = 2 or $t3, $s5, $s6 sw $s7, 80($t3)
  • 28. MC542 7.28 Algoritmo de Tomasulo Exemplo • 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
  • 29. MC542 7.29 Scheduling Dinâmico Implementação - MIPS IFIF IDID MEM WB EXEX Inteira A1 A1 A2 A2 A3 A3 DIV M1 M1 M2 M2 M3 M3 M4 M4 M5 M5 M6 M6 M7 M7 A4 A4
  • 30. MC542 7.30 Estrutura Básica de uma Implementação do Algoritmo de Tomasulo (para o MIPS) FP addersFP adders Add1 Add2 Add3 FP multipliersFP multipliers Mult1 Mult2 From Mem FP Registers Reservation Stations Common Data Bus (CDB) To Mem FP Op Queue Load Buffers Store Buffers Load1 Load2 Load3 Load4 Load5 Load6
  • 31. MC542 7.31 Reservation Station Busy Op Vj Vk Qj Qk A Valores a serem calculados 0 – já foi calculado ou não usado Valores já conhecidos Operação 0/1 Load/Store Imediato/Endereço Efetivo OBS.: Register File Qi = N0. RS OBS.: Terminologia do Screboard Do CDC (ver apêndice A)
  • 32. 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.
  • 33. 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)
  • 34. 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
  • 35. 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 +
  • 36. MC542 7.36 Técnicas Avançadas • Multithreading – Wordprocessor: thread para typing, spell checking, printing • Multiprocessors – Múltiplos processadores (cores) em um único chip
  • 37. 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, …)
  • 38. 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
  • 39. 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
  • 40. 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)

Notas do Editor

  1. Review today, not so fast in future
  2. Review today, not so fast in future
  3. Resolve RAW memory conflict? (address in memory buffers) Integer unit executes in parallel