Isso me confundiu desde que comecei a construir um PC. Jogos e aplicativos são fornecidos como arquivos binários executáveis, mas como posso utilizar totalmente os conjuntos de instruções avançadas da minha CPU. Deve haver diferença entre os processadores Intel e AMD, mas na página de download eles só se preocupam com o seu sistema operacional. O sistema operacional fornece uma camada de abstração para todas as especificações?
relate perguntas
-
Velocidade do processador limitada a 0,4 GHz
-
Por que a formatação ganhou 7 computadores para o Windows 10 dobrou sua pontuação no banco de cpu-z?
-
Core i7 executa muito mal? [fechado]
-
O virtualbox requer uma CPU para suportar VT-d para hospedar sistemas operacionais convidados de 64 bits?
-
LGA1151 dimensões físicas?
Há muito pouco. Todas as CPUs Intel de 64 bits usam essencialmente o conjunto de instruções "AMD64", com apenas pequenas diferenças entre AMD64 e EM64T da Intel.
(Claro, a arquitetura subjacente real é completamente diferente, mas o microcódigo oculta tudo da visão externa. A única coisa que o sistema operacional vê são as instruções x86 ou AMD64.)
Embora as CPUs mais novas geralmente suportem mais instruções do que as mais antigas, mesmo dentro da mesma arquitetura de base, muitas vezes a diferença realmente importa apenas para casos específicos, para que o software possa ser criado para usar automaticamente a melhor variante. (Por exemplo, as bibliotecas TLS detectarão automaticamente se o sistema tem suporte para instruções AES)
O próprio AMD64 foi construído a partir do próprio conjunto de instruções "x86" de 32 bits da Intel e ainda se enquadra na "arquitetura Intel" como um termo geral. (A AMD vem construindo CPUs compatíveis com Intel desde o Am486.)
A Intel tentou criar uma arquitetura totalmente nova de 64 bits, Itanium (IA64), mas fracassou.
Existem outras arquiteturas incompatíveis, sendo a Arm64 a mais proeminente e, sim, a falta de executáveis binários para elas costuma ser um problema.
De um modo geral, eles não.
Mas há casos específicos em que eles fazem - por exemplo, o macOS da Apple fazia tradução automática para binários antigos do PowerPC ao rodar em CPUs Intel e agora faz tradução automática para binários Intel ao rodar no Apple Silicon (que é Arm64).
Da mesma forma, o Windows costumava fornecer emulação x86 no Alpha e agora fornece emulação x86 e Arm32 no Arm64.
O Linux não emula nada por padrão, especialmente porque a maioria dos softwares pode ser recompilada (as distribuições geralmente constroem pacotes para algumas arquiteturas), mas tem "qemu-user" disponível para várias arquiteturas.
Por fim, os programas construídos em plataformas de "bytecode", como .NET ou Java, são mais ou menos de arquitetura cruzada por padrão.