PatentDe  


Dokumentenidentifikation DE69130967T2 21.10.1999
EP-Veröffentlichungsnummer 0470735
Titel Rechnerspeicheranordnung
Anmelder NCR International, Inc., Dayton, Ohio, US
Erfinder King, Edward C., Fremont, California 94536, US;
Arnold, Forrest O., Springboro, Ohio 45066, US;
Ellis, Jackson L., Fort Collins, Colorado 80525, US;
Moussavi, Robert B., San Diego, California 92130, US;
Weisser, Pirmin L., W-7731 Unterkirnach, DE;
Vermeer, Fulps V., NL-2625 LM Delft, NL
Vertreter v. Bezold & Sozien, 80799 München
DE-Aktenzeichen 69130967
Vertragsstaaten DE, GB
Sprache des Dokument En
EP-Anmeldetag 26.07.1991
EP-Aktenzeichen 913068425
EP-Offenlegungsdatum 12.02.1992
EP date of grant 10.03.1999
Veröffentlichungstag im Patentblatt 21.10.1999
IPC-Hauptklasse G06F 12/08

Beschreibung[de]

Die vorliegende Erfindung betrifft Speichersysteme für Computer.

Die Leistungsfähigkeit eines Computersystems, das einen Host- Prozessor und ein Speichersystem enthält, kann durch Anwendung einer Speicher-Hierarchie verbessert werden. Beispielsweise kann ein dreischichtiger Speicher aus Speichern niedriger, mittlerer und hoher Arbeitsgeschwindigkeit aufgebaut werden. Ein Speicher niedriger Geschwindigkeit kann eine Magnetplatte zur kostengünstigen Großraumspeicherung von Daten sein. Ein Speicher mittlerer Geschwindigkeit kann aus DRAMs zur Verwendung als Hauptspeicher des Computersystems aufgebaut sein. Ein Hochgeschwindigkeitsspeicher kann SRAMs zur Nutzung als Cache- Speicher für den Prozessor verwenden. Die hinter der Speicher- Hierarchie stehende Theorie ist es, Codedaten (Befehle) und andere vom Systemprozessor auszuführende Daten in dem für die höchste Arbeitsgeschwindigkeit ausgelegten Speicher zu gruppieren. Da der Hochgeschwindigkeitsspeicher typischerweise der teuerste verfügbare Speicher ist, gebietet die Wirtschaftlichkeit, ihn relativ klein zu wählen. Ein aus DRAMs bestehender Hauptspeicher ist dichter und weniger teuer als ein Cache- Speicher mit SRAMs und kann daher wesentlich größer sein als der Cache-Speicher.

Während des Betriebs werden Befehle und andere Daten vom Systemspeicher zum Cache-Speicher übertragen, um schnellen Zugriff auf die Variablen des gerade ausführenden Programmes zu haben. Werden zusätzliche, nicht im Cache-Speicher enthaltene Daten benötigt, werden diese Daten aus dem Hauptspeicher übertragen, indem ausgewählte Daten im Cache-Speicher ersetzt werden. Es werden verschiedene Ersetzungsalgorithmen angewandt, um zu bestimmen, welche Daten ersetzt werden.

Eine effizient arbeitende Cache-Architektur hat ein hohes Verhältnis von "Treffern" bei Zugriffen. Ein "Treffer" tritt auf, wenn angeforderte Daten im Cache enthalten sind. Das Trefferverhältnis wird durch eine Anzahl von Faktoren beeinflußt. Der dominante Faktor ist die Lokalität des Bezugspunktes des ausgeführten Codes. Das heißt, wenn der Code physikalisch nahe beieinanderliegende Stellen im Speicher belegt, wird das Trefferverhältnis höher sein als wenn der Code weit über den Speicher verstreut liegt. Ein weiterer Faktor, der das Trefferverhältnis eines Cache beeinflußt, ist die Anzahl von Einrichtungen, die Zugriff auf den Speicher haben. Wenn nur ein einziger Bus-Master wie z. B. der Systemprozessor Zugriff auf den Speicher hat, können die im Cache gespeicherten Daten so kontrolliert werden, daß ein ziemlich hohes Trefferverhältnis erzielt wird. Wenn jedoch mehr als ein einziger Bus-Master über denselben Cache Zugriff auf den Speicher haben, kann der Cache zwischen Anforderungen aus den Bus-Mastern hin- und herspringen, was das Trefferverhältnis sehr reduziert. Das heißt, der Cache ist dann nicht-diskriminatorisch, indem die Anfragen des Systemprozessors und anderer Bus-Master den Cache gleich beanspruchen. Eine Operation kann die Datenaufstellung des Cache beträchtlich zusammendrücken. Beispielsweise können Daten, die in Ansprache auf Speicherzugriffe aus einem nicht zur Host-CPU gehörenden Bus-Master in den Cache ausgelagert werden, die vom Host-Prozessor benötigten Daten überschreiben.

