A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

MC542 Organização de Computadores Teoria e Prática

Apresentações semelhantes


Apresentação em tema: "MC542 Organização de Computadores Teoria e Prática"— Transcrição da apresentação:

1 MC542 Organização de Computadores Teoria e Prática
2007 Prof. Paulo Cesar Centoducatte Review today, not so fast in future

2 MC542 Arquitetura de Computadores Exceções Micro-Arquitetura Avançadas
“DDCA” - (Capítulo 7) “COD” - (Capítulo #) Review today, not so fast in future

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 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): Registra a causa da exceção (Cause register) Salta para a rotina de tratamento da exceção no endereço de instrução 0x Retorna ao programa (EPC register)

5 Exemplo de Exceções

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 Causa de Exceções Exception Cause Hardware Interrupt 0x System Call 0x Breakpoint / Divide by 0 0x Undefined Instruction 0x Arithmetic Overflow 0x Modificar o MIPS multiciclos para tratar as duas últimas exceções.

8 O Processador salva a causa e o PC em Cause e EPC
Processador desvia para o exception handler (0x ) 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 Exceções: passos 1 e 2 O Processador salva a causa e o PC em Cause e EPC Processador desvia para 0x SignImm CLK A RD Instr / Data Memory A1 A3 WD3 RD2 RD1 WE3 A2 Sign Extend Register File 1 PC PC' Instr 25:21 20:16 15:0 SrcB 15:11 <<2 ALUResult SrcA ALUOut RegDst Branch MemWrite MemtoReg ALUSrcA RegWrite Zero PCSrc 1:0 ALUControl 2:0 ALU WD WE Adr Data B 00 01 10 11 4 EN ALUSrcB IRWrite IorD PCWrite PCEn 25:0 (jump) 31:28 27:0 PCJump 0x Overflow EPCWrite CauseWrite IntCause 0x30 0x28 EPC Cause

10 Exceções: passo 3 (mfc0) mfc0 $t0, Cause Exception handler

11 Exceções: passo 3 (mfc0)

12 Exceções: FSM de Controle

13 Micro-Arquiteturas Avançadas
Deep Pipelining Branch Prediction Superscalar Processors Out of Order Processors Register Renaming SIMD Multithreading Multiprocessors

14 Deep Pipelining Tipicamente 10 a 20 estágios
O Número de estágios é limitado por: Pipeline hazards Sequencing overhead Cost

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 Branch Prediction: Exemplo
add $s1, $0, $ # sum = 0 add $s0, $0, $ # i = 0 addi $t0, $0, # $t0 = 10 for: beq $t0, $t0, done # if i == 10, branch add $s1, $s1, $s0 # sum = sum + i addi $s0, $s0, # increment i j for …… done:

17 1-Bit Branch Predictor Addi $t0, $s0, 10 Beq $t0, $t0, 0xfff00002
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) A B C D E F Branch History Table 1 Addi $t0, $s0, 10 Beq $t0, $t0, 0xfff00002 Add $s1, $s1, $s0 0xaaa00028

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 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 NT Predict Taken Predict Not Taken

20 Branch Predictor Vários outros esquemas: Correlating Branches
Execução Predicada Tournament Predictors Branch Target Buffer (BTB) Return Addresses stack

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

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)

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)

24 Processador Out of Order
Avaliar múltiplas instruções para despachar o máximo possí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 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

25 Processador Out of Order
Instruction level parallelism: número de instruções que podem ser despachadas simultaneamente Scoreboard: tabela que mantém: Instruções esperando para serem despachadas e executadas Unidades funcionais disponíveis Dependências Tomasulo: Register Rename

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)

27 Register Renaming 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 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 Scheduling Dinâmico Implementação - MIPS
IF ID MEM WB EX Inteira A1 A2 A3 DIV M1 M2 M3 M4 M5 M6 M7 A4

30 Estrutura Básica de uma Implementação do Algoritmo de Tomasulo (para o MIPS)
FP Registers From Mem FP Op Queue Load Buffers Load1 Load2 Load3 Load4 Load5 Load6 Store Buffers Add1 Add2 Add3 Mult1 Mult2 Resolve RAW memory conflict? (address in memory buffers) Integer unit executes in parallel Reservation Stations To Mem FP adders FP multipliers Common Data Bus (CDB)

31 Imediato/Endereço Efetivo
Reservation Station Load/Store Imediato/Endereço Efetivo Busy Op Vj Vk Qj Qk A 0/1 Valores a serem calculados 0 – já foi calculado ou não usado Operação Valores já conhecidos OBS.: Register File Qi = N0. RS OBS.: Terminologia do Screboard Do CDC (ver apêndice A)

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 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

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 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 a 7 8 15 16 23 24 32 Bit position $s0 1 2 3 b $s1 + b $s2 +

36 Técnicas Avançadas Multithreading Multiprocessors
Wordprocessor: thread para typing, spell checking, printing Multiprocessors Múltiplos processadores (cores) em um único chip

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 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 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 Outras Fontes para Leitura
Patterson & Hennessy’s: Computer Architecture: A Quantitative Approach 3ª e 4ª Edições Conferências: ISCA (International Symposium on Computer Architecture) HPCA (International Symposium on High Performance Computer Architecture)


Carregar ppt "MC542 Organização de Computadores Teoria e Prática"

Apresentações semelhantes


Anúncios Google