DE102018209205A1 - Datenspeicher mit intelligentem Speicher oder Ladeverfahren und -vorrichtung - Google Patents

Datenspeicher mit intelligentem Speicher oder Ladeverfahren und -vorrichtung Download PDF

Info

Publication number
DE102018209205A1
DE102018209205A1 DE102018209205.2A DE102018209205A DE102018209205A1 DE 102018209205 A1 DE102018209205 A1 DE 102018209205A1 DE 102018209205 A DE102018209205 A DE 102018209205A DE 102018209205 A1 DE102018209205 A1 DE 102018209205A1
Authority
DE
Germany
Prior art keywords
memory
storage
units
driver
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
DE102018209205.2A
Other languages
English (en)
Inventor
Soo Keong Ong
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.)
Intel 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 DE102018209205A1 publication Critical patent/DE102018209205A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/7821Tightly coupled to memory, e.g. computational memory, smart memory, processor in 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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/061Improving I/O performance
    • 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/0626Reducing size or complexity of storage systems
    • 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/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • 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/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

In dieser Patentschrift werden Vorrichtungen, Verfahren und Speichermedien im Zusammenhang mit einer Datenspeicher-/Ladetechnologie mit intelligentem Speicher offenbart. In Ausführungsformen kann eine Vorrichtung einen Prozessor umfassen; eine Vielzahl von Speichereinheiten; eine Speichersteuerung, die mit dem Prozessor und der Vielzahl von Speichereinheiten gekoppelt ist, um den Zugriff der Vielzahl von Speichereinheiten zu steuern, die Unterstützung für physische Hardware-Speicherverschachtelung beinhaltet; und einen oder mehrere Hardware-Datenverarbeitungslogikblöcke, die mit der Vielzahl von Speichereinheiten gekoppelt sind, um Near-Data Processing (Verarbeitung in der Nähe des Datenspeicherorts) für Daten bereitzustellen, die von der Vielzahl von Speichereinheiten empfangen werden. Die Vorrichtung kann ferner einen Treiber enthalten, um Anwendungen zu unterstützen, die von dem Prozessor betrieben werden, um standortbewusste speicherzugeordnete Gerätezugriffe durchzuführen, um auf zusammenhängende Weise Daten selektiv in der Vielzahl von Speichereinheiten zu speichern oder aus ausgewählten der Vielzahl von Speichereinheiten oder Aggregationen von ausgewählten davon zu laden. Andere Ausführungsformen können beschrieben und/oder beansprucht werden.

