PostPC-Geräte mussten PCs ersetzen, das wurde vor einigen Jahren gesagt. Am Ende? Wir arbeiten mit Geräten, die verschiedene Sprachen sprechen, und in einigen Fällen zwingen sie uns, jederzeit zwischen verschiedenen Geräten zu wechseln. Aber mit der zukünftigen Ankunft von ARM-basierte PCs Wir fragen uns, ob wir gemischte Prozessoren mit x86 sehen werden.
Einerseits haben wir die PCs, deren Programme für den x86-Satz von Registern und Anweisungen kompiliert sind, andererseits haben wir die sogenannten PostPC-Geräte, deren Anwendungen in ARM sprechen. In jüngster Zeit haben die Entwickler von Prozessoren für PostPC-Systeme jedoch gezeigt, dass sie den Sprung zum PC schaffen wollen, nicht zu x86, sondern zu PCs, die auf ARM basieren.
Dies hat letztendlich dazu geführt, dass es zwei verschiedene Märkte gibt, von denen jeder seine Sprache spricht und eine endlose Anzahl von Anwendungen, die mit einem anderen System nicht kompatibel sind. Das ideale Szenario? Einen PC mit der Möglichkeit, die Programme und Systeme auf beiden Seiten für ARM und x86 auszuführen.
Aber ist das möglich? Wir werden versuchen, die Probleme zu erklären, mit denen Architekten beim Entwurf eines Hybridsystems und eines Hybrid-SoC konfrontiert sind, sowie den Grund dafür Intel und AMD haben ihren gemischten Prozessor nicht freigegeben.
AMD und Intel sind nicht an einer gemischten CPU zwischen ARM und x86 interessiert
Das erste Problem ist, dass die x86-Lizenz nur von Intel und AMD lizenziert wird, sodass diese beiden Unternehmen die einzigen sind, die eine Lizenz herstellen können CPU kompatibel mit x86-Binärdateien. Zunächst müssen wir uns ein wenig überlegen, was passieren würde, wenn diese Unternehmen eine CPU herstellen würden, die die für ARM entwickelten Programme ausführen kann.
Wir müssen bedenken, dass es unmöglich ist, die Umgebung auf x86 und auf ARM gleichzeitig auszuführen, sodass die meisten Entwickler, die wissen, dass PCs mit x86 auch ARM-Code ausführen können, den Code nicht nach und nach stören werden x86 würde veraltet sein und ARM würde in Prozent der Nutzung zunehmen.
Eine Welt, in der Menschen keine x86-Programme verwenden, ist eine Welt, die sich für Intel und AMD nicht lohnt. Ein Prozessor, der beide Umgebungen ausführen kann, wäre daher nicht ideal
Bereitstellen von x86 und ARM auf einem einzelnen System
Haben wir ein Beispiel dafür? Ja, wir haben eine, die in zig Millionen von Häusern genannt wird Playstation 4 eine Konsole, deren Hauptprozessor ein AMD-SoC ist, der auf x86 basiert, dann aber einen zweiten Prozessor mit einem ARM-Prozessor hat. Dieser Prozessor wird nur aktiviert, wenn sich die Konsole im Standby-Modus befindet, ein Betriebssystem parallel ausführt und über ein eigenes verfügt RAM Speicher.
Die einfachste Idee, beide Welten zu vereinen, besteht darin, einen Computer zu erstellen, der je nach dem zu jedem Zeitpunkt erforderlichen Verbrauch den einen oder anderen SoC aktiviert und das System auf die eine oder andere Weise aktiviert. Dies bedeutet jedoch, dass zwei Systeme vorhanden sind der gleiche Computer und das Entwerfen des gesamten Stromverteilungssystems für die beiden Systeme, was keine entmutigende Aufgabe ist.
Das andere Problem würde bei der Verwendung der E / A-Geräte des Systems auftreten. Alle sollten für die Prozessoren beider ISAs verfügbar sein, sodass entweder die Hardware, die auf die Peripheriegeräte zugreift, dupliziert oder ein gemeinsames Element erstellt wird. Dies steht im Widerspruch zu den unterschiedlichen Kommunikationsweisen der einzelnen Prozessortypen.
Ist es möglich, dass zwei ISAs gleichzeitig auf einem SoC ausgeführt werden?
Wenn es etwas gibt, das SoCs auszeichnet, befinden sich nicht nur alle Komponenten auf demselben Chip, sondern alle teilen sich denselben Speicherzugriff. Was passiert, wenn zwei Prozessoren nicht dieselbe Sprache verstehen? Nun, das ist kein Problem, da die SoCs in ihren GPUs eine andere Art als die CPU haben, um die Binärdateien zu lesen. Alles, was benötigt wird, ist im Speicher zu markieren, welcher Teil für ARM und welcher Teil für x86 ist.
Klingt einfach, nicht wahr? Nein, der Grund ist, dass x86 Little Endian ist, was bedeutet, dass es den Speicher von der niedrigsten bis zur höchsten Speicheradresse durchläuft. ARM ist Bi-Endian, sodass Programme an beiden Enden starten und je nach Fall nach oben oder unten gehen können . Im Prinzip wäre es einfach, jedem ISA einen Endpunkt zuzuordnen, aber es gibt Betriebssysteme für ARM, die in Little Endian funktionieren.
Das andere Problem ist die Tatsache, dass RAM so ausgelegt ist, dass es gleichzeitig einen Prozessor bedient. Wenn also zwei Prozessoren gleichzeitig zugreifen, würde einer beim Zugriff auf den Speicher einen Konflikt über den anderen enthalten, so dass Anwendungen, die für beide ISAs entwickelt wurden, dies tun würden nicht mit der gleichen Leichtigkeit laufen, ganz zu schweigen davon, dass die Ressourcen, die beide innerhalb des SoC gemeinsam nutzen, dies auch tun würden.
Damit. Wie kommt es, dass a GPU kann Speicherplatz problemlos mit einer CPU geteilt werden? Nun, für die einfache Tatsache, dass GPUs, obwohl sie Daten manipulieren und Programme ausführen, nicht für die Ausführung eines Betriebssystems ausgelegt sind und die Existenz eines vollständig schizophrenen Betriebssystems, das mit zwei Architekturen gleichzeitig verstanden werden kann, unmöglich ist. Wo jeder seine eigene Art hat, Speicher zu adressieren und auf Peripheriegeräte zuzugreifen.