Optimierung eingebetteter Systeme - Hochschule Furtwangen

Die Seite wird erstellt Henrietta-Louise Hoppe
 
WEITER LESEN
Optimierung eingebetteter Systeme
           Marius Hirt                      Jan Alexander Knoblauch                             Kristian Alexander Stern
       Fakultät Informatik                     Fakultät Informatik                                  Fakultät Informatik
    Hochschule Furtwangen                     Hochschule Furtwangen                                Hochschule Furtwangen
  marius.hirt@hs-furtwangen.de      jan.alexander.knoblauch@hs-furtwangen.de             kristian.alexander.stern@hs-furtwangen.de

    Zusammenfassung—Die Anforderungen an eingebettete Sys-                  Hersteller entwickeln üblicherweise keine produktspezifi-
teme steigen. Immer mehr Anwendungen mit steigender Kom-                schen Chips mehr, da dafür unverhältnismäßig hohe Kosten
plexität sollen darauf ausgeführt werden, ohne dass der Ener-         entstehen. In fast allen Fällen kann auf verfügbare Chips im
giebedarf zu stark zunimmt. Nur durch bessere Hardware
lässt sich diese Herausforderung allerdings nicht bewältigen.         Massenmarkt zurückgegriffen werden, welche die Anforde-
In dieser Arbeit werden verschiedene Ansätze zur Optimierung           rungen erfüllen. Diese sind in der Regel nicht sehr spezia-
eingebetteter Systeme betrachtet. Es werden Optimierungen der           lisiert und lassen sich daher in unterschiedlichen Produkten
Software und der Einsatz rekonfigurierbarer Systeme vorgestellt.        einsetzen. Durch hohe Stückzahlen können kostenintensive
Außerdem werden Techniken zur Optimierung des Speicher-                 Entwicklungen und aufwändige Herstellungsverfahren gedeckt
systems erläutert. Dieses hat einen besonders hohen Anteil am
Energieverbrauch eines eingebetteten Systems.                           werden. Produktspezifische Chips könnten für die jeweiligen
    Index Terms—embedded systems, reconfigurable systems, ca-           Anwendungsfälle zwar optimiert werden, sind aber schlicht
ching, optimization                                                     nicht mehr umsetzbar. Durch diese Entwicklung scheint die
                                                                        Anpassungsfähigkeit der Hardware insgesamt zu sinken, was
                       I. E INLEITUNG                                   zu weiteren Anforderungen an die Software führen wird.
                                                                            Aufgrund des Verluststroms wurde mittlerweile der pro-
   Das mooresche Gesetz des Intel-Mitbegründers Gordon                 portionale Energieverbrauch von Transistoren bezogen auf
Moore besagt, dass sich alle zwei Jahre doppelt so viele                die Abmessungen gebrochen, die Leistungsdichte und damit
Transistoren auf einem Chip unterbringen lassen würden [1].            der Stromverbrauch von Chips steigt. Über Dekaden konnte
Und auch die Entdeckung von Robert Dennard im Jahre 1974,               die Taktfrequenz der Chips (und damit der Transistoren) bei
dass Versorgungsspannung und Stromstärke eines Transistors             gleichem Energieverbrauch erhöht werden. Seit einigen Jahren
proportional zu dessen Abmessungen gewählt werden sollte,              kann man allerdings eine Stagnierung der Taktfrequenz sowie
bewies jahrzehntelange Gültigkeit [2]. Die Größe der Transis-         der allgemein durchgeführten Instruktionen pro Zyklus beob-
toren wurde ständig verkleinert, wodurch mehr Transistoren             achten [6]. Heutzutage sind Mehrkernprozessoren üblich, die
auf einem Chip verbaut werden konnten. Der Energiebedarf                mehrere Aufgaben parallel verarbeiten können. Der sinnvolle
blieb dabei relativ konstant [3]. Seit einigen Jahren nähert           Einsatz der einzelnen Kerne stellt dabei eine Herausforde-
sich die Chipproduktion allerdings dem technisch möglichen,            rung für die Software dar. Denn nur ein hoher Grad an
zumindest ausgehend von Silizium. Zahlreiche Forschungspro-             Parallelität bei vergleichsweise niedrigem Kommunikations-
jekte suchen nach anderen Materialien, konnten aber bisher              aufwand zwischen den Prozessen und Kernen bringt eine
noch keine Alternative finden. Die winzigen Transistoren wer-           spürbare Leistungssteigerung. Zudem wird Parallelität nicht
den anfälliger für Herstellungsfehler, Alterung und sogenannte        allein durch mehrere Prozessorkerne erreicht, wenn die rest-
Soft Faults. Dadurch wird die Herstellung von Computerchips             lichen Komponenten und Peripherie geteilt werden müssen.
teuer, aufwändig und kompliziert.                                      Üblicherweise haben Prozessoren eingebetteter Systeme eine
   In [4] werden die Entwicklungskosten von üblichen Chips             einstellige Anzahl an Kernen. Eingebettete Systeme lassen sich
jeweils ein Jahr nach der Einführung einer neuen Fertigungs-           nicht mit Servern in Rechenzentren vergleichen, die sehr viele
größe in der Produktion genannt. Diese belaufen sich auf               unabhängige und gleichartige Anfragen verarbeiten müssen.
222,3 Millionen Dollar im 7 nm-Verfahren, 436,3 Millionen               Hier wird durch viele Prozessorkerne eine sehr hohe Paralle-
Dollar im 5 nm-Verfahren und 650 Millionen Dollar im                    lität erreicht. Die Herausforderung bei eingebetteten Systemen
3 nm-Verfahren. Diese immensen Kosten führen dazu, dass                liegt darin, eine Reihe sehr unterschiedlicher Aufgaben gleich-
mit kleinerer Fertigungstechnologie nur noch Chips für den             zeitig zu erfüllen. Die Heterogenität der Aufgaben und deren
Massenmarkt wirtschaftlich entwickelt und hergestellt werden            Abhängigkeiten zwischeneinander erschweren die Parallelität.
können.                                                                Neben der Parallelität auf Anwendungsebene gibt es auch
   IBM hat im Mai 2021 eine neue Chiptechnologie mit                    die parallele Ausführung von Single-threaded-Anwendungen,
einer Strukturgröße von zwei Nanometern vorgestellt [5].               worin möglicherweise noch viel Potenzial liegt. Darüber hin-
Nach eigenen Angaben seien dadurch verglichen mit hoch                  aus arbeiten die Prozessor-Hersteller auch an Parallelität auf
entwickelten 7 nm-Chips eine bis zu 45% höhere Leistung                Instruktionsebene und der möglichst exakten Vorhersage der
oder 75% weniger Energieverbrauch möglich.                             nächsten Prozessorbefehle, auch bekannt als ”Branch Predic-

                                                                   51
tion”.                                                                Jahren ohne Verzögerungen durchführen. Seitdem hat sich die
   In eingebetteten Systemen, beispielsweise Smartphones und          Leistungsfähigkeit um viele Größenordnungen erhöht. Aber
Einplatinencomputern, kommen häufig System-on-a-Chip-                wenn die Geräte leistungsfähiger werden, finden sich neue
Konfigurationen (SoC) vor. Ein SoC vereint dabei neben dem            Anwendungsgebiete. Auf Smartphones können mittlerweile
Hauptprozessor und möglicherweise weiteren spezialisierten           aufwändige 3D-Grafiken und Augmented Reality umgesetzt
Prozessoren weitere benötigte Komponenten. Diese können             werden. Das neue Modell des Raspberry Pi eignet sich
unter anderem Bussysteme, Taktgeber, (kleine) Speicher oder           für rechenintensive Anwendungen wie maschinelles Lernen
Komponenten für (serielle) Schnittstellen wie USB, RS232,            und künstliche Intelligenz. Eine Untersuchung in [8] zeigt
CAN-Bus und Ethernet sein. Je nach Anwendungsgebiet                   äußerst positive Ergebnisse, bei der Bilder von indonesischen
können SoCs auch Audio- und Grafik-Prozessoren enthalten.            Kunstfiguren mittels Convolutional Neural Network auf einem
Diese SoCs führen zu einer einfacheren Entwicklung von               Raspberry Pi 4 klassifiziert wurden.
Gesamtsystemen und ermöglichen eine perfekte Abstimmung                  Reicht die Rechenleistung einer Hardware-Plattform für
zwischen den integrierten Komponenten. Die Latenz und                 eine Aufgabe aus, finden sich neue Aufgaben, welche die
Bandbreite der Kommunikation zwischen den Komponenten                 Hardware an ihre Grenzen bringt. Zudem führt die zuneh-
ist aufgrund der räumlichen Nähe ebenfalls ideal.                   mende Leistungsfähigkeit vermutlich in vielen Fällen zu in-
                                                                      effizienterer Software, da Entwickler hierauf keinen Fokus
