Hardwarebeschleunigung: Wie sie die PC-Leistung verbessert

Eine der grundlegenden Fragen, die wir uns von Zeit zu Zeit stellen, ist folgende: CPU fähig, irgendein Programm auszuführen? Wie kommt es, dass es keine PCs gibt, die nur aus einer CPU, ihrem Speicher, Peripheriegeräten und sonst nichts bestehen? Nun, diese Frage hat eine Antwort, nämlich Hardwarebeschleunigung, ein Grundkonzept, dessen Nützlichkeit Sie in diesem Artikel verstehen werden.

Die Hardware zur Unterstützung einer CPU war schon immer vorhanden, sogar vor dem Erscheinen der ersten Heimcomputer und seit der Zeit, als ein Computer ein komplexes Teil war, bei dem eine einfache CPU kein einzelner Chip, sondern ein TTL-Chipsatz auf einer Platine war. Seitdem stellten die Architekten der neuen Systeme fest, dass eine CPU nicht für alle ihr anvertrauten Aufgaben effizient war.

Hardware-Beschleunigung

Das Beispiel des Lautsprechers

Die ersten PCs, die auf den Markt kamen, waren keine PCs, sondern Systeme wie der Commodore PET und der Apple II, die äußerst rudimentär waren, da sie nichts anderes als die Hardware für das Terminal eines Minicomputers waren, sondern mit einer 8-Bit-CPU verbunden waren, in beiden Fällen einem MOS 6502. War der erste IBM-PC besser? In vielerlei Hinsicht ja, aber nicht in Bezug auf die Klangwiedergabe, da auch ein rudimentärer Lautsprecher verwendet wurde.

Altavoz IBM 5150

In diesen ersten Computern gab es keine komplexe Audio-Hardware, nur einen Lautsprecher, der an eine von der CPU gesteuerte 1-Bit-Schnittstelle angeschlossen war, von der Fehlermeldungen ausgegeben wurden. Dies bedeutete, dass jemand, der eine Melodie in einem dieser Prozessoren erstellen wollte, die gesamte Zeit der CPU belegen musste, um das Audio anzuzeigen, da während der Steuerung des Lautsprechers das Hauptprogramm nicht ausgeführt wurde. Dies führte zur Veröffentlichung von Support-Chips für den Sound, die die CPU von der Steuerung des Lautsprechers befreiten und in der Lage waren, viel komplexere und weniger strenge Melodien zu reproduzieren.

Das Beispiel des Lautsprechers hilft uns zu erklären, warum eine CPU Support-Hardware benötigt, egal wie leistungsfähig sie ist und wie banal die auszuführende Aufgabe ist. In diesem Fall werden Signaltöne an einen einfachen rudimentären Lautsprecher gesendet.

Was verstehen wir unter Support-Hardware?

Placa Portátil Desmontada

Support-Hardware ist alle Hardware, die die CPU ersetzt, wenn eine Funktion derselben ausgeführt wird. Es muss berücksichtigt werden, dass wir dabei die Datenkommunikationsschnittstellen mit dem Speicher und den Peripheriegeräten, die in den Grundmodellen einer CPU unabhängig von ihrem Basismodell, sei es Harvard oder Von Neumann, wesentlich sind, vollständig verwerfen.

Die unterstützende Hardware muss daher diese beiden Anforderungen erfüllen:

  • Es muss die CPU von einer Aufgabe befreien, die es sonst ausführen müsste.
  • Bei der Ausführung der Aufgabe muss sie effizienter sein als die, die sie in Bezug auf Zeit, Verbrauch und Kosten ersetzt.
  • Wenn es zeitlich effizienter ist, wird gesagt, dass wir vor einem Fall von Hardwarebeschleunigung stehen.

Daher sollten die Kosten für die Support-Hardware bei der Implementierung auf der Hardware niemals höher sein als die Kosten für die Ausführung auf der CPU. Es ist nicht sinnvoll, Hardware zu implementieren, um etwas zu tun, was ein oder mehrere CPU-Kerne tun können, wenn die Kosten für Transistoren höher sind, und es ist auch nicht sinnvoll, wenn wir von einem höheren Verbrauch sprechen, und noch weniger, wenn die Arbeit nicht niedriger ausgeführt wird Geschwindigkeit.

Obwohl nicht immer die drei Punkte gleichzeitig erreicht werden können, sind die GPUs, die Support-Hardware sind, aber seitdem die Kosten für CPUs überschritten haben, ein Beispiel NVIDIA und AMD Grafikprozessoren mit Größen und Mengen von Transistoren. viel größer als die leistungsstärksten CPUs. GPUs sind das perfekte Beispiel für die Unterstützung von Hardware zur Hardwarebeschleunigung.