Ein weiterer Faktor, der das Trefferverhältnis beeinträchtigt, hängt mit der Tatsache zusammen, daß sowohl Codedaten als auch Nichtcodedaten in den Cache ausgelagert werden. Blöcke von Daten im Systemspeicher werden an physikalisch verschiedenen Orten im Cache abgebildet. Wenn jeder Block von Daten des Systemspeichers an nur einem einzigen Ort abgebildet werden kann, bezeichnet man den Cache als einfach assoziativen Cache. Bei mehrfach assoziativer Abbildung kann jeder Block von Daten an mehr als einem einzigen Ort abgebildet werden. Wenn z. B. jeder Block von Daten an einem von zwei Orten abgebildet werden kann, bezeichnet man den Cache als zweifach assoziativ. Ungeachtet der Anzahl der Orte, die für einen Systemspeicherblock zur Verfügung stehen, wird es, wenn sowohl Codedaten als auch Nichtcodedaten in den Cache ausgelagert werden, eine Überlappung in ihren jeweiligen Abbildungen geben. Wenn also sowohl Codedaten als auch Nichtcodedaten ausgelagert werden, wird es ein beträchtliches Thrashing geben, das stattfindet, wenn Daten in Ansprache auf Speicherzugriffe ersetzt werden.

Bei einem bekannten Computersystem, das einen Host-Prozessor und einen Systemspeicher enthält, werden die Betriebscharakteristiken des Systemspeichers abhängig vom Typ des verwendeten Host-Prozessors gestaltet. So kann die Betriebsleistungsfähigkeit des Computersystems verschlechtert werden, wenn man versucht, einen anderen Prozessortyp für den Host-Prozessor zu verwenden. Ein Computerspeichersystem, das einen einem Prozessor dedizierten Cache enthält, ist aus der US-A-4078254 bekannt.

Es ist eine Aufgabe der vorliegenden Erfindung, ein Computerspeichersystem vorzusehen, das mit verschiedenen Typen von Host-Prozessoren effizient betrieben werden kann.

Daher wird gemäß der vorliegenden Erfindung ein Computerspeichersystem geschaffen, welches dazu ausgelegt ist, über eine Buseinrichtung mit einem Prozessor verbunden zu werden, der einer aus einer Mehrzahl verschiedener Prozessortypen ist, wobei das besagte Speichersystem einen mit der Buseinrichtung verbundenen Hauptspeicher und mindestens einen mit der Buseinrichtung verbundenen ersten Cache enthält, der zum Speichern von Daten ausgelegt ist, die allein auf der Basis von Speicherzugriffen das Prozessors ausgewählt werden, dadurch gekennzeichnet, daß der genannte erste Cache eingerichtet ist zum Speichern nur von Codedaten, wenn der genannte Prozessor von einem ersten Typ ist, und eingerichtet ist zum Speichern sowohl von Codedaten als auch von Nichtcodedaten, wenn der Prozessor von einem zweiten Typ ist.

Eine Ausführungsform der Erfindung sei nun als Beispiel unter Bezugnahme auf die beigefügte Zeichnung beschrieben, in welcher

Fig. 1 ein Blockdiagramm eines Hochleistungs-Computerspeichersystems gemäß einer Ausführungsform der vorliegenden Erfindung ist.

