DE102006041002B4 - Verfahren, um ein Programm an einen Zwischenspeicher anzupassen, und Schaltungsanordnung - Google Patents

Verfahren, um ein Programm an einen Zwischenspeicher anzupassen, und Schaltungsanordnung Download PDF

Info

Publication number
DE102006041002B4
DE102006041002B4 DE102006041002A DE102006041002A DE102006041002B4 DE 102006041002 B4 DE102006041002 B4 DE 102006041002B4 DE 102006041002 A DE102006041002 A DE 102006041002A DE 102006041002 A DE102006041002 A DE 102006041002A DE 102006041002 B4 DE102006041002 B4 DE 102006041002B4
Authority
DE
Germany
Prior art keywords
machine
command
sequence
instruction
word
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE102006041002A
Other languages
English (en)
Other versions
DE102006041002A1 (de
Inventor
Dietmar Scheiblhofer
Michael Smola
Josef Dr. Haid
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE102006041002A priority Critical patent/DE102006041002B4/de
Priority to US11/556,767 priority patent/US7523261B2/en
Publication of DE102006041002A1 publication Critical patent/DE102006041002A1/de
Application granted granted Critical
Publication of DE102006041002B4 publication Critical patent/DE102006041002B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

Abstract

Verfahren zur Optimierung der Trefferrate eines Maschinenbefehl-Caches bei der Interpretation einer Befehlswortfolge (P) für eine virtuelle Maschine (VM) durch zugeordnete native Maschinenbefehlssequenzen (B0, B1, B2, B3) mit mindestens einem Maschinenbefehl für ein Rechenwerk (1), wobei
a) jedem Befehlswort (P0, P1, P2, P3) des Befehlswortsatzes eine Maschinenbefehlssequenz (B0, B1, B2, B3) mit mindestens einem Maschinenbefehl zugeordnet ist,
b) wobei die Maschinenbefehlssequenzen (B0, B1, B2, B3) jeweils an einem Speicherplatz mit einer jeweiligen Startadresse (A0, A1, A2, A3) gespeichert sind,
c) wobei die Zuordnung eines Befehlswortes (P0, P1, P2, P3) zu seiner Maschinenbefehlssequenz (B0, B1, B2, B3) durch einen Verweis an die entsprechende Startadresse (A0, A1, A2, A3) der Maschinenbefehlssequenz (B0, B1, B2, B3) erfolgt,
mit den Schritten
d) Ermitteln der Häufigkeit der Verdrängungsvorgänge der Maschinenbefehlssequenzen in einem Maschinenbefehl-Zwischenspeicher, Cache (2), in Abhängigkeit von dem Ablauf der Befehlswortfolge (P),
e) Verändern der Startadressen (A0, A1, A2,...

Description

  • 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

Claims (23)

  1. Verfahren zur Optimierung der Trefferrate eines Maschinenbefehl-Caches bei der Interpretation einer Befehlswortfolge (P) für eine virtuelle Maschine (VM) durch zugeordnete native Maschinenbefehlssequenzen (B0, B1, B2, B3) mit mindestens einem Maschinenbefehl für ein Rechenwerk (1), wobei a) jedem Befehlswort (P0, P1, P2, P3) des Befehlswortsatzes eine Maschinenbefehlssequenz (B0, B1, B2, B3) mit mindestens einem Maschinenbefehl zugeordnet ist, b) wobei die Maschinenbefehlssequenzen (B0, B1, B2, B3) jeweils an einem Speicherplatz mit einer jeweiligen Startadresse (A0, A1, A2, A3) gespeichert sind, c) wobei die Zuordnung eines Befehlswortes (P0, P1, P2, P3) zu seiner Maschinenbefehlssequenz (B0, B1, B2, B3) durch einen Verweis an die entsprechende Startadresse (A0, A1, A2, A3) der Maschinenbefehlssequenz (B0, B1, B2, B3) erfolgt, mit den Schritten d) Ermitteln der Häufigkeit der Verdrängungsvorgänge der Maschinenbefehlssequenzen in einem Maschinenbefehl-Zwischenspeicher, Cache (2), in Abhängigkeit von dem Ablauf der Befehlswortfolge (P), e) Verändern der Startadressen (A0, A1, A2, A3) der den Befehlsworten (P0, P1, P2, P3) zugeordneten Maschinenbefehlssequenzen (B0, B1, B2, B3), sodass eine Reduktion von Verdrängungsvorgängen im Zwischenspeicher (2) erreicht wird.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass das Verändern der Startadressen (A0, A1, A2, A3) der den Befehlsworten (P0, P1, P2, P3) zugeordneten Maschinenbefehlsse quenzen (B0, B1, B2, B3) derart erfolgt, dass dadurch eine Folge (B) von zu verarbeitenden Maschinenbefehlen (B0, B1, B2, B3), welche durch die Befehlswortfolge (P) vorgegeben ist, nicht verändert wird.
  3. Verfahren nach Anspruch 2, dadurch gekennzeichnet, dass die Verdrängungsvorgänge beim Verarbeiten der Folge (B) in dem Rechteswerk (1), das an den Zwischenspeicher (2) gekoppelt ist, auftreten wurden.
  4. Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass ein erster Speicherplatz (321) mit einer ersten Startadresse (A1) zur Speicherung einer ersten Maschinenbefehlssequenz (B1) und ein zweiter Speicherplatz (322) mit einer zweiten Startadresse (A2) zur Speicherung einer zweiten Maschinenbefehlssequenz (B2) bereitgestellt werden, und dass das Verändern der Startadressenerfolgt, indem die zweite Maschinenbefehlssequenz (B2) im ersten Speicherplatz (321) gespeichert wird.
  5. Verfahren nach Anspruch 4, dadurch gekennzeichnet, dass das Verändern der Startadressen erfolgt, indem die erste Maschinenbefehlssequenz (B1) im zweiten Speicherplatz (322) gespeichert wird.
  6. Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass ein erster Tabelleneintrag (T1), der auf eine erste Startadresse (A1) eines ersten Speicherplatzes (321) zur Speicherung einer ersten Maschinenbefehlssequenz (B1) verweist, und ein zweiter Tabelleneintrag (T2), der auf eine zweite Startadresse (A2) eines zweiten Speicherplatzes (322) zur Speicherung einer zweiten Maschinenbefehlssequenz (B2) verweist, bereitgestellt werden, und dass das Verändern der Startadressen erfolgt, indem der erste Tabelleneintrag (T1) derart geändert wird, dass er auf die zweite Startadresse (A2) verweist
  7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, dass das Verändern der Startadressen erfolgt, indem der zweite Tabelleneintrag (T2) derart geändert wird, dass er auf die erste Startadresse (A1) verweist.
  8. Verfahren nach Anspruch 6 oder 7, dadurch gekennzeichnet, dass der erste Tabelleneintrag (T1) eine erste virtuelle Adresse und die Startadresse, auf die verwiesen wird, umfasst, und dass der zweite Tabelleneintrag (T2) eine zweite virtuelle Adresse umfasst und die Startadresse, auf die verwiesen wird, umfasst.
  9. Verfahren nach einem der Ansprüche 1 bis 8, dadurch gekennzeichnet, dass der Befehlswortsatz (PS) ein erstes Befehlswort (P1), das der ersten Startadresse (A1) zugeordnet ist, und ein zweites Befehlswort (P2), das der zweiten Startadresse (A2) zugeordnet ist, umfasst, und dass beim Ändern die vormals zweiten Befehlsworte (P2) in der Befehlswortfolge (P) jeweils durch das erste Befehlswort (P1) ersetzt werden.
  10. Verfahren nach Anspruch 9, dadurch gekennzeichnet, dass beim Ändern die vormals ersten Befehlsworte (P1) in der Befehlswortfolge (P) jeweils durch das zweite Befehlswort (P2) ersetzt werden.
  11. Verfahren nach einem der Ansprüche 3 bis 10, dadurch gekennzeichnet, dass die Verdrängungsvorgänge durch ein Simulationstool bestimmt werden.
  12. Verfahren nach einem der Ansprüche 3 bis 10, dadurch gekennzeichnet, dass die die Verdrängungsvorgänge durch eine Verarbeitung der Folge (B) vor dem Verändern der Startadressen detektiert werden.
  13. Verfahren nach einem der Ansprüche 3 bis 10, dadurch gekennzeichnet, dass nach dem Verarbeiten eines Teils der Folge (B) das Verändern der Startadressen durchgeführt wird.
  14. Schaltungsanordnung zur Optimierung der Trefferrate eines Maschinenbefehl-Caches bei der Interpretation einer Befehlswortfolge (P) für eine virtuelle Maschine (VM) durch zugeordnete native Maschinenbefehlssequenzen mit mindestens einem Maschinenbefehl (B0, B1, B2, B3) für ein Rechenwerk (1), wobei die Schaltungsanordnung umfasst: – ein erstes Speichermittel (32) mit einer Vielzahl an Speicherplätzen (320, 321, 322, 323), denen jeweils eine Startadresse (A0, A1, A2, A3) aus einem Adresssatz zugeordnet ist, wobei das erste Speichermittel (32) ausgebildet ist, einen Satz (BS) mit einer Vielzahl Maschinenbefehlssequenzen (B0, B1, B2, B3) mit mindestens einem Maschinenbefehl zu speichern, wobei jede Maschinenbefehlssequenz (B0, B1, B2, B3) in einem der Speicherplätze (320, 321, 322, 323) mit seiner jeweiligen Startadresse (A0, A1, A2, A3) speicherbar ist, – ein zweites Speichermittel (33), das ausgebildet ist, eine Befehlswortfolge (P) zu speichern, die eine Folge (B) von in dem Rechenwerk (1) zu verarbeitenden Maschinenbefehlen (B0, B1, B2, B3) vorgibt, wobei die Zuordnung eines Befehlswortes (P0, P1, P2, P3) zu einer Maschinenbefehlssequenz (B0, B1, B2, B3) durch einen Verweis an die entsprechende Startadresse (A0, A1, A2, A3) der Maschinenbefehlssequenz (B0, B1, B2, B3) erfolgt, – einen Maschinenbefehl-Zwischenspeicher, Cache (2), mit Zwischenspeicherplätzen (C1, C2) zum Zwischenspeichern von Maschinenbefehlen (B0, B1, B2, B3), – das Rechenwerk (1) zur Verarbeitung der Folge (B) von Maschinenbefehlen, wobei das Rechenwerk (1) an das ersten Speichermittel (32) und an das zweite Speichermittel (33) sowie an den Maschinenbefehl-Zwischenspeicher (2) gekoppelt ist und ausgebildet ist, eine zu verarbeitende Maschinenbefehlssequenz (B0, B1, B2, B3) aus dem Zwischenspeicher (2) zu laden, wenn sie dort bereitsteht, oder aus dem ersten Speichermittel (32) zu laden und in einem der Zwischenspeicherplätze (C1, C2) des Zwischenspeichers (2) zu speichern, – ein Detektionsmittel (6), ausgebildet zum Ermitteln der Häufigkeit der Verdrängungsvorgänge der Maschinenbefehlssequenzen (B0, B1, B2, B3) in dem Maschinenbefehl-Zwischenspeicher in Abhängigkeit von dem Ablauf der Befehlswortfolge (P), wobei die Schaltungsanordnung ausgebildet ist, die Startadressen (A0, A1, A2, A3) der. den Befehlsworten (P0, P1, P2, P3) zugeordneten Maschinenbefehlssequenzen (B0, B1, B2, B3) zu verändern, sodass eine Reduktion von Verdrängungsvorgängen im Zwischenspeicher (2) erreicht wird.
  15. Schaltungsanordnung nach Anspruch 14, dadurch gekennzeichnet, dass der Maschinenbefehl-Zwischenspeicher (2) ausgebildet ist, die Zwischenspeicherplätze (C1, C2) den zwischenzuspeichernden Maschinenbefehlen in Abhängigkeit der Adressen (A0, A1, A2, A3) der Speicherplätze (320, 321, 322, 323), in denen die Maschinenbefehle (B0, B1, B2, B3) gespeichert sind, zuzuordnen.
  16. Schaltungsanordnung nach Anspruch 15, dadurch gekennzeichnet, dass der Zwischenspeicher (2) ausgebildet ist, die Zwischenspeicherplätze (C1, C2) den zwischenzuspeichernden Maschinenbefehlen (B0, B1, B2, B3) in Abhängigkeit von virtuelle Adressen (A0, A1, A2, A3) zuzuordnen, wobei das Rechenwerk (1) die virtuelle Adressen (A0, A1, A2, A3) den Speicherplätzen (320, 321, 322, 323), in denen die Maschinenbefehle (B0, B1, B2, B3) gespeichert sind, beiordnet.
  17. Schaltungsanordnung nach einem der Ansprüche 14 bis 16, dadurch gekennzeichnet, dass ein erster Speicherplatz (321) zur Speicherung einer ersten Maschinenbefehlssequenz (B1) mit einer ersten Startadresse (A1) vorgesehen ist, und dass ein zweiter Speicherplatz (322) zur Speicherung einer zweiten Maschinenbefehlssequenz (B2) mit einer zweiten Startadresse (A2) vorgesehen ist, und dass die Schaltungsanordnung ausgebildet ist, den zweiten Maschinenbefehl oder die zweite Maschinenbefehlssequenz (B2) im ersten Speicherplatz (321) zu speichern und/oder den erste Maschinenbefehl oder die erste Maschinenbefehlssequenz (B1) im zweiten Speicherplatz (322) zu speichern.
  18. Schaltungsanordnung nach einem der Ansprüche 14, bis 16, gekennzeichnet durch ein Zuordnungsmittel (41), um eine Tabelle (T) zu speichern, wobei ein erster Tabelleneintrag (T1) auf eine erste Startadresse (A1) eines ersten Speicherplatzes (321) zur Speicherung einer ersten Maschinenbefehlssequenz (B1) verweist und ein zweiter Tabelleneintrag (T1) auf eine zweite Startadresse (A2) eines zweiten Speicherplatzes (322) zur Speicherung einer zweiten Maschinenbefehlssequenz (B2) verweist, und wobei die Verweise derart veränderbar sind, dass der erste Tabelleneintrag (T1) auf die zweite Startadresse (A2) verweist und/oder dass der zweite Tabelleneintrag (T2) auf die erste Startadresse (A1) verweist.
  19. Schaltungsanordnung nach Anspruch 18, dadurch gekennzeichnet, dass der erste Tabelleneintrag (T1) eine erste virtuelle Adresse und die Startadresse, auf die verwiesen wird, umfasst, und dass der zweite Tabelleneintrag (T2) eine zweite virtuelle Adresse und die Startadresse, auf die verwiesen wird, umfasst.
  20. Schaltungsanordnung nach Anspruch 19, dadurch gekennzeichnet, dass die Befehlswortfolge (P) Befehlsworte (P0, P1, P2, P3) aus einem Befehlswortsatz (PS) mit einer Vielzahl von Befehlsworten (P0, P1, P2, P3) umfasst, wobei jedem Befehlswort (P0, P1, P2, P3) des Befehlswortsatzes (PS) ein Tabelleneintrag (T0, T1, T2, T3) zugeordnet ist.
  21. Schaltungsanordnung nach einem der Ansprüche 14 bis 19, dadurch gekennzeichnet, dass der Befehlswortsatz (PS) ein erstes Befehlswort (P1), das der ersten Startadresse (A1) zugeordnet ist, und ein zweites Befehlswort (P2), das der zweiten Startadresse (A2) zugeordnet ist, umfasst, und dass die Schaltungsanordnung ausgebildet ist, die vormals zweiten Befehlsworte (P2) in der Befehlswortfolge (P) jeweils durch das erste Befehlswort (P1) zu ersetzen und/oder die vormals ersten Befehlsworte (P1) in der Befehlswortfolge (P) jeweils durch das zweite Befehlswort (P2) zu ersetzen.
  22. Schaltungsanordnung nach Anspruch 20, dadurch gekennzeichnet, dass der Befehlswortsatz (PS) ein erstes Befehlswort (P1), das dem ersten Tabelleneintrag (T1) zugeordnet ist, und ein zweites Befehlswort (P2), das dem zweiten Tabelleneintrag (T2) zugeordnet ist, umfasst, und dass die Schaltungsanordnung ausgebildet ist, die vormals zweiten Befehlsworte (P2) in der Befehlswortfolge (P) jeweils durch das erste Befehlswort (P1) zu ersetzen und/oder die vormals ersten Befehlsworte (P1) in der Befehlswortfolge (P) jeweils durch das zweite Befehlswort (P2) zu ersetzen.
  23. Schaltungsanordnung nach einem der Ansprüche 18, 19, 20 und 22, gekennzeichnet durch ein an das zweite Speichermittel (33), an das Zuordnungsmittel (41) und an das Detektionsmittel (6) gekoppeltes Änderungsmittel (7), das ausgebildet ist, während oder nach der Verarbeitung der Folge (B) die Zuordnung zu verändern und die Befehlswortfolge (P) zu ändern.
