IA-64 - IA-64

Arquitetura Intel Itanium
Designer HP e Intel
Bits 64 bits
Introduzido 2001
Projeto ÉPICO
Modelo Register-Register
Codificação Fixo
Ramificação Registro de condição
Endianness Selecionável
Registros
Propósito geral 128 (64 bits mais 1 bit de trap ; 32 são estáticos, 96 usam janelas de registro ); 64 registradores de predicado de 1 bit
Ponto flutuante 128
A arquitetura Intel Itanium

IA-64 ( arquitetura Intel Itanium ) é a arquitetura do conjunto de instruções (ISA) da família Itanium de microprocessadores Intel de 64 bits . A especificação ISA básica se originou na Hewlett-Packard (HP) e foi desenvolvida e então implementada em uma nova microarquitetura de processador pela Intel com a parceria contínua da HP e experiência nos conceitos de design EPIC subjacentes. Para estabelecer o que foi seu primeiro novo ISA em 20 anos e trazer uma linha de produtos totalmente nova para o mercado, a Intel fez um grande investimento em definição de produto, design, ferramentas de desenvolvimento de software, sistema operacional, parcerias da indústria de software e marketing. Para apoiar esse esforço, a Intel criou a maior equipe de design de sua história e uma nova equipe de marketing e habilitação da indústria completamente separada do x86. O primeiro processador Itanium, codinome Merced , foi lançado em 2001.

A arquitetura Itanium é baseada no paralelismo de nível de instrução explícito , no qual o compilador decide quais instruções executar em paralelo. Isso contrasta com as arquiteturas superescalares , que dependem do processador para gerenciar as dependências das instruções em tempo de execução. Em todos os modelos Itanium, até e incluindo Tukwila , os núcleos executam até seis instruções por ciclo de clock .

Em 2008, Itanium foi a quarta arquitetura de microprocessador mais implantada para sistemas de classe empresarial , atrás de x86-64 , Power ISA e SPARC .

História

Desenvolvimento: 1989-2000

Em 1989, a HP começou a se preocupar com o fato de que as arquiteturas de computação de conjunto de instruções reduzidas (RISC) estavam se aproximando de um limite de processamento de uma instrução por ciclo . Os pesquisadores da Intel e da HP estavam explorando opções de arquitetura de computador para projetos futuros e, separadamente, começaram a investigar um novo conceito conhecido como palavra de instrução muito longa (VLIW), resultado de uma pesquisa da Universidade de Yale no início dos anos 1980. VLIW é um conceito de arquitetura de computador (como RISC e CISC) em que uma única palavra de instrução contém várias instruções codificadas em uma palavra de instrução muito longa para facilitar ao processador a execução de várias instruções em cada ciclo de clock. Implementações VLIW típicas dependem fortemente de compiladores sofisticados para determinar em tempo de compilação quais instruções podem ser executadas ao mesmo tempo e o planejamento adequado dessas instruções para execução e também para ajudar a prever a direção das operações de ramificação. O valor dessa abordagem é fazer um trabalho mais útil em menos ciclos de clock e simplificar o agendamento de instruções do processador e os requisitos de hardware de previsão de ramificação, com uma penalidade no aumento da complexidade do processador, custo e consumo de energia em troca de execução mais rápida.

Produção

Durante esse tempo, a HP começou a acreditar que não era mais econômico para empresas de sistemas corporativos individuais como ela desenvolver microprocessadores proprietários. A Intel também pesquisou várias opções de arquitetura para ir além do ISA x86 para atender aos requisitos de servidor corporativo de ponta e computação de alto desempenho (HPC). Assim, a Intel e a HP formaram uma parceria em 1994 para desenvolver o IA-64 ISA, usando uma variação dos conceitos de design VLIW que a Intel chamou explicitamente de computação de instrução paralela (EPIC). O objetivo da Intel era alavancar a experiência que a HP desenvolveu em seu trabalho VLIW inicial junto com o seu próprio para desenvolver uma linha de produtos de volume voltada para servidores de classe empresarial de ponta e sistemas de computação de alto desempenho (HPC) que poderiam ser vendidos a todos os fabricantes de equipamentos originais (OEMs), enquanto a HP desejava poder comprar processadores prontos para uso fabricados com a fabricação de volume da Intel e tecnologia de processo de ponta, que eram de melhor desempenho e mais econômicos do que seus processadores PA-RISC atuais. Como os produtos resultantes seriam da Intel (a HP seria um de muitos clientes) e para atingir os volumes necessários para uma linha de produtos de sucesso, os produtos Itanium seriam necessários para atender às necessidades de uma base de clientes mais ampla e que os aplicativos de software, sistema operacional e ferramentas de desenvolvimento estejam disponíveis para esses clientes. Isso exigia que os produtos Itanium fossem projetados, documentados e fabricados e tivessem qualidade e suporte consistentes com os demais produtos da Intel. Portanto, a Intel assumiu a liderança em design de microarquitetura, produção (embalagem, teste e todas as outras etapas), software da indústria e habilitação de sistema operacional (Linux e Windows NT) e marketing. Como parte da definição e do processo de marketing da Intel, eles envolveram uma ampla variedade de OEMs empresariais, fornecedores de software e sistemas operacionais, bem como clientes finais, a fim de compreender seus requisitos e garantir que fossem refletidos na família de produtos, de modo a atender às necessidades de uma ampla gama de clientes e usuários finais. A HP fez uma contribuição substancial para a definição ISA, a microarquitetura Merced / Itanium e Itanium 2, mas a responsabilidade da produção foi da Intel. A meta original para entregar o primeiro produto da família Itanium (codinome Merced) era 1998.

