DE202017103915U1 - Zweiphasige Befehlspuffer zum Überlappen von IOMMU-Abbildung und Lesevorgängen zweitrangiger Datenspeicher - Google Patents

Zweiphasige Befehlspuffer zum Überlappen von IOMMU-Abbildung und Lesevorgängen zweitrangiger Datenspeicher Download PDF

Info

Publication number
DE202017103915U1
DE202017103915U1 DE202017103915.3U DE202017103915U DE202017103915U1 DE 202017103915 U1 DE202017103915 U1 DE 202017103915U1 DE 202017103915 U DE202017103915 U DE 202017103915U DE 202017103915 U1 DE202017103915 U1 DE 202017103915U1
Authority
DE
Germany
Prior art keywords
phase
address
data
memory controller
physical address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE202017103915.3U
Other languages
English (en)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of DE202017103915U1 publication Critical patent/DE202017103915U1/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Computerprogrammprodukt, das Programmcode umfasst, der, wenn er durch einen oder mehrere Prozessoren ausgeführt wird, Folgendes ausführt: Kopieren von Daten von einer gegebenen Adresse eines zweitrangigen Datenspeichers in einen internen Puffer eines Speichercontrollers in einer ersten Phase unter Verwendung eines oder mehrerer Prozessoren, wobei das Kopieren wenigstens teilweise während des Abbildens einer spezifizierten physikalischen Adresse in eine Eingabe/Ausgabe-Datenspeichermanagementeinheit (IOMMU) durch ein Betriebssystem stattfindet; Bestimmen, ob eine zweite Phase ausgelöst wird, mit dem einen oder den mehreren Prozessoren; und Kopieren der Daten aus dem internen Puffer des Speichercontrollers an die spezifizierte physikalische Adresse des dynamischen Schreib-Lese-Datenspeichers (DRAM) mit dem einen oder den mehreren Prozessoren, falls die zweite Phase ausgelöst wird.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
  • Die vorliegende Anmeldung beansprucht die Priorität des Einreichungsdatums der vorläufigen US-Patentanmeldung Nr. 62/362.353, eingereicht am 14. Juli 2016, deren Offenbarung hier durch Bezugnahme vollständig mit aufgenommen ist.
  • In Übereinstimmung mit den Anforderungen des Gebrauchsmustergesetzes sind als Gegenstand des Gebrauchsmusters nur Vorrichtungen, wie sie in den beigefügten Ansprüchen definiert sind, aber keine Verfahren zu schützen. Falls in der Beschreibung auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich zur Veranschaulichung der Vorrichtung oder Vorrichtungen, für die mit den beigefügten Ansprüchen Schutz begehrt wird.
  • HINTERRUND
  • Moderne Computersysteme enthalten häufig Speichervorrichtungen, die zum Speichern von Daten Datenspeicher wie etwa Flash-Datenspeicher nutzen. Anstelle des Flash-Datenspeichers können auch andere Datenspeichertechnologien, etwa Spin-Transfer-Torque-Magnet-Schreib-Lese-Datenspeicher (STT-MRAM), Phasenwechseldatenspeicher (PCM) und resistive Datenspeicher (ReR-AM) verwendet werden. Alle von diesen weisen die Eigenschaft auf, dass sie langsamer als DRAM sind, der als der primäre Arbeitsdatenspeicher des Computersystems verwendet wird. Diese anderen Datenspeicher ergänzen den DRAM in bestimmter Weise und werden hier "zweitrangige Datenspeicher" genannt. In einigen Fällen müssen die Daten von dem zweitrangigen Datenspeicher in den DRAM gebracht werden, bevor sie bearbeitet werden können.
  • Wenn Daten von einer zweitrangigen Datenspeichervorrichtung in einen dynamischen Host-Schreib-Lese-Datenspeicher (DRAM) geschrieben werden sollen, muss sie Schreibzugriff auf die Host-DRAM-Seiten haben. In einem System mit einer Eingabe/Ausgabe-Datenspeichermanagementeinheit (IOMMU), die das Prinzip des kleinsten Privilegs durchsetzt, kann das IOMMU-Management zu dem Prozess des Abrufens von Daten aus dem zweitrangigen Datenspeicher und des Kopierens in den DRAM eine kritische Latenzzeit hinzufügen. Zum Beispiel gibt es dort, wo Seiten durch die zweitrangige Datenspeichervorrichtung nur für eine minimale Dauer geschrieben werden können, die von der zweitrangigen Datenspeichervorrichtung benötigt wird, keine langlebigen Abbildungen auf den gesamten physikalischen Datenspeicher. Dementsprechend müssen die Abbildungen für jede Schreiboperation ausgeführt werden, was eine Verzögerung erzeugt.
  • Ein Typ eines Speichervorrichtungscontrollers ist eine anwendungsspezifische integrierte Schaltung (ASIC), die einen nichtflüchtigen NAND-Speicher-Flash mit niedriger Latenzzeit (LLNAND-Flash) verwendet, der unter anderen Funktionen als eine Umlagerungsvorrichtung dient. DRAM-Seiten, auf die selten zugegriffen wird, werden durch das Betriebssystem (BS) geräumt und in den Speichervorrichtungscontroller gelegt. Bei einem Nutzerbetriebsart-Seitenfehler zu einer geräumten Seite bestimmt der BS-Seitenfehler-Handler, von wo die Einlagerungsdaten kommen. Wenn der Speichervorrichtungscontroller der Handler für einen Seitenfehler ist, muss er eine Seite aus seiner Flash-Vorrichtung abrufen und sie an eine spezifizierte Adresse in den DRAM seiner Host-CPU kopieren.
  • Der Speichervorrichtungscontroller kann eine Anzahl von Befehlspuffern besitzen, die gleichzeitige ausstehende Anforderungen bedienen können und daraufhin ein abschließendes Zurückschreiben an eine spezifizierte Adresse vornehmen. Zum Beispiel besitzen einige Speichervorrichtungscontroller 128 Befehlspuffer. Das Kopieren aus dem Speichervorrichtungscontroller in den CPU-DRAM erfordert entweder, dass der Speichervorrichtungscontroller vollen Zugriff auf den CPU-DRAM hat, oder dass die IOMMU-Abbildungen nach Bedarf dynamisch erzeugt werden. Die Erzeugung der IOMMU-Abbildung kann eine Leistungsbelastung sein.
  • Üblicherweise erfordert das Schreiben von Daten aus einem zweitrangigen Datenspeicher wie etwa einem Flash-Datenspeicher in einen DRAM, dass ein BS-Seitenfehler-Handler bestimmt, dass ein Unterstützungsspeicher bei der Speichervorrichtungscontroller-Flash-Adresse (FA) ist, eine freie, mit Nullen gefüllte 4-kB-Seite bei der physikalischen Adresse des DRAM (DRAM-PA) zuordnet, die PA in die IOMMU abbildet und einen Befehl, der {FA, PA, Abschlussdaten} enthält, an den Speichervorrichtungscontroller sendet. Daraufhin kopiert der Speichervorrichtungscontroller die Bytes aus dem Flash bei der FA in einen internen Puffer. Dies kann eine verhältnismäßig lange Zeit wie etwa 1 µs–100 µs dauern. Nachfolgend kopiert der Speichervorrichtungscontroller die Bytes aus einem internen Puffer in die System-DRAM-PA und sendet eine Abschlussbenachrichtigung. Danach entfernt das BS die Abbildung der PA und setzt den Nutzercode fort. Dieser serielle Prozess führt zu einer erheblichen Latenzzeit.
  • KURZE ZUSAMMENFASSUNG
  • Die Abbildung in die IOMMU kann mit einem Zugriff auf einen zweitrangigen Datenspeicher überlappt werden, so dass die zwei Operationen wenigstens teilweise gleichzeitig ausgeführt werden. Zum Beispiel kann gleichzeitig eine IOMMU-Abbildung aufgebaut werden, wenn ein Lesevorgang des zweitrangigen Datenspeichers in einen internen Puffer des Speichervorrichtungscontrollers initiiert wird. Um diese Überlappung zu erzielen, wird ein zweiphasiger Befehlspuffer verwendet. In einer ersten Phase wird Inhalt von einer Adresse des zweitrangigen Datenspeichers in den internen Puffer des Speichervorrichtungscontrollers gelesen. In einer zweiten Phase wird der interne Puffer an die physikalische Adresse des DRAM geschrieben.
  • Ein Aspekt der Offenbarung schafft ein Verfahren, das das Kopieren von Daten von einer gegebenen Adresse eines zweitrangigen Datenspeichers in einen internen Puffer eines Speichercontrollers in einer ersten Phase unter Verwendung eines oder mehrerer Prozessoren, wobei das Kopieren wenigstens teilweise während des Abbildens einer spezifizierten physikalischen Adresse in eine Eingabe/Ausgabe-Datenspeichermanagementeinheit (IOMMU) durch ein Betriebssystem stattfindet, umfasst. Ferner enthält das Verfahren das Bestimmen, ob eine zweite Phase ausgelöst wird, mit dem einen oder den mehreren Prozessoren, und das Kopieren der Daten aus dem internen Puffer des Speichercontrollers an die spezifizierte physikalische Adresse des dynamischen Schreib-Lese-Datenspeichers (DRAM) mit dem einen oder den mehreren Prozessoren, falls die zweite Phase ausgelöst wird.
  • Ein anderer Aspekt der Offenbarung schafft ein weiteres Verfahren, das das Identifizieren einer bestimmten Adresse des zweitrangigen Datenspeichers, die Daten speichert, das Zuweisen einer Seite bei einer bestimmten physikalischen Adresse des dynamischen Schreib-Lese-Datenspeichers (DRAM) und das Senden eines Befehls an einen Speichercontroller umfasst, wobei der Befehl die bestimmte Adresse des zweitrangigen Datenspeichers und die bestimmte physikalische Adresse identifiziert und eine erste Phase initiiert, in der die gespeicherten Daten von der bestimmten Adresse des zweitrangigen Datenspeichers in einen Puffer des Speichercontrollers gelesen werden. Ferner enthält das Verfahren das Abbilden der bestimmten physikalischen Adresse in eine Eingabe/Ausgabe-Datenspeichermanagementeinheit (IOMMU), wobei das Abbilden wenigstens teilweise während des Lesens der ersten Phase stattfindet, und das Bearbeiten des Befehls für den Speichercontroller zum Initiieren einer zweiten Phase, in der die gespeicherten Daten aus dem Speichercontrollerpuffer an die bestimmte physikalische Adresse des DRAM geschrieben werden.
  • Ein abermals anderer Aspekt der Offenbarung schafft einen Speichercontroller, der einen Datenspeicher, der einen Puffer enthält, und einen oder mehrere Prozessoren in Kommunikation mit dem Datenspeicher umfasst. Der Speichercontroller kann ferner mit einem zweitrangigen Datenspeicher gekoppelt sein. Der eine oder die mehreren Prozessoren können dafür konfiguriert sein, in einer ersten Phase Daten von einer gegebenen Adresse eines zweitrangigen Datenspeichers des zweitrangigen Datenspeichers in den Puffer des Speichercontrollers zu kopieren, wobei das Kopieren wenigstens teilweise während des Abbildens einer spezifizierten physikalischen Adresse in eine Eingabe/Ausgabe-Datenspeichermanagementeinheit (IOMMU) durch ein Betriebssystem stattfindet. Ferner sind der eine oder die mehreren Prozessoren dafür konfiguriert zu bestimmen, ob die zweite Phase ausgelöst wird, und die Daten aus dem Puffer des Speichercontrollers an die spezifizierte physikalische Adresse des dynamischen Schreib-Lese-Datenspeichers (DRAM) zu kopieren, falls die zweite Phase ausgelöst wird.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockschaltplan eines beispielhaften Systems in Übereinstimmung mit Aspekten der Offenbarung.
  • 2 ist ein Blockschaltplan eines beispielhaften Speichercontrollers in Übereinstimmung mit Aspekten der Offenbarung.
  • 3 ist ein beispielhafter Zeitablaufplan in Übereinstimmung mit Aspekten der Offenbarung.
  • 4 ist ein Ablaufplan, der ein beispielhaftes Verfahren in Übereinstimmung mit Aspekten der Offenbarung darstellt.
  • 5 ist ein Ablaufplan, der ein anderes beispielhaftes Verfahren in Übereinstimmung mit Aspekten der Offenbarung darstellt.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Übersicht
  • Allgemein bezieht sich die Technologie auf das Optimieren des Zugriffs auf zweitrangige Datenspeichervorrichtungen durch überlappendes IOMMU-Einwärtsabbilden mit dem Zugriff auf zweitrangige Datenspeicher. Wenn ein Lesevorgang eines zweitrangigen Datenspeichers in einen internen Puffer des Speichervorrichtungscontrollers initiiert wird, wird gleichzeitig eine IOMMU-Abbildung aufgebaut. Dies kann unter Verwendung eines zweiphasigen Befehlspuffers ausgeführt werden. In einer ersten Phase wird Inhalt von einer Adresse des zweitrangigen Datenspeichers in den internen Puffer des Speichervorrichtungscontrollers gelesen. In der zweiten Phase wird der interne Puffer an eine physikalische Adresse des DRAM geschrieben.
  • In Übereinstimmung mit einigen Beispielen können die Operationen der zweiten Phase durch ein oder mehrere Ereignisse ausgelöst werden. Zum Beispiel kann ein Betriebssystem einen neuen Befehl senden oder einen vorhergehenden Befehl, der an den Speichercontroller gesendet wurde, aktualisieren. Zu einem Befehlstupel von dem BS-Seitenfehler-Handler kann ein einzelnes Bit hinzugefügt werden. Zum Beispiel kann das Tupel mit dem Auslöser sein: {FA, PA, Abschlussdaten, Beginn der Phase 2}, wobei FA die Adresse des zweitrangigen Datenspeichers ist, PA die physikalische Adresse ist und Beginn der Phase 2 ein Merker ist, der angibt, ob ein herkömmlicher Lesevorgang oder ein zweiphasiger Lesevorgang ausgeführt werden soll und/oder ob die zweite Phase des zweiphasigen Lesevorgangs initiiert werden sollte. In diesem Beispiel kann das Befehlstupel mit dem zusätzlichen Bit Beginn der Phase 2 = 1 geschrieben werden, um einen herkömmlichen Lesevorgang des zweitrangigen Datenspeichers auszuführen. Andererseits kann das zusätzliche Bit in einem Anfangsbefehl auf Beginn der Phase 2 = 0, um einen Lesevorgang des zweitrangigen Datenspeichers mit dem 2-Phasen-Verhalten auszuführen, und daraufhin auf Beginn der Phase 2 = 1, um die Operationen der zweiten Phase auszulösen, eingestellt werden. Das Einstellen des Beginns auf 1 kann mit einem Byte-großen Peripheral-Component-Interconnect-Express-Schreibvorgang (PCIe-Schreibvorgang) erfolgen. Falls das Anfangsbit selbst in einem Byte ist, kann die CPU die Phase 2 durch einen einfachen 1-Byte-Schreibvorgang an die geeignete PCIe-Adresse beginnen.
  • In Übereinstimmung mit diesem Beispiel der Verwendung eines zweiphasigen Puffers sendet das BS einen Befehl, der {FA, PA, Abschlussdaten, Beginn der Phase 2 = 0} enthält, an den Speichervorrichtungscontroller. Ferner bildet das BS die PA in die IOMMU ab und bearbeitet es den Befehl, um Beginn der Phase 2 = 1 einzustellen. Da Lesevorgänge des zweitrangigen Datenspeichers verhältnismäßig langsam sind und der Speichervorrichtungscontroller mehrere ausstehende Transaktionen haben kann, wird erwartet, dass die PA-Abbildung in die IOMMU schneller abgeschlossen wird als das Abrufen der Daten des zweitrangigen Datenspeichers durch den Speichervorrichtungscontroller. Jede einzelne CPU kann nur einen einzelnen Seitenfehler anstehend haben, so dass sie keine andere Arbeit als die IOMMU-Abbildung auszuführen hat.
  • Die Steuerung des Beginns der Phase 2 dient dazu, den Schreibvorgang durch den Speichervorrichtungscontroller zu vermeiden, bevor die IOMMU-Abbildung erzeugt wird, was ein kritischer Fehler wäre. Da CPU-PCIe-Schreibvorgänge nicht-cache-fähig gepostet werden, sollte der zusätzliche Schreibvorgang beim Bearbeiten des Befehls zum Einstellen von Beginn der Phase 2 = 1 nur Latenzzeit hinzufügen, die mit der Zugriffslatenzzeit des zweitrangigen Datenspeichers überlappt.
  • In einigen Beispielen können Speichervorrichtungscontroller auf den Host-Datenspeicher vollen Zugriff haben, während sie in anderen Beispielen nur vorübergehenden Zugriff unter Verwendung der IOMMU haben können. Auf jeden Fall ist erwünscht, dass die Abbildungen der PCIe-Adresse des Speichervorrichtungscontrollers auf die CPU-DRAM-Adresse einfach sind. Dementsprechend kann zu jeder verwendeten Adresse eine beliebige Konstante addiert werden, so dass keine zahlenmäßige Konsistenz erforderlich ist. Zum Beispiel wird ein einzelner BASE_OFFSET addiert und wird der gesamte CPU-Datenspeicher im PCIe-IOMMU-Raum auf ein zusammenhängendes Gebiet virtueller Eingabe/Ausgabe-Adressen (IOVAs) abgebildet. Zum Beispiel wird die IOMMU verwendet, um den CPU-Datenspeicher beginnend bei der PCIe-Adresse 1 TB abzubilden. Vorrichtungstreiber des Speichervorrichtungscontrollers setzen die physikalische DRAM-Adresse durch Addieren eines 1-TB-Offsets in PCIe-Adressen um.
  • Weiter mit dem obigen Beispiel kann der gesamte Datenspeicher abgebildet werden, wobei die IOMMU aber weiterhin Berechtigungen durchsetzen kann. Standardmäßig besitzt eine Systemvorrichtung keine Berechtigung, auf einen Host-Datenspeicher innerhalb des Basisadressen-Offset-Bereichs zuzugreifen. Wenn ein Eingabe/Ausgabe-Vorgang (EA-Vorgang) stattfindet, sendet der Host Befehle an die IOMMU, um zu ermöglichen, dass die Systemvorrichtung auf eine geeignete Seite in dem Basisadressen-Offset-Bereich zugreift. Die Systemvorrichtung schließt die EA ab. Daraufhin befiehlt der Host der IOMMU, die Berechtigungen fallenzulassen. Diesbezüglich wird die Abbildung selbst in der Initialisierungszeit einmal aufgebaut und brauchen zur EA-Zeit nur die Berechtigungen geändert zu werden.
  • Beispielhafte Systeme
  • 1 stellt ein beispielhaftes System 100 zum Überlappen von Lesevorgängen eines zweitrangigen Datenspeichers mit der IOMMU-Abbildung dar. Das System 100 kann z. B. ein System von Computervorrichtungen sein, die auf einem Motherboard verbunden sind. Ein solches System kann in Rechenzentren oder anderen Computerumgebungen wie etwa Personal-Computer-Vorrichtungen, Laptops, Mobiltelephonen, Videospielsystemen, lokalen Netzen, Weitverkehrsnetzen usw. vorhanden sein. Das System 100 enthält einen Hauptdatenspeicher 110, der mit einer Zentraleinheit (CPU) 120 gekoppelt ist. Ferner ist die CPU 120 mit einer Eingabe/Ausgabe-Datenspeichermanagementeinheit (IOMMU) 130 gekoppelt. Die IOMMU 130 und eine oder mehrere Systemvorrichtungen 150 sind über einen Peripheral-Interconnect-Card-Express-Switch (PCIe-Switch) 140 verbunden.
  • Auf den Hauptdatenspeicher 110 kann durch die CPU 120 zugegriffen werden und er kann Daten und Anweisungen speichern, die durch die CPU 120 ausführbar sein können. Der Hauptdatenspeicher 110 kann irgendein Typ eines Datenspeichers wie etwa Nur-Lese-Datenspeicher, Schreib-Lese-Datenspeicher, Wechselspeichermedien, Cache, Register oder dergleichen sein. Der Hauptdatenspeicher 110 kann DRAM 125 und eine Adressenneuzuordnungstabelle 115 und andere Daten- und Datenspeichereinheiten enthalten.
  • Die CPU 120 ist z. B. durch einen Datenbus und durch einen Adressenbus mit dem Hauptdatenspeicher 110 verbunden und kommuniziert mit ihm. Die CPU 120 kann ein Mikroprozessor, der in einem Chip liegt, oder irgendein anderer bekannter Prozessor sein. Obgleich nur eine einzelne CPU 120 gezeigt ist, können zwischen dem Hauptdatenspeicher 110 und der IOMMU 130 irgendeine Anzahl von CPUs verbunden sein. Zum Beispiel kann die CPU 120 ein Mehrkernprozessor sein.
  • Die IOMMU 130 verbindet DMA-fähige Vorrichtungen mit dem Hauptdatenspeicher 110. Ferner bildet die IOMMU 130 in der Adressenneuzuordnungstabelle 115 Vorrichtungsadressen auf physikalische Adressen ab.
  • Der PCIe-Switch 140 ist eine schnelle Verdrahtung, die eine Verbindung einer oder mehrerer Systemvorrichtungen 150 mit anderen Komponenten in dem System 100 bereitstellt. Der PCIe-Switch 140 kann eine Verdrahtung auf der Ebene des Motherboards, eine Erweiterungskartenschnittstelle oder dergleichen sein. Die Systemvorrichtungen können über den PCIe-Switch 140 über eine oder mehrere Verbindungen kommunizieren. Obgleich in dem Beispiel aus 1 der PCIe-Switch 140 vorhanden ist, ist festzustellen, dass der PCIe-Switch in anderen beispielhaften Systemen weggelassen sein kann.
  • Die Systemvorrichtung 150 kann irgendeine Art Vorrichtung sein, die über das System 100 kommunizieren kann. Nur beispielhaft kann die Systemvorrichtung 150 ein Netzschnittstellencontroller (NIC) oder eine Graphikverarbeitungseinheit (GPU) sein. Obgleich nur eine Systemvorrichtung 150 gezeigt ist, kann das System 100 irgendeine Anzahl von Systemvorrichtungen enthalten.
  • Wie gezeigt ist, enthält die Systemvorrichtung 150 einen zweitrangigen Datenspeicher 160. Der zweitrangige Datenspeicher 160 kann z. B. eine Flash-Vorrichtung wie etwa eine Datenspeicherkarte, ein USB-Laufwerk, ein Festkörperlaufwerk oder irgendeine andere Art Datenspeichervorrichtung sein. In anderen Beispielen kann der zweitrangige Datenspeicher 160 ein STT-MRAM, ein ReRAM, ein PCM oder irgendeine andere Art zweitrangiger Datenspeicher sein. Der zweitrangige Datenspeicher 160 kann in der Systemvorrichtung 150 befestigt sein oder kann entnehmbar sein.
  • Ferner enthält die Systemvorrichtung 150 einen Speichercontroller 170. Der in Verbindung mit 2 weiter beschriebene Speichercontroller 170 enthält ferner einen internen Puffer 175.
  • Lese- und Schreibvorgänge von dem zweitrangigen Datenspeicher 160 betreffen viele der anderen Komponenten des Systems 100. Zum Beispiel identifiziert in Übereinstimmung mit der vorliegenden Offenbarung ein Betriebssystem (BS) der Host-CPU 120, dass Speicherdaten an einer bestimmten Adresse des zweitrangigen Datenspeichers des zweitrangigen Datenspeichers 160 gespeichert sind. Das BS ordnet eine Seite bei einer bestimmten physikalischen Adresse des dynamischen Schreib-Lese-Datenspeichers (DRAMs) zu. Daraufhin sendet das BS an den Speichercontroller 170 einen Befehl, um eine erste Phase zu initiieren, in der die Daten von der bestimmten Flash-Adresse in den internen Puffer 175 des Speichercontrollers 170 gelesen werden. Gleichzeitig während des Lesens aus dem Flash-Datenspeicher bildet das BS die bestimmte physikalische Adresse, z. B. unter Verwendung der Adressenneuzuordnungstabelle 115, in die IOMMU 130 ab. Wenn das Lesen der Flash-Datenspeicher-Adresse abgeschlossen ist, bearbeitet das BS den Befehl für die Speichersteuerung 170, um eine zweite Phase zu initiieren, in der die Daten aus dem internen Puffer 175 an die bestimmte physikalische Adresse des DRAM 125 geschrieben werden.
  • Obgleich das System 100 oben als ein System von Vorrichtungen auf einem Motherboard beschrieben worden ist, ist festzustellen, dass das System 100 irgendeine Konfiguration elektronisch gekoppelter Computervorrichtungen sein kann. Zum Beispiel kann das System eine Backplane, die Peripheriegeräte miteinander verbindet, eine Erweiterungskartenschnittstelle oder dergleichen enthalten. Als ein weiteres Beispiel kann die Verbindung zwischen den Computervorrichtungen festverdrahtete Verbindungen, drahtlose Verbindungen oder irgendeine andere Art Verbindungen sein. Als ein abermals weiteres Beispiel kann das System 100 TCP/IP, 802.11, Ethernet, InfiniBand oder irgendeine andere Art Netz enthalten.
  • Obgleich der Speichercontroller 170 vollen Zugriff auf den Host-Datenspeicher 120 haben kann, kann er in einigen Fällen nur vorübergehenden Zugriff unter Verwendung der IOMMU 130 haben. Zum Beispiel kann der gesamte Datenspeicher abgebildet sein, kann die IOMMU 130 aber weiterhin Berechtigungen durchsetzen. Standardmäßig besitzt die Systemvorrichtung 150 keine Berechtigung, innerhalb des Basisadressen-Offset-Bereichs auf den Host-Datenspeicher zuzugreifen. Wenn eine Eingabe/Ausgabe (EA) stattfindet, sendet der Host 120 an die IOMMU 130 Befehle, um zu ermöglichen, dass die Systemvorrichtung 150 auf eine geeignete Seite in dem Basisadressen-Offset-Bereich zugreift. Die Systemvorrichtung 150 schließt die EA ab und der Host 120 weist daraufhin die IOMMU 130 an, die Berechtigungen fallenzulassen. Diesbezüglich wird die Abbildung selbst einmal zur Initialisierungszeit aufgebaut und braucht zur EA-Zeit nur die Berechtigungen geändert zu werden.
  • Gleich, ob der Speichercontroller 170 auf den Host-Datenspeicher 120 vollen Zugriff oder vorübergehenden Zugriff hat, können die Abbildungen der PCIe-Adresse des Speichercontrollers auf die CPU-DRAM-Adresse trotz der Verwendung eines anderen Abbildungsmechanismus konsistent gehalten werden. Zum Beispiel kann zu dem relevanten Mechanismus ein einzelner base_offset addiert werden. Dementsprechend kann der gesamte CPU-Datenspeicher in dem PCIe-IOMMU-Raum auf ein zusammenhängendes Gebiet virtueller Eingabe/Ausgabe-Adressen (IOVAs) abgebildet werden.
  • Beispiel 2 zeigt einen beispielhaften Speichercontroller 270. Wie dargestellt ist, kann der Speichercontroller 270 einen Prozessor 210, einen Datenspeicher 230 und Befehlspuffer 280 enthalten. Der Prozessor 210 kann irgendein gut bekannter Prozessor wie etwa eine kommerziell verfügbare CPU oder ein kommerziell verfügbarer Mikrocontroller sein. Alternativ kann der Prozessor ein dedizierter Controller wie etwa eine ASIC sein. In Übereinstimmung mit einem anderen Beispiel kann der Prozessor eine Zustandsmaschine sein.
  • Der Datenspeicher 230 speichert Informationen, auf die durch den Prozessor 210 zugegriffen werden kann, einschließlich Anweisungen 234, die durch den Prozessor 210 ausgeführt werden können. Außerdem enthält der Datenspeicher Daten 232, die durch den Prozessor ausgelesen, manipuliert oder gespeichert werden können. Der Datenspeicher kann irgendeine Art, die Informationen speichern kann, auf die durch den Prozessor zugegriffen werden kann, wie etwa schreibfähige und lesefähige Datenspeicher sein. Der Datenspeicher 230 enthält Daten 232, die durch den Prozessor in Übereinstimmung mit den Anweisungen 234 ausgelesen, manipuliert oder gespeichert werden können. Obgleich das System und das Verfahren nicht durch irgendeine bestimmte Datenstruktur beschränkt sind, können die Daten z. B. in Computerregistern, in einer relationalen Datenbank als eine Tabelle mit mehreren verschiedenen Feldern und Datensätzen oder als XML-Dokumente gespeichert sein. Außerdem können die Daten in irgendeinem computerlesbaren Format wie etwa als Binärwerte, ASCII oder Unicode, darauf aber nicht beschränkt, formatiert sein. Darüber hinaus können die Daten irgendwelche Informationen, die ausreichen, um die relevanten Informationen zu identifizieren, wie etwa Zahlen, Beschreibungstext, herstellerspezifische Codes, Zeiger, Bezugnahmen auf Daten, die in anderen Datenspeichern (einschließlich an anderen Netzorten) gespeichert sind, oder Informationen, die durch eine Funktion verwendet werden, um die relevanten Daten zu berechnen, umfassen.
  • Die Anweisungen 234 können irgendein Satz von Anweisungen sein, die durch den Prozessor direkt (wie etwa Maschinencode) oder indirekt (wie etwa Skripte) ausgeführt werden sollen. Diesbezüglich können die Begriffe "Anweisungen", "Schritte" und "Programme" hier austauschbar verwendet sein. Die Anweisungen können im Objektcodeformat zur direkten Verarbeitung durch den Prozessor oder in irgendeiner anderen Computersprache, einschließlich Skripten oder Sammlungen unabhängiger Quellcodemodule, die bei Bedarf interpretiert oder im Voraus kompiliert werden, gespeichert sein.
  • Die Anweisungen 234 können durch den Prozessor ausgeführt werden, um z. B. einen effizienten Flash-Datenspeicher-Lese/Schreib-Vorgang auszuführen. Zum Beispiel können die Anweisungen 234 das Kopieren von Bytes von einer spezifizierten Flash-Adresse in den internen Puffer 275, während das BS eine bestimmte physikalische Adresse in die IOMMU abbildet, bereitstellen. Ferner können die Anweisungen 234 das Bestimmen bereitstellen, ob, z. B. durch einen Befehl von dem BS oder durch ein anderes Ereignis, eine zweite Phase ausgelöst wird. Solche Befehle von dem BS können in die Befehlspuffer 280 geschrieben werden. Wenn die zweite Phase ausgelöst worden ist, kopiert der Speichercontroller 270 Bytes aus dem internen Puffer 275 an die bestimmte physikalische Adresse in dem DRAM. Wenn dies abgeschlossen ist, kann der Speichercontroller 270 eine Benachrichtigung an das BS senden.
  • Obgleich 2 den Prozessor 210 und den Datenspeicher 230 in der Weise funktional darstellt, dass sie innerhalb desselben Blocks sind, ist festzustellen, dass der Prozessor und der Datenspeicher tatsächlich mehrere Prozessoren und Datenspeicher umfassen können, die innerhalb desselben physikalischen Gehäuses gelagert oder nicht gelagert sein können. Zum Beispiel können einige der Anweisungen und Daten in einer Wechsel-CD-ROM oder anders innerhalb eines Nur-Lese-Computerchips gespeichert sein. Einige oder alle der Anweisungen und Daten können an einem Ort gespeichert sein, der von dem Prozessor 120 physikalisch fern ist, auf den er aber dennoch zugreifen kann. Ähnlich kann der Prozessor 120 tatsächlich eine Ansammlung von Prozessoren umfassen, die parallel arbeiten oder nicht parallel arbeiten können.
  • 3 ist ein beispielhafter Zeitablaufplan, der den relativen Zeitablauf der Flash-Lesevorgänge, der IOMMU-Abbildung und des Schreibens in den DRAM darstellt. Wie gezeigt ist, ist die Operation 310 des Lesens von einer gegebenen Flash-Adresse FA in den internen Puffer des Speichercontrollers verhältnismäßig lang. Zum Beispiel kann diese Operation bis zu 1 µs–100 µs oder mehr oder weniger dauern. Wie in 3 gezeigt ist, beginnt die Leseoperation zum Zeitpunkt t0 und endet sie zum Zeitpunkt t3.
  • In der Zwischenzeit wird die Operation 320 ausgeführt, in der eine gegebene physikalische Adresse PA in die IOMMU abgebildet wird. Diese Operation kann ebenfalls etwas langwierig sein. Allerdings ist eine Gesamtzeitdauer für alle Operationen 310330 dadurch, dass die IOMMU-Abbildungsoperation 302, im Gegensatz zu sequentiell, gleichzeitig mit der Flash-Leseoperation 310 ausgeführt wird, verringert. Obgleich die IOMMU-Abbildungsoperation 320 in der Weise gezeigt ist, dass sie zu einem Zeitpunkt t1 beginnt und zu einem Zeitpunkt t2 endet, können diese Zeitpunkte relativ zu den Zeitpunkten t0 und t3 geändert werden. Zum Beispiel kann die IOMMU-Abbildungsoperation 320 vor der Flash-Leseoperation 310 beginnen. Alternativ oder zusätzlich kann die IOMMU-Abbildungsoperation 310 enden, nachdem die Flash-Leseoperation 310 abgeschlossen ist. Diesbezüglich kann sich die IOMMU-Abbildungsoperation 320 mit der Flash-Leseoperation 310 nur teilweise überlappen. Allerdings kann diese Überlappung weiterhin zu einer erheblichen Verringerung der Latenzzeit führen.
  • Wenn die IOMMU-Abbildungsoperation 320 abgeschlossen ist, kann die Operation 330 ausgelöst werden, in der der interne Puffer an die gegebene physikalische Adresse des DRAM geschrieben wird. Obgleich diese Operation 330 in der Weise gezeigt ist, dass sie nahezu sofort beginnt, wenn die Operation 310 endet, kann es zwischen den zwei Operationen eine geringfügige Pufferzeitdauer geben. In anderen Beispielen kann die Schreiboperation 330 beginnen, bevor die Leseoperation 310 abgeschlossen ist, aber nachdem die IOMMU-Abbildungsoperation 320 abgeschlossen ist.
  • Beispielhafte Verfahren
  • Weiter zu den oben beschriebenen beispielhaften Systemen werden nun beispielhafte Verfahren beschrieben. Diese Verfahren können unter Verwendung der oben beschriebenen Systeme, von Änderungen davon oder irgendwelcher einer Vielzahl von Systemen mit anderen Konfigurationen ausgeführt werden. Es ist festzustellen, dass die an den obigen Verfahren beteiligten Operationen nicht in der genau beschriebenen Reihenfolge ausgeführt zu werden brauchen. Vielmehr können verschiedene Operationen in einer anderen Reihenfolge oder gleichzeitig behandelt werden und können Operationen hinzugefügt oder weggelassen werden.
  • 4 bietet einen beispielhaften Ablaufplan, der ein Verfahren 400 darstellt. Dieses Verfahren 400 kann z. B. durch das BS der Host-CPU 120 (1) ausgeführt werden.
  • Im Block 410 wird bestimmt, dass die Speicherdaten bei einer bestimmten Flash-Adresse FA gespeichert sind. Nur beispielhaft kann ein Nutzer einen Befehl zum Zugreifen auf Daten in einer bestimmten Datei, die in einer Flash-Datenspeicher-Vorrichtung gespeichert ist, eingeben. Dementsprechend kann ein BS-Seitenfehler-Handler die dieser Datei entsprechende Flash-Adresse identifizieren.
  • Im Block 420 werden Seiten einer bestimmten physikalischen Adresse PA des DRAM zugeordnet.
  • Im Block 430 wird ein Anfangsbefehl an den Speichercontroller gesendet. Dieser Befehl initiiert das Lesen von einer bestimmten Flash-Adresse FA in einen internen Puffer des Speichercontrollers. Der Befehl kann z. B. ein Tupel sein, das die Flash-Adresse, die physikalische Adresse und die Abschlussdaten identifiziert. Ferner kann der Befehl angeben, dass für den Lesevorgang die zweiphasige Verarbeitung, bei der die IOMMU-Abbildung mit den Flash-Lesevorgängen überlappt, ausgeführt werden sollte. Die Angabe kann z. B. ein Bit sein, das zu dem Befehlstupel hinzugefügt wird, wobei das Bit auf 0 eingestellt wird, um eine erste Phase zu initiieren, und auf 1 eingestellt wird, um eine zweite Phase zu initiieren. Zum Beispiel kann dieses Tupel sein: {FA, PA, Abschlussdaten, Beginn der 2. Phase}. Ein solches Tupel kann ebenfalls verwendet werden, um anzugeben, dass die herkömmliche einstufige serielle Verarbeitung ausgeführt werden sollte. Zum Beispiel kann in einem Anfangsbefehl das Bit des Beginns der 2. Phase im Gegensatz zu 0 auf 1 eingestellt werden. In anderen Beispielen kann die Angabe ein getrennter Befehl sein. Zum Beispiel kann ein Betriebssystem einen neuen Befehl an den Speichercontroller senden.
  • In einigen Fällen kann die physikalische Adresse PA erst bekannt sein, wenn die IOMMU-Abbildung (Block 440) abgeschlossen ist. Zum Beispiel kann die physikalische Adresse PA nach der IOMMU-Abbildung tatsächlich eine virtuelle Adresse wie eine virtuelle Eingabe/Ausgabe-Adresse (IOVA) sein. In diesen Fällen kann der Anfangsbefehl der ersten Phase nur die Flash-Adresse FA und Abschlussdaten, z. B. {FA, Abschlussdaten}, in den Speichercontroller schreiben. Der aktualisierte Befehl der zweiten Phase kann die physikalische Adresse PA und das Bit zum Initiieren des Beginns der zweiten Phase, z. B. {PA, Beginn der 2. Phase = 1}, angeben. Dieser aktualisierte Befehl der zweiten Phase kann z. B. ein einzelner 8-Byte-Schreibvorgang sein, bei dem die physikalische Adresse die Bits 63-1 belegt und die Angabe des Beginns der Phase 2 das letzte Bit 0 belegt.
  • Im Block 440 wird die bestimmte physikalische DRAM-Adresse PA in die IOMMU abgebildet. Diese Abbildung wird wenigstens teilweise während einer Zeitdauer ausgeführt, in der das Lesen der ersten Phase von der Flash-Adresse FA in den Puffer ausgeführt wird. In einigen Beispielen kann die IOMMU-Abbildung abgeschlossen werden, bevor der Flash-Lesevorgang abgeschlossen ist. In anderen Beispielen kann die IOMMU-Abbildung für einige Zeit fortgesetzt werden, nachdem der Flash-Lesevorgang abgeschlossen ist. In diesen Beispielen wird das Schreiben des internen Puffers in die physikalische DRAM-Adresse verzögert, bis die IOMMU-Abbildung abgeschlossen ist.
  • Im Block 450 wird der Anfangsbefehl bearbeitet, um eine zweite Phase anzugeben, in der die Daten von dem internen Puffer in die physikalische Adresse PA des DRAM geschrieben werden. Zum Beispiel kann das Bit des Beginns der 2. Phase unter Rückbezug auf das Beispiel, das das Tupel für den Anfangsbefehl verwendet, von 0 auf 1 geändert werden. Diese Änderung kann für den Speichercontroller angeben, dass die IOMMU-Abbildung abgeschlossen ist und dass der Speichercontroller somit mit dem Schreiben beginnen kann, ohne einen Fehler zu verursachen.
  • 5 bietet einen weiteren beispielhaften Ablauf, der ein Verfahren 500 darstellt. Dieses Verfahren 500 kann z. B. durch den Speichercontroller ausgeführt werden. Einige der Operationen in dem Verfahren 500 entsprechen, wie etwa dadurch, dass sie auf Befehle von dem BS ansprechen, Operationen des BS in dem oben beschriebenen Verfahren 400.
  • Im Block 510 werden Bytes von Daten von der bestimmten Flash-Adresse FA in einen internen Puffer kopiert. Dies kann ausgeführt werden, während das BS die physikalische Adresse PA in die IOMMU abbildet (Block 440, 4).
  • Im Block 520 wird bestimmt, ob ein Auslöseereignis aufgetreten ist, das die Initiierung der zweiten Phase auslösen würde. Ein Beispiel eines Auslöseereignisses ist der Empfang einer Benachrichtigung wie etwa eines bestimmten Bits, das in einem Befehlstupel gesetzt ist, dass die IOMMU-Abbildung abgeschlossen ist, von dem BS. Andere Beispiele von Auslöseereignissen enthalten das Schreiben der physikalischen Adresse PA durch das BS, einen Zeitablauf mit einer vorgegebenen Länge usw. Es ist festzustellen, dass diese Auslöser lediglich Beispiele sind und dass irgendeine Anzahl anderer Arten von Auslösern möglich sind.
  • Falls die zweite Phase nicht ausgelöst worden ist, kann das Verfahren 500 zum Block 510 zurückkehren und weiter von dem Flash in den internen Puffer lesen. In anderen Beispielen kann der Speichercontroller den Auslöser abwarten, falls die zweite Phase nicht ausgelöst worden ist. Dagegen geht das Verfahren zum Block 530 über, falls bestimmt wird, dass die Phase 2 ausgelöst worden ist. Hier werden die Bytes in den internen Puffer kopierter Daten an die bestimmte physikalische Adresse des DRAM weiter kopiert.
  • Im Block 540 wird eine Benachrichtigung gesendet, die angibt, dass der Flash-Lese/Schreib-Vorgang abgeschlossen ist. Zum Beispiel kann die Benachrichtigung an das BS oder an eine andere Systemvorrichtung wie etwa an die Systemvorrichtung 105 (1) gesendet werden.
  • Die vorstehenden Systeme und Verfahren können die Computerleistung z. B. dadurch verbessern, dass sie die Flash-Lese/Schreib-Vorgängen zugeordnete Latenzzeit verringern. Durch Überlappen der IOMMU-Abbildung mit dem Anfangs-Flash-Lesevorgang wird erhebliche Zeit gespart, ohne die Verarbeitungsleistung zu behindern.
  • Obgleich oben eine Anzahl von Beispielen beschrieben worden sind, sind diese Beispiele selbstverständlich nicht beschränkend und können weitere Änderungen vorgenommen werden. Obgleich die oben beschriebenen Verfahren in Verbindung mit einem Speichervorrichtungscontroller beschrieben worden sind, können diese Verfahren selbstverständlich z. B. in Firmware oder in einem Computerprogrammprodukt wie etwa einem computerlesbaren Speichermedium, das Programmcode umfasst, der das Verfahren ausführt, wenn er durch einen oder mehrere Prozessoren ausgeführt wird, implementiert werden. Ferner ist die zweiphasige Verarbeitung nicht auf Flash beschränkt, sondern kann sie ebenfalls für Graphikverarbeitungseinheiten (GPUs), Universal-GPUs (GPGPUs), Beschleuniger mit neuronalen Netzen, die in den CPU-Datenspeicher kopieren, oder andere Beschleuniger, die Daten in den Host-Datenspeicher verschieben, verwendet werden.
  • Da diese und andere Varianten und Kombinationen der oben diskutierten Merkmale genutzt werden können, ohne von dem wie durch die Ansprüche definierten Gegenstand abzuweichen, soll die vorstehende Beschreibung beispielhafter Aspekte nur veranschaulichend anstatt beschränkend für den wie durch die Ansprüche definierten Gegenstand sein. Außerdem ist die Darstellung der hier beschriebenen Beispiele (sowie aller Satzteile mit Wendungen wie "wie etwa", "z. B.", "einschließlich" und dergleichen) selbstverständlich nicht als Beschränkung des beanspruchten Gegenstands auf die spezifischen Beispiele zu interpretieren; vielmehr sollen die Beispiele nur einige von vielen möglichen Aspekten veranschaulichen.

Claims (19)

  1. Computerprogrammprodukt, das Programmcode umfasst, der, wenn er durch einen oder mehrere Prozessoren ausgeführt wird, Folgendes ausführt: Kopieren von Daten von einer gegebenen Adresse eines zweitrangigen Datenspeichers in einen internen Puffer eines Speichercontrollers in einer ersten Phase unter Verwendung eines oder mehrerer Prozessoren, wobei das Kopieren wenigstens teilweise während des Abbildens einer spezifizierten physikalischen Adresse in eine Eingabe/Ausgabe-Datenspeichermanagementeinheit (IOMMU) durch ein Betriebssystem stattfindet; Bestimmen, ob eine zweite Phase ausgelöst wird, mit dem einen oder den mehreren Prozessoren; und Kopieren der Daten aus dem internen Puffer des Speichercontrollers an die spezifizierte physikalische Adresse des dynamischen Schreib-Lese-Datenspeichers (DRAM) mit dem einen oder den mehreren Prozessoren, falls die zweite Phase ausgelöst wird.
  2. Computerprogrammprodukt nach Anspruch 1, wobei das Bestimmen, ob die zweite Phase ausgelöst wird, das Bestimmen, ob von einem Betriebssystem ein aktualisiertes Befehlstupel empfangen wird, umfasst.
  3. Computerprogrammprodukt nach Anspruch 2, wobei das aktualisierte Befehlstupel ein Bit in einem Anfangsbefehlstupel ändert, wobei das geänderte Bit als ein Merker zum Auslösen der zweiten Phase bestimmt ist.
  4. Computerprogrammprodukt nach Anspruch 2, wobei die spezifizierte physikalische Adresse PA eine virtuelle Adresse umfasst.
  5. Computerprogrammprodukt nach Anspruch 4, wobei das Kopieren der Daten von der gegebenen Adresse des zweitrangigen Datenspeichers in der ersten Phase in Ansprechen darauf erfolgt, dass ein Anfangsbefehlstupel die Adresse des zweitrangigen Datenspeichers identifiziert.
  6. Computerprogrammprodukt nach Anspruch 5, wobei das aktualisierte Befehlstupel die spezifizierte physikalische Adresse und ein Bit zum Initiieren des Beginns der zweiten Phase angibt.
  7. Computerprogrammprodukt nach Anspruch 1, das ferner das Addieren eines Basis-Offsets zu der vorgegebenen physikalischen Adresse in der Weise, dass das Kopieren der zweiten Phase durch den einen oder die mehreren Prozessoren an die spezifische Adresse erfolgt, durch den einen oder die mehreren Prozessoren umfasst.
  8. Computerprogrammprodukt, das Programmcode umfasst, der, wenn er durch einen oder mehrere Prozessoren ausgeführt wird, Folgendes ausführt: Identifizieren einer bestimmten Adresse des zweitrangigen Datenspeichers, die Daten speichert; Zuweisen einer Seite bei einer bestimmten physikalischen Adresse des dynamischen Schreib-Lese-Datenspeichers (DRAM); Senden eines Befehls an einen Speichercontroller, wobei der Befehl die bestimmte Adresse des zweitrangigen Datenspeichers und die bestimmte physikalische Adresse identifiziert und eine erste Phase initiiert, in der die gespeicherten Daten von der bestimmten Adresse des zweitrangigen Datenspeichers in einen Puffer des Speichercontrollers gelesen werden; Abbilden der bestimmten physikalischen Adresse in eine Eingabe/Ausgabe-Datenspeichermanagementeinheit (IOMMU), wobei das Abbilden wenigstens teilweise während des Lesens der ersten Phase stattfindet; und Bearbeiten des Befehls für den Speichercontroller zum Initiieren einer zweiten Phase, in der die gespeicherten Daten aus dem Speichercontrollerpuffer an die bestimmte physikalische Adresse des DRAM geschrieben werden.
  9. Computerprogrammprodukt nach Anspruch 8, wobei das Abbilden vor Abschluss der ersten Phase abgeschlossen wird.
  10. Computerprogrammprodukt nach Anspruch 8, wobei der Befehl ein Tupel mit einem Bit, das dafür bestimmt ist, eine Initiierung der ersten Phase und/oder eine Initiierung der zweiten Phase zu identifizieren, umfasst.
  11. Computerprogrammprodukt nach Anspruch 8, wobei das Senden des Befehls an den Speichercontroller ferner das Identifizieren der bestimmten physikalischen Adresse umfasst.
  12. Computerprogrammprodukt nach Anspruch 8, wobei das Bearbeiten des Befehls für den Speichercontroller das Identifizieren der bestimmten physikalischen Adresse umfasst, wobei die bestimmte physikalische Adresse nach dem Abbilden in die IOMMU eine virtuelle Adresse ist.
  13. Speichercontroller, der umfasst: einen Datenspeicher, der einen Puffer enthält; einen oder mehrere Prozessoren in Kommunikation mit dem Datenspeicher, wobei der eine oder die mehreren Prozessoren zu Folgendem dienen: Kopieren von Daten von einer gegebenen Adresse eines zweitrangigen Datenspeichers in den Puffer des Speichercontrollers in einer ersten Phase, wobei das Kopieren wenigstens teilweise während des Abbildens einer spezifizierten physikalischen Adresse in eine Eingabe/Ausgabe-Datenspeichermanagementeinheit (IOMMU) durch ein Betriebssystem stattfindet; Bestimmen, ob die zweite Phase ausgelöst wird; und Kopieren der Daten aus dem Puffer des Speichercontrollers an die spezifizierte physikalische Adresse des dynamischen Schreib-Lese-Datenspeichers (DRAM), falls die zweite Phase ausgelöst wird.
  14. Speichercontroller nach Anspruch 13, wobei der eine oder die mehreren Prozessoren bestimmen, ob von dem Betriebssystem ein aktualisiertes Befehlstupel empfangen wird, um zu bestimmen, ob die zweite Phase ausgelöst wird.
  15. Speichercontroller nach Anspruch 14, wobei das aktualisierte Befehlstupel ein Bit in einem Anfangsbefehlstupel ändert, wobei das geänderte Bit als ein Merker zum Auslösen der zweiten Phase bestimmt ist.
  16. Speichercontroller nach Anspruch 14, wobei die spezifizierte physikalische Adresse PA eine virtuelle Adresse umfasst.
  17. Speichercontroller nach Anspruch 16, wobei das Kopieren der Daten von der gegebenen Adresse des zweitrangigen Datenspeichers in der ersten Phase in Ansprechen auf ein Anfangsbefehlstupel, das die Adresse des zweitrangigen Datenspeichers identifiziert, erfolgt.
  18. Speichercontroller nach Anspruch 17, wobei das aktualisierte Befehlstupel die spezifizierte physikalische Adresse und ein Bit zum Initiieren des Beginns der zweiten Phase angibt.
  19. Speichercontroller nach Anspruch 13, der ferner das Addieren eines Basis-Offsets zu der bestimmten physikalischen Adresse in der Weise, dass das Kopieren der zweiten Phase durch den einen oder die mehreren Prozessoren an die spezifische Adresse erfolgt, durch den einen oder die mehreren Prozessoren umfasst.
