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

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

ITANIUM 2 Douglas Gameiro Diniz RA: 008505 Fernando Mendonça Maranho RA:016089 Copyright 2005 © MC722. Professor Rodolfo.

Apresentações semelhantes


Apresentação em tema: "ITANIUM 2 Douglas Gameiro Diniz RA: 008505 Fernando Mendonça Maranho RA:016089 Copyright 2005 © MC722. Professor Rodolfo."— Transcrição da apresentação:

1 ITANIUM 2 Douglas Gameiro Diniz RA: Fernando Mendonça Maranho RA: Copyright 2005 © MC722. Professor Rodolfo.

2 Visão Geral Desenvolvido entre 1997 e 2000 pela aliança HP / Intel para arquiteturas IA-64 Processador de 64 bits Utilizado em servidores de grande porte e aplicações técnicas que exigem alto desempenho. Compatibilidade binária com o conjunto de instruções IA-32

3 Visão Geral Baseado na arquitetura EPIC – Explicitly Parallel Instruction Computing Motivação: –Conseguir ILP eficiente sem grande aumento na complexidade do hardware, como era o caso dos processadores RISC superescalares

4 Visão Geral

5 Versões do Itanium 2 Oferecido em 3 versões principais:

6 Características da arquitetura EPIC Arranjo de instruções em grupos que explicitamente denotam paralelismo Disponibilidade abundante de registradores: permite a implementação de pilhas usando-se registradores Predication - instruções com predicado: permite a eliminação de desvios (branches)

7 Características da arquitetura EPIC Especulação de controle e de dados: minimiza o impacto da latência no acesso à memória Cache Hints: otimiza o uso da estrutura de cache multi-nível Prefetch de instruções: reduz a taxa de cache misses

8 INTERFACE DE PROGRAMAÇÃO Instruções têm 41 bits e são lidas da memória em conjuntos de 3 instruções (bundles) Campo template de 5 bits, que indica à CPU como decodificar e executar as 3 instruções do bundle Total: 128 bits

9 Grupos de instruções Contém instruções que podem ser realizadas em paralelo Necessário que o compilador ou programador assembly explicitamente indique os grupos de instruções que não tenham dependências Podem ser disparadas sem a necessidade de verificações de hardware Não existe um mapeamento direto entre bundles e grupos

10 Expressando paralelismo Grupos delimitados por Stops (indicados por dois ponto-e-vírgula seguidos) Exemplo: ld8 r1=[r5] // primeiro grupo sub r6=r8,r9 ;; // primeiro grupo add r3=r1,r4 // segundo grupo st8 [r6]=r12 // segundo grupo

11 Sintaxe das instruções [qp] mnemonic[.comp] dest=srcs qp especifica um qualifying predicate register (registrador de predicado qualificador). mnemonic especifica um nome que identifica unicamente a instrução comp especifica um ou mais complementos dest representa o(s) operando(s) de destino srcs representa os operandos fonte Exemplo: cmp.eq p1,p2 = r1,r2 // p1 = (r1==r2), // p2 = (r1!=r2)

12 Formato e tipos de instruções O formato geral de uma instrução pode ser representado da seguinte forma:

13 Registradores Grande número de registradores, o que diminui a freqüência de acessos à memória: registradores de uso geral (r0-r127), de 64 bits registradores de ponto flutuante (f0-f127), de 82 bits - 64 registradores de predicado (p0-p63), de 1 bit - 8 registradores de branch (b0-b7), de 64 bits - Até 128 registradores de aplicação (ar0-ar127), de 64 bits (comumente possuem aliases) - Instruction Pointer, de 64 bits, contém o endereço do bundle que estiver executando no momento

14 INTRUDUÇÃO À ARQUITETURA DO ITANIUM 2 Características do conjunto de instruções: Paralelismo Explícito: - Mecanismos de sinergia (esforço simultâneo) entre o compilador e o processador; - Recursos massivos para tomar vantagem do paralelismo no nível de instrução; - Suporte para várias unidades de execução e portas de memória.

15 Paralelismo no nível de instrução (ILP) Habilidade de executar múltiplas instruções ao mesmo tempo Tratamento de instruções especiais em bundles (pacotes), com três instruções por bundle, e pode tratar 2 bundles por clock. Permite ao compilador explorar informação especulativa sem sacrificar a execução correta de uma aplicação.

