ARQUITETURA DE CONJUNTO DE INSTRUÇÕES (Instruction Set Architecture - ISA)

A. A fronteira abstrata entre o hardware e o software. Define o conjunto de atributos da máquina que são visíveis ao programador de nível de sistema ou ao compilador: o repertório de instruções, os tipos de dados nativos, os modos de endereçamento, a organização da memória e o modelo de registros. É o "contrato" que o hardware estabelece com o software: "Se me deres esta sequência de bits, realizarei esta operação aritmética".

B. O vocabulário fundamental de um computador. Enquanto a microarquitetura determina como o processador é construído internamente (circuitos, pipelines, transistores), a ISA determina o que o processador pode fazer do ponto de vista lógico. Uma ISA define a "linguagem de máquina" antes de qualquer tradução ou interpretação. Exemplos notáveis: x86 (dominante em PCs), ARM (dominante em dispositivos móveis), RISC-V (aberta e acadêmica).

C. Uma norma de compatibilidade binária. A ISA permite que diferentes implementações físicas (chips fabricados por empresas diferentes ou em anos diferentes) executem o mesmo código binário. Assim, um processador Intel e um processador AMD, embora radicalmente diferentes na sua microarquitetura interna (engenharia elétrica), partilham a mesma ISA (x86-64), permitindo que o mesmo sistema operacional funcione em ambos.


Crítica

Exite uma distinção fundamental entre ISA e Microarquitetura. A ISA é uma abstração durável. O conjunto de instruções x86 mantém-se, na sua essência, compatível desde o final da década de 1970. O software escrito para um processador 8086 (1978) pode, teoricamente, ainda ser executado num processador moderno, porque a ISA foi preservada e estendida, não substituída. A Microarquitetura é uma implementação efêmera e mutável. Para manter a ISA estável, os engenheiros alteram radicalmente o interior do chip (adicionando execução fora de ordem, predição de desvios, execução especulativa). O processador moderno é, em certo sentido, um emulador de hardware extremamente rápido da sua própria ISA.


Observações

Historicamente, as ISAs dividem-se em duas grandes filosofias de design:

CISC (Complex Instruction Set Computer): A filosofia (ex: x86) de que o hardware deve fornecer instruções complexas e poderosas (capazes de realizar múltiplas operações de baixo nível num único comando), facilitando a vida do programador de Assembly e poupando memória (o código fica mais denso).

RISC (Reduced Instruction Set Computer): A filosofia (ex: ARM, MIPS, RISC-V) de que o hardware deve ser simples e executar apenas instruções muito básicas e rápidas num ciclo regular. A complexidade é transferida para o software (compilador), que deve combinar estas instruções simples para realizar tarefas complexas.

A convergência tecnológica moderna tornou esta distinção menos nítida na implementação (processadores CISC modernos traduzem internamente as suas instruções complexas em micro-operações semelhantes a RISC), mas a distinção mantém-se válida ao nível da definição da ISA.