PatentDe  


Dokumentenidentifikation DE3686291T2 11.03.1993
EP-Veröffentlichungsnummer 0203601
Titel Cache-Anordnung mit einem LRU-Verfahren und Magnetscheibensteuereinrichtung mit einer solchen Anordnung.
Anmelder Kabushiki Kaisha Toshiba, Kawasaki, Kanagawa, JP;
Toshiba Computer Engineering Corp., Oome, Tokio/Tokyo, JP
Erfinder Furuya, Akihiko;
Kanamaru, Kouiti, Minato-ku Tokyo 105, JP;
Inoue, Junichi, Hachioji-shi Tokyo, JP
Vertreter Feiler, L., Dr.rer.nat.; Hänzel, W., Dipl.-Ing.; Kottmann, D., Dipl.-Ing, Pat.-Anwälte, 8000 München
DE-Aktenzeichen 3686291
Vertragsstaaten DE, FR, GB, IT, NL
Sprache des Dokument En
EP-Anmeldetag 28.05.1986
EP-Aktenzeichen 861072841
EP-Offenlegungsdatum 03.12.1986
EP date of grant 05.08.1992
Veröffentlichungstag im Patentblatt 11.03.1993
IPC-Hauptklasse G06F 12/08
IPC-Nebenklasse G06F 12/12   G06F 3/06   

Beschreibung[de]

Die vorliegende Erfindung betrifft ein Cache-System, das sich eines LRU-Systems (Least Recently Used = am längsten unbenutzt) in einem Austauschalgorithmus für Cache-Blöcke bedient, sowie einen mit dem Cache-System ausgerüsteten Magnetplatten-Controller.

Platten-Cache-Systeme, die den schnellen Datenzugriff auf Magnetplatten ermöglichen, sind bereits entwickelt. Ein Platten-Cache ist eine Speichereinrichtung mit einem Halbleiter-RAM, die so konzipiert ist, daß sie eine Zugriffslücke zwischen einem schnellen Arbeitsspeicher und langsamen Sekundärspeichern großer Kapazität (z. B. Magnetplatteneinheiten) beseitigen. Der Platten-Cache ist normalerweise in einem Magnetplatten-Controller zwischen dem Arbeitsspeicher und einer Magnetplatteneinheit angeordnet und dient als Datenpuffer.

Das Prinzip des Platten-Cache ist identisch mit dem eines Zentraleinheits-Cache (Central Processing Unit = CPU). Greift eine CPU erstmals auf Teile einer Datei zu, so werden die benötigten Datenblöcke auf einer Platte gespeichert. In diesem Fall ist der Platten-Cache nicht an einem derartigen CPU-Zugriff beteiligt.

Die benötigten Blöcke werden von der Platte in den Arbeitsspeicher gebracht. Gleichzeitig werden sie in den Platten-Cache ausgeschrieben. Bei einem späteren Zugriff der CPU auf dieselben Blöcke werden sie vom Platten-Cache und nicht von der Platte geholt. Die Zugriffszeit auf die Magnetplatteneinheit beträgt normalerweise 20 bis 30 ms, während die Zugriffszeit auf den Platten-Cache bei 1 bis 3 ms liegt. Die Zugriffszeit kann folglich auf etwa 1/10 reduziert werden. Wird eine Gesamtzugriffszeit als Eingabe/Ausgabe-Reaktionszeit, einschließlich Datenübertragungszeit und Kanalwartezeit betrachtet, so ist normalerweise eine Reduzierung auf die Hälfte bis auf ein Drittel möglich.

Da die Kapazität eines Platten-Cache kleiner ist als die der Platte (etwa 1/1000), sind nicht alle von der CPU benötigten Dateiblöcke ständig im Platten-Cache gespeichert. Um bei einem mit Dateiblöcken belegten Platten-Cache neue Blöcke laden zu können, müssen alte Blöcke entfernt werden. Wenn der Zugriff auf den Cache das Auffinden erforderlicher Daten im Cache ermöglicht, so spricht man von einem "Treffer", können die gewünschten Daten nicht gefunden werden, handelt es sich um einen sog. "Fehlschlag". Die durchschnittliche Anzahl der Treffer bezogen auf die Häufigkeit der Cache-Nichtübereinstimmungen wird als Trefferquote bezeichnet.

Zusätzlich zum Platten-Cache umfassen die Platten-Cache-Komponenten einen Platten-Cache-Handler als ein Programm im Eingangs/Ausgangs-Controller, einen Datenübertragungsmechanismus zwischen dem Arbeitsspeicher und dem Platten-Cache sowie ein Platten-Cache-Verzeichnis. Der Platten-Cache-Handler arbeitet mit einem Betriebssystem (Operating System = OS) zusammen, um das Treffer/Fehlschlag-Verhältnis des Platten-Cache zu ermitteln, die Datenübertragung zwischen dem Arbeitsspeicher, dem Platten-Cache und den Magnetplatten zu steuern und um repräsentative Daten, wie den Nutzungsgrad des Platten-Cache, die Trefferquote usw. zu erfassen.

Die Schreibzugriffsschemata beinhalten ein Schreibdurchgriffsschema sowie ein Rückschreibschema. Das Schreibdurchgriffsschema wird im Zusammenhang mit dem Eintragen der Daten direkt auf die Platte als Durchgriffsspeicherung bezeichnet. Die Verarbeitung eines Cache-Treffers erfolgt in der Weise, daß der Cache-Trefferblock gesperrt wird, indem keine Daten dorthin eingetragen werden, oder indem die Daten in den Cache-Trefferblock eingeschrieben werden, nachdem dieser auf die Platte übertragen ist.

Das Rückschreibschema wird als Eintrags-, Rückkopier- oder Nachtragschema bezeichnet. Nach diesem Schema erhält das Schreiben in den Platten-Cache höchste Priorität. Ist das Eintragen von Daten in eine Datei des Platten-Cache abgeschlossen, so ist die Dateneingabe/-ausgabe abgeschlossen. Wird die Datei nicht gebraucht oder muß der die Datei enthaltende Cache-Block für andere Dateien frei gemacht werden, so werden die Daten vom Cache auf die Platte gebracht.

Im Falle des Platten-Cache wird das Kopieren von Daten von der Magnetplatte in den Cache-Speicher als "Einspeichern", das Kopieren aus dem Cache-Speicher auf die Magnetplatte dementsprechend als "Ausspeichern" bezeichnet.

Ein typisches Platten-Cache-Speichereintragsschema ist ein teilassoziatives Schema. Nach diesem Schema sind die Magnetplatte und der Platten-Cache-Speicher in eine Vielzahl von Blöcken unterteilt (z. B.: ein Block = eine Spur = 64 Sektoren). Jeder Block gehört zu einer beliebigen Spalte. Um einen bestimmten Block von der Magnetplatte in den Cache-Speicher zu übertragen, wird dieser Block in eine identische Spalte des Cache-Speichers geschrieben, und Daten (die angeben, welcher Block, d. h. eine Blocknummer, der Magnetplatte im Cache-Speicher gespeichert wird) werden im Verzeichnis in Einheiten von Spalten festgehalten. Anhand dieses Verzeichnisses kann festgestellt werden, ob spezifische Daten im Cache-Speicher abgelegt sind oder nicht. Sind die Daten im Cache-Speicher gespeichert, so können sie anstatt von der Magnetplatteneinheit vom Cache-Speicher ausgelesen werden.

Der Austauschalgorithmus für den Platten-Cache ist ein LRU-Algorithmus. LRU ist die Abkürzung für "Least Recently Used" (am längsten unbenutzt). Gemäß dem LRU-Algorithmus wird der Block, der nach dem letzten Zugriff am längsten im Speicher verbleibt, als der am wenigsten benötigte Block gewählt. Wenn bei einem Platten-Cache ohne freien Speicherplatz der Cache-Speicher für erneutes Einspeichern zugewiesen werden muß, werden die am wenigsten benutzten Spuren freigegeben, um einen freien Speicherplatz zu schaffen. Der LRU-Algorithmus dient zur Bereitstellung dieses freien Speicherplatzes.

Wenn als Ergebnis eines Verzeichnissuchlaufs ein Cache-Treffer erfolgt, so wird der LRU-Wert im Cache-Verzeichnis, der dem getroffenen Cache-Block entspricht, auf "0" initialisiert. Im Falle eines erfolglosen Cache-Suchlaufs muß der LRU-Wert, der dem zu ersetzenden Cache-Block entspricht, erneut eingetragen werden. Ereignet sich der erfolglose Cache-Suchlauf in diesem Fall in Betriebsart Lesen, so wird der entsprechende Datenblock von der Magnetplatteneinheit ausgelesen und in dem Cache-Block des Cache-Speichers abgespeichert, der zu ersetzen ist.

Bei einem herkömmlichen Cache-System werden LRU-Einstellwerte ungeachtet der im Cache-Speicher abgelegten Datenblöcke festgelegt.

Die Zugriffshäufigkeit der in den Cache-Blöcken abgelegten Datenblöcke variiert entsprechend der verschiedenen Arten von Dateien. Bei Ablage eines Datenblocks mit niedriger Zugriffshäufigkeit im Cache-Block ist die Wahrscheinlichkeit der Residenz dieses Datenblocks im Cache-Speicher oft höher als diejenige einer Datei mit hoher Zugriffshäufigkeit. Aus diesem Grund ist eine abnehmende Tendenz der Trefferquote des Cache-Speichers festzustellen.

Bei dem herkömmlichen Platten-Cache-System dieses Typs erfolgt das Schreiben auf Platte stets als Reaktion auf einen Plattenschreibbefehl seitens eines Hostsystems. Im Falle des konventionellen Systems werden die Inhalte des Cache-Speichers und der Platteneinheit selbst dann gleichzeitig aktualisiert, wenn die Daten in dem dem Schreibmodus unterliegenden Speicherbereich im Cache-Speicher abgelegt sind (sogar nach einem Cache-Treffer). Damit wird verhindert, daß nicht aktualisierte Daten auf der Platte verbleiben, wenn ein Ausfall, z. B. ein Netzausfall, eintritt.

Nach dem obenbeschriebenen System ist jedoch eine hohe Leistung der Platten-Cache-Struktur nur dann möglich, wenn eine hohe Lesehäufigkeit gegeben ist. Bei einer hohen Schreibhäufigkeit kann eine nennenswerte Leistungsverbesserung nicht erwartet werden.

Bei Verwendung einer Stromversorgungseinheit, die gegen die Auswirkungen eines Netzausfalls gesichert ist, braucht das Schreiben auf Platte nicht zum Zeitpunkt eines Cache-Treffers im Modus Schreiben zu erfolgen. Eine Stromversorgungseinheit dieser Bauart ist allerdings sehr teuer.

Es sei angenommen, daß die CPU eine Lesezugriffsanforderung für eine bestimmte Datei absetzt. Der Magnetplatten-Controller durchsucht ein Platten-Cache-Verzeichnis (eine Tabelle mit Dateiinformationen, z. B. einem Dateinamen, einer Dateigröße und einer Dateiadresse) und prüft, ob der fragliche Datenblock im Platten-Cache abgelegt ist. Bei einem Cache-Treffer wird der entsprechende Datenblock vom Cache-Speicher in den Arbeitsspeicher gebracht.

Im Falle eines erfolglosen Cache-Suchlaufs jedoch werden mehrere Blöcke (im allgemeinen diejenigen einer Spur), einschließlich des angeforderten Blocks, an den Cache-Speicher geschickt, wobei nur der angeforderte Block an den Arbeitsspeicher geschickt wird. Die Datenübertragung an den Cache-Speicher findet gleichzeitig mit der Übertragung in den Arbeitsspeicher statt. Es können allerdings auch alle Blöcke in den Cache-Speicher und erst dann der fragliche Block in den Arbeitsspeicher gebracht werden.

Für einen Magnetplatten-Controller, der in der Lage ist, die beiden obigen Übertragungsschemata zu erfüllen sowie eine effektive Datenbereitstellung nach einer erfolglosen Cache-Suche abzuwickeln, hat sich eine starke Nachfrage entwickelt.

Bei der gemeinsamen Benutzung eines Cache-Speichers durch z. B. 4 Magnetplattenlaufwerke DK0 bis DK3 werden den jeweiligen Laufwerken DK0 bis DK3 permanent verschiedene Cache-Speicherbereiche zugewiesen, und es wird ein Verzeichnisspeicher mit entsprechender Speicherzuordnung erstellt, wie dies in der Fig. 1 dargestellt ist.

Gemäß dem obenbeschriebenen System ist jedoch der begrenzte Raum des Cache-Speichers unterteilt, wodurch die den jeweiligen Magnetplattenlaufwerken zugewiesenen Cache-Bereiche kleiner sind, was wiederum zu einer Abnahme der Cache-Trefferquote führt. Bei sich ändernder Zugriffshäufigkeit für die verschiedenen Laufwerke nimmt die Benutzungshäufigkeit des dem Laufwerk mit der niedrigsten Zugriffshäufigkeit entsprechenden Cache-Speicherplatzes ab. Als Ergebnis tritt eine Verschlechterung des Gesamtnutzungsgrades des Cache-Speichers ein.

Es ist eine Aufgabe der vorliegenden Erfindung, ein Cache-System bereitzustellen, bei dem Einstellwerte zur LRU-Initialisierung oder für Neueintragungen Variable sind und die Residenzwahrscheinlich der Datenblöcke im Cache-Speicher kontrolliert werden kann.

Eine weitere Aufgabe der vorliegenden Erfindung ist die Bereitstellung eines Platten-Cache-Systems, bei dem die Häufigkeit, mit der Daten auf Platte geschrieben werden, ohne Verwendung eines teuren Stromversorgungsgeräts gesenkt werden kann, um die Systemleistung zu verbessern.

Zur Lösung der obigen Aufgabenstellung sieht die vorliegende Erfindung ein Cache-System gemäß Anspruch 1 vor.

Aufgrund der vorliegenden Erfindung wird ein Magnetplatten-Controller in die Lage versetzt, bei Auftreten von Lesefehlern bzw. erfolglosen Cache-Suchläufen die Datenbereitstellung in wirksamer Weise zur Erzielung einer hohen Übertragungsgeschwindigkeit abzuwickeln, sowie einen Cache-Speicher effektiv zu nutzen, der von einer beliebigen Anzahl von Magnetplattenlaufwerken gemeinsam verwendet wird.

Die vorliegenden Erfindung wird anhand der nachstehenden detaillierten Beschreibung und in Zusammenhang mit den beiliegenden Zeichnungen näher erläutert; es zeigen:

Fig. 1 eine schematische Ansicht, die die Entsprechung eines Cache-Speichers und eines Verzeichnisspeichers in einem herkömmlichen System darstellt;

Fig. 2 ein Blockdiagramm einer Ausführungsform eines Magnetplatten-Controllers mit einem Platten-Cache-Speicher gemäß der vorliegenden Erfindung;

Fig. 3 ein Format einer Eintragsstruktur eines Speicherverzeichnisses gemäß Fig. 2;

Fig. 4 ein Format eines in dem System gemäß Fig. 2 verwendeten Lese/Schreib-Befehls;

Fig. 5 ein Format eines LRU-Einstellwertes;

Fig. 6 ein Format von im Verzeichnisspeicher 35&sub1; gespeicherten Verzeichnisdaten in einer weiteren Ausführungsform eines Platten-Cache-Systems gemäß der vorliegenden Erfindung;

Fig. 7 ein Format, das den Hauptbestandteil eines Plattenschreibbefehls darstellt, wie er in der Ausführungsform nach Fig. 6 verwendet wird;

Fig. 8 ein Format, das den Hauptbestandteil eines Plattenlesebefehls darstellt, wie er in der Ausführungsform nach Fig. 6 verwendet wird;

Fig. 9 bis 12 Flußdiagramme zur Verdeutlichung der Funktionsweise der Ausführungsform gemäß Fig. 6, wobei Fig. 9 ein Flußdiagramm ist, das die Steuerfunktion des Magnetplatten-Controllers bei Erhalt eines Plattenschreibbefehls von einem Hostsystem erläutert, Fig. 10 ein Flußdiagramm der Such-Subroutine, Fig. 11 ein Flußdiagramm zur Erläuterung der Steuerfunktion des Magnetplatten-Controllers bei Erhalt eine Plattenlesebefehls von einem Hostsystem und Fig. 12 ein Flußdiagramm zur Verdeutlichung der Funktionsweise des Magnetplatten-Controllers 20 während eines Netzausfalls;

Fig. 13A bis 13E Ansichten zur Erläuterung der Operationsinhalte des Steuercodes C für die Richtung der Datenübertragung, der vom Magnetplatten-Controller gemäß der vorliegenden Erfindung verwendet wird;

Fig. 14 ein Diagramm zur Verdeutlichung der bei Auftreten eines Lesefehlers erzeugten Cache-Operationszieldaten;

Fig. 15 ein Impulsverlauf zur Verdeutlichung der Plattenleseoperation gemäß Fig. 14;

Fig. 16 ein Diagramm zur Verdeutlichung anderer Cache-Operationszieldaten;

Fig. 17 ein Blockdiagramm einer weiteren Ausführungsform eines Magnetplatten-Controllers gemäß der vorliegenden Erfindung;

Fig. 18 ein Format der in der Ausführungsform gemäß Fig. 17 verwendeten Verzeichnisdaten;

Fig. 19 ein Format eines in der Ausführungsform gemäß Fig. 17 verwendeten Lese/Schreib-Befehls;

Fig. 20 das Datenformat eines Verzeichnisspeichers, wie er in der Ausführungsform gemäß Fig. 17 verwendet wird; und

Fig. 21 eine schematische Ansicht, die die Entsprechung zwischen dem Cache-Speicher 33 und dem Verzeichnisspeicher 35&sub1; in der Ausführungsform gemäß Mol-%17 darstellt.

Die Fig. 2 ist ein Blockdiagramm einer Ausführungsform eines Magnetplatten-Controllers 20 mit einem Platten-Cache-System. Eine Festplatten-Steuerschaltung (im weiteren als HDC bezeichnet) 21 zur Steuerung einer Platteneinheit 10 ist mit einem Hostsystem 11 über einen ersten Bus 24 verbunden, der aus einer Datenleitung 22 und einer Steuerleitung 23 sowie einem Treiber/Empfänger-Glied (im folgenden als D/R bezeichnet) 25 besteht. Die HDC 21 ist außerdem mit einem zweiten Bus 26 verbunden. Die HDC 21 besteht aus einem Befehlsregister 21&sub1;, einem ID-Register 21&sub2; sowie aus einem DMA 21&sub3;. Des weiteren ist der Bus 26 mit einem Mikroprozessor 27 verbunden, der den Gesamtbetrieb des Controllers 20, eines die Steuerprogramme (Mikroprogramme) für den Mikroprozessor 27 aufnehmenden Programmspeichers 28, eines als Arbeitsbereich des Mikroprozessors 27 dienenden Arbeitsspeichers sowie eines Pufferspeichers 30 steuert, der eine Differenz zwischen den Übertragungsgeschwindigkeiten der Platteneinheit 10 und des Hostsystems 11 ausgleicht. Ein dritter Bus 31 ist mit einer Cache-Steuerschaltung 34 verbunden, um hauptsächlich die Datenübertragung zu steuern, die die Steuerung eines Cache-Speichers 33, einer Verzeichnisspeicher/Suchschaltung 35, bestehend aus einem Verzeichnisspeicher 35&sub1; und einer Verzeichnissuchschaltung 35&sub2;, sowie eines Adreßstapelspeichers 45 beinhaltet. Ein Speicher 45 ist als FIFO- (first-in first-out)-Stapelspeicher zur Speicherung der aus drei Parametern bestehenden Cache-Operationszieldaten konzipiert. Bei diesen drei Parametern handelt es sich um die Übertragungsstart-Cache-Adresse a, die Anzahl 1 der Übertragungssektoren und den Steuercode c für die Richtung der Datenübertragung. Ausgang eines Stapeladreßzählers 46 ist mit Adreßport A eines Adreßstapelspeichers 45 verbunden. Der Bus 26 ist mit dem Eingang des Zählers 46 verbunden.

Der Bus 31 ist mit dem Eingang eines LRU-Zählers (im weiteren als CLRU bezeichnet) 36 zur Speicherung eines im Speichersuchmodus aus dem Speicher 35&sub1; ausgelesenen LRU-Wertes sowie mit dem Ausgang eines Treibers 37 verbunden. Der Ausgang des CLRU 36 und der Eingang des Treibers 37 sind mit der Cache-Steuerschaltung 34 verbunden. Der Bus 31 ist außerdem mit dem Eingangsport einer Registerdatei 38 und dem B-Eingang eines Komparators 39 verbunden. Der A-Eingang des Komparators 39 empfängt die Daten vom Bus 31. Der Ausgangsport des Komparators 39 ist mit der Steuerschaltung 34 verbunden. Die Steuerschaltung 34 ist zur Steuerung der Eingangsdaten zur Registerdatei 38 mit dieser verbunden, d. h. des Inhalts (LRU-Werte) von CLRU 36, der vom Treiber 37 über den Bus 31 ausgegeben wird. Die Datei 38 umfaßt vier Register 50 bis 53, d. h. RTCA0 bis RTCA3.

Der Ausgang eines Verzeichnisspeicher-Adreßzählers (im folgenden als CDMA bezeichnet) 40 wird an Adreßport A von Verzeichnisspeicher 35&sub1; gelegt, um die Adressen des Speichers 35&sub1; anzugeben. Der Eingang des CDMA 40 ist mit dem zweiten Bus 26 gekoppelt. Der Ausgang des CDMA 40 ist mit dem Eingang einer Registerdatei 41 verbunden. Der Ausgang der Datei 41 ist ebenfalls mit dem Bus 26 gekoppelt. Die Datei 41 ist außerdem über eine Steuerleitung 65 angeschlossen, um Steuersignale von der Cache-Steuerschaltung 34 empfangen zu können. Die Registerdatei 41 besteht aus drei Registern 60 bis 62, d. h. RCGA0 bis RCGA2.

Jeder Eintrag im Verzeichnisspeicher 35&sub1; enthält ein Plattenblockfeld (8 Bits) 81, das die Anzahl der im Cache-Speicher 33 gespeicherten Datenblöcke wiedergibt, sowie ein LRU-Zählerfeld (8 Bits) 83, das einen LRU-Wert gemäß Fig. 3 wiedergibt. Die Anzahl der Einträge in den Speicher 35&sub1; entspricht derjenigen der Cache-Blöcke im Cache-Speicher 33. Bei dieser Ausführungsform sind 16 Einträge für jede Spalte gegeben. Eine Spur der Platteneinheit 10 umfaßt 64 Sektoren, wovon jeder einem Block des Cache-Speichers 33 entspricht. Der Speicherbereich der Platteneinheit 10 ist in Spalte 0 und Spalte 1 unterteilt, die jeweils Daten in Einheiten von 64 Sektoren abspeichern. Ein Spaltenwert wird durch das siebte Bit des niedrigstwertigen Byte einer logischen Plattenadresse (auf die später eingegangen wird) repräsentiert. Die Anzahl der Plattenblöcke wird durch das höchstwertige Bit ausschließlich der sieben niedrigerwertigen Bits der logischen Plattenadresse angegeben.

Der Magnetplatten-Controller gemäß der vorliegenden Ausführungsform verfügt über folgende Merkmale:

(I) Ein Sektor der Magnetplatte umfaßt 256 Bytes.

(II) Ein Block (Cache-Block) des Cache-Speichers 33 umfaßt 16 KByte (64 Sektoren), so daß folglich ein Block (Plattenblock) der Platte 16 KByte (64 Sektoren) umfaßt.

(III) Ein Eintragsschema des Cache-Speichers 33 ist ein teilassoziatives Schema.

(IV) Ein Cache-Blockersatzschema ist ein LRU-Schema.

(V) Die Anzahl von Ebenen (d. h. die Anzahl von Einträgen) des Verzeichnisspeichers 35&sub1; beträgt 16 pro Spalte.

(VI) Die Kapazität des Cache-Speichers beträgt 512 KByte.

Die Funktionsweise der Ausführungsform gemäß Fig. 2 wird im folgenden beschrieben.

Ein vom Hostsystem 11 abgesetzter Lese/Schreib-Befehl wird über das D/R 25 und den Bus 24 im Befehlsregister 21&sub1; der HDC 21 abgelegt. Bei dem Lese/Schreib-Befehl handelt es sich um einen 6-Byte-Befehl einschließlich eines Befehlscodes 85 zur Angabe der Lese/Schreib-Operation oder dergl., einer logischen Plattenadresse, bestehend aus einer logischen Adresse 2 (höchstwertiges Byte) 87, einer logischen Adresse l (Bezugszeichen 89) und einer logischen Adresse 0 (niedrigstwertiges Byte) 91, der Anzahl der Datenblöcke und jedes der Felder 93 der Cache-Steuerbits CC2 bis CC0 (Fig. 4).

Der Lese/Schreib-Befehl im Register 21&sub1; wird durch den Mikroprozessor 27 ausgelesen und in einem vorgegebenen Bereich des Arbeitsspeichers 29 abgelegt. Wenn der Mikroprozessor 27 den vom Hostsystem 11 abgesetzten Lese/Schreibbefehl im Speicher 29 ablegt, gibt der Mikroprozessor 27 einen Suchbefehl aus, der dann im Befehlsregister 21&sub1; der HDC 21 gesetzt ist. Die HDC 21 steuert die Platteneinheit 10 bei der Suche nach einer bestimmten Spur. Der Mikroprozessor 27 setzt außerdem gemäß des Lese/Schreib-Befehls über den Bus 26, das D/R 32 und den Bus 31 in der Registerdatei 38 eine Anzahl von Plattenblöcken entsprechend dem Zugriffsbereich der Platteneinheit 10 sowie einen LRU-Wert von "0". Der Mikroprozessor 27 setzt Bit 6 der logischen Adresse 0 (Fig. 4), d. h. die Startadresse des Eintrags in jedem Bereich, auf den der aktuelle Lesezugriff erfolgt, (bei 16 Einträgen) im Verzeichnisspeicher 35&sub1; des CDMA 40. In diesem Fall erfolgt der Zugriff auf jeden Bereich durch den Spaltenwert. Der darauffolgende Verzeichnissuchzyklus wird 16 mal wiederholt.

Für den Verzeichnissuchzyklus ist die durch den CDMA 40 vorgegebene Adresse im RCGA0 60 der Registerdatei 41 gesetzt. Aus diesem Grund ist die Startposition des aktuell gesuchten Eintrags stets im RCGA0 60 der Registerdatei 41 gespeichert.

Der CDMA 40 wird sequentiell hochgezählt. Die Verzeichnisdaten des Eintrags im Verzeichnisspeicher 35&sub1; werden in Einheiten von Bytes als Reaktion auf die Zählung des CDMA 40 auf den Bus 31 ausgelesen. Die ausgelesenen Verzeichnisdaten werden an den B-Eingang des Komparators 39 geliefert. Die Bytedaten aus der Registerdatei 38 werden an den A-Eingang des Komparator 39 als Reaktion auf die an den B-Eingang gelieferten Daten geschickt. Der Komparator 39 vergleicht die Inhalte der Eingänge A und B.

Das Vergleichsergebnis des Komparators 39, d. h. das Ergebnis des Vergleichs der Anzahl von Zieldatenblöcken aus der Datei 38 mit der Anzahl gespeicherter Datenblöcke aus dem Speicher 35&sub1; in Einheiten von Bytes wird an die Cache-Steuerschaltung 34 geliefert. Das Resultat des Vergleichs zwischen dem LRU-Wert aus der Datei 38 und demjenigen aus dem Speicher 35&sub1; wird ebenfalls an die Cache-Steuerschaltung 34 geliefert. Der aus dem Speicher 35&sub1; über den Bus 31 an den B-Eingang des Komparators 39 gelieferte LRU-Wert wird dem CLRU 36 übergeben. Der im CLRU 36 gespeicherte LRU-Wert wird um Eins hochgezählt.

Die Cache-Steuerschaltung 34 legt aufgrund des Vergleichsergebnisses durch den Komparator 39 der Anzahl von Datenblöcken fest, ob ein Cache-Treffer erfolgte. Bestätigt die Schaltung 34 die vom Komparator 39 erkannte Koinzidenz und damit einen Cache-Treffer, so versieht sie die im RCGA0 60 der Registerdatei 41 gesetzte Adresse mit einem Cache-Treffer-Flag bzw. -Merker, d. h. diejenige Adresse, die die Startposition des durchsuchten Eintrags innerhalb des aktuellen Verzeichnissuchzyklus repräsentiert. Die Adresse mit einem Cache-Treffer-Flag wird im RCGA1 61 der Registerdatei 41 gesetzt. Die Cache-Steuerschaltung bestimmt den Eintrag des Verzeichnisspeichers 35&sub1;, der dem zu diesem Zeitpunkt zu ersetzenden Cache-Block entspricht, in Übereinstimmung mit dem Resultat des LRU-Wertvergleichs. Im einzelnen wird bei Überschreiten des in der Datei 38 abgelegten Wertes durch den LRU-Wert aus dem Speicher 35&sub1; seitens der Cache-Steuerschaltung 34 festgelegt, daß der dem Eintrag entsprechende Cache-Block ein Kandidat für einen zu ersetzenden Block ist. Die Steuerschaltung 34 überträgt die Adresse aus dem RCGA0 60 der Datei 41 an den RCGA2 62 dieser Datei. Die Steuerschaltung 34 veranlaßt den Treiber 37, den hochgezählten LRU-Wert aus dem CLRU 36 auf den Bus 31 zu legen. Der LRU-Wert in der Registerdatei 38 wird dann aktualisiert, um demjenigen auf dem Bus 31 zu entsprechen. Die Cache-Steuerschaltung schreibt außerdem den im CLRU 36 abgelegten LRU-Wert über den Bus 31 in den entsprechenden Eintrag im Verzeichnisspeicher 35&sub1; aus, wobei das Vergleichsergebnis des Komparators 39 unberücksichtigt bleibt. Bei dieser Ausführungsform wird der LRU-Wert im entsprechenden Eintrag im Speicher 35&sub1; bei jedem Verzeichnissuchzyklus um Eins hochgezählt.

Die obenbeschriebene Operation ist der Verzeichnissuchzyklus. Dieser Zyklus wird 16 mal wiederholt, um den vollständige Verzeichnissuchlauf entsprechend des gegebenen Lese/Schreibbefehls durchzuführen. Wenn in diesem Fall ein Cache-Treffer festgestellt wird, wird die Startadresse des Eintrags im Speicher 35&sub1;, die dem getroffenen Cache-Block entspricht, im RCGA1 61 der Registerdatei 41 gesetzt. Die Startadresse des Eintrags im Speicher 35&sub1; mit dem größten LRU-Wert in der angegebenen Spalte wird im RCGA2 62 gespeichert.

Nach Abschluß des Verzeichnissuchlaufs holt der Mikroprozessor 27 den Inhalt des RCGA1 61 in der Datei 41 über den Bus 26 und prüft das obenerwähnte Flag in RCGA1 61 darauf, ob ein Cache-Treffer oder ein erfolgloser Suchlauf stattfand. Stellt der Mikroprozessor 27 einen Cache-Treffer fest, so wird der LRU-Wert im Eintrag des Speichers 35&sub1;, der durch den Inhalt (Verzeichnisadresse) des RCGA1 61 in der Datei 41 festgelegt ist, initialisiert (oder neu abgespeichert). Ist jedoch Betriebsart Lesen vorgeschrieben, so wird selbst bei Feststellung eines erfolglosen Speichersuchlaufs der LRU-Wert im Eintrag des Speichers 35&sub1;, der durch den Inhalt des RCGA2 62 in der Datei 41 festgelegt ist, initialisisiert (oder neu abgespeichert).

Bei der Initialisierung (oder Neuabspeicherung) des LRU-Wertes greift der Mikroprozessor 27 auf den vom Hostsystem 11 abgesetzten und im Pufferspeicher 30 abgelegten Lese/ Schreib-Befehl zurück. Der Mikroprozessor 27 prüft, ob das zu den Bits CC2 bis CC0 gehörige Cache-Steuerbit CC2 den Wert "0" hat. Wenn CC2 = "0", dann werden CC1 und CC2 als LRU-Einstellwerte definiert. In diesem Fall werden CC1 und CC2 um 6 Bits nach links verschoben, um einen LRU-Einstellwert "CC1 (MSB - höchstwertiges Bit), CC0, 0, 0, 0, 0, 0, 0 (LSB - niedrigstwertiges Bit)" gemäß Fig. 5 zu erstellen. Der gleiche LRU-Einstellwert wird über den Bus 26, das D/R 32 und den Bus 31 an den Verzeichnisspeicher 35&sub1; geschickt und im LRU-Zählerfeld 83 des Eintrags im Speicher 35&sub1; abgelegt. Bei dem durch den CLRU 36 im nächsten Verzeichnissuchlauf wird der aktualisierte LRU-Einstellwert für den LRU-Wertvergleich und die Einstellung herangezogen. Sind CC1 und CC0 auf "1" gesetzt, so kann die Residenzdauer des Datenblocks im Cache-Speicher 33 verkürzt werden. Sind jedoch CC1 und CC0 auf "0" gesetzt, kann diese Dauer verlängert werden.

Die Fig. 6 bis 12 zeigen eine weitere Ausführungsform eines Platten-Cache-Systems, bei dem die Anzahl der Schreibzyklen für die Platte verringert werden kann, ohne dazu eine teure Stromversorgung zu benötigen, wodurch eine Verbesserung der Systemleistung erzielt wird.

Die Fig. 6 zeigt ein Format der im Verzeichnisspeicher 35&sub1; abgelegten Verzeichnisdaten.

Der Verzeichnisdatensatz in jedem Eintrag im Verzeichnisspeicher 35&sub1; besteht aus einem cache-aktiven Bit, das angibt, ob der Inhalt eines Blocks (Cache-Block) im Cache-Speicher 33 für einen entsprechenden Eintrag wirksam ist oder nicht, aus einem Schreibbefehl-Empfangsbit, das angibt, ob die vom Hostsystem 11 vorgeschriebenen Schreibdaten vollständig in die Platteneinheit 10 eingeschrieben sind oder nicht, aus einem Residenzbit, das angibt, ob der Ersatz des diesem Eintrag entsprechenden Cache-Blocks gesperrt ist, aus einer Plattenadresse (Plattenblockadresse) eines im Cache-Speicher 33 abgelegten Datenblocks (Plattenblock) sowie aus einem Ersatzzähler (Ersatzzählerwert), der für die Ersatzoperation herangezogen wird.

Die Fig. 7 zeigt das Format eines vom Hostsystem 11 an den Platten-Controller 20 abgesetzten Plattenschreibbefehls. Der Schreibbefehl enthält ein vorgeschriebenes Schreibbefehl-Kennzeichnungsbit zur Bestimmung, ob es sich bei dem Schreibbefehl um den vorgeschriebenen Schreibbefehl handelt, der ein Schreiben der Daten in den Cache-Speicher 33 zuläßt, jedoch kein Schreiben der Daten in die Platteneinheit 10 erforderlich macht, wenn im Plattenschreibmodus ein Cache-Treffer festgestellt wird.

Die Fig. 8 zeigt ein Format eines vom Hostsystem 11 an den Platten-Controller 20 abgesetzten Plattenlesebefehls. Der Lesebefehl enthält ein Residenzkennzeichnungsbit zur Angabe des Setzens/Rücksetzens eines Residenzbit eines Eintrags (des sog. Ersatzeintrags) im Speicher 35&sub1;, der dem Cache-Block (dem Ersatz unterliegend) im Cache-Speicher 33 entspricht, wenn im Plattenleseanforderungsmodus ein erfolgloser Cache-Suchlauf festgestellt wird.

Die Funktionsweise des obenbeschriebenen Systems wird nachstehend erklärt. Die Betriebsweise wird beispielhaft an einem Fall gemäß dem Flußdiagramm der Fig. 9 erläutert, in dem ein Plattenschreibbefehl vom Hostsystem 11 an den Platten-Controller 20 abgesetzt wird.

Wenn der Plattenschreibbefehl vom Hostsystem 11 an den Platten-Controller 20 geschickt wird, führt der Controller 20 einen Suchlauf des Verzeichnisspeichers 35&sub1; (Schritt 101) durch. Im Rahmen dieses Suchschrittes prüft der Mikroprozessor 27 gemäß Fig. 10, ob die in den Block der durch einen Befehl angegebenen Platteneinheit einzuschreibenden Daten im Cache-Speicher 33 vorhanden sind (Schritt 103). Im Falle eines Schreibbefehls (Schritt 104) wird die Anzahl der Einträge, deren Schreibbefehlsempfängerbits gesetzt sind, gezählt (Schritt 105). Der Zählwert aus dem Ersatzzähler wird im Register RTCA0 50 der Registerdatei 38 abgespeichert (Schritt 106).

Wenn der Mikroprozessor 27 in Schritt 107 gemäß Fig. 9 einen erfolglosen Cache-Suchlauf feststellt, so schreibt der Controller 20 die Schreibdaten vom Hostsystem 11 unmittelbar in die Platteneinheit 10 ein (Schritt 109); der Datenfluß ist damit beendet. Wird Schritt 107 jedoch mit JA beantwortet, prüft der Platten-Controller 20, ob das vorgeschriebene Schreibbefehl-Kennzeichnungsbit im Plattenschreibbefehl vom Hostsystem 11 gesetzt ist, d. h. ob der Plattenschreibbefehl der vorgeschriebene Schreibbefehl ist (Schritt 111).

Wird Schritt 111 mit NEIN beantwortet, so schreibt der Controller 20 die Schreibdaten vom Hostsystem 11 in den Cache-Speicher 33 und in die Platteneinheit 10 (Schritt 113). Der Controller 20 aktualisiert daraufhin den Ersatzzähler im Biteintrag des Verzeichnisspeichers 35&sub1; (Schritt 115); der Datenfluß ist beendet.

Wird Schritt 111 jedoch mit JA beantwortet, so fragt der Controller 20 den Inhalt des RTCA0 50 ab, um festzustellen, ob N oder mehr Einträge vorliegen, deren Schreibbefehl- Empfängerbits gesetzt sind, d. h., ob N oder mehr Blöcke vorhanden sind, die in den Cache-Speicher 33, jedoch nicht in die Platteneinheit 10 geschrieben worden sind (Schritt 117).

Wird Schritt 117 mit NEIN beantwortet, schreibt der Controller 20 die Schreibdaten vom Hostsystem 11 in den Cache-Speicher 33, jedoch nicht auf die Einheit 10 (Schritt 119). Der Controller 20 setzt das Schreibbefehl-Empfängerbit im Treffereintrag im Verzeichnisspeicher 35&sub1; (Schritt 121), womit der Datenfluß beendet ist.

Beträgt allerdings die Anzahl der Blöcke, deren Daten nicht auf die Einheit 10 geschrieben sind, N oder mehr, so schreibt der Controller 20 die Schreibdaten vom Hostsystem 11 in den Cache-Speicher 33 und auf die Platteneinheit 10 (Schritt 123). Der Controller 20 schreibt bestimmte nicht auf die Platteneinheit 10 geschriebene Blöcke in den Speicher 33, d. h. diejenigen, die den Einträgen im Verzeichnisspeicher 35&sub1; entsprechen, deren Schreibbefehl-Empfängerbits gesetzt sind (Schritt 125). In diesem Fall wird die Anzahl der auf Einheit 10 zu, schreibenden Blöcke kleiner als N festgelegt (z. B. N-2). Die Operation in Schritt 125 erfolgt in der Weise, daß die Anzahl der nicht auf die Platteneinheit 10 geschriebenen Blöcke kleiner ist als die maximale Anzahl N der im Reservebetrieb, d. h. während eines Netzausfalls, auf die Platteneinheit 10 zu schreibenden Blöcke. Der Controller 20 setzt dann die Schreibbefehl-Empfängerbits der Einträge im Verzeichnisspeicher 35&sub1; entsprechend den auf die Einheit 10 geschriebenen Cache-Blöcken zurück (Schritt 127), womit der Datenfluß beendet ist.

Wenn bei der obenbeschriebenen Ausführungsform der Cache-Treffer im Falle des Plattenschreibbefehls festgestellt wird, dessen Schreibbefehl-Kennzeichnungsbit gesetzt ist, so werden die entsprechenden Daten im Cache-Speicher 33, jedoch nicht auf der Platteneinheit 10 eingeschrieben, wodurch die Schreibzyklen der Platteneinheit 10 verringert werden. Die Anzahl der in den Cache-Speicher 33, jedoch nicht auf die Einheit 10 eingetragenen Blöcke wird kontrolliert kleiner als N gehalten. Zum Zeitpunkt eines Netzausfalls werden dann die nicht in die Einheit 10 eingetragen Blöcke dorthin übertragen (Beschreibung folgt später).

Anhand des Flußdiagramms gemäß der Fig. 11 wird eine Operation beschrieben, bei der ein Plattenlesebefehl von einem Hostsystem 11 an einen Platten-Controller 20 abgesetzt wird.

Wird der Plattenlesebefehl vom System 11 an den Controller 20 geschickt, so -durchsucht der Controller 20 den Verzeichnisspeicher 35&sub1;, um zu prüfen, ob die im Befehl angegebenen Daten in Einheit 10 im Cache-Speicher 33 vorliegen, d. h. ob ein Cache-Treffer festgestellt wird (Schritt 131).

Wird Schritt 131 mit JA beantwortet, so liest der Controller 20 die Zieldaten aus dem Cache-Block im Cache-Speicher 33 aus, entsprechend dem Treffereintrag im Verzeichnisspeicher 35&sub1;. Die ausgelesenen Daten werden dem Hostsystem 11 übergeben (Schritt 133). Der Controller 20 setzt bzw. rücksetzt das Residenzbit des Treffereintrags im Speicher 35&sub1; entsprechend dem Inhalt des residenten Kennzeichnungsbit des Plattenlesebefehls (Schritt 135), worauf der Datenfluß beendet ist. Der Ersatzzählerbereich in jedem Treffereintrag wird in Schritt 135 aktualisiert.

Wird jedoch Schritt 131 mit NEIN beantwortet, prüft der Controller 20, ob alle Residenzbits der Einträge im Verzeichnisspeicher 35&sub1; gesetzt sind (Schritt 137).

Wird Schritt 137 mit JA beantwortet, legt der Controller 20 fest, daß keine zu ersetzenden Cache-Blöcke existieren und übergibt die Lesedaten von der Einheit 10 nur an das Hostsystem 11 (Schritt 139). In diesem Fall werden die Lesedaten nicht in den Cache-Speicher 33 eingetragen.

Wenn jedoch auch nur ein Verzeichnisspeichereintrag vorliegt, dessen Residenzbit nicht gesetzt ist, bestimmt der Controller 20 den gemäß LRU-Algorithmus zu ersetzenden Eintrag, (d. h. den Inhalt des Ersatzzählers) (Schritt 141). Der diesem Eintrag entsprechende Cache-Block wird als zu ersetzender Cache-Block ermittelt. Anschließend prüft der Platten-Controller 20, ob das Schreibbefehl-Empfängerbit des zu ersetzenden Eintrags gesetzt ist (Schritt 143).

Wird Schritt 143 mit JA beantwortet, schreibt der Controller 20 den diesem Eintrag entsprechenden Cache-Block, d. h. die Daten des zu ersetzenden Cache-Blocks, in die Platteneinheit 10 ein (Schritt 145). Der Controller 20 übergibt dann die Lesedaten aus der Einheit 10 (vorgegeben durch den Plattenlesebefehl vom Hostsystem 11) an das System 11 und führt den Dateneintrag in den zu ersetzenden Cache-Block aus (Schritt 147). Der Controller 20 setzt eine Plattenblockadresse sowie den Anfangswert für den Ersatzzähler im Eintrag (im zu ersetzenden Eintrag) des Verzeichnisspeichers 35&sub1;, der den Cache-Block angibt. Gleichzeitig setzt der Controller 20 das Schreibbefehls-Empfängerbit zurück und setzt bzw. rücksetzt das Residenzbit entsprechend dem Inhalt des residenten Kennzeichnungsbit des Plattenlesebefehls vom Hostsystem 11 (Schritt 149).

Der dem Eintrag im Verzeichnisspeicher 35&sub1; entsprechende Cache-Block, dessen residentes Kennzeichnungsbit in Schritt 149 gesetzt wird, wird aus den für den Ersatz vorgesehenen Blöcken ausgeschlossen. Diese Blockdaten, d. h. die mit dem Plattenlesebefehl angegebenen Daten des Plattenblocks werden im Cache-Speicher 33 mindestens so lange gehalten, bis das Residenzbit als Reaktion auf das residente Kennzeichnungsbit im Plattenlesebefehl rückgesetzt wird (d. h. bis zur Aufhebung der Residenz der Cache-Blockdaten). Die Residenz des Plattenblocks kann als Reaktion auf das residente Kennzeichnungsbit des Plattenlesebefehls angegeben oder softwaremäßig verwirklicht werden. Diese Operation wird für schnelle Jobs herangezogen, um dadurch die Leistung des Gesamtsystems zu verbessern.

Anhand des Flußdiagramms gemäß der Fig. 12 wird die Funktionsweise zum Zeitpunkt eines Netzausfalls beschrieben.

Ein Netzausfall wird durch einen (nicht dargestellten) Abschaltdetektor festgestellt. Eine bei dieser Ausführungsform verwendete Stromversorgung ist so konzipiert, daß sie nach Feststellung eines Netzausfalls durch den Abschaltdetektor noch eine vorgegebene Zeitspanne weiterarbeitet. Während dieses Reservebetriebs führt der Platten-Controller 20 folgende Operation durch. Stellt der Abschaltdetektor einen Netzausfall fest, so unterbricht der Controller 20 die momentan abgewickelte Verarbeitung (Schritt 151). Der Controller 20 greift auf den Verzeichnisspeicher 35&sub1; zu und schreibt die Cache-Blockdaten (die nicht in der Platteneinheit 10 eingetragenen Cache-Blockdaten) entsprechend des Eintrags, dessen Schreibbefehls-Empfängerbit gesetzt ist, sequentiell aus.

Bei dieser Ausführungsform ist die Anzahl der den Einträgen mit gesetzten Schreibbefehls-Empfängerbits entsprechenden Cache-Blöcke kleiner als die maximale Anzahl N der in die Einheit 10 während des Reservebetriebs bei einem Netzausfall zu übertragenden Blöcke. Aus diesem Grund können alle Blockdaten in Schritt 153, die noch nicht in die Einheit 10 eingetragen sind, ordnungsgemäß dorthin übertragen werden. Zum Zeitpunkt der Systeminitialisierung nach einem Netzausfall können die Daten ohne Lesefehler aus der Einheit 10 ausgelesen werden. Bei dieser Ausführungsform ist es bei residenter Kennzeichnung des Plattenlesebefehls möglich, die meisten der nicht eingetragenen Blöcke als kontinuierlich residente Blöcke im Plattenbereich bereitzustellen. Dies bedeutet, daß ein schnelles Schreiben nicht eingetragener Blöcke in die Einheit 10 durchgeführt und daß der Wert N verringert werden kann.

Anhand der Fig. 2 sowie der Fig. 13A bis 15 soll eine weitere Ausführungsform zur effektiven Datenbereitstellungskontrolle bei Lesefehlern beschrieben werden.

Die Plattenzugriffsanforderung seitens des Hostsystems 11 wird im Befehlsregister 21&sub1; der HDC 21 über das D/R 25 und den Bus 24 gehalten. Diese Anforderung wird vom Mikroprozessor 27 ausgelesen und in einem vorgegebenen Bereich des Arbeitsspeichers 29 abgelegt. Gleichzeitig setzt der Mikroprozessor 27 einen Suchbefehl an die HDC 21 ab. Die HDC 21 steuert die Platteneinheit 10 zur Durchführung einer Suche einer im Suchbefehl angegebenen Spur. Der Mikroprozessor 27 liefert die Nummer des Plattenblocks entsprechend dem dem Datenzugriff unterliegenden Platteneinheitsbereich sowie die Verzeichnisspeicheradresse über den Bus 26, das D/R 32 und den Bus 31 an die Verzeichnissuchschaltung 35&sub2; Der Mikroprozessor 27 initialisiert die Schaltung 35&sub2; Die Suchschaltung 35&sub2; führt unter Verwendung der Datenblocknummer als Ziel eine Verzeichnissuche durch. Das Ergebnis der Verzeichnissuche wird im Verzeichnisspeicher bzw. in der Suchschaltung 35 gehalten.

Der Mikroprozessor 27 erzeugt mindestens einen Cache-Operationszielwert gemäß der im Verzeichnisspeicher bzw. in der Suchschaltung 35 gehaltenen Plattenblocknummer und dem Inhalt der Plattenzugriffsanforderung. Der so erzeugte Wert wird über den Bus 26, das D/R 32 und den Bus 31 im Adressenstapelspeicher 45 abgelegt.

Der Steuercode C für die Richtung der Datenübertragung im Datenoperationszielwert repräsentiert fünf Betriebsarten. Diese fünf Betriebsarten werden anhand der Fig. 13A bis 13E beschrieben.

(I) C = 1

Dieser Wert wird für den Cache-Treffer im Modus Plattenlesen benutzt. In diesem Fall wird der Inhalt des Cache-Speichers 33 zum Hostsystem 11 übertragen und auf die Platteneinheit 10 wird nicht zugegriffen, wie die Fig. 13A zeigt.

(II) C = 2

Dieser Wert wird für den Cache-Fehlschlag im Modus Plattenlesen benutzt. Wie die Fig. 13B zeigt, erfolgt auf die Platteneinheit 10 ein Lesezugriff, die ausgelesenen Daten werden über den Pufferspeicher 30 an das Hostsystem 11 übergeben und gleichzeitig in den Cache-Speicher 33 eingetragen.

(III) C = 3

Dieser Wert wird für den Cache-Fehlschlag im Modus Plattenlesen benutzt, wobei vom Hostsystem kein Sektor angefordert wird, sondern im Cache-Block vorliegt (unerwünschte Sektoren können oft geschrieben werden, da eine Schreiboperation in Blockeinheiten erfolgt). Wie die Fig. 13C zeigt, werden die ausgelesenen Daten in den Cache-Speicher 33 eingetragen, jedoch nicht an das Hostsystem 11 übergeben.

(IV) C = 4

Dieser Wert wird für den Cache-Treffer im Modus Plattenschreiben benutzt. Gemäß der Fig. 13D werden die Schreibdaten vom Hostsystem 11 über den Pufferspeicher 30 an die Platteneinheit 10 übergeben und gleichzeitig in den Cache-Speicher 33 eingetragen.

C = 5

Dieser Wert wird für den Cache-Fehlschlag im Modus Plattenschreiben benutzt. Die Daten vom Hostsystem 11 werden über den Pufferspeicher 30 nur in die Platteneinheit, jedoch nicht in den Cache-Speicher 33 eingetragen.

Die Generierung der Cache-Operationszieldaten wird nachstehend beschrieben. Es sei angenommen, daß eine Plattenzugriffsanforderung seitens des Hostsystems 11 einem Plattenlesen für 6 Sektoren, beginnend mit Sektor 10, entspricht, und daß während des Plattenlesens ein Cache-Fehlschlag stattfindet. Weiterhin sei angenommen, daß eine Spur der Platte aus 64 Sektoren (Sektor 0 bis 63) besteht und daß ein Block des Cache-Speichers 33 64 Sektoren umfaßt.

Wenn der Mikroprozessor 27 den Cache-Fehlschlag im Lesebetrieb gemäß dem Verzeichnissuchergebnis von Verzeichnisspeicher bzw. Suchschaltung 35 erkennt, führt der Mikroprozessor 27 einen Lesezugriff auf das ID-Feld der Platte aus. Die ausgelesenen Daten werden im ID-Register 21&sub2; der HDC 21 zum Auslesen der Sektornummer aus dem ID-Feld gepuffert.

Der Mikroprozessor 27 unterteilt den aktualisierenden Cache-Block mittels Cache-Adressen in Untereinheiten, die jeweils dem Sektor neben demjenigen mit der Nummer des Lesesektors, des Startsektors des Plattenbereichs, in dem die Übertragung an das Hostsystem stattfindet, und des Endsektors entsprechen. Die Cache-Operationszieldaten werden für die jeweiligen Untereinheiten generiert. Unter der Annahme, daß die Nummer des Lesesektors 4 ist, wird der Cache-Block wie folgt unterteilt: Untereinheit A entspricht dem Plattenbereich mit den Sektoren 0 bis 4, Untereinheit B umfaßt die Sektoren Nr. 5 bis 9, Untereinheit C die Sektoren Nr. 10 bis 15 und Untereinheit D die Sektoren Nr. 16 bis 63. Werden Daten aus Sektor Nr. 5 ausgelesen, d. h. die Datenübertragung findet in der Reihenfolge B, C, D und A statt, so läßt sich eine wirksame Datenübertragung ohne Abwarten der Plattenrotation erreichen.

Der in der Fig. 14 dargestellte Cache-Block entspricht einem Block im Cache-Speicher 33. Der Cache-Block ist in Untereinheiten A, B, C und D unterteilt. Selbstverständlich handelt es sich hierbei nicht um eine physikalische Unterteilung des Cache-Blocks. Die numerischen Werte 0 bis 63 entsprechen den Nummern der Plattensektoren. Die Daten der Plattensektoren Nr. 5 bis 9, zum Beispiel, werden beginnend mit Adresse aB in die Untereinheit B eingetragen.

Der Mikroprozessor 27 erzeugt zuerst Cache-Operationszieldaten für Untereinheit B und bringt die Daten über den Bus 26, das D/R 32 und den Bus 31 in den Adressenstapelspeicher 45. Wie aus der Fig. 14 ersichtlich, bestehen die Cache-Operationszieldaten für Untereinheit B aus der Übertragungsstart-Cache-Adresse aB für Untereinheit B, der Anzahl IB von Übertragungssektoren und dem Steuercode für die Übertragungsrichtung (C = 3).

Anschließend erzeugt der Mikroprozessor 27 Cache-Operationszieldaten für Untereinheit C und bringt sie in den Adressenstapelspeicher 45. Die Cache-Operationszieldaten für Untereinheit C bestehen aus der Übertragungsstart-Cache-Adresse aC, der Anzahl lC von Übertragungssektoren sowie dem Steuercode für die Übertragungsrichtung (C = 2), wie aus Fig. 14 zu ersehen ist.

Danach erzeugt der Mikroprozessor 27 Cache-Operationszieldaten für Untereinheit D und bringt sie in den Speicher 45. Die Cache-Operationszieldaten für Untereinheit D bestehen aus der Übertragungsstart-Cache-Adresse aD, der Anzahl lD von Übertragungssektoren sowie dem Steuercode für die Übertragungsrichtung (C = 3), wie aus Fig. 14 zu ersehen ist.

Abschließend erzeugt der Mikroprozessor 27 Cache-Operationszieldaten für Untereinheit A und bringt sie in den Speicher 45. Die Cache-Operationszieldaten für Untereinheit A bestehen aus der Übertragungsstart-Cache-Adresse aA, der Anzahl lA von Übertragungssektoren sowie dem Steuercode für die Übertragungsrichtung (C = 3), wie aus Fig. 14 zu ersehen ist.

Nach dem Abschluß der Generierung von Cache-Operationszieldaten und deren Speicherung im Adressenstapelspeicher 45 durch den Mikroprozessor 27 schickt der Mikroprozessor 27 ein Steuersignal an die HDC 21, um Plattenlesen von 59 Sektoren, beginnend mit Sektor Nr. 5, anzugeben, d. h. ein Plattenlesen ab dem Startsektor des Plattenbereichs entsprechend Untereinheit B bis zum letzten Sektor der entsprechenden Spur. Der Mikroprozessor 27 setzt die Startadresse für den Adressenstapelspeicher 45 im Stapeladreßzähler 46 und aktiviert die Cache-Steuerschaltung 34.

Die HDC 21 empfängt den Plattenlesebefehl vom Mikroprozessor 27 sowie Daten des angegebenen Bereichs von Platteneinheit 10 und legt sie über den Bus 26 im Pufferspeicher 30 ab. Werden die Plattenlesedaten mehr als eines Sektors im Speicher 30 gepuffert, so setzt der DMA 21&sub3; der HDC 21 über die Steuerleitung 23 eine Datenübertragungsanforderung an das Hostsystem 11 sowie gleichzeitig eine Datenübertragungsanforderung an die Cache-Steuerschaltung 34 ab. Wenn der DMA 21&sub3; die Antwortsignale vom Hostsystem 11 und der Cache-Steuerschaltung 34 erhält, liest er die Daten aus dem Pufferspeicher 30 aus und bringt sie auf die Datenleitung 22.

Diese Leseoperation wird im Zeitmultiplexbetrieb mit der Speicherung in Speicher 30 ausgeführt.

Nach der Initialisierung der Cache-Steuerschaltung 34 durch den Mikroprozessor 27, liest die Schaltung 34 die vorgegebenen Daten aus dem Bereich (entsprechend der Untereinheit B gemäß der Fig. 14) des Speicher 45 aus, auf den der Stapeladreßzähler 46 zugreift. Die Cache-Steuerschaltung 34 schickt Adreß- und Schreibsignale an den Cache-Speicher 33 und schreibt synchron mit der Datenübertragung durch die DMA 21&sub3; die Ausgangsdaten der DMA 21&sub3; über die Leitung 22 sequentiell in den vorgegebenen Bereich des Speichers 33. In diesem Fall steuert die Cache-Steuerschaltung 34 das D/R 25 in der Weise, daß eine Datenübertragung an das Hostsystem 11 über die Leitung 22 gesperrt ist.

Nach Beendigung des Dateneintrags für Untereinheit B durch die Cache-Steuerschaltung 34 steuert sie den Stapeladreßzähler (SAC) 46 an. In anderen Worten, der SAC 46 wird um Eins hochgezählt, wenn die Adresse aB durch die Adresse lB aktualisiert wird. Die nächsten Cache-Operationszieldaten, d. h. diejenigen für Untereinheit C, werden vom Adressenstapelspeicher 45 ausgelesen, und es erfolgt die vorgegebene Kontrolle. Dies bedeutet im einzelnen, daß die sequentiell von der DMA 21&sub3; auf die Leitung 22 gebrachten Daten sequentiell in die Untereinheit C des Cache-Speichers 33 eingetragen werden. Gleichzeitig wird das D/R 25 in der Weise gesteuert, daß die Daten von der Leitung 22 zum System 11 gebracht werden. Nach Abschluß des Dateneintrags in Untereinheit C führt die Cache-Steuerschaltung 34 die von den nächsten Cache-Operationszieldaten vorgegebene Steuerungsfunktion aus, d. h. die Cache-Operationszieldaten für Untereinheit D. Die Steuerschaltung 34 trägt die Daten von der Leitung 22 in die angegebene Untereinheit D des Cache-Speichers 33 ein und steuert gleichzeitig das D/R 25 so an, daß eine Schreiboperation der Daten von der Leitung 22 zum System 11 gesperrt ist.

Nach Abschluß der Schreiboperation für die Untereinheiten B, C und D durch die HDC 21 erkennt diese gemäß Fig. 15 einen Indeximpuls und unterbricht daraufhin den Mikroprozessor 27. Nach Erkennung des Interrupt von der HDC 21 gibt der Mikroprozessor 27 Plattenlesen für die Untereinheit A an (Sektor 0 bis Sektor 4). Die HDC 21 erhält Daten aus dem Plattenbereich entsprechend der Untereinheit A und legt sie im Pufferspeicher 30 ab. Die im Speicher 30 gepufferten Daten werden vom DMA 21&sub3; der HDC 21 auf die Leitung 22 gebracht und dann unter der Kontrolle der Cache-Steuerschaltung 34 in die Untereinheit A des Cache-Speichers 33 eingetragen. In diesem Fall ist die Datenübertragung an das System 11 über die Leitung 22 gesperrt.

In der Ausführungsform gemäß Fig. 14 entspricht die Plattenzugriffsanforderung seitens des Hostsystems 11 einem Cache-Fehlschlag im Plattenlesemodus von 6 Sektoren, beginnend mit Sektor Nr. 10, wobei aktuell Sektor Nr. 4 gelesen wird.

In einer weiteren, in der Fig. 16 dargestellten, Ausführungsform der vorliegenden Erfindung entspricht die Plattenzugriffsanforderung seitens des Hostsystems 11 Plattenlesen von 6 Sektoren, beginnend mit Sektor Nr. 10, wobei aktuell Sektor Nr. 12 gelesen wird. In diesem Fall ist der Cache-Block in Untereinheit A, entsprechend einem Plattenbereich der Sektoren 0 bis 9, Untereinheit B, entsprechend den Sektoren 10 bis 12, Untereinheit C, entsprechend den Sektoren 13 bis 15 sowie Untereinheit C, entsprechend den Sektoren 16 bis 63, unterteilt. Wenn in diesem Fall Daten aus Sektor Nr. 13 gelesen werden, d. h. wenn die Datenübertragung in einer Reihenfolge C, D, A und B erfolgt, so ist eine wirksame Datenübertragung ohne Abwarten der Plattenrotation zu erzielen.

Der Mikroprozessor 27 erzeugt zuerst Cache-Operationszieldaten für Untereinheit C und bringt sie in den Adressenstapelspeicher 45. Die Cache-Operationszieldaten für Untereinheit C bestehen aus der Übertragungsstart-Cache-Adresse aC für Untereinheit C, der Anzahl lC von Übertragungssektoren und dem Steuercode für die Übertragungsrichtung (C = 2).

Der Mikroprozessor 27 erzeugt Cache-Operationszieldaten für Untereinheit D und bringt sie in den Adressenstapelspeicher 45. Diese Cache-Operationszieldaten bestehen aus der Übertragungsstart-Cache-Adresse aD, der Anzahl lD von Übertragungssektoren sowie dem Steuercode für die Übertragungsrichtung (C = 3).

Anschließend erzeugt der Mikroprozessor 27 Cache-Operationszieldaten für Untereinheit A und bringt sie in den Adressenstapelspeicher 45. Diese Cache-Operationszieldaten bestehen aus der Übertragungsstart-Cache-Adresse aA, der Anzahl lA von Übertragungssektoren sowie dem Steuercode für die Übertragungsrichtung (C = 3).

Abschließend erzeugt der Mikroprozessor 27 Cache-Operationszieldaten für Untereinheit B und bringt sie in den Adressenstapelspeicher 45. Diese Cache-Operationszieldaten bestehen aus der Übertragungsstart-Cache-Adresse aB, der Anzahl lB von Übertragungssektoren sowie dem Steuercode für die Übertragungsrichtung (C = 2), wie aus der Fig. 16 ersichtlich ist.

Die Daten können wie bei der Ausführungsform gemäß der Mol-%14 in einer Reihenfolge der Unterheiten C, D, A und B unter der Kontrolle der Cache-Steuerschaltung 34 gelesen werden.

Da die Kontrolle der Datenübertragung gemäß der vorliegenden Ausführungsform entsprechend den Cache-Operationszieldaten mit Übertragungsstart-Cacheadresse, Anzahl der Übertragungssektoren und Steuercode für die Übertragungsrichtung erfolgt, kann die Datenübertragung bei Auftreten eines Lesefehlers aufgrund der Abspeicherung vom Hostsystem nicht angeforderter aber im Cache-Speicher eingetragenen Daten wirksam durchgeführt werden. Bei Auftreten eines Cache-Fehlschlags im Plattenlesebetrieb braucht die Plattenrotation nicht abgewartet zu werden und es ist eine schnelle Übertragung möglich, da die Datenübertragung mit einem Lesefreigabesektor beginnt.

Nachstehend wird eine Ausführungsform eines Magnetplatten-Controllers zur Verwendung eines Cache-Speichers unabhängig von der Anzahl der Magnetplatteneinheiten beschrieben. Die Bezugszeichen der Ausführungsform gemäß Fig. 17 entsprechen den identischen Teilen der Ausführungsform gemäß Fig. 2, so daß auf eine detaillierte Beschreibung verzichtet wird. Bei der Ausführungsform gemäß Fig. 17 sind die Magnetplatteneinheiten 10&sub1; bis 10&sub4; mit der HDC 21 verbunden.

Die Fig. 18 stellt ein Format der Verzeichnisdaten dar. Bei den Verzeichnisdaten handelt es sich um aus 4 Bytes aufgebaute Daten mit jeweils ersten bis vierten Bytes. Das erste Byte besteht aus einer 3 Bit umfassenden Laufwerknummer LUN (Logical Unit No.) als Kennung des Magnetplattenlaufwerks und den oberen 5 Bits (Adresse U) einer 15 Bit-Plattenblockadresse. Das zweite Byte besteht aus den 8 Bits (Adresse M) der Plattenblockadresse nach Adresse U. Das dritte Byte besteht aus den restlichen unteren zwei Bits (Adresse L) der Plattenblockadresse, 4 stets mit 0 besetzen Bits, dem Ein-Bit-Fehlerflag ERR sowie dem Ein-Bit-Gültigkeitsflag VB. Das vierte Byte besteht aus einem 8 Bit-LRU-Wert (Least Recently Used - am längsten unbenutzt). Die Verzeichnisdaten werden auf Basis der Laufwerknummer LUN, der logischen Plattenadresse etc. generiert, die im Lese/Schreibbefehl enthalten sind.

Die Fig. 19 stellt ein Format des Lese/Schreibbefehls dar. Bei diesem Befehl handelt es sich um einen 6 Bytes umfassenden Befehl einschließlich eines Befehlscodes zur Angabe der Lese/Schreiboperation, der Laufwerknummer LUN, der logischen Plattenadresse, der Anzahl von Datenblöcken und den Cache-Steuerbits CC2 bis CC0. Die Laufwerknummer LUN umfaßt drei Bits für den Zugriff auf eine der Platteneinheiten 10&sub1; bis 10&sub4;. Bei dieser Ausführungsform ist das höchstwertige Bit der Laufwerknummer LUN stets logisch "0". Die logische Plattenadresse bezeichnet eine durch die Laufwerknummer LUN vorgegebenen Plattensektoranzahl und umfaßt eine logische 5 Bit-Adresse 2, eine logische 8 Bit-Adresse 1 sowie eine logische 8 Bit-Adresse 0, d. h. insgesamt 21 Bits. Bei dieser Ausführungsform besteht ein Block aus 16 KByte. Gemäß Fig. 19 bilden die Bits 20 bis 20 der logischen Plattenadresse eine Plattenblockadresse. Bei dieser Ausführungsform beträgt die Kapazität des Cache-Speichers 33 16 KByte. Die Anzahl der Spalten ist 2, nämlich Spalte 0 und Spalte 1. Jede Spalte des Cache-Speichers 33 umfaßt 16 Cache-Blöcke. Aus diesem Grund entspricht Bit 6 der logischen Plattenadresse der Spaltennummer.

Die Fig. 20 zeigt eine Struktur des Verzeichnisspeichers 35&sub1; Die Kapazität des Speichers 35&sub1; beträgt 128 Byte und umfaßt den Bereich der Spalte 0 (64 Byte) beginnend mit Adresse 000 (hexadezimal) sowie den Bereich der Spalte 1 (64 Byte) beginnend mit Adresse 040 (hexadezimal). Die Bereiche der Spalten 0 und 1 sind in jeweils weitere 16 Bereiche (im weiteren als "Ebenen" bezeichnet) unterteilt. Jede Ebene umfaßt 4 Byte. Die Verzeichnisdaten nach Fig. 18 können in jeder Ebene abgespeichert werden.

Nachstehend wird die Funktionsweise der Ausführungsform gemäß Fig. 17 beschrieben.

Der vom Hostsystem 11 kommende Lese/Schreibbefehl (Fig. 19) wird über das D/R 25 und den Bus 24 im Befehlsregister 21&sub1; der HDC 21 gehalten. Dieser Befehl wird aus dem Register 21&sub1; unter der Kontrolle des Mikroprozessors 27 ausgelesen und in einem vorgegebenen Bereich des Arbeitsspeichers 29 abgelegt. In diesem Stadium setzt der Mikroprozessor 27 einen Suchbefehl ab, der dann in der HDC 21 gesetzt wird. Die HDC 21 steuert eine bestimmte der Magnetplatteneinheiten 10&sub1; bis 10&sub4;, um so die angegebene Spur zu finden.

Der Mikroprozessor 27 prüft Bit 6 (d. h. die Spaltennummer) der logischen Plattenadresse daraufhin, ob die Plattenblockadresse einschließlich der logischen Plattenadresse im Lese/Schreibbefehl im Verzeichnisspeicher 35&sub1; abgelegt ist. Wenn Bit 6 auf logisch "0" gesetzt ist, so dient der Bereich der Spalte 0 des Verzeichnisspeichers 35&sub1; als derjenige Bereich, der einer Verzeichnissuche unterzogen wird. Der Mikroprozessor 27 setzt "000" (hexadezimal) als Verzeichnisstartadresse im CDMA 40.

Ist jedoch Bit 6 auf logisch "1" gesetzt, so dient der Bereich der Spalte 1 des Verzeichnisspeichers 35&sub1; als derjenige Bereich, der einer Verzeichnissuche unterzogen wird. In diesem Fall setzt der Mikroprozessor 27 "040" (hexadezimal) im CDMA 40.

Der Mikroprozessor 27 setzt die Treibernummer LUN und Bits 16 bis 20 (logische Adresse 2) der logischen Plattenadresse im Lese/Schreibbefehl im Register RTCA0 50 der Registerdatei 38. Gleichzeitig setzt der Mikroprozessor 27 Bits 8 bis 15 (logische Adresse 1) der logischen Plattenadresse im Register RTCA1 51. Der Mikroprozessor 27 setzt im Register RTCA2 52 Daten, bestehend aus Bits 6 und 7 der logischen Plattenadresse, den 4 auf "0" gesetzten Bits, dem auf logisch "0" gesetzten Fehlerflag ERR und dem auf logisch "1" gesetzten Gültigkeitsflag VB. Der Mikroprozessor 27 setzt im Register RTCA3 53 den LRU-Wert (Mindest-LTU-Wert) von 0. Der Mikroprozessor 27 erzeugt auf Basis der Laufwerknummer LUN und der logischen Plattenadresse im Lese/Schreibbefehl Zieldaten für die Verzeichnissuche und setzt sie in der Registerdatei 38.

Nach Beendigung der obenbeschriebenen Einstellungen veranlaßt der Mikroprozessor 27 die Cache-Steuerschaltung 34, eine Verzeichnissuche durchzuführen. Der folgende Verzeichnissuchzyklus wird 16 mal wiederholt.

Für den Verzeichnissuchzyklus ist die durch den CDMA 40 vorgegebene Verzeichnisspeicheradresse im Register RCGA0 60 der Datei 41 gesetzt. Die Verzeichnisdaten einer durch den CDMA 40 repräsentierten Ebene werden aus dem Speicher 35&sub1; vom ersten bis zum vierten Byte auf den Bus 31 ausgelesen. Die ausgelesenen Bytedaten werden an den B-Eingang des Komparators 39 geschickt. In Gleichlauf mit der obenbeschriebenen Leseoperation werden die Zieldaten aus der Datei 38 vom ersten Byte an in Einheiten von Bytes ausgelesen. Die ausgelesenen Zieldaten werden an den A-Eingang des Komparators 39 geschickt. Der Komparator 39 vergleicht die Inhalte der A- und B-Eingänge. Das Vergleichsergebnis wird vom Komparator 39 an die Cache-Steuerschaltung 34 geliefert. Der LRU-Wert in den vom Verzeichnisspeicher 35 über den Bus 31 an den B-Eingang des Komparators 39 gelieferten Verzeichnisdaten wird dann in den CLRU 36 geladen und um Eins hochgezählt.

Die Cache-Steuerschaltung 34 ermittelt, ob aufgrund der Vergleichergebnisse für die ersten bis dritten Bytes im Komparator 39 ein Cache-Treffer vorliegt. Wird ein Cache-Treffer erkannt, so fügt die Steuerschaltung 34 an die im Register RCGA0 60 der Datei 41 gesetzte Verzeichnisspeicheradresse ein Cache-Trefferflag, d. h. an diejenige Adresse, die die Startposition der entsprechenden Ebene des aktuellen Verzeichnissuchzyklus repräsentiert. Die Adresse mit dem Cache-Trefferflag wird dann im Register RCGA1 61 gesetzt.

Die Cache-Steuerschaltung 34 bestimmt die Ebene des Speichers 35, wird dann im Register RCGA1 61 gesetzt.

Die Cache-Steuerschaltung 34 bestimmt die Ebene des Speichers 35, die der Anwartschaft des zu diesem Zeitpunkt zu ersetzenden Cache-Blocks entspricht, in Übereinstimmung mit dem LRU-Wert-Vergleichsergebnis des Komparators 39. Übersteigt der LRU-Wert vom Verzeichnisspeicher 35 denjenigen von der Registerdatei 38, so bestimmt die Steuerschaltung 34, daß der der Ebene entsprechende Cache-Block ein zu ersetzender Cache-Block ist. In diesem Fall überträgt die Steuerschaltung 34 die Verzeichnisspeicheradresse aus dem Register RCGA0 60 der Datei 41 an das Register RCGA2 62. Die Steuerschaltung 34 veranlaßt den Treiber 37 den durch den CLRU 36 vorgegebenen um Eins hochgezählten LRU-Wert auf den Bus 31 zu bringen und aktualisiert den im Register 53 der Datei 38 gesetzten LRU-Wert entsprechend dem LRU-Wert auf dem Bus 31.

Die Steuerschaltung 34 schreibt den LRU-Wert des CLRU 36 auf dem Bus 31 ungeachtet des Vergleichsergebnisses des Komparators 39 in die entsprechende Ebene des Verzeichnisspeichers 35. Bei dieser Ausführungsform wird der LRU-Wert in der entsprechenden Ebene des Verzeichnisspeichers 35 mit jedem Verzeichnissuchzyklus um Eins hochgezählt.

Die obige Operation ist der Verzeichnissuchzyklus. Der Zyklus wird für die jeweiligen Verzeichnisdaten der Ebenen 0 bis F (hexadezimal) im Verzeichnisspeicher 35 wiederholt, wodurch die Verzeichnissuche entsprechend dem Lese/Schreibbefehl ausgeführt wird. In diesem Fall wird ein Cache-Treffer erkannt, und die Startadresse der dem Cache-Block entsprechenden Ebene wird im Register RCGA1 61 der Datei 41 gesetzt. Die Startadresse der Ebene mit dem größten LRU-Wert in der vorgegebenen Spalte wird im Register RCGA2 62 der Datei 41 gespeichert. Diese Adresse repräsentiert diejenige Ebene des Verzeichnisspeichers 35, die dem zu ersetzenden Cache-Block entspricht, wenn im Lesemodus ein Cache-Fehlschlag auftritt.

Nach Abschluß der Verzeichnissuche holt der Mikroprozessor über den Bus 26 den Inhalt des Registers RCGA1 61 der Datei 41 und prüft das obenerwähnte Flag daraufhin, ob ein Cache-Treffer oder -Fehlschlag vorliegt. Bei einem Cache-Fehlschlag im Lesemodus schreibt der Mikroprozessor 27 die Verzeichnisadresse des Register RCGA2 62 in die Datei 41 als den derzeit ältestens Cache-Block, d. h., die Startadresse der Ebene des Verzeichnisspeichers 35, die dem zu ersetzenden Cache-Block entspricht. Diese Startadresse wird im CDMA 40 gesetzt. Der Mikroprozessor 27 speichert die Verzeichnisdaten in der dem Verzeichnisspeicher 35 entsprechenden Ebene, während der Inhalt des CDMA 40 sequentiell gezählt wird. Die Verzeichnisdaten sind im wesentlichen die gleichen wie die Zieldaten in der Registerdatei 38, mit der Ausnahme, daß der LRU-Wert der Anfangswert ist. Bei dieser Ausführungsform wird der Anfangswert des LRU-Wertes durch die Cache-Steuerbits CC2 bis CC0 bestimmt.

Da die Verzeichnisdaten die das Magnetplattenlaufwerk repräsentierende Laufwerknummer LUN beinhalten, kann, wie aus der obigen Beschreibung ersichtlich ist, der gegen einen Plattenblock der Platteneinheiten dieser Ausführungsform zu ersetzende Block des Cache-Speichers 33 gemäß den Größen der LRU-Werte der Verzeichnisdaten für jede Ebene in derselben Weise bestimmt werden, wie im Falle des eine einzelne Magnetplatteneinheit steuernden Magnetplatten-Controllers. Aus diesem Grund kann im Gegensatz zum herkömmlichen System der Bereich des Verzeichnisspeichers 35 jeder der Einheiten 10&sub1; bis 10&sub4; zugeordnet werden, wie die Fig. 21 zeigt. Damit kann bei dieser Ausführungsform der Cache-Speicher 35 wirksam entsprechend der Zugriffshäufigkeit der Einheiten 10&sub1; bis 10&sub4; genutzt werden.

In der Ausführungsform gemäß Fig. 17 wird der Cache-Speicher 33 gemeinsam von den Magnetplatteneinheiten 10&sub1; bis 10&sub4; benutzt. Allerdings wird der Cache-Speicher für eine Magnetplatteneinheit mit einem einmalig zu ladenden Plattenblock, beispielsweise einem Betriebssystem, nicht benötigt. In diesem Fall wird der Cache-Speicher gemeinsam durch andere, weitere Laufwerkeinheiten genutzt. Somit kann der Cache-Speicher mit einer begrenzten Kapazität wirksam genutzt und die Trefferrate erhöht werden. Ob der Cache-Speicher benutzt wird, wird durch einen Befehl zum Zeitpunkt der Systeminitialisierung in Einheiten von Magnetplatten-Laufwerkseinheiten bestimmt.

Die obenbeschriebenen Ausführungsformen sind Beispiele des Platten-Cache-Systems für eine Magnetplatte. Die vorliegende Erfindung ist jedoch ebenfalls auf Platten-Cache-Systeme, wie z . B. Diskettenlaufwerkeinheiten, optische Plattensysteme oder RAM-Platteneinheiten, anwendbar.


Anspruch[de]

1. Cache-System mit einem Cache-Speicher zum Speichern einer Vielzahl von Cache-Blöcken und zum Annehmen eines LRU-(kleinstes zuletzt verwendetes) Schemas als eines Ersatzalgorithmus für die Cache-Blöcke und umfassend:

einen Inhaltsverzeichnisspeicher (35&sub1;) mit Feldern, die in jeweiligen Eingängen entsprechend jeweiligen Cache-Blöcken des Cache-Speichers Bezeichnungsinformation für Blöcke speichern, welche im Cache-Speicher registriert sind, und mit LRU-Zählerfeldern, die den ansässigen Status im Cache-Speicher dieser Blöcken anzeigen;

eine Befehlsausgabeeinrichtung (28) zum Ausgeben eines Lese/Schreibbefehles, zu dem eine Bezeichnungsinformation für einen Lese/Schreib-Zielblock beigefügt ist;

eine Inhaltsverzeichnissucheinrichtung (35&sub2;) zum Suchen, ob der Lese/Schreib-Zielblock in dem Cache-Speicher registriert ist, durch Vergleichen der registrierten Blockbezeichnungsinformation von jeweiligen Eingängen mit der Lese/Schreib-Bezeichnungsinformation; dadurch gekennzeichnet, daß außerdem vorgesehen sind:

ein beliebiger LRU-Setzwert, der auch dem Lese/Schreibbefehl beigefügt ist; und

eine Registriereinrichtung (27) zum Registrieren des willkürlichen LRU-Setzwertes (93), der dem Lese/Schreibbefehl beigefügt ist, in einem Treffereingang des Inhaltsverzeichnisspeichers, wenn ein Treffer eintritt, und in dem LRU-Zählerfeld eines Einganges entsprechend dem Cache-Block, in welchem der Lesezielblock registriert ist, wenn ein Fehler eintritt.

2. System nach Anspruch 1, gekennzeichnet durch:

ein erstes Register (61) zum Speichern einer Startadresse eines Inhaltsverzeichnisspeichereinganges entsprechend einem Treffer-Cache-Block, wenn ein Cache-Treffer eintritt, als Ergebnis eines Inhaltsverzeichnissuchens, wobei die Startadresse zusammen mit einer Cache-Treffer-Flagge gespeichert wird, wobei ein Aus-Zustand der Cache-Treffer-Flagge die Sucheinrichtung einen Cache-Fehler erfassen läßt; und

ein zweites Register (62) zum Speichern einer Startadresse eines Inhaltsverzeichnisspeichereinganges mit einem größten LRU-Wert, wobei der Lese/Schreib-Zielblock in dem Cache-Block entsprechend dem Eingang registriert wird, der durch die Adresse festgelegt ist, die im zweiten Register gespeichert ist, wenn gerade ein Cache-Fehler erfaßt wird und kein freier Raum in dem Cache-Speicher gefunden wird.

3. System nach Anspruch 2, dadurch gekennzeichnet, daß die Registriereinrichtung das erste Register prüft, einen LRU-Wert des Inhaltsverzeichnisspeichereinganges initialisiert, auf den abhängig von einer Adresse des ersten Registers zugegriffen wird, gemäß dem beliebigen LRU-Wert, der dem Lese/Schreibbefehl beigefügt ist, wenn ein Cache-Treffer erfaßt wird, und einen nicht registrierten Eingang des Inhaltsverzeichnisspeichers oder einen LRU-Wert des Inhaltsverzeichnisspeichereinganges, auf den durch eine Adresse des zweiten Registers zugegriffen wird, initialisiert gemäß dem beliebigen LRU-Wert, der dem Lese/Schreibbefehl beigefügt ist, wenn ein Cache-Fehler in einem Lesemodus erfaßt wird.

4. Magnetplattensteuergerät mit dem Cache-Speicher von Anspruch 1 und ausgestattet mit einem gemeinsamen Cache-Speicher, der für eine Vielzahl von Magnetplattenantriebseinheiten verwendet wird, dadurch gekennzeichnet, daß der Inhaltsverzeichnisspeicher ein Plattenantriebsidentifizierfeld (LUN) in jedem Eingang entsprechend jedem Cache-Block in dem Cache-Speicher hat, wobei das Plattenantriebsidentifizierfeld (LUN) angepaßt ist, um die Vielzahl von Magnetplatteneinheiten (10&sub1; bis 10&sub4;) darzustellen.







IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com