Por que há uma perda de potência do processador ao emular programas de 32 bits em um sistema de 64 bits?

Por que há uma perda de potência do processador ao emular programas de 32 bits em um sistema de 64 bits?

Pode ser uma pergunta estúpida, mas não consigo encontrar uma resposta clara.

CPU host = CPU emulada

Pentium Pro 200 MHz = 286 6 MHz

Pentium II 350 MHz = 386SX 25 MHz

Pentium III 1,0 GHz = 486 66 MHz

Pentium 4 3,0 GHz = Pentium 133 MHz

Core 2 Duo 3,3 GHz = Pentium II 300 MHz

Core i5 4xxx 4,0 GHz = Pentium III 500 GHz

de acordo comisso aqui

Responder1

Tudo isso depende do emulador que você está usando. Mas o ponto principal é que um emulador usa software para fazer o trabalho do hardware - ou seja, ele não executa o código assembly diretamente no hardware, mas sim no software.

Em outras palavras, não se trata simplesmente de executar código de 32 bits em um sistema de 64 bits (que realmente não tem sobrecarga), é na verdade um software fingindo ser hardware, que é abstraído do hardware real)

Responder2

A emulação requer a criação de um computador em software. Isso inclui uma CPU, memória e todo o hardware auxiliar necessário para fazer um computador o mais próximo possível do hardware real.

Cada instrução da CPU é examinada e convertida para a linguagem usada pela CPU emulada antes de ser executada na CPU hospedeira. Isso énão é o mesmo que executar código diretamente na CPU hostporque a CPU é uma construção de software totalmente isolada da CPU host.

Esse isolamento torna adequado que o computador emulado seja movido para qualquer outro sistema, mesmo com um tipo de CPU totalmente diferente, pois é independente da CPU host e depende apenas do software de emulação. A CPU host e as máquinas emuladas podem ter CPUs totalmente diferentes.

Esta não é "apenas" uma máquina de 64 bits agindo como uma máquina de 32 bits, é uma máquina de 64 bits executando uma CPU inteiraem softwareem cima de uma CPU real.

A alternativa à emulação é a virtualização. Na virtualização, o software emula apenas o hardware e as interfaces relacionadas ao redor da CPU e não a própria CPU. O código é executado diretamente na CPU do host, resultando em velocidades quase nativas, ao custo de exigir a mesma arquitetura de CPU na máquina host e na máquina convidada.

informação relacionada