A. Leistungssteigerung der Hardware                                   legen (müssen). Obwohl die Performanz bisher kontinuierlich
   Die Anforderungen an eingebettete Systeme steigen konti-           gesteigert werden konnte, scheint sich diese Entwicklung nicht
nuierlich mit dem Bedarf, verschiedene Instanzen heterogener          endlos fortzusetzen.
Software parallel darauf auszuführen. Zudem steigt im Allge-             Die Performancesteigerung nach dem bekannten Vorgehen,
meinen die Komplexität der Software. Eingebettete Systeme            mehr Transistoren in einem Prozessor zu integrieren, ist end-
haben üblicherweise sehr lange Laufzeiten im Bereich von             lich und wird abnehmen. Caches und Caching-Algorithmen
Monaten oder Jahren bis hin zum Dauerbetrieb. Sie werden              sind bereits sehr effizient und die Taktfrequenz von Prozes-
zudem teilweise durch Akkus gespeist. Daher wird bei der              soren stagniert. Mehr Prozessorkerne sind nur ein Bestandteil
Entwicklung solcher Systeme auch besonders auf die Ener-              der Parallelität und der damit erhofften Beschleunigung. Für
gieeffizienz geachtet.                                                effiziente Parallelität müssen viele weitere Voraussetzungen
   Um den steigenden Anforderungen gerecht werden zu                  gegeben sein. Durch die SoC-Architektur werden Entwürfe
können, wird an immer leistungsstärkerer Hardware entwi-            vereinfacht und die Performanz gesteigert. Insgesamt schei-
ckelt. So steigt die Leistungsfähigkeit eingebetteter Geräte        nen die technischen und physikalischen Möglichkeiten der
verschiedener Kategorien mit nahezu jeder Generation.                 Hardware bereits zu einem hohen Grad ausgenutzt zu sein.
   Ein einfaches Beispiel ist der Einplatinen-Computer                Die Nachfrage nach immer leistungsfähigeren und energie-
Raspberry Pi 4B, welcher im Juni 2019 veröffentlicht wur-            sparenderen Systemen ist höher, als dass sie allein durch
de. In diversen Benchmarks mittels Linpack in [7] wurde               neuere Hardware bedient werden kann. In der vorliegenden
die maximale Rechenleistung des Boards mit dem direkten               Arbeit werden Potenziale zur Optimierung der Hardware und
Vorgänger 3B+ verglichen, welcher im März 2018 erschienen           Software diskutiert.
ist. Der Benchmark misst die Rechenleistung unter anderem
anhand mathematischer Berechnungen mit einfacher und dop-                          II. O PTIMIERUNG DER S OFTWARE
pelter Genauigkeit. Hierbei liegt das neuere Board bei der
drei- bis vierfachen Leistung des Vorgängers. Ein weiterer               Ein fundamentaler Bestandteil eingebetteter Systeme ist die
Benchmark misst die Lese- und Schreibgeschwindigkeit des              Software. Software kann für bessere Performanz oder eine
Arbeitsspeichers. Der neue Arbeitsspeicher ist insgesamt fast         geringere Code-Size optimiert werden. Viele Optimierungs-
doppelt so schnell wie der des Vorgängers. Außerdem sind             ansätze stellen dabei einen Trade-Off zwischen diesen beiden
nun Konfigurationen mit bis zu 8 GB Arbeitsspeicher möglich,         Zielen dar. Eine Optimierung der Performanz kann also eine
wohingegen der Vorgänger nur mit 1 GB ausgestattet wurde.            höhere Code-Size nach sich ziehen, und umgekehrt.
   Der enorme Leistungsgewinn zwischen Modell 3 und Mo-                   Die meisten der hier präsentierten Optimierungstechniken
dell 4 innerhalb von einem Jahr ist aber eine Ausnahme und            sind nicht ausschließlich für eingebettete Systeme gültig,
gibt nicht die allgemeingültige Leistungssteigerung eingebet-        sondern können auch auf andere High-Performance Software
teter Systeme wider. Außerdem verbraucht das Modell 4 mehr            angewandt werden.
Energie als die Modelle davor.                                            Bevor mit der Optimierung von Software begonnen wird,
   Im weitesten Sinne sind auch Smartphones und Tablets               sollte bekannt sein, welche Komponenten optimiert werden
eingebettete Systeme. Hersteller solcher Geräte werben bei           müssen, um den größten Effekt zu erzielen. Die 80:20 Regel
neuen Geräten für das Hochpreissegment regelmäßig mit An-          besagt, dass 20% des Aufwands für 80% der Ergebnisse ver-
gaben wie doppelter oder vierfacher Geschwindigkeit vergli-           antwortlich ist. Auf die Optimierung von Software angewandt
chen mit dem Vorjahresmodell, aber was kommt davon beim               bedeutet das, dass 80% des Optimierungspotenzials in 20%
Endnutzer tatsächlich an? Grundfunktionen wie das Verfassen          des Codes steckt. Das gilt sowohl für die Effizienz, als auch
von Textnachrichten ließen sich auch schon vor über 20               für die Code-Size.

                                                                 52
Ein wichtiges Werkzeug zur Identifikation der Codetei-              Domäne, in der die Funktion verwendet wird, ist vielleicht
le mit Potenzial für Effizienzoptimierung sind Profiler. Sie          bekannt, dass nur die Primfaktorzerlegung von Zahlen zwi-
sammeln während der Ausführung Daten darüber, wie viel              schen 1 und 1000 benötigt wird. In diesem Fall kann man
der Gesamtausführungszeit in den einzelnen Funktionen des             jedes der 1000 möglichen Ergebnisse vorab berechnen, um
Systems verbracht wird. Die Funktionen, in denen die meiste            die kostspielige Berechnung zur Laufzeit einzusparen.
Zeit verbracht wird, haben das größte Optimierungspotenzial              Um den Overhead zu reduzieren, der beim Funktionsaufruf
bezogen auf die Effizienz.                                             durch die Parameter verursacht wird, kann man globale Va-
   Zur Optimierung der Softwareeffizienz gibt es verschiedene,         riablen verwenden. Beim Aufruf müssen keine Parameter auf
situationsabhängige Techniken. Diese lassen sich prinzipiell          dem Stack abgelegt werden, es wird einfach auf den globalen
durch die drei folgenden Ansätze kategorisieren:                      Speicherbereich zugegriffen [9]. Tatsächlich wirkt sich diese
   • Minimierung der auszuführenden Instruktionen                     Maßnahme auch positiv auf die Code-Size aus. Es muss be-
   • Optimierung der Prozessornutzung                                  dacht werden, dass durch die Verwendung globaler Variablen
   • Optimierung der Cache-Nutzung                                     die Modularität und Wartbarkeit der Software beeinflusst wird.
                                                                          Bei Schleifen besteht ein wesentlicher Overhead darin, dass
A. Minimierung der auszuführenden Instruktionen                       nach jeder Iteration eine Bedingung überprüft werden muss
   Der offensichtlichste Ansatz zur Performanzoptimierung ist          [9]. Ist beim Start der Schleife die Anzahl der Iterationen
die Minimierung der Instruktionen, die vom Prozessor aus-              bekannt, lässt sich dieser Overhead durch Loop Unrolling
geführt werden müssen. Dazu wird die Anzahl der Instruktio-          reduzieren. Dabei wird die Schleife durch eine äquivalente
nen reduziert, die nicht produktiv für Berechnungen eingesetzt        Schleife ersetzt, die mehrere Kopien des Rumpfes enthält.
werden. Kandidaten hierfür sind hauptsächlich Funktionen und         Dafür werden weniger Iterationen durchlaufen. Ist die Anzahl
Schleifen.                                                             der Iterationen zur Compile-Zeit bekannt, kann die Schleife
   Beim Aufruf von Funktionen müssen die Funktionsparame-             komplett aufgelöst werden. Wie oben wirkt sich auch hier die
ter und die Returnadresse auf dem Stack abgelegt werden.               Duplikation auf die Code-Size aus. Diese Optimierung kann
Danach springt der Instruktionszeiger zum Beginn der Funk-             ebenfalls automatisch vom Compiler durchgeführt werden
tion. Beim Austritt aus der Funktion müssen die Parameter             [11].
vom Stack wieder heruntergenommen werden. Danach wird
zur Returnadresse zurückgesprungen.                                   B. Optimierung der Prozessornutzung
   Um diesen Overhead zu vermeiden, kann man Funktionen                   Nicht jeder Compiler kennt jede unterstützte Instruktion
inlinen [9]. Dabei wird der Funktionsaufruf direkt mit den Be-         aller CPUs. Gerade bei eingebetteten Systemen gibt es eine
fehlen ersetzt, die innerhalb der Funktion ausgeführt würden.        breite Landschaft von Architekturen. Eventuell werden sehr
In C/C++ kann man Funktionen mit dem Schlüsselwort ”in-               spezifische Instruktionen unterstüzt, die der Compiler nicht
line” versehen, um dem Compiler das Inlining nahezulegen               kennt. Es kann sein, dass Maschinencode für eine aufwändige
[10]. Moderne Compiler treffen beim Inlining meistens bessere          Berechnung generiert wird, obwohl einzelne spezifische In-
Entscheidungen, als der Programmierer. Wenn das Inlining               struktionen ausgereicht hätten. In solchen Fällen kann man
erzwungen werden soll, kann man beispielsweise mit Makros              einzelne Funktionen direkt in Assembler programmieren. Die
arbeiten. Den größten Effekt hat das Inlining bei kleinen             Programmiersprachen C/C++ erlauben sogar Assemblercode
Funktionen, die häufig aufgerufen werden. In diesem Fall              innerhalb des regulären Programmcodes [10].
ist das Verhältnis zwischen Overhead und Funktionalität sehr            Neben speziellen Instruktionen können etwa Mikrocon-
hoch. Wird bei einer Funktion an vielen unterschiedlichen              troller auch spezielle Peripherie an Bord haben, die kom-
Stellen Inlining angewandt, wirkt sich das negativ auf die             plexe Operationen ausführen können. Beispielsweise besitzt
Code-Size aus.                                                         der Mikrocontroller STM32H747 Hardware für das Enco-
   Als eine Extremform des Inlining können für Funktionen            ding/Decoding von JPEG. Die optimale Nutzung (und Aus-
Lookup-Tables angelegt werden. Dabei werden die Ergebnisse             wahl) der Hardwarekomponenten kann sich durchaus positiv
der Funktion für bestimmte Eingaben vorberechnet und in               auf Laufzeiteffizient, Code-Size und sogar Energieverbrauch
einer Tabelle abgelegt. Statt einem Funktionsaufruf wird das           auswirken.
Ergebnis in der Tabelle nachgeschlagen. Der Aufruf wird also              Auf der anderen Seite kann es auch sein, dass ein Pro-
nicht nur mit dem Funktionsrumpf, sondern direkt mit dem               zessor gängige Operationen nicht unterstüzt. In eingebetteten
Ergebnis ersetzt. Lookup-Tables sind sehr effektiv, wenn die           Systemen ist es nicht selbstverständlich, dass jede CPU ei-
Definitionsmenge der Funktion klein und vorab bekannt ist.             ne Floating-Point-Unit besitzt. Wenn im Code trotzdem mit
Ist die Implementierung der Funktion sehr komplex und die              Gelitkommazahlen gearbeitet wird, muss der Compiler dieses
Lookup-Table verhältnismäßig klein, kann sich diese Maßnah-          Verhalten in der Software simulieren. Das ist in der Regel sehr
me sogar positiv auf die Code-Size auswirken. In modernen              kostspielig, da die komplette Implementierung des IEEE 754
Standards von C++ lässt sich das Berechnen von Lookup-                Standard [12] simuliert wird.
Tables zur Compile-Zeit sogar teilweise automatisieren.                   Gleitkommazahlen sind eine Implementierung reeller Zah-
   Als Beisipel kann man eine Funktion betrachten, die                 len, die sowohl sehr große, als auch sehr kleine Werte dar-
die Primfaktorzerlegung einer Ganzzahl berechnet. In der               stellen kann. In vielen Fällen wird diese Flexibilität aber

                                                                  53
nicht benötigt. Oft bewegen sich die Werte innerhalb einer              werden, sondern auf den RAM zurückgegriffen werden muss.
Domäne in vergleichbaren Größenordnungen. Beispielsweise               Dieser Fall wird Cache-Miss genannt. Im Sinne der Perfor-
wird bei einer Währung wie dem Euro selten mehr als zwei                manzoptimierung sollte man also versuchen, die Anzahl der
Nachkommastellen Präzision benötigt. Statt einen Betrag als            Cache-Misses zu minimieren. Durch den großen Unterschied
reellen Euro-Wert darzustellen ist es durchaus sinnvoll, ihn als         der Zugriffszeiten von Cache und RAM hat eine gute Cache-
ganzzahligen Cent-Wert zu modellieren.                                   Nutzung ein sehr hohes Optimierungspotenzial.
   Dieses Prinzip lässt sich nicht immer auf so triviale Art               Um das zu erreichen, kann man Datenstrukturen mit einer
umsetzen. Die Fixed-Point-Arithmetik bietet eine Verallge-               hohen Informationsdichte in Bezug auf gängige Operationen
meinerung dieses Prinzips. Die Idee ist, dass bspw. eine                 designen. Nehmen wir zur Veranschaulichung einen naiven
reelle Zahl 12, 34 als Ganzzahl 1234, 2 repräsentiert wird.             Key-Value-Store. Implementiert ist er als Array der Key-
Dabei ist an zweiter Stelle von rechts ein imaginärer, fixierter        Value-Paare. Will man den Wert zu einem Schlüssel lesen,
Dezimalpunkt zu interpretieren. Die 2 im Index der Fixed-                wird das Array sequentiell durchlaufen und dabei die Schlüssel
Point-Zahl steht dabei für die Position des Dezimalpunktes.             verglichen. Bei dieser Operation interessieren wir uns für po-
   Arithmetische Operationen wie Addition/Subtraktion und                tenziell alle Schlüssel, aber nur für einen Wert. In diesem Fall
Multiplikation/Division mit Ganzzahlen funktionieren in die-             selektiv nur die Schlüssel in den Cache zu laden ist generell
ser Repräsentation unverändert. Es reicht aus, die zugrunde            nicht möglich. Der Cache-Speicher lässt sich nicht byteweise
liegenden Ganzzahlen zu addieren bzw. zu multiplizieren.                 schreiben. Stattdessen ist der Cache-Speicher üblicherweise in
Beispielsweise die Operation 12, 34 + 12, 34 = 2 ⇤ 12, 34 =              sogenannte Blocks unterteilt, die bspw. 64 Byte umfassen. Es
24, 68 ist in der Fixed-Point Arithmetik 12342 + 12342 =                 werden entsprechend große Blöcke aus dem RAM geladen.
2 ⇤ 12342 = 24682 ⌘ 24, 68. Bei der Addition zweier Werte                Es bleibt also nichts anderes übrig, als alle Werte zusammen
mit unterschiedlicher Präzision müssen die Werte zuerst in eine        mit den Schlüsseln zu laden. Haben die Schlüssel und Werte
einheitliche Präzision transformiert werden. Das ändern der            dieselbe Datenbreite, bspw. 64 bit Ganzzahlen, wird so die
Präzision ist dabei eine einfache Shift-Operation. Beispiels-           Hälfte des Cache-Speichers verschwendet. Durch diese ineffi-
weise ist 12342 ⌘ 123403 .                                               ziente Nutzung des Caches werden Cache-Misses provoziert.
   Bei der Multiplikation und Division von Fixed-Point-                     Stattdessen kann man den Key-Value-Store als zwei ge-
Zahlen untereinander werden die zugrunde liegenden Ganz-                 trennte Arrays implementieren, eins für die Schlüssel, das
zahlen ebenfalls miteinander multipliziert bzw. dividiert. Die           andere für die Werte. Dabei sind Schlüssel und der zugehörige
Präzision des Ergebnisses ergibt sich aus der Summe (bei Mul-           Wert unter dem selben Index abgelegt. Auf den zugehörigen
tiplikation) bzw. der Differenz (bei Division) der Präzisionen          Wert des gesuchten Schlüssels kann über den Index zuge-
der Operanden. Das kann man am Beispiel der Multiplikation               griffen werden. Jetzt können die Schlüssel effizient im Cache
von 10, 00 ⇤ 10, 00 = 100, 00 sehen. Wenn 10, 00 ⌘ 10002 ,               abgelegt werden, ohne Speicher zu verschwenden.
dann ist 10002 ⇤ 10002 = 1.000.0004 ⌘ 100, 0000.                            Der Ansatz, den Fokus auf bewusstes Datenlayout zu le-
   Die gezeigten Beispiele waren der Anschaulichkeit hal-                gen, wird als Datenorientiertes Design (DOD) bezeichnet.
ber im Dezimalsystem formuliert, die Prinzipien sind im                  DOD steht in starkem Kontrast zu Objektorientiertem Design
Binärsystem aber dieselben. Dieser Ansatz ist praktikabel,              (OOD). Beim OOD wird versucht, das Datenlayout unter
wenn die Präzisionen ähnlich sind und man nur diese Un-                Abstraktionsschichten zu verbergen. Dieser Ansatz ist also
termenge der Operationen benötigt. Da die Simulation des                keine Optimierungstechnik, die ad-hoc in Teilen eines Systems
kompletten IEEE 754 Standards vermieden wird, wirkt sich                 angewendet werden kann. Vielmehr ist DOD eine fundamen-
dieser Ansatz zusätzlich positiv auf die Code-Size aus.                 tale Grundlage des Softwaredesigns des Systems.
C. Optimierung der Cache-Nutzung                                                     III. R EKONFIGURIERBARE S YSTEME
   Praktisch jeder Prozessor ist mit einem oder mehreren                    Ein weiterer Ansatz zur Steigerung der Performanz sind re-
