DE112017001118T5 - Verfahren und Vorrichtung zum Bereitstellen eines zusammenhängend adressierbaren Speicherbereichs durch Neuabbildung eines Adressraums - Google Patents

Verfahren und Vorrichtung zum Bereitstellen eines zusammenhängend adressierbaren Speicherbereichs durch Neuabbildung eines Adressraums Download PDF

Info

Publication number
DE112017001118T5
DE112017001118T5 DE112017001118.3T DE112017001118T DE112017001118T5 DE 112017001118 T5 DE112017001118 T5 DE 112017001118T5 DE 112017001118 T DE112017001118 T DE 112017001118T DE 112017001118 T5 DE112017001118 T5 DE 112017001118T5
Authority
DE
Germany
Prior art keywords
memory
address space
data area
externally addressable
data
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.)
Pending
Application number
DE112017001118.3T
Other languages
English (en)
Inventor
Stanislaw Mosiolek
Tobiasz Domagala
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.)
SK Hynix NAND Product Solutions Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE112017001118T5 publication Critical patent/DE112017001118T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/1009Address translation using page tables, e.g. page table structures
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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/10Providing a specific technical effect
    • G06F2212/1028Power efficiency
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

In einer Ausführungsform umfasst eine Vorrichtung eine Speichervorrichtungsteuerung zum Empfangen eines Befehls, der eine Identifikation eines Bereichs von in einem Speicher gespeicherten Daten und eine Anforderung zur Änderung eines Ortes des Datenbereichs umfasst. Die Speichervorrichtung soll ferner die Modifikation zumindest eines Eintrags aus einer Mehrzahl von Einträgen anfordern, wobei die Mehrzahl von Einträgen einen extern adressierbaren Adressraum des Speichers auf einen physikalischen Adressraum des Speichers abbilden soll, wobei die Modifikation des zumindest einen Eintrags eine Abbildung des Datenbereichs zwischen dem extern adressierbaren Adressraum und dem physikalischen Adressraum ändern soll, ohne den Datenbereich innerhalb des Speichers zu bewegen.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung bezieht sich im Allgemeinen auf das Gebiet der Computerentwicklung und insbesondere auf das Bereitstellen eines zusammenhängend adressierbaren Speicherbereichs durch Neuabbildung eines Adressraums.
  • Hintergrund
  • Ein Computersystem kann eine oder mehrere zentrale Verarbeitungseinheiten (CPUs) einschließen, die mit einer oder mehreren Speichervorrichtungen gekoppelt sind. Eine CPU kann einen Prozessor zum Ausführen eines Betriebssystems einschließen, das mit der CPU gekoppelte Speichervorrichtungen verwendet. Das Betriebssystem kann verschiedene Operationen in Bezug auf die Speichervorrichtungen ausführen, wie das Zuweisen von Speicherbereichen der Speichervorrichtungen, das Lesen aus den Speichervorrichtungen und das Schreiben in die Speichervorrichtungen.
  • Figurenliste
    • 1 zeigt ein Blockdiagramm von Komponenten eines Computersystems gemäß einigen Ausführungsformen.
    • 2 zeigt einen beispielhaften Ablauf zum Bereitstellen eines zusammenhängend adressierbaren Speicherbereichs ohne das Verlagern von Daten gemäß einigen Ausführungsformen.
    • 3 zeigt einen beispielhaften Zustand einer Speichervorrichtung von dem Verarbeiten eines Befehls zum Ändern des Orts eines Datenbereichs gemäß einigen Ausführungsformen.
    • 4 zeigt einen beispielhaften Zustand einer Speichervorrichtung, nachdem ein Befehl zum Ändern des Orts eines Datenbereichs verarbeitet wurde, gemäß einigen Ausführungsformen.
    • 5 zeigt einen beispielhaften Ablauf zum Ausgeben eines Befehls zum Ändern des Orts eines Datenbereichs gemäß einigen Ausführungsformen.
    • 6 zeigt einen beispielhaften Ablauf zum Verarbeiten eines Befehls zum Ändern des Orts eines Datenbereichs gemäß einigen Ausführungsformen.
  • Gleiche Bezugszeichen und Bezeichnungen in den verschiedenen Zeichnungen verweisen auf gleiche Bauteile.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Wenngleich die Zeichnungen bestimmte Computersysteme darstellen, sind die Konzepte verschiedener Ausführungsformen auf jegliche geeignete integrierte Schaltungen und sonstige Logikvorrichtungen anwendbar. Beispiele für Vorrichtungen, in denen die Lehren der vorliegenden Offenbarung verwendbar sind, schließen Desktop-Computersysteme, Server-Computersysteme, Speichersysteme, tragbare Vorrichtungen, Tablets, sonstige dünne Notebooks, Ein-Chip-System (System On a Chip, SoC)-Vorrichtungen und eingebettete Anwendungen ein. Manche Beispiele für tragbare Vorrichtungen schließen Mobiltelefone, Internetprotokollvorrichtungen, Digitalkameras, Persönliche Digitale Assistenten (Personal Digital Assistants, PDAs) und tragbare PCs ein. Eingebettete Anwendungen können einen Microcontroller, einen digitalen Signalprozessor (Digital Signal Processor, DSP), ein Ein-Chip-System, Netzwerkcomputer (NetPC), Set-Top Boxen, Network-Hubs, Wide-Area-Network (WAN)-Switches oder jegliches andere System, das die nachfolgend gelehrten Funktionen und Operationen ausführen kann, einschließen.
  • 1 zeigt ein Blockdiagramm von Komponenten eines Computersystems 100 gemäß einigen Ausführungsformen. Das System 100 schließt eine zentrale Verarbeitungseinheit (Central Processing Unit, CPU) 102 ein, die mit einer externen Eingabe/Ausgabe (Input/Output, I/O)-Steuerung 104 und einer Mehrzahl von Speichervorrichtungen 106 gekoppelt ist. Während des Betriebs können Daten zwischen den Speichervorrichtungen 106 und der CPU 102 übertragen werden. In verschiedenen Ausführungsformen können bestimmte Datenoperationen, an denen eine Speichervorrichtung 106 beteiligt ist, durch ein Betriebssystem oder sonstige durch den Prozessor 108 ausgeführte Software verwaltet werden.
  • Eine Speichervorrichtung 106 kann dem Betriebssystem einen extern adressierbaren Adressraum ihres Speichers offenlegen. Das Betriebssystem verwendet diesen Adressraum zum Ausführen von Speicheroperationen (z. B. Lese- und Schreibvorgänge) mit der Speichervorrichtung. Beispielsweise kann das Betriebssystem beim Identifizieren eines Datenbereichs in Verbindung mit einem an die Speichervorrichtung 106 zu sendenden Befehl den Datenbereich durch zumindest eine Adresse (z. B. die Startadresse und/oder Endadresse) des Datenbereichs im extern adressierbaren Adressraum referenzieren. Eine Speichervorrichtung 106 weist zudem einen physikalischen Adressraum auf. In verschiedenen Ausführungsformen wird der physikalische Adressraum dem Betriebssystem nicht offengelegt. Die physikalische Adressraum schließt die Adressen ein, die direkt auf den Speicher angewandt werden (z. B. durch Manipulieren von Spannungen von Signalen, die dem Speicher bereitgestellt werden, um die Adressen abzugleichen), um Daten aus dem Speicher zu lesen oder in den Speicher zu schreiben. In verschiedenen Ausführungsformen werden, um das Interagieren des Betriebssystems mit dem Speicher zu ermöglichen, die Adressen im extern adressierbaren Adressraum in Adressen im physikalischen Adressraum innerhalb der Speichervorrichtung 106 übersetzt.
  • Im Laufe der Zeit kann, wenn mehrere Speicheroperationen an der Speichervorrichtung ausgeführt werden, der Speicher der Speichervorrichtung fragmentiert werden. Eine Fragmentierung des Speichers führt zu einer Reduzierung des größten zusammenhängend adressierbaren Speicherbereichs im extern adressierbaren Adressraum.
  • In verschiedenen Ausführungsformen kann das Betriebssystem eine Anforderung zur Zuweisung eines zusammenhängend adressierbaren Speicherbereichs, der größer als der größte verfügbare zusammenhängend adressierbare Speicherbereich im extern adressierbaren Adressraum ist, empfangen. In solchen Fällen kann das Betriebssystem dazu in der Lage sein, die Erstellung eines zusammenhängend adressierbaren Speicherbereichs für die Anforderung durch Ausgeben einer Reihe von Lese- und Schreibbefehlen an die Speichervorrichtung 106 zum Bewegen von Daten aus dem gewünschten Bereich heraus zu einem anderen Bereich im extern adressierbaren Adressraum zu verwalten. Solche Befehle würden zur physikalischen Bewegung der Daten innerhalb des Speichers führen. Wenngleich es dieses Verfahren dem Betriebssystem ermöglichen kann, einen zusammenhängend adressierbaren Speicherbereich im extern adressierbaren Adressraum freizugeben, kann die physikalische Bewegung der Daten eine unerwünscht lange Zeit in Anspruch nehmen, insbesondere dann, wenn eine große Datenmenge bewegt werden muss, um den angeforderten zusammenhängend adressierbaren Speicherbereich zu erhalten.
  • Verschiedene Ausführungsformen der vorliegenden Offenbarung ermöglichen es, die Abbildung zwischen dem extern adressierbaren Adressraum einer Speichervorrichtung 106 und dem physikalische Speicherraum der Speichervorrichtung zu modifizieren, um die Größe des größten zusammenhängend adressierbaren Speicherbereichs des extern adressierbaren Adressraums zu erhöhen, ohne die im Speicher der Speichervorrichtung gespeicherten Daten ohne physikalisch zu bewegen. Verschiedene solcher Ausführungsformen können technische Vorteile bieten, einschließlich beispielsweise einer Reduzierung der zum Freigeben eines angeforderten zusammenhängend adressierbaren Speicherbereichs erforderlichen Zeit, Kommunikationsbandbreite und Energie.
  • Die CPU 102 umfasst einen Prozessor 108, wie etwa einen Mikroprozessor, einen eingebetteten Prozessor, einen digitalen Signalprozessor (Digital Signal Processor, DSP), einen Netzwerkprozessor, einen tragbaren Prozessor, einen Anwendungsprozessor, einen Co-Prozessor, ein Ein-Chip-System (System on a Chip, SoC) oder eine andere Vorrichtung zum Ausführen von Code (d. h. Softwarebefehlen). Der Prozessor 108 in der dargestellten Ausführungsform schließt zwei Verarbeitungselemente (Kerne 114A und 114B in der dargestellten Ausführungsform), die asymmetrische Verarbeitungselemente oder symmetrische Verarbeitungselemente einschließen können, ein. Ein Prozessor kann jedoch jegliche Anzahl an Verarbeitungselementen, die symmetrisch oder asymmetrisch sein können, einschließen.
  • In einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder Logik zum Unterstützen eines Software-Threads. Beispiele für Hardware-Verarbeitungselemente beinhalten: eine Thread-Einheit, einen Thread-Slot, einen Thread, eine Verarbeitungseinheit, einen Kontext, eine Kontexteinheit, einen Logikprozessor, einen Hardware-Thread, einen Kern und/oder jegliches andere Element, das dazu geeignet ist, einen Zustand für einen Prozessor, wie etwa einen Ausführungszustand oder einen Architekturzustand, zu halten. Anders ausgedrückt, bezieht sich ein Verarbeitungselement in einer Ausführungsform auf jegliche Hardware, die dazu geeignet ist, mit Code, wie etwa einem Software-Thread, einem Betriebssystem, einer Anwendung oder sonstigem Code, unabhängig verbunden zu sein. Ein physikalischer Prozessor (oder Prozessorsockel) bezieht sich üblicherweise auf eine integrierte Schaltung, die gegebenenfalls jegliche Anzahl an sonstigen Verarbeitungselementen, wie etwa Kernen oder Hardware-Threads, beinhaltet.
  • Ein Kern 114 kann sich auf Logik beziehen, die sich auf einer integrierten Schaltung befindet und dazu geeignet ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei jeder unabhängig aufrechterhaltene Architekturzustand mit zumindest einigen dedizierten Ausführungsressourcen verbunden ist. Ein Hardware-Thread kann sich auf jegliche Logik beziehen, die sich auf einer integrierten Schaltung befindet und dazu geeignet ist, einen unabhängigen Architekturzustand aufrechtzuerhalten, wobei die unabhängig aufrechterhaltenen Architekturzustände den Zugang zu Ausführungsressourcen gemeinsam nutzen. Wie ersichtlich ist, gibt es an der Grenze zwischen der Nomenklatur eines Hardware-Threads und eines Kerns Überschneidungen, wenn bestimmte Ressourcen gemeinsam genutzt werden und andere für einen Architekturzustand dediziert sind. Dennoch werden ein Kern und ein Hardware-Thread von einem Betriebssystem häufig als einzelne Logikprozessoren betrachtet, wobei das Betriebssystem dazu in der Lage ist, Vorgänge auf jedem Logikprozessor einzeln zu planen.
  • In verschiedenen Ausführungsformen können die Kerne auch eine oder mehrere arithmetische Logikeinheiten (Arithmetic Logic Units, ALUs), Gleitkommaeinheiten (Floating Point Units, FPUs), Caches, Befehlspipelines, Interruptbehandlungshardware, Register oder sonstige Hardware beinhalten, um die Operationen der Verarbeitungselemente zu ermöglichen.
  • Die I/O-Steuerung 110 ist eine integrierte I/O-Steuerung, die Logik zum Kommunizieren von Daten zwischen der CPU 102 und I/O-Vorrichtungen einschließt, die sich auf jegliche geeignete Vorrichtungen beziehen können, die dazu geeignet sind, Daten an ein elektronisches System, wie etwa die CPU 102, zu übertragen und/oder von einem solchen zu empfangen. Beispielsweise kann eine I/O-Vorrichtung eine Audio/Video (A/V)-Vorrichtungssteuerung, wie etwa eine Grafikbeschleuniger- oder Audiosteuerung; eine Datenspeichervorrichtungssteuerung, wie etwa eine Flash-Speichervorrichtung, eine magnetische- oder optische Speicherplattensteuerung; ein drahtloser Transceiver; ein Netzwerkprozessor; eine Netzwerkschnittstellensteuerung oder eine Steuerung für andere Eingabevorrichtungen, wie etwa einen Monitor, einen Drucker, eine Maus, eine Tastatur oder einen Scanner; oder eine sonstige geeignete Vorrichtung sein. In einer bestimmten Ausführungsform kann eine I/O-Vorrichtung eine Speichervorrichtung 106 umfassen, die durch die I/O-Steuerung 110 mit der CPU 102 gekoppelt ist.
  • Eine I/O-Vorrichtung kann mit der I/O-Steuerung 110 der CPU 102 anhand jeglichen geeigneten Signalisierungsprotokolls, wie etwa Peripheral Component Interconnect (PCI), PCI Express (PCIe), Universal Serial Bus (USB), Serial Attached Small Computer System Interconnect (SAS), Serial Advanced Technology Attachment (SATA), Fibre Channel (FC), IEEE 802.3, IEEE 802.11, oder eines anderen derzeitigen oder künftigen Signalisierungsprotokolls kommunizieren. In verschiedenen Ausführungsformen können mit der I/O-Steuerung gekoppelte I/O-Vorrichtungen chipextern sein (d. h. sich nicht auf demselben Chip wie die CPU 102 befinden) oder auf demselben Chip wie die CPU 102 integriert sein.
  • Die CPU-Speichersteuerung 112 ist eine integrierte Speichersteuerung, die Logik zum Steuern des Datenflusses zu und von den Speichervorrichtungen 106 einschließt. Die CPU-Speichersteuerung 112 kann Logik einschließen, die dazu betreibbar ist, aus einer Speichervorrichtung 106 zu lesen, in eine Speichervorrichtung 106 zu schreiben oder andere Operationen von einer Speichervorrichtung 106 (wie etwa einen Speicherbereichsortswechsel, wie hier beschrieben) anzufordern. In verschiedenen Ausführungsformen kann die CPU-Speichersteuerung 112 von den Kernen 114 und/oder der I/O-Steuerung 110 Schreibanforderungen empfangen und in diesen Anforderungen spezifizierte Daten einer Speichervorrichtung 106 zur Speicherung darin bereitstellen. Die CPU-Speichersteuerung 112 kann zudem Daten aus einer Speichervorrichtung 106 lesen und die gelesenen Daten der I/O-Steuerung 110 oder einem Kern 114 bereitstellen. Während des Betriebs kann die CPU-Speichersteuerung 112 Befehle ausgeben, die eine oder mehrere Adressen (z. B. Zeilen- oder Spaltenadressen) der Speichervorrichtung 106 beinhalten, um Daten aus dem Speicher zu lesen oder Daten in den Speicher zu schreiben (oder um andere Operationen auszuführen). Die durch die CPU-Speichersteuerung 112 in solchen Befehlen verwendeten Adressen sind Adressen im extern adressierbaren Adressraum der Speichervorrichtung 106. In einigen Ausführungsformen kann die Speichersteuerung 112 in demselben Die oder derselben integrierten Schaltung wie die CPU 102 implementiert sein, wohingegen in anderen Ausführungsformen die Speichersteuerung 112 in einem anderen Die oder einer anderen integrierten Schaltung als der der CPU 102 implementiert sein kann.
  • Die CPU 102 kann zudem durch die externe I/O-Steuerung 104 mit einer oder mehreren anderen I/O-Vorrichtungen gekoppelt sein. In einer bestimmten Ausführungsform kann die externe I/O-Steuerung 104 eine Speichervorrichtung 106 mit der CPU 102 koppeln. Die externe I/O-Steuerung 104 kann Logik zum Verwalten des Datenflusses zwischen einer oder mehreren CPUs 102 und I/O-Vorrichtungen einschließen. In bestimmten Ausführungsformen befindet sich die externe I/O-Steuerung 104 zusammen mit der CPU 102 auf einer Hauptplatine. Die externe I/O-Steuerung 104 kann anhand von Punkt-zu-Punkt- oder anderen Schnittstellen Informationen mit Komponenten der CPU 102 austauschen.
  • Eine Speichervorrichtung 106 kann jegliche geeignete Daten, wie etwa durch den Prozessor 108 verwendete Daten, speichern, um Funktionalität des Computersystems 100 bereitzustellen. Beispielsweise können in der Speichervorrichtung 106 Daten gespeichert sein, die mit Programmen, die durch die Kerne 114 ausgeführt werden, oder mit Dateien, auf die durch die Kerne 114 zugegriffen wird, in Verbindung stehen. Somit kann eine Speichervorrichtung 106 einen Systemspeicher einschließen, der Daten und/oder Sequenzen von Anweisungen, die durch die Kerne 114 verwendet oder ausgeführt werden, speichert. In verschiedenen Ausführungsformen kann eine Speichervorrichtung 106 persistente Daten (z. B. Dateien eines Benutzers) speichern, die auch gespeichert bleiben, nachdem die Speichervorrichtung 106 von der Energieversorgung getrennt wurde. Eine Speichervorrichtung 106 für die CPU 102 bestimmt sein oder mit anderen Vorrichtungen (z. B. einer anderen CPU oder anderen Vorrichtung) des Computersystems 100 geteilt werden.
  • In verschiedenen Ausführungsformen kann eine Speichervorrichtung 106 verschiedene Speicherbereiche einschließen, die sich jeweils an einem Satz zusammenhängender Speicheradressen befinden. Eine Adresse kann mit einer anderen Adresse zusammenhängend sein, wenn sie auf den nächsten adressierbaren Speicherabschnitt verweist, wobei ein Speicherabschnitt jegliche geeignete Größe sein kann, wie etwa eine einzelne Zelle, ein Byte, ein Wort, eine Seite, ein Block usw. Ein Speicherbereich, der sich an einem Satz zusammenhängender Speicheradressen befindet, kann als ein zusammenhängend adressierbarer Speicherbereich bezeichnet werden. Ist ein zusammenhängend adressierbarer Speicherbereich einer bestimmten Entität zugeordnet, so ist jeder Speicherabschnitt, auf den durch die Adressen innerhalb des zusammenhängenden Satzes von Adressen (von der Startadresse bis zur Endadresse) verwiesen wird, dieser Entität zugeordnet. Ein zusammenhängend adressierbarer Speicherbereich kann in Reaktion auf eine Anforderung z. B. eines Namensraums (z. B. einer einem Laufwerksbuchstaben zugewiesenen Speicherpartition), einer Blockübersetzungstabellenarena, eines Speicherraums für ein auf einem Betriebssystem laufendes Programm oder einer anderen Speicherpartition zugeordnet werden.
  • In der dargestellten Ausführungsform schließt die Speichervorrichtung 106A einen Speicher 116 ein, der eine Mehrzahl von Speichermodulen 122A - D (eine Speichervorrichtung kann jegliche geeignete Anzahl an Speichermodulen 122 einschließen), die Speichervorrichtungsteuerung 118 und die Adressübersetzungsmaschine 120 umfasst. Ein Speichermodul 122 schließt eine Mehrzahl von Speicherzellen ein, die jeweils betreibbar sind, um ein oder mehrere Bits zu speichern. Die Zellen eines Speichermoduls 122 können in jeglicher geeigneten Weise angeordnet sein, wie etwa in Spalten und Zeilen oder in dreidimensionalen Strukturen. Die Zellen können logisch in Banken, Blöcke, Seiten (wobei eine Seite ein Untersatz eines Blocks ist), Rahmen, Bytes oder andere geeignete Gruppen gruppiert werden.
  • Ein Speichermodul 122 kann nichtflüchtigen Speicher und/oder flüchtigen Speicher einschließen. Nichtflüchtiger Speicher ist ein Speichermedium, das keine Energie zum Aufrechterhalten des Zustands von durch das Medium gespeicherten Daten benötigt. Beispiele für nichtflüchtigen Speicher können unter anderem jeglichen oder eine Kombination der folgenden einschließen: Festkörperspeicher (wie etwa planaren oder dreidimensionalen NAND-Flash-Speicher oder NOR-Flash-Speicher), 3D-XPoint-Speicher, Speichervorrichtungen, die Chalkogenid-Phasenänderungsmaterial (z. B. Chalkogenidglas) verwenden, byteadressierbare nichtflüchtige Speichervorrichtungen, ferroelektrischen Speicher, Siliciumoxid-Nitridoxid-Silicium (SONOS)-Speicher, Polymerspeicher (z. B. ferroelektrischen Polymerspeicher), ferroelektrischen Transistorspeicher mit wahlfreiem Zugriff (Ferroelectric Transistor Random Access Memory, Fe-TRAM), Ovonic-Speicher, Nanodrahtspeicher, elektrisch löschbaren programmierbaren Nurlesespeicher (Electrically Erasable Programmable Read-Only Memory, EEPROM), sonstige verschiedene Arten von nichtflüchtigen Speichern mit wahlfreiem Zugriff (Random Access Memories, RAMs) und magnetischen Speicher. In einigen Ausführungsformen kann 3D-XPoint-Speicher eine transistorlose stapelbare Kreuzungspunkt (Cross-Point)-Architektur umfassen, wobei Speicherzellen am Schnittpunkt von Wortleitungen und Bitleitungen sitzen und einzeln adressierbar sind und wobei Bitspeicherung auf einer Änderung des Bahnwiderstands basiert. In bestimmten Ausführungsformen kann ein Speichermodul 122 mit nichtflüchtigem Speicher einem oder mehreren durch das Joint Electron Device Engineering Council (JEDEC) erlassenen Standards, wie etwa JESD218, JESD219, JESD220-1, JESD223B, JESD223-1 oder einem anderen geeigneten Standard entsprechen (die hier zitierten JEDEC-Standards sind auf www.jedec.org abrufbar).
  • Flüchtiger Speicher ist ein Speichermedium, das Energie zum Aufrechterhalten des Zustands von durch das Medium gespeicherten Daten benötigt. Beispiele für flüchtigen Speicher können verschiedene Typen von Speicher mit wahlfreiem Zugriff (Random Access Memory, RAM), wie etwa dynamischen Speicher mit wahlfreiem Zugriff (Dynamic Random Access Memory, DRAM) oder statischen Speicher mit wahlfreiem Zugriff (Static Random Access Memory, SRAM), einschließen. Ein bestimmter Typ von DRAM, der in einem Speichermodul 122 verwendbar ist, ist synchroner dynamischer Speicher mit wahlfreiem Zugriff (Synchronous Dynamic Random Access Memory, SDRAM). In bestimmten Ausführungsformen entspricht DRAM der Speichermodule 122 einem durch das JEDEC erlassenen Standard, wie etwa JESD79F für SDRAM mit doppelter Datenrate (Double Data Rate, DDR), JESD79-2F für DDR2 SDRAM, JESD79-3F für DDR3 SDRAM, oder JESD79-4A für DDR4 SDRAM (diese Standards sind auf www.jedec.org abrufbar). Diese Standards (und ähnliche Standards) können als DDR-basierte Standards bezeichnet werden, und Kommunikationsschnittstellen der Speichervorrichtungen 106, die diese Standards implementieren, können als DDR-basierte Schnittstellen bezeichnet werden.
  • Die Speichervorrichtung 106 kann jeglichen geeigneten Formfaktor aufweisen. In einer bestimmten Ausführungsform weist die Speichervorrichtung 106 einen Formfaktor mit doppelreihigem Speichermodul (Dual Inline Memory Module, DIMM) auf. Ein DIMM kann mehrere Speichermodule 122 einschließen, die auf einer Leiterplatte montiert sind, die elektrische Kontakte (d. h. Pins) auf jeder Seite der Leiterplatte einschließt. In verschiedenen Beispielen kann die Speichervorrichtung 106 jegliche geeignete Anzahl an Pins, wie etwa 288, 260, 244, 240, 204, 200 oder eine andere geeignete Anzahl an Pins, aufweisen. In verschiedenen Ausführungsformen kann die Speichervorrichtung 106 in einen DIMM Steckplatz auf einer Leiterplatte (z. B. Hauptplatine) eingesetzt sein, die zudem einen Sockel für die CPU 102 umfasst. In einer bestimmten Ausführungsform ist die Speichervorrichtung 106 ein nichtflüchtiger DIMM (Non Volatile DIMM, NV-DIMM), bei dem die Speichermodule 122 nichtflüchtigen Speicher einschließen und die Vorrichtung einen DIMM-Formfaktor aufweist.
  • In einer bestimmten Ausführungsform umfasst die Speichervorrichtung 106 nichtflüchtigen Speicher (z. B. Flash-Speicher, 3D-XPoint-Speicher) und schließt eine mit einem DDR-Standard kompatible Kommunikationsschnittstelle, wie etwa jegliche der vorstehend aufgeführten, ein. Dementsprechend kann in einem Beispiel die CPU 102 mit solch einer Speichervorrichtung so kommunizieren, als würde die Speichervorrichtung DDR4-kompatible SDRAM-Module einschließen. Das heißt, dass die CPU-Speichersteuerung 112 dasselbe Format zum Kommunizieren von Befehlen und Daten mit der Speichervorrichtung verwenden würde, wie sie es mit einer SDRAM umfassenden DDR4-kompatiblen Speichervorrichtung würde. In einer bestimmten Ausführungsform kann die Speichervorrichtung 106 in einen DIMM-Steckplatz eingesetzt sein, der eine DDR-Schnittstelle implementiert.
  • Die Speichervorrichtungen 106 können jegliche geeignete Art von Speicher umfassen und sind nicht auf eine bestimmte Speichergeschwindigkeit oder -technologie in verschiedenen Ausführungsformen beschränkt. Die Speichervorrichtungen 106 können jegliche Schnittstelle zum Kommunizieren mit der CPU-Speichersteuerung 112 oder der I/O-Steuerung 110 anhand jeglichen geeigneten Kommunikationsprotokolls, wie etwa eines DDR-basierten Protokolls, eines Peripheral-Component-Interconnect- (PCI-), PCI-Express- (PCIe-), Universal-Serial-Bus- (USB-), Serial-Attached-Small-Computer-System-Interconnect- (SAS-), SATA- (Serial Advanced Technology Attachment), Fibre-Channel- (FC-), System-Management-Bus- (SMBus-) oder eines anderen geeigneten Protokolls, einschließen. In bestimmten Ausführungsformen kann die Speichervorrichtung 106 mehrere Kommunikationsschnittstellen umfassen, die jede anhand eines separaten Protokolls mit der CPU-Speichersteuerung 112 und/oder der I/O-Steuerung 110 kommuniziert.
  • Die Speichervorrichtungsteuerung 118 kann Logik zum Empfangen von Anforderungen von der CPU 102 (z. B. von der Speichersteuerung 112 oder der I/O-Steuerung 110), zum Bewirken, dass die Anforderungen in Bezug auf den Speicher 116 ausgeführt werden, und zum Bereitstellen von Daten, die mit den Anforderungen an die CPU 102 in Verbindung stehen (z. B. von der Speichersteuerung 112 oder der I/O-Steuerung 110), einschließen. Die Steuerung 118 kann zudem betreibbar sein, um Fehler, die während des Speicherbetriebs auftreten, zu detektieren und/oder zu korrigieren. In einer Ausführungsform verfolgt die Steuerung 118 zudem die Häufigkeit, mit der bestimmte Zellen (oder logische Gruppierungen von Zellen) beschrieben wurden, um einen Verschleißausgleich auszuführen und/oder um zu detektieren, wann sich Zellen einer geschätzten Häufigkeit nähern, mit der sie zuverlässig beschrieben werden können. In verschiedenen Ausführungsformen kann die Steuerung 118 zudem verschiedene Eigenschaften der Speichervorrichtung 106, wie etwa die Temperatur oder die Spannung, überwachen und damit verbundene Statistiken an die CPU 102 melden. Die Steuerung 118 kann in demselben Die oder derselben Schaltung wie dem bzw. der oder denen des Speichers 116 implementiert sein.
  • In verschiedenen Ausführungsformen schließt die Speichervorrichtung 106 zudem eine Adressübersetzungsmaschine 120 ein. In verschiedenen Ausführungsformen kann die Adressübersetzungsmaschine 120 innerhalb der Speichervorrichtungsteuerung 118 eingeschlossen (z. B. auf demselben Chip wie die Speichervorrichtungsteuerung 118 integriert) sein oder von der Speichervorrichtungsteuerung 118 getrennt sein. Die Adressübersetzungsmaschine 120 schließt Logik zum Speichern und Aktualisieren einer Abbildung zwischen dem extern adressierbaren Adressraum und dem physikalischen Adressraum des Speichers 116 ein. Die Adressübersetzungsmaschine 120 umfasst eine Mehrzahl von Abbildungseinträgen, die jeder eine oder mehrere Adressen im extern adressierbaren Adressraum auf eine oder mehrere Adressen im physikalischen Adressraum abbilden. Die Adressübersetzungsmaschine 120 kann jegliche geeignete Speicherart zum Speichern der Abbildungseinträge und jegliche geeignete Logik zum Ändern von in den Abbildungseinträgen gespeicherten Werten (z. B. in Reaktion auf eine Anforderung von der Speichervorrichtungsteuerung 118) und zum Lesen von Werten aus den Abbildungseinträgen (z. B. zum Bereitstellen der Werte an die Speichervorrichtungsteuerung 118 zur Verwendung bei Speicheroperationen) einschließen. Die Abbildungseinträge werden später in Verbindung mit 3 und 4 ausführlicher beschrieben.
  • In verschiedenen Ausführungsformen wird die Adressübersetzungsmaschine 120 zudem verwendet, um die Verwendung schlechter Speicherzellen (oder einer logischen Gruppierung von Zellen) zu verhindern, indem nicht zugelassen wird, dass physikalische Adressen für die schlechten Zellen (bzw. logische Gruppierung von Zellen) auf den extern adressierbaren Adressraum abgebildet werden. In verschiedenen Ausführungsformen kann die Adressübersetzungsmaschine 120 (in Verbindung mit der Speichervorrichtungssteuerung 118) zudem einen Verschleißausgleich durch Verwaltung der Abbildungen der Adressübersetzungsmaschine 120 bereitstellen.
  • In einigen Ausführungsformen sind alle oder einige der Elemente des Systems 100 auf derselben Leiterplatte (z. B. einer Hauptplatine) resident (oder mit selbiger gekoppelt). In verschiedenen Ausführungsformen kann jegliche geeignete Partitionierung zwischen den Elementen existieren. Beispielsweise können sich die in der CPU 102 dargestellten Elemente auf einem einzelnen Die oder Paket befinden (d. h. chipintern sein), oder jegliche der Elemente der CPU 102 können chipextern sein.
  • Die Komponenten des Systems 100 können in jeglicher geeigneten Weise miteinander gekoppelt sein. Beispielsweise kann ein Bus jegliche der Komponenten miteinander koppeln. Ein Bus kann jegliche bekannte Verbindung, wie etwa einen Multi-Drop Bus, eine Mesh-Verbindung, eine Ring-Verbindung, eine Punkt-zu-Punkt-Verbindung, eine serielle Verbindung, einen parallelen Bus, einen kohärenten (z. B. Cache-kohärenten) Bus, eine geschichtete Protokollarchitektur, einen differentiellen Bus und einen Gunning-Transceiver-Logic (GTL)-Bus, einschließen. In verschiedenen Ausführungsformen schließt ein integriertes I/O-Untersystem Punkt-zu-Punkt-Multiplexlogik zwischen verschiedenen Komponenten des Systems 100, wie etwa den Kernen 114, einer oder mehreren CPU-Speichersteuerungen 112, der I/O-Steuerung 110, integrierten I/O-Vorrichtungen, Direktspeicherzugriffslogik (Direct Memory Access, DMA) (nicht gezeigt) usw., ein
  • Wenngleich nicht dargestellt, kann das System 100 einen Batterie- und/oder Energieversorgungsauslassverbinder und ein zugehöriges System zum Empfangen von Energie verwenden.
  • 2 zeigt einen beispielhaften Ablauf 200 zum Bereitstellen eines zusammenhängend adressierbaren Speicherbereichs ohne Verlagerung von Daten gemäß einigen Ausführungsformen. Der Ablauf 200 stellt beispielhafte Operationen dar, die durch ein Betriebssystem 202, die CPU-Speichersteuerung 112, die Speichervorrichtungsteuerung 118 und die Adressübersetzungsmaschine 120 ausgeführt werden können. Die im Ablauf gezeigten Elemente sind lediglich Beispiele, und in anderen Ausführungsformen können andere Elemente die dargestellten Operationen ausführen (z. B. kann die I/O-Steuerung 110 die Operationen der CPU-Speichersteuerung 112 ausführen).
  • Bei 204 identifiziert das Betriebssystem eine Anforderung eines zusammenhängend adressierbaren Speicherbereichs. Die Anforderung kann in jeglicher geeigneten Weise erzeugt werden. Beispielsweise kann die Anforderung von einer Benutzeranwendung, die durch das Betriebssystem ausgeführt wird, empfangen werden oder durch das Betriebssystem in Reaktion auf einen detektierten Bedarf (oder antizipierten künftigen Bedarf) nach dem zusammenhängend adressierbaren Speicherbereich erzeugt werden (z. B. kann ein Benutzer über das Betriebssystem eine Partition von Daten anfordern). In verschiedenen Ausführungsformen kann ein neuer Datenbereich oder eine Vergrößerung der Größe eines existierenden Bereichs angefordert werden. Die Anforderung kann eine bestimmte Größe (z. B. eine Anzahl von Bytes) für den zusammenhängend adressierbaren Speicherbereich anzeigen. In einigen Ausführungsformen kann die Anforderung eine Adresse des extern adressierbaren Adressraums, an welcher der zusammenhängend adressierbare Speicherbereich starten und/oder enden soll, anzeigen (oder anderweitig Informationen einschließen, welche die Ableitung derselben ermöglichen) (z. B. wenn die Anforderung darin besteht, einen existierenden zusammenhängend adressierbaren Speicherbereich, der bereits einem Namensraum, einer Anwendung oder einem anderen Element zugeordnet ist, zu erweitern).
  • Bei 206 bestimmt das Betriebssystem, dass eine Defragmentierung des extern adressierbaren Adressraums verwendet wird, um den angeforderten zusammenhängend adressierbaren Speicherbereich zuzuordnen. Das heißt, dass das Betriebssystem bestimmen kann, dass der extern adressierbare Adressraum keinen zusammenhängend adressierbaren Speicherbereich, der ungenutzt und groß genug ist, um die Anforderung aufzunehmen, einschließt. Das Betriebssystem kann dann einen oder mehrere Bereiche des extern adressierbaren Adressraums auswählen, die innerhalb des extern adressierbaren Adressraums bewegt werden sollen, um einen zusammenhängend adressierbaren Speicherbereich für die Anforderung freizugeben.
  • Bei 208 erzeugt das Betriebssystem einen Ortswechselbefehl und sendet den Befehl an die CPU-Speichersteuerung 112. Ein Ortswechselbefehl kann sich auf einen an eine Speichervorrichtung 106 zu sendenden Befehl beziehen, der die Bewegung eines Bereichs (oder mehrerer Bereiche) des extern adressierbaren Adressraums zu einem anderen Bereich (oder mehreren anderen Bereichen) des extern adressierbaren Adressraums anfordert. In verschiedenen Ausführungsformen kann sich die Bewegung eines Bereichs innerhalb des extern adressierbaren Adressraums auf das Modifizieren eines Satzes einer oder mehrerer Adressen (im extern adressierbaren Adressraum), die durch das Betriebssystem verwendbar sind, um auf einen Datenbereich zuzugreifen, beziehen. Somit kann vor der Bewegung des Datenbereichs innerhalb des extern adressierbaren Adressraums ein erster Adresssatz durch das Betriebssystem verwendet werden, um auf den Datenbereich zuzugreifen, und nach der Bewegung wird ein zweiter Adresssatz (der sich vom ersten Adresssatz unterscheidet) durch das Betriebssystem verwendet, um auf denselben Datenbereich zuzugreifen. In verschiedenen Ausführungsformen kann das Betriebssystem agnostisch in Bezug darauf sein, ob ein Ortswechselbefehl dazu führt, dass der Datenbereich innerhalb des Speichers 116 physikalisch bewegt wird (was in einigen Ausführungsformen das Aufrechterhalten des Sourcebereichs zum eventuellen Überschreiben einschließen kann) oder ob die Speichervorrichtung 106 eine Neuabbildung eines Abschnitts des extern adressierbaren Adressraums auf den physikalischen Adressraum ausführt (ohne die im Speicher gespeicherten zugrundeliegenden Daten zu bewegen), um es dem Betriebssystem zu ermöglichen, einen anderen Adresssatz zum Referenzieren des Datenbereichs zu verwenden. Der Ortswechselbefehl kann jegliche geeignete Informationen, wie etwa eine Startadresse eines zu bewegenden Bereichs, eine Endadresse des zu bewegenden Bereichs, eine Größe eines neuabzubildenden Bereichs (die gleich der Größe des neuen Bereichs, zu dem der Bereich bewegt wird, ist), eine Startadresse des neuen Bereichs, zu dem der Bereich bewegt wird, eine Endadresse des neuen Bereichs, zu dem der Bereich bewegt wird, jeglichen sonstigen Identifikator, der die Ortsänderung eines Bereichs ermöglicht, oder jegliche geeignete Kombination derselben, einschließen.
  • In verschiedenen Ausführungsformen kann es sein, dass es dem Betriebssystem oder einem Benutzer desselben nicht bewusst ist, dass der Ortswechselbefehl eine Neuabbildung zwischen dem extern adressierbaren Adressraum und dem physikalischen Adressraum auslöst (z. B. kann das Betriebssystem bzw. ein Benutzer desselben den Eindruck haben, dass der im Ortswechselbefehl identifizierte Datenbereich physikalisch von einem Ort des Speichers 116 zu einem anderen Ort des Speichers 116 bewegt werden soll). In einer weiteren Ausführungsform kann es dem Betriebssystem bewusst sein, dass der Ortswechselbefehl eine Neuabbildung zwischen dem extern adressierbaren Adressraum und dem physikalischen Adressraum auslöst.
  • In verschiedenen Ausführungsformen kann der Ortswechselbefehl durch einen Softwaretreiber erzeugt werden (der Teil des Betriebssystems sein kann oder nicht), der dazu konfiguriert ist, einen von einem Abschnitt des Betriebssystems, das den Treiber aufruft, empfangenen generischen Befehl (z. B. einen Befehl, Daten zu bewegen) in einen oder mehrere mit der Speichervorrichtung 106 kompatible Befehle (z. B. einen Befehl, der die durch die Speichervorrichtung 106 erwarteten Parameter einschließt) zu übersetzen.
  • Bei 210 wird der Ortswechselbefehl von der CPU-Speichersteuerung 112 an die Speichervorrichtungsteuerung 118 gesendet. In einer Ausführungsform kann der Ortswechselbefehl über dieselbe Schnittstelle wie andere an die Speichervorrichtung 106 gesendete Befehle (z. B. lesen, schreiben, aktualisieren) gesendet werden. Beispielsweise kann der Befehlssatz einer DDR-basierten Schnittstelle um den Ortswechselbefehl erweitert werden. In einer weiteren Ausführungsform kann der Ortswechselbefehl über eine Schnittstelle (z. B SMBus) gesendet werden, die sich von der Schnittstelle (einer DDR-basierten Schnittstelle), die zum Senden der anderen Befehle verwendet wird, unterscheidet.
  • Nach dem Empfangen des Ortswechselbefehls bestimmt die Speichervorrichtungsteuerung 118, welche Abbildungseinträge der Adressübersetzungsmaschine vom Ortswechselbefehl betroffen sind, und bestimmt bei 212 zudem neue Abbildungswerte für die betroffenen Einträge (hier zusammenfassend als „Adressneuabbildungsinformationen“ bezeichnet). Bei 214 werden die Adressneuabbildungsinformationen an die Adressübersetzungsmaschine 120 gesendet, die bei 216 Änderungen an den Abbildungseinträgen vornimmt. Bei 218 stellt die Adressübersetzungsmaschine 120 eine Anzeige bereit, dass die Adressneuabbildung abgeschlossen ist (in anderen Ausführungsformen kann die Speichervorrichtungsteuerung 118 von einem erfolgreichen Abschluss der Operation ausgehen, nachdem ein vorbestimmter Zeitraum vergangen ist oder wenn nach einem vorbestimmten Zeitraum kein Fehler empfangen wurde). Bei 220 kann die Speichervorrichtungsteuerung der CPU-Speichersteuerung 112 eine Anzeige bereitstellen, dass der Ortswechselbefehl abgeschlossen ist (alternativ kann die CPU-Speichersteuerung 112 von einem erfolgreichen Abschluss des Befehls ausgehen, nachdem ein vorbestimmter Zeitraum vergangen ist oder wenn nach einem vorbestimmten Zeitraum kein Fehler empfangen wurde). Bei 222 kann die CPU-Speichersteuerung 112 dem Betriebssystem 202 eine Anzeige bereitstellen, dass der Ortswechselbefehl ausgeführt wurde (alternativ kann das Betriebssystem 202 von einem erfolgreichen Abschluss des Befehls ausgehen, nachdem ein vorbestimmter Zeitraum vergangen ist oder wenn nach einem vorbestimmten Zeitraum kein Fehler empfangen wurde).
  • Der in 2 beschriebene Ablauf stellt lediglich Operationen und Kommunikationen dar, die in bestimmten Ausführungsformen auftreten können. In anderen Ausführungsformen können zusätzliche Operationen ausgeführt oder zusätzliche Kommunikationen zwischen den Komponenten des Systems 100 gesendet werden. Verschiedene Ausführungsformen der vorliegenden Offenbarung ziehen jegliche geeignete Signalisierungsmechanismen zum Ausführen der hier beschriebenen Funktionen in Betracht. Einige der in 2 dargestellten Operationen können gegebenenfalls wiederholt, kombiniert, modifiziert oder ausgelassen werden. Zusätzlich können Operationen in jeglicher geeigneten Reihenfolge ausgeführt werden, ohne vom Schutzumfang bestimmter Ausführungsformen abzuweichen.
  • 3 zeigt einen beispielhaften Zustand einer Speichervorrichtung 106 vor dem Empfangen eines Ortswechselbefehls gemäß einigen Ausführungsformen. In der dargestellten Ausführungsform sind zu Erläuterungszwecken der extern adressierbare Adressraum 302 und der physikalische Adressraum 306 innerhalb der Speichervorrichtung 106 eingeschlossen, sie müssen jedoch nicht notwendigerweise einem physikalischen Konstrukt innerhalb der Speichervorrichtung 106 entsprechen (z. B. können diese Adressräume über andere Elemente der Speichervorrichtung, wie etwa den Speicher 116 und die Speichervorrichtungsteuerung 118, implementiert sein).
  • In der dargestellten Ausführungsform schließt die Speichervorrichtung 106 eine externe Schnittstelle 304 ein, die jegliche geeignete Speicherkommunikationsschnittstelle, wie etwa jegliche der vorstehend beschriebenen Kommunikationsschnittstellen, darstellen kann. Der extern adressierbare Adressraum 302 ist durch die externe Schnittstelle 304 gegenüber einer Vorrichtung (z. B. der CPU-Speichersteuerung 112 oder der I/O-Steuerung), die durch die externe Schnittstelle 304 mit der Speichervorrichtung 106 gekoppelt ist, offengelegt. Wie dargestellt, schließt der extern adressierbare Adressraum 302 zwei zugeordnete Speicherbereiche A1 und A2 ein. A1 reicht von Speicheradresse a (des extern adressierbaren Adressraums 302) zu Speicheradresse b, und A2 reicht von Speicheradresse c zu Speicheradresse d. Dementsprechend ist der im extern adressierbaren Adressraum 302 verfügbare größte zusammenhängend adressierbare Speicherbereich der Bereich von Speicheradresse d zu Speicheradresse e.
  • Der Speicherbereich A1 des extern adressierbaren Adressraums wird über einen oder mehrere Abbildungseinträge 308A der Adressübersetzungsmaschine 120 auf den Speicherbereich A1 des physikalischen Adressraums 306 abgebildet. Ähnlich wird der Speicherbereich A2 des extern adressierbaren Adressraums über einen oder mehrere Einträge 308B der Adressübersetzungsmaschine auf den Speicherbereich A2 des physikalischen Adressraums 306 abgebildet. In der dargestellten Ausführungsform reicht der Speicherbereich A1 des physikalischen Adressraums 306 von der physikalischen Speicheradresse a1 zur physikalischen Speicheradresse b1, während der Speicherbereich A2 von der physikalischen Speicheradresse c1 zur physikalischen Speicheradresse d1 reicht.
  • Ein Abbildungseintrag 308 schließt eine Anzeige 310 einer Adresse im extern adressierbaren Adressraum 302 und eine Anzeige 312 einer entsprechenden Adresse im physikalischen Adressraum 306 ein. Der Abbildungseintrag 308A schließt beispielsweise eine Anzeige 310A der Speicheradresse a und eine Anzeige 312A der Speicheradresse a1 ein, während der Abbildungseintrag 308B eine Anzeige 310B der Speicheradresse c und eine Anzeige 312B der Speicheradresse c1 einschließt. Eine Anzeige einer Speicheradresse kann in jeglicher geeigneten Weise ausgedrückt sein, wie etwa einer absoluten Speicheradresse oder einer relativen Speicheradresse (z. B. einem Offset, der sich auf eine in einem anderen Abbildungseintrag 308 angezeigte absolute Speicheradresse oder eine andere absolute Speicheradresse bezieht). In verschiedenen Ausführungsformen kann eine Anzeige einer Adresse eines Abbildungseintrags ausdrücklich gespeichert sein oder basierend auf dem Ort des Abbildungseintrags 308 innerhalb eines Arrays oder einer anderen Datenstruktur abgeleitet werden. Beispielsweise kann das erste Element eines Arrays einer ersten physikalischen Adresse des physikalischen Adressraums 306 entsprechen und eine Anzeige einer entsprechenden Adresse im extern adressierbaren Adressraum 302 speichern, das zweite Element des Arrays kann einer zweiten physikalischen Adresse (welche die nächstgrößere physikalische Adresse oder die physikalischen Adresse der (des) nächsten Seite, Blocks oder sonstigen logischen Speicherzellenaggregation sein kann) entsprechen und eine Anzeige einer entsprechenden Adresse im extern adressierbaren Adressraum 302 speichern und so weiter.
  • Wie vorstehend erwähnt, kann die Abbildung zwischen einem Bereich des extern adressierbaren Adressraums 302 und einem Bereich der physikalischen Adresse 306 in einem oder mehreren Abbildungseinträge 308 gespeichert werden. In bestimmten Ausführungsformen schließt die Adressübersetzungsmaschine 120 eine festgelegte Anzahl an Abbildungseinträgen 308 ein. In solchen Ausführungsformen kann der Abbildungseintrag für jede physikalische Adresse, für die erste physikalische Adresse jeder Speicherseite, für die erste physikalische Adresse jedes Speicherblocks oder für die erste physikalische Adresse jeder einer anderen logischen Speichergruppierung erstellt werden. Beispielsweise kann der Speicher 116 in Seiten (z. B. von jeweils 4 Kilobyte) unterteilt sein, und jede Seite kann einen zugehörigen Abbildungseintrag 308 mit einer Anzeige 312 einer physikalischen Adresse des Seitenstarts und einer Anzeige 310 einer entsprechenden Adresse im extern adressierbaren Adressraum 302 aufweisen. In solch einer Ausführungsform würde die Abbildung für einen Speicherbereich durch eine Anzahl von Abbildungseinträgen, die gleich der Anzahl an Seiten im Speicherbereich ist, bereitgestellt. Ähnlich kann, wenn ein Abbildungseintrag 308 einer anderen logischen Gruppierung entspricht, die Abbildung für einen Speicherbereich durch eine Anzahl von Abbildungseinträgen, die gleich der Anzahl an Einheiten der bestimmten logischen Gruppierung im Speicherbereich ist, bereitgestellt werden.
  • In einer weiteren Ausführungsform schließt die Adressübersetzungsmaschine 120 eine dynamische Anzahl an Abbildungseinträgen 308 ein. Beispielsweise kann zum Speichern der Abbildung zwischen Bereichen ein Abbildungseintrag erstellt werden, um die Startadressen der Bereiche abzubilden (z. B. wie durch den Abbildungseintrag 308a dargestellt), und ein weiterer Abbildungseintrag kann erstellt werden, um die Endadressen der Bereiche abzubilden (z. B. kann ein zusätzlicher Abbildungseintrag die Speicheradresse b auf die Speicheradresse b1 abbilden). In einer alternativen Ausführungsform kann ein einzelner Abbildungseintrag, der den Start oder das Ende des Bereichs abbildet, zusammen mit einem gespeicherten Wert, der die Länge des Bereichs anzeigt, verwendet werden. In solchen Ausführungsformen können Adressabbildungen für Adressen innerhalb des Datenbereichs dynamisch berechnet werden, basierend auf dem Abbildungseintrag für die Start- oder Endadresse und einem Offset, der anzeigt, wo (in Bezug auf die Start- oder Endadresse) im Bereich sich die Zieladresse befindet. Dementsprechend würden in einigen Ausführungsformen nur ein oder zwei Abbildungseinträge für jeden zugeordneten Speicherbereich erstellt. Wenngleich verschiedene Beispiele bereitgestellt wurden, kann die Adressübersetzungsmaschine 120 jegliche geeignete Anzahl an Abbildungseinträgen, die den extern adressierbaren Adressraum 302 auf dem physikalischen Adressraum 306 in jeglicher geeigneten Weise abbilden, einschließen.
  • Wie zuvor beschrieben, reicht der größte nicht zugeordnete zusammenhängend adressierbare Speicherbereich im extern adressierbaren Adressraum 302 von Adresse d zu Adresse e. Wenn das Betriebssystem eine Anforderung zur Zuweisung eines zusammenhängend adressierbaren Speicherbereichs identifiziert, der größer als e- d ist, so kann das Betriebssystem einen Ortswechselbefehl ausgeben, um die Anforderung unterzubringen (in der Annahme, dass genügend nicht zugeordneter Speicher verfügbar ist, um die Anforderung zu erfüllen). Beispielsweise kann der Befehl die Speichervorrichtung 106 anweisen, den Bereich A2 innerhalb des extern adressierbaren Adressraums so zu bewegen, dass er am Ende des Bereichs A1 startet.
  • 4 zeigt einen beispielhaften Zustand der Speichervorrichtung 106, nachdem der Ortswechselbefehl verarbeitet wurde, gemäß einigen Ausführungsformen. In verschiedenen Ausführungsformen kann die Bewegung innerhalb des extern adressierbaren Adressraums 302 durch Ändern der Abbildung in jedem Abbildungseintrag 308, der Anzeigen zu Adressen innerhalb des Bereichs des extern adressierbaren Adressraums, der zu bewegen ist (d. h. von c zu d), einschließt, und in jedem Abbildungseintrag 308, der Adressen innerhalb des neuen Bereichs identifiziert (d. h. von b + 1 zu b + 1 + d - c) erreicht werden. Der Einfachheit halber ist nur die Neuabbildung eines einzelnen Abbildungseintrags dargestellt. Das heißt, dass sich nach der Neuabbildung die Anzeige 310B der Adresse des Abbildungseintrags 308B nunmehr auf die Adresse b + 1 statt auf die Adresse c bezieht. In verschiedenen Ausführungsformen können andere Abbildungseinträge in einer ähnlichen Weise aktualisiert werden, um die Neuabbildung des gesamten A2-Bereichs und des Bereichs, der durch den A2-Bereich verschoben wurde, vorzunehmen. In verschiedenen Ausführungsformen kann (können) der (die) Bereich(e), der (die) durch den Bereich, der bewegt wurde, verschoben wurde(n), innerhalb des extern adressierbaren Adressraums 302 zu dem Bereich bewegt werden, der zuvor durch den Bereich, der bewegt wurde, eingenommen wurde.
  • In der dargestellten Ausführungsform ist der Speicherbereich A2 nun über den extern adressierbaren Adressraum 302 anhand der Adressen b + 1 bis b + 1 + d - c adressierbar, wenngleich sich der physikalische Ort der zugrundeliegenden Daten (A2 Daten) nicht geändert hat, wie durch die fehlende Änderung im physikalischen Adressraum 306 nachgewiesen ist. Nach der Bewegung des Bereichs A2 innerhalb des extern adressierbaren Adressraums 302 ist der größte nicht zugeordnete zusammenhängend adressierbare Speicherbereich e - (b + 1 + d - c), d. h. der Bereich vom Ende von A2 bis zum Ende des extern adressierbaren Adressraums 302. Dementsprechend kann nun die vorstehend vorgestellte hypothetische Anforderung, die eine Zuordnung eines zusammenhängend adressierbaren Speicherbereichs, der größer als e - d ist, anforderte, erfüllt werden.
  • 5 zeigt einen beispielhaften Ablauf 500 zum Ausgeben einer Reihe von Ortswechselbefehlen gemäß einigen Ausführungsformen. Der Ablauf kann durch jegliche geeignete Hardware und/oder Software, wie etwa ein durch den Prozessor 108 ausgeführtes Betriebssystem, oder eine andere Anwendung, die Zugriff auf den extern adressierbaren Adressraum einer Speichervorrichtung 116 hat, ausgeführt werden. Bei 502 wird eine Anforderung eines zusammenhängend adressierbaren Speicherbereichs identifiziert. Bei 504 wird bestimmt, ob ein zusammenhängend adressierbarer Bereich, der groß genug ist, um die Anforderung zu erfüllen, im extern adressierbaren Adressraum verfügbar ist. Existiert solch ein Bereich, so wird bei 516 der angeforderte Bereich zugeordnet. Existiert kein solcher Bereich, so wird bei 506 bestimmt, ob die Menge des zur Zuweisung verfügbaren Speichers kleiner als die Größe des zusammenhängenden Bereichs in der Anforderung ist. In einer bestimmten Ausführungsform können die Größen der nicht zugeordneten Speicherbereiche im extern adressierbaren Adressraum miteinander addiert werden und die resultierende Summe kann mit der Größe des angeforderten zusammenhängenden Bereichs verglichen werden. Ist der verfügbare Speicher kleiner als die angeforderte Größe, so wird bei 508 die Anforderung abgelehnt.
  • Ist der verfügbare Speicher größer als die angeforderten Größe, so werden bei 510 ein oder mehrere Datenbereiche zur Neuabbildung identifiziert. Solche Bereiche können in jeglicher geeigneter Weise identifiziert werden. Beispielsweise schließen in einer Ausführungsform die identifizierten Bereiche jeden Datenbereich ein, der innerhalb des extern adressierbaren Adressraums bewegt werden sollte, um die verschiedenen zugeordneten Bereiche miteinander zusammenhängend zu machen, um die Größe eines nicht zugeordneten zusammenhängend adressierbaren Speicherbereichs im extern adressierbaren Adressraum zu maximieren. In einer weiteren Ausführungsform werden die identifizierten Bereiche so ausgewählt, dass die Mindestanzahl an Bereichen bewegt werden muss, um den angeforderten zusammenhängend adressierbaren Speicherbereich bereitzustellen. In weiteren Ausführungsformen können die Bereiche anhand anderer Verfahren identifiziert werden.
  • Bei 512 wird ein Ortswechselbefehl für einen bei 510 identifizierten Bereich ausgegeben, der zur Neuabbildung dieses Speicherbereichs führt. Bei 514 wird bestimmt, ob zumindest ein zusätzlicher Bereich innerhalb des extern adressierbaren Adressraums bewegt werden muss. Ist dies der Fall, so wird bei 512 ein weiterer Ortswechselbefehl ausgegeben. Ist dies nicht der Fall, so wird bei 516 der zusammenhängend adressierbare Speicherbereich gemäß der Anforderung zugeordnet.
  • Einige der in 5 dargestellten Operationen können wiederholt, kombiniert, modifiziert oder ausgelassen werden, und zusätzliche Operationen können dem Ablauf hinzugefügt werden. Beispielsweise kann in einigen Ausführungsformen ein einziger Ortswechselbefehl mehrere zu bewegende Bereiche (und zugehörige Parameter) spezifizieren, und somit können alle der identifizierten Bereiche in einen einzigen an die Speichervorrichtung 106 gesendeten Ortswechselbefehl eingeschlossen sein. Zusätzlich können Operationen in jeglicher geeigneten Reihenfolge ausgeführt werden, ohne vom Schutzumfang bestimmter Ausführungsformen abzuweichen.
  • 6 zeigt einen beispielhaften Ablauf 600 zum Verarbeiten eines Befehls zum Ändern eines Orts von Daten innerhalb des extern adressierbaren Adressraums gemäß einigen Ausführungsformen. Die verschiedenen Operationen des Ablaufs 600 können durch jegliche geeignete Logik der Speichervorrichtung 106, wie etwa die Speichervorrichtungsteuerung 118 und/oder die Adressübersetzungsmaschine 120, ausgeführt werden.
  • Bei 602 wird ein Ortswechselbefehl empfangen. Bei 604 werden die vom Ortswechselbefehl betroffenen Abbildungseinträge identifiziert. Bei 606 wird ein Abbildungseintrag der Adressübersetzungsmaschine 120 modifiziert, z. B. durch Ändern der Anzeige 310 der Adresse des extern adressierbaren Adressraums 302 oder der Anzeige 312 der entsprechenden Adresse des physikalischen Adressraums 306. Bei 608 wird bestimmt, ob zusätzliche Abbildungseinträge aktualisiert werden müssen. Ist dies der Fall, wird bei 606 ein weiterer Abbildungseintrag aktualisiert. Ist dies nicht der Fall, wird eine Anzeige, dass der Ortswechselbefehl erfolgreich abgeschlossen wurde, gesendet (z. B. an die CPU 102).
  • Einige der in 6 dargestellten Operationen können wiederholt, kombiniert, modifiziert oder ausgelassen werden, und zusätzliche Operationen können dem Ablauf hinzugefügt werden. Zusätzlich können Operationen in jeglicher geeigneten Reihenfolge ausgeführt werden, ohne vom Schutzumfang bestimmter Ausführungsformen abzuweichen.
  • Ein Design kann verschiedene Stufen durchlaufen, von Erstellung über die Simulation bis hin zur Herstellung. Daten, die ein Design darstellen, können das Design auf verschiedene Weisen darstellen. Zunächst kann, wie es bei Simulationen hilfreich ist, die Hardware anhand einer Hardwarebeschreibungssprache (Hardware Description Language, HDL) oder einer anderen funktionalen Beschreibungssprache dargestellt werden. Zusätzlich kann auf manchen Stufen des Designprozesses ein Schaltungsebenenmodell mit Logik- und/oder Transistorgattern erstellt werden. Darüber hinaus erreichen die meisten Designs auf einer gewissen Stufe eine Datenebene, welche die physische Platzierung verschiedener Vorrichtungen im Hardware-Modell darstellt. Im Fall der Verwendung herkömmlicher Halbleiterherstellungstechniken können die Daten, die das Hardware-Modell darstellen, die Daten sein, die das Vorhandensein oder das Nichtvorhandensein verschiedener Merkmale auf unterschiedlichen Maskenschichten für Masken, die zur Herstellung der integrierten Schaltung verwendet werden, spezifizieren. In einigen Implementierungen können solche Daten in einem Datenbankdateiformat, wie etwa Graphic Data System II (GDS II), Open Artwork System Interchange Standard (OASIS), oder einem ähnlichen Format gespeichert sein.
  • In einigen Implementierungen können softwarebasierte Hardwaremodelle sowie HDL und andere Objekte einer funktionalen Beschreibungssprache neben anderen Beispielen Registerübertragungssprachdateien (Register Transfer Language, RTL) einschließen. Solche Objekte können maschinell parsbar sein, sodass ein Designwerkzeug das HDL-Objekt (oder -Modell) akzeptieren, das HDL-Objekt auf Attribute der beschriebenen Hardware parsen und ein physikalisches Schaltungs- und/oder On-Chip-Layout aus dem Objekt bestimmen kann. Die Ausgabe des Designwerkzeugs kann zur Herstellung der physikalischen Vorrichtung verwendet werden. Beispielsweise kann ein Designwerkzeug Konfigurationen verschiedener Hardware- und/oder Firmwareelemente aus dem HDL-Objekt bestimmen, wie beispielsweise Busbreiten, Register (einschließlich Größen und Typen), Speicherblöcke, physikalische Linkpfade, Fabric-Topologien, unter anderen Attributen, die implementiert würden, um das im HDL-Objekt modellierte System zu realisieren. Designwerkzeuge können Werkzeuge zum Bestimmen der Topologie und Fabric-Konfigurationen von Ein-Chip-Systemen (System on a Chip, SoC) und anderen Hardwarevorrichtungen einschließen. In einigen Fällen kann das HDL-Objekt als Grundlage zum Entwickeln von Modellen und Design-Dateien verwendet werden, die durch Herstellungsausrüstung zur Fertigung der beschriebenen Hardware verwendbar sind. Tatsächlich kann ein HDL-Objekt selbst als eine Eingabe für Herstellungssystemsoftware zur Herbeiführung der beschriebenen Hardware bereitgestellt werden.
  • In jeglicher Darstellung des Designs können die Daten in jeglicher Form eines maschinenlesbaren Mediums gespeichert sein. Ein Speicher oder ein magnetisches oder optisches Speichermedium, wie etwa eine Platte, kann das maschinenlesbare Medium zum Speichern von Informationen sein, die über optische oder elektrische Wellen, die zum Übertragen solcher Informationen moduliert oder anderweitig erzeugt werden, übertragen werden. Wird eine elektrische Trägerwelle, die den Code oder das Design anzeigt oder trägt, in dem Ausmaß übertragen, dass Kopieren, Puffern oder Neuübertragung des elektrischen Signals durchgeführt wird, so wird eine neue Kopie erstellt. So kann ein Kommunikationsprovider oder ein Netzwerkprovider einen Artikel, wie etwa in eine Trägerwelle codierte Informationen, der Techniken von Ausführungsformen der vorliegenden Offenbarung offenbart, zumindest teilweise auf einem greifbaren maschinenlesbaren Medium speichern.
  • Ein Modul, wie es hier verwendet wird, bezieht sich auf jegliche Kombination von Hardware, Software und/oder Firmware. Ein Modul beinhaltet beispielsweise einem nichtflüchtigen Medium zugeordnete Hardware, wie etwa einen Mikrocontroller, zum Speichern von Code, der dazu angepasst ist, durch den Mikrocontroller ausgeführt zu werden. Somit bezieht sich die Bezugnahme auf ein Modul in einer Ausführungsform auf die Hardware, die spezifisch konfiguriert ist, um den auf einem nichtflüchtigen Medium zu haltenden Code zu erkennen und/oder auszuführen. Ferner bezieht sich in einer anderen Ausführungsform die Verwendung eines Moduls auf das den Code beinhaltende nichtflüchtige Medium, das spezifisch dazu angepasst ist, durch den Mikrocontroller ausgeführt zu werden, um vorbestimmte Operationen auszuführen. Und wie sich ableiten lässt, kann sich in noch einer anderen Ausführungsform der Begriff ,Modul' (in diesem Beispiel) auf die Kombination des Mikrocontrollers und des nichtflüchtigen Mediums beziehen. Modulgrenzen, die als separat dargestellt sind, variieren üblicherweise oft und überlappen einander gegebenenfalls. Beispielsweise können ein erstes und ein zweites Modul sich Hardware, Software, Firmware oder eine Kombination davon teilen, während manche unabhängige Hardware, Software oder Firmware gegebenenfalls zurückgehalten wird. Bei einer Ausführungsform schließt die Verwendung des Begriffs ,Logik' Hardware, wie etwa Transistoren, Register oder andere Hardware, wie etwa programmierbare Logikvorrichtungen, ein.
  • ,Logik' (wie sie z. B. zum Implementieren verschiedener Komponenten, wie etwa des Prozessors 108, der I/O-Steuerung 110, der CPU-Speichersteuerung 112, der Speichervorrichtungsteuerung 118, der Adressübersetzungsmaschine 120, der Speichermodule 122, der externen Schnittstelle 304 oder sonstiger Komponenten des Systems 100 verwendbar ist oder wie sie in dieser Anmeldung in anderen Bezugnahmen auf Logik zu finden ist) kann sich auf Hardware, Firmware, Software und/oder Kombinationen derselben zum Ausführen einer oder mehrerer Funktionen beziehen. In verschiedenen Ausführungsformen kann Logik einen Mikroprozessor oder ein anderes Verarbeitungselement, der bzw. das zum Ausführen von Softwarebefehlen operabel ist, diskrete Logik, wie etwa eine anwendungsspezifische integrierte Schaltung (Application Specific Integrated Circuit, ASIC), eine programmierte Logikvorrichtung, wie etwa ein umfeldprogrammierbares Gate-Array (Field Programmable Gate Array, FPGA), eine Anweisungen enthaltende Speichervorrichtung, Kombinationen von Logikvorrichtungen (wie sie z. B. auf einer gedruckten Leiterplatte zu finden wären), oder andere geeignete Hardware und/oder Software einschließen. Logik kann ein oder mehrere Gatter oder sonstige Schaltungskomponenten beinhalten. In einigen Ausführungsformen kann Logik zudem vollständig als Software ausgeführt sein. Software kann als ein Softwarepaket, Code, Anweisungen, Anweisungssätze und/oder Daten, das/der/die auf einem nichtflüchtigen computerlesbaren Speichermedium aufgezeichnet ist/sind, ausgeführt sein. Firmware kann als Code, Anweisungen oder Anweisungssätze und/oder Daten, die in Speichervorrichtungen festcodiert (z. B. nichtflüchtig) sind, ausgeführt sein.
  • Die Verwendung der Phrase ,zu(m)' oder ,dazu konfiguriert' in einer Ausführungsform bezieht sich auf das Anordnen, Zusammenstellen, Fertigen, Zum-Verkauf-Anbieten, Importieren und/oder Entwickeln eines Geräts, einer Hardware, einer Logik oder eines Elements zum Ausführen einer designierten oder bestimmten Aufgabe. In diesem Beispiel ist ein Gerät oder Element desselben, das nicht arbeitet, dennoch ,dazu konfiguriert', eine designierte Aufgabe auszuführen, wenn es zum Ausführen der designierten Aufgabe entwickelt, gekoppelt und/oder verbunden ist. Als rein veranschaulichendes Beispiel kann ein Logikgatter während des Betriebs eine 0 oder eine 1 bereitstellen. Ein Logikgatter, das ,dazu konfiguriert' ist, einem Taktgeber ein Freigabesignal bereitzustellen, schließt jedoch nicht jedes potenzielle Logikgatter, das eine 1 oder eine 0 bereitstellen kann, ein. Stattdessen ist das Logikgatter eines, das in einer bestimmten Weise gekoppelt ist, sodass während des Betriebs die Ausgabe von 1 oder 0 den Taktgeber aktivieren soll. Es sei erneut angemerkt, dass die Verwendung des Begriffs ,dazu konfiguriert' keine Operation erfordert, sondern sich stattdessen auf den latenten Zustand eines Geräts, einer Hardware und/oder eines Elements richtet, wobei im latenten Zustand das Gerät, die Hardware und/oder das Element dazu gestaltet sind, eine bestimmte Aufgabe auszuführen, wenn das Gerät, die Hardware und/oder das Element arbeiten.
  • Ferner bezieht sich die Verwendung der Phrasen ,dazu geeignet' und/oder ,dazu betreibbar' in einer Ausführungsform auf ein Gerät, eine Logik, eine Hardware und/oder ein Element, die derart gestaltet sind, dass sie die Verwendung des Geräts, der Logik, der Hardware und/oder des Elements auf eine spezifische Weise erlauben. Wie oben sei angemerkt, dass sich die Verwendung von ,dazu geeignet' oder ,dazu betreibbar' in einer Ausführungsform auf den latenten Zustand eines Geräts, einer Logik, einer Hardware und/oder eines Elements bezieht, wobei das Gerät, die Logik, die Hardware und/oder das Element nicht arbeiten, sondern derart gestaltet sind, dass sie die Verwendung eines Geräts in einer spezifizierten Weise erlauben.
  • Ein Wert, wie hier verwendet, schließt jegliche bekannte Darstellung einer Zahl, eines Zustands, eines logischen Zustands oder eines binären logischen Zustands ein. Häufig wird die Verwendung von Logikpegeln, Logikwerten oder logischen Werten auch als len und 0en bezeichnet, was einfach binäre Logikzustände darstellt. Beispielsweise bezieht sich 1 auf einen hohen Logikpegel und 0 bezieht sich auf einen niedrigen Logikpegel. In einer Ausführungsform kann eine Speicherzelle, wie etwa eine Transistor- oder Flashzelle, dazu geeignet sein, einen einzelnen logischen Wert oder mehrere logische Werte zu halten. Es wurden jedoch auch andere Darstellungen von Werten in Computersystemen verwendet. Beispielsweise kann die Dezimalzahl zehn auch als ein Binärwert von 1010 und ein hexadezimaler Buchstabe A dargestellt sein. Daher beinhaltet ein Wert jegliche Darstellung von Informationen, die dazu geeignet ist, in einem Computersystem gehalten zu werden.
  • Darüber hinaus können Zustände durch Werte oder Teile von Werten dargestellt sein. Beispielsweise kann ein erster Wert, wie etwa eine logische Eins, einen Standard- oder Anfangszustand darstellen, während ein zweiter Wert, wie etwa eine logische Null, einen Nichtstandardzustand darstellen kann. Darüber hinaus beziehen sich die Begriffe ,Reset' und ,Set' in einer Ausführungsform jeweils auf einen Standard- und einen aktualisierten Wert oder Zustand. Beispielsweise beinhaltet ein Standardwert gegebenenfalls einen hohen logischen Wert, d. h. Reset, während ein aktualisierter Wert gegebenenfalls einen niedrigen logischen Wert, d. h. Set, beinhaltet. Es sei angemerkt, dass jegliche Kombination von Werten verwendbar ist, um jegliche Anzahl von Zuständen darzustellen.
  • Die vorstehend dargelegten Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code können über Anweisungen oder Code implementiert sein, die auf einem maschinenzugänglichen, maschinenlesbaren, computerzugänglichen oder computerlesbaren Medium gespeichert und durch ein Verarbeitungselement ausführbar sind. Ein nichtflüchtiges maschinenzugängliches/-lesbares Medium schließt jeglichen Mechanismus ein, der Informationen in einer Form bereitstellt (d. h. speichert und/oder überträgt), die durch eine Maschine, wie beispielsweise einen Computer oder ein elektronisches System, lesbar ist. Beispielsweise beinhaltet ein nichtflüchtiges maschinenzugängliches Medium Direktzugriffsspeicher (Random Access Memory, RAM), wie etwa statischen RAM (SRAM) oder dynamischen RAM (DRAM); Nurlesespeicher (Read-Only Memory, ROM); ein magnetisches oder optisches Speichermedium; Flash-Speichervorrichtungen; elektrische Speichervorrichtungen; optische Speichervorrichtungen; akustische Speichervorrichtungen, andere Formen von Speichervorrichtungen zum Halten von Informationen, die von flüchtigen (übermittelten) Signalen (z. B. Trägerwellen, Infrarotsignalen, digitalen Signalen) empfangen werden; usw., die von den nichtflüchtigen Medien zu unterscheiden sind, die Informationen davon empfangen können.
  • Anweisungen, die dazu verwendet werden, Logik zum Ausführen von Ausführungsformen der Offenbarung zu programmieren, können innerhalb eines Speichers im System, wie etwa eines DRAM, Cache, Flash-Speichers oder sonstigen Speichers, gespeichert sein. Darüber hinaus können die Anweisungen über ein Netzwerk oder mittels anderer computerlesbarer Medien verteilt werden. So kann ein maschinenlesbares Medium jeglichen Mechanismus zum Speichern oder Übertragen von Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form einschließen, unter anderem Floppy-Disketten, optische Platten, Compactdisc-Nurlesespeicher (Compact Disc Read-Only Memory, CD-ROMs) und magneto-optische Platten, Nurlesespeicher (Read-Only Memory, ROMs), Direktzugriffsspeicher (Random Access Memory, RAM), löschbaren programmierbaren Nurlesespeicher (Erasable Programmable Read-Only Memory, EPROM), elektrisch löschbaren programmierbaren Nurlesespeicher (Electrically Erasable Programmable Read-Only Memory, EEPROM), magnetische oder optische Karten, Flash-Speicher oder einen greifbaren maschinenlesbaren Speicher, die bei der Übertragung von Informationen über das Internet über elektrische, optische, akustische oder andere Formen von Ausbreitungssignalen (z. B. Trägerwellen, Infrarotsignale, digitale Signale usw.) verwendet werden. Dementsprechend beinhaltet das computerlesbare Medium jegliche Art von greifbarem maschinenlesbarem Medium, das dazu geeignet ist, elektronische Anweisungen oder Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form zu speichern oder zu übertragen.
  • Verschiedene Ausführungsformen können eine Vorrichtung, ein System, eine hard- und/oder softwarebasierte Logik oder ein nichtflüchtiges maschinenlesbares Medium (einschließlich Information zum Darstellen von Strukturen, die bei der Fertigung zu konfigurieren sind) bereitstellen, umfassend eine Speichervorrichtungsteuerung zum Empfangen eines Befehls, der eine Identifikation eines Bereichs von in einem Speicher gespeicherten Daten und eine Anforderung zur Änderung eines Ortes des Datenbereichs umfasst; und zum Anfordern der Modifikation zumindest eines Eintrags aus einer Mehrzahl von Einträgen, wobei die Mehrzahl von Einträgen einen extern adressierbaren Adressraum des Speichers auf einen physikalischen Adressraum des Speichers abbilden soll, wobei die Modifikation des zumindest einen Eintrags eine Abbildung des Datenbereichs zwischen dem extern adressierbaren Adressraum und dem physikalischen Adressraum ändern soll, ohne den Datenbereich innerhalb des Speichers zu bewegen.
  • In zumindest einem Beispiel soll der Befehl durch ein Betriebssystem erzeugt werden, das den Speicher über den extern adressierbaren Adressraum adressiert. In zumindest einem Beispiel umfasst die Identifikation des Datenbereichs eine oder mehrere Adressen des extern adressierbaren Adressraums. In zumindest einem Beispiel umfasst die Identifikation des Datenbereichs eine Länge des Datenbereichs. In zumindest einem Beispiel umfasst der Befehl ferner eine Identifikation eines Orts innerhalb des extern adressierbaren Adressraums, an den der Ort des Datenbereichs geändert werden soll. In zumindest einem Beispiel umfasst die Vorrichtung ferner den Speicher. In zumindest einem Beispiel soll die Vorrichtung ferner eine Adressübersetzungsmaschine zum Aufrechterhalten der Mehrzahl von Einträgen, die den extern adressierbaren Adressraum des Speichers auf den physikalischen Adressraum des Speichers abbilden, umfassen; und den zumindest einen Eintrag aus der Mehrzahl von Einträgen in Reaktion auf die Anforderung von der Speichervorrichtungsteuerung modifizieren. In zumindest einem Beispiel weist die Vorrichtung einen Formfaktor mit doppelreihigem Speichermodul (Dual Inline Memory Module, DIMM) auf. In zumindest einem Beispiel soll die Vorrichtung durch eine auf doppelter Datenrate (Double Data Rate, DDR) basierende Schnittstelle eine Schnittstelle mit einer zentralen Verarbeitungseinheit bilden. In zumindest einem Beispiel soll ein Eintrag aus der Mehrzahl von Einträgen eine Datenseite des Speichers zwischen dem extern adressierbaren Adressraum des Speichers auf den physikalischen Adressraum des Speichers abbilden.
  • Verschiedene Ausführungsformen können ein Verfahren bereitstellen, umfassend das Empfangen eines Befehls, der eine Identifikation eines Bereichs von in einem Speicher gespeicherten Daten und eine Anforderung zur Änderung eines Ortes des Datenbereichs umfasst; und das Anfordern der Modifikation zumindest eines Eintrags aus einer Mehrzahl von Einträgen, wobei die Mehrzahl von Einträgen einen extern adressierbaren Adressraum des Speichers auf einen physikalischen Adressraum des Speichers abbilden soll, wobei die Modifikation des zumindest einen Eintrags eine Abbildung des Datenbereichs zwischen dem extern adressierbaren Adressraum und dem physikalischen Adressraum ändern soll, ohne den Datenbereich innerhalb des Speichers zu bewegen.
  • In zumindest einem Beispiel soll der Befehl durch ein Betriebssystem erzeugt werden, das den Speicher über den extern adressierbaren Adressraum adressiert. In zumindest einem Beispiel umfasst die Identifikation des Datenbereichs eine oder mehrere Adressen des extern adressierbaren Adressraums. In zumindest einem Beispiel umfasst die Identifikation des Datenbereichs eine Länge des Datenbereichs. In zumindest einem Beispiel umfasst der Befehl ferner eine Identifikation eines Orts innerhalb des extern adressierbaren Adressraums, an den der Ort des Datenbereichs geändert werden soll. In zumindest einem Beispiel umfasst das Verfahren ferner das Aufrechterhalten der Mehrzahl von Einträgen, die den extern adressierbaren Adressraum des Speichers auf den physikalischen Adressraum des Speichers abbilden; und das Modifizieren des zumindest einen Eintrags aus der Mehrzahl von Einträgen in Reaktion auf die Anforderung von der Speichervorrichtungsteuerung. In zumindest einem Beispiel soll ein Eintrag aus der Mehrzahl von Einträgen eine Datenseite des Speichers zwischen dem extern adressierbaren Adressraum des Speichers auf den physikalischen Adressraum des Speichers abbilden. In zumindest einem Beispiel umfasst das Verfahren ferner das Identifizieren einer Anforderung zur Zuweisung eines Speicherbereichs einer bestimmten Größe innerhalb des extern adressierbaren Adressraums; das Bestimmen, dass der größte verfügbare zusammenhängend adressierbare Speicherbereich im extern adressierbaren Adressraum kleiner als die bestimmte Größe ist; und das Erzeugen des Befehls in Reaktion auf die Anforderung zur Zuweisung des Speicherbereichs der bestimmten Größe. In zumindest einem Beispiel identifiziert der Befehl eine Mehrzahl von Speicherbereichen, die innerhalb des extern adressierbaren Adressraums bewegt werden sollen. In zumindest einem Beispiel umfasst das Verfahren ferner das Bilden einer Schnittstelle mit einer zentralen Verarbeitungseinheit durch eine auf doppelter Datenrate (Double Data Rate, DDR) basierende Schnittstelle. In zumindest einem Beispiel umfasst das Verfahren ferner das Empfangen eines Lesebefehls durch eine Kommunikationsschnittstelle, die sich von einer Kommunikationsschnittstelle unterscheidet, durch welche der die Identifikation des Datenbereichs umfassende Befehl empfangen wird.
  • Verschiedene Ausführungsformen können ein System bereitstellen, das ein Folgendes umfassen soll: ein durch einen Prozessor auszuführendes Betriebssystem; eine Speichervorrichtung, umfassend einen Speicher und eine Speichervorrichtungsteuerung zum Empfangen eines Befehls vom Betriebssystem, wobei der Befehl eine Identifikation eines Bereichs von in einem Speicher gespeicherten Daten und eine Anforderung zur Änderung eines Ortes des Datenbereichs umfasst; und zum Anfordern der Modifikation zumindest eines Eintrags aus einer Mehrzahl von Einträgen, wobei die Mehrzahl von Einträgen einen extern adressierbaren Adressraum des Speichers auf einen physikalischen Adressraum des Speichers abbilden soll, wobei die Modifikation des zumindest einen Eintrags eine Abbildung des Datenbereichs zwischen dem extern adressierbaren Adressraum und dem physikalischen Adressraum ändern soll, ohne den Datenbereich innerhalb des Speichers zu bewegen.
  • In zumindest einem Beispiel soll das Betriebssystem eine Anforderung zur Zuweisung eines Speicherbereichs einer bestimmten Größe innerhalb des extern adressierbaren Adressraums identifizieren; bestimmen, dass der größte verfügbare zusammenhängend adressierbare Speicherbereich im extern adressierbaren Adressraum kleiner als die bestimmte Größe ist; und den Befehl in Reaktion auf die Anforderung zur Zuweisung des Speicherbereichs der bestimmten Größe erzeugen. In zumindest einem Beispiel umfasst die Identifikation des Datenbereichs eine oder mehrere Adressen des extern adressierbaren Adressraums. In zumindest einem Beispiel umfasst die Identifikation des Datenbereichs eine Länge des Datenbereichs. In zumindest einem Beispiel umfasst der Befehl ferner eine Identifikation eines Orts innerhalb des extern adressierbaren Adressraums, an den der Ort des Datenbereichs geändert werden soll.
  • Verschiedene Ausführungsformen können eine Vorrichtung bereitstellen, umfassend Mittel zum Empfangen eines Befehls, der eine Identifikation eines Bereichs von in einem Speicher gespeicherten Daten und eine Anforderung zur Änderung eines Ortes des Datenbereichs umfasst; und Mittel zum Anfordern der Modifikation zumindest eines Eintrags aus einer Mehrzahl von Einträgen, wobei die Mehrzahl von Einträgen einen extern adressierbaren Adressraum des Speichers auf einen physikalischen Adressraum des Speichers abbilden soll, wobei die Modifikation des zumindest einen Eintrags eine Abbildung des Datenbereichs zwischen dem extern adressierbaren Adressraum und dem physikalischen Adressraum ändern soll, ohne den Datenbereich innerhalb des Speichers zu bewegen.
  • In zumindest einem Beispiel soll der Befehl durch ein Betriebssystem erzeugt werden, das den Speicher über den extern adressierbaren Adressraum adressiert. In zumindest einem Beispiel umfasst die Identifikation des Datenbereichs eine oder mehrere Adressen des extern adressierbaren Adressraums. In zumindest einem Beispiel umfasst die Identifikation des Datenbereichs eine Länge des Datenbereichs. In zumindest einem Beispiel umfasst der Befehl ferner eine Identifikation eines Orts innerhalb des extern adressierbaren Adressraums, an den der Ort des Datenbereichs geändert werden soll.
  • Die Bezugnahme auf ,1 Ausführungsform' oder ,eine Ausführungsform' in dieser Beschreibung bedeutet durchweg, dass eine bestimmte in Verbindung mit der Ausführungsform beschriebene Eigenschaft, Struktur oder Charakteristik in zumindest einer Ausführungsform der vorliegenden Offenbarung eingeschlossen ist. Somit beziehen sich die Erscheinungen der Phrasen ,in 1 Ausführungsform' oder ,in einer Ausführungsform' an verschiedenen Stellen über diese Beschreibung hinweg nicht alle notwendigerweise immer auf dieselbe Ausführungsform. Darüber hinaus können die bestimmten Eigenschaften, Strukturen oder Charakteristika in einer oder mehreren Ausführungsformen auf jegliche geeignete Weise kombiniert werden.
  • In der vorstehenden Beschreibung wurde eine ausführliche Beschreibung unter Bezugnahme auf spezifische beispielhafte Ausführungsformen gegeben. Es versteht sich jedoch, dass verschiedene Modifikationen und Änderungen daran vorgenommen werden können, ohne vom weiteren Geist und Schutzumfang der Offenbarung, wie in den beigefügten Patentansprüchen dargelegt, abzuweichen. Die Spezifikation und die Zeichnungen sind demnach eher in einem veranschaulichenden Sinne als in einem einschränkenden Sinne zu betrachten. Darüber hinaus bezieht sich die vorstehende Verwendung von Ausführungsform und anderer beispielhafter Sprache nicht notwendigerweise auf dieselbe Ausführungsform oder dasselbe Beispiel, sondern kann sich auf andere und unterschiedliche Ausführungsformen sowie gegebenenfalls auf dieselbe Ausführungsform beziehen.

Claims (26)

  1. Vorrichtung, die Folgendes umfasst: eine Speichervorrichtungsteuerung zum: Empfangen eines Befehls, der eine Identifikation eines Bereichs von in einem Speicher gespeicherten Daten und eine Anforderung zur Änderung eines Ortes des Datenbereichs umfasst; und Anfordern der Modifikation zumindest eines Eintrags aus einer Mehrzahl von Einträgen, wobei die Mehrzahl von Einträgen einen extern adressierbaren Adressraum des Speichers auf einen physikalischen Adressraum des Speichers abbilden soll, wobei die Modifikation des zumindest einen Eintrags eine Abbildung des Datenbereichs zwischen dem extern adressierbaren Adressraum und dem physikalischen Adressraum ändern soll, ohne den Datenbereich innerhalb des Speichers zu bewegen.
  2. Vorrichtung nach Anspruch 1, wobei der Befehl durch ein Betriebssystem erzeugt werden soll, das den Speicher über den extern adressierbaren Adressraum adressiert.
  3. Vorrichtung nach Anspruch 1, wobei die Identifikation des Datenbereichs eine oder mehrere Adressen des extern adressierbaren Adressraums umfasst.
  4. Vorrichtung nach Anspruch 1, wobei die Identifikation des Datenbereichs eine Länge des Datenbereichs umfasst.
  5. Vorrichtung nach Anspruch 1, wobei der Befehl ferner eine Identifikation eines Orts innerhalb des extern adressierbaren Adressraums umfasst, in den der Ort des Datenbereichs geändert werden soll.
  6. Vorrichtung nach Anspruch 1, ferner umfassend den Speicher.
  7. Vorrichtung nach Anspruch 1, ferner umfassend eine Adressübersetzungsmaschine zum: Aufrechterhalten der Mehrzahl von Einträgen, die den extern adressierbaren Adressraum des Speichers auf den physikalischen Adressraum des Speichers abbilden; und Modifizieren des zumindest einen Eintrags aus der Mehrzahl von Einträgen in Reaktion auf die Anforderung von der Speichervorrichtungsteuerung.
  8. Vorrichtung nach Anspruch 1, wobei der Speicher einen Formfaktor mit doppelreihigem Speichermodul (Dual Inline Memory Module, DIMM) aufweist.
  9. Vorrichtung nach Anspruch 1, wobei der Speicher durch eine auf doppelter Datenrate (Double Data Rate, DDR) basierende Schnittstelle eine Schnittstelle mit einer zentralen Verarbeitungseinheit bilden soll.
  10. Vorrichtung nach Anspruch 1, wobei ein Eintrag aus der Mehrzahl von Einträgen eine Datenseite des Speichers zwischen dem extern adressierbaren Adressraum des Speichers auf den physikalischen Adressraum des Speichers abbilden soll.
  11. Verfahren, das Folgendes umfasst: Empfangen eines Befehls, der eine Identifikation eines Bereichs von in einem Speicher gespeicherten Daten und eine Anforderung zur Änderung eines Ortes des Datenbereichs umfasst; und Anfordern der Modifikation zumindest eines Eintrags aus einer Mehrzahl von Einträgen, wobei die Mehrzahl von Einträgen einen extern adressierbaren Adressraum des Speichers auf einen physikalischen Adressraum des Speichers abbilden soll, wobei die Modifikation des zumindest einen Eintrags eine Abbildung des Datenbereichs zwischen dem extern adressierbaren Adressraum und dem physikalischen Adressraum ändern soll, ohne den Datenbereich innerhalb des Speichers zu bewegen.
  12. Verfahren nach Anspruch 11, wobei der Befehl durch ein Betriebssystem erzeugt werden soll, das den Speicher über den extern adressierbaren Adressraum adressiert.
  13. Verfahren nach Anspruch 11, wobei die Identifikation des Datenbereichs eine oder mehrere Adressen des extern adressierbaren Adressraums umfasst.
  14. Verfahren nach Anspruch 11, wobei die Identifikation des Datenbereichs eine Länge des Datenbereichs umfasst.
  15. Verfahren nach Anspruch 11, wobei der Befehl ferner eine Identifikation eines Orts innerhalb des extern adressierbaren Adressraums, in den der Ort des Datenbereichs geändert werden soll, umfasst.
  16. System, das Folgendes umfasst: einen Prozessor zum Ausführen eines Betriebssystems; eine Speichervorrichtung, umfassend einen Speicher und eine Speichervorrichtungsteuerung zum: Empfangen eines Befehls vom Betriebssystem, wobei der Befehl eine Identifikation eines Bereichs von in einem Speicher gespeicherten Daten und eine Anforderung zur Änderung eines Ortes des Datenbereichs umfasst; und Anfordern der Modifikation zumindest eines Eintrags aus einer Mehrzahl von Einträgen, wobei die Mehrzahl von Einträgen einen extern adressierbaren Adressraum des Speichers auf einen physikalischen Adressraum des Speichers abbilden soll, wobei die Modifikation des zumindest einen Eintrags eine Abbildung des Datenbereichs zwischen dem extern adressierbaren Adressraum und dem physikalischen Adressraum ändern soll, ohne den Datenbereich innerhalb des Speichers zu bewegen.
  17. System nach Anspruch 16, wobei das Betriebssystem: eine Anforderung zur Zuweisung eines Speicherbereichs einer bestimmten Größe innerhalb des extern adressierbaren Adressraums identifizieren soll; bestimmen soll, dass der größte verfügbare zusammenhängend adressierbare Speicherbereich im extern adressierbaren Adressraum kleiner als die bestimmte Größe ist; und den Befehl in Reaktion auf die Anforderung zur Zuweisung des Speicherbereichs der bestimmten Größe erzeugen soll.
  18. System nach Anspruch 16, wobei die Identifikation des Datenbereichs eine oder mehrere Adressen des extern adressierbaren Adressraums umfasst.
  19. System nach Anspruch 16, wobei die Identifikation des Datenbereichs eine Länge des Datenbereichs umfasst.
  20. System nach Anspruch 16, wobei der Befehl ferner eine Identifikation eines Orts innerhalb des extern adressierbaren Adressraums, in den der Ort des Datenbereichs geändert werden soll, umfasst.
  21. System nach Anspruch 16, ferner umfassend eine oder mehrere der Folgenden: eine kommunikativ mit dem Prozessor gekoppelte Batterie, eine kommunikativ mit dem Prozessor gekoppelte Anzeige oder eine kommunikativ mit dem Prozessor gekoppelte Netzwerkschnittstelle.
  22. Vorrichtung, die Folgendes umfasst: Mittel zum Empfangen eines Befehls, der eine Identifikation eines Bereichs von in einem Speicher gespeicherten Daten und eine Anforderung zur Änderung eines Ortes des Datenbereichs umfasst; und Mittel zum Anfordern der Modifikation zumindest eines Eintrags aus einer Mehrzahl von Einträgen, wobei die Mehrzahl von Einträgen einen extern adressierbaren Adressraum des Speichers auf einen physikalischen Adressraum des Speichers abbilden soll, wobei die Modifikation des zumindest einen Eintrags eine Abbildung des Datenbereichs zwischen dem extern adressierbaren Adressraum und dem physikalischen Adressraum ändern soll, ohne den Datenbereich innerhalb des Speichers zu bewegen.
  23. Vorrichtung nach Anspruch 22, wobei der Befehl durch ein Betriebssystem erzeugt werden soll, das den Speicher über den extern adressierbaren Adressraum adressiert.
  24. Vorrichtung nach Anspruch 22, wobei die Identifikation des Datenbereichs eine oder mehrere Adressen des extern adressierbaren Adressraums umfasst.
  25. Vorrichtung nach Anspruch 22, wobei die Identifikation des Datenbereichs eine Länge des Datenbereichs umfasst.
  26. Vorrichtung nach Anspruch 22, wobei der Befehl ferner eine Identifikation eines Orts innerhalb des extern adressierbaren Adressraums, in den der Ort des Datenbereichs geändert werden soll, umfasst.
DE112017001118.3T 2016-03-02 2017-01-31 Verfahren und Vorrichtung zum Bereitstellen eines zusammenhängend adressierbaren Speicherbereichs durch Neuabbildung eines Adressraums Pending DE112017001118T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/058,422 2016-03-02
US15/058,422 US20170255565A1 (en) 2016-03-02 2016-03-02 Method and apparatus for providing a contiguously addressable memory region by remapping an address space
PCT/US2017/015890 WO2017151262A1 (en) 2016-03-02 2017-01-31 Method and apparatus for providing a contiguously addressable memory region by remapping an address space

Publications (1)

Publication Number Publication Date
DE112017001118T5 true DE112017001118T5 (de) 2018-11-15

Family

ID=59723612

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017001118.3T Pending DE112017001118T5 (de) 2016-03-02 2017-01-31 Verfahren und Vorrichtung zum Bereitstellen eines zusammenhängend adressierbaren Speicherbereichs durch Neuabbildung eines Adressraums

Country Status (4)

Country Link
US (1) US20170255565A1 (de)
CN (1) CN108701086A (de)
DE (1) DE112017001118T5 (de)
WO (1) WO2017151262A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200072639A (ko) * 2018-12-12 2020-06-23 삼성전자주식회사 저장 장치 및 그것의 동작 방법
KR20200095130A (ko) 2019-01-31 2020-08-10 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
CN111741246B (zh) * 2020-06-12 2022-07-05 浪潮(北京)电子信息产业有限公司 一种视频存储方法、装置、soc系统、介质
CN113885778B (zh) * 2020-07-02 2024-03-08 慧荣科技股份有限公司 数据处理方法及对应的数据储存装置
US11586368B1 (en) * 2021-08-23 2023-02-21 EMC IP Holding Company LLC Configuring unused SCM memory space to support namespaces based on IO patterns
US11803304B2 (en) * 2022-01-19 2023-10-31 Vmware, Inc. Efficient bit compression for direct mapping of physical memory addresses

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3345628B2 (ja) * 1997-07-11 2002-11-18 アネックスシステムズ株式会社 データ格納及び検索方法
US7669189B1 (en) * 2002-06-26 2010-02-23 Oracle International Corporation Monitoring memory accesses for computer programs
US6907494B2 (en) * 2002-10-10 2005-06-14 International Business Machines Corporation Method and system of managing virtualized physical memory in a memory controller and processor system
US7523288B2 (en) * 2006-09-06 2009-04-21 Microsoft Corporation Dynamic fragment mapping
CN100504814C (zh) * 2007-01-17 2009-06-24 忆正存储技术(深圳)有限公司 闪存的区块管理方法
US8386723B2 (en) * 2009-02-11 2013-02-26 Sandisk Il Ltd. System and method of host request mapping
US8386747B2 (en) * 2009-06-11 2013-02-26 Freescale Semiconductor, Inc. Processor and method for dynamic and selective alteration of address translation
KR20120027987A (ko) * 2010-09-14 2012-03-22 삼성엘이디 주식회사 질화갈륨계 반도체소자 및 그 제조방법
US8838935B2 (en) * 2010-09-24 2014-09-16 Intel Corporation Apparatus, method, and system for implementing micro page tables
US20130033957A1 (en) * 2011-08-04 2013-02-07 Spar Food Machinery Manufacturing Co., Ltd. Stirrer having Programmable Stirring Mode Control
US9190124B2 (en) * 2011-12-29 2015-11-17 Intel Corporation Multi-level memory with direct access
WO2013130109A1 (en) * 2012-03-02 2013-09-06 Hewlett-Packard Development Company L.P. Shiftable memory defragmentation
US20140017317A1 (en) * 2012-06-01 2014-01-16 Niven Rajin Narain Methods of treatment of solid tumors using coenzyme q10
US20140173178A1 (en) * 2012-12-19 2014-06-19 Apple Inc. Joint Logical and Physical Address Remapping in Non-volatile Memory
US9021187B2 (en) * 2013-01-29 2015-04-28 Sandisk Technologies Inc. Logical block address remapping
KR20140099737A (ko) * 2013-02-04 2014-08-13 삼성전자주식회사 존-기반 조각모음 방법 및 그것을 이용한 유저 장치
WO2014177905A1 (en) * 2013-04-30 2014-11-06 Freescale Semiconductor, Inc. Device having a security module
US9213501B2 (en) * 2013-05-23 2015-12-15 Netapp, Inc. Efficient storage of small random changes to data on disk
US9436606B2 (en) * 2014-01-02 2016-09-06 Qualcomm Incorporated System and method to defragment a memory

Also Published As

Publication number Publication date
WO2017151262A1 (en) 2017-09-08
US20170255565A1 (en) 2017-09-07
CN108701086A (zh) 2018-10-23

Similar Documents

Publication Publication Date Title
DE112017001118T5 (de) Verfahren und Vorrichtung zum Bereitstellen eines zusammenhängend adressierbaren Speicherbereichs durch Neuabbildung eines Adressraums
DE112018005505T5 (de) Verfahren und vorrichtung zur spezifikation von lese-spannungsversetzungen für einen lesebefehl
DE112011106078B4 (de) Verfahren, Vorrichtung und System zur Implementierung eines mehrstufigen Arbeitsspeichers mit Direktzugriff
DE102011076895B4 (de) Cachekohärenzprotokoll für persistente Speicher
DE112017001471T5 (de) Mehrebenen-speichermanagement
DE112018004251T5 (de) Adaptive vorrichtungsdienstqualität durch host-speicherpufferbereich
DE102018113447A1 (de) Speichervorrichtung zum Koppeln mit einem Host und Verfahren zum Betreiben des Hosts und der Speichervorrichtung
DE102020132764A1 (de) Solid-state-drive mit externer softwareausführung zum bewirken von internen operationen des solid-state-drive
DE102015012566A1 (de) Mehrlagenkonzept für logische speicherungsverwaltung
DE102018105943A1 (de) Kontextbewusste dynamische Befehlsplanung für ein Datenspeichersystem
DE202010017667U1 (de) Datenspeichervorrichtung mit Flash-Speicherchips
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
DE102015117066A1 (de) Verfahren zum Betreiben einer Datenspeichervorrichtung, mobile Rechenvorrichtung mit derselben und Verfahren der mobilen Rechenvorrichtung
DE102013016609A1 (de) Vorrichtung und Verfahren für ein Storage Class Memory mit niedrigem Energieverbrauch, niedriger Latenz und hoher Kapazität
DE102011086097B4 (de) Mehrkanal-Speicher mit eingebetteter Kanalauswahl
DE112018000230T5 (de) System und Verfahren zur spekulativen Befehlsausführung unter Verwendung des Steuerungsspeicherpuffers
DE112018004252T5 (de) Redundanzcodierstreifen auf der basis eines koordinierten internen adressschemas über mehrere vorrichtungen
DE112019005511T5 (de) Halten von schreibbefehlen in gezonten namensräumen
DE102016204283A1 (de) Datenspeichervorrichtungen, Datenverarbeitungssysteme, die diese aufweisen, Verfahren zum Betreiben und Verfahren zum Herstellen derselben.
DE102014102246A1 (de) Integrierte Schaltung zum Berechnen einer Zieleintragsadresse eines Puffer-Deskriptors basierend auf einem Datenblockabstand, Verfahren zum Betreiben desselben und System mit demselben
DE102013209643B4 (de) Mechanismus für optimierte Nachrichtenaustauschdatenübertragung zwischen Nodelets innerhalb eines Plättchens
DE102018123669A1 (de) Host-Computer-Anordnung, Remote-Server-Anordnung, Speicherungssystem und Verfahren davon
WO2013110736A1 (de) Speichercontroller zur bereitstellung mehrerer definierter bereiche eines massenspeichermediums als unabhängige massenspeicher an einen master-betriebssystem - kern zur exklusiven bereitstellung an virutelle maschinen
DE102019117794A1 (de) Speichervorrichtungen, die heterogene Prozessoren umfassen, welche sich Speicher teilen, und Verfahren zu deren Betrieb
DE112017005782T5 (de) Warteschlange für Speichervorgänge

Legal Events

Date Code Title Description
R081 Change of applicant/patentee

Owner name: SK HYNIX NAND PRODUCT SOLUTIONS CORP., SAN JOS, US

Free format text: FORMER OWNER: INTEL CORPORATION, SANTA CLARA, CALIF., US

R012 Request for examination validly filed