Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
CACHE MEMORY
Document Type and Number:
WIPO Patent Application WO/1996/033462
Kind Code:
A1
Abstract:
A cache memory L2 of X order is disclosed for a cache memory of X-1 order. Cache memories L2 and L1 may be subdivided into sections Yi and Zj. Cache memory L2 has a register (3) for storing a validity bit Vi (L1) for each memory section Yi. The validity bit of a memory section Yi shows whether the contents of said memory section are also stored in a corresponding memory section Zj of cache memory L1. Interrupts of the microprocessor are thus avoided, the system bus (7) is more efficiently used and the processing speed of the whole microprocessor system is increased.

Inventors:
WILLE UDO (DE)
GETZLAFF KLAUS-JOERG (DE)
WITHELM BIRGIT (DE)
TAST HANS-WERNER (DE)
Application Number:
PCT/EP1995/001458
Publication Date:
October 24, 1996
Filing Date:
April 18, 1995
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
IBM (US)
WILLE UDO (DE)
GETZLAFF KLAUS JOERG (DE)
WITHELM BIRGIT (DE)
TAST HANS WERNER (DE)
International Classes:
G06F12/0811; (IPC1-7): G06F12/08
Foreign References:
EP0549219A11993-06-30
EP0461926A21991-12-18
EP0649094A11995-04-19
Other References:
BAER J -L ET AL: "ON THE INCLUSION PROPERTIES FOR MULTI-LEVEL CACHE HIERARCHIES", PROCEEDINGS OF THE ANNUAL INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE, HONOLULU, MAY 30 - JUNE 2, 1988, no. 1988, 30 May 1988 (1988-05-30), INSTITUTE OF ELECTRICAL AND ELECTRONICS ENGINEERS, pages 73 - 80, XP000039790
JEAN-LOUP BAER ET AL: "MULTILEVEL CACHE HIERARCHIES:ORGANIZATIONS, PROTOCOLS, AND PERFORMANCE*", JOURNAL OF PARALLEL AND DISTRIBUTED COMPUTING, vol. 6, no. 3, 1 June 1989 (1989-06-01), pages 451 - 476, XP000133092
Download PDF:
Claims:
ANSPRÜCHE
1. Ein CacheSpeicher (L2) der Ordnung X für einen Cache Speicher (Ll) der Ordnung Xl, wobei die Cache Speicher (L2,L1) in Speicherabschnitte Yi bzw. Zj aufteilbar sind, dadurch gekennzeichnet, daß der CacheSpeicher (L2) der Ordnung X Mittel zur Speicherung eines Gültigkeitsbits Vi(Ll) für jeden seiner Speicherabschnitte Yi aufweist, wobei das Gültigkeitsbit Vi(Ll) des zugehörigen Speicherabschnitts Yi anzeigt, ob der Inhalt dieses Speicherabschnitts Yi auch in einem entsprechenden Speicherabschnitt Zj des CacheSpeichers (Ll) der Ordnung Xl gespeichert ist.
2. CacheSpeicher (L2) der Ordnung X nach Anspruch 1, dadurch gekennzeichnet, daß der CacheSpeicher (L2) der Ordung X Mittel zur Speicherung eines Verzeichnisses (9) aufweist, wobei das Verzeichnis die Adressen i der in den Speicherabschnitten Yi jeweils gespeicherten Datensequenzen beinhaltet und jeder Adresse i ein Gültigkeitsbit Vi (Ll) zugeordnet ist.
3. CacheSpeicher (L2) der Ordnung X nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß der CacheSpeicher (L2) der Ordnung X Mittel zur Speicherung je eines V, MC und CBits zur Realisierung eines MESI Cache Protokolls aufweist.
4. Mikroprozessorsystem mit wenigstens zwei Mikroprozessoren (PU1,PU2), denen jeweils ein Cache Speicher (Ll) der Ordnung Xl und ein CacheSpeicher (L2) der Ordnung X nach einem oder mehreren der Ansprüche 1 bis 3 zugeordnet sind.
5. Mikroprozessorsystem nach Anspruch 4 dadurch gekennzeichnet, daß die CacheSpeicher (L1,L2) über einen bidirektionalen Datenbus miteinander verbunden sind.
6. Mikroprozessorsystem nach Anspruch 4 oder 5 dadurch gekennzeichnet, daß zumindest einer der CacheSpeicher (L2) der Ordnung X und sein Mikroprozessor (PU) über einen bidirektionalen Adressbus miteinander verbunden sind.
7. Mikroprozessorsystem nach einem oder mehreren der Ansprüche 4 bis 6 dadurch gekennzeichnet, daß der CacheSpeicher (Ll) der Ordnung Xl Mittel zur Speicherung je eines V und eines MCBits und ggf. eines CBits zur Realisierung des MESI Cache Protokolls aufweist.
8. Computersystem mit einem Mikroprozessorsystem nach einem oder mehreren der Ansprüche 4 bis 7.
9. Verfahren zum Betrieb eines CacheSpeichers L2 nach einem oder mehreren der Ansprüche 1 bis 3, gekennzeichnet durch folgende Schritte: Speicherung einer Datensequenz der Adresse 1 in einem Speicherabschnitts Yi des CacheSpeichers L2 und in einem Speicherabschnitt Zj des Cache Speichers Ll und setzen des Gültigkeitsbits Vi(Ll) der Adresse 1 in dem CacheSpeicher L2, um anzuzeigen, daß die Datensequenz der Adresse i in einem Speicherabschnitt Zj des CacheSpeichers Ll gespeichert ist.
Description:
B E S C H R E I B U N G

