DE69723804T2 - Prozessor mit befehlscachespeicher - Google Patents

Prozessor mit befehlscachespeicher Download PDF

Info

Publication number
DE69723804T2
DE69723804T2 DE69723804T DE69723804T DE69723804T2 DE 69723804 T2 DE69723804 T2 DE 69723804T2 DE 69723804 T DE69723804 T DE 69723804T DE 69723804 T DE69723804 T DE 69723804T DE 69723804 T2 DE69723804 T2 DE 69723804T2
Authority
DE
Germany
Prior art keywords
bits
output
computer processor
word
bit
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 - Lifetime
Application number
DE69723804T
Other languages
English (en)
Other versions
DE69723804D1 (de
Inventor
Michael Ang
Eino Jacobs
Hari Hampapuram
C. Yen LEE
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.)
NXP BV
Original Assignee
TRIMEDIA TECHNOLOGIES Inc
Trimedia Technologies Inc Sunnyvale
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
Priority claimed from US08/649,732 external-priority patent/US5862398A/en
Priority claimed from US08/648,333 external-priority patent/US6131152A/en
Application filed by TRIMEDIA TECHNOLOGIES Inc, Trimedia Technologies Inc Sunnyvale filed Critical TRIMEDIA TECHNOLOGIES Inc
Application granted granted Critical
Publication of DE69723804D1 publication Critical patent/DE69723804D1/de
Publication of DE69723804T2 publication Critical patent/DE69723804T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array

