DE19821581A1 - Speichermatrix, die mehrfache, gleichzeitige Schreibzugriffe zuläßt - Google Patents

Speichermatrix, die mehrfache, gleichzeitige Schreibzugriffe zuläßt

Info

Publication number
DE19821581A1
DE19821581A1 DE19821581A DE19821581A DE19821581A1 DE 19821581 A1 DE19821581 A1 DE 19821581A1 DE 19821581 A DE19821581 A DE 19821581A DE 19821581 A DE19821581 A DE 19821581A DE 19821581 A1 DE19821581 A1 DE 19821581A1
Authority
DE
Germany
Prior art keywords
memories
write
subset
stores
function
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.)
Withdrawn
Application number
DE19821581A
Other languages
English (en)
Inventor
Peter Loeffler
Erwin Pfeffer
Thomas Pflueger
Hans-Werner Tast
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE19821581A1 publication Critical patent/DE19821581A1/de
Withdrawn 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/16Multiple access memory array, e.g. addressing one storage element via at least two independent addressing line groups

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Static Random-Access Memory (AREA)

Description

Gebiet der Erfindung
Die Erfindung bezieht sich auf Speicher und Speichermatrizen, und insbesondere auf einen Speicher, der eine Vielheit gleichzeitiger Schreib- und Lesezugriffe erlaubt.
Hintergrund der Erfindung
Auf einen Speicher, z. B. eine Speichermatrix, die eine Anzahl von Speicherzellen umfaßt, wird über Leseanschlüsse und Schreibanschlüsse zugegriffen. Jedesmal wenn ein Lese- oder Schreibzugriff auf die genannte Speichermatrix auszuführen ist, wird eine Adresse an die Speichermatrix angelegt und Daten werden in die Speichermatrix über die genannten Leseanschlüsse und/oder Schreibanschlüsse eingeschrieben oder aus ihr ausgelesen.
Es ist bekannt, eine Anzahl von Lese-Anschlüssen und/oder Schreibanschlüssen vorzusehen, um gleichzeitige, getrennte Lese- und Schreibzugriffe zu erlauben, die während ein und desselben Taktzyklus auftreten können.
Solange die gleichzeitigen Lese- und Schreibzugriffe auf unterschiedliche Adressen gerichtet sind, treten keine Gefahren auf, da jeder Zugriff aus einer anderen Speicherstelle liest oder in sie schreibt. Selbst wenn zwei gleichzeitige Lesezugriffe über zwei getrennte Leseanschlüsse auf ein und dieselbe Speicheradresse gerichtet sind, besteht keine Gefahr. Der Inhalt der genannten Adresse wird einfach an beide Lese-Anschlüsse geliefert, die die genannte Speicherstelle adressiert haben. Daher können gleichzeitige Lesezugriffe auf eine Speicherstelle leicht durchgeführt werden.
Eine schwierigere Situation entsteht, sobald ein Schreib- und ein Lesezugriff auf ein und dieselbe Adresse in dem Speicher gerichtet sind. Die Daten, die in die genannte Speicheradresse über einen Schreibanschluß eingeschrieben wurden, sollten in dem gleichen Zyklus durch den Lesezugriff erhalten werden. Dieses Merkmal des unmittelbaren Leitens der an einen Schreibanschluß angelegten Daten zu einem Lese-Anschluß, der die gleiche Speicheradresse adressiert, wird "Durchschreiben" genannt.
Es gibt zwei Wege, wie ein Durchschreiben implementiert werden kann. Eine erste Lösung besteht darin, den Taktzyklus in eine Anzahl von Teilzyklen zu unterteilen, wobei der erste Teilzyklus für den Schreibzugriff verantwortlich ist und der Lesezugriff während eines zweiten Teilzyklus stattfindet. Daher ist es möglich, in dem Lese-Teilzyklus Daten, die während des Schreib-Teilzyklus in die genannte Speicheradresse geschrieben wurden, zu erhalten, da der genannte Lese-Teil­ zyklus im Hinblick auf den genannten Schreib-Teilzyklus verzögert wurde. Das Implementierten eines Durchschreibens über solch eine Kaskadenberechnung impliziert, daß es nötig ist, den Taktzyklus in Teilzyklen zu unterteilen. Dies bedeutet, daß verschiedene Teilaufgaben in dem gleichen Taktzyklus ausgeführt werden müssen, eine nach der anderen, und daher muß jeder Taktzyklus größer sein als eine bestimmte minimale Länge. Daher impliziert ein unterteilter Taktzyklus, daß die Taktfrequenz nicht unbegrenzt vergrößert werden kann.
Ein anderer möglicher Weg des Implementierens eines Durchschreibens besteht darin, zusätzliche Logik an jedem der Schreibanschlüsse und der Leseanschlüsse vorzusehen, um Adressengleichheit zwischen irgendeinem der Schreibanschlüsse und irgendeinem der Leseanschlüsse festzustellen. Immer, wenn solch eine Übereinstimmung festgestellt wird, können Daten, die in eine bestimmte Speicherstelle geschrieben werden müssen, unmittelbar zu einem entsprechenden Lese-Anschluß weitergeleitet werden, der die genannte Speicherstelle adressiert. Ein Nachteil der zusätzlichen Logik in den Schreib- und Lesepfaden muß in der resultierenden Leistungsverschlechterung gesehen werden und in dem Verbrauch von Chip-Fläche.
Als nächstes ist der Fall zu betrachten, daß mehr als ein Schreibzugriff auf eine bestimmte Speicherstelle während ein und desselben Zyklus vorkommt. In dem Fall, daß identische Daten über zwei verschiedene Schreibanschlüsse in eine Speicherstelle geschrieben werden, ist die Lösung für diese Gefahr ziemlich einfach: Eine Informationsquelle, im Folgenden als Pipe bezeichnet, muß den Schreibzugriff der anderen Pipe unterdrücken, da ein einziger Schreibzugriff völlig ausreichend ist.
Aber es existiert auch der Fall, daß zumindest zwei Schreibzugriffe auf eine Adresse in ein und demselben Zyklus durchgeführt werden, wobei die genannten Schreibzugriffe versuchen, verschiedene Daten einzuschreiben. Man könnte an eine Matrix von Statusbits denken, auf die über verschiedene Pipen zugegriffen wird. Jeder Zugriff kann verschiedene Bits modifizieren, und daher können die Daten, die durch jeden der verschiedenen Schreibzugriffe eingeschrieben werden, differieren. Da es nötig ist, alle Änderungen der genannten Statusbits zu speichern, selbst wenn sie gleichzeitig auftreten, würde eine vollständige Unterdrückung aller Schreibzugriffe bis auf einen nicht zu richtigen Resultaten führen.
Eine Lösung für das Problem gleichzeitiger Schreibzugriffe auf eine Speicherstelle besteht darin, Mittel für eine Kaskadenberechnung der Schreibzugriffe vorzusehen. In jedem Teilzyklus wird für einen Schreibzugriff gesorgt und durch diese aufeinanderfolgende Berücksichtigung der Schreibzugriffe ist es möglich, einen korrekten Status der Matrix zu jedem Zeitpunkt aufrechtzuerhalten. Wiederum besteht der Nachteil des Unterteilens des Taktzyklus darin, daß Grenzen für die maximal mögliche Taktfrequenz auferlegt werden.
Eine andere Lösung für das Problem gleichzeitiger Schreibzugriffe auf ein und dieselbe Speicherstelle besteht darin, zusätzliche Logik in den Schreibpfaden zu implementieren, um verschiedene Schreibzugriffe auf einen resultierenden Schreibzugriff zu kombinieren. In dem Fall, daß eine Matrix von Statusbits über verschiedene Schreibpipen aktualisiert wird, wäre ein großer Umfang schwieriger Zusatzlogik erforderlich, was die Leistung verlangsamen würde. Insbesondere in dem Fall einer großen Anzahl von Schreibpipen müßten alle möglichen Kombinationen von Schreibzugriffen in der Zusatzlogik berücksichtigt werden.
Alle die bis jetzt beschriebenen Lösungen beruhen darauf, daß auf eine Zelle mit Mehrfachanschlüssen durch eine Vielzahl von Schreibpipen über verschiedene Schreibanschlüsse zugegriffen wird. Laßt uns das Beispiel betrachten, das die genannte Speichermatrix Statusinformationen enthält, die über verschiedene Schreibpipen durch verschiedene auf dem Chip befindliche Einrichtungen aktualisiert werden. Dies erfordert physische Schreibpfade, die jede der genannten Einrichtungen mit der zentralen Matrix der genannten Statusbits verbinden. Daher stellt eine Zelle mit Mehrfachanschlüssen immer einen "heißen Fleck" dar, der mit einer Menge verschiedener Chipstellen verbunden werden muß und der daher starke Beschränkungen für den Chip-Layout und die Chip-Verdrahtung auferlegt.
Aufgabe der Erfindung
Es ist eine Aufgabe der Erfindung, einen Speicher anzugeben, der die Funktionalität einer Zelle mit Mehrfach-Schreib­ anschlüssen aufweist, die es gestattet, gleichzeitige Zugriffe auf eine Speicherstelle über eine Vielzahl von Pipen zu speichern, während die Nachteile der Lösungen nach dem Stand der Technik vermieden werden.
Es ist eine weitere Aufgabe der Erfindung, eine zentralisierte Zelle mit Mehrfach-Schreibanschlüssen durch eine verteilte Einrichtung zu ersetzen, die die gleiche Funktionalität aufweist.
Es ist eine weitere Aufgabe der Erfindung, einen Speicher zum Festhalten von Statusinformationen anzugeben, die durch Pfade für Mehrfachzugriff aktualisiert werden müssen, die das Aktualisieren gleichzeitig durchführen können.
Zusammenfassung der Erfindung
Die Aufgabe der Erfindung wird gelöst durch eine Menge von Speichern nach Anspruch 1 durch ein Verfahren zum Speichern von Daten in einer Menge von Speichern gemäß Anspruch 12 und durch ein Verfahren zum Gewinnen von Daten aus einer Menge von Speichern gemäß Anspruch 13.
Anstelle einer Zelle mit einem Mehrfach-Schreibanschluß wird eine Menge von Speichern vorgesehen, um Mehrfachzugriffe über verschiedene Schreibpipen zu erlauben. Immer wenn Daten, die in der genannten Menge von Speichern enthalten sind, abzurufen sind, müssen die Inhalte verschiedener Speicher der genannten Menge von Speichern zusammen betrachtet werden. Nützliche Informationen sind nicht in einem einzigen Speicher enthalten, sondern statt dessen müssen die Inhalte einer Teilmenge C (z. B. eine Spalte) der genannten Menge von Speichern kombiniert werden. Zuerst werden die Inhalte der Untermenge C gelesen, als nächstes wird eine Lesefunktion auf die genannten Inhalte angewandt, um den derzeitigen Inhalt der genannten Menge von Speichern zu bestimmen.
Das Verteilen der nützlichen Informationen unter einer Menge von Speichern läßt eine Modifikation der genannten Informationen über einen Schreibzugriff auf irgendeinen der genannten Speicher zu. Daher werden gleichzeitige Schreibzugriffe über verschiedene Pipen möglich.
Um die Informationen, die durch die Menge von Speichern dargestellt werden, zu modifizieren, wird die folgende Strategie verfolgt: zuerst werden die Inhalte von Speichern, in die nicht geschrieben wird, gelesen. Abhängig von dem Statuts dieser Speicher und abhängig von dem gewünschten Inhalt der in der gesamten Menge der Speicher enthalten sein soll, wird berechnet, wie eine andere Teilmenge der Menge von Matrizen modifiziert werden muß, um zu erreichen, daß alle Matrizen zusammengenommen den gewünschten Inhalt darstellen.
Daher sind die folgenden Schritte für einen Schreibzugriff auf die genannte Menge von Speichern notwendig;
Lesen der Inhalte einer Teilmenge der genannten Menge von Speichern,
Anwenden einer Schreibfunktion auf die genannten Inhalte der genannten Teilmenge A der genannten Menge von Speichern und auf eine erste Menge von Werten, die in der genannten Menge von Speichern enthalten sein muß, um als ein Ausgangssignal der genannten Schreibfunktion eine zweite Menge von Werten zu bestimmen, die in eine Teilmenge B der genannten Menge von Speichern einzuschreiben ist,
wobei die genannte Teilmenge A der genannten Menge von Speichern und die genannte Teilmenge B der genannten Menge von Speichern keine Speicher gemeinsam haben,
Schreiben der genannten Menge von Werten in die genannte Teilmenge B der genannten Menge von Speichern.
Das vorgeschlagene Verfahren zum Speichern von Daten in eine und zum Abrufen aus einer Menge von Speichern zeigt eine Anzahl von Vorteilen, verglichen mit einer Zelle mit einem Mehrfach-Schreibanschluß. Einer dieser Vorteile besteht darin, daß gleichzeitige Zugriffe auf die genannte Menge von Speichern vorkommen können, ohne zusätzliche Logik in den Schreibpfaden zu erfordern und ohne Unterteilen des Taktzyklus in Teilzyklen. Dies führt zu Leistungsverbesserungen, da keine Verzögerung in den Schreibpfaden eingeführt wird und da der Taktzyklus ziemlich kurz sein kann.
Da die Informationen in all den Speichern der genannten Menge von Speichern enthalten sind, gibt es keinen "heißen Fleck", wie das der Fall war bei einer Zelle mit Mehrfach-Schreib­ anschluß. Die Schreibpfade greifen nicht auf einen zentralen Speicher zu, sondern statt dessen greift jeder Schreibpfad auf einen verschiedenen Speicher zu. Dies führt zu einer verteilten Lösung, was den Layout vereinfacht und was es erlaubt, die Speicher auf dem Chip flexibel anzuordnen, um den Verdrahtungsprozeß zu erleichtern.
Ein anderer Vorteil ist der, daß die Menge von Speichern, die durch die Erfindung vorgeschlagen werden, an irgendeine Anzahl von Schreibpipen angepaßt werden kann. Man kann einfache Speicher benutzen, die einen Leseanschluß und einen Schreibanschluß umfassen und mit diesen einfachen Geräten kann die Funktionalität einer Zelle mit Mehrfach-Schreib­ anschlüssen, die k Schreibpipen umfaßt, erhalten werden.
Ein anderer Vorteil ist der, daß die Menge von vorgeschlagenen Speichern bessere Bedingungen für das Testen liefert. Gewöhnlich wird ein Speicher durch Schreiben von Zufallsmustern in ihn getestet, durch Wiederauslesen dieser Muster und durch Vergleichen des Eingangs- und des Ausgangsmusters, um eine Signatur zu erhalten. Falls ein Fehler auftritt, kann dies durch Beobachten der genannten Signatur erkannt werden. Beim Testen einer Zelle mit einem Mehrfach-Schreibanschluß durch Schreiben von Zufallsmustern in die verschiedenen Schreibanschlüsse kann eine Situation auftreten, in der eine Schreibpipe eine "0" in eine bestimmte Speicherzelle schreiben will, während eine andere Schreibpipe auf die gleiche Zelle mit einer "1" zugreift. Ein nichtdefinierter Zustand der Speicherzelle ergibt sich. Durch Benutzen der Menge von Speichern gemäß der Erfindung kann das Testen mit Zufallsmustern über die verschiedenen Schreibpipen durchgeführt werden und es entstehen keine solchen nichtdefinierten Zustände. Da das Testen immer wichtiger wird, ist dies ein großer Vorteil.
Bei einem bevorzugten Ausführungsbeispiel der Erfindung sind die genannte Schreibfunktion und/oder die genannte Lesefunktion als UNGERADE-Funktionen realisiert. Die Ungerade-Funktion ist die einfachste Funktion, die die Anforderungen erfüllt, die Lese- und Schreibfunktionen auferlegt werden. Sie kann sehr leicht als eine Kaskade von Exklusiv-ODER-Gliedern implementiert werden und liefert eine einfache und billige Lösung.
Gemäß einem weiteren Ausführungsbeispiel der Erfindung werden die genannten Teilmengen A und B der genannten Menge von Speichern bestimmt entsprechend derjenigen der genannten Pipen, welche auf die genannte Menge von Speichern zugreift.
Eine Entsprechung zwischen den genannten Teilmengen B, für die ein Schreibzugriff erfolgt, und den verschiedenen Pipen wird erstellt. Nur durch Leiten der Schreibzugriffe von verschiedenen Pipen zu verschiedenen Teilmengen B, die keine gemeinsamen Elemente aufweisen, werden gleichzeitige Schreibzugriffe möglich. Bei einem weiteren Ausführungsbeispiel der Erfindung sind die genannte Menge von Werten, die in der genannten Menge von Speichern enthalten ist, Statusinformationen und insbesondere MRU/LRU-Status­ informationen.
Statusinformationen sind besonders gut geeignet, um in der genannten Menge von Speichern enthalten zu sein, da Statusinformationen durch eine Menge verschiedener Quellen aktualisiert werden muß, die auf unterschiedlichen Positionen auf dem Chip lokalisiert sind. Das Ersetzen einer zentralen "Heißfleck"-Zelle mit Mehrfach-Schreibanschluß durch eine Anordnung von Speichern ist besonders nützlich für Statusinformationen, da jede Einrichtung, die Statusinformationen aktualisiert, auf einen entsprechenden Speicher zugreifen kann und gleichzeitige Aktualisierungen gespeichert werden können.
Kurze Beschreibung der Zeichnungen
Fig. 1A zeigt, wie ein Resultatwert durch Verdichten der Inhalte einer Menge von Matrizen mittels einer Lesefunktion erhalten werden kann.
Fig. 1B zeigt, wie ein Schreibzugriff auf eine Menge von Matrizen mittels Pipe 2 durchgeführt wird.
Fig. 1C zeigt, wie ein Schreibzugriff auf eine Menge von Matrizen mittels Pipe 1 durchgeführt wird.
Fig. 2A zeigt, wie eine UNGERADE-Funktion als eine Kaskade von Exlusiv-ODER-Funktionen realisiert werden kann.
Fig. 2B zeigt die Wahrheitstabelle der genannten UNGERADE-Funktion.
Fig. 3 zeigt eine alternative Implementierung einer Menge von Matrizen, die zwei Schreibpipen umfaßt, wobei die diagonalen Elemente, die Matrix 11 und die Matrix 22, weggelassen sind.
Fig. 4 stellt dar, wie zusätzliche Lesematrizen R1 und R2 vorgesehen sein können, welche die diagonalen Elemente ersetzen sollen.
Fig. 5 zeigt einen alternativen Aufbau für eine Menge von Matrizen, der drei Schreibpipen umfaßt, bei dem die Matrizen 11, 22 und 33 weggelassen wurden.
Fig. 6A zeigt einen Lesezugriff in einer k × k-Menge von Matrizen, die es erlaubt, k Schreibpipen aufzunehmen.
Fig. 6B zeigt, wie ein Schreibzugriff mittels Pipe 3 auf die Menge von k × k-Matrizen durchgeführt wird.
Fig. 7 zeigt, wie MRU/LRU-Statusbits benutzt werden, um die Reihenfolge der Eingaben in einen assoziativen Cache mit einer Vierweggruppe anzugeben.
Fig. 8 gibt an, wie die entsprechenden sechs MLRU/LRU-Statusbits X1, X2, . . ., X6 geändert werden müssen, wenn auf einen Eintrag in einer der sechs Spalten Va, Vb, Vc oder Vd zugegriffen wird.
Fig. 9 zeigt, wie die MRU/LRU-Informationen in einer Gruppe von Matrizen gespeichert und aktualisiert werden können, die zwei Schreibpipen umfaßt.
Genaue Beschreibung der Erfindung
Gemäß der Erfindung wird vorgeschlagen, eine einzelne Matrix, in die Daten geschrieben und aus der Daten gelesen werden können, durch eine Menge von Matrizen zu ersetzen, die die gleichen Informationen enthalten sollen. In Fig. 1A ist eine Menge von vier Matrizen, Matrix 11, Matrix 12, Matrix 21, und Matrix 22 dargestellt. Die Matrizen sind in zwei Spalten und zwei Zeilen angeordnet. Fig. 1A zeigt, wie ein Lesezugriff auf die Menge der Matrizen durchgeführt wird. Keine der Matrizen 11, 12, 21 und 22 enthält für sich genommen gültige Daten. Um gültige Daten aus der genannten Menge von Matrizen zu erhalten, ist es notwendig, die Informationen, die in all den Matrizen irgendeiner der Spalten enthalten ist, zu kombinieren.
In Fig. 1A wird der Resultatwert aus den Matrizen der Spalte 2 abgerufen. Die Inhalte der Matrix 12 und der Matrix 22 werden weitergeleitet (100) zu einer Einrichtung 101, die eine "Lesefunktion" auf diese Eingangssignale anwendet. Mittels der genannten Lesefunktion werden die Daten der Matrix 12 und der Matrix 22 kombiniert, um die Resultatwerte der genannten Menge von Matrizen zu erhalten. Die UNGERADE-Funktion ist ein Beispiel einer möglichen Lesefunktion.
Anstelle des Verdichtens der Inhalte der Matrizen der Spalte 2 würde es auch möglich sein, die Inhalte der Matrizen der Spalte 1 zu kombinieren. Der wichtige Punkt ist der, daß alle die Matrizen einer Spalte zusammen nützliche Daten bilden, aber daß keine der Matrizen der Menge, für sich selbst genommen, nützliche Daten enthält.
Fig. 1B zeigt, wie ein Schreibzugriff auf die genannte Menge von Matrizen über Pipe 2 (103) durchgeführt wird. Eine 2 × 2- Menge von Matrizen 11, 12, 21 und 22 erlaubt es, zwei Schreibpipen aufzunehmen.
Jede Schreibpipe veranlaßt eine Schreiboperation in die Matrizen einer Zeile, die der genannten Schreibpipe entspricht. In dem Fall der Fig. 1B veranlaßt ein Schreibzugriff über Pipe 2 eine Schreiboperation in die Matrizen der Zeile 2, die die Matrix 21 und die Matrix 22 (107) umfaßt. Die Werte, die in die Matrizen der Zeile 2 eingeschrieben werden, sind nur bedeutungsvoll, wenn sie in Kombination mit den Inhalten anderer Matrizen, in diesem Fall mit den Inhalten der Zeile 1, gelesen werden.
Bevor die Schreiboperation tatsächlich durchgeführt wird, muß der aktuelle Status der Menge von Matrizen bestimmt werden. Um dies zu tun, werden alle die Werte der Matrizen in einer Spalte weitergeleitet (102) zu einer Einrichtung, die eine Schreibfunktion (104) durchführt. Da die Matrizen der Zeile 2 überschrieben werden, ist es nicht notwendig, die Inhalte der Matrizen dieser Zeile zu der Schreibfunktion weiterzuleiten. Dies ist der Grund, warum der Inhalt der Matrix 22 nicht zu der Schreibfunktion weitergeleitet wird. Während die Inhalte der Matrizen einer Spalte einen Eingang (102) zu der Schreibfunktion darstellen, bildet der gewünschte Resultatwert den zweiten Eingang (103) der Schreibfunktion (104). Wenn das gewünschte Resultat "UNGERADE" ist, wird eine "1" über die Pipe 2 (103) zu der Schreibfunktion weitergeleitet. In dem Fall, daß das gewünschte Resultat "GERADE" ist, wird eine "0" zu der Schreibfunktion weitergeleitet. Die Schreibfunktion kombiniert sowohl die aktuellen Spalteninhalte und die gewünschten Resultatwerte, um die Ausgangswerte zu erzeugen, die in die Zeile 2 (105) zu schreiben sind.
Bevor der genannte Wert tatsächlich in Zeile 2 (107) eingeschrieben werden kann, muß er eine Stufe durchlaufen, die als "Daten-Ein-Register und Schreibsteuerung" (106) bezeichnet wird. Mittels dieser Stufe werden Bedingungen, die eine Unterdrückung des Schreibzugriffs erzwingen, betrachtet. Eine dieser Bedingungen besteht darin, daß sowohl Pipe 1 als auch Pipe 2 beabsichtigen, die gleichen Daten in die gleiche Speicherstelle zu schreiben. In diesem Fall wird nur dem Schreibzugriff von Pipe 1 erlaubt, zu passieren, während der Schreibzugriff der Pipe 2 unterdrückt wird. Auf diese Bedingung wird in der Schreibsteuereinrichtung 106 geprüft.
In dem Fall, daß der Schreibzugriff passieren darf, wird der durch die Schreibfunktion 104 berechnete Wert in die Matrizen der Zeile eingeschrieben, die der Schreibpipe entspricht, die den Schreibzugriff aufrief.
Der Zweck der Schreibfunktion ist es, aus den aktuellen Spalteninhalten und aus dem gewünschten Resultatwert den Wert zu erzeugen, der in eine Zeile zu schreiben ist. Der Ausgangswert der Schreibfunktion muß in der Weise berechnet werden, daß, wenn die Inhalte irgendeiner Spalte kombiniert werden, der gewünschte Resultatwert erhalten wird. Eine mögliche mathematische Funktion, die in dieser Stufe benutzt werden kann, ist die UNGERADE-Funktion. Die UNGERADE-Funktion schickt eine "0" an ihrem Ausgang zurück, wenn eine gerade Zahl von "1 en" an ihre Eingänge angelegt wird, und sie schickt eine "1" in dem Fall zurück, daß eine ungerade Anzahl von "1'en" an ihre Eingänge angelegt wird. Neben der UNGERADE-Funktion könnte man an andere mathematische Funktionen denken, die als Lese- oder Schreibfunktionen benutzt werden können.
In Fig. 1C ist ein Schreibzugriff über Pipe 1 auf die Menge von Matrizen dargestellt. Wieder wird als ein erster Schritt auf den aktuellen Inhalt der Menge von Matrizen zugegriffen durch Weiterleiten (110) der Inhalte einer Spalte (hier Spalte 1) zu der Schreibfunktion 112 als eine erste Eingabe. Der gewünschte Resultatwert wird weitergeleitet als ein zweites Eingangssignal über Pipe 1 (111) zu der Schreibfunktion. Aus diesen beiden Eingangssignalen erzeugt die Schreibfunktion den Wert, der in die Zeile von Matrizen einzuschreiben ist, die der Pipe 1 entsprechen, was in Fig. 1C Zeile 1 ist. Bevor der Ausgangswert der Schreibfunktion in die Matrizen der genannten Zeile eingeschrieben wird, muß er die "Schreibsteuerungs"-Stufe (114) passieren, in der die Bedingungen für das Unterdrücken des Schreibzugriffs geprüft werden. In dem Fall, daß der Schreibzugriff erlaubt wird, wird der Ausgangswert der Schreibfunktion in die Matrizen 11 und 12 der Zeile 1 der Menge von Matrizen eingeschrieben.
Fig. 2A zeigt, wie eine UNGERADE-Funktion durch eine Kaskade von Exklusiv-ODER-Gliedern realisiert werden kann, die zwei Eingänge aufweisen. In der ersten Stufe, die die Exklusiv-ODER-Glieder 200 und 201 umfaßt, werden die fünf anfänglichen Eingänge auf drei Signalleitungen verdichtet. Zwei dieser Signalleitungen werden als Eingänge für das Exlusiv-ODER-Glied 202 der zweiten Stufe benutzt, die ein Ausgangssignal erzeugt. Dieses Ausgangsignal wird zusammen mit dem Eingangssignal 203 zu dem Exklusiv-ODER-Glied 204 der dritten Stufe weitergeleitet, die das endgültige Ausgangssignal der UNGERADE-Funktion 205 erzeugt. Der Aufbau solch einer Exklusiv-ODER-Kaskade kann wie folgt zusammengefaßt werden: so viele Eingänge jeder Stufe wie möglich werden durch die Stufe verdichtet, wobei die restlichen Signalleitungen zu der nächsten Stufe weitergeführt werden.
Fig. 2B zeigt die Wahrheitstabelle einer UNGERADE-Funktion, die drei Eingänge aufweist. Immer dann, wenn eine ungerade Anzahl von Eingangssignalen gleich "1" ist, ist auch das Ausgangssignal der UNGERADE-Funktion gleich "1". Immer dann, wenn eine gerade Anzahl von Eingangssignalen gleich "1" ist, ist das Ausgangssignal der UNGERADE-Funktion gleich "0". Mittels der UNGERADE-Funktion kann irgendeine Anzahl von Eingangssignalen in ein Ausgangssignal verdichtet werden.
Fig. 3 zeigt eine vereinfachte Implementierung einer Menge von Matrizen, die zwei Schreibpipen aufweisen. Die zwei diagonalen Elemente der Menge von Matrizen, die Matrix 11 und die Matrix 22, sind weggelassen worden. Mit solch einer vereinfachten Menge von Matrizen kann trotzdem die gleiche Funktionalität, wie sie in den Fig. 1A, 1B und 1C beschrieben wurde, erreicht werden.
Wenn ein Schreibzugriff über Pipe 1 (300) ausgeführt wird, ist es nur nötig, wie das aus Fig. 1C ersichtlich ist, den aktuellen Inhalt der Matrix 21 (309) zu der entsprechenden Schreibfunktion 302 weiterzuleiten (301). Es ist nicht notwendig, auf irgendeine der Matrizen 11 oder 22 zuzugreifen. Das Ausgangssignal der Schreibfunktion 302 wird über die Schreibsteuerung 303 zu dem Schreibanschluß der Matrix 12 weitergeleitet (304). Dies ist von der in Fig. 1C dargestellten Situation verschieden, wo das Ausgangssignal der Schreibfunktion in alle Matrizen (Matrix 11 und Matrix 12) der Zeile 1 eingeschrieben wird. Da die Matrix 11 in Fig. 3 weggelassen wurde, wird nur ein Schreibzugriff auf die Matrix 12 ausgeführt (304).
Wenn ein Schreibzugriff über Pipe 2 ausgeführt wird, ist die Situation ähnlich. Wie in Fig. 1B wird der Inhalt der Matrix 12 (304) als ein erstes Eingangssignal zu der Schreibfunktion 307 weitergeleitet (306). Pipe 2 (305) bildet den zweiten Eingang der Schreibfunktion 307. Aus beiden Werten bestimmt die Schreibfunktion 307 den Wert, der in die Zeile einzuschreiben ist, die der Pipe 2 entspricht. Da die Matrix 22 weggelassen wurde, wird der Ausgangswert der Schreibfunktion 307 nur über die Schreibsteuerung 308 in den Schreibanschluß der Matrix 21 (309) eingeschrieben, die die einzige verbleibende Matrix der Zeile 1 in der Menge von Matrizen ist.
Es erhebt sich die Frage, ob es möglich ist, gültige Resultatwerte aus dieser reduzierten Menge von Matrizen zu erhalten. Wenn man auf die Fig. 1A schaut, könnte man den Eindruck gewinnen, daß entweder die vollständige Spalte 1 oder die vollständige Spalte 2 notwendig ist zum Bestimmen des aktuellen Inhaltes der Menge von Matrizen. Aber tatsächlich kann die Lesefunktion noch durchgeführt werden, wenn die Matrizen 11 und 12 weggelassen werden. Wenn ein Schreibzugriff auf eine Menge von Matrizen durchgeführt wird, wird eine ganze Zeile der Menge von Matrizen adressiert. Dies impliziert, daß die Matrix 21 immer die gleichen Informationen wie die Matrix 22 enthält, (wie das aus Fig. 1B ersichtlich ist), und daß die Matrix 12 stets die gleichen Informationen enthält wie die Matrix 11 (wie das aus Fig. 1C ersichtlich ist).
Daher besteht die einzige Voraussetzung für das Durchführen einer gültigen Lesefunktion darin, eine Matrix der Zeile 1 auszuwählen und eine Matrix der Zeile 2, und die Inhalte dieser beiden Matrizen mittels der Lesefunktion zu kombinieren. Der aktuelle Wert der Menge von Matrizen der Fig. 3 kann durch Weiterleiten (310, 311) des Inhaltes der Matrix 12 (304) und der Matrix 21 (309) an die Lesefunktion 312 erhalten werden, da die Matrix 12 ein Element der Zeile 1 und die Matrix 21 ein Element der Zeile 2 ist. Daher wird gezeigt, daß selbst mit der verringerten Menge der Matrizen gemäß Fig. 3 die gesamte Funktionalität der Fig. 1A, 1B und 1C erhalten werden kann. Es ist jedoch zu beachten, daß für eine Lösung gemäß der Fig. 3 sowohl die Matrix 12 als auch die Matrix 21 jede zwei Leseanschlüsse haben müssen, einen Leseanschluß, der als ein Eingang für die Lesefunktion dient, und den anderen Leseanschluß, der als Eingang für die Schreibfunktion dient.
Aus dem bis jetzt Beschriebenen ist offensichtlich, daß die "diagonalen" Matrizen, die Matrizen 11 und 22, hauptsächlich nützlich sind, um den aktuellen Inhalt der Menge von Matrizen mittels der Lesefunktion zu erhalten. Ein weiteres Ausführungsbeispiel für eine Menge von Matrizen, die zwei Schreibpipen aufweisen, in denen die Matrizen in einer anderen Weise angeordnet sind, wird in Fig. 4 gegeben. Wie bei früheren Lösungen wird der Inhalt der Matrix 21 (401) ausgelesen und als ein erstes Eingangssignal zu der Schreibfunktion 402 geliefert. Pipe 1 (400) liefert das zweite Eingangssignal der Schreibfunktion 402. Als nächstes wird das Ausgangssignal der Schreibfunktion 402 über die Schreibsteuerung 403 weitergeleitet. Bei früheren Lösungen (Fig. 1C) wurde dieses Ausgangssignal in die Matrix 11 und die Matrix 12 eingeschrieben. Bei der Lösung nach Fig. 4 ist die Matrix 11 (411) durch die Lesematrix R 1 (410) ersetzt worden. Der Ausgangswert der Schreibfunktion 402 wird jetzt sowohl in die Matrix 12 (406) als auch in die Lesematrix R 1 (410) geschrieben.
Der Schreibpfad der Pipe 2 (405) arbeitet entsprechend. Pipe 2 (405) dient als ein erster Eingang zur Schreibfunktion 407 und der Inhalt der Matrix 12 (406) wird als ein zweites Eingangssignal zu der Schreibfunktion weitergeleitet. Wieder ist eine Schreibsteuerung (408) vorhanden, die den Ausgangswert weiterzuleiten hat und die den Schreibzugriff unterdrücken kann. Bei früheren Lösungen wurde das Ausgangssignal in die Zeile 2 (Fig. 1B) der Menge von Matrizen eingeschrieben, die die Matrix 21 (401) und die Matrix 22 (413) umfaßte. Die Matrix 22 ist durch die Lesematrix R 2 (412) ersetzt worden.
Um den aktuellen Wert, der in der Menge von Matrizen enthalten ist, auszulesen, griff die Lesefunktion nach Fig. 1A auf die Matrizen zu, die in einer Spalte enthalten waren. Der Wert konnte durch Adressieren der Matrizen 11 und 21 oder durch Adressieren der Matrizen 12 und 22 erhalten werden. Der Nachteil dieser Lösung besteht darin, daß die Matrizen 12 und 21 sowohl durch die Lesefunktion als auch die Schreibfunktion adressiert werden. Daher sind zwei Leseanschlüsse notwendig. Die in Fig. 4 veranschaulichte Lösung führt den Lesezugriff über die Lesematrizen Rl (410) und Rl (412) durch, was als Ersatz für die Matrizen 11 und 22 gedacht werden kann. Da die Lesematrix Rl (410) immer aktualisiert wird, wenn ein Schreibzugriff (404) auf Zeile 1 vorkommt, und da die Lesematrix R2 immer aktualisiert wird, wenn ein Schreibzugriff (409) auf Zeile 2 vorkommt, enthalten die Lesematrizen R1 und R2 zusammen die vollen Informationen der Menge von Matrizen. Sowohl auf die Lesematrizen 410 und 412 wird durch die Lesefunktion 414 zugegriffen, die aus den Inhalten der genannten Lesematrizen die Werte berechnet, die tatsächlich in der genannten Menge von Matrizen (415) enthalten sind. Ein Vorteil dieser Lösung besteht darin, daß jede der benutzten Matrizen, die Matrix 12, die Matrix 21, die Matrix R1 und die Matrix R2 nur einen einzigen Leseanschluß haben muß. In den anderen bisher beschriebenen Lösungen mußten die Matrizen 12 und 21 zumindest zwei Leseanschlüsse vorsehen.
Fig. 5 zeigt eine Implementierung für eine Menge von Matrizen, auf die über drei Schreibpipen zugegriffen wird, wobei die "Diagonal"-Matrizen 11, 22 und 33 weggelassen wurden. Daher war es möglich, die Anzahl der erforderlichen Matrizen von 9 auf 6 zu verringern. Dies erlaubt es, die erforderliche Chipfläche um ein Drittel zu verringern. Um die geringere Anzahl von notwendigen Matrizen zu kompensieren, müssen zumindest drei der Matrizen mit zwei Leseanschlüssen versehen werden. Aber dennoch stellt Fig. 5 eine billige und leicht zu implementierende Lösung für das Problem einer Matrix dar, die gleichzeitige Schreibzugriffe über unterschiedliche Schreibpipen zuläßt.
Wir betrachten zuerst einen Schreibzugriff, der über Pipe 1 (500) geschieht. Zusammen mit den Daten der Pipe 1 werden die Inhalte der Matrix 21 (502) und der Matrix 31 (503) zu der Schreibfunktion 501 weitergeleitet. Die Matrix 21 und die Matrix 31 sind die Elemente der Spalte 1, die in Zeile 1 nicht vorkommen und die daher nicht durch einen Schreibzugriff über Pipe 1 modifiziert werden. Aus diesen drei Eingangssignalen berechnet die Schreibfunktion einen Ausgangswert, der zu der Schreibsteuerung 504 weitergeleitet wird. Falls der Schreibzugriff nicht unterdrückt werden muß, wird der Ausgangswert der Schreibfunktion 501 in alle Matrizen der Zeile 1 eingeschrieben. Die Matrix 11 wurde trotzdem weggelassen. Daher wird nur auf die Matrix 12 und die Matrix 13 über ihre entsprechenden Schreibanschlüsse (505, 506) zugegriffen.
Ein Schreibzugriff über Pipe 2 (507) wird entsprechend durchgeführt. Außer den Daten, die durch Pipe 2 weitergeleitet werden, muß die Schreibfunktion 508 die Eingagssignale all der Matrizen der Spalte 2 empfangen mit Ausnahme derjenigen, die in Zeile 2 enthalten sind, da Zeile 2 die Zeile ist, die durch die Schreibzugriffe modifiziert wird. Daher müssen die Werte der Matrix 12 (509) und 32 (510) zu der Schreibfunktion 508 weitergeleitet werden. Aus diesen drei Eingangssignalen erzeugt die Schreibfunktion 508 ein Ausgangssignal, das nach dem Passieren der Schreibsteuerung 511 in all die Elemente der Zeile 2 eingeschrieben werden muß. Da die Matrix 22 weggelassen wurde, werden die Daten in die Matrix 21 (512) und die Matrix 23 (523) eingeschrieben.
Beim Betrachten des Schreibzugriffes, der über Pipe 3 (514) durchgeführt wird, ist es offensichtlich, daß die Matrizen 13 und 23 der Spalte 3 zu der Schreibfunktion 515 weitergeleitet werden müssen. Das Ausgangssignal der Schreibfunktion wird in die Matrizen 31 und 32 (520, 519) der Zeile 3 eingeschrieben.
Um in der Lage zu sein, den aktuellen Inhalt der Menge von Matrizen zu bestimmen, die die Matrizen 13, 23, 21, 23, 31 und 32 umfaßt, ist es notwendig, eine Matrix pro Zeile der genannten Menge von Matrizen zu lesen. Für die Zeile 1 gibt es zwei Kandidaten, die Matrix 12 und die Matrix 13. In dem Beispiel nach Fig. 5 wurde die Matrix 13 gelesen. Ihre Daten werden weitergeleitet (512) zu der Lesefunktion 524. Entweder kann die Matrix 21 oder die Matrix 23 gelesen werden, um einen Repräsentanten der Zeile 2 an die Lesefunktion 524 zu liefern. Es ist unerheblich, ob die Matrix 21 oder 23 gewählt wird, da beide in dem Sinne äquivalent sind, da sie die gleichen Daten enthalten. Dies wird klar, wenn man betrachtet, daß sie den gleichen Schreibpfad 512, 513 besitzen. In unserem Beispiel wird die Matrix 21 als ein Eingangssignal (522) für die Lesefunktion 524 gewählt. Aus den möglichen Kandidaten der Zeile 3, der Matrix 31 und der Matrix 32, wird die Matrix 31 erregt. Ihr Inhalt wird als ein drittes Eingangssignal zu der Lesefunktion 524 weitergeleitet (523). Durch Anwenden der genannten Lesefunktion 524 auf ihre drei Eingangssignale 521, 522 und 523 kann der aktuelle Inhalt der Menge von Matrizen ausgewertet werden.
In Fig. 6A und 6B ist das Konzept der Erfindung auf eine Menge von k × k-Matrizen ausgedehnt worden, was es erlaubt, k Schreibpipen, die bis zu k gleichzeitige Schreibzugriffe auf die Menge von Matrizen durchführen können, aufzunehmen. Die Matrizen der genannten Menge von Matrizen sind in k Zeilen und k Spalten angeordnet.
Fig. 6A zeigt, wie der aktuelle Inhalt der genannten Menge von Matrizen durch Zugreifen auf irgendeine Spalte der genannten Menge von Matrizen bestimmt werden kann. In dem Beispiel werden all die Inhalte der Matrizen der Spalte 3 ausgelesen und zu der Lesefunktion 601 weitergeleitet (600), die z. B. eine UNGERADE-Funktion sein kann. Die Inhalte all der Matrizen der Spalte 3 werden zu einer "Matrix" von Ausgangswerten (602) verdichtet, und auf diese Weise wird der aktuelle Inhalt der Menge von Matrizen bestimmt (603).
Fig. 6B zeigt den Fall eines Schreibzugriffes über Pipe 3 auf eine k × k -Menge von Matrizen. Ein Schreibzugriff über Pipe 3 (611) modifiziert die Inhalte der Matrizen der Zeile 3. Die Aufgabe besteht darin, zu bestimmen, welche Werte in Zeile 3 eingeschrieben werden müssen, um zu erreichen, daß der aktuelle gesamte Inhalt der Menge von Matrizen gleich dem gewünschten Resultatwert ist, der über Pipe 3 vorgegeben wird. Die Inhalte aller der Matrizen einer Spalte, die nicht Teil der Zeile 3 sind, werden zur Einrichtung 612 weitergeleitet (610). Dort werden die Inhalte der Matrizen zusammen mit dem gewünschten Resultatwert, der über Pipe 3 (611) vorgegeben wird, mittels einer Schreibfunktion verdichtet, die z. B. eine UNGERADE-Funktion sein kann. Das Ausgangssignal dieser arithmetischen Operation (613) bildet den Inhalt, der in alle die Matrizen der Zeile 3 der Menge von Matrizen zu speichern ist. Bevor die Speicheroperation tatsächlich durchgeführt wird, werden die Ausgangswerte zu einer Stufe (614) "Daten-Ein-Register und Schreibsteuerung" weitergeleitet, wo eine Prüfung vorgenommen wird, ob irgendeine andere der k Pipen einen Schreibzugriff auf die gleiche Adresse durchführt wie die Pipe unter Betrachtung. Wenn die Adressen der beiden Pipen übereinstimmen, wird geprüft, ob beide Pipen vorhaben, äquivalente Daten einzuschreiben. Wenn dies auch der Fall ist, muß einer der beiden Schreibzugriffe unterdrückt werden. Für den Fall, daß der Schreibzugriff der Pipe 3 in dem Beispiel der Fig. 6B nicht unterdrückt wird, werden die Ausgangswerte in alle Matrizen der Zeile 3 (615) eingeschrieben.
In den Fig. 7 bis 9 ist dargestellt, wie das Verfahren zum gleichzeitigen Durchführen von Schreibzugriffen auf eine Menge von Matrizen auf eine Matrix von MRU/LRU-Statusbits beim Cache-Management angewendet werden kann. Cache-Aus­ tauschalgorithmen stützen ihre Austauschstrategien auf die genannten MRU/LTU-Statusbits, die aus verschiedenen Quellen aktuallisiert werden.
In Fig. 7 ist ein assoziativer Cache mit einer Vierweggruppe dargestellt, der vier Spalten Va, Vb, Vc, und Vd umfaßt für das Festhalten der Cache-Einträge. Eine Hash-Funktion der Adresse wird für das Zugreifen auf den Cache benutzt, was bedeutet, daß eine bestimmte Zeile, die vier Eingabepositionen umfaßt, durch die genannte Hash-Funktion der Adresse spezifiziert wird.
Abhängig von dem Protokoll der Zugriffe, die auf die Eintragungen einer Zeile vorgekommen sind, kann eine Reihenfolge zwischen den Eingaben erstellt werden, abhängig von dem letzten Mal, an dem auf einen Eintrag zugegriffen wurde. Daher ist einer der vier Einträge der jüngst benutzte, abgekürzt als (MRU = Most Recently Used), Eintrag, einer ist der zweitjüngst benutzte Eintrag, ein anderer Eintrag ist der drittjüngst benutzte Eintrag und ein Eintrag ist der am längsten nicht benutzte, abgekürzt als (LRU = Least Recently Used), Eintrag. Natürlich ist die Reihenfolge für jede Zeile verschieden. Zum Beispiel ist in Zeile 700 Va der jüngst benutzte Eintrag (704), Vd ist der zweitjüngst benutzte Eintrag (705), Vb ist der drittjüngst benutzte Eintrag (706) und Vc ist der am längsten nicht benutzte Eintrag. In Zeile 701 ist Vd der jüngst benutzte Eintrag (704), Va ist der zweitjüngst benutzte Eintrag (705), Vc ist der drittjüngst benutzte Eintrag (706) und Vb ist der am längsten nicht benutzte Eintrag (707).
Immer wenn ein neuer Eintrag in eine bestimmte Zeile einzuschreiben ist, ist es notwendig, einen der vier Einträge zu löschen. Ein Cache-Austausch-Algorithmus wählt den Eintrag für das Austauschen, der am längsten nicht benutzt wurde. Daher ist der LRU-Eintrag der Eintrag, der durch einen neuen Eintrag ersetzt wird.
Die Reihenfolge der vier Cache-Einträge einer Zeile wird durch die MRU/LRU-Statusbits X1, X2, . . ., X6 angegeben. Für jedes Statusbit gibt es zwei Zustände: "GERADE" und "UNGERADE". Zum Beispiel gibt X1 an, welcher der Einträge Va und Vb jünger benutzt wurde. Wenn, wie das in Zeile 700 der Fall ist, Va jünger benutzt wurde als Vb, dann wird X1 auf "GERADE" gesetzt. Bit X2 zeigt, welcher der Einträge Va und Vc jünger benutzt wurde; es wird auf "GERADE" gesetzt, wenn Va jünger benutzt wurde als Vc (dies ist auch in Zeile 700 wahr). In Zeile 700 ist Va jünger benutzt worden als Vd, und daher wird X3 auf "GERADE" gesetzt. Das Bit X4 gibt an, ob Vb jünger benutzt wurde als Vc, und dies ist auch für Zeile 700 wahr. X5 überwacht die Beziehung zwischen Vb und Vd. In Zeile 700 ist Vd jünger benutzt als Vb und daher ist X5 auf "UNGERADE" gesetzt. Das gleiche gilt für X6, das angibt, ob Vc oder Vd jünger benutzt ist. Da Vd in Zeile 700 jünger benutzt ist, wird X6 auf "UNGERADE" gesetzt. Für die Einträge in Zeile 701, 702 und 703 sind die resultierenden MRU/LRU-Statusbits ebenso angegeben.
Fig. 8 gibt an, wie die MRU/LRU-Statusbits X1, X2, . . ., X6 geändert werden müssen, wenn auf einen Eintrag in einer der Spalten Va, Vb, Vc oder Vd des Cache zugegriffen wird.
In dem Fall, daß auf den Eintrag in Spalte Va zugegriffen wird, ist der neue Eintrag der in die Spalte Va eingeschrieben wird, der Eintrag, der jüngst benutzt wurde, da der neueste Zugriff auf den Cache auf die Spalte Va gerichtet war. Daher ist Va jünger benutzt als Vb, Vc und Vd, und daher müssen die MRU/LRU-Statusbits X1, X2, und X3 entsprechend geändert werden. Dies impliziert, daß X1 auf "GERADE" (800) gesetzt werden muß, X2 auf "GERADE" (801) gesetzt werden muß und X3 ebenfalls auf "GERADE" (802) gesetzt werden muß. Die Statusbits X4, X5 und X6 beziehen sich nicht auf Va. Statt dessen beziehen sie sich auf die relative Reihenfolge von Vb, Vc und Vd, die nicht durch einen Zugriff auf die Spalte Va geändert wurde. Daher bleiben die Statusbits X4, X5 und X6 so wie sie sind (803, 804, 805), und keine Änderungen werden an diesen Statusbits vorgenommen.
Demgemäß muß, wenn ein Zugriff auf die Spalte Vb erfolgt, X1 "UNGERADE" (806) sein, X4 muß "GERADE" (807) sein und X5 muß "GERADE" (808) sein. Alle die anderen Bits (X2, X3, X6) müssen nicht geändert werden.
In Fig. 9 ist gezeigt, wie MRU/LRU-Statusinformationen in einer Menge von zwei Matrizen, Matrix 12 und Matrix 21, enthalten sein und aktualisiert werden können. Die hier benutzte Implementierung ist identisch mit der in Fig. 3 angegebenen Implementierung.
Weder die Matrix 12 noch die Matrix 21 enthält für sich genommen gültige MRU/LRU-Statusinformationen. Gültige Statusbits können nur durch Kombinieren der Inhalte der Matrix 12 und der Matrix 21 erhalten werden. Dies wird mittels der Lesefunktion 312 durchgeführt, die eine UNGERADE-Operation mit den Inhalten der Matrix 12 und der Matrix 21 durchführt. Anfänglich enthält die Matrix 12 das Bitmuster "011000", während die Matrix 21 das Muster "001110" enthält. Das Resultat der UNGERADE-Funktion ist "010110" (900). Dies entspricht dem MRU/LRU-Muster Vc, Va, Vd, Vb (901).
Das System besitzt zwei Schreibpipen. Im Zyklus 55 erfolgt ein Schreibzugriff auf Vd über die Pipe 1. Nach Fig. 8 bedeutet dies, daß X3 auf "UNGERADE" (812) geändert werden muß, X5 auf "UNGERADE" (813) geändert werden muß und X6 auf "UNGERADE" (814) auch geändert werden muß. Daher werden in einem ersten Schritt die Bits X3, X5 und X6 aus der Matrix 21 ausgelesen. Als nächstes werden die Werte dieser Bits invertiert (812, 813, 814) und zur Matrix 12 weitergeleitet. Die anderen Bits, Bit X1, X2 und X4 der Matrix 12 bleiben ungeändert. Wenn die neuen Inhalte der Matrix 12 und der Matrix 21 einer Exklusiv-ODER-Verknüpfung unterworfen werden, ergibt sich das Bitmuster "011111" (902), das die folgende Reihenfolge der Einträge: Vde Vc-Va-Vb" (903) darstellt. Dies bedeutet, daß das Verfahren beim Angeben von Vd als dem jüngst benutzten Eintrag erfolgreich war.
Im Zyklus 56 greift Pipe 1 auf Vb zu und Pipe 2 greift auf Vc zu. Die Bits X1, X4 und X5 der Matrix 21 werden gemäß Fig. 8 modifiziert und in die Matrix 12 eingeschrieben. Die Bits X2, X4 und X6 der Matrix 12 werden auch gemäß Fig. 8 modifiziert und in die Matrix 21 eingeschrieben. Alle anderen Bits (Bits X2, X3 und X6 der Matrix 12 und die Bits X1, X3 und X5 der Matrix 21) bleiben ungeändert. Nach dem Durchführen der UNGERADE-Funktion mit den neuen Inhalten der Matrix 12 und der Matrix 21 ergibt sich das Bitmuster "1110002" (904), das die Eintragsfolge "Vb-Vc-Vd-Va" (905) darstellt. Daher sind beide Schreibzugriffe auf Vb und Vc korrekt gespeichert worden.

Claims (23)

1. Eine Menge von Speichern, umfassend Mittel zum Lesen der Inhalte einer Teilmenge A der Menge der Speicher,
Mittel zum Einschreiben einer Menge von Werten in eine Teilmenge B der Menge der Speicher,
wobei die genannte Teilmenge A der Menge der Speicher und die genannte Teilmenge B der Menge der Speicher keinen Speicher gemeinsam haben,
Mittel zum Bestimmen durch Anwenden einer Schreibfunktion auf die genannten Inhalte der genannten Teilmenge A der Menge der Speicher und auf eine erste Menge von Werten, die in der Menge der Speicher enthalten sein muß, einer zweiten Menge von Werten, die in die genannte Teilmenge B der Menge von Speichern einzuschreiben ist,
Mittel zum Lesen der Inhalte einer Teilmenge C der Menge der Speicher,
wobei die genannte Teilmenge A der Menge der Speicher und die genannte Teilmenge C der Menge der Speicher zumindest einen Speicher gemeinsam haben,
und die genannte Teilmenge B der Menge der Speicher und die genannte Teilmenge C der Menge der Speicher zumindest einen Speicher gemeinsam haben,
Mittel zum Bestimmen durch Anwenden einer Lesefunktion auf die genannten Inhalte der genannten Teilmenge C der Menge der Speicher die Menge der Werte, die aktuell in der Menge der Speicher enthalten ist.
2. Ein Menge von Speichern gemäß Anspruch 1, weiter gekennzeichnet dadurch, daß die genannte Schreibfunktion eine UNGERADE-Funktion ist.
3. Eine Menge von Speichern gemäß Anspruch 1, weiter dadurch gekennzeichnet, daß die genannte Lesefunktion eine UNGERADE-Funktion ist.
4. Eine Menge von Speichern gemäß Anspruch 2 oder 3, weiter dadurch gekennzeichnet, daß die genannte UNGERADE-Funktion als eine Kaskade von Exklusiv-ODER-Gliedern implementiert ist.
5. Eine Menge von Speichern nach den Ansprüchen 1 bis 4, weiter dadurch gekennzeichnet, daß die genannten Teilmengen A und B der Menge von Speichern danach bestimmt werden, welche der genannten Schreibpipen auf die Menge der Speicher zugreift.
6. Eine Menge von Speichern gemäß Anspruch 4 oder 5, weiter dadurch gekennzeichnet, daß
die Menge der Speicher k Zeilen von k Speichern aufweist und k Spalten von k Speichern
und in dem Fall, daß Schreibpipe i auf die Menge der Speicher zugreift,
die genannte Teilmenge A der Menge der Speicher alle Speicher umfaßt, die in Spalte i der Menge von Speichern enthalten sind, mit Ausnahme des Speichers, der sowohl in Spalte i als auch in Zeile i enthalten ist,
die genannte Teilmenge B der Menge von Speichern alle Speicher umfaßt, die in Zeile i der Menge von Speichern enthalten sind,
wobei die genannte Teilmenge C der Menge von Speichern alle Speicher umfaßt, die in Spalte i der Menge von Speichern enthalten sind.
7. Eine Menge von Speichern gemäß irgendeinem der vorhergehenden Ansprüche, weiter dadurch gekennzeichnet, daß jeder der genannten Speicher zumindest einen Schreibanschluß und zumindest einen Leseanschluß aufweist.
8. Eine Menge von Speichern gemäß irgendeinem der vorhergehenden Ansprüche, weiter dadurch gekennzeichnet, daß jeder der genannten Speicher eine Matrix von Speicherzellen ist.
9. Eine Menge von Speichern gemäß irgendeinem der vorhergehenden Ansprüche, weiter dadurch gekennzeichnet, daß die Menge der Werte, die in der Menge von Speichern enthalten ist, Statusinformationen sind.
10. Eine Menge von Speichern gemäß irgendeinem der vorherge­ henden Ansprüche, weiter dadurch gekennzeichnet, daß die Menge der Werte, die in der Menge der Speicher enthalten ist, MRU/LRU-Statusinformationen sind.
11. Verfahren zum Speichern von Daten in einer Menge von Speichern, umfassend die Schritte des
Lesens der Inhalte aus einer Teilmenge A der Menge von Speichern,
Anlegens einer Schreibfunktion an die genannten Inhalte der genannten Teilmenge A der Menge von Speichern und an eine erste Menge von Werten, die in der Menge von Speichern enthalten sein muß, um als ein Ausgangssignal der genannten Schreibfunktion eine zweite Menge von Werten zu bestimmen, die in eine Teilmenge B der Menge von Speichern einzuschreiben ist,
wobei die genannte Teilmenge A der Menge von Speichern und die genannte Teilmenge B der Menge von Speichern keinen Speicher gemeinsam haben,
Schreibens der Menge von Werten in die genannte Teilmenge B der Menge von Speichern.
12. Verfahren zum Abrufen von Daten aus einer Menge von Speichern, umfassend die Schritte des
Lesens der Inhalte aus einer Teilmenge C der Menge von Speichern,
Anwendens einer Lesefunktion auf die Inhalte der genannten Teilmenge C der Menge von Speichern, um die Menge von Werten zu bestimmen, die aktuell in der Menge von Speichern enthalten ist.
13. Verfahren nach Anspruch 11, weiter dadurch gekennzeichnet, daß die genannte Schreibfunktion eine UNGERADE-Funktion ist.
14. Verfahren gemäß Anspruch 13, weiter dadurch gekennzeichnet, daß die genannte UNGERADE-Funktion als eine Kaskade von Exklusiv-ODER-Gliedern implementiert ist.
15. Verfahren gemäß Anspruch 12, weiter dadurch gekennzeichnet, daß die genannte Lesefunktion eine UNGERADE-Funktion ist.
16. Verfahren gemäß Anspruch 15, weiter dadurch gekennzeichnet, daß die genannte UNGERADE-Funktion als eine Kaskade von Exklusiv-ODER-Gliedern implementiert ist.
17. Verfahren gemäß irgendeinem der Ansprüche 11 bis 16, weiter umfassend mehr als eine Schreibpipe zum Durchführen von Schreibzugriffen, wobei mehr als ein Schreibzugriff gleichzeitig über verschiedene Schreibpipen vorkommen kann.
18. Verfahren gemäß Anspruch 17, weiter dadurch gekennzeichnet, daß die genannten Teilmengen A und B der Menge von Speichern danach bestimmt werden, welche der genannten Schreibpipen auf die Menge der Speicher zugreift.
19. Verfahren gemäß irgendeinem der Ansprüche 17 oder 18, weiter dadurch gekennzeichnet, daß
die Menge der Speicher k Zeilen von k Speichern aufweist und k Spalten von k Speichern und in dem Fall, daß die Schreibpipe i auf die Menge der Speicher zugreift,
die genannte Teilmenge A der Menge von Speichern alle Speicher umfaßt, die in Spalte i der Menge von Speichern enthalten sind mit Ausnahme des Speichers, der sowohl in Spalte i und Zeile i enthalten ist,
die genannte Teilmenge B der Menge von Speichern alle Speicher umfaßt, die in Zeile i der Menge von Speichern enthalten sind,
die genannte Teilmenge C der Menge von Speichern alle Speicher umfaßt, die in Spalte i der Menge von Speichern enthalten sind.
20. Verfahren gemäß irgendeinem der Ansprüche 11 bis 19, weiter dadurch gekennzeichnet, daß jeder der genannten Speicher zumindest einen Schreibanschluß und zumindest einen Leseanschluß umfaßt.
21. Verfahren gemäß irgendeinem der Ansprüche 11 bis 20, weiter dadurch gekennzeichnet, daß jeder der genannten Speicher eine Matrix von Speicherzellen ist.
22. Verfahren gemäß irgendeinem der Ansprüche 11 bis 21, weiter dadurch gekennzeichnet, daß die Menge der Werte, die in der Menge von Speichern enthalten sind, Statusinformationen sind.
23. Verfahren gemäß irgendeinem der Ansprüche 11 bis 22, weiter dadurch gekennzeichnet, daß die Menge der Werte, die in der Menge von Speichern enthalten ist, MRU/LRU-Statusinformationen sind.
DE19821581A 1997-06-27 1998-05-14 Speichermatrix, die mehrfache, gleichzeitige Schreibzugriffe zuläßt Withdrawn DE19821581A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP97110556 1997-06-27