CACHE-SPEICHER

Die Erfindung betrifft einen Cache-Speicher nach dem Oberbegriff von Patentanspruch 1. Die Erfindung betrifft überdies ein Mikroprozessor-System und ein Verfahren zum Betrieb eines Cache-Speichers.

Aus dem Stand der Technik ist die Verwendung von sogenannten Cache-Speichern bereits seit längerem bekannt. Cache-Speicher finden eine weite Verwendung. Sie dienen im allgemeinen dazu, die Zugriffszeit auf Daten, die z.B. von einem Mikroprozessor oder einer anderen Systemeinheit benötigt werden, zu minimieren. Solche Cache-Speicher sind z.B. aus EP-A-0 301 921 bekannt.

Es ist ebenfalls bekannt, zur weiteren Optimierung der Zugriffszeit zwei oder mehr Ebenen von Cache-Speichern zu verwenden. So sind bereits Computer-Systeme verfügbar, in denen der Mikroprozessor einen Cache-Speicher erster Ordnung aufweist, der auch zusammen mit dem eigentlichen Mikroprozessor auf einem Chip integriert sein kann. Bei dem zu dem Mikroprozessor gehörenden Cache-Speicher handelt es sich um die erste Ebene von Cache-Speichern. Dieser Cache- Speicher erster Ebene wird auch als Cache-Speicher erster Ordnung oder kurz Ll bezeichnet.

Getrennt von dem Mikroprozessor mit dem dazugehörigen Cache-Speicher Ll erster Ordnung ist bei bekannten Computersystemen ein Cache-Speicher L2 zweiter Ordnung vorgesehen. Der Cache-Speicher L2 hat im allgemeinen eine wesentlich größere Speicherkapazität als der Cache-Speieher Ll. Der Cache-Speicher L2 ist deshalb auf einem separaten Chip realisiert. Falls nun der Mikroprozessor in Betrieb z.B. Eingabedaten benötigt, wird zunächst in dem System

geprüft, ob diese benötigten Daten in dem Cache-Speicher Ll zur Verfügung stehen. Ergibt diese Prüfung, daß die benötigten Daten nicht in dem Cache-Speicher Ll stehen, so wird die entsprechende Prüfung für den Cache-Speicher L2 vorgenommen. Führt diese Prüfung für den Cache-Speicher L2 zum Erfolg, so werden die entsprechenden Daten in den Cache-Speicher Ll kopiert. Vor diesem Kopieren der benötigten Daten aus dem Cache-Speicher L2 in den Cache- Speicher Ll muß im Cache-Speicher Ll Speicherplatz für die zu kopierenden Daten geschaffen werden. Dazu wird eine in den Cache-Speicher Ll gespeicherte Datensequenz ausgewählt und aus dem Cache-Speicher Ll entfernt. Die entsprechenden Daten können beispielsweise in den Hauptarbeitsspeicher des ComputerSystems zurückgespeichert werden. Die Auswahl der aus dem Cache-Speicher Ll zu entfernenden Datensequenz geschieht im allgemeinen mittels eines LRU-Algorythmus (LRU = Least Recently Used).

Die Verwendung zweier oder mehr Ebenen von Cache-Speichern ist besonders in Multiprozessorsystemen vorteilhaft, um den Systembus zu entlasten (z.B. in dem in der EP-A-0575651 gezeigten Multiprozessorsystem) .

Insbesondere bei Multiprozessorsystemen tritt das Problem, die Integrität der in den Cache-Speichern befindlichen Daten zu gewährleisten, auf. Dieses Problem kann durch Implementierung eines sogenannten MESI Cache-Protokolls gelöst werden. Dadurch liegt für jede Datensequenz, die in den Cache-Speichern abgespeichert ist, eine codierte Information vor, ob es sich nämlich bei der Datensequenz um eine im Vergleich zum Inhalt des Hauptspeichers modifizierte Datensequenz handelt, oder ob die Datensequenz exclusiv nur in einem der Cache-Speicher abgespeichert ist oder ob auch andere Cache-Speicher diese Datensequenz aufweisen und ob schließlich die gespeicherte Datensequenz ungültig ist. Zur Codierung dieser Information dienen im