DE102006041002A 2006-08-31 2006-08-31 Verfahren, um ein Programm an einen Zwischenspeicher anzupassen, und Schaltungsanordnung Expired - Fee Related DE102006041002B4 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102006041002A DE102006041002B4 (de) 2006-08-31 2006-08-31 Verfahren, um ein Programm an einen Zwischenspeicher anzupassen, und Schaltungsanordnung
US11/556,767 US7523261B2 (en) 2006-08-31 2006-11-06 Method and circuit arrangement for adapting a program to suit a buffer store

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102006041002A DE102006041002B4 (de) 2006-08-31 2006-08-31 Verfahren, um ein Programm an einen Zwischenspeicher anzupassen, und Schaltungsanordnung

Publications (2)

Publication Number Publication Date
DE102006041002A1 DE102006041002A1 (de) 2008-03-20
DE102006041002B4 true DE102006041002B4 (de) 2009-01-02

Family

ID=39078842

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102006041002A Expired - Fee Related DE102006041002B4 (de) 2006-08-31 2006-08-31 Verfahren, um ein Programm an einen Zwischenspeicher anzupassen, und Schaltungsanordnung

Country Status (2)

Country Link
US (1) US7523261B2 (de)
DE (1) DE102006041002B4 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2500707B (en) * 2012-03-30 2014-09-17 Cognovo Ltd Multiprocessor system, apparatus and methods

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2045773A1 (en) * 1990-06-29 1991-12-30 Compaq Computer Corporation Byte-compare operation for high-performance processor
CA2045789A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites Granularity hint for translation buffer in high performance processor
WO1997027536A1 (en) * 1996-01-24 1997-07-31 Sun Microsystems, Inc. Instruction folding for a stack-based machine
DE69734399D1 (de) * 1996-01-24 2006-03-02 Sun Microsystems Inc Verfahren und vorrichtung zur stapel-cachespeicherung
US6139199A (en) * 1997-06-11 2000-10-31 Sun Microsystems, Inc. Fast just-in-time (JIT) scheduler
US6978451B2 (en) * 2001-05-31 2005-12-20 Esmertec Ag Method for fast compilation of preverified JAVA bytecode to high quality native machine code

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Piumarta, I. et al.: Optimizing direct threaded code by selective inlining. In: Proceedings of the ACM SIGPLAN 1998 conference on programming language design and implementation. Montreal, CA, pp. 291-300; *
Scott, A.p. et al.: For-Way Superscalar PA-RISC Pr ocessors. Hewlett-Packard Journal, Augsut 1997, S. 1-9 <http://ftp.parisc- linux.org/docs/whitepaper s/four_way_superscalar.pdf> (recherchiert am 07.05 .07); Piumarta, I. et al.: Optimizing direct threa ded code by selective inlining. In: Proceedings of the ACM SIGPLAN 1998 conference on programming la nguage design and implementation. Montreal, CA, pp . 291-300
Scott, A.p. et al.: For-Way Superscalar PA-RISC Processors. Hewlett-Packard Journal, Augsut 1997, S. 1-9 http://ftp.parisc-linux.org/docs/whitepapers/four_way_superscalar.pdf (recherchiert am 07.05.07); *

Also Published As

Publication number Publication date
US7523261B2 (en) 2009-04-21
US20080059754A1 (en) 2008-03-06
DE102006041002A1 (de) 2008-03-20

Similar Documents

Publication Publication Date Title
EP0689694B1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE60210633T2 (de) Verfahren und vorrichtungen zur verbesserung des durchsatzes von eingebetteten prozessoren auf cache-basis durch umschalten von tasks als reaktion auf eine cache-verfehlung
DE69723286T2 (de) Echtzeitprogramm-sprachbeschleuniger
DE10002120B4 (de) Adressumsetzpufferanordnung und Verfahren für den Betrieb einer Adressumsetzpufferanordnung
DE112013001711T5 (de) Optimieren von Unterroutine-Aufrufen auf der Grundlage der Architekturebene einer aufgerufenen Unterroutine
DE4335475A1 (de) Datenverarbeitungseinrichtung mit Cache-Speicher
DE102007025397B4 (de) System mit mehreren Prozessoren und Verfahren zu seinem Betrieb
DE10393481T5 (de) Verfahren und Vorrichtung zum Durchführen einer Cache-Umgehung
DE112012004629T5 (de) Dynamischer Speicheraffinitätsanpasser auf Prozess/Objektebene
EP3417373B1 (de) Verfahren und vorrichtung zum betreiben eines steuergeräts
DE4103093C2 (de) Verfahren zum Steuern eines Datenübertragungs-Pufferspeichers und Computersystem zum Durchführen dieses Verfahrens
DE10103070B4 (de) Verfahren und Prüfschaltung zum Ermitteln eines Gültigkeitsstatus für einen zeitlich zurückliegenden Loadbefehl
EP1079307B1 (de) Verfahren zum Betrieb eines Speichersystems sowie Speichersystem
DE10392127T5 (de) Verwendung eines Kontextidentifizierers in einem Zwischenspeicher
DE4234695C2 (de) Computer-Speichersystem und Verfahren zur Aufrechterhaltung der Cache-Kohärenz zwischen einem Daten-Cache und einem Segmentdeskriptor-Cache
DE69626263T2 (de) System zur Zuteilung mehrerer Befehle ohne Verzweigungsunterbrechung in einem Pipelineprozessor
DE4234194A1 (de) System und verfahren zur speichersegmentierung fuer einen mikroprozessor
DE102006041002B4 (de) Verfahren, um ein Programm an einen Zwischenspeicher anzupassen, und Schaltungsanordnung
EP0760134A1 (de) Speichervorrichtung zum speichern von daten
DE4323929A1 (de) Software-geführtes Mehrebenen-Cache-Speichersystem
WO2003048943A2 (de) Speicher für die zentraleinheit einer rechenanlage, rechenanlage und verfahren zum synchronisieren eines speichers mit dem hauptspeicher einer rechenanlage
EP0575413B1 (de) Verfahren zum maschinellen erstellen eines aus mehreren modulen zu bindenden programmes
DE102007015507B4 (de) Prozessor mit einem ersten und einem zweiten Betriebsmodus und Verfahren zu seinem Betrieb
DE4330119C1 (de) Verfahren zum gesteuerten Vorladen von Informationsblöcken in Cacheblockgröße in einen Cachespeicher eines Rechners bei Ablauf eines Programms
EP1062630B1 (de) Datenträger

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee