-
Querverweis auf ähnliche Anmeldungen
-
Diese Anmeldung beansprucht die Priorität der am 30. Juni 2021 beim Office of the Controller General of Patents, Designs and Trade Marks (Indisches Patentamt) eingereichten indischen Patentanmeldung Nr. 202141029449, deren Offenbarung durch Verweis in ihrer Gesamtheit hierin aufgenommen ist.
-
Hintergrund
-
1. Gebiet
-
Verfahren, Vorrichtungen und Systeme, die mit Ausführungsbeispielen übereinstimmen, beziehen sich auf eine Speicherverwaltung in elektronischen Vorrichtungen und insbesondere auf ein Verfahren und ein Near Memory Processing (NMP) Dual In-Line Memory Module (DIMM) zum Verwalten einer Adressenkarte des NMP DIMM.
-
2. Verwandte Technik
-
Ein NMP DIMM enthält mehrere dynamische Direktzugriffsspeicher (DRAMs) und einen statischen Direktzugriffsspeicher (SRAM), der als ein interner Speicher agiert. Ein DRAM enthält Reihen, Bankgruppen, Banken, Zeilen und Spalten, die für eine Pipeline-Verarbeitung von Daten eingeführt werden. Ein Host-System behandelt den SRAM jedoch als einen DRAM und greift somit gemäß DRAM-Befehlen auf den SRAM zu und weist einen durch eine Anwendung zu verwendenden Speicherraum zu. Bei der Speicherzuweisung bereitet das Host-System eine Adressenkarte für das NMP DIMM durch Zuordnen von physischen Adressen des Host-Systems an eine entsprechende physische Adresse des DRAM unter Berücksichtigung einer Verschachtelung bei Reihen- Bankgruppen-, Banken-, Zeilen- und Spaltenpegeln vor. Der DRAM ist nicht direkt zum Host-System freigelegt und der SRAM agiert als die Schnittstelle zwischen dem Host-System und dem NMP DIMM. Das Host-System bereitet jedoch die Adressenkarte für das NMP DIMM basierend auf der Annahme vor, dass der SRAM (d.h. die Schnittstelle) ein DRAM ist, und bereitet die Adressenkarte durch eine Verschachtelung an Reihen- Bankgruppen-, Zeilen- und Spaltenpegeln vor. Da der SRAM verglichen mit den DRAMs sehr klein ist und außerdem keine Reihe, Bankgruppe, Bank, Zeile und Spalte enthält, die im DRAM vorliegen, enthält die vom Host-System erzeugte Adressenkarte eine große Anzahl an Leerräumen. Infolge der großen Anzahl an Leerräumen in der Adressenkarte des NMP DIMM ist der Speicher am NMP DIMM nicht zusammenhängend, was die Performance des NMP DIMM drastisch verlangsamt.
-
Somit ist es notwendig, die oben genannten Nachteile oder andere Unzulänglichkeiten zu adressieren oder zumindest eine sinnvolle Alternative bereitzustellen.
-
Kurzfassung
-
Ein oder mehrere Ausführungsbeispiele stellen ein Verfahren und ein NMP DIMM zum Verwalten einer Adressenkarte im NMP DIMM durch Wechseln von einer ersten Adressenkarte zu einer zweiten Adressenkarte zum Betreiben eines statischen Direktzugriffsspeicher(SRAM)-Raums bereit. Die erste Adressenkarte wird während eines Schnittstellentrainings zum Betreiben des SRAM-Adressenraums verwendet und die zweite Adressenkarte wird für einen normalen Betriebsmodus des SRAM-Adressenraums verwendet, der Lese- und Schreiboperationen enthält. Ein oder mehrere Ausführungsbeispiele beseitigen die Notwendigkeit für eine Nachschlagetabelle für die Adressenkarte durch Bereitstellen eines kontinuierlichen Speichers. Infolgedessen adressieren ein oder mehrere Ausführungsbeispiele das Problem einer Performanceverschlechterung, die durch eine nicht zusammenhängende Adressenkarte durch Bereitstellen eines zusammenhängenden Speichers am NMP DIMM verursacht wird.
-
Nach einem Ausführungsbeispiel ist ein Verfahren zum Verwalten einer Adressenkarte in einem NMP DIMM bereitgestellt. Das Verfahren enthält: Empfangen, durch das NMP DIMM, einer ersten Angabe aus einem Host-System zum Durchführen eines Schnittstellentrainings zum Betreiben eines statischen Direktzugriffsspeicher(SRAM)-Raums; Durchführen, durch das NMP DIMM, des Schnittstellentrainings unter Verwendung einer ersten Adressenkarte basierend auf der ersten Angabe; Empfangen, durch das NMP DIMM, einer zweiten Angabe aus dem Host-System, das einen Abschluss des Schnittstellentrainings zum Betreiben des SRAM-Raums angibt; Wechseln, durch das NMP DIMM, von der ersten Adressenkarte zu einer zweiten Adressenkarte zum Betreiben des SRAM-Raums basierend auf der zweiten Angabe; und Betreiben, durch das NMP DIMM, des SRAM-Raums unter Verwendung der zweiten Adressenkarte.
-
Nach einem Ausführungsbeispiel ist ein NMP DIMM zum Verwalten einer Adressenkarte bereitgestellt. Das NMP DIMM enthält: einen SRAM, der auf einer DDR-Schnittstelle bereitgestellt ist; und einen Adressenverwaltungscontroller, der mit dem SRAM gekoppelt ist und konfiguriert ist, das NMP DIMM derart zu steuern, dass: eine erste Angabe aus einem Host-System zum Durchführen eines Schnittstellentrainings zum Betreiben eines SRAM-Raums empfangen wird; das Schnittstellentraining unter Verwendung einer ersten Adressenkarte basierend auf der ersten Angabe durchgeführt wird; eine zweite Angabe aus dem Host-System empfangen wird, die einen Abschluss des Schnittstellentrainings zum Betreiben des SRAM-Raums angibt; von der ersten Adressenkarte zu einer zweiten Adressenkarte zum Betreiben des SRAM-Raums als Reaktion auf die bzw. basierend auf der zweiten Angabe gewechselt wird; und der SRAM-Raum unter Verwendung der zweiten Adressenkarte betrieben wird.
-
Nach einem Ausführungsbeispiel ist ein Adressenverwaltungscontroller bereitgestellt. Der Adressenverwaltungscontroller enthält: einen Adressenkartencontroller, der konfiguriert ist, mit einem Host-System zu kommunizieren; einen direkten Adressenkartencontroller; einen Adressentrainingscontroller; und einen adaptiven Adressenkartencontroller. Der Adressenkartencontroller ist konfiguriert, den Adressentrainingscontroller derart zu steuern, dass dieser ein Schnittstellentraining zum Betreiben eines statischen Direktzugriffsspeichers (SRAM) basierend auf einer aus dem Host-System empfangenen ersten Angabe durchführt. Der Adressentrainingscontroller ist konfiguriert, das Schnittstellentraining basierend auf einer ersten Adressenkarte durchzuführen. Der Adressenkartencontroller ist ferner konfiguriert, den Adressenverwaltungscontroller derart zu steuern, dass dieser unter Verwendung einer zweiten Adressenkarte basierend auf einer aus dem Host-System empfangenen zweiten Angabe mit dem Host-System kommuniziert.
-
Diese und andere Aspekte werden besser gewürdigt und verstanden werden, wenn sie in Verbindung mit der nachfolgenden Beschreibung und den beigefügten Zeichnungen betrachtet werden. Es sollte sich jedoch verstehen, dass die nachfolgenden Beschreibungen, obwohl sie Ausführungsbeispiele und zahlreiche spezifische Details derselben angeben, zur Veranschaulichung und nicht zur Beschränkung gegeben sind. Viele Veränderungen und Modifikationen können an den Ausführungsbeispielen hierin vorgenommen werden, ohne dabei vom Umfang derselben abzuweichen, und die Ausführungsbeispiele enthalten alle derartigen Modifikationen.
-
Figurenliste
-
Für ein deutlicheres Verständnis der oben genannten und anderen Aspekte, Merkmale und Vorteile sorgt die folgende Beschreibung von Ausführungsbeispielen mit Bezug auf die beigefügten Zeichnungen, wobei:
- 1 ein System eines Hosts und ein NMP DIMM darstellt;
- 2 Hardwarekomponenten des NMP DIMM nach Ausführungsbeispielen darstellt;
- 3 ein Flussdiagramm ist, das ein Verfahren zum Verwalten der Adressenkarte im NMP DIMM nach Ausführungsbeispielen darstellt;
- 4A Beispieladressenkarten darstellt, die im Host-System zum Betreiben eines SRAM-Adressenraums erzeugt werden;
- 4B ein Beispiel ist, das die im Host-System zum Betreiben des SRAM-Adressenraum erzeugte Adressenkarte nach Ausführungsbeispielen darstellt;
- 5A ein Beispiel ist, das ein Szenario eines verschachtelten SRAM-Adressenraums darstellt;
- 5B ein Beispiel ist, das ein Szenario eines zusammenhängenden SRAM-Adressenraums nach Ausführungsbeispielen darstellt;
- 6A ein Beispiel ist, das eine Spaltung im SRAM aufgrund einer Adressenkarte darstellt; und
- 6B ein Beispiel ist, das eine Kontinuität des SRAM aufgrund einer Adressenkarte nach Ausführungsbeispielen darstellt.
-
Ausführliche Beschreibung
-
Ausführungsbeispiele und verschiedene Merkmale und Vorteilte derselben werden mit Bezug auf die beigefügten Zeichnungen ausführlicher erläutert. Beschreibungen von wohlbekannten Komponenten und Verarbeitungstechniken sind weggelassen, um die Ausführungsbeispiele nicht unnötig zu verkomplizieren. Außerdem schließen sich hierin beschriebene Ausführungsbeispiele nicht zwangsläufig gegenseitig aus, da einige Ausführungsbeispiele mit einem oder mehreren anderen Ausführungsbeispielen kombiniert werden können, um neue Ausführungsbeispiele auszubilden. Der Begriff „oder“, wie er hierin verwendet wird, bezieht sich auf ein nicht ausschließliches „oder“, sofern nicht anderweitig angegeben. Die hierin verwendeten Beispiele sollen ein Verständnis von Weisen, in denen Ausführungsbeispiele ausgeführt werden können, vereinfachen und einem Fachmann ferner ermöglichen, Ausführungsbeispiele durchzuführen. Dementsprechend sind die Beispiele nicht als den Umfang von Ausführungsbeispielen beschränkend auszulegen.
-
Wie in diesem Gebiet üblich, können Ausführungsbeispiele in Bezug auf Blöcke beschrieben und dargestellt werden, die eine beschriebene Funktion oder beschriebene Funktionen ausführen. Diese Blöcke, die hierin als Einheiten oder Module oder dergleichen bezeichnet werden können, werden durch Analog- oder Digitalschaltungen, wie Logik-Gates, integrierte Schaltungen, Mikroprozessoren, Mikrocontroller, Speicherschaltungen, passive elektronische Komponenten, aktive elektronische Komponenten, optische Komponenten, festverdrahtete Schaltungen und dergleichen, physisch umgesetzt und können durch Firmware optional angetrieben werden. Die Schaltungen können zum Beispiel in einem oder mehreren Halbleiterchips oder auf Substratträgern, wie einer Leiterplatte und dergleichen, ausgeführt sein. Die Schaltungen, die einen Block bilden, können durch dedizierte Hardware oder durch einen Prozessor (z.B. einen oder mehrere programmierte Mikroprozessoren und zugehörige Schaltkreise) oder durch eine Kombination aus dedizierter Hardware zum Durchführen einiger Funktionen des Blocks und einem Prozessor zum Durchführen anderer Funktionen des Blocks umgesetzt sein. Jeder Block kann physisch in zwei oder mehr interagierende und diskrete Blöcke aufgeteilt werden, ohne dabei vom Umfang der Offenbarung abzuweichen. Gleichermaßen können die Blöcke aus Ausführungsbeispielen physisch zu mehreren komplexen Blöcken kombiniert werden, ohne dabei vom Umfang der Offenbarung abzuweichen.
-
Die beigefügten Zeichnungen stellen eine Übersicht zu technischen Merkmalen bereit und es sollte sich verstehen, dass Ausführungsbeispiele nicht durch die beigefügten Zeichnungen beschränkt sind. Somit sollte die vorliegende Offenbarung derart ausgelegt werden, dass sie sich auf jede beliebige Änderung, jedes beliebige Äquivalent und jeden beliebigen Ersatz zusätzlich zu jenem ausweiten, das in den beigefügten Zeichnungen besonders dargestellt ist. Obwohl die Begriffe „erste/r/s“, „zweite/r/s“ etc. hierin zur Beschreibung verschiedener Elemente verwendet werden können, sollen diese Elemente nicht durch diese Begriffe beschränkt werden. Diese Begriffe werden lediglich verwendet, um ein Element von einem anderen zu unterscheiden.
-
Die Ausführungsbeispiele hierin stellen ein Verfahren zum Verwalten einer Adressenkarte in einem Near Memory Processing (NMP) Dual In-Line Memory Module (DIMM) bereit. Das Verfahren enthält das Empfangen, durch das NMP DIMM, einer ersten Angabe aus einem Host-System zum Durchführen eines Schnittstellentrainings zum Betreiben eines statischen Direktzugriffsspeicher(SRAM)-Raums und das Durchführen, durch das NMP DIMM, des Schnittstellentrainings unter Verwendung einer ersten Adressenkarte als Reaktion auf das Empfangen der ersten Angabe aus dem Host-System. Ferner enthält das Verfahren das Empfangen, durch das NMP DIMM, einer zweiten Angabe aus dem Host-System, das einen Abschluss des Schnittstellentrainings zum Betreiben des SRAM-Raums angibt, und das Bestimmen, durch das NMP DIMM, dass eine zweite Adressenkarte zum Betreiben des SRAM-Adressenraums verwendet werden soll, als Reaktion auf das Empfangen der zweiten Angabe aus dem Host-System, das einen Abschluss des Schnittstellentrainings zum Betreiben des SRAM-Adressenraums angibt. Das Verfahren enthält außerdem das Wechseln, durch das NMP DIMM, von der ersten Adressenkarte zu der zweiten Adressenkarte zum Betreiben des SRAM-Raums.
-
In verwandten Verfahren und Systemen nimmt das Host-System an, dass der SRAM ein DRAM ist, der Reihen, Bankgruppen, Bänke, Zeilen und Spalten enthält, die für eine Daten-Pipeline-Verarbeitung verwendet werden. Infolgedessen führt das Host-System das Schnittstellentraining durch und bereitet die Adressenkarte des SRAM unter Berücksichtigung der Reihen, der Bankgruppen, der Bänke, der Zeilen und der Spalten auf eine verschachtelte Weise vor, was zu einer großen Anzahl an Leerräumen und einer nicht zusammenhängenden Adressenkarte im NMP DIMM führt. Die nicht zusammenhängende Adressenkarte reduziert die Performancegeschwindigkeit des NMP DIMM drastisch. Im Gegensatz zu den verwandten Verfahren und Systemen verwendet das NMP DIMM eine erste Adressenkarte, wenn das Host-System das Schnittstellentraining des NMP DIMM durchführt, und wechselt zu der zweiten Adressenkarte, die eine Verschachtelung eines Adressenraums verwaltet. Infolgedessen ist die Adressenkarte im DMP DIMM zusammenhängend und verbessert die Performance des NMP DIMM.
-
1 stellt ein System eines Host-Systems (200) und ein NMP DIMM (100) dar, die beim Erzeugen einer Adressenkarte verwendet werden.
-
Bezugnehmend auf 1 enthält ein System zum Erzeugen der Adressenkarte von NMP DIMMs das NMP DIMM (100) und das Host-System (200). Das Host-System kann zum Beispiel eine mobile elektronische Vorrichtung, eine elektronische Smart-Vorrichtung, ein Personal Digital Assistant (PDA), ein Tablet, eine Wearable-Vorrichtung, eine Internet-der-Dinge(IoT)-Vorrichtung, eine Vorrichtung für virtuelle Realität, eine faltbare Vorrichtung, eine flexible Vorrichtung, eine Anzeigevorrichtung, ein immersives System oder eine andere elektronische Vorrichtung sein. Das Host-System (200) enthält eine zentrale Host-Verarbeitungseinheit (CPU) (220) und einen Speichercontroller (240). Die Host-CPU (220) führt Standardfunktionen des Host-Systems (200) nach Eintritt in ein Betriebssystem (OS) des Host-Systems (200) durch. Der Speichercontroller (240) ist konfiguriert, eine EIN-Schalt-Angabe zum Einleiten des Schnittstellentrainings zu senden und eine Abschlussangabe des Schnittstellentrainings bei Abschluss des Schnittstellentrainings zu senden.
-
Das NMP DIMM (100) enthält einen Verarbeitungsknoten 150 (z.B. eine zentrale Verarbeitungseinheit (CPU)), mehrere dynamische Direktzugriffsspeicher (DRAM) (106a-160b) und einen SRAM (130), der auf einer Schnittstelle mit doppelter Datenrate (DDR) angebracht ist. Jeder DRAM (160a/160b) wird von einem jeweiligen Speichercontroller (140a/140b) durch die DDR-Schnittstelle gesteuert. Der im NMP DIMM (100) enthaltene SRAM (130) agiert als eine Schnittstelle zwischen dem Speichercontroller (240) des Host-Systems (200) und den Speichercontrollern (140a/140b) des NMP DIMM (100). Der DRAM (160a/160b) ist nicht direkt zum Host-System (200) freigelegt und der SRAM (130) agiert als ein Zwischenpuffer zum Vereinfachen der Kommunikation zwischen dem Host-System (200) und dem DRAM (160a/160b) des NMP DIMM (100).
-
Der Speichercontroller (240) des Host-Systems (200) identifiziert die DRAMs (160a/160b) und den SRAM (130) als DRAMs und trainiert die Schnittstelle basierend auf den identifizierten DRAMs. Das NMP DIMM (100) besteht aus Reihen. Eine Reihe ist eine Gruppe an DRAM-Chips. Zum Beispiel kann eine Reihe auf einer Seite des NMP DIMM (100) bereitgestellt sein und eine weitere Reihe kann auf der anderen Seite des NMP DIMM (100) bereitgestellt sein. Jeder DRAM-Chip (160a/160b) besteht aus Bankgruppen, die in Bänke unterteilt sind. Eine Bank besteht aus einer Zeile und Spalten, die zum Erhöhen der Performance mit einer Pipeline-Verarbeitung und einem parallelen Zugriff des Adressenraums eingeführt werden, d.h., wenn zum Beispiel Daten an die oder von der Bank übertragen werden, kann eine weitere Bank aktiviert werden. Eine Lese- oder Schreiboperation im DRAM (106a/160b) wird durch Aktivieren einer ersten Zeile in der Bank und dann Erteilen eines Lesebefehls oder eines Schreibbefehls an die erste Zeile durchgeführt. Um auf eine zweite Zeile in der Bank zuzugreifen, muss die Zeile vorgeladen werden.
-
Der Speichercontroller (240) des Host-Systems (200) bestimmt normale DIMMs und das NMP DIMM (100) als einen Systemspeicher und bereitet die Adressenkarte unter Berücksichtigung einer Verschachtelung bei einem Reihen-, Bankgruppen-, Bank-, Zeilen- und Spaltenpegel vor. Der SRAM (130) ist jedoch ein agierender interner Speicher und ist somit bezüglich seiner Größe im NMP DIMM (100) beschränkt (d.h. die Größe kann auf wenige KBs 16KB, 32KB, 512KB etc. beschränkt sein). Ferner enthält der SRAM (130) keine Reihe, Bankgruppe, Bank, Zeile und Spalte, die im DRAM (160a/160b) enthalten sind, infolgedessen, wenn das Host-System (200) annimmt, dass der SRAM (130) der DRAM ist, bereitet die Adressenkarte eine große Anzahl an Leerräumen vor, die in der Adressenkarte des NMP DIMM (100) erzeugt werden. Infolgedessen ist die Adressenkarte im NMP DIMM (100) nicht zusammenhängend und beeinträchtigt die Performance des NMP DIMM (100) drastisch.
-
2 stellt verschiedene Hardwarekomponenten des NMP DIMM (100) zum Verwalten der Adressenkarte des NMP DIMM (100) nach Ausführungsbeispielen dar.
-
Der Speichercontroller (240) des Host-Systems (200) bereitet die Adressenkarte durch Verschachteln von Adressen über die Reihen, die Bankgruppen, die Bänke, die Zeilen und die Spalten hinweg vor und das Verschachteln der Adressen kann eine Performance am NMP DIMM (100) verbessern. Obwohl der SRAM (130) von der Host-Vorrichtung (200) als ein DRAM mit Reihen, Bankgruppen, Bänken, Zeilen und Spalten identifiziert wird, weist der SRAM (130) jedoch keine Reihen, Bankgruppen, Bänke, Zeilen und Spalten auf, und es kann auf jede beliebige Weise auf jede beliebige Adresse zugegriffen werden. Da die Größe des SRAM (130) verglichen mit dem DRAM (160a/160b) relativ klein ist und das Host-System (200) eine physikalische Adresse unter Berücksichtigung der Bank und der Reihenverschachtelung der Adresse des DRAM (160a/160b) zuordnet, wird der SRAM(130)-Adressenraum nicht als kontinuierlicher Speicherraum vom Host-System (200) angesehen. Infolgedessen muss das Host-System (200) eine große Speichermenge aufgrund der Leerräume in der Adressenkarte zuweisen. Ferner erzeugt das Host-System (200) außerdem ein Protokoll von gültigen und ungültigen Adressen mit Mechanismen, wie zum Beispiel eine Nachschlagetabelle. Das Erzeugen des Protokolls fügt einen Overhead hinzu, verbraucht Raum und beeinträchtigt die Performance des NMP DIMM (100).
-
Bezugnehmend auf 2, in Verbindung mit 1, enthält das NMP DIMM (100) eine PHY (110), einen Adressenverwaltungscontroller (120), den SRAM (130) und ein LinkUP (132).
-
In einem Ausführungsbeispiel ist die PHY (110) konfiguriert, Vorrichtungspegelschnittstellen an einen physischen Kanal einer Standard-DIMM-Schnittstelle zu übermitteln. Die PHY (110) ist konform zu einem Protokollstandard und kümmert sich um erforderliche Parameter für ordnungsgemäße Operationen der Schnittstelle.
-
Der Adressenverwaltungscontroller (120) enthält einen Adressenkartencontroller (122), einen direkten Adressenkartencontroller (124), einen Adressentrainingscontroller (126) und einen adaptiven Adressenkartencontroller (128). Der Adressenkartencontroller (122) ist konfiguriert, eine erste Angabe aus dem Host-System (200) zum Durchführen des Schnittstellentrainings zum Betreiben des SRAM(130)-Adressenraums bei EIN-Schalten des Host-Systems (200) zu empfangen. Ferner gibt der Adressenkartencontroller (122) basierend auf der ersten Angabe dem direkten Adressenkartencontroller (124) an, ein Schnittstellentraining unter Verwendung einer ersten Adressenkarte einzuleiten. Der direkte Adressenkartencontroller (124) führt das Schnittstellentraining unter Verwendung der ersten Adressenkarte basierend auf der ersten Angabe durch. Die erste Adressenkarte ist eine direkte Adresse, die unter Verwendung der Adressenkarte unter Berücksichtigung einer Verschachtelung des Reihen-, Bankgruppen-, Bank-, Zeilen- und Spaltenpegels vorbereitet wird.
-
Ferner empfängt der Adressenkartencontroller (122) eine zweite Angabe aus dem Host-System (200), die einen Abschluss des Schnittstellentrainings angibt, zum Einleiten einer Operation des SRAM(130)-Raums. Der Adressenkartencontroller (122) gibt dann dem Adressentrainingscontroller (126) an, die Adressenkarte von der ersten Adressenkarte zu einer zweiten Adressenkarte in einer Nachtrainingsphase zu wechseln. Die zweite Angabe aus dem Host-System (200) kann als eines von Modusregister(MR)-Befehlen, einem NMP-Konfigurationsregisterschreiben, einer vordefinierten Sequenz an Daten von Adressenleitungen und einem vordefinierten Datenmuster an das NMP DIMM (100) gesendet werden. Das vordefinierte Datenmuster kann von einem NMP-DIMM-Hersteller bereitgestellt werden. Das vordefinierte Datenmuster kann über Adressenleitungen, Datenleitungen oder beidem gesendet werden. Basierend auf dem Empfangen der zweiten Angabe vom Adressenkartencontroller (122) bestimmt der Adressentrainingscontroller (126), dass die zweite Adressenkarte zum Betreiben des SRAM(130)-Raums in einer Nachtrainingsphase verwendet werden muss, und wechselt von der ersten Adressenkarte zu der zweiten Adressenkarte zum Betreiben des SRAM(130)-Raums. Die zweite Adressenkarte ist eine adaptive Adressenkarte zum Bereitstellen einer zusammenhängenden Speicheradresse im SRAM(130)-Raum. Somit wird während regulären Host-System(200)-Zugriffen für Operationen, wie der Leseoperation und der Schreiboperation, die zweite Adressenkarte vom NMP DIMM (100) verwendet, wodurch die Notwendigkeit für die Nachschlagetabelle, die gültige und ungültige Adressen identifiziert, beseitigt wird und wodurch der Overhead für die Leseoperation und die Schreiboperation reduziert wird.
-
Nach Ausführungsbeispielen kann es eine dynamische Anzahl an DIMMs und NMP DIMMs geben. Der adaptive Adressenkartencontroller (128) ist konfiguriert, einen Datenverkehr aus dem Host-System (200) zu empfangen und ein Adressenmuster des aus dem Host-System (200) empfangenen Datenverkehrs zu bestimmen. Ferner ist der adaptive Adressenkartencontroller (128) konfiguriert, ein Host-Adressenkartenmuster zu lernen und den aus dem Host-System (200) empfangenen Datenverkehr basierend auf dem Lernen im SRAM(130)-Adressenraum aufzunehmen. Der Datenverkehr ist an der Reihe, der Bankgruppe, der Zeile und der Spalte verschachtelt.
-
Nach Ausführungsbeispielen kann es eine feste Anzahl an NMP DIMMs geben. In diesem Fall kann der adaptive Adressenkartencontroller (128) vom Adressenverwaltungscontroller (120) ausgeschlossen werden, da das Host-Adressenkartenmuster fest ist und ein Lernen des Host-Adressenkartenmusters womöglich nicht erforderlich ist.
-
Nach Ausführungsbeispielen wird der Adressenverwaltungscontroller (120) durch einen Verarbeitungsschaltkreis umgesetzt, wie Logik-Gates, integrierten Schaltungen, Mikroprozessoren, Mikrocontrollern, Speicherschaltungen, passiven elektronischen Komponenten, aktiven elektronischen Komponenten, optischen Komponenten, festverdrahteten Schaltungen oder dergleichen, und kann durch Firmware optional angetrieben werden. Die Schaltungen können zum Beispiel in einem oder mehreren Halbleiterchips oder auf Substratträgern, wie Leiterplatten und dergleichen, ausgeführt sein.
-
In einem Ausführungsbeispiel ist das LinkUP (132) ein Zustandsbit innerhalb des NMP DIMM (100), das bei Abschluss der Trainingsstufe, die durch das zweite Angabeverfahren angegeben, eingestellt wird. Ferner kann das LinkUP (132) durch das MR-Register oder ein NMP-Konfigurationsregisterschreiben oder durch Senden eines vordefinierten Musters eingestellt werden.
-
Obwohl 2 Hardwareelemente des NMP DIMM (100) zeigt, versteht es sich, dass Ausführungsbeispiele nicht darauf beschränkt sind. In anderen Ausführungsbeispielen kann das NMP DIMM (100) zusätzliche oder weniger Elemente enthalten. Ferner werden Bezeichnungen oder Namen der Elemente lediglich zu veranschaulichenden Zwecken verwendet und beschränken nicht den Umfang der Offenbarung. Eine oder mehrere Komponenten können zusammen kombiniert werden, um dieselbe oder im Wesentlichen ähnliche Funktion durchzuführen.
-
3 ist ein Flussdiagramm 300, das ein Verfahren zum Verwalten der Adressenkarte im NMP DIMM (100) nach Ausführungsbeispielen darstellt.
-
Bezugnehmend auf 3 empfängt das NMP DIMM (100) in Operation 302 die erste Angabe aus dem Host-System (200) zum Durchführen des Schnittstellentrainings zum Betreiben des SRAM(130)-Adressenraums. Zum Beispiel ist der Adressenverwaltungscontroller (120) im in 2 dargestellten NMP DIMM (100) konfiguriert, die erste Angabe aus dem Host-System (200) zum Durchführen des Schnittstellentrainings zum Betreiben des SRAM(130)-Adressenraums zu empfangen.
-
In Operation 304 führt das NMP DIMM (100) das Schnittstellentraining unter Verwendung der ersten Adressenkarte als Reaktion auf das Empfangen der ersten Angabe aus dem Host-System (200) durch. Zum Beispiel ist der Adressenverwaltungscontroller (120) im in 2 dargestellten NMP DIMM (100) konfiguriert, das Schnittstellentraining unter Verwendung der ersten Adressenkarte als Reaktion auf das Empfangen der ersten Angabe aus dem Host-System (200) durchzuführen.
-
In Operation 306 empfängt das NMP DIMM (100) die zweite Angabe aus dem Host-System (200), die den Abschluss des Schnittstellentrainings zum Betreiben des SRAM(130)-Adressenraums angibt. Zum Beispiel ist der Adressenverwaltungscontroller (120) im in 2 dargestellten NMP DIMM (100) konfiguriert, die zweite Angabe aus dem Host-System (200) zu empfangen, die den Abschluss des Schnittstellentrainings zum Betreiben des SRAM(130)-Adressenraums angibt.
-
In Operation 308 bestimmt das NMP DIMM (100), dass die zweite Adressenkarte als Reaktion auf das Empfangen der zweiten Angabe aus dem Host-System (200), die den Abschluss des Schnittstellentrainings zum Betreiben des SRAM(130)-Adressenraums angibt zum Betreiben des SRAM(130)-Adressenraums verwendet werden soll. Zum Beispiel ist der Adressenverwaltungscontroller (120) im in 2 dargestellten NMP DIMM (100) konfiguriert, zu bestimmen, dass die zweite Adressenkarte als Reaktion auf das Empfangen der zweiten Angabe aus dem Host-System (200), die den Abschluss des Schnittstellentrainings zum Betreiben des SRAM(130)-Adressenraums angibt, zum Betreiben des SRAM(130)-Adressenraums verwendet werden soll.
-
In Operation 310 wechselt das NMP DIMM (100) von der ersten Adressenkarte zu der zweiten Adressenkarte zum Betreiben des SRAM(130)-Adressenraums. Zum Beispiel ist der Adressenverwaltungscontroller (120) im in 2 dargestellten NMP DIMM (100) konfiguriert, von der ersten Adressenkarte zu der zweiten Adressenkarte zum Betreiben des SRAM(130)-Adressenraums zu wechseln.
-
Die verschiedenen Maßnahmen, Aktionen, Blöcke, Operationen oder dergleichen im Verfahren können in der dargestellten Reihenfolge, einer anderen Reihenfolge oder gleichzeitig durchgeführt werden. Ferner können in einigen Ausführungsbeispielen einige der Maßnahmen, Aktionen, Blöcke, Operationen oder dergleichen weggelassen, hinzugefügt, modifiziert, übersprungen oder dergleichen werden, ohne dabei vom Umfang der Offenbarung abzuweichen.
-
4A stellt Beispieladressenkarten dar, die im Host-System (200) zum Betreiben des SRAM(130)-Adressenraums erzeugt werden.
-
Im Allgemeinen ist eine Größe des SRAM (130) verglichen mit einem DRAM (160) klein und das Host-System (200) ordnet die physische Adresse unter Berücksichtigung der Reihe und der Reihenverschachtelung der Adresse des DRAM (160) zu. Somit wird der SRAM(130)-Adressenraum vom Host-System (200) nicht als zusammenhängender Speicherraum angesehen. Infolgedessen muss das Host-System (200) aufgrund der Adressenkarte zwei, vier, acht etc. Mal mehr Speicher zuweisen, um den nicht kontinuierlichen Speicherraum aufzunehmen. Ferner merkt sich das Host-System (200) gültige und ungültige Adressen mit Mechanismen, wie einer Nachschlagetabelle etc., die einen Overhead hinzufügen, Raum verbrauchen und die Performance des NMP DIMM (100) beeinträchtigen.
-
Bezugnehmend auf 4A wird ein 512KB-SRAM (130), welcher von der Host-Vorrichtung (200) als ein DRAM gehandhabt wird, virtuell in die Bankgruppen, Bänke, die Zeilen und die Spalten unterteilt, um Regeln des Speichercontrollers (140a/140b) zu befolgen. Es sind Beispieladressenkarten bereitgestellt, die basierend auf dem Speichercontroller (140a/140b) variieren können. Block 1 aus 4A stellt eine Beispieladressenkarte dar, die während des Schnittstellentrainings des NMP DIMM (100) zum Herstellen der Schnittstelle zwischen dem DRAM (160) und dem Speichercontroller (140a/140b) in zusammenhängender Sequenz verwendet wird. Nach dem Training wird die Adressenkarte durch BIOS basierend auf den DIMMs, den Kanälen, Sockeln etc. vorbereitet. Um 512KB an Daten aus dem Host-System (200) aufzunehmen, reichen die physischen Host-Adressen von 0-18. Dieselben können in 10 Spalten, 4 Zeilen und 4 Bankgruppen und Bänken aufgenommen werden. Aufgrund mehrerer DIMMs, die verfügbar sind, wenn das Host-System (200) die Adressenkarte für das NMP DIMM (100) vorbereitet, kommt jedoch ein Zeilenbit, d.h. Zeile R2, zwischen die Adressenkarte. Der SRAM (130) weist lediglich Zeile R0 und Zeile R1 auf und es gibt keine Zeile R2 im SRAM (130). Infolgedessen, nach jeder 215. Adresse, gibt es ein Loch, das erzeugt wird, (wie die Zeile R2), was zu einer Diskontinuität der Adressenkarte führt. Ferner, wenn das Host-System (200) den im NMP DIMM (100) aufzunehmenden Datenverkehr basierend auf der erzeugten Adressenkarte sendet, können die an Zeile R2 gerichteten Daten somit anderswo aufgenommen werden, was zu Verwirrung und Performanceverschlechterung führt.
-
Block 2 aus 4A stellt eine Beispieladressenkarte dar, in der das Host-System (200) den SRAM (130) als einen DRAM identifiziert und aufgrund des Zeilen-R2-Bits 1MB an den SRAM (130) zuweist und eine Nachschlagetabelle, die gültige und ungültige Adressen identifiziert, aufrechterhält. Der SRAM (130) weist jedoch lediglich die Zeile R0 und die Zeile R1 auf und es gibt keine Zeile R2.
-
Block 3 aus 4A stellt eine weitere Beispieladressenkarte dar, in der das Host-System (200) aufgrund des Zeilen-R2-Bits und eines Chip-Einstellbits CS0 2MB zuweist und eine Nachschlagetabelle aufrechterhält, die gültige und ungültige Adressen identifiziert.
-
Block 4 aus 4A stellt eine weitere Beispieladressenkarte dar, in der das Host-System (200) aufgrund des Zeilen-R2-Bits, des Chip-Einstellbits CS0 und eines Kanalbits CH0 4M zuweist und eine Nachschlagetabelle aufrechterhält, die gültige und ungültigen Adressen identifiziert.
-
Wie in den obigen Beispielen gezeigt, erhöhen sich die Host-System(200)-Adressenzuweisungsgröße und die Nachschlagetabellengröße somit basierend auf Veränderungen in der Adressenkarte. Im Allgemeinen weist ein Serversystem mehrere CPUs, mehrere Kanäle, mehrere DIMMs, mehrere Reihen etc. auf, welche die Performance des Serversystems drastisch verschlechtern.
-
4B stellt Beispieladressenkarten, die im Host-System (200) zum Betreiben des SRAM(120)-Adressenraums erzeugt werden, nach Ausführungsbeispielen dar.
-
Bezugnehmend auf 4B verwendet die Adressenzuordnung des NMP DIMM (100) die erste Adressenkarte für eine Schnittstellentrainingsphase des SRAM(130)-Adressenraums. Sobald das Host-System (200) dem NMP DIMM (100) angibt, dass das Schnittstellentraining abgeschlossen ist, wechselt das NMP DIMM (100) zu der zweiten Adressenkarte zum Betreiben des SRAM(130)-Adressenraums, zum Beispiel für Schreib- und Leseoperationen. Das Host-System (200) gibt dem NMP DIMM (100) durch Senden eines einzigartigen Musters oder Einstellen eines Modusregisterbits an, dass das Schnittstellentraining abgeschlossen ist. In einem weiteren Beispiel wird ein Bit verwendet, um dem NMP DIMM (100) anzugeben, dass das Host-System (200) das Schnittstellentraining abgeschlossen hat.
-
Beispiele für eine Bankverschachtelung mit einer Adressenzuordnung, die vom Speichercontroller (240) zu unterschiedlichen bereitgestellten Stufen verwendet wird, sind in 4B gezeigt. Block 1 stellt ein Beispiel für eine erste Adressenkarte dar, die während des Schnittstellentrainings vom Host-System (200) verwendet wird. Während der Schnittstellentrainingsphase bereitet das Host-System (200) die erste Adressenkarte unter der Annahme vor, dass der SRAM (130) ein DRAM ist. In Block 2 wird die zweite Adressenkarte während regulären Zugriffen vom Host-System (200), wie Lese- und Schreiboperationen, auf den SRAM (130) verwendet. In Block 3-5 passt sich der SRAM (130) basierend auf dem Empfangen der Angabe aus dem Host-System (200), dass das Schnittstellentraining abgeschlossen ist, an die zweite Adressenkarte an.
-
5A ist ein Beispiel, das ein Szenario eines verschachtelten SRAM(130)-Adressenraums darstellt.
-
Bezugnehmend auf 5A wird angenommen, dass ein Adressenraum des Host-Systems (200) eine Kapazität von 512KB mit der Host-Adressenkarte aufweist. Die ersten 64B (d.h. Adressenposition 0x0000_0000 in der Adressenkarte) zeigen auf eine erste Adresse im SRAM (130), aber die nächsten 64B (d.h. Rsvd bei Adressenposition 0x0000_0040) können auf eine zehnte Adresse und nicht auf eine zweite Adresse im SRAM (130) zeigen. Auf der NMP-DIMM(100)-Seite ist die Adressenkarte jedoch nicht mit der Host-Adressenkarte synchronisiert, was dazu führt, dass der Datenverkehr ohne jegliche Logik zugewiesen wird. Zum Beispiel weiß die Adressenkarte im NMP DIMM (100) nicht, dass die ersten 64B an Daten der 513KB an Daten aus dem Host-System (200) aus der ersten Adresse des SRAM (130) gelesen werden sollen und die nächsten 64B an Daten aus der zehnten Adresse des SRAM (130) gelesen werden sollen.
-
Wenn das Host-System (200) somit aufgrund der Leerräume in der Adressenkarte aufgrund der Diskontinuität in der Adressenkarte 1 MB oder 2 MB anstatt der 512KB zuweisen muss. Infolgedessen ist eine Größe der Host-Adressenkarte außerdem größer. Ferner, wenn die Anzahl an höchstwertigen Bits (MSB) innerhalb des Adressenraums des SRAM (130) größer ist als die Kapazität, dann wird der benötigte zusätzliche Raum dementsprechend multipliziert. Ferner besteht außerdem das Problem eines Reihenverschachtelungs-SRAM (130), was zu einer Verschlechterung der Performance des NMP DIMM (100) beiträgt.
-
5B ist ein Beispiel, das ein Szenario eines zusammenhängenden SRAM(130)-Adressenraums nach Ausführungsbeispielen darstellt.
-
Bezugnehmend auf 5B, in Verbindung mit 5A, wird in dem Verfahren nach Ausführungsbeispielen während des Schnittstellentrainings des NMP DIMM (100) die erste Adresse vom NMP DIMM (100) verwendet. Wenn das Host-System (200) die Angabe, dass das Schnittstellentraining abgeschlossen ist, an das NMP DIMM (100) sendet, wechselt das NMP DIMM (100) zu der zweiten Adressenkarte für einen normalen Betriebsmodus des SRAM(130)-Raums. Infolgedessen, aufgrund des Wechsels der Adressenkarte von der ersten Adressenkarte zu der zweiten Adressenkarte, sind die gesamten 512KB des SRAM(130)-Adressenraums zusammenhängend (d.h. von 0x0000_0000 bis 0X0007_FFC0), was eine Performance des NMP DIMM (100) verbessert. Ferner ist der SRAM(130)-Adressenraum, der leer ist (0x0008_0000 und 0x000F_FFC0), sowohl verfügbar als auch segregiert und kann vom Host-System (200) verwendet werden.
-
Ein Performance-Overhead wird aufgrund der Nachschlageoperation für jede Lese- und Schreiboperation im verschachtelten SRAM(130)-Adressenraum erzeugt. Der Performance-Overhead wird jedoch im zusammenhängenden SRAM(130)-Adressenraum aufgrund des Wechsels von der ersten Adressenkarte zu der zweiten Adressenkarte drastisch reduziert. Ferner ist ein Raum-Overhead für 512KB mit zweifacher Speicherzuweisung (1MB) 8KB zum Aufrechterhalten einer Gültigkeit für jede 64-Bytes-Adresse, die im zusammenhängenden SRAM(130)-Adressenraum ebenfalls drastisch reduziert wird.
-
6A ist ein Beispiel, das eine Spaltung im SRAM (130) aufgrund einer Adressenkarte darstellt.
-
6A stellt einen 32-Bit-Adressenraum einer X86-Architektur und den SRAM (130) dar, der ein agierender interner Speicher ist und im NMP DIMM (100) beschränkt ist. In verwandten Verfahren ist die Adressenkarte verschachtelt und nicht zusammenhängend, was zu Leerräumen in einer Speicheradressenkarte führt. Infolge der nicht zusammenhängenden Adressenkarte wird der aus dem Host-System (200) empfangene Datenverkehr über den SRAM (130) hinweg verteilt, was die Performance des NMP DIMM (100) verschlechtert.
-
6B ist ein Beispiel, das eine Kontinuität im SRAM (130) aufgrund einer Adressenkarte nach Ausführungsbeispielen darstellt.
-
Bezugnehmend auf 6B, in Verbindung mit 6A, verwendet das NMP DIMM (100) in dem Verfahren nach Ausführungsbeispielen die erste Adressenkarte zum Durchführen des Schnittstellentrainings und wechselt bei Abschluss des Schnittstellentrainings zu der zweiten Adressenkarte für den normalen Betrieb des NMP DIMM (100). Infolge der zusammenhängenden Adressenkarte ist der aus dem Host-System (200) empfangene Datenverkehr ebenfalls zusammenhängend, wodurch die Performance des NMP DIMM (100) verbessert wird.
-
Obwohl Ausführungsbeispiele oben gezeigt und beschrieben worden sind, ist für einen Fachmann deutlich, dass Modifikationen und Variationen vorgenommen werden können, ohne dabei vom Umfang des vorliegenden erfinderischen Konzepts, wie es in den beigefügten Ansprüchen definiert ist, abzuweichen.