14.01.2015 Aufrufe

Dynamische Adaption in heterogenen verteilten eingebetteten ...

Dynamische Adaption in heterogenen verteilten eingebetteten ...

Dynamische Adaption in heterogenen verteilten eingebetteten ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

2.1 Ansätze zur Reduktion des Speicherbedarfs für kle<strong>in</strong>e Knoten<br />

Ist es gleich, so kann e<strong>in</strong> Codestück geme<strong>in</strong>sam verwendet werden, das am Ende der Funktionen angesprungen<br />

wird (Cross-Jump<strong>in</strong>g). Bei ähnlichem Code, der semantisch gleich ist und sich zum Beispiel<br />

nur <strong>in</strong> den verwendeten Registern unterscheidet, kann der Compiler versuchen den geme<strong>in</strong>samen Code<br />

als separate Funktion zu extrahieren (prozedurale Abstraktion) [DEMS00]. Dieser Vorgang stellt <strong>in</strong><br />

etwa das Gegenteil des Inl<strong>in</strong><strong>in</strong>gs dar. Der Nachteil dabei ist, dass zusätzlicher Aufwand durch den<br />

Funktionsaufruf und die Parameterübergabe entsteht; dafür ist der resultierende Code kle<strong>in</strong>er, was<br />

wiederum positive Effekte auf die Nutzung e<strong>in</strong>es Instruktionscaches haben kann.<br />

Die angedeuteten Techniken s<strong>in</strong>d unabhängig von den <strong>in</strong> dieser Arbeit entwickelten Mechanismen<br />

und können daher parallel e<strong>in</strong>gesetzt werden. Die Auswirkungen werden jedoch teilweise sichtbar, da<br />

das System, das im Rahmen dieser Arbeit entwickelt wurde, auf der Basis von Funktionen arbeitet und<br />

zum Beispiel durch die prozedurale Abstraktion zusätzliche Funktionen erzeugt werden.<br />

2.1.2 Codekompression<br />

Bei der Codekompression wird der b<strong>in</strong>äre Code komprimiert im Speicher abgelegt und erst kurz vor<br />

der Verwendung entpackt. Die Dekompression des Codes soll dabei transparent erfolgen. Hierfür gibt<br />

es verschiedene Ansätze. E<strong>in</strong>ige Techniken verwenden e<strong>in</strong>e besondere Hardware, um den Code bei<br />

Speicherzugriffen automatisch zu dekomprimieren [WC92]. Andere Techniken s<strong>in</strong>d re<strong>in</strong> <strong>in</strong> Software<br />

realisiert, benötigen dabei allerd<strong>in</strong>gs spezielle Werkzeuge um den Code vorzubereiten [KKMS97].<br />

Nachteil dieser Verfahren ist, dass e<strong>in</strong>e Möglichkeit gegeben se<strong>in</strong> muss, um Adressen im unkomprimierten<br />

Code auf komprimierten Code abzubilden. Weiterh<strong>in</strong> wird, zum<strong>in</strong>dest bei softwarebasierten<br />

Verfahren, zusätzlicher Speicherplatz benötigt, um den entkomprimierten Code abzulegen. Schließlich<br />

ist noch anzumerken, dass für die Dekomprimierung Rechenzeit und Energie aufgewendet werden<br />

muss.<br />

Pr<strong>in</strong>zipiell ist die Kompression von Code parallel zu der <strong>in</strong> dieser Arbeit vorgeschlagenen Technik<br />

e<strong>in</strong>setzbar. Es muss allerd<strong>in</strong>gs e<strong>in</strong>e Abstimmung zwischen den Verwaltungsstrukturen, die zur Dekomprimierung<br />

verwendet werden, und den Änderungen, die durch das vorgestellte System vorgenommen<br />

werden, stattf<strong>in</strong>den.<br />

2.1.3 Überlagerungstechnik<br />

Bei der Überlagerungstechnik versucht man Programmteile zu identifizieren, die nicht gleichzeitig<br />

genutzt werden, sogenannte Overlays. Da diese nicht gleichzeitig im Speicher vorhanden se<strong>in</strong> müssen,<br />

kann man sie abwechselnd an derselben Speicherstelle bereitstellen, sobald man sie benötigt. E<strong>in</strong><br />

Speicherbereich kann so durch Überlagerung mehrfach von verschiedenen Codeblöcken verwendet<br />

werden. Die Codeblöcke können dabei verschiedene Größen haben und s<strong>in</strong>d nur durch die Größe des<br />

Programmspeichers beschränkt. In e<strong>in</strong>em Programm ist es möglich auch mehrere Speicherbereiche<br />

vorzusehen, an denen Overlays e<strong>in</strong>geblendet werden, allerd<strong>in</strong>gs kann man e<strong>in</strong> Overlay normalerweise<br />

immer nur an e<strong>in</strong>er festen Adresse e<strong>in</strong>blenden. Die Anzahl der Overlays ist durch den zusätzlich vorhandenen<br />

Speicher beschränkt. Bei Systemen mit Harvard-Architektur können Overlays beispielsweise<br />

im Datenspeicher abgelegt se<strong>in</strong> und bei Bedarf <strong>in</strong> den Programmspeicher geladen werden. Alternativ<br />

ist das Nachladen der Overlays von e<strong>in</strong>em H<strong>in</strong>tergrundspeicher (Bandlaufwerk, Festplatte) denkbar.<br />

Der Vorteil der Überlagerungstechnik ist, dass man Programme ausführen kann, die größer s<strong>in</strong>d als<br />

der verfügbare Programmspeicher. Bei der Realisierung kann man zwischen verschiedenen Stufen<br />

unterscheiden [Pan68]:<br />

automatisch: Das System bestimmt automatisch die Unterteilung des Programms <strong>in</strong> Overlays. Außerdem<br />

sorgt das System automatisch für die Bereitstellung der benötigten Overlays.<br />

11

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!