Marketing

Os esforços de marketing de produto e envolvimento da indústria da Intel foram substanciais e alcançaram vitórias de design com a maioria dos OEMs de servidores corporativos, incluindo aqueles baseados em processadores RISC na época. Os analistas da indústria previram que o IA-64 dominaria em servidores, estações de trabalho e desktops de última geração, e, eventualmente, suplantar RISC e arquiteturas de computação de conjunto de instruções complexas (CISC) para todos os aplicativos de uso geral. A Compaq e a Silicon Graphics decidiram abandonar o desenvolvimento das arquiteturas Alpha e MIPS , respectivamente, em favor da migração para IA-64.

Em 1997, era evidente que a arquitetura IA-64 e o compilador eram muito mais difíceis de implementar do que se pensava originalmente, e a entrega do Itanium começou a falhar. Como o Itanium foi o primeiro processador EPIC, o esforço de desenvolvimento encontrou mais problemas imprevistos do que a equipe estava acostumada. Além disso, o conceito EPIC depende dos recursos do compilador que nunca foram implementados antes, portanto, mais pesquisas são necessárias.

Vários grupos desenvolveram sistemas operacionais para a arquitetura, incluindo Microsoft Windows e Unix e sistemas semelhantes ao Unix, como Linux , HP-UX , FreeBSD , Solaris , Tru64 UNIX e Monterey / 64 (os três últimos foram cancelados antes de chegar ao mercado). Em 1999, a Intel liderou a formação de um consórcio da indústria de código aberto para portar o Linux para IA-64 que chamaram de "Trillium" (e mais tarde renomeado "Trillian" devido a um problema de marca registrada), que foi liderado pela Intel e incluiu Caldera Systems , CERN , Cygnus Solutions , Hewlett-Packard, IBM, Red Hat , SGI , SuSE , TurboLinux e VA Linux Systems . Como resultado, um IA-64 Linux funcional foi entregue antes do previsto e foi o primeiro sistema operacional a ser executado nos novos processadores Itanium.

A Intel anunciou o nome oficial do processador, Itanium , em 4 de outubro de 1999. Em poucas horas, o nome Itanic foi cunhado em um grupo de notícias da Usenet como um trocadilho com o nome Titanic , o transatlântico "inafundável" que afundou em sua viagem inaugural em 1912.

Itanium (Merced): 2001

Itanium (Merced)
KL Intel Itanium ES.jpg
Processador itanium
Informação geral
Lançado Junho de 2001
Interrompido Junho de 2002
Fabricante (s) comum (is)
atuação
Máx. Taxa de clock da CPU 733 MHz a 800 MHz
Velocidades FSB 266 MT / s
Cache
Cache L2 96 KB
Cache L3 2 ou 4 MB
Arquitetura e classificação
Conjunto de instruções Itanium
Especificações físicas
Núcleos
Tomadas)
Produtos, modelos, variantes
Nome (s) do núcleo

Quando o Itanium foi lançado em junho de 2001, seu desempenho não era superior ao dos processadores concorrentes RISC e CISC.

Reconhecendo que a falta de software pode ser um problema sério para o futuro, a Intel disponibilizou milhares desses primeiros sistemas para fornecedores independentes de software (ISVs) para estimular o desenvolvimento. A HP e a Intel lançaram a próxima geração do processador Itanium 2 no mercado um ano depois.

Itanium 2: 2002–2010

