x86 et ARM: peuvent-ils fonctionner sur un PC en même temps?

Les appareils PostPC ont dû remplacer les PC, cela a été dit il y a quelques années. À la fin? Nous travaillons avec des appareils qui parlent différentes langues et dans certains cas, ils nous obligent à basculer entre différents appareils à tout moment. Mais avec l'arrivée future de BRASsur PC, nous nous demandons si nous verrons des processeurs mixtes avec x86.

D'une part, nous avons les PC dont les programmes sont compilés pour l'ensemble x86 de registres et d'instructions, d'autre part, nous avons les dispositifs dits PostPC, dont les applications parlent en ARM. Mais, ces derniers temps, les concepteurs de processeurs pour les systèmes PostPC ont montré qu'ils voulaient faire le saut vers le PC, non pas vers x86, mais pour avoir des PC basés sur ARM.

x86 et ARM

Cela a fini par rendre au final deux marchés différents, chacun parlant sa langue et un nombre infini d'applications incompatibles avec un autre système. Le scénario idéal? Avoir un PC avec la capacité d'exécuter les programmes et les systèmes des deux côtés, pour ARM et x86.

Mais est-ce possible? Nous essaierons d'expliquer les problèmes auxquels les architectes seraient confrontés lors de la conception à la fois d'un système hybride et d'un SoC hybride, ainsi que la raison pour laquelle Intel et AMD n'ont pas sorti leur processeur mixte.

AMD et Intel ne sont pas intéressés par un CPU mixte entre ARM et x86

Intel-AMD-ARM

Le premier problème est que la licence x86 est uniquement licenciée par Intel et AMD, donc ces deux sociétés sont les seules capables de faire un Processeur compatible avec les binaires x86. Donc, tout d'abord, nous devons réfléchir un peu à ce qui se passerait si ces entreprises fabriquaient un processeur capable d'exécuter les programmes conçus pour ARM.

Nous devons garder à l'esprit qu'il serait impossible d'exécuter l'environnement sur x86 et sur ARM en même temps, donc la plupart des développeurs sachant que les PC avec x86 pourraient également exécuter du code ARM ne vont pas déranger, petit à petit, le code x86 deviendrait obsolète et ARM augmenterait en pourcentage d'utilisation.

Un monde dans lequel les gens n'utilisent pas de programmes x86 est un monde qui n'en vaut pas la peine pour Intel et AMD, donc un processeur de leur part capable d'exécuter les deux environnements ne serait pas leur idéal

Déployer x86 et ARM sur un seul système

rendu procesador

Avons-nous un exemple de cela? Oui, nous en avons un qui est dans des dizaines de millions de foyers appelé PlayStation 4, une console dont le processeur principal est un SoC AMD basé sur x86 mais qui possède alors un second processeur avec un processeur ARM. Ce processeur n'est activé que lorsque la console est en mode veille, exécute un système d'exploitation en parallèle et possède le sien RAM mémoire.

L'idée la plus simple pour unifier les deux mondes est de créer un ordinateur qui, en fonction du niveau de consommation requis à tout moment, active un SoC ou un autre, le système est activé d'une manière ou d'une autre, mais cela signifie que deux systèmes sont présents dans le même ordinateur et la conception de l'ensemble du système de distribution d'énergie pour les deux systèmes, ce qui n'est pas une tâche ardue.

L'autre problème viendrait de l'utilisation des périphériques d'E / S du système, tous devraient être disponibles pour les processeurs des deux ISA, donc soit le matériel qui accède aux périphériques est dupliqué, soit un élément commun est créé. , ce qui entre en conflit avec les différentes manières dont chaque type de processeur leur parle.

Deux ISA fonctionnant en même temps sur un même SoC, est-ce possible?

BRAS x86

S'il y a quelque chose qui caractérise les SoC, ce n'est pas seulement que tous les composants sont sur la même puce, mais qu'ils partagent tous le même accès mémoire, mais que se passe-t-il lorsque deux processeurs ne comprennent pas le même langage? Eh bien, ce n'est pas un problème puisque les SoC ont dans leurs GPU une manière différente de celle du CPU pour lire les binaires, il suffit de marquer dans la mémoire l'adressage quelle partie est pour ARM et quelle partie est pour x86.

Cela semble facile, n'est-ce pas? Eh bien non, la raison en est que x86 est Little Endian, ce qui signifie qu'il passe par la mémoire de l'adresse mémoire la plus basse à la plus élevée, ARM est Bi-Endian donc les programmes peuvent démarrer aux deux extrémités et monter ou descendre selon le cas . En principe, il serait facile d'associer un point de terminaison à chaque ISA, mais il existe des systèmes d'exploitation pour ARM qui fonctionnent dans Little Endian.

Routage PCB

L'autre problème est le fait que la RAM est conçue pour servir un processeur en même temps, donc si nous avons deux processeurs accédant en même temps, l'un contiendrait un conflit sur l'autre pour accéder à la mémoire, donc les applications conçues pour les deux ISA ne pas fonctionner avec la même facilité, sans compter que les ressources partagées entre les deux au sein du SoC le feraient également.

Alors. Comment se fait-il qu'un GPU peut partager de l'espace avec un processeur en douceur? Eh bien, pour le simple fait que les GPU, bien qu'ils manipulent des données et exécutent des programmes, ne sont pas conçus pour exécuter un système d'exploitation, et l'existence d'un système d'exploitation complètement schizophrène qui peut être compris avec deux architectures en même temps est impossible. Où chacun a sa propre façon d'adresser la mémoire et d'accéder aux périphériques.