IA-32 - IA-32

IA-32 (abreviação de " Intel Architecture, 32-bit ", às vezes também chamada de i386 ) é a versão de 32 bits da arquitetura do conjunto de instruções x86 , projetada pela Intel e implementada pela primeira vez no microprocessador 80386 em 1985. IA-32 é a primeira encarnação do x86 que oferece suporte à computação de 32 bits; como resultado, o termo "IA-32" pode ser usado como metonímia para se referir a todas as versões x86 que oferecem suporte à computação de 32 bits.

Dentro de várias diretivas de linguagem de programação , IA-32 ainda é algumas vezes referido como a arquitetura "i386". Em alguns outros contextos, certas iterações do IA-32 ISA às vezes são rotuladas como i486, i586 e i686, referindo-se aos superconjuntos de instruções oferecidos pelas microarquitetura 80486 , P5 e P6, respectivamente. Essas atualizações ofereceram vários acréscimos junto com o conjunto básico IA-32, ou seja, recursos de ponto flutuante e as extensões MMX .

Intel foi historicamente o maior fabricante de processadores IA-32, com o segundo maior fornecedor tendo sido a AMD . Durante a década de 1990, VIA , Transmeta e outros fabricantes de chips também produziram processadores compatíveis com IA-32 (por exemplo, WinChip ). Na era moderna, a Intel ainda produz processadores IA-32 sob a plataforma de microcontrolador Intel Quark ; no entanto, desde os anos 2000, a maioria dos fabricantes (incluindo Intel) mudou quase que exclusivamente para a implementação de CPUs baseadas na variante de 64 bits do x86, x86-64 . x86-64, por especificação, oferece modos de operação legados que operam no IA-32 ISA para compatibilidade com versões anteriores. Mesmo considerando a prevalência contemporânea de x86-64, a partir de 2018, versões de modo protegido IA-32 de muitos sistemas operacionais modernos ainda são mantidas, por exemplo, Microsoft Windows e a distribuição Debian Linux . Apesar do nome IA-32 (e causando alguma confusão potencial), a evolução de 64 bits do x86 que se originou da AMD não seria conhecida como "IA-64", esse nome pertencente à arquitetura Itanium da Intel .

Características arquitetônicas

A principal característica definidora de IA-32 é a disponibilidade de registros de processador de uso geral de 32 bits (por exemplo, EAX e EBX), operações lógicas e aritméticas inteiras de 32 bits, deslocamentos de 32 bits dentro de um segmento no modo protegido e a tradução de endereços segmentados para endereços lineares de 32 bits. Os designers também aproveitaram a oportunidade para fazer outras melhorias. Algumas das mudanças mais significativas são descritas a seguir.

Capacidade de número inteiro de 32 bits
Todos os registradores de uso geral (GPRs) são expandidos de 16  bits para 32 bits, e todas as operações aritméticas e lógicas, operações de memória para registro e registro para memória, etc., podem operar diretamente em inteiros de 32 bits. Pushes e pops na pilha são padronizados para passos de 4 bytes e os ponteiros não segmentados têm 4 bytes de largura.
Modos de endereçamento mais gerais
Qualquer GPR pode ser usado como um registro base, e qualquer GPR diferente de ESP pode ser usado como um registro de índice, em uma referência de memória. O valor do registro do índice pode ser multiplicado por 1, 2, 4 ou 8 antes de ser adicionado ao valor do registro base e deslocamento.
Registros de segmento adicionais
Dois registros de segmento adicionais, FS e GS, são fornecidos.
Maior espaço de endereço virtual
A arquitetura IA-32 define um formato de endereço segmentado de 48 bits, com um número de segmento de 16 bits e um deslocamento de 32 bits dentro do segmento. Os endereços segmentados são mapeados para endereços lineares de 32 bits.
Paginação por demanda
Os endereços lineares de 32 bits são endereços virtuais em vez de endereços físicos; eles são traduzidos para endereços físicos por meio de uma tabela de páginas . Nos processadores 80386, 80486 e Pentium originais , o endereço físico era de 32 bits; no Pentium Pro e nos processadores posteriores, a Extensão do Endereço Físico permitia endereços físicos de 36 bits, embora o tamanho do endereço linear ainda fosse de 32 bits.

Modos de operação

Modo operacional Sistema operacional necessário Tipo de código sendo executado Tamanho de endereço padrão Tamanho padrão do operando Largura típica de GPR
Modo protegido Sistema operacional de 32 bits ou carregador de boot Código de modo protegido de 32 bits 32 bits 32 bits 32 bits
Sistema operacional de modo protegido de 16 bits ou carregador de boot ou carregador de boot de 32 bits Código de modo protegido de 16 bits 16 bits 16 bits 16 ou 32 bits
Modo 8086 virtual Sistema operacional de modo protegido de 16 ou 32 bits Código de modo real de 16 bits 16 bits 16 bits 16 ou 32 bits
Modo real Sistema operacional de modo real de 16 bits ou carregador de boot ou carregador de boot de 32 bits Código de modo real de 16 bits 16 bits 16 bits 16 ou 32 bits
Modo irreal Sistema operacional de modo real de 16 bits ou carregador de boot ou carregador de boot de 32 bits Código de modo real de 16 bits 32 bits 16 bits 16 ou 32 bits

Veja também

Referências