Caches ausgestattet. Diese sind typischerweise hierarchisch              konfigurierbare Systeme (Reconfigurable Instruction Set Pro-
angeordnet. Ein Level-1 (L1) Cache ist dabei tendenziell                 cessors, RISP). Als rekonfigurierbare Systeme werden Pro-
kleiner und nah am Prozessorkern. Ein Level-2 (L2) Cache                 zessoren bezeichnet, die sich durch dynamische Hardwarespe-
ist etwas größer und langsamer, aber auf demselben Chip.                zialisierungen an bestimmte Anwendungen anpassen können.
   Zur Laufzeit werden häufig verwendete Daten in den Caches            RISP wird teilweise auch für die Prozessorarchitektur Reduced
gehalten. Auch die anstehenden auszuführenden Prozessorbe-              Instruction Set Processor verwendet, welche allgemein als
fehle werden im Voraus in den Cache geladen. Das Lesen                   Reduced Instruction Set Computer (RISC) bekannt ist. Ge-
aus dem L1-Cache benötigt etwa 3 CPU-Zyklen, aus dem L2-                genüber General Purpose-Architekturen, welche beispielswei-
Cache in der Größenordnung von 10 Zyklen, das Lesen aus                 se eine statische Menge von CPU-Instruktionen bieten, sind
dem RAM in der Größenordnung von 100 Zyklen [13]. Die                   rekonfigurierbare Systeme bezüglich der Performanz und dem
Berechnung der Wurzel einer Gleitkommazahl (auf gängigen                Energieverbrauch im Vorteil. Durch die Flexibilität können
CPUs) bewegt sich zum Vergleich im Bereich zwischen 10                   zwar unterschiedliche Anwendungsbereiche abgedeckt wer-
und 30 Zyklen [14]. Es ist also jedes mal eine Performanz-               den, die Zuwächse sind jedoch nicht so hoch wie bei spe-
Einbuße zu spüren, wenn Daten nicht aus dem Cache gelesen               zialisierter Hardware. Solche Application-Specific Integrated

                                                                    54
Circuits (ASIC) sind dafür ausgelegt, eine Aufgabe höchst              ren Konfiguration und Verbindung logische Operationen und
effizient zu lösen, lassen sich aber nicht für andere Zwecke           Funktionen implementiert werden können. Zusätzlich enthält
nutzen [15]. So kann beispielsweise der STA013 von ST Mi-                es eine Komponente zur Steuerung und Konfiguration dieser
croelectronics von 2004 laut Datenblatt des Herstellers MP3-             Logik sowie einem Speicher, indem die Logik-Konfigurationen
Daten in Echtzeit dekodieren und bietet zusätzlich einfache             abgelegt werden. Die Ausführung durch die rekonfigurierbare
Equalizer-Funktionalitäten. Dieser ASIC ist für Soundkarten            Logik ist zwar deutlich effizienter, allerdings lässt sich nicht
von Computern und Multimedia-Playern vorgesehen. Er ar-                  der gesamte Code dadurch ausführen. Die rekonfigurierbare
beitet bereits bei einer Taktrate von 10 MHz, typischerweise             Logik bietet nur eine begrenzte Menge an Platz für die
aber 14,7 MHz, und verbraucht lediglich 85 mW. Damit                     Abbildung logischer Schaltungen sowie an Speicher für diese
ist er universell einsetzbaren Chips weit überlegen, welche             Konfigurationen.
üblicherweise weit höhere Taktfrequenzen benötigen und da-
mit mehr Energie verbrauchen würden. Neben ASIC, welche                 C. Funktionsweise
die Spezialisierung durch Hardware umsetzen, existieren auch                Die Funktionsweise eines RISP erfolgt in sechs Schritten,
Prozessoren nach dem Prinzip des anwendungsspezifischen In-              die hier aber nur sehr knapp beschrieben werden können.
struktionssatz (Application-Specific Instruction Set Processor,          In [18] findet sich eine sehr umfangreiche Beschreibung.
ASIP) [16].                                                                 Im ersten Schritt muss zunächst analysiert werden, welche
   Rekonfigurierbare Systeme sollen die Flexibilität der Gene-          Abschnitte des Codes auf der rekonfigurierbaren Logik und
ral Purpose-Prozessoren (GPP) und gleichzeitig die Vorteile              welche auf dem GPP ausgeführt werden sollen. Hierbei ist das
spezialisierter Chips wie ASIC und ASIP bieten. Universelle              Ziel, den besten Kompromiss zwischen der Performanz und
Systeme mit vielen spezialisierten Chips aufzubauen ist auf-             den verfügbaren Ressourcen bezüglich der rekonfigurierbaren
grund der Größe und Komplexität der vielen Komponenten                 Logik zu finden. Als Grundlage dafür werden aufgezeichnete
nicht sinnvoll. Lediglich GPPs zu verwenden führt zwar dazu,            Ausführungsprotokolle des Quellcodes mit erwarteten Einga-
dass das System praktisch alles verarbeiten kann, ist dafür aber        bewerten verwendet. Durch eine zusätzliche statische Analyse
in keiner Domäne richtig effizient. Durch rekonfigurierbare             werden geeignete und häufig durchlaufene Codeabschnitte, die
Systeme soll diese Lücke geschlossen werden, auch wenn sie              sogenannten Hotspots, identifiziert.
keine vollständige Verschmelzung beider Extreme darstellen,                Im zweiten Schritt werden diese Hotspots durch entspre-
sondern mit Kompromissen verbunden sind.                                 chende Instruktionen für die rekonfigurierbare Logik ersetzt.
                                                                         An diesen Stellen führt der GPP die ursprünglichen Be-
A. Parallelität                                                         rechnungen nicht selbst durch, sondern kommuniziert mit
   Üblicherweise basieren Prozessoren auf der kontrollgesteu-           der rekonfigurierbaren Logik. Für die rekonfigurierbare Logik
erten Von Neumann-Architektur, wodurch die Ausführung                   werden Konfigurationen erzeugt, welche den ursprünglichen
abhängig von den Programmbefehlen ist. Die Verarbeitung                 Operationen entsprechen. Diese Konfigurationen werden in
erfolgt sequentiell. Anhand des Befehlszählers wird ein Be-             den Konfigurationsspeicher geschrieben.
fehl nach dem anderen ausgeführt. Größere Aufgaben wer-                   Die konfigurierbare Logik wendet in Schritt 3 zur Laufzeit
den dadurch in viele kleinste Aufgaben zerlegt und einzeln               die jeweilige Konfiguration aus dem Konfigurationsspeicher
verarbeitet. Der bekannte Von Neumann-Flaschenhals wurde                 zur Ausführung der Berechnung an. Der benötigte Speicher-
in den letzten Jahrzehnten durch viele Erweiterungen zwar                platz der Konfiguration sowie die Zeit zur Anwendung dieser
reduziert, existiert aber weiterhin. Auch wenn mittlerweile              werden als Reconfiguration Overhead bezeichnet.
mehrere Bussysteme parallel arbeiten, steht der Flaschenhals                Nachdem die Konfiguration angewendet wurde, werden in
auch für die Denkweise, dass immer nur eine Operation gleich-           Schritt 4 die Eingabewerte, beispielsweise aus einem mit dem
zeitig erfolgen kann [17]. Dem gegenüber steht die datenfluss-          GPP geteilten Speicher oder einem Register, geladen.
orientierte Verarbeitung, in welcher die vorliegenden Daten                 Im fünften Schritt erfolgt schließlich die eigentliche
bestimmen, welche Operationen ausgeführt werden. Dadurch                Ausführung der Operation.
kann die größtmögliche Parallelität erreicht werden. Dieser              Im letzten Schritt werden die Ergebnisse durch die gewählte
Vorteil kommt allerdings mit einem Wechsel des Programmier-              Kommunikationsart der GPP wieder zur Verfügung gestellt.
paradigmas sowie speziellen Compilern und Werkzeugen. Ein                Für alle Codeabschnitte, die durch die rekonfigurierbare Logik
enormer Vorteil rekonfigurierbarer Systeme ist, dass sie unter           ausgeführt werden sollen, werden die Schritte 3 bis 6 durch-
Einsatz des kontrollgesteuerten Programmier-Paradigmas das               geführt.
Prinzip der datenfluss-orientierten Architektur ermöglichen.
                                                                         D. RISP und FPGA
B. Aufbau                                                                   Die beschriebenen Prozessoren mit rekonfigurierbaren In-
   Ein rekonfigurierbares System besitzt die Fähigkeit, meh-            struktionssatz (RISP) sind nicht zu verwechseln mit pro-
rere unterschiedliche Berechnungen durch Hardware durch-                 grammierbaren Gatter-Arrays (FPGA). Ein RISP ist ein
zuführen. Es besteht neben einem GPP aus einer in Hard-                 vollständiger Prozessor mit integriertem General Purpose-
ware implementierten rekonfigurierbaren Logik. Diese Lo-                 Prozessor, Daten- und Programmspeicher, Registern, Kontroll-
gik umfasst viele einzelne Verarbeitungseinheiten, durch de-             logik und weiteren Prozessor-typischen Komponenten. Dage-

                                                                    55
gen besteht ein FPGA üblicherweise hauptsächlich aus Basis-           aber auch neue Herausforderungen an das Co-Design von
blöcken mit jeweils einer Lookup-Tabelle und einem Flipflop,           Hardware und Software.
und enthält keine Prozessor-typischen Bausteine. Dennoch
lassen sich durch FPGAs Prozessoren nachbilden und die                          IV. O PTIMIERUNG DES S PEICHERSYSTEMS
rekonfigurierbare Logik von RISPs lässt sich durch FPGAs                 Das Speichersystem ist einer der Haupteinflussfaktoren für
umsetzen [19]. Es handelt sich dennoch um zwei unabhängige             den Energieverbrauch von eingebetteten Systemen [22]. Da-
Technologien.                                                           her sind Optimierungen an dieser Stelle sehr effektiv. Im
                                                                        Folgenden werden vier Ansätze betrachtet, mit denen der
E. Anwendung                                                            Energieverbrauch und die Performanz des Speichersystems
                                                                        verbessert werden können:
   Das Grundprinzip der rekonfigurierbaren Prozessoren exis-
                                                                          • Verringerung der Speicherzugriffe durch Caches
tiert bereits seit Mitte der 1990er Jahre. Es gibt mehrere Vari-
                                                                          • Verwendung von Scratchpad-Speichern
anten, welche sich vor allem in der Kommunikation zwischen
                                                                          • Verbesserung der Lokalität von Speicherzugriffen
rekonfigurierbarer Logik und GPP sowie der Umsetzung der
                                                                          • Nutzung energieeffizienterer Speichertechnologien
rekonfigurierbarer Logik unterscheiden [20].
   Die Idee ist aber weiterhin aktuell. In [21] wird eine               A. Verringerung der Speicherzugriffe durch Caches
ARM-basierte RISP-Architektur sowie dessen prototypenhafte
                                                                           Wie bereits beschrieben, können Caches für die Optimie-
Umsetzung innerhalb eines FPGAs beschrieben. Die Leis-
                                                                        rung eingebetteter Systeme verwendet werden. Dabei kann
tungsfähigkeit und Flexibilität der entwickelten Architektur
                                                                        sowohl der Energieverbrauch als auch die Performanz des Sys-
wird ermittelt, indem 50.000 Mal 64 Bit Daten durch den
                                                                        tems verbessert werden. Allerdings können auch die Caches
symmetrischen Verschlüsselungsalgorithmus Data Encryption
                                                                        selber hinsichtlich ihres Energiebedarfs und ihrer Performance
Standard (DES) verschlüsselt und anschließend wieder ent-
                                                                        optimiert werden. Die dadurch erreichte Energieeinsparung hat
schlüsselt werden. Die Autoren kommen zu dem Ergebnis,
                                                                        einen positiven Effekt auf die Alterung der in den Speicher-
dass ihre RISP-Architektur auf Basis eines ARM-Prozessors
                                                                        chips verbauten Transistoren. In Speichern kann der Ausfall
einen Speedup von 4868 gegenüber der herkömmlichen
                                                                        einzelner Transistoren zum Ausfall des gesamten Speichers
Ausführung auf dem verwendeten ARM-Prozessor bietet. Ge-
                                                                        führen. Daher ist eine Energieoptimierung förderlich für die
genüber einem Intel Core i5-Prozessor beträgt der Speedup
                                                                        Lebensdauer der Caches und somit des gesamten eingebetteten
immerhin den Faktor 6,5. Der RISP-Prozessor wurde in einem
                                                                        Systems [23].
FPGA-Chip simuliert und bei lediglich 100 MHz betrieben.
                                                                           Performanz und Energieverbrauch von Caches werden durch
Mit einem realen RISP-Prozessor und höherer Taktfrequenz
                                                                        die Anpassung der Cache-Konfiguration optimiert. Diese be-
könnte laut den Autoren eine nochmals deutlich höhere Ge-
                                                                        steht aus mehreren Parametern. Die Optimierung dieser Pa-
schwindigkeit erreicht werden. Aktuelle Beispiele wie dieses
                                                                        rameter ist in der Regel nur für bestimmte Anwendungen
zeigen, dass diese Technologie bei eingebetteten Systemen
                                                                        möglich. Das bedeutet, dass eine Optimierung der Cache-
auch heute noch ein hohes Potenzial bietet.
                                                                        Konfiguration für die konkreten Anwendungen erfolgen kann,
                                                                        die auf dem eingebetteten System ausgeführt werden sollen.
F. Adaptive Systeme
                                                                        Diese Konfiguration kann allerdings nur eingeschränkt für
   Das Feld der adaptiven Systeme beschäftigt sich mit                 andere Anwendungen oder eingebettete Systeme übernommen
Möglichkeiten der Anpassungsfähigkeit von Systemen. Die-              werden. Der erste Parameter der Cache-Konfiguration ist die
se Systeme können ihre Hardware und Software für neue                 Cache-Größe. Diese gibt die Kapazität des Speichers an. Die
Herausforderungen und Anwendungsbereiche zur Laufzeit op-               Assoziativität eines Cache-Speichers definiert, an wie vielen
timieren. Die RISP-Architektur kann ein Bestandteil dieser              Stellen im Cache ein Datenblock abgelegt werden kann. Auch
Systeme sein. Durch rekonfigurierbare Prozessoren entsteht              die Größe dieser Datenblöcke ist ein Parameter einer Cache-
die Notwendigkeit, auch andere Komponenten der Architektur              Konfiguration. Diese Blockgröße bestimmt, welche Daten-
dynamisch dem Anwendungsfall anpassen zu können. In dem                menge bei einem Cache-Miss aus dem Hauptspeicher in den
folgenden Kapitel werden verschiedene Wege beschrieben, wie             Cache kopiert wird. Der kopierte Block wird dann im Cache-
Speichersysteme optimiert werden können. Dabei gibt es den             Speicher abgelegt. Dabei muss eventuell ein anderer Block aus
Ansatz, verfügbare Speicher und Caches durch rekonfigurier-            dem Speicher entfernt werden. Welcher Block überschrieben
bare Speicherhierarchien optimal auf den aktuellen Einsatz              wird, hängt von der Auswahl des Replacement-Algorithmus
abstimmen zu können.                                                   ab. Entweder wird der am längsten nicht verwendete Daten-
   Ein weiteres Themengebiet der adaptiven Systeme                      satz (Least Recently Used, LRU) oder der am längsten im
beschäftigt sich mit der Anpassungsfähigkeit der                      Cache vorhandene Datensatz (First In First Out, FIFO) er-
Kommunikation zwischen Komponenten wie Prozessoren und                  setzt. Außerdem können auch zufällige Datensätze (Random)
Prozessorkernen. Des Weiteren gibt es auch auf der Seite                überschrieben werden. Des weiteren gibt es zwei verschiedene
der Software Möglichkeiten, besser auf die sich ändernde              Write-Policies, mit denen festgelegt wird, wann der Wert eines
Hardware adaptiver Systeme zu reagieren. Adaptive Systeme               Blocks in den Hauptspeicher geschrieben wird. Bei COPY-
ermöglichen neue Wege in der Software-Entwicklung, stellen             BACK werden die Daten aus dem Cache nur dann in den

                                                                   56
Hauptspeicher zurückgeschrieben, wenn es absolut erforder-            dung, oder automatisiert durch einen Compiler. Damit ein
lich ist. Bis zu diesem Zeitpunkt sind die Inhalte von Cache           SPM einen Cache ersetzen kann, muss der Compiler eine
und Hauptspeicher inkonsistent. Bei WRITE-THROUGH wer-                 effektive Zuordnung von Speicherobjekten zu SPMs finden
den die Daten im Cache und im Hauptspeicher gleichzeitig               [26]. Es lassen sich zwei Arten von Zuordnungen zwischen
geändert. Zuletzt kann angepasst werden, wann Daten in                Speicherobjekten und SPMs unterscheiden. Bei der statischen
den Cache geladen werden. Dies wird mit einem Prefetch-                Zuordnung bleiben die Speicherobjekte solange im SPM wie
Algorithmus bestimmt. Beispielsweise können Blöcke erst bei          die Anwendung ausgeführt wird, zu der sie gehören. Dadurch
einem Cache-Miss geladen werden. Außerdem ist es möglich              wird die Kapazität des pro laufender Anwendung verfügbaren
mehrere Blöcke gleichzeitig in den Cache zu laden, wenn diese         Speichers limitiert. Bei der dynamischen Zuordnung werden
explizit angefordert werden. Es ist aber auch möglich immer           Speicherobjekte zur Laufzeit zwischen dem Hauptspeicher und
ein Prefetch durchzuführen. Das bedeutet, dass beim Laden             dem SPM verschoben. Zwar handelt es sich jeweils um recht
eines Blocks in den Cache auch immer der nächste Block                schnelle Speicher, jedoch beeinträchtigt ein häufiges Verschie-
mitgeladen wird [23].                                                  ben die Performanz der Systems. Diese Methode ist daher
    Die    Optimierung     der    Cache-Konfiguration      wird        vor allem für Größere Anwendungen geeignet, die mehrere
