PC-Prozessor statt DSP?

15. April 2009, 10:26 Uhr | Peter Massam
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 1

Schnelle Evaluierung

Dies ist zumindest der Idealfall. Vorsicht ist jedoch allein schon wegen der großen Vielfalt an PC-Prozessoren geboten. Die Unterstützung für Vektoroperationen kann stark differieren, auch die Details des Cache-Systems haben großen Einfluss auf die Performance. Der große Wert, den die PC-Welt auf den Markennamen des Prozessors legt, kann ein Teil des Problems sein. Selbst Ingenieure wissen nur selten, welche spezielle CPU in ihrem PC verbaut ist – vielleicht ein »Celeron«. Aber welche der vielen Varianten dieses Prozessors ist es genau?

Als weiterer gravierender Pluspunkt kommt die Leistungsfähigkeit der PC-Compiler hinzu. Getrieben vom intensiven Wettbewerb, wurden sie über die Jahre immer weiter verbessert. Anders ist es bei den Compilern für DSPs: Sie bringen es beim Optimieren von schleifenbasiertem Code häufig auf sehr gute Ergebnisse, doch bei Steuerungscode sind sie nur selten effizient. Dies mag als der beste Kompromiss erscheinen, doch würden es die meisten Entwickler wohl vorziehen, wenn der Compiler effizienten Steuerungscode generierte. Tatsache ist, dass es meist wesentlich einfacher ist, die inneren Schleifen in Assemblercode umzuschreiben als den Steuerungscode (in Assembler) neu zu schreiben. Der Hauptspeicher von Desktop- und Laptop-PCs ist in der Regel mehrere hundert Megabyte groß. Das ist wesentlich mehr als in den meisten DSP-basierten Systemen zur Verfügung steht und kann für einige DSP-Algorithmen ein großer Vorteil sein. Da moderne PC-Architekturen mehrere Cache-Ebenen enthalten, können außerdem relativ langsame (und damit preisgünstige) Speicherbausteine verwendet werden. Die Compiler besitzen ferner genaue Informationen über das Cache-System und können es deshalb die meiste Zeit effizient nutzen. Ungeachtet dessen sind die Cache-Systeme komplex, was nachteilig sein kann, wenn die Datenverarbeitungsschleifen über die Fähigkeiten des Compilers hinaus optimiert werden müssen. Die Bedingungen für einen »Cache Hit« oder »Cache Miss« zu identifizieren, kann alles andere als trivial sein.

DSP-Algorithmen erfordern meist nur den Zugriff auf eine überschaubare Zahl einfacher Hardware-Devices, für die nur selten komplizierte Treiber erforderlich sind. Allerdings sind die Algorithmen lediglich ein Teil eines Systems, das meist in der Lage sein muss, über komplexere Kanäle zu kommunizieren. Häufig übernimmt diese Aufgabe ein separater Controller, doch wenn beide Elemente des Systems auf einer gemeinsamen Plattform zusammengefasst werden sollen, wird die PC-basierte Lösung attraktiv. Für die meisten Betriebssysteme, die auf einer PC-Architektur lauffähig sind, gibt es eine große Auswahl an Gerätetreibern.

Zu den Nebeneffekten, die das Wachstum der Gaming-Industrie mit sich gebracht hat, gehört die Tatsache, dass Vektoroperationen Eingang in das Design der Prozessoren für Desktop- und Laptop-PCs gefunden haben. Diese Operationen unterstützen die Manipulation der Grafikdaten, die zur Darstellung immer realistischerer Spieleumgebungen nötig sind. Da es sich hierbei um einen Teilbereich der DSP-Technik handelt, überrascht es nicht, dass die besagten Vektoroperationen auch für andere DSP-Algorithmen benutzt werden können.

Das Konzept der auch als SIMD-Operationen (Single Instruction Multiple Data) bezeichneten Vektoroperationen dürfte den meisten Ingenieuren, die bereits mit modernen DSPs zu tun hatten, vertraut sein. Im Prinzip geht es darum, einen einzigen Befehl zu verwenden, um eine Operation mit mehreren Datenwerten auf einmal auszuführen. Zum Beispiel bewirkt der ADDPS-Befehl aus den SSE-Erweiterungen, dass vier Gleitkomma-Wertepaare einfacher Genauigkeit gleichzeitig addiert werden. Von diesen Vektoroperationen gibt es eine ganze Reihe von Varianten. Bei Intel sind es die Befehlssätze »MMX«, »SSE«, »SSE2«, »SSE3«, »SSSE3« und »SSE4«, während die Bezeichnungen der AMDVarianten »3DNow!«, »Enhanced 3DNow!«, »3DNow! Professional« und »SSE5« lauten. Trotz der vielen Ähnlichkeiten zwischen den Extensions von AMD und Intel sind sie nicht immer kompatibel. Im Allgemeinen ist es am besten, die Details eines jeden Befehlssatzes zu untersuchen und die Wahl des Prozessors daran auszurichten, welcher Befehlssatz den Anforderungen des jeweiligen Algorithmus’ optimal gerecht wird.

Bei der Anwendung dieser Erweiterungen gilt, es bestimmte Feinheiten zu beachten. Am wichtigsten ist, dass das Abspeichern und Laden der Daten für die Vektoroperationen in großen Blöcken (z.B. jeweils 64 Bit oder 128 Bit gleichzeitig) erfolgt. Diese Datenworte müssen an den richtigen Adressgrenzen ausgerichtet werden, um effiziente Speicherzugriffe ausführen zu können. Eine weitere Besonderheit ist, dass die Nutzung dieser Extensions nicht mit konventionellen Gleitkomma-Operationen verzahnt werden kann, da die Befehlssätze auf dieselben Ressourcen zugreifen. Zum Beispiel muss der Befehl »EMMS« der MMX-Extensions am Ende einer MMX-Routine stehen, damit nachfolgende Gleitkomma-Operationen korrekt ablaufen.


  1. PC-Prozessor statt DSP?
  2. Schnelle Evaluierung
  3. Cache-Misses vermeiden
  4. PC-Prozessor statt DSP?
  5. PC-Prozessor statt DSP?
  6. Sind PC-Prozessoren wie der »Pentium« die besseren DSPs? Tatsächlich sind solche CPUs oft mit deutlich höherer Frequenz getaktet als DSPs. Und da sie oft im Gaming-Bereich eingesetzt werden, unterstützen viele von ihnen beispielsweise auch komplexe Vektoroperationen. Doch welche Vor- und Nachteile hat es, PC-Prozessoren als DSPs einzusetzen?

Jetzt kostenfreie Newsletter bestellen!