Description

  • Die Erfindung bezieht sich auf einen Computerprozessor mit einem Befehls-Cache und auf ein Verfahren zur Erzeugung von Befehlen für solche einen Computerprozessor.
  • Die Erfindung bezieht sich insbesondere auf einen VLIW Prozessor (VLIW = Very Long Instruction Word) und insbesondere auf Befehls-Formate für solche Prozessoren und auf eine Einrichtung und ein Verfahren zur Bearbeitung solcher Befehls-Formate.
  • VLIW-Prozessoren haben Befehls-Worte, die eine Vielzahl von Ausgabe-Slots beinhalten. Die Prozessoren beinhalten auch eine Vielzahl von funktionellen Einheiten. Jede funktionelle Einheit ist dazu bestimmt, einen Satz von Operationen eines gegebenen Typs auszuführen. Jede funktionelle Einheit ist RISC-ähnlich in dem sie in jedem Maschinenzyklus einen Befehl nach Art einer Pipeline beginnen kann. Jeder Ausgabe-Slot ist dazu da, eine jeweilige Operation zu halten. Alle Operationen in dem selben Befehlswort werden parallel in der Funktionseinheit in einem einzigen Zyklus des Prozessors begonnen. Der VLIW implementiert so eine feinkörnige Parallelität.
  • Ein Befehl in einer VLIW Maschine beinhaltet so typischerweise eine Vielzahl von Operationen. In konventionellen Maschinen dürfte jede Operation als ein separater Befehl bezeichnet werden. In der VLIW Maschine wird jeder Befehl jedoch von Operationen oder no-ops (Dummy-Operationen) gebildet.
  • VLIW-Prozessoren verwenden, wie konventionelle Prozessoren, eine Speichereinrichtung, wie z. B. ein Plattenlaufwerk, um die Befehlströme vor der Ausführung durch den Prozessor zu speichern. Ein VLIW-Prozessor kann auch, wie ein konventioneller Prozessor, Caches verwenden, um Teile von Befehlsströmen mit breitbandiger Zugriffsmöglichkeit zu dem Prozessor zu speichern.
  • Der Befehl in der VLIW Maschine wird von einem Programmierer oder einem Compiler aus diesen Operationen aufgebaut. Damit ist die Planung des zeitlichen Ablaufs in dem VLIW-Prozessor softwaregesteuert.
  • Der VLIW-Prozessor kann mit anderen Typen von Parallel-Prozessoren, wie bspw. Vektor-Prozessoren und Superscalar-Prozessoren, wie im Folgenden beschrieben verglichen werden. Vektor-Prozessoren haben einzelne Operationen, die von multiplen Datenelementen simultan geführt werden. Superscalar-Prozessoren implementieren feinkörnige Parallelität, wie die VLIW-Prozessoren. Aber unähnlich zu den VLIW-Prozessoren, führen die Superscalar-Prozessoren die zeitliche Ablaufplanung der Operationen in Hardware durch.
  • Wegen der langen Befehlsworte haben VLIW-Prozessoren verstärkt Probleme mit der Cache-Nutzung. Insbesondere verursacht das große Format des Codes Cache-Versäumnisse, d. h. Situationen, in denen benötigte Befehle nicht im Cache sind. Große Codeformate erfordern auch eine größere Hauptspeicher-Bandbreite um Code von dem Hauptspeicher zu dem Cache zu transferieren.
  • Weitere Informationen über den technischen Hintergrund dieser Anmeldung können in der parallel anhängigen Patentanmeldung EP 0 843 848 , die von den Erfindern der vorliegenden Patentanmeldung stammt und demselben Anmelder zugeordnet ist, und in den folgenden, vorgehenden Anmeldungen gefunden werden:
    • – US Anmeldung Ser. No. US 5 450 556 , eingereicht am 25. Oktober 1993 (PHA 1205), welche die Verwendung von Wächterbits (guard Bits) zeigt; und
    • – US Anmeldung Ser. No. WO 96/21 186, eingereicht am 30. Dezember 1994 (PHA 21,932), welche ein Register-File für die Verwendung mit der VLIW Architektur zeigt.
  • Ein Computer, der einen Befehls-Cache gemäß dem Oberbegriff von Anspruch 1 enthält, ist aus dem Dokument US-A-5442760 bekannt. Dieses Dokument offenbart einen Befehls-Cache, der zwischen einer Dekodier-Stufe und einer Vielzahl von Funktionseinheiten angeordnet ist, die parallel mehrere Befehle ausführt. Im Gegensatz zu dem Computersystem der vorliegenden Anmeldung, bei der ein Befehl pro Zugriff abgerufen wird, können gemäß dem Cache von US-A-5442760 mehrere Befehle aus dem Cache pro Zugriff ausgelesen werden. Deshalb ist das Bit-Muster in dem Befehls-Cache nicht eine Bit für Bit Kopie der Befehle in dem Befehls-Speicher.
  • Es ist eine Aufgabe der Erfindung das Cache-Layout zu vereinfachen.
  • Es ist eine andere Aufgabe der Erfindung ein Verfahren zur Erzeugung eines gemischten Bitstromes anzugeben, der ein vereinfachtes Cache-Layout erlaubt.
  • Die Erfindung sieht einen Computerprozessor wie in Anspruch 1 angegeben vor.
  • Dies ermöglicht es, den Eingabe-Bus und den Ausgabe-Bus unabhängig voneinander anzulegen, um die Anforderungen der Verbindungen zu dem Hauptspeicher bzw. zu der Verarbeitungseinheit zu befriedigen. So wird ein gemischter Bitstrom verwendet, der das Cache-Layout vereinfacht. Der Cache speichert einen gemischten Befehls-Strom und multiplext Bits von Speichermitteln so auf einen Bus, so dass die Bits entmischt werden. Eine Vielfachheit von Leitungen führen von den Speichermitteln zu dem Bus.
  • Die Leitungen kreuzen sich nicht gegenseitig.
  • Die Erfindung bezieht sich auch auf ein Verfahren, wie es in Anspruch 7 angegeben ist. Ein von kompiliertes und gelinktes Objekt-Modul, das von einem Compiler und/oder Linker generiert ist, und Code wird empfangen, um die kompilierte und gelinkte Software zur Generierung eines zweiten Objekt-Moduls zu verquirlen. Das zweite Objekt-Modul ist geeignet auf das Auslesen aus dem Cache-Speicher hin entquirlt zu werden, der eine Cache-Struktur verwendet, deren Ausgabe-Bus Leitungen nicht gekreuzt sind.
  • Kurze Beschreibung der Zeichnungen:
  • Die Erfindung wird nun anhand eines nicht emittierenden Beispieles unter Bezugnahme auf die folgenden Figuren beschrieben:
  • 1a zeigt einen Prozessor zur Verwendung des komprimierten Befehlsformats der Erfindung;
  • 1b zeigt weitere Details der CPU des Prozessors von 1a;
  • 2a2e zeigen mögliche Positionen von Befehlen in dem Cache;
  • 3 verdeutlicht Kompilierung und Verlinkung von Code gemäß der Erfindung;
  • 4 ist ein Flussdiagramm der Kompressions- und Vermischungsmodule;
  • 5 expandiert die Box 902 von 4;
  • 6a ist eine schematische Darstellung der Funktionsweise des Befehls-Cache 103 bei Eingabe;
  • 6b ist eine schematische Darstellung der Funktionsweise eines Teils des Befehls-Cache 103 bei Ausgabe;
  • 7 ist eine schematische Darstellung der Funktionsweise des Befehls-Cache 104 bei Ausgabe;
  • 8 verdeutlicht das Dekompressions-Verfahren.
  • 1a zeigt die generelle Struktur eines erfindungsgemäßen Prozessors. Ein erfindungsgemäßer Mikroprozessor beinhaltet eine CPU 102, einen Befehls-Cache 103 und einen Daten-Cache 105. Die CPU ist mit den Caches durch breitbandige Busse verbunden. Der Mikroprozessor enthält einen Speicher 104, in dem ein Befehlsstrom gespeichert wird.
  • Der Cache 103 ist so strukturiert, dass er 512 Bit Doppel-Worte hat. Die individuellen Bytes in den Worten, nicht jedoch die Bits, sind adressierbar. Bytes sind 8 Bits lang. Vorzugsweise kann auf die Doppel-Worte als ein Einzel-Wort in einem einzelnen Takt-Zyklus zugegriffen werden.
  • Der Befehlsstrom ist als Befehle in einem komprimierten Format gespeichert.
  • Das komprimierte Format wird sowohl in dem Speicher 104 als auch in dem Cache 103 verwendet.
  • 1b zeigt weitere Details des erfindungsgemäßen VLIW-Prozessors. Der Prozessor beinhaltet ein Multiport-Register-File 150, eine Anzahl von funktionellen Einheiten 151, 142, 153, ..., und ein Befehlsausgabe-Register 154, abgekürzt durch IIR. Das Multiport-Register-File speichert Ergebnisse von und Operanden für die funktionellen Einheiten. Das Befehlsausgabe-Register beinhaltet eine Vielzahl von Ausgabe-Slots zum Halten von Operationen. die in einem einzigen Takt-Zyklus parallel von den Funktionseinheiten 151, 152, 153, ... begonnen werden. Eine Dekompressionseinheit 155 konvertiert die komprimierten Befehle aus dem Befehls-Cache 103 in eine Form, das von dem IIR 154 verwendbar ist.
  • Kurz gesagt enthält ein komprimierter Befehl ein Formatfeld, welches spezifiziert, welche Ausgabe-Slots von dem komprimierten Befehl zu verwenden sind. Zur Widergewinnung von Leistungsfähigkeit werden Format-Bits in dem Befehl gespeichert, der dem Befehl vorangeht, auf den sich die Format-Bits beziehen. Dies ermöglicht eine Pipelineverarbeitung bei der Befehlswiedergewinnung. Es sind 2*N Format-Bits für eine N-Ausgabe-Slot- Maschine vorhanden, organisiert als N Gruppen von 2 Bits, wobei jede Gruppe sich auf einen Ausgabe-Slot bezieht. Die Bits in einer Gruppe spezifizieren, ob der korrespondierende Ausgabe-Slot zu verwenden ist, und spezifizieren die Operationslänge, die von der Operation für diesen Ausgabe-Slot in dem Befehl besetzt ist.
  • Die 2a2e zeigen mögliche Positionen von Befehlen in dem Cache.
  • 3 zeigt ein Diagramm darüber, wie Quell-Code zu einem ladbaren, komprimierten Objekt-Modul wird. Zuerst muß der Quell-Code 801 durch den Compiler 802 kompiliert werden, um einen ersten Satz von Objekt-Modulen 803 zu erzeugen. Diese Module werden durch einen Linker 804 verlinkt um einen zweiten Typ von Objekt-Modul 805 zu erzeugen. Dieses Modul wird dann von 806 komprimiert und gemischt um ein ladbares Modul 807 zu ergeben.
  • Jeder Standardcompiler oder Linker kann verwendet werden. Objekt-Module II enthalten eine Anzahl von Standard-Datenstrukturen. Diese beinhalten einen Header, globale & lokale Symbol-Tabellen, Referenz-Tabellen für verlagerte Informationen, eine Sektions-Tabelle und Debug Informationen, von denen einige von dem Kompressions- und Mischungsmodul 807 verwendet werden. Das Objekt-Modul II besitzt auch Partitionen, einschließlich einer Text-Partition, wo sich die zu bearbeitenden Befehle befinden, und einer Quell-Partition, welche die Übersicht darüber beinhalten, von welchem Quell-File der Text gekommen ist.
  • 4 zeigt ein Flussdiagramm hoher Ebene des Kompressions- und Mischmoduls. Bei 901 wird das Objekt-Modul II eingelesen. Bei 902 wird die Text-Partition bearbeitet. Bei 903 werden die anderen Sektionen bearbeitet. Bei 904 wird der Header aktualisiert. Bei 905 wird das Objekt-Modul ausgegeben.
  • 5 expandiert die Box 902. Bei 1001 werden die Referenz-Tabellen, d. h. Auslagerungs-Informationen gesammelt. Bei 1002 werden die Verzweigungsziele gesammelt, da diese nicht zu komprimieren sind. Bei 1003 überprüft die Software, ob weitere Files in der Quell-Partition sind. Falls dies der Fall ist, wird bei 1004 der dem nächsten File entsprechende Teil gewonnen. Dann, bei 1005, wird dieser Teil komprimiert. Bei 1006 wird die File Information in der Quell-Partition aktualisiert. Bei 1007 wird die lokale Symboltabelle aktualisiert. Wenn keine Files mehr in der Quell-Partition sind, wird die globale Symboltabelle bei 108 aktualisiert. Dann, bei 1009, werden Adress-Referenzen in der Text-Sektion aktualisiert. Dann, bei 1010 wird die 256-Bit Mischung bewirkt. Die Beweggründe für solche einen Mischung werden weiter unten diskutiert werden.
  • Nun wird die Befehlssequenz der Box 1005 von 5 erklärt. Zuerst wird bestimmt, ob weiter zu komprimierende Befehle vorhanden sind. Falls dies der Fall ist, wird der nächste Befehl gewonnen. Nacheinander wird jede Operation in dem Befehl komprimiert und eine Zerstreuungs-Tabelle aktualisiert. Die Zerstreuungs-Tabelle (scatter table) ist eine neue Datenstruktur, die als eine Folge der Kompression und Mischung verwendet wird, welche weiter weiter unten erklärt wird. Dann werden all die Operationen in einem Befehl und die Format-Bits eines nachfolgenden Befehls miteinander kombiniert. Im Anschluß daran müssen die Auslagerungsinformationen in der Referenz-Tabelle aktualisiert werden, falls der augenblickliche Befehl eine Adresse enthält. Dann werden die Informationen gesammelt, die benötigt werden, um Adressreferenzen in der Text-Sektion aktualisieren. Der komprimierte Befehl wird an das Ende des Ausgabe-Bit-Strings angehängt und die Steuerung wird zurückgegeben. Wenn keine Befehle mehr vorhanden sind kehrt die Steuerung zur Box 106 von 5 zurück.
  • Die Zerstreuungs-Tabelle, die als Folge der Kompression und Mischung der Erfindung verwendet wird, kann wie folgt erklärt werden.
  • Die Referenz-Tabelle enthält eine Liste von Orten von Adressen, die von dem Befehlsstrom verwendet werden, und eine korrespondierende Liste der aktuellen Adressen, die bei solchen Orten gelistet sind.
  • Wenn der Code komprimiert wird und wenn er geladen wird, müssen diese Adressen aktualisiert werden.
  • Demgemäß wird die Referenz-Tabelle zu diesen Zeiten verwendet um das updaten zu erlauben.
  • Jedoch werden die aktuellen Bits der Adressen voneinander getrennt und neu geordnet, wenn der Code komprimiert und gemischt wird. Deshalb führt die Zerstreuungs-Tabelle für jede Adresse in der Referenz-Tabelle an, wo jedes Bit ansässig ist. In dem bevorzugten Ausführungsbeispiel führt die Tabelle die Breite eines Bit-Felds, den Abstand von dem korrespondierenden Index der Adresse in dem Quell-Text, und den korrespondierenden Abstand von dem korrespondierenden Index der Adresse in dem Ziel-Text an.
  • Wenn das Objekt-Modul III geladen wird um auf den Prozessor zu laufen, erlaubt die Zerstreuungs-Tabelle, dass die in der Referenz-Tabelle gelisteten Adressen aktualisiert werden, sogar bevor die Bits entmischt werden.
  • Damit der VLIW Prozessor die wie oben beschrieben komprimierten Befehle bearbeiten kann, müssen die Befehle dekomprimiert werden. Nach der Dekomprimierung werden die Befehle das Befehlsregister ausfüllen, welches N Ausgabe-Slots hat, wobei N im Fall des bevorzugten Ausführungsbeispiels 5 ist.
  • 8 ist ein Schema des Dekompressions-Prozesses. Befehle kommen von dem Speicher 1201, d. h. entweder von dem Hauptspeicher 104 oder von dem Befehls-Cache 105. Die Befehle müssen dann entmischt werden 1201, was im weiteren weiter unten erklärt wird, bevor sie dekomprimiert werden 1203. Nach der Dekompression 1203 können die Befehle zu der CPU 1204 weitergeleitete werden.
  • Bitverquirlung
  • Wo Befehle lang sind, bspw. 512 Bit Doppel-Worte wird die Cache-Struktur Komplex. Es ist vorteilhaft, die Bits der Befehle zu verquirlen (swizzle), um das Layout des Chips zu vereinfachen. Hierbei werden die Begriffe „verquirlen" (swizzle) und vermischen (shuffle) verwendet um die selbe Sache zu bezeichnen. Das folgende stellt einen Algorithmus zur Verquirlung von Bits dar.
    Figure 00100001
    wobei i, j und k ganzzahlige Indizes sind; word_shuffled eine Matrix zur Speicherung von Bits eines gemischten Wortes ist; und word_unshuffled eine Matrix zur Speicherung von Bits eines nichtgemischten Wortes ist.
  • Auf diese Art ist der Index, an den ein Bit in dem Array „word shuffled" geschrieben wird, ein n = 3-3Bit logische Rotation des Index an dem das Bit von dem Array „word unshuffled" gelesen wird (In einer n-Bit logischen Rotation werden die Bits des Index um n-Bits zu einer Position höherer Signifikanz geschoben und die n-Bits höchster Signifikanz des Index an den n wenigsten signifikanten Positionen plaziert). Die spezielle Wahl einer n = 3-Bit Rotation wird für den hierin im Folgenden beschriebenen Fall ausgewählt, bei dem die räumliche Ausgabeordnung von gelesenen Bits aus dem Cache eine zyklische Überlappung von Bits von 8 (= 2n n = 3) verschiedenen Speicherbänken ist.
  • Cache-Struktur
  • 6a zeigt die Funktionsweise am Eingang einer Cache-Struktur die zur effizienten Bearbeitung von VLIW Befehlen verwendbar ist. Dieser Cache beinhaltet 16 Banken 601616 von jeweils 2k Bytes. Diese Bänke teilen sich einen Eingabe-Bus 617. Die Caches sind in zwei Stapel geteilt. Der Stapel auf der linken Seite wird als „low" und der Stapel auf der rechten Seite wird als „high" bezeichnet werden. Der Cache kann eine Eingabe nur in eine Bank zu einer Zeit und dann nur 4 Bytes zu einer Zeit annehmen. Die Adressierung bestimmt, welche 4 Bytes von welcher Bank gefüllt werden. Für jedes 512 Bit Wort, das in dem Cache zu speichern ist, werden vier Bytes in jeder Bank gespeichert. Ein schattierter Bereich jeder Bank ist dargestellt, der korrespondierende Teile jeder Bank zum Laden eines gegebenen Wortes zeigt. Diese schattierten Bereiche dienen ausschließlich der Illustration. Jedes gegebene Wort kann in einem beliebigen Satz von korrespondierenden Teilen der Banken beladen werden.
  • Nach der Verquirlung gemäß dem oben angedeuteten Algorithmus werden sequenzielle 4 Byte Teile des verquirlten Wortes in die Banken in der folgenden Reihenfolge 608, 616, 606, 614, 604, 612, 602, 610, 607, 615, 605, 613, 603, 611, 601, 609 geladen. Die Reihenfolge des Ladens der 4 Byte Teile des verquirlten Wortes wird durch römische Ziffern in den die Banken repräsentierenden Boxen angedeutet.
  • 6b zeigt, wie das verquirlte Wort aus dem Cache ausgelesen wird. 6b zeigt nur die schattierten Bereiche der Banken des low Stapels. Der high Teil ist Analog. Jeder schattierte Bereich 601a608a hat 32 Bits. Die Bits werden auf den Ausgabe-Bus, der als bus246low bezeichnet ist, unter Verwendung der gezeigten Verbindungen geladen, d. h. in der folgenden Reihenfolge geladen: 608a – bit0, 607a – bit 0, ..., 601a – bit 0; 608a – bit 1, 607a - bit, ... 601a – bit 1; ...; 608a – bit 31, 607a – bit 31, ..., 601a – bit 31. Bei der Verwendung dieser Verbindungen wird das Wort automatisch zurück zu seiner korrekten Bitreihenfolge entquirlt.
  • Die Bündel der Leitungen 620, 621, ..., 622 bilden zusammen den Ausgabe-Bus bus256low. Diese Leitungen durchlaufen den Cache hin zum der Ausgang ohne Kreuzung.
  • Beim Ausgang sieht der Cache wie in 7 aus. Die Bits werden von dem Stapel low 701 und Stapel high 702 unter der Kontrolle der Steuereinheit 704 über ein Schiebe-Netzwerk 703 ausgelesen, welches sicherstellt, dass die Bits sich in der oben spezifizierten Ausgabenreihenfolge befinden. Auf diese Weise wird die gesamte Ausgabe des 512 Bit Worts ohne Bündel 620, 621, ... 622 und analoge Leitungen, die sich kreuzen, sichergestellt.
  • Zusammenfassend stellt die Erfindung einen Befehls-Speicher zur Verwendung in einem Computerprozessor bereit, der
    Mittel zur Speicherung jeweiliger Bits eines Befehls-Stroms aufweist, welche vorvermischt sind; und
    Mittel zum Multiplexen von Bits von den Speichermitteln auf einen Bus aufweist, so dass die Bits entmischt werden, wobei diese Multiplexmittel eine Vielzahl von von den Speichermittel zu dem Bus führenden Leitungen aufweisen, die sich nicht gegenseitig kreuzen. Vorzugsweise ist der Befehls-Strom in Doppel-Wort-Format; und der Cache weist einen ersten Stapel zur Speicherung erster Worte des Doppel-Wort-Formats und einen zweiten Stapel zur Speicherung zweiter Worte des Doppel-Wort-Formats auf.
  • Vorzugsweise sind die Stapel in Banken organisiert und es existiert eine Bank für jedes Bit eines Ausgabe-Bytes auf dem Ausgabe-Bus. Die Multiplexmittel sind fähig, ein Bit von jeder Bank zu transferieren, um ein Ausgabe-Byte zu erzeugen.
  • Vorzugsweise ist der Cache dazu geeignet n Befehle zu speichern, wobei n eine Integervariable ist und jede Bank zumindest ein jeweiliges Bit von jedem der n-Befehle enthält.
  • Jede Bank enthält eine RAM-Spalte für jedes Byte eines Ausgabeworts. Die RAM-Spalten sind in m-Gruppen organisiert, wobei m ein integer Wert ist, der eine Anzahl von Bytes in dem Ausgabewort repräsentiert, jede jeweilige Gruppe eine jeweilige RAM-Spalte für jedes Bit des Ausgabe-Wortes enthält und keine zwei RAM-Spalten in einer einzelnen Gruppe in derselben Bank sind. Die Multiplexmittel weisen m Spaltenmultiplexer auf, wobei jeder Spaltenmultiplexer fähig ist, ein Bit von jeder RAM-Spalte in der jeweiligen Gruppe in das Ausgabe-Wort zu multiplexen.
  • Gemäß eines Ausführungsbeispiels weist der Befehls-Speicher erste und zweite Stapel von acht Banken auf, wobei jede Bank 8 RAM-Spalten von 1-Bit 64 RAM-Zellen aufweist, die RAM-Spalten in Gruppen von acht RAM-Spalten organisiert sind, der erste Stapel dazu bestimmt ist, Bits niedriger Ordnung einer Doppel-Wort-Ausgabe zu speichern und der zweite Stapel dazu bestimmt ist, die Zuordnung der Doppel-Wort-Ausgabe zu speichern. Die Multiplexmittel sind fähig ein Bit von jeder RAM-Spalte in jeder jeweiligen Gruppe in das Ausgabe-Wort zu multiplexen.
  • Vorzugsweise weist der Cache erste und zweite Busse auf, wobei die ersten Busse dazu bestimmt sind, Bits niedriger Ordnung eines Ausgabewortes auszugeben und der zweite Bus dazu bestimmt ist, Bits hoher Ordnung eines Ausgabeworts auszugeben. Als Ergebnis der Mischung der Bits können die Leitungen der ersten und zweiten Busse in derselben Ebene des Prozessors ohne Kreuzungen liegen.
  • Um einen Befehls-Strom für den Computerprozessor zu erzeugen wird Computersoftware bereitgestellt, die auf einem Computerspeichermedium gespeichert ist, um verquirlte Befehle zu erzeugen, die:
    • – Code zum Empfang eines kompilierten und gelinkten Objekt-Moduls, das von einem Compiler und/oder Linker erzeugt ist, zu empfangen, wobei das Objekt-Modul in einem Computerspeichermedium gespeichert ist; und
    • – Code zur Verquirlung der kompilierten und gelinkten Software zur Erzeugung eines zweiten Objekt-Moduls aufweist, wobei das zweite Objekt-Modul dazu geeignet ist, beim Auslesen aus einem Cache-Speicher unter Verwendung einer Cache-Struktur entquirlt zu werden, deren Ausgabe-Bus-Leitungen nicht gekreuzt sind.
  • Der Code zur Verquirlung erzeugt vorzugsweise eine Zerstreuungs-Tabelle, die in einem Computerspeichermedium gespeichert ist, um die Positionen der Bits von vermischten Befehlen relativ zu den Befehlen speichert, von denen die Bits stammen.
  • Auf diese Weise sieht die Erfindung einen auf einem Computerspeichermedium gespeicherten Bit-Strom vor, welcher zumindest einen Teil eines Befehls zur Ausführung auf einem Computerprozessor und gespeichert auf einem Computerspeichermedium beinhaltet, wobei der Teil eine Vielzahl von in einer vermischten Reihenfolge befindlichen Bits beinhaltet, welche ein vereinfachtes Chip-Layout für den Computerprozessor ermöglichen.
  • Der Befehl hat bspw. 512 Bits.

Claims (27)

  1. Computerprozessor (101), – der einen Befehls-Cache (103) aufweist, der einen Eingabe-Bus und einen Ausgabe-Bus hat, wobei der Eingabe-Bus Bits eines Befehls zur Speicherung in dem Befehls-Cache empfängt, – der eine Verarbeitungseinheit (102) mit einem Befehlseingang aufweist, der mit dem Ausgabe-Bus verbunden ist um die Bits des Befehls zu empfangen, dadurch gekennzeichnet, daß der Ausgabe-Bus einen Satz von Leitungen zur parallelen Ausgabe der Bits eines Befehls aufweist, und daß eine räumliche Ausgabe-Ordnung der Bits des Befehls auf dem Satz von Leitungen sich von einer Eingabe-Ordnung der empfangenen Bits über den Eingabe-Bus unterscheidet.
  2. Computerprozessor nach Anspruch 1, bei dem der Befehls-Cache einen Satz von Speicherbänken (601616) aufweist, wobei der Befehl Worte von Bits aufweist, der Eingabe-Bus dafür da ist, jeweilige Bits in eine Bank auf einmal einzugeben, und bei dem jeweilige Leitungen, auf denen der Ausgabe-Bus nacheinander Bits von einem Wort eines Befehls aus einer Bank des Satzes von Banken ausgibt, den Cache der Banken durchqueren ohne sich gegenseitig zu kreuzen.
  3. Computerprozessor nach Anspruch 2, bei dem der Befehls-Speicher eine Anzahl von Ausgabe-Bytes aufweist, wobei aufeinanderfolgende Bits der Ausgabe-Bytes auf räumlich aufeinanderfolgenden Gruppen von Leitungen von dem Satz von parallelen Leitungen ausgegeben werden, und bei dem jedes Bit eines Ausgabe-Bytes von einer unterschiedlichen Bank versorgt wird.
  4. Computerprozessor nach Anspruch 3, bei dem jede Bank eine RAM-Spalte für jedes Ausgabe-Byte aufweist, wobei die RAM-Spalten in m-Gruppen organisiert sind, wobei m eine ganze Zahl ist, die eine Anzahl von Bytes im Ausgabe-Wort repräsentiert, wobei keine zwei Spalten in einer einzelnen Gruppe sich in einer gleichen Bank befinden.
  5. Computerprozessor nach einem der vorgehenden Ansprüche, bei dem der Befehls-Speicher weiter Mittel aufweist, um Bytes von den Speichermitteln auf einen Bus zu multiplexen, so daß die Bits entmischt sind, wobei die Multiplex-Mittel eine Vielzahl von Leitungen aufweisen, die von den Speichermitteln zu dem Bus führen, wobei sich die Leitungen nicht gegenseitig kreuzen.
  6. Computerprozessor nach Anspruch 5, bei dem der Befehls-Strom in Doppel-Wort-Format ist und der Cache einen ersten Stapel zur Speicherung erster Worte aus dem Doppel-Wort-Format und einen zweiten Stapel zur Speicherung zweiter Worte aus dem Doppel-Wort-Format aufweist.
  7. Computerprozessor nach Anspruch 6, bei dem die ersten und zweiten Stapel in Banken organisiert sind.
  8. Computerprozessor nach Anspruch 7, bei dem eine Bank für jedes Bit eines Ausgabe-Bytes auf dem Ausgabe-Bus existiert.
  9. Computerprozessor nach Anspruch 8, bei dem die Multiplexer-Mittel fähig sind, ein Bit von jeder Bank zu transferieren um ein Ausgabe-Byte zu erzeugen.
  10. Computerprozessor nach Anspruch 8, bei dem der Cache dazu geeignet ist, um n-Befehle zu speichern, wobei n eine ganzzahlige Variable ist und jede Bank zumindest ein jeweiliges Bit von jedem der n-Befehle enthält.
  11. Computerprozessor nach Anspruch 10, bei dem jede Bank eine RAM-Spalte für jedes Bytes eines Ausgabe-Worts enthält.
  12. Computerprozessor nach Anspruch 9, bei dem die RAM-Spalten in m-Gruppen organisiert sind, wobei m eine ganze Zahl ist, die eine Anzahl von Bytes in dem Ausgabe-Wort repräsentiert, jede jeweilige Gruppe eine jeweilige RAM-Spalte für jedes Bit des Ausgabe-Wortes enthält, keine zwei RAM-Spalten in einer einzelnen Gruppe in einer gleichen Bank sind.
  13. Computerprozessor nach Anspruch 12, bei dem die Multiplexer Mittel m Spalten-Multiplexer aufweisen, wobei jeder Spalten-Multiplexer fähig ist, ein Bit von jeder RAM-Spalte in der jeweiligen Gruppe in das Ausgabe-Wort zu multiplexen.
  14. Computerprozessor nach Anspruch 5, der erste und zweite Stapel von acht Banken aufweist, wobei jede Bank 8 RAM-Spalten von 1-bit 64 RAM-Zellen aufweist, die RAM-Spalten in Gruppen von 8 RAM-Spalten organisiert sind, der erste Stapel zur Speicherung von Bits niedriger Ordnung einer Doppel-Wort-Ausgabe bestimmt ist, der zweite Stapel zur Speicherung Bits hoher Ordnung der Doppel-Wort-Ausgabe bestimmt ist; und bei dem die Multiplexer-Mittel fähig sind, ein Bit von jeder RAM-Spalte in jeder jeweiligen Gruppe in das Ausgabe-Wort zu multiplexen.
  15. Computerprozessor nach Anspruch 14, bei dem die Bits gemäß dem folgenden Algorithmus gemischt werden
    Figure 00200001
    wobei i, j und k ganzzahlige Indizes sind, word256 eine Matrix zur Speicherung von 256 Bits eines gemischten Wortes ist und word256 unshuffled eine Matrix zur Speicherung von 256 Bits eines nicht-gemischten Wortes ist.
  16. Computerprozessor nach Anspruch 5, der weiter erste und zweite Busse aufweist, wobei der erste Bus dazu bestimmt ist, Bits niedriger Ordnung eines Ausgabe-Wortes auszugeben und der zweite Bus dazu bestimmt ist, Bits hoher Ordnung eines Ausgabe-Wortes auszugeben.
  17. Computerprozessor nach Anspruch 16, bei dem als ein Ergebnis der Mischung der Bits die Leitungen der ersten und zweiten Busse in derselben Ebene des Prozessors ohne Kreuzung liegen können.
  18. Verfahren zur Erzeugung von Befehlen für einen Computerprozessor, der – einen Befehls-Cache (103) hat, der einen Eingabe-Bus und einen Ausgabe-Bus hat, wobei der Eingabe-Bus Bits eines Befehls zur Speicherung in dem Befehls-Cache empfängt, – eine Verarbeitungseinheit (102) mit einem Befehlseingang hat, der mit dem Ausgabe-Bus zum Empfang der Bits des Befehls verbunden ist, wobei das Verfahren die Schritte umfaßt, ein kompiliertes und gelinktes Objekt-Modul zu empfangen, das von einem Compiler und/oder einem Linker erzeugt ist, weiter charakterisiert durch den Schritt – Bits in dem kompilierten und gelinkten Objekt-Modul zu mischen, um ein zweites Objekt-Modul zum Einschreiben in den Befehls-Speicher zu erzeugen, so daß die Bits des zweiten Objekt-Moduls auf dem Satz von parallelen Linien nacheinander in der Ordnung erscheinen, in der diese Bits in dem kompilierten und gelinkten Objekt-Modul erscheinen.
  19. Verfahren nach Anspruch 18, bei dem eine Anzahl von Banken in dem Satz von Banken eine Potenz von 2 ist, wobei in dem Mischungs-Schritt jedes Bit des kompilierten und gelinkten Objekt-Moduls, das eine jeweilige erste Bit-Adresse in dem kompilierten und gelinkten Objekt-Modul hat, wobei auf eine jeweilige zweite Bit-Adresse in dem zweiten Objekt-Modul platziert wird, die jeweilige zweite Bit-Adresse eine logische Rotation der jeweiligen ersten Bit-Adresse um eine Anzahl mit dieser Potenz korrespondierender Bit-Plätze ist.
  20. Verfahren nach Anspruch 18 oder 19, das weiter den Schritt umfaßt, das zweite Objekt-Modul in einen Instruktions-Speicher zu schreiben.
  21. Verfahren nach Anspruch 18, 19 oder 20, bei dem der Befehls-Speicher einen Hauptspeicher und einen Cach-Speicher aufweist, wobei der Satz von Banken in dem Cach-Speicher enthalten ist.
  22. Ein Computerprogramm, das Programm-Code-Mittel zur Ausführung aller Verfahrensschritte eines der Ansprüche 18 bis 21 aufweist, wenn dieses Programm auf einem Computer abläuft.
  23. Ein Computerprogramm-Produkt, das auf einem Computer lesbaren Medium gespeicherte Programm-Code-Mittel zur Ausführung der Verfahrensschritte eines der Ansprüche 18 bis 21 aufweist, wenn dieses Programm-Produkt auf einem Computer abläuft.
  24. Ein auf einem Computerspeichermedium gespeicherter Bit-Strom, bei dem der Bit-Strom zumindest einen Teil eines Befehls zur Ausführung auf einem Computerprozessor beinhaltet, – der einen Befehls-Speicher (103) aufweist, der einen Eingabe-Bus und einen Ausgabe-Bus hat, wobei der Eingabe-Bus Bits eines Befehls zur Speicherung in dem Befehls-Cache empfängt, – der eine Verarbeitungseinheit (102) mit einem Befehls-Eingang aufweist, der mit dem Ausgabe-Bus zum Empfang der Bits des Befehls gekoppelt ist, dadurch gekennzeichnet, daß der Teil eine Vielzahl von Bits beinhaltet, die sich in einer gemischten Ordnung befinden, wobei die gemischte Ordnung ein vereinfachtes Chip-Layout des Computerprozessors ermöglicht.
  25. Bit-Strom nach Anspruch 24, wobei die Bits nach dem folgenden Algorithmus gemischt sind:
    Figure 00230001
    wobei i, j und k ganzzahlige Indizes sind, word256 eine Matrix zur Speicherung von 256 Bits eines gemischten Wortes ist und word256 unshuffled eine Matrix zur Speicherung von 256 Bits eines nicht-gemischten Wortes ist.
  26. Bit-Strom nach Anspruch 24 oder 25, bei dem der Befehl 512 Bits hat.
  27. Bit-Strom nach Anspruch 24, bei dem das vereinfachte Layout der Gestalt ist, daß innerhalb eines Befehls-Caches des Computerprozessors alle Leitungen von allen Eingabe- und Ausgabe-Bussen innerhalb einer einzigen Ebene einer integrierten Schaltung liegen.
DE69723804T 1996-05-15 1997-05-14 Prozessor mit befehlscachespeicher Expired - Lifetime DE69723804T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US649732 1996-05-15
US648333 1996-05-15
US08/649,732 US5862398A (en) 1996-05-15 1996-05-15 Compiler generating swizzled instructions usable in a simplified cache layout
US08/648,333 US6131152A (en) 1996-05-15 1996-05-15 Planar cache layout and instruction stream therefor
PCT/IB1997/000552 WO1997043715A2 (en) 1996-05-15 1997-05-14 Processor with an instruction cache

Publications (2)

Publication Number Publication Date
DE69723804D1 DE69723804D1 (de) 2003-09-04
DE69723804T2 true DE69723804T2 (de) 2004-05-27

Family

ID=27095356

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69723804T Expired - Lifetime DE69723804T2 (de) 1996-05-15 1997-05-14 Prozessor mit befehlscachespeicher

Country Status (5)

Country Link
EP (1) EP0846291B1 (de)
JP (1) JP3706633B2 (de)
CN (1) CN1145099C (de)
DE (1) DE69723804T2 (de)
WO (1) WO1997043715A2 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100351782C (zh) * 1999-05-13 2007-11-28 Arc国际美国控股公司 用于设计数字处理器的方法以及装置
GB0400660D0 (en) * 2004-01-13 2004-02-11 Koninkl Philips Electronics Nv Method and related device for use in decoding executable code
US7296120B2 (en) * 2004-11-18 2007-11-13 International Business Machines Corporation Mechanism that provides efficient multi-word load atomicity

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179680A (en) * 1987-04-20 1993-01-12 Digital Equipment Corporation Instruction storage and cache miss recovery in a high speed multiprocessing parallel processing apparatus
JP2810068B2 (ja) * 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
WO1991004536A1 (en) * 1989-09-20 1991-04-04 Dolphin Server Technology A/S Instruction cache architecture for parallel issuing of multiple instructions
CA2148464A1 (en) * 1992-11-05 1994-05-11 Warren Marwood Data formatter
WO1994027216A1 (en) * 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism

Also Published As

Publication number Publication date
JP3706633B2 (ja) 2005-10-12
CN1145099C (zh) 2004-04-07
WO1997043715A2 (en) 1997-11-20
CN1197519A (zh) 1998-10-28
WO1997043715A3 (en) 1998-01-22
DE69723804D1 (de) 2003-09-04
JPH11509663A (ja) 1999-08-24
EP0846291A2 (de) 1998-06-10
EP0846291B1 (de) 2003-07-30

Similar Documents

Publication Publication Date Title
DE69433124T2 (de) Befehlsspeicher mit assoziativem Kreuzschienenschalter
DE19914210B4 (de) Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung
DE69433339T2 (de) Lade-/Speicherfunktionseinheiten und Datencachespeicher für Mikroprozessoren
DE69833008T2 (de) Prozessor mit instruktionskodierung mittels eines schablonenfeldes
DE69431998T2 (de) Superskalare Rechnerarchitektur mit Softwarescheduling
DE4010119C2 (de) Anordnung und Verfahren zur Umordnung eines Speicherformats in einem Mikroprozessor
DE19526007C2 (de) Horizontal partitionierter Befehls-Cache-Speicher
DE2617408B2 (de) Speichermodul für ein Datenverarbeitungsgerät mit Speicherhierarchie
DE112015005597T5 (de) Verknüpfungsfähige Parallelausführungs-Schicht einer Ausgabewarteschlange für einen Prozessor
DE69826404T2 (de) Datenverarbeitungssystem mit mehreren Prozessoren, die eine Registerbank gemeinsam benutzen
DE4134192A1 (de) Integrierter schaltkreis mit verarbeitung im speicher
DE4217012A1 (de) Mit einer vielzahl von befehlsstroemen und statischer verschachtelung arbeitender mikroprozessor
CH650600A5 (de) Zentralprozessoreinheit einer datenverarbeitungsanlage mit operationscode-erweiterungsregister.
DE19524402C2 (de) Programmausführungssteuereinrichtung mit einer Adressierbarkeit entsprechend einer M-reihigen Pseudo-Zufallszahlenfolge
DE3900248C2 (de) Verfahren zur schnellen Ablaufsteuerung digitaler Testmuster und Vorrichtung zur Durchführung des Verfahrens
DE102013018135B4 (de) Adressenbit-Wiederabbildungsschema zur Reduzierung einer Zugriffsauflösung von DRAM-Zugriffen
DE19983098B4 (de) Mehrfach-Bitanzeige zur Behandlung von Schreib-nach-Schreib-Fehlern und zur Eliminierung von Bypass-Komparatoren
DE69732793T2 (de) Acht-bit-mikrokontroller mit risc-architektur
DE60211452T2 (de) DMA-Übertragung von Daten und Prüfinformation zu und von einem Datenspeicherungsgerät
DE3114921C2 (de) Mikroprogramm-Speicheranordnung
DE2556617C2 (de) Schiebe- und Rotierschaltung
DE69632655T2 (de) Pipeline-Datenverarbeitungsanordnung zur Durchführung einer Mehrzahl von untereinander datenabhängigen Datenprozessen
DE602005001900T2 (de) Rekonfigurierbarer Prozessor und Halbleiterbaustein
EP0825540A1 (de) Prozessor mit Pipelining-Aufbau
DE1549474B2 (de) Anordnung in einer elektronischen digitalen Datenverarbeitungsanlage zur Ausführung eines ersten Befehls und gleichzeitigen Decodierung eines folgenden Befehls

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: NXP B.V., EINDHOVEN, NL

R082 Change of representative

Ref document number: 846291

Country of ref document: EP

Representative=s name: MUELLER - HOFFMANN & PARTNER PATENTANWAELTE, 81667