hauptsächlich     mit    zwei     verschiedenen     Methoden          Hotspots haben. Dabei handelt es sich um Codefragmente
vorgenommen. Die erste Methode ist der Einsatz von                     oder Daten, die häufig verwendet werden, allerdings optimaler
dynamischer Rekonfiguration, um zur Laufzeit des                       Weise nicht gleichzeitig oder mit häufigen Wechseln, sodass
Systems die Konfiguration anzupassen. Die jeweils                      der Inhalt des SPM nicht laufend ausgetauscht werden muss
aktive Konfiguration soll dann optimal zu den aktuellen                [27].
Anforderungen des eingebetteten Systems passen. Diese                     Mit mehreren Prozessen oder Threads tritt das Problem
Methode kann in der Regel nur wenige Parameter                         auf, dass diese um den verfügbaren Scratchpad-Speicher kon-
optimieren und setzt außerdem voraus, dass der Entwurf des             kurrieren. Die Zuordnung der Speicherobjekte kann dabei
Speichersystems dynamische Anpassungen ermöglicht. Das                mit drei verschiedenen Strategien vorgenommen werden. Bei
Speichersystem muss also bei der Planung des eingebetteten             der speichernd / wiederherstellenden Strategie wird der SPM
Systems entsprechend komplexer ausgelegt werden. Ein                   jeweils von einem Prozess beansprucht und der Inhalt des
Überblick der verfügbaren Technologien für rekonfigurierbare        SPMs beim Kontextwechsel in den Hauptspeicher verdrängt.
Speicher wird in [24] gegeben. Die zweite Methode                      Diese Strategie ist bei kleinen SPMs sinnvoll, da sonst die
zur Cache-Optimierung ist die Verwendung statischer                    Übertragungsdauer starke Auswirkungen auf die Performanz
Profile. Dabei werden die Anwendungen, die auf dem                     hat und den Energieverbrauch in die Höhe treibt. Bei der
eingebetteten System ausgeführt werden sollen, mit mehreren           nicht-speichernd / wiederherstellenden Strategie wird ein SPM
Cache-Konfigurationen getestet und ein Leistungsprofil                 partitioniert. Jeder Prozess nutzt dann den ihm zugeteilten
aufgenommen. Anhand der gemessenen Daten wird dann                     Speicherbereich. Das Befüllen des Speichers wird einmal
die beste Konfiguration ausgewählt. Durch die hohe Anzahl             während der Initialisierung des Prozesses vorgenommen. Es
möglicher Cache-Konfigurationen ist es allerdings sehr                kann aber auch ein hybrider Ansatz gewählt werden, bei
zeitaufwändig jede einzelne davon zu evaluieren. Um diesem            dem ein Teil des SPMs beim Kontextwechsel ausgetauscht
Problem zu begegnen können beispielsweise genetische                  wird und ein anderer Teil partitioniert wird. Das Verhältnis
Algorithmen zur Optimierung eingesetzt werden. Eine                    der beiden Anteile zu bestimmten stellt dabei eine weitere
mögliche Cache-Konfiguration stellt dabei ein Chromosom               Optimierungsaufgabe dar [27].
dar. Für mehrere Konfigurationen werden statische
Leistungsprofile aufgenommen und die besten ausgewählt.               C. Verbesserung der Lokalität von Speicherzugriffen
Für die nächste Generation werden neue Konfigurationen                  Heute werden vermehrt eingebettete Systeme eingesetzt,
durch Mutation der ausgewählten Chromosome erzeugt. Über             die mehrere Prozessoren in einem Chip vereinen. Die Pro-
mehrere Generationen kann so eine optimale Konfiguration               zessoren werden als Prozessorkerne oder Cores bezeichnet.
ausgewählt werden, ohne tatsächlich eine Leistungsbewertung          Ein Vorteil dieser Multicoresysteme ist, dass die Kommuni-
für jede mögliche Kombination der Cache-Parameter                    kation zwischen den Kernen mit einem geringeren Aufwand
durchführen zu müssen [23].                                          verbunden ist. Da die Kommunikation zwischen den Kernen
                                                                       nun weniger aufwändig ist, wirken sich Zugriffe auf Kom-
B. Verwendung von Scratchpad-Speichern                                 ponenten außerhalb des Prozessors im Vergleich stärker auf
   Scratchpad-Speicher (Scratchpad-Memory, SPM) sind ei-               den Energieverbrauch und die Performanz des Gesamtsys-
ne Alternative zu Caches. Da es sich dabei ebenfalls um                tems aus. Mögliche Optimierungsansätze in solchen Systemen
kleine Speicher handelt, haben die Scratchpad-Speicher auch            beziehen sich daher meist auf Zugriffe der Kerne über die
den Vorteil, dass die Zugriffe darauf schnell sind und der             Chipgrenze des Prozessors hinaus. In Systemen, bei denen sich
Energiebedarf gering ist [25]. Allerdings sind diese Speicher          mehrere Prozessorkerne einen Hauptspeicher teilen, beeinflus-
nicht transparent wie Caches. Stattdessen werden Variablen             sen sich die Zugriffe der Kerne gegenseitig. Wenn mehrere
oder Instruktionen gezielt einem SPM zugeordnet. Entweder              Kerne um einzelne Busse oder Pins konkurrieren, die sie
geschieht dies manuell durch den Entwickler einer Anwen-               zum Speicherzugriff benötigen, beeinflusst das die Performanz

                                                                  57
des Gesamtsystems [28]. Außerdem werden durch die Pro-                 fließen in einen einzigen Anweisungsstrom zum DRAM. Da
zesse auf den einzelnen Kernen in der Regel verschiedene               die verschiedenen Kerne oft auf verschiedene Bereiche im
Speicherbereiche verwendet. Diese Zugriffe benötigen durch            Speicher zugreifen, liegen Zugriffe auf gleiche Speicherberei-
die Bauweise gängiger DRAM-Speicher mehr Energie, als                 che im Anweisungsstrom weiter auseinander und können vom
Zugriffe auf nahe beieinanderliegende Zellen im Speicher [29].         Scheduler nicht gruppiert werden [29].
Zudem hat das Speichersystem generell einen hohen Anteil am               Ein Ansatz, um die Row-Buffer-Lokalität zu erhalten, ist
Energieverbrauch von eingebetteten Systemen [22].                      dem Scheduler zu ermöglichen eine größere Anzahl von
   In Systemen mit mehreren Prozessorkernen sollte zunächst           Speicherzugriffen zu berücksichtigen. Dadurch können die
die Anzahl der Zugriffe auf den Hauptspeicher möglichst               Zugriffe besser gruppiert werden, um eine größere Anzahl
gering sein. Um dies zu erreichen, könnten beispielsweise             an Row-Buffer-Hits zu erzielen, bevor die aktive Zeile im
Caches verwendet werden, um Zugriffe direkt beantworten                Hauptspeicher gewechselt werden muss. Eine weitere Methode
zu können. Das ist schneller und benötigt zudem weniger              ist es, die Kerne mehrere Speicherzugriffe direkt hintereinan-
Energie. Gerade in heterogenen Multicoresystemen müssen               der durchführen zu lassen. Die Annahme ist hierbei, dass die
teilweise große Datenmengen zwischen den verschiedenen                 Zugriffe eines einzelnen Kerns ein höhere Lokalität aufweisen.
Kernen ausgetauscht werden. Dabei ist die Größe der Ca-               Es genügt allerdings nicht, einfach jedem der Kerne eine feste
ches oftmals allerdings nicht ausreichend. Zugriffe auf einen          Anzahl von aufeinanderfolgenden Speicherzugriffen gestattet
größeren Hauptspeicher sind also nicht vermeidbar und stellen         werden. Durch diesen Ansatz können vor allem Echtzeitkerne
einen wichtigen Kommunikationsweg zwischen den Kernen                  verdrängt werden. Diese benötigen nur eine geringe Bandbrei-
dar. Daher gilt es in solchen Systemen die Zugriffe auf den            te und sind darauf angewiesen schnell auf den Speicher zugrei-
Hauptspeicher zu optimieren [29].                                      fen zu dürfen. Gleichzeitig führen Echtzeitkerne nur eine ge-
   Heterogene Multicoresysteme sind eine spezielle Art von             ringe Anzahl an Speicherzugriffen aus. Für den Fall, dass Echt-
Multicoresystemen. Diese zeichnen sich dadurch aus, dass die           zeitkerne in einem heterogenen Multicoresystem vorhanden
Rechenkerne im Prozessor verschieden sind. Beispielsweise              sind, kann beispielsweise durch den Einsatz eines Network-on-
könnte ein solches System aus Prozessorkernen mit verschie-           Chip-Controllers die Row-Buffer-Lokalität verbessert werden.
denen Taktraten bestehen, oder spezialisierte Kerne für die           Dieser ist normalerweise nur dafür zuständig, die Speicher-
Verarbeitung von Bild- oder Tondaten haben. Verschiedene               zugriffe an den zuständigen Speichercontroller weiterzuleiten.
Aufgaben werden von verschiedenen Kernen durchgeführt, um             Durch gezieltes Weiterleiten der Anfragen auf Basis der gerade
die jeweiligen Vorteile der Prozessorkerne optimal nutzen zu           aktiven Zeile oder aufgrund des Prozessorkerns, von dem die
können. Die Daten müssen dabei zwischen den Kernen aus-              Anfrage kam, kann die Row-Buffer-Lokalität erhalten oder
getauscht werden. Ein Problem dabei ist, dass beispielsweise           verbessert werden und gleichzeitig vermieden werden, dass
Multimediadaten nicht vollständig in die Caches passen. Da-           hohe Latenzen für Echtzeitkerne entstehen [29].
durch wird bei der Verarbeitung solcher Daten der DRAM zum                Neben einer hohen Row-Buffer-Lokalität bieten auch Zu-
Hauptkanal für die Kommunikation zwischen den einzelnen               griffe auf die selben Memory-Banks Optimierungspotenzial.
Kernen [29].                                                           Dazu muss der Speicher allerdings zunächst in mehrere klei-
   In heterogenen Multicoresystemen genügt der Einsatz und            nere solcher Memory-Banks aufgeteilt sein. Wenn nur wenige
die Optimierung von Caches also oftmals nicht. Stattdessen             Memory-Banks durch die Prozessorkerne verwendet werden,
müssen die Zugriffe der verschiedenen Kerne auf den Haupt-            können die gerade nicht genutzten Banken des Speichers
speicher optimiert werden. Ein Optimierungsansatz ergibt sich          in Energiesparmodi versetzt werden. Diese Energiesparmodi
aus einer Einschränkung in der DRAM-Architektur. Diese                können allerdings nur begrenzt genutzt werden, wenn häufig
besteht darin, dass jeweils nur eine Zeile in einem Speicher-          auf die Memory-Banks zugegriffen wird. Der Wechsel zurück
block aktiv sein kann. Der Wechsel der aktiven Zeile kostet            aus einem Energiesparmodus in den aktiven Zustand erzeugt
Energie und Zeit, da eine sogenannte Precharge-Operation               außerdem Latenzen, die die Performanz negativ beeinflussen
durchgeführt werden muss. Während dieser Aktion werden au-           können. Zur optimalen Nutzung der Energiesparmodi sollten
ßerdem noch keine Daten übertragen. Der Scheduler versucht            die Prozessorkerne jeweils nur auf eine kleine Menge der
die Anzahl der Precharge-Operationen daher so gering wie               Memory-Banks zugreifen. Verschiedene Prozessorkerne soll-
möglich zu halten. Es sollen also möglichst viele Speicherzu-        ten außerdem möglichst nicht auf die gleichen Memory-Banks
griffe auf der aktuellen Zeile – dem sogenannten Row-Buffer –          zugreifen. Dadurch wird die Datenlokalität erhöht und es treten
durchgeführt werden. Ein Speicherzugriff auf den Row-Buffer           weniger Zugriffskonflikte zwischen den Prozessorkernen auf.
wird als Row-Buffer-Hit bezeichnet [29].                               Zudem sind die Zugriffe geordneter und damit leichter vor-
   Wenn viele Zugriffe auf den Row-Buffer erfolgen, spricht            herzusagen, wodurch auch besser vorhergesagt werden kann,
man von einer hohen Row-Buffer-Lokalität. In heteroge-                welche Memory-Banks in einen Energiesparmodus versetzt
nen Multicoresystemen sinkt die Row-Buffer-Lokalität, selbst          werden können [28].
wenn die Zugriffe jedes einzelnen Prozessorkerns eine sehr
hohe Row-Buffer-Lokalität aufweisen. Grund dafür ist die             D. Nutzung energieeffizienterer Speichertechnologien
gemeinsame Nutzung des Hauptspeichers durch die Prozessor-               Falls der Energieverbrauch des verwendeten Speichers
kerne. Die Speicherzugriffe der verschiedenen Prozessorkerne           durch die bereits vorgestellten Maßnahmen nicht reduziert

                                                                  58
werden kann, sollte auch abgewogen werden, ob der Einsatz                  Mithilfe rekonfigurierbarer Systeme können Vorteile von
einer anderen Speichertechnologie Vorteile bringt. Gängige            anwendungsspezifischer Hardware genutzt werden. Diese Sys-
DRAM-Speicher haben den Nachteil, dass die gespeicherten               teme bieten die Möglichkeit, Code teilweise in rekonfigurier-
Daten flüchtig sind. Grund hierfür sind die für die Daten-          bare Hardware auszulagern. Damit lassen sich Code-Teile,
speicherung genutzten Kondensatoren. Diese verlieren mit der           deren Ausführung auf einem General Purpose-Prozessor sehr
Zeit an Ladung und müssen daher ständig ausgelesen und der           aufwändig ist, performanter und mit einem geringeren Leis-
Wert erneuert werden, um den Ladungsverlust auszugleichen.             tungsbedarf ausführen.
Dieser Vorgang wird als Refreshing bezeichnet und macht                    Ein wichtiger Optimierungsansatz, der betrachtet wurde, ist
einen hohen Anteil an der Leistungsaufnahme von DRAM-                  die Optimierung des Speichersystems. Dieses hat einen hohen
Speichern aus. Zudem werden die gespeicherten Daten durch              Anteil am Energieverbrauch eingebetteter Systeme und bietet
das Auslesen zerstört, weshalb der Row-Buffer zum Einsatz             darüber hinaus bei einer Optimierung auch eine gesteiger-
kommt, in dem die ausgelesenen Daten gespeichert werden.               te Performanz. Erläutert wurde die Anpassung der Cache-
Alternativ können nicht-flüchtige Speichertechnologien einge-        Konfiguration, um den Leistungsbedarf und die Performanz
setzt werden. Diese bieten gegenüber den DRAM-Speichern               eines eingebetteten Systems für einzelne Anwendungen zu
geringere Zugriffslatenzen und beim Schreiben von Daten                optimieren. Außerdem wurde der Einsatz von Scratchpad-
müssen nicht erst die im Speicher vorhandenen Datenblöcke            Speichern thematisiert. Diese können als Alternative zu Ca-
gelöscht werden. Außerdem bieten sie einen Kostenvorteil, da          ches genutzt werden, müssen aber entweder manuell oder
die Speicherzellen eine geringere physikalische Größe auf-            von einem Compiler eingebunden werden. Weitere Optimie-
weisen und gleichzeitig mit bestehenden Fertigungsprozessen            rungsansätze in Bezug auf das Speichersystem bestehen darin,
hergestellt werden können. Allerdings bringen diese Speicher-         die Lokalität von Speicherzugriffen zu verbessern oder nicht-
technologien auch Nachteile mit sich. Zum einen wird für das          flüchtige Speichertechnologien einzusetzen.
Schreiben von Daten in den Speicher viel Energie benötigt.                Wichtig bei Optimierungen ist vor allem, dass es keine
Zum anderen ist die Lebensdauer der Speicher eingeschränkt,           Methode gibt, die uneingeschränkt zu einer Verbesserung
wenn viele Schreibzugriffe erfolgen. Letzteres lässt sich al-         des Energiebedarfs oder der Performanz führen. Jede der
lerdings durch Caching ausgleichen, wodurch die Anzahl an              vorgestellten Methoden kann für die Optimierung eingesetzt
Schreibzugriffen deutlich reduziert werden kann. Insgesamt             werden, jedoch ist nicht sicher, dass alle Methoden in einem
bieten nicht-flüchtige Speicher einen besseren Energiever-            bestimmen Anwendungsfall funktionieren. Daher sollten alle
brauch, wenn die Row-Buffer-Lokalität wie beispielsweise in           Optimierungsansätze abgewägt und gegebenenfalls durch den
Multicoresystemen gering ist, da kleinere Row-Buffer möglich          Einsatz geeigneter Metriken bewertet werden.
sind [30].
                                                                                                      L ITERATUR
                          V. FAZIT
                                                                        [1] G. E. Moore, “Cramming more components onto integrated circuits,
   Die Optimierung eingebetteter Systeme wird immer wichti-                 reprinted from electronics, volume 38, number 8, april 19, 1965, pp.114
ger. Zum einen weil die Anforderungen an solche Systeme                     ff.” IEEE Solid-State Circuits Society Newsletter, vol. 11, no. 3, pp.
                                                                            33–35, 2006.
steigen. Zum anderen kann eine Leistungssteigerung nicht                [2] R. Dennard, F. Gaensslen, H.-N. Yu, V. Rideout, E. Bassous, and
mehr alleine durch das Hinzufügen weiterer Transistoren zu                 A. LeBlanc, “Design of ion-implanted mosfet’s with very small physical
einem Prozessor erreicht werden. Der heutige Stand der Ferti-               dimensions,” IEEE Journal of Solid-State Circuits, vol. 9, no. 5, pp.
                                                                            256–268, 1974.
gungstechnik von Halbleitern hat außerdem dazu geführt, dass           [3] L. Eeckhout, “Is moore’s law slowing down? what’s next?” IEEE Micro,
anwendungsspezifische Hardware nicht mehr kosteneffizient                   vol. 37, no. 4, pp. 4–5, 2017.
produziert werden kann.                                                 [4] M. LaPedus, “5/3nm wars begin,” 1 2020. [Online]. Available:
                                                                            https://semiengineering.com/5-3nm-wars-begin/
   In der vorliegenden Arbeit wurden daher verschiedene                 [5] B. H. McCarthy and S. Ponedal, “Ibm unveils world’s first 2 nanometer
Ansätze zur Optimierung der Nutzung vorhandener Hardwa-                    chip technology, opening a new frontier for semiconductors,” 5
reressourcen vorgestellt. Auf Seiten der Software können bei-              2021. [Online]. Available: https://newsroom.ibm.com/2021-05-06-IBM-
                                                                            Unveils-Worlds-First-2-Nanometer-Chip-Technology,-Opening-a-New-
spielsweise durch Inlining von Funktionen oder das Abrollen                 Frontier-for-Semiconductors
von Schleifen die Anzahl auszuführender Instruktionen ver-             [6] A. C. S. Beck, C. A. L. Lisbôa, L. Carro, G. L. Nazar, M. M. Pereira,
bessert werden. Außerdem kann die Nutzung des Prozessors                    and R. R. Ferreira, “Adaptability: The key for future embedded systems,”
                                                                            in Adaptable Embedded Systems. Springer New York, Oct. 2012, pp.
optimiert werden, indem besonders effiziente Instruktionen,                 1–12. [Online]. Available: https://doi.org/10.1007/978-1-4614-1746-0 1
die ein Compiler eventuell nicht kennt, direkt in Assemblerco-          [7] R. Zwetsloot, “Benchmarking raspberry pi 4,” The MagPi - The official
de verwendet und in die eigentliche Anwendung eingebunden                   Raspberry Pi magazine, vol. 83, pp. 32–35, 7 2019.
                                                                        [8] K. Wisnudhanti and F. Candra, “Image classification of pandawa figures
werden. Auch die Verwendung von Fixed-Point-Arithmetik                      using convolutional neural network on raspberry pi 4,” Journal of
kann eine Optimierung bewirken, falls der Prozessor des                     Physics: Conference Series, vol. 1655, p. 012103, oct 2020. [Online].
eingebetteten Systems keine Hardware für Berechnungen mit                  Available: https://doi.org/10.1088/1742-6596/1655/1/012103
Gleitkommazahlen besitzt. Um Caches bei der Softwareent-                [9] M. Barr and A. Massa, Programming embedded systems: with C and
                                                                            GNU development tools. ” O’Reilly Media, Inc.”, 2006.
wicklung besser zu nutzen, können außerdem Methoden des               [10] ISO/IEC 9899:2018, “Information technology – programming languages
datenorientierten Designs angewendet werden.                                – c,” International Organization for Standardization, Tech. Rep., 2018.

                                                                  59
[11] R. M. Stallman and the GCC Developer Community, Using the GNU                   [22] S. Steinke, N. Grunwald, L. Wehmeyer, R. Banakar, M. Balakrishnan,
     Compiler Collection for GCC version 10.2.0, Free Software Foundation,                and P. Marwedel, “Reducing energy consumption by dynamic copying
     Inc., Boston, MA, 2020.                                                              of instructions onto onchip memory,” in 15th International Symposium
[12] IEEE Std 754-2019, “Ieee standard for floating-point arithmetic,” Insti-             on System Synthesis, 2002. IEEE, 2002, pp. 213–218.
     tute of Electrical and Electronics Engineers, Tech. Rep., 2019.                 [23] J. D. Álvarez, J. L. Risco-Martı́n, and J. M. Colmenar, “Multi-objective
[13] A.     Fog,     Optimizing     subroutines    in    assembly    langua-              optimization of energy consumption and execution time in a single level
     ge,     Technical    University     of    Denmark,     1   2021,    htt-             cache memory for embedded systems,” Journal of Systems and Software,
     ps://www.agner.org/optimize/optimizing assembly.pdf,          abgerufen              vol. 111, pp. 200–212, 2016.
     am 07.07.2021.                                                                  [24] G. L. Nazar and L. Carro, “Reconfigurable memories,” in Adaptable
[14] ——, Instruction Tables, Technical University of Denmark, 3                           Embedded Systems. Springer New York, Oct. 2012, pp. 95–117.
     2021, https://www.agner.org/optimize/instruction tables.pdf, abgerufen               [Online]. Available: https://doi.org/10.1007/978-1-4614-1746-0 4
     am 07.07.2021.                                                                  [25] P. Marwedel, “Hardware eingebetteter Systeme,” in Eingebettete Syste-
[15] M. Smith, Application-specific integrated circuits.      Reading, Mass:              me. Springer, 2021, pp. 141–219.
     Addison-Wesley, 2008.                                                           [26] R. Banakar, S. Steinke, B.-S. Lee, M. Balakrishnan, and P. Marwedel,
[16] M. K. Jain, M. Balakrishnan, and A. Kumar, “Asip design metho-                       “Scratchpad memory: A design alternative for cache on-chip memory
     dologies: Survey and issues,” in In Proceedings of the IEEE / ACM                    in embedded systems,” in Proceedings of the Tenth International Sym-
     International Conference on VLSI Design, 2001, pp. 76–81.                            posium on Hardware/Software Codesign. CODES 2002 (IEEE Cat. No.
[17] J. Backus, “Can programming be liberated from the von neumann                        02TH8627). IEEE, 2002, pp. 73–78.
     style? a functional style and its algebra of programs,” Commun.                 [27] P. Marwedel, “Optimierung,” in Eingebettete Systeme. Springer, 2021,
     ACM, vol. 21, no. 8, p. 613–641, Aug. 1978. [Online]. Available:                     pp. 379–411.
     https://doi.org/10.1145/359576.359579                                           [28] M. T. Kandemir, “Reducing energy consumption of multiprocessor soc
[18] A. C. S. Beck and M. M. Pereira, “Reconfigurable systems,” in                        architectures by exploiting memory bank locality,” ACM Transactions
     Adaptable Embedded Systems. Springer New York, Oct. 2012, pp. 41–                    on Design Automation of Electronic Systems (TODAES), vol. 11, no. 2,
     94. [Online]. Available: https://doi.org/10.1007/978-1-4614-1746-0 3                 pp. 410–441, 2006.
[19] F. Barat, R. Lauwereins, and G. Deconinck, “Reconfigurable instruction          [29] Y. Song and B. Lin, “Improving memory efficiency in heterogeneous
     set processors from a hardware/software perspective,” Software Engi-                 mpsocs through row-buffer locality-aware forwarding,” ACM Transacti-
     neering, IEEE Transactions on, vol. 28, pp. 847– 862, 10 2002.                       ons on Architecture and Code Optimization (TACO), vol. 17, no. 1, pp.
[20] F. Barat and R. Lauwereins, “Reconfigurable instruction set processors:              1–26, 2020.
     a survey,” in Proceedings 11th International Workshop on Rapid System           [30] J. Meza, J. Li, and O. Mutlu, “Evaluating row buffer locality in future
     Prototyping. RSP 2000. Shortening the Path from Specification to                     non-volatile main memories,” arXiv preprint arXiv:1812.06377, 2018.
     Prototype (Cat. No.PR00668), 2000, pp. 168–173.
[21] J. Yin, X. Zhenpeng, X. Fang, and X. Zhou, The Design of Re-
     configurable Instruction Set Processor Based on ARM Architecture:
     12th Conference, ACA 2018, Yingkou, China, August 10-11, 2018,
     Proceedings, 09 2018, pp. 66–78.

                                                                                60
Sie können auch lesen