Itanium 2 (McKinley)
KL Intel Itanium2.jpg
Processador Itanium 2
Informação geral
Lançado 2002
Interrompido presente
Projetado por Intel
Fabricante (s) comum (is)
atuação
Máx. Taxa de clock da CPU 733 MHz a 2,66 GHz
Cache
Cache L2 256 KB no Itanium2
256 KB (D) + 1 MB (I) ou 512 KB (I) no (Itanium2 série 9x00)
Cache L3 1,5–32 MB
Arquitetura e classificação
Conjunto de instruções Itanium
Especificações físicas
Núcleos
Tomadas)
Produtos, modelos, variantes
Nome (s) do núcleo
Itanium 2 em 2003

O processador Itanium 2 foi lançado em 2002. Ele aliviou muitos dos problemas de desempenho do processador Itanium original, que eram causados ​​principalmente por um subsistema de memória ineficiente.

Em 2003, a AMD lançou o Opteron , que implementou sua própria arquitetura de 64 bits ( x86-64 ). O Opteron ganhou aceitação rápida no espaço de servidor corporativo porque forneceu uma atualização fácil do x86 . A Intel respondeu implementando o x86-64 (como Em64t ) em seus microprocessadores Xeon em 2004.

Em novembro de 2005, os principais fabricantes de servidores Itanium uniram-se à Intel e a vários fornecedores de software para formar a Itanium Solutions Alliance para promover a arquitetura e acelerar a portabilidade de software.

Em 2006, a Intel entregou o Montecito (comercializado como Itanium 2 9000 series), um processador dual-core que praticamente dobrou o desempenho e diminuiu o consumo de energia em cerca de 20 por cento.

Itanium 9300 (Tukwila): 2010

O processador da série Itanium 9300 , de codinome Tukwila , foi lançado em 8 de fevereiro de 2010 com maior desempenho e capacidade de memória. Tukwila tinha sido originalmente programado para lançamento em 2007.

O dispositivo usa um processo de 65 nm, inclui dois a quatro núcleos, caches on-die de até 24  MB , tecnologia Hyper-Threading e controladores de memória integrados. Ele implementa correção de dados de dispositivo duplo (DDDC), que ajuda a corrigir erros de memória. Tukwila também implementa Intel QuickPath Interconnect (QPI) para substituir a arquitetura baseada em barramento Itanium. Ele tem um pico de largura de banda interprocessador de 96 GB / se um pico de largura de banda de memória de 34 GB / s. Com o QuickPath, o processador tem controladores de memória integrados e faz interface direta com a memória, usando interfaces QPI para conectar-se diretamente a outros processadores e hubs de E / S. QuickPath também é usado em processadores Intel que usam a microarquitetura Nehalem , tornando provável que Tukwila e Nehalem sejam capazes de usar os mesmos chipsets. O Tukwila incorpora quatro controladores de memória, cada um dos quais com suporte a vários DIMMs DDR3 por meio de um controlador de memória separado, muito parecido com o processador Xeon baseado em Nehalem de codinome Beckton .

Itanium 9500 (Poulson): 2012

O processador da série Itanium 9500, codinome Poulson , é o processador subsequente ao Tukwila com oito núcleos, tem uma arquitetura ampla de 12, aprimoramentos de multithreading e novas instruções para aproveitar as vantagens do paralelismo, especialmente na virtualização. O tamanho do cache Poulson L3 é de 32 MB. O tamanho do cache L2 é 6 MB, 512 I  KB , 256 D KB por núcleo. O tamanho do molde é 544 mm², menor que seu predecessor Tukwila (698,75 mm²).

No ISSCC 2011, a Intel apresentou um artigo intitulado "Um processador Itanium de 32nm 3.1 bilhões de transistor e 12 edições amplas para servidores de missão crítica." Dada a história da Intel de divulgar detalhes sobre microprocessadores Itanium no ISSCC, este artigo provavelmente se refere a Poulson. O analista David Kanter especula que Poulson usará uma nova microarquitetura, com uma forma mais avançada de multi-threading que usa até dois threads, para melhorar o desempenho de cargas de trabalho de thread único e multi-thread. Algumas novas informações foram divulgadas na conferência Hotchips . Novas informações apresentam melhorias em multithreading, melhorias de resiliência (Instruction Replay RAS) e algumas novas instruções (prioridade de thread, instrução de inteiro, pré-busca de cache, dicas de acesso a dados).

Itanium 9700 (Kittson): 2017

O Kittson é o mesmo que o 9500 Poulson, mas com uma freqüência um pouco mais alta.

Fim da vida: 2021

Em janeiro de 2019, a Intel anunciou que o Kittson seria descontinuado, com a data do último pedido em janeiro de 2020 e a última data de remessa em julho de 2021.