allgemeinen drei Bits, das sogenannte Valid-Bit (VBit), Change-Bit (CBit) und das Multi-Copy-Bit (MCBit) . Zur Speicherung dieser Bits sind zumindest in den L2-Caches Register vorgesehen, wobei je ein Tripel aus V, C und MC- Bits zur Aufrechterhaltung der Cache-Integrität erforderlichen Informationen angibt. Dies ist bereits aus der Zeitschrift Microprocessing and Microprogramming 32 (1991), Seiten 215 - 220, "Data Consistency in a Multiprocessor System with 'Store In' Cache-Concept" von Gerhard Döttling bekannt. Ferner sind noch aus IBM Technical Disclosure Bulletin Vol. 37, No. 10, 10-94, Seiten 557 - 562, Vol. 37, No. 6a, 06-94, Seiten 241 und 242, Vol. 37, No. 5, 05-94, Seiten 553 und 554, Vol. 37, No. 4B, 04-94, Seiten 207 - 208, Prozessorsysteme bekannt, bei denen die Cache-Integrität durch das MESI-Protokoll gewährleistet ist. Eine Beschreibung des MESI-Protokolls findet sich auch in dem Benutzerhandbuch für den Power-PC 601, Kapitel 4, Seite 10.

Der Erfindung liegt daher die Aufgabe zugrunde, einen verbesserten Cache-Speicher zu schaffen. Der Erfindung liegt ferner die Aufgabe zugrunde, ein verbessertes Mikroprozessorsystem zu schaffen, bei dem die Ausnutzung des Systembus besonders effektiv ist.

Die der Erfindung zugrundeliegenden Aufgaben werden mit den Merkmalen des kennzeichnenden Teils von Anspruch 1 bzw. von Anspruch 4 gelöst.

Wird bei vorbekannten Mikroprozessorsystemen z.B. der Status einer Speicherzeile im Cache-Speicher L2 entsprechend dem MESI-Protokoll über den Systembus geändert, so muß die entsprechende Aktion auch im Cache- Speicher Ll vorgenommen werden, um die Integrität der Daten in den Cache-Speichern zu gewährleisten. Die Statusänderung der Datensequenz in dem Cache-Speicher Ll muß allerdings

nur dann vorgenommen werden, wenn in dem Cache-Speicher Ll auch eine Kopie dieser Datensequenz vorhanden ist. Sonst genügt die Statusänderung der Datensequenz in dem Cache- Speicher L2. Nach dem Stand der Technik ist es jedoch in jedem Fall erforderlich, daß mittels des Mikroprozessors geprüft wird, ob die entsprechenden Daten in seinem Cache- Speicher Ll gespeichert sind. Dazu muß zunächst abgewartet werden, bis der Mikroprozessor in einem Zustand ist, in dem ein solcher Interrupt durchgeführt werden kann. Aufgrund der Größenverhältnisse zwischen den Cache-Speichern L2 und Ll wird diese Prüfung jedoch nur in einer relativ geringen Anzahl der Fälle zu dem Ergebnis führen, daß die entsprechenden Daten tatsächlich in dem Cache-Speicher Ll sind. Während dieser Prüfung kann der Systembus nicht anderweitig verwendet werden, woran dann insgesamt die Verarbeitungsgeschwindigkeit des Mikroprozessorsystems leidet.

Nach der Lehre der Erfindung sind in dem Cache-Speicher L2 Informationen über den Cache-Speicher Ll gespeichert, so daß die Prüfung seitens des Cache-Speichers L2, ob die entsprechenden Daten in dem Cache-Speicher Ll vorhanden sind, entfällt. Diese Informationen werden in Form von Gültigkeits-Bits Vi(Ll) vorzugsweise in hierfür in den Cache-Speicher L2 vorgesehenen Registern gespeichert. Soll nun innerhalb des Cache-Speichers L2 der Status einer gespeicherte Datensequenz abgeändert werden, so kann bereits auf der Ebene des Cache-Speichers L2 geprüft werden, ob die entsprechende Aktion auch in dem Cache- Speicher Ll erforderlich ist. Dadurch erübrigt sich der entsprechende Interrupt des zu dem Cache-Speicher Ll gehörenden Mikroprozessors als auch die Blockierung des Systembus.

Weitere vorteilhafte Ausführungsformen der Erfindung sind in den abhängigen Ansprüchen angegeben.

Eine Ausführungsform der Erfindung ist in der Zeichnung dargestellt und wird im folgenden näher beschrieben.

Es zeigen

Fig. 1 eine schematische Darstellung eines

Mikroprozessors mit den dazugehörigen Cache- Speichern Ll und L2;

Fig. 2 ein Mikroprozessorsystem mit mehreren der in Figur 1 dargestellten Mikroprozessoren und dazugehörigen Cache-Speichern.

In der Figur 1 ist ein Cache-Speicher L2 der Ordnung X = 2 dargestellt. Der Cache-Speicher L2 ist auf einem separaten Chip 1 integriert. Der Cache-Speicher L2 hat einen Speicherbereich 2, der in die Speicherabschnitte YI, Y2, ... Yn-1, Yn aufteilbar ist. In der gezeigten Ausführungsform geschieht diese Aufteilung des Speicherbereichs 2 zeilenweise, wobei jede Zeile des Speicherbereichs 2 einen der Speicherabschnitte Yi darstellt. Die Speicherabschnitte Yi sind in dem gezeigten Ausführungsbeispiel gleich groß.

Ferner ist in Figur 1 ein Mikroprozessor PU dargestellt, der auf einem Chip 4 integriert ist. Auf dem Chip 4 ist außerdem ein zu dem Mikroprozessor PU gehörender Cache- Speicher Ll der Ordnung X - l integriert. Die Ordnung X der Cache-Speicher gibt dabei an, auf welcher Speicherebene vom Mikroprozessor PU aus gesehen, sich der entsprechende Cache-Speicher befindet.

Der Cache-Speicher Ll ist ähnlich wie der Cache-Speicher L2 in Speicherabschnitte ZI, Z2, ... Zm-1, Zm aufteilbar. Ebenso wie im Cache-Speicher L2 sind die entsprechenden Speicherabschnitte Zj in Cache-Speicher Ll zeilenweise

organisiert und von jeweils gleicher Speicherlänge. Die Speicherabschnitte Zj teilen so den Speicherbereich 5 des Cache-Speichers Ll auf. Der Cache-Speicher Ll ist mit dem Cache-Speicher L2 über einen Datenbus 6 verbunden. Der Cache-Speicher L2 ist wiederum mit dem Systembus 7 verbunden. Ferner ist der Mikroprozessor PU mit dem Cache- Speicher L2 über den Adressbus 8 verbunden.

Der Cache-Speicher L2 hat ein Verzeichnis 9 (DIRECTORY). In dem Verzeichnis 9 werden die Speicheradressen i der in den Speicherabschnitten Yi jeweils gespeicherten Datensequenzen abgelegt. Ein entsprechendes Verzeichnis 10 zur Speicherung der Adressen j der in den Speicherabschnitten Zj gespeicherten Datensequenzen weist auch der Cache-Speicher Ll auf. Jeder in dem Verzeichnis 10 des Cache-Speichers Ll abelegten Adresse ist eindeutig ein Valid-Bit und ein Multiple-Copy-Bit zugeordnet. Ein Valid-Bit Vj gibt für die entsprechende Datensequenz j, die in einem Speicherabschnitt Zj in dem Speicherbereich 5 des Cache- Speichers Ll abgespeichert ist an, ob die Datensequenz j gültig ist. Benötigt beispielsweise der Prozessor PU die zu der Adresse j gehörige Datensequenz, so wird der Mikroprozessor PU eine entsprechende Anforderung an seinen Cache-Speicher Ll richten. Daraufhin wird in dem Verzeichnis 10 des Cache-Speichers Ll zunächst nach der Adresse j der Datensequenz gesucht werden. Befindet sich die Adresse j in dem Verzeichnis 10, so bedeutet dies, daß die entsprechende Datensequenz mit der Adresse j in einem Speicherabschnitt Zj des Speicherbereichs 5 in dem Cache- Speicher Ll vorhanden ist. Daraufhin wird das zu der Adresse j gehörige Valid-Bit Vj geprüft. Wenn das Valid-Bit Vj logisch 1 ist, so bedeutet dies, daß die in dem Speicherabschnitt Zj gespeicherte Datensequenz noch gültig ist. Die Datensequenz Zj wird dann zur Bearbeitung an den Prozessor PU über einen internen Datenbus ausgegeben. Nach der Bearbeitung dieser Datensequenz j durch den

Mikroprozessor PU kann diese wieder in den selben logischen Speicherabschnitt Zj zurückgespeichert werden.

Jeder der in dem Verzeichnis 10 gespeicherten Adressen j ist ferner eine Multiple-Copy-Bit (MC-Bit) eindeutig zugeordnet. Ist das MC-Bit beispielsweise logisch 1, so bedeutet dies, daß sich in anderen Cache-Speichern des ComputerSystems Kopien der in dem Speicherabschnitt Zj gespeicherten Datensequenz j befinden.

Der Cache-Speicher L2 weist entsprechende Register 11 und 13 auf, in denen die Valid-Bits Vi(L2) und die Multiple- Copy Bits MCi der entsprechenden Speicherabschnitte Yi abgespeichert sind. Zur Realisierung des MESI Cache- Protokolls weist der Cache-Speicher L2 ferner ein Register 12 auf, in das Change-Bits Ci der entsprechenden Speicherabschnitte Yi abgelegt werden. Ferner weisen sowohl der Cache-Speicher Ll als auch der Cache-Speicher L2 sogenannte Least-Recently-Used (LRU) Register 14 und 17 auf, die in an sich bekannter Weise dazu dienen, daß möglichst nur die am häufigsten benötigten Datensequenzen in den Cache-Speichern befindlich sind.

Der vorliegende Erfindung kann für verschiedene Cache- Systeme angewendet werden, z.B. für folgende Cache-Systeme:

1. Der Cache-Speicher Ll ist ein sogenannter Write Through Speicher. Das bedeutet, daß jede Speicherung einer Datensequenz der Adresse 1 seitens des Mikroprozessors PU in dem Cache-Speicher Ll automatisch die Speicherung derselben Datensequenz 1 in einem Speicherabschnitt Yi des Cache-Speichers L2 zur Folge hat. Dagegen ist der Cache- Speicher L2 ein sogenannter Store-In-Cache. Das bedeutet, daß die eben genannte Datensequenz i nicht automatisch über den Systembus dem Hauptspeicher zugeführt wird.

Nur wenn der Mikroprozessor eine neue Datensequenz i vom Hauptspeicher anfordert, für die aber im Cache-Speicher L2 kein freier Speicherplatz vorhanden ist, muß vor Abspeicherung der Datensequenz i erst der entsprechende Speicherplatz in dem Cache-Speicher L2 geschaffen werden. Dazu kann derjenige Speicherabschnitt Yi des Cache- Speichers L2, der die LRU-Datensequenz der Adresse j beinhaltet, benutzt werden. Dieser Speicherabschnitt Yi kann im allgemeinen überschrieben werden, da eine Kopie der Datensequenz j im Hauptspeicher vorhanden ist. Nur wenn das entsprechende C-Bit der Datensequenz , die in dem Speicherabschnitt Yi gespeichert ist, logisch 1 ist, muß vor Speicherung der neuen Datensequenz i in dem Speicherabschnitt Yi die dort befindliche Datensequenz j in den Hauptspeicher zurückgespeichert werden.

2. Im Unterschied zu 1. ist auch der Cache-Speicher Ll ist ein "Store-In-Cache". Dann wird bei Änderung einer Datensequenz der logischen Adresse i, die in dem Speicherabschnitt Zj des Cache-Speichers Ll abgespeichert ist, nicht mehr automatisch eine entsprechende Veränderung in dem Speicherabschnitt Yi des Cache-Speichers L2, in dem diese Datensequenz der Adresse i auch abgespeichert ist, vorgenommen werden, wie das im Beispiel unter 1. der Fall ist. Um jedoch trotzdem die Integrität der Daten sicherzustellen, muß im Cache-Speicher Ll zusätzlich ein Change-Bit vorgesehen werden.

Der Cache-Speicher L2 weist ein weiteres Register 3 auf, das zur Speicherung von Gültigkeits-Bits Vi(Ll) dient. Jedem der Speicherabschnitte Yi ist ein Gültigkeits-Bit Vi(Ll) eindeutig zugeordnet. Ein Gültigkeits-Bit Vi(Ll) des ensprechenden Speicherabschnitts Yi des Cache-Speichers L2 zeigt an, ob die in dem Speicherabschnitt Yi gespeicherte Datensequenz mit der Adresse i auch in einem

Speicherabschnitt Zj des Cache-Speichers Ll abgespeichert ist.

Der Cache-Speicher L2 ist im allgemeinen wesentlich größer als der Cache-Speicher Ll. Der Cache-Speicher L2 kann beispielsweise 256 KB und der Cache-Speicher Ll nur 16 KB groß sein. Die Wahrscheinlichkeit, daß eine Datensequenz 1 in beiden Cache-Speichern Ll und L2 eines Prozessors gleichzeitig abgespeichert ist, ist deshalb relativ gering.

Figur 2 zeigt eine schematische Darstellung eines erfindungsgemäßen Computersystems, wobei lediglich 2 Mikroprozessoren PUl und PU2, die dem Mikroprozessor PU der Figur 1 entsprechen, dargestellt sind. Die Cache-Speicher Ll und L2 der Mikroprozessoren PUl und PU2 sind gleich aufgebaut wie die entsprechenden Cache-Speicher des Mikroprozessors PU in Figur 1. Die Mikroprozessoren PUl und PU2 tauschen mittelbar über ihren Cache-Speicher L2 Kommandos und Daten über den Systembus 7 aus. Zusätzlich sind die Mikroprozessoren PUl und PU2 über eine Signalleitung 18 miteinander verbunden, an die vorzugsweise auch alle anderen Mikroprozessoren des ausschnittsweise in Figur 2 gezeigten Mikroprozessor-Systems angeschlossen sind.

Wenn der Mikroprozessor PU 1 ein Kommando über den Systembus 7 übertragen soll, ist es hierfür zunächst erforderlich, daß dem Mikroprozessor PUl zu diesem Zweck Zugang zu dem Systembus 7 gegeben wird. Der Mikroprozessor PUl muß dazu eine Zugangsberechtigung von einem nichtdargestellten Arbiter erhalten. Hierfür geeignete Arbiter sind beispielsweise aus EP-A-0 575 651 bekannt. Sobald der Systembus 7 dem Mikroprozessor PUl zugeteilt ist, kann der Prozessor PUl ein Datenanforderungskommando für eine Datensequenz der Adresse i auf den Systembus 7 stellen. Dieses Kommando richtet sich einerseits an den

Hauptspeicher des Mikroprozessorsystems, andererseits an alle "mithörenden" L2 Chips. Diese sorgen dafür, daß in ihren Verzeichnissen ("DIRECTORIES") gesucht wird, ob dort die Adresse i vorhanden ist und ob der Status dieser Datensequenz geändert werden muß. Ist dies der Fall, so wird das Signal "BUSY" aktiviert. Jedes L2 Chip kann dieses Signal aktivieren im Sinne eines logischen Oders, d.h. das Signal "BUSY" ist aktiv, wenn einer oder mehrere der L2 Chips das Signal aktivieren wollen. Das Signal "BUSY" wird deaktiviert, wenn das letzte L2 Chip den Status der Datensequenz - soweit erforderlich - geändert hat, gegebenenfalls auch den Stutus der Datensequenz im zugehörigen Ll Cache-Speicher. Solange dieser Vorgang ("bus snooping") nicht abgeschlossen ist, d.h. solange "BUSY" aktiv ist, kann kein anderer Systemteilnehmer, insbesondere auch nicht der Mikroprozessor PU2, Kommandos und Daten über den Systembus 7 übertragen.

Es ist deshalb wesentlich für die effiziente Ausnutzung des Systembus 7, daß das Signal "BUSY" nur möglichst kurze Zeit aktiv ist, da während dieser Zeit von dem Arbiter keine weitere Zugangsberechtigung erteilt werden kann. Denn es müssen alle erforderlichen Statusänderungen von Speicherabschnitten (sog. cache-lines) abgeschlossen sein, bevor ein neues Kommando von dem Mikroprozessorsystem bearbeitet werden kann.

Beim Betrieb des Mikroprozessorsystem wirkt sich der erfindungsgemäße Cache-Speicher L2 beispielsweise in folgenden Situationen vorteilhaft auf die Verarbeitungsgeschwindigkeit des Systems insgesamt aus:

1. Der Prozessor PU2 hat eine Datensequenz der Adresse 1 bearbeitet und dabei verändert. Diese Datensequenz soll nun in den Cache-Speichern Ll und L2 des Prozessors PU2 abgespeichert werden und zwar auf der logischen Adresse

1+1. Die entsprechende Datensequenz der Addresse 1+1 sei aber in den Cache-Speichern Ll und L2 des Prozessors PU2 nicht vorhanden.

Bevor der Prozessor PU2 die veränderte Datensequenz der Addresse i+1 in seinen Cache-Speicher Ll abspeichern kann, muß die frühere Version dieser Datensequenzen i+1 in den Cache-Speicher Ll und L2 des Prozessors PU2 abgespeichert werden. Nach der Speicherung dieser früheren Version der Datensequenz i+1 in den Cache-Speicher Ll und L2 des Prozessors PU2 kann diese dann durch die veränderte Version der Datensequenz i+1 überschrieben werden. Dieser Vorgang wird auch als "linefetch due to störe" bezeichnet.

Der Prozessor PU2 wird zur Speicherung der früheren Version der Datensequenz der Adresse i+1 zunächst ein Anforderungs- Kommando auf den Bus 7 ausgeben, das an den Speicher des Mikroprozessorsystems gerichtet ist. Durch das Anforderungs-Kommando signalisiert der Mikroprozessor PU2, daß er die Datensequenz der Adresse i+1 benötigt. Normalerweise hat das zur Folge, daß der Speicher des Mikroprozessorsystems die entsprechenden Daten auf den Bus 7 ausgibt.

Allerdings kann der Fall auftreten, daß die Datensequenz der Addresse i+1 so wie sie in dem Speicher des Mikroprozessorsystems gespeichert ist, nicht mehr gültig ist. Das ist dann der Fall, wenn beispielsweise der Mikroprozessor PUl die Datensequenz der Addresse i+1 in seinem Cache-Speicher L2 hat und das dazugehörige Change- Bit (CBit) logisch 1 ist. Das bedeutet, daß die Datensequenz der Adresse i+1 in dem Cache-Speicher L2 des Prozessors PUl gegenüber dem Speicher des Mikroprozessorsystems verändert ist. Außerdem ist hierfür erforderlich, daß auch das Gültigkeitsbit V(L2) der Datensequenz der Adresse i+1 in dem Cache-Speicher L2 des

Mikroprozessors PUl logisch 1 ist, d.h. daß die entsprechenden Daten in dem Cache-Speicher L2 gültig sind.

Der Mikroprozessor PUl wird dann anstelle des Speichers des

Mikroprozessorsystems die Datensequenz der Adresse i+1 auf den Bus ausgeben. Das wird durch das Bus-Protokoll sichergestellt.

Dieser Vorgang wird auch mit "bus-snooping" des Prozessors

PUl - wie auch der weiteren Prozessoren des Systems - bezeichnet.

In diesem Beispiel muß das Gültigkeitsbit V(L2) der Adresse i+1 in dem Cache-Speicher L2 des Prozessors PUl logisch 0 werden, da die Anforderung der Datensequenz i+1 "linefetch" aufgrund einer bevorstehenden Speicheroperation "störe" in den Cache-Speicher Ll des Prozessors PU2 erfolgt. Denn dies bedeutet ja, daß die Datensequenz i+1, so wie sie in dem Cache-Speicher L2 des Prozessors PUl vorliegt nicht mehr länger gültig sein soll.

Entsprechend muß auch sichergestellt sein, daß das Gültigkeitsbit V der Adresse i+1 in dem Register 15 des Cache-Speichers Ll des Processors PUl logisch 0 wird. Dazu ist ein Interrupt des Prozessors PUl erforderlich.

Ein solcher Interrupt des Prozessors erübrigt sich jedoch, falls das Gültigkeitsbit Vi(Ll) der Adresse i+1 in dem Cache-Speicher L2 des Prozessors PUl logisch 0 ist, was bedeutet, daß die Datensequenz der Adresse i+1 in dem Cache-Speicher Ll des Prozessors PUl gar nicht vorliegt.

Die Speicherung von Information über den Cache-Speicher Ll in dem dazugehörigen Cache-Speicher L2 in Form von Gültigkeitsbits Vi(Ll) erlaubt es deshalb in den meisten Fällen, ohne Interrupt des Prozessors PUl die "linefetch due to störe" Operation durchzuführen. Denn aufgrund der Größenverhältnisse der Ll und L2 Cache-Speicher ist die

statistische Wahrscheinlichkeit groß, daß eine von dem Prozessor PU2 angeforderte Datensequenz i+1 zwar in dem Cache-Speicher L2, aber nicht auf der Ebene des Cache- Speichers Ll des Prozessors PUl vorliegt. In diesen Fällen erübrigt sich dann ein Interrupt des Prozessors PUl.

Die Einsparung von Interrupt Operationen bewirkt, daß das Signal "BUSY" entsprechend weniger lange aktiv sein muß. Das wirkt sich erheblich auf die gesamte

Verarbeitungsgeschwindigkeit des Mikrocomputersystems aus. Das liegt in diesem Beispiel daran, daß während der Zeitdauer der Ausführung der "linefetch due to störe" Operation kein anderer Prozessor des Systems Zugriff auf den Bus 7 erhalten kann. Dadurch daß in den meisten Fällen kein Interrupt eines Prozessors erforderlich ist, kann entsprechend früher einem anderen Systemteilnehmer Zugang auf den Bus gewährt werden.

Dabei ist zu berücksichtigen, daß ein erforderlicher Interrupt unter Umständen viel Zeit in Anspruch nimmt. Ein Interrupt eines Mikroprozessors ist nämlich nicht jederzeit, sondern nur in bestimmten Zuständen des Mikroprozessors möglich. Führt etwa der betreffende Mikroprozessor gerade eine Instruktion aus, die viele Systemzyklen dauert, so kann während dieser Zeit der Interrupt nicht ausgeführt werden. Erst nachdem diese Instruktion abgearbeitet ist, kann der Interrupt des Prozessors durchgeführt werden. Aufgrund der Verwendung des L2 Cache-Speichers nach der Lehre der Erfindung, erübrigt sich jedoch ein zeitraubender Interrupt in den meisten Fällen.

2. Der Mikroprozessor PUl hat in seinem L2 Cache-Speicher eine Datensequenz der Adresse 1, von der Kopien in anderen Cache-Speichern existieren. Das bedingt, daß das Multiple- Copy-Bit (MCBit) der Adresse i (Register 13) logisch 1

ist. Es wird angenommen, daß die Datensequenz der Adresse i nicht in dem Cache-Speicher Ll desselben Prozessors PUl vorhanden ist. Deshalb ist das entsprechende Gültigkeitsbit Vi(Ll) in dem Cache-Speicher L2 des Mikroprozessors PUl logisch 0.

Der Prozessor PU2 hat in seinen Cache-Speichern Ll und L2 ebenfalls eine gültige Kopie der Datensequenz i gespeichert, so daß die jeweiligen MCBits der Adresse i in den Cache-Speichern Ll und L2 des Prozessors PU2 logisch 1 sind. Der Prozessor PU2 hat die Datensequenz i verarbeitet und dabei verändert. Jetzt soll die veränderte Datensequenz i in dem Cache-Speicher Ll des Prozessors PU2 abgespeichert werden.

Die entsprechende Operation "störe in cache-line" kann zunächst nicht durchgeführt werden, da die MCBits logisch 1 sind. Dies entspricht dem MESI-Protokoll. Vor der Abspeicherung der veränderten Datensequenz i müssen zunächst die Kopien der Datensequenz i in den Cache- Speichern des Prozessors PUl invalidiert werden, d.h. das Gültigkeitsbit V(L2) der Adresse i in dem Register 11 des zu dem Prozessor PUl gehörigen Cache-Speichers L2 muß zu logisch 0 werden.

Ein entspechendes Kommando wird auf den Bus 7 ausgegeben und von dem Prozessor PUl - wie auch von weiteren etwa betroffenen Prozessoren - empfangen ("bus snooping"). Daraufhin wird das Gültigkeitsbit V(L2) in dem Cache- Speicher L2 des Prozessors PUl invalidiert. Da das Gültigkeitsbit Vi(Ll) der Adresse 1 in dem Register 3 des Cache-Speichers L2 des Prozessors PUl anzeigt, daß die Datensequenz der Adresse i in dem Cache-Speicher Ll des Prozessors PUl gar nicht vorhanden ist, erübrigt sich eine Invalidierung in diesem Cache-Speicher Ll des Prozessors

PUl. Folglich erübrigt sich auch ein sonst erforderlicher Interrupt des Prozessors PUl.

Nur in einem relativ geringen Prozentsatz der Fälle ist aufgrund der Größenverhältnisse zwischen Ll und L2 Cache- Speicher eine Datensequenz gleichzeitig in beiden Cache- Speichern vorhanden, so daß sich entsprechend meistens ein Interrupt des Prozessors erübrigt. Das hat wiederrum die bereits oben unter 1. beschriebenen vorteilhaften Auswirkungen auf die Verarbeitungsgeschwindigkeit des Mikrocomputersystems insgesamt.

Nach der Invalidierung der Datensequenz 1 kann dann in dem Cache-Speicher Ll und L2 des Prozessors PU2 die Abspeicherung der veränderten Datensequenz i vorgenommen werden. Dadurch wird die frühere Version dieser Datensequenz überschrieben. Das MCBit wird dann zu logisch 0, da in Cache-Speichern anderer Prozessoren keine gültigen Kopien vorliegen, denn diese wurden ja zuvor invalidiert.

3. Der Prozessor PU2 hat in seinem Cache-Speicher L2 eine Datensequenz der Adresse i exklusiv, d.h. es gibt keine Kopien dieser Sequenz in den Cache-Speichern anderer Prozessoren. Es wird angenommen, daß in dem Cache-Speicher Ll des Prozessors PU2 die Datensequenz der Adresse i nicht vorhanden ist. Das einsprechende Gültigkeitsbit Vi(Ll) in dem Cache-Speicher L2 ist dann logisch 0.

Der Prozessor PUl benötigt die Datensequenz der Adresse i ausschließlich zum Lesen, hat sie aber weder in seinem Ll noch in seinem L2 Cache-Speicher. Deshalb gibt der Prozessor PUl ein Kommando "line fetch due to fetch" auf den Bus 7 aus, um die Datensequenz i von dem Speicher des Mikroprozessorsystems anzufordern.

Der L2 Cache-Speicher des Prozessors PU2 erkennt diesen Vorgang auf dem Bus 7 durch "bus snooping". Die Tatsache, daß ein weiterer Prozessor eine Kopie der Datensequenz 1 aus dem Speicher des Mikroprozessorsystems holt, bedeutet, daß diese Datensequenz nicht mehr exklusiv nur in dem Cache-Speicher L2 des Prozessors PU2 vorliegt. Deshalb muß das MCBlt der Adresse 1 in dem Prozessor PU2 auf logisch 1 gesetzt werden.

Nach dem Stand der Technik wäre es nun erforderlich abzuwarten, bis der Prozessor PU2 in einem Zustand ist, in dem die normale Verarbeitung unterbrochen werden kann ("Interrupt"). Erst danach könnte ggf. das MCBit der Adresse i in dem Cache-Speicher Ll des Prozessors PU2 auf logisch 1 gesetzt werden. Dieser Vorgang erübrigt sich jedoch wiederum aufgrund des erfindungsgemäßen Cache- Speichers L2 des Prozessors PU2.

Bereits auf der Ebene des Cache-Speichers L2 liegt die Information in Form des Gültigkeitsbits Vi(Ll) vor, daß die Datensequenz i nicht auch in dem Cache-Speicher Ll desselben Prozessors PU2 vorhanden ist. Deshalb erübrigt sich auch ein Interrupt. Dadurch steigt die Verarbeitungsgeschwindigkeit erheblich.

_

Auch in dem Prozessor PUl, der die Datensequenz i angefordert hat ist es entsprechend erforderlich, das MCBit der Adresse i in seinem Cache-Speicher Ll und L2 auf logisch 1 zu setzen. Die Information, daß in dem Cache- Speicher eines anderen Prozessors - hier des Prozessors PU2 - die angeforderte Datensequenz i bereits vorliegt, wird dem Prozessor PUl durch die Busy-Leitung 18 (Fig.2) übermittelt. Durch das Bus-Protokoll ist sichergesteilet, daß hierfür während eines Systemzyklus ein entsprechendes Signal durch den Cache-Speicher L2 des Prozessors PU2 auf

die Busy-Leitung 18 ausgegeben wird, nachdem die Übereinstimmung festgestellt wurde.

Wird in einen Cache-Speicher Ll eine Datensequenz der Adresse i abgespeichert, so ist es deshalb erforderlich entsprechend das Gültigkeitsbit Vi(Ll) in dem Cache- Speicher L2 desselben Prozessors zu setzten.