Die Fig. 1 zeigt ein Blockdiagramm eines Computerspeichersystems 10. Das System enthält einen Systemspeicher 12, der in einer bevorzugten Ausführungsform aus Speicherchips besteht, die einen dynamischen Direktzugriffsspeicher (DRAN) bilden. Die im Speicher 12 gespeicherten Daten können allgemein unterteilt werden in Codedaten (Befehle) und Nichtcodedaten. Im hier verwendeten Sinne bezieht sich der Ausdruck "Daten" auf Information und umfaßt sowohl Codedaten (Befehle) als auch Nichtcodedaten. Der Speicher 12 ist über eine Buseinrichtung 14 mit anderen Teilen eines Computersystems (nicht gezeigt) verbunden. Das Speichersystem 10 ist zur Verwendung mit zwei oder mehr Bus-Mastern ausgelegt. Genauer gesagt ist es ausgelegt zur Verwendung mit einem Host-Prozessor wie z. B. einem Intel-Prozessor vom Typ 386, 386sx oder 486 in Verbindung mit anderen Bus-Mastern oder Geräten, die mit dem Host-Prozessor um den Zugriff zum Speichersystem konkurrieren. Der Zugriff zum DRAM 12 wird durch einen DRAM-Controller 22 gesteuert, der innerhalb der Buseinrichtung 14 gelegen ist.

Das Speichersystem 10 enthält außerdem einen internen Cache 16, einen Prefetch-Cache 18 und einen Schreibpuffer-Cache 20, die alle mit der Buseinrichtung 14 verbunden sind. In einer bevorzugten Ausführungsform ist der interne Cache 16 ein vierfach assoziativer 4K-Byte-Cache, der Prefetch-Cache 18 ist ein einfach assoziativer 128-Byte-Cache, und der Schreibpuffer- Cache 20 ist ein zweifach assoziativer 128-Byte-Cache.

Ein wichtiges Merkmal der vorliegenden Erfindung ist, daß die Funktionalität der verschiedenen Caches abhängig von dem jeweils verwendeten Typ des Host-Prozessors (386, 386sx oder 486) geändert werden kann. Das Speichersystem 10 hat programmierbare Betriebscharakteristiken, basierend auf den Charakteristiken des Prozessors. Gewisse Merkmale der Caches ändern sich jedoch nicht. Beispielsweise hält der interne Cache 16 Daten, die allein auf der Grundlage von Speicherzugriffen des Host-Prozessors ausgewählt werden. Das heißt, der interne Cache 16 ist speziell dem Host-Prozessor dediziert und wird durch Speicherzugriffe seitens anderer Bus-Master nicht beansprucht. Es sei bemerkt, daß jeder der Caches von jedem der Bus-Master ausgelesen werden kann. Obwohl also der Cache 16 nicht erlaubt, daß in ihn Daten aufgrund von Speicherzugriffen durch andere Einrichtungen als den Systemprozessor eingeschrieben werden, kann er durch einen anderen Bus-Master ausgelesen werden, falls sich ergibt, daß angeforderte Daten in ihm enthalten sind. Ferner sei erwähnt, daß jeder der Caches jegliche Dateneinschreibungen schnüffelt (beobachtet), die nicht für ihn gedacht sind, um deren Inhalt auf Schnüffeltreffer hin ungültig zu machen und dadurch Kohärenz zu gewährleisten.

Ein anderes unveränderliches Merkmal der Caches ist, daß der Prefetch-Cache 18 nur Codedaten enthält, die aus dem DRAM 12 vorgreifend abgerufen sind. Außerdem führt er einen vorgreifenden Abruf von Codedaten nur aufgrund eines Speicherzugriffes seitens des Host-Prozessors durch. Im Betrieb werden, immer wenn der Systemprozessor Codedaten anfordert, die nicht schon im Prefetch-Cache sind, die nächsten aufeinanderfolgenden 128 Bytes des Codes in den Cache 18 vorabgerufen, als Warteschlange im Vorgriff auf nachfolgende Anforderungen nach Codedaten.

Der Schreibpuffer-Cache 20 puffert nur Daten, die in das DRAM 12 geschrieben werden sollen. Er ist nicht nur ein Schreibpuffer, sondern ist ein Cache, der, wie oben erwähnt, von jedem Bus-Master ausgelesen werden kann. Jedoch speichert er nicht Daten aus dem DRAM 12.

Ein wichtiges Merkmal der vorliegenden Erfindung ist die Trennung der Funktionalität eines jeden der Caches, derart daß die selektive Bestimmung dieser Funktionen ohne weiteres basierend auf dem Prozessortyp erfolgt. Durch diesen Scharfblick ist das vorliegende System in der Lage, das Leistungsvermögen eines Systems zu erreichen oder zu übersteigen, welches einen Cache verwendet, der um ein Vielfaches größer ist als die kumulative Größe der dienstbaren Caches. Was die selektive Bestimmung der Funktion auf der Grundlage des Prozessortyps angeht, hat jeder Cache Betriebscharakteristiken, die programmierbar sind als eine Funktion von Charakteristiken basierend auf dem Prozessortyp. So ist es z. B. eine programmierbare Charakteristik des internen Cache 16, ob er nur Codedaten speichert. Für ein System, das einen 386- oder 386sx-Systemprozessor verwendet, speichert der interne Cache 16 nur Codedaten, während der interne Cache 16 für ein System, das einen 486er Prozessor verwendet, sowohl Codedaten als auch Nichtcodedaten speichert. Eine programmierbare Charakteristik des Schreibpuffer-Cache 20 ist es, ob er Daten nur aus einem anderen Bus-Master als dem Systemprozessor puffert oder nicht. Für ein System, das einen 486er Systemprozessor enthält, puffert der Schreibpuffer-Cache 20 Dateneinschreibungen seitens jedes Bus-Masters, der nicht der Systemprozessor ist, während der Schreibpuffer-Cache 20 für ein System, das einen 386- oder 386sx-Systemprozessor verwendet, Dateneinschreibungen seitens jedes Bus-Masters einschließlich des Systemprozessors puffert. Die Betriebscharakteristiken der Caches werden zum Zeitpunkt des Einschaltens der Stromversorgung durch Selbstkonfiguration auf der Grundlage von Informationen über den Typ des vorhandenen Host- Prozessors bestimmt.

Der DRAM-Controller 22 unterstützt einen Schnellseitenmodus für Zugriffe auf das DRAM 12. Der Schnellseitenmodus ist eine allgemein bekannte Technik zum Beschleunigen von Zugriffen auf ein DRAM durch Aktivieren einer Zeilen-Line in einer Speicherseite und anschließendes Abtasten aufeinanderfolgender Spalten-Lines zum übertragen von Daten in das oder aus dem DRAM. Bei der vorliegenden Ausführungsform ist das DRAM 12 in Seiten unterteilt, die entweder Codedaten oder Nichtcodedaten enthalten. Ein dem DRAM 12 zugeordnetes Register ist entweder im DRAM 12 oder im DRAM-Controller 22 gelegen und speichert die Seitenadresse einer Seite, auf die zuletzt zugegriffen worden ist. Im Effekt liefert das System eine Vorspannung in Richtung auf Code-Seiten oder Nichtcode-Seiten, abhängig vom Typ des mit dem System verbundenen Prozessors. Für welchen Typ von Daten (Codedaten oder Nichtcodedaten) der Hauptspeicher 12 über den Controller 22 eine Vorspannung liefert, ist eine weitere programmierbare Charakteristik nach der vorliegenden Erfindung. Wenn z. B. der Systemprozessor vom Typ 486 ist, wird im Register die Adresse der Codeadressenseite gespeichert, auf die zuletzt zugegriffen worden ist. Im Betrieb kann sowohl auf Codedaten- als auch auf Nichtcodedaten-Seiten im DRAM 12 wahlfrei direkt zugegriffen werden. Wenn bei einem Zyklus auf eine Code-Seite und beim nächsten Zyklus auf eine Nichtcode- Seite zugegriffen wird, wird die Adresse der Code-Seite in einem Register gespeichert, während auf die Nichtcode-Seite zugegriffen wird. Unmittelbar nach dem Zugriff auf die Nichtcode-Seite wird die im Register gehaltene Adresse verwendet, um die Code-Seite wieder zu öffnen. Im Gegensatz, wenn der Systemprozessor vom Typ 386 oder 386sx ist, wird im Register die Adresse der Nichtcodeadressenseite gehalten, auf die zuletzt zugegriffen worden ist. Die Kombination von selektiver Seitenöffnungs-Vorspannung, Zugriffen im Schnellseitenmodus und mehreren Caches bringt eine erhöhte Leistungsfähigkeit des Systems.

