Intel iAPX 432 - Intel iAPX 432

Intel iAPX 432
Logotipo da Intel (1968) .svg
Logotipo da Intel Corporation, 1968–2006
Informação geral
Lançado final de 1981
Interrompido ca 1985
Fabricante (s) comum (s)
Desempenho
Máx. Taxa de clock da CPU 5 MHz a 8 MHz

O iAPX 432 ( Intel Avançada Performance Architecture ) é uma descontinuada arquitetura de computador introduzido em 1981. Foi Intel primeira de 32-bit processador de design. O processador principal da arquitetura, o processador de dados geral , é implementado como um conjunto de dois circuitos integrados separados, devido às limitações técnicas da época. Embora alguns dos primeiros sistemas e manuais baseados em 8086, 80186 e 80286 também usassem o prefixo iAPX por razões de marketing, as linhas de processador iAPX 432 e 8086 são designs completamente separados com conjuntos de instruções completamente diferentes.

O projeto começou em 1975 como o 8800 (depois do 8008 e do 8080 ) e pretendia ser o principal design da Intel nos anos 1980. Ao contrário do 8086 , que foi projetado no ano seguinte como um sucessor do 8080, o iAPX 432 foi uma partida radical dos designs anteriores da Intel voltados para um nicho de mercado diferente e completamente alheio às linhas de produtos 8080 ou x86 .

O projeto iAPX 432 é considerado um fracasso comercial para a Intel e foi descontinuado em 1986.

Descrição

O iAPX 432 foi referido como um "micromainframe", projetado para ser programado inteiramente em linguagens de alto nível. A arquitetura do conjunto de instruções também era inteiramente nova e um afastamento significativo dos processadores 8008 e 8080 anteriores da Intel, já que o modelo de programação iAPX 432 é uma máquina de pilha sem registros de uso geral visíveis . Ele suporta programação orientada a objetos , coleta de lixo e multitarefa , bem como gerenciamento de memória mais convencional diretamente em hardware e microcódigo . O suporte direto para várias estruturas de dados também se destina a permitir que sistemas operacionais modernos sejam implementados usando muito menos código de programa do que para processadores comuns. Intel iMAX 432 é um sistema operacional descontinuado para o 432, escrito inteiramente em Ada , e Ada também era a linguagem primária pretendida para a programação de aplicativos. Em alguns aspectos, pode ser visto como uma arquitetura de computador de linguagem de alto nível .

Essas propriedades e recursos resultaram em um design de hardware e microcódigo mais complexo do que a maioria dos processadores da época, especialmente os microprocessadores. No entanto, os barramentos internos e externos (na maioria) não são mais largos que 16 bits e, assim como em outros microprocessadores de 32 bits da época (como o 68000 ou o 32016 ), as instruções aritméticas de 32 bits são implementadas por um 16 -bit ALU, via lógica aleatória e microcódigo ou outros tipos de lógica sequencial . O espaço de endereçamento ampliado iAPX 432 em relação ao 8080 também foi limitado pelo fato de que o endereçamento linear de dados ainda poderia usar apenas deslocamentos de 16 bits, algo semelhante aos primeiros designs baseados em 8086 da Intel , incluindo o 80286 contemporâneo (o novo segmento de 32 bits os deslocamentos da arquitetura 80386 foram descritos publicamente em detalhes em 1984).

Usando a tecnologia de semicondutores de sua época, os engenheiros da Intel não conseguiram traduzir o design em uma primeira implementação muito eficiente. Junto com a falta de otimização em um compilador Ada prematuro , isso contribuiu para sistemas de computador bastante lentos, mas caros, realizando benchmarks típicos em aproximadamente 1/4 da velocidade do novo chip 80286 na mesma frequência de clock (no início de 1982). Essa lacuna de desempenho inicial para a linha 8086 de baixo perfil e preço baixo foi provavelmente a principal razão pela qual o plano da Intel de substituir o último (mais tarde conhecido como x86 ) pelo iAPX 432 falhou. Embora os engenheiros tenham visto maneiras de melhorar o design da próxima geração, a arquitetura de capacidade iAPX 432 agora começou a ser considerada mais como uma sobrecarga de implementação do que como o suporte simplificador que deveria ser.

Originalmente projetado para frequências de clock de até 10 MHz, os dispositivos reais vendidos foram especificados para velocidades máximas de clock de 4 MHz, 5 MHz, 7 MHz e 8 MHz com um desempenho máximo de 2 milhões de instruções por segundo a 8 MHz.

História

Desenvolvimento

O projeto 432 da Intel começou em 1976, um ano após a conclusão do Intel 8080 de 8 bits e um ano antes do início do projeto 8086 de 16 bits . O projeto 432 foi inicialmente denominado 8800 , como seu próximo passo além dos microprocessadores Intel 8008 e 8080 existentes . Este foi um passo muito grande. Os conjuntos de instruções desses processadores de 8 bits não foram muito bem ajustados para linguagens compiladas típicas do tipo Algol . No entanto, o principal problema eram seus pequenos intervalos de endereçamento nativo, apenas 16 K para 8008 e 64 K para 8080, muito pequenos para muitos sistemas de software complexos sem usar algum tipo de comutação de banco , segmentação de memória ou mecanismo semelhante (que foi integrado ao 8086 , alguns anos mais tarde). A Intel agora pretendia construir um sistema completo sofisticado em alguns chips LSI, que fosse funcionalmente igual ou melhor do que os melhores minicomputadores e mainframes de 32 bits que exigiam gabinetes inteiros de chips mais antigos. Este sistema suportaria multiprocessadores, expansão modular, tolerância a falhas, sistemas operacionais avançados, linguagens de programação avançadas, aplicativos muito grandes, ultra confiabilidade e ultra segurança. Sua arquitetura atenderia às necessidades dos clientes da Intel por uma década.

A equipe de desenvolvimento iAPX 432 foi gerenciada por Bill Lattin, com Justin Rattner como o engenheiro-chefe (embora uma fonte afirme que Fred Pollack era o engenheiro-chefe). (Rattner mais tarde se tornaria CTO da Intel.) Inicialmente, a equipe trabalhava em Santa Clara, mas em março de 1977 Lattin e sua equipe de 17 engenheiros se mudaram para o novo local da Intel em Portland. Pollack mais tarde se especializou em superscalaridade e se tornou o arquiteto-chefe do chip i686 Intel Pentium Pro .

Logo ficou claro que seriam necessários vários anos e muitos engenheiros para projetar tudo isso. E da mesma forma seriam necessários vários anos de progresso na Lei de Moore , antes que a fabricação aprimorada de chips pudesse encaixar tudo isso em alguns chips densos. Enquanto isso, a Intel precisava urgentemente de um produto provisório mais simples para enfrentar a concorrência imediata da Motorola , Zilog e National Semiconductor . Portanto, a Intel começou um projeto apressado para projetar o 8086 como uma evolução incremental de baixo risco a partir do 8080, usando uma equipe de design separada. O 8086 para o mercado de massa foi lançado em 1978.

O 8086 foi projetado para ser compatível com as versões anteriores do 8080, no sentido de que a linguagem assembly do 8080 poderia ser mapeada para a arquitetura do 8086 usando um assembler especial . O código-fonte do assembly 8080 existente (embora nenhum código executável ) foi, portanto, tornado compatível com o novo 8086 até certo ponto. Em contraste, o 432 não tinha compatibilidade de software ou requisitos de migração. Os arquitetos tinham total liberdade para fazer um projeto inovador do zero, usando quaisquer técnicas que considerassem melhores para sistemas e softwares em grande escala. Eles aplicaram conceitos modernos de ciência da computação de universidades, especialmente máquinas de capacidade , programação orientada a objetos, máquinas CISC de alto nível, Ada e instruções densamente codificadas. Essa ambiciosa mistura de novos recursos tornou o chip maior e mais complexo. A complexidade do chip limitou a velocidade do clock e alongou o cronograma de design.

O núcleo do projeto - o processador principal - foi denominado General Data Processor ( GDP ) e construído como dois circuitos integrados : um (o 43201) para buscar e decodificar instruções, o outro (o 43202) para executá-las. A maioria dos sistemas também incluiria o 43203 Interface Processor ( IP ), que operava como um controlador de canal para E / S , e um Attached Processor ( AP ), um Intel 8086 convencional que fornecia "poder de processamento no subsistema de E / S".

Esses foram alguns dos maiores designs da época. O PIB de dois chips tinha uma contagem combinada de aproximadamente 97.000  transistores, enquanto o IP de chip único tinha aproximadamente 49.000. Em comparação, o Motorola 68000 (lançado em 1979) tinha aproximadamente 40.000 transistores.

Em 1983, a Intel lançou dois circuitos integrados adicionais para a arquitetura de interconexão iAPX 432: a unidade de interface de barramento 43204 ( BIU ) e a unidade de controle de memória 43205 ( MCU ). Esses chips permitiam sistemas multiprocessadores quase sem cola com até 63 nós.

As falhas do projeto

Alguns dos recursos inovadores do iAPX 432 prejudicaram o bom desempenho. Em muitos casos, o iAPX 432 tinha um throughput de instrução significativamente mais lento do que os microprocessadores convencionais da época, como o National Semiconductor 32016 , Motorola 68010 e Intel 80286 . Um problema era que a implementação do GDP em dois chips o limitava à velocidade da fiação elétrica da placa-mãe. Um problema maior era que a arquitetura de capacidade precisava de grandes caches associativos para funcionar com eficiência, mas os chips não tinham espaço para isso. O conjunto de instruções também usou instruções de comprimento variável alinhadas com bits em vez dos formatos de bytes semifixos ou alinhados com palavras usuais usados ​​na maioria dos projetos de computador. A decodificação da instrução era, portanto, mais complexa do que em outros projetos. Embora isso não tenha prejudicado o desempenho em si, ele usou transistores adicionais (principalmente para um grande barril shifter ) em um projeto que já estava com falta de espaço e transistores para caches, barramentos mais largos e outros recursos voltados para o desempenho. Além disso, a BIU foi projetada para oferecer suporte a sistemas tolerantes a falhas e, ao fazer isso, até 40% do tempo do barramento foi retido em estados de espera .

Outro grande problema era seu compilador Ada imaturo e desafinado . Ele usava instruções orientadas a objetos de alto custo em todos os casos, em vez das instruções escalares mais rápidas, onde faria sentido fazê-lo. Por exemplo, o iAPX 432 incluía uma instrução de chamada de procedimento inter-módulo muito cara , que o compilador usava para todas as chamadas, apesar da existência de instruções de desvio e link muito mais rápidas. Outra chamada muito lenta foi enter_environment, que configurou a proteção da memória. O compilador executou isso para cada variável no sistema, mesmo quando as variáveis ​​eram usadas dentro de um ambiente existente e não precisavam ser verificadas. Para piorar as coisas, os dados passados ​​de e para os procedimentos sempre foram passados por retorno de valor, em vez de por referência. Ao executar o benchmark Dhrystone , a passagem de parâmetros demorou dez vezes mais do que todos os outros cálculos combinados.

De acordo com o New York Times , "o i432 rodou 5 a 10 vezes mais devagar do que seu concorrente, o Motorola 68000".

Impacto e projetos semelhantes

O iAPX 432 foi um dos primeiros sistemas a implementar o novo padrão IEEE-754 para aritmética de ponto flutuante.

Um resultado da falha do 432 foi que os projetistas do microprocessador concluíram que o suporte do objeto no chip leva a um projeto complexo que invariavelmente funcionará lentamente, e o 432 foi frequentemente citado como um contra-exemplo pelos proponentes dos projetos RISC . No entanto, alguns sustentam que o suporte OO não era o principal problema com o 432 e que as deficiências de implementação (especialmente no compilador) mencionadas acima tornariam qualquer projeto de CPU lento. Desde o iAPX 432, houve apenas uma outra tentativa de design semelhante, o processador Rekursiv , embora o suporte de processo do Transputer INMOS fosse semelhante - e muito rápido.

A Intel havia gasto considerável tempo, dinheiro e mentalidade no 432, tinha uma equipe habilidosa dedicada a ele e não estava disposta a abandoná-lo totalmente após seu fracasso no mercado. Um novo arquiteto - Glenford Myers - foi contratado para produzir uma arquitetura e implementação inteiramente novas para o processador central, que seria construído em um projeto conjunto Intel / Siemens (mais tarde BiiN ), resultando nos processadores da série i960 . O subconjunto RISC i960 tornou-se popular por um tempo no mercado de processadores embarcados, mas o 960MC de ponta e o 960MX com memória marcada foram comercializados apenas para aplicações militares.

De acordo com o New York Times , a colaboração da Intel com a HP no processador Merced (mais tarde conhecido como Itanium) foi a tentativa de retorno da empresa para o mercado de ponta.

Arquitetura

As instruções iAPX 432 têm comprimento variável, entre 6 e 321 bits. Excepcionalmente, eles não são alinhados por byte, ou seja, podem conter números ímpares de bits e se seguirem diretamente, independentemente dos limites dos bytes.

Memória orientada a objetos e recursos

O iAPX 432 possui suporte de hardware e microcódigo para programação orientada a objetos e endereçamento baseado em capacidade . O sistema usa memória segmentada , com até 2 24 segmentos de até 64  KB cada, fornecendo um espaço de endereço virtual total de 2 40 bytes. O espaço de endereço físico é 2 24 bytes (16  MB ).

Os programas não podem fazer referência a dados ou instruções por endereço; em vez disso, eles devem especificar um segmento e um deslocamento dentro do segmento. Os segmentos são referenciados por descritores de acesso (ADs) , que fornecem um índice na tabela de objetos do sistema e um conjunto de direitos ( recursos ) que regem os acessos a esse segmento. Os segmentos podem ser "segmentos de acesso", que podem conter apenas descritores de acesso, ou "segmentos de dados" que não podem conter anúncios. O hardware e o microcódigo impõem rigidamente a distinção entre dados e segmentos de acesso e não permitem que o software trate os dados como descritores de acesso ou vice-versa.

Os objetos definidos pelo sistema consistem em um único segmento de acesso ou um segmento de acesso e um segmento de dados. Os segmentos definidos pelo sistema contêm dados ou descritores de acesso para dados definidos pelo sistema em deslocamentos designados, embora o sistema operacional ou o software do usuário possa estendê-los com dados adicionais. Cada objeto do sistema possui um campo de tipo que é verificado por microcódigo, de modo que um Objeto de Porta não pode ser usado onde um Objeto de Portadora é necessário. Os programas do usuário podem definir novos tipos de objetos que obterão todos os benefícios da verificação do tipo de hardware, por meio do uso de objetos de controle de tipo (TCOs) .

Na versão 1 da arquitetura iAPX 432, um objeto definido pelo sistema normalmente consistia em um segmento de acesso e, opcionalmente (dependendo do tipo de objeto), um segmento de dados especificado por um descritor de acesso em um deslocamento fixo dentro do segmento de acesso.

Na versão 3 da arquitetura, para melhorar o desempenho, os segmentos de acesso e os segmentos de dados foram combinados em segmentos únicos de até 128 kB, divididos em uma parte de acesso e uma parte de dados de 0-64 KB cada. Isso reduziu drasticamente o número de pesquisas na tabela de objetos e dobrou o espaço de endereço virtual máximo.

O iAPX432 reconhece quatorze tipos de objetos de sistema predefinidos :

  • objeto de instrução contém instruções executáveis
  • objeto de domínio representa um módulo de programa e contém referências a sub-rotinas e dados
  • objeto de contexto representa o contexto de um processo em execução
  • objeto de definição de tipo representa um tipo de objeto definido por software
  • objeto de controle de tipo representa privilégio específico de tipo
  • tabela de objetos identifica a coleção do sistema de descritores de objetos ativos
  • objeto de recurso de armazenamento representa um pool de armazenamento gratuito
  • objeto de armazenamento físico identifica blocos de armazenamento livre na memória
  • o objeto de declaração de armazenamento limita o armazenamento que pode ser alocado por todos os objetos de recurso de armazenamento associados
  • objeto de processo identifica um processo em execução
  • O objeto port representa uma porta e uma fila de mensagens para comunicação entre processos
  • As operadoras transportam mensagens de e para os portos
  • processador contém informações de estado para um processador no sistema
  • objeto de comunicação do processador é usado para comunicação entre processadores

Coleta de lixo

O software em execução no 432 não precisa desalocar explicitamente objetos que não são mais necessários. Em vez disso, o microcódigo implementa parte da parte de marcação do algoritmo de coleta de lixo paralela em tempo real de Edsger Dijkstra (um coletor de estilo marcar e varrer ). As entradas na tabela de objetos do sistema contêm os bits usados ​​para marcar cada objeto como sendo branco, preto ou cinza conforme necessário para o coletor. O sistema operacional iMAX 432 inclui a parte do software do coletor de lixo.

Formato de instrução

As instruções executáveis ​​estão contidas em um "objeto de instrução" do sistema. Como as instruções são alinhadas por bit, um deslocamento de 16 bits no objeto de instrução permite que o objeto contenha até 8.192 bytes de instruções (65.536 bits).

As instruções consistem em um operador , consistindo em uma classe e um opcode e de zero a três referências de operando . “Os campos são organizados para apresentar as informações ao processador na sequência necessária para a decodificação”. Os operadores usados ​​com mais frequência são codificados usando menos bits. A instrução começa com o campo de classe de 4 ou 6 bits que indica o número de operandos, chamado de ordem da instrução, e o comprimento de cada operando. Isso é opcionalmente seguido por um campo de formato de 0 a 4 bits que descreve os operandos (se não houver operandos, o formato não está presente). Em seguida, vêm de zero a três operandos, conforme descrito pelo formato. A instrução é encerrada pelo opcode de 0 a 5 bits, se houver (algumas classes contêm apenas uma instrução e, portanto, não têm opcode). "O campo Formato permite que o PIB apareça para o programador como uma arquitetura de zero, um, dois ou três endereços." O campo de formato indica que um operando é uma referência de dados ou o elemento do topo ou próximo ao topo da pilha de operandos.

Veja também

  • iAPX , para o nome iAPX

Notas

Referências

links externos