-
Die
Erfindung betrifft ein Verfahren zur Optimierung der Trefferrate
eines Maschinenbefehl-Caches bei der Interpretation einer Befehlswortfolge
für eine
virtuelle Maschine durch zugeordnete Maschinenbefehlssequenzen mit
mindestens einem Maschinenbefehl für ein Rechenwerk sowie eine
korrespondierende Schaltungsanordnung.
-
Ein
Rechnersystem kann neben dem eigentlichen Rechenwerk und einem Hauptspeicher,
in dem ein auszuführendes
Programm bereitgestellt wird, auch einen Zwischenspeicher umfassen.
Der Zugriff auf zwischengespeicherte Daten erfolgt schneller als auf
die im Hauptspeicher gespeicherten Daten. Der Vorteil hoher Zugriffsgeschwindigkeit
bei gleichzeitig geringem Stromverbrauch geht jedoch meist mit dem Nachteil
einher, dass der Zwischenspeicher kleiner als der Hauptspeicher
ist. Scott et al.: „Four-Way
Superscalar PA-RISC Processors",
Hewlett-Packard Journal,
August 1997 offenbart ein System mit einem Cache.
-
Der
Zugriff auf ein im Rechenwerk zu verarbeitendes Datenwort kann erfolgen,
indem das Rechenwerk das zu verarbeitende Datenwort aus dem Zwischenspeicher
lädt, wenn
es dort bereit steht. Wenn dies nicht der Fall ist, wird das Datenwort
aus dem Hauptspeicher geladen und vor oder nach der Verarbeitung
in den Zwischenspeicher gespeichert. Dabei können im Zwischenspeicher bereits
zwischengespeicherte Daten durch das neue zwischenzuspeichernde
Datenwort verdrängt
werden.
-
Für die Zuordnung
der zwischenzuspeichernden Datenworte zu Zwischenspeicherplätzen im
Zwischenspeicher gibt es verschiedene Konzepte. So können Daten
aus dem Hauptspeicher in Abhängigkeit
ihrer Adressen den Zwischenspeicherplätzen des Zwischenspeichers
zugeordnet werden.
-
Bei
der Zwischenspeicherung kann es zu einer ineffektiven Nutzung des
Zwischenspeichers kommen, wenn mehrere häufig zu verarbeitende Datenworte
sich einen oder wenige Zwischenspeicherplätze teilen und einander verdrängen, sodass
die Datenworte, obgleich sie häufig
benötigt
werden, wiederholt aus dem Hauptspeicher geladen werden müssen. Dieser
Effekt kann in besonders nachteiliger Weise auftreten, wenn zwei
alternierend zu verarbeitende Datenworte einander bei jedem Ladevorgang auf
einem Zwischenspeicherplatz verdrängen, sodass sie bei jedem
Ladevorgang erneut aus dem Hauptspeicher zu laden sind. In so einem
Fall kann der Betrieb des Rechnersystems mit Zwischenspeicher langsamer
sein als der Betrieb eines Rechnersystems ohne Zwischenspeicher.
Darüber
hinaus ist es noch denkbar, dass in anderen Bereichen des Zwischenspeichers
Zwischenspeicherplätze
von einem lediglich einmal aufgerufenen Wort besetzt werden, das
danach nicht mehr benötigt
wird.
-
Ein
Fall, bei dem solche Probleme auftreten können, ist die Verwendung virtueller
Maschinen, wie beispielsweise einer so genannten JVM, kurz für „Java virtuell
maschine".
-
Das
zu verarbeitende Programm liegt beispielsweise als Befehlswortfolge
vor, was auch als Bytecode bezeichnet wird. Hierbei handelt es sich
um eine Art Zwischencode, der auf Maschinenbefehle verweist und
vorgibt, welche Sequenz von Maschinenbefehlen dem Rechenwerk zuzuführen ist.
Die Maschinen befehle werden zur Verarbeitung entweder aus dem Hauptspeicher
oder aus dem Zwischenspeicher geladen.
-
Aus
Piumarta. I. et. al.: "Optimizing
direct threaded code by selective inlining", in: Proceedings of the ACM SIGPLAN
1998 conference on programming language design an implementation,
Montreal, Seiten 291–300
ist eine Optimierung von Bytecodesequenzen bekannt.
-
Bisherige
Ansätze,
um den Zwischenspeicher besser zu nutzen, sind eher genereller Natur,
bei denen applikationsspezifische Eigenschaften nicht berücksichtigt
werden. Im Bereich der JVMs wird der Ansatz verfolgt, spezielle,
für Java
optimierte Maschinenbefehle zu entwickeln. Zum anderen gibt es Softwaretechniken,
um die Anzahl der Instruktionen beziehungsweise der Bytecode-Befehle
zu minimieren.
-
Es
stellt sich die Aufgabe, einen programmspezifischen Ansatz zur besseren
Ausnutzung des Zwischenspeichers sowohl für ein Verfahren als auch für eine Schaltungsanordnung
mit einem Zwischenspeicher vorzusehen.
-
Die
Aufgabe wird durch ein Verfahren beziehungsweise eine Schaltungsanordnung
mit den Merkmalen der nebengeordneten Patentansprüche gelöst.
-
Das
Verfahren zur Lösung
der Aufgabe zur Optimierung der Trefferrate eines Maschinenbefehl-Caches
bei der Interpretation einer Befehlswortfolge für eine oder Maschinenbefehlssequenzen
mit mindestens einem Maschinenbefehl für ein Rechenwerk, wobei
- a) jedem Befehlswort des Befehlswortsatzes
eine Maschinenbefehlssequenz mit mindestens einem Maschinenbefehl
zugeordnet ist,
- b) wobei die Maschinenbefehlssequenzen jeweils an einem Speicherplatz
mit einer jeweiligen Startadresse gespeichert sind,
- c) wobei die Zuordnung eines Befehlswortes zu seiner Maschinenbefehlssequenz
durch einen Verweis an die entsprechende Startadresse der Maschinenbefehlssequenz
erfolgt,
hat die Schritte:
- d) Ermitteln der Häufigkeit
der Verdrängungsvorgänge der
Maschinenbefehlssequenzen in einem Maschinenwort-Zwischenspeicher, Cache, in Abhängigkeit
von dem Ablauf der Befehlswortfolge,
- e) Verändern
der Startadressen der den Befehlsworten zugeordneten Maschinenbefehlssequenzen,
sodass eine Reduktion von Verdrängungsvorgängen im
Zwischenspeicher erreicht wird.
-
Bei
diesem Verfahren werden die Adressen verändert, mittels derer auf die
Maschinenworte zugreifbar ist, was auch als „Remapping" bezeichnet wird. Vorteil ist, dass
durch das Remapping von Programmteilen, beispielsweise in einem
Java-Bytecode, eine
Erhöhung
der Zwischenspeichertrefferrate, auch als Cache-Hit-Rate bezeichnet,
und folglich eine Steigerung der Systemperformance zu erreichen
ist. Hierbei ist vorteilhaft, die Befehlswortfolge derart anzupassen,
dass die Sequenz in gleicher Reihenfolge wie vor dem Ändern der
Befehlwortfolge und der Zuordnung verarbeitet wird. Die zu verarbeitenden
Maschinenworte werden, obwohl sie in unveränderter Folge abgearbeitet
werden, unter anderen Adressen gespeichert, wodurch eine bessere
Auslastung des Zwischenspeichers und eine Reduktion von Verdrängungsvorgängen im
Zwischenspeicher zu erreichen ist.
-
Vorteilhafterweise
basieren die durchgeführten Änderungen
auf einer zuvor durchgeführten
Statistik der Verdrängungsvorgänge beim
Verarbeiten der ursprünglichen
Befehlswortfolge oder eines Teils davon. Vorteilhafterweise werden
in Abhängigkeit von
den bestimmten Verdrängungsvorgängen Maschinenworte
dem zumindest einen Teil der Maschinenworte zugeordnet, deren Zuordnung
zu den Adressen verändert
wird. Die Reihenfolge der Befehlsworte wird angepasst. Dadurch kann
die Cache-Hit-Rate verbessert werden.
-
In
einer einfachen Ausgestaltung werden lediglich die Zuordnungen einzelner
oder mehrerer Paare von Maschinenworten mit einander vertauscht,
sodass beispielsweise ein erstes Maschinenwort, das einer ersten
Adresse zugeordnet gewesen ist, einer zweiten Adresse zugeordnet
wird und ein zweites Maschinenwort, das der zweiten Adresse zugeordnet
gewesen ist, nunmehr der ersten Adresse zugeordnet ist. Es sind
jedoch auch kompliziertere Adressmanipulationen möglich, um
die Zuordnung zu verändern.
-
In
einer vorteilhaften Verfahrensausgestaltung erfolgt die Veränderung
der Zuordnung, indem das zweite Maschinenwort in einem Speicherplatz mit
der ersten Adresse gespeichert wird. Beim Vertauschen der Zuordnung,
werden somit die Speicherplätze
getauscht, an denen das erste und das zweite Maschinenwort gespeichert
werden. Durch diese Umprogrammierung ist eine statische Umsortierung zu
erreichen, die kaum zusätzlichen
Hardwareaufwand erfordert.
-
In
einer alternativen Verfahrensausgestaltung erfolgt die Veränderung
der Zuordnung ohne Umprogrammierung der Maschinenworte. Vielmehr werden
die Adressen, mittels derer die Maschinenworte identifizierbar sind,
verändert.
Dies erfolgt beispielsweise, indem ein erster Tabelleneintrag, der
auf die erste Adresse des ersten Speicherbereichs zur Speicherung
des ersten Maschinenworts verweist und ein zweiter Tabelleneintrag,
der auf die zweite Adresse des zweiten Speicherbereichs zur Speicherung
des zweiten Maschinenworts verweist, verändert werden. Das Verändern der
Zuordnung erfolgt, indem der erste Tabelleneintrag derart verändert wird,
dass er auf die zweite Adresse verweist. Der Zugriff auf die Maschinenworte
erfolgt über
die Tabelleneinträge,
die auf die Adressen der Speicherplätze verweisen. Solche Adressen
werden auch als physikalische Adressen bezeichnet.
-
Vorteilhafterweise
umfassen die Tabelleneinträge
die physikalische Adresse des Speicherbereichs, auf den verwiesen
wird, und eine weitere, so genannte virtuelle Adresse, unter der
vom Rechenwerk auf das Maschinenwort im Speicherplatz zugegriffen
wird. Mittels der Tabelle werden die virtuellen Adressen physikalische
Adressen zugeordnet. Diese Zuordnung ist mit weniger Aufwand zu
verändern
als die Umprogrammierung, was zu mehr Flexibilität führt.
-
Wegen
der geänderten
Zuordnung ist die Befehlswortfolge derart anzupassen, dass nach
wie vor die ursprüngliche
Sequenz von Maschinenworten im Rechenwerk verarbeitet wird, damit
das Programm unverändert
ausführbar
ist. In der ursprünglichen
Befehlswortfolge ist zweiten Befehlsworten jeweils die zweite Adresse
zugeordnet. Das erste Befehlswort ist der ersten Adresse zugeordnet.
Die Befehlswortfolge wird derart geändert, dass die zweiten Befehlsworte
in der Befehlswortfolge jeweils durch das erste Befehlswort ersetzt
werden. Somit wird beim Aufruf des ersten Befehlsworts das zweite
Maschinenwort verarbeitet.
-
Vorteilhafterweise
ist vorgesehen, Verdrängungsvorgänge in den
Zwischenspeicherplätzen beim
Verarbeiten der Maschinenwortsequenz mit der ursprünglichen
Zuordnung zu ermitteln, um insbesondere häufig aufgerufene Maschinenworte,
die bei ihrem nächsten
Aufruf bereits aus dem Zwischenspeicher verdrängt sind, zu detektieren. Die Änderung
der Befehlswortfolge und die Veränderung
der Zuordnung erfolgt derart, dass eine Zwischenspeichertrefferrate,
oder Cache-Hit-Rate, im Zwischenspeicher beim Verarbeiten der zugeordneten
Maschinenwortsequenz verbessert wird.
-
Alternativ
können
diese Verdrängungsvorgänge im Vorwege
der eigentlichen Verarbeitung durch ein Simulationstool bestimmt
werden. Dieses ist bei der ersten Verfahrensausgestaltung mit statischer
Umsortierung von Vorteil. Der Simulationsschritt kann vor dem Speichern
des Maschinenwortsatzes erfolgen, sodass die Maschinenworte bereits mit
der geänderten
Zuordnung in den Speicherplätzen
gespeichert werden. Die Umsortierung kann vor dem erstmaligen Verarbeiten
der Befehlswortfolge erfolgen, was insbesondere beim statischen
Verfahren, bei dem die Maschinenworte in veränderter Weise gespeichert werden,
von Vorteil ist.
-
Alternativ
können
die Verdrängungsvorgänge in einfacher
Weise durch eine Verarbeitung der Maschinenwortsequenz vor dem Veränderungsschritt
und dem Änderungsschritt
im Rahmen eines Testdurchlaufs detektiert werden.
-
Die
zweite Verfahrensausgestaltung unter Nutzung der Tabelleneinträge zielt
auf ein dynamisches Verfahren, bei dem die Zuordnung der Adressen
während
der Verarbeitung der Befehlswortfolge veränderbar ist. Es wird in diesem
Fall zumindest ein Teil der Maschinenwortsequenz verarbeitet. Dann werden
in Abhängigkeit
der dabei erstellten Statistik über
die Verdrängungsvorgänge erforderlichen
Veränderungsschritte
und Änderungsschritte
vor der Verarbeitung der weiteren Maschinenwortsequenz bestimmt
und durchgeführt.
Alternativ kann auch ein Testdurchlauf zur Ermittlung der Verdrängungsvorgänge durchgeführt werden.
-
Vorteilhafterweise
wird das Verfahren bei Programmen für virtuelle Maschinen angewandt,
was erlaubt, die als Hardware unabhängig ausgelegten Programme
an den Zwischenspeicher anzupassen.
-
Zur
Lösung
der Aufgabe umfasst die Schaltungsanordnung:
- – ein erstes
Speichermittel mit einer Vielzahl an Speicherplätzen, denen jeweils eine Startadresse aus
einem Adresssatz zugeordnet ist, wobei das erste Speichermittel
ausgebildet ist, einen Satz mit einer Vielzahl von Maschinenbefehlssequenzen
mit mindestens einem Maschinenbefehl zu speichern, wobei jede Maschinenbefehlssequenz in
einem der Speicherplätze
mit seiner jeweiligen Startadresse speicherbar ist,
- – ein
zweites Speichermittel, das ausgebildet ist, eine Befehlswortfolge
zu speichern, die eine Folge von in dem Rechenwerk zu verarbeitenden Maschinenbefehlen
vorgibt, wobei die Zuordnung eines Befehlswortes zu einer Maschinenbefehlssequenz
durch einen Verweis an die entsprechende Startadresse der Maschinenbefehlssequenz erfolgt,
- – einen
Maschinenbefehl-Zwischenspeicher, Cache, mit Zwischenspeicherplätzen zum
Zwischenspeichern von Maschinenbefehlen,
- – das
Rechenwerk zur Verarbeitung der Folge von Maschinenbefehlen, wobei
das Rechenwerk an das ersten Speichermittel und an das zweite Speichermittel
sowie an den Maschinenbefehl-Zwischenspeicher
gekoppelt ist und ausgebildet ist, eine zu verarbeitende Maschinenbefehlssequenz aus
dem Zwischenspeicher zu laden, wenn sie dort bereitsteht, oder aus
dem ersten Speichermittel zu laden und in einem der Zwischenspeicherplätze des
Zwischenspeichers zu speichern,
- – ein
Detektionsmittel, ausgebildet zum Ermitteln der Häufigkeit
der Verdrängungsvorgänge der Maschinenbefehlssequenzen
in dem Maschinenbefehl- Zwischenspeicher
in Abhängigkeit
von dem Ablauf der Befehlswortfolge,
wobei die Schaltungsanordnung
ausgebildet ist, die Startadressen der den Befehlsworten zugeordneten Maschinenbefehlssequenzen
zu verändern,
sodass eine Reduktion von Verdrängungsvorgängen im
Zwischenspeicher erreicht wird.
-
Vorteil
dieser Anordnung ist, dass die Speicherung oder Zuordnung der Maschinenworte
veränderbar
ist, um das Programm derart an den Zwischenspeicher anzupassen,
dass die Systemleistung verbessert wird.
-
Vorteilhafterweise
hängt die
Zuordnung der Zwischenspeicherplätze
im Zwischenspeicher für
die zwischenzuspeichernden Ma schinenworte von der physikalischen
oder virtuellen Adresse ab, sodass sich die veränderte Zuordnung auf die Zwischenspeicherung
auswirkt.
-
Die
Veränderung
der Zuordnung kann statisch erfolgen, indem die Speicherung der
Maschinenworte verändert
wird. Bei einer Vorteilhaften Ausgestaltung ist ein erster Speicherplatz
zur Speicherung eines ersten Maschinenworts vorgesehen, der eine
erste Adresse hat. Ein zweiter Speicherplatz ist zur Speicherung
eines zweiten Maschinenworts vorgesehen. Dieser hat eine zweite
Adresse. Um diese Speicherung zu verändern, ist die Schaltungsanordnung
ausgebildet, das zweite Maschinenwort im ersten Speicherplatz zu
speichern. Beim Vertauschen der Zuordnung wird das erste Maschinenwort
im zweiten Speicherplatz gespeichert. Neben dem paarweisen Vertauschen
sind auch andere Zuordnungen denkbar, bei denen die Zuordnung zumindest
eines Teils der Adressen zu zumindest einem Teil der Speicherplätze verändert wird.
-
In
einer alternativen Ausgestaltung ist ein Zuordnungsmittel ausgebildet
eine Tabelle mit Tabelleneinträgen
zu speichern. Ein erster Tabelleneintrag verweist auf eine erste
Adresse eines ersten Speicherbereichs zur Speicherung eines ersten
Maschinenworts, und ein zweiter Tabelleneintrag verweist auf eine
zweite Adresse eines zweiten Speicherbereichs zur Speicherung eines
zweiten Maschinenworts. Die Verweise sind derart veränderbar,
dass der erste Tabelleneintrag auf die zweite Adresse verweist.
Auch in dieser Ausgestaltung kann die Zuordnungsänderung durch, gegebenenfalls, mehrfaches
paarweise Vertauschen oder andere Zuordnungsvorschriften erfolgen.
Diese alternative Ausgestaltung ist flexibler, da die Änderung
der Zuordnung lediglich die Veränderung
der Verweise er fordert. Aufwändige
Umspeichervorgänge
sind nicht erforderlich.
-
Vorteilhafterweise
umfasst die Befehlswortfolge Befehlsworte aus einem Befehlswortsatz
mit einer Vielzahl von Befehlsworten, wobei jedem Befehlswort des
Befehlswortsatzes die Adresse eines der Maschinenworte des Maschinenwortsatzes
zugeordnet ist. Auf diese Weise wird eine Abfolge von aufzurufenden
Adressen der Maschinenworte vorgegeben.
-
Die
Identifizierung des Speicherplatzes, aus dem das zu verarbeitende
Maschinenwort zu laden ist, erfolgt mittels der Adresse, die dem
Speicherbereich zugeordnet ist. Vorteilhafterweise ist dem Speicherbereich
eine virtuelle Adresse vom Rechenwerk zugeordnet. Beim Laden wird
in der Zuordnungseinheit der virtuellen Adresse die physikalische Adresse
zugeordnet. Eine Veränderung
der Zuordnung kann in einfacher Weise erfolgen, indem der virtuellen
Adresse eine andere physikalische Adresse zugeordnet wird. Hierbei
kann das Zuordnungsmittel als so genannte Lookup-Tabelle mit veränderbaren Zuordnungen
in einer Memory Management Unit, kurz MMU, ausgebildet sein, die
virtuelle Adressen in physikalische Adressen übersetzt.
-
Damit
auch bei veränderter
Zuordnung die unveränderte
Maschinenwortfolge ausgeführt
wird, wird die Befehlswortfolge verändert. In einer vorteilhaften
Ausgestaltung sind zweite Befehlsworte in der Befehlswortfolge,
die der zweiten Adresse zugeordnet sind, von der Änderungseinheit
derart änderbar, dass
die zweiten Befehlsworte in der Befehlswortfolge jeweils durch das
erste Befehlswort, ersetzt werden. Bei paarweise vertauschter Zuordnung
werden die ersten Befehlsworte durch die zweiten Befehlsworte ersetzt.
Entsprechendes gilt, wenn die Befehlsworte den Tabelleneinträgen zugeordnet
sind.
-
Um
die Verdrängungsvorgänge der
ursprünglichen
Befehlsfolge zu detektieren, ist ein Detektionsmittel vorgesehen.
Eine Detektion erfolgt vorteilhafterweise im Rahmen eines Probedurchlaufs.
In Abhängigkeit
von den detektierten Verdrängungsvorgängen kann
bei Verwendung der Lookup-Tabelle die Veränderung der Einträge entweder
nach einem Probedurchlauf der zu optimierten Befehlswortfolge durchgeführt werden
oder alternativ während
deren Verarbeitung, um basierend auf der Statistik der bisherigen
Verdrängungsvorgänge auf
die zukünftigen Verdrängungsvorgänge zu schließen.
-
Ferner
ist ein Änderungsmittel
vorgesehen, dass die Zuordnung und die Befehlswortfolge derart ändern, dass
die Systemperformance verbessert wird. Das Änderungsmittel ist ausgebildet,
die Zuordnung der Maschinenworte zu verändern und die entsprechenden
Befehlsworte in der Befehlswortfolge zu ändern.
-
Weitere
vorteilhafte Ausgestaltungen ergeben sich aus den abhängigen Ansprüchen.
-
Nachfolgend
wird die Erfindung unter Bezugnahme auf die Zeichnungen anhand von
Ausführungsbeispielen
erklärt.
-
Es
zeigen:
-
1 eine
schematische Darstellung eines beispielhaften Rechnersystems,
-
2 ein
Ablaufdiagramm einer beispielhaften Befehlswortfolge und einer zugeordneten
Maschinenwortfolge,
-
3 ein
Diagramm, das die Auslastung eines Zwischenspeichers mit Zwischenspeicherplätzen veranschaulicht,
für ein
erstes Ausführungsbeispiel,
-
4 ein
Diagramm, das die Auslastung des Zwischenspeichers veranschaulicht,
für das
erste Ausführungsbeispiel
mit der geänderte
Zuordnung von Maschinenworten zu den Zwischenspeicherplätzen,
-
5 ein
Diagramm, das die Auslastung des Zwischenspeichers veranschaulicht,
für ein
zweites Ausführungsbeispiel,
-
6 ein
Diagramm, das die Auslastung des Zwischenspeichers veranschaulicht,
für das
zweite Ausführungsbeispiel
mit der geänderte
Zuordnung von Maschinenworten zu den Zwischenspeicherplätzen, und
-
7 ein
Ablaufdiagramm einer geänderten Befehlswortfolge
und der zugeordneten Maschinenwortfolge.
-
1 zeigt
eine schematische Darstellung eines Rechnersystems mit einem Rechenwerk 1. Über einen
Bus 5 ist das Rechenwerk 1 an einen Speichercontroller 4,
der eine Lookup-Tabelle 41 umfasst, gekoppelt. Der Speichercontroller 4 ist
mit einem Speicher 3, der mehrere Bereiche 31, 32, 33 umfasst,
verbunden. Ferner ist das Rechenwerk 1 an einen Zwischenspeicher 2,
der auch als Cache bezeichnet wird, gekoppelt. Der Cache 2 umfasst
beispielhaft zwei Speicherplätze
C1, C2. Des Weiteren umfasst die Anordnung ein Detektionsmittel 6,
das an den Zwischenspeicher gekoppelt ist, um Verdrängungsvorgängen im
Zwischenspeicher zu detektieren. Ein Änderungsmittel 7 ist
an das Detektionsmittel 6, die Lookup-Tabelle 41 und
den Speicher 3 gekoppelt.
-
In
einem Bereich 33 des Speichers 3 ist eine Java-Applikation
P gespeichert. Die Java-Applikation umfasst eine Folge von Befehlsworten
und liegt als so genannter Bytecode oder Zwischencode vor, der weder
speziell an das Rechenwerk 1 angepasst ist noch von diesem
direkt verarbeitet werden kann.
-
Mittels
eines Interpreters für
eine virtuelle Maschine VM, der in einem anderen Bereich 31 des Speichers 3 gespeichert
ist, wird den Befehlsworten der Befehlswortfolge P jeweils ein Maschinenbefehl oder
eine statische Maschinenbefehlssequenz, auch als „native
Codesequenz" bezeichnet,
zugeordnet, die vom Prozessor direkt ausführbar sind. Beide werden im
Folgenden als „Maschinenwort" bezeichnet. Die
Maschinenworte B0, B1, B2, B3 sind in einem weiteren Bereich 32 des
Speichers 3 tabellarisch abgespeichert.
-
Beispielhaft
ist in 1 die Speicherung eines Maschinenwortsatzes mit
einem ersten Maschinenwort B0, einem zweiten Maschinenwort B1, einem
dritten Maschinenwort B2 und einem vierten Maschinenwort B3 dargestellt.
Die Speicherung kann erfolgen, indem die Maschinenworte B0, B1,
B2, B3 in Speicherplätze 320, 321, 322, 323 des
dafür vorgesehenen
Speicherbereichs 32, die anhand ihrer Startadresse A0,
A1, A2, A3 identifizierbar sind, abgespeichert werden. Die Abstände der
Startadressen A0, A1, A2, A3 sind äquidistant. Die Zuordnung der Maschinenworte
B0, B1, B2, B3 zu den Befehlsworten kann erfolgen, indem jedes Befehlswort
einen Index hat, das den Multiplikator für den Abstand zwischen den
Maschinenworten angibt. Das zugeordnete Maschinenwort wird identifiziert,
indem von der ersten Startadresse A0 das Produkt aus Abstand und Index
addiert wird. So ist beispielsweise einem dritten Befehlswort P2
mit dem Index „2" das dritte Maschinenwort
B2 mit der Startadresse A2 zugeordnet.
-
Der
Zugriff auf den Speicher 3 erfolgt über den Speichercontroller 4.
Mittels der Lookup-Tabelle 41 lassen sich virtuelle Adressen,
die vom Rechenwerk 1 verwendet werden, physikalischen Adressen A0,
A1, A2, A3 zuordnen, unter denen die Maschinenworte B0, B1, B2,
B3 gespeichert sind.
-
Die
Befehlswortfolge P gibt die Abfolge der zu verarbeitenden Maschinenworte
B0, B1, B2, B3 vor, indem jedem Befehlswort der Befehlswortfolge
P ein Maschinenwort B0, B1, B2, B3 zugeordnet ist. Das dem zu verarbeitende
Befehlswort zugeordnete Maschinenwort B0, B1, B2, B3 wird mittels
der virtuellen Maschine VM ermittelt und dem Rechenwerk 1, genauer
einem Decoder eines Prozessors im Rechenwerk 1, zugeführt. Die
Maschinenworte B0, B1, B2, B3 sind direkt ausführbar. Somit umfasst die Ausführung der
Befehlswortfolge P, dass die zugeordnete Maschinenwortfolge aus
dem Speicher 3 ausgelesen und dem Rechenwerk 1 zugeführt wird.
-
Bei
der erstmaligen Zuführung
wird das Maschinenwort vom Rechenwerk 1 verarbeitet und
in einem der Zwischenspeicherplätze
C1, C2 abgespeichert nebst Adressinformationen A0, A3, um das zwischengespeicherte
Maschinenwort 20, 23 zu identifizieren. Beim nächsten Zugriff
auf dasselbe Maschinenwort B0, B3 wird zunächst überprüft, ob dieses im Zwischenspeicher 2 bereitgestellt
ist. Wenn dieses der Fall ist, wird es aus dem Zwischenspeicher 2 dem Rechenwerk 1 zugeführt. Im
anderen Fall wird das Maschinenwort über den Bus 5 mittels
des Speichercontrollers 4 aus dem Speicher 3 dem
Rechenwerk 1 zugeführt
und im Zwischenspeicher 2 zwischengespeichert.
-
Die
zwischenspeicherinterne Organisation kann umfassen, einem Zwischenspeicherplatz
in Abhängigkeit
von der Adresse des Maschinenwortes zuzuweisen. Dabei können mehrere
Zwischenspeicherplätze
zu Sets zusammengefasst sein. Die Zuordnung des zwischenzuspeichernden
Maschinenwortes zu einem Set hängt
von dessen Adresse ab. Innerhalb des Sets wird ein Maschinenwort
an einem der Zwischenspeicherplätze
gespeichert und ist über die
Adressinformationen, beispielsweise ein Teil der Adresse, identifizierbar.
-
Beispielhaft
ist in 1 ein so genannter Zwei-Wege-Cache dargestellt.
Das erste und das vierte Maschinenwort 30, 33 werden
in der dargestellten Zwischenspeicherbelegung vom Zwischenspeicher 2 bereitgestellt.
Das zweite und das dritte Maschinenwort 31 und 32 sind
aus dem Speicher 3 zu laden.
-
Das
Detektionsmittel 6 kann Verdrängungsvorgänge durch die Kopplung an den
Zwischenspeicher 2 detektieren. Alternativ kann das Detektionsmittel 6 diese
Verdrängungsvorgänge auch
indirekt detektieren, indem überwacht
wird, welche Maschinenworte in welcher Häufigkeit oder Abfolge aus dem Speicher 3 geladen
werden. Daraus lässt
sich schließen,
dass diese nicht oder nicht mehr im Zwischenspeicher 2 vorliegen.
In solch einem Fall kann das Detektionsmittel 6 an das
Rechenwerk 1 oder den Speichercontroller 4 gekoppelt
sein. Es ist auch denkbar das Detektionsmittel 6 im Rechenwerk 1, beispielsweise
softwaremäßig, zu
integrieren.
-
Es
sei bemerkt, dass die in 1 dargestellte Anordnung lediglich
eine beispielhafte Ausführung eines
Rechnersystems dargestellt. Es sind auch andere Architekturen und
andere Kopplungen des Zwischenspeichers 2 an das Rechenwerk 1 und
den Speicher 3 denkbar, beispielsweise indem der Zwischenspeicher 2 zwischen
den Speichercontroller 4 und das Rechenwerk 1 gekoppelt
ist.
-
Die
Schaltungsanordnung passt in Abhängigkeit
von den detektierten Verdrängungsvorgängen die
Zuordnung der Befehlsworte zu den Maschinenworten und die Befehlswortfolge
an, um den Zwischenspeicher 2 besser auszulasten, ohne
direkt in den betrieb des Zwischenspeichers selbst einzugreifen.
Dieses Vorgehen wird im Folgenden erläutert.
-
2 veranschaulicht
eine Sequenz mit Befehlsworten P0, P1, P2, P3 in einer beispielhaften
Befehlswortfolge P. Durch die Schleife treten das erste und das
dritte Befehlswort P0, P2 besonders häufig auf.
-
Dem
ersten Befehlswort P0 ist das erste Maschinenwort B0, dem zweiten
Befehlswort P1 ist das zweite Maschinenwort B1, dem dritten Befehlswort P2
ist das dritte Maschinenwort B2 und dem vierten Befehlswort P3 ist
das vierte Maschinenwort B3 zugeordnet. Somit treten das erste und
das dritte Maschinenwort B0, B2 besonders häufig in der Maschinenwortfolge
B auf.
-
3 zeigt
ein Diagramm, das die Auslastung eines Zwischenspeichers mit den
Zwischenspeicherplätzen
C1, C2 beispielhaft veranschaulicht.
-
In
der 3 ist für
die Befehlsworte P0, P1, P2, P3 des Befehlswortsatzes PS deren Häufigkeit
in der Befehlswortfolge P aus 2 aufgelistet.
Das erste Befehlswort P0 tritt achtmal auf, und das dritte Befehlswort
P2 tritt siebenmal auf. Das zweite Befehlswort P1 und das vierte
Befehlswort P3 treten nur einmal beziehungsweise zweimal und damit
wesentlich weniger als die beiden anderen Befehlsworte P0, P2 auf.
-
Jedem
Befehlswort P0, P1, P2, P3 des Befehlswortsatzes PS ist ein Maschinenwort
B0, B1, B2, B3 des Maschinenwortsatzes BS zugeordnet. Diese Maschinenworte
B0, B1, B2, B3 sind jeweils an einem Speicherplatz mit einer Startadresse
A0, A1, A2, A3 gespeichert. Die Zuordnung zu den Befehlsworten P0,
P1, P2, P3 erfolgt durch Verweis an die entsprechenden Adressen
A0, A1, A2, A3 der zugeordneten Maschinenworte B0, B1, B2, B3, sodass
das Rechenwerk 1 das Maschinenwort B0, B1, B2, B3 unter
der zugewiesenen Adresse A0, A1, A2, A3 lädt. Dieser Verweis kann beispielsweise
in der oben geschilderten Art der Berechenbarkeit der Adresse des Maschinenwortes
aus dem Index des Bytecodes erfolgen.
-
Bei
der Verarbeitung der in 2 dargestellten Befehlswortfolge
P werden das erste und das dritte Maschinenwort B0, 32 an
demselben, ersten Zwischenspeicherplatz C1 des Zwischenspeichers
abgespeichert. Das zweite und das vierte Maschinenwort B1, B3 werden
an dem anderen Zwischenspeicherplatz C2 gespeichert.
-
Durch
das alternierende Laden des ersten und des dritten Maschinenwortes
B0, B2, die beide im ersten Zwischenspeicherplatz C1 zwischengespeichert
werden, tritt in diesem Zwischenspeicherplatz C1 ein wechselseitiges
Verdrängen
auf, während
das zweite und das vierte Maschinenwort B1, B3 im anderen Zwischenspeicherplatz
C2 weitgehend ungenutzt stehen. Dieser Nachteil rührt von
der hinsichtlich der Zwischenspei chernutzung ungünstigen Anordnung des Maschinenbefehlssatzes
BS her. Insbesondere das wechselseitige Aufrufen des ersten und
des dritten Maschinenwortes B0, B2 beim Verarbeiten der in 2 dargestellten
Maschinenwortfolge B ist zeitaufwändig, da bei jedem Aufruf das zu
verarbeitende erste oder dritte Maschinenwort B0, B2 aus dem Speicher 3 zu
laden ist. Die Zuordnung zu den Zwischenspeicherplätzen C1,
C2 hängt
von der zu verarbeitenden Befehlswortfolge P ab und ist applikationspezifisch.
-
4 zeigt
die Ausnutzung des Zwischenspeichers bei der Verarbeitung derselben
Maschinenwortfolge B, die in 2 dargestellt
worden ist, wenn die Zuordnung der Maschinenworte B0, B1, B2, B3
zu den Zwischenspeicherplätzen
C1, C2 verändert
ist. Um Wiederholungen zu vermeiden, wird lediglich auf Unterschiede
zur vorhergehenden 3 eingegangen.
-
Das
zweite und das dritte Maschinenwort B1, B2 haben die Speicherplätze getauscht.
Das zweite Maschinenwort B1 ist nunmehr am Speicherplatz mit der
Adresse A2 abgespeichert, an dem zuvor das dritte Maschinenwort
B2 abgespeichert war. Das dritte Maschinenwort B2 ist nunmehr an
dem Speicherplatz mit der Adresse A1 abgespeichert, an dem zuvor
das zweite Maschinenwort B1 abgespeichert war.
-
Um
zu gewährleisten,
dass beim Verarbeiten der Befehlswortfolge P, die die Reihenfolge
der Maschinenworte vorgibt, eine geänderte Maschinewortfolge B
ausgeführt
wird, ist es erforderlich, die Befehlswortfolge P zu verändern. Dabei
werden das erste und das dritte Befehlswort P0 und P2 innerhalb der
Befehlswortfolge P vertauscht, sodass nunmehr das erste Befehlswort
P1, dem jedoch das dritte Maschinenwort B2 über die Adresse A1 zugeordnet
ist, siebenmal aufgerufen wird.
-
Das
erste Maschinenwort B0 und das zweite Maschinenwort B1 werden beim
Verarbeiten der Befehlswortfolge P im ersten Zwischenspeicherbereich C1
abgespeichert, und das dritte Maschinenwort B2 und das vierte Maschinenwort
B3 werden im zweiten Zwischenspeicherbereich C2 abgespeichert. Das häufig geladene
erste und dritte Maschinenwort B0, B2 bleiben nun länger im
ersten beziehungsweise zweiten Zwischenspeicher C1, C2 gespeichert,
da diese kaum noch von dem selten auftretenden zweiten beziehungsweise
vierten Maschinenwort B0, B3 verdrängt werden.
-
7 zeigt
die Veränderung
der Befehlswortfolge P, der jedoch durch die veränderte Zuordnung nach wie vor
die gleiche Maschinenwortfolge B wie zuvor zugeordnet ist.
-
Der
veränderten
Zuordnung, kurz als Remapping bezeichnet, liegt eine Statistik oder
eine Analyse über
die Verdrängungsvorgänge in den
Zwischenspeicherplätzen
C1, C2 des Zwischenspeichers zu Grunde. Die Häufigkeit der Verdrängungsvorgänge kann
mittels eines Software-Tools ermittelt werden, dass in Abhängigkeit
der Befehlswortfolge P und des betrachteten Zwischenspeichers 2 die
Verdrängungsvorgänge simulativ
ermittelt. Dieses Tool kann in die konventionelle Abfolge mit Compiler,
Assembler, Linker, Maskengenerierung integriert sein und im Rahmen
eines Nachbearbeitungsschrittes die Bytecodes in eine optimierte
Reihenfolge umkodieren und die Anordnung des Maschinenbefehlssatz dazu
passend neu erzeugen. In Abhängigkeit
des Ergebnisses kann die Befehlswortfolge P und die Speicherung
des Maschinenwortsatzes BS modifiziert werden, um den Zwischenspeicher 2 optimal
zu nutzen. Hierbei handelt es sich um ein statisches Remapping,
bei dem die Hardware zur eigentlichen Verarbeitung der Befehlswortfolge
unverändert ist.
In solch einem Fall ist das Detektionsmittel 6 in 1 nicht
erforderlich, da dessen Aufgabe vom Softwaretool übernommen
wird.
-
Alternativ
können
die Statistik beziehungsweise die Analyse über die Verdrängungsvorgänge im Rahmen
eines Testdurchlaufs vom Detektionsmittel 6 übernommen
werden. In Abhängigkeit
vom Ergebnis erfolgt die Veränderung
der Zuordnung und der Befehlswortfolge P.
-
Bei
oben genanntem Ausführungsbeispiel
ist die Lookup-Tabelle optional, da ihre Einträge bei der veränderten
Zuordnung der Befehlsworte B0, B2, B1, B3 zu den Adressen A0, A1,
A2, A3 nicht verändert werden.
Das oben beschriebene Prinzip ist deswegen auch in Ausführungen
ohne Lookup-Tabelle 41 einsetzbar.
-
5 zeigt
das Zeitdiagramm eines weiteren Ausführungsbeispiels, bei dem die
Befehlsworte P0, P1, P2, P3 des Befehlswortsatzes PS den Maschinenworten
B0, B1, B2, B3 des Maschinenwortsatzes BS über eine Tabelle T zugeordnet
sind. Die Befehlsworte P0, P1, P2, P3 sind Einträgen T0, T1, T2, T3 der Tabelle
T zugeordnet. Das erste Befehlswort P0 ist dem ersten Eintrag T0,
das zweite Befehlswort F1 ist dem zweiten Eintrag T1, das dritte Befehlswort
P2 ist dem dritten Eintrag T2 und das vierte Befehlswort P3 ist
dem vierten Eintrag T3 zugeordnet. Die Einträge T0, T1, T2, T3 verweisen
jeweils auf die Adresse A0, A1, A2, A3 der Speicherplätze, an
denen eines der Maschinenworte B0, B1, B2, B3 gespeichert ist.
-
6 zeigt
das Zeitdiagramm mit veränderter
Zuordnung. In diesem Fall wird die Zuordnung verändert, indem die in der Tabelle
T eingetragenen Adressen, auf die verwiesen wird, verändert werden. Die
Adressen A1, A2 in dem zweiten und dritten Tabelleneintrag T1, T2
sind vertauscht. Somit ist nunmehr das dritte Maschinenwort 32 dem
zweiten Befehlswort P1 zugeordnet und umgekehrt. Dadurch wird die
gleiche, verbesserte Auslastung des Zwischenspeichers erreicht wie
für das
vorherige Ausführungsbeispiel
in 4. Auch hinsichtlich der sich für das zweite
Ausführungsbeispiel
ergebende Abfolge von Befehlsworten und Maschinenworten sei auf 7 verwiesen.
-
Diese
Veränderung
der Zuordnung, auch als „Remapping" bezeichnet, erfolgt
hardwareunterstützt mit
der bereits in 1 dargestellte Lookup-Tabelle 41.
Diese kann in einem separaten Speicherbereich und einem dafür vorgesehenen
Teil des Speichers 3 ausgebildet sein. Die Lookup-Tabelle 41 kann
von einer Memory Management Unit, kurz auch als MMU bezeichnet,
umfasst werden, mittels der einer virtuellen Adresse eine physikalische
Adresse zugeordnet wird. Denkbar ist auch der Einsatz von Verwaltungstabellen,
die zum Management von nichtflüchtigen Speicherinhalten
eingesetzt werden. Diese Tabellen können zum dynamischen Sortieren
der Maschinenworte genutzt werden.
-
Das
Remapping mittels der Lookup-Tabelle 41 kann dynamisch
erfolgen, indem das Detektionsmittel 6 während der
Verarbeitung der Befehlswortfolge 6 die Verdrängungsvorgänge detektiert.
Anhand der detektierten Verdrängungsvorgänge erfolgen
mittels der Änderungseinheit 7 die
Anpassung der Einträge
T0, T1, T2, T3 der Lookup-Tabelle 41 und der Befehlswortfolge
P.
-
Durch
das dynamische Remapping kann für jedes
Programm ein optimiertes Remapping durchgeführt werden, um die Trefferwahrscheinlichkeit
des Zwischenspeichers 2 und damit eine Steigerung der Systemperformance
zu erreichen. Es ist denkbar, bereits für andere Zwecke vorgesehene
Komponenten um das Remapping zu erweitern und damit eine Performanceoptimierung
zu erreichen. Das Remapping erfordert hierfür vorgesehene Programme und
speziell angepasste APIs.
-
Der
Vorteil des zweiten Ausführungsbeispiels
besteht in der größeren Flexibilität, das bei Systemen
mit nachladbaren Programmen erlaubt, diese bei der Initialisierung
hinsichtlich der Zwischenspeicherausnutzung zu optimieren. Im Gegensatz zum
ersten Ausführungsbeispiel
wird die virtuelle Maschine nicht nur für ein Programm optimiert, sondern
kann dynamisch an andere Programme angepasst werden. Für Systeme
mit nachladbaren Programmen ist eine Recompilation zur Ladezeit
denkbar, was mit hoher Rechenleistung einhergeht. Es ist auch denkbar,
dass die nachladbaren Programme Information über die Zwischenspeicherbelegung
umfassen, sodass darauf basierend die Anpassung erfolgen kann.
-
Das
zweite Ausführungsbeispiels
erfordert zusätzlichen
Hardware-Aufwand für
die Tabelle beziehungsweise der Anpassung einer bereits in einer MMU
vorhandenen Tabelle.
-
- 1
- Rechenwerk
- 2
- Zwischenspeicher
- 3
- Hauptspeicher
- 31,
32, 33
- Speicherbereich
- 320,
321, 322, 323
- Speicherplätze für ein Maschinenwort
- 4
- Speichercontroller
- 41
- Lookup-Tabelle
- 5
- Bus
- 6
- Detektionsmittel
- 7
- Änderungsmittel
- P
- Befehlswortfolge
- PS
- Befehlswortsatz
- P0,
P1, P2, P3
- Befehlsworte
- B
- Maschinenwortfolge
- BS
- Maschinenwortsatz
- B0,
B1, B2, B3
- Maschinenworte
- T
- Tabelle
- T0,
T1, T2, T3
- Tabelleneinträge
- A0,
A1, A2, A3
- Adressen
- C1,
C2
- Zwischenspeicherplätze
- VM
- virtuelle
Maschine