x86 e ARM: eles podem funcionar em um PC ao mesmo tempo?

Os dispositivos PostPC tiveram que substituir os PCs, isso foi dito alguns anos atrás. No fim? Estamos trabalhando com dispositivos que falam idiomas diferentes e, em alguns casos, eles nos obrigam a alternar entre dispositivos diferentes o tempo todo. Mas com a futura chegada de ARMPCs baseados em nós nos perguntamos se veremos processadores mistos com x86.

Por um lado temos os PCs cujos programas são compilados para o conjunto de registros e instruções x86, por outro lado temos os chamados dispositivos PostPC, cujas aplicações falam em ARM. Mas, recentemente, os projetistas de processadores para sistemas PostPC mostraram que desejam dar o salto para o PC, não para o x86, mas para ter PCs baseados em ARM.

x86 e ARM

Isso acabou fazendo com que no final existam dois mercados distintos, cada um falando sua língua e uma infinidade de aplicativos incompatíveis com outro sistema. O cenário ideal? Ter um PC com a capacidade de executar os programas e sistemas em ambos os lados, para ARM e x86.

Mas isso é possível? Tentaremos explicar os problemas que os arquitetos enfrentariam ao projetar um sistema híbrido e um SoC híbrido, bem como a razão pela qual Intel e AMD não lançaram seu processador misto.

AMD e Intel não estão interessadas em uma CPU mista entre ARM e x86

Intel-AMD-ARM

O primeiro problema é que a licença x86 é licenciada apenas pela Intel e AMD, então essas duas empresas são as únicas capazes de fazer um CPU compatível com binários x86. Então, antes de tudo, devemos pensar um pouco no que aconteceria se essas empresas fizessem uma CPU capaz de executar os programas projetados para ARM.

Devemos ter em mente que seria impossível rodar o ambiente em x86 e em ARM ao mesmo tempo, então a maioria dos desenvolvedores sabendo que PCs com x86 também poderiam rodar código ARM não vão incomodar, aos poucos, o código O x86 se tornaria obsoleto e o ARM aumentaria em porcentagem de uso.

Um mundo em que as pessoas não usam programas x86 é um mundo que não vale a pena para a Intel e a AMD, então um processador da parte deles que pode rodar os dois ambientes não seria o ideal

Implantar x86 e ARM em um único sistema

processador de renderização

Temos um exemplo disso? Sim, temos um que está em dezenas de milhões de lares chamados PlayStation 4, um console cujo processador principal é um AMD SoC baseado em x86, mas tem um segundo processador com um processador ARM. Este processador só é ativado quando o console está em modo stand-by, executa um sistema operacional em paralelo e possui seu próprio RAM memória.

A ideia mais simples para unificar os dois mundos é criar um computador que, dependendo do nível de consumo necessário em todos os momentos, ative um SoC ou outro, o sistema é ativado de uma forma ou de outra, mas isso significa que dois sistemas estão presentes em o mesmo computador e projetar todo o sistema de distribuição de energia para os dois sistemas, o que não é uma tarefa assustadora.

O outro problema seria o uso dos dispositivos de E / S do sistema, todos eles deveriam estar disponíveis para os processadores de ambos os ISAs, de forma que ou o hardware que acessa os periféricos seja duplicado ou um elemento comum seja criado. , que entra em conflito com as diferentes maneiras como cada tipo de processador se comunica com eles.

Duas ISAs em execução ao mesmo tempo em um SoC, é possível?

ARM x86

Se há algo que caracteriza os SoCs, não é apenas que todos os componentes estão no mesmo chip, mas que todos compartilham o mesmo acesso à memória, mas o que acontece quando dois processadores não entendem a mesma linguagem? Bem, isso não é um problema, já que os SoCs têm em suas GPUs uma forma diferente da CPU para ler os binários, basta marcar no endereçamento da memória qual parte é para ARM e qual parte é para x86.

Parece fácil, não é? Bem, não, a razão é que o x86 é Little Endian, o que significa que ele passa pela memória do endereço de memória mais baixo para o mais alto, ARM é Bi-Endian, então os programas podem iniciar em ambas as extremidades e aumentar ou diminuir dependendo do caso . Em princípio, seria fácil associar um endpoint a cada ISA, mas existem sistemas operacionais para ARM que funcionam no Little Endian.

Roteamento PCB

O outro problema é o fato de que a RAM é projetada para servir a um processador ao mesmo tempo, então, se tivermos dois processadores acessando ao mesmo tempo, um conteria contenção sobre o outro no acesso à memória, então os aplicativos projetados para ambos os ISAs teriam não rodar com a mesma facilidade, sem mencionar que os recursos compartilhados entre ambos dentro do SoC também fariam isso.

Então. Como é que um GPU pode compartilhar espaço com uma CPU sem problemas? Bem, pelo simples fato de que as GPUs, embora manipulem dados e executem programas, não são projetadas para executar um sistema operacional, e a existência de um sistema operacional completamente esquizofrênico que pode ser compreendido com duas arquiteturas ao mesmo tempo é impossível. Onde cada um tem sua maneira de endereçar memória e acessar periféricos.