Processador Intel Itanium. Visão Geral Caracteristicas Arquitetura EPIC - Explicit Parallel...
Transcript of Processador Intel Itanium. Visão Geral Caracteristicas Arquitetura EPIC - Explicit Parallel...
Processador Intel Itanium
Visão Geral
Visão Geral
Caracteristicas
• Arquitetura EPIC
- Explicit Parallel Instruction-Set Computer
• Processador de 64 bits
• Predication
• Execução Especulativa de Dados e Instruções
• Prediction
• ILP (Instruction Level Parallelism)
- Pacotes de Instruções (Bundles)
Registradores
• Muitos registradores
• Propósito geral: 128 de 64 bits
• Ponto flutuante: 128 de 82 bits
• Registradores de predicado: 64 de 1 bit
• Registradores de branch: 8 de 64 bits
• RSE: Register Stack Engine
• Salvamento automático de determinados registradores
• Permite compartilhamento com outras funções
Diagrama de blocos do processador
Diagrama de blocos
• Processamento de instruções
• Prefetch, fetch, cache L1, branch prediction, geração de endereçamento, buffer de instruções, despacho de instruções, register renaming
• Execução
• Controle
• Alimentador de exceções, pipeline, SER
• Subsistema de memória
• Cache L2, Cache L3, TLB, ALAT, PIC
Sistema de memória
• Endereça 2^128 bytes!
Sistema de memória
• Cache L1: possui 2 unidades (1 para dados e a outra para instruções) de 16K cada
• Cache L2: unificada (armazena dados e intruções)
• Cache L3: idem à L2
Cache L1
• L1I e L1D
• 4-way set-associative
• fisicamente indexadas
• para L1D: política de write through
Cache L2
• Unificada
• 256 KB de espaço
• 8-way set-associative
• Linhas de cache com 128 bits
• Implementa o Write back
Cache L3
• Unificada
• Tamanho variável: 1,5 MB até 3,0MB
• 12-way set-associative
• Linhas de cache de 128 bits
Sistema de memória
• Advanced Load Address Table (ALAT)• Permite data speculation
• Translation Lookaside Buffers (TLB)• Mapeamento entre endereços virtuais e físicos• DTLB e ITLB• DTLB L1 e DTBL L2
• L1 gerencia Loads e acertos na Cache L1D• L2 gerencia Stores e acertos nas Caches L2 e L3
•Write Coalescing
Pipeline
• O pipeline do processador Itanium possui dez estágios:
Pipeline
Nos 3 primeiros estágios ocorrem:
• Prefetch de instruções
• Fetch de 32 bytes em 1 ciclo de clock
Pipeline
• Brach Prediction
• O Itanium provê instruções para o fornecimento de branch hints
• Há também estruturas dentro do processador para esta função
Pipeline
No quarto estágio do pipeline ocorre:
• Despacho de até 6 instruções para 9 portas de emissão.
• Bits de controle tipo Stop eliminam checagem de dependências
Pipeline
No quinto estágio do pipeline ocorre:
• Register Renaming
• Transparente para o compilador
• Evita empilhar/desempilhar parâmetros
Pipeline
No sexto e sétimo estágios do pipeline ocorrem:• Busca de operandos • "Delayed Stall" para dependências de registradores, o qual ajuda a evitar o esvaziamento do pipeline. • Operand Latch Manipulation (OLM) captura retorno de dados dos operandos em latches, a fim de simular leitura de registradores.
Pipeline
No oitavo estágio do pipeline ocorre:• Resolução de predicados e cancelamento de execução de instruções cujo bit indicador de predicado tenha sido desligado. • Todas as instruções cujo bit indicador de predicado ainda permaneça ligado, têm operandos lidos e executam na unidade funcional correspondente.
Nos nono e décimo estágios do pipeline ocorrem:
• Execução de branches em paralelo, sendo que a especulação e
predição dos branches resultam em clusters de branches.
Pipeline
• A execução de três branches por clock é realizada de forma otimizada para clusters de branches, permitindo compares/branches no mesmo grupo de emissão.
Pipeline
Tipos de instruções
• 6 tipos diferentes
• Cada um pode ser executado por 1 ou mais unidades de execução
• Cada formato possui diversas codificações diferentes
• OBS: instruções tem um formato fixo!!!
Tipos de instruções
• Lógica de execução
• 2 pacotes são lidos pelo processador por ciclo
• Cada pacote contém 3 instruções
• Instruções não utilizadas são gravadas em um buffer
• Pacote:
• cada instrução tem 41 bits
• 5 bits são utilizados como template, indicando a unidade de execução
Instrução
• Formato: [qp] opcode[.complementos] destino=fonte[,fonte]
• Paralelismo: o Itanium exige que o código assembly esteja separado em unidades independentes
•Especulação
• Exceções e resultados gerados em código que não deveria ser executado são descartadas
Performance?...
• Performance ainda ruim...
• falta um compilador bom
• problemas arquiteturais e de implementação
• Muito bom para muitas coisas ao mesmo tempo, mas ‘lento’ em cada uma delas.