Conceitos Avançados de Arquitetura de Computadores Arquiteturas RISC Arquiteturas Superpipeline e Superescalares
Melhorando a performance Como melhorar a performance de máquinas implementadas como pipeline? Aumentar o número de estágios do pipeline Superpipeline Replicar recursos para executar instruções em paralelo Superescalar
Melhorando a performance pipeline superpipeline superescalar
Melhorando a performance Superpipeline Limitações no tamanho do pipeline: 1) Hazards de dados: pipeline maior => mais paradas 2) Hazards de controle: pipeline maior => saltos mais lentos 3) Tempo dos registradores do pipeline: Limita o tempo mínimo por estágio (clock)
Melhorando a performance Superpipeline Número de Estágios X Aumento de performance 3 . 2 . 5 2 . Performance relativa 1 . 5 1 . . 5 . 1 2 4 8 1 6 Número de estágios
Processador superescalar Execução simultânea de instruções: aritméticas, loads, stores, etc Aplicável a máquinas RISC e CISC RISC: melhor uso efetivo CISC: implementação mais difícil
Processador Superescalar Busca e Decodificação Despacho: Em ordem Unidade de Reserva Unidade de Reserva Unidade de Reserva Unidade de Reserva Inteiro Inteiro Ponto Flutua. Load Store Execução: Fora de ordem Escrita: 1) Em ordem 2) Fora de ordem Escrita de Resultados
Processador Superescalar
Superescalar: Revisando Dependências de Dados - Dependência Verdadeira: Read-after-Write (RAW) - Dependência de Saída: Write-after-Write (WAW) - Antidependência: Write-after-Read (WAR)
Superescalar: Dependências WAR e WAW As CPUs comuns não apresentam estas dependências porque apenas um estágio do pipeline altera o estado da máquina (os registradores) na ordem em que as instruções são iniciadas.
Processador Superescalar
Superescalar: Dependências de Dados r3:= r0 + r5 (I1) r4:= r3 + 1 (I2) r3:= r5 + 1 (I3) r7:= r3 - r4 (I4) Dependência Verdadeira: (RAW) I2 e I1, I4 e I3, I4 e I2 Antidependência: (WAR) I3 não pode terminar antes de I2 iniciar Dependências de Saída: (WAW) I3 não pode terminar antes de I1
Dependências de Dados WAR e WAW: Como tratá-las 1) Inserir NOPs ou bolhas (igual RAW) 2) Inserir instruções independentes (igual RAW) 3) Renomeação de registradores
Superescalar: Renomeação de Registradores r3 := r3 + r5 r3b:= r3a + r5a r4:= r3 + 1 r4b:= r3b + 1 r3:= r5 +1 r3c:= r5a + 1 r7:= r3 - r4 r7a:= r3c - r4b Unidade de renomeação Regs Físicos Virtuais
VLIW (EPIC) Very Long Instruction Word O compilador descobre as instruções que podem ser executadas em paralelo e agrupa-as formando uma longa instrução que será despachada para a máquina
detecção de paralelismo Superescalar x VLIW detecção de paralelismo hardware compilador tempo disponível para realizar a detecção pouco muito relógio mais lento mais rápido arquitetura CISC RISC
Crusoe: www.transmeta.com Projetado para sistemas portáteis: Gerenciamento eficiente da potência (LongRun Power Management) Fornece o necessário de poder computacional Code Morphing Technology Compatibilidade com x86 Máquina VLIW
Crusoe LongRun Power Management Controle da Frequência e voltagem Potência=(Capacitância x Frequência x Voltagem2) /2
Crusoe Code Morphing Technology
Crusoe Code Morphing Technology Código do Code Morphing fica em ROM na CPU (inacessível para instruções x86) Traduz dinamicamente (interpreta) instruções x86 para VLIW do µP Acumula estatísticas de uso de sequências de instruções Traduz as sequências mais usadas para
Executa instruções x86 por meio de interpretador Crusoe Interpretador Executa instruções x86 por meio de interpretador
Crusoe Tradução on-the-fly Executa um misto de sequências previamente traduzidas e não-traduzidas
Crusoe Usando código traduzido Executa código previamente traduzido
CPUs com pipeline 8086 2 estágios 68000 3 estágios 286 4 estágios Alpha 21264 9 estágios 6 inst/clk out-of-order exec. 600MHz (1997) 15 milhões trans.
Power Pc 601
Pentium