1 / 50

Arquitetura IA32

Arquitetura IA32. Eduardo Augusto Bezerra <Eduardo.Bezerra@pucrs.br>. Resumo. Historico da arquitetura IA32 Avancos na arquitetura Tecnologia hyper pipeline Arquitetura IA32. Historico da Arquitetura IA32. 1978 – 16 bits e Segmentacao

kina
Télécharger la présentation

Arquitetura IA32

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Arquitetura IA32 Eduardo Augusto Bezerra <Eduardo.Bezerra@pucrs.br> Arquitetura IA32, Porto Alegre, Outubro de 2006

  2. Resumo • Historico da arquitetura IA32 • Avancos na arquitetura • Tecnologia hyper pipeline • Arquitetura IA32 Arquitetura IA32, Porto Alegre, Outubro de 2006

  3. Historico da Arquitetura IA32 • 1978 – 16 bits e Segmentacao • 8086 e 8088 sao os processadores de 16 bits antecessores a IA32 • 8086, regs 16 bits, data bus 16 bits, address 20 bits => 1 MBytes • 8088, data bus 8 bits • Segmentacao – regs de segmento de 16 bits contem ponteiro para • segmento de memoria de ate’ 64KB. Com 4 regs de segmento ao • mesmo tempo, 8086/8088 enderecam 256KB sem chavear segmentos. Arquitetura IA32, Porto Alegre, Outubro de 2006

  4. Historico da Arquitetura IA32 • 1982 – Intel 286 – introduz modo protegido ao IA32 • Modo protegido: facilidades para multi-tarefa. Ex. Protecao memoria, • paginacao, suporte em HW para gerencia de memoria virtual. SOs tais • como Linux e Windows rodam em modo protegido. • Modo real: desabilita protecoes para permitir compatibilidade com • sw legado rodando em modo DOS. CPUs x86 iniciam em modo real, • ate’ serem chaveadas para modo protegido pelo SO no boot. • Modo real, regs de segmento na manipulacao memoria segmentada, • conteudo dos regs formam parte do endereco fisico. • Modo protegido, memoria segmentada definida por “Descriptor Tables” • Regs de segmento sao ponteiros para essas tabelas, nao sendo parte do • endereco fisico. Descriptors = end. 24 bits = 16MB mem. fisica. Arquitetura IA32, Porto Alegre, Outubro de 2006

  5. Historico da Arquitetura IA32 • 1985 – Intel 386 – primeiro proc. 32 bits da familia IA32 • Regs 32 bits para operandos e enderecamento. • Modo virtual 8086 para execucao eficiente de programas legados. • Barramento endereco 32 bits: mem. fisica 4GBytes. • Paginacao com tamanho de pagina de 4 KB, com metodo para • gerencia de memoria virtual. • Suporte para estagios paralelos. Arquitetura IA32, Porto Alegre, Outubro de 2006

  6. Historico da Arquitetura IA32 • 1989 – Intel 486 • Pipeline com 5 estagios operando 5 instrucoes em paralelo. • Cache L1 de 8 KB para aumentar % instrucoes executadas – • Objetivo: 1 instrucao por ciclo. • FPU x87 integrada. • Facilidade para gerencia do sistema e economia de energia. Arquitetura IA32, Porto Alegre, Outubro de 2006

  7. Historico da Arquitetura IA32 • 1993 – Intel Pentium • Segundo pipeline (arq. superescalar) para execucao de 2 instr/ciclo. • L1 cache duplicada – 8 KB dados e 8 KB instrucoes. • Predicao de desvio com tabela de desvio on-chip. • Data pahs internos de 128 e 256 bits. • Barramento de dados externo de 64 bits. • Suporte a sistemas multiprocessados – Modo dual processor. • Intel MMX: Modelo execucao SIMD (regs. SIMD de 64 bits). Arquitetura IA32, Porto Alegre, Outubro de 2006

  8. Historico da Arquitetura IA32 • 1995 – 1999 Processadores P6 • Pentium Pro: superscalar 3-way; decodif./exec. de 3 instr./ciclo. Execucao dinamica: micro-data flow analysis, execucao fora de ordem, predicao de desvio avancada, execucao especulativa. Da mesma forma como no Pentium, 2 x 8 KB cache L1 (instr. e dados). Adicional cache L2 256 KB. • Pentium II: Tecnologia MMX. Cache L1 e L2 de 16 KB, e L2 de 256 KB, 512 KB, ou 1 MB. • Pentium II Xeon: L2 cache 2 MB. • Celeron: Encapsulamento PPGA para reducao de custo. • Pentium III: SSE SIMD Extensions do MMX – regs. de 128 bits p/ instr. SIMD. • Pentium III Xeon: Advanced transfer cache. Arquitetura IA32, Porto Alegre, Outubro de 2006

  9. Historico da Arquitetura IA32 • 2000 – atualidade Pentium 4, 3.40 GHz • Intel NetBurst microarchitecture • Streaming SIMD Extensions 2 (SSE2). • Hyper-Threading SSE3. • Extended Memory 64 – Pentium 4 Extreme Edition. Arquitetura IA32, Porto Alegre, Outubro de 2006

  10. Historico da Arquitetura IA32 • 2001 – atualidade, Intel Xeon • Intel NetBurst microarchitecture • Servidores multi-processados • Hyper-Threading • 64-bit Xeon 3.60 GHz – Tecnologia extended memory 64. • Dual-Core Xeon Arquitetura IA32, Porto Alegre, Outubro de 2006

  11. Historico da Arquitetura IA32 • 2003 – atualidade, Intel Pentium M • Mobile low power • Execucao dinamica – remove dependencia de execucao sequencial, • pela combinacao de tecnicas: • Multiple branch prediction – Tenta adivinhar o fluxo do programa gerando os diversos • possiveis caminhos • Dataflow analysis – Escalona instrucoes para execucao quando prontas, sem levar • em consideracao a ordem no programa • Speculative execution – Executa instrucoes que provavelmente serao necessarias, • olhando alem do IP • Out of order execution • Super scalar • Cache L1: 32 KB instr. 32 KB dados; Cache L2 ate’ 2 MB • MMX, SIMD, e conj. instrucoes SSE2 Arquitetura IA32, Porto Alegre, Outubro de 2006

  12. Historico da Arquitetura IA32 • 2005 – atualidade, Intel Pentium Processor Extreme Edition • Tecnologia dual-core • HW para suporte multi-thread • Intel NetBurst microarchitecture • SSE, SSE2, SSE3 • Hyper-threading • Tecnologia Intel Extended Memory 64 Arquitetura IA32, Porto Alegre, Outubro de 2006

  13. Historico da Arquitetura IA32 • 2006 – atualidade, Intel Core Duo e Core Solo • Tecnologia dual-core com low power • Smart cache para compartilhamento eficiente entre dois cores • Decodificacao melhorada e execucao SIMD • Dynamic power e “deeper sleep” • Interfaces para sensores temperatura digitais – gerencia de temperatura Arquitetura IA32, Porto Alegre, Outubro de 2006

  14. Avancos na Arquitetura • Microarquitetura P6: • Pipeline do tipo “Three-way” super escalar - decodifica e executa em media tres instrucoes por ciclo • 3 “super-pipelines” com 12 estagios com suporte para execucao fora de ordem. Arquitetura IA32, Porto Alegre, Outubro de 2006

  15. Avancos na Arquitetura Microarquitetura P6 – Advanced Transfer Cache Arquitetura IA32, Porto Alegre, Outubro de 2006

  16. Avancos na Arquitetura • Microarquitetura P6 – Principal: unidade exec. fora de ordem. • Alcancado com mecanismo de “execucao dinamica”. Composto por: • Deep branch prediction – processador decodifica instrucoes adiante dos desvios, mantendo pipe cheio. Algoritmos avancados de predicao de salto para prever a direcao do fluxo de execucao. • Analise dinamica do fluxo de dados – Analise em tempo real do fluxo de dados p/ determinar dependencias (hazards), e p/ detectar chances p/ execucao fora de ordem. Essa unidade monitora diversas instrucoes, e executa-as na ordem que melhor otimizara’ o uso das diversas unidades de execucao, mantendo a integridade dos dados. • Execucao especulativa – habilidade para executar instrucoes alem Arquitetura IA32, Porto Alegre, Outubro de 2006

  17. Avancos na Arquitetura • Microarquitetura P6 – Principal: unidade exec. fora de ordem. • Execucao especulativa (cont.) – habilidade para executar instrucoes alem de um desvio condicional, que ainda nao foi resolvido, e para gerar os resultados na ordem correta do fluxo de instrucoes original de um programa. • Para exec. especulativa e’ necessario desacoplar a execucao das instrucoes do comprometimento (geracao) dos resultados (write back). A unidade de exec. fora de ordem usa uma analise do fluxo de dados para executar todas as instrucoes disponiveis (pre-fetched) em um reservatorio, e armazena resultados em regs. temporarios. • Unidade aposentadoria (retirement) busca linearmente no reservatorio por instrucoes completadas que nao possuem mais dependencias de dados ou previsao de desvio nao-resolvida. Quando instrucoes completadas sao encontradas, unidade de aposentadoria grava esses resultados na memoria e/ou registradores do processador, na ordem em que foram geradas inicialmente, aposentando as instrucoes que estavam no reservatorio. Arquitetura IA32, Porto Alegre, Outubro de 2006

  18. Avancos na Arquitetura • Microarquitetura Intel NetBurst • Mecanismo de execucao rapida • ULAs com velocidade duas vezes maior que a freq. do processador • Operacoes basicas com inteiros em 1/2 ciclo de clock • Maior throughput com latencia de execucao reduzida • Tecnologia hyper-pipelined • Deep pipeline • Escalabilidade • Execucao dinamica avancada • Mecanismo de execucao especulativa em profundidade, e fora de ordem • ate’ 126 instr. em execucao; ate’ 48 loads e 24 stores no pipe • Capacidade avancada para previsao de desvios • Reduz atrasos por erros na previsao; algoritmo avancado para predicao de desvio; array com destinos de desvio de 4 K posicoes. Arquitetura IA32, Porto Alegre, Outubro de 2006

  19. Avancos na Arquitetura • Microarquitetura Intel NetBurst pipeline • 3 modulos: pipeline front-end, modulo exec. fora de ordem; unidade de aposentadoria • pipeline front-end: • Alimenta unidade de exec. fora de ordem com instrucoes na ordem em que ocorrem no programa • pre-busca instr. IA32 que devem vir a ser executadas • busca instr. que ainda nao foram buscados na pre-busca • decodifica instr. IA32 em micro-operacoes • gera microcodigo para instr. Complexas • fornece instr. decodificadas para cache de execucao • preve desvios usando algoritmos avancados Arquitetura IA32, Porto Alegre, Outubro de 2006

  20. Avancos na Arquitetura • Microarquitetura Intel NetBurst pipeline • pipeline front-end (cont.): • Principais problemas em pipes em geral: tempo para decodificar instr. buscadas; e desperdicio na decodificao devido a instr. de desvio na cache. • A “trace cache” do pipe resolve esses problemas. Instr. sao buscadas e decodificadas todo o tempo pelo mecanismo de traducao (logica de busca/decodificacao), e sequencias de micro operacoes (traces) sao geradas. Arquitetura IA32, Porto Alegre, Outubro de 2006

  21. Avancos na Arquitetura • Microarquitetura Intel NetBurst pipeline • modulo de execucao fora de ordem: • Capacidade para execucao de instrucoes fora da ordem • Se uma uop foi atrasada, outras uops continuam – processador re-ordena • Modulo consegue gerenciar seis uops por ciclo, o que e’ maior que a capacidade da trace cache e da unidade de aposentadoria. Arquitetura IA32, Porto Alegre, Outubro de 2006

  22. Avancos na Arquitetura • Microarquitetura Intel NetBurst pipeline • unidade de aposentadoria (retirement unit): • Recebe resultados de uops executadas, vindos da unidade de exec. fora de ordem. • Processa os resultados de forma que os estados na arquitetura correspondam a ordem do programa original • Quando uma uop completa e escreve o resultado, essa e’ aposentada. • Ate’ 3 uops por ciclo podem ser aposentadas • A unidade “buffer de re-ordenacao” (ROB) armazena uops completadas, atualiza o estado da arquitetura na ordem original, e gerencia a ordem das excessoes. • Essa unidade mantem um registro dos desvios e informa os branch target buffers (BTBs) • Os BTBs eliminam traces pre-buscados que nao sao mais necessarios. Arquitetura IA32, Porto Alegre, Outubro de 2006

  23. Avancos na Arquitetura • Instrucoes SIMD • Instrucoes SIMD apareceram pela primeira vez no Pentium II e Pentium MMX • Quatro extensoes foram introduzidas na arquitetura IA-32 para possibilitar execucao do tipo “single-instruction multiple-data”: MMX, SSE, SSE2, SSE3. • Cada extensao possui um conjunto de instrucoes para realizar operacoes SIMD em dados inteiros e/ou ponto flutuante em registradores MMX de 64 bits ou XMM de 128 bits. • MMX – Pentium II e Pentium MMX, instrucoes para arrays de inteiros – SIMD • SSE – Pentium III, operam com valores inteiros e ponto flutuante precisao simples em regs. XMM. Instrucoes para gerencia de estados, controle de cache, ordenacao de memoria. Aplicacoes de geomeria 3-D, renderizacao 3-D, codificacao/decodificacao de video. • SSE2 – Pentium 4 e Xeon, inteiros em regs MMX e XMM, ponto flutuante precisao dupla em regs. XMM, operacoes com inteiros de 128 bits. • SSE3 - Pentium 4, tecnologia Hyper-Threading, 13 instr. para aumento desempenho. Arquitetura IA32, Porto Alegre, Outubro de 2006

  24. Avancos na Arquitetura Instrucoes SIMD MMX SSE2 / SSE3 SSE Arquitetura IA32, Porto Alegre, Outubro de 2006

  25. Avancos na Arquitetura • Tecnologia Hyper-Threading (HT) • Desenvolvida para melhorar o desempenho de SOs multi-thread, e de aplicacoes executadas em ambiente multi-tarefa. • Possibilita, em hardware, que um unico processador execute duas ou mais threads concorrentemente, compartilhando recursos. • A diferenca entre tecnologia HT e multi-processamento (MP), esta’ no fato de HT utilizar um unico processador, enquanto MP usa mais de um chip em sockets diferentes. • Um processador com suporte HT consiste de 2 ou mais processadores logicos, cada qual com seu proprio estado arquitetural. • Cada processador logico possui um conjunto completo de regs IA-32 de dados, segmento, controle e debug. Possuem tambem controlador de interrupcao proprio. Arquitetura IA32, Porto Alegre, Outubro de 2006

  26. Avancos na Arquitetura Comparacao entre Hyper-Threading (HT) e Multiprocessador Arquitetura IA32, Porto Alegre, Outubro de 2006

  27. Avancos na Arquitetura • Tecnologia Hyper-Threading (HT) • HT precisa suporte a tecnologia a nivel de processador, chipset e BIOS, e otimizacoes no sisitema operacional. • A nivel de BIOS, e’ realizada a inicializacao dos processadores logicos, de forma semelhante ao que ocorre em plataformas MP. • Um SO projetado para rodar em plataformas MP pode usar a instr. CPUID para identificar a presenca de hardware para suporte HT, e o numero de processadores logicos disponibilizados. Arquitetura IA32, Porto Alegre, Outubro de 2006

  28. Avancos na Arquitetura • Tecnologia Multi-core • Outra forma de HT, fornecendo dois ou mais cores fisicos no mesmo chip. • Pentium Extreme Edition: primeiro IA-32 a suportar multi-core, com dois cores + HT com dois processadores logicos em cada core. Total 4 procs. Arquitetura IA32, Porto Alegre, Outubro de 2006

  29. Pentium Pro • Diversas instruções complexas, com tamanhos variando de 1 a 15 bytes • Necessidade de recursos consideráveis de hardware para implementação da lógica de decodificação e execução de instruções • Uma única instrução pode realizar uma ou mais leituras/escritas na memória e uma ou mais operações na ULA • Desafio para execução de mais de uma instrução por ciclo em um hardware super-escalar Arquitetura IA32, Porto Alegre, Outubro de 2006

  30. Pentium Pro • Instruções CISC obtidas da memória (geradas por compilador) são colocadas nas caches L2 e L1 – instruções possuem tamanhos variados • Arquitetura realiza tradução das instruções CISC contidas em L1, decodificando e transformando em instruções RISC de tamanho fixo(micro-operações ou uOPs) • As uOPs são colocadas em reservatório com capacidade para armazenar 40 instruções, onde aguardam para entrar no fluxo de execução • Quando os operandos necessários por uma determinada instrução estiverem disponíveis, e quando a unidade de execução a ser utilizada estiver livre, a instrução é retirada do reservatório e executada – EXECUÇÃO FORA DE ORDEM • Após execução da uOP, os resultados são escritos nos registradores, na ordem original do fluxo do programa • Esse processo é descrito a seguir, onde estágios 1 a 14 são operações do reservatório de uOPs, e do estágio 15 em diante uOPs são executadas Arquitetura IA32, Porto Alegre, Outubro de 2006

  31. Tecnologia Hyper Pipeline TC Nxt IP: “Trace Cache Next Instruction Pointer” Ponteiro do Branch Target Buffer indica a localização da próxima uOP (já transformada p/ RISC)

  32. Tecnologia Hyper Pipeline TC Fetch: “Trace Cache Fetch” Realiza leitura da uOP RISC na Execution Trace Cache

  33. Tecnologia Hyper Pipeline Drive: “Atraso nos barramentos” Direciona as uOPs para a unidade de alocação

  34. Tecnologia Hyper Pipeline Alloc: “Allocate” Alocação de recursos necessários para execução da uOP como, por exemplo, buffers para load/store, entre outros

  35. Tecnologia Hyper Pipeline Rename: “Register renaming” Renomeia os registradores locais (EAX, ...) associando aos registradores de trabalho existentes no hardware (128 no total)

  36. Tecnologia Hyper Pipeline Que: “Write into the uOP Queue” As uOPs são colocadas nas filas, onde permanecem até que os escalonadores estejam disponíveis

  37. Tecnologia Hyper Pipeline Sch: “Schedule” Escrita nos escalonadores e verificação de dependências. Procura dependências a serem resolvidas

  38. Tecnologia Hyper Pipeline Disp: “Dispatch” Envio das uOPs para a unidade de execução apropriada

  39. Tecnologia Hyper Pipeline RF: “Register File” Leitura dos registradores, que contém os operandos das operações pendentes (operandos das ULAs, ...)

  40. Tecnologia Hyper Pipeline Ex: “Execute” Executa as uOPs na unidade apropriada (recurso alocado)

  41. Tecnologia Hyper Pipeline Flgs: “Flags” Cálculo dos flags (zero, negativo, ...). Flags normalmente servem de entrada para instruções de desvio.

  42. Tecnologia Hyper Pipeline Br Ck: “Branch Check” Esse estágio compara o resultado obtido (calculado) para uma operação de desvio, com a predição realizada originalmente

  43. Tecnologia Hyper Pipeline Drive: “Atraso no barramento” Resultado da verificação do desvio (erro ou acerto na predição) é informado para o início do processo

  44. Arquitetura IA32 – Modos de operacao • Modo protegido: estado nativo do processador, modo multi-tarefa. • Modo real: modelo de programacao do 8086, usado para compatibilidade. Processador entra nesse modo no reset e power-up. • Modo de gerencia de sistema (SMM): usado por SOs para funcoes dependentes de plataforma, ex. gerencia de energia, seguranca do sistema, entre outros. Processador entra em SMM quando o pino externo SMI# e’ ativado. Arquitetura IA32, Porto Alegre, Outubro de 2006

  45. Arquitetura IA32 – Registradores • Uma tarefa pode enderecar 2^32 = 4 GB enderecamento linear, e 2^36 = 64 GB enderecamento fisico. • Uma pilha e’ utilizada para chamada e passagem de paramentos para sub-rotinas. Arquitetura IA32, Porto Alegre, Outubro de 2006

  46. Arquitetura IA32 – Registradores • EAX – acumulador para operandos e resultados de operacoes • EBX – Ponteiro para dados no segmento de dados • ECX – Contador para operacoes com string e lacos • EDX – ponteiro para I/O • ESI – Ponteiro para dados no segmento apontado pelo reg. DS, e ponteiro origem para operacoes string • EDI – Ponteiro para dados no segmento apontado pelo reg. ES, e ponteiro destino para operacoes string • ESP – Ponteiro para pilha (segmento SS) • EBP – Ponteiro para dados na pilha (segmento SS) Arquitetura IA32, Porto Alegre, Outubro de 2006

  47. Arquitetura IA32 – Registradores Arquitetura IA32, Porto Alegre, Outubro de 2006

  48. Arquitetura IA32 – Registradores • Memoria linear: Codigo, Dados e Pilha estao no mesmo espaco de enderecamento, e para o programa a memoria e’ um espaco de enderecamento contiguo de 2^32 bytes. • Memoria segmentada: Para o programa a memoria e’ um grupo de segmentos de memoria independentes, onde codigo, dados e pilha estao em segmentos separados. Processador usa registradores de segmento e um deslocamento para calcular um endereco linear. Programas podem acessar 16.383 segmentos diferentes, cada um com 2^32 bytes enderecos. • Segmentacao aumenta a confiabilidade do sistema evitando, por exemplo, que a pilha seja corrompida. • Modo real: modelo de memoria original do 8086, usado para compatibilidade com programas legados. Arquitetura IA32, Porto Alegre, Outubro de 2006

  49. Arquitetura IA32 – Registradores Arquitetura IA32, Porto Alegre, Outubro de 2006

  50. Arquitetura IA32 – Registradores • Memoria linear: Codigo, Dados e Pilha estao no mesmo espaco de enderecamento, e para o programa a memoria e’ um espaco de enderecamento contiguo de 2^32 bytes. • Memoria segmentada: Para o programa a memoria e’ um grupo de segmentos de memoria independentes, onde codigo, dados e pilha estao em segmentos separados. Processador usa registradores de segmento e um deslocamento para calcular um endereco linear. Programas podem acessar 16.383 segmentos diferentes, cada um com 2^32 bytes enderecos. • Segmentacao aumenta a confiabilidade do sistema evitando, por exemplo, que a pilha seja corrompida. • Modo real: modelo de memoria original do 8086, usado para compatibilidade com programas legados. Arquitetura IA32, Porto Alegre, Outubro de 2006

More Related