Não há um sucessor planejado.

Arquitetura

A Intel documentou amplamente o conjunto de instruções Itanium e a imprensa técnica forneceu visões gerais. A arquitetura foi renomeada várias vezes ao longo de sua história. A HP originalmente o chamou de PA-WideWord . Mais tarde, a Intel a chamou de IA-64 , então Itanium Processor Architecture (IPA), antes de se decidir pela arquitetura Intel Itanium , mas ainda é amplamente referida como IA-64 .

É uma arquitetura explicitamente paralela rica em registros de 64 bits. A palavra de dados base tem 64 bits, endereçável por byte. O espaço de endereço lógico é 2 64 bytes. A arquitetura implementa predicação , especulação e previsão de ramificação . Ele usa janelas de registro de tamanho variável para passagem de parâmetros. O mesmo mecanismo também é usado para permitir a execução paralela de loops. Especulação, predição, predicação e renomeação estão sob o controle do compilador: cada palavra de instrução inclui bits extras para isso. Essa abordagem é a característica distintiva da arquitetura.

A arquitetura implementa um grande número de registros:

  • 128 registradores inteiros gerais , que são de 64 bits mais um bit de trap ("NaT", que significa "nada") usados ​​para execução especulativa . 32 deles são estáticos, os outros 96 são empilhados usando janelas de registro de tamanho variável ou girando para loops em pipeline. sempre lê 0.gr0
  • 128 registradores de ponto flutuante . Os registradores de ponto flutuante têm 82 bits para preservar a precisão dos resultados intermediários. Em vez de um bit de trap "NaT" dedicado como os registradores inteiros, os registradores de ponto flutuante têm um valor de trap chamado "NaTVal" ("Not a Thing Value"), semelhante a (mas distinto de) NaN . Eles também têm 32 registradores estáticos e 96 registradores em janela ou rotativos. sempre lê +0,0 e sempre lê +1,0.fr0fr1
  • 64 registradores de predicado de um bit. Estes também têm 32 registradores estáticos e 96 registradores em janela ou rotativos. sempre lê 1 (verdadeiro).pr0
  • 8 registros de ramificação, para os endereços de saltos indiretos. é definido como o endereço de retorno quando uma função é chamada com .br0br.call
  • 128 registradores de propósito especial (ou "aplicativo"), que são principalmente de interesse para o kernel e não para aplicativos comuns. Por exemplo, um registro chamado bspaponta para a segunda pilha, que é onde o hardware irá automaticamente espalhar registros quando a janela de registro for encerrada.

Cada palavra de instrução de 128 bits é chamada de pacote e contém três slots, cada um contendo uma instrução de 41 bits , mais um modelo de 5 bits que indica qual tipo de instrução está em cada slot. Esses tipos são unidade M (instruções de memória), unidade I (ALU inteiro, inteiro não ALU ou instruções estendidas imediatas longas), unidade F (instruções de ponto flutuante) ou unidade B (ramal ou ramal estendido longo instruções). O modelo também codifica paradas que indicam que existe uma dependência de dados entre os dados antes e depois da parada. Todas as instruções entre um par de paradas constituem um grupo de instruções , independentemente de seu agrupamento, e devem estar livres de muitos tipos de dependências de dados; esse conhecimento permite que o processador execute instruções em paralelo sem ter que realizar sua própria análise complicada de dados, uma vez que essa análise já foi feita quando as instruções foram escritas.

Dentro de cada slot, todas as instruções, exceto algumas, são predicadas, especificando um registrador de predicado, cujo valor (verdadeiro ou falso) determinará se a instrução é executada. As instruções predicadas que sempre devem ser executadas são predicadas em , que sempre são lidas como verdadeiras. pr0

A linguagem assembly e o formato de instrução IA-64 foram deliberadamente projetados para serem escritos principalmente por compiladores, não por humanos. As instruções devem ser agrupadas em pacotes de três, garantindo que as três instruções correspondam a um modelo permitido. As instruções devem emitir paradas entre certos tipos de dependências de dados, e paradas também só podem ser usadas em lugares limitados de acordo com os modelos permitidos.

Execução de instrução

O mecanismo de busca pode ler até dois pacotes por clock do cache L1 para o pipeline. Quando o compilador pode tirar o máximo proveito disso, o processador pode executar seis instruções por ciclo de clock. O processador possui trinta unidades de execução funcional em onze grupos. Cada unidade pode executar um subconjunto específico do conjunto de instruções e cada unidade executa a uma taxa de uma instrução por ciclo, a menos que a execução pare de esperar pelos dados. Embora nem todas as unidades em um grupo executem subconjuntos idênticos do conjunto de instruções, as instruções comuns podem ser executadas em unidades múltiplas.