16 Especulação Tratar operações mais cedo Reduz latência de memória Tipos de especulação: de controle e de dados Recovery code: - repete o load e a cadeia de instruções dependentes para recuperar-se de uma especulação incorreta. - Também deve ser gerado pelo compilador

17 Especulação de Controle Execução de uma operação antes do branch que a precede Se o novo load especulativo de controle causar uma exceção: - a exceção é adiada (setando o bit NaT em 1) e deve ser aceita somente se a condição for verdadeira.

18 Especulação de Controle if (a>b) load(ld_addr1, target1) else load(ld_addr2, target2) Transforma-se em: /* fora do caminho crítico */ sload(ld_addr1, target1) sload(ld_addr2, target2) /* outras operacões incluindo incluindo os usos de target1/target2 */ if (a>b) scheck(target1, recovery_addr1) else scheck(target2, recorery_addr2) Exemplo:

19 Especulação de Dados Execução de um load de memória antes de um store que o precede e que pode potencialmente ter dependência com ele Referenciados como loads avançados ALAT (Advanced Load Address Table) - usada para prover especulação de dados no Itanium. A estrutura física da ALAT possui 32 entradas e é organizada de forma fully associative.

20 Especulação de Dados store(st_addr, data) load(ld_addr, target) use(target) Transforma-se em: /* fora do caminho crítico */ aload(ld_addr, target) /* outras operações incluindo usos do alvo*/ store(st_addr, data) acheck(target, recovery_addr) use(target) Exemplo:

21 Predication Execução condicional de instruções Arquiteturas tradicionais: implementada através de branches. Itanium2: implementada através do uso de instruções com predicado (predicated instruction). Campo qp (qualifying predicate) de 5 bits no formato das instruções. Se o valor do predicado é verdadeiro (1), então a instrução atualiza o estado. Caso contrário ela geralmente se comporta como um nop.

22 Predication if (a>b) c = c + 1 else d = d * e + f Torna-se: pT, pF = compare (a>b) if (pT) c = c + 1 // instrução com predicado pT if (pF) d = d * e + f // instrução com predicado pF Permite evitar branches e simplifica otimizações do compilador. Exemplo: O compilador pode escalonar as instruções sob pT e pF para executar em paralelo

23 O bit NaT (Not A Thing) É um bit extra dos registradores de uso geral Indica se o conteúdo do registrador é válido Se o bit NaT é setado em 1, o registrador contém uma exceção adiada (deferred exception). Propagação dos bits NaT - se uma instrução lê um registrador fonte que tem seu bit NaT setado, os bits NaT dos registradores destino da instrução também são setados

24 Pilha de Registradores Evita salvar e restaurar registradores na chamada e retorno de procedimentos Conteúdo de registradores físicos é movido entre o banco de registradores e a memória sem intervenção explícita do programa Aparenta ser uma pilha ilimitada de registradores físicos. Instrução alloc - especifica o número de registradores que o procedimento espera utilizar.

25 Pilha de Registradores É feito o renomeamento do identificador do registrador virtual nas instruções através de um registrador base nos registradores físicos. Se registradores suficientes não estão disponíveis (stack overflow), o alloc pára (stall) o processador e salva os registradores do chamador até que o número desejado de registradores esteja disponível. RSE (Register Stack Engine) - mecanismo de hardware que realiza o gerenciamento.

26 Branching Mecanismos para diminuir a taxa de predição incorreta de branches e o custo (penalidade) das predições incorretas Instruções de predição de branches: - usadas para comunicar de forma antecipada o endereço alvo e a localização do branch Compilador indica se um branch deve ser predito dinamicamente ou estaticamente Registradores de branch (para branches indiretos): - endereço alvo pode ser computado mais cedo.

27 Rotação de Registradores Pipelining de software: permite executar as iterações do loop em paralelo em vez de seqüencialmente Renomeamento de registradores: - provê a cada iteração o seu próprio conjunto de registradores Significativa redução de overhead de loop

28 PROCESSADOR O Itanium2 possui as seguintes unidades de execução: - 6 unidades para inteiros, - 6 unidades para multimídia, - 2 unidades para ponto flutuante, - 3 unidades para desvio, - 4 unidades para load/store

29 PROCESSADOR Consegue executar instruções de 32 bits nativamente executando instruções de 64 bits Unidade de multimídia - pode tratar dados de 64 bits como também pacotes de dados de: - 2 x 32 bits - 4 x 16 bits - 8 x 8 bits

30 Processamento da Instrução Prefetch e Fetch da Instrução: - move linhas de instruções de caches de níveis mais altos ou memória, para a L1I - mecanismo efetivo de redução de cache misses Especulativamente carrega as instruções da cache de instruções L1 em um buffer: - capacidade de até 8 bundles de intruções

31 Processamento da Instrução Prefetch eficiente de instruções : - Demand Prefetching - realiza automaticamente o prefetch da próxima linha consecutiva no cache L1I, se essa linha extra estiver contida dentro do cache L2. - Streaming Prefetching - compilador pode adicionar uma dica para qualquer instrução de branch, instruindo a fazer prefetch das instruções naquele endereço.

32 PIPELINE O Itanium2 introduziu um grau avançado de diferenciação dos pipelines. Fila de espera (buffering) que permite que as instruções se completem fora de ordem: - previne que instruções para inteiros tenham que esperar pelas instruções de ponto flutuante, cujo pipeline é constituído de dois estágios a mais Uma falha na previsão de um desvio despende 6 ciclos adicionais

33 PIPELINE Pipeline composto de 8 estágios, que podem ser agrupados em duas fases maiores: front-end: 2 estágios -(1) gera apontador de instrução, (2) coloca no bundle 0 a primeira instrução a ser executada back-end: 6 estágios (3) distribui as instruções para as unidades funcionais, (4) renomeia registradores, (5) lê registradores, (6) executa as operações, (7) detecta exceções, (8) realiza write-back

34 MEMÓRIA 3 níveis de caches: - cache de instruções de primeiro nível (L1I) - cache de dados de primeiro nível (L1D) - cache unificada de segundo nível (L2) - cache unificada de terceiro nível (L3). A cache L1 sustenta uma taxa de 32 bytes de leitura por ciclo para suportar a taxa de fetch de 2 bundles por ciclo

35 MEMÓRIA Cache hints (dicas de cache): otimizam o uso da estrutura de cache multi-nível. Traz dados nas caches antes do programa precisar deles: reduz a latência efetiva de acesso à memória Todo load e store de memória tem um campo de 2 bits para cache hint, no qual o compilador codifica sua predição da localidade espacial e/ou temporal da área de memória sendo acessada.

36 Translation Lookaside Buffers (TLBs) Conversão de endereços virtuais para endereços reais O Itanium2 emprega uma TLB de dois níveis para referências de instruções (L1 ITLB e L2 ITLB) e uma TLB de dois níveis para referências de dados (L1 DTLB e L2 DTLB).

37 Translation Lookaside Buffers (TLBs) Quando uma página de tradução é trocada no L1 ITLB, todas as entradas na cache L1I pertencentes à página em questão são invalidadas. O mesmo vale para a L1 DTLB A política de substituição de páginas utilizadas é a LRU (Least Recently Used) O Itanium2 suporta páginas de tamanho 4K, 8K, 16K, 64K, 256K, 1M, 4M, 16M, 64M, 256M, 1GB e 4GB São suportados maiores endereços físicos (constituídos de 50 bits) e virtuais (constituídos de 64 bits)

38 Hardware Page Walker (HPW) O HPW é o terceiro nível de tradução de endereços. É um hardware que executa buscas de páginas a partir da Tabela Hash de Página Virtual (VHPT – Virtual Hash Page Table). Quando um miss no segundo nível da DTLB ou ITLB é encontrado, o HPW acessará (quando necessário) a cache L2, a cache L3, e finalmente a memória para obter a página de entrada

39 Barramentos O barramento de dados é de 128 bits de largura e opera de forma síncrona Pico de largura de banda: 400 milhões de transações de memória ou 6.4 GB por segundo

40 Perguntas Maiores detalhes:


Carregar ppt "ITANIUM 2 Douglas Gameiro Diniz RA: 008505 Fernando Mendonça Maranho RA:016089 Copyright 2005 © MC722. Professor Rodolfo."

Apresentações semelhantes


Anúncios Google