Was ist Hardwarebeschleunigung?

Hardware-Beschleunigung

Wir verstehen als Hardwarebeschleunigung, wenn ein Teil davon fremd ist. Normalerweise schafft es die CPU, einen bestimmten Job in einem Teil der Zeit auszuführen, die die CPU ausführen würde. Dies bedeutet, dass dies in kürzerer Zeit erledigt wurde und daher die Ausführung dieses Teils des Codes beschleunigt wurde, daher der Name Hardwarebeschleunigung.

In der Welt des PC-Spielens waren ein Beispiel dafür die ersten 3D-Beschleuniger, die auf dem Markt erschienen. Diese Grafikkarten dienten nur zur Anzeige von 3D-Grafiken und erforderten ein VGA, erzielten jedoch viel höhere Bildraten als die alleinige Verwendung der CPU zum Rendern der Grafiken der Spiele, sodass sie die Aufgabe des Zeichnens der Bilder des Spiels ausführten. Schneller.

Die Beschleunigung tritt nicht nur bei CPUs auf, sondern auch bei GPUs, bei denen wir kürzlich zwei sehr wichtige Änderungen festgestellt haben. Die erste Änderung ist das Hinzufügen von Support-Hardware, um die Berechnung des Schnittpunkts von Strahlen in Ray Tracing zu beschleunigen. Die zweite Änderung ist die Hinzufügung von Tensor-Einheiten, die auf Intermatrix-Berechnungen spezialisiert sind, um AI-basierte Algorithmen zu beschleunigen, die diese Art der Berechnung missbrauchen.

Support-Hardware sollte nicht mit Hardwarebeschleunigung verwechselt werden, da es zwar Support-Hardware gibt, die die Ausführung bestimmter Funktionen beschleunigen kann, andere Hardware die CPU jedoch nur zu geringeren Kosten von einer bestimmten Aufgabe befreit. Bei der Beschleunigung sind Kosteneinsparungen nicht der Hauptfaktor, sondern die Geschwindigkeit, mit der die Aufgabe ausgeführt wird.

Amdahls Gesetz und Hardwarebeschleunigung

Ley Amdahl

Der gesamte Code in einem Programm kann in zwei Teile unterteilt werden:

  • Ein serieller Teil, der nicht parallelisiert werden kann und von der Leistung des Kernels abhängt, der ihn ausführt.
  • Ein Teil, der mit mehreren Daten parallel arbeitet und mehreren Prozessoren oder sogar unterstützender Hardware zugewiesen werden kann

Ursprünglich funktionierten viele Algorithmen nur auf CPUs, aber es wurde ihnen klar, dass es viel besser war, die Fähigkeiten von GPUs zu nutzen, um Zahlen parallel zu knacken. Zu diesem Zeitpunkt wurden die Programme nicht mehr für die Ausführung auf der CPU erstellt GPU um den Teil des Codes parallel zu beschleunigen.

Obwohl die Programme, die wir auf unseren PCs verwenden, anscheinend keine Hardwarebeschleunigung verwenden und dies auf Videospiele beschränkt ist, ist dies nicht der Fall. Wenn Sie beispielsweise einen visuellen Effekt in einem Bildbearbeitungsprogramm anwenden, wird die GPU-Hardware verwendet, um diese Aufgabe schneller auszuführen. Nach allem, was wir sagen können, wird das Programm einer Hardwarebeschleunigung unterzogen.

Die Komplexität der unterstützenden Hardware

Hardware-Beschleunigung

Mit der Verbesserung der CPUs hat sich auch die Support-Hardware verbessert, die im Laufe der Zeit in Design und Funktionalität nicht statisch geblieben ist. In einigen Fällen, wenn ein Stück nicht über das hinaus verbessert werden kann, was bis zu diesem Moment verbessert wurde. Diese Hardware wird schließlich in andere Hardwareteile integriert.

Da schwerere Anwendungen die Verarbeitungsanforderungen erhöhen, ist nicht nur eine leistungsstärkere CPU erforderlich, sondern auch Hardware mit höherer Kapazität. Die Tatsache, keine immer bessere Support-Hardware zu entwickeln, ist für die Hersteller derselben kontraproduktiv, da sie einen Punkt erreichen würde, an dem die CPU bei der Ausführung bestimmter Aufgaben schneller als die Support-Hardware wäre und dies letztendlich völlig nutzlos wäre.

Ein Beispiel für veraltete Hardware waren die Blitter bestimmter 16-Bit-Computer. Diese Hardware wurde in Grafiken verwendet und hatte die Aufgabe, Datenblöcke zu verschieben und sie im Handumdrehen sehr schnell zu bearbeiten. Wenn CPUs diese Aufgabe übertrafen, verschwanden sie von den Computern und wurden nicht mehr in die Hardware integriert.

Das Emulationsproblem

Emulador-Switch-PC

Wenn ein PC ein System emuliert, verfügt er nicht über einen Großteil der ursprünglichen Hardware. Daher muss er nicht nur die CPU, sondern auch die gesamte unterstützende Hardware emulieren. Wenn wir einen PC mit dem System vergleichen, das er emuliert, werden wir feststellen, dass es eine enorme Verzögerung bei der Leistung gibt, und dies ist nicht nur der Grund, warum er den ursprünglichen Hardware-Code interpretieren muss, sondern auch die CPU, um dies zu tun Hardware-Aufgaben der Unterstützung für.

Die Emulation alter Systeme ist das perfekte Beispiel dafür, was passiert, wenn wir ein Programm ausführen möchten und wir nicht über die erforderliche Support-Hardware verfügen, um dies zu tun. Wir benötigen im Vergleich zur ursprünglichen Hardware eine enorme Menge an CPU-Leistung und haben am Ende ein ineffizienteres System.

Die Sache ist kompliziert, wenn wir nicht nur die unterstützende Hardware emulieren, sondern auch die Elemente, die die Ausführung des Codes über die Haupt-CPU hinaus beschleunigt haben. Sie sind am schwierigsten zu emulieren, und in bestimmten Fällen wird häufig eine Hardwarebeschleunigung verwendet. Beispielsweise rendert ein Großteil der neuesten Konsolenemulatoren ihre Grafiken mithilfe der GPU des Systems. Welches ist ein Fall von Hardwarebeschleunigung.

Unterstützung der Hardware- und Softwarekompatibilität

Server-Gehäuse

Die Software nutzt die unterstützende Hardware auf verschiedene Weise, entweder über moderne DirectX-APIs oder zu ihrer Zeit unter Verwendung speicherabgebildeter E / A, die darin bestand, bestimmte Speicheradressen für die Kommunikation mit den Geräten zuzuweisen. Peripheriegeräte. Wie bereits erwähnt, ist die Hardware jedoch nicht statisch und entwickelt sich weiter. Möglicherweise erscheint ein neuer Hardwaretyp, der dieselbe Aufgabe ausführt, jedoch die Kompatibilität rückwärts beeinträchtigt.

Es wird oft gesagt, dass der PC dank der x40-ISA insgesamt 86 Jahre Abwärtskompatibilität erbt, aber diese Aussage ist falsch. Es gibt Anwendungen, die von der Verwendung von Hardware abhängen, die nicht mehr vorhanden ist, und die emuliert oder neu implementiert werden muss. Ein Großteil dieser Hardware verwendet E / A-Schnittstellen, die heutzutage in keinem PC mehr verwendet werden.

Die Hardwarebeschleunigung erfordert die Verwendung von APIs, die die Hardware kontinuierlich aufrufen. Dies macht diese Programme sehr abhängig von dieser spezifischen Hardware oder von der mit dieser API kompatiblen Hardware.

Hardwarebeschleunigung für NVMe-SSDs

SSD Samsung

Wir werden heute ein Beispiel für Hardwarebeschleunigung oder Support-Hardware mit sehen SSD Festplatten, sobald sie komprimierte Datenformate verwenden, um ihre Speicherkapazität zu erweitern. Eine CPU ist nicht schnell genug, um die große Datenmenge zu dekomprimieren, die sie schnell genug erreichen wird.

Bei Videospielkonsolen hat AMD Datenkomprimierungs- und -dekomprimierungssysteme hinzugefügt, die die enormen Bandbreiten seiner SSDs unterstützen. Wenn wir über den PC sprechen, haben wir diese Hardware bereits auf GPU-Ebene für RDNA 2 und NVIDIA RTX 2000 und RTX 3000 integriert, aber in CPUs werden auch Support-Einheiten hinzugefügt. Da es keinen Sinn macht, eine NVMe-SSD auf dem PC zu installieren, verwenden Sie die Datenkomprimierung, um Speicherplatz zu sparen. Dies erfordert 2 Kerne des Zentralprozessors des Systems.

Derzeit haben SSDs eine Verzögerung in Bezug auf herkömmliche Festplatten in Bezug auf die Speicherkapazität, was durch die Verwendung komprimierter Formate gelöst werden kann, deren Dekomprimierung jedoch eine hohe Leistung erfordert, die mit einer größeren Anzahl von Kernen CPU- oder Hardware-Unterstützung abgedeckt werden muss.