-
Herkömmlicherweise sind bei Computern
die Daten entweder in einem Speicher oder auf anderen I/O-Speichervorrichtungen
(I/O = Input/Output = Eingabe/Ausgabe) gespeichert, wie z.B. einem
Magnetband oder einer -platte. I/O-Speichervorrichtungen können an
einem System durch einen I/O-Bus, wie z. B. eine PCI (PCI = Peripheral
Component Interconnect = Peripheriegerätkomponentenverbindung) oder
durch ein Netz, wie z. B. einen Faserkanal, Infiniband, ServerNet
oder Ethernet, angeschlossen sein. I/O-Speichervorrichtungen sind typischerweise langsam,
wobei sie Zugriffszeiten von mehr als einer Millisekunde aufweisen.
Sie verwenden spezielle I/O-Protokolle, wie z. B. ein SCSI-Protokoll
(SCSI = Small Computer Systems Interface = Kleincomputer-Systemschnittstelle)
oder ein TCP/IP-Protokoll (TCP/IP
= Transmission Control Protocol/Internet Protocol = Übertragungssteuerungsprotokoll/Internetprotokoll),
und sie arbeiten typischerweise als Blockaustauschvorrichtungen
(z. B. werden Daten in Datenblöcken
einer feststehenden Größe geschrieben
oder gelesen). Ein Merkmal dieser Typen von Speicherungs-I/O-Vorrichtungen
ist, daß sie
permanent (nicht-flüchtig)
sind, so daß sie,
wenn sie Leistung verlieren oder neu gestartet werden, die Informationen,
die zuvor auf ihnen gespeichert wurden, einbehalten. Zusätzlich kann
von mehreren Prozessoren durch gemeinsam verwendete I/O-Netze auf I/O-Speichervorrichtungen
zugegriffen werden, selbst nachdem einige Prozessoren ausgefallen sind.
-
Allgemein ist ein Systemspeicher
mit einem Prozessor durch einen Systembus verbunden, wobei ein solcher
Speicher relativ schnell mit garantierten Zugriffszeiten ist, die
in Zehntel von Nanosekunden gemessen werden. Außerdem kann auf einen Systemspeicher
direkt mit einer Byte-Ebene- Granularität zugegriffen
werden. Der Systemspeicher ist jedoch normalerweise flüchtig, so
daß sein
Inhalt verloren geht, wenn eine Leistung verloren geht oder wenn
ein System, das einen solchen Speicher verkörpert, neu gestartet wird.
Auch befindet sich ein Systemspeicher üblicherweise in demselben Fehlerbereich
wie ein Prozessor, so daß,
wenn ein Prozessor ausfällt, der
angeschlossene Speicher ebenfalls ausfällt und auf ihn nicht mehr
zugegriffen werden kann.
-
Bei bekannten Systemen sind BBDRAMs (BBDRAM
= Battery-Backed
Dynamic Random Access Memory = batteriegesicherter dynamischer Direktzugriffsspeicher),
Halbleiterplatten und an ein Netz angeschlossene flüchtige Speicher
verwendet worden. Der bekannte BBDRAM kann beispielsweise gegenüber echten
Permanentspeichern einige Verhaltensvorteile aufweisen. Ruf ihn
kann jedoch nicht global zugegriffen werden. Außerdem befindet sich der BBDRAM
innerhalb desselben Fehlerbereichs wie eine angeschlossene CPU,
so daß der
BBDRAM im Falle eines CPU-Ausfalls oder eines Betriebssystemszusammenbruchs
nicht mehr zugreifbar ist. Dementsprechend wird ein BBDRAM häufig in
Situationen verwendet, wo der gesamte Systemspeicher permanent ist,
so daß das
System nach einem Leistungsausfall oder einem Rebooten schnell wiedergestartet
werden kann. Der BBDRAM ist während
längerer
Leistungsausfälle
immer noch flüchtig,
so daß alternative
Einrichtungen vorgesehen sein müssen, um
seinen Inhalt vor einem Entleeren der Batterien zu speichern. Zusätzlich ist
nicht bekannt, daß ein RDMA-Anschluß an den
BBDRAM existiert. Von Bedeutung ist, daß diese Verwendung des BBDRAM sehr
eingeschränkt
ist und z. B. zur Verwendung bei an ein Netz angeschlossenen Permanentspeicheranwendungen
nicht geeignet ist.
-
BBSSDs (Battery-Backed Solid-State
Disks = batteriegesicherte Halbleiterplatten) sind auch für andere
Implementierungen vorgeschlagen worden. Diese BBSSDs liefern einen
Permanentspeicher, funktionsmäßig emulieren
sie jedoch ein Plattenlaufwerk. Ein wichtiger Nachteil dieses Lösungsansatzes ist
die zusätzliche
Latenz, die dem Zugriff auf diese Vorrichtungen durch I/O-Adapter
zugeordnet ist. Diese Latenz ist in den blockorientierten und dateiorientierten
Speichermodellen inhärent,
die durch Platten und wiederum durch BBSSDs verwendet werden. Sie
laufen durch einen suboptimalen Datenweg, bei dem das Betriebssystem
nicht umgangen wird. Obgleich es möglich ist, Halbleiterplatten
zu modifizieren, um einen Teil der Nachteile zu beseitigen, kann die
inhärente
Latenz nicht beseitigt werden, weil das Verhalten durch die I/O-Protokolle
und ihre zugeordneten Vorrichtungstreiber begrenzt ist. Wie bei
dem BBDRAM sind zusätzliche
Technologien zur Handhabung eines Leistungsverlustes über längere Zeiträume erforderlich.
-
Es ist eine Aufgabe der vorliegenden
Erfindung, eine Vorrichtung mit einem und ein Verfahren für einen
Permanentspeicher, der an eine Kommunikationsverbindung angeschlossen
ist, zu schaffen.
-
Diese Aufgabe wird durch ein System
gemäß den Ansprüchen 1,
7, 13 sowie ein Verfahren gemäß Anspruch
20 und ein computerlesbares Medium gemäß Anspruch 31 gelöst.
-
Die vorliegende Offenbarung beschreibt
eine Permanentspeichervorrichtung, die die Dauerfestigkeit und Wiederherstellbarkeit
einer Speicher-I/O mit der Geschwindigkeit und dem feinkörnigen Zugriff
auf den Systemspeicher kombiniert. Wie der Speicher kann ihr Inhalt
den Leistungsausfall oder den Systemneustart überleben. Wie beim Fernspeicher
wird auf dieselbe über
ein SAN (SAN = (SAN = System Area Network = Systembereichsnetz)
zugegriffen. Im Gegensatz zu einem direkt verbundenen Speicher kann
auf die Vorrichtung weiterhin zugegriffen werden, selbst nachdem
ein Prozessor, der auf dieselbe zugreift, gescheitert ist.
-
Ein RDMA (RDMA = Remote Direct Memory Access
= Ferndirektspeicherzugriff) ist eine wichtige Fähigkeit, die SANs von anderen
Kategorien von Netzen unterscheidet; sie unterstützt eine Kontinuierliche-Verwendungs-Speichersemantik
selbst wenn der Speicher entfernt positioniert ist (nicht direkt
mit dem Prozessor verbunden ist). Die SANs sind daher ebenfalls
als RDMA-fähige
Netze bekannt. Sie ermöglichen
charakteristischerweise schnelle Null-Kopie-Speicheroperationen bei einer Bytegranularität.
-
An ein Netz angeschlossene Permanentspeichervorrichtungen
verwenden typischerweise plattenähnliche
Persistenzcharakteristika, wo der Inhalt des Speichers nicht nur
Leistungsausfälle,
sondern auch Betriebssystemzusammenbrüche, andere Softwareausfälle, Hardware-
oder Softwareaufrüstungen
und Systemwartungsreboots überleben
muß. Die
vorliegenden Lehren sind in ihrer Verwendung eines permanenten (oder
nichtflüchtigen)
Speichers einmalig, wobei der Speicher im Vergleich zum flüchtigen
Speicher sehr unterschiedliche Sätze
von Entwurfs- und Implementierungseinschränkungen vorschreibt. Die Verwaltung
von Metadaten (d. h. Daten über
den Zustand des Speichers) sowie die Verwaltung von Informationen
zum Übersetzen
von virtuellen in physikalische Adressen ist in den beiden Fällen beispielsweise
sehr unterschiedlich. Außerdem
sind die vorliegenden Lehren bei ihrem Anschließen eines Permanentspeichers
an ein RDMA-fähiges Netz
unter Verwendung von RDMA-Lese- und Schreiboperationen einmalig.
-
Bei einer Implementierung umfaßt ein System
eine an ein Netz angeschlossene Permanentspeichereinheit. Das System
umfaßt
einen Prozessorknoten zum Initiieren von Speicheroperationen, wie
z. B. Lese- und Schreiboperationen. Die Prozessoreinheit referenziert
ihre Adreßoperationen
relativ zu einem virtuellen Adreßraum, der einem Permanentspeicheradreßraum entspricht.
Der Prozessorknoten umfaßt
ferner eine Netzschnittstelle, die zum Kommunizieren an die Permanentspeichereinheit verwendet
wird, wobei die Permanentspeichereinheit ihre eigene Netzschnittstelle
aufweist. Dementsprechend kommunizieren der Speicherknoten und die Permanentspeichereinheit über eine
Kommunikationsverbindung, wie z. B. ein Netz, und vorzugsweise ein
Systembereichsnetz. Die Permanentspeichereinheit ist ferner konfiguriert,
um zwischen dem virtuellen Adreßraum,
der den Speicherknoten bekannt ist, und einem physikalischen Adreßraum, der
nur der Permanentspeichereinheit bekannt ist, zu übersetzen.
Bei anderen Ausführungsbeispielen
sind mehrere Adreßräume vorgesehen,
wobei die Permanentspeichereinheit ebenfalls eine Übersetzung
von diesen mehrfachen Adreßräumen in
physikalische Adreßräume ermöglicht.
-
Bei anderen Ausführungsbeispielen geschieht
die Übersetzung
von virtuellen Adressen des Permanentspeichers in physikalische
Adressen des Permanentspeichers innerhalb der jeweiligen Prozessorknoten.
Bei noch weiteren Ausführungsbeispielen
geschieht die Übersetzung
innerhalb entweder der Verknüpfungen,
den Ports, den Schaltern, den Routern, den Brücken, der Firmware, der Software
oder den Diensten, die dem SAN zugeordnet sind. Bei den vorliegenden
Lehren ist lediglich davon auszugehen, daß die Abbildungsinformationen,
die für
eine solche Übersetzung
erforderlich sind, mit den Daten, die im Permanentspeicher gespeichert
sind, konsistent zu halten sind, daß eine Entität die Adreßübersetzung
unter Verwendung der gespeicherten Abbildungsinformationen effizient
ausführen
kann und daß die
Entität
und die erforderlichen Abbildungsinformationen zu einem beliebigen
Zeitpunkt verfügbar
sind, wenn die Informationen vom Permanentspeicher wiedergewonnen
werden müssen.
-
Bei noch weiteren Ausführungsbeispielen werden
andere Typen von Netzen verwendet, wie z. B. ServerNet, GigaNet,
Infiniband, PCI-Express, RDMA-fähiges
Ethernet und VIA-Netze (VIA = Virtual Interface Architecture = virtuelle
Schnittstellenarchitektur). Außerdem
werden verschiedene Typen eines Permanentspeichers verwendet, wie
z. B. ein MRAM (MRAM = Magnetic Random Access Memory = magnetischer
Direktzugriffsspeicher), ein MRRAM (MRRAM = Magnetio-Resistive Random
Access Memory = magneto-resistiver Direktzugriffs speicher), ein
PFRAM (PFRAM = Polymer Ferroelectric Random Access Memory = Polymer-ferroelektrischer
Direktzugriffsspeicher), ein OUM (OUM = Ovonics Unified Memory =
Einheits-Ovonic-Speicher) und ein Flash-Speicher.
-
Nachdem sie die vorliegende Offenbarung begriffen
haben, sind diese und weitere Ausführungsbeispiele für Fachleute
auf dem Gebiet, auf das sich die Erfindung bezieht, verständlich.
-
Bevorzugte Ausführungsbeispiele der vorliegenden
Erfindung werden nachstehend Bezug nehmend auf die beiliegenden
Zeichnungen näher
erläutert.
Es zeigen:
-
1 ein
Blockdiagramm eines Systems, das eine nPMU (nPMU = Network Attached
Permanent Memory Unit = Speichereinheit, die an ein Netz angeschlossen
ist) umfaßt,
-
2 ein
Blockdiagramm eines weiteren Ausführungsbeispiels einer nPMU,
-
3 ein
Blockdiagramm eines Ausführungsbeispiels
einer nPMU unter Verwendung einer Batteriesicherung,
-
4 ein
Blockdiagramm, das Abbildungen von einem virtuellen Permanentspeicher-Adreßraum auf
einen physikalischen Permanentspeicher-Adreßraum darstellt,
-
5 ein
Blockdiagramm eines Ausführungsbeispiels
einer nPMU mit einem virtuellen Permanentspeicher-Adreßraum,
-
6 ein
Blockdiagramm eines Ausführungsbeispiels
einer nPMU mit mehreren virtuellen Adreßräumen eines Permanentspeichers,
-
7 ein
Blockdiagramm eines veranschaulichenden Computersystems, auf dem
eine nPMU implementiert ist,
-
Obgleich bei bekannten Systemen ein
permanenter Speicher nur im Kontext von blockorientierten und dateiorientierten
I/O-Architekturen mit relativ großen Latenzen verwendet worden
ist, beschreiben die vorliegenden Lehren einen Speicher, der wie
die herkömmlichen
I/O-Speichervorrichtungen permanent ist, auf den aber wie auf den
Systemspeicher mit einer feinen Granularität und geringen Latenz zugegriffen
werden kann. Wie in 1 gezeigt
ist, weist ein System 100 unter Verwendung eines Permanentspeichers,
der an ein Netz angeschlossen ist, eine nPMU 110 auf, auf
die durch einen oder mehrere Prozessorknoten 102 durch
ein RDMA-fähiges
SAN 106 zugegriffen werden kann. Um auf den Permanentspeicher
der nPMU 110 zuzugreifen, initiiert eine Software, die
auf dem Prozessorknoten 102 arbeitet, Fern-Leseoperationen oder
-Schreiboperationen durch die NI (NI = Network Interface = Netzschnittstelle) 104 des
Prozessorknotens. Auf diese Weise werden Lese- oder Schreibbefehle
auf einem RDMA-fähigen
SAN 106 an die NI der nPMU 108 übertragen.
Dementsprechend werden die entsprechenden Daten nach einer Verarbeitung über das
RDMA-fähige
SAN 106 kommuniziert. Neben den RDMA-Datenbewegungsoperationen
kann die nPMU 110 konfiguriert sein, um auf verschiedene
Verwaltungsbefehle, die nachstehend beschrieben werden, anzusprechen.
In einer Schreiboperation, die durch den Prozessorknoten 102 initiiert
wird, sobald Daten in der nPMU erfolgreich gespeichert worden sind, sind
dieselben langlebig und überleben
einen Leistungsausfall oder einen Ausfall des Prozessorknotens 102.
Speziell werden Speicherinhalte beibehalten, solange die nPMU weiterhin
korrekt funktioniert, selbst nachdem die Leistung über einen
längeren Zeitraum
getrennt worden ist oder das Betriebssystem auf dem Prozessorknoten 102 erneut
gebootet worden ist.
-
Bei diesem Ausführungsbeispiel ist der Prozessorknoten 102 ein
Computersystem, das zumindest eine CPU und einen Speicher aufweist,
wobei die CPU konfiguriert ist, um ein Betriebssystem zu betreiben.
Der Prozessorknoten 102 ist zusätzlich konfiguriert, um Anwendungssoftware,
wie z.B. Datenbankprogramme, zu betreiben. Der Prozessorknoten 102 verwendet
die SAN 106, um mit anderen Prozessorknoten 102 sowie
Vorrichtungen, wie z. B. der nPMU 110 und den I/O-Steuerungen (nicht
gezeigt), zu kommunizieren.
-
Bei einer Implementierung des Ausführungsbeispiels
ist das RDMA-fähige
SAN ein Netz, das Speicheroperationen auf Byteebene, wie z. B. Kopieroperationen,
zwischen zwei Prozessorknoten oder zwischen einem Prozessorknoten
und einer Vorrichtung ausführen
kann, ohne die CPU über
den Prozessorknoten 102 zu benachrichtigen. In diesem Fall ist
das SAN 106 konfiguriert, um eine Virtuelle-zu-Physikalische Adreßübersetzung
auszuführen, um
die Abbildung von zusammenhängenden
virtuellen Adreßräumen eines
Netzes auf nichtzusammenhängende
physikalische Adreßräume zu ermöglichen.
Dieser Typ einer Adreßübersetzung
ermöglicht eine
dynamische Verwaltung der nMPU 110. Im Handel erhältliche
SANs 106 mit einer RDMA-Fähigkeit umfassen ServerNet,
GigaNet, Infiniband und alle VIA-fähigen SANs, sind jedoch nicht
auf dieselben beschränkt.
-
Die Prozessorknoten 102 sind
allgemein an ein SAN 106 durch die NI 110 angeschlossen,
jedoch sind viele Variationen möglich.
Allgemeiner muß ein Prozessorknoten
jedoch nur mit einer Vorrichtung zum Kommunizieren von Lese- und
Schreib- oder Lade-
und Speicher-) Operationen verbunden sein. Bei einer weiteren Implementierung
dieses Ausführungsbeispiels
sind die Prozessorknoten 102 z. B. verschiedene CPUs auf
einer Hauptplatine, und, anstelle ein SAN zu verwenden, wird ein
Datenbus verwendet, z. B. ein PCI-Bus. Es wird darauf hingewiesen, daß die vorliegenden
Lehren nach oben oder nach unten skaliert werden können, um
nach Bedarf größere oder
kleinerer Implementierungen zu realisieren.
-
Die NI 108 ist mit der nPMU 110 kommunikativ
gekoppelt, um einen Zugriff auf den Permanentspeicher, der mit der
nMPU 110 enthalten ist, zu ermöglichen. Für die verschiedenen Komponenten
von 1 sind viele Technologien
verfügbar,
einschließlich
des Typs des Permanentspeichers. Dementsprechend ist das Ausführungsbeispiel
von 1 nicht auf eine
spezifische Technologie zum Realisieren des Permanentspeichers begrenzt.
Tatsächlich
sind viele Speichertechnologien einschließlich eines MRAM, eines MRRAM,
eines PFRAM, eines OUM, eines BBDRAM und Flash-Speicher aller Arten
angemessen. Obgleich die BBSSDs Übertragungen
auf Blockebene ausführen,
berücksichtigt
dieser Lösungsansatz
eine feinere Granularität
eines Speicherzugriffs einschließlich eines Speicherzugriffs
auf Byteebene. Bemerkenswerterweise kann eine Speicherzugriffsgranularität unter
Verwendung dieses Lösungsansatzes
feiner oder gröber
gestaltet sein. Wenn das SAN 106 verwendet wird, sollte
der Speicher für
den RDMA-Zugriff
schnell genug sein. In dieser Weise werden RDMA-Lese- und Schreiboperationen über das
SAN 106 ermöglicht.
Wo ein anderer Typ einer Kommunikationsvorrichtung verwendet wird,
sollte die verwendete Zugriffsgeschwindigkeit des Speichers ebenfalls
schnell genug sein, um die Kommunikationsvorrichtung zu realisieren.
Es wird darauf hingewiesen, daß einschlägige Informationen in
dem Ausmaß geliefert
werden, in dem der Permanentspeicher, der verwendet wird, die Daten
halten kann. Bei vielen Anwendungen muß der Permanentspeicher beispielsweise
Daten ungeachtet des Zeitumfangs, während dem die Leistung verloren
geht, speichern können,
wohingegen bei einer anderen Anwendung der Permanentspeicher nur
für wenige Minuten
oder Stunden erforderlich sein kann.
-
In Verbindung mit diesem Lösungsansatz wird
eine Speicherverwaltungsfunktionalität zum Erzeugen von einzelnen
oder von mehreren unabhängigen
indirekt adressierten Speicherbereichen berücksichtigt. Außerdem werden
nPMU-Metadaten für eine
Speicherwiedergewinnung nach einem Ausfall einer Leistung oder eines
Prozessorausfalls berücksichtigt.
Metainformationen umfassen beispielsweise den Inhalt und das Layout
der geschützten
Speicherbereiche in einer nPMU. Auf diese Weise speichert die nPMU
die Daten und die Art und Weise der Verwendung der Daten. Nach Bedarf
kann die nPMU dann eine Wiedergewinnung von einer Leistung oder eines
Systemausfalls berücksichtigen.
-
In 2 ist
ein Ausführungsbeispiel
einer nPMU 200 gezeigt, die einen nichtflüchtigen Speicher 202 verwendet,
der mit einer NI 204 über
Kommunikationsverbindungen, wie z. B. einen Bus, kommunikativ gekoppelt
ist. Hier kann der nichtflüchtige Speicher 202 beispielsweise
ein MRAM oder ein Flash-Speicher sein. Die NI 204 initiiert nicht
ihre eigenen RDMA-Anforderungen, sondern statt dessen empfängt die
NI 204 Verwaltungsbefehle vom Netz und führt die
angeforderten Verwaltungsoperationen aus. Speziell übersetzt
die nPMU 200 die Adresse und die eingehenden Anforderungen
und führt
dann die angeforderte Operation aus. Weitere Einzelheiten bezüglich der
Befehlsverarbeitung werden nachstehend erörtert.
-
In 3 ist
ein weiteres Ausführungsbeispiel einer
nPMU 300 unter Verwendung einer Kombination aus einem flüchtigen
Speicher 302 mit einer Batterie 304 und einem
nichtflüchtigen
sekundären
Speicher 310 gezeigt. Bei diesem Ausführungsbeispiel werden die Daten
bei einem Leistungsausfall im flüchtigen
Speicher 302 unter Verwendung der Leistung der Batterie 304 bewahrt,
bis diese Daten im nichtflüchtigen
sekundären
Speicher 310 gesichert werden können. Der nichtflüchtige sekundäre Speicher
kann beispielsweise eine Magnetplatte oder ein langsamer Flash-Speicher
sein. Damit die nPMU 300 ordnungsgemäß arbeiten kann, sollte die Übertragung
von Daten vom flüchtigen
Speicher 302 zum nichtflüchtigen sekundären Speicher 310 ohne
eine externe Intervention oder eine beliebige andere Leistung mit
Ausnahme der Leistung der Batterie 304 geschehen. Dementsprechend
sollten beliebige angeforderte Aufgaben ausgeführt werden, bevor sich die Batterie 304 entladen
kann. Wie gezeigt, umfaßt
die nPMU 300 eine optionale CPU 306, die auf einem eingebetteten
Betriebssystem betrieben wird. Dementsprechend kann die Sicherungsaufgabe
(d. h. die Datenübertragung
vom flüchtigen
Speicher 302 zum nichtflüchtigen sekundären Speicher 310)
durch eine Software ausgeführt
werden, die auf der CPU 306 betrieben wird. Eine NI 308 ist
ebenfalls umfaßt,
um RDMA-Anforderungen unter der Steuerung der Software, die auf
der CPU 306 betrieben wird, zu initiieren. Hier empfängt die
CPU 306 wiederum Verwaltungsbefehle vom Netz und führt die
angeforderte Verwaltungsoperation aus.
-
Eine nPMU, wie z. B. eine nPMU 200 oder 300,
muß eine
verwaltete Entität
sein, um die Zuweisung und gemeinsame Verwendung von Ressourcen zu
vereinfachen. Bei diesem Ausführungsbeispiel wird
die nPMU-Verwaltung durch einen PMM (PMM = Permanent Memory Manager
= permanenter Speicherverwalter) ausgeführt. Der PMM kann in der nPMU
oder außerhalb
der nPMU, wie z. B. auf einem der zuvor beschriebenen Prozessorknoten,
positioniert sein. Wenn ein Prozessorknoten den Permanentspeicher
der nPMU zuweisen oder die Zuweisung aufheben muß, oder wenn er einen existierenden
Bereich des Permanentspeichers verwenden muß, kommuniziert der Prozessorknoten
zuerst mit dem PMM, um die angeforderten Verwaltungsaufgaben auszuführen. Es
ist zu beachten, daß,
weil eine nPMU (wie eine Platte) langlebig ist und weil die nPMU
einen selbstbeschreibenden Körper
von permanenten Daten beibehält,
die Metadaten, die sich auf existierende Permanentspeicherbereiche
beziehen, auf der nPMU-Vorrichtung
an sich gespeichert werden müssen.
Der PMM muß daher
Verwaltungsaufgaben in einer Weise ausführen, in der die Metadaten
auf der nPMU stets mit den permanenten Daten, die auf der nPMU gespeichert
sind, konsistent gehalten werden, so daß die gespeicherten Daten der
nPMU stets unter Verwendung der gespeicherten Metadaten der nPMU
interpretiert werden können und
daher nach einem möglichen
Abschalten oder Ausfall des Systems wiedergewonnen werden können.
-
In dieser Weise behält eine
nPMU nicht nur die Daten in einer permanenten Weise bei, die manipuliert
werden, sondern auch den Zustand der Verarbeitung solcher Daten.
Bei einer Notwendigkeit für eine
Wiedergewinnung ist das System 100 unter Verwendung der
nPMU 110 somit in der Lage, wiederhergestellt zu werden
und den Betrieb ab dem Speicherzustand, in dem der Leistungsausfall
oder der Betriebssystemzusammenbruch eintraten, fortzusetzen.
-
Wie unter Bezugnahme auf 1 beschrieben, liefert das
SAN 106 eine Grundspeicherverwaltung und eine virtuelle
Speicherunterstützung.
Bei einer solchen Implementierung muß der PMM in der Lage sein,
die Logik in der NI 108 der nPMU 110 zu programmieren,
um entfernte Lese- und Schreiboperationen zu ermöglichen, während gleichzeitig der Permanentspeicher
vor unautorisierten oder unbeabsichtigten Zugriffen durch alle mit
Ausnahme eines ausgewählten
Satzes von Entitäten
auf dem SAN 106 geschützt
wird. Wie in 4 gezeigt
ist, kann eine nPMU außerdem
eine Virtuelle-zu-Physikalische-Adreßübersetzung
unterstützen.
Ein kontinuierlicher virtueller Adreßraum, wie z. B. virtuelle
Adressen 402 bis 416 eines Permanentspeichers,
können auf
physikalische Adressen 418 bis 448 eines diskontinuierlichen
Permanentspeichers abgebildet oder übersetzt werden. Die virtuellen
PM-Adressen werden relativ zu einer Basisadresse durch N Inkrementaladressen
referenziert. Solche virtuellen PM-Adressen entsprechen jedoch den
nichtzusammenhängenden
physikalischen PM-Adressen. Wie gezeigt, kann die virtuelle PM-Adresse 402 tatsächlich einer
physikalischen PM-Adresse 436 entsprechen. Dementsprechend
muß die
nPMU in der Lage sein, die entsprechende Übersetzung von dem virtuellen PM-Adreßraum in
den physikalischen PM-Adreßraum
und umgekehrt zu ermöglichen.
In dieser Weise ermöglicht
der Übersetzungsmechanismus
der nPMU, den Prozessorknoten zusammenhängende virtuelle Adreßbereiche
vorzulegen, während
immer noch eine dynamische Verwaltung des physikalischen Speichers
der nPMU ermöglicht
wird. Dies ist insbesondere aufgrund der permanenten Beschaffenheit
der Daten auf einer nPMU von Bedeutung. Aufgrund von Konfigurationsveränderungen
können sich
die Anzahl von Prozessen, die auf eine spezielle nPMU zugreifen,
oder möglicherweise
die Größen ihrer
jeweiligen Zuordnungen im Laufe der Zeit verändern. Der Adreßübersetzungsmechanismus
ermöglicht
der nPMU ohne weiteres, solche Veränderungen ohne Datenverlust
zu realisieren. Der Adreßübersetzungsmechanismus
ermöglicht
ferner eine einfache und effiziente Verwendung einer Permanentspeicherkapazität, indem
weder die Prozessorknoten dazu getrieben werden, zukünftige Speicheranforderungen
vor einer Zuteilung vorherzusehen noch die Prozessorknoten dazu
gezwungen werden, eine Permanentspeicherkapazität durch eine pessimistische Zuweisung
zu verschwenden.
-
Unter erneuter Bezugnahme auf 1 ist das ServerNet-SAN,
das in einem nativen AVT/BTE-Modus (AVT/BTE = access validation
and translation/block transfer engine = Zugriffsvalidierungs- und Übersetzungs-/Blockübertragungsmaschine)
arbeitet, ein Beispiel eines Einzeladreßraum-SAN 106. Jedes
Ziel auf einem solchen SAN präsentiert
den gleichen virtuellen Flachnetzadreßraum, an alle seine RDMA-Anforderungsinitiatoren, wie
z. B. die Knoten 102. Die virtuellen Netzadreßbereiche
werden durch das Ziel vom virtuellen PM-Adreßbereich auf den physikalischen
PM-Adreßbereich
mit einer Seitengranularität
abgebildet. Die virtuellen Netz-PM-Adreßbereiche können einem einzelnen Initiator
(z. B. dem Prozessorknoten 102) exklusiv zugewiesen werden,
und mehrere virtuelle PM-Adressen können auf die gleiche physikalische Seite
hinweisen.
-
Wenn der Prozessorknoten 102 den
PMM anfordert, einen Bereich eines Permanentspeichers in einer nPMU
zu öffnen
(d. h. zuzuweisen und dann zu beginnen, denselben zu verwenden),
ist die NI 108 der nPMU durch den PMM programmiert, um dem
Prozessorknoten 102 zu ermöglichen, auf den entsprechenden
Bereich zuzugreifen. Diese Programmierung weist einen Block von
virtuellen Netzadressen zu und bildet dieselben auf einen Satz von physikalischen
Seiten in einem physikalischen Speicher ab (d. h. übersetzt
dieselben). Der Bereich von virtuellen PM-Adressen kann dann ungeachtet
dessen, auf wie viele Seiten der physikalischen PM-Adresse zugegriffen
werden soll, zusammenhängend
sein. Die physikalischen Seiten können jedoch an einer beliebigen
Stelle im physikalischen PM-Speicher sein. Nach einer erfolgreichen
Initialisierung der Übersetzung
benachrichtigt der PMM den anfordernden Prozessorknoten 102 über die
virtuelle PM-Adresse
des zusammenhängenden Blocks.
Sobald die nPMU-Speicherseiten
offen sind, kann der Prozessor 102 auf dieselben zugreifen,
indem RDMA-Lese- oder – Schreiboperationen
an die nPMU ausgegeben werden.
-
Unter Bezugnahme auf 5 werden nun die Operationen der nPMU 520 in
Verbindung mit einem virtuellen Einzeladreßraum beschrieben. Es ist ein
einzelner virtueller PM-Adreßraum 560 gezeigt, der
in einen physikalischen PM-Adreßraum 562 übersetzt
wird. Sobald ein Bereich des Permanentspeichers offen ist, kann
die CPU 0 550 auf einen solchen Bereich des Permanentspeichers
in Verbindung mit der Operation der NI 552 und der NI 558 zugreifen.
Der PMM öffnet
einen Bereich des Permanentspeichers, indem ein Bereich von virtuellen
Adressen der CPU zur Verfügung
gestellt wird. Beim Anfordern des Zugriffs auf einen offenen Bereich
des virtuellen PM-Adreßraums
leitet die CPU 0 550 einen Befehl (Lesen oder Schreiben)
durch die NI 552 an die NI 558. Bei einem ordnungsgemäßen Betrieb
kann die CPU 0 550 nur auf einen spezifizierten Bereich
der virtuellen PM-Adressen zugreifen. Dementsprechend validiert
die NI 558 zunächst,
als Teil ihrer PMM-konfigurierten Funktionalität, die Fähigkeit der CPU 0 550,
um auf die virtuelle PM-Adresse 560 zuzugreifen. Die NI 558,
wenn sich dieselbe im zulässigen
Bereich der CPU 0 550 befindet, führt dann die angeforderte Adreßübersetzung
aus und gestaltet schließlich
die angeforderte Operation (z. B. Lesen oder Schreiben) gegenüber der
physikalischen PM-Adresse 562.
-
Wie in 6 gezeigt
ist, kann die nPMU 620 auch mehrere Adreßkontexte
(Räume) 670 und 672 mit
ihren jeweiligen virtuellen PM-Adreßräumen realisieren und übersetzt
jeden Raum unabhängig
in den physikalischen PM-Adreßraum 674.
Die SANs, die mehrere Adreßräume implementieren,
umfassen VIA-SANs
(VIA = VI-Architektur), die wiederum GigaNet und ServerNet II (im
VIA-Modus) sowie Inifiniband umfassen. Zwischen der nPMU 620 von 6 und der nPMU 520 von 5 bestehen Ähnlichkeiten.
Bei der nPMU 620 muß der
PMM jedoch zuerst unter den mehreren Adreßkontexten 670 und 672 unterscheiden
und dann die virtuellen Adreßkontexte 670 und 672 in
die entsprechende physikalische PM-Adresse 674 übersetzen.
-
Bei diesem Ausführungsbeispiel ist die NI 668 für einen
Benutzermodus sowie einen Betriebskernmoduszugriff auf den virtuellen
PM-Speicher und wiederum auf den physikalischen PM-Speicher konzipiert.
Dementsprechend liefert die NI 668 die prozeßäquivalenten
virtuellen Adressen. In dieser Weise können viele unabhängige virtuelle
Netzadreßräume zur
Verfügung
gestellt werden. Obgleich nur zwei Adreßkontexte gezeigt sind, sind
viele mehr möglich. Tatsächlich sind
in dem Ausmaß,
in dem die vorliegenden Lehren auf Internetanwendungen anwendbar
sind, viele Tausende von Adreßkontexten
möglich.
Um einen speziellen Adreßraum
zu spezifizieren, spezifiziert ein RDMA-Befehl (z. B. Lesen oder Schreiben)
einen Kontextidentifizierer zusammen mit der gewünschten virtuellen Adresse.
Die NI 668 kann daher verschiedene Prozessorknoten (z.
B. CPU 0 660 und CPU I 664) realisieren, um den
gleichen Kontextidentifizierer gemeinsam zu verwenden. Außerdem können die
separaten virtuellen Seiten von unterschiedlichen Kontexten in dieselbe
physikalische Speicherseite übersetzt
werden.
-
Wie zuvor, wenn ein Knoten einen
Bereich eines Permanentspeichers für einen Zugriff öffnet, wird
die NI 668 durch ihren PMM programmiert. Auch verifiziert
die NI 668, daß der
anfordernde Prozessorknoten einen Zugriff auf die angeforderte virtuelle Adresse
hat. Das Programmieren erzeugt hier jedoch einen Kontext in der
NI 668. Der Kontext umfaßt einen Block aus virtuellen
Netzadressen, die in einen Satz von physikalischen Seiten übersetzt
werden. Die virtuelle PM-Adresse 602 des Kontexts 0 670 übersetzt
beispielsweise in eine physikalische PM-Adresse 612; und
die virtuelle PM-Adresse 606 des Kontexts 1 672 wird
in eine physikalische PM-Adresse 610 übersetzt. Bei einem Ausführungsbeispiel
sind die virtuellen PM-Adressen ungeachtet der Anzahl von physikalischen
PM-Seiten, die zugeordnet wurden, zusammenhängend. Die physikalischen Seiten
können
jedoch an einer beliebigen Stelle in dem physikalischen PM-Speicher
positioniert sein.
-
Die weitere Funktionsfähigkeit
des vorliegenden Lösungsansatzes,
wie z. B. in 1 gezeigt, wird
nun verständlich.
Sobald der Prozessorknoten 102 mit dem PMM kommuniziert
hat, um einen Speicherbereich zu öffnen, kann er dann direkt
auf den Speicher der nPMU 110 zugreifen, ohne erneut durch
den PMM zu gehen. Ein Fernlesebefehl liefert beispielsweise eine
virtuelle Netzstartadresse und einen Versatz sowie (im Fall von
mehreren Adreßräumen) einen
Kontextidentifizierer. Für
einen ordnungsgemäßen Betrieb
sollte dieser Adreßbereich
innerhalb des Bereichs sein, der durch den PMM zugewiesen wurde.
Der Prozessorknoten 102 liefert an die NI 104 einen
Fernlesebefehl, der einen Hinweis auf eine lokale physikalische
Speicherposition am Knoten 102 zeigt. Die NI 104 im
anfordernden Prozessorknoten 102 sendet dann den Fernlesebefehl
an die NI 108 der nPMU 110 über das SAN 106. Die
NI 108 übersetzt
die virtuelle Startnetzadresse in eine physikalische Adresse in
der nPMU 110 unter Verwendung von Übersetzungstabellen, die dem
Bereich zugeordnet sind. Mittels der NI 108 sendet die
nPMU dann die Daten zum lesenden Prozessorknoten zurück, der
an der übersetzten
physikalischen Adresse startet. Die NI 108 setzt
das Übersetzen
der Adressen fort, selbst wenn die nPMU 110 Seitengrenzen
erreicht, da die physikalischen Seiten der zusammenhängenden
virtuellen PM-Adressen nicht notwendigerweise in kontinuierliche
physikalische PM-Adressen übersetzt
werden müssen.
Wenn der Lesebefehl ausgeführt
worden ist, markiert die NI 104 die Leseübertragung
als beendet. Außerdem
können
beliebige wartende Prozesse benachrichtigt werden und wiederum verarbeitet
werden.
-
Ein Fern-Schreibvorgang an einen
Permanentspeicher erfolgt in ähnlicher
Weise. Der Prozessorknoten 102 liefert eine virtuelle Start-PM-Netzadresse
und einen virtuellen Versatz sowie (im Falle von mehreren Adreßräumen) einen
Kontextidentifizierer für
die nPMU 110. Wie zuvor muß der virtuelle PM-Netzadreßbereich
in den zugewiesenen Bereich fallen. Der Prozessorknoten 102 liefert
auch einen Hinweis auf die physikalische Adresse der Daten, die übertragen
werden sollen. Die NI 104 im Prozessorknoten 102 gibt
dann einen Fern-Schreibvorgangs-Befehl an die NI 108 in
der nPMU 110 aus und beginnt das Senden der Daten. Die
NI 108 übersetzt die
Startadresse in eine physikalische Adresse in der nPMU 110 unter
Verwendung von Übersetzungstabellen,
die dem Bereich zugeordnet sind. Auch speichert die nPMU 110 Daten,
die an der übersetzten physikalischen
Adresse starten. Die NI 108 setzt ein Übersetzen der Adressen fort,
selbst wenn die nPMU 110 Seitengrenzen erreicht, da die
physikalischen Adressen der zusammenhängenden virtuellen PM-Netzadressen
nicht notwendigerweise in zusammenhängende physikalische PM-Adressen übersetzen.
Wenn der Schreibbefehl ausgeführt
ist, markiert die NI 104 die Schreibübertragung als beendet. Beliebige
wartende Prozesse können
dann benachrichtigt und wiederum verarbeitet werden.
-
Es wird darauf hingewiesen, daß beim Latenztesten
der nPMU gemäß den vorliegenden
Lehren festgestellt wurde, daß Speicherzugriffe
ohne weiteres innerhalb von 80 Mikrosekunden erreicht werden könnten, was
im Vergleich zu I/O-Operationen,
die über
800 Mikrosekunden erfordern, ein sehr guter Schnitt ist. Tatsächlich ist
dieses Ergebnis möglich,
weil die Latenzen der I/O-Operationen einschließlich ihrer notwendigen Unterbrechungen
vermieden werden. Die nPMU gemäß den vorliegenden Lehren
weist daher die Persistent der Speicherung mit dem feinkörnigen Zugriff
des Systemspeichers auf.
-
Für
die nPMUs existieren verschiedene Anwendungen einschließlich Anwendungen
zum Beschleunigen von Plattenlesevorgängen und Schreibvorgängen. Auch
können
die nPMUs eine Wiederherstellung von einem Leistungs- oder Prozessorausfall
vereinfachen. Aufgrund der inhärenten Schwierigkeiten
zwischen den Lese- und Schreiboperationen liefern die nPMUs eine
deutlichere Verbesserung bei den Schreiboperationen als bei Leseoperationen,
da die nPMUs einen langsameren und kleineren Speicher über einem
Netz als der System-RAM über
einem viel schnelleren Bus verwenden. Obgleich die Datenstrukturen,
die häufig
gelesen werden müssen,
in einem System-RAM in einem Cache gespeichert werden können, selbst
wenn eine Kopie in einem nPMU existiert, sind weniger häufig verwendete
Datenstrukturen für
eine nPMU angemessen.
-
Die Datenbankverriegelungen, die
auf einer Transaktions-um-Transaktions-Basis
gehalten werden, sind beispielsweise zur Speicherung in einer nPMU
angemessen. Durch Verfolgen von aktualisierten Verriegelungen, die
durch Transaktionen in einer nPMU gehalten werden, kann eine Wiederherstellung
von ungeplanten Ausfällen – und möglicherweise
geplanten Transaktionsverwalterunterbrechungen – beschleunigt werden. Außerdem kann
eine nPMU das Aufkommen von neuen Verriegelungstypen vereinfachen,
die bei einem Ausfall weiterhin bestehen bleiben, wodurch die Datenbankressourcen,
die durch in Arbeit befindliche Transaktionen zum Zeitpunkt eines
Zusammenbruchs in einem inkonsistenten Zustand übrig bleiben, bewacht werden.
-
Ein physikalischer Erneut-Ausführen-Cache (Redo-Cache)
ist auch für
eine nPMU-Implementierung angemessen. Das Beibehalten eines Cache-Speichers
von Datenbankblöcken,
die verunreinigt (d. h. teilweise verarbeitet), jedoch vor dem Zweiten-bis-Letzten-Steuerungspunkt
nicht weggeräumt wurden,
beschleunigt eine physikalische Reparatur während einer Volumenwiederherstellung
unter Verwendung einer Fuzzy-Prüfpunktgebung.
Bei einer Implementierung wird ein solcher Cache während des
Fortschreitens von jedem Steuerungspunkt abgeschnitten. Während der
Wiederherstellung kann anstelle eines Lesens von Plattenvolumina,
das häufig
willkürlich
geschieht, für
Daten, die Reparaturaufzeichnungen in einer Prüfspur zugeordnet sind, durch
Konsultieren des Reparatur-Cache-Speichers in einer nPMU eine Wiederherstellung
viel schneller erreicht werden. Dies kann besonders wichtig sein, wenn
Datenbank-Cachespeicher groß sind
und Transaktionen relativ klein sind, jedoch mit einer hohen Rate
geschehen. Bei solchen Szenarien kann sich eine große Menge
von Prüfinformationen
zwischen aufeinanderfolgenden Steuerungspunkten aufbauen, die nichtsdestotrotz
in einer nPMU für
eine beschleunigte Wiederherstellung gespeichert werden können.
-
Eine nPMU kann auch effiziente Datenbankverpflichtungen
durch die Verwendung eines permanenten Protokollendes berücksichtigen.
Anstatt auf Plattenschreiboperationen zu warten, die Hilfsprüfspuren
entsprechen, um vor der Ausführung
von Datenbanktransaktionen geräumt
zu werden, kann eine nPMU beispielsweise Datenbankverpflichtungen nach
einem Schreiben an die nPMU berücksichtigen und
muß nicht
auf andere Räumungsoperationen warten.
Da eine nPMU eine bessere Latenz als eine Latenz, die zehn mal geringer
ist als die Plattenspeicherung, aufweisen kann, können Datenbanktransaktionslatenzen
beträchtlich
gekürzt
werden. Außerdem
wird desgleichen ein Transaktionsdurchsatz verbessert. Zu dem Maße, in dem
Informationen nichtsdestotrotz einer Platte verschrieben werden
müssen, kann
eine nPMU beispielsweise eine beträchtlich größere Menge von Informationen
akkumulieren und wiederum dieselben effizienter an die Platte schreiben.
-
Die Datenbankwarteschlangen und die
Ereignisverarbeitung kann auch durch die Verwendung einer nPMU verbessert
werden. Die Warteschlangen und Ereignisse können beispielsweise unter Verwendung
von Listendatenstrukturen in einer nPMU beibehalten werden, um beliebige
Ausfälle
oder Stagnationen bei firmeninternen oder firmenweiten Einsätzen zu
verhindern. Ein Beibehalten von Ereignissen und Warteschlangen in
einer nPMU ermöglicht
eine reibungslose Arbeitsflußverarbeitung
und ein rechtzeitiges Handhaben von Ereignissen, selbst wenn eine
CPU, die Informationen aktiv verarbeitet, einen Ausfall erleidet.
-
Bei einem Ausführungsbeispiel wird der vorliegende
Lösungsansatz
auf einem Computersystem 700, wie in 7 gezeigt ist, praktiziert. Unter Bezugnahme
auf 7 ist ein exemplarisches
Computersystem 700 (z. B. ein Personalcomputer, eine Arbeitsstation,
ein Hauptrechner etc.), auf dem die vorliegenden Lehren praktiziert
werden können,
gezeigt. Das Computersystem 700 ist mit einem Datenbus 714 konfiguriert,
der verschiedene Komponenten kommunikativ koppelt. Wie in 7 gezeigt ist, ist der Prozessor 702 mit
dem Bus 714 für
ein Verarbeiten von Informationen und Anweisungen gekoppelt. Ein
computerlesbarer flüchtiger
Speicher, wie z. B. ein RAM 704, ist ebenfalls mit dem
Bus 714 zum Speichern von Informationen und Anweisungen
für den
Prozessor 702 gekoppelt. Außerdem ist ein computerlesbarer
ROM (ROM = Read Only Memory = Nur-Lese-Speicher) 706 ebenfalls
mit dem Bus 714 für
ein Speichern von statischen Informationen und Anweisungen für den Prozessor 702 gekoppelt.
Eine Datenspeicherungsvorrichtung 708, wie z. B. ein magnetisches
oder optisches Plattenmedium, ist ebenfalls mit dem Bus 714 gekoppelt.
Die Datenspeicherungsvorrichtung 708 wird zum Speichern
von großen
Mengen von Informationen und Anweisungen verwendet. Eine alphanumerische
Eingabevorrichtung 710, die alphanumerische Tasten und
Funktionstasten umfaßt,
ist mit dem Bus 714 zum Kommunizieren von Informationen
und Befehlsauswahlen an den Prozessor 702 gekoppelt. Eine
Cursorsteuerungsvorrichtung 712, wie z. B. eine Maus, ist
mit dem Bus 714 zum Kommunizieren von Benutzereingabeinformationen
und Befehlsauswahlen an den Zentralprozessor 702 gekoppelt.
Ein Eingabe-/Ausgabekommunikationsport 716 ist mit dem
Bus 714 zum Kommunizieren mit einem Netz, anderen Computern
oder anderen Prozessoren gekoppelt. Eine Anzeige 718 ist
mit dem Bus 714 zum Anzeigen von Informationen für einen
Computerbenutzer gekoppelt. Die Anzeigevorrichtung 718 kann
eine Flüssigkristallvorrichtung,
eine Kathodenstrahlröhre
oder eine andere Anzeigevorrichtung sein, die zum Erzeugen von graphischen
Bildern und alphanumerischen Schriftzeichen geeignet ist, die durch
den Benutzer erkennbar sind. Die alphanumerische Eingabe 710 und
die Cursorsteuerungsvorrichtung 712 erlauben dem Computerbenutzer,
die zweidimensionale Bewegung eines sichtbaren Symbols (Hinweis)
auf der Anzeige 718 dynamisch zu signalisieren.
-
Obgleich verschiedene Ausführungsbeispiele
und Vorteile beschrieben worden sind, wird darauf hingewiesen, daß eine Anzahl
von Variationen ohne weiteres erkennbar ist. Beim Implementieren
eines Permanentspeichers sind beispielsweise viele Technologien
verfügbar.
Somit kann der vorliegende Lösungsansatz
mit der Offenbarung und den folgenden Ansprüchen im weitesten Sinne konsistent
angewendet werden.