DE112017001471T5 - Mehrebenen-speichermanagement - Google Patents

Mehrebenen-speichermanagement Download PDF

Info

Publication number
DE112017001471T5
DE112017001471T5 DE112017001471.9T DE112017001471T DE112017001471T5 DE 112017001471 T5 DE112017001471 T5 DE 112017001471T5 DE 112017001471 T DE112017001471 T DE 112017001471T DE 112017001471 T5 DE112017001471 T5 DE 112017001471T5
Authority
DE
Germany
Prior art keywords
memory
near memory
available
memory address
register
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
DE112017001471.9T
Other languages
English (en)
Inventor
Christopher Wilkerson
Alaa Alameldeen
Zhe Wang
Zeshan Chishti
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 DE112017001471T5 publication Critical patent/DE112017001471T5/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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • 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/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/12Replacement control
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/08Address circuits; Decoders; Word-line control circuits
    • 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]
    • 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/1021Hit rate 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/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping
    • 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/651Multi-level translation tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Dram (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

Eine Mehrebenen-Speichermanagement-Schaltung kann Daten zwischen Nah- und Fernspeicher umsetzen. In einer Ausführungsform speichert eine Registermatrix Nahspeicheradressen und Fernspeicheradressen, die zu den Nahspeicheradressen umgesetzt sind. Die Anzahl der Einträge in der Registermatrix ist niedriger als die Anzahl der Seiten im Nahspeicher. Die Umsetzungslogik bestimmt, dass eine Fernspeicheradresse der angeforderten Daten nicht in der Registermatrix vorhanden ist, und wählt eine verfügbare Nahspeicheradresse aus der Registermatrix aus. Die Umsetzungslogik beginnt außerdem ein Einspeichern der angeforderten Daten an der Fernspeicheradresse in die ausgewählte Nahspeicheradresse. Die Umsetzungslogik speichert ferner die Fernspeicheradresse in einen Eintrag der Registermatrix ein, welcher der ausgewählten Nahspeicheradresse entspricht.

Description

  • VERWANDTE ANMELDUNGEN
  • Die vorliegende Anmeldung beansprucht nach 35 U.S.C. § 365(c) die Priorität der US-Anmeldung Nr. 15/077,424 mit der Bezeichnung MULTI-LEVEL MANAGEMENT, eingereicht am 22. März 2016.
  • GEBIET
  • Ausführungsformen der Erfindungen betreffen allgemein Speichervorrichtungen und insbesondere das Management von Mehrebenenspeicher, z.B. Nah- und Fernspeicher.
  • URHEBERRECHTSMITTEILUNG/ERLAUBNIS
  • Teile der Offenbarung des vorliegenden Patentdokuments können Material enthalten, welches dem Urheberrechtsschutz unterliegt. Der Inhaber des Urheberrechts hat keine Einwände gegen die Vervielfältigung des Patentdokuments oder der Patentoffenbarung durch Dritte, wie es/sie in der Patentdatei oder den Aufzeichnungen des Patent and Trademark Office erscheint, behält sich jedoch ansonsten alle Urheberrechte jeglicher Art vor. Die Urheberrechtsmitteilung gilt für alle Daten, wie nachstehend und in den begleitenden Zeichnungen beschrieben, sowie für jegliche Software, wie nachstehend beschrieben: Copyright 2016, Intel Corporation, All Rights Reserved.
  • HINTERGRUND
  • Speichervorrichtungen sind in Computervorrichtungen allgegenwärtig, um Daten und Code für einen Prozessor zu speichern, um Operationen auszuführen und für die Funktionsfähigkeit von Computervorrichtungen zu sorgen. Es besteht bei Speichersystemen ein Trend, von einem flachen Speicherraum mit einheitlichen Leistungseigenschaften zu heterogeneren Speichersystemen überzugehen, welche auch als Mehrebenen-Speichersysteme bezeichnet werden können. Ein Beispiel für ein Mehrebenen-Speichersystem ist ein System, welches einen schnelleren Speicher und einen langsameren Speicher umfasst, die mit demselben Prozessor verbunden sind. In solchen Mehrebenen-Speichersystemen kann das Verhältnis der Zugriffe auf den schnelleren Speicher zu den Zugriffen auf den langsameren Speicher die Systemleistung beeinflussen.
  • Figurenliste
  • Die folgende Beschreibung umfasst die Erörterung von Figuren, welche Darstellungen aufweisen, die beispielhaft Realisierungen von Ausführungsformen der Erfindung veranschaulichen. Die Zeichnungen sollten als beispielhaft und nicht als beschränkend verstanden werden. Wie hierin verwendet, sind Bezugnahmen auf eine oder mehrere „Ausführungsformen“ so zu verstehen, dass sie ein bestimmtes Merkmal, eine bestimmte Struktur und/oder eine bestimmte Eigenschaft beschreiben, die in mindestens einer Realisierung der Erfindung enthalten sind. Somit werden durch hierin vorkommende Begriffe wie „in einer Ausführungsform“ oder „in einer alternativen Ausführungsform“ verschiedene Ausführungsformen und Realisierungen der Erfindung beschrieben und diese Begriffe beziehen sich nicht notwendigerweise alle auf dieselbe Ausführungsform. Sie schließen sich jedoch auch nicht notwendigerweise gegenseitig aus.
    • 1 ist ein Blockschaubild einer Ausführungsform eines Systems, welches eine Mehrebenen-Speichermanagement-Schaltung umfasst.
    • 2 ist ein Blockschaubild einer Ausführungsform eines Systems, welches eine Mehrebenen-Speichermanagement-Schaltung umfasst.
    • 3 ist eine Darstellung einer Registermatrix zum Speichern von Nahspeicheradressen und Fernspeicheradressen, welche zu den Nahspeicheradressen umgesetzt werden, gemäß einer Ausführungsform.
    • 4 ist eine Darstellung einer Registermatrix zum Aufschieben von Dateneinspeicherungen aus dem Nahspeicher in den Fernspeicher gemäß einer Ausführungsform.
    • 5A ist ein Ablaufplan einer Ausführungsform eines Verfahrens zum Management von Mehrebenenspeicher, umfassend das Umsetzen von Daten zwischen Nah- und Fernspeicher.
    • 5B ist ein Ablaufplan einer Ausführungsform eines Verfahrens zum Management von Mehrebenenspeicher, umfassend das Aktualisieren einer Registermatrix mit verfügbaren Nahspeicheradressen.
    • 6 ist ein Blockschaubild einer Ausführungsform eines Computersystems, in welchem eine Mehrebenen-Speichermanagement-Schaltung verwendet werden kann.
    • 7 ist ein Blockschaubild einer Ausführungsform einer mobilen Vorrichtung, in welchem eine Mehrebenen-Speichermanagement-Schaltung verwendet werden kann.
  • Es folgen Beschreibungen bestimmter Einzelheiten und Realisierungen, umfassend eine Beschreibung der Figuren, welche einige oder alle der nachstehend beschriebenen Ausführungsformen zeigen können, sowie eine Erörterung anderer möglicher Ausführungsformen oder Realisierungen der hierin vorgestellten erfinderischen Konzepte.
  • DETAILLIERTE BESCHREIBUNG
  • Wie oben bereits kurz erwähnt, können Computersysteme mehrere Arten von Hauptspeicher umfassen, z.B. einen Speicher, der schneller ist, und einen Speicher, der langsamer ist. Beispielsweise umfasst in einer Ausführungsform ein System sowohl „Nahspeicher“ als auch „Fernspeicher“. Nahspeicher und Fernspeicher sind Speicher mit unterschiedlichen Eigenschaften, z.B. unterschiedlichen Betriebseigenschaften. In einer Ausführungsform ist Nahspeicher ein Speicher, der schneller ist als Fernspeicher. Zum Beispiel kann Nahspeicher eine hohe Bandbreite und/oder eine kurze Latenzzeit aufweisen. Im Vergleich zum Nahspeicher kann der Fernspeicher eine niedrigere Bandbreite und/oder eine längere Latenzzeit aufweisen. Nahspeicher kann, ohne dass dies notwendig ist, physisch näher an einem Prozessor angeordnet sein als Fernspeicher. Außerdem kann Nahspeicher, ohne dass dies notwendig ist, „lokaler Speicher“ sein und Fernspeicher kann „nicht-lokaler Speicher“ sein. In einem System mit mehreren Prozessoren ist lokaler Speicher ein Speicherbereich, der einem der Prozessoren zugeordnet ist. Nicht-lokaler Speicher ist ein Speicherbereich, der einem anderen der Prozessoren zugeordnet ist. Nahspeicher und Fernspeicher können auch (oder alternativ) als verschiedene Speicher-„Ebenen“ bezeichnet werden und somit kann ein System mit sowohl Nahspeicher als auch Fernspeicher ein Beispiel für ein „Mehrebenen-Speichersystem“ sein. Systeme mit sowohl Nah- als auch Fernspeicher können auch als „heterogene Speichersysteme“ bezeichnet werden.
  • Durch das Einbeziehen mehrerer Speicherebenen kann die Gesamtsystemleistung verbessert werden. Beispielsweise kann das Einbeziehen eines Nahspeicherbereichs aufgrund der kurzen Latenzzeit und/oder der hohen Bandbreite des Nahspeichers von Vorteil sein. Die Kosten oder begrenzte Standfläche in der Nähe des Prozessors können jedoch die Größe des Nahspeichers begrenzen. Daher kann die Systemleistung oft durch Einbeziehen eines Fernspeicherbereichs verbessert werden, welcher eine längere Latenzzeit und/oder eine niedrigere Bandbreite als der Nahspeicher aufweist, welcher aber weniger kostspielig und weiter von dem Prozessor entfernt sein kann. Beispielsweise kann ein gestapelter DRAM einen Nahspeicherbereich bereitstellen und ein herkömmlicher DRAM oder andere Speichertechnologien, welche eine geringere Leistungsfähigkeit aufweisen, können einen Fernspeicherbereich bereitstellen. Es versteht sich jedoch, dass Nahspeicher und Fernspeicher nicht auf eine bestimmte Speichertechnologie beschränkt sind. Stattdessen ist ein Nahspeicherbereich auf der Grundlage seiner Eigenschaften relativ zu einem Fernspeicherbereich definiert, wie oben erläutert.
  • Systeme mit mehreren Anschlüssen können ebenfalls Mehrebenenspeicher umfassen. Beispielsweise kann bei einem System mit mehreren Anschlüssen jeder Anschluss mit seinem eigenen lokalen Speicher verbunden sein. In einem solchen Beispiel ist der Speicher, der einem gegebenen Anschluss zugeordnet ist, Nahspeicher und der Speicher, der anderen Anschlüssen zugeordnet ist, ist Fernspeicher. In solchen Systemen mit mehreren Anschlüssen kann ein Speicherorganisationstyp realisiert sein, welcher als nicht-einheitlicher Speicherzugriff (Non-Uniform Memory Access, NUMA) bezeichnet wird. Durch NUMA kann die Speicherlatenzzeit verkürzt werden, wenn Kerne auf den lokalen Speicher ihres Anschlusses (z.B. Nahspeicher) zugreifen, jedoch die Speicherlatenzzeit verlängert werden, wenn auf Speicherbereiche zugegriffen wird, die anderen Anschlüssen zugeordnet sind (z.B. Fernspeicher). Somit kann in Mehrebenen-Speichersystemen die Systemleistung verbessert werden, indem die Anzahl der Zugriffe auf Nahspeicher maximiert wird und die Anzahl der Zugriffe auf Fernspeicher minimiert wird. Entsprechend kann es einen positiven Einfluss auf die Systemleistung haben, wenn ein Mehrebenenspeicher so verwaltet wird, dass sich Daten, auf welche häufig zugegriffen wird oder kürzlich zugegriffen wurde, im Nahspeicher befinden.
  • Wie hierin beschrieben, kann in einer Ausführungsform eine Mehrebenen-Speichermanagement-Schaltung Adressen zwischen Nah- und Fernspeicher umsetzen, ohne dass bedeutende Umsetzungsstrukturen erforderlich sind. Eine Mehrebenen-Speichermanagement-Schaltung kann eine Registermatrix zum Speichern von Nahspeicheradressen und Fernspeicheradressen umfassen, welche zu den Nahspeicheradressen umgesetzt werden. In einer Ausführungsform ist die Anzahl der Einträge in die Registermatrix geringer als die Größe des Nahspeichers und von dieser unabhängig und kann auf der Grundlage gewünschter Leistungseigenschaften ausgewählt werden.
  • In einer Ausführungsform umfasst die Mehrebenen-Speichermanagement-Schaltung eine Umsetzungslogik, welche nach dem Erfassen einer Anforderung von Daten, die sich im Fernspeicher befinden, die Registermatrix untersucht, um zu sehen, ob sich die Fernspeicheradresse bereits in der Registermatrix befindet. Wenn sich die Fernspeicheradresse in der Registermatrix befindet, befinden sich die Daten im Nahspeicher an einer Stelle, die durch die Registermatrix angezeigt wird. Wenn sich die Fernspeicheradresse nicht in der Registermatrix befindet, wählt die Umsetzungslogik eine verfügbare Speicheradresse aus und bewirkt, dass die angeforderten Daten aus dem Fernspeicher in den Nahspeicher auf die ausgewählte Nahspeicheradresse kopiert werden. Anschließend kann die Umsetzungslogik die Registermatrix aktualisieren, um die Umsetzung zu reflektieren.
  • Wenn es keine verfügbaren Nahspeicheradressen mehr in der Registermatrix gibt, löst die Umsetzungslogik in einer Ausführungsform eine Unterbrechung aus, um zu bewirken, dass das Betriebssystem die Registermatrix aktualisiert. Das Betriebssystem kann während der Unterbrechungsbearbeitung Seitentabellen auf der Grundlage der Registermatrix aktualisieren und die Registermatrix mit verfügbaren Nahspeicheradressen aktualisieren. In einer Ausführungsform erfolgt die Unterbrechungsbearbeitung, nachdem die Umsetzungslogik mehrere Seiten umgesetzt hat, wodurch die Kosten, die das Betriebssystem bewirkt, über mehrere Seiten statt nur über eine Seite amortisiert werden.
  • 1 ist ein Blockschaubild einer Ausführungsform eines Systems, welches eine Mehrebenen-Speichermanagement-Schaltung umfasst. Das System 100 umfasst Elemente eines Speicher-Untersystems in einer Computervorrichtung. Der Prozessor 110 repräsentiert eine Prozessoreinheit einer Host-Computerplattform, welche ein Betriebssystem (OS) und Anwendungen ausführt, welche zusammen als ein „Host“ für den Speicher bezeichnet werden können. Das OS und die Anwendungen führen Operationen aus, welche zu Speicherzugriffen führen. Der Prozessor 110 kann einen oder mehrere separate Prozessoren umfassen. Jeder separate Prozessor kann eine Einzel- und/oder Mehrkern-Prozessoreinheit umfassen. Die Verarbeitungseinheit kann ein Primärprozessor, z.B. eine CPU (Central Processing Unit, Zentralprozessoreinheit), und/oder ein peripherer Prozessor sein, z.B. eine GPU (Graphics Processing Unit, Graphikprozessoreinheit). Das System 100 kann als ein System auf einem Chip (System on a Chip, SOC) 101 realisiert werden oder mit selbständigen Komponenten realisiert werden.
  • Die Speichersteuerung 120 repräsentiert eine oder mehrere Speichersteuerungsschaltungen oder -vorrichtungen für das System 100. Die Speichersteuerung 120 repräsentiert eine Steuerlogik, welche in Reaktion auf die Ausführung von Operationen durch den Prozessor 110 Speicherzugriffsbefehle erzeugt. Wenn etwas (z.B. „x“) „in Reaktion auf“ ein anderes Ereignis (z.B. „y“) geschieht, kann x direkt oder indirekt in Reaktion auf y erfolgen. Beispielsweise kann das Auftreten von y am Ende zum Auftreten von x führen, allerdings können andere Zwischenereignisse und/oder Bedingungen auftreten. In anderen Szenarien muss y nicht notwendigerweise zum Auftreten von x führen und x kann auch auftreten, obwohl y nicht aufgetreten ist. Ferner schließt „in Reaktion auf“ nicht das Vorliegen zusätzlicher und/oder anderer kausaler Ereignisse aus. Somit kann der Begriff „in Reaktion auf“ auch „zumindest teilweise in Reaktion auf“ bedeuten. Die Speichersteuerung 120 greift auf eine oder mehrere Speichervorrichtungen 140 zu. In einer Ausführungsform sind die Speichervorrichtungen 140 als verschiedene Kanäle organisiert und verwaltet, wobei jeder Kanal mit Bussen und Signalleitungen verbindet, welche parallel mit mehreren Speichervorrichtungen verbinden. Jeder Kanal ist unabhängig zu betreiben. Somit kann auf jeden Kanal unabhängig zugegriffen werden und jeder Kanal kann unabhängig gesteuert werden und die zeitliche Ablaufsteuerung, die Datenübertragung, der Austausch von Befehlen und Adressen und andere Operationen erfolgen für jeden Kanal separat. In einer Ausführungsform werden Einstellungen für jeden Kanal durch separate Modusregister oder andere Registereinstellungen gesteuert. In einer Ausführungsform verwaltet jede Speichersteuerung 120 einen separaten Speicherkanal, obwohl das System 100 so konfiguriert sein kann, dass mehrere Kanäle von einer einzigen Steuerung gesteuert werden oder dass es mehrere Steuerungen auf einem einzigen Kanal aufweist. In einer Ausführungsform ist die Speichersteuerung 120 Teil des Host-Prozessors 110, z.B. eine Logik, die auf demselben Die realisiert wird oder in demselben Package-Raum realisiert wird wie der Prozessor.
  • Die Speichersteuerung 120 umfasst eine E/A-Schnittstellenlogik 122 zum Verbinden mit einem Systembus. Die E/A-Schnittstellenlogik 122 (ebenso wie die E/A-Schnittstellenlogik 142 der Speichervorrichtung 140) kann Pins, Verbinder, Signalleitungen und/oder andere Hardware zum Verbinden der Vorrichtungen umfassen. Die E/A-Schnittstellenlogik 122 kann eine Hardware-Schnittstelle umfassen. Typischerweise verbinden Drahtleitungen innerhalb einer integrierten Schaltung mit einem Kontaktfleck oder einem Verbinder, um Signalleitungen oder Spuren zwischen Vorrichtungen zu verbinden. Die E/A-Schnittstellenlogik 122 kann Treiber, Empfänger, Sendeempfänger, Anschluss- und/oder andere Schaltungen zum Senden und/oder Empfangen eines Signals auf den Signalleitungen zwischen den Vorrichtungen umfassen. Der Systembus kann als mehrere Signalleitungen realisiert sein, welche die Speichersteuerung 120 mit den Speichervorrichtungen 140 verbindet. Der Systembus umfasst wenigstens Takt(CLK)-132, Befehls/Adress(CMD)- 134 und Dateneinspeicherungs- und Datenauslese(DQ)- 136 und null oder mehr andere Signalleitungen 138. In einer Ausführungsform kann ein Bus oder eine Verbindung zwischen der Speichersteuerung 120 und dem Speicher als ein Speicherbus bezeichnet werden. Die Signalleitungen für CMD 134 können als ein „C/A-Bus“ (oder ADD/CMD-Bus oder mit einer anderen Bezeichnung, welche die Übertragung von Befehlen und Adressinformationen anzeigt) bezeichnet werden. Die Signalleitungen für Einspeicherungs- und Auslese-DQ 136 können als ein „Datenbus“ bezeichnet werden. In einer Ausführungsform weisen unabhängige Kanäle unterschiedliche Taktsignale, C/A-Busse, Datenbusse und andere Signalleitungen auf. Somit kann das System 100 als mehrere „Systembusse“ aufweisend angesehen werden, in dem Sinn, dass eine unabhängige Schnittstellenstrecke als ein separater Systembus angesehen werden kann. Es versteht sich, dass ein Systembus zusätzlich zu den explizit dargestellten Leitungen stroboskopische Signalisierungsleitungen, Alarmleitungen, Hilfsleitungen und andere Signalleitungen umfassen kann.
  • Es versteht sich, dass der Systembus einen Datenbus (DQ136) umfasst, welcher dafür konfiguriert ist, mit einer Bandbreite zu arbeiten. Auf der Grundlage des Designs und/oder der Verwirklichung des Systems 100 kann der DQ 136 mehr oder weniger Bandbreite je Speichervorrichtung 140 aufweisen. Beispielsweise kann der DQ 136 Speichervorrichtungen unterstützen, welche entweder eine x32-Schnittstelle, eine x16-Schnittstelle, eine x8-Schnittstelle oder eine andere Schnittstelle aufweisen. Die Konvention „xN“, wobei N eine Binärzahl ist, bezieht sich auf eine Schnittstellengröße der Speichervorrichtung 140, welche eine Anzahl von Signalleitungen DQ 136 repräsentiert, welche Daten mit der Speichersteuerung 120 austauschen. Die Schnittstellengröße der Speichervorrichtungen ist ein Steuerungsfaktor dafür, wie viele Speichervorrichtungen je Kanal gleichzeitig im System 100 benutzt werden können oder parallel mit denselben Signalleitungen verbunden werden können. Der Begriff „verknüpft“ kann sich auf Elemente beziehen, welche entweder direkt oder indirekt physisch, elektrisch und/oder kommunizierend verbunden sind, und kann hierin austauschbar mit dem Begriff „verbunden“ verwendet werden.
  • Die Speichervorrichtungen 140 repräsentieren Speicherressourcen für das System 100. Bezugnahmen auf Speichervorrichtungen können für verschiedene Speichertypen gelten. Speichervorrichtungen beziehen sich im Allgemeinen auf flüchtige Speichertechnologien. Ein flüchtiger Speicher ist ein Speicher, dessen Zustand (und somit der Zustand der auf ihm gespeicherten Daten) nicht gesichert ist, wenn die Stromzufuhr zu der Vorrichtung unterbrochen wird. Ein nichtflüchtiger Speicher bezieht sich auf einen Speicher, dessen Zustand gesichert ist, auch wenn die Stromzufuhr zu der Vorrichtung unterbrochen wird. Ein dynamischer flüchtiger Speicher erfordert eine Auffrischung der in der Vorrichtung gespeicherten Daten, um den Zustand zu bewahren. Ein Beispiel für einen dynamischen flüchtigen Speicher ist ein DRAM (Dynamic Random Access Memory, dynamischer Direktzugriffsspeicher) oder eine Variante davon, z.B. ein synchroner DRAM (SDRAM). Ein Speicher-Untersystem, wie hierin beschrieben, kann mit einer Anzahl von Speichertechnologien kompatibel sein, z.B. DDR3 (Dual Data Rate Version 3, ursprüngliche Ausgabe von JEDEC (Joint Electronic Device Engineering Council) am 27. Juni 2007, aktuelle Ausgabe 21), DDR4 (DDR Version 4, anfängliche Spezifikation veröffentlicht von JEDEC im September 2012), LPDDR3 (Low Power DDR Version 3, JESD209-3B, Aug 2013 von JEDEC), LPDDR4 (LOW POWER DOUBLE DATA RATE (LPDDR) Version 4, JESD209-4, ursprünglich veröffentlicht von JEDEC im August 2014), WIO2 (Wide I/O 2 (WideIO2), JESD229-2, ursprünglich veröffentlicht von JEDEC im August 2014), HBM (HIGH BANDWIDTH MEMORY DRAM, JESD235, ursprünglich veröffentlicht von JEDEC im Oktober 2013), DDR5 (DDR Version 5, aktuell in Planung von JEDEC), LPDDR5 (aktuell in Planung von JEDEC), HBM2 (HBM Version 2), aktuell in Planung von JEDEC), und/oder anderen, und Technologien auf der Grundlage von Ableitungen oder Erweiterungen solcher Spezifikationen.
  • Zusätzlich oder alternativ zu flüchtigem Speicher kann sich in einer Ausführungsform ein Verweis auf Speichervorrichtungen auf eine nichtflüchtige Speichervorrichtung beziehen, deren Zustand gesichert ist, auch wenn die Stromzufuhr zu der Vorrichtung unterbrochen wird. In einer Ausführungsform ist der nichtflüchtige Speicher eine blockadressierbare Speichervorrichtung, wie z.B. NAND- oder NOR-Technologien. Somit kann eine Speichervorrichtung auch nichtflüchtige Vorrichtungen zukünftiger Generationen umfassen, z.B. eine dreidimensionale Kreuzpunkt-Speichervorrichtung oder andere Byte-adressierbare nichtflüchtige Speichervorrichtungen. In einer Ausführungsform kann die Speichervorrichtung ein Multi-Schwellenwert-NAND-Flash-Speicher, ein NOR-Flash-Speicher, ein Ein- oder Mehrebenen-Phasenwechselspeicher (Phase Change Memory, PCM), ein resistiver Speicher, ein Nanodrahtspeicher, ein Direktzugriffsspeicher mit ferroelektrischem Transistor (Ferroelectric Transistor Random Access Memory, FeTRAM), ein magnetoresistiver Direktzugriffsspeicher (MRAM), welcher die Memristor-Technologie beinhaltet, oder ein Spin-Transfer-Torque(STT)-MRAM oder eine Kombination der obigen oder ein anderer Speicher sein oder einen solchen umfassen. Beschreibungen hierin, welche sich auf einen „DRAM“ beziehen, können für eine beliebige Speichervorrichtung gelten, welche einen Direktzugriff ermöglicht, flüchtig oder nichtflüchtig. Die Speichervorrichtung oder der DRAM kann sich auf den Die selbst und/oder auf ein verbautes Speicherprodukt beziehen.
  • In einer Ausführungsform ist jede Speichervorrichtung 140 ein separater Speicher-Die, welcher mehrere (z.B. 2) Kanäle je Die umfassen kann. Jede Speichervorrichtung 140 umfasst eine E/A-Schnittstellenlogik 142, welche eine Bandbreite aufweist, die durch die Implementierung der Vorrichtung (z.B. x16 oder x8 oder irgendeine andere Schnittstellenbandbreite) bestimmt wird. Die E/A-Schnittstellenlogik 142 ermöglicht, dass die Speichervorrichtungen mit der Speichersteuerung 120 in Verbindung treten. Die E/A-Schnittstellenlogik 142 kann eine Hardware-Schnittstelle umfassen und kann der E/A 122 der Speichersteuerung entsprechen, jedoch am Ende der Speichervorrichtung. In einer Ausführungsform sind mehrere Speichervorrichtungen 140 parallel mit denselben Datenbussen verbunden. Beispielsweise kann das System 100 mit mehreren parallel verbundenen Speichervorrichtungen 140 konfiguriert sein, wobei jede Speichervorrichtung auf einen Befehl reagiert und auf jeweils interne Speicherressourcen 160 zugreift. Für eine Einspeicherungsoperation kann eine individuelle Speichervorrichtung 140 einen Abschnitt des Gesamtdatenworts einspeichern und für eine Ausleseoperation kann eine individuelle Speichervorrichtung 140 einen Abschnitt des Gesamtdatenworts abrufen.
  • In einer Ausführungsform sind die Speichervorrichtungen 140 direkt auf einer Hauptplatine oder einer Host-System-Plattform (z.B. auf einer Leiterplatte (Printed Circuit Board, PCB), auf welcher der Prozessor 110 angeordnet ist) einer Computervorrichtung angeordnet. In einer Ausführungsform können die Speichervorrichtungen 140 in Speichermodulen 130 organisiert sein. In einer Ausführungsform repräsentieren die Speichermodule 130 Dual-Inline-Speichermodule (Dual Inline Memory Modules, DIMMs). In einer Ausführungsform repräsentieren die Speichermodule 130 eine andere Organisation mehrerer Speichervorrichtungen, um wenigstens einen Teil der Zugriffs- oder Steuerungsschaltungen, was eine separate Schaltung, eine separate Vorrichtung oder eine separate Platte der Host-System-Plattform sein kann, gemeinsam zu benutzen. Die Speichermodule 130 können mehrere Speichervorrichtungen 140 umfassen und die Speichermodule können eine Unterstützung für mehrere separate Kanäle zu den enthaltenen Speichervorrichtungen umfassen, die auf ihnen angeordnet sind.
  • Die Speichervorrichtungen 140 umfassen jeweils Speicherressourcen 160. Die Speicherressourcen 160 repräsentieren individuelle Matrizen von Speicherstellen oder Speicherungsstellen für Daten. Typischerweise werden die Speicherressourcen 160 als Datenreihen verwaltet, auf die über Cacheleitungs- (Reihen) und Bitleitungssteuerung (einzelne Bits innerhalb einer Reihe) zugegriffen wird. Die Speicherressourcen 160 können als separate Kanäle, Ränge und Bänke des Speichers organisiert sein. Kanäle sind unabhängige Steuerstrecken zu Speicherstellen innerhalb der Speichervorrichtungen 140. Ränge beziehen sich auf gemeinsame Stellen überall in mehreren Speichervorrichtungen (z.B. gleiche Reihenadressen innerhalb verschiedener Vorrichtungen). Bänke beziehen sich auf Matrizen von Speicherstellen innerhalb einer Speichervorrichtung 140. In einer Ausführungsform sind Speicherbänke in Unterbänke mit mindestens einem Teil gemeinsam genutzter Schaltungen für die Unterbänke unterteilt.
  • In einer Ausführungsform umfassen die Speichervorrichtungen 140 ein oder mehrere Register 144. Die Register 144 repräsentieren Speichervorrichtungen oder Speicherstellen, welche eine Konfiguration oder Einstellungen für den Betrieb der Speichervorrichtung bereitstellen. In einer Ausführungsform können die Register 144 eine Speicherstelle für die Speichervorrichtung 140 bereitstellen, um Daten für den Zugriff durch die Speichersteuerung 120 als Teil einer Steuerungs- oder Management-Operation zu speichern. In einer Ausführungsform umfassen die Register 144 Modusregister. In einer Ausführungsform umfassen die Register 144 Mehrzweckregister. Durch die Konfiguration der Speicherstellen innerhalb des Registers 144 kann die Speichervorrichtung 140 konfiguriert werden, in einem anderen „Modus“ zu arbeiten, wobei Befehle und/oder Adressinformationen oder Signalleitungen in Abhängigkeit von dem Modus andere Operationen innerhalb der Speichervorrichtung 140 auslösen können. Einstellungen des Registers 144 können eine Konfiguration für E/A-Einstellungen (z.B. zeitliche Ablaufplanung, Anschlüsse oder ODT (On-Die Termination, Auf-Die-Anschlüsse), Treiberkonfiguration und/oder andere E/A-Einstellungen) anzeigen.
  • In einer Ausführungsform umfasst die Speichervorrichtung 140 ODT 146 als Teil der Schnittstellen-Hardware, die zu der E/A 142 gehört. ODT bezieht sich auf eine Verbindungsimpedanz zwischen einer Stromversorgungsschiene und der Signalleitung auf der Empfängerseite. In einer Ausführungsform handelt es sich bei der Stromversorgungsschiene um VDD oder die Hochspannungsversorgung. In einer Ausführungsform kann eine Speichervorrichtung einen Anschluss von der Signalleitung zu VSS oder Masse oder der Niederspannungsversorgung aufweisen. In einer Ausführungsform kann eine Speichervorrichtung einen Anschluss für die Signalleitung sowohl zu VDD als auch zu VSS aufweisen.
  • Die Speichervorrichtung 140 umfasst eine Steuerung 150, welche eine Steuerlogik innerhalb der Speichervorrichtung zum Steuern von internen Operationen innerhalb der Speichervorrichtung repräsentiert. Beispielsweise decodiert die Steuerung 150 Befehle, die von der Speichersteuerung 120 gesendet werden, und erzeugt interne Operationen zum Ausführen oder Befolgen der Befehle. Die Steuerung 150 kann bestimmen, welcher Modus ausgewählt wird, basierend auf dem Register 144, und auf der Grundlage des ausgewählten Modus den Zugriff auf und/oder die Ausführung von Operationen für die Speicherressourcen 160 konfigurieren. Die Steuerung 150 erzeugt Steuersignale zum Steuern des Leitens von Bits innerhalb der Speichervorrichtung 140, um eine geeignete Schnittstelle für den ausgewählten Modus bereitzustellen und einen Befehl zu den richtigen Speicherstellen oder Adressen zu leiten.
  • Wieder Bezug nehmend auf die Speichersteuerung 120, umfasst die Speichersteuerung 120 eine Befehls(CMD)-Logik 124, welche eine Logik oder Schaltungen zum Erzeugen von Befehlen zum Senden zu den Speichervorrichtungen 140 repräsentiert. Typischerweise umfasst die Signalisierung in Speicher-Untersystemen Adressinformationen innerhalb des Befehls oder diesen begleitend, um eine oder mehrere Speicherstellen anzuzeigen oder auszuwählen, wo die Speichervorrichtungen den Befehl ausführen sollen. In einer Ausführungsform umfasst die Steuerung 150 eine Befehlslogik 152 zum Empfangen und Decodieren von Befehls- und Adressinformationen, die über die E/A 142 von der Speichersteuerung 120 empfangen werden. Auf der Grundlage der empfangenen Befehls- und Adressinformationen kann die Steuerung 150 den zeitlichen Ablauf von Operationen der Logik und der Schaltungen innerhalb der Speichervorrichtung 140 steuern, um die Befehle auszuführen. Gemäß einer Ausführungsform ist die Steuerung 150 für das Einhalten von Standards und Spezifikationen verantwortlich.
  • In einer Ausführungsform umfasst die Speichersteuerung 120 eine Auffrischungs(REF)-Logik 126. Die Auffrischungslogik 126 kann verwendet werden, wo die Speichervorrichtungen 140 flüchtig sind und aufgefrischt werden müssen, um einen determinierten Zustand zu bewahren. In einer Ausführungsform zeigt die Auffrischungslogik 126 eine Stelle für die Auffrischung und eine durchzuführende Auffrischungsart an. Die Auffrischungslogik 126 kann eine Selbstauffrischung innerhalb der Speichervorrichtung 140 auslösen und/oder externe Auffrischungen ausführen, indem sie Auffrischungsbefehle sendet. Externe Auffrischungen von der Speichersteuerung können Auffrischungen aller Bänke und/oder Per-Bank-Auffrischungen umfassen. Auffrischungen aller Bänke bewirken die Auffrischung einer ausgewählten Bank innerhalb aller Speichervorrichtungen 140, die parallel verbunden sind. Per-Bank-Auffrischungen bewirken die Auffrischung einer spezifizierten Bank innerhalb einer spezifizierten Speichervorrichtung 140. In einer Ausführungsform umfasst die Steuerung 150 innerhalb der Speichervorrichtung 140 eine Auffrischungslogik 154 zum Anwenden einer Auffrischung innerhalb der Speichervorrichtung 140. In einer Ausführungsform erzeugt die Auffrischungslogik 154 interne Operationen zur Durchführung einer Auffrischung gemäß einer externen Auffrischung, die von der Speichersteuerung 120 empfangen wird. Die Auffrischungslogik 154 kann in Reaktion auf den Befehl bestimmen, ob eine Auffrischung zu der Speichervorrichtung 140 geleitet wird, und welche Speicherressourcen 160 aufzufrischen sind.
  • Gemäß einer Ausführungsform umfasst das SOC 101 eine Mehrebenen-Speichermanagement-Schaltung 103 zum Umsetzen von Daten zwischen Nah- und Fernspeicher. Andere Ansätze zum Management von Mehrebenenspeichern können andere Vorteile und Nachteile aufweisen.
  • Ein Weg zum Verwalten von Mehrebenenspeichern ist die Verwendung einer Speicherpartitionierung. In einem Beispiel eines Systems mit Speicherpartitionierung partitioniert das Betriebssystem (OS) den physischen Adressraum und ordnet Programmdaten irgendwelchen Speicherbereichen zu, die verfügbar sind. In einem System mit Speicherpartitionierung kann das OS auch opportunistisch heiße Seiten aus dem Fernspeicher in den Nahspeicher umsetzen, wenn sich die Nutzungsmuster ändern. Eine „Umsetzung“ bezieht sich entweder auf eine Umsetzung oder eine Rückumsetzung und umfasst das Erzeugen einer Beziehung zwischen Adressen. Wenn beispielsweise eine Seite aus dem Fernspeicher in den Nahspeicher umgesetzt worden ist, sind die Daten aus dem Fernspeicher in den Nahspeicher überführt worden und ein Zugriff auf die Fernspeicheradresse kann auf die Nahspeicheradresse übersetzt oder umgeleitet werden. Ein Vorteil der Speicherpartitionierung ist die Möglichkeit, existierende Speichermanagementstrategien unter Verlass auf das OS zu nutzen, welches oft für das Speichermanagement verantwortlich ist. Ein Nachteil der Speicherpartitionierung ist jedoch, dass sie dazu neigt, langsam auf die Änderung von Positionseigenschaften zu reagieren. Wenn beispielsweise Programme auf eine neue Seite im Speicher zugreifen, wird die Seite typischerweise intensiv genutzt, bevor man sich einem neuen Bereich zuwendet. Daher ist in einem solchen Ansatz das OS möglicherweise nicht in der Lage, schnell genug auf die Zugriffe auf die neue Seite zu reagieren, um die Leistungsvorteile des Nahspeichers zu nutzen.
  • Ein anderer Weg zum Verwalten von Mehrebenenspeichern ist die Verwendung einer Hardware-Umsetzung. In einem solchen Beispiel ist die Hardware für eine Umsetzung von Daten zwischen Nah- und Fernspeicher ohne OS-Intervention verantwortlich. Beispielsweise unterhält die Hardware Umsetzungstabellen für Speicher auf eine Weise ähnlich wie bei einem Cache-Speicher. Wenn eine Bezugnahme auf eine neue Seite im Fernspeicher erfolgt, kann die Hardware unmittelbar die Daten aus dem Fernspeicher in den Nahspeicher kopieren, wodurch ermöglicht werden kann, die Masse der Wiederverwendung einzufangen. Ein Nachteil der Hardware-Umsetzung sind die Kosten der Umsetzungsstrukturen, welche bedeutend sein können. Beispielsweise ist die Größe der Umsetzungsstrukturen an die Größe des Nahspeichers gefesselt, mit einem Eintrag je Seite. In einem Beispiel wiesen in einem Speicher mit einem 2-GB-Nahspeicher, der in 4-KB-Seiten organisiert ist, die Umsetzungsstrukturen 512K Einträge auf. Wenn in diesem Beispiel 4-Byte-Tags benutzt würden, würde für die Tags 2 MB Speicher verwendet. Daher kann der für die Hardware-Umsetzung benötigte Speicher bedeutend sein.
  • Im Gegensatz dazu kann in einer Ausführungsform eine Mehrebenen-Speichermanagement-Schaltung Adressen zwischen Nah- und Fernspeicher umsetzen, ohne bedeutende Umsetzungsstrukturen zu benötigen. Wieder Bezug nehmend auf 1, ist in einer Ausführungsform die Mehrebenen-Speichermanagement-Schaltung 103 mit dem Prozessor 110 und der Speichersteuerung 120 verbunden. Gemäß einer Ausführungsform erfasst die Umsetzungslogik 105 Anforderungen für Daten vom Prozessor 110. Nachdem die Umsetzungslogik 105 eine Anforderung für Daten erfasst, die im Fernspeicher angeordnet sind, prüft die Umsetzungslogik 105, ob die Daten in den Nahspeicher umgesetzt worden sind, indem sie in der Registermatrix 107 nach der Fernspeicheradresse sucht. Die Registermatrix 107 ist eine „Hochstufungs-Registermatrix“. In einer Ausführungsform umfasst die Hochstufungs-Registermatrix 107 Einträge zum Anzeigen, welche Fernspeicheradressen auf die ausgewählte Teilgruppe der Nahspeicheradressen umgesetzt werden. Wenn die Umsetzungslogik 105 bestimmt, dass sich die Fernspeicheradresse der angeforderten Daten in der Hochstufungs-Registermatrix 107 befindet, kann die Umsetzungslogik 105 die Nahspeicheradresse bestimmen, auf welche die angeforderten Daten kopiert wurden. Die Umsetzungslogik 105 kann dann an die Speichersteuerung 120 eine Anforderung für die Daten auf der Nahspeicheradresse senden, auf welche die Daten kopiert wurden.
  • In einer Ausführungsform überführt die Umsetzungslogik 105, wenn sie bestimmt, dass sich die Fernspeicheradresse nicht in der Hochstufungs-Registermatrix 107 und somit nicht im Nahspeicher befindet, die angeforderten Daten in den Nahspeicher. Beispielsweise kann die Umsetzungslogik 105 eine verfügbare Nahspeicheradresse aus der Hochstufungs-Registermatrix 107 auswählen und eine Einspeicherung der angeforderten Daten in die ausgewählte Nahspeicheradresse beginnen. Somit setzt die Umsetzungslogik in einer Ausführungsform physische Adressen im Fernspeicher zu physischen Adressen im Nahspeicher um.
  • Wenn die angeforderten Daten nicht bereits in den Nahspeicher kopiert worden sind, leitet in einer Ausführungsform die Umsetzungslogik 105 die Anforderung an den Fernspeicher weiter. Die Umsetzungslogik 105 kann dann die Daten aus dem Fernspeicher in den Nahspeicher kopieren und die Adressen in der Hochstufungs-Registermatrix 107 speichern. Anschließend kann die Umsetzungslogik 105 folgende Anforderungen für dieselbe Fernspeicheradresse auf die Nahspeicheradresse umleiten, auf welche die Daten kopiert wurden.
  • Wie nachstehend noch detaillierter beschrieben, sendet die Umsetzungslogik 105, wenn sie bestimmt, dass es keine verfügbaren Einträge in der Hochstufungs-Registermatrix 107 gibt, eine Unterbrechung an den Prozessor 110. Eine Unterbrechung kann auch als eine Programmunterbrechung oder eine Ausnahmesituation bezeichnet werden und ist ein von Hardware oder Software ausgesendetes Signal an den Prozessor, welches in Reaktion auf ein bestimmtes Ereignis Aufmerksamkeit anfordert. Ein Prozessor kann auf eine Unterbrechung reagieren, indem er seine aktuellen Aktivitäten unterbricht, seinem Zustand sichert und eine Funktion ausführt, die als ein Unterbrechungs-Handler bezeichnet wird (welche auch als eine Unterbrechungs-Dienstroutine (Interrupt Service Routine, ISR) bezeichnet werden kann), um das Ereignis zu handhaben. Unterbrechungen von Hardware (als Hardware-Unterbrechungen bezeichnet) können unter Verwendung elektrischer Signale realisiert werden, welche von der Hardware an den Prozessor gesendet werden. Hardware-Unterbrechungen sind typischerweise asynchron und können mitten in einer Befehlsausführung auftreten. Der Akt des Beginns einer Hardware-Unterbrechung kann als eine Unterbrechungsanforderung (Interrupt Request, IRQ) bezeichnet werden. In einigen Fällen kann eine Unterbrechung durch einen speziellen Befehl in dem Befehlssatz ausgelöst werden, welcher eine Unterbrechung bewirkt, wenn er ausgeführt wird (z.B. eine synchrone Unterbrechung).
  • In einer Ausführungsform bewirkt die Unterbrechung, dass das OS Unterbrechungs-Handler-Code ausführt, um die Registermatrix mit verfügbaren Nahspeicheradressen zu aktualisieren. Um die Registermatrix 107 zu aktualisieren, kann das OS verschiedene Nahspeicheradressen auswählen, die verfügbar sind, oder wenn keine Nahspeicheradressen verfügbar sind, kann das OS „Opfer“ auswählen, welche in den Fernspeicher zurückgestuft werden. Das „Zurückstufen“ einer Seite bezieht sich hierin auf das Kopieren der Seite aus dem Nahspeicher in den Fernspeicher oder einen anderen Speicher. Das Zurückstufen einer Seite kann im Nahspeicher Raum für neue Seiten schaffen. 5B und die entsprechende Beschreibung umfassen weitere Einzelheiten über ein Verfahren zum Aktualisieren einer Registermatrix. In einer Ausführungsform kann das OS nach dem Auswählen, welche Daten aus dem Nahspeicher in den Fernspeicher zu kopieren sind, bewirken, dass die Daten unmittelbar kopiert werden, oder das OS kann die beabsichtigten Einspeicherungen in einer „Zurückstufungs“-Registermatrix speichern. Somit umfasst eine Ausführungsform eine Zurückstufungs-Registermatrix 109, um das Kopieren von Daten aus dem Nahspeicher in den Fernspeicher aufzuschieben. Andere Ausführungsformen umfassen keine Zurückstufungs-Registermatrix 109, sondern können stattdessen bewirken, dass die Daten unmittelbar (oder zumindest ohne bedeutende Verzögerung) nach der Entscheidung zur Zurückstufung der Daten kopiert werden. Die Registermatrizen 107 und 109 können mit einer beliebigen Hardware-Struktur realisiert werden, welche in der Lage ist, die hierin beschriebenen relevanten Informationen zu speichern.
  • In einer Ausführungsform ermöglicht die Delegation der Aktualisierung der Hochstufungs-Registermatrix 107 auf das OS, dass das OS auswählt, welche Daten im Nahspeicher und im Fernspeicher angeordnet werden sollen. Beispielsweise kann das OS bestimmte kritische Speicherbereiche im Nahspeicher pinnen, indem es diese Bereiche für die Mehrebenen-Speichermanagement-Schaltung 103 nicht verfügbar macht. In einem solchen Beispiel verfolgt das OS Bereiche, für welche es entschieden hat, dass sie nicht verfügbar sind, und speichert diese Nahspeicheradressen nicht zur Umsetzung in die Registermatrix ein. Durch die Delegation der Aktualisierung der Hochstufungs-Registermatrix 107 kann auch die hohe Anwendungskenntnis genutzt werden, um dazu beizutragen, Ersetzungsentscheidungen zu leiten, wenn frische Opfer aus dem Nahspeicher ausgewählt werden. Außerdem kann dadurch, dass dem OS ermöglicht wird, eine gewisse Kontrolle über die Speicherumsetzung zu haben, das Erfordernis einer großen Tag-Struktur entfallen. Wie oben erwähnt, speichert in einer Ausführungsform die Registermatrix 107 Informationen, welche anzeigen, welche Fernspeicheradressen in eine ausgewählte Teilgruppe von Nahspeicheradressen umgesetzt werden. In einer solchen Ausführungsform kann die Anzahl der Einträge in der Registermatrix unabhängig von der Anzahl der Seiten im Nahspeicher und niedriger als diese sein. Somit kann in einer Ausführungsform eine Mehrebenen-Speichermanagement-Schaltung Leistungsverbesserungen erzielen, die mit einer Hardware-Umsetzung verbunden sind, ohne eine Tag-Matrix für jede Seite im Nahspeicher zu benötigen. Ferner kann eine Mehrebenen-Speichermanagement-Schaltung ermöglichen, dass Seiten umgesetzt werden, sobald auf sie Bezug genommen wird, anstatt darauf zu warten, dass das OS sie umsetzt.
  • Außerdem können im Gegensatz zu anderen Ansätzen, welche jedes Mal, wenn eine Seite überführt wird, die Kosten mit sich bringen, die mit einer Unterbrechungshandhabung in Verbindung stehen, die Kosten einmal für eine größere Anzahl an Seiten eingehandelt werden. Beispielsweise können die Kosten, die mit einer Unterbrechungs-Handhabung und Seitentabellenmodifikationen in Verbindung stehen, einmal für so viele Seiten eingehandelt werden, wie von der Registermatrix 107 umgesetzt werden, wodurch die Kosten über mehrere Seiten amortisiert werden. Deswegen können in Ausführungsformen die festen Kosten minimiert werden, die mit einer OS-Unterbrechung in Verbindung stehen. Ferner kann in einer Ausführungsform eine Mehrebenen-Speichermanagement-Schaltung die kurzen stoßweisen Nutzungsmuster nutzen, die bei echten Arbeitsbelastungen auftreten können, indem eine Umsetzungslogik einbezogen wird, um unmittelbar zu bewirken, dass eine Seite in den Nahspeicher überführt wird. Somit kann in einer Ausführungsform eine Mehrebenen-Management-Schaltung ermöglichen, dass der Massentransfer von Seiten vom Fernspeicher in den Nahspeicher unter Hardware-Steuerung steht, aber auch ermöglichen, dass das OS die Speicherumsetzung mit einer gröberen Granularität verwaltet.
  • In einer Ausführungsform umfasst das SOC 101 eine Direktspeicherzugriffs(Direct Memory Access, DMA)-Maschine 111 zum Zugreifen auf Speicherressourcen 160 zum Übertragen von Daten zwischen Nah- und Fernspeicher. In einer Ausführungsform kann die DMA-Maschine 111 relativ unabhängig vom Prozessor 110 auf Speicherressourcen 160 zugreifen, in dem Sinn, dass der Prozessor 110 eine DMA-Übertragung beginnt und dann andere Operationen durchführen kann, während die DMA-Maschine 111 die Übertragung durchführt. In einer Ausführungsform beginnt der Prozessor 110 eine DMA-Übertragung auf der Grundlage der Einträge der Zurückstufungs-Registermatrix 109. In einer solchen Ausführungsform liest die DMA-Maschine 111 die Einträge der Zurückstufungs-Registermatrix 109 und kopiert die Seiten von den Nahspeicheradressen, die in der Zurückstufungs-Registermatrix 109 angezeigt werden, in die entsprechenden Fernspeicheradressen. Somit kann in einer Ausführungsform das Freisetzen von Raum im Nahspeicher im Hintergrund der DMA-Maschine 111 gehandhabt werden. Wenn die DMA-Übertragung abgeschlossen ist, kann die DMA-Maschine 111 eine Unterbrechung an den Prozessor 110 senden, welche anzeigt, dass die Übertragung abgeschlossen ist. Obwohl 1 die Zurückstufungs-Registermatrix 109 zeigt, können andere Ausführungsformen DMA-Übertragungen ohne eine dedizierte Zurückstufungs-Registermatrix, sondern stattdessen beispielsweise mit allgemeinen DMA-Registern nutzen. In anderen Ausführungsformen können das OS und/oder die Umsetzungslogik 105 die Zurückstufungs-Registermatrix 109 nutzen, um zu übertragende Daten zu verfolgen, ohne dass die DMA-Maschine 111 benötigt wird. Beispielsweise kann das OS Adressen von Seiten, die aus dem Nahspeicher zurückzustufen sind, in der Zurückstufungs-Registermatrix 109 speichern. Das OS und/oder die Umsetzungslogik 105 können dann auf der Grundlage der Einträge der Zurückstufungs-Registermatrix 109 Befehle zum Übertragen von Daten erzeugen.
  • Somit kann eine Mehrebenen-Speichermanagement-Schaltung, wie hierin beschrieben, die niedrigen Kosten und die Einfachheit eines vom OS verwalteten Ansatzes bewahren und dabei die Leistungsvorteile eines Hardware-Ansatzes erzielen.
  • 2 ist ein Blockschaubild einer Ausführungsform eines Systems, welches eine Mehrebenen-Speichermanagement-Schaltung umfasst. Das System 200 veranschaulicht Teile eines Speicher-Untersystems einer Computervorrichtung und liefert ein Beispiel für eine Ausführungsform des Systems 100 der 1. Der Host 210 repräsentiert eine Logik, welche Zugriffe auf den Systemspeicher verwaltet. Der Host 210 kann eine Speichersteuerung oder eine andere Schaltung auf einem Prozessor oder SOC oder integriert mit einem Prozessor umfassen, um den Speicherzugriff zu steuern.
  • Die Speichervorrichtungen 220 repräsentieren mehrere Vorrichtungen, welche Code und/oder Daten für ein Host-System zum Ausführen von Operationen speichern. Die Speichervorrichtungen 220 können als Ränge 240 organisiert sein, um den gleichzeitigen Zugriff auf größere Anzahlen von Bits zu ermöglichen. Ein Rang umfasst mehrere parallele Speichervorrichtungen. In einer Ausführungsform benutzen Ränge 240 gemeinsam Daten-Pins, Befehls/Adress(C/A)-Pins und Takt-Pins. Jeder Rang 240 umfasst ein oder mehrere spezielle Aktivierungssignale, um zwischen verschiedenen Rängen auszuwählen. Wie dargestellt, umfasst das System 200 N Ränge 240. Die spezielle Gruppierung der Signalleitungen erfolgt nicht notwendigerweise physisch nach dem Rang. In einer Ausführungsform werden bestimmte Signalleitungen zwischen den Rängen 240 wiederverwendet. In einer Ausführungsform benutzen alle Speichervorrichtungen 220 gemeinsam denselben Systembus 230, z.B. einen Datenbus und einen Befehls/Adress(C/A)-Bus, und benutzen gemeinsam ein Taktsignal oder stroboskopisches Signal (welches eine oder mehrere Signalleitungen umfassen kann). Das System 200 kann Aktivierungssignale verwenden, z.B. CKE (Clock Enable, Taktaktivierung) und Chipauswahl (Chip Select, CS) und/oder CS und andere Aktivierungssignale, um eine Rang- oder Vorrichtungsgruppierung von einer anderen zu unterscheiden. Somit können Speichervorrichtungen 220, welche teil desselben Rangs 240 sind, gemeinsam dasselbe Aktivierungs-/Auswahlsignal benutzen. In einer Realisierung, welche eine E/A-Schnittstelle zwischen etwas anderem als einem Speicher-Untersystem verwendet, kann der Rang 240 eine andere Gruppierung von Vorrichtungen durch den gemeinsamen Bus repräsentieren.
  • Der Host 210 umfasst eine Befehlslogik 212 zum Erzeugen von Befehlen an Speichervorrichtungen 220. In einer Ausführungsform ist die Befehlslogik 212 mit der Mehrebenen-Speichermanagement-Schaltung 211 verbunden. Die Mehrebenen-Speichermanagement-Schaltung 211 führt gemäß einer Ausführungsform eine Umsetzung von Daten zwischen Nah- und Fernspeicher durch. Wie in 15 abgebildet, umfasst die Mehrebenen-Speichermanagement-Schaltung 211 eine Umsetzungslogik 205, eine Hochstufungs-Registermatrix 207 und eine Zurückstufungs-Registermatrix 209. Die Mehrebenen-Speichermanagement-Schaltung 211 kann dieselbe sein wie die Mehrebenen-Speichermanagement-Schaltung 103, die oben bei 1 beschrieben wird, oder eine ähnliche wie diese sein. Beispielsweise kann die Umsetzungslogik 205 Anforderungen für Daten in den Speichervorrichtungen 220 erfassen, und wenn die Anforderungen für Adressen im Fernspeicher sind, bestimmen, ob sich diese Adressen in der Hochstufungs-Registermatrix 207 befinden. Wenn sich die Fernspeicheradressen in der Hochstufungs-Registermatrix 207 befinden, kann die Umsetzungslogik 205 die Adresse der Anforderung zu der entsprechenden Nahspeicheradresse modifizieren, auf welche die angeforderten Daten kopiert wurden. Die Mehrebenen-Speichermanagement-Schaltung 211 kann auch eine Zurückstufungs-Registermatrix 209 umfassen, um bei der Übertragung von Daten auf den Fernspeicher (oder einen anderen Speicher) zu unterstützen, um Raum im Nahspeicher frei zu machen.
  • Die Speichervorrichtungen 220 umfassen einen Decoder 222, welcher eine Logik zum Empfangen und Decodieren von Befehlen vom Host 210 repräsentiert. Durch die Decodierung kann bestimmt werden, ob der Befehl für die Speichervorrichtung gilt. In einer Ausführungsform umfasst die Speichervorrichtung 220 ein Register 224 zum Einstellen einer oder mehrerer Konfigurationsparameter. Die Einstellungen des Registers 224 können eine Konfiguration für E/A-Einstellungen (z.B. zeitliche Ablaufplanung, Anschlüsse oder ODT (Auf-Die-Anschlüsse), Treiberkonfiguration und/oder andere E/A-Einstellungen) anzeigen
  • 3 ist eine Darstellung einer Registermatrix zum Speichern von Nahspeicheradressen gemäß einer Ausführungsform. Die Registermatrix 300 der 3 ist ein Beispiel für eine Hochstufungs-Registermatrix wie die oben beschriebene Hochstufungs-Registermatrix 107 der 1. In einer Ausführungsform umfasst die Hochstufungs-Registermatrix 300 Informationen zum Anzeigen, welche Adressen im Fernspeicher 310 zu einer Teilgruppe von Adressen im Nahspeicher 308 umgesetzt worden sind. Wie dargestellt, ist der Nahspeicher 308 kleiner als der Fernspeicher 310, obwohl in anderen Ausführungsformen der Nahspeicher 308 größer oder gleich dem Fernspeicher 310 sein kann.
  • In einer Ausführungsform umfasst die Hochstufungs-Registermatrix 300 ein Fernspeicher-Adressfeld 302 zum Speichern einer Adresse im Fernspeicher. Außerdem umfasst die Hochstufungs-Registermatrix 300 ein Nahspeicher-Adressfeld 304. Das Nahspeicher-Adressfeld 304 ist zum Speichern einer Adresse im Nahspeicher. Das Fernspeicher-Adressfeld 302 und das Nahspeicher-Adressfeld 304 können auch als Speicherungszeiger auf Daten im Fern- bzw. Nahspeicher bezeichnet werden. Die Hochstufungs-Registermatrix 300 umfasst eine Anzahl von Einträgen, welche Umsetzungen von Fernspeicheradressen zu einer Teilgruppe von Nahspeicheradressen speichern. Eine Teilgruppe von Nahspeicheradressen umfasst weniger als alle Nahspeicheradressen und kann im Bereich von 1 bis zu der Anzahl der Nahspeicheradressen minus 1 liegen. Beispielsweise umfasst in einer Ausführungsform eine Registermatrix 256 Einträge zum Speichern von Adressen für 256 Seiten im Nahspeicher, wobei der Nahspeicher insgesamt mehr als 256 Seiten umfasst. Andere Ausführungsformen können 512, 1024 oder eine andere ganzzahlige Anzahl an Einträgen für eine Teilgruppe von Nahspeicheradressen umfassen. Die Anzahl der Einträge kann auf der Grundlage der gewünschten Leistungsfähigkeit und/oder Hardware-Erwägungen ausgewählt werden. Beispielsweise kann eine geringere Anzahl an Einträgen zu einer preiswerteren Realisierung führen, kann jedoch aufgrund der häufigeren OS-Unterbrechungen zu einer niedrigeren Leistungsfähigkeit führen. In einem anderen Beispiel kann eine höhere Anzahl an Einträgen die Leistungsfähigkeit verbessern, aber die Kosten erhöhen. In einer Ausführungsform ist die Anzahl der Einträge in der Hochstufungs-Registermatrix 300 niedriger als die Anzahl der Seiten im Nahspeicher 308, unabhängig davon, ob eine höhere oder niedrigere Anzahl an Einträgen verwendet wird. Daher weist in einer solchen Ausführungsform die Hochstufungs-Registermatrix 300 nicht für jede Seite im Nahspeicher 308 einen Eintrag auf. Ein solcher Ansatz kann Leistungsverbesserungen ermöglichen, ohne dass eine hinderliche große Tag-Struktur erforderlich wird.
  • Wie dargestellt, umfasst die Hochstufungs-Registermatrix 300 außerdem ein Besetzt-Bit 306. Ein „Besetzt-Bit“ ist mindestens ein Bit, welches anzeigt, ob die entsprechende Nahspeicheradresse für eine Umsetzung verfügbar ist. Daher kann das „Besetzt-Bit“ auch als ein „Verfügbarkeits-Bit“ bezeichnet werden, um den entgegengesetzten Status zu kennzeichnen. Obwohl der Begriff „Bit“ verwendet wird, kann jeder Eintrag in der Registermatrix mehr als ein einzelnes Bit aufweisen, um zu kennzeichnen, ob eine gegebene Nahspeicheradresse verfügbar ist, und/oder um andere Statusinformationen über den Eintrag zu übermitteln. Wie oben beschrieben, wählt in einer Ausführungsform eine Umsetzungslogik (z.B. die Umsetzungslogik 105 der 1) auf der Grundlage des Besetzt-Bits 306 eine verfügbare Nahspeicheradresse aus. Zu Veranschaulichungszwecken umfasst 3 außerdem eine visuelle Darstellung 307 darüber, ob die entsprechende Nahspeicheradresse verfügbar oder besetzt ist.
  • In einer Ausführungsform kann auf Einträge der Hochstufungs-Registermatrix 300 über physische Speicheradressen zugegriffen werden. Deswegen kann in einer solchen Ausführungsform der Prozessor (z.B. der Prozessor 110 der 1) mit Auslese- und Einspeicherungsbefehlen an physische Speicheradressen auf die Hochstufungs-Registermatrix 300 zugreifen. Durch die Fähigkeit zum Zugreifen auf die Einträge der Hochstufungs-Registermatrix 300 über physische Speicheradressen kann ermöglicht werden, dass das OS während einer Unterbrechungs-Handhabung zum Aktualisieren der Hochstufungs-Registermatrix 300 Einträge der Hochstufungs-Registermatrix 300 liest und modifiziert. In dem Beispiel, das in 3 dargestellt ist, umfasst die Hochstufungs-Registermatrix 300 vier Nahspeicheradressen in den Einträgen 301A bis 301D. Die Hochstufungs-Registermatrix 300 ist in einem Betriebszustand dargestellt, in welchem die Matrix 300 teilweise gefüllt ist. Beispielsweise sind zwei Einträge 301A, 301B verfügbar und zwei Einträge 301C und 301D sind besetzt, wie durch den Wert des Besetzt-Bits 306 und die entsprechende visuelle Darstellung 307 angezeigt. In einer Ausführungsform führt die Registermatrix 300 eine Ausführungsform eines Verfahrens gemäß dem aus, was in 5A dargestellt ist.
  • 4 ist eine Darstellung einer Registermatrix zum Aufschieben von Dateneinspeicherungen aus dem Nahspeicher in den Fernspeicher gemäß einer Ausführungsform. Wie oben beschrieben, löst in einer Ausführungsform die Umsetzungslogik eine Unterbrechung aus, wenn die Hochstufungs-Registermatrix voll ist. In Reaktion darauf aktualisiert das OS die Hochstufungs-Registermatrix mit neuen verfügbaren Nahspeicheradressen. Wenn es keine verfügbaren Nahspeicheradressen gibt, kann das OS Seiten im Nahspeicher auswählen, die in den Fernspeicher zu überführen sind, und entsprechend Nahspeicheradressen für die Hochstufungs-Registermatrix freisetzen. In einer Ausführungsform kann das System eine Zurückstufungs-Registermatrix zur Unterstützung bei der Übertragung von Daten aus dem Nahspeicher in den Fernspeicher verwenden.
  • Die Registermatrix 400 der 4 ist ein Beispiel für eine Zurückstufungs-Registermatrix. Die Zurückstufungs-Registermatrix 400 ist ein Beispiel für eine Ausführungsform der oben beschriebenen Zurückstufungs-Registermatrix 109 der 1. In einer Ausführungsform umfasst die Zurückstufungs-Registermatrix 400 ein Nahspeicher-Adressfeld 402 und ein Fernspeicher-Adressfeld 404. In einer Ausführungsform enthält das Nahspeicher-Adressfeld 402 eine Adresse im Nahspeicher 308, von welcher Daten zu kopieren sind. Das Fernspeicher-Adressfeld 404 enthält eine Adresse im Fernspeicher 310, auf welche die Daten zu kopieren sind. Somit zeigen in einer Ausführungsform die Einträge 401A bis 401D der Zurückstufungs-Registermatrix 400 an, welche Seiten aus dem Nahspeicher zu kopieren sind, und zeigen die Stellen im Fernspeicher an, auf welche die Seiten zu kopieren sind.
  • In einer Ausführungsform speichert eine DMA-Maschine, z.B. die DMA-Maschine 111 der 1, in Reaktion auf eine Unterbrechungsanforderung die Daten, auf die im Nahspeicher-Adressfeld 402 gezeigt wird, in die Fernspeicheradresse ein, die im Fernspeicher-Adressfeld 404 gespeichert ist. In anderen Ausführungsformen können das OS und/oder die Umsetzungslogik die Daten durch reguläre Auslese- und Einspeicherungsbefehle übertragen, anstatt eine DMA-Maschine zu verwenden. In einer Ausführungsform umfasst die Zurückstufungs-Registermatrix 400 ein Erledigt-Bit. Bei einem „Erledigt-Bit“ handelt es sich um mindestens ein Bit zum Anzeigen, ob die Daten, auf welche in dem entsprechenden Nahspeicher-Adressfeld gezeigt wird, kopiert worden sind. Daher könnte das „Erledigt-Bit“ auch als ein „Nicht-Erledigt-Bit“ bezeichnet werden, um den entgegengesetzten Status zu kennzeichnen. Obwohl der Begriff „Bit“ verwendet wird, kann jeder Eintrag in der Zurückstufungs-Registermatrix 400 mehr als ein einzelnes Bit aufweisen, um zu kennzeichnen, ob eine entsprechende Speicherübertragung abgeschlossen ist, und/oder um andere Statusinformationen über den Eintrag zu übermitteln. Ähnlich wie bei 3 kann in einer Ausführungsform auf die Einträge in der Zurückstufungs-Registermatrix 400 über physische Speicheradressen zugegriffen werden. Beispielsweise können der Zurückstufungs-Registermatrix 400 physische Speicheradressen zugewiesen werden und auf diese kann daher über Speicherauslese- und Einspeicherungsbefehle zugegriffen werden. 4 wird nachstehend im Zusammenhang mit dem Verfahren, das in 5A veranschaulicht ist, noch detaillierter beschrieben.
  • 5A ist ein Ablaufplan einer Ausführungsform eines Verfahrens zum Management von Mehrebenenspeicher, umfassend ein Umsetzen von Daten zwischen Nah- und Fernspeicher. Wie oben beschrieben, kann eine Mehrebenen-Speichermanagement-Schaltung eine Registermatrix zum Speichern von Nahspeicheradressen und Fernspeicheradressen umfassen, welche zu den Nahspeicheradressen umgesetzt werden. Die Mehrebenen-Speichermanagement-Schaltung kann auch eine Umsetzungslogik zum Umsetzen von Adressen in Reaktion auf Anforderungen für Daten im Fernspeicher umfassen. Die Umsetzungslogik kann eine Umsetzung durchführen, sobald sie Anforderungen für den Fernspeicher erfasst, und kann deswegen die stoßweisen Nutzungsmuster nutzen, um die Systemleitung zu verbessern, ohne dass hinderlich große Tag-Matrizen erforderlich sind. Beispiele für eine Mehrebenen-Speichermanagement-Schaltung finden sich in 1 (Mehrebenen-Speichermanagement-Schaltung 103) und 2 (Mehrebenen-Speichermanagement-Schaltung 211). Ein Beispiel für eine Registermatrix findet sich in 3 (Hochstufungs-Registermatrix 300).
  • Die Operationen des Verfahrens 550 können durch eine Mehrebenen-Speichermanagement-Schaltung durchgeführt werden. In einer Ausführungsform erfasst die Umsetzungslogik eine Anforderung von Daten im Fernspeicher, 551. Beispielsweise kann ein Prozessor (z.B. der Prozessor 110 der 1) eine Seite anfordern, die sich im Fernspeicher befindet, und die Umsetzungslogik kann die Anforderung erfassen oder empfangen. In Reaktion auf die Anforderung kann die Umsetzungslogik bestimmen, ob sich die Fernspeicheradresse der angeforderten Daten in einer Registermatrix befindet, 552. Beispielsweise kann, Bezug nehmend auf 3, die Umsetzungslogik das Fernspeicher-Adressfeld 302 jedes der Einträge 301A bis 301D untersuchen, um zu sehen, ob die Einträge 301A bis 301D die Fernspeicheradresse der angeforderten Daten umfassen. Wenn sich die Fernspeicheradresse in der Registermatrix befindet, JA-Zweig bei 554, fordert die Umsetzungslogik die Daten aus der Nahspeicheradresse an, die der Fernspeicheradresse in der Registermatrix entspricht, 556. Wenn beispielsweise, wieder Bezug nehmend auf 3, die Fernspeicheradresse im Eintrag 301C mit der Fernspeicheradresse der angeforderten Daten übereinstimmt (d.h., wenn es einen „Treffer“ gibt), kann die Umsetzungslogik die Anforderung auf die entsprechende Nahspeicheradresse umleiten, die in dem Nahspeicher-Adressfeld 304 des Eintrags 301C gespeichert ist.
  • Wenn sich die Fernspeicheradresse nicht in der Registermatrix befindet, NEIN-Zweig bei 554, bestimmt die Umsetzungslogik, ob es verfügbare Nahspeicheradressen in der Matrix gibt, 555. Wenn beispielsweise, Bezug nehmend auf 3, die Umsetzungslogik die besetzten Einträge 301C, 301D der Registermatrix 300 untersucht und bestimmt, dass die in den Fernspeicher-Adressfeldern 302 der Einträge 301C, 301D gespeicherten Fernspeicheradressen nicht mit der Fernspeicheradresse der angeforderten Daten übereinstimmen (d.h., wenn es keinen „Treffer“ gibt), kann die Umsetzungslogik so fortfahren, dass sie eine verfügbare Nahspeicheradresse sucht. In einer Ausführungsform umfasst das Bestimmen, ob es verfügbare Nahspeicheradressen gibt, Bestimmen, ob es Einträge mit zurückgesetzten Besetzt-Bits gibt. In dem Beispiel, das in 3 dargestellt ist, würde die Umsetzungslogik gemäß einer Ausführungsform bestimmen, dass es verfügbare Nahspeicheradressen gibt, indem sie das Besetzt-Bit 306 der Einträge 301A, 301B liest. Wenn es jedoch keine verfügbaren Nahspeicheradressen in der Registermatrix gibt, NEIN-Zweig bei 557, sendet die Umsetzungslogik eine Unterbrechungsanforderung, um zu bewirken, dass das OS (oder eine andere Logik oder vom Prozessor ausgeführte Befehle) die Registermatrix mit verfügbaren Einträgen aktualisiert, 566.
  • Wieder zurückkehrend zu dem Szenario, dass es verfügbare Nahspeicheradressen in der Matrix gibt, JA-Zweig bei 557, wählt die Umsetzungslogik eine verfügbare Nahspeicheradresse aus der Registermatrix aus, 558. In einer Ausführungsform, wobei Einträge der Registermatrix ein Besetzt-Bit umfassen, basiert die Auswahl der verfügbaren Nahspeicheradresse auf dem Wert des entsprechenden Besetzt-Bits. Beispielsweise wählt die Umsetzungslogik einen Eintrag mit einem Besetzt-Bit gleich ,0' aus, wodurch angezeigt wird, dass der Eintrag verfügbar ist. In dem Beispiel, dass in 3 dargestellt ist, kann die Umsetzungslogik den Eintrag 301A oder den Eintrag 301B auswählen.
  • In einer Ausführungsform beginnt die Umsetzungslogik nach dem Auswählen der Nahspeicheradresse eine Einspeicherung der Daten von der Fernspeicheradresse in die ausgewählte Nahspeicheradresse, 562. Das Beginnen der Einspeicherung von Daten aus dem Fernspeicher kann Erzeugen eines Auslesebefehls an die Fernspeicheradresse, die Daten auszulesen, und Erzeugen eines Einspeicherungsbefehls an die Nahspeicheradresse umfassen, die Daten einzuspeichern. In einer anderen Ausführungsform löst die Umsetzungslogik das Einspeichern der Daten über eine DMA-Maschine aus.
  • In einer Ausführungsform speichert die Umsetzungslogik die Fernspeicheradresse in dem Eintrag der Registermatrix ein, welcher der ausgewählten Nahspeicheradresse entspricht, 564. Wenn beispielsweise, Bezug nehmend auf 3, der Eintrag 301A ausgewählt wird, kann die Umsetzungslogik die Fernspeicheradresse im Fernspeicher-Adressfeld 302 des Eintrags 301A speichern.
  • In einer Ausführungsform modifiziert die Umsetzungslogik das entsprechende Besetzt-Bit, um anzuzeigen, dass die ausgewählte Nahspeicheradresse nicht verfügbar ist, 567. In einer Ausführungsform, wobei das Besetzt-Bit Nichtverfügbarkeit anzeigt, könnte das Bit zum Beispiel auf , 1' gestellt werden, um anzuzeigen, dass die Nahspeicheradresse nicht verfügbar ist. In einer anderen Ausführungsform jedoch, bei welcher die Registermatrix ein „Verfügbarkeits-Bit“ statt eines „Besetzt-Bits“ umfasst, kann die Umsetzungslogik das Verfügbarkeits-Bit auf ,0' zurücksetzen, um die Verfügbarkeit anzuzeigen. Wie oben erwähnt, kann in anderen Ausführungsformen ein Feld mit mehr als einem Bit verwendet werden, um den Status anzuzeigen. So kann die Umsetzungslogik auf erfasste Zugriffe auf den Fernspeicher reagieren, indem sie aus dem Fernspeicher in den Nahspeicher kopiert und eine Registermatrix aktualisiert, um die Umsetzung zu verfolgen, bis das OS die Seitentabellen aktualisieren kann.
  • Wie oben erwähnt, werden, da Seiten aus dem Fernspeicher in den Nahspeicher kopiert werden, gemäß Ausführungsformen alle Nahspeicheradressen in der Registermatrix verbraucht. Das OS kann dann die Registermatrix mit verfügbaren Nahspeicheradressen aktualisieren. 5B ist ein Ablaufplan einer Ausführungsform eines Verfahrens zum Aktualisieren einer Registermatrix mit verfügbaren Nahspeicheradressen. In einer Ausführungsform werden die Operationen des Verfahrens 570 durch ein OS (z.B. ein Unterbrechungs-Handhabungsprogramm), Firmware, einen Treiber oder andere System-Software durchgeführt. Obwohl sich die folgende Beschreibung manchmal speziell auf ein OS bezieht, kann in anderen Ausführungsformen andere System-Software verwendet werden, um die beschriebenen Operationen durchzuführen. In einer solchen Ausführungsform beginnt das Verfahren 570, wenn die Umsetzungslogik in Reaktion darauf, dass sie bestimmt, dass die Registermatrix voll ist, eine Unterbrechungsanforderung sendet. Beispielsweise, Bezug nehmend auf 5A, sendet die Umsetzungslogik eine Unterbrechungsanforderung an den Prozessor, um auszulösen, dass das OS die Registermatrix mit verfügbaren Einträgen aktualisiert, 566. Wiederum Bezug nehmend auf 5B, erfasst das OS die Unterbrechungsanforderung, welche anzeigt, dass es keine verfügbaren Einträge in der Registermatrix gibt, 572. In einer Ausführungsform aktualisiert das OS in Reaktion auf die Unterbrechungsanforderung Seitentabellen auf der Grundlage der besetzten Einträge der Registermatrix, 574.
  • Eine Seitentabelle ist eine Datenstruktur, die verwendet wird, um die physischen Adressen von Seiten zu virtuellen Adressen umzusetzen. Speicher kann als Seiten organisiert sein, welche Speicherblöcke sind, auf die durch einen Eintrag in einer Seitentabelle Bezug genommen wird. In einer solchen Ausführungsform ist das OS dafür verantwortlich, durch die Verwaltung der Seitentabellen die Umsetzungen zu definieren. Solche Ausführungsformen umfassen auch einen assoziativen Übersetzungs-Pufferspeicher (Translation Lookaside Buffer, TLB) zum Übersetzen virtueller Seitenadressen in physische Seitenadressen. Ein TLB ist ein spezialisierter Cache-Speicher für die Übersetzung virtueller Adressen. Wenn eine Anforderung für eine virtuelle Adresse empfangen wird, kann die Hardware zuerst versuchen, unter Verwendung des TLB die Adresse in eine physische Adresse zu übersetzen. Wenn sich die virtuelle Adresse nicht in dem TLB befindet, können die Seitentabellen verwendet werden, um die Adresse zu übersetzen. Wenn somit in einer Ausführungsform die Umsetzungslogik (z.B. die Umsetzungslogik 105 der 1) bewirkt, dass eine Seite von einer physischen Adresse auf eine andere physische Adresse überführt wird, aktualisiert das System den TLB und die Seitentabellen, um eine gegebene virtuelle Adresse zu der neuen physischen Adresse umzusetzen. In einer solchen Ausführungsform ist das OS dafür verantwortlich, die Seitentabellen zu aktualisieren. Hardware-Mechanismen (z.B. eine Speichersteuerung oder eine andere Speichermanagement-Hardware) können den TLB aktualisieren, wenn das System arbeitet und fehlende TLB-Treffer erfasst. Entsprechend stellt die Umsetzungslogik in einer solchen Ausführungsform eine zusätzliche Umsetzungsschicht bereit, die von einer Umsetzung von virtueller zu physischer Adresse getrennt ist. Wenn die Umsetzungslogik bestimmt, dass die Hochstufungs-Registermatrix voll ist, kann die Umsetzungslogik eine Unterbrechung auslösen, um zu bewirken, dass das OS die Seitentabellen aktualisiert.
  • In einer Ausführungsform aktualisiert das OS die Seitentabellen durch Ersetzen der Fernspeicheradressen in einer Seitentabelle durch Nahspeicheradressen, zu welchen die Fernspeicheradressen umgesetzt wurden, basierend auf den Informationen in der Registermatrix. Auf ähnliche Weise kann das OS die Nahspeicheradressen in der Seitentabelle durch die Fernspeicheradressen ersetzen, wenn die Mehrebenen-Speichermanagement-Schaltung oder das OS bewirkt hat, dass Seiten aus dem Nahspeicher in den Fernspeicher überführt werden.
  • Sobald das OS die Seitentabellen aktualisiert, kann das OS die Registermatrix mit Adressen neuer nicht zugewiesener Seiten bestücken. Um die Registermatrix zu bestücken, identifiziert das OS verfügbare Seiten im Nahspeicher, 576. Das Identifizieren verfügbarer Seiten kann Identifizieren nicht zugewiesener oder ansonsten verfügbarer Seiten umfassen. In einer Ausführungsform unterhält das OS eine Aufzeichnung eines „Umsetzungsbereichs“, welche eine Liste nicht zugewiesener Seiten im Nahspeicher ist. In einer solchen Ausführungsform umfasst das Auswählen verfügbarer Seiten im Nahspeicher Auswählen von Seiten aus der Liste, die vom OS unterhalten wird. Das Identifizieren verfügbarer Seiten kann außerdem (oder alternativ) umfassen, Seiten verfügbar zu machen, Wenn es beispielsweise keine nicht zugewiesenen Seiten mehr gibt, kann das OS Seiten verfügbar machen, indem es Seiten aus dem Nahspeicher überführt (z.B. in dem Fernspeicher oder einen anderen Speicher). In einer solchen Ausführungsform kann das OS Seiten zur Zurückstufung in den Fernspeicher auswählen, um neue Seiten verfügbar zu machen.
  • In einer Ausführungsform, wobei das OS Seiten aus dem Nahspeicher zur Zurückstufung auswählt, kopiert das OS die Daten, die sich auf der Nahspeicheradresse befinden, in den Fernspeicher. In einer Ausführungsform beginnt das OS oder die Hardware (z.B. eine Umsetzungslogik) das Kopieren der Daten, die sich auf der Adresse der ausgewählten Nahspeicherseite befinden, auf eine Adresse im Fernspeicher. Das Kopieren der Daten kann durch Software oder Hardware erfolgen und kann unmittelbar nach der Auswahl der Seiten im Nahspeicher erfolgen oder kann für später zurückgestellt werden. Beispielsweise kann das OS in einer Ausführungsform Aufzeichnungen darüber bewahren, welche Seiten aus dem Nahspeicher in den Fernspeicher zu übertragen sind. Solche Aufzeichnungen können in einer Registermatrix aufbewahrt werden, z.B. in der Zurückstufungs-Registermatrix 400 der 4. Beispielsweise kann das OS, Bezug nehmend auf 4, die Adresse einer Seite im Nahspeicher, die für eine Zurückstufung in den Fernspeicher ausgewählt worden ist, in das Nahspeicher-Adressfeld 402 eines gegebenen Eintrags schreiben. Das OS kann ferner die Adresse einer verfügbaren Fernspeicheradresse in das Fernspeicher-Adressfeld 404 schreiben, welches der Seite im Nahspeicher entspricht, die zurückzustufen ist. Das OS oder die Umsetzungslogik kann dann auslösen, dass eine DMA-Maschine die Daten von den Nahspeicheradressen, die in der Zurückstufungs-Registermatrix angezeigt werden, auf die entsprechenden Fernspeicheradressen kopiert.
  • In einer Ausführungsform speichert das OS die Adressen der verfügbaren Seiten im Nahspeicher in die Registermatrix ein, 578. Die neu ausgewählten verfügbaren Seiten können andere Adressen aufweisen als die vorhergehende Teilgruppe von Nahspeicheradressen in der Registermatrix. Daher kann man in einer solchen Ausführungsform sagen, dass das OS die Registermatrix mit einer anderen oder neuen Teilgruppe von verfügbaren Nahspeicheradressen aktualisiert. In einer Ausführungsform modifiziert das OS die Besetzt-Bits, die den verfügbaren Nahspeicheradressen entsprechen, um die Verfügbarkeit anzuzeigen, 580.
  • Deswegen kann das OS in einer Ausführungsform nach dem Erfassen einer Unterbrechungsanforderung die Registermatrix mit verfügbaren Nahspeicheradressen aktualisieren, wodurch der Umsetzungslogik ermöglicht werden kann, damit fortzufahren, Daten zwischen Nah- und Fernspeicher umzusetzen.
  • 6 ist ein Blockschaubild einer Ausführungsform eines Computersystems, bei welchem ein Mehrebenen-Speichermanagement angewendet werden kann. Das System 600 repräsentiert eine Computervorrichtung gemäß einer beliebigen hierin beschriebenen Ausführungsform und kann ein Laptop-Computer, ein Desktop-Computer, ein Server, ein Spiel- oder Entertainment-Steuersystem, ein Scanner, ein Kopierer, ein Drucker, eine Router- oder Schaltervorrichtung oder eine andere elektronische Vorrichtung sein. Das System 600 umfasst einen Prozessor 620, welcher für eine Verarbeitung, ein Operations-Management und eine Ausführung von Befehlen für das System 600 sorgt. Der Prozessor 620 kann einen beliebigen Typ eines Mikroprozessors, eine Zentralprozessoreinheit (CPU), einen Prozessorkern oder eine andere Prozessor-Hardware zum Bereitstellen einer Verarbeitung für das System 600 umfassen. Der Prozessor 620 steuert den Gesamtbetrieb des Systems 600 und kann einen oder mehrere programmierbare allgemeine oder spezielle Mikroprozessoren, digitale Signalprozessoren (DSPs), programmierbare Steuerungen, anwendungsspezifische integrierte Schaltungen (Application Specific Integrated Circuits, ASICs), programmierbare Logikvorrichtungen (Programmable Logic Devices, PLDs) oder Ähnliches oder eine Kombination solcher Vorrichtungen umfassen oder sein.
  • Das Speicher-Untersystem 630 repräsentiert den Hauptspeicher des Systems 600 und sorgt für eine temporäre Speicherung von Code, der von dem Prozessor 620 auszuführen ist, oder Datenwerten, die beim Ausführen einer Routine zu verwenden sind. Das Speicher-Untersystem 630 kann eine oder mehrere Speichervorrichtungen umfassen, z.B. Nur-Lese-Speicher (ROM), Flash-Speicher, eine oder mehrere Vielfalten von Direktzugriffsspeicher (RAM) oder andere Speichervorrichtungen oder eine Kombination solcher Vorrichtungen. Das Speicher-Untersystem 630 speichert und beherbergt unter anderem das Betriebssystem (OS) 636, um eine Software-Plattform für die Ausführung von Befehlen im System 600 bereitzustellen. Außerdem werden von dem Speicher-Untersystem 630 andere Befehle 638 gespeichert und ausgeführt, um die Logik und die Verarbeitung des Systems 600 bereitzustellen. Das OS 636 und die Befehle 638 werden vom Prozessor 620 ausgeführt. Das Speicher-Untersystem 630 umfasst eine Speichervorrichtung 632, wo es Daten, Befehle, Programme oder andere Elemente speichert. In einer Ausführungsform umfasst das Speicher-Untersystem eine Speichersteuerung 634, welche eine Speichersteuerung zum Erzeugen und Ausgeben von Befehlen an die Speichervorrichtung 632 ist. Es versteht sich, dass die Speichersteuerung 634 ein physischer Teil des Prozessors 620 sein kann.
  • In einer Ausführungsform umfasst das System 600 ferner eine Mehrebenen-Speichermanagement-Schaltung 621, welche mit dem Prozessor 620 und dem Speicher-Untersystem 630 verbunden ist. Die Mehrebenen-Speichermanagement-Schaltung 621 kann eine Umsetzung zwischen Nah- und Fernspeicher gemäß beliebigen der hierin beschriebenen Ausführungsformen durchführen. Beispielsweise kann die Mehrebenen-Speichermanagement-Schaltung 621 die gleiche oder eine ähnliche sein wie die Mehrebenen-Speichermanagement-Schaltung 103 der 1.
  • Der Prozessor 620 und das Speicher-Untersystem 630 sind mit einem Bus/Bussystem 610 verbunden. Der Bus 610 ist eine Abstraktion, welche einen oder mehrere separate physische Busse, Kommunikationsleitungen/Schnittstellen und/oder Punkt-zu-Punkt-Verbindungen repräsentiert, die durch geeignete Brücken, Adapter und/oder Steuerungen verbunden sind. Daher kann der Bus 610 beispielsweise eines oder mehreres aus einem Systembus, einem Peripheral-Component-Interconnect(PCI)-Bus, einem HyperTransport- oder Industry-Standard-Architecture(ISA)-Bus, einem Small-Computer-System-Interface(SCSI)-Bus, einem universellen seriellen Bus (USB) oder einem Bus des Standards 1394 des Institute of Electrical and Electronics Engineers (IEEE) (gewöhnlich als „Firewire“ bezeichnet) umfassen. Die Busse des Busses 610 können auch Schnittstellen in der Netzwerkschnittstelle 650 entsprechen.
  • Das System 600 umfasst außerdem eine oder mehrere Eingabe/Ausgabe(E/A)-Schnittstelle(n) 640, eine Netzwerkschnittstelle 650, eine oder mehrere interne Massenspeichervorrichtung(en) 660 und eine Peripherieschnittstelle 670, die mit dem Bus 610 verbunden sind. Die E/A-Schnittstelle 640 kann eine oder mehrere Schnittstellenkomponenten umfassen, durch welche ein Benutzer mit dem System 600 interagiert (z.B. Video-, Audio- und/oder alphanumerische Kommunikation). Die Netzwerkschnittstelle 650 liefert dem System 600 die Fähigkeit, über ein oder mehrere Netzwerke mit entfernten Vorrichtungen (z.B. Servern, anderen Computervorrichtungen) zu kommunizieren. Die Netzwerkschnittstelle 650 kann einen Ethernet-Adapter, Drahtlos-Verbindungskomponenten, einen USB (universellen seriellen Bus) oder andere Schnittstellen auf der Basis von Verdrahtungs- oder Drahtlos-Standards oder gerätespezifische Schnittstellen umfassen.
  • Die Direktspeicherzugriffs(DMA)-Maschine 623 umfasst Logik und/oder Register zum Durchführen von Datenübertragungen zwischen verschiedenen Stellen im Speicher 632 und/oder zwischen dem Speicher 632 und dem Speicher 660. Gemäß einer Ausführungsform beginnt der Prozessor 620 eine DMA-Übertragung und ist dann in der Lage, andere Operationen durchzuführen, während die DMA-Maschine 623 die Übertragung durchführt.
  • Der Speicher 660 kann ein beliebiges herkömmliches Medium zum nichtflüchtigen Speichern großer Datenmengen umfassen oder sein, z.B. eine oder mehrere Platten auf magnetischer, Halbleiter- oder optischer Basis oder eine Kombination. Der Speicher 660 enthält Code oder Befehle und Daten 662 in einem dauerhaften Zustand (d.h., der Wert wird trotz einer Unterbrechung der Stromzufuhr zu dem System 600 bewahrt). Der Speicher 660 kann allgemein als ein „Speicher“ bezeichnet werden, obwohl der Speicher 630 der ausführende oder arbeitende Speicher zum Bereitstellen von Befehlen für den Prozessor 620 ist. Während der Speicher 660 nichtflüchtig ist, kann der Speicher 630 flüchtigen Speicher umfassen (d.h., der Wert oder Zustand der Daten ist nicht gesichert, wenn die Stromzufuhr zu dem System 600 unterbrochen wird).
  • Die Peripherieschnittstelle 670 kann eine beliebige oben nicht erwähnte Hardware-Schnittstelle umfassen. Peripherievorrichtungen beziehen sich allgemein auf Vorrichtungen, welche unabhängig mit dem System 600 zu verbinden sind. Eine abhängige Verbindung ist eine, wobei das System 600 die Software- und/oder Hardware-Plattform bereitstellt, auf welcher die Operation ausgeführt wird und mit welcher ein Benutzer interagiert.
  • 7 ist ein Blockschaubild einer Ausführungsform einer Mobilvorrichtung, in welcher eine Mehrebenen-Speichermanagement-Schaltung verwendet werden kann. Die Vorrichtung 700 repräsentiert eine mobile Computervorrichtung, z.B. einen Tablet-Computer, ein Mobiltelefon oder ein Smartphone, einen drahtlosen E-Reader, eine tragbare Computervorrichtung oder eine andere Mobilvorrichtung. Es versteht sich, dass bestimmte der Komponenten allgemein dargestellt sind und nicht alle Komponenten einer solchen Vorrichtung in der Vorrichtung 700 dargestellt sind.
  • Die Vorrichtung 700 umfasst einen Prozessor 710, welcher die Haupt-Verarbeitungsoperationen der Vorrichtung 700 durchführt. Der Prozessor 710 kann eine oder mehrere physische Vorrichtungen umfassen, z.B. Mikroprozessoren, Anwendungsprozessoren, Mikrocontroller, programmierbare Logikvorrichtungen oder andere Verarbeitungsmittel. Die vom Prozessor 710 durchgeführten Verarbeitungsoperationen umfassen die Ausführung einer Betriebsplattform oder eines Betriebssystems, auf welcher/welchem Anwendungen und/oder Vorrichtungsfunktionen ausgeführt werden. Die Verarbeitungsoperationen umfassen Operationen, welche auf E/A (Eingabe/Ausgabe) mit einem menschlichen Benutzer oder mit anderen Vorrichtungen bezogen sind, Operationen, welche auf die Energieverwaltung bezogen sind, und/oder Operationen, welche auf das Verbinden der Vorrichtung 700 mit einer anderen Vorrichtung bezogen sind. Die Verarbeitungsoperationen können außerdem Operationen umfassen, welche auf Audio-E/A und/oder Display-E/A bezogen sind.
  • In einer Ausführungsform umfasst die Vorrichtung 700 ein Audio-Untersystem 720, welches Hardware- (z.B. Audio-Hardware und Audioschaltungen) und Software(z.B. Treiber, Codecs)-Komponenten repräsentiert, die mit der Bereitstellung von Audiofunktionen für die Computervorrichtung in Verbindung stehen. Audiofunktionen können Lautsprecher- und/oder Kopfhörerausgaben sowie Mikrofoneingaben umfassen. Vorrichtungen für solche Funktionen können in die Vorrichtung 700 integriert oder mit der Vorrichtung 700 verbunden sein. In einer Ausführungsform interagiert ein Benutzer mit der Vorrichtung 700, indem er Audiobefehle bereitstellt, welche vom Prozessor 710 empfangen und verarbeitet werden.
  • Das Display-Untersystem 730 repräsentiert Hardware- (z.B. Display-Vorrichtungen) und Software(z.B. Treiber)-Komponenten, welche ein visuelles und/oder taktiles Display für einen Benutzer bereitstellen, um mit der Computervorrichtung zu interagieren. Das Display-Untersystem 730 umfasst eine Display-Schnittstelle 732, welche den speziellen Bildschirm oder die Hardware-Vorrichtung umfasst, die verwendet wird, um einem Benutzer ein Display bereitzustellen. In einer Ausführungsform umfasst die Display-Schnittstelle 732 eine Logik separat von dem Prozessor 710, um zumindest eine gewisse Verarbeitung durchzuführen, die auf das Display bezogen ist. In einer Ausführungsform umfasst das Display-Untersystem 730 eine Touchscreen-Vorrichtung, welche sowohl Ausgaben als auch Eingaben für einen Benutzer ermöglicht. In einer Ausführungsform umfasst das Display-Untersystem 730 ein High-Definition(HD)-Display, welches eine Ausgabe an einen Benutzer bereitstellt. High Definition kann sich auf ein Display beziehen, welches eine Pixeldichte von ungefähr 100 Pixeln je Inch (PPI) oder mehr aufweist, und kann Formate wie Full-HD (z.B. 1080p), Retina-Displays, 4K (Ultra High Definition oder UHD) oder andere umfassen.
  • Die E/A-Steuerung 740 repräsentiert Hardware-Vorrichtungen und Software-Komponenten, welche auf eine Interaktion mit einem Benutzer bezogen sind. Die E/A-Steuerung 740 kann so arbeiten, dass sie Hardware verwaltet, welche ein Teil des Audio-Untersystems 720 und/oder des Display-Untersystems 730 ist. Außerdem veranschaulicht die E/A-Steuerung 740 einen Verbindungspunkt für zusätzliche Vorrichtungen, welche mit der Vorrichtung 700 zu verbinden sind und durch welche ein Benutzer mit dem System interagieren könnte. Beispielsweise könnten Vorrichtungen, die an der Vorrichtung 700 angebracht werden könnten, Mikrofonvorrichtungen, Lautsprecher- oder Stereosysteme, Videosysteme oder eine andere Display-Vorrichtung, eine Tastatur oder Tastenfeldvorrichtungen oder andere E/A-Vorrichtungen zur Verwendung mit speziellen Anwendungen umfassen, z.B. Kartenlesegeräte oder andere Vorrichtungen.
  • Wie oben erwähnt, kann die E/A-Steuerung 740 mit dem Audio-Untersystem 720 und/oder dem Display-Untersystem 730 interagieren. Beispielsweise kann eine Eingabe durch ein Mikrofon oder eine andere Audiovorrichtung eine Eingabe oder Befehle für eine oder mehrere Anwendungen oder Funktionen der Vorrichtung 700 bereitstellen. Außerdem kann statt der Display-Ausgabe oder zusätzlich dazu eine Audio-Ausgabe bereitgestellt werden. Wenn in einem anderen Beispiel das Display-Untersystem einen Touchscreen umfasst, fungiert die Display-Vorrichtung auch als eine Eingabevorrichtung, welche zumindest teilweise von der E/A-Steuerung 740 verwaltet werden kann. Es kann außerdem zusätzliche Knöpfe oder Schalter auf der Vorrichtung 700 geben, um E/A-Funktionen bereitzustellen, die von der E/A-Steuerung 740 verwaltet werden.
  • In einer Ausführungsform verwaltet die E/A-Steuerung 740 Vorrichtungen wie z.B. Beschleunigungsmessvorrichtungen, Kameras, Lichtsensoren oder andere Umgebungssensoren, Gyroskope, das Global Positioning System (GPS) oder andere Hardware, die in der Vorrichtung 700 enthalten sein kann. Die Eingabe kann Teil einer direkten Benutzerinteraktion sein, ebenso wie die Bereitstellung von Umgebungseingaben in das System, um seine Operationen zu beeinflussen (z.B. Rauschfilterung, Einstellung von Displays nach Helligkeitserfassung, Anwendung eines Blitzlichts für eine Kamera oder andere Elemente). In einer Ausführungsform umfasst die Vorrichtung 700 eine Energieverwaltung 750, welche die Batterienutzung, die Ladung der Batterie und Funktionen verwaltet, welche auf eine Operation zur Einsparung von Energie bezogen sind.
  • Das Speicher-Untersystem 760 umfasst (eine) Speichervorrichtung(en) 762 zum Speichern von Informationen in der Vorrichtung 700. Das Speicher-Untersystem 760 kann nichtflüchtige (der Zustand ändert sich nicht, wenn die Stromzufuhr zu der Speichervorrichtung unterbrochen wird) und/oder flüchtige Speichervorrichtungen (der Zustand ist unsicher, wenn die Stromzufuhr zu der Speichervorrichtung unterbrochen wird) umfassen. Die Speichervorrichtungen 762 können Anwendungsdaten, Benutzerdaten, Musik, Fotos, Dokumente oder andere Daten sowie Systemdaten (sowohl langfristige als auch temporäre) speichern, die auf die Ausführung der Anwendungen und Funktionen der Vorrichtung 700 bezogen sind. In einer Ausführungsform umfasst das Speicher-Untersystem 760 eine Speichersteuerung 764 (welche auch als ein Teil der Steuerung der Vorrichtung 700 angesehen werden könnte und möglicherweise als ein Teil des Prozessors 710 angesehen werden könnte). Die Speichersteuerung 764 umfasst eine Ablaufsteuerung zum Erzeugen und Ausgeben von Befehlen an die Speichervorrichtung 762. In einer Ausführungsform umfasst die Vorrichtung 700 ferner eine Mehrebenen-Speichermanagement-Schaltung 763, die mit dem Prozessor 710 und dem Speicher-Untersystem 760 verbunden ist. Die Mehrebenen-Speichermanagement-Schaltung 763 kann eine Umsetzung zwischen Nah- und Fernspeicher gemäß einer beliebigen der hierin beschriebenen Ausführungsformen durchführen. Beispielsweise kann die Mehrebenen-Speichermanagement-Schaltung 763 die gleiche oder eine ähnliche sein wie die Mehrebenen-Speichermanagement-Schaltung 103 der 1.
  • Die Anschlussmöglichkeit 770 umfasst Hardware-Vorrichtungen (z.B. drahtlose und/oder drahtgebundene Verbinder und Kommunikations-Hardware) und Software-Komponenten (z.B. Treiber, Protokollstapel), um der Vorrichtung 700 zu ermöglichen, mit externen Vorrichtungen zu kommunizieren. Die externen Vorrichtungen können separate Vorrichtungen, z.B. andere Computervorrichtungen, drahtlose Zugangspunkte oder Basisstationen sowie Peripheriegeräte wie z.B. Headsets, Drucker oder andere Vorrichtungen sein.
  • Die Anschlussmöglichkeit 770 kann mehrere verschiedene Arten von Anschlussmöglichkeiten umfassen. Zur Verallgemeinerung ist die Vorrichtung 700 mit einer zellulären Anschlussmöglichkeit 772 und einer drahtlosen Anschlussmöglichkeit 774 dargestellt. Die zelluläre Anschlussmöglichkeit 772 bezieht sich allgemein auf eine zelluläre Netzwerk-Anschlussmöglichkeit, die von drahtlosen Trägern bereitgestellt wird, wie z.B. über GSM (Global System for Mobile communication) oder Variationen oder Ableitungen, CDMA (Code Division Multiple Access) oder Variationen oder Ableitungen, TDM (Time Division Multiplexing) oder Variationen oder Ableitungen, LTE (Long Term Evolution - auch als „4G“ bezeichnet) oder andere zelluläre Dienststandards bereitgestellt. Die drahtlose Anschlussmöglichkeit 774 bezieht sich auf eine drahtlose Anschlussmöglichkeit, die nicht zellulär ist, und kann persönliche Netzwerke (Personal Area Networks, PAN, wie z.B. Bluetooth), lokale Netzwerke (wie z.B. WiFi) und/oder weiträumige Netzwerke (wie z.B. WiMax) oder andere drahtlose Kommunikation umfassen. Drahtlose Kommunikation bezieht sich auf eine Übertragung von Daten durch die Verwendung von modulierter elektromagnetischer Strahlung durch ein nicht-festes Medium. Drahtgebundene Kommunikation erfolgt durch ein festes Kommunikationsmedium.
  • Die Peripherieverbindungen 780 umfassen Hardware-Schnittstellen und Verbinder sowie Software-Komponenten (z.B. Treiber, Protokollstapel) zur Herstellung von Peripherieverbindungen. Es versteht sich, dass die Vorrichtung 700 sowohl eine Peripherievorrichtung („zu“ 782) für andere Computervorrichtungen sein könnte als auch mit ihr verbundene Peripherievorrichtungen („von“ 784) aufweisen könnte. Die Vorrichtung 700 weist üblicherweise einen „Docking“-Verbinder zum Verbinden mit anderen Computervorrichtungen auf, für Zwecke wie die Verwaltung (z.B. Herunterladen und/oder Hochladen, Ändern, Synchronisieren) von Inhalt auf der Vorrichtung 700. Außerdem kann ein Docking-Verbinder ermöglichen, dass die Vorrichtung 700 mit bestimmten Peripheriegeräten verbunden wird, welche ermöglichen, dass die Vorrichtung 700 eine Inhaltsausgabe steuert, zum Beispiel zu audiovisuellen oder anderen Systemen.
  • Zusätzlich zu einem gerätespezifischen Docking-Verbinder oder einer anderen gerätespezifischen Verbindungs-Hardware kann die Vorrichtung 700 über übliche Verbinder oder Verbinder auf der Basis von Standards Peripherieverbindungen 780 herstellen. Übliche Typen können einen Universal-Serial-Bus(USB)-Verbinder (welcher eine beliebige Anzahl verschiedener Hardware-Schnittstellen umfassen kann), DisplayPort, umfassend MiniDisplayPort (MDP), High Definition Multimedia Interface (HDMI), Firewire oder einen anderen Typ umfassen.
  • Die Vorrichtung 700 kann durch eine Batterie, eine drahtlose Aufladung, eine erneuerbare Energiequelle (z.B. Solarenergie) oder, wenn sie angeschlossen ist, eine Wandsteckdose versorgt werden.
  • In einer Ausführungsform umfasst eine Mehrebenen-Speichermanagement-Schaltung eine Registermatrix zum Speichern von Nahspeicheradressen eines Nahspeichers und Fernspeicheradressen, die zu den Nahspeicheradressen umgesetzt sind. Die Anzahl der Einträge in der Registermatrix ist niedriger als die Anzahl der Seiten im Nahspeicher. Die Mehrebenen-Speichermanagement-Schaltung umfasst eine Umsetzungslogik zum Erfassen einer Anforderung von Daten, die sich im Fernspeicher befinden. Die Umsetzungslogik bestimmt ferner, dass eine Fernspeicheradresse der angeforderten Daten nicht in der Registermatrix vorhanden ist, und wählt eine verfügbare Nahspeicheradresse aus der Registermatrix aus. Die Umsetzungslogik beginnt ferner ein Einspeichern der Daten von der Fernspeicheradresse in die ausgewählte Nahspeicheradresse. Die Umsetzungslogik speichert ferner die Fernspeicheradresse in einen Eintrag der Registermatrix ein, welcher der ausgewählten Nahspeicheradresse entspricht.
  • In einer Ausführungsform umfasst ein gegebener Eintrag der Registermatrix ein Besetzt-Bit und die Umsetzungslogik wählt die verfügbare Nahspeicheradresse auf der Basis eines Werts eines entsprechenden Besetzt-Bits aus.
  • In einer Ausführungsform modifiziert die Umsetzungslogik ferner in Reaktion auf die Auswahl der verfügbaren Nahspeicheradresse das entsprechende Besetzt-Bit, um anzuzeigen, dass die ausgewählte Nahspeicheradresse nicht verfügbar ist.
  • In einer Ausführungsform löst die Umsetzungslogik in Reaktion auf eine Bestimmung, dass in der Registermatrix keine Nahspeicheradressen verfügbar sind, eine Unterbrechungsanforderung zum Aktualisieren der Registermatrix mit verfügbaren Nahspeicheradressen aus.
  • In einer Ausführungsform umfasst die aktualisierte Registermatrix eine andere Teilgruppe verfügbarer Nahspeicheradressen.
  • In einer Ausführungsform umfasst die Mehrebenen-Speichermanagement-Schaltung ferner eine zweite Registermatrix zum Speichern von Nahspeicheradressen, die für eine Zurückstufung auf verfügbare Fernspeicheradressen ausgewählt sind. In Reaktion auf die Unterbrechungsanforderung speichert eine Direktspeicherzugriffs(DMA)-Maschine Seiten, auf welche die Nahspeicheradressen zeigen, die für eine Zurückstufung ausgewählt sind, in die verfügbaren Fernspeicheradressen ein, die in der zweiten Registermatrix gespeichert sind.
  • In einer Ausführungsform kann über physische Speicheradressen auf Einträge der Registermatrix zugegriffen werden.
  • In einer Ausführungsform fordert die Umsetzungslogik in Reaktion auf eine Bestimmung, dass sich die Fernspeicheradresse der Anforderung in der Registermatrix befindet, die Daten an, die sich auf einer entsprechenden Nahspeicheradresse befinden.
  • In einer Ausführungsform umfasst ein System zum Verbinden mit Speichervorrichtungen einen Prozessor zum Anfordern von Daten, die sich im Fernspeicher befinden, und eine Registermatrix zum Speichern von Nahspeicheradressen eines Nahspeichers und Fernspeicheradressen, die zu den Nahspeicheradressen umgesetzt sind. Die Anzahl der Einträge in der Registermatrix ist niedriger als eine Anzahl an Seiten im Nahspeicher. Das System umfasst außerdem eine Umsetzungslogik, die mit dem Prozessor verbunden ist. Die Umsetzungslogik bestimmt, dass eine Fernspeicheradresse der angeforderten Daten nicht in der Registermatrix vorhanden ist, und wählt eine verfügbare Nahspeicheradresse aus der Registermatrix aus. Die Umsetzungslogik beginnt ein Einspeichern der angeforderten Daten an der Fernspeicheradresse in die ausgewählte Nahspeicheradresse und speichert die Fernspeicheradresse in einen Eintrag der Registermatrix ein, welcher der ausgewählten Nahspeicheradresse entspricht.
  • In einer Ausführungsform umfasst ein gegebener Eintrag der Registermatrix ein Besetzt-Bit und die Umsetzungslogik wählt die verfügbare Nahspeicheradresse auf der Basis eines Werts eines entsprechenden Besetzt-Bits aus.
  • In einer Ausführungsform modifiziert die Umsetzungslogik ferner in Reaktion auf die Auswahl der verfügbaren Nahspeicheradresse das entsprechende Besetzt-Bit, um anzuzeigen, dass die ausgewählte Nahspeicheradresse nicht verfügbar ist.
  • In einer Ausführungsform sendet die Umsetzungslogik in Reaktion auf eine Bestimmung, dass in der Registermatrix keine Nahspeicheradressen verfügbar sind, eine Unterbrechungsanforderung zum Aktualisieren der Registermatrix mit verfügbaren Nahspeicheradressen an den Prozessor. In einer Ausführungsform umfasst die aktualisierte Registermatrix eine andere Teilgruppe verfügbarer Nahspeicheradressen.
  • In einer Ausführungsform umfasst das System ferner eine zweite Registermatrix zum Speichern von Nahspeicheradressen, die für eine Zurückstufung auf verfügbare Fernspeicheradressen ausgewählt sind. In Reaktion auf die Unterbrechungsanforderung speichert eine Direktspeicherzugriffs(DMA)-Maschine Seiten, auf welche die Nahspeicheradressen zeigen, die für eine Zurückstufung ausgewählt sind, in die verfügbaren Fernspeicheradressen ein, die in der zweiten Registermatrix gespeichert sind.
  • In einer Ausführungsform kann über physische Speicheradressen auf die Einträge der Registermatrix zugegriffen werden.
  • In einer Ausführungsform fordert die Umsetzungslogik in Reaktion auf eine Bestimmung, dass sich die Fernspeicheradresse der Anforderung in der Registermatrix befindet, die Daten an, die sich auf einer entsprechenden Nahspeicheradresse befinden.
  • In einer Ausführungsform umfasst das System ferner eines aus einem Display, das kommunikativ mit dem Prozessor verbunden ist, einer Netzwerkschnittstelle, die kommunikativ mit dem Prozessor verbunden ist, oder einer Batterie, die so verbunden ist, dass sie das System mit Strom versorgt.
  • In einer Ausführungsform umfasst ein Verfahren zum Verwalten eines Systems mit Mehrebenenspeicher Erfassen einer Anforderung von Daten in einem Fernspeicher. Das Verfahren umfasst ferner Bestimmen, ob sich eine Fernspeicheradresse der angeforderten Daten in einer Registermatrix befindet. Die Registermatrix speichert Nahspeicheradressen eines Nahspeichers und Fernspeicheradressen, die zu den Nahspeicheradressen umgesetzt sind. Eine Anzahl an Einträgen in der Registermatrix ist niedriger als eine Anzahl an Seiten im Nahspeicher. Das Verfahren umfasst ferner Auswählen einer verfügbaren Nahspeicheradresse aus der Registermatrix und Beginnen einer Einspeicherung der Daten von der Fernspeicheradresse in die ausgewählte Nahspeicheradresse. Das Verfahren umfasst ferner Einspeichern der Fernspeicheradresse in einen Eintrag der Registermatrix, welcher der ausgewählten Nahspeicheradresse entspricht.
  • In einer Ausführungsform umfasst ein gegebener Eintrag der Registermatrix ein Besetzt-Bit und das Auswählen der verfügbaren Nahspeicheradresse erfolgt auf der Basis eines Werts eines entsprechenden Besetzt-Bits.
  • In einer Ausführungsform umfasst das Verfahren ferner Modifizieren des entsprechenden Besetzt-Bits in Reaktion auf die Auswahl der verfügbaren Nahspeicheradresse, um anzuzeigen, dass die ausgewählte Nahspeicheradresse nicht verfügbar ist.
  • In einer Ausführungsform umfasst das Verfahren ferner Auslösen einer Unterbrechungsanforderung zum Aktualisieren der Registermatrix mit verfügbaren Nahspeicheradressen in Reaktion auf eine Bestimmung, dass keine Nahspeicheradressen in der Registermatrix verfügbar sind.
  • Ablaufpläne, wie hierin dargestellt, bieten Beispiele für Sequenzen verschiedener Verfahrenshandlungen. Die Ablaufpläne können Operationen, die von einer Software- oder Firmware-Routine auszuführen sind, sowie physische Operationen anzeigen. In einer Ausführungsform kann ein Ablaufplan den Zustand einer Maschine mit finiten Zuständen (Finite State Machine, FSM) veranschaulichen, welche in Hardware und/oder Software implementiert sein kann. Obwohl in einer speziellen Sequenz oder Reihenfolge dargestellt, kann die Reihenfolge der Handlungen modifiziert werden, sofern nicht anders angegeben. Daher sollten die dargestellten Ausführungsformen nur als ein Beispiel verstanden werden und das Verfahren kann in einer anderen Reihenfolge ausgeführt werden und einige Handlungen können parallel ausgeführt werden. Außerdem können in verschiedenen Ausführungsformen eine oder mehrere Handlungen weggelassen werden, daher sind nicht in jeder Ausführungsform alle Handlungen erforderlich. Es sind auch andere Verfahrensabläufe möglich.
  • Wie verschiedene Operationen oder Funktionen hierin beschrieben sind, können sie als Software-Code, Befehle, Konfiguration und/oder Daten beschrieben oder definiert sein. Der Inhalt kann direkt ausführbar sein („Objektform“ oder „ausführbare Form“), Quell-Code oder Differenz-Code („Delta-Code“ oder „Korrektur-Code“) sein. Der Software-Inhalt der hierin beschriebenen Ausführungsformen kann über einen Herstellungsgegenstand bereitgestellt werden, auf welchem der Inhalt gespeichert ist, oder über ein Verfahren zum Bedienen einer Kommunikationsschnittstelle zum Senden von Daten über die Kommunikationsschnittstelle. Ein maschinenlesbares Speichermedium kann bewirken, dass eine Maschine die beschriebenen Funktionen oder Operationen ausführt, und umfasst einen beliebigen Mechanismus, mit welchem Informationen in einer Form gespeichert werden, auf die eine Maschine (z.B. eine Computervorrichtung, ein elektronisches System usw.) zugreifen kann, z.B. beschreibbare/nicht beschreibbare Medien (z.B. Nur-Lese-Speicher (ROM), Direktzugriffsspeicher (RAM), Magnetplatten-Speichermedien, optische Speichermedien, Flash-Speicher-Vorrichtungen usw.). Eine Kommunikationsschnittstelle umfasst einen beliebigen Mechanismus, mit welchem mit einem festverdrahteten, drahtlosen, optischen usw. Medium kommuniziert werden kann, um mit einer anderen Vorrichtung zu kommunizieren, z.B. eine Speicherbus-Schnittstelle, eine Prozessorbus-Schnittstelle, eine Internet-Verbindung, eine Plattensteuerung usw. Die Kommunikationsschnittstelle kann konfiguriert werden durch Bereitstellen von Konfigurationsparametern und/oder Senden von Signalen, um die Kommunikationsschnittstelle vorzubereiten, ein Datensignal bereitzustellen, welches den Software-Inhalt beschreibt. Auf die Kommunikationsschnittstelle kann über einen oder mehrere Befehle oder Signale zugegriffen werden, die an die Kommunikationsschnittstelle gesendet werden.
  • Verschiedene hierin beschriebene Komponenten können ein Mittel zur Ausführung der beschriebenen Operationen oder Funktionen sein. Jede hierin beschriebene Komponente umfasst Software, Hardware oder eine Kombination dieser. Die Komponenten können als Software-Module, Hardware-Module, Spezial-Hardware (z.B. anwendungsspezifische Hardware, anwendungsspezifische integrierte Schaltungen (ASICs), digitale Signalprozessoren (DSPs), eingebettete Steuerungen, festverdrahtete Schaltungen usw. realisiert werden.
  • Außer dem, was hierin beschrieben ist, können an den offenbarten Ausführungsformen und Realisierungen der Erfindung verschiedene Modifikationen vorgenommen werden, ohne von ihrem Umfang abzuweichen. Deswegen sollten die Veranschaulichungen und Beispiele hierin in einem veranschaulichenden und nicht in einem beschränkenden Sinn ausgelegt werden. Der Umfang der Erfindung sollte einzig unter Bezugnahme auf die folgenden Patentansprüche bemessen werden.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 15077424 [0001]

Claims (21)

  1. Mehrebenen-Speichermanagement-Schaltung, umfassend: eine Registermatrix zum Speichern von Nahspeicheradressen eines Nahspeichers und Fernspeicheradressen, welche zu den Nahspeicheradressen umgesetzt sind, wobei eine Anzahl an Einträgen in der Registermatrix niedriger ist als eine Anzahl an Seiten in dem Nahspeicher; und Umsetzungslogik zum: Erfassen einer Anforderung von Daten, die sich im Fernspeicher befinden; Bestimmen, dass eine Fernspeicheradresse der angeforderten Daten nicht in der Registermatrix vorhanden ist; Auswählen einer verfügbaren Nahspeicheradresse aus der Registermatrix; Beginnen einer Einspeicherung der Daten von der Fernspeicheradresse in die ausgewählte Nahspeicheradresse; und Einspeichern der Fernspeicheradresse in einen Eintrag der Registermatrix, welcher der ausgewählten Nahspeicheradresse entspricht.
  2. Mehrebenen-Speichermanagement-Schaltung nach Anspruch 1, wobei: ein gegebener Eintrag der Registermatrix ein Besetzt-Bit umfasst: und die Umsetzungslogik die verfügbare Nahspeicheradresse auf der Basis eines Werts eines entsprechenden Besetzt-Bits auswählt.
  3. Mehrebenen-Speichermanagement-Schaltung nach Anspruch 2, wobei: die Umsetzungslogik ferner in Reaktion auf die Auswahl der verfügbaren Nahspeicheradresse das entsprechende Besetzt-Bit modifiziert, um anzuzeigen, dass die ausgewählte Nahspeicheradresse nicht verfügbar ist.
  4. Mehrebenen-Speichermanagement-Schaltung nach Anspruch 2, wobei die Umsetzungslogik ferner: in Reaktion auf eine Bestimmung, dass in der Registermatrix keine Nahspeicheradressen verfügbar sind, eine Unterbrechungsanforderung zum Aktualisieren der Registermatrix mit verfügbaren Nahspeicheradressen auslöst.
  5. Mehrebenen-Speichermanagement-Schaltung nach Anspruch 4, wobei: die aktualisierte Registermatrix eine andere Teilgruppe verfügbarer Nahspeicheradressen umfasst.
  6. Mehrebenen-Speichermanagement-Schaltung nach Anspruch 4, ferner umfassend: eine zweite Registermatrix zum Speichern von Nahspeicheradressen, die für eine Zurückstufung auf verfügbare Fernspeicheradressen ausgewählt sind; und wobei in Reaktion auf die Unterbrechungsanforderung eine Direktspeicherzugriffs(DMA)-Maschine Seiten, auf welche die Nahspeicheradressen zeigen, die für eine Zurückstufung ausgewählt sind, in die verfügbaren Fernspeicheradressen einspeichert, die in der zweiten Registermatrix gespeichert sind.
  7. Mehrebenen-Speichermanagement-Schaltung nach Anspruch 1, wobei auf Einträge der Registermatrix über physische Speicheradressen Zugriff besteht.
  8. Mehrebenen-Speichermanagement-Schaltung nach Anspruch 1, wobei die Umsetzungslogik in Reaktion auf eine Bestimmung, dass sich die Fernspeicheradresse der Anforderung in der Registermatrix befindet, die Daten anfordert, die sich auf einer entsprechenden Nahspeicheradresse befinden.
  9. System zum Verbinden mit Speichervorrichtungen, wobei das System umfasst: einen Prozessor zum Anfordern von Daten, die sich in einem Fernspeicher befinden; eine Registermatrix zum Speichern von Nahspeicheradressen eines Nahspeichers und Fernspeicheradressen, welche zu den Nahspeicheradressen umgesetzt sind, wobei eine Anzahl an Einträgen in der Registermatrix niedriger ist als eine Anzahl an Seiten in dem Nahspeicher; Umsetzungslogik, die mit dem Prozessor verbunden ist, wobei die Umsetzungslogik: bestimmt, dass eine Fernspeicheradresse der angeforderten Daten nicht in der Registermatrix vorhanden ist; eine verfügbare Nahspeicheradresse aus der Registermatrix auswählt; eine Einspeicherung der angeforderten Daten von der Fernspeicheradresse in die ausgewählte Nahspeicheradresse beginnt; und die Fernspeicheradresse in einen Eintrag der Registermatrix einspeichert, welcher der ausgewählten Nahspeicheradresse entspricht.
  10. System nach Anspruch 9, wobei: ein gegebener Eintrag in der Registermatrix ein Besetzt-Bit umfasst; und die Umsetzungslogik die verfügbare Nahspeicheradresse auf der Basis eines Werts eines entsprechenden Besetzt-Bits auswählt.
  11. System nach Anspruch 10, wobei in Reaktion auf die Auswahl der verfügbaren Nahspeicheradresse: die Umsetzungslogik ferner das entsprechende Besetzt-Bit modifiziert, um anzuzeigen, dass die ausgewählte Nahspeicheradresse nicht verfügbar ist.
  12. System nach Anspruch 11, wobei: in Reaktion auf eine Bestimmung, dass in der Registermatrix keine Nahspeicheradressen verfügbar sind, die Umsetzungslogik ferner eine Unterbrechungsanforderung zum Aktualisieren der Registermatrix mit verfügbaren Nahspeicheradressen an den Prozessor sendet.
  13. System nach Anspruch 12, wobei: die aktualisierte Registermatrix eine andere Teilgruppe verfügbarer Nahspeicheradressen umfasst.
  14. System nach Anspruch 12, ferner umfassend: eine zweite Registermatrix zum Speichern von Nahspeicheradressen, die für eine Zurückstufung auf verfügbare Fernspeicheradressen ausgewählt sind; und wobei in Reaktion auf die Unterbrechungsanforderung eine Direktspeicherzugriffs(DMA)-Maschine Seiten, auf welche die Nahspeicheradressen zeigen, die für eine Zurückstufung ausgewählt sind, in die verfügbaren Fernspeicheradressen einspeichert, die in der zweiten Registermatrix gespeichert sind.
  15. System nach Anspruch 9, wobei auf Einträge der Registermatrix über physische Speicheradressen Zugriff besteht.
  16. System nach Anspruch 9, wobei die Umsetzungslogik in Reaktion auf eine Bestimmung, dass sich die Fernspeicheradresse der Anforderung in der Registermatrix befindet, die Daten anfordert, die sich auf einer entsprechenden Nahspeicheradresse befinden.
  17. System nach Anspruch 9, ferner umfassend eines aus: einem Display, das kommunikativ mit dem Prozessor verbunden ist; einer Netzwerkschnittstelle, die kommunikativ mit dem Prozessor verbunden ist, oder einer Batterie, die so verbunden ist, dass sie das System mit Strom versorgt.
  18. Verfahren zum Verwalten eines Systems mit Mehrebenenspeicher, wobei das Verfahren umfasst: Erfassen einer Anforderung von Daten in einem Fernspeicher; Bestimmen, ob sich eine Fernspeicheradresse der angeforderten Daten in einer Registermatrix befindet, wobei die Registermatrix Nahspeicheradressen eines Nahspeichers und Fernspeicheradressen speichert, die zu den Nahspeicheradressen umgesetzt sind, wobei eine Anzahl an Einträgen in der Registermatrix niedriger ist als eine Anzahl an Seiten im Nahspeicher; Auswählen einer verfügbaren Nahspeicheradresse aus der Registermatrix; Beginnen einer Einspeicherung der Daten von der Fernspeicheradresse in die ausgewählte Nahspeicheradresse; und Einspeichern der Fernspeicheradresse in einen Eintrag der Registermatrix, welcher der ausgewählten Nahspeicheradresse entspricht.
  19. Verfahren nach Anspruch 18, wobei: ein gegebener Eintrag der Registermatrix ein Besetzt-Bit umfasst: und wobei das Auswählen der verfügbaren Nahspeicheradresse auf der Basis eines Werts eines entsprechenden Besetzt-Bits erfolgt.
  20. Verfahren nach Anspruch 19, ferner umfassend: Modifizieren des entsprechenden Besetzt-Bits in Reaktion auf die Auswahl der verfügbaren Nahspeicheradresse, um anzuzeigen, dass die ausgewählte Nahspeicheradresse nicht verfügbar ist.
  21. Verfahren nach Anspruch 19, ferner umfassend: Auslösen einer Unterbrechungsanforderung zum Aktualisieren der Registermatrix mit verfügbaren Nahspeicheradressen in Reaktion auf eine Bestimmung, dass keine Nahspeicheradressen in der Registermatrix verfügbar sind.
DE112017001471.9T 2016-03-22 2017-02-21 Mehrebenen-speichermanagement Pending DE112017001471T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/077,424 US9583182B1 (en) 2016-03-22 2016-03-22 Multi-level memory management
US15/077,424 2016-03-22
PCT/US2017/018719 WO2017165042A1 (en) 2016-03-22 2017-02-21 Multi-level memory management

Publications (1)

Publication Number Publication Date
DE112017001471T5 true DE112017001471T5 (de) 2018-12-06

Family

ID=58056591

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017001471.9T Pending DE112017001471T5 (de) 2016-03-22 2017-02-21 Mehrebenen-speichermanagement

Country Status (5)

Country Link
US (2) US9583182B1 (de)
CN (1) CN108780423B (de)
DE (1) DE112017001471T5 (de)
TW (1) TWI735529B (de)
WO (1) WO2017165042A1 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017049594A1 (en) 2015-09-25 2017-03-30 Intel Corporation Efficient memory activation at runtime
US9583182B1 (en) * 2016-03-22 2017-02-28 Intel Corporation Multi-level memory management
US10901894B2 (en) * 2017-03-10 2021-01-26 Oracle International Corporation Allocating and accessing memory pages with near and far memory blocks from heterogeneous memories
US11188467B2 (en) 2017-09-28 2021-11-30 Intel Corporation Multi-level system memory with near memory capable of storing compressed cache lines
CN107911228B (zh) * 2017-10-09 2023-02-03 西安交大捷普网络科技有限公司 一种多级设备系统的管理方法
US10860244B2 (en) 2017-12-26 2020-12-08 Intel Corporation Method and apparatus for multi-level memory early page demotion
CN110858127B (zh) 2018-08-22 2023-09-12 慧荣科技股份有限公司 数据存储装置
TWI684130B (zh) * 2018-08-22 2020-02-01 慧榮科技股份有限公司 資料儲存裝置
TWI670599B (zh) * 2018-08-28 2019-09-01 大陸商深圳大心電子科技有限公司 記憶體管理方法以及儲存控制器
CN111506521B (zh) * 2019-01-31 2023-10-20 华为技术有限公司 一种存储器、数据请求写入方法及控制器
KR20200095130A (ko) 2019-01-31 2020-08-10 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11526448B2 (en) 2019-09-27 2022-12-13 Intel Corporation Direct mapped caching scheme for a memory side cache that exhibits associativity in response to blocking from pinning
US11348637B2 (en) 2020-08-31 2022-05-31 Micron Technology, Inc. Electrical distance-based remapping in a memory device
CN112949235B (zh) * 2021-04-16 2022-07-12 山东高云半导体科技有限公司 电子设备的配置方法、装置、处理器及存储介质
CN113704142B (zh) * 2021-09-02 2022-06-14 海飞科(南京)信息技术有限公司 片上存储的地址重映射电路
US20230170037A1 (en) * 2021-11-30 2023-06-01 Qualcomm Incorporated Hybrid memory system with increased bandwidth

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2051209C (en) * 1990-11-30 1996-05-07 Pradeep S. Sindhu Consistency protocols for shared memory multiprocessors
US6208542B1 (en) * 1998-06-30 2001-03-27 Sandisk Corporation Techniques for storing digital data in an analog or multilevel memory
US6339813B1 (en) * 2000-01-07 2002-01-15 International Business Machines Corporation Memory system for permitting simultaneous processor access to a cache line and sub-cache line sectors fill and writeback to a system memory
KR100518576B1 (ko) * 2003-05-24 2005-10-04 삼성전자주식회사 버스 중재기 및 버스 중재방법
WO2008070812A2 (en) * 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for data storage using progressive raid
US7685399B2 (en) * 2007-01-07 2010-03-23 International Business Machines Corporation Method, system, and computer program products for data movement within processor storage
US8438334B2 (en) * 2009-12-22 2013-05-07 International Business Machines Corporation Hybrid storage subsystem with mixed placement of file contents
US20120017039A1 (en) 2010-07-16 2012-01-19 Plx Technology, Inc. Caching using virtual memory
US8830716B2 (en) * 2012-09-29 2014-09-09 Intel Corporation Intelligent far memory bandwith scaling
US9430386B2 (en) * 2013-03-15 2016-08-30 Bitmicro Networks, Inc. Multi-leveled cache management in a hybrid storage system
US9734079B2 (en) 2013-06-28 2017-08-15 Intel Corporation Hybrid exclusive multi-level memory architecture with memory management
US9032099B1 (en) 2013-12-12 2015-05-12 Intel Corporation Writeback mechanisms for improving far memory utilization in multi-level memory architectures
WO2015100434A2 (en) * 2013-12-25 2015-07-02 Aplus Flash Technology, Inc A HYBRID NAND WITH ALL-BL m-PAGE OPERATION SCHEME
US20150379678A1 (en) 2014-06-25 2015-12-31 Doa'a M. Al-otoom Techniques to Compose Memory Resources Across Devices and Reduce Transitional Latency
US9583182B1 (en) * 2016-03-22 2017-02-28 Intel Corporation Multi-level memory management

Also Published As

Publication number Publication date
US20170277633A1 (en) 2017-09-28
TW201734806A (zh) 2017-10-01
CN108780423A (zh) 2018-11-09
WO2017165042A1 (en) 2017-09-28
US9583182B1 (en) 2017-02-28
TWI735529B (zh) 2021-08-11
US9921961B2 (en) 2018-03-20
CN108780423B (zh) 2023-06-02

Similar Documents

Publication Publication Date Title
DE112017001471T5 (de) Mehrebenen-speichermanagement
DE112016004314T5 (de) Programmierbare zeitgebung von chipinterner terminierung in einem mehrrangigen system
DE102017113439B4 (de) Abbildungstabellen für Speichervorrichtungen
DE112011106021B4 (de) Zugreifen auf Daten, die in einem Befehls-/Adressregister-Gerät gespeichert sind
DE112012006171B4 (de) On-Chip-Redundanzreparatur für Speichergeräte
DE112017003334T5 (de) Lastreduzierte nichtflüchtige speicherschnittstelle
DE102011076895B4 (de) Cachekohärenzprotokoll für persistente Speicher
DE102020104367A1 (de) Refresh-befehlssteuerung für eine hostunterstützung einer rowhammer-mitigation
DE112016004243T5 (de) Hybrides Auffrischen mit verborgenen Auffrischungen und externen Auffrischungen
DE112015003397T5 (de) Vorrichtung, System und Verfahren zur Bestimmung von Vergleichsinformationen basierend auf Speicherdaten
DE112017001020T5 (de) Unterstützung einer vielzahl von speichertypen in einem speichersteckplatz
US20180004659A1 (en) Cribbing cache implementing highly compressible data indication
DE102011076894B9 (de) Persistenter Speicher für einen Hauptspeicher eines Prozessors
DE102018128601A1 (de) Hintergrunddatenauffrischung unter Verwendung eines Systemzeitstempels in Speicherungseinrichtungen
DE112017006599T5 (de) Programmierbare datenstruktur zum wiederholten schreiben in einen speicher
DE102017104448A1 (de) Datenspeichervorrichtung
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
DE112017004966T5 (de) Erweiterte anwendung eines fehlerprüfungs- und korrekturcodes in einem speicher
DE112017004268T5 (de) Befehlsbus mit doppelter datenrate
DE112011105984T5 (de) Dynamische teilweise Abschaltung eines arbeitsspeicherseitigen Zwischenspeichers in einer Arbeitsspeicherhierarchie auf zwei Ebenen
DE102020103570A1 (de) Host-definierte bandbreitenzuweisung für ssd-aufgaben
DE102018123669A1 (de) Host-Computer-Anordnung, Remote-Server-Anordnung, Speicherungssystem und Verfahren davon
DE112017001118T5 (de) Verfahren und Vorrichtung zum Bereitstellen eines zusammenhängend adressierbaren Speicherbereichs durch Neuabbildung eines Adressraums
DE102017106713A1 (de) Rechensystem, nichtflüchtiges Speichermodul und Verfahren zum Betreiben einer Speichervorrichtung
DE102018130165A1 (de) Virtuelle übertragung von daten zwischen memory- und storage-domäne

Legal Events

Date Code Title Description
R012 Request for examination validly filed