Os grupos de unidades de execução incluem:

  • Seis ALUs de uso geral, duas unidades inteiras, uma unidade de turno
  • Quatro unidades de cache de dados
  • Seis unidades de multimídia, duas unidades de deslocamento paralelo, uma multiplicação paralela, uma contagem de população
  • Duas unidades de multiplicação-acumulação de ponto flutuante de 82 bits , duas unidades de multiplicação-acumulação de ponto flutuante SIMD (duas operações de 32 bits cada)
  • Três unidades de filial

Idealmente, o compilador pode frequentemente agrupar instruções em conjuntos de seis que podem ser executados ao mesmo tempo. Como as unidades de ponto flutuante implementam uma operação de multiplicação-acumulação , uma única instrução de ponto flutuante pode realizar o trabalho de duas instruções quando o aplicativo requer uma multiplicação seguida por uma adição: isso é muito comum no processamento científico. Quando isso ocorre, o processador pode executar quatro FLOPs por ciclo. Por exemplo, o Itanium 800 MHz tinha uma classificação teórica de 3,2 G FLOPS e o Itanium 2 mais rápido, com 1,67 GHz, foi classificado com 6,67 GFLOPS.

Na prática, o processador pode muitas vezes ser subutilizado, com nem todos os slots preenchidos com instruções úteis devido, por exemplo, a dependências de dados ou limitações nos modelos de pacote disponíveis. O código mais denso possível requer 42,6 bits por instrução, em comparação com 32 bits por instrução nos processadores RISC tradicionais da época, e no-ops devido a slots desperdiçados diminuem ainda mais a densidade do código. Instruções adicionais para cargas especulativas e dicas para branches e cache são difíceis de gerar de forma otimizada, mesmo com compiladores modernos.

Arquitetura de memória

De 2002 a 2006, os processadores Itanium 2 compartilhavam uma hierarquia de cache comum. Eles tinham 16 KB de cache de instrução de Nível 1 e 16 KB de cache de dados de Nível 1. O cache L2 foi unificado (instrução e dados) e tem 256 KB. O cache de Nível 3 também foi unificado e variou em tamanho de 1,5 MB a 24 MB. O cache L2 de 256 KB contém lógica suficiente para lidar com operações de semáforo sem perturbar a unidade lógica aritmética principal (ALU).

A memória principal é acessada por meio de um barramento para um chipset fora do chip . O barramento Itanium 2 foi inicialmente chamado de barramento McKinley, mas agora é normalmente referido como barramento Itanium. A velocidade do barramento aumentou constantemente com os novos lançamentos de processadores. O barramento transfere 2 × 128 bits por ciclo de clock, então o barramento McKinley de 200 MHz transferiu 6,4 GB / s, e o barramento Montecito de 533 MHz transferiu 17,056 GB / s

Mudanças arquitetônicas

Os processadores Itanium lançados antes de 2006 tinham suporte de hardware para a arquitetura IA-32 para permitir o suporte para aplicativos de servidor legado, mas o desempenho do código IA-32 era muito pior do que o do código nativo e também pior do que o desempenho dos processadores x86 contemporâneos. Em 2005, a Intel desenvolveu o IA-32 Execution Layer (IA-32 EL), um emulador de software que oferece melhor desempenho. Com o Montecito, a Intel eliminou o suporte de hardware para o código IA-32.

Em 2006, com o lançamento do Montecito , a Intel fez uma série de melhorias na arquitetura básica do processador, incluindo:

  • Multithreading de hardware: cada núcleo do processador mantém o contexto para dois threads de execução. Quando um thread é interrompido durante o acesso à memória, o outro thread pode ser executado. A Intel chama isso de "multithreading grosso" para distingui-lo da " tecnologia de hyper-threading " Intel integrada em alguns microprocessadores x86 e x86-64 .
  • Suporte de hardware para virtualização : a Intel adicionou a Tecnologia de virtualização Intel (Intel VT-i), que fornece assistências de hardware para funções essenciais de virtualização. A virtualização permite que um " hipervisor " de software execute várias instâncias do sistema operacional no processador simultaneamente.
  • Aprimoramentos de cache: Montecito adicionou um cache L2 dividido, que incluía um cache L2 de 1 MB dedicado para instruções. O cache L2 original de 256 KB foi convertido em um cache de dados dedicado. O Montecito também incluiu até 12 MB de cache L3 no chip.

Consulte Chipsets ... Outros mercados .

Veja também

Referências

links externos