Beschleuniger vs. Coprozessor in SoC oder APU: Unterschiede und Gemeinsamkeiten

Jeder Prozessor ist heute ein komplexes Amalgam aus unterschiedlichen Kerntypen, die entweder den Großteil der Arbeit erledigen, spezielle Aufgaben ausführen oder zusammenarbeiten, um bei der Ausführung der verschiedenen Prozesse das bestmögliche Ergebnis zu erzielen. In jedem Fall gibt es Unterschiede zwischen einem Beschleuniger und einem Coprozessor als Unterstützungskerne. Lesen Sie weiter, um zu verstehen, was sie sind.

Beschleuniger vs. Coprozessor in SoC oder APU

Es ist ganz klar, dass a CPU die Arbeit nicht alleine erledigen kann, gibt es übliche Operationen, die ein Computer ständig ausführt, bei denen ein Allzweckprozessor nicht effizient ist, aber zuerst sollten wir verstehen, was dies bedeutet und warum sie notwendig sind. Unterstützungschips.

Beim Entwerfen einer neuen Architektur gibt es eine Reihe von Parametern, die die Grenzen markieren, die Ingenieure nicht überschreiten sollten, einschließlich der Art der für das Design verwendeten Bibliotheken, wie viel der Chip verbraucht, was wird er sein? seine Größe, aber vor allem, welche häufigen Probleme er mit dem neuen Prozessor lösen will. An dieser Stelle werden nicht nur die Haupteinheiten definiert, sondern auch die Coprozessoren und Beschleuniger, die dazu gehören.

Die ersten Support-Prozessoren, die in einer Architektur platziert werden, sind leicht zu erklären, meist solche, die für frühere Architekturen der gleichen Marke entwickelt wurden oder, falls dies nicht der Fall ist, an Dritte lizenziert wurden. Letztere wiederum entstehen während der Entwicklung, aufgrund von Kundenwünschen oder aufgrund der zu lösenden Problemstellung, die eine neuartige Hardware-Einheit erfordert.

Was ist ein Koprozessor?

Coprozessor x87

Obwohl der Signifikant selbsterklärend ist, ist es wichtig zu bedenken, dass, wenn wir mehrere Kerne haben, die zusammenarbeiten, um dasselbe Problem zu lösen, das den verteilten Teilen gemeinsam ist, wir von jeder der Prozesseinheiten sprechen, die in Co-Processing mit anderen agieren. . Und ja, wir wissen, was Ihnen in den Sinn gekommen ist, aber wenn wir mehrere Kerne einer CPU haben, die ein bestimmtes Problem lösen, sprechen wir davon, dass diejenigen, die den Hauptprozess nicht ausführen, als Coprozessoren anderer fungieren.

Unterstützende Chips wurden traditionell als Coprozessoren bezeichnet, obwohl der berühmteste Coprozessor in der Geschichte des PCs der mathematische Coprozessor ist, der nichts anderes war als die spätere Gleitkommaeinheit oder FPU, die vollständig von der Haupt-CPU entkoppelt war. Somit fehlt dem Coprozessor im Allgemeinen ein Prozess zum Erfassen von Befehlen aus dem Speicher, sondern er benötigt eher einen anderen Prozessor, um die zu verarbeitenden Befehle und Daten zu senden. Die Arbeit des Coprozessors? Lösen Sie diesen Teil des Programms und geben Sie das Ergebnis so schnell wie möglich an den Host-Prozessor zurück.

Während der Coprozessor für seine Arbeit verantwortlich ist, kann der Hauptkernel die gewonnene Leistung für andere Aufgaben nutzen, aber da ein Prozess gemeinsam ausgeführt wird, wird der Punkt erreicht, an dem er nicht mehr in der Lage ist fortfahren, bis der Coprozessor oder die Coprozessoren die ihnen zugewiesene Aufgabe abgeschlossen haben.

Was ist ein Beschleuniger?

Acceleador-Hardware

Technisch gesehen ist ein Beschleuniger ein Coprozessor, jedoch mit größerer Unabhängigkeit als diese, da er nicht für die Ausführung eines gesamten Prozesses verantwortlich ist, sondern ihm einen gesamten Prozess zugewiesen bekommt, den die CPU vollständig ignoriert, außer um das Endergebnis zu erhalten oder zu wissen dass die Aufgabe erledigt ist.

Da ein Beschleuniger vollständig vom Prozessor entkoppelt ist, ist er zu diesem völlig asynchron. Was meinen wir? Die Tatsache, dass ein Beschleuniger im Gegensatz zu einem Coprozessor nicht in Kombination mit der Haupt-CPU des Systems funktioniert. Auf diese Weise können Sie Ihren Teil des Codes beschleunigen, was bedeutet, dass er mit einer viel höheren Geschwindigkeit und daher in kürzerer Zeit abgeschlossen wird. Dies erfordert natürlich große Änderungen in der Architektur.

Ein Coprozessor kann sich zunächst Teile der Steuereinheit und sogar Register teilen oder auf einen gemeinsamen Speicher mit der CPU zugreifen. Wenn alle diese Elemente gemeinsam genutzt werden, können sie beim Zugriff auf sie eine Überlastung verursachen, sodass die eine oder andere Einheit nicht mehr darauf warten muss, diese Ressourcen zu verwenden. Wie Sie verstehen, kann dies bei einem Beschleuniger nicht passieren. Daher sind seine Daten und Anweisungen, obwohl sie vom Prozessor bereitgestellt werden, so konzipiert, dass sie Ihnen zu 100% zur Verfügung stehen. Deshalb sind viele Beschleuniger vollständige Prozessoren mit eigenem Lokal RAM innen.

Wenn ein Beschleuniger besser ist, warum wird dann ein Coprozessor verwendet?

Portada Alternativa Processador

Wir haben es in der Einleitung dieses Artikels gesagt, alles hat mit dem Budget zu tun, das Architekten bei der Umsetzung der Lösung eines Problems haben, und was normalerweise nicht berücksichtigt wird, sind die Kommunikationsinfrastrukturen zwischen den verschiedenen Elementen sowie die Einheiten, die Teil des Befehlszyklus jedes Prozessors sind, aber nicht für die Verarbeitung von Zahlen mit hoher Geschwindigkeit verantwortlich sind.

Auf Marketingebene ist es sehr einfach, die Leistung eines Prozessors in Zahlen zu verkaufen, die von Leuten leicht verstanden werden, die aus diesen Daten einen ordinalen oder kardinalen Vergleich anstellen können. Die Realität ist, dass heutzutage die Infrastrukturen in jedem Prozessor den meisten Platz einnehmen und deshalb wird die Entscheidung, etwas in Form eines Coprozessors oder Beschleunigers zu implementieren, nur aufgrund dieser Einschränkungen getroffen.

Ein Beispiel sind die Tensor-Kerne und NVIDIA's NVDLA-Einheit, dienen beide dem gleichen Zweck, während erstere ein Coprozessor innerhalb der Shader-Einheit sind, der sich Register und Steuereinheit mit dem Rest teilt GPU Shader-Einheit, im zweiten Fall ein Prozessor selbst. Es überrascht nicht, dass die Abkürzung DLA für Deep Learning Accelerator steht.