-
HINTERGRUNDINFORMATIONEN
-
Ressourcendisaggregation verbreitet sich zunehmend in aufkommenden Rechenszenarien, wie etwa Cloud-Anwendungen (auch Hyperscaler genannt), bei denen eine Disaggregation das Mittel zum effektiven Verwalten von Ressourcen bereitstellt und einheitliche Landschaften zur einfacheren Verwaltung aufweist. Obwohl Speicherungsdisaggregation in mehreren Bereitstellungen weit verbreitet ist, zum Beispiel Amazon S3, wird Rechen- und Speicherdisaggregation auch bei Hyperscalern wie Google Cloud immer verbreiteter.
-
1 veranschaulicht die jüngste Entwicklung von Rechen- und Speicherungsdisaggregation. Wie gezeigt sind unter einer Webskala/hyperkonvergierten Architektur 100 Speicherungsressourcen 102 und Rechenressourcen 104 in demselben Gehäuse, demselben Einschub, demselben Schlitten oder demselben Fach kombiniert, wie ein Gehäuse 106 in einem Rack 108 gezeigt ist. Unter der Disaggregationsarchitektur auf Rackskala 110 werden die Speicherungs- und Rechenressourcen als gepoolte Ressourcen in demselben Rack disaggregiert. Wie gezeigt, beinhaltet dies Rechenressourcen 104 in mehreren gebündelten Recheneinschüben 112 und einem gepoolten Speicherungseinschub 114 in einem Rack 116. In diesem Beispiel umfasst der gepoolte Speicherungseinschub 114 „Just a Bunch of Flash“ (JBOF) an einer Oberseite des Racks. Unter der vollständigen Disaggregationsarchitektur 118 werden die Rechenressourcen in gepoolten Recheneinschüben 112 und die Speicherressourcen in gepoolten Speicherungseinschüben 114 in separaten Racks 120 und 122 bereitgestellt.
-
2 zeigt ein Beispiel für eine disaggregierte Architektur. Rechenressourcen, wie etwa Mehrkernprozessoren (auch als CPUs (Zentralverarbeitungseinheiten) bezeichnet) in Blade-Servern oder Servermodulen (nicht gezeigt) in zwei Rechenblöcken 202 und 204 in einem ersten Rack 206, sind selektiv mit Speicherressourcen (z. B. DRAM-DIMMS, NVDIMMs usw.) in Speicherblöcken 208 und 210 in einem zweiten Rack 212 gekoppelt. Jeder der Rechenblöcke 202 und 204 beinhaltet ein FPGA (feldprogrammierbares Gatearray) 214 und mehrere Ports 216. Gleichermaßen beinhaltet jeder der Speicherblöcke 208 und 210 ein FPGA 218 und mehrere Ports 220. Die Rechenblöcke weisen auch eine oder mehrere Rechenressourcen auf, wie etwa CPUs oder andere Verarbeitungseinheiten (kollektiv als XPUs bezeichnet), einschließlich einer oder mehrerer Grafikprozessoreinheiten (GPUs) oder Universal-GPUs (GP-GPUs), Tensorverarbeitungseinheiten (TPU), Datenverarbeitungseinheiten (DPUs), Prozessoren für künstliche Intelligenz (KI) oder KI-Inferenzeinheiten und/oder anderer Beschleuniger, FPGAs und/oder andere programmierbare Logik (die für Rechenzwecke verwendet wird) usw. Die Rechenblöcke 202 und 204 sind über Ports 216 und 220 und einen Switch oder eine Zwischenverbindung 222, die eine beliebige Art von Switch oder Zwischenverbindungsstruktur repräsentiert, mit den Speicherblöcken 208 verbunden. In Ausführungsformen, die Ethernet-Fabrics einsetzen, kann der Switch/die Zwischenverbindung 222 zum Beispiel ein Ethernet-Switch sein. Optische Switches und/oder Fabrics können auch verwendet werden, sowie verschiedene Protokolle, wie etwa Ethernet, InfiniBand, RDMA (Remote Direct Memory Access), NVMe-oF (Non-volatile Memory Express over Fabric, RDMA over Converged Ethernet (RoCE), CXL (Compute Express Link) usw. Die FPGAs 214 und 218 sind dazu programmiert, Routing- und Weiterleitungsoperationen in Hardware durchzuführen. Als eine Option können andere Schaltungsanordnungen, wie etwa CXL-Switches, mit CXL-Fabrics verwendet werden.
-
Allgemein kann ein Rechenblock Dutzende oder sogar Hunderte Kerne aufweisen, während Speicherblöcke, die hier auch als gepoolter Speicher bezeichnet werden, Terabyte (TB) oder Zehnfache von TB an Speicher aufweisen können, der als disaggregierter Speicher implementiert ist. Ein Vorteil besteht darin, nutzungsspezifische Speicherabschnitte aus einem Speicherbaustein aufzuteilen und sie einem Rechenblock (und/oder Rechenressourcen im Rechenblock) zuzuweisen. Die Menge an lokalem Speicher auf den Rechenblöcken ist relativ klein und allgemein auf bloße Funktionalität für Betriebssystem(OS)-Booten und andere solche Verwendungen beschränkt.
-
Eine der Herausforderungen bei disaggregierten Architekturen ist die insgesamt erhöhte Latenz zum Speicher. Auf lokalen Speicher innerhalb eines Knotens kann innerhalb von 100 ns (Nanosekunden) oder so zugegriffen werden, wohingegen der Latenzzuschlag zum Zugreifen auf disaggregierte Speicherressourcen über ein Netzwerk oder eine Fabric viel höher ist.
-
Zusätzlich zu einer disaggregierten Architektur setzen andere Speicherarchitekturen mehrere Ebenen ein, manchmal als „Nah“-Speicher und „Fern“-Speicher bezeichnet. Wie bei disaggregierten Architekturen ist die Latenz beim Zugreifen auf Fernspeicher wesentlich größer als die Latenz beim Zugreifen auf Nahspeicher.
-
Figurenliste
-
Die vorstehenden Aspekte und viele der dazugehörigen Vorteile dieser Erfindung werden besser ersichtlich, wenn dieselben unter Bezugnahme auf die folgende ausführliche Beschreibung in Verbindung mit den zugehörigen Zeichnungen besser verstanden werden, wobei sich gleiche Bezugszeichen über alle verschiedenen Ansichten hinweg auf gleiche Teile beziehen, sofern nicht anders angegeben:
- 1 ist ein Diagramm, das die jüngste Entwicklung von Rechen- und Speicherungsdisaggregation veranschaulicht;
- 2 ist ein Diagramm, das ein Beispiel für eine disaggregierte Architektur veranschaulicht;
- 3 ist ein Diagramm, das eine abstrakte Ansicht einer abgestuften Speicherarchitektur veranschaulicht, die drei Ebenen einsetzt;
- 4a ist ein Diagramm, das eine erste Abtastoperation veranschaulicht, während der ein Seitendurchlauf durchgeführt wird und eine Seitenmetadatenstruktur anfänglich aufgefüllt wird;
- 4b ist ein Diagramm, das eine zweite Abtastoperation veranschaulicht, während der die Seitenmetadatenstruktur kontinuierlich abgetastet wird;
- 5a ist ein Diagramm, das einen Abtastprozess veranschaulicht, der eine Seitenzugriffssondierung während eines ersten Zeitrahmens verwendet;
- 5b ist ein Diagramm, das ein Beispiel einer Aktualisierung der Seitenmetadatenstruktur während eines zweiten Zeitrahmens veranschaulicht;
- 5c ist ein Diagramm, das das Abtasten der aktualisierten Seitenmetadatenstruktur während eines dritten Zeitrahmens veranschaulicht;
- 6 ist ein Diagramm, das ein Beispiel eines Filterns veranschaulicht, gemäß einer Ausführungsform;
- 7 ist ein Diagramm, das eine Verwendung eines selektiven Aktualisierungs-Hooks zum Aktualisieren von heißen Seiten veranschaulicht, die für Heiß-/Kaltseitendetektions-, Vorhersage- und Bewegungsalgorithmen verwendet werden;
- 8 ist ein Diagramm, das ein Beibehalten einer relativen Seiten-Hitze-Datenstruktur im Kernelspeicher veranschaulicht, gemäß einer Ausführungsform;
- 9a ist ein schematisches Diagramm, das ein System in einer disaggregierten Architektur veranschaulicht, in deren Rahmen eine Plattform auf entfernten gepoolten Speicher über eine Fabric zugreift, gemäß einer Ausführungsform;
- 9b ist eine Ansicht einer Systemarchitektur auf hoher Ebene, die eine Rechenplattform beinhaltet, in der eine CXL-Speicherkarte in einer Fernspeicherebene implementiert ist; und
- 10 ist ein schematisches Diagramm einer Cloud-Umgebung, in der vier Speicherebenen implementiert sind; und
- 11 ist ein Ablaufdiagramm, das Operationen und Logik veranschaulicht, die durch ein Betriebssystem während laufender Laufzeitoperationen durchgeführt werden, gemäß einer Ausführungsform.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Hierin werden Ausführungsformen von Verfahren und Einrichtungen zum Minimieren von Mehraufwand bei Detektion von heißen/kalten Seiten bei laufenden Arbeitslasten beschrieben. In der folgenden detaillierten Beschreibung werden zahlreiche spezifische Details dargelegt, um ein gründliches Verständnis von Ausführungsformen der Erfindung zu vermitteln. Fachleute auf dem relevanten Gebiet werden jedoch erkennen, dass die Erfindung ohne eines oder mehrere der spezifischen Details oder mit anderen Verfahren, Komponenten, Materialien usw. ausgeführt werden kann. In anderen Fällen werden wohlbekannte Strukturen, Materialien oder Vorgänge nicht im Detail gezeigt oder beschrieben, um zu vermeiden, dass Aspekte der Erfindung verschleiert werden.
-
Eine Bezugnahme in dieser gesamten Beschreibung auf „eine einzelne Ausführungsform“ oder „eine Ausführungsform“ bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft, die in Verbindung mit den Ausführungsformen beschrieben wird, in zumindest einer Ausführungsform der vorliegenden Erfindung enthalten ist. Deshalb bezieht sich das Auftreten der Phrasen „in einer einzelnen Ausführungsform“ oder „in einer Ausführungsform“ an verschiedenen Stellen in dieser gesamten Beschreibung nicht notwendigerweise immer auf die gleiche Ausführungsform. Ferner können die einzelnen Merkmale, Strukturen oder Eigenschaften in beliebiger geeigneter Weise in einer oder mehreren Ausführungsformen kombiniert werden.
-
Der Klarheit halber können einzelne Komponenten in den Figuren hierin anstatt durch eine bestimmte Bezugsziffer auch durch ihre Beschriftungen in den Figuren bezeichnet werden. Zusätzlich können Bezugsziffern, die sich auf einen bestimmten Komponententyp (im Gegensatz zu einer bestimmten Komponente) beziehen, mit einer Bezugszahl gezeigt werden, gefolgt von „(typ)“, was „typisch“ bedeutet. Es versteht sich, dass die Konfiguration dieser Komponenten typisch für ähnliche Komponenten, die existieren können, aber in den Zeichnungsfiguren der Einfachheit und Klarheit halber nicht gezeigt sind, oder anderweitig ähnliche Komponenten ist, die nicht mit separaten Bezugsziffern bezeichnet sind. Umgekehrt ist „(typ)“ nicht dahingehend auszulegen, dass die Komponente, das Element usw. typischerweise für ihre/seine offenbarte Funktion, Implementierung, ihren/seinen Zweck usw. verwendet wird.
-
Anwendung auf mehrstufige Speicherarchitekturen
-
Die hierin beschriebenen Lehren und Prinzipien können unter Verwendung verschiedener Arten von abgestuften Speicherarchitekturen implementiert werden. Zum Beispiel veranschaulicht 3 eine abstrakte Ansicht einer abgestuften Speicherarchitektur, die drei Ebenen einsetzt: 1) „Nah“-Speicher; 2) „Fern“-Speicher; und 3) SCM (Storage Class Memory). Die Terminologie „Nah“- und „Fern“-Speicher bezieht sich nicht auf die physische Distanz zwischen einer CPU und der zugehörigen Speichervorrichtung, sondern vielmehr auf die Latenz und/oder Bandbreite zum Zugreifen auf auf der Speichervorrichtung gespeicherte Daten.
-
3 zeigt eine Plattform 300, die eine Zentralverarbeitungseinheit (CPU) 302 beinhaltet, die mit einem Nahspeicher 304 und einem Fernspeicher 306 gekoppelt ist. Der Rechenknoten 300 ist ferner mit dem SCM-Speicher 310 und 312 in SCM-Speicherknoten 314 und 316 verbunden, die über eine Fabric 318 mit hoher Geschwindigkeit und niedriger Latenz mit dem Rechenknoten 300 gekoppelt sind. Bei der veranschaulichten Ausführungsform ist der SCM-Speicher 310 mit einer CPU 320 in dem SCM-Knoten 314 gekoppelt, und der SCM-Speicher 312 ist mit einer CPU 322 in dem SCM-Knoten 316 gekoppelt. 3 zeigt ferner eine zweite oder dritte Speicherebene, die einen EA(Eingabe-Ausgabe)-Speicher 324 umfasst, der in einer CXL-Karte (Compute-Express-Link-Karte) 326 implementiert ist, die über eine CXL-Zwischenverbindung 328 mit der Plattform 300 gekoppelt ist.
-
In einem Beispiel umfasst der Speicher der Ebene 1 DDR und/oder HBM, der Speicher der Ebene 2 umfasst 3D-Crosspoint-Speicher und Ebene 3 umfasst gepoolten SCM-Speicher, wie etwa 3D-Crosspoint-Speicher. In manchen Ausführungsformen kann die CPU eine Speichersteuerung bereitstellen, die Zugriff auf den Speicher der Ebene 2 unterstützt. In manchen Ausführungsformen kann der Speicher der Ebene 2 Speichervorrichtungen umfassen, die einen DIMM-Formfaktor einsetzen.
-
Eine andere Mehrebenen-Speicherarchitektur ist eine Non-Uniform Memory Architecture (NUMA). NUMA kann in Multisteckplatz-Plattformen verwendet werden, wobei jeder Steckplatz lokalen Speicher beinhaltet und ein gegebener Steckplatz unter Verwendung einer Steckplatz-zu-Steckplatz-Zwischenverbindung auf den lokalen Speicher eines anderen Steckplatzes zugreifen kann. NUMA-Plattformen können auch kohärenten Speicher über Steckplätze hinweg implementieren.
-
In Speichersystemen mit mehreren Ebenen kann die CPU Speichervorrichtungen mit heterogenen Latenz- und Bandbreitencharakteristiken adressieren. Im Folgenden bezieht sich „langsamer Speicher“ auf Speicher mit hoher Latenz und niedriger Bandbreite, während sich „schneller Speicher“ auf Speicher mit langsamer Latenz und hoher Bandbreite bezieht. Beispiele für derartige Umgebungen beinhalten: 1) Speicherpooling mit lokalem und entferntem Speicher; 2) Verwenden eines persistenten Speichers (wie etwa Optane PMEM) als RAM zusammen mit einem Standard-DRAM; und 3) NUMA-Knoten.
-
Obwohl Hyperscaler- und HPC-Arbeitslasten häufig NUMA-bezogen gemacht werden können, ist dies bei herkömmlichen Arbeitslasten von Cloud-Dienstanbietern (CSP), die von Drittparteien kommen oder sogar virtualisiert sind, nicht der Fall, sodass eine abgestufte Speicherverwaltung generisch und nicht intrusiv sein sollte.
-
In der folgenden Beschreibung verweisen „heiße Seiten“ auf Speicherseiten mit hoher Zugriffsfrequenz durch ihren Prozess, während „kalte Seiten“ auf Speicherseiten mit niedriger Zugriffsfrequenz durch ihren Prozess verweisen. Moderne Betriebssysteme werden durch das BIOS über die Eigenschaften jedes Speichers (z. B., HMAT auf Linux) informiert, um die beste Nutzung der Ressourcen verfügbar zu machen, im Allgemeinen durch Platzieren heißer Seiten auf schnellem Speicher, während kalte Seiten auf langsamen Speicher platziert werden, um freien Platz im schnellen Speicher zu maximieren.
-
Optimierte Speicherplatzierung beruht auf einer richtigen Erkennung von heißen/kalten Seiten. Dies erfordert das Abtasten von Metadaten der Seiten der Prozesse im Speicher. Bei existierenden Verfahren wird dies erreicht, indem ein OS-Kemelmerkmal genutzt wird, um den Prozessspeicher Seite für Seite zu durchlaufen und Abtastcode für jede von ihnen systematisch auszuführen. Dies ist ressourcenintensiv. Beispielsweise könnte der Durchlauf für ein großmaßstäbliches System über Hunderttausende Seiten oder Millionen Seiten iterieren. Außerdem werden für jede Seite mehr Kernelroutinen ausgeführt, um Seitenmetadaten zu sammeln. Darüber hinaus wird der Prozess laufend wiederholt, um den Seitenstatus und die Metadaten zu aktualisieren.
-
Gemäß Aspekten der Ausführungsformen hierin wird eine neuartige Datenstruktur bereitgestellt, die die Seitenmetadaten zur Heiß-/Kaltseitendetektion verfolgt. Bei diesem Ansatz wird eine erste Abtastung der Speicherseiten durch Durchlaufen der Speicherseiten unter Verwendung des herkömmlichen Prozesses durchgeführt. Bei dem neuen Ansatz wird die neue Datenstruktur jedoch aufgefüllt.
-
Ein Überblick über den Prozess, der auf eine nicht einschränkende Linux-Implementierung angewandt wird, ist in Diagrammen 400a und 400b in 4a und 4b veranschaulicht. In Linux setzt die Seitentabellenverwaltung eine dreistufige Struktur ein: eine globale Seitenverzeichnistabelle (PGD-Tabelle) 402, eine mittlere Seitenverzeichnistabelle (PMD-Tabelle) 404 und eine Seitentabelleneintrags-Tabelle (PTE-Tabelle) 406, die mehrere PTEs 408 beinhaltet. Jeder Prozess weist einen Zeiger (mm_struct--+pgd) auf sein eigenes PGD auf, das ein physischer Seitenframe ist. Jeder aktive Eintrag in der PGD-Tabelle zeigt auf einen Seitenframe, der ein Array von PMD-Einträgen des Typs pmd_t enthält, der wiederum auf Seitenframes zeigt, die einen PTE des Typs pte_t enthalten, der schließlich auf Seitenframes zeigt, die die tatsächlichen Benutzerdaten enthalten.
-
Wie in Diagramm 400a von 4a gezeigt, wird während einer ersten Abtastung 401 der Eintrag des Prozesses in der PGD-Tabelle 402 nachgeschlagen, um das Array von PMD-Einträgen in der PMD-Tabelle 404 für den Prozess aufzufinden. Jeder der PMD-Tabelleneinträge zeigt auf eine PTE-Tabelle 406, deren PTEs 408 durchlaufen werden, um eine Seitenmetadatenstruktur 410, die eine Vielzahl von Seitenmetadateneinträgen 412 umfasst, unter Verwendung einer Auffülloperation 414 aufzufüllen. Wie in Diagramm 400b von 4b gezeigt, werden während einer zweiten Abtastung 416 Seitenmetadateneinträge 412 in der Seitenmetadatenstruktur 410 abgetastet (gelesen), um zu ermitteln, ob eine Speicherseite heiß oder kalt ist.
-
Ein Mechanismus im OS-Kernel wird eingeführt, um eine neue Art von Sondierungen zu registrieren. Diese Sondierungen ermöglichen einem Prozess, einen Hook für spezifische Kernelereignisse zu registrieren. In diesem Fall sind die Sondierungen dazu ausgelegt, einen registrierten Prozess auszulösen, wenn auf eine Seite zugegriffen wird. Der Hook wird zu einer Warteschlange hinzugefügt, die, wenn möglich, für eine gegebene Seite ausgeführt wird. In einer Ausführungsform ist der Hook der Seitenzugriffsereignishandler, der die „Zu untersuchen“-Operation in eine Warteschlange einreiht. Die Warteschlange wird dann später verarbeitet (wenn die CPU z. B. im Leerlauf ist), und die Seitenberührungsoperation und ihre Auswirkung auf die Seitenhitze/-kälte werden verarbeitet. Da es zu diesem Zeitpunkt neue Daten im Seitenverlauf gibt, wird die Seitenhitze basierend auf dem Alter des letzten Zugriffs der Seite synchron bewertet.
-
Die Metadaten jeder Seite werden von dem Kernel in der Seitenmetadatenstruktur 410 gepflegt, der gemäß einer Ausführungsform sofort während Laufzeitoperationen verfügbar ist. Die Seitenmetadatenstruktur 410 wird automatisch durch den Kernel bei neuen Seitenzugriffen (inkrementell) aktualisiert, wobei die letzte Zugriffszeit der Seite (z. B. unter Verwendung eines Zeitstempels) aktualisiert wird.
-
5a, 5b und 5c zeigen eine beispielhafte Implementierung der neuen Metadatenstruktur zum Identifizieren einer heißen Speicherseite. Zuvor wurde die in 4a gezeigte vollständige Seitendurchlauf- und Auffüll-Operation 414 durchgeführt. Während eines ersten Zustands 500a zum Zeitpunkt T1 sind in diesem Beispiel alle Seiten kalt. Eine Seitenzugriffssondierung 502 wird verwendet, um Seitenmetadaten 410 durch Lesen der aktuellen Seitenmetadateneinträge 412 abzutasten. Da Seitenmetadateneinträge 412 aktualisiert werden, wenn auf ihre assoziierten Speicherseiten zugegriffen wird, sind diese Daten aktuell und spiegeln den aktuellen Speicherzustand wider.
-
Bei Zustand 500b in 5b greift ein Prozess 504 auf eine Speicherseite 506 zur Zeit = T2 zu. Der Zugriff auf die Seite wird heiß. Dementsprechend aktualisiert die Seitenzugriffssondierung 502 einen Seitenmetadateneintrag 508 in den Seitenmetadaten 410, die der Speicherseite 506 entsprechen, mit einem Zeitstempel 508. Bei Zustand 500c, der der Zeit = T3 in 5c entspricht, werden die Seitenmetadateneinträge 412 in den Seitenmetadaten 410 unter Verwendung eines Abtastprozesses 510 abgetastet, der durch die Seitenzugriffssondierung 502 implementiert wird. Der Abtastprozess 510 umfasst ein Lesen der Zeitstempel für jeden Seitenmetadateneintrag 412. Basierend auf dem Zeitstempelwert in dem Seitenmetadateneintrag 508 wird ermittelt, dass die Speicherseite 506 heiß ist.
-
In einer Ausführungsform sind die Zeitstempelwerte für Seitenmetadateneinträge 412 null oder anderweitig ein vordefinierter Wert, um anzugeben, dass kein Zugriff auf die assoziierte Speicherseite der Einträge eingegeben wurde. In einer anderen Ausführungsform fügt die Auffülloperation 414, die in Verbindung mit dem ersten Abtasten 401 in 4a durchgeführt wird, einen Zeitstempel hinzu, der dem Zeitpunkt entspricht, zu dem die Auffülloperation für eine gegebene Speicherseite durchgeführt wird.
-
Im Rahmen der neuen Seitenmetadatenstruktur und der Seitenzugriffssondierung sind die CPU-Zyklen, die verbraucht werden, um Seitenmetadaten zu sammeln, nur das Minimum, das erforderlich ist, da die Kernel-Routine zur Metadatensammlung nur für Seiten läuft, auf die zugegriffen wurde. Außerdem werden nur diese Seiten gesperrt, anstatt alle Seiten des Prozessspeichers sperren zu müssen. Dies reduziert den Abtastungsmehraufwand erheblich.
-
Gefilterte Abtastung
-
Um die CPU-Zyklen, die zum Abtasten verbraucht werden, weiter zu reduzieren, wird in einer Ausführungsform eine Filterung zur Seitenzugriffssondierung hinzugefügt. Dies ermöglicht das Ausführen einer Metadatensammlung nur für Seiten in Speicherregionen von Interesse, wie durch einen Benutzer definiert oder unter Verwendung eines Moduls mit künstlicher Intelligenz (KI) oder dergleichen ermittelt.
-
Ein Beispiel für das Filtern ist in einem Diagramm 600 in 6 gezeigt. Bei diesem Filterbeispiel greift ein Prozess 602 auf mehrere Seiten zu (in diesem Beispiel drei), wie durch Seiteneinträge 604 in dunkelgrau in dem PTE 406 dargestellt. Eine selektive Seitenzugriffssondierung 606 löst nur für ausgewählte Seiten (in diesem Beispiel eine Seite 608) unter den Seiten 604, auf die durch den Prozess 602 zugegriffen wird, einen Hook aus. Die selektive Seitenzugriffssondierung 606 kann auf Filterdaten zugreifen, die mit benutzerdefinierten Seiten in Speicherregionen von Interesse assoziiert sind.
-
Auslösen bei Seitenmetadatenaktualisierungen
-
Bei einer anderen Ausführungsform kann das Auslösen als Reaktion auf Seitenmetadatenaktualisierungen implementiert werden. Bei diesem Ansatz wird ein neues Rückruf-Konzept für den Heiß-/Kaltseitendetektionsalgorithmus und eine beliebige andere Komponente, die Seitenmetadaten verwendet, implementiert, wie etwa KI-Modelle für Heiß-/Kaltvorhersage und -Bewegung.
-
Der Ausführungsablauf ist im Vergleich zu existierenden Lösungen umgekehrt: Der Heiß-/Kaltseitendetektionsalgorithmus fragt nicht ab, um aktuelle Metadaten zu lesen, da dies Mehraufwand einführt. Stattdessen registriert er einen Rückruf, der bei synchronen Aktualisierungen dieser Datenstruktur ausgeführt wird, da die Ereignisse von der Arbeitslast im Benutzerraum kommen, aber dem Kernel dank des oben eingeführten Seitenzugriffshooks bekannt sind.
-
Ein Beispiel für diesen Ansatz ist in Diagramm 700 von 7 veranschaulicht. Zusätzlich zu den in 6 gezeigten Komponenten beinhaltet das Diagramm 700 ferner einen selektiven Aktualisierungs-Hook 702, der verwendet wird, um Änderungen in den Seitenmetadaten 410, die neue heiße Seiten 704 umfassen, zu detektieren. Die Änderungen der Seitenmetadaten 410 werden als Eingaben für Heiß-/Kaltseitendetektions-, Vorhersage- und Bewegungsalgorithmen verwendet, die in dem Benutzerraum 706 dargestellt sind.
-
Dies ist auch eine Stelle, wo Filterung hinzugefügt werden kann, um die Rückruffrequenz zu reduzieren. Zum Beispiel kann ein Schwellenwert festgelegt werden, und erst nachdem die Anzahl aktualisierter Seiten diesen Schwellenwert erreicht hat, löst der Hook dann den Rückruf aus. Dank dieser Effizienzverbesserung wird die Abtastfrequenz indirekt erhöht, was potenziell zu einer besseren Heiß-/Kaltseitenvorhersagegenauigkeit führt.
-
Eine andere Verwendung dieses Ausführungsablaufs besteht darin, die Berechnung einer relativen Seiten-Hitzebewertung für jede Seite synchron basierend auf dem Seitenverlauf auszulösen. Da das hier präsentierte Verfahren die CPU-Zyklen, die zum Abtasten benötigt werden, signifikant reduziert, gibt dies in einer Ausführungsform Ressourcen zum Ausführen dieser Berechnung innerhalb des OS-Kernels frei.
-
Ein Beispiel für diesen Ansatz ist in Diagramm 800 oder 8 veranschaulicht. Wie durch gleiche Bezugsziffern in 7 und 8 angegeben, ist der Ansatz ein ähnliches Auslösen bei Seitenmetadatenaktualisierungen. Bei dieser Ausführungsform bewirkt der Auslöser jedoch, dass der Kernel eine relative Seiten-Hitzebewertung für gefilterte/ausgewählte interessierende Seiten aktualisiert, wie in einem Block 802 dargestellt ist.
-
9a zeigt eine Ansicht einer Systemarchitektur auf hoher Ebene gemäß einer beispielhaften Implementierung eines Systems, in dem entfernter gepoolter Speicher in einer Fernspeicherebene verwendet wird. Das System beinhaltet eine Rechenplattform 900a mit einem SoC (auch als Prozessor oder CPU bezeichnet) 902a und Plattformhardware 904, die über ein Netzwerk oder eine Fabric 908 mit der gepoolten Speicherung 906 gekoppelt sind. Die Plattformhardware 904 beinhaltet eine Netzwerkschnittstellensteuerung (NIC) 910, eine Firmware-Speicherungsvorrichtung 911, eine Software-Speicherungsvorrichtung 912 und n DRAM-Vorrichtungen 914-1 ... 914-n. Das SoC 902a weist Zwischenspeicheragenten (CAs) 918 und 922, Last-Level-Zwischenspeicher (LLCs) 920 und 924 und mehrere Prozessorkerne 926 mit L1/L2-Zwischenspeichern 928 auf. Im Allgemeinen kann die Anzahl von Kernen von vier aufwärts reichen, wobei in den Figuren hierin der Einfachheit halber vier gezeigt sind. Außerdem kann ein SoC/Prozessor/CPU einen einzelnen LLC beinhalten und/oder Zwischenspeicheragenten implementieren, die mit jeder Zwischenspeicherkomponente in der Zwischenspeicherhierarchie assoziiert sind (z. B. einen Zwischenspeicheragenten für jeden L1-Zwischenspeicher, jeden L2-Zwischenspeicher usw.)
-
Bei manchen Ausführungsformen ist das SoC 902a ein Mehrkernprozessor-Ein-Chip-System mit einem oder mehreren integrierten Speichersteuerungen, wie etwa durch Speichersteuerung 930 dargestellt gezeigt. Das SoC 902a beinhaltet auch eine Speicherverwaltungseinheit (MMU) 932 und eine EA-Schnittstelle (I/F) 934, die mit der NIC 910 gekoppelt sind. In einer Ausführungsform umfasst die EA-Schnittstelle 934 eine Peripheral-Component-Interconnect-Express(PCIe)-Schnittstelle.
-
Allgemein repräsentieren die DRAM-Vorrichtungen 414-1 414-n einen beliebigen Typ von DRAM-Vorrichtung, wie etwa DRAM-DIMMS und Synchron-DRAM(SDRAM)-DIMMs. Allgemeiner repräsentieren die DRAM-Vorrichtungen 414-1 ... 414-n nichtflüchtigen Speicher, der lokalen (System-)Speicher 915 umfasst.
-
Ein flüchtiger Speicher ist ein Speicher, dessen Zustand (und deshalb der darauf gespeicherten Daten) unbestimmt ist, falls Energiezufuhr zur Vorrichtung unterbrochen ist. Ein dynamischer flüchtiger Speicher erfordert ein Auffrischen der in der Vorrichtung gespeicherten Daten, um den Zustand beizubehalten. Ein Beispiel von dynamischem flüchtigem Speicher enthält DRAM oder irgendeine Variante wie SDRAM. Ein Speichersubsystem, wie hierin beschrieben, kann mit einer Anzahl von Speichertechnologien kompatibel sein, wie etwa DDR3 (Double Data Rate Version 3, ursprüngliche Veröffentlichung durch JEDEC (Joint Electronic Device Engineering Council) am 27. Juni 2007). DDR4 (DDR-Version 4, anfängliche Spezifikation im September 2012 von JEDEC veröffentlicht), DDR4E (DDR-Version 4), LPDDR3 (Niedrigenergie-DDR-Version 3, JESD209-3B, August 2013 von JEDEC), LPDDR4) LPDDR-Version 4, JESD209-4, ursprünglich von JEDEC im August 2014 veröffentlicht), WIO2 (Breit-Eingabe/Ausgabe-Version 2, JESD229-2, ursprünglich von JEDEC im August 2014 veröffentlicht, HBM (Speicher mit hoher Bandbreite, JESD235, ursprünglich von JEDEC im Oktober 2013 veröffentlicht), LPDDR5, HBM2 (HBM-Version 2 und/oder andere oder Kombinationen von Speichertechnologien und Technologien, die auf Derivaten oder Erweiterungen dieser Spezifikationen basieren. Die JEDEC-Standards sind auf www.jedec.org verfügbar.
-
Die Software-Speicherungsvorrichtung 912 umfasst eine nichtflüchtige Speicherungsvorrichtung, die ein beliebiges herkömmliches Medium zum Speichern von Daten auf nichtflüchtige Weise sein oder ein solches enthalten kann bzw. können, wie eine oder mehrere Magnet-, Festkörper- oder optische Platten oder eine Kombination davon. Die Software-Speicherungsvorrichtung 912 hält Code oder Anweisungen und Daten in einem persistenten Zustand (d. h., der Wert wird trotz Unterbrechung der Energie zur Rechenplattform 900a beibehalten). Eine nichtflüchtige Speicherungsvorrichtung kann allgemein als ein „Speicher“ angesehen werden, obwohl der lokale Speicher 915 üblicherweise der ausführende oder Betriebsspeicher ist, um den Kernen auf dem SoC 902a Anweisungen bereitzustellen.
-
Die Firmware-Speicherungsvorrichtung 911 umfasst eine nichtflüchtige Speichervorrichtung (NVM-Vorrichtung). Eine nichtflüchtige Speichervorrichtung (NVM-Vorrichtung) ist ein Speicher, dessen Zustand bestimmt ist, auch wenn die Energiezufuhr zur Vorrichtung unterbrochen ist. In einem Beispiel kann die NVM-Vorrichtung eine blockadressierbare Speichervorrichtung umfassen, wie NAND-Technologien oder genauer NAND-Flashspeicher mit mehreren Schwellenpegeln (zum Beispiel eine Einzelpegelzelle („SLC“), eine Mehrpegelzelle („MLC“), Vierpegel-Zelle („QLC“), Dreipegelzelle („TLC“) oder einen anderen NAND). Eine NVM-Vorrichtung kann auch eine byteadressierbare, dreidimensionale in situ beschreibbare Koppelpunkt-Speichervorrichtung oder eine andere byteadressierbare in situ beschreibbare NVM-Vorrichtung (auch als ein persistenter Speicher bezeichnet), wie Phasenwechselspeicher (PCM) mit einem oder mehreren Pegeln oder Phasenwechselspeicher mit einem Schalter (PCMS), NVM-Vorrichtungen, die Chalkogen-Phasenwechselmaterial (zum Beispiel Chalkogenglas) verwenden, einen resistiven Speicher, einschließlich auf Metalloxidbasis, Sauerstofffehlstellenbasis und Leiterbrückenspeicher mit wahlfreiem Zugriff (CB-RAM), Nanodrahtspeicher, ferroelektrischen Speicher mit wahlfreiem Zugriff (FeRAM, FRAM), magnetoresistiven Speicher mit wahlfreiem Zugriff (MRAM), der Memristortechnologie einbindet, Spin-Transfer-Torque(STT)-MRAM, eine Vorrichtung auf Spintronik-Magnetübergangs-Speicherbasis, eine Vorrichtung auf Magnettunnelübergangsbasis (MTJ-Basis), eine Vorrichtung auf Domänenwand(DW)- und SOT(Spin-Orbit-Transfer)-Basis, eine Speichervorrichtung auf Thyristorbasis oder eine Kombination von beliebigem von oben oder einen anderen Speicher umfassen.
-
Softwarekomponenten in der Software-Speicherungsvorrichtung 912 werden in den lokalen Speicher 915 geladen, um auf einem oder mehreren Kernen 926 auf dem SoC 902a ausgeführt zu werden. Die Softwarekomponenten weisen ein Betriebssystem 936 mit einem Kernel 938 und Anwendungen 940 auf. Der Adressraum des lokalen Speichers 915 ist in einen OS/Kernel-Raum, in dem das Betriebssystem 936 und der Kernel 938 gespeichert sind, und einen Benutzerraum, in dem Anwendungen 940 gespeichert sind, partitioniert.
-
Der Adressraum, der Anwendungen (und ihren Prozessen) zugewiesen ist, ist ein virtueller Adressraum, der über mehrere Speicherebenen hinweg, einschließlich einer Speicherebene in dem entfernten Speicherpool 906, erweitert werden kann. Der CSP oder dergleichen kann Abschnitte des Speichers in dem entfernten Speicherpool 906 verschiedenen Plattformen (und/oder ihren Betriebssysteminstanzen) zuweisen. Durch eine oder mehrere Abstraktionsebenen wird Speicherplatz, der für die Anwendungen verfügbar ist, die in lokalem Speicherbenutzerraum laufen, erweitert, um Speicher auf einer oder mehreren Fernspeicherebenen aufzunehmen. Auf diesen virtualisierten Speicherraum wird auf Seitenebene zugegriffen und wird in Linux unter Verwendung der oben beschriebenen PGD/PMD/PTE-Datenstrukturen implementiert.
-
9b zeigt eine Ansicht einer Systemarchitektur auf hoher Ebene, die eine Rechenplattform 900b beinhaltet, in der eine CXL-Speicherkarte 950 in einer Fernspeicherebene implementiert ist. Die CXL-Karte 950 beinhaltet eine CXL/MC-Schnittstelle (Speichersteuerungsschnittstelle) 952 und vier DIMMs 954, die jeweils über einen jeweiligen Speicherkanal 956 mit der CXL/MC-Schnittstelle 952 verbunden sind. Die CXL/MX-Schnittstelle 952 ist über eine CXL-Verbindung 960, auch als CXL-Flex-Bus bezeichnet, mit einer CXL-Schnittstelle oder -Steuerung 958 auf einem SoC 902b verbunden.
-
Die Bezeichnung der CXL-Schnittstelle oder -Steuerung 958 und der CXL/MC-Schnittstelle 952 ist repräsentativ für zwei unterschiedliche Konfigurationen. In einer Ausführungsform ist die CXL-Schnittstelle oder -Steuerung 958 eine CXL-Schnittstelle und die CXL/MX-Schnittstelle 952 ist eine CXL-Schnittstelle mit einer Speichersteuerung. Alternativ dazu kann die Speichersteuerung mit der CXL-Schnittstelle gekoppelt sein. In einer anderen Ausführungsform umfasst die CXL-Schnittstelle oder -Steuerung 958 eine CXL-Steuerung, in der die Speichersteuerungsfunktionalität implementiert ist, und die CXL/MX-Schnittstelle 952 umfasst eine CXL-Schnittstelle. Es wird angemerkt, dass die Speicherkanäle 956 einen gemeinsam genutzten Speicherkanal darstellen können, der als ein Bus implementiert ist, mit dem die DIMMs 954 gekoppelt sind.
-
Allgemein können die DIMMs 954 DRAM-DIMMS oder hybride DIMMS (z. B. 3D-Crosspoint-DIMMs) umfassen. Bei manchen Ausführungsformen kann eine CXL-Karte eine Kombination von DRAM-DIMMS und hybriden DIMMs beinhalten. Bei noch einer anderen Alternative können alle oder ein Teil der DIMMs 954 NVDIMMs umfassen.
-
Wie in 10 gezeigt und unten besprochen, können bei manchen Ausführungsformen CXL-DIMMS verwendet werden, die über einen CXL-DIMM-Steckplatz oder dergleichen mit einer CLX-Steuerung auf einem/einer SoC/Prozessor/CPU gekoppelt sind. In diesem Fall sind die CXL-DIMMS nicht in einer CXL-Karte installiert.
-
10 zeigt eine Cloud-Umgebung 1000, in der vier Speicherebenen implementiert sind. Die Cloud-Umgebung 1000 beinhaltet mehrere Rechenplattformen, die Server 1001 umfassen, die auch als Server 1-n bezeichnet werden. Der Server 1001 weist einen Prozessor/ein SoC 1002 auf, der/das eine CPU 1004 mit N Kernen 926, jeweils mit einem assoziierten L1/L2-Zwischenspeicher 928, aufweist. Die Kerne/L1/L2-Zwischenspeicher sind mit einer Zwischenverbindung 1006 gekoppelt, mit der ein LLC 1008 gekoppelt ist. Mit der Zwischenverbindung 1006 sind auch eine Speichersteuerung 1010, eine CXL-Steuerung 1012 und E/A-Schnittstellen 1114 und 1016 gekoppelt. Die Zwischenverbindung 1006 repräsentiert eine Zwischenverbindungshierarchie, die eine oder mehrere Schichten beinhaltet, die der Einfachheit halber nicht gezeigt sind.
-
Die Speichersteuerung 1010 beinhaltet drei Speicherkanäle 1018, die jeweils mit einem jeweiligen DRAM- oder SDRAM-DIMM 1020, 1022 und 1024 verbunden sind. Die CXL-Steuerung 1012 beinhaltet zwei CXL-Schnittstellen 1026, die über jeweilige CXL-Flex-Busse 1032 und 1034 mit jeweiligen CXL-Speichervorrichtungen 1028 und 1030 verbunden sind. Die CXL-Speichervorrichtungen 1028 und 1030 beinhalten DIMMs 1036 und 1038, die CXL-DIMMS umfassen können oder auf jeweiligen CXL-Karten implementiert sein können und eine beliebige der oben beschriebenen Speichertechnologien umfassen können.
-
Die EA-Schnittstelle 1114 ist mit einer Host-Fabric-Schnittstelle (HFI) 1040 gekoppelt, die wiederum über eine Fabric-Verbindung in einer Fabric 1044 mit niedriger Latenz mit einem Fabric-Switch 1042 gekoppelt ist. Mit dem Fabric-Switch 1042 sind auch Server 2 ... Server n und ein SCM-Knoten 1046 gekoppelt. Der SCM-Knoten 1046 beinhaltet eine HFI 1048, mehrere SCM-DIMMS 1050 und eine CPU 1052. Allgemein können SCM-DIMMS NVDIMMs umfassen oder können eine Kombination von DRAM-DIMMS und NVDIMMs umfassen. In einer Ausführungsform umfassen SCM-DIMMS 3D-Crosspoint-DIMMs.
-
Die EA-Schnittstelle 1016 ist mit einer NIC 1018 gekoppelt, die über ein Netzwerk/eine Fabric 1056 mit einem entfernten Speicherpool 1054 gekoppelt ist. Im Allgemeinen wird der entfernte Speicherpool 1054 DIMMs einsetzen, die SCM-DIMMS sind.
-
Wie ferner gezeigt, sind die DRAM/SDRAM-DIMMS 1020, 1022 und 1024 in Speicherebene 1 (hier auch als lokaler Speicher oder Nahspeicher bezeichnet) implementiert, während die CXL-Vorrichtungen 1028 und 1030 in Speicherebene 2 implementiert sind. Währenddessen ist der SCM-Knoten 1046 in der Speicherebene 3 implementiert und der entfernte gepoolte Speicher 1054 ist in der Speicherebene 4 implementiert. In diesem Beispiel sind die Speicherebenen nach ihren jeweiligen Latenzen geordnet, wobei Ebene 1 die niedrigste Latenz aufweist und Ebene 4 die höchste Latenz aufweist.
-
Es versteht sich, dass möglicherweise nicht die gesamte Cloud-Umgebung 1000 implementiert ist und dass eine oder mehrere der Speicherebenen 2, 3 und 4 verwendet werden. Mit anderen Worten kann eine Cloud-Umgebung eine lokale oder Nahspeicherebene und eine oder mehrere Fernspeicherebenen einsetzen.
-
Wie bei dem entfernten Speicherpool 1054 können die Speicherressourcen eines SCM-Knotens unterschiedlichen Servern 1001 und/oder Betriebssysteminstanzen, die auf Servern 1001 laufen, zugewiesen sein. Darüber hinaus kann ein Speicherknoten ein Gehäuse, einen Einschub oder einen Schlitten einschließlich mehrerer SCM-Karten umfassen, auf denen SCM-DIMMS installiert sind.
-
11 zeigt ein Ablaufdiagramm 1100, das Operationen und Logik veranschaulicht, die durch ein Betriebssystem während laufender Laufzeitoperationen durchgeführt werden. Diese Operationen werden parallel zu den anderen oben besprochenen Laufzeitoperationen (kontinuierliche Aktualisierung der Seitenmetadaten) durchgeführt. In einem Block 1102 werden die Seitenmetadaten in der Seitenmetadatenstruktur abgetastet. Wie oben beschrieben, können verschiedene Arten von Filtern verwendet werden und unterschiedliche Anwendungen/Prozesse können ein oder mehrere unterschiedliche Filter einsetzen.
-
In einem Entscheidungsblock 1104 wird ermittelt, ob eine heiße Seite in einer Fernspeicherebene detektiert wird. Unterschiedliche Mechanismen können verwendet werden, um zu ermitteln, ob eine Seite heiß ist, wie oben beschrieben. Bei manchen Ausführungsformen können in Abhängigkeit von Merkmalen der Speicherebene, in der sich die Seite befindet, unterschiedliche Kriterien verwendet werden, um zu ermitteln, ob eine Seite eine Heiß/Kalt-Schwelle überschreitet. Da zum Beispiel die Latenz-„Kosten“ des Zugriffs auf eine Speicherseite für eine Speicherebene, die weiter entfernt ist, höher als die Latenzkosten des Zugriffs auf eine Speicherseite in einer näheren Speicherebene sind, kann die Heiß/Kalt-Schwelle für eine Seite mit hoher Latenz, wie etwa in einem entfernten gepoolten Speicher, niedriger als die Heiß/Kalt-Schwelle für eine Seite in einer CXL-Speicherebene sein.
-
Falls die Ermittlung bei Entscheidungsblock 1104 NEIN ist, kehrt die Logik zu Block 1102 zurück, um die nächste Abtastung durchzuführen. Falls die Antwort bei Entscheidungsblock 1102 JA ist, geht die Logik zu einem Block 1106 über, in dem eine kalte Seite lokaler (Nah-)Speicher zur Abwertung ausgewählt wird. Verschiedene Mechanismen können verwendet werden, um zu ermitteln, welche Seite abzuwerten ist, wie etwa eine am seltensten verwendete Seite. Im Allgemeinen kann die Seitenabwertungslogik der Logik ähneln, die für Zwischenspeicherleerungen verwendet wird, mit der Ausnahme, dass in diesem Fall die Dateneinheit, die abgewertet/geleert wird, eine Speicherseite anstelle einer Zwischenspeicherzeile ist.
-
In Verbindung mit dem Ermitteln, welche kalte Seite im lokalen Speicher abzuwerten ist, wird diese Seite in eine Fernspeicherebene kopiert, wie in einem Block 1108 dargestellt ist. In Abhängigkeit davon, wie viele Ebenen von Speicherebenen implementiert sind, und/oder von anderen Überlegungen, kann eine abgewertete Seite in eine nächstgelegene Speicherebene kopiert werden oder sie könnte in die Speicherebene, in der sich die heiße Seite befindet, ausgetauscht werden. In Fällen, in denen Platz in dem lokalen Speicher vorhanden ist, wäre es nicht erforderlich, eine Speicherseite abzuwerten, und die Operationen in den Blöcken 1106 und 1108 können übersprungen werden.
-
Sobald ein Platz im lokalen Speicher freigegeben ist (oder falls bereits Platz vorhanden war), wird die heiße Seite in einem Block 1110 in den lokalen Speicher kopiert. Der kontinuierliche Prozess kehrt dann zu Block 1102 zurück, um die Seitenmetadaten neu abzutasten.
-
Variationen des in Ablaufdiagramm 1110 veranschaulichten Prozesses können implementiert werden. Zum Beispiel können in einigen Ausführungsformen heiße Seiten in Verbindung mit Aktualisierungen an den Seitenmetadaten identifiziert werden, sodass kein Abtasten verwendet wird. Dies würde ermöglichen, dass heiße Seiten sofort identifiziert und in den lokalen Speicher kopiert werden. Dies kann wiederum eine Heiß/Kalt-Schwelle berücksichtigen. Beispielsweise könnte eine heiße Seite in einer am weitesten entfernten Speicherebene sofort in den lokalen Speicher kopiert werden, während eine heiße Seite in einer näheren Speicherebene, wie etwa einer CXL-Ebene, möglicherweise nicht sofort kopiert wird.
-
Eine andere Überlegung ist die Art der Datentransfers, die von dem betreffenden Protokoll unterstützt wird. Beispielsweise unterstützt CXL-Speicher Speicherzugriff auf Zwischenspeicherzeilen-Granularität. Umgekehrt überträgt Speicher, auf den über ein Netzwerk oder eine Fabric zugegriffen wird, die Daten in Paketen. In vielen Fällen kann es effektiver sein, Daten auf Blockebene (z. B. Seitenebene) zu übertragen, anstatt nur die angeforderten Daten zu übertragen (in Fällen, in denen eine gegebene Datenstruktur, auf die zugegriffen werden soll, kleiner als ein Block/eine Seite ist.
-
Während der Schleifen- und Abtastoperationen des Ablaufdiagramms 1110 können mehrere heiße Seiten für eine gegebene Schleife identifiziert werden. In diesem Fall kann die Logik gleichzeitig (in derselben Schleife) auf die mehreren heißen Seiten angewendet werden.
-
Obwohl manche Ausführungsformen unter Bezugnahme auf bestimmte Implementierungen beschrieben wurden, sind andere Implementierungen gemäß manchen Ausführungsformen möglich. Außerdem muss bzw. müssen die Anordnung und/oder die Reihenfolge von Elementen oder anderen Merkmalen, die in den Zeichnungen veranschaulicht sind und/oder hierin beschrieben sind, nicht auf die bestimmte veranschaulichte und beschriebene Weise angeordnet sein. Gemäß einigen Ausführungsformen sind viele andere Anordnungen möglich.
-
In jedem in einer Figur gezeigten System können die Elemente in einigen Fällen jeweils eine gleiche Bezugsziffer oder eine unterschiedliche Bezugsziffer aufweisen, um darauf hinzuweisen, dass die dargestellten Elemente unterschiedlich und/oder ähnlich sein könnten. Jedoch kann ein Element flexibel genug sein, um unterschiedliche Implementierungen aufzuweisen und mit einigen oder allen der hierin gezeigten oder beschriebenen Systeme zu arbeiten. Die in den Figuren gezeigten verschiedenen Elemente können die gleichen oder unterschiedliche sein. Welches als ein erstes Element bezeichnet wird, und welches ein zweites Element genannt wird, ist willkürlich.
-
In der Beschreibung und den Ansprüchen können die Begriffe „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen verwendet werden. Es sollte klar sein, dass diese Begriffe nicht als Synonyme füreinander gedacht sind. Vielmehr kann in bestimmten Ausführungsformen „verbunden“ verwendet werden, um anzuzeigen, dass zwei oder mehr Elemente in direktem physischem oder elektrischem Kontakt miteinander sind. „Gekoppelt“ kann bedeuten, dass zwei oder mehr Elemente in direktem physischem oder elektrischem Kontakt stehen. „Gekoppelt“ kann jedoch auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander stehen, aber dennoch kooperieren oder miteinander interagieren. Zusätzlich bedeutet „kommunikativ gekoppelt“, dass zwei oder mehr Elemente, die sich in direktem Kontakt miteinander befinden können oder auch nicht, in der Lage sind, miteinander zu kommunizieren. Falls beispielsweise die Komponente A mit der Komponente B verbunden ist, die wiederum mit der Komponente C verbunden ist, kann die Komponente A mit der Komponente C unter Verwendung der Komponente B als Zwischenkomponente kommunikationsfähig gekoppelt sein.
-
Eine Ausführungsform ist eine Implementierung oder ein Beispiel der Erfindungen. In der Beschreibung bedeutet ein Bezug auf „eine Ausführungsform“, „eine einzelne Ausführungsform“, „einige Ausführungsformen“ oder „andere Ausführungsformen“, dass ein spezielles Merkmal, eine spezielle Struktur oder eine spezielle Eigenschaft, das bzw. die in Verbindung mit den Ausführungsformen beschrieben wird, in zumindest einigen Ausführungsformen, aber nicht zwangsweise allen Ausführungsformen der Erfindung enthalten ist. Die verschiedenen Vorkommnisse von „einer Ausführungsform“, „einer einzelnen Ausführungsform“ oder „einigen Ausführungsformen“ beziehen sich nicht immer notwendigerweise auf dieselben Ausführungsformen.
-
Eine bestimmte Ausführungsform oder bestimmte Ausführungsformen müssen nicht alle der hierin beschriebenen und illustrierten Komponenten, Merkmale, Strukturen, Eigenschaften usw. aufweisen. Falls die Beschreibung angibt, dass zum Beispiel eine Komponente, ein Merkmal, eine Struktur oder eine Eigenschaft enthalten sein „kann“ oder „könnte“, muss diese bestimmte Komponente, das bestimmte Merkmal, die bestimmte Struktur oder die bestimmte Eigenschaft nicht enthalten sein. Falls sich die Beschreibung oder der Anspruch auf „ein“ Element bezieht, bedeutet dies nicht, dass nur eines der Elemente vorhanden ist. Falls sich die Beschreibung oder der Anspruch auf „ein zusätzliches“ Element bezieht, schließt dies nicht aus, dass es mehr als eines des zusätzlichen Elements gibt.
-
Kursive Buchstaben, wie zum Beispiel „n‟, „N‟ usw., in der vorstehenden ausführlichen Beschreibung werden verwendet, um eine ganze Zahl darzustellen, und die Verwendung eines bestimmten Buchstabens ist nicht auf bestimmte Ausführungsformen beschränkt. Darüber hinaus kann derselbe Buchstabe in getrennten Ansprüchen verwendet werden, um separate ganze Zahlen darzustellen, oder unterschiedliche Buchstaben können verwendet werden. Außerdem kann die Verwendung eines bestimmten Buchstabens in der detaillierten Beschreibung mit dem Buchstaben übereinstimmen oder nicht, der in einem Anspruch verwendet wird, der den gleichen Gegenstand in der detaillierten Beschreibung betrifft.
-
Wie oben besprochen, können verschiedene Aspekte der Ausführungsformen hierin durch entsprechende Software- und/oder Firmwarekomponenten und -anwendungen wie etwa durch durch einen eingebetteten Prozessor oder dergleichen ausgeführte Software und/oder Firmware ermöglicht werden. Somit können Ausführungsformen dieser Erfindung als oder zur Unterstützung eines Softwareprogramms, von Softwaremodulen, Firmware und/oder verteilter Software verwendet werden, die in irgendeiner Form von Prozessor, Verarbeitungskern oder eingebetteter Logik, einer virtuellen Maschine, die auf einem Prozessorkern läuft, ausgeführt werden oder anderweitig auf oder innerhalb eines nichtflüchtigen computerlesbaren oder maschinenlesbaren Speicherungsmediums implementiert oder realisiert sind. Ein nichtflüchtiges computerlesbares oder maschinenlesbares Speicherungsmedium beinhaltet einen beliebigen Mechanismus zum Speichern oder Übertragen von Informationen in einer Form, die von einer Maschine (z. B. einem Computer) gelesen werden kann. Zum Beispiel beinhaltet ein nicht transitorisches computerlesbares oder maschinenlesbares Speicherungsmedium einen beliebigen Mechanismus, der Informationen in einer Form bereitstellt (z. B. speichert und/oder überträgt), auf die ein Computer oder eine Rechenmaschine zugreifen kann (z. B. eine Rechenvorrichtung, ein elektronisches System usw.), wie etwa beschreibbare/nicht beschreibbare Medien (z. B. Nurlesespeicher (ROM), Direktzugriffsspeicher (RAM), Magnetplattenspeicherungsmedien, optische Speicherungsmedien, Flash-Speichervorrichtungen usw.). Der Inhalt kann direkt ausführbar („Objekt“ oder „ausführbare“ Form), Quellcode oder Differenzcode („Delta“- oder „Patch“-Code). Ein nicht transitorisches computerlesbares oder maschinenlesbares Speicherungsmedium kann auch eine Speicherung oder eine Datenbank einschließen, aus der ein Inhalt heruntergeladen werden kann. Das nicht transitorische computerlesbare oder maschinenlesbare Speicherungsmedium kann auch eine Vorrichtung oder ein Produkt einschließen, auf der/dem zum Zeitpunkt des Verkaufs oder der Lieferung Inhalte gespeichert sind. Somit kann das Liefern einer Vorrichtung mit gespeicherten Inhalten oder das Anbieten von Inhalten zum Herunterladen über ein Kommunikationsmedium so verstanden werden, dass ein Herstellungsartikel bereitgestellt wird, der ein nicht transitorisches computerlesbares oder maschinenlesbares Speicherungsmedium mit einem solchen hierin beschriebenen Inhalt umfasst.
-
Verschiedene hierin beschriebene Komponenten, die oben als Prozesse, Server oder Werkzeuge bezeichnet werden, können ein Mittel zum Durchführen der beschriebenen Funktionen sein. Die durch verschiedene hierin beschriebene Komponenten durchgeführten Operationen und Funktionen können durch Software, die auf einem Verarbeitungselement läuft, über eingebettete Hardware oder dergleichen, oder eine beliebige Kombination von Hardware und Software implementiert werden. Derartige Komponenten können als Softwaremodule, Hardwaremodule, Spezialhardware (z. B. anwendungsspezifische Hardware, ASICs, DSPs usw.), eingebettete Steuerungen, festverdrahtete Schaltungsanordnungen, Hardwarelogik usw. implementiert werden. Softwareinhalte (z. B. Daten, Anweisungen, Konfigurationsinformationen usw.) können über einen Herstellungsartikel bereitgestellt werden, der ein nichtflüchtiges computerlesbares oder maschinenlesbares Speicherungsmedium beinhaltet, das einen Inhalt bereitstellt, der Anweisungen repräsentiert, die ausgeführt werden können. Der Inhalt kann dazu führen, dass ein Computer verschiedene hierin beschriebene Funktionen/Operationen durchführt.
-
Wie hierin verwendet, kann eine Auflistung von durch den Ausdruck „mindestens eines von“ verbundenen Objekten jegliche Kombination der aufgelisteten Begriffe bedeuten. Beispielsweise kann der Ausdruck „mindestens eines von A, B oder C“ A; B; C; A und B; A und C; B und C; oder A, B und C bedeuten.
-
Die obige Beschreibung von veranschaulichten Ausführungsformen der Erfindung, einschließlich derjenigen, die in der Zusammenfassung beschrieben sind, soll nicht erschöpfend sein oder die Erfindung auf die genauen offenbarten Formen beschränken. Während spezifische Ausführungsformen von und Beispiele für die Erfindung hier zu Veranschaulichungszwecken beschrieben sind, sind verschiedene äquivalente Modifikationen innerhalb des Geltungsbereichs der Erfindung möglich, wie Fachleute auf dem relevanten Gebiet erkennen werden.
-
Diese Modifikationen können angesichts der obigen ausführlichen Beschreibung an der Erfindung durchgeführt werden. Die in den folgenden Ansprüchen verwendeten Begriffe sollten nicht so aufgefasst werden, dass sie die Erfindung auf die spezifischen Ausführungsformen beschränken, die in der Beschreibung und den Zeichnungen offenbart sind. Vielmehr soll der Umfang der Erfindung vollständig durch die folgenden Ansprüche bestimmt werden, die in Übereinstimmung mit etablierten Lehren der Anspruchsauslegung auszulegen sind.