DE202017103915.3U 2016-07-14 2017-06-30 Zweiphasige Befehlspuffer zum Überlappen von IOMMU-Abbildung und Lesevorgängen zweitrangiger Datenspeicher Active DE202017103915U1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662362353P 2016-07-14 2016-07-14
US62/362,353 2016-07-14
US15/267,404 2016-09-16
US15/267,404 US10296256B2 (en) 2016-07-14 2016-09-16 Two stage command buffers to overlap IOMMU map and second tier memory reads

Publications (1)

Publication Number Publication Date
DE202017103915U1 true DE202017103915U1 (de) 2017-10-23

Family

ID=59269889

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202017103915.3U Active DE202017103915U1 (de) 2016-07-14 2017-06-30 Zweiphasige Befehlspuffer zum Überlappen von IOMMU-Abbildung und Lesevorgängen zweitrangiger Datenspeicher

Country Status (4)

Country Link
US (2) US10296256B2 (de)
EP (1) EP3270293B1 (de)
DE (1) DE202017103915U1 (de)
TW (1) TWI640864B (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10613772B2 (en) * 2017-03-16 2020-04-07 Qualcomm Incorporated Methods and apparatuses for copying a data page in an unmanaged flash memory device
US11182302B2 (en) 2019-06-06 2021-11-23 Macronix International Co., Ltd. Memory device, electronic device, and associated read method
US20210042255A1 (en) * 2019-08-09 2021-02-11 Sony Interactive Entertainment LLC Methods for Using High-Speed Data Communication Fabric to Enable Cross-System Command Buffer Writing for Data Retrieval in Cloud Gaming
US11036434B2 (en) * 2019-08-22 2021-06-15 Micron Technology, Inc. Hierarchical memory systems

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004139503A (ja) 2002-10-21 2004-05-13 Matsushita Electric Ind Co Ltd 記憶装置及びその制御方法
US7130229B2 (en) 2002-11-08 2006-10-31 Intel Corporation Interleaved mirrored memory systems
KR100562906B1 (ko) 2003-10-08 2006-03-21 삼성전자주식회사 시리얼 플래시 메모리에서의 xip를 위한 우선순위기반의 플래시 메모리 제어 장치 및 이를 이용한 메모리관리 방법, 이에 따른 플래시 메모리 칩
US7509471B2 (en) 2005-10-27 2009-03-24 Sandisk Corporation Methods for adaptively handling data writes in non-volatile memories
US7849287B2 (en) 2006-11-13 2010-12-07 Advanced Micro Devices, Inc. Efficiently controlling special memory mapped system accesses
US20100017556A1 (en) 2008-07-19 2010-01-21 Nanostar Corporationm U.S.A. Non-volatile memory storage system with two-stage controller architecture
US7818525B1 (en) 2009-08-12 2010-10-19 Texas Memory Systems, Inc. Efficient reduction of read disturb errors in NAND FLASH memory
US9355031B2 (en) 2011-04-21 2016-05-31 International Business Machines Corporation Techniques for mapping device addresses to physical memory addresses
US10198350B2 (en) 2011-07-28 2019-02-05 Netlist, Inc. Memory module having volatile and non-volatile memory subsystems and method of operation
US10380022B2 (en) 2011-07-28 2019-08-13 Netlist, Inc. Hybrid memory module and system and method of operating the same
US9569243B2 (en) 2014-12-05 2017-02-14 International Business Machines Corporation Offloading and parallelizing translation table operations

Also Published As

Publication number Publication date
TWI640864B (zh) 2018-11-11
TW201802684A (zh) 2018-01-16
US10866755B2 (en) 2020-12-15
US20180018123A1 (en) 2018-01-18
US10296256B2 (en) 2019-05-21
EP3270293A1 (de) 2018-01-17
EP3270293B1 (de) 2020-10-21
US20190227729A1 (en) 2019-07-25

Similar Documents

Publication Publication Date Title
DE112011106078B4 (de) Verfahren, Vorrichtung und System zur Implementierung eines mehrstufigen Arbeitsspeichers mit Direktzugriff
DE60313323T2 (de) Dram, der zugriffe verschiedener burst-länge unterstützt, ohne die burst-längeneinstellung im modusregister zu verändern
DE112014006118B4 (de) Spekulatives Vorab-Holen von in einem Flash-Speicher gespeicherten Daten
DE112014005521B4 (de) Speichermodul und Verfahren zum Verwalten des Abbildens logischer Adressen auf physikalische Adressen
DE102013016993B4 (de) Embedded Multimedia Card (eMMC), einen Host steuernde eMMC und Verfahren zum Betreiben eines eMMC-Systems
DE69633166T2 (de) Integrierter schaltkreis mit mehreren funktionen und gemeinsamer verwendung mehrerer interner signalbusse zur verteilung der steuerung des buszugriffes und der arbitration
DE202017103915U1 (de) Zweiphasige Befehlspuffer zum Überlappen von IOMMU-Abbildung und Lesevorgängen zweitrangiger Datenspeicher
DE202013012484U1 (de) Verwendung einer logisch-zu-physisch-Karte für direkte Benutzerraumkommunikation mit einer Datenspeichervorrichtung
DE102013205886A1 (de) Dynamische Bankmodus-Adressierung für Speicherzugriff
DE102018113447A1 (de) Speichervorrichtung zum Koppeln mit einem Host und Verfahren zum Betreiben des Hosts und der Speichervorrichtung
DE112008001679T5 (de) Cache-Speicher mit konfigurierbarer Assoziativität
DE102013208423A1 (de) Virtuelle Speicherstruktur für Coprozessoren, die Speicherallokationsbegrenzungen haben
DE202010017667U1 (de) Datenspeichervorrichtung mit Flash-Speicherchips
DE102010035603A1 (de) Bereitstellen von Hardwareunterstützung für gemeinsam benutzten virtuellen Speicher zwischen physischem Lokal- und Fernspeicher
DE102006029287A1 (de) DRAM-Chipbaustein kommunizierend mit Flash-Speicherchip und einen solchen Baustein umfassender Mehrchip-Verbund
DE112010003762B4 (de) Flash-Speicher-Steuereinheit
DE102018209205A1 (de) Datenspeicher mit intelligentem Speicher oder Ladeverfahren und -vorrichtung
DE102018123669A1 (de) Host-Computer-Anordnung, Remote-Server-Anordnung, Speicherungssystem und Verfahren davon
DE102019106126A1 (de) Massenspeicherungsvorrichtung mit vom Host eingeleiteter Pufferausräumung
DE102021115626A1 (de) Datenaggregation in zns-laufwerk
DE112012004926B4 (de) Gemeinsame Speichernutzung durch Prozessoren
DE112020000183T5 (de) Speicherungsklassenspeicherzugriff
DE112017003330T5 (de) Techniken zum Formatieren einer persistenten Speicherdatei
DE112017001118T5 (de) Verfahren und Vorrichtung zum Bereitstellen eines zusammenhängend adressierbaren Speicherbereichs durch Neuabbildung eines Adressraums
DE10393803T5 (de) Verfahren und Vorrichtung zum Bestimmen einer Seitenverwaltungsimplementierung bei dynamischem Speicher mit wahlfreiem Zugriff

Legal Events

Date Code Title Description
R207 Utility model specification
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R150 Utility model maintained after payment of first maintenance fee after three years
R151 Utility model maintained after payment of second maintenance fee after six years