DE4306077A1 - - Google Patents

Info

Publication number
DE4306077A1
DE4306077A1 DE4306077A DE4306077A DE4306077A1 DE 4306077 A1 DE4306077 A1 DE 4306077A1 DE 4306077 A DE4306077 A DE 4306077A DE 4306077 A DE4306077 A DE 4306077A DE 4306077 A1 DE4306077 A1 DE 4306077A1
Authority
DE
Germany
Prior art keywords
cache
data
primary
memory
secondary cache
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
DE4306077A
Other languages
English (en)
Inventor
Rajendra Kumar
Paul G Emerson
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE4306077A1 publication Critical patent/DE4306077A1/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
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch

Description

Die vorliegende Erfindung betrifft allgemein elektronische Cache-Speicherschaltungsarchitekturen und Cache-Verarbei­ tungsverfahren. Genauer gesagt befaßt sich die Erfindung mit Cache-Speicherarchitekturen und Befehls -Cache-Architekturen für hochintegrierte Schaltungen (VLSI-Schaltungen), bei denen ein sekundärer Cache-Speicher neben dem primären Cache-Speicher aufgebaut ist, welcher im Falle einer Daten­ fehlmeldung (miss) von dem primären Cache-Speicher abgefragt wird.
Allgemein arbeiten integrierte RAM-Schaltungen (integrierte Speicherschaltungen für wahlfreien Zugriff) weitaus lang­ samer als heutige Mikroprozessoren. Die Konstrukteure von Mikroprozessoren haben entdeckt, daß die langsamen RAM-Zu­ griffszeiten eine erhebliche Begrenzung für die Erhöhung der Prozessordurchgangsleistung und die Erhöhung der Geschwin­ digkeit der Programmausführung darstellen. Beispielsweise können heutige RISC-Mikroprozessoren (Computer mit reduzier­ tem Befehlssatz) bei einer Taktfrequenz von 20 MHz oder mehr arbeiten, so daß theoretisch 20 Millionen Befehle pro Sekun­ de ausgeführt werden können. Jedoch beträgt die typische RAM-Zykluszeit (Antwortzeit) etwa 150 Nanosekunden. Wenn daher ein Mikroprozessor einen neuen Datenwert oder einen neuen Befehl aus einem RAM auslesen muß, können mehrere oder viele Mikroprozessor-Zyklen vergeudet werden, während denen der Mikroprozessor auf eine Reaktion oder eine Antwort des RAM wartet.
Um diese Engstelle zu umgehen, verwenden Mikrocomputer und Mikroprozessoren Cache-Speicher zur Verbesserung der Spei­ cherzugriffszeit. Die allgemeine Definition eines Cache- Speichers ist diejenige eines schnellen Pufferspeichers mit einer vergleichsweisen geringen Speicherkapazität für einen langsameren Hauptspeicher mit einer im Vergleich hierzu großen Speicherkapazität. Ein Cache-Speicher ähnelt einem virtuellen Speicher dahingehend, daß ein Hochgeschwindig­ keits-Cache-Speicher eine verdoppelte Kopie eines aktiven Bereiches eines langsamen RAM speichert. Typischerweise ist der Cache-Speicher auf dem Mikroprozessor-Chip angeordnet, so daß die Zugriffszeit viermal so schnell bis zwanzigmal so schnell wie die Zugriffszeit auf den Hauptspeicher ist.
Wenn während der Operation eine Speicheranforderung durch den Mikroprozessor erzeugt wird, wird diese Speicheranforde­ rung dem Cache-Speicher präsentiert. Falls der Cache-Spei­ cher hierauf nicht antwortet, wird die Anforderung dem Hauptspeicher präsentiert. Wenn der Mikroprozessor versucht, auf einen Posten bzw. auf Daten zuzugreifen, welche sich nicht in dem Cache-Speicher befinden, jedoch in dem Haupt­ speicher vorliegen, tritt eine sog. "Cache-Datenfehlmeldung" (Cache-miss) auf. In Reaktion auf die Cache-Datenfehlmeldung wird der Cache-Speicher durch Laden der benötigten Daten von dem Hauptspeicher in den Cache-Speicher auf den neuesten Stand gebracht. Die Daten werden dann von dem Cache-Speicher zu dem Mikroprozessor zugeführt. Diejenige Zeile eines Cache-Speichers, die nicht die gewünschten Daten oder den gewünschten Befehl enthält, wird als sog. "Opfer"-Zeile be­ zeichnet.
Die Zeit zum auf den neuesten Stand bringen des Status eines Cache-Speichers im Falle einer Datenfehlmeldung ist winzig. Daher werden Cache-Speicher durch eine Hardware gesteuert, welche die Cache-Datenfehlmeldungen innerhalb der erforder­ lichen Zeit automatisch verarbeiten kann. Unglücklicherweise erfordert bei bekannten Schaltungen jede Cache-Datenfehlmel­ dung das auf den neuesten Stand bringen des Cache-Speichers durch einen Zugriff auf den Hauptspeicher, wodurch in einem erheblichen Umfang die Mikroprozessor-Durchgangsleistung ge­ senkt wird.
Ausgehend von diesem Stand der Technik ist es daher die Zielsetzung der vorliegenden Erfindung, die Mikroprozessor­ leistung zu erhöhen, indem die Anzahl von Hauptspeicherzu­ griffe vermindert wird, die nach einer Cache-Datenfehlmel­ dung auftreten.
Cache-Speicher sind gemäß einem der nachfolgenden drei Haupttypen aufgebaut: direkt abbildende Typen (direct-map­ ped), Satz-Assoziative Typen (set-associated) und vollstän­ dig assoziative Typen (fully associative). Details dieser drei Cache-Speichertypen sind in den nachfolgend zitierten Entgegenhaltungen beschrieben, deren Offenbarungsgehalt durch diese Querbezugsnahme zum Offenbarungsgehalt der vor­ liegenden Anmeldung gemacht wird:
De Blasi, "Computer Architecture", ISBN 0-201-41603-4 (Addison-Wesley, 1990), Seiten 273-291; Stone, "High Performance Computer Architecture, "ISBN 0-201-51377-3 (Addison-Wesley, 2d Ed. 1990), Seiten 29-39; Tabak, "Advanced Microprocessors," ISBN 0-07-062807-6 (McGraw-Hill, 1991) Seiten 244-248. Der Inhalt dieser Entgegenhaltungen gehört zu dem typischen Fachwissen von Fachleuten auf dem vorliegenden Technikgebiet.
Bei sämtlichen dieser drei Typen von Cache-Speichern wird eine Eingangsadresse an eine Vergleichslogik angelegt. Daraufhin wird ein Teilsatz der Adressen, die sog. Markie­ rungsbits (tag Bits) aus der Eingangsadresse herausgezogen und mit Markierungsbits eines jeden Cache-Speichereintrags verglichen. Falls die Markierungsbits zusammenpassen, werden die entsprechenden Daten aus dem Cache-Speicher herausge­ holt. Die allgemeine Struktur und Verarbeitung eines Di­ rektabbildungs-Cache-Speichers ist in Fig. 1 gezeigt. Der Direktabbildungs-Cache-Speicher umfaßt einen Cache-Speicher 10, der als eine Tabelle mit einer Mehrzahl von Markierungen 12 und Datenelementen 14 implementiert werden kann. Ein Zu­ griff auf die Markierungen und die Daten erfolgt paarweise. Eine Eingangsadresse 20 wird von einem Mikroprozessor zu einer Adreßdekodierungsschaltung 30 zugeführt, welche die Markierungsbits von der Eingangsadresse 20 abtrennt. Die Markierungsbits werden dann als erstes Eingangssignal 42 einem Komparator zugeführt. Der Komparator 40 empfängt ein zweites Eingangssignal 44, welches Markierungsbits von dem Cache-Speicher 10 an einem Ort umfaßt, auf die durch die Bits der niedrigeren Ordnung der Eingangsadresse gezeigt wird. Daher zeigen die niederwertigen Eingangsadreßbits (die Eingangsadreßbits der niedrigeren Ordnung) auf eine einzig­ artige Markierung innerhalb des Cache-Speichers. Falls durch den Komparator 40 eine Übereinstimmung ermittelt wird, ak­ tiviert (oder "bestätigt") der Komparator seinen Trefferaus­ gang 60, wodurch die Datenauswahlschaltung 70 dazu veranlaßt wird, ein Datenelement 14 aus dem Cache-Speicher auszulesen. Da die Markierungen und die Datenelemente paarweise angeord­ net sind, empfängt die Datenauswahlschaltung Datenelemente entsprechend der passenden Markierungen. Die ausgewählten Daten werden dann als Ausgangssignal 80 von dem Cache-Spei­ cher zu dem Mikroprozessor zur weiteren Verarbeitung zuge­ führt.
Falls keine Übereinstimmung zwischen dem ersten Eingangs­ signal 42 und dem Ort innerhalb des Cache-Speichers, auf den durch die Bits der Eingangsadresse mit der niedrigeren Ord­ nung gezeigt wird, gefunden werden kann, aktiviert der Kom­ parator sein Datenfehlausgangssignal 50. Hierdurch wird die Datenfehlverarbeitung (welche durch den Block 55 dargestellt ist) getriggert, welche bei den meisten Schaltungen den Hauptspeicherzugriff anfordert.
Allgemein liefern Direktabbildungs-Cache-Speicher den schnellsten Zugriff, jedoch erfordern diese die größte Zeit für den Vergleich der Markierungsbits. Vollständig assozia­ tive Cache-Speicher liefern einen schnelleren Vergleich, jedoch beanspruchen diese eine höhere Leistung und eine komplexere Schaltung.
Beim Stand der Technik sind Cache-Speicher anfällig für das sog. "Durchgehen". Das Durchgehen des Speichers tritt auf, wenn der Mikroprozessor wiederholt einen gewünschten Daten­ posten sucht, diesen nicht findet und den Cache-Speicher mit diesem Posten auf den neuesten Stand bringt und später diese Zeile mit einem unterschiedlichen Posten ersetzt. Hierdurch kommt es zu einem Zyklus von wiederholten Cache-Datenfehl­ meldungen für den gleichen Datenposten bzw. dieselbe Date.
Um das Durchgehen des Speichers zu verhindern, bedient man sich üblicherweise eines großen Satz-assoziativen Cache- Speichers. Jedoch haben derartige Cache-Speicher mehrere Nachteile. Zunächst tritt das Lesen und das Schreiben be­ züglich des Cache-Speichers in separaten Maschinenzyklen auf, welche nach sämtlichen Cache-Markierungs-Vergleichs­ operationen ausgeführt werden, wodurch die Cache-Speicher­ zugriffszeit erhöht wird. Hierdurch wird gleichfalls die Mikroprozessorleistungsfähigkeit durch Verlängerung der Maschinenzykluszeit oder durch das Erfordernis von Verzöge­ rungszyklen vermindert. Ferner steigt die Verlustleistung innerhalb des Cache-Speichers bedeutend an, da im Falle eines Satz-assoziativen Cache-Speichers mit n-Wegen n-mal so viele Worte gelesen werden müssen, bevor eine Auswahl durch­ geführt wird, für ein gegebenes Wort aufgrund von Markie­ rungsvergleichen. Drittens ist die Cache-Operation in hohem Maße anfällig für Schaltungsschaltrauschen, wenn viele Lese­ verstärker gleichzeitig triggern. Diese Anfälligkeit ist bei Maschinen mit Wortgrößen von 32 Bit oder mehr sowie bei Maschinen mit Cache-Speichern mit vielen Toren, bei denen viele Worte gleichzeitig durch eine Mehrzahl von Cache-Toren gelesen werden können, bedeutsam.
Daher ist es eine Zielsetzung der vorliegenden Erfindung, einen Cache-Speicher zu schaffen, bei dem das Durchgehen vermieden wird, ohne daß eine Satz-assoziative Implementie­ rung verwendet wird.
Ein Wissenschaftler hat bereits die Verwendung eines Opfer- Cache-Speichers oder eines Datenfehler-Cache-Speichers als eine Hilfsposition für einen primären Direktabbildungs-Ca­ che-Speicher diskutiert. Eine Definition der Schaltungs­ architektur von sekundären Cache-Speichern (die als "Opfer-/Datenfehlmeldungs-Cache-Speicher" bezeichnet wer­ den), um das Durchgehen zu vermeiden und um das Trefferver­ hältnis zu verbessern, ist offenbart in folgender Fachver­ öffentlichung: N. Jouppi, "Improving Direct-Mapped Cache Performance by the Addition of a Small Fully-Associative Cache and Prefetch Buffers," Proceedings of the 17th Annual Int'l Symposium on Computer Architecture, IEEE Computer Society Press, Mai 1990, Seiten 364-373, wobei der Offen­ barungsgehalt dieser Schrift wiederum durch Bezugnahme zum Offenbarungsgehalt der vorliegenden Anmeldung gemacht wird. Jedoch fehlt es in dieser Schrift an einer Lehre bezüglich der VLSI-Implementierung der sekundären Cache-Speicher, an einer Offenbarung bezüglich der Integration der primären und der sekundären Cache-Speicher unter Verwendung von geteilten Bit-Leitungen, Leseverstärkern und einer geteilten Bus- Schnittstellenlogik.
In der Vergangenheit wurden Cache-Speicher gleichfalls zum Cache-Speichern oder Puffern von Befehlen anstatt von Daten verwendet. Bei einem derartigen Stand der Technik wurden Be­ fehls-Cache-Speicher, Befehls-Puffer und Verzweigungsziel­ puffer entweder auf getrennten Chips implementiert oder als getrennte Module innerhalb eines einzigen Chips implemen­ tiert. Unglücklicherweise erfordern diese bekannten Lösungs­ ansätze eine umfangreiche Bus-Schaltung zur Verbindung der Chips oder der Module. Dieses erfordert mehr Platz bzw. eine höhere Schaltungsfläche (entweder in Form von Platinenraum oder in Form von Siliziumfläche), wodurch die Systemkosten ansteigen. Ferner steigt die Cache-Zugriffszeit in einem erheblichen Ausmaß als Ergebnis des Bedarfs an Ausbreitung von Signalen durch zusätzliche Gatter und Puffer an.
Die vorliegende Erfindung liefert ein effektives Cache- Speichersystem mit einem sekundären Cache-Speicher, welcher mit einem primären Direktabbildungs-Cache-Speicher inte­ griert ist. Durch die Verwendung eines sekundären Cache- Speichers wird das Durchgehen vermieden, das Trefferver­ hältnis verbessert, während die innewohnende Effektivität oder inhärente Effektivität eines Direktabbildungs-Cache- Speichers beibehalten wird. Gemäß der Erfindung ist der sekundäre Cache-Speicher mit einem Direktabbildungs-Cache Speicher in einer einzigen Struktur vorzugsweise auf einem VLSI-Chip aufgebaut. Der sekundäre Cache-Speicher ist in einen Direktabbildungs-Cache-Speicher eingebettet und ver­ wendet die gleichen Bit-Leitungen, die gleichen Lesever­ stärker und die gleichen Bustreiber wie der Direktabbil­ dungs-Cache-Speicher. Die Eingangsadreßmarkierungen werden gleichzeitig mit den Markierungsbits in dem primären Cache- Speicher sowie in dem sekundären Cache-Speicher verglichen. Falls dieser Vergleich einen Datenfehler in dem primären Cache-Speicher und einen Treffer in dem sekundären Cache- Speicher liefert, werden die sekundären Cache-Speicher-Daten dem Mikroprozessor bei dem nächsten Maschinenzyklus zuge­ führt, wodurch ein Hauptspeicherzugriff unnötig wird. Die Erfindung ermöglicht ein direktes Lesen von Daten von dem zweiten Cache-Speicher ohne Verwendung eines zusätzlichen Maschinenzyklus, um Daten zuerst in den Direktabbildungs- Cache-Speicher zu laden. Vorzugsweise wird die Erfindung in einem einzigen VLSI-Chip implementiert. Mit anderen Worten umfaßt der sekundäre Cache-Speicher einen Datenfehler-Ca­ che-Speicher, der von dem Hauptspeicher mit Daten geladen wird, welche nicht in einer Anforderung oder Anfrage an den primären Cache-Speicher gefunden werden.
Bei einem alternativen Ausführungsbeispiel umfaßt der sekun­ däre Cache-Speicher einen Opfer-Speicher, welcher mit der Opfer-Zeile des primären Cache-Speichers geladen wird. Eine Opfer-Zeile des primären Cache-Speichers ist eine Zeile, die nach dem Laden fehlender Daten von dem Hauptspeicher in den primären Cache-Speicher ersetzt wird.
Bei einem anderen abweichenden Ausführungsbeispiel schafft die Erfindung einen Befehls-Cache-Speicher mit einem 2-stu­ figen Vorweghol-Mechanismus, der eine Wirksame Verarbeitung von Verzweigungs-Befehlen ermöglicht, ohne daß ein Zugriff auf den Hauptspeicher erforderlich ist, um die Befehle bei dem Verzweigungsziel zu laden.
Bevorzugte Ausführungsbeispiele der Erfindung werden nachfolgend unter Bezugnahme auf die beiliegenden Zeich­ nungen näher erläutert. Es zeigen:
Fig. 1 ein Blockdiagramm von Elementen bei einem bekannten Direktabbildungs-Cache-Speicher;
Fig. 2 ein Blockdiagramm von Elementen eines integrierten Direktabbildungs-Primär-Cache-Speicher und voll­ ständig assoziativen sekundären Cache-Speicher- System gemäß der vorliegenden Erfindung;
Fig. 3 ein detaillierteres Strukturdiagramm des primären und sekundären Cache-Speichers gemäß Fig. 2;
Fig. 4 ein Blockdiagramm einer abweichenden Ausführungs­ form gemäß Fig. 2 in der Organisationsform eines Befehls-Cache-Speichers; und
Fig. 5 ein detaillierteres strukturelles Diagramm einer Mehrzahl von Scheiben des Befehls-Cache-Speichers gemäß Fig. 4.
Die nachfolgende detaillierte Beschreibung der bevorzugten Ausführungsbeispiele verwendet eine sehr spezielle Termino­ logie aus Gründen der Klarheit. Jedoch ist die Erfindung nicht auf die speziellen verwendeten technischen Begriffe beschränkt, sondern umfaßt sämtliche technische Äquivalente, die in einer im wesentlichen ähnlichen Art zur Erreichung im wesentlichen ähnlicher Ziele arbeiten.
Ein Blockdiagramm eines Ausführungsbeispieles der Erfindung in Form eines Daten-Cache-Speichers ist in Fig. 2 darge­ stellt. Dieses Diagramm zeigt eine mögliche "Grundrißdar­ stellung" der Anordnung der Elemente gemäß der Erfindung auf einem Halbleiterwafer oder Halbleiterchip. Ein primärer Cache-Datenspeicher 100 bildet das Herz des Systems. Der primäre Datenspeicher 100 besteht vorzugsweise aus konven­ tionellen statischen RAM-Zellen (SRAM-Zellen), die in Form eines zweidimensionalen Feldes angeordnet sind. Eine Achse des Feldes umfaßt eine Mehrzahl von Datenbitleitungen 112, die jeweils mit einer Busschnittstellenlogik 150 verbunden ist, welche ihrerseits mit einem Datenbus 160 des Mikro­ prozessors verbunden ist. Wie dies an sich im Stand der Technik bekannt ist, umfaßt die Schnittstellenlogik 150 Leseverstärker zum Lesen der Inhalte des Speichers 100, eine Schreiblogik zum Senden von Schreibsignalen an Zellen des Speichers 100, Bustreiber und Datentreiber zum Puffern und Verstärken der Ausgangssignale von dem Speicher an den Datenbus 160. Die Komponenten der Schnittstellenschaltung 150 sind an sich im Stand der Technik bekannt.
Der primäre Cache-Speicher ist als Direktabbildungs-Cache- Speicher (Direct-Mapped-Cache) ausgebildet, auf den zugegriffen wird, indem eine Adresse 116 der Adreßdekoder­ logik 140 zugeführt wird. Wie oben unter Bezugnahme auf Fig. 1 diskutiert worden ist, liefert die Dekoderlogik nieder­ wertige Adreßbits an den primären Speicher 100 und Markie­ rungsadreßbits an die Komparatoren innerhalb der Schnitt­ stellenschaltung 150. Jedoch umfaßt das Ausführungsbeispiel gemäß Fig. 2 gleichfalls einen sekundären Cache-Speicher 110, der oberhalb oder neben dem primären Speicher 100 auf­ gebaut ist. Vorzugsweise ist der sekundäre Cache-Speicher als ein kleiner Voll-assoziativer Puffer aufgebaut, welcher vorzugsweise vier bis acht Zeilen speichern kann. Selbst­ verständlich kann die Anzahl der Zeilen des sekundären Cache-Speichers in Abhängigkeit von dem Anwendungsfall variiert werden. Die Speicherzellen des sekundären Cache- Speichers sind vorzugsweise bezüglich ihrer Struktur zu den Zellen des primären Cache-Speichers identisch. Ein voll­ ständig assoziativer Komparator 120 oder eine Vergleichs­ logik ist mit den Speicherzellen des sekundären Cache-Spei­ chers mittels einer Mehrzahl von Übereinstimmungs-Leitungen gekoppelt, welche durch den Pfeil 122 dargestellt sind. In einem ersten Verarbeitungszyklus verwendet die Vergleichs­ logik CAM-Zellen (CAM = conent addressable memory = In­ halts-adressierbarer Speicher) zum Vergleich der virtuellen oder physikalischen eingangsseitigen Adresse 124 mit den in jeder CAM-Zelle gespeicherten Adresse. Falls eine Überein­ stimmung besteht, wird die Übereinstimmungsleitung für den entsprechenden Eintrag aktiviert. Wenn daraufhin der Direkt­ abbildungs-Cache-Speicher 100 eine Datenfehlmeldung abgibt, wird bei einem zweiten Maschinenzyklus des Systems ein Datenfehleingang 118, der mit dem sekundären Cache-Speicher gekoppelt ist, aktiviert. Dies bewirkt, daß die Überein­ stimmungsleitung des sekundären Cache-Speichers eine Wort­ leitung (nicht dargestellt) des sekundären Cache-Speichers treibt, wodurch es zu einer Datenausgabe von dem sekundären Cache-Speicher kommt. Ausgangsdaten von dem sekundären Cache-Speicher werden auf die Bit-Leitungen 112 gesetzt und daraufhin auf den Datenbus 160 übertragen, indem die gleiche Lese-Busschnittstellenlogik 150 verwendet wird, welche ver­ wendet worden ist, wenn ein Treffer innerhalb des Direkt­ abbildungs-Cache-Speichers auftrat.
Fig. 3 zeigt die logische Verknüpfung der Elemente gemäß Fig. 2. In Fig. 3 sind der sekundäre Cache-Speicher 110 und der primäre Cache-Speicher bzw. Direktabbildungs-Cache-Spei­ cher 100 jeweils mit einem einzigen Adreßeingang 124 ver­ bunden. Nach dem Dekodieren durch einen Adreßdekoder (nicht dargestellt) hat die dekodierte Adresse drei logische Kom­ ponenten: die Markierungsbits 302; eine Zeilenzahl 304 und einen Verschiebungswert 306. Der Direktabbildungs-Cache- Speicher 100 hat eine Markierungsliste 330 und eine Mehrzahl von Datenleitungen 332. Die Markierungsbits des Adreßein­ ganges werden über eine Leitung 302A einem Komparator 336 zugeführt. Die Zeilenzahl wird auf eine Leitung 304A zu der Markierungsliste gegeben. Wie dies an sich im Stand der Technik bekannt ist, ist es bei einem Direktabbildungs- Cache-Speicher mit dieser Struktur möglich, daß die Zeilen­ zahl eine diskrete Markierung 334 aus der Markierungsliste auswählt. Diese diskrete Markierung wird dem Komparator zu­ geführt. Falls eine Übereinstimmung zwischen der diskreten Markierung und den Markierungsbits besteht, triggert der Komparator eine Auswahlschaltung 338, um einen Datenposten 340 von einer der Datenleitungen 332 aufzunehmen. Der Daten­ posten kann unter Verwendung des Verschiebungswertes 306 als ein Versatz von dem Beginn der ausgewählten Zeile ausgewählt werden. Der Datenposten wird dann auf eine Datenausgangs­ leitung 342 zur Übertragung an eine arrithmetische/logische Einheit (ALU) eines Mikroprozessors oder eines anderen Teiles des Mikroprozessors gegeben.
Falls keine Übereinstimmung durch den Komparator gefunden wird, erzeugt dieser ein Datenfehlsignal auf der Leitung 345. Dieses Signal kann einem Inverter 344 zugeführt werden, um eine Datenfehlmeldungs-Signalleitung in einen logisch hohen Zustand zu treiben. Ebenfalls treibt dieses Daten­ fehlsignal eine Datenfehlaktivierungsschaltung 356, damit der Mikroprozessor Daten von dem sekundären Cache-Speicher liest. Diese Datenfehlaktivierungsschaltung ist mit dem zweiten Cache-Speicher durch eine an sich bekannte Einrich­ tung verbunden.
Der Zugriff auf den zweiten Cache-Speicher 110 erfolgt mittels einer vollständig assoziativen Logik zum gleich­ zeitigen Vergleichen der Markierungsbits mit sämtlichen Markierungen eines kleinen Leitungssatzes. Bei dem in Fig. 3 gezeigten Ausführungsbeispiel sind drei Markierungspaare (TAG1, TAG2, . . . TAGn) und Leitungspaare gezeigt, jedoch kann eine beliebige Anzahl von Paaren von Markierungen und Leitungen verwendet werden. Somit wird der sekundäre Cache- Speicher 110 aus einer Mehrzahl von Markierungen, Leitungen und Verbindungsschaltungen im Gegensatz zu der zweidimen­ sionalen Feldanordnung gebildet, welche für den Direktab­ bildungs-Cache-Speicher 100 verwendet wird. Wie dies im Stand der Technik an sich bekannt ist, führt die Erhöhung der Anzahl von Paaren von Markierungen und Leitungen nicht zu einer Verminderung der Verarbeitungszeit und zu einer Erhöhung der Verlustleistung. In der Figur sind Bezugs­ zeichen lediglich für eine Markierung 308 und eine Leitung 310 gezeichnet, wobei die gleichen Teile die weiteren Paare von Markierungen und Leitungen bilden.
Um den sekundären Cache-Speicher zu adressieren, werden die Markierungs-Bits auf der Leitung 302D mit dem Komparator 316 und gleichfalls mit jedem weiteren Komparator verbunden, der jedem anderen Paar von Markierungen und Leitungen zugeordnet ist. Wie dies im Stand der Technik bekannt ist, vergleichen bei einem vollständig assoziativen System sämtliche Kompa­ ratoren gleichzeitig die Markierungs-Bits mit der Markie­ rung, welche dem Komparator zugeordnet ist. Daher vergleicht der Komparator 316 die Markierung 308 mit den Markierungs- Bits zu derselben Zeit, zu der die anderen Komparatoren einen Vergleich durchführen. Falls ein Treffer auftritt (und falls die Datenfehlaktivierungsschaltung 356 den zweiten Cache-Speicher nach einer Datenfehlmeldung durch den Di­ rektabbildungs-Cache-Speicher aktiviert hat) triggert der Komparator eine Auswahlschaltung 318, die ein Datenelement 314 von der Leitung 310 holt. Da mehrere Komparatoren gleichzeitig einen Vergleich ausführen, kann jeder der Komparatoren gemäß Fig. 3 einen Treffer berichten und Aus­ gangsdatenelemente liefern. Das Datenelement kann unter Ver­ wendung des Verschiebungswertes als Versatz 312 gegenüber dem Start der Zeile ausgewählt werden. Das Datenelement wird durch die Auswahlschaltung zu der Datenausgangsleitung 320 zur Verwendung durch den Mikrocomputer zugeführt.
Falls eine Datenfehlmeldung auftritt, aktiviert der Kompara­ tor eine Datenfehlmeldungsleitung 348, die mit den anderen Datenfehlmeldungsleitungen an ein NOR-Gatter mit drei Ein­ gängen gekoppelt ist. Falls sämtliche Datenfehlmeldungs­ leitungen aktiviert sind, aktiviert das Gatter eine Aus­ gangsdatenfehlmeldungsleitung 324, um dem Mikroprozessor mitzuteilen, daß keine Markierungsübereinstimmung in dem sekundären Cache-Speicher gefunden worden ist.
Die Datenfehlsignale sowohl von dem direkten Cache-Speicher als auch von dem sekundären Cache-Speicher werden auf pri­ märe und sekundäre Datenfehl-Ausgangsleitungen 354, 350 ge­ koppelt und einem UND-Gatter 352 zugeführt. Wenn daher beide Datenfehlausgangsleitungen 350, 354 gesetzt sind, setzt das UND-Gatter ein globales Datenfehlausgangssignal, um der CPU zu übermitteln, daß ein Datenfehlzustand sowohl in dem di­ rekten Cache-Speicher wie auch in dem sekundären Cache- Speicher aufgetreten ist, so daß ein Zugriff auf den Haupt­ speicher erforderlich ist.
Während des Betriebes ermöglicht diese Schaltungsarchitektur ein Wiedergewinnen von Daten oder Befehlen entweder von dem Direktabbildungs-Cache-Speicher oder von dem sekundären Cache-Speicher während einer maximalen Zeitdauer von zwei Maschinenzyklen aufgrund folgender Schritte: um auf einen gegebenen Markierungsort Bezug zu nehmen, wird in einem ersten Maschinenzyklus auf die Markierungsliste 330 des direkten Cache-Speichers Zugriff genommen, um zu ermitteln, ob ein Treffer innerhalb des Direktabbildungs-Cache-Spei­ chers vorliegt. Bei einem physikalisch markierten Cache- Speicher wird bei diesem Schritt gleichfalls auf den Mar­ kierungszeilenpuffer zugegriffen. Falls hier ein Treffer auftritt, werden die Daten von dem Direktabbildungs-Cache- Speicher innerhalb desselben ersten Maschinenzyklus ausge­ lesen.
Falls eine Datenfehlmeldung auftritt, wird in dem zweiten Maschinenzyklus der sekundäre Cache-Speicher gelesen, falls ein Treffer innerhalb des sekundären Cache-Speichers ver­ zeichnet werden kann. Erfindungsgemäß wird eine assoziative Vergleichsoperation zum Vergleich der Cache-Markierung des zweiten Cache-Speichers innerhalb des ersten Maschinenzyklus durchgeführt, wobei dies gleichzeitig mit dem Direktabbil­ dungsvergleich durchgeführt wird, der für den Zugriff auf den Direktabbildungs-Cache-Speicher verwendet wird. Der Komparator 316 ist gleichzeitig mit dem Komparator 336 aktiv. Daher werden sowohl der direkte Cache-Speicher als auch der sekundäre Cache-Speicher gleichzeitig während des ersten Maschinenzyklus getestet. Falls ein Treffer in dem direkten Cache-Speicher erzielt wird, werden Daten in dem gleichen ersten Maschinenzyklus ausgelesen. Falls eine Da­ tenfehlmeldung in dem direkten Cache-Speicher auftritt und ein Treffer in dem zweiten Cache-Speicher während des ersten Maschinenzyklus auftritt, werden in einem zweiten Zyklus Daten von dem sekundären Cache-Speicher gelesen. Die Lese­ operation des sekundären Cache-Speichers verwendet die gleichen Bit-Leitungen, Leseverstärker und den gleichen Datenbus wie der Direktabbildungs-Cache-Speicher.
Der sekundäre Cache-Speicher kann einen Opfer-Cache-Speicher oder einen Datenfehl-Cache-Speicher umfassen. Die Differenz zwischen diesen Speichern liegt darin, auf welche Weise die Cache-Speicher auf den neuesten Stand gebracht werden.
Falls ein Opfer-Cache-Speicher verwendet wird, wird eine Opfer-Zeile in dem direkten Cache-Speicher, die aufgrund einer Datenfehlmeldung in dem direkten Cache-Speicher zu ersetzen ist, in den Opfer-Cache-Speicher kopiert und inner­ halb des direkten Cache-Speichers durch eine neue Zeile aus dem Hauptspeicher ersetzt. Bei einem Datenfehl-Cache-Spei­ cher wird die Zeile von dem Hauptspeicher bei einer Daten­ fehlmeldung gleichzeitig in den Datenfehl-Cache-Speicher und in den direkten Cache-Speicher eingeschrieben oder einge­ speichert.
Falls eine gegebene Zeile in dem sekundären Cache-Speicher einen Treffer erzeugt, kann sie entweder direkt von dem sekundären Cache-Speicher gelesen werden oder in Abweichung hiervon in den Direktabbildungs-Cache-Speicher geladen werden und daraufhin gelesen werden. Der erste Fall erfor­ dert zwei Maschinenzyklen, um für jeden Cache-Speicherzu­ griff, der zu einem Treffer führt, Daten in den sekundären Cache-Speicher zu lesen. Jedoch wird im Gegensatz zu bekann­ ten Systemen kein Nachteil bei der Übertragung einer Cache- Zeile von dem sekundären Cache-Speicher in den Direktabbil­ dungs-Cache-Speicher in Kauf genommen.
In dem zweitgenannten Fall kann ein das Alter oder die Ver­ wendung überwachender Mechanismus, wie beispielsweise ein Zähler, verwendet werden, um die Anzahl der Zugriffe auf eine Zeile in dem sekundären Cache-Speicher zu überwachen. Falls diese Anzahl einen voreingestellten Wert überschrei­ tet, kann die Zeile in den direkten Cache-Speicher für zu­ künftige Direkt-Cache-Speicher-Zugriffe geladen werden. In diesem Fall wird die Zeile, die in den Direktabbildungs- Cache-Speicher zu übertragen ist, lediglich mittels eines Zugriffes in einem Zyklus erfaßt, wobei jedoch zwei darüber­ hinausgehende Zyklen für die Übertragung der Zeile benötigt werden. Ein Zyklus ist in diesem Fall für das Lesen der Zeile von dem sekundären Cache-Speicher in den Datenpuffer erforderlich, während der andere Zyklus benötigt wird, um diese Zeile zurück in den Direkt-Cache-Speicher zu schrei­ ben. Wenn jedoch einmal die Zeile von dem sekundären Cache- Speicher gelesen worden ist, kann sie zu der CPU weiterge­ leitet werden, sobald sie verfügbar ist.
Der Erfindungsgegenstand kann bei Befehls-Cache-Speichern und bei Daten-Cache-Speichern ebenso wie bei einheitlichen Cache-Speichern angewandt werden, die sowohl Befehle als auch Daten speichern. Die Erfindung arbeitet sowohl für Opfer-Cache-Speicher als auch für Datenfehl-Cache-Speicher. Der einzige Unterschied liegt darin, auf welche Art und Weise die Zeilen in den Cache-Speichern ersetzt werden. Ferner kann die Erfindung bei Vielfach-Tor-Cache-Speichern eingesetzt werden.
Ein Ausführungsbeispiel eines Befehls-Cache-Speichers ist in den Fig. 4 und 5 gezeigt. Dieses Ausführungsbeispiel schafft einen effizienten Befehls-Cache-Speicher mit einem inte­ grierten Befehlspuffer (IB), einem Verzweigungszielpuffer (BTB), einem Opfer-Cache-Speicher (VC) auf einem einzigen hochintegrierten Schaltungschip (VLSI-Chip). Die Hardware ermöglicht eine Vorzugriffsverarbeitung, bei der der In­ struktionspuffer oder der Verzweigungszielpuffer von dem Befehls-Cache-Speicher gefüllt werden können, während Be­ fehle von dem Befehlspuffer oder von dem Verzweigungsziel­ puffer an den Mikroprozessor abgegeben werden.
Bei einem abweichenden betrachteten Ausführungsbeispiel kann der Befehls-Cache-Speicher gemäß den Fig. 4 und 5 als Cache-Speicher eines ersten Niveaus in einem System mit einem Cache-Speicher eines zweiten Niveaus verwendet werden. In einem derartigen Ausführungsbeispiel ermöglicht die Hardware ein Vorabgreifen vom Niveau zwei auf das Niveau eins, während die Befehle weiterhin von dem Befehlspuffer oder dem Verzweigungszielpuffer erzeugt werden. Die Verwen­ dung des Verzweigungszielpuffers kann Verzögerungen bei der Verarbeitung von Verzweigungsbefehlen vermeiden. Dessen Integration in der gleichen Befehls-Cache-Speicherstruktur erfordert eine geringere Oberfläche und ermöglicht eine schnellere Zykluszeit verglichen mit einem Fall, bei dem getrennte Befehlspuffer/Verzweigungszielpuffer-Strukturen verwendet werden. Diese Struktur kann gleichfalls mit einem eingebetteten sekundären Cache-Speicher bei minimaler zu­ sätzlicher Fläche implementiert werden.
Fig. 4 zeigt die gesamte Schaltungsarchitektur eines Aus­ führungsbeispieles der Erfindung bezüglich eines Befehls- Cache-Puffers. Dieses Ausführungsbeispiel liefert zwei ge­ trennte Befehlsbusse, nämlich einen Lesebefehlsbus 294 und einen Schreibbefehlsbus 210. Die Trennung der Lese- und Schreib-Funktionen ermöglicht die gleichzeitige Erzeugung von Befehlen von dem Befehlspuffer oder von dem Verzwei­ gungszielpuffer zum Lesen der Befehlsbusse, während der Befehls-Cache-Speicher ein Vorabergreifen von Befehlen von dem Cache-Speicher des Niveaus zwei oder von dem Haupt­ speicher zu dem Schreib-Befehls-Bus durchführt.
Die Schaltungen, die zwischen dem Schreib-Befehls-Bus und dem Lese-Befehls-Bus angeordnet sind, sind von ihrer Struk­ tur her ähnlich verglichen mit dem Ausführungsbeispiel des Daten-Cache-Speichers gemäß den Fig. 2 und 3. Eine Eingangs­ adresse 224 wird über einen ersten Adreßdekoder 240 an einen primären Befehls-Cache-Speicher 200 angelegt, der als zwei­ dimensionales Feld von Paaren von Markierungs- und Daten- Leitungen aufgebaut sein kann. Ein sekundärer Befehls-Ca­ che-Speicher 230 ist an den primären Befehls-Cache-Speicher und an den Schreib-Befehls-Bus über eine Vergleichslogik 220 angekoppelt. Eine Mehrzahl von Übereinstimmungsleitungen 225 verbinden die Vergleichslogik mit den Speicherzellen in dem sekundären Befehls-Cache-Speicher. Der primäre und der se­ kundäre Befehls-Cache-Speicher teilen sich vorzugsweise die gleichen Leseverstärker 250, Treiber 290 und den Vertei­ lungsmultiplexer 292. Daher ermöglichen auf eine ähnliche Weise wie bei dem Daten-Cache-Speicher-Verarbeitungssystem, welches bereits beschrieben wurde, diese geteilten Komponen­ ten, daß der Cache-Speicher einen Vergleich vornimmt und Befehle zwischen den primären und sekundären Befehls- und Cache-Speichern überträgt, wobei ein einziger Maschinen­ zyklus verwendet wird.
Zwei Befehlspuffer 270, 280 sind zwischen den Leseverstär­ kern 250 und den Bustreibern 290 angeordnet. Der Verzwei­ gungszielpuffer (BTB) 270, der nachfolgend detailliert er­ läutert wird, liefert Speicherraum für Zielbefehle, die auf eine Verzweigung folgen. Daher ermöglicht der Verzweigungs­ zielpuffer (BTB), daß der Mikroprozessor Befehle logisch vor der tatsächlichen Ausführung speichert, so daß zukünftige Befehle für eine unmittelbare Verarbeitung vorbereitet sind, sobald ein Verzweigungsbefehl ausgeführt wird. Ein Befehls­ puffer (IB) 280 liefert einen sog. Notizblockspeicher bzw. schnellen Hilfsspeicher für andere zukünftige Befehle. So­ wohl der Befehlspuffer als auch der Verzweigungszielpuffer sind mit der Adresse 224 über einen zweiten Adreßdekoder 260 verbunden. Die interne Struktur einer jeder dieser Kompo­ nenten ist an sich bekannt im Stand der Technik.
Bei einem abweichenden Ausführungsbeispiel sind die Ver­ gleichslogik und der sekundäre Befehls-Cache-Speicher fort­ gelassen. Bei der Operation eines derartigen Ausführungs­ beispieles nimmt der Befehlspuffer kontinuierlich vorab Be­ fehle von dem Befehls-Cache-Speicher auf, bis der Befehls­ puffer voll ist. Die Befehle innerhalb des Befehlspuffers werden dann für die unmittelbare Übertragung an den Be­ fehlslesebus übertragen, wenn der Mikroprozessor den nächsten Befehl anfordert. Der Befehlspuffer selbst spei­ chert vorzugsweise wenigstens zwei Befehle und wird durch eine FIFO-Warteschlange gebildet. Der Befehlsspeicher er­ zeugt Befehle von dem Kopf der Warteschlange, welcher an den Befehlslesebus weitergegeben werden.
Der Befehlspuffer überprüft die jetzt noch nicht an den Mikroprozessor weitergeleiteten zukünftigen Befehle. Falls der Befehlspuffer feststellt, daß nunmehr ein Verzweigungs­ befehl auszuführen ist, schaltet eine externe Cache-Spei­ cher-Steuerung (nicht dargestellt) auf einen Vorabgriff um, um auf die Befehle nach der Verzweigung zuzugreifen. Diese Befehle werden dann in den Verzweigungszielspeicher geladen.
Der Verzweigungszielspeicher ist gleichfalls als FIFO-Warte­ schlange implementiert und speichert die Zielbefehle nach einer Verzweigung. Falls der Verzweigungsbefehl ausgeführt wird und die Verzweigung tatsächlich genommen wird, werden die nachfolgenden Befehle von dem Verzweigungszielpuffer zum Befehlslesebus weitergeleitet. Wenn der Verzweigungsziel­ puffer Befehle erzeugt, kann der Befehlspuffer einen Vorab­ griff auf die Befehle durchführen, falls der Verzweigungs­ zielpuffer einen Verzweigungsbefehl identifiziert. Daher können der Befehlspuffer und der Verzweigungszielpuffer bei jeder Verzweigung die Rollen vertauschen.
Vorzugsweise ist die Wortgröße des von dem Befehls-Cache- Speicher in den Befehlspuffer und in den Verzweigungsziel­ puffer eingebrachten Wortes mehr als einen Befehl lang. Da­ her können mehrere Befehle gleichzeitig durch Vorabgriff von dem Befehls-Cache-Speicher zu dem Befehlsspeicher oder zu dem Verzweigungszielspeicher übertragen werden.
Bei einem abweichenden Ausführungsbeispiel hat die externe Cache-Speicher-Steuerung eine Einrichtung zum Durchführen des Vorabgriffs auf Befehle, um diese von einem externen Befehls-Cache-Speicher des zweiten Niveaus in einen primären Befehls-Cache-Speicher zu übertragen. Der externe Befehls- Cache-Speicher des zweiten Niveaus unterscheidet sich von dem nachfolgend diktierten sekundären Befehls-Cache-Spei­ cher. Vorzugsweise ist der externe Befehls-Cache-Speicher des zweiten Niveaus in seiner Struktur identisch zu dem primären Befehls-Cache-Speicher und an diesen unter Verwen­ dung einer geeigneten kaskadierenden Logik angeschlossen. Vorzugsweise wird bei Auftreten einer Datenfehlmeldung des primären Befehls-Cache-Speichers während eines Vorabgreifens von dem primären Befehls-Cache-Speicher in den Befehlspuffer oder in den Verzweigungszielpuffer die Cache-Steuerung einen Befehl von dem Befehls-Cache-Speicher des zweiten Niveaus in den primären Cache-Speicher vorab übertragen. Daher liefert das Ausführungsbeispiel gemäß Fig. 4 eine Befehls-Cache- Speicherstruktur mit zwei Pegeln, bei dem ein Vorabzugriff von dem Befehls-Cache-Speicher des zweiten Niveaus zu dem Befehls-Cache-Speicher des ersten Niveaus weitergeschoben werden kann. Dieses hilft dabei, Verzögerungen zu maskieren, die während des Befehls-Cache-Speicherzugriffes des zweiten Niveaus auftreten, da der Befehlspuffer oder Verzweigungs­ zielpuffer Befehle erzeugen können, bis der fehlende Befehl tatsächlich an dem Kopf der Warteschlange ankommt.
Der Verteilungsmultiplexer, der an dem Fuß des Cache-Spei­ chers gezeigt ist, erzeugt einen Befehl nach dem anderen von dem Befehlspuffer mit mehrfacher Befehlsbreite oder von dem Verzweigungszielpuffer. Hierdurch wird gewährleistet, daß die von dem Cache-System erzeugten Befehle mit der Befehls­ länge des Mikroprozessors zusammenpassen.
Bei einem Ausführungsbeispiel umfaßt der sekundäre Cache- Speicher einen Opfer-Cache-Speicher oder einen Datenfehl- Cache-Speicher, welcher in der Befehls-Cache-Speicherstruk­ tur eingebettet ist. Vorzugsweise umfaßt der sekundäre Cache-Speicher einen kleinen, vollständig assoziativen Puf­ fer, der oben unter Bezugnahme auf die Fig. 2 und 3 be­ schrieben ist. Die Vergleichslogik 220 des sekundären Ca­ che-Puffers kann am oberen Ende der sekundären Cache-Spei­ cherfeldanordnung angeordnet werden. Die Übereinstimmungs­ leitungen 225 von der Vergleichslogik werden in das sekundä­ re Cache-Speicherfeld geführt, um dessen Wortleitungen zu treiben. Die sekundären Cache-Speicherfeldzellen (nicht dargestellt) sind vorzugsweise sämtlich identisch zu den Befehls-Cache-Speicherzellen. Die Befehls-Cache-Zellen sind vorzugsweise SRAM-Zellen mit jeweils vier oder sechs Tran­ sistoren pro Zelle.
Details des Befehls-Cache-Speichers sind in Fig. 5 gezeigt. Fachleute erkennen, daß Fig. 5 eine Mehrzahl von parallelen, identisch aufgebauten Scheiben eines kompletten Befehls- Cache-Speichersystemes zeigt. Beispielsweise zeigt Fig. 5 von oben nach unten jeweils nur eine exemplarische Vor­ richtung einer jeden Komponententype. Jedoch umfaßt ein kompletter Befehls-Cache-Speicher, der in Silizium imple­ mentiert ist, eine Mehrzahl von Seite an Seite nebeneinander angeordneten Scheiben, die identisch zu der beispielshaften Scheibe gemäß Fig. 5 sind.
Die obere Hälfte einer Befehls-Cache-Speicher-Scheibe umfaßt den Schreibbefehlbus, Schreibtreiber, eine Vorladelogik, eine zugeordnete Vergleichslogik, Opfer-Cache-Speicher-Zel­ len, Befehls-Cache-Speicher-Zellen und einen Leseverstärker. Die untere Hälfte enthält Befehlspufferzellen, Verzwei­ gungszielpufferzellen, Lesetreiber, einen Verteilermulti­ plexer sowie einen Lesebefehlsbus.
Der Schreibbefehlsbus 210 ist in Fig. 5 durch einen Pfeil verdeutlicht, der sich von der in Fig. 5 gezeigten Scheibe zu benachbarten, identischen Scheiben erstreckt. Der Schreibbefehlsbus 210 ist an einen Schreibtreiberabschnitt 212 mit einer Mehrzahl von Schreibtreibern 213 angeschlos­ sen. Die Ausgänge der Schreibtreiber 213 werden durch zwei parallele Bit-Leitungen gebildet, die als Bit-Leitung 214 und als Nicht-Bit-Leitung 216 bezeichnet sind. Fachleute erkennen, daß die Bit-Leitung 214 und die Nicht-Bit-Leitung 216 mit entgegengesetzten logischen Pegeln arbeiten. Die Bit-Leitungen sind durch einen Vorladelogikabschnitt an das primäre und sekundäre Cache-Speicher-Feld angeschlossen. Wie an sich im Stand der Technik bekannt ist, speichern diese Abschnitte Befehle auf den Schreib-Befehls-Bus für den pri­ mären und/oder sekundären Befehls-Cache-Speicher.
Direkt an die Vergleichslogik 220 ist eine beispielshafte sekundäre Cache-Speicherzelle 232 eines sekundären Cache- Speichers 230 angeschlossen. Die Speicherzelle liefert ein Datenausgangssignal auf eine sekundäre Cache-Wortleitung 234. Wie gezeigt ist, erstreckt sich die Wortleitung 234 in benachbarte Speicherzellen wie ein Bus, um eine Übertragung von Befehlsworten von jeglichen Speicherzellen zu ermögli­ chen.
An die gleiche Bit-Leitung und an die Nicht-Bit-Leitung sind eine Mehrzahl von primären Befehls-Cache-Zellen 206, 208 angeschlossen. Die Befehls-Cache-Zellen 206, 208 liefern Ausgangssignale auf Wortleitungen 202, 204. Am unteren Ende der oberen Hälfte des Befehls-Cache-Speichers gemäß Fig. 5 sind die Bit-Leitungen 214, 216 an einen Leseverstärker (SA) 250 angeschlossen, welcher ausgangsseitige Daten auf eine Schreibdatenleitung 252 liefert. Die innere Bauweise dieser Komponenten ist im Stand der Technik bekannt.
Die Schreibdatenleitung 252 ist an einen Befehlspuffer 280 am oberen Ende der unteren Hälfte der Befehls-Cache-Spei­ cherstruktur gemäß Fig. 5 angeschlossen. Zwei beispielshafte Befehlspufferzellen 280A, 280B sind dargestellt, von denen eine jede als ein Element einer FIFO-Warteschlange in an sich bekannter Art aufgebaut ist. Die Zelle 280A wird von einer Lesewortleitung (Leseadreßleitung) 282 und einer Schreibwortleitung (Schreibadreßleitung) 284 adressiert, während die Zelle 280B von einer Lesewortleitung 286 und einer Schreibwortleitung 288 adressiert wird. Die vertikalen Schreib- und Lese-Datenleitungen 272, 274 verbinden die Zel­ len 280A, 280B miteinander und mit dem Verzweigungszielpuf­ fer 270.
Zwei beispielshafte Verzweigungszielzellen 270A, 270B sind in Fig. 5 gezeigt. Jede Zelle 270A, 270B ist als ein Element einer FIFO-Warteschlange in einer an sich bekannten Art auf­ gebaut. Die Zelle 270A wird mittels einer Schreibwortleitung 276 und einer Lesewortleitung 278 adressiert. Die Zelle 270B wird mit einer Schreibwortleitung 292 und einer Lesewortlei­ tung 294 adressiert. Die Zellen 270A, 270B sind miteinander durch Datenleitungen oder Bit-Leitungen 272, 274 verbunden. Das oberste Ende der Bit-Leitung 274 ist in einer an sich bekannten Art durch einen NMOS-Transistor 296 an einen Vor­ ladetakt 298 angeschlossen. Diese Struktur ermöglicht die Vorladung der Bit-Leitungen vor dem Lesen oder Schreiben der Zellen.
Ausgabedaten, die von den Zellen 270A, 270B, 280A, 280B gelesen werden, werden dem Lesetreiberabschnitt 290 auf einer Leseausgangsleitung 291 zugeführt. Das Ausgangssignal wird in dem Lesetreiberabschnitt verstärkt und zu einem Verteilermultiplexer 292 zugeführt, welcher gewährleistet, daß ein Befehl nach dem anderen zu dem Lesebefehlsbus 294 zugeführt wird.
Die Vorteile der Erfindung bei Anwendung auf einen Daten- Cache-Speicher umfassen die Effektivität unter Verwendung eines Direktabbildungs-Cache-Speichers mit einem eingebette­ ten Opfer/Datenfehl-Cache-Speicher, wobei das Durchgehen verhindert wird, die Zykluszeit verbessert wird, eine niedrige Verlustleistung erzielt wird, eine hohe Flächen­ ausnutzung und eine verminderte Empfindlichkeit gegenüber dem Leseverstärkerschaltrauschen erzielt werden. Vorteile der Erfindung bei Anwendung auf einen Befehls-Cache-Speicher umfassen sämtliche der soeben genannten Vorteile und gleich­ falls einen Befehls-Cache-Vorzugriffsmechanismus mit zwei Niveaus sowie einen Vorzugriffsmechanismus zum Koppeln des Befehls-Cache-Speichers mit dem Befehls-Puffer und dem Verzweigungszielpuffer. Diese Verbesserungen führen zu einer verkürzten Zykluszeit für den Cache-Speicherzugriff, zu er­ höhten Trefferraten und einer minimalen Siliziumfläche.

Claims (10)

1. Cache-Speichersystem, mit einem direkt abbildenden primären Cache-Speicher (100), gekennzeichnet durch
einen vollständig assoziativen sekundären Cache-Speicher (110);
eine Vergleichereinrichtung (336, 316), welche betätig­ bar ist, um innerhalb des primären und des sekundären Cache-Speichers (100, 110) jegliche Daten zu lokali­ sieren, auf die durch eine Eingangsadresse (124) Bezug genommen wird; und
eine Auswahleinrichtung (336, 318), die betätigbar ist, um jegliche Daten wiederzugewinnen, welche durch die Vergleichereinrichtung (336, 316) lokalisiert sind.
2. System nach Anspruch 1, dadurch gekennzeichnet, daß die Vergleichereinrichtung (336) ein Datenfehler­ signal erzeugt, falls der primäre Cache-Speicher (100) keine Daten enthält, auf die durch die Eingangsadresse (124) Bezug genommen wird.
3. System nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß die Auswahleinrichtung (318) betätigbar ist, um Daten von dem sekundären Cache-Speicher (110) nur dann wiederzuerlangen, wenn der primäre Cache-Speicher (100) nicht irgendwelche Daten enthält, auf die durch die Eingangsadresse (124) Bezug genommen werden.
4. System nach Anspruch 3, dadurch gekennzeichnet,
daß die Vergleichereinrichtung (336, 316) betätigbar ist, um Daten während eines Verarbeitungszyklus zu lo­ kalisieren, und
daß die Auswahleinrichtung (318) betätigbar ist, um Daten von dem sekundären Cache-Speicher (110) während eines nächsten Verarbeitungszyklus wiederzuerlangen.
5. System nach Anspruch 3, dadurch gekennzeichnet,
daß die Vergleichereinrichtung (336, 316) betätigbar ist, um Daten während eines ersten Verarbeitungszyklus zu lokalisieren, und
daß die Auswahleinrichtung (338, 318) betätigbar ist, um jegliche Daten, auf die durch die Eingangsadresse (124) Bezug genommen wird, von dem primären Cache-Speicher (100) während des ersten Verarbeitungszyklus und von dem sekundären Cache-Speicher (110) während des zweiten Verarbeitungszyklus wiederzuerlangen.
6. System nach einem der Ansprüche 1 bis 5, dadurch ge­ kennzeichnet,
daß der sekundäre Cache-Speicher (110) als Datenfehler- Cache-Speicher organisiert ist, und
daß das System ferner eine Einrichtung (150) zum Laden von Daten von dem Hauptspeicher simultan sowohl in den primären Cache-Speicher (100) als auch in den sekundären Cache-Speicher (110) umfaßt.
7. System nach einem der Ansprüche 1 bis 5, dadurch ge­ kennzeichnet,
daß der sekundäre Cache-Speicher als Opfer-Cache-Spei­ cher organisiert ist, und
daß das System ferner eine Einrichtung (150) zum Über­ tragen von Daten von dem primären Cache-Speicher (100) zu dem sekundären Cache-Speicher (110) umfaßt.
8. System nach einem der Ansprüche 1 bis 7, gekennzeichnet durch einen Befehlspuffer (280), einen Verzweigungszielpuffer (270) und eine Einrichtung, die auf einen Verzweigungs­ befehl anspricht, um Befehle von den primären und se­ kundären Cache-Speichern (100, 110; 200, 230) alternativ in einen dieser Puffer zu laden.
9. Verfahren zum Wiedergewinnen von Daten aus einem Cache-Speichersystem, gekennzeichnet durch folgende Verfahrensschritte:
Erzeugen einer Eingangsadresse (124);
Überprüfen, ob die Eingangsadresse auf irgendwelche Daten Bezug nimmt, die in einem direkt abbildenden primären Cache-Speicher (100) und in einem vollständig assoziativen sekundären Cache-Speicher (110) gespeichert sind;
Wiedergewinnen jeglicher Daten, auf die durch die Ein­ gangsadresse Bezug genommen wird, von dem primären Cache-Speicher; und
Wiedergewinnen jeglicher Daten von dem sekundären Cache-Speicher, auf die durch die Eingangsadresse Bezug genommen wird, falls der primäre Cache-Speicher nicht irgendwelche derartige Daten enthält.
10. Verfahren nach Anspruch 9, dadurch gekennzeichnet,
daß der Prüfschritt während eines Verarbeitungszyklus ausgeführt wird, und
daß der Schritt des Wiedergewinnens von Daten von dem sekundären Cache-Speicher während des nächsten Verar­ beitungszyklus ausgeführt wird.
DE4306077A 1992-02-27 1993-02-26 Withdrawn DE4306077A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US84290792A 1992-02-27 1992-02-27

Publications (1)

Publication Number Publication Date
DE4306077A1 true DE4306077A1 (de) 1993-09-02

Family

ID=25288537

Family Applications (1)

Application Number Title Priority Date Filing Date
DE4306077A Withdrawn DE4306077A1 (de) 1992-02-27 1993-02-26

Country Status (3)

Country Link
JP (1) JPH0612323A (de)
DE (1) DE4306077A1 (de)
GB (1) GB2264577B (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5603004A (en) * 1994-02-14 1997-02-11 Hewlett-Packard Company Method for decreasing time penalty resulting from a cache miss in a multi-level cache system
KR0146059B1 (ko) * 1995-04-11 1998-09-15 문정환 미참조 선인출 캐쉬를 이용한 명령어 선인출 방법 및 그 회로
JP3068469B2 (ja) 1996-08-28 2000-07-24 新潟日本電気株式会社 2次レベルキャッシュメモリシステム
US6085292A (en) * 1997-06-05 2000-07-04 Digital Equipment Corporation Apparatus and method for providing non-blocking pipelined cache
US6138208A (en) * 1998-04-13 2000-10-24 International Business Machines Corporation Multiple level cache memory with overlapped L1 and L2 memory access
TW451132B (en) 1998-12-15 2001-08-21 Nippon Electric Co System and method for cache processing
GB2465773A (en) 2008-11-27 2010-06-02 Symbian Software Ltd Data Storage and Access
WO2013148872A1 (en) * 2012-03-28 2013-10-03 Huawei Technologies Co., Ltd. Concurrently accessed set associative overflow cache

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4110173A1 (de) * 1990-03-30 1991-10-02 Mitsubishi Electric Corp Unterstuetzender cache-speicher fuer eine halbleiterspeichervorrichtung und verfahren zum betreiben eines solchen
EP0457403A2 (de) * 1990-05-18 1991-11-21 Koninklijke Philips Electronics N.V. Mehrstufiger Befehlscachespeicher, Verwendungsverfahren dafür, Verfahren zum Kompilieren von Befehlen unter Verwendung dieser Cachespeicher und Mikrocomputersystem mit diesem Cachespeicher

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2235554B (en) * 1989-08-31 1993-11-17 Sun Microsystems Inc Computer system architecture for improved floating point performance
CA2043493C (en) * 1990-10-05 1997-04-01 Ricky C. Hetherington Hierarchical integrated circuit cache memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4110173A1 (de) * 1990-03-30 1991-10-02 Mitsubishi Electric Corp Unterstuetzender cache-speicher fuer eine halbleiterspeichervorrichtung und verfahren zum betreiben eines solchen
EP0457403A2 (de) * 1990-05-18 1991-11-21 Koninklijke Philips Electronics N.V. Mehrstufiger Befehlscachespeicher, Verwendungsverfahren dafür, Verfahren zum Kompilieren von Befehlen unter Verwendung dieser Cachespeicher und Mikrocomputersystem mit diesem Cachespeicher

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
Design & Elektronik, Heft 19, 18.9.1990, S. 86-88 *
EICHELE, H.: Multiprozessorsysteme, B.G. Teubner Stuttgart 1990, S. 93-101 *
IBM TDB, Vol. 33, Nr. 11, April 1991, S. 362-365 *
IEEE Journal of Solid-State Circuits, Vol. 25, Nr. 1, Februar 1990, S. 5-10 *
MITCHELL, H.J.: 32-Bit-Microprocessors, Collins Professional and Technical Books, 1986, S. 192 *

Also Published As

Publication number Publication date
GB9303999D0 (en) 1993-04-14
JPH0612323A (ja) 1994-01-21
GB2264577B (en) 1995-06-14
GB2264577A (en) 1993-09-01

Similar Documents

Publication Publication Date Title
DE69434728T2 (de) Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel
EP0013737B1 (de) Mehrstufige Speicherhierarchie für ein Datenverarbeitungssystem
DE60010674T2 (de) Hochgeschwindigkeits-prozessorsystem, verfahren zu dessen verwendung und aufzeichnungsmedium
DE2515696C2 (de) Datenverarbeitungssystem
DE69724355T2 (de) Erweiterte symmetrische Multiprozessorarchitektur
DE19943938B4 (de) Dynamischer Daten-Vorabruf auf Basis eines Programmzähler- und Adressierungsmodus
DE3102150A1 (de) "schaltungsanordnung mit einem cachespeicher fuer eine zentraleinheit einer datenverarbeitungsanlage
DE112005002180T5 (de) Lösen von Cachekonflikten
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE10045188B4 (de) Cacheadresskonfliktvorrichtung
DE3934145C2 (de) Platteneinheit-Steuerungsvorrichtung und Informationsverarbeitungssystem, das dieselbe enthält
DE102008062044B4 (de) 1Speicherinterne, seiteninterne Verzeichnis-Chache-Kohärenz-Konfiguration
DE10056827A1 (de) Duale Verwendung von Cache-Verbindungen
DE2841041A1 (de) Datenverarbeitungsanlage mit mindestens zwei mit einem schnellen arbeitsspeicher ausgeruesteten prozessoren
DE4132833A1 (de) Hierarchischer schaltungsintegrierter cache-speicher
DE2415900A1 (de) Rechenautomat mit mehreren mit je einem vorratsspeicher versehenen rechenanlagen
DE2617408B2 (de) Speichermodul für ein Datenverarbeitungsgerät mit Speicherhierarchie
DE112005003243T5 (de) System und Verfahren für die Cache-Kohärenz bei einem Cache mit unterschiedlichen Längen für die Cache-Orte
DE69937611T2 (de) Intelligenter Puffer-Speicher
DE112005002420T5 (de) Verfahren und Vorrichtung zum Pushen von Daten in den Cache eines Prozessors
DE19855806A1 (de) Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen
DE4100670A1 (de) Halbleiterspeichervorrichtung mit eingebautem cache-speicher und verfahren zum betreiben einer solchen
DE10112216A1 (de) Digitales Datenverarbeitungssystem, zugehöriger Cache-Speicher und Betriebsverfahren hierfür
DE3046912C2 (de) Schaltungsanordnung zum selektiven Löschen von Cachespeichern in einer Multiprozessor-Datenverarbeitungsanlage
DE10219621A1 (de) Schnelle Prioritätsbestimmungsschaltung mit rotierender Priorität

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8130 Withdrawal