Publications (1)

Publication Number Publication Date
DE19821581A1 true DE19821581A1 (de) 1999-01-07

Family

ID=8226967

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19821581A Withdrawn DE19821581A1 (de) 1997-06-27 1998-05-14 Speichermatrix, die mehrfache, gleichzeitige Schreibzugriffe zuläßt

Country Status (3)

Country Link
US (1) US6032233A (de)
KR (1) KR100322718B1 (de)
DE (1) DE19821581A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6490654B2 (en) * 1998-07-31 2002-12-03 Hewlett-Packard Company Method and apparatus for replacing cache lines in a cache memory

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4322795A (en) * 1980-01-24 1982-03-30 Honeywell Information Systems Inc. Cache memory utilizing selective clearing and least recently used updating
US5471605A (en) * 1992-08-27 1995-11-28 Intel Corporation Apparatus for updating a multi-way set associative cache memory status array
US5611072A (en) * 1993-10-12 1997-03-11 Texas Instruments Incorporated Cache with an extended single cycle read/write system and method

Also Published As

Publication number Publication date
KR19990006439A (ko) 1999-01-25
US6032233A (en) 2000-02-29
KR100322718B1 (ko) 2002-03-08

Similar Documents

Publication Publication Date Title
DE2350225C2 (de)
DE2550339C2 (de) Speichersystem mit einem langsam arbeitenden Hauptspeicher großer Kapazität und mit zumindest einem schnell arbeitenden Pufferspeicher geringer Kapazität
DE69814579T2 (de) Parallel arbeitende exklusiv-oder-einheit
DE2515696C2 (de) Datenverarbeitungssystem
DE3932474C2 (de) Plattenzugriff-Steuerverfahren
DE4206286C2 (de) Speicherzugriffssystem und Verfahren zum Ausgeben eines digitalen Datenstromes
EP0013737A1 (de) Mehrstufige Speicherhierarchie für ein Datenverarbeitungssystem
DE2617408A1 (de) Datenverarbeitungsgeraet
DE2350215A1 (de) Rechnersystem sowie bei diesem verwendbares mehrebenen-speichersystem
DE2364408A1 (de) System zur erstellung von schaltungsanordnungen aus hochintegrierten chips
DE3131341A1 (de) "pufferspeicherorganisation"
DE3015875A1 (de) Speicherzugriffssystem und verfahren fuer einen zugriff zu einem digitalen speichersystem
DE2310631B2 (de) Speicherhierarchie fur ein Datenverarbeitungssystem
DE2062228A1 (de) Datenverarbeitungssystem mit gleich zeitigem Zugriff auf mehrere Speicher stellen
DE3046912C2 (de) Schaltungsanordnung zum selektiven Löschen von Cachespeichern in einer Multiprozessor-Datenverarbeitungsanlage
DE69432512T2 (de) Für fensterumgebungsoperationen entworfenes rasterpuffersystem
DE3618136A1 (de) Abwechselnd adressierte halbleiterspeichergruppe
DE3013064C2 (de) Schaltungsanordnung zur Übertragung von Bitgruppen zwischen einer von mehreren peripheren Einheiten und einem Pufferspeicher
DE4114053A1 (de) Computersystem mit cachespeicher
DE102007055138B4 (de) System zum Zugreifen auf einen Einzelport-Mehrwege-Cache
EP0009625B1 (de) Datentransferschalter mit assoziativer Adressauswahl in einem virtuellen Speicher
DE10105627B4 (de) Mehrfachanschlussspeichereinrichtung, Verfahren und System zum Betrieb einer Mehrfachanschlussspeichereinrichtung
DE602004012923T2 (de) Wortweise programmierbarer Flash-Speicher
EP0265636A1 (de) Multiprozessor mit mehreren mit Cache-Speichern ausgerüsteten Prozessoren und einem gemeinsamen Speicher
CH495584A (de) Datenverarbeitungsanlage

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8139 Disposal/non-payment of the annual fee