DE69432314T2 - Cachespeicher mit aufgeteiltem pegel - Google Patents
Cachespeicher mit aufgeteiltem pegel Download PDFInfo
- Publication number
- DE69432314T2 DE69432314T2 DE69432314T DE69432314T DE69432314T2 DE 69432314 T2 DE69432314 T2 DE 69432314T2 DE 69432314 T DE69432314 T DE 69432314T DE 69432314 T DE69432314 T DE 69432314T DE 69432314 T2 DE69432314 T2 DE 69432314T2
- Authority
- DE
- Germany
- Prior art keywords
- data
- memory
- cache
- address
- floating point
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
- G06F12/0851—Cache with interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
- Gebiet der Erfindung
- Die Erfindung bezieht sich generell auf Speichersysteme für Hochgeschwindigkeits-Datenprozessoren, insbesondere auf eine Speicherhierarchie, einschließlich Hochgeschwindigkeits-Daten-Cache-Speicher.
- Stand der Technik
- Derzeit kommen Super-Rechner mit einer Rechenleistung von Milliarden von Gleitkomma-Operationen pro Sekunde (Ligaflops; flop = floating point operation) auf der Basis von Mikroprozessor-Bauweisen auf den Markt.
- Obwohl Superrechner im allgemeinen durch ihre beeindruckende Gleitkomma-Rechengeschwindigkeit charakterisiert werden, unterscheiden sie sich auch in der Speichergröße und Bandbreite von anderen Rechnern. Jede Gleitkomma-Operation erfordert ein bis drei Speicher-Zugriffe pro Operation. Mithin benötigt ein Mikroprozessor mit einer Rechenleistung von einigen hundert Megaflops eine Speicherhierarchie mit einer Ausgabe-Bandbreite von Gigabytes pro Sekunde.
- Derzeit stehen Speicher für eine Fließband-Verarbeitung zur Verfügung, die eine hinreichend hohe Bandbreite haben. Bekanntlich beeinträchtigt jedoch die Zugriffszeit dieser Speicher unmittelbar die Ausführungsgeschwindigkeit von Ganzzahl-Programmen, zum Beispiel Betriebssystemen und Compilern, sowie den Festwertmultiplikator teil von Gleitkomma-Programmen. Diese Programme bevorzugen den direkten Zugriff auf ganzzahlige und Adressen-Daten in einem Speicher mit kurzer Zugriffszeit, zum Beispiel einem kleinen internen Cache-Speicher.
- Die gegensätzlichen Anforderungen an Ganzzahl- und Gleitkomma-Operationen bedeuten daher höhere Anforderungen an die Ausbildung von Superrechnern auf der Basis von Mikroprozessoren.
- In der US-A-5214765 ist ein Fließband-Rechnersystem beschrieben, das einen Drei-Pegel-Cache-Speicher aufweist, der insbesondere die Verarbeitungsgeschwindigkeit von Gleitkomma-Zahlen steigern soll.
- In der US-A-4928225 ist ein Mehrprozessorsystem dargestellt. Dieses System enthält einen Cache-Speicher für jeden Prozessor, und deren Kohärenz wird in Bezug auf den globalen Speicher in der Weise sichergestellt, daß alle Prozessoren die korrekten Daten verarbeiten.
- Die US-A-5155816 offenbart einen Mikroprozessor mit "Fließband"-Aufbau (pipeline-architecture) und einem internen (chipintegrierten) Cache-Speicher. Der Cache-Speicher ist für den Fall, daß während eines Datenabrufzyklus ein Cache-Speicher adressiert wird, direkt mit dem "Fließband" (pipeline) verbunden.
- In der US-A-5051885 ist eine Vorrichtung zur gleichlaufenden Ausgabe von Befehlen für den gleichzeitigen Empfangen durch Gleitkomma- und Ganzzahl-Prozessoren beschrieben. Die Befehle werde durch einen Cache-Speicher aufgenommen und gespeichert.
- ZUSAMMENFASSUNG DER ERFINDUNG
- Die Erfindung ist ein Cache-Speicher mit aufgeteiltem Pegel, der einen kleinen örtlichen Cache-Speicher kurzer Zugriffszeit zum Speichern von Ganzzahl- und Adressendaten und einen großen, globalen Cache-Speicher mit längerer Zugriffszeit zum Speichern von Gleitkomma-Daten oder Daten aufweist, die von einem Matrix-Prozessor (Vektorrechner) benötigt werden. Der örtliche Lache-Speicher ist eine Untereinheit des globalen Lache-Speichers (d. h. die in dem örtlichen Cache-Speicher gespeicherten Daten sind eine Untereinheit der in dem globalen Lache-Speicher gespeicherten Daten) und ist der primäre Lache-Speicher für die Ganzzahl-Einheit. Der globale Lache-Speicher speichert Datenreihen für die Benutzung durch eine Gleitkomma-Einheit oder einen Matrixprozessor und ist der primäre Cache-Speicher für die Gleitkomma-Einheit oder den Matrixprozessor und der sekundäre Lache-Speicher für die Ganzzahl-Einheit.
- Gemäß einem ersten Aspekt der Erfindung ist ein Cache-Speichersystem mit aufgeteiltem Pegel gemäß Anspruch 1 ausgebildet.
- Gemäß einem zweiten Aspekt besteht die Erfindung in einem Verfahren zum Speichern von Daten in einem Cache-Speichersystem, wie es in Anspruch 6 angegeben ist.
- Andere Merkmale und Vorteile ergeben sich aus den beiliegenden Zeichnungen und der nachstehenden ausführlichen Beschreibung.
- KURZE BESCHREIBUNG DER FIGUREN
-
1 ist ein vereinfachtes Blockschaltbild des Cache-Speichersystems und stellt die Verbindungen zwischen dem örtlichen Cache-Speicher, dem globalen Cache-Speicher, der Gleitkomma-Einheit, der Ganzzahl-Einheit und dem äußeren Hauptspeicher dar. -
2 ist ein ausführlicheres Blockschaltbild des in1 dargestellten Systems. -
3 ist ein vereinfachtes Blockschaltbild des Fließband-Aufbaus des externen globalen Cache-Speichers. -
4 ist ein ausführlicheres Blockschaltbild des in3 dargestellten Fließband-Aufbaus. -
5 ist ein Diagramm des Formats einer physikalischen Adresse. -
6 ist ein ausführliches Blockschaltbild eines kundenspezifischen Kennzeichen-RAM. -
7 ist ein Logik-Diagramm des internen örtlichen Cache-Speichers und -
8 ein Blockschaltbild der Speicherdatenpfade. - AUSFÜHRLICHE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
-
1 ist ein Blockschaltbild eines bevorzugten Ausführungsbeispiels der Erfindung, das einen kleinen, internen Nicht-Fließband-Cache-Speicher mit geringer Zugriffszeit zur Ausgabe von Ganzzahl- und Adreßdaten an eine Ganzzahl-Einheit eines großen, äußeren Fließband-Cache-Speichers zur Abgabe von Gleitkomma-Daten an eine Gleitkomma-Einheit aufweist. - Nach
1 enthält eine Ganzzahl-Einheit (GE) 10 auf demselben Chip einen örtlichen Cache-Speicher mit einem ersten Pegel (nachstehend "örtlicher Cache" genannt) 12. Ein Adressenausgang der GE 10 ist durch einen Adressenbus16 mit einem externen globalen Cache-Speicher14 mit zweitem Pegel (nachstehend "globaler Cache" genannt) verbunden. Ein Dateneingangs-Port des örtlichen Cache12 ist mit einem Datenausgangs-Port des globalen Cache14 durch einen Füllbus18 verbunden. - Ein Befehlsport der GE 10 ist mit einem Befehlsport einer Gleitkomma-Einheit (GKE)
20 durch einen TBUS22 verbunden. Der Dateneingangs-Port der GKE20 ist mit dem Datenausgangs-Port des globalen Cache14 durch einen Lade-Bus24 verbunden. Der Datenausgangs-Port der GKE20 ist mit dem Dateneingangs-Port des globalen Cache14 durch einen Speicher-Bus26 verbunden. - Der Dateneingangs-Port des globalen Cache
14 ist ferner mit dem Dateneingangs-/Datenausgangsport des externen Hauptspeichers27 verbunden. Der Datenausgangs-Port der GKE20 ist mit dem Dateneingangs-/Datenausgangsport des externen Hauptspeichers27 verbunden. - Der globale Cache
14 enthält einen globalen Cache-Fiennzeichenspeicher28 und einen globalen Cache-Datenspeicher30 . Der Adressenbus16 enthält einen Offset-Bus160 zur Übertragung niedrigstelliger Adressenbits, einen Index-Bus16I zur Übertragung höherstelliger Adressenbits und einen Kennzeichen-Bus16T für die Kennzeichen-Feldbits. Der Index-Bus16I und der Kennzeichen-Bus16T sind mit dem globalen Cache-Kennzeichenspeicher28 verbunden. Der Index-Bus16I und der Offset-Bus160 sind mit den Adresseneingängen des globalen Cache-Datenspeichers30 verbunden. Das Satzwählsignal des globalen Cache-Kennzeichenspeichers28 wird einem Satzadresseneingang des globalen Cache-Datenspeichers30 über einen Wähl-Bus34 zugeführt. - Eine Steuereinheit erzeugt Takt- und Steuersignale zum Steuern von Datenübertragungen. Diese Steuereinheit, die in an sich bekannter Weise ausgebildet ist, bildet keinen Teil der Erfindung und ist in den Zeichnungen nicht dargestellt.
-
2 stellt ein ausführlicheres Blockschaltbild des in1 dargestellten Ausführungsbeispiels dar. Nach2 sind die GE 10 und GKE20 als einzelne Chips mit dem örtlichen Cache12 auf der GE ausgebildet. Bei dem bevorzugten Ausführungsbeispiel ist die GE 10 ein RISC-Prozessor, der alle Datenverarbeitungsbefehle mit Daten ausführt, die in einer Register-Datei36 gespeichert sind. Verarbeitete Daten, die in der Register-Datei36 gespeichert sind, werden aus der Register-Datei (d. h. über den Datenausgangs-Port) in den örtlichen Cache12 (d. h. über den Dateneingangs-Port) während Speicheroperationen übertragen. In ähnlicher Weise werden in dem örtlichen Cache12 gespeicherte Daten aus dem örtlichen Speicher (d. h. über den Datenausgangs-Port) in die Register-Datei36 (d. h. über den Dateneingangs-Port) während Ladeoperationen übertragen. - Ein Adressengenerator (AGEN)
38 in der GE erzeugt virtuelle Adressen, die zur Adressierung des örtlichen Lache12 dienen. Diese virtuellen Adressen werden einem Adressen-Umsetzer (auch Adressen-Übersetzer oder "-Zuordner" genannt) zugeführt, der die physikalischen Adressen erzeugt, die zum Zugreifen auf Daten in dem externen Hauptspeicher benutzt werden. Der Adressen-Umsetzer ist bei dem bevorzugten Ausführungsbeispiel ein assoziativer Umsetz-Speicher40 . - In der Speicherhierarchie des bevorzugten Ausführungsbeispiels wird ein virtueller Speicher, der alle Daten speichert, auf die der Datenprozessor zugreifen kann, durch virtuelle Adressen adressiert, die durch den AGEN
38 erzeugt werden. Die im externen Hauptspeicher27 gespeicherten Daten bilden eine Untergruppe der im virtuellen Speicher gespeicherten Daten und werden durch physikalische Adressen adressiert, die durch den assoziativen Pufferspeicher40 erzeugt werden. Die im globalen Cache14 gespeicherten Daten bilden eine Untereinheit oder einen Unter-Satz der im externen Hauptspeicher27 gespeicherten Daten und werden durch die Index- und Offset-Felder der physikalischen Adresse, die durch den assoziativen Pufferspeicher40 ausgegeben wird, und ein Satz-Wählsignal adressiert, das durch den globalen Cache-Kennzeichenspeicher28 ausgegeben wird. Die in dem örtlichen Cache12 gespeicherten Daten bilden einen Unter-Satz der im globalen Cache14 gespeicherten Daten. Auf den Daten-Chache12 wird durch die Index- und Offset-Felder der virtuellen Adresse zugegriffen, die durch den AGEN38 erzeugt werden, und sind physikalisch gekennzeichnet. - Wie nachstehend ausführlicher beschrieben wird, ist der globale Cache-Kennzeichenspeicher
28 aus Kennzeichen-Direktzugriffspeicherchips (Kennzeichen-RAM-Chips) und der globale Cache-Datenspeicher30 aus Artikel-SSRAMs (SSRAM = synchroner statischer RAM) aufgebaut, die als 4-wege-satzadressierter Cache-Speicher organisiert sind. Der Satzwählsignalausgang des globalen Cache-Kennzeichenspeichers28 wählt einen von vier assoziativen Sätzen. Außerdem ist der globale Cache-Datenspeicher30 als verschachtelter Speicher mit geradzahligen und ungeradzahligen Bänken (Gruppen) organisiert, auf die gleichzeitig zugriffen werden kann, um die Bandbreite zu erhöhen. - Das globale Cache-Fließband hat fünf (mit G, H, I, J und K beschriftete) Stufen, die in
3 als vereinfachtes Blockschaltbild und in4 ausführlicher dargestellt sind. Die Verarbeitung in jeder Stufe wird in einem Maschinenzyklus beendet. - Nach den
3 und4 werden während der Stufe G vom GE-Chip Adressen zu den Kennzeichen-RAM-Chips übertragen. Die Kennzeichen werden nachgeschlagen, und die Information "Treffer" beziehungsweise "kein Treffer" wird während der Stufe H in ein Satzwählsignal codiert. Jeder 4-wege-satzadressierte Kennzeichen-RAM codiert eine Satz-Information mit zwei Bits. Die codierte Information aus den Kennzeichen-RAMs42 wird während der Stufe I in die globalen Cache-Datenspeicher-SSRAMs44 eingegeben. - Während der Stufe J wird auf jeden globalen Cache-Datenspeicher-SSRAM
44 intern zugegriffen. In den SSRAMs sind Eingabe- und Ausgaberegister auf dem Chip integriert, so daß ein RAM-Zugriff nach dem Fließbandverfahren in drei Zyklen aufgeteilt ist, d. h. einen Adresseneinstellzyklus, einen RAM-Zugriffzyklus und einen Datenausgabezyklus. Schließlich werden während der Stufe K die Daten, auf die zugegriffen wurde, aus den SSRAM-Chips44 in die GE und die GKE zurückgesandt. - Während der Stufen I und K wird den "Chipkreuzungen" ein vollständiger Zyklus zugeordnet, weil Transistor-Transistor-Logik-Treiber (TTL-Treiber) mit hinreichender Ladekapazität bei der Zielfrequenz von 75 MHz einen nahezu vollständigen Zyklus benötigen.
- Die während der Stufe H des globalen Fließband-Cache benutzten Kennzeichen-RAMs
42 werden nachstehend anhand der5 und6 beschrieben. Das generelle Format einer physikalischen Adresse ist in5 dargestellt. Jede Adresse enthält ein Kennzeichen-Feld, ein Index-Feld und ein OFFSET-Feld. Bekanntlich werden die Indexund Offset-Felder zur physikalischen Adressierung von Daten in dem Cache-Speicher benutzt. Das Index-Feld greift auf einen bestimmten Satz zu, wobei jeder Satz 4-Cache-Zeilen aufweist. Wenn auf die Zeile, die die Daten enthält, auf die zugegriffen wird, in dem Cache-Speicher vorhanden ist, dann handelt es sich um eine dieser vier Zeilen, auf die zugriffen wird. Das der Zeile, auf die zugegriffen wird, zugeordnete Kennzeichen wird mit dem Kennzeichen verglichen, das jeder dieser 4-Cache-Zeilen zugeordnet ist, um festzustellen, ob der Cache die interessierenden Daten enthält. Wenn eine Übereinstimmung auftritt, dann zeigt das OFFSET-Feld an, welches Wort in der identifizierten Zeile den Daten entspricht, auf die zugegriffen wird. - Wie schon erwähnt wurde, ist das bevorzugte Ausführungsbeispiel ein 4-wege-satzadressierter Speicher. Eine Zeile in dem externen Hauptspeicher mit einem vorgegebenen Index-Feld kann in einem Satz aus vier Zeilen in dem Cache-Speicher, auf den durch den vorgegebenen Index zugegriffen wird, abgebildet werden. Bei dem bevorzugten Ausführungsbeispiel werden die beiden höherstelligen Bits der Cache-Speicher-Adresse als Satzwählsignaldaten und die übrigen Adressenbits für das Index-Feld benutzt. Für jeden indizierten Satz in dem globalen Cache-Datenspeicher
30 sind vier Kennzeichen-Felder in dem globalen Cache-Kennzeichenspeicher28 an einem Platz gespeichert, auf den ein Index-Feld zugreift. - Nach
6 ist ein Index-Register50 über einen Index-Bus56 mit dem ADDR-Eingang eines Kennzeichen-RAM52 und eines Speichermarken-RAM54 verbunden. Ein Kennzeichen-Register58 ist mit einem ersten Eingang von jeweils vier Komparatoren60A – 60D über einen Kennzeichen-Bus62 verbunden. Ein zweiter Eingang jedes Komparators60A – 60D ist jeweils mit einem Kennzeichen-Ausgang des Kennzeichen-RAM52 über einen Kennzeichen-Bus64 verbunden. Die Ausgangssignale der Komparatoren60A – 60D werden den Eingängen eines Codierers66 und eines NOR-Gliedes68 zugeführt. Das Ausgangssignal des Codierers66 wird in ein Satz-Wähl-Register70 geleitet, und das Ausgangssignal des NOR-Gliedes68 in ein Übereinstimmungs-Register72 . In einem RWSA-Register74 wird ein Cache-Lese- und Schreibsignal gespeichert und einer Speichermarken-Schreiblogik76 über einen RWSA-Bus78 zugeführt. Die Ausgangssignale des Codierers und der NOR-Glieder66 und68 werden ebenfalls der Speichermarken-Schreiblogik76 zugeführt. - Wenn eine bestimmte physikalische Adresse durch die GE 10 erzeugt worden ist, wird ihr Kennzeichen-Feld in dem Kennzeichen-Register
58 und ihr Index-Feld in dem Index-Register50 gespeichert. Der Speicherplatz in dem Kennzeichen-RAM52 , auf den das Index-Feld zugreift, speichert das Kennzeichen-Feld, das den Cache-Daten zugeordnet ist, die in jeder der vier Zeilen in dem Assoziativsatz gespeichert sind, auf den durch das Index-Feld zugegriffen werden kann. Der Kennzeichen-RAM52 ist so organisiert, daß das Kennzeichen-Feld der in der ersten Zeile des Assoziativsatzes gespeicherten Daten dem zweiten Eingang des ersten Komparators60A , die zweite Zeile des Assoziativsatzes dem zweiten Komparator60B usw. zugeführt wird. - Wenn die dem zweiten Eingang irgendeines Komparators
60A – 60D zugeführten Kennzeichen-Daten mit dem Kennzeichen-Feld übereinstimmen, das in dem Kennzeichen-Register58 gespeichert ist, dann stellt das Ausgangssignal des Komparators eine logische "1" dar. Andernfalls ist das Komparator-Ausgangssignal eine logische "0". - Das NOR-Glied
68 erhält die Ausgangssignale des Komparators und erzeugt eine "0", wenn irgendeines seiner Eingangssignale eine logische "1" darstellt. Mithin zeigt ein "0"-Ausgangssignal des NOR-Glieds einen Treffer an, d. h. daß der durch die gesamte physikalische Adresse vorgeschriebene Datenblock in dem globalen Cache14 gespeichert ist. - Wenn der Cache getroffen ist, gibt der Codierer
66 ein 2-Bit-Satzwählsignal aus, das vorschreibt, welche Zeile in dem Satz die durch die gesamte physikalische Adresse vorgeschriebenen Daten enthält. Der Kennzeichen-RAM52 , die Komparatoren60A – 60D und der Codierer66 bilden daher einen Wählsignalgenerator zum Erzeugen eines Satzwählsignals. Das Satzwählsignal funktioniert ebenso wie die zwei höherstelligen Bits, die den SSRAM-Chips zugeführt werden, die den globalen Cache-Datenspeicher30 bilden. Mithin erfolgt, wie vorstehend beschrieben wurde, die Erzeugung von Treffer- bzw. Kein-Treffer-Daten und der den Satz vorschreibenden Information während der Stufe H des globalen Fließband-Cache-Speichers, wozu ein einziger Maschinenzyklus erforderlich ist. - In an sich bekannter Weise werden, wenn die durch die gesamte physikalische Adresse vorgeschriebenen Daten nicht in dem Cache gespeichert sind, die Daten aus dem Hauptspeicher
27 in den Cache geschrieben, wo sie die zuvor in dem Cache gespeicherten Daten ersetzen. Wenn die ersetzten Daten in dem Cache nicht modifiziert wurden, nachdem sie aus dem externen Hauptspeicher27 in den Cache übertragen wurden, dann sind die Daten im Lache und die Daten im äußeren Hauptspeicher27 gleich (d. h. die Daten sind kohärent). Daher können die Daten problemlos ersetzt werden, weil dieselben Daten im externen Hauptspeicher27 gespeichert und gewünschtenfalls aufgerufen werden können. Wenn die ersetzten Daten in dem Lache jedoch durch eine Schreiboperation geändert wurden, dann sind sie nicht mehr mit den im äußeren Hauptspeicher27 gespeicherten Daten kohärent. - Mithin werden vor dem Ersetzen der Daten im Cache die Cache-Daten in einer Rückschreiboperation gespeichert, so daß die richtigen Daten im äußeren Hauptspeicher
27 gespeichert und für den Prozessor zugänglich sind. Wenn daher in dem Cache gespeicherte Daten durch eine Schreiboperation geändert worden sind, wird eine Speichermarke (ein "dirty bit"), die den Daten zugeordnet ist, gelöscht, um anzuzeigen, daß die Daten "schmutzig" (d. h. nicht mehr mit den im äußeren Hauptspeicher gespeicherten Daten kohärent) sind. - Immer wenn das RWSA-Signal nach
6 anzeigt, daß Daten in den Cache eingeschrieben werden sollen, und das Übereinstimmungs-Signal einen Cache-Treffer anzeigt, wird eine in einem Speichermarken-RAM-Speicherplatz gespeicherte Speichermarke, auf die durch das Index-Feld zugegriffen wird, gelöscht. Die Speichermarken-Verarbeitung benötigt daher einen einzigen Maschinenzyklus und erfolgt in der Stufe J des globalen Fließband-Cache-Speichers. - Das in
6 dargestellte System dient zur Anzeige einer mangelnden Kohärenz zwischen den im globalen Cache14 und den im externen Hauptspeicher27 gespeicherten Daten. Wegen der speziellen Organisation des Cache-Speichers mit aufgeteiltem Pegel ist auch ein System zum Anzeigen einer mangelnden Kohärenz zwischen dem örtlichen Cache12 und dem globalen Cache14 erforderlich. - Wie schon erwähnt wurde, benutzt die GE 10 den örtlichen Cache
12 als primären Cache und den globalen Cache14 als sekundären Cache. Die GKE20 benutzt den globalen Cache14 als primären Cache und den örtlichen Cache12 überhaupt nicht. Wenn die gleichen Daten in beiden Cache-Speichern12 und14 gespeichert sind, gibt es zwei Inkohärenz-Ursachen. Die erste Ursache ist eine Änderung nur der Daten im örtlichen Cache durch ein Einschreiben der GE in den örtlichen Cache12 und die zweite Ursache eine Änderung der im globalen Cache gespeicherten Daten durch ein Einschreiben der GKE in den örtlichen Cache14 . - Die erste Inkohärenz-Ursache wird durch eine Durchschreiboperation gelöst: Die in den örtlichen Cache
12 eingeschriebenen Daten werden auch in den globalen Lache14" durchgeschrieben". Die Durchschreiboperation ist wegen der sehr hohen Schreibbandbreite des globalen Lache14 möglich. Es ist kein externer Puffer erforderlich, weil der globale Lache14 das Durchschreiben mit voller Bandbreite ermöglicht. - Die zweite Inkohärenz-Ursache tritt nur bei einem Lache-Speichersystem mit aufgeteiltem Pegel auf und ergibt eine Inkohärenz zwischen Ganzzahl- und Gleitkomma-Daten. Das Problem ist, daß GE-Ladungen und -Speicherungen zwar auf den örtlichen Lache
12 und den globalen Lache14 zugreifen, GKE-Ladungen und -Speicherungen jedoch nur auf den globalen Lache14 zugreifen. Wenn daher beispielsweise in einen bestimmten Speicherplatz zuerst durch eine GE-Speicherung eingeschrieben und dann durch eine GKE-Speicherung erneut eingeschrieben wird, würde ein nachfolgendes GE-Laden "verdorbene" (veraltete) Daten aus dem örtlichen Lache14 ergeben, sofern nichts dagegen unternommen wird. - Obwohl eine unmittelbare Lösung darin bestehen könnte, daß eine Lache-Zeile in dem örtlichen Lache
12 immer dann ungültig gemacht würde, wenn eine GKE-Speicherung auftritt, ist das Problem noch komplizierter, weil jede Lache-Zeile mehrere Wörter Speichert und eine bestimmte Lache-Zeile eine Mischung aus Gleitkomma-Daten und ganzzahligen Daten enthalten kann. Wenn ein Programm zuerst auf ganzzahlige Zeichendaten zugreift, so daß die betreffende Cache-Zeile die in den örtlichen Speicher12 geladen wird, dann würde eine nachfolgende Gleitkomma-Speicherung die gesamte Zeile ungültig machen. In diesem Falle wären jedoch die ganzzahligen Daten in der betreffenden Cache-Zeile des örtlichen Speichers12 zwar weiterhin gültig, da die Zeile jedoch ungültig gemacht wurde, würde ein weiterer Zugriff auf die ganzzahligen Daten in der betreffenden Zeile einen weiteren Cache-Fehltreffer ergeben, so daß die betreffende Cache-Zeile erneut in den örtlichen Cache geladen werden müßte. Bei graphischen Anwendungen ist dieses Verhalten besonders wahrscheinlich, weil gemischte Ganzzahl- und Gleitkomma-Strukturen üblich sind. Da die Cache-Leistung in hohem Maße von der Frequenz abhängt, mit der neue Daten in den Cache geladen werden müssen, ergäbe das Ungültigmachen der gesamten Zeile des örtlichen Cache eine geringe Leistung. - Die bei dem bevorzugten Ausführungsbeispieh angewandte Lösung besteht darin, ein Gültigkeitsbit an jedem Wort in jeder Cache-Zeile des örtlichen Cache
12 anzubringen, so daß den Gültigkeitsbits eine feinere Körnigkeit erteilt wird. Bei einer GKE-Speicheroperation wird die Adresse sowohl dem örtlichen Cache12 als auch dem globalen Cache14 zugeführt. Wenn sich die adressierten Daten in dem örtlichen Cache befinden, wird das an dem adressierten Wort angebrachte Gültigkeitsbit gelöscht, um einen Kohärenzmangel zwischen dem modifizierten Wort in dem örtlichen Cache12 und dem globalen Cache14 anzuzeigen. Das an dem jeweiligen Wort, auf das bei einer GE-Speicherung zugegriffen wird, angebrachte Gültigkeitsbit wird so eingestellt, daß es eine Kohärenz zwischen den Cache-Speichern12 und14 infolge der erwähnten Durchschreiboperation anzeigt. - Diese Lösung ermöglicht es der GE, frei auf Daten aus dem örtlichen Cache zuzugreifen, ohne Gefahr zu laufen, das auf verdorbene Daten zugegriffen wird, weil irgendwelche Gleitkomma-Daten, die durch eine GKE-Einschreibung modifiziert wurden, ein daran angebrachtes gelöschtes Gültigkeitsbit aufweisen würden. Leistungsverluste aufgrund unnötiger Cache-Ladeoperationen werden daher minimiert.
- Das Löschen des Gültigkeitsbits im örtlichen Cache
12 bei einer Gleitkomma-Speicheroperation wird nachstehend anhand von7 beschrieben. Bei dem bevorzugten Ausführungsbeispiel hat der örtliche Cache12 zwei Ports, um entweder ein zweimaliges oder einmaliges Laden und eine Speicheroperation pro Zyklus zu unterstützen. Der örtliche Cache12 ist ein 16-KB-Chache mit direkter Abbildung, wobei jede Zeile32 in acht Wörtern organisierte Bytes speichert. Der örtliche Cache12 wird in sieben Maschinenzyklen erneut aus dem globalen Cache14 gefüllt. Der örtliche Cache12 wird virtuell adressiert und physikalisch Gekennzeichnet und ist eine Untereinheit des örtlichen Cache14 . - Nach
7 wird die durch den Adressengenerator38 der GE 10 (siehe2 ) ausgegebene virtuelle Adresse in einem Adressen-Zwischenspeicherregister90 gespeichert. Der örtliche Cache12 ist in einen VRAM12V und einen Datenspeicher12D unterteilt dargestellt. Jede Cache-Zeile92 in dem Datenspeicher12D enthält acht Wortpositionen, die jeweils vier Datenbytes aufweisen. Das Index-Feld der virtuellen Adresse greift auf ein Kennzeichen-Feld und ein Masken-Feld aus einem Speicherplatz in dem VRAM12V und der Cache-Zeile in dem Datenspeicher12D zu. Das OFF-Feld der virtuellen Adresse schreibt eine bestimmte Wortposition in der Cache-Zeile92 vor. Das Kennzeichen-Feld und das Masken-Feld, die aus dem VRAM12v ausgelesen wurden, werden in einem zweiten Zwischenspeicher-Register94 gespeichert. Das Kennzeichen-Feld, auf das in dem VRAM 12V zugegriffen wird, entspricht den höherstelligen Bits der physikalischen Adresse der in der Cache-Zeile92 gespeicherten Daten. Das Masken-Feld, auf das zugegriffen wird, enthält acht Gültigkeitsbits, die jeweils an einem entsprechenden Wort in der Cache-Zeile92 angebracht sind. Das in dem zweiten Zwischenspeicherregister94 gespeicherte Kennzeichen-Feld wird dem ersten Eingang eines Komparators96 und das Kennzeichen-Feld der virtuellen Adresse dem zweiten Eingang des Komparators96 zugeführt. Eine Maskenbit-Löschlogik98 ist mit dem zweiten Zwischenspeicher-Register94 verbunden, in dem die Maske, das OFF-Feld der virtuellen Adresse und das Ausgangssignal des Komparators96 gespeichert sind. - Während einer Gleitkomma-Speicheroperation, bei der an einem Platz gespeichert wird, der durch die in dem ersten Zwischenspeicher-Register
90 gespeicherte Virtuelle Adresse vorgeschrieben wird, wird während eines ersten Maschinenzyklus durch den VRAM12V auf das Kennzeichen-Feld und das Masken-Feld zugegriffen. Wenn das Kennzeichen-Feld, auf das zugegriffen wird, mit dem Kennzeichen-Feld der virtuellen Adresse übereinstimmt, gibt das Ausgangssignal des Komparators die Maskenbit-Löschlogik frei, um das in dem zweiten Zwischenspeicher-Register94 gespeicherte Gültigkeitsbit zu löschen, das dem Wort in der Cache-Zeile92 entspricht, die durch das OFF-Feld der virtuellen Andresse vorgeschrieben wird. Die Übereinstimmung zeigt an, daß die Gleitkomma-Daten in dem globalen Cache14 geändert (modifiziert) werden und das durch die virtuelle Adresse vorgeschriebene Daten-Wort nicht mehr kohärent ist. Durch das Löschen des Gültigkeitsbits in dem Masken-Feld wird daher dieses Wort im örtlichen Chache12 ungültig gemacht. Im nächsten Taktzyklus wird das modifizierte Masken-Feld, das das gelöschte Gültigkeitsbit enthält, wieder an demjenigen Speicherplatz in dem VRAM12V gespeichert, der durch das Index-Feld der virtuellen Adresse vorgeschrieben wird. - Nachstehend wird anhand von
8 die Durchschreiboperation für ganzzahlige Daten beschrieben, die in dem örtlichen Cache12 gespeichert sind. Bei dem bevorzugten Ausführungsbeispiel werden Gleitkomma-Befehle, Adressen und Daten in einer Warteschlange eingereiht, um die Zugriffszeit des örtlichen Cache14 und der GKE20 auszugleichen. Mithin gibt es keinen unmittelbaren Datenpfad von der GE 10 zum globalen Cache14 . Für eine GE-Speicheroperation überträgt der örtliche Cache12 mithin die in einer Gleitkomma-Befehlswarteschlange100 gespeicherten Daten, und die Daten werden an die GKE20 über den TBUS22 übertragen und als Durchschreibdaten codiert. Außerdem wird die physikalische Adresse der Durchschreibdaten in eine Speicheradressenwarteschlange102 übertragen. Die GKE20 erkennt die Durchschreibdaten an und leitet sie in eine Speicherdaten-Warteschlange104 . Die Taktgabe der Warteschlage ist so gewählt, daß die Adresse der Durchschreibdaten und die Durchschreibdaten während desselben Maschinenzyklus dem globalen Cache-Datenspeicher30 zugeführt werden.
Claims (6)
- Cache-Speichersystem mit aufgeteiltem Pegel, das in einem Daten-Prozessor verwendbar ist, der eine Ganzzahl-Einheit (
10 ) und eine Gleitkomma-Einheit (20 ) mit einem Dateneingangs-Port und einem Datenausgangs-Port aufweist, wobei das Cache-Speichersystem mit aufgeteiltem Pegel aufweist: einen ersten örtlichen Cache-Speicher (12 ), der den primären Cache-Speicher für die Ganzzahl-Einheit (10 ) bildet und einen mit der Ganzzahl-Einheit (10 ) verbundenen Datenausgangs-Port, einen Dateneingangs-Port und einen Adresseneingangs-Port zum Speichern von Ganzzahl- und Adressendaten, die von der Ganzzahl-Einheit (10 ) verarbeitet werden sollen, aufweist; einen zweiten globalen Cache-Speicher (14 ), der den primären Cache-Speicher für die Gleitkornma-Einheit (20 ) und den sekundären Cache-Speicher für die Ganzzahl-Einheit (10 ) bildet und einen Dateneingangs-Port, einen Datenausgangs-Port sowie einen mit der Ganzzahl-Einheit (10 ) verbundenen Adresseneingangs-Port zum Speichern der Ganzzahl- und der Adressendaten, die von der Ganzzahl-Einheit (10 ) verarbeitet werden sollen, und zum Speichern der Gleitkomma-Daten aufweist, wobei jede Speicheradresse des ersten, örtlichen Cache-Speichers (12 ) eine entsprechende Speicher-Adresse in dem zweiten, globalen Cache-Speicher (14 ) aufweist, wobei der örtliche Cache-Speicher (12 ) eine Untereinheit des globalen Cache-Speichers (14 ) bildet; erste Datenübertragungsmittel (18 ,24 ), die angeschlossen sind an dem Datenausgangs-Port des zweiten, globalen Cache-Speichers (14 ) und dem Dateneingangs-Port des ersten, globalen Cache-Speichers (12 ) und dem Dateneingangs-Port der Gleitkomma-Einheit (20 ) zum Übertragen von Daten aus dem zweiten, globalen Cache-Speicher (14 ) in den ersten, örtlichen Cache-Speicher (12 ), wenn die in dem zweiten, globalen Cache-Speicher (14 ) gespeicherten Ganzzahl- und die Adressendaten von der Ganzzahl-Einheit (12 ) verarbeitet werden sollen, und zwischen dem zweiten, globalen Cache-Speicher (14 ) und der Gleitkomma-Einheit (20 ), wenn Gleitkomma-Daten von der Gleitkomma-Einheit (20 ) verarbeitet werden sollen; und zweite Datenübertragungsmittel (26 ), die mit dem Datenausgangs-Port der Gleitkomma-Einheit (20 ) und dem Dateneingangs-Port des zweiten, globalen Cache-Speichers (14 ) zur Übertragung von Daten aus der Gleitkomma-Einheit (20 )in den zweiten, globalen Cache-Speicher (14 ) während einer Gleitkomma-Speicheroperation verbunden sind; dadurch gekennzeichnet daß der erste, örtliche Cache-Speicher (12 ) so ausgebildet ist, daß er eine Durchschreib-Operation in den zweiten, globalen Cache-Speicher (14 ) ausführt, bei der eine Kopie der Daten, die von der Ganzzahl-Einheit (10 ) unter einer Speicher-Adresse des ersten, örtlichen Cache-Speichers (12 ) auf ei nem dritten Übertragungsmittel (22 ) gespeichert wird, das mit Befehlsports der Ganzzahl-Einheit (10 ) und der Gleitkomma-Einheit (20 ) verbunden ist, und die Gleitkomma-Einheit (20 ) so ausgebildet ist, daß sie das Speichern dieser Daten unter der entsprechenden Speicher-Adresse des zweiten, globalen Cache-Speicher (14 ) bewirkt, und daß jede Speicheradresse des ersten örtlichen Lache-Speichers (12 ) ein ihr zugeordnetes Gültigkeitsbit aufweist, das gelöscht wird, wenn die Gleitkomma-Einheit (20 ) Daten unter der entsprechenden Speicher-Adresse des zweiten, globalen Lache-Speichers (14 ) während einer Gleitkomma-Speicheroperation speichert, und gesetzt wird, wenn die Ganzzahl-Einheit unter der zugeordneten Speicheradresse des ersten, örtlichen Lache-Speichers (12 ) während einer Ganzzahl-Speicheroperation speichert. - Lache-Speichersystem nach Anspruch 1, bei dem der erste, örtliche Lache-Speicher (
12 ) und die Ganzzahl-Einheit (10 ) auf dem gleichen einzigen Chip hergestellt sind und der zweite, globale Cache-Speicher (14 ) von dem einzigen Chip abgetrennt ist. - Lache-Speichersystem nach Anspruch 1 oder Anspruch 2, bei dem der Datenprozessor ferner aufweist: einen virtuellen Speicher, auf den durch eine virtuelle Adresse zugegriffen wird und der alle Daten für die Benutzung durch den Daten-Prozessor enthält, und einen äußeren Hauptspeicher (
27 ), auf den durch eine physikalische Adresse zugegriffen wird und der eine Untergruppe der in dem virtuellen Speicher gespeicherten Daten enthält, und wobei die Ganzzahl-Einheit (10 ) einen Adressengenerator (38 ) zum Erzeugen der virtuellen Adressen und einen Umsetzer (40 ) zum Umsetzen virtueller Adressen in physikalische Adressen aufweist. - Cache-Speichersystem nach Anspruch 3, bei dem jede virtuelle Adresse und jede physikalische Adresse ein INDEX- und ein OFFSET-Feld enthält und eine erste Kopie einer speziellen Cache-Zeile in dem ersten, örtlichen Cache-Speicher (
12 ) und eine zweite Kopie der speziellen Cache-Zeile in dem zweiten, globalen Cache-Speicher (14 ) gespeichert ist, wobei die spezielle Cache-Zeile eine Vielzahl von Wörtern enthält und der erste, örtliche Cache-Speicher (12 ) aufweist: einen ersten Datenspeicher zum Speichern der ersten Kopie der speziellen Cache-Zeile in einem Speicherplatz, auf den durch das INDEX-Feld der virtuellen Adresse zugegriffen wird; und der zweite, globale Cache-Speicher (14 ) ferner aufweist: einen zweiten Datenspeicher zum Speichern der zweiten Kopie der speziellen Cache-Zeile in einem Speicherplatz, auf den durch das INDEX-Feld der physikalischen Adresse zugegriffen wird. - Cache-Speichersystem nach Anspruch 3 oder Anspruch 4, bei dem die physikalische Adresse ein KENNZEI-CHEN-Feld und ein INDEX-Feld aufweist und der zweite, globale Cache-Speicher (
14 ) einen Datenspeicher (30 ) und einen Wählsignalgenerator aufweist, wobei: der Datenspeicher (30 ) ein N-Weg-Satz-Assoziativ-Speicher ist, wobei N eine ganze Zahl ist, die gleich einer Potenz von zwei ist, wobei ein vorgegebener Satz durch ein Satzwählsignal (34 ) und eine vorgegebene Cache-Zeile in einem Satz durch das INDEX-Feld der physikalischen Adresse gewählt wird, und wobei der Wählsignalgenerator aufweist: ein Kennzeichen-Speicher (52 ) zur Bildung von N KENNZEICHEN-Feldern, auf die durch das INDEX-Feld zugegriffen wird, wobei jedes KENNZEICHEN-Feld Daten entspricht, die in einem der Sätze des Datenspeichers (30 ) enthalten sind; N Komparatoren (60A-60D ), wobei jeder Komparator (60A-60D ) einen ersten Eingang aufweist, der so angeschlossen ist, daß er das KENNZEICHEN-Feld der physikalischen Adresse aufnimmt, und einen zweiten Eingang aufweist, der so angeschlossen ist, daß er jeweils eines der KENNZEICHEN-Felder aufnimmt, die durch den KENNZEICHEN-Speicher (52 ) geliefert werden, wobei jeder Komparator (60A-60D ) ein Ausgangssignal aufweist, das gesetzt wird, wenn die KENNZEICHEN-Felder an den Komparator-Eingängen übereinstimmen, und zurückgesetzt wird, wenn die KENNZEICHEN-Felder an den Komparator-Eingängen nicht übereinstimmen; und Codiermittel (66 ), die so angeschlossen sind, daß sie die Ausgangssignale der Komparatoren (60A-60D) aufnehmen, um ein Wählsignal zu erzeugen, das die Position eines Komparators kodiert, der ein Ausgangssignal aufweist, das anzeigt, daß die KENNZEICHEN-Felder an seinen Eingängen übereinstimmen. - Verfahren zum Speichern von Daten in einem Cache-Speichersystem mit aufgeteiltem Pegel, das aufweist: a) einen ersten, örtlichen Cache-Speicher (
12 ), der den primären Cache für eine Ganzzahl-Einheit (10 ) bildet und mit der Ganzzahl-Einheit (10 ) verbunden ist und einen Dateneingangs-Port und einen Adresseneingangs-Port zum Speichern von Ganzzahlund Adressendaten aufweist, die durch die Ganzzahl-Einheit (10 ) verarbeitet werden sollen; b) einen zweiten, globalen Cache-Speicher (14 ), der den primären Cache für eine Gleitkomma-Einheit und den sekundären Cache für die Ganzzahl-Einheit (10 ) bildet und einen Dateneingangs-Port, einen Datenausgangs-Port und einen Adresseneingangs-Port aufweist, der mit der Ganzzahl-Einheit (10 ) verbunden ist, um die Ganzzahl- und Adressendaten zu speichern, die durch die Ganzzahl-Einheit (10 ) verarbeitet werden sollen, und um die Gleitkomma-Daten zu speichern, wobei jede Speicheradresse des ersten, örtlichen Cache-Speichers (12 ) eine entsprechende Speicher-Adresse in dem zweiten, globalen Cache-Speicher (14 ) aufweist und der örtliche Cache-Speicher (12 ) eine Untereinheit des globalen Cache-Speichers (14 ) ist; c) erste Datenübertragungsmittel (18 ,24 ), die mit dem Datenausgangs-Port des zweiten, globalen Cache-Speichers (14 ) und dem Dateneingangs-Port des ersten, globalen Cache-Speichers (12 ) und dem Dateneingangs-Port der Gleitkomma-Einheit (20 ) verbunden sind, um Daten aus dem zweiten, globalen Lache-Speicher (14 ) in den ersten, örtlichen Cache-Speicher (12 ) zu übertragen, wenn Ganzzahl- und Adressendaten, die in dem zweiten, globalen Cache-Speicher (14 ) gespeichert sind, zur Verarbeitung durch die Ganzzahl-Einheit (10 ) erforderlich sind, und zwischen dem örtlichen Lache-Speicher (14 ) und der Gleitkomma-Einheit (20 ) zu übertragen, wenn Gleitkomma-Daten zur Verarbeitung durch die Gleitkomma-Einheit (20 ) erforderlich sind; und d) zweite Datenübertragungsmittel (26 ), die mit dem Dateneingangs-Port der Gleitkomma-Einheit (20 ) und dem Dateneingangs-Port des zweiten, globalen Cache-Speichers (14 ) verbunden sind, um Daten aus der Gleitkomma-Einheit (20 ) in den zweiten, globalen Cache-Speicher (14 ) während einer Gleitkomma-Speicheroperation zu übertragen; dadurch gekennzeichnet, daß Daten, die unter einer Speicheradresse des ersten, örtlichen Cache-Speichers (12 ) durch die Ganzzahl-Einheit (10 ) gespeichert werden, auf einem dritten Übertragungsmittel (22 ) angeordnet werden, das mit Befehlsports der Ganzzahl-Einheit (10 ) und der Gleitkomma-Einheit (20 ) verbunden ist, und die Gleitkomma-Einheit (20 ) bewirkt, daß diese Daten unter der entsprechenden Speicheradresse des zweiten, örtlichen Cache-Speichers (14 ) gespeichert werden, und daß ein Gültigkeitsbit, das einer Speicheradresse des ersten, örtlichen Cache-Speichers (12 ) zugeordnet ist, gelöscht wird, wenn während einer Gleitkomma-Speicheroperation Daten unter der entsprechenden Speicheradresse des zweiten, örtlichen Cache-Speichers (14 ) gespeichert werden, und das Gültigkeitsbit gesetzt wird, wenn die Ganzzahl-Einheit (10 ) während einer Ganzzahl-Speicheroperation unter der zugeordneten Speicher-Adresse des ersten, örtlichen Cache-Speichers (12 ) speichert.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US168832 | 1988-03-16 | ||
US08/168,832 US5510934A (en) | 1993-12-15 | 1993-12-15 | Memory system including local and global caches for storing floating point and integer data |
PCT/US1994/014380 WO1995016961A1 (en) | 1993-12-15 | 1994-12-12 | Split level cache |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69432314D1 DE69432314D1 (de) | 2003-04-24 |
DE69432314T2 true DE69432314T2 (de) | 2004-02-12 |
Family
ID=22613120
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69432314T Expired - Lifetime DE69432314T2 (de) | 1993-12-15 | 1994-12-12 | Cachespeicher mit aufgeteiltem pegel |
Country Status (5)
Country | Link |
---|---|
US (1) | US5510934A (de) |
EP (1) | EP0734553B1 (de) |
JP (1) | JPH09506729A (de) |
DE (1) | DE69432314T2 (de) |
WO (1) | WO1995016961A1 (de) |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6378062B1 (en) * | 1994-01-04 | 2002-04-23 | Intel Corporation | Method and apparatus for performing a store operation |
US6021471A (en) * | 1994-11-15 | 2000-02-01 | Advanced Micro Devices, Inc. | Multiple level cache control system with address and data pipelines |
JPH10509819A (ja) | 1994-10-14 | 1998-09-22 | シリコン グラフィックス インク. | インターリーブされるキャッシュメモリアレイのインデッキシングとマルチプレキシング |
JP3598589B2 (ja) * | 1995-06-28 | 2004-12-08 | 株式会社日立製作所 | プロセッサ |
US5710944A (en) * | 1996-02-09 | 1998-01-20 | Motorola, Inc. | Memory system and data communications system |
US6199142B1 (en) * | 1996-07-01 | 2001-03-06 | Sun Microsystems, Inc. | Processor/memory device with integrated CPU, main memory, and full width cache and associated method |
US5787470A (en) * | 1996-10-18 | 1998-07-28 | At&T Corp | Inter-cache protocol for improved WEB performance |
US5809526A (en) * | 1996-10-28 | 1998-09-15 | International Business Machines Corporation | Data processing system and method for selective invalidation of outdated lines in a second level memory in response to a memory request initiated by a store operation |
US5920890A (en) * | 1996-11-14 | 1999-07-06 | Motorola, Inc. | Distributed tag cache memory system and method for storing data in the same |
US5898849A (en) * | 1997-04-04 | 1999-04-27 | Advanced Micro Devices, Inc. | Microprocessor employing local caches for functional units to store memory operands used by the functional units |
US6161167A (en) * | 1997-06-27 | 2000-12-12 | Advanced Micro Devices, Inc. | Fully associate cache employing LRU groups for cache replacement and mechanism for selecting an LRU group |
US6088789A (en) * | 1998-05-13 | 2000-07-11 | Advanced Micro Devices, Inc. | Prefetch instruction specifying destination functional unit and read/write access mode |
US6272597B1 (en) * | 1998-12-31 | 2001-08-07 | Intel Corporation | Dual-ported, pipelined, two level cache system |
US6425055B1 (en) | 1999-02-24 | 2002-07-23 | Intel Corporation | Way-predicting cache memory |
US6314491B1 (en) | 1999-03-01 | 2001-11-06 | International Business Machines Corporation | Peer-to-peer cache moves in a multiprocessor data processing system |
US6591361B1 (en) | 1999-12-28 | 2003-07-08 | International Business Machines Corporation | Method and apparatus for converting data into different ordinal types |
US6857061B1 (en) | 2000-04-07 | 2005-02-15 | Nintendo Co., Ltd. | Method and apparatus for obtaining a scalar value directly from a vector register |
US6701424B1 (en) | 2000-04-07 | 2004-03-02 | Nintendo Co., Ltd. | Method and apparatus for efficient loading and storing of vectors |
US6859862B1 (en) | 2000-04-07 | 2005-02-22 | Nintendo Co., Ltd. | Method and apparatus for software management of on-chip cache |
US6748492B1 (en) | 2000-08-07 | 2004-06-08 | Broadcom Corporation | Deterministic setting of replacement policy in a cache through way selection |
US6848024B1 (en) | 2000-08-07 | 2005-01-25 | Broadcom Corporation | Programmably disabling one or more cache entries |
US6732234B1 (en) | 2000-08-07 | 2004-05-04 | Broadcom Corporation | Direct access mode for a cache |
US6748495B2 (en) | 2001-05-15 | 2004-06-08 | Broadcom Corporation | Random generator |
US6751707B2 (en) | 2002-05-06 | 2004-06-15 | Sony Computer Entertainment Inc. | Methods and apparatus for controlling a cache memory |
US7266587B2 (en) * | 2002-05-15 | 2007-09-04 | Broadcom Corporation | System having interfaces, switch, and memory bridge for CC-NUMA operation |
JP3855270B2 (ja) * | 2003-05-29 | 2006-12-06 | ソニー株式会社 | アンテナ実装方法 |
US7734901B2 (en) * | 2005-10-31 | 2010-06-08 | Mips Technologies, Inc. | Processor core and method for managing program counter redirection in an out-of-order processor pipeline |
US7711934B2 (en) * | 2005-10-31 | 2010-05-04 | Mips Technologies, Inc. | Processor core and method for managing branch misprediction in an out-of-order processor pipeline |
US7721071B2 (en) * | 2006-02-28 | 2010-05-18 | Mips Technologies, Inc. | System and method for propagating operand availability prediction bits with instructions through a pipeline in an out-of-order processor |
US20070204139A1 (en) | 2006-02-28 | 2007-08-30 | Mips Technologies, Inc. | Compact linked-list-based multi-threaded instruction graduation buffer |
US7370178B1 (en) | 2006-07-14 | 2008-05-06 | Mips Technologies, Inc. | Method for latest producer tracking in an out-of-order processor, and applications thereof |
US20080016326A1 (en) * | 2006-07-14 | 2008-01-17 | Mips Technologies, Inc. | Latest producer tracking in an out-of-order processor, and applications thereof |
US7631149B2 (en) * | 2006-07-24 | 2009-12-08 | Kabushiki Kaisha Toshiba | Systems and methods for providing fixed-latency data access in a memory system having multi-level caches |
US7650465B2 (en) | 2006-08-18 | 2010-01-19 | Mips Technologies, Inc. | Micro tag array having way selection bits for reducing data cache access power |
US7657708B2 (en) * | 2006-08-18 | 2010-02-02 | Mips Technologies, Inc. | Methods for reducing data cache access power in a processor using way selection bits |
US7647475B2 (en) * | 2006-09-06 | 2010-01-12 | Mips Technologies, Inc. | System for synchronizing an in-order co-processor with an out-of-order processor using a co-processor interface store data queue |
US8032734B2 (en) * | 2006-09-06 | 2011-10-04 | Mips Technologies, Inc. | Coprocessor load data queue for interfacing an out-of-order execution unit with an in-order coprocessor |
US7594079B2 (en) | 2006-09-29 | 2009-09-22 | Mips Technologies, Inc. | Data cache virtual hint way prediction, and applications thereof |
US8078846B2 (en) | 2006-09-29 | 2011-12-13 | Mips Technologies, Inc. | Conditional move instruction formed into one decoded instruction to be graduated and another decoded instruction to be invalidated |
US20080082793A1 (en) * | 2006-09-29 | 2008-04-03 | Mips Technologies, Inc. | Detection and prevention of write-after-write hazards, and applications thereof |
US9946547B2 (en) | 2006-09-29 | 2018-04-17 | Arm Finance Overseas Limited | Load/store unit for a processor, and applications thereof |
US8683139B2 (en) | 2006-10-31 | 2014-03-25 | Hewlett-Packard Development Company, L.P. | Cache and method for cache bypass functionality |
US20080104333A1 (en) * | 2006-10-31 | 2008-05-01 | Veazey Judson E | Tracking of higher-level cache contents in a lower-level cache |
US8365169B1 (en) | 2008-01-10 | 2013-01-29 | Hewlett-Packard Development Company, L.P. | Migrating a virtual machine across processing cells connected to an interconnect that provides data communication without cache coherency support |
US20090248986A1 (en) * | 2008-03-26 | 2009-10-01 | Daniel Citron | Apparatus for and Method of Implementing Multiple Content Based Data Caches |
US8645404B2 (en) * | 2011-10-21 | 2014-02-04 | International Business Machines Corporation | Memory pattern searching via displaced-read memory addressing |
US9421793B2 (en) * | 2014-06-26 | 2016-08-23 | Cellresin Technologies, Llc | Electrostatic printing of cyclodextrin compositions |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4774659A (en) * | 1986-04-16 | 1988-09-27 | Astronautics Corporation Of America | Computer system employing virtual memory |
US4928225A (en) * | 1988-08-25 | 1990-05-22 | Edgcore Technology, Inc. | Coherent cache structures and methods |
US5051885A (en) * | 1988-10-07 | 1991-09-24 | Hewlett-Packard Company | Data processing system for concurrent dispatch of instructions to multiple functional units |
US5155816A (en) * | 1989-02-10 | 1992-10-13 | Intel Corporation | Pipelined apparatus and method for controlled loading of floating point data in a microprocessor |
US5214765A (en) * | 1989-08-31 | 1993-05-25 | Sun Microsystems, Inc. | Method and apparatus for executing floating point instructions utilizing complimentary floating point pipeline and multi-level caches |
US5307477A (en) * | 1989-12-01 | 1994-04-26 | Mips Computer Systems, Inc. | Two-level cache memory system |
US5014195A (en) * | 1990-05-10 | 1991-05-07 | Digital Equipment Corporation, Inc. | Configurable set associative cache with decoded data element enable lines |
EP0459232B1 (de) * | 1990-05-29 | 1998-12-09 | National Semiconductor Corporation | Cache-Speicher von partiell decodierten Befehlen und Verfahren hierfür |
-
1993
- 1993-12-15 US US08/168,832 patent/US5510934A/en not_active Expired - Lifetime
-
1994
- 1994-12-12 DE DE69432314T patent/DE69432314T2/de not_active Expired - Lifetime
- 1994-12-12 WO PCT/US1994/014380 patent/WO1995016961A1/en active IP Right Grant
- 1994-12-12 JP JP7516928A patent/JPH09506729A/ja not_active Ceased
- 1994-12-12 EP EP95904903A patent/EP0734553B1/de not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0734553A1 (de) | 1996-10-02 |
WO1995016961A1 (en) | 1995-06-22 |
US5510934A (en) | 1996-04-23 |
DE69432314D1 (de) | 2003-04-24 |
JPH09506729A (ja) | 1997-06-30 |
EP0734553B1 (de) | 2003-03-19 |
EP0734553A4 (de) | 1997-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69432314T2 (de) | Cachespeicher mit aufgeteiltem pegel | |
DE3687307T2 (de) | Computeranordnungen mit cache-speichern. | |
DE69133302T2 (de) | Registerabbildung in einem einzigen Taktzyklus | |
DE3689488T2 (de) | Speicheranordnung mit vereinfachtem und schnellem Daten-Cachespeicher. | |
DE69427734T2 (de) | Linearadressierter Mikroprozessorcachespeicher | |
DE69025302T2 (de) | Hochleistungsrasterpuffer- und -cachespeicheranordnung | |
DE69031978T2 (de) | Einrichtung und Verfahren zum Vermindern von Störungen in zweistufigen Cache-Speichern | |
DE69317729T2 (de) | Cache-Etikettenspeicher | |
DE69127111T2 (de) | Verfahren zum Nachladen aufgeschobener Datenauslagerungen in einen Copy-back Daten-Cachespeicher | |
DE69721368T2 (de) | Verfahren und Gerät zur dynamischen Vorhersage des Weges für mehrstufige und mehrwege-satz-assoziative Cachespeicher | |
DE3909896C2 (de) | ||
DE19526007C2 (de) | Horizontal partitionierter Befehls-Cache-Speicher | |
DE68927172T2 (de) | Multiprozessorsystem mit cache-speichern | |
DE68902193T2 (de) | Datenspeicheranordnung. | |
DE4132833C2 (de) | Hierarchischer Cache-Speicher | |
DE69331039T2 (de) | Rechnersystem mit einem Vorausholungscachespeicher | |
DE69424767T2 (de) | Kohärente Schreibtransaktionen für Teilzeilen eines Cache-Speichers | |
DE3724317C2 (de) | ||
DE69327981T2 (de) | Kombinierte Speicheranordnung mit einem Vorausholungspuffer und einem Cachespeicher und Verfahren zur Befehlenversorgung für eine Prozessoreinheit, das diese Anordnung benutzt. | |
DE69902392T2 (de) | Verwenden von ecc/paritätsbits zum speichern von vor- dekodierungs-informationen | |
DE3851746T2 (de) | Sprungvorhersage. | |
DE69031411T2 (de) | Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff | |
DE69029173T2 (de) | Mikroprozessor | |
DE3852695T2 (de) | Multiprozessorsystem mit mehreren Speichern. | |
DE68923863T2 (de) | Ein-/Ausgabecachespeicherung. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition |