itanium 2 douglas gameiro diniz ra: 008505 fernando mendonça maranho ra:016089 copyright 2005 ©...

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

Upload: internet

Post on 17-Apr-2015

106 views

Category:

Documents


0 download

TRANSCRIPT

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

ITANIUM 2

Douglas Gameiro Diniz RA: 008505

Fernando Mendonça Maranho RA:016089

Copyright 2005 © MC722. Professor Rodolfo.

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

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

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

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

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

Visão Geral

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

Versões do Itanium 2

• Oferecido em 3 versões principais:

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

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)

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

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

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

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

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

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

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

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

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

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)

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

Formato e tipos de instruções

• O formato geral de uma instrução pode ser representado da seguinte forma:

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

Registradores• Grande número de registradores, o que diminui a freqüência de acessos à memória:

- 128 registradores de uso geral (r0-r127), de 64 bits

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

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

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.

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

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.

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

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

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

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.

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

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:

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

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.

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

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:

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

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.

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

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

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

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

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

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.

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

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.

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

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.

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

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

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

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

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

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

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

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

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

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.

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

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

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

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

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

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

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

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.

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

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

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

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)

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

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

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

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

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

Perguntas

• Maiores detalhes: www.intel.com/products/processor/itanium2/