Description

  • Gebiet der Technik
  • Die vorliegende Offenbarung bezieht sich auf die Gebiete der Datenverarbeitung und Speicher. Insbesondere bezieht sich die vorliegende Offenbarung auf ein Datenspeicher- oder Ladeverfahren und eine Vorrichtung für intelligente Speicheranordnungen.
  • Hintergrund
  • Die hierin bereitgestellte Hintergrundbeschreibung dient dazu, den Kontext der Offenlegung allgemein darzustellen. Sofern nicht anders angegeben handelt es sich bei den in diesem Abschnitt beschriebenen Materialien um keinen Stand der Technik bezüglich der Ansprüche der vorliegenden Anmeldung, und sie werden nicht aufgrund der Einbeziehung in diesen Abschnitt als Stand der Technik anerkannt.
  • Zu einer aufkommenden Generation fortgeschrittener Computersysteme können intelligente Speicher gehören. Intelligenter Speicher ist der gegenwärtig verwendete Begriff für die Bezugnahme auf ein Speicher-Untersystem mit Near-Data Processing (NDP)- oder In-Memory Processing (IMP)-Fähigkeiten sowie auf die Speicher-/Speicherungsmodule selbst. Der Speicher ist insofern intelligent, als dass die ergänzenden NDP- oder IMP-Fähigkeiten die Daten verarbeiten können, nachdem das Speicher-Untersystem die Daten empfängt.
  • Aus Leistungsgründen gehört zu der Speichersteuerung, die einen intelligenten Speicher unterstützt, typischerweise auch eine Hardware-implementierte physische Speicherverschachtelung. Die physische Speicherverschachtelung kann eine Leistungsverbesserung im Bereich von 20% - 30% bereitstellen, wenn die Software entsprechend gut zum Lesen/Schreiben von Daten auf der Cachespeicherzeilengrenze konzipiert ist. Die physische Speicherverschachtelung kann jedoch den potenziellen Nachteil der Fragmentierung der gespeicherten Daten haben. Folglich kann die Verarbeitung der fragmentierten Daten eine weitere Schicht der Zusammenführungsoperation erfordern (welche die Ergebnisse von zwei oder mehr verschachtelten Speicher-/Speicherungsmodulen zusammenführt), wodurch die zu erreichende Leistungssteigerung verringert werden kann. Es ist auch sehr schwierig oder unmöglich, eine Zusammenführungsoperation in einigen Fälle durchzuführen, bei denen der vollständige Datensatz komplett oder in einer Reihenfolge verarbeitet werden muss. Und die gesamte Leistungssteigerung würde verloren gehen, wenn die physische Speicherverschachtelung deaktiviert wird, um eine Datenfragmentierung zu verhindern.
  • Figurenliste
  • Ausführungsformen der Datenspeicher-/Ladetechnologie mit intelligentem Speicher der vorliegenden Offenbarung sind durch die nachfolgende detaillierte Beschreibung in Verbindung mit den beigefügten Zeichnungen besser verständlich. Um diese Beschreibung zu erleichtern, bezeichnen gleiche Bezugszahlen gleiche strukturelle Elemente. Ausführungsformen werden exemplarisch und in keiner Weise einschränkend in den Figuren der begleitenden Zeichnungen veranschaulicht.
    • 1 veranschaulicht eine Computervorrichtung, die die Datenspeicher-/Ladetechnologie mit intelligentem Speicher der vorliegenden Offenbarung gemäß verschiedener Ausführungsformen aufweist.
    • 2 veranschaulicht eine Seitentabelle für die Zuordnung von Speicherseiten eines virtuellen Adressraums zu verschachtelten Speicherrahmen eines intelligenten Speichers gemäß verschiedenen Ausführungsformen.
    • 3 veranschaulicht einen Treiber, der konfiguriert ist, um einen standortbewussten spezifischen Verweis auf speicherzugeordnete Gerätezugriffe gemäß den verschiedenen Ausführungsformen zu unterstützen.
    • 4 veranschaulicht einen beispielhaften standortbewussten Datenspeicher-/Ladeprozess mit intelligentem Speicher gemäß verschiedener Ausführungsformen.
    • 5 veranschaulicht ein beispielhaftes Computersystem, das zur Verwendung zum Ausüben von Aspekten der vorliegenden Offenbarung gemäß verschiedenen Ausführungsformen geeignet ist.
    • 6 veranschaulicht ein Speichermedium mit Anweisungen zum Ausüben von Verfahren, die unter Bezugnahme auf 1 bis 4 beschrieben sind, gemäß verschiedenen Ausführungsformen.
  • Detaillierte Beschreibung
  • In dieser Patentschrift werden Vorrichtungen, Verfahren und Speichermedien im Zusammenhang mit einer Datenspeicher-/Ladetechnologie mit intelligentem Speicher offenbart. In Ausführungsformen kann zu einer Vorrichtung ein Prozessor gehören; eine Vielzahl von Speichereinheiten; eine Speichersteuerung, die mit dem Prozessor und der Vielzahl von Speichereinheiten gekoppelt ist, um den Zugriff der Vielzahl von Speichereinheiten zu steuern, die Unterstützung für physische Hardware-Speicherverschachtelung beinhaltet; und einen oder mehrere Hardware-Datenverarbeitungslogikblöcke, die mit der Vielzahl von Speichereinheiten gekoppelt sind, um Near-Data Processing (Verarbeitung in der Nähe des Datenspeicherorts) für Daten bereitzustellen, die von der Vielzahl von Speichereinheiten empfangen werden. Zu der Vorrichtung kann ferner ein Treiber gehören, der durch den einen oder die mehreren Prozessoren betrieben wird, um Anwendungen zu unterstützen, die von dem Prozessor betrieben werden, um standortbewusste speicherzugeordnete Gerätezugriffe durchzuführen, um auf zusammenhängende Weise Daten selektiv in der Vielzahl von Speichereinheiten zu speichern oder aus ausgewählten der Vielzahl von Speichereinheiten oder Aggregationen von ausgewählten davon zu laden, wodurch die Fragmentierung vermindert oder eliminiert wird. Diese und weitere Aspekte werden nachfolgend ausführlicher beschrieben.
  • In der folgenden ausführlichen Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die Teil dieser bilden, wobei gleiche Bezugszahlen gleiche Teile durch die gesamten Ansichten bezeichnen, und in denen zur Veranschaulichung Ausführungsformen gezeigt sind, die ausgeübt werden können. Es versteht sich, dass andere Ausführungsformen benutzt und strukturelle oder logische Änderungen vorgenommen werden können, ohne von dem Schutzumfang der vorliegenden Offenbarung abzuweichen. Daher ist die folgende ausführliche Beschreibung nicht in einschränkendem Sinne aufzufassen, und der Schutzumfang der Ausführungsformen wird durch die angefügten Ansprüche und ihre Äquivalente definiert.
  • Aspekte der Offenbarung sind in der begleitenden Beschreibung offenbart. Alternative Ausführungsformen der vorliegenden Offenbarung und ihre Äquivalente können ersonnen werden, ohne sich vom Geist oder Umfang der vorliegenden Offenbarung zu entfernen. Es ist anzumerken, dass ähnliche Elemente, die nachfolgend offenbart sind, in den Zeichnungen durch gleiche Bezugszeichen bezeichnet sind.
  • Verschiedene Operationen können wiederum als mehrere diskrete Aktionen oder Operationen in einer Art und Weise beschrieben werden, die am hilfreichsten für das Verständnis des beanspruchten Gegenstands ist. Jedoch sollte die Reihenfolge der Beschreibung nicht so ausgelegt werden, dass damit angedeutet wird, dass diese Operationen notwendigerweise von der Reihenfolge abhängig sind. Insbesondere können diese Operationen nicht in der dargestellten Reihenfolge durchgeführt werden. Die beschriebenen Operationen können in einer anderen Reihenfolge als der beschriebenen Ausführungsform durchgeführt werden. Es können verschiedene weitere Operationen ausgeführt werden und/oder die beschriebenen Operationen können in weiteren Ausführungsformen weggelassen werden.
  • Für die Zwecke der vorliegenden Offenlegung bedeutet der Ausdruck „A und/oder B“ (A), (B) oder (A und B). Für die Zwecke der vorliegenden Offenlegung bedeutet der Ausdruck „A, B und/oder C“ (A), (B), (C), (A und B), (A und C), (B und C) oder (A, B und C).
  • Die Beschreibung kann die Ausdrücke „in einer Ausführungsform“ oder „in Ausführungsformen“ verwenden, die sich auf eine oder mehrere der gleichen oder auf unterschiedliche Ausführungsformen beziehen können. Des Weiteren sind die Begriffe „umfassend“, „einschließlich“, „aufweisen“ und dergleichen, wie in Bezug auf Ausführungsformen der vorliegenden Offenlegung verwendet, synonym.
  • Wie hierin verwendet kann der Begriff „Modul“ sich auf einen anwendungsspezifischen integrierten Schaltkreis (Application Specific Integrated Circuit, ASIC), eine elektronische Schaltung, eine programmierbare kombinatorische Logikschaltung (wie etwa ein feldprogrammierbares Gate-Array (Field Programmable Gate Array, FPGA)), einen Prozessor (mehrfach genutzt, dediziert oder Gruppe) und/oder Speicher (mehrfach genutzt, dediziert oder Gruppe), ausführend ein oder mehrere Software- oder Firmwareprogramme, eine kombinatorische Logikschaltung und/oder weitere geeignete Komponenten, welche die beschriebene Funktionalität bereitstellen, beziehen, Teil davon sein oder diese enthalten.
  • Es wird nun auf 1 Bezug genommen, in der eine Computervorrichtung gezeigt wird, die die Datenspeicher-/Ladetechnologie mit intelligentem Speicher der vorliegenden Offenbarung gemäß verschiedener Ausführungsformen aufweist. Wie in den Ausführungsformen veranschaulicht, können zu der Computervorrichtung 100 Hardware 101, Firmware (FW)/Basic Input/Output Services (BIOS) 106, ein Betriebssystem (Operating System, OS) 112 und Anwendungen 114 gehören, die wie gezeigt operativ miteinander gekoppelt sind. Zu der Hardware 101 können ein oder mehrere Prozessoren 102 (jeder mit einem oder mehreren Prozessorkernen und einer oder mehreren Speichersteuerungen 117), ein herkömmlichen Speicher 104 und eine Anzahl von intelligenten Speichern 105 gehören. In Ausführungsformen kann zu jedem intelligenten Speicher 105 eine Anzahl von Speicherblöcken 118 und NDP/IMP 116 gehören. In einigen Ausführungsformen kann die Anzahl von intelligenten Speichern 105 1, 2, 3, 4, 5, 6 und so weiter sein. In Ausführungsformen können die Speichersteuerungen 117 die Hardware-implementierte physische Speicherverschachtelung enthalten. Zum besseren Verständnis wird die Beschreibung im Kontext eines Prozessors 102 mit einer Speichersteuerung 117 dargestellt, aber die Beschreibung soll nicht als beschränkend betrachtet werden. Es wird in Erwägung gezogen, dass die Offenbarung mit einem oder mehreren Prozessoren ausgeübt werden kann, die jeweils eine oder mehrere Speichersteuerungen aufweisen.
  • Speicherplätze des herkömmlichen Speichers 104 und der Speicherblöcke 118 können in einer Anzahl von Speicherrahmen angeordnet sein. Typischerweise können die Größe einer Speicherseite und (wiederum) die Größe der Speicherrahmen von der Prozessor- und Speichersteuerungsimplementierung abhängig sein. In Ausführungsformen kann der herkömmliche Speicher 104 in 4KB-Speicherseiten angeordnet sein. Die Größe einer verschachtelten Zeile eines Rahmens kann gleich oder ein Vielfaches der Größe einer Speicherseite sein, und sie sind an der Grenze ausgerichtet. Bei einigen Ausführungsformen, bei denen die Speicherseiten 4KB groß sind und Daten in zwei intelligenten Speichern 105 verschachtelt werden sollen, kann die Größe einer Rahmenzeile 4KB, 8KB und so weiter betragen. Anders ausgedrückt, bei Ausführungsformen, bei denen eine Rahmenzeile 4KB beträgt, stammen die Adresse 0 bis 4KB-1 von dem ersten intelligenten Speicher 105, die Adressen 4KB bis 8KB-1 stammen von dem zweiten intelligenten Speicher 105, die Adressen 8KB bis 12KB-1 stammen von dem ersten intelligenten Speicher 105 und so weiter. In alternativen Ausführungsformen mit zusätzlicher Unterstützung des Prozessors 102, z. B. einer Seite für eine Zuordnungstabelle für verschachtelte Zeilen, kann die Größe einer verschachtelten Zeile kleiner als die Größe einer Speicherseite sein.
  • Zu dem Betriebssystem 112 kann ein Kernel 130 gehören, der konfiguriert sein kann, um zentrale Betriebssystemfunktionen/-dienste durchzuführen, z. B. Aufgabenplanung, Speicherverwaltung/-zuteilung und so weiter. Mit weiterer Bezugnahme auf 2 können Anwendungen 114 in ihren jeweiligen virtuellen Adressräumen 202 ausgeführt werden, wobei jeder eine Anzahl von virtuellen Speicherseiten, z. B. die virtuellen Speicherseiten 204a-204f, aufweist. Die virtuellen Speicherseiten 204a-204f können den physischen Speicherrahmen des herkömmlichen Speichers 104 oder den physischen Speicherrahmen der intelligenten Speicher 105 selektiv zugeordnet werden. In Ausführungsformen können beide Zuordnungen unter Verwendung von Seitentabellen durchgeführt werden, die den jeweiligen Speichern 104 und 105 zugewiesen sind, z. B. die beispielhafte Seitentabelle 206, die konfiguriert sein kann, um die virtuellen Speicherseiten 204a-204f einer Anwendung 114 verschiedenen verschachtelten Speicherrahmen 212-218 von intelligenten Speichern 105 zuzuordnen (wenn die Anwendung 114 aktiv ist). In Ausführungsformen können die Seitentabellen in einem Bereich des herkömmlichen Speichers 104 eingerichtet werden, der dem Betriebssystem 112 zugewiesen ist, und von dem Betriebssystem 112 in den zugewiesenen Bereich geladen werden, wenn der Ausführungskontext zu der Anwendung 112 wechselt. In Ausführungsformen kann der Prozessor 102 einen Übersetzungsnachschlagepuffer (Translation Lookaside Buffer, TLB) (nicht gezeigt) enthalten, um einen Teil der Seitentabellen (einschließlich der Seitentabelle 206 einer aktiven Anwendung) zwischenzuspeichern. Wenn ein zusammenhängender virtueller Adressbereich für das Lesen/Schreiben dient, kann der Prozessor 102 den zwischengespeicherten Teil der Leseseitentabelle 206 im TLB verwenden und die Anzahl physischer Rahmen des intelligenten Speichers 105 abrufen, der in der Hardwarekonfiguration verschachtelt ist.
  • Unter erneuter Bezugnahme auf 1 kann der Kernel 130 eine Anzahl von Treibern 132 enthalten, um mit verschiedenen Geräten des Computersystems 100 zu interagieren bzw. Schnittstellen zu bilden. In Ausführungsformen können die Treiber 132 mit einem speicherzugeordneten Gerätezugriffstreiber (Memory-Mapped Device Access Driver, SMEM) 132 konfiguriert sein, um Anwendungen 114 die Durchführung von speicherzugeordneten Gerätezugriffen mit dem herkömmlichen Speicher 104 oder dem intelligenten Speicher 105 zu erleichtern. Insbesondere kann der SMEM 132 konfiguriert sein, um die Seitentabelle 206 mit den Zuordnungen der virtuellen Speicherseiten 204a-204f eines virtuellen Adressraums 202 einer Anwendung 114 zu den Speicherrahmen von intelligenten Speichern 105 zu befüllen. Ferner kann der SMEM 132 in die Datenspeicher-/Ladetechnologie mit intelligentem Speicher der vorliegenden Offenbarung integriert sein. Der SMEM 132 kann konfiguriert sein, um auf eine Anforderung einer Anwendung 114 zu antworten, die für einzelne oder eine Aggregation ausgewählter intelligenter Speicher 105 spezifisch ist, und an die Anwendung 114 einen Bereich von virtuellen Adressen eines spezifischen intelligenten Speichers 105 oder einer spezifischen Aggregation von Speichereinheiten 105, die von der Anwendung 114 geöffnet werden, zurückzugeben.
  • Mit weiterer Bezugnahme auf 3 kann die Hardware 101 in beispielhaften Ausführungsformen sechs (6) intelligente Speicher 105a-105f umfassen, der SMEM 132 kann konfiguriert sein, um den Aufruf von SMEM0-SMEM5 132a-132f als entsprechende spezifische Anforderungen einer Anwendung 114 für virtuelle Adressbereiche der entsprechenden intelligenten Speicher 105a-105f zu erkennen. Folglich können die Anwendungen 114 ein standortbewusstes Datenspeicher- oder Ladeverfahren durchführen, um auf zusammenhängende Weise Daten in ausgewählte der intelligenten Speicher 105a-105f zu speichern oder zu laden, um das Problem der Datenfragmentierung zu verringern oder zu verhindern, welches durch die Hardware-implementierte physische Speicherverschachtelung verursacht wird. In alternativen Ausführungsformen kann der SMEM 132 auch konfiguriert sein, um den Aufruf von SMEM01, SMEM23, SMEM45 als den spezifischen Anforderungen einer Anwendung 114 für virtuelle Adressbereiche von drei entsprechenden kombinierten/aggregierten intelligenten Speichereinheiten 105a-105b, 105c-105d und 105e-105f entsprechend zu erkennen. Folglich können die Anwendungen 114 ein standortbewusstes Datenspeicher- oder Ladeverfahren durchführen, um auf zusammenhängende Weise Daten in ausgewählte von drei Paaren von kombinierten/aggregierten intelligenten Speichern 105a-105b, 105c-105d und 105e-105f zu speichern oder zu laden, um das Problem der Datenfragmentierung zu verringern oder zu verhindern, welches durch die Hardware-implementierte physische Speicherverschachtelung verursacht wird. In alternativen Ausführungsformen können die kombinierten/aggregierten intelligenten Speichereinheiten 105a-105f mehr als 2 Einheiten darstellen und können Speichereinheiten sein, die nicht benachbart zueinander sind.
  • In Ausführungsformen kann der SMEM 132 die Zuordnungsinformation der intelligenten Speicher 105 aus Konfigurationstabellen des Computersystems 100 entnehmen, das die Information besitzt, z. B. die von FW/BIOS 106 verwaltete APCI (Advanced Configuration Power Interface)-Tabelle, und die virtuellen Adressbereiche der intelligenten Speicher 105 aus der erhaltenen Zuordnungsinformation berechnen. In alternativen Ausführungsformen kann der SMEM 132 die Zuordnungsinformation durch Auffinden der Speicherkanäle erhalten, an denen die intelligenten Speicher 105 angeschlossen sind. In Ausführungsformen kann der SMEM 132 Informationen wie Kanäle, Größen und so weiter von intelligenten Speichern 105 unter Verwendung einer serielle Anwesenheitserkennung oder anderer bekannter Erkennungsmethoden auffinden. Nach dem Auffinden kann der SMEM 132 die Zuordnungsinformation des physischen Speichers berechnen. Ferner kann der SMEM-Treiber 132 die physische Adressenzuordnung nach der Verschachtelung für die intelligenten Speicher 105 durch Erkennen von Registern auf Hardwareebene zum Verständnis der konfigurierten Verschachtelungseinstellungen bilden.
  • Unter erneuter Bezugnahme auf 1 kann der Prozessor 102 ein beliebiger einer Anzahl von auf dem Fachgebiet bekannten Prozessoren sein, die einen oder mehrere Prozessorkerne aufweisen. In alternativen Ausführungsformen kann die Speichersteuerung 117 außerhalb des Prozessors 102 angeordnet sein. Ebenso kann der herkömmliche Speicher 104 ein beliebiger auf dem Fachgebiet bekannter flüchtiger oder nichtflüchtiger Speicher sein, der zum Speichern von Daten geeignet ist. Der Speicher 104 kann eine Hierarchie aus Cachespeicher und Systemspeicher umfassen. Sowohl der Cachespeicher als auch der Systemspeicher können jeweils in Cacheseiten und Speicherseiten angeordnet sein. In gleicher Weise können die intelligenten Speicher 105 eine beliebige Anzahl von herkömmlichen Speicher-/Speicherungsmodulen sein, einschließlich, aber nicht beschränkt auf Dual-Inline-Speichermodule (Dual Inline Memory Modules, DIMM), synchrone dynamische Speichervorrichtungen mit wahlfreiem Zugriff (Soldered Down Synchronous Random Access Memory, SDRAM) auf der Systemplatine, gemeinsamen Speicher, Speicherung als Speicher, nichtflüchtiges DIMM und so weiter. NDP/IMP 116 kann mit ASIC oder einer beliebigen von einer Anzahl von programmierbaren Schaltungen, einschließlich, aber nicht beschränkt auf FPGA, implementiert sein. Ferner kann NDP/IMP 116 in alternativen Ausführungsformen außerhalb der intelligenten Speicher 105 liegen, z. B. bei dem Prozessor 102, und kann mehrere der intelligenten Speicher 105 bedienen.
  • In Ausführungsformen kann die Hardware 101 ferner wie gezeigt Eingabe/Ausgabe (E/A)-Geräte 108 oder andere Elemente (nicht gezeigt) enthalten. Beispiele für E/A-Geräte 108 können Kommunikations- oder Netzwerkschnittstellen enthalten, wie etwa Ethernet, WiFi, 3G/4G, Bluetooth®, Nahfeldkommunikation, USB (Universal Serial Bus) und so weiter, Speichervorrichtungen, wie etwa Solid-State-, magnetische und/oder optische Laufwerke, Eingabegeräte, wie etwa Tastatur, Maus, berührungsempfindlicher Bildschirm und so weiter, und Ausgabegeräte, wie etwa Anzeigevorrichtungen, Drucker und so weiter.
  • FW/BIOS 106 kann ein beliebiges aus einer Anzahl von FW/BIOS sein, das auf dem Fachgebiet bekannt ist. Das Betriebssystem 112, mit Ausnahme der Lehren der vorliegenden Offenbarung, kann ebenfalls ein beliebiges einer Anzahl von Betriebssystemen sein, die auf dem Fachgebiet bekannt sind, z. B. das Windows-Betriebssystem von Microsoft® Corporation oder Linux. Obwohl zum besseren Verständnis beschrieben worden ist, dass der SMEM 132 konfiguriert ist, um die Anforderung von virtuellen Adressbereichen von spezifischen intelligenten Speichern 105 oder Aggregation von intelligenten Speichern 105 zu erkennen, kann der SMEM 132 in alternativen Ausführungsformen konfiguriert sein, um die Anforderung von virtuellen Adressbereichen von bestimmten Teilen von intelligenten Speichern 105 zu erkennen, um so den Anwendungen 114 zu ermöglichen, eine zusammenhängende standortbewusste Datenspeicherung/-ladung in spezifischen Gruppen von Speicherblöcken 118 eines intelligenten Speichers 105 auszuüben. Somit kann sich der Begriff der Speichereinheit wie hierin verwendet auf einen Speicherblock oder eine Gruppe von Speicherblöcken in einem intelligenten Speicher 105 oder auf einen intelligenten Speicher 105 beziehen. Die Anwendungen 114 können, mit Ausnahme ihrer Ausübung des standortbewussten Speicherns/Ladens unter Einsatz der Datenspeicher-/Ladetechnologie mit intelligentem Speicher der vorliegenden Offenbarung zum Verringern/Verhindern von Datenfragmentierung bei Verwendung des intelligenten Speichers 105, ebenfalls eine beliebige von einer Anzahl von auf dem Fachgebiet bekannten Anwendungen sein.
  • Es wird nun auf 4 Bezug genommen, in der ein beispielhafter Datenspeicher-/Ladeprozess eines intelligenten Speichers gemäß verschiedener Ausführungsformen gezeigt wird. Wie veranschaulicht kann der Prozess 400 zum Speichern von Daten in einem intelligenten Speicher Operationen enthalten, die in den Blöcken 402-408 durchgeführt werden. Die Operationen in den Blöcken 402-408 können durch das zuvor beschriebene Betriebssystem 112, insbesondere den SMEM 132 und die Anwendungen 114, durchgeführt werden.
  • Der Prozess 400 kann bei Block 402 beginnen. Bei Block 402 kann die Anzahl von intelligenten Speichern erkannt werden, und die Konfiguration zur Unterstützung des standortbewussten Speicherns/Ladens auf zusammenhängende Weise kann bestimmt werden,
    z. B. durch SMEM 132. Die Konfiguration kann in Übereinstimmung mit Eingaben von einem Systemadministrator oder in Übereinstimmung mit einer Standardspezifikation bestimmt werden. Die Konfiguration kann für die Anwendungen in einer beliebigen einer Anzahl bekannter Arten verfügbar gemacht werden, z. B. über die APCI-Konfigurationstabellen. Bei Block 404 kann bei der Bestimmung ein speicherzugeordneter Gerätezugriffstreiber, z. B. SMEM 132, konfiguriert (oder selbstkonfiguriert) werden, um Anforderungen von Anwendungen für virtuelle Adressbereiche von spezifischen (Aggregation von) intelligenten Speichern (oder, in einigen Ausführungsformen, Teilen davon) zu erkennen.
  • Als Nächstes kann bei Block 406 eine Anwendung 114 spezifische einzelne oder Aggregationen der intelligenten Speicher (oder, in alternativen Ausführungsformen, Teile davon) selektiv öffnen und insbesondere die virtuellen Adressbereiche von einzelnen oder Aggregationen der intelligenten Speicher (oder, in alternativen Ausführungsformen, einzelnen Teilen) anfordern. In Linux-Ausführungsformen kann die Anwendung 114 einen spezifischen einzelnen oder eine Aggregation des intelligenten Speichers öffnen und die spezifische speicherzugeordnete Anforderung des virtuellen Adressbereichs des geöffneten intelligenten Speichers oder der Aggregation (oder des Teils) unter Verwendung der Aufrufe Open und MMap aufrufen. Bei Block 408 kann die Anwendung 114 das standortbewusste Speichern/Laden von Daten in den spezifischen intelligenten Speicher oder die Aggregation (oder den Teil) durchführen, um das Problem der Datenfragmentierung zu verringern oder zu verhindern, welches durch die Hardware-implementierte physische Speicherverschachtelung verursacht wird.
  • Nachfolgend wird ein Beispiel zur Veranschaulichung der Verwendung der Datenspeicher-/Ladetechnologie mit intelligentem Speicher der vorliegenden Offenbarung zur Verringerung oder Verhinderung des Problems der Datenfragmentierung, das durch die Hardware-implementierte physische Speicherverschachtelung verursacht wird, gezeigt, wenn Daten in einem intelligentem Speicher gespeichert werden. Angenommen eine beispielhafte Datenbank mit Schülern weist eine oder mehrere Tabellen mit entsprechenden Spalten auf, um die Namen der Schüler, Geburtsdatum, Größe, Gewicht und Einkommen der Schülereltern zu speichern. Für die aktuelle standortunabhängige Programmiermethodik würde eine Anwendung in einer Linux-Umgebung open/dev/mem ausgeben, um den intelligenten Speicher zu öffnen, und dann mmap aufrufen, um die Speicherzuordnung zu erhalten. Im Anschluss kann die Anwendung in den zugeordneten Speicher schreiben: [Schüler1] [Name], [Schüler1] [Geburtsdatum], [Schüler1] [Größe], [Schüler1] [Gewicht], [Schüler1] [Elterneinkommen], [Schüler2] [Name], [Schüler2] [Geburtsdatum], [Schüler2] [Größe], [Schüler2] [Gewicht], [Schüler2] [Elterneinkommen], [Schüler3] [Name] etc. Wenn die Daten in dem intelligenten Speicher gespeichert werden, werden die von der Hardware verschachtelten Daten so über die mehreren intelligenten Speicher fragmentiert.
  • Mit der Datenspeichertechnologie mit intelligentem Speicher der vorliegenden Offenbarung kann die Anwendung jedoch eine standortbewusste Programmiermethodik ausüben. Bei einer beispielhaften Linux-Ausführungsform, bei der die intelligenten Speichereinheiten einzeln erkannt werden, kann die Anwendung open/dev/smem1 ausgeben, um insbesondere den intelligenten Speicher 0 zu öffnen, dann mmap aufrufen, um die Speicherzuordnung zu erhalten, open/dev/smem2 ausgeben, um insbesondere den intelligentem Speicher 1 zu öffnen, und dann mmap aufrufen, um die Speicherzuordnung für so viele intelligente Speicher wie erforderlich und verfügbar zu erhalten. Die Anwendung kann dann [Schüler1][Name], [Schüler2][Name], [Schüler3][Name] und so weiter in dem ersten zugeordneten intelligenten Speicher (der SMEM1 entspricht) speichern, [Schülerl] [Geburtsdatum], [Schüler2][Geburtsdatum], [Schüler3] [Geburtsdatum] und so weiter in dem zweiten zugeordneten intelligenten Speicher (der SMEM2 entspricht) speichern und so weiter. Daten können in mehreren Datensätzen verschachtelt werden. Durch die zuvor beschriebene Seitentabelle würde sichergestellt werden, dass jeder Datensatz in zusammenhängender Reihenfolge in dem intelligenten Speicher gespeichert wird. Tatsächlich defragmentiert der Prozess die durch die Hardware-implementierte physische Speicherverschachtelung verursachte Fragmentierung des intelligenten Speichers.
  • In diesem Beispiel speichert jeder einzeln erkannte intelligente Speicher eine Spalte der Datenbank. Wenn die Suche nach den Daten durchgeführt wird, beispielsweise für eine Suche, um zu bestimmen, welche Schüler zwischen 1,20 m und 1,40 m groß sind, kann der dritte intelligente Speicher die Suche durchführen. Verschiedene Suchanforderungen können auch parallel an verschiedene intelligente Speicher gesendet werden. Im Ergebnis können intelligente Speicheroperationen von einer Hardware-Verschachtelungskonfiguration profitieren, während gleichzeitig andere Operationen in demselben System weiterhin von der Hardware-Verschachtelungskonfiguration profitieren.
  • In einer realen Datenbankumgebung kann eine Anwendung so viele Spalten oder Spalten aufweisen, wie von einer Datenbank benötigt werden, um in einem intelligenten Speicher in zusammenhängender Weise anzukommen (wie durch das NDP/IMP des intelligenten Speichers gesehen), obwohl die Einstellung der Plattform auf Verschachtelung gesetzt ist. Ein anderer intelligenter Speicher kann verwendet werden, um einen anderen Satz von Spalten oder eine andere Datenbank aufzunehmen, wie es in der zusammenhängenden Weise erforderlich ist, wie durch die Beschleunigungslogik gesehen.
  • In einigen Ausführungsformen kann der intelligente Speicher als normaler Speicher arbeiten, wenn das NDP für eine bestimmte Operation nicht erforderlich ist. Das Grundkonzept ist, dass ein intelligenter Speicher als normaler Speicher arbeiten kann, wenn die standortunabhängige Anwendung open/dev/mem ausgibt, um den intelligenten Speicher zu öffnen, und dann mmap ausgibt. Die Hardware-Implementierung der Verschachtelung wird bei dieser Operation bevorzugt, um die Leistung der normalen Speicheranwendungen aufrechtzuerhalten. In anderen Ausführungsformen können verschiedene Betriebsbereiche für einen intelligenten Speicher implementiert werden, z. B. einen für den normalen Betrieb, einen weiteren für den intelligenten Betrieb. In noch anderen Ausführungsformen können der einzelne intelligente Speicher und der einzelne normale Speicher untereinander verschachtelt sein. Die vorliegende Offenbarung ermöglicht die Koexistenz von Verschachtelung und intelligentem Speicher. Die Benutzer müssen nicht auf die Vorteile der Hardware-Verschachtelungskonfiguration verzichten, wenn sie einen intelligenten Speicher verwenden.
  • Nachfolgend wird ein Beispiel für unterschiedliche Verwendungsbereiche eines intelligenten Speichers gezeigt. Ein beispielhaftes System kann sechs intelligente DIMMs mit durch Hardware erzwungener Verschachtelung aufweisen, wobei jeder intelligente DIMM 64 GB Speicher aufweisen kann, wodurch insgesamt 384 GB Speicher bereitstellt werden. Der Benutzer kann entscheiden, dass das System nur 64 GB für den Betriebssystem- und Anwendungsbetrieb benötigt. Der Rest des Speichers, 320 GB, kann für eine In-Memory-Datenbank (IMDB) verwendet werden. So kann der Benutzer bestimmte Systemkonfigurationsparameter festlegen, um 64 GB des intelligenten Speichers für das Betriebssystem und die Anwendungen zurückzustellen. Nach dem Hochfahren arbeiten das Betriebssystem und die Anwendungen innerhalb der zurückgestellten Speicherkapazität von 64 GB. Aus physischer Sicht trägt jedes intelligente DIMM einen Teil des Speichers (10,66 GB) bei, den das Betriebssystem und die Anwendung ausführen und verwenden können. Die IMDB-Anwendung weiß, dass ein Teil von 320 GB frei ist, sodass die Datenbank in den 320 GB resident ist.
  • Heute würde die IMDB-Anwendung den speicherzugeordneten Gerätezugriffstreiber aufrufen, um Zugriff auf den Speicher mit 320 GB zu erhalten. Wenn Daten in dem Teil mit 320 GB gespeichert werden, verschachtelt die Hardware die Daten in den sechs intelligenten DIMMs. Ohne die vorliegende offenbarte Technologie würde ein Strom von zusammenhängenden Daten fragmentiert und auf die sechs intelligenten DIMMs verteilt werden.
  • Mit der vorliegenden Offenbarung kann jedoch eine Anwendung den spezifischen intelligenten Speicher aufrufen; in einer beispielhaften Linux-Umgebung /dev/smem1, /dev/smem2 bis /dev/smem6. Im Anschluss kann die IMDB-Anwendung Daten von/zu smeml in zusammenhängender Weise, smem2 in zusammenhängender Weise, ..., und smem6 in zusammenhängender Weise speichern/laden. Die vorliegende Offenbarung ermöglicht es der IMDB-Anwendung, Daten auf Softwareebene zu verschachteln, was bedeutet, dass die IMDB-Anwendung viele Datensätze erzeugen kann und einen oder mehrere Datensätze entsprechend in smeml oder 2 bis 6 speichern kann. Der komplette Datensatz kann auf, durch oder von smeml oder 2 bis 6 gespeichert, verarbeitet oder geladen werden. Die Datenspeicherung oder - verarbeitung oder -ladung kann auch parallel auf, durch oder von smeml und 2 bis 6 erfolgen.
  • Anders ausgedrückt kann im Allgemeinen bei einer intelligente Speicheranordnung mit n Dual-Inline-Speichermodulen (DIMMs), von denen jedes eine Größe von m GB aufweist, jedes davon k/n von m GB Speicherplätze zur Datenspeicherung beitragen, die kein NDP/IMP benötigen, wie etwa, ohne darauf beschränkt zu sein, das Betriebssystem oder Speicherlücken für ein speicherzugeordnetes E/A-Gerät, und die verbleibenden m-k/n GB Speicherplätze von jedem der n DIMMs können zurückgestellt werden, um Anforderungen an die Datenspeicherung mit hoher Geschwindigkeit und niedriger Latenz einer Anwendung zu erfüllen, die NDP/IMP benötigt, wie etwa, ohne darauf beschränkt zu sein, eine In-Memory-Datenbank.
  • 5 zeigt ein beispielhaftes Computersystem, das zur Verwendung für die Ausübung ausgewählte Aspekte der vorliegenden Offenbarung geeignet sein kann. Wie gezeigt kann das Computersystem 500 einen oder mehrere Prozessoren oder Prozessorkerne 502 mit Enklaven-Unterstützung für die Anwendungsausführung, einen Nur-Lese-Speicher (Read-Only Memory, ROM) 503 und einen Systemspeicher 504 enthalten. Zusätzlich kann das Computersystem 500 Massenspeichergeräte 506 umfassen. Ein Beispiel für Massenspeichergeräte 506 kann Bandlaufwerke, Festplatten, CD-ROM (Compact Disc Read-Only Memory) und so weiter enthalten, ist jedoch nicht darauf beschränkt. Ferner kann das Computersystem 500 Eingabe-/Ausgabegeräte 508 (wie etwa eine Anzeigevorrichtung, Tastatur, Cursorsteuerung und so weiter) und Kommunikationsschnittstellen 510 (wie etwa Netzwerkschnittstellenkarten, Modems und so weiter) enthalten. Die Elemente können über den Systembus 512, der einen oder mehrere Busse darstellen kann, miteinander gekoppelt werden. Im Falle von mehreren Bussen können diese durch eine oder mehrere Busbrücken überbrückt werden (nicht dargestellt).
  • Jedes dieser Elemente kann seine im Fachgebiet bekannten Funktionen durchführen. Insbesondere kann der ROM 503 Basic Input/Output Services (BIOS) 505 umfassen. Der Systemspeicher 504 und die Massenspeichergeräte 506 können verwendet werden, um eine Arbeitskopie und eine dauerhafte Kopie der Programmieranweisungen zu speichern, die die Operationen implementieren, die den Anwendungen 114 und/oder dem Betriebssystem 112, einschließlich des Kerns 130 mit Treibern (insbesondere SMEM) 132, wie vorstehend beschrieben, die gemeinsam als Berechnungslogik 522 bezeichnet werden, zugewiesen sind. Die verschiedenen Elemente können durch Assembler-Befehle implementiert werden, die von Prozessor(en) 502 oder höheren Programmiersprachen, wie beispielsweise C, unterstützt werden, die in solche Befehle kompiliert werden können.
  • Die Anzahl, Fähigkeit und/oder Kapazität dieser Elemente 510-512 kann unterschiedlich sein, abhängig davon, ob das Computersystem 500 als ein mobiles Gerät, ein Smartphone, ein Tablet-Computer, ein Laptop und so weiter oder als eine stationäre Vorrichtung, wie etwa ein Desktop-Computer, ein Server, eine Spielekonsole, eine Set-Top-Box, eine Infotainment-Konsole und so weiter verwendet wird. Anderweitig sind die Zusammensetzungen dieser Elemente 510-512 bekannt und werden dementsprechend nicht weiter beschrieben.
  • Wie für Fachleute auf dem Gebiet ersichtlich ist, kann die vorliegende Offenbarung als Verfahren oder Computerprogrammprodukte verkörpert sein. Dementsprechend kann die vorliegende Offenbarung zusätzlich zu der Tatsache, dass sie in Hardware wie zuvor beschrieben verkörpert ist, die Form einer vollständigen Software-Ausführungsform (einschließlich Firmware, residente Software, Mikrocode etc.) oder eine Ausführungsform annehmen, die Software- und Hardwareaspekte kombiniert, die im Allgemeinen zusammen als „Schaltung“, „Modul“ oder „System“ bezeichnet werden können. Ferner kann die vorliegende Offenbarung die Form eines Computerprogrammprodukts annehmen, das in einem beliebigen greifbaren oder nichtflüchtigen Ausdrucksmedium verkörpert ist, das einen computerverwendbaren Programmcode aufweist, der in dem Medium verkörpert ist. 6 zeigt ein beispielhaftes computerlesbares nicht-transitorisches Speichermedium, das zur Verwendung zum Speichern von Anweisungen geeignet sein kann, die eine Vorrichtung in Reaktion auf die Ausführung der Anweisungen durch die Vorrichtung veranlassen, ausgewählte Aspekte der vorliegenden Offenbarung auszuüben. Wie gezeigt kann das nichtflüchtige computerlesbare Speichermedium 602 eine Reihe von Programmierbefehlen 604 umfassen. Die Programmieranweisungen 604 können konfiguriert sein, um ein Gerät, z. B. das Computersystem 500, in Reaktion auf die Ausführung der Programmieranweisungen zu befähigen, (Aspekte des) Betriebssystems 112, einschließlich des Kernels 130 mit Treibern (insbesondere SMEM) 132, und/oder Anwendungen 114 zu implementieren. In alternativen Ausführungsformen können die Programmieranweisungen 604 stattdessen auf mehreren computerlesbaren nichtflüchtigen Speichermedien 602 angeordnet sein. In noch anderen Ausführungsformen können die Programmieranweisungen 604 auf computerlesbaren vorübergehenden Speichermedien 602, wie z. B. Signalen, angeordnet sein.
  • Jede Kombination von einem oder mehreren computerverwendbaren oder computerlesbaren Medium(s) kann verwendet werden. Das computerverwendbare oder computerlesbare Medium kann beispielsweise ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem bzw. -vorrichtung, -gerät oder -ausbreitungsmedium sein, ist jedoch nicht darauf beschränkt. Spezifischere Beispiele (eine nicht erschöpfende Liste) des computerlesbaren Mediums würden Folgendes umfassen: eine elektrische Verbindung mit einem oder mehreren Drähten, eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (Random Access Memory, RAM), einen Nur-Lese-Speicher (Read-Only Memory, ROM), einen löschbaren programmierbaren Nur-Lese-Speicher (Erasable Programmable Read-Only Memory, EPROM, oder Flash-Speicher), ein optische Faser, einen tragbaren CD-ROM (Compact Disc Read-Only Memory, CD-ROM), ein optisches Speichergerät, ein Übertragungsmedium wie etwa solche, die Internet oder Intranet unterstützen, oder ein magnetisches Speichergerät. Zu beachten ist, dass das computerverwendbare oder computerlesbare Medium sogar Papier oder ein anderes geeignetes Medium sein kann, auf dem das Programm gedruckt wird, da das Programm beispielsweise durch optisches Scannen des Papiers oder eines anderen Mediums elektronisch erfasst und dann kompiliert, interpretiert oder anderweitig in geeigneter Weise verarbeitet werden, falls erforderlich, und dann in einem Computerspeicher gespeichert werden kann. Im Kontext dieses Dokuments kann ein computerverwendbares oder computerlesbares Medium jedes Medium sein, das das Programm zur Verwendung durch oder in Verbindung mit dem/der Befehlsausführungssystem, -vorrichtung oder -gerät enthalten, speichern, enthalten, speichern, kommunizieren, verbreiten oder transportieren kann. Das computerverwendbare Medium kann ein verbreitetes Datensignal mit dem damit verkörperten computerverwendbaren Programmcode entweder im Basisband oder als Teil einer Trägerwelle enthalten. Der computerverwendbare Programmcode kann unter Verwendung eines beliebigen geeigneten Mediums übertragen werden, einschließlich, jedoch nicht beschränkt auf, drahtlose, drahtgebundene, optische Faserkabel, HF etc.
  • Der Computerprogrammcode zum Ausführen von Operationen der vorliegenden Offenbarung kann in einer beliebigen Kombination von einer oder mehreren Programmiersprachen geschrieben sein, einschließlich einer objektorientierten Programmiersprache wie etwa Java, Smalltalk, C++ oder dergleichen, und herkömmlichen prozeduralen Programmiersprachen, wie etwa die Programmiersprache „C“ oder ähnliche Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernten Computer oder vollständig auf dem entfernten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernte Computer mit dem Computer des Benutzers durch eine beliebige Art von Netzwerk verbunden sein, einschließlich eines lokalen Netzwerks (Local Area Network, LAN) oder eines Weitverkehrsnetzwerks (Wide Area Network, WAN), oder die Verbindung kann zu einem externen Computer (beispielsweise über das Internet mit einem Internet Service Provider) hergestellt werden.
  • Die vorliegende Offenbarung wird unter Bezugnahme auf Flussdiagrammdarstellungen und/oder Blockdiagramme von Verfahren, Vorrichtungen (Systeme) und Computerprogrammprodukten gemäß Ausführungsformen der Offenbarung beschrieben. Es versteht sich, dass jeder Block der Flussdiagrammdarstellungen und/oder Blockdiagramme und Kombinationen von Blöcken in den Flussdiagrammdarstellungen und/oder Blockdiagrammen durch Computerprogrammanweisungen implementiert werden kann. Diese Computerprogrammanweisungen können einem Prozessor eines Allzweckcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zum Implementieren der Funktionen/Handlungen erzeugen, die in dem Flussdiagramm und/oder dem Blockdiagrammblock festgelegt sind.
  • Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung anweisen kann, in einer bestimmten Weise zu funktionieren, sodass die auf dem computerlesbaren Medium gespeicherten Anweisungen einen Fertigungsgegenstand mit einem Mittel für Anweisungen erzeugen, die die Funktion/Handlung implementieren, die in dem Block oder Blöcken des Flussdiagramms und/oder Blockdiagramms festgelegt sind.
  • Die Computerprogrammanweisungen können auch auf einen Computer oder eine andere programmierbare Datenverarbeitungsvorrichtung geladen werden, um zu veranlassen, dass eine Reihe von Verfahrensschritten auf dem Computer oder einer anderen programmierbaren Vorrichtung durchgeführt wird, um einen computerimplementierten Prozess zu erzeugen, sodass die Anweisungen, die auf dem Computer oder der anderen programmierbaren Vorrichtungen ausgeführt werden, Prozesse zum Implementieren der Funktionen/Handlungen bereitstellen, die in dem Block oder Blöcken des Flussdiagramms und/oder Blockdiagramms festgelegt sind.
  • Die Flussdiagramme und Blockdiagramme in den Figuren veranschaulichen die Architektur, Funktionalität und den Betrieb möglicher Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung. In dieser Hinsicht kann jeder Block in den Flussdiagrammen oder den Blockdiagrammen ein Modul, ein Segment oder einen Codeabschnitt darstellen, der eine oder mehrere ausführbare Anweisungen zum Implementieren der festgelegten logischen Funktion(en) umfasst. Es ist auch festzuhalten, dass in einigen alternativen Implementierungen die in dem Block notierten Funktionen außerhalb der in den Figuren angegebenen Reihenfolge auftreten können. Beispielsweise können zwei Blöcke, die nacheinander gezeigt sind, tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können mitunter in der umgekehrten Reihenfolge ausgeführt werden, abhängig von der involvierten Funktionalität. Es ist auch festzuhalten, dass jeder Block der Blockdiagramme und/oder der Flussdiagrammdarstellung und Kombinationen von Blöcken in den Blockdiagrammen und/oder in der Flussdiagrammdarstellung durch spezielle Hardware-basierte Systeme, die die festgelegten Funktionen oder Handlungen ausführen, oder Kombinationen von spezieller Hardware und Computeranweisungen implementiert werden kann.
  • Die hierin verwendeten Begriffsbestimmungen dienen dem Zweck des Beschreibens bestimmter Ausführungsformen und sind nicht dazu gedacht, die Erfindung zu beschränken. Wie hierin verwendet sollen die Artikel „ein, eine“ und „der, die, das“ den Plural ebenso wie den Singular einschließen, sofern der Kontext nicht ausdrücklich etwas anderes angibt. Zudem versteht sich, dass die Begriffe „umfasst“ und/oder „umfassend“ , wie in dieser Beschreibung verwendet, das Vorhandensein der angegebenen Merkmale, Ganzzahlen, Schritte, Operationen, Elemente und/oder Komponenten, wie bezeichnet, spezifizieren, doch das Vorhandensein oder den Zusatz eines oder mehrerer weiterer Merkmale, Ganzzahlen, Schritte, Operationen, Elemente, Komponenten und/oder ganzer Gruppen davon, nicht ausschließen.
  • Ausführungsformen können als ein Computerprozess, ein Computersystem oder als ein Fertigungsgegenstand, wie etwa ein Computerprogrammprodukt von computerlesbaren Medien, implementiert werden. Das Computerprogrammprodukt kann ein Computerspeichermedium sein, das durch ein Computersystem lesbar ist, und das ein Computerprogramm zum Ausführen eines Computerprozesses kodiert.
  • Die entsprechenden Strukturen, Materialien, Handlungen und Äquivalente aller Mittel oder Schritte plus Funktionselemente in den nachfolgenden Ansprüchen sollen jede beliebige Struktur, Materialien oder Handlungen zum Durchführen der Funktion in Kombination mit anderen beanspruchten Elementen enthalten, die spezifisch beansprucht werden. Die Beschreibung der vorliegenden Offenbarung wurde zum Zwecke der Veranschaulichung und Beschreibung vorgelegt, soll jedoch nicht erschöpfend sein oder sich auf die Offenbarung in der offenbarten Form beschränken. Viele Abwandlungen und Änderungen ergeben sich für Fachleute auf dem Gebiet, ohne von dem Umfang und Geist der Offenbarung abzuweichen. Die Ausführungsform wurde ausgewählt und beschrieben, um die Prinzipien der Erfindung und der praktischen Anwendung zu erklären und andere Fachleute auf dem Gebiet dazu in die Lage zu versetzen, die Erfindung für verschiedene Ausführungsformen mit verschiedenen Abwandlungen, die für einen bestimmten beabsichtigten Nutzen erwogen werden, nachzuvollziehen.
  • Unter erneuter Bezugnahme auf 5 kann bei einer Ausführungsform mindestens einer der Prozessoren 502 in einem Paket mit einem Speicher gebündelt sein, der Aspekte des Betriebssystems 112, einschließlich des Kernels 130 mit Treibern (insbesondere SMEM) 132, aufweist. Bei einer Ausführungsform kann mindestens einer der Prozessoren 502 in einem Paket mit einem Speicher gebündelt sein, der Aspekte des Betriebssystems 112, einschließlich des Kernels 130 mit Treibern (insbesondere SMEM) 132 aufweist, um ein System-in-Package (SiP) zu bilden. Bei einer Ausführungsform kann mindestens einer der Prozessoren 502 auf derselben Matrize mit einem Speicher integriert sein, der Aspekte des Betriebssystems 112 aufweist, z. B. einen Kernel 130 mit Treibern (insbesondere SMEM) 132 enthält. Bei einer Ausführungsform kann mindestens einer der Prozessoren 502 in einem Paket mit einem Speicher gebündelt sein, der Aspekte des Betriebssystems 112, einschließlich des Kernels 130 mit Treibern (insbesondere SMEM) 132 aufweist, um ein Ein-Chip-System (System-on- Chip, SoC) zu bilden. Bei mindestens einer Ausführungsform kann das SoC beispielsweise in einem Smartphone oder Tablet-Computer verwendet werden, ist aber nicht darauf beschränkt.
  • Somit wurden verschiedene beispielhafte Ausführungsformen der vorliegenden Offenbarung beschrieben, einschließlich, ohne darauf beschränkt zu sein:
  • Beispiel 1 kann eine Vorrichtung zur Berechnung sein, umfassend: einen Prozessor; eine Vielzahl von Speichereinheiten; eine Speichersteuerung, die mit dem Prozessor und der Vielzahl von Speichereinheiten gekoppelt ist, um den Zugriff der Vielzahl von Speichereinheiten zu steuern, die Unterstützung für physische Hardware-Speicherverschachtelung beinhaltet; einen oder mehrere Hardware-Datenverarbeitungslogikblöcke, die mit der Vielzahl von Speichereinheiten gekoppelt sind, um Near-Data Processing für Daten bereitzustellen, die von der Vielzahl von Speichereinheiten empfangen werden; und einen Treiber, der von dem Prozessor betrieben wird, um Anwendungen zu unterstützen, die von dem Prozessor betrieben werden, um standortbewusste speicherzugeordnete Gerätezugriffe durchzuführen, um auf zusammenhängende Weise Daten selektiv in der Vielzahl von Speichereinheiten zu speichern oder Daten aus ausgewählten oder aggregierten der Vielzahl von Speichereinheiten zu laden.
  • Beispiel 2 kann Beispiel 1 sein, wobei der Treiber für die Anwendung zusammenhängende virtuelle Adressen erhalten kann, die für eine Speichereinheit oder eine Aggregation von ausgewählten der Vielzahl von Speichereinheiten zugeordnet sind.
  • Beispiel 3 kann Beispiel 2 sein; wobei, um die standortbewussten speicherzugeordneten Gerätezugriffe auszuführen, eine Anwendung den Treiber aufrufen kann, um eine oder eine Aggregation der Vielzahl von Speichereinheiten zu öffnen, den Treiber insbesondere aufrufen kann, um zusammenhängende virtuelle Adressen zu erhalten, die der geöffneten einen der Aggregation von den Speichereinheiten zugeordnet sind, und eine ausgewählten Gruppe von Daten in der zugeordneten Speichereinheit oder der zugeordneten Aggregation von Speichereinheiten speichern kann.
  • Beispiel 4 kann Beispiel 1 sein, wobei der Treiber ferner eine physische Speicherzuordnung einer Speichereinheit erhalten kann.
  • Beispiel 5 kann Beispiel 4 sein, wobei der Treiber die physische Speicherzuordnung der Speichereinheit aus einer APCI (Advanced Configuration Power Interface)-Tabelle erhalten kann.
  • Beispiel 6 kann Beispiel 4 sein, wobei der Treiber ferner die Übersetzung der physischen Adressen in virtuelle Adressen handhaben kann, die physische Rahmenanzahl der Vielzahl von Speichereinheiten für die Zuordnung zu der virtuellen Seitenanzahl auswählen kann und die Zuordnungen der virtuellen Seitenanzahl zu der physischen Rahmenanzahl in eine Seitentabelle befüllen kann, die der Vielzahl von Speichereinheiten zugewiesen ist.
  • Beispiel 7 kann Beispiel 1 sein, wobei eine Größe einer verschachtelten Zeile der Speichereinheiten gleich oder ein Vielfaches einer Größe einer virtuellen Speicherseite sein kann.
  • Beispiel 8 kann Beispiel 1 sein, wobei die Vielzahl von Speichereinheiten Speichermodule innerhalb eines Dual-Inline-Speichermoduls (Dual Inline Memory Module, DIMM), DIMMs, nichtflüchtige DIMMs oder eine synchrone dynamische Speichervorrichtung mit wahlfreiem Zugriff (SDRAM) sein können.
  • Beispiel 9 kann Beispiel 1 sein, ferner umfassend ein Betriebssystem mit einem Kernel, der den Treiber enthält.
  • Beispiel 10 kann Beispiel 9 sein, wobei die Speichereinheiten n Dual-Inline-Speichermodule (DIMM) mit jeweils einer Größe von m GB umfassen und jeweils k/n von m GB Speicherplätzen zum Speichern von Daten beitragen können, die kein Near-Data Processing (NDP) oder In-Memory Processing (IMP) verwenden, und die verbleibenden m-k/n GB Speicherplätze von jedem der n DIMMs werden zum Speichern von Daten verwendet, die NDP oder IMP verwenden.
  • Beispiel 11 kann Beispiel 1 sein, wobei die Speichersteuerung Teil des Prozessors ist.
  • Beispiel 12 kann ein beliebiges der Beispiele 1 bis 11 sein, wobei die Vielzahl von Speichereinheiten und der eine oder die mehreren Hardware-Datenverarbeitungslogikblöcke integrale Teile von einer oder mehreren intelligenten Speichereinheiten sein können.
  • Beispiel 13 kann ein Verfahren zur Berechnung sein, umfassend: Erhalten, von einem Treiber, der von einem Prozessor eines Computervorrichtung betrieben wird, von einer oder mehreren physischen Speicherzuordnungen einer Vielzahl von Speichereinheiten einer intelligenten Speicheranordnung; Befüllen, durch den Treiber, der Zuordnungen der virtuellen Seitenanzahl zu der physischen Rahmenanzahl in eine Seitentabelle, die den Speichereinheiten zugewiesen ist; und in Reaktion auf eine Anforderung einer Anwendung der Computervorrichtung, die für eine oder eine Aggregation von Speichereinheiten spezifisch ist, Bereitstellen, durch den Treiber, eines virtuellen Adressbereichs der Speichereinheit oder der Aggregation von Speichereinheiten, damit die Anwendung standortbewusste speicherzugeordnete Gerätezugriffe ausüben kann, um auf zusammenhängende Weise Daten selektiv in der Speichereinheit oder der Aggregation von Speichereinheiten zu speichern; wobei die Speichereinheiten der intelligenten Speicheranordnung eine physische Hardware-Speicherverschachtelungs- und Near-Data Processing-Logik enthalten oder durch diese ergänzt werden.
  • Beispiel 14 kann Beispiel 13 sein; ferner umfassend, dass die Anwendung zuerst den Treiber aufruft, um eine oder eine Aggregation der Vielzahl von Speichereinheiten zu öffnen, und dann insbesondere den Treiber aufruft, um zusammenhängende virtuelle Adressen zu erhalten, die der geöffneten Speichereinheit oder der Aggregation von Speichereinheiten zugeordnet sind, und eine ausgewählte Gruppe von Daten in der zugeordneten Speichereinheit oder der Aggregation speichert.
  • Beispiel 15 kann Beispiel 13 sein, wobei das Erhalten umfasst, dass der Treiber die physischen Speicherzuordnungen der Speichereinheiten von einer APCI (Advanced Configuration Power Interface)-Tabelle erhält.
  • Beispiel 16 kann ein beliebiges der Beispiele 13 bis 15 sein, ferner umfassend, dass der Treiber eine physische Rahmenanzahl der Vielzahl von Speichereinheiten auswählt, um sie der virtuellen Seitenanzahl zuzuordnen, und die Übersetzung der physischen Adressen in virtuelle Adressen handhabt.
  • Beispiel 17 kann ein oder mehrere computerlesbare Medien (Computer-Readable Media, CRM) sein, die Anweisungen umfassen, die eine Computervorrichtung in Reaktion auf die Ausführung der Anweisungen durch einen Prozessor der Computervorrichtung zum Bereitstellen eines Treibers zu Folgendem veranlassen: Erhalten von einer oder mehreren physischen Speicherzuordnungen einer Vielzahl von Speichereinheiten einer intelligenten Speicheranordnung, Befüllen der Zuordnungen der virtuellen Seitenanzahl zu der physischen Rahmenanzahl in eine Seitentabelle, die der Vielzahl von Speichereinheiten zugewiesen ist, und in Reaktion auf eine Anforderung einer Anwendung der Computervorrichtung, die für eine oder eine Aggregation von Speichereinheiten spezifisch ist, Bereitstellen eines virtuellen Adressbereichs der Speichereinheit oder der Aggregation, damit die Anwendung standortbewusste speicherzugeordnete Gerätezugriffe ausüben kann, um auf zusammenhängende Weise Daten selektiv in der Speichereinheit oder der Aggregation zu speichern; und wobei die Vielzahl von Speichereinheiten der intelligenten Speicheranordnung eine Near-Data Processing-Logik und physische Hardware-Speicherverschachtelung enthalten oder durch diese ergänzt werden.
  • Beispiel 18 kann Beispiel 17 sein, wobei das Erhalten umfassen kann, dass der Treiber die physischen Speicherzuordnungen der Speichereinheiten von einer APCI (Advanced Configuration Power Interface)-Tabelle erhält.
  • Beispiel 19 kann Beispiel 17 oder 18 sein, wobei der Treiber ferner die physische Rahmenanzahl der Vielzahl von Speichereinheiten für die Zuordnung zu der virtuellen Seitenanzahl auswählen, um virtuellen Seitenzahlen zuzuordnen, und die Übersetzung der physischen Adressen in virtuelle Adressen handhaben kann.
  • Beispiel 20 kann eine Vorrichtung zur Berechnung sein, umfassend: einen Prozessor; eine Vielzahl von Speichereinheiten; eine Speichersteuerung, die mit dem Prozessor und der Vielzahl von Speichereinheiten gekoppelt ist, um den Zugriff der Vielzahl von Speichereinheiten zu steuern, die Unterstützung für physische Hardware-Speicherverschachtelung beinhaltet; einen oder mehrere Hardware-Datenverarbeitungslogikblöcke, die mit der Vielzahl von Speichereinheiten gekoppelt sind, um Near-Data Processing für Daten bereitzustellen, die von der Vielzahl von Speichereinheiten empfangen werden; und Mittel zum Unterstützen von Anwendungen, die von dem einen oder den mehreren Prozessoren betrieben werden, um standortbewusste speicherzugeordnete Gerätezugriffe durchzuführen, um auf zusammenhängende Weise Daten selektiv in der Vielzahl von Speichereinheiten zu speichern oder Daten aus ausgewählten oder aggregierten der Vielzahl von Speichereinheiten zu laden.
  • Beispiel 21 kann Beispiel 20 sein, wobei das Mittel zum Unterstützen ein Mittel zum Erhalten für die Anwendung zusammenhängender virtueller Adressen, die einer Speichereinheit zugeordnet sind, oder eine Aggregation von ausgewählten der Speichereinheiten umfasst.
  • Beispiel 22 kann Beispiel 21 sein; wobei, um die standortbewussten speicherzugeordneten Gerätezugriffe auszuführen, eine Anwendung das Mittel zum Unterstützen aufrufen kann, um eine oder eine Aggregation der Vielzahl von Speichereinheiten zu öffnen, das Mittel insbesondere aufrufen kann, um zusammenhängende virtuelle Adressen zu erhalten, die der geöffneten Speichereinheit oder der Aggregation von Speichereinheiten zugeordnet sind, und eine ausgewählten Gruppe von Daten in der zugeordneten Speichereinheit oder eine Aggregation von Speichereinheiten speichern kann.
  • Beispiel 23 kann Beispiel 20 sein, wobei das Mittel zum Unterstützen ein Mittel zum Erhalten einer physischen Speicherzuordnung einer Speichereinheit umfassen kann.
  • Beispiel 24 kann Beispiel 23 sein, wobei das Mittel zum Erhalten ein Mittel zum Abrufen der physischen Speicherzuordnung der Speichereinheit aus einer APCI (Advanced Configuration Power Interface)-Tabelle umfassen kann.
  • Beispiel 25 kann Beispiel 23 sein, wobei das Mittel zum Unterstützen ein Mittel zum Handhaben der Übersetzung der physischen Adressen in virtuelle Adressen, ein Mittel zum Auswählen der physischen Rahmenanzahl der Vielzahl von Speichereinheiten für die Zuordnung zu der virtuellen Seitenanzahl und ein Mittel zum Befüllen der Zuordnungen der virtuellen Seitenanzahl zu der physischen Rahmenanzahl in eine Seitentabelle, die der Vielzahl von Speichereinheiten zugewiesen ist, umfassen kann.
  • Beispiel 26 kann Beispiel 20 sein, wobei eine Größe einer verschachtelten Zeile der Speichereinheiten gleich oder ein Vielfaches einer Größe einer virtuellen Speicherseite ist.
  • Beispiel 27 kann Beispiel 20 sein, wobei die Vielzahl von Speichereinheiten Speichermodule innerhalb eines Dual-Inline-Speichermoduls (Dual Inline Memory Module, DIMM), DIMMs, nichtflüchtige DIMMs oder eine synchrone dynamische Speichervorrichtung mit wahlfreiem Zugriff (SDRAM) sind.
  • Beispiel 28 kann Beispiel 20 sein, ferner umfassend ein Betriebssystem mit einem Kernel, der das Mittel zum Unterstützen enthält.
  • Beispiel 29 kann Beispiel 28 sein, wobei die Speichereinheiten n Dual-Inline-Speichermodule (DIMM) mit jeweils einer Größe von m GB umfassen und jeweils k/n von m GB Speicherplätzen zum Speichern von Daten beitragen, die kein Near-Data Processing (NDP) oder In-Memory Processing (IMP) verwenden, und die verbleibenden m-k/n GB Speicherplätze von jedem der n DIMMs werden zum Speichern von Daten verwendet, die NDP oder IMP verwenden.
  • Beispiel 30 kann Beispiel 20 sein, wobei die Speichersteuerung Teil des Prozessors ist.
  • Beispiel 31 kann ein beliebiges der Beispiele 20 bis 30 sein, wobei die Vielzahl von Speichereinheiten und der eine oder die mehreren Hardware-Datenverarbeitungslogikblöcke integrale Teile von einer oder mehreren intelligenten Speichereinheiten sein können.
  • Es versteht sich für Fachleute auf dem Gebiet, dass verschiedene Abwandlungen und Änderungen in den offenbarten Ausführungsformen der offenbarten Vorrichtung und zugehörigen Verfahren vorgenommen werden können, ohne von dem Geist und dem Umfang der vorliegenden Offenbarung abzuweichen. Somit ist es vorgesehen, dass die vorliegende Offenbarung die Abwandlungen und Änderungen der vorstehend offenbarten Ausführungsformen abdecken, sofern die Abwandlungen und Änderungen innerhalb des Umfangs der beliebigen Ansprüche und ihrer Äquivalente liegen.

Claims (25)

  1. Vorrichtung zur Berechnung, umfassend: einen Prozessor; eine Vielzahl von Speichereinheiten; eine Speichersteuerung, die mit dem Prozessor und der Vielzahl von Speichereinheiten gekoppelt ist, um den Zugriff der Vielzahl von Speichereinheiten zu steuern, die Unterstützung für physische Hardware-Speicherverschachtelung beinhaltet; einen oder mehrere Hardware-Datenverarbeitungslogikblöcke, die mit der Vielzahl von Speichereinheiten gekoppelt sind, um Near-Data Processing (Verarbeitung in der Nähe des Datenspeicherorts) für Daten bereitzustellen, die von der Vielzahl von Speichereinheiten empfangen werden; und einen Treiber, der von dem Prozessor betrieben wird, um Anwendungen zu unterstützen, die von dem Prozessor betrieben werden, um standortbewusste speicherzugeordnete Gerätezugriffe durchzuführen, um auf zusammenhängende Weise Daten selektiv in der Vielzahl von Speichereinheiten zu speichern oder Daten aus ausgewählten der Vielzahl von Speichereinheiten oder Aggregationen von ausgewählten davon zu laden.
  2. Vorrichtung nach Anspruch 1, wobei der Treiber für die Anwendung zusammenhängende virtuelle Adressen erhalten soll, die einer Speichereinheit zugeordnet sind.
  3. Vorrichtung nach Anspruch 2, wobei, um die standortbewussten speicherzugeordneten Gerätezugriffe auszuführen, eine Anwendung den Treiber aufrufen soll, um eine oder eine Aggregation der Vielzahl von Speichereinheiten zu öffnen, den Treiber insbesondere aufrufen soll, um zusammenhängende virtuelle Adressen zu erhalten, die der geöffneten Speichereinheit oder der Aggregation von Speichereinheiten zugeordnet sind, und eine ausgewählten Gruppe von Daten in der zugeordneten Speichereinheit oder der Aggregation von Speichereinheiten speichern soll.
  4. Vorrichtung nach Anspruch 1, wobei der Treiber ferner eine physische Speicherzuordnung einer Speichereinheit erhalten soll.
  5. Vorrichtung nach Anspruch 4, wobei der Treiber die physische Speicherzuordnung der Speichereinheit aus einer ACPI (Advanced Configuration Power Interface)-Tabelle erhalten soll.
  6. Vorrichtung nach Anspruch 4, wobei der Treiber ferner die Übersetzung der physischen Adressen in virtuelle Adressen handhaben soll, die physische Rahmenanzahl der Vielzahl von Speichereinheiten für die Zuordnung zu der virtuellen Seitenanzahl auswählen soll und die Zuordnungen der virtuellen Seitenanzahl zu der physischen Rahmenanzahl in eine Seitentabelle befüllen soll, die der Vielzahl von Speichereinheiten zugewiesen ist.
  7. Vorrichtung nach Anspruch 1, wobei eine Größe einer verschachtelten Zeile der Speichereinheiten gleich oder ein Vielfaches einer Größe einer virtuellen Speicherseite ist.
  8. Vorrichtung nach Anspruch 1, wobei die Vielzahl von Speichereinheiten Speichermodule innerhalb eines Dual-Inline-Speichermoduls (Dual Inline Memory Module, DIMM), DIMMs, nichtflüchtige DIMMs oder eine synchrone dynamische Speichervorrichtung mit wahlfreiem Zugriff (SDRAM) sind.
  9. Vorrichtung nach Anspruch 1, ferner umfassend ein Betriebssystem mit einem Kern, der den Treiber enthält.
  10. Vorrichtung nach Anspruch 1, wobei die Speichereinheiten n Dual-In-Line-Speichermodule (DIMM) mit jeweils einer Größe von m GB umfassen und jeweils k/n von m GB Speicherplätzen zum Speichern von Daten beitragen, die kein Near-Data Processing (NDP) oder In-Memory Processing (IMP) verwenden, und die verbleibenden m-k/n GB Speicherplätze von jedem der n DIMMs werden zum Speichern von Daten verwendet, die NDP oder IMP verwenden.
  11. Vorrichtung nach Anspruch 1, wobei die Speichersteuerung Teil des Prozessors ist.
  12. Vorrichtung nach einem der Ansprüche 1 bis 11, wobei die Vielzahl von Speichereinheiten und der eine oder die mehreren Hardware-Datenverarbeitungslogikblöcke integrale Teile von einer oder mehreren intelligenten Speichereinheiten sind.
  13. Verfahren zur Berechnung, umfassend: Erhalten, von einem Treiber, der von einem Prozessor einer Computervorrichtung betrieben wird, von einer oder mehreren physischen Speicherzuordnungen einer Vielzahl von Speichereinheiten einer intelligenten Speicheranordnung; Befüllen, durch den Treiber, der Zuordnungen der virtuellen Seitenanzahl zu der physischen Rahmenanzahl in eine Seitentabelle, die den Speichereinheiten zugewiesen ist; und in Reaktion auf eine Anforderung einer Anwendung der Computervorrichtung, die für eine oder eine Aggregation von ausgewählten der Speichereinheiten spezifisch ist, Bereitstellen, durch den Treiber, eines virtuellen Adressbereichs der Speichereinheit, damit die Anwendung standortbewusste speicherzugeordnete Gerätezugriffe ausüben kann, um auf zusammenhängende Weise Daten selektiv in der Speichereinheit oder der Aggregation von Speichereinheiten zu speichern; wobei die Speichereinheiten der intelligenten Speicheranordnung eine physische Hardware-Speicherverschachtelung und Near-Data Processing-Logik enthalten oder durch diese ergänzt werden.
  14. Verfahren nach Anspruch 13; ferner umfassend, dass die Anwendung zuerst den Treiber aufruft, um eine oder eine Aggregation von ausgewählten der Vielzahl von Speichereinheiten zu öffnen, dann insbesondere den Treiber aufruft, um zusammenhängende virtuelle Adressen zu erhalten, die der geöffneten Speichereinheit zugeordnet sind, und eine ausgewählte Gruppe von Daten in der zugeordneten Speichereinheit oder der Aggregation von Speichereinheiten speichert.
  15. Verfahren nach Anspruch 13, wobei das Erhalten umfasst, dass der Treiber die physischen Speicherzuordnungen der Speichereinheiten von einer ACPI (Advanced Configuration Power Interface)-Tabelle erhält.
  16. Verfahren nach Anspruch 13, ferner umfassend, dass der Treiber eine physische Rahmenanzahl der Vielzahl von Speichereinheiten auswählt, um sie der virtuellen Seitenanzahl zuzuordnen, und die Übersetzung der physischen Adressen in virtuelle Adressen handhabt.
  17. Computerlesbares Medium oder mehrere computerlesbare Medien (Computer-Readable Media, CRM), die Anweisungen umfassen, die eine Computervorrichtung veranlassen, in Reaktion auf die Ausführung der Anweisungen durch einen Prozessor der Computervorrichtung zum Bereitstellen eines Treibers eines der Verfahren nach den Ansprüchen 13 bis 16 durchzuführen.
  18. Vorrichtung zur Berechnung, umfassend: einen Prozessor; eine Vielzahl von Speichereinheiten; eine Speichersteuerung, die mit dem Prozessor und der Vielzahl von Speichereinheiten gekoppelt ist, um den Zugriff der Vielzahl von Speichereinheiten zu steuern, die Unterstützung für physische Hardware-Speicherverschachtelung beinhaltet; einen oder mehrere Hardware-Datenverarbeitungslogikblöcke, die mit der Vielzahl von Speichereinheiten gekoppelt sind, um Near-Data Processing für Daten bereitzustellen, die von der Vielzahl von Speichereinheiten empfangen werden; und Mittel zum Unterstützen von Anwendungen, die von dem einen oder den mehreren Prozessoren betrieben werden, um standortbewusste speicherzugeordnete Gerätezugriffe durchzuführen, um auf zusammenhängende Weise Daten selektiv in der Vielzahl von Speichereinheiten zu speichern oder Daten aus ausgewählten der Vielzahl von Speichereinheiten oder Aggregationen von ausgewählten davon zu laden.
  19. Vorrichtung nach Anspruch 18, wobei das Mittel zum Unterstützen ein Mittel zum Erhalten für die Anwendung zusammenhängender virtueller Adressen umfasst, die einer Speichereinheit zugeordnet sind.
  20. Vorrichtung nach Anspruch 19; wobei, um die standortbewussten speicherzugeordneten Gerätezugriffe durchzuführen, eine Anwendung das Mittel zum Unterstützen aufrufen soll, um eine der Vielzahl von Speichereinheiten zu öffnen, das Mittel zum Unterstützen insbesondere aufrufen soll, um zusammenhängende virtuelle Adressen zu erhalten, die der geöffneten Speichereinheit zugeordnet sind, und eine ausgewählten Gruppe von Daten in der zugeordneten Speichereinheit speichern soll.
  21. Vorrichtung nach Anspruch 18, wobei das Mittel zum Unterstützen ein Mittel zum Erhalten einer physischen Speicherzuordnung einer Speichereinheit umfasst.
  22. Vorrichtung nach Anspruch 21, wobei das Mittel zum Erhalten ein Mittel zum Abrufen der physischen Speicherzuordnung der Speichereinheit aus einer APCI (Advanced Configuration Power Interface)-Tabelle umfasst.
  23. Vorrichtung nach Anspruch 21, wobei das Mittel zum Unterstützen ein Mittel zum Handhaben der Übersetzung der physischen Adressen in virtuelle Adressen, ein Mittel zum Auswählen der physischen Rahmenanzahl der Vielzahl von Speichereinheiten für die Zuordnung zu der virtuellen Seitenanzahl und ein Mittel zum Befüllen der Zuordnungen der virtuellen Seitenanzahl zu der physischen Rahmenanzahl in eine Seitentabelle, die der Vielzahl von Speichereinheiten zugewiesen ist, umfasst.
  24. Vorrichtung nach einem der Ansprüche 18 bis 23, wobei eine Größe einer verschachtelten Zeile der Speichereinheiten gleich oder ein Vielfaches einer Größe einer virtuellen Speicherseite ist.
  25. Vorrichtung nach einem der Ansprüche 18 bis 23, wobei die Vielzahl von Speichereinheiten Speichermodule innerhalb eines Dual-Inline-Speichermoduls (Dual Inline Memory Module, DIMM), DIMMs, nichtflüchtige DIMMs oder eine synchrone dynamische Speichervorrichtung mit wahlfreiem Zugriff (SDRAM) sind.
DE102018209205.2A 2017-06-30 2018-06-08 Datenspeicher mit intelligentem Speicher oder Ladeverfahren und -vorrichtung Pending DE102018209205A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/639,548 US10776308B2 (en) 2017-06-30 2017-06-30 Smart memory data store or load method and apparatus
US15/639,548 2017-06-30

Publications (1)

Publication Number Publication Date
DE102018209205A1 true DE102018209205A1 (de) 2019-01-03

Family

ID=64662017

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018209205.2A Pending DE102018209205A1 (de) 2017-06-30 2018-06-08 Datenspeicher mit intelligentem Speicher oder Ladeverfahren und -vorrichtung

Country Status (3)

Country Link
US (1) US10776308B2 (de)
CN (1) CN109213697A (de)
DE (1) DE102018209205A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113994313A (zh) * 2019-05-28 2022-01-28 美光科技公司 基于存储器即服务的分布式计算

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10387298B2 (en) * 2017-04-04 2019-08-20 Hailo Technologies Ltd Artificial neural network incorporating emphasis and focus techniques
US11615297B2 (en) 2017-04-04 2023-03-28 Hailo Technologies Ltd. Structured weight based sparsity in an artificial neural network compiler
KR102545228B1 (ko) * 2018-04-18 2023-06-20 에스케이하이닉스 주식회사 컴퓨팅 시스템 및 그것을 포함하는 데이터 처리 시스템
US11169930B2 (en) 2019-05-28 2021-11-09 Micron Technology, Inc. Fine grain data migration to or from borrowed memory
US11811421B2 (en) 2020-09-29 2023-11-07 Hailo Technologies Ltd. Weights safety mechanism in an artificial neural network processor
US11874900B2 (en) 2020-09-29 2024-01-16 Hailo Technologies Ltd. Cluster interlayer safety mechanism in an artificial neural network processor
CN112527508B (zh) * 2020-12-21 2022-12-09 卓尔智联(武汉)研究院有限公司 基于sgx的云端飞地资源管理方法、装置、计算机设备和介质
CN115729845A (zh) * 2021-08-30 2023-03-03 华为技术有限公司 数据存储装置和数据处理方法
WO2023159400A1 (en) * 2022-02-23 2023-08-31 Huawei Technologies Co.,Ltd. Usage driven memory mapping

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6718401B2 (en) * 2001-06-27 2004-04-06 Intel Corporation System and method for device support
KR100881597B1 (ko) * 2007-02-02 2009-02-03 지인정보기술 주식회사 읽기 요청 처리 시스템 및 방법
US7694193B2 (en) * 2007-03-13 2010-04-06 Hewlett-Packard Development Company, L.P. Systems and methods for implementing a stride value for accessing memory
CN104094240A (zh) * 2012-04-30 2014-10-08 惠普发展公司,有限责任合伙企业 防止混合存储器模块被映射
US9600413B2 (en) * 2013-12-24 2017-03-21 Intel Corporation Common platform for one-level memory architecture and two-level memory architecture

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113994313A (zh) * 2019-05-28 2022-01-28 美光科技公司 基于存储器即服务的分布式计算

Also Published As

Publication number Publication date
US10776308B2 (en) 2020-09-15
US20190004800A1 (en) 2019-01-03
CN109213697A (zh) 2019-01-15

Similar Documents

Publication Publication Date Title
DE102018209205A1 (de) Datenspeicher mit intelligentem Speicher oder Ladeverfahren und -vorrichtung
DE102013106154B4 (de) Speichersystem und Ein-Chip-System mit linearer Adress-Remapping-Logik
DE202010017666U1 (de) Partitionsverteilung bei einer Datenspeichervorrichtung mit Flash-Speicherchips
DE102018113447A1 (de) Speichervorrichtung zum Koppeln mit einem Host und Verfahren zum Betreiben des Hosts und der Speichervorrichtung
DE102015109124B4 (de) Cache-Wegvorhersage
DE102013017509A1 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE112012006665T5 (de) Wählbare Grafik-Controller zur Ausgabenanzeige
DE102013017510A1 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE202013012484U1 (de) Verwendung einer logisch-zu-physisch-Karte für direkte Benutzerraumkommunikation mit einer Datenspeichervorrichtung
DE102013017511A1 (de) Effiziente speichervirtualisierung in mehrsträngigen verarbeitungseinheiten
DE10393859B4 (de) Entkoppelter Hardwarekonfigurationsmanager
DE102013016609A1 (de) Vorrichtung und Verfahren für ein Storage Class Memory mit niedrigem Energieverbrauch, niedriger Latenz und hoher Kapazität
DE202013012483U1 (de) Verwendung einer Tabelle zur Umrechnung virtueller Speicheradressen in physikalische Speicheradressen zur direkten Userspace-Kommunikation mit einem Datenträger
DE102007032307A1 (de) Dedizierter Mechanismus zur Seitenabbildung in einer GPU
DE102018123669A1 (de) Host-Computer-Anordnung, Remote-Server-Anordnung, Speicherungssystem und Verfahren davon
DE112012005209T5 (de) Brückenfunktion zwischen Virtual Machine Monitor und Bare-Metal-Bootvorgang
DE102013222384A1 (de) Sicherheits-Screening auf Kontextgrundlage für Zugriff auf Daten
DE102014103056A1 (de) Ein-Chip-System und Verfahren des Betreibens desselben
DE102019103114A1 (de) Speichersteuereinrichtung und Anwendungsprozessor für eine gesteuerte Auslastung und Leistung einer Eingabe/Ausgabe-Vorrichtung und Verfahren zur Betätigung der Speichersteuereinrichtung
DE112010004972T5 (de) Domänenbasiertes Cache-Kohärenzprotokoll
DE102018204864A1 (de) Technologie zum Ermöglichen eines schnellen Bootens mit einem schnellen und langsamen nichtflüchtigen Speicher
DE112012004926B4 (de) Gemeinsame Speichernutzung durch Prozessoren
DE102019112291A1 (de) Verbessertes speicherungsmodell für ein computersystem mit persistentem systemspeicher
DE112020003004T5 (de) Dma-scatter- und gather-operationen für nicht zusammenhängenden speicher
DE112017006445T5 (de) Verfahren und Geräte zur Identifizierung eines Zählwerts von N-Grammen, die in einem Korpus vorkommen