Der Blätterkatalog benötigt Javascript.
Bitte aktivieren Sie Javascript in Ihren Browser-Einstellungen.
The Blätterkatalog requires Javascript.
Please activate Javascript in your browser settings.
DESIGN ELEKTRONIK 03 2023 25 www designelektronik de physikalischtechnische Grenzen Unter anderem wegen thermischer Bedingungen konnten die Taktfrequenzen der Prozessoren in den vergangenen Jahren durch rein halbleitertechnische Weiterentwicklung nicht mehr signifikant gesteigert werden Um dennoch Prozesse weiter zu beschleunigen müssen andere Wege gefunden werden So konnten nennenswerte Leistungssteigerungen durch softwaregestützte Techniken wie Branch-Prediction Outof-Order-Ausführungen oder spekulative Ausführungen von Instruktionen erreicht werden Zudem verwenden moderne Prozessoren eine ausgeklügelte Instruktionspipeline und können mehrere Instruktionen unter Verwendung mehrerer funktionaler Einheiten gleichzeitig ausführen Nachfolgend werden drei wesentliche Wege zur Leistungsoptimierung skizziert wobei dies aufgrund der enormen Bandbreite der Thematik nur beispielhaft geschehen kann Cache-Optimierung Die Beschleunigung von Prozessgeschwindigkeiten umfasst nicht alle Bereiche der Interaktion von Hardware und Software in gleichem Maße Die Zugriffsgeschwindigkeit von Speichern etwa konnte bisher nicht im selben Umfang wie die Ausführungsgeschwindigkeit der Prozessoren gesteigert werden Die Erfahrung zeigt dass heutzutage an vielen Stellen nicht die Ausführungszeit des Prozessors sondern die Speicherzugriffe den limitierenden Faktor bei Prozessbeschleunigungen bilden Deswegen sind mittlerweile Speicherhierarchien mit Caches üblich in denen häufig genutzte Daten in einem kleineren aber zugriffsschnelleren Speicher Cache als Kopie abgelegt sind Effizienzsteigerungen sind hier durch mehrstufige Speicher möglich Bild 1 Das zugrundeliegende Prinzip ist einfach Je höher die Speicherkapazität des Cache desto niedriger die Zugriffsgeschwindigkeit und umgekehrt So sind Speicherkomplexe wie in Bild 1 gezeigt möglich bei denen das Register die kleinste Einheit an der Spitze bildet auf deren Inhalte aber am schnellsten zugegriffen wird Darunter folgen mehrere Cache-Ebenen – L1 L2 etc – mit zuneh - mender Kapazität in denen die Kopien von Daten aus dem zuunterst liegenden Hauptspeicher abgelegt sind Daraus folgt dass es von großer Bedeutung sein kann die Eigenschaften solcher Cache-Hierarchien bei der Programmierung zu berücksichtigen Allerdings können dabei wie bei allen Optimierungen unerwünschte Nebeneffekte wie Cache Trashing konkurrierende Zugriffe etc auftreten denen durch geeignete Maßnahmen wie Cache-Lockdown manuelles Cache-Management oder bestimmte Access Patterns begegnet werden muss Parallelisierung Eine der wichtigsten Techniken zur Optimierung ist die Parallelisierung der Abarbeitung bestimmter Aufgaben Dabei werden Algorithmen in voneinander möglichst unabhängige Teilprobleme aufgeteilt die gleichzeitig berechnet werden können Dies kann feingranular erfolgen z Bdurch SIMD-Instruktionen Single Instruction Multiple Data oder in Form größe rer funktionaler Blöcke die auf zusätzlichen Prozessorkernen oder auf Hardware beschleunigern laufen Letzteres erfährt durch die zunehmende Popularität von SoCs mit integrierter programmierbarer Logik FPGA Field Programmable Bild 1 Beispiel für einen mehrstufig organisierten Speicher mit nach unten zunehmender Kapa - zität und parallel dazu abnehmender Zugriffsgeschwindigkeit Zuoberst das Register als kleinstes Segment darunter mehrere Cache-Ebenen L1 L2 etc die zunehmend größer werden Darin liegen die häufig gebrauchten Daten aus dem Hauptspeicher der als zuunterst liegender Speicher die geringste Zugriffsgeschwindigkeit aufweist Bild Ingenics Digital Bild 2 Veranschaulichung des von NEON verwendeten 256-Byte-Registerfiles das entweder als 32×64-bit-Register D0 D1 D2 oder als 16×128-bit-Register Q0 Q1 ausgelesen werden kann Bild Ingenics Digital