Der Schreibpuffer-Cache 20 ist ein zweifach assoziativer Cache. Der für Nichtcodedaten vorgesehene Bereich eines Speichers kann in drei Gebiete aufgeteilt werden, die als Liste, Heap und Stack bekannt sind. Datenblöcke im Speicher werden für die Liste, den Heap und den Stack reserviert, von denen ein jedes seine eigene Organisation und seinen eigenen Zweck hat. Beispielsweise ist ein Stack eine Menge von Datenelementen, bei denen ein gleichzeitiger Zugriff immer nur auf eines erfolgen kann. Von der Liste werden Daten hauptsächlich ausgelesen und im allgemeinen nicht eingeschrieben. In strukturierten Programmen findet ein hoher Prozentsatz von Einschreibungen am Stack statt, während die zweitmeisten Dateneinschreibungen am Heap erfolgen. Durch geeignete Zuordnung der Heap- und Stack-Datenblöcke im DRAM und Abbildung jeweiliger Blöcke in einander gegenüberliegende Sets im zweifach assoziativen Cache kann eine gesteigerte Betriebsleistungsfähigkeit erreicht werden. Ferner ist eine Seitenöffnungs- Vorspannung im DRAM für Nichtcodedaten effektiv eine Seitenöffenungs-Vorspannung für Listendaten. Auf diese Weise wird die Betriebsleistungsfähigkeit der vorliegenden Erfindung weiter gesteigert.

Ein wesentlicher Vorteil des dualen oder multiplen Betriebsmodus der vorliegenden Erfindung besteht darin, daß es dieser Betrieb erlaubt, verschiedene Typen von Prozessoren mit dem vorliegenden Speichersystem zu installieren, ohne deren individuelles Leistungsvermögen wesentlich zu beeinträchtigen. Eines der nicht programmierbaren Merkmale ist die Dedizierung des internen Cache 16, welcher der größte der Caches (4K Byte) ist, zum Host-Prozessor. Da die Mehrheit der Speicheroperationen aus dem Host-Prozessor kommen, erlaubt dies, die Leistungsfähigkeit des Host-Prozessors zu maximieren. Außerdem können die anderen Bus-Master in einer 386/486-Mikrokanallandschaft den Streaming-Modus anwenden, um ihre Leistungsfähigkeit zu verbessern, eine Option, die dem Systemprozessor nicht zur Verfügung steht. Wie weiter oben beschrieben, ist es ein programmierbares Merkmal des internen Cache 16, ob oder ob er nicht nur Codedaten hält. Da ein 386er Prozessor keinen eigenen internen Cache hat, ist der interne Cache 16 den Codedaten dediziert, dem primären Typ von Daten, auf die vom 386er Prozessor am Speicher zugegriffen wird. Auf der anderen Seite hat ein 486er Prozessor seinen eigenen internen Cache und besitzt auch die Fähigkeit, Codedaten aus dem Prefetch- Cache 18 oder aus der geöffneten Seite des DRAM 12 im Burst auszulesen. Somit ist für einen 486er Host-Prozessor der interne Cache 16 hauptsächlich den Nichtcodedaten dediziert.

Auch hier ist es, wie weiter oben beschrieben, ein programmierbares Merkmal des Schreibpuffer-Cache 20, ob er Daten nur aus anderen Bus-Mastern als dem Host-Prozessor puffert. Für einen 386er Host-Prozessor puffert der Cache 20 Dateneinschreibungen sowohl aus dem 386er Prozessor als auch aus anderen Bus-Mastern. Er puffert Dateneinschreibungen aus dem 386er Prozessor, weil der interne Cache 16 allein Codedaten dediziert ist, und er puffert Dateneinschreibungen aus anderen Bus-Mastern, weil der interne Cache 16 allein dem 386er Prozessor dediziert ist. Für einen 486er Host-Prozessor ist der Cache 20 allein den anderen Bus-Mastern dediziert, weil der interne Cache 16 nur für den 486er Host-Prozessor mit Code- und Nichtcodedaten umgeht.

