-
GEBIET DER ERFINDUNG
-
Die Erfindung betrifft das Gebiet der Computerwissenschaften und genauer ein durch eine Logik einer Computerspeicher-Steuereinheit realisiertes Verfahren zur gemeinsamen Speichernutzung durch Prozessoren, eine Computerspeicher-Steuereinheit, die eine solche Logik aufweist, ein Computerprogramm, das Anweisungen zum Einrichten einer solchen Logik aufweist, und ein Datenspeichermedium mit einem darauf gespeicherten solchen Programm.
-
HINTERGRUND
-
Architekturen mit gemeinsam genutztem Speicher ermöglichen es mehreren Prozessoren, Bereiche ihrer Adressräume gemeinsam zu nutzen. Vorhandene Hardware-Architekturen mit gemeinsam genutztem Speicher und deren entsprechende Protokolle zum gemeinsamen Nutzen von Speicher gehen von einem Satz zusammenarbeitender Prozessoren aus. Eine bestehende Möglichkeit liegt darin, dass alle Prozessoren eine gleiche Speicherzugriff-Schnittstellen-Hardware realisieren, bei der es sich nicht um einen Standard handelt, die jedoch zur Zusammenarbeit zwischen den Prozessoren eingerichtet ist, damit sie in einer reibungslosen Weise auf den gemeinsam genutzten Speicher zugreifen können. Eine weitere bestehende Möglichkeit liegt darin, dass alle Prozessoren auf ihnen installierte spezielle Software-Komponenten besitzen, mit denen sie miteinander oder mit einer zentralen Hardware Daten austauschen können, um zum Emulieren eines virtuellen gemeinsam genutzten Speichers zusammenzuarbeiten. Diese bestehenden Möglichkeiten erfordern auf jedem den Speicher gemeinsam nutzenden Prozessor eine spezielle installierte Komponente: in einem Fall eine spezielle Hardware-Schnittstelle, die zur Zusammenarbeit eingerichtet ist, oder im anderen Fall spezifische Software und einen virtuellen gemeinsam genutzten Speicher, der unter Verwendung der nicht gemeinsam genutzten Speicher der einzelnen Prozessoren emuliert wird. Dadurch sind solche Architekturen in ersterem Fall kostenintensiv und kompliziert zu erreichen, oder sie hinken in letzterem Fall der Leistung von physisch gemeinsam genutzten Speichern hinterher.
-
Mit der wachsenden Popularität heterogener Architekturen besteht ein gesteigertes Interesse an der Realisierung von Mechanismen, mit denen nicht-homogene Architekturen Prozesse ausführen können, die über eine gemeinsam genutzte Speicherregion Daten austauschen können, auch wenn die fraglichen Prozessoren nicht dieselbe (oder keine) Schnittstelle mit einem Protokoll für gemeinsam genutzten Speicher realisieren.
-
Aus
US 7 032 079 B1 sind ein System und ein Verfahren zur Beschleunigung von Leseanfragen in einem Mehrprozessorsystem bekannt. Bei Eingang einer Leseanfrage wird vom Hauptspeicher ermittelt, ob es eine aktuellere Kopie der angeforderten Daten in einem anderen Speicher des Systems gibt. In diesem Fall wird eine snoop-Anfrage abgesendet, um die aktuelleren Daten in den Hauptspeicher zu holen.
-
In Jacob, B. et al.; „virtual memory in contemporary microprocessors", IEEE Micro, 1998, 18. Jg., Nr. 4, S 60 - 75, wird ein Überblick über kommerzielle Speicheraufbauten gegeben, bei denen jede Prozessorarchitektur die Gemeinsamkeiten virtueller Speicher unterstützt unter Berücksichtigung von Adressraumschutz, gemeinsamer Speicher und große Adressräume.
-
Ausgehend von diesem Stand der Technik stellt sich die Erfindung die Aufgabe, die gemeinsame Nutzung von Speicher durch mehrere Prozessoren zu verbessern.
-
KURZDARSTELLUNG DER ERFINDUNG
-
Die Aufgabe wird erfindungsgemäß gelöst durch ein durch eine Logik einer Computerspeicher-Steuereinheit realisiertes Verfahren nach Anspruch 1, ein System, das eine Computerspeicher-Steuereinheit aufweist, nach Anspruch 6 und ein nicht-flüchtiges Datenspeichermedium nach Anspruch 8. Bevorzugte Ausführungsformen der Erfindung sind Gegenstand der jeweiligen Unteransprüche.
-
In seinen bevorzugten Ausführungsformen kann das Verfahren eines oder mehrere der folgenden Merkmale aufweisen:
- - das Senden der Anfrage an den zweiten Prozessor wird über einen Interrupt-Kontaktstift des zweiten Prozessors durchgeführt;
- - die Bewertung weist auf, in einer Datenbank der Steuereinheit zu prüfen, ob den durch den ersten Prozessor angefragten Daten ein zweiter Prozessor zugeordnet ist;
- - das Verfahren weist weiterhin auf, in der Datenbank den ersten Prozessor den durch den ersten Prozessor angefragten Daten zuzuordnen;
- - bei den zweiten Schnittstellen handelt es sich um Schnittstellen von dynamischem Speicher mit wahlfreiem Zugriff und doppelter Datenrate (double-data-rate dynamic random access memory (DDR DRAM)).
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
Ein die Erfindung ausbildendes System und ein die Erfindung ausführender Prozess werden nun mittels eines nicht einschränkenden Beispiels und unter Bezugnahme auf die begleitenden Zeichnungen beschrieben, wobei:
- - 1 einen Ablaufplan eines Beispiels des Verfahrens zeigt;
- - 2 eine grafische Darstellung eines Systems zeigt, das die Computerspeicher-Steuereinheit aufweist.
-
DETAILLIERTE BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
-
Vorgeschlagen wird ein durch eine Logik einer Computerspeicher-Steuereinheit realisiertes Verfahren. Die Steuereinheit weist mindestens eine erste Schnittstelle und (mehrere) zweite Schnittstellen auf und ist eingerichtet, über die erste Schnittstelle mit einem physischen Hauptspeicher und über die zweiten Schnittstellen mit einem Satz von N ≥ 2 nicht-zusammenarbeitenden Prozessoren verbunden zu werden. Die Logik ist mit der ersten Schnittstelle und den zweiten Schnittstellen betrieblich verbunden. Das Verfahren weist über die zweiten Schnittstellen ein Empfangen einer Anfrage, auf Daten des physischen Hauptspeichers zuzugreifen, von einem ersten Prozessor des Satzes auf. Das Verfahren weist zudem ein Bewerten auf, ob ein zweiter Prozessor zuvor auf die durch den ersten Prozessor angefragten Daten zugegriffen hat. Das Verfahren weist weiterhin ein Ablehnen der Anfrage vom ersten Prozessor auf, wenn die Bewertung positiv ausfällt, oder ein Gewähren der Anfrage vom ersten Prozessor, wenn die Bewertung negativ ausfällt.
-
Ein solches Verfahren erlaubt es über die zweiten Schnittstellen mit der Steuereinheit verbundenen N Prozessoren, einen über die erste Schnittstelle mit der Steuereinheit verbundenen Speicher in einer verbesserten Weise gemeinsam zu nutzen.
-
Bei der (Computerspeicher)-Steuereinheit handelt es sich um ein Hardware-Material, das geeignet ist, den Zugriff auf einen physischen Speicher durch eine Vielzahl von Prozessoren zu steuern, die möglicherweise in ein System, wie beispielsweise einen Computer, integriert sein können.
-
Die Steuereinheit weist mindestens eine erste Schnittstelle und zweite Schnittstellen auf. In anderen Worten: Die Steuereinheit weist einen ersten Satz von mindestens einer Schnittstelle (d.h. die „erste Schnittstelle“) und einen zweiten Satz von mindestens zwei Schnittstellen (die „zweiten Schnittstellen“) auf. Bei der ersten Schnittstelle auf der einen und den zweiten Schnittstellen auf der anderen Seite handelt sich bei allen um Werkzeuge zum Verbinden mit Hardware, welche Hardware-Elemente (wie beispielsweise Verbindungen) und Software-Elemente (wie beispielsweise ein Programm zum Interpretieren von durch die Steuereinheit über eine gegebene Schnittstelle empfangenen Signalen und/oder zum Übermitteln von Signalen über eine gegebene Schnittstelle) aufweisen, wobei sich die erste Schnittstelle und die zweiten Schnittstellen dahingehend unterscheiden, dass sie geeignet sind, die Steuereinheit mit unterschiedlichem Material zu verbinden. In der Tat ist die Steuereinheit einerseits eingerichtet, mit einem physischen Hauptspeicher (des Computers, sollte dies der Fall sein) über die erste Schnittstelle verbunden zu werden, die somit dafür geeignet ist. Andererseits ist die Steuereinheit eingerichtet, über die zweiten Schnittstellen mit Prozessoren verbunden zu werden. Es gibt mindestens zwei zweite Schnittstellen, so dass es insgesamt mindesten drei Schnittstellen gibt (mindestens eine erste Schnittstelle und mindestens zwei zweite Schnittstellen). Auf diese Weise kann die Steuereinheit mit einem Satz von N ≥ 2 nicht-zusammenarbeitenden Prozessoren verbunden sein.
-
Bei dem Hauptspeicher kann es sich um eine einzelne Einheit mit einer der ersten Schnittstelle entsprechenden zweiten Schnittstelle handeln. Alternativ kann der Hauptspeicher mehrere Schnittstellen besitzen, wobei in diesem Fall die Steuereinheit möglicherweise mehrere erste Schnittstellen besitzt, oder der Hauptspeicher kann aus mehreren Einheiten bestehen, von denen jede eine oder mehrere Schnittstellen besitzt, wobei die Steuereinheit in diesem Fall mehrere erste Schnittstellen besitzt, d.h. mindestens eine pro Einheit.
-
Von den Prozessoren wird angenommen, dass sie nicht-zusammenarbeitend sind, da es sich bei ihnen um Standardprozessoren handeln kann. Zum Beispiel können die Prozessoren jede Hardware-Komponente ausschließen, die speziell für die Zusammenarbeit zwischen den Prozessoren entwickelt ist. Zudem können die Prozessoren darauf gespeicherte komplexe Software ausschließen, die konzipiert ist, die Datenübertragung zwischen den Prozessoren hinsichtlich einer Zusammenarbeit zu ermöglichen. Somit erlaubt das Verfahren ein gemeinsames Nutzen von Speicher durch mehrere Prozessoren in einer kostengünstigen und einfachen Weise. In einem Beispiel können die Prozessoren unterschiedliche Mikroarchitekturen und Definitionen virtueller Speicherschnittstellen aufweisen. Somit erlaubt das Verfahren ein gemeinsames Nutzen von Speicher durch mehrere Prozessoren, obwohl sich diese Prozessoren unterscheiden können. Bei den zweiten Schnittstellen kann es sich um Schnittstellen mit doppelter Datenrate handeln, was einen weithin bekannten Standard darstellt und somit kostengünstig und einfach zu realisieren ist. Zudem können sich mindestens zwei der zweiten Schnittstellen unterscheiden.
-
Das Verfahren deckt eine Hardware-Architektur und ein entsprechendes Zugriffsprotokoll ab, das es Prozessoren, die möglicherweise unterschiedliche Architekturen und virtuelle Speicherschnittstellen definieren, ermöglicht, durch eine gemeinsam genutzte Speicherregion Daten auszutauschen. Das Verfahren kann somit auf der Ebene von elektrischen und Protokoll-Standard-DRAM-Schnittstellen arbeiten. In einer Ausführungsform ist eine Schnittstelle mit doppelter Datenrate (double-data-rate (DDR)) durch ein Signal erweitert, das die Verfügbarkeit von Daten von DRAM-Arrays anzeigt. Vorhandene DDR-Schnittstellen verfügen bereits über analoge (jedoch optionale) DQS- und RDQS-Signale. Da diese Signale optional sind, gehen viele Realisierungen derzeit davon aus, dass Daten nach einer festen Verzögerung verfügbar sind. Das Verfahren beruht auf der Tatsache, dass Commodity-Prozessoren ungeachtet ihrer Architektur und Definition ihrer virtuellen Speicherschnittstelle auf Hauptspeicher über physische standardisierte Speicherschnittstellen zugreifen, wie beispielsweise die standardisierte JEDEC-DDR-Speicherschnittstelle.
-
Die Steuereinheit (die auch als die Kohärenzsteuereinheit (coherence control unit oder CCU) bezeichnet werden kann) ist somit mit jedem Prozessor und dem Hauptspeicher verbunden, wobei beide Verbindungen möglicherweise standardisierte Speicherschnittstellen verwenden, zum Beispiel die JEDEC-Standard-DDR-Speicherschnittstellen. Daher können sich alle hierin nachstehend erwähnten Speicheradressen auf physische DRAM-Adresse beziehen. Jede beliebige weitere Speicherschnittstelle, die von Prozessorarchitekturen und Speichermodulen weithin unterstützt wird, kann jedoch ebenfalls verwendet werden.
-
Die Steuereinheit weist weiterhin die Logik auf. Eine Logik weist Hardware mit Verarbeitungsfähigkeiten auf, die vorgegebenen Schemata folgen, z.B. dank in einem Speicher gespeicherter Anweisungen. Die Logik ist mit der ersten Schnittstelle und den zweiten Schnittstellen betrieblich verbunden. In anderen Worten: Die Logik hat Zugriff auf die Schnittstellen und kann somit Daten verarbeiten, die über die Schnittstelle bewegt werden. Die Logik kann somit durch die Steuereinheit von außerhalb der Steuereinheit über die Schnittstellen empfangene Daten empfangen und verarbeiten, und/oder die Logik kann die Steuereinheit anweisen, Daten über die Schnittstellen an Ziele außerhalb der Steuereinheit zu senden.
-
Das durch die Logik der Steuereinheit durchgeführte Verfahren wird nun unter Bezugnahme auf 1 beschrieben, die einen Ablaufplan eines Beispiels des Verfahrens darstellt.
-
Das Verfahren des Beispiels weist ein Verbleiben in einem Ruhezustand auf (S5). In solch einem Fall wartet die Logik auf das Auftreten des ersten aktiven Ereignisses des Verfahrens, bevor Aktionen durchgeführt werden. Zudem kann die Logik in den Ruhezustand zurückkehren, wenn sie ihre Aktionen beendet hat.
-
Das Verfahren weist über die zweiten Schnittstellen ein Empfangen (S10) einer Anfrage von einem ersten Prozessor des Satzes auf, um auf Daten des physischen Hauptspeichers zuzugreifen. In anderen Worten: Ein Prozessor des Satzes, der „erste“ Prozessor, benötigt Zugriff auf den physischen Hauptspeicher. Diese Anfrage wird durchgeführt, als ob der Prozessor direkt mit dem Hauptspeicher verbunden wäre. In anderen Worten: Der Prozessor „sieht“ die Steuereinheit nicht und handelt, als ob er direkt mit dem Hauptspeicher verbunden wäre, wie dies üblicherweise der Fall ist.
-
Das Verfahren weist dann ein Bewerten (S20) auf, ob ein zweiter Prozessor zuvor auf die durch den ersten Prozessor angefragten Daten zugegriffen hat. In anderen Worten: Die Logik überprüft, ob ein anderer Prozessor, der „zweite“ Prozessor, bereits auf dieselben Daten zugegriffen hat, die durch den ersten Prozessor angefragt werden. Im Beispiel weist die Bewertung (S20) auf, in einer Datenbank der Steuereinheit zu prüfen, ob den durch den ersten Prozessor angefragten Daten ein zweiter Prozessor zugeordnet ist. Die Steuereinheit kann somit solch eine Datenbank und damit einen dedizierten Speicher enthalten, um sie zu speichern (z.B. einen internen Speicher oder einen Teil des Hauptspeichers). Eine solche Datenbank kann aus einer Nachschlagetabelle bestehen, die einen Prozessor (z.B. eine Kennung eines Prozessors) Daten (z.B. einer Kennung von Daten) zuordnet. Diese ermöglicht es der Steuereinheit, Kollisionen zwischen Prozessoren zu vermeiden, die im Wesentlichen gleichzeitigen Zugriff auf dieselben Daten des Hauptspeichers erfragen.
-
Wenn die Bewertung (S20) positiv ausfällt (d.h. ein zweiter Prozessor zuvor Zugriff auf dieselben Daten angefragt hat, die nun durch den ersten Prozessor angefragt werden), kann es in der Tat eine Kollision geben (d.h. die zwei Prozessoren können an denselben Daten arbeiten und sie möglicherweise modifizieren, ohne die Modifikationen mit dem anderen zu teilen, oder sie lesen, während sie durch den anderen modifiziert werden, ohne zu wissen, dass sie modifiziert werden, und somit die Modifikationen nicht lesen). Somit weist das Verfahren in solch einem Fall ein Ablehnen (S30) (d.h. in einen Wartezustand setzen) der Anfrage vom ersten Prozessor auf. Dies verschafft Zeit zum Realisieren von Aktionen, um sicherzustellen, dass es zu keiner Kollision kommen wird und eine solche zu vermeiden. Andernfalls (d.h. wenn die Bewertung (S20) das Ergebnis ergibt, dass noch kein Prozessor die Daten angefragt hat) weist das Verfahren ein Gewähren (S41) der Anfrage vom ersten Prozessor auf, wenn die Bewertung negativ ausfällt.
-
Im Beispiel weist das Verfahren während des Ablehnens (S30) der Anfrage vom ersten Prozessor (d.h. während die Anfrage vom ersten Prozessor in einen Wartezustand versetzt ist) parallel ein Senden (S35) einer Anfrage an den zweiten Prozessor auf, Cachespeicherzeilen in den physischen Hauptspeicher zurückzuschreiben. Die Cachespeicherzeilen, die zurückgeschrieben werden müssen, können den durch den ersten Prozessor angefragten Daten zugehörig sein. In anderen Worten: Die Logik fordert den zweiten Prozessor, d.h. denjenigen, der auf dieselben Daten zugegriffen hat, die vom ersten Prozessor angefragt werden, auf, alle in seinem oder seinen Cachespeicher(n) gespeicherten Daten (oder nur die den angefragten Daten zugehörigen Daten) an die Steuereinheit zu senden. Dies kann über einen Interrupt-Kontaktstift des zweiten Prozessors erfolgen. Wenn solche Daten vorhanden sind (d.h. der zweite Prozessor seine Cachespeicherzeilen noch nicht zurückgeschrieben hat), überwacht die Logik den Empfang dieser Daten (im Ablaufplan nicht dargestellt) und weist (S36) die Steuereinheit an, die angefragten Cachespeicherzeilen, die durch die Steuereinheit vom zweiten Prozessor empfangen werden, an den physischen Hauptspeicher zu übermitteln. In anderen Worten: Die Logik stellt den Transfer der Daten an den Hauptspeicher sicher. Somit wird die Arbeit an den Daten, die durch den zweiten Prozessor durchgeführt wurde, an den Hauptspeicher übergeben.
-
Nachdem der zweite Prozessor alle angefragten Cachespeicherzeilen in den physischen Hauptspeicher zurückgeschrieben hat, was durch Empfangen (S37) eines Abschlusssignals vom zweiten Prozessor (durch die Logik) bestätigt werden kann, kann das Verfahren ein Gewähren (S42) der Anfrage vom ersten Prozessor aufweisen.
-
Das Gewähren (S41) und das Gewähren (S42) realisieren dieselben Aktionen, sie haben jedoch aufgrund der Tatsache, dass ihnen unterschiedliche Schritte des Verfahrens vorangehen, einen unterschiedlichen Bezug.
-
Im Beispiel weist das Verfahren vor dem Gewähren (S41, S42) der Anfrage des ersten Prozessors und bei solch einem Gewähren (S41, S42) weiterhin ein Zuordnen (S38) des ersten Prozessors zu den durch den ersten Prozessor angefragten Daten in der Datenbank auf. Auf diese Weise wird sichergestellt, dass weitere Ausführungsvorgänge des Verfahrens funktionieren werden. Im Falle, dass es einen zweiten Prozessor gibt und das Ergebnis der Bewertung (S20) positiv war, kann der erste Prozessor den zweiten Prozessor in der Datenbank ersetzen.
-
Im Beispiel weist das Gewähren (S41, S42) der Anfrage des ersten Prozessors ein Anweisen (S39) der Steuereinheit auf, die Anfrage an den physischen Hauptspeicher zu übermitteln und dann die Steuereinheit anzuweisen (S40), die ausgegebenen Daten vom physischen Hauptspeicher an den ersten Prozessor weiterzuleiten. In der Tat handeln die Prozessoren (einschließlich des ersten Prozessors) so, als ob sie direkt mit dem Hauptspeicher verbunden wären, die Steuereinheit fängt jedoch alle Signale ab und verwaltet sie. Dies wird klarer, wenn die Steuereinheit unter Bezugnahme auf 2 beschrieben wird.
-
Als eine Effizienzoptimierung können die Adressen von Datenelementen im Speicher in Blöcke gruppiert werden, die innerhalb der CCU als physische CCU-Seiten bezeichnet werden, und die gesamte Verwaltung von Datenbesitz kann bei solcher Granularität durchgeführt werden. Dies kann zum Beispiel die Anzahl von Einträgen verringern, welche die CCU in ihrer Datenbank pflegen muss, kann jedoch in Schritt S35 ein Zurückschreiben von mehr Daten erfordern.
-
Das Verfahren bietet ein Protokoll gemeinsam genutzten Speichers und wird besser mit einer homogenen Speicherorganisation durchgeführt. Die Steuereinheit kann somit einen gemeinsamen Adressraum definieren, und der physische Speicher kann in gemeinsam genutzte, physische Seiten aufgeteilt werden - unabhängig von den in den einzelnen Prozessoren verwendeten Seitengrößen. Jeder Prozessor kann eine andere virtuelle Speicherschnittstelle realisieren, von denen jede ihre eigene Anzahl von Seiten und Seitengröße aufweist. Zum Beispiel kann für einen 32-Bit-PowerPC und x86-Architekturen (einer der Prozessoren kann solche Merkmale aufweisen) die physische Seitengröße 4 KB betragen, wohingegen sie für DEC/Compaq Alpha 8 KB betragen kann (einer der Prozessoren kann solche Merkmale aufweisen). Dies wird zum Beispiel in einer Arbeit von B. Jacob und T. Mudge mit dem Titel „Virtual memory in contemporary microprocessors“, IEEE Micro, 18:60 bis 75, Juli1998, erklärt.
-
Die Steuereinheit kann die physischen Adressanfragen durch jeden Prozessor in die entsprechende physische Seitennummer der Steuereinheit in einer Datenbank übersetzen (z.B. ein einheitlicher Speicheradressraum), wie beispielsweise eine Nachschlagetabelle für physische Seiten-IDs (physical page ID lookup table (PPIDT)). Es können mehrere Kriterien verwendet werden, um die gemeinsame Steuereinheiten-Seitengröße zu wählen. Größere Steuereinheiten-Seitengrößen werden zu kleineren Anzahlen von Einträgen in der PPIDT führen, werden jedoch erfordern, dass mehr Elemente in den Speicher zurückgeschrieben werden müssen, wenn die Steuereinheit einen Prozessor über eine Zurückschreibanfrage benachrichtigt, und somit die Leistung verschlechtern.
-
Gemeinsam genutzte Daten werden somit in diesem Fall bei der Granularität der physischen Seiten der Steuereinheit verfolgt, d.h. ein Datenzugriff auf einen Speicherort eines gemeinsam genutzten Speichers wird durch die physische Seitenkennung (physical page identifier (PPI)) identifiziert, die diesem Speicherort zugeordnet ist. Die CCU überwacht jeden DRAM-Speicherzugriff. Unter Verwendung einer Zuordnungstabelle hält sie bei Auftreten eines Speicherzugriffs auf einen gemeinsam genutzten Speicherort die Identität des Prozessors, der die Anfrage gestartet hat, und die der gemeinsam genutzten Seite, auf die zugegriffen wurde, zugeordnete PPI fest. Diese Informationen werden verwendet, um Konsistenz zu gewährleisten, wenn ein anderer Prozessor versucht, auf denselben physischen Speicherort zuzugreifen.
-
Ein weiteres Beispiel für ein Ausführen des Verfahrens, ähnlich dem unter Bezugnahme auf 1 bereitgestellten, wird nun erläutert. Die Merkmale dieses Beispiels können in das unter Bezugnahme auf 1 bereitgestellte Beispiel integriert werden.
-
In diesem Beispiel befindet sich die CCU anfänglich in einem Ruhezustand. Wenn ein Prozessor einen Lesevorgang vom Speicher startet, wird die den Prozessor verlassende, zum DRAM ausgehende Anfrage durch die CCU abgefangen. Die CCU führt dann ein Nachschlagen im Prozessor zur Nachschlagetabelle für physische Seiten-IDs (PPIDT) durch. Dieses Nachschlagen wird verwendet, um zu ermitteln, ob die physische Seite, auf der sich die angefragten Daten befinden, zuvor durch einen anderen Prozessor angefragt (und dadurch möglicherweise modifiziert) wurde. Wenn sich die der Adresse entsprechende PPID nicht in der Tabelle befindet, greift der Prozessor auf den DRAM zu, und die CCU aktualisiert die PPIDT, indem sie einen neuen Eintrag hinzufügt, der den Prozessor der entsprechenden gemeinsamen physischen Seite zuordnet. Dann wird die Datenbewegung vom DRAM zum Prozessor durch die CCU gestartet.
-
Wenn ein anderer Prozessor versucht, auf Daten in derselben physischen Speicherseite zuzugreifen, wird das PPIDT-Nachschlagen offenbaren, dass diese Seite zuvor durch einen andern Prozessor gelesen wurde. Um in diesem Fall die Datenkonsistenz zu gewährleisten, sendet die CCU eine Anfrage an den Prozessor, alle Cachespeicherzeilen zurückzuschreiben, die der physischen Seite entsprechen, die neben dem Prozessor in der PPIDT aufgeführt ist. Diese Anfrage wird unter Verwendung eines Interrupt-Signals durch einen generischen Prozessor-Interrupt-Kontaktstift realisiert. Die CCU muss warten, bis der Prozessor zurücksignalisiert, dass der Speicherschreibvorgang abgeschlossen wurde, was durch einen universellen Eingang/Ausgang-Kontaktstift oder einen Schreibvorgang auf eine nicht cachespeicherfähige Adresse realisiert werden kann.
-
Sobald gewährleistet ist, dass die Daten in den Speicher zurückgeschrieben wurden, aktualisiert die CCU die PPIDT durch Entfernen des alten Eintrags in der PPIDT und Erstellen eines neuen für den Prozessor, der die PPID der entsprechenden physischen Speicherseite der CCU enthält. Schließlich startet die CCU die Anfrage an den Hauptspeicher, so dass Daten an den entsprechenden Prozessor übertragen werden können.
-
Es muss sichergestellt werden, dass die Prozessoren nicht nach einer festen Verzögerung anfangen, Datenwörter einzutakten, wie es der Fall wäre, wenn sie direkt mit dem DRAM (über dessen Speichersteuereinheit) verbunden wären. Ein Ansatz, dies in der Ausführungsform sicherzustellen, in der die Standardschnittstelle eine DDR aufweist, liegt darin, sicherzustellen, dass Prozessoren bei jeder Leseanfrage unter Verwendung einer CCU das optionale DQS-DDR-Schnittstellensignal realisieren (und zuverlässig überwachen); dadurch können die Prozessoren wissen, wann gültige Daten verfügbar sind. Mögliche alternative Ansätze könnten ein Übersteuern der vorhandenen Speicherzeittaktungs-Einrichtinformationen einschließen, die in seriellen Vorhandenseinerkennungs(serial presence detect (SPD))-EEPROMS auf Speicher-DIMMs gespeichert sind und durch die Prozessoren beim Hochfahren gelesen werden. Wenn die Daten aus dem DRAM bereit sind, werden sie durch die CCU an den entsprechenden Prozessor weitergeleitet.
-
Gemäß der vorhergehenden Beschreibung wird die PPIDT aktualisiert, wann immer ein Prozessor eine neue Transaktion startet. Prozessorcachespeicher können jedoch in der Zwischenzeit geleert sein, oder die Daten, die einen neu hinzugefügten Eintrag in der Tabelle verursacht haben, können entfernt worden sein, um jüngere Daten anzulegen (allocate). In dieser Situation ist die CCU unter Umständen nicht in der Lage, die Änderung im Prozessorcachespeicher zu erkennen. Die CCU muss daher die Cachespeicherersetzung für die unterschiedlichen Prozessorcachespeicher intern modellieren, so dass sie vorhersagen kann, ob ein spezielles Datenelement aus dem Speicher entfernt wurde. In Situationen, in denen ein Modellieren innerhalb der CCU nicht möglich ist, müssen unter Umständen alle Zeilen in den entsprechenden Cachespeichern entfernt werden.
-
Eine alternative Realisierung könnte daraus bestehen, jeweils eine einzelne Steuereinheit pro Prozessor zu besitzen und eine Synchronisierung der unterschiedlichen Instanzen der Steuereinheit möglicherweise unter Verwendung eines Verbindungsnetzwerks zwischen den CCUs vorzunehmen.
-
Nun kann die Logik Teil einer Computerspeicher-Steuereinheit sein. Die Steuereinheit weist mindestens eine erste Schnittstelle und zweite Schnittstellen auf und ist eingerichtet, über die erste Schnittstelle mit einem physischen Hauptspeicher und über die zweiten Schnittstellen mit einem Satz von N ≥ 2 nicht-zusammenarbeitenden Prozessoren verbunden zu werden. Die Steuereinheit weist weiterhin die Logik auf, die wiederum betrieblich mit der ersten Schnittstelle und den zweiten Schnittstellen verbunden und eingerichtet ist, das Verfahren durchzuführen. Eine solche Computerspeicher-Steuereinheit ermöglicht einer Vielzahl nichtzusammenarbeitender Prozessoren, denselben physischen Hauptspeicher in einer effizienten, kostengünstigen und einfachen Weise gemeinsam zu nutzen.
-
Der Computerspeicher kann selbst Teil eines Systems sein, das die Computerspeicher-Steuereinheit aufweist, die über die erste Schnittstelle mit einem physischen Hauptspeicher und über die zweiten Schnittstellen mit einem Satz von N ≥ 2 nicht-zusammenarbeitenden Prozessoren verbunden ist.
-
2 zeigt ein Blockschaubild von Hardware eines Beispiels des Systems, bei dem es sich um ein Computersystem mit mehreren Prozessoren, die einen physischen Hauptspeicher gemeinsam nutzen, oder ein Computernetzwerk, das mehrere Computer (und somit mehrere Prozessoren) aufweist, die einen physischen Hauptspeicher gemeinsam nutzen, handeln kann.
-
Im Beispiel weist ein System 200 eine Computerspeicher-Steuereinheit 100 auf. Die Computerspeicher-Steuereinheit 100 ist über erste Schnittstellen 110 mit einem physischen Hauptspeicher 210 (ebenso Teil des Systems 200) verbunden. Die Computerspeicher-Steuereinheit 100 ist weiterhin über zweite Schnittstellen 120 mit drei Prozessoren 220 verbunden.
-
Die Steuereinheit 100 weist mindestens eine erste Schnittstelle 110 und mindestens zwei zweite Schnittstellen 120 auf (acht in dem Beispiel) und ist eingerichtet, über die ersten Schnittstellen 110 mit dem physischen Hauptspeicher 210 und über die zweiten Schnittstellen 120 mit den nicht-zusammenarbeitenden Prozessoren 220 verbunden zu werden. Die Steuereinheit 100 weist weiterhin eine (Steuer-) Logik 130 auf, die über einen Datenpfad 115 betrieblich mit den ersten Schnittstellen 110 und den zweiten Schnittstellen 120 verbunden ist, und ist eingerichtet, das Verfahren durchzuführen. Die zweiten Schnittstellen 120 weisen jeweils einen Unterbrecher (interruptor) 125 auf, der eingerichtet ist, ein Signal über einen Interrupt-Kontaktstift der Prozessoren 220 zu senden, um eine Anfrage an die Prozessoren 220 zu senden, Cachespeicherzeilen zurückzuschreiben.
-
Der Datenpfad 115 ist eingerichtet, durch die Steuerlogik 130 gesendete oder von irgendeiner der Schnittstellen (110 und 120) empfangene Informationen zu zentralisieren. Der Datenpfad 115 kann dafür irgendein Mittel oder irgendeine Kombination von Mitteln zum Leiten von Daten aufweisen, wie beispielsweise Umleitungs-Multiplexer, Zurückschreibpuffer und/oder einen Bus.
-
Die Steuereinheit 100 weist auch eine Anfragewarteschlange 140 auf, die eingerichtet ist, durch die Prozessoren 220 empfangene Anfragen in eine Warteschlange einzustellen. Die Steuereinheit 100 weist auch Konfigurationsregister 150 und einen internen Speicher 160 auf, in dem eine PPIDT 165 gespeichert ist. Auf diese Weise ist die Steuereinheit 100 eingerichtet, eine von einem Prozessor 220 empfangen Anfrage als eine Anfrage zum Zugreifen auf eine gegebene Seite des Hauptspeichers 210 zu interpretieren, und kann dank der Nachschlagetabelle 165 bewerten, ob ein anderer Prozessor 220 zuvor auf die gegebene Seite zugegriffen hat.