Die programmierbare Betriebscharakteristik des DRAM 12, ob die Seitenöffnungs-Vorspannung auf Codedaten oder auf Nichtcodedaten zielt, hängt eng mit den programmierbaren Charakteristiken des internen Cache 16 und des Schreibpuffer-Cache 20 zusammen. Beispielsweise wird, da der 486er Prozessor Codedaten im Burst lesen kann, der DRAM 12 mit einer Seitenöffnungs-Vorspannung für Codedaten versorgt. Dies erlaubt es auch dem Prefetch-Cache 18, effizient zu arbeiten, da der interne Cache 16 in diesem Modus nicht viel mit Codedaten aushilft. Im Gegensatz hierzu, bei einem 386er Prozessor, bringt die Seitenöffnungs-Vorspannung auf Nichtcodedaten einen Ausgleich für den internen Cache 16, der nur Codedaten speichert.


Anspruch[de]

1. Computerspeichersystem, das dazu ausgelegt ist, über eine Buseinrichtung (14) mit einem Prozessor verbunden zu werden, der einer von einer Mehrzahl verschiedener Prozessortypen ist, wobei das Speichersystem einen mit der Buseinrichtung (14) verbundenen Hauptspeicher (12) und mindestens einen mit der Buseinrichtung verbundenen ersten Cache (16) enthält und wobei dieser erste Cache (16) zur Speicherung von Daten eingerichtet ist, die allein auf der Grundlage von Speicherzugriffen des Prozessors gewählt werden, dadurch gekennzeichnet, daß der erste Cache eingerichtet ist zur Speicherung nur von Codedaten, wenn der Prozessor von einem ersten Typ ist, und eingerichtet ist zur Speicherung sowohl von Codedaten als auch von Nichtcodedaten, wenn der Prozessor von einem zweiten Typ ist.

2. Computerspeichersystem nach Anspruch 1, dadurch gekennzeichnet, daß der erste Cache (16) eingerichtet ist zur Speicherung nur von Codedaten, wenn der Prozessor von einem Typ ist, der keinen eigenen internen Cache hat, und eingerichtet ist zur Speicherung sowohl von Codedaten als auch von Nichtcodedaten, wenn der Prozessor von einem Typ ist, welcher seinen eigenen internen Cache hat.

3. Computerspeichersystem nach Anspruch 1 oder Anspruch 2, dadurch gekennzeichnet, daß die Buseinrichtung (14) mit mindestens einem Bus-Master verbindbar ist, der mit dem Prozessor um den Zugriff zum Speichersystem (10) konkurriert, und daß das Speichersystem mindestens einen zweiten Cache (20) enthält, der zur Pufferung von in den Hauptspeicher (12) einzuschreibenden Daten ausgelegt ist und eingerichtet ist zur Pufferung von Dateneinschreibungen aus dem mindestens einen Bus-Master und auch aus dem Prozessor, wenn der Prozessor vom ersten Typ ist, und eingerichtet ist zur Pufferung von Dateneinschreibungen allein aus dem mindestens einen Bus-Master, wenn der Prozessor vom zweiten Typ ist.

4. Computerspeichersystem nach Anspruch 3, dadurch gekennzeichnet, daß der Hauptspeicher (12) eine Vielzahl erster Seiten und eine Vielzahl zweiter Seiten enthält und daß ein Register vorgesehen ist, welches eingerichtet ist zum Halten der Seitenadresse desjenigen Exemplars der ersten Seiten, auf welches zuletzt zugegriffen worden ist, wobei diese Seitenadresse verwendet wird, das zuletzt zugegriffene Exemplar der ersten Seiten wieder zu öffnen, nachdem auf eine der zweiten Seiten zugegriffen worden ist, und daß der Hauptspeicher (12) eingerichtet ist zur Speicherung von Nichtcodedaten in den ersten Seiten, wenn der Prozessor vom ersten Typ ist, und eingerichtet ist zur Speicherung von Codedaten in den ersten Seiten, wenn der Prozessor vom zweiten Typ ist.







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

  Patente PDF

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