DE102020117350A1 - Speichersystem einschliesslich heterogener speicher, computersystem mit dem speichersystem und datenverwaltungsverfahren dafür - Google Patents

Speichersystem einschliesslich heterogener speicher, computersystem mit dem speichersystem und datenverwaltungsverfahren dafür Download PDF

Info

Publication number
DE102020117350A1
DE102020117350A1 DE102020117350.4A DE102020117350A DE102020117350A1 DE 102020117350 A1 DE102020117350 A1 DE 102020117350A1 DE 102020117350 A DE102020117350 A DE 102020117350A DE 102020117350 A1 DE102020117350 A1 DE 102020117350A1
Authority
DE
Germany
Prior art keywords
access
memory
hot
access management
storage device
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
DE102020117350.4A
Other languages
English (en)
Inventor
Mi Seon HAN
Myoung Seo KIM
Yun Jeong MUN
Eui Cheol Lim
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SK Hynix Inc
Original Assignee
SK Hynix Inc
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 SK Hynix Inc filed Critical SK Hynix Inc
Publication of DE102020117350A1 publication Critical patent/DE102020117350A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage 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/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3433Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3471Address tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/0623Address space extension for memory modules
    • 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/0871Allocation or management of cache space
    • 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
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1657Access to multiple memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance 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/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

Speichersystem mit einer ersten Speichervorrichtung, die einen ersten Speicher einschließt, der eine Vielzahl von Zugriffsverwaltungsbereichen und eine erste Zugriffslatenz einschließt, wobei jeder der Zugriffsverwaltungsbereiche eine Vielzahl von Seiten aufweist, wobei die erste Speichervorrichtung so konfiguriert ist, dass sie einen Hot Access Verwaltungsbereich erfasst, der eine Zugriffszahl aufweist, die aus der Vielzahl von Zugriffsverwaltungsbereichen einen voreingestellten Wert erreicht, und eine oder mehrere Hot Pages erfasst, die in dem Hot Access Verwaltungsbereich enthalten sind; und einer zweiten Speichervorrichtung mit einer zweiten Zugriffslatenz, die sich von der ersten Zugriffslatenz der ersten Speichervorrichtung unterscheidet. Daten, die in der einen oder den mehreren Hot Pages gespeichert sind, werden in die zweite Speichervorrichtung migriert.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNG
  • Die vorliegende Anmeldung beansprucht die Priorität gemäß 35 U.S.C. § 119(a) der koreanischen Patentanmeldung Nr. 10-2019-0105263 , die am 27. August 2019 beim koreanischen Amt für geistiges Eigentum eingereicht wurde und die durch Verweis in ihrer Gesamtheit in diese Anmeldung aufgenommen wurde.
  • HINTERGRUND
  • Technisches Anwendungsgebiet
  • Verschiedene Ausführungsformen beziehen sich im Allgemeinen auf ein Computersystem und insbesondere auf eine Speichervorrichtung (oder ein Speichersystem) mit heterogenen Speichern, ein Computersystem mit der Speichervorrichtung und ein Datenverwaltungsverfahren dafür.
  • Stand der Technik
  • Ein Computersystem kann Speichervorrichtungen in verschiedenen Formen einschließen. Eine Speichervorrichtung enthält einen Speicher zum Speichern von Daten und eine Speichersteuerung zum Steuern eines Speicherbetriebs. Der Speicher kann einen flüchtigen Speicher, wie z.B. einen dynamischen Speicher mit wahlfreiem Zugriff (DRAM), einen Static Random Access Memory (SRAM) oder ähnliches, oder einen nichtflüchtigen Speicher, wie z.B. einen elektrisch löschbaren und programmierbaren ROM (EEPROM), einen ferroelektrischen RAM (FRAM), einen Phasenwechsel-RAM (PCRAM), einen magnetischen RAM (MRAM), einen Flash-Speicher oder ähnliches einschließen. In dem flüchtigen Speicher gespeicherte Daten gehen verloren, wenn die Stromversorgung gestoppt wird, während in dem nichtflüchtigen Speicher gespeicherte Daten nicht verloren gehen, obwohl die Stromversorgung gestoppt wird. In letzter Zeit wurde eine Speichervorrichtung entwickelt, auf der heterogene Speicher montiert sind.
  • Außerdem weist der flüchtige Speicher eine hohe Betriebsgeschwindigkeit auf, während der nichtflüchtige Speicher eine relativ niedrige Betriebsgeschwindigkeit aufweist. Dementsprechend müssen zur Verbesserung der Leistung eines Speichersystems häufig abgerufene Daten (z.B. „heiße“ Daten) im flüchtigen Speicher und weniger häufig abgerufene Daten (z.B. „kalte“ Daten) im nichtflüchtigen Speicher gespeichert werden.
  • ZUSAMMENFASSUNG
  • Verschiedene Ausführungsformen sind ausgerichtet auf das Bereitstellen einer Speichervorrichtung (oder eines Speichersystems) einschließlich heterogener Speicher, die die Betriebsleistung verbessern können, ein Computersystem einschließlich der Speichervorrichtung und ein Datenverwaltungsverfahrens dafür.
  • In einer Ausführungsform umfasst ein Speichersystem eine erste Speichervorrichtung mit einem ersten Speicher, der eine Vielzahl von Zugriffsverwaltungsbereichen und eine erste Zugriffslatenz aufweist, wobei jeder der Zugriffsverwaltungsbereiche eine Vielzahl von Seiten einschließt, wobei die erste Speichervorrichtung so konfiguriert ist, dass sie einen Hot Access Verwaltungsbereich erfasst, der eine Zugriffszahl aufweist, die einen voreingestellten Wert aus der Vielzahl von Zugriffsverwaltungsbereichen erreicht, und eine oder mehrere Hot Pages erfasst, die in dem Hot Access Verwaltungsbereich enthalten sind; und eine zweite Speichervorrichtung mit einer zweiten Zugriffslatenz, die sich von der ersten Zugriffslatenz der ersten Speichervorrichtung unterscheidet. Daten, die in der einen oder den mehreren Hot Pages gespeichert sind, werden in die zweite Speichervorrichtung migriert.
  • In einer Ausführungsform umfasst ein Computersystem eine zentrale Verarbeitungseinheit (CPU) und ein Speichersystem, das über einen Systembus elektrisch mit der CPU verbunden ist. Die Speichervorrichtung enthält eine erste Speichervorrichtung mit einem ersten Speicher, der eine Vielzahl von Zugriffsverwaltungsbereichen und eine erste Zugriffslatenz aufweist, wobei jeder der Zugriffsverwaltungsbereiche eine Vielzahl von Seiten einschließt, wobei die erste Speichervorrichtung so konfiguriert ist, dass sie einen Hot Access Verwaltungsbereich erfasst, der eine Zugriffszahl aufweist, die einen voreingestellten Wert aus der Vielzahl von Zugriffsverwaltungsbereichen erreicht, und eine oder mehrere Hot Pages erfasst, die in dem Hot Access Verwaltungsbereich enthalten sind; und eine zweite Speichervorrichtung mit einer zweiten Zugriffslatenz, die sich von der ersten Zugriffslatenz der ersten Speichervorrichtung unterscheidet. Daten, die in der einen oder den mehreren Hot Pages gespeichert sind, werden in die zweite Speichervorrichtung migriert.
  • In einer Ausführungsform umfasst ein Datenverwaltungsverfahren für ein Computersystem das Übertragen eines Hot Access Verwaltungsbereich-Prüfbefehls durch die CPU an die erste Speichervorrichtung, zum Prüfen, ob einen Hot Access Verwaltungsbereich in einem ersten Speicher der ersten Speichervorrichtung vorhanden ist; das Übertragen einer ersten Antwort oder einer zweiten Antwort an die CPU durch die erste Speichervorrichtung, als Antwort auf den Hot Access Verwaltungsbereich-Prüfbefehl, wobei die erste Antwort Informationen bezüglich einer oder mehrerer Hot Pages in dem Hot Access Verwaltungsbereich enthält und die zweite Antwort anzeigt, dass der Hot Access Verwaltungsbereich nicht im ersten Speicher vorhanden ist; und Übertragen, durch die CPU, eines Datenmigrationsbefehls zum Austauschen von „heißen“ Daten, die in der einen oder den mehreren „Hot Pages“ des ersten Speichers gespeichert sind, mit „kalten“ Daten in einem zweiten Speicher der zweiten Speichervorrichtung an die erste und zweite Speichervorrichtung, wenn die erste Antwort von der ersten Speichervorrichtung empfangen wird, wobei die erste Speichervorrichtung eine längere Zugriffslatenz als die zweite Speichervorrichtung hat.
  • In einer Ausführungsform umfasst eine Speicherzuteilungsmethode das Empfangen einer Seitenzuteilungsanforderung und einer virtuellen Adresse durch eine zentrale Verarbeitungseinheit (CPU), das Prüfen der Hot Page-Erkennungshistorie einer physikalischen Adresse, die der empfangenen virtuellen Adresse entspricht, durch die CPU, und das Zuweisen von Seiten, die der empfangenen virtuellen Adresse entsprechen, an den ersten Speicher einer ersten Speichervorrichtung und den zweiten Speicher einer zweiten Speichervorrichtung auf der Grundlage eines Ergebnisses der Prüfung.
  • In einer Ausführungsform umfasst eine Speichervorrichtung einen nichtflüchtigen Speicher; und einen Controller, der so konfiguriert ist, dass er den Betrieb des nichtflüchtigen Speichers steuert. Der Controller ist konfiguriert zum Unterteilen des nichtflüchtigen Speichers in eine Vielzahl von Zugriffsverwaltungsbereichen, von denen jeder eine Vielzahl von Seiten umfasst, Einschließen einer Zugriffszähltabelle zum Speichern einer Zugriffszahl von jedem der Vielzahl von Zugriffsverwaltungsbereichen und einer Vielzahl von Bitvektoren, die mit Bits konfiguriert sind, die einer Vielzahl von Seiten entsprechen, die in jedem der Vielzahl von Zugriffsverwaltungsbereichen enthalten sind, Speichern einer Zugriffszahl eines aufgerufenen Zugriffsverwaltungsbereichs der Vielzahl von Zugriffsverwaltungsbereiche in einem Raum der Zugriffszähltabelle, die den aufgerufenen Zugriffsverwaltungsbereichen entspricht, wenn auf den nichtflüchtigen Speicher zugegriffen wird, und Festlegen - als einen ersten Wert - eines Bits, das einer zugegriffenen Seite entspricht, unter Bits eines Bitvektors, der dem aufgerufenen Zugriffsverwaltungsbereich entspricht.
  • Gemäß den Ausführungsformen können im Wesentlichen gültige (oder aussagekräftige) „heiße“ Daten in einen Speicher mit hoher Betriebsgeschwindigkeit migriert werden, da „Hot Pages“ mit einer hohen Zugriffszahl direkt in der Hauptspeichervorrichtung erkannt werden. Folglich kann die Gesamtbetriebsleistung eines Systems verbessert werden.
  • Darüber hinaus kann gemäß den Ausführungsformen eine Datenmigration reduziert und der Zugriff auf einen Speicher mit hoher Betriebsgeschwindigkeit erhöht werden, weil eine Seite einem Speicher mit hoher Betriebsgeschwindigkeit oder einem Speicher mit niedriger Betriebsgeschwindigkeit in Abhängigkeit von einer Hot Page-Erkennungshistorie zugewiesen wird. Folglich kann die Gesamtleistung eines Systems verbessert werden.
  • Figurenliste
  • Es zeigen:
    • 1 ein Computersystem gemäß einer Ausführungsform.
    • 2 eine Speichervorrichtung von 1 gemäß einer Ausführungsform.
    • 3 Seiten, die in einem ersten Speicher von 2 gemäß einer Ausführungsform enthalten sind.
    • 4 A einen ersten Controller einer ersten Speichervorrichtung, dargestellt in 2, entsprechend einer Ausführungsform.
    • 4 B den ersten Controller der ersten in 2 gezeigten Speichervorrichtung gemäß einer anderen Ausführungsform.
    • 5 A eine Zugriffszähltabelle (Access Count Table, ACT) gemäß einer Ausführungsform.
    • 5 B Bitvektoren (BVs) gemäß einer Ausführungsform.
    • 6 A das Auftreten des Zugriffs zu einem Zugriffsverwaltungsbereich.
    • 6 B eine ACT, in dem eine Zugriffszahl eines Zugriffsverwaltungsbereichs gespeichert ist.
    • 6C einen Bitvektor (BV), in dem Bits, welche aufgerufenen Seiten in einem Zugriffsverwaltungsbereich entsprechen, auf einen Wert gesetzt werden, der einen „festgelegten Zustand“ anzeigt.
    • 7A und 7B Flussdiagramme, die ein Datenverwaltungsverfahren gemäß einer Ausführungsform veranschaulichen.
    • 8 eine Datenmigration zwischen einer ersten Speichervorrichtung und einer zweiten Speichervorrichtung gemäß einer Ausführungsform.
    • 9A die am längsten nicht benutzten (LRU) Warteschlangen für einen ersten Speicher und einen zweiten Speicher gemäß einer Ausführungsform.
    • 9B eine erste LRU-Warteschlange und eine zweite LRU-Warteschlange, die nach einem Datenaustausch gemäß einer Ausführungsform aktualisiert werden.
    • 10A eine Seitentabelle gemäß einer Ausführungsform.
    • 10B einen Page-Mapping-Eintrag (PME) von 10A gemäß einer Ausführungsform.
    • 11 ein Flussdiagramm, das ein Speicher-Allokationsverfahren gemäß einer Ausführungsform veranschaulicht.
    • 12 ein System gemäß einer Ausführungsform.
    • 13 ein System gemäß einer anderen Ausführungsform.
  • DETAILLIERTE BESCHREIBUNG
  • Im Folgenden werden eine Speichervorrichtung (oder ein Speichersystem) mit heterogenen Speichern, ein Computersystem mit der Speichervorrichtung und ein Datenverwaltungsverfahren dafür unter Bezugnahme auf die beigefügten Figuren durch verschiedene Ausführungsbeispiele beschrieben.
  • 1 zeigt ein Computersystem 10 gemäß einer Ausführungsform.
  • Bei dem Computersystem 10 kann es sich um einen Hauptrechner, einen Server-Computer, einen Personal Computer, ein mobiles Gerät, ein Computersystem für allgemeine oder spezielle Zwecke wie z.B. programmierbare Haushaltsgeräte usw. handeln.
  • Unter Bezugnahme auf 1 kann das Computersystem 10 Folgendes einschließen: eine zentrale Verarbeitungseinheit (CPU) 100, die elektrisch mit einem Systembus 500 gekoppelt ist, eine Speichervorrichtung 200, einen Speicher 300 und eine Eingabe-/Ausgabe-Schnittstelle 400 umfassen. Gemäß einer Ausführungsform kann das Computersystem 10 ferner einen Cache 150 enthalten, der elektrisch mit der CPU 100 gekoppelt ist.
  • Die CPU 100 kann einen oder mehrere von verschiedenen Prozessoren einschließen, die kommerziell genutzt werden können, und kann z.B. Folgendes einschließen: einen oder mehrere Athlon®-, Duron®- und Opteron®-Prozessoren von AMDⓇ; Anwendungs-, eingebettete und Sicherheitsprozessoren von ARM®; Dragonball®- und PowerPC®-Prozessoren von IBM® und MotorolaⓇ; einen CELL-Prozessor von IBM® und SonyⓇ; Celeron®-, Core(2) Duo®-, Core i3-, Core i5-, Core i7-, Itanium®-, Pentium®-, Xeon®- und XSCALE®-Prozessoren von Intel®; und ähnliche Prozessoren. Ein Dual-Mikroprozessor, ein Multi-Core-Prozessor und weitere Multi-Prozessor-Architektur können als CPU 100 übernommen werden.
  • Die CPU 100 kann Programme und/oder Daten, die in der Speichervorrichtung 200 (oder im Speichersystem) gespeichert sind, verarbeiten oder ausführen. Beispielsweise kann die CPU 100 die Programme und/oder die Daten als Reaktion auf ein von einem Taktsignalgenerator geliefertes Taktsignal verarbeiten oder ausführen (nicht abgebildet).
  • Außerdem kann die CPU 100 auf den Cache 150 und die Speichervorrichtung 200 zugreifen. Beispielsweise kann die CPU 100 Daten in der Speichervorrichtung 200 speichern. Bei den in der Speichervorrichtung 200 gespeicherten Daten kann es sich um Daten handeln, die aus dem Speicher 300 gelesen werden oder um Daten, die über die E/A-Schnittstelle 400 eingegeben werden. Darüber hinaus kann die CPU 100 Daten lesen, die im Cache 150 und in der Speichervorrichtung 200 gespeichert sind.
  • Die CPU 100 kann verschiedene Operationen auf der Grundlage der in der Speichervorrichtung 200 gespeicherten Daten durchführen. Beispielsweise kann die CPU 100 der Speichervorrichtung 200 einen Befehl zur Durchführung einer Datenmigration zwischen einer ersten Speichervorrichtung 210 und einer zweiten Speichervorrichtung 250, die in der Speichervorrichtung 200 enthalten sind, zur Verfügung stellen.
  • Der Cache 150 bezieht sich auf einen Allzweckspeicher zur Reduzierung eines Engpass-Phänomens, das auf einen Unterschied in der Betriebsgeschwindigkeit zwischen einem Gerät mit einer relativ hohen Betriebsgeschwindigkeit und einem Gerät mit einer relativ niedrigen Betriebsgeschwindigkeit zurückzuführen ist. Das heißt, der Cache 150 dient zur Reduzierung eines Datenengpass-Phänomens zwischen der CPU 100, die mit einer relativ hohen Geschwindigkeit arbeitet, und der Speichervorrichtung 200, die mit einer relativ niedrigen Geschwindigkeit arbeitet. Der Cache 150 kann Daten zwischenspeichern, die in der Speichervorrichtung 200 gespeichert sind und auf die die CPU 100 häufig zugreift.
  • Obwohl in 1 nicht dargestellt, kann der Cache 150 eine Vielzahl von Caches enthalten. Zum Beispiel kann der Cache 150 einen L1-Cache und einen L2-Cache enthalten. In diesem Fall bedeutet „L“ eine Ebene. Im Allgemeinen kann der L1-Cache in die CPU 100 eingebettet sein und zunächst zur Datenreferenz und - verwendung verwendet werden. Der L1-Cache hat die höchste Betriebsgeschwindigkeit unter den Caches im Cache 150, kann aber eine geringe Speicherkapazität aufweisen. Wenn Zieldaten nicht im L1-Cache vorhanden sind (z.B. Cache-Miss), kann die CPU 100 auf den L2-Cache zugreifen. Der L2-Cache hat eine relativ niedrigere Betriebsgeschwindigkeit als der L1-Cache, kann aber eine große Speicherkapazität haben. Wenn die Zieldaten sowohl im L2-Cache als auch im L1-Cache nicht vorhanden sind, kann die CPU 100 auf die Speichervorrichtung 200 zugreifen.
  • Die Speichervorrichtung 200 kann die erste Speichervorrichtung 210 und die zweite Speichervorrichtung 250 umfassen. Die erste Speichervorrichtung 210 und die zweite Speichervorrichtung 250 können unterschiedliche Strukturen aufweisen. Zum Beispiel kann die erste Speichervorrichtung 210 einen nichtflüchtigen Speicher (NVM) und einen Controller zur Steuerung des nichtflüchtigen Speichers enthalten, und die zweite Speichervorrichtung 250 kann einen flüchtigen Speicher (VM) und einen Controller zur Steuerung des flüchtigen Speichers enthalten. Zum Beispiel kann der flüchtige Speicher ein dynamischer Speicher mit wahlfreiem Zugriff (DRAM) sein und der nichtflüchtige Speicher ein Phasenwechsel-RAM (PCRAM) sein, aber die Ausführungsformen sind nicht darauf beschränkt.
  • Das Computersystem 10 kann kurzfristig und vorübergehend Daten in der Speichervorrichtung 200 speichern. Darüber hinaus kann die Speichervorrichtung 200 Daten in einem Dateisystemformat speichern oder einen separaten schreibgeschützten Bereich haben und ein Betriebssystemprogramm in dem separaten schreibgeschützten Bereich speichern. Wenn die CPU 100 ein Anwendungsprogramm ausführt, kann zumindest ein Teil des Anwendungsprogramms aus dem Speicher 300 gelesen und auf die Speichervorrichtung 200 geladen werden. Die Speichervorrichtung 200 wird später im Detail mit Bezug auf nachfolgende Figuren beschrieben.
  • Der Speicher 300 kann entweder ein Festplattenlaufwerk (HDD) oder ein Solid-State-Laufwerk (SSD) enthalten. Der „Speicher“ bezieht sich auf ein Speichermedium mit hoher Kapazität, in dem die Benutzerdaten langfristig vom Computersystem 10 gespeichert werden. Der Speicher 300 kann ein Betriebssystem (OS), ein Anwendungsprogramm und Programmdaten speichern.
  • Die E/A-Schnittstelle 400 kann eine Eingangsschnittstelle und eine Ausgangsschnittstelle umfassen. Die Eingangsschnittstelle kann elektrisch mit einem externen Eingabegerät gekoppelt werden. Je nach Ausführungsform kann das externe Eingabegerät eine Tastatur, eine Maus, ein Mikrofon, ein Scanner oder ähnliches sein. Ein Benutzer kann über das externe Eingabegerät einen Befehl, Daten und Informationen in das Computersystem 10 eingeben.
  • Die Ausgabeschnittstelle kann elektrisch mit einem externen Ausgabegerät gekoppelt werden. Je nach Ausführungsform kann das externe Ausgabegerät ein Monitor, ein Drucker, ein Lautsprecher oder ähnliches sein. Ausführungs- und Verarbeitungsergebnisse eines Benutzerbefehls, die von dem Computersystem 10 erzeugt werden, können über das externe Ausgabegerät ausgegeben werden.
  • 2 illustriert die Speichervorrichtung 200 aus 1 gemäß einer Ausführungsform.
  • Unter Bezugnahme auf 2 kann die Speichervorrichtung 200 die erste Speichervorrichtung 210 mit einem ersten Speicher 230, z.B. einem nichtflüchtigen Speicher, einschließen und die zweite Speichervorrichtung 250 mit einer zweiten Speichervorrichtung 270, z.B. einem flüchtigen Speicher, einschließen. Die erste Speichervorrichtung 210 kann eine niedrigere Betriebsgeschwindigkeit als die zweite Speichervorrichtung 250 aufweisen, aber eine höhere Speicherkapazität als die zweite Speichervorrichtung 250. Die Betriebsgeschwindigkeit kann eine Schreibgeschwindigkeit und eine Lesegeschwindigkeit umfassen.
  • Wie vorstehend beschrieben, kann die CPU 100 bei einem Cache-Miss im Cache 150 auf die Speichervorrichtung 200 zugreifen und nach Zieldaten suchen. Da die zweite Speichervorrichtung 250 eine höhere Betriebsgeschwindigkeit als die erste Speichervorrichtung 210 hat, wenn die von der CPU 100 abzurufenden Zieldaten in der zweiten Speichervorrichtung 250 gespeichert sind, kann auf die Zieldaten schnell zugegriffen werden, im Vergleich zu einem Fall, bei dem die Zieldaten in der ersten Speichervorrichtung 210 gespeichert sind.
  • Zu diesem Zweck kann die CPU 100 die Speichervorrichtung 200 so steuern, dass Daten (im Folgenden als „heiße Daten“ bezeichnet), die in der ersten Speichervorrichtung 210 gespeichert sind und eine relativ große Zugriffszahl haben, auf die zweite Speichervorrichtung 250 migriert werden, und Daten (im Folgenden als „kalte Daten“ bezeichnet), die in der zweiten Speichervorrichtung 250 gespeichert sind und eine relativ kleine Zugriffszahl haben, auf die erste Speichervorrichtung 210 migriert werden.
  • Wenn die CPU 100 in diesem Fall eine Zugriffszahl der ersten Speichervorrichtung 210 in einer Seiteneinheit verwaltet, können sich die von der CPU 100 ermittelten heißen und kalten Daten von den tatsächlich im ersten Speichervorrichtung 210 gespeicherten heißen und kalten Daten unterscheiden. Da die meisten Zugriffsanforderungen, die die CPU 100 von einem externen Gerät erhält, im Cache 150 getroffen werden können und nur sehr wenige Zugriffe auf die Speichervorrichtung 200 erfolgen, kann die CPU 100 nicht genau feststellen, ob die Zugriffsdaten in dem Cache 150 oder in der Speichervorrichtung 200 gespeichert wurden.
  • Dementsprechend kann in einer Ausführungsform die erste Speichervorrichtung 210 der Speichervorrichtung 200 als Reaktion auf eine Anforderung (oder einen Befehl) von der CPU 100 prüfen, ob im ersten Speicher 230 ein Hot Access Verwaltungsbereich vorhanden ist, in der eine Hot Page enthalten ist, eine oder mehrere Hot Pages in dem Hot Access Verwaltungsbereich erkennen und der CPU 100 Informationen (z. B. Adressen) bezüglich der erkannten einen oder mehreren Hot Pages bereitstellen.
  • Die CPU 100 kann die Speichervorrichtung 200 so steuern, dass sie eine Datenmigration zwischen der ersten Speichervorrichtung 210 und der zweiten Speichervorrichtung 250 auf der Grundlage der von der ersten Speichervorrichtung 210 bereitgestellten Informationen durchführt. In diesem Fall kann die Datenmigration zwischen der ersten Speichervorrichtung 210 und der zweiten Speichervorrichtung 250 eine Operation zum Austausch von heißen Daten sein, die in Hot Pages im ersten Speicher 230 gespeichert sind, mit kalten Daten, die in Cold Pages im zweiten Speicher 270 gespeichert sind. Eine detaillierte Konfiguration und Methode dafür wird später unter Bezugnahme auf nachfolgende Figuren beschrieben.
  • Unter Bezugnahme auf 2 kann die erste Speichervorrichtung 210 zusätzlich zum ersten Speicher 230 einen ersten Controller 220 enthalten, und die zweite Speichervorrichtung 250 kann zusätzlich zum zweiten Speicher 270 einen zweiten Controller 260 enthalten. In 2 wurde zur Vereinfachung der Figur der erste Speicher 230 und der zweite Speicher 270 als ein Speicherblock oder Chip dargestellt, aber der ersten Speicher 230 und der zweiten Speicher 270 können eine Vielzahl von Speicherchips enthalten.
  • Der erste Controller 220 der ersten Speichervorrichtung 210 kann einen Betrieb des ersten Speichers 230 steuern. Der erste Controller 220 kann den ersten Speicher 230 so steuern, dass er eine Operation ausführt, die einem von der CPU 100 empfangenen Befehl entspricht.
  • 3 illustriert ein Beispiel, bei dem Seiten, die im ersten Speicher 230 von 2 enthalten sind, in eine Vielzahl von Zugriffsverwaltungsbereichen gruppiert werden.
  • Unter Bezugnahme auf 3 kann der erste Controller 220 einen Datenspeicherbereich einschließlich der Seiten des ersten Speichers 230 in eine Vielzahl von Bereichen BEREICH1 bis BEREICHn gruppieren, wobei n eine positive ganze Zahl ist. Jede der Vielzahl von Bereichen BEREICH1 bis BEREICHn kann eine Vielzahl von Seiten Seite 1 bis Seite K einschließen, wobei K eine positive ganze Zahl ist. Im Folgenden wird jeder der Vielzahl von Bereichen BEREICH1 bis BEREICHn als „Zugriffsverwaltungsbereich“ bezeichnet.
  • Erneut Bezug nehmend auf 2 kann der erste Controller 220 eine Zugriffszahl für jede der Zugriffsverwaltungsbereiche BEREICH1 bis BEREICHn verwalten. Der Grund dafür, dass der erste Controller 220 nicht die Zugriffszahl des ersten Speichers 230 in einer Seiteneinheit verwaltet, sondern die Zugriffszahl des ersten Speichers 230 in einer Zugriffsverwaltungsbereichseinheit verwaltet, liegt darin, dass, wenn die Zugriffszahl in der Seiteneinheit verwaltet wird, ein Problem darin besteht, dass der Speicher-Overhead für die Speicherung der Zugriffszahlen von Seiten zunimmt, da der erste Speicher 230 eine sehr hohe Speicherkapazität hat. In der vorliegenden Ausführungsform wird, um eine Erhöhung des Speicher-Overheads zu verhindern, eine Zugriffszahl in der Zugriffsverwaltungsbereichseinheit und nicht in der Seiteneinheit verwaltet.
  • Darüber hinaus kann der erste Controller 220 anhand der Zugriffszahl jeder der Zugriffsverwaltungsbereiche BEREICH1 bis BEREICHn bestimmen, ob ein Hot Access Verwaltungsbereich, in dem eine Hot Page enthalten ist, im ersten Speicher 230 vorhanden ist. Beispielsweise kann der erste Controller 220 als Hot Access Verwaltungsbereich einen Zugriffsverwaltungsbereich bestimmen, dessen Zugriffszahl einen voreingestellten Wert erreicht. Das heißt, wenn die Zugriffszahl des Zugriffsverwaltungsbereichs gleich dem voreingestellten Wert wird, bestimmt der erste Controller 220 den Zugriffsverwaltungsbereich als Hot Access Verwaltungsbereich. Darüber hinaus kann der erste Controller 220 Zugriffe auf Seiten in dem Hot Access Verwaltungsbereich erkennen und die erkannten Seiten als Hot Pages bestimmen. Beispielsweise kann der erste Controller 220 die Hot Pages anhand eines Bitvektors (BV) erkennen, der dem Hot Access Verwaltungsbereich entspricht.
  • Ein Verfahren zum Feststellen, ob der Hot Access Verwaltungsbereich vorhanden ist, und zum Erkennen der Hot Pages in dem Hot Access Verwaltungsbereich wird später unter Bezugnahme auf nachfolgende Figuren ausführlich beschrieben.
  • Der erste Speicher 230 kann ein Speicherzellenfeld (nicht abgebildet) enthalten, das mit einer Vielzahl von Speicherzellen konfiguriert ist, eine Peripherieschaltung (nicht abgebildet) zum Schreiben von Daten in das Speicherzellenfeld oder zum Lesen von Daten aus dem Speicherzellenfeld und eine Steuerlogik (nicht abgebildet) zum Steuern eines Betriebs der Peripherieschaltung. Der erste Speicher 230 kann ein nichtflüchtiger Speicher sein. Zum Beispiel kann der erste Speicher 230 mit einem PCRAM konfiguriert sein, aber Ausführungsformen sind nicht darauf beschränkt. Der erste Speicher 230 kann mit einem von verschiedenen nichtflüchtigen Speichern konfiguriert werden.
  • Der zweite Controller 260 der zweiten Speichervorrichtung 250 kann einen Betrieb des zweiten Speichers 270 steuern. Der zweite Controller 260 kann den zweiten Speicher 270 steuern, um eine Operation auszuführen, die einem von der CPU 100 empfangenen Befehl entspricht. Der zweite Speicher 270 kann eine Operation des Schreibens von Daten in ein Speicherzellenfeld (nicht abgebildet) oder des Lesens von Daten aus dem Speicherzellenfeld als Reaktion auf einen vom zweiten Controller 260 bereitgestellten Befehl ausführen.
  • Der zweite Speicher 270 kann das Speicherzellenfeld, das mit einer Vielzahl von Speicherzellen konfiguriert ist, eine Peripherieschaltung (nicht abgebildet) zum Schreiben von Daten in das Speicherzellenfeld oder zum Lesen von Daten aus dem Speicherzellenfeld und eine Steuerlogik (nicht abgebildet) zum Steuern eines Betriebs der Peripherieschaltung enthalten.
  • Der zweite Speicher 270 kann ein flüchtiger Speicher sein. Zum Beispiel kann der zweite Speicher 270 mit einem DRAM konfiguriert sein, aber die Ausführungsformen sind nicht darauf beschränkt. Der zweite Speicher 270 kann mit einem der verschiedenen flüchtigen Speicher konfiguriert werden.
  • Die erste Speichervorrichtung 210 kann eine längere Zugriffslatenz haben als die zweite Speichervorrichtung 250. In diesem Fall bedeutet die Zugriffslatenz eine Zeitspanne zwischen dem Zeitpunkt, zu dem eine Speichervorrichtung einen Befehl von der CPU 100 empfängt, und dem Zeitpunkt, zu dem die Speichervorrichtung eine dem empfangenen Befehl entsprechende Antwort an die CPU 100 sendet. Darüber hinaus kann die erste Speichervorrichtung 210 einen höheren Stromverbrauch pro Zeiteinheit haben als die zweite Speichervorrichtung 250.
  • 4A zeigt den ersten Controller 220 der in 2 gezeigten ersten Speichervorrichtung 210 gemäß einer Ausführungsform.
  • Unter Bezugnahme auf 4A kann ein erster Controller 220A eine erste Schnittstelle 221, einen Speicherkern 222, einen Zugriffsverwalter 223, einen Speicher 224 und eine zweite Schnittstelle 225 enthalten.
  • Die erste Schnittstelle 221 kann einen Befehl von der CPU 100 empfangen oder Daten über den Systembus 500 von 1 an die CPU 100 übertragen.
  • Der Speicherkern 222 kann den Gesamtbetrieb des ersten Controllers 220A steuern. Der Speicherkern 222 kann mit einer Mikrosteuereinheit (MCU) oder einer CPU konfiguriert werden. Der Speicherkern 222 kann einen von der CPU 100 bereitgestellten Befehl verarbeiten. Um den von der CPU 100 gelieferten Befehl zu verarbeiten, kann der Speicherkern 222 einen Befehl oder Algorithmus in Form von Codes, d.h. Firmware, ausführen und den ersten Speicher 230 und die internen Komponenten des ersten Steuergeräts 220A wie die erste Schnittstelle 221, den Zugriffsverwalter 223, den Speicher 224 und die zweite Schnittstelle 225 steuern.
  • Der Speicherkern 222 kann Steuersignale zum Steuern einer Operation des ersten Speichers 230 auf der Grundlage eines von der CPU 100 bereitgestellten Befehls erzeugen und die erzeugten Steuersignale über die zweite Schnittstelle 225 an den ersten Speicher 230 liefern.
  • Der Speicherkern 222 kann den gesamte Datenspeicherbereich des ersten Speichers 230 in eine Vielzahl von Zugriffsverwaltungsbereiche mit jeweils mehreren Seiten gruppieren. Der Speicherkern 222 kann eine Zugriffszahl für jede der Zugriffsverwaltungsbereiche des ersten Speichers 230 unter Verwendung des Zugriffsverwalters 223 verwalten. Darüber hinaus kann der Speicherkern 222 unter Verwendung des Zugriffsverwalters 223 Zugriffsinformationen für Seiten verwalten, die in jeder der Zugriffsverwaltungsbereiche des ersten Speichers 230 enthalten sind.
  • Der Zugriffsverwalter 223 kann die Zugriffszahl für jede der Zugriffsverwaltungsbereiche des ersten Speichers 230 unter Steuerung des Speicherkerns 222 verwalten. Wenn beispielsweise auf eine Seite des ersten Speichers 230 zugegriffen wird, kann der Zugriffsverwalter 223 eine Zugriffszahl inkrementieren, die einem Zugriffsverwaltungsbereich entspricht, der die aufgerufene Seite im ersten Speicher 230 einschließt. Darüber hinaus kann der Zugriffsverwalter 223 ein Bit, das der Seite entspricht, auf die zugegriffen wurde, unter den Bits eines Bitvektors, der dem Zugriffsverwaltungsbereich einschließlich der Seite entspricht, auf einen Wert setzen, der einen „festgelegten Zustand“ anzeigt.
  • Der Speicher 224 kann eine Zugriffszähltabelle (Access Count Table, ACT) enthalten, die so konfiguriert ist, dass sie die Zugriffszahl jeder der Zugriffsverwaltungsbereiche des ersten Speichers 230 speichert. Darüber hinaus kann der Speicher 224 einen Zugriffsseiten-Bitvektor (APBV) enthalten, der mit Bitvektoren konfiguriert ist, die jeweils den Zugriffsverwaltungsbereichen des ersten Speichers 230 entsprechen. Der Speicher 224 kann mit einem SRAM, einem DRAM oder beiden implementiert werden, aber die Ausführungsformen sind nicht darauf beschränkt.
  • Die zweite Schnittstelle 225 kann den ersten Speicher 230 unter Steuerung des Speicherkerns 222 steuern. Die zweite Schnittstelle 225 kann den ersten Speicher 230 unter Steuerung des Speicherkerns 222 mit Steuersignalen versorgen. Die Steuersignale können einen Befehl, eine Adresse und ein Betriebssignal zur Steuerung eines Betriebs des ersten Speichers 230 enthalten. Die zweite Schnittstelle 225 kann Schreibdaten an den ersten Speicher 230 bereitstellen oder kann Lesedaten vom ersten Speicher 230 empfangen.
  • Die erste Schnittstelle 221, der Speicherkern 222, der Zugriffsverwalter 223, der Speicher 224 und die zweite Schnittstelle 225 des ersten Controllers 220 können über einen internen Bus 227 elektrisch miteinander gekoppelt werden.
  • 4B zeigt den ersten Controller 220 der in 2 gezeigten ersten Speichervorrichtung 210 gemäß einer anderen Ausführungsform. Bei der Beschreibung eines ersten Controllers 220B gemäß der vorliegenden Ausführungsform unter Bezugnahme auf 4B wird eine Beschreibung der gleichen Konfiguration wie die des ersten Controllers 220A in 4A weggelassen.
  • Unter Bezugnahme auf 4B kann der erste Controller 220B einen Speicherkern 222B enthalten, der eine Zugriffsverwaltungslogik 228 enthält. Die Zugriffsverwaltungslogik 228 kann mit Software oder Hardware oder einer Kombination daraus konfiguriert werden. Die Zugriffsverwaltungslogik 228 kann die Zugriffszahl jeder der Zugriffsverwaltungsbereiche des ersten Speichers 230 unter Steuerung des Speicherkerns 222B verwalten. Wenn zum Beispiel auf eine Seite des ersten Speichers 230 zugegriffen wird, kann die Zugriffsverwaltungslogik 228 eine Zugriffszahl inkrementieren, die einem Zugriffsverwaltungsbereich entspricht, der der Seite entspricht, auf die zugegriffen wurde. Darüber hinaus kann die Zugriffsverwaltungslogik 228 ein Bit, das der Seite entspricht, auf die zugegriffen wurde, unter den Bits eines Bitvektors, der dem Zugriffsverwaltungsbereich einschließlich der Seite entspricht, auf die zugegriffen wurde, auf den Wert setzen, der den „festgelegten Zustand“ anzeigt.
  • 5A zeigt eine Zugriffszähltabelle (Access Count Table, ACT) gemäß einer Ausführungsform.
  • Unter Bezugnahme auf 5A kann das ACT mit Räumen konfiguriert werden, in denen jeweils die Zugriffszahlen der Zugriffsverwaltungsbereiche BEREICH1 bis BEREICHn des ersten Speichers 230 gespeichert werden. Immer wenn auf eine Seite des ersten Speichers 230 zugegriffen wird, kann der Zugriffsverwalter 223 des ersten Controllers 220, wie in 4A gezeigt, oder die Zugriffsverwaltungslogik 228 des ersten Controllers 220B, wie in 4B gezeigt, eine Zugriffszahl, die einem Zugriffsverwaltungsbereich entspricht, einschließlich der aufgerufenen Seite, in einem entsprechenden Raum des ACT speichern.
  • 5B veranschaulicht einen Zugriffsseiten-Bitvektor (APBV) gemäß einer Ausführungsform.
  • Unter Bezugnahme auf 5B kann der APBV die Bitvektoren BV1 bis BVn einschließen, die jeweils den Zugriffsverwaltungsbereichen BEREICH1 bis BEREICHn des ersten Speichers 230 entsprechen. Ein Bitvektor, der einem Zugriffsverwaltungsbereich entspricht, kann mit k Bits konfiguriert werden, die jeweils k Seiten entsprechen, die in dem einen Zugriffsverwaltungsbereich enthalten sind. Immer wenn auf eine Seite des ersten Speichers 230 zugegriffen wird, kann der Zugriffsverwalter 223 des in 4A gezeigten ersten Controllers 220 oder die Zugriffsverwaltungslogik 228 des in 4B gezeigten ersten Controllers 220B ein Bit, das der aufgerufenen Seite entspricht, unter den Bits eines Bitvektors, die einem Zugriffsverwaltungsbereich einschließlich der aufgerufenen Seite entsprechen, auf einen Wert setzen, der einen „festgelegten Zustand“ anzeigt.
  • 6A veranschaulicht das Auftreten eines Zugriffs auf einen Zugriffsverwaltungsbereich. 6B veranschaulicht eine ACT, die eine Zugriffszahl des Zugriffsverwaltungsbereichs speichert, in dem der Zugriff stattgefunden hat. 6C veranschaulicht einen Bit-Vektor, in dem Bits, die den aufgerufenen Seiten in dem Zugriffsverwaltungsbereich entsprechen, auf einen Wert gesetzt wurden, der einen „festgelegten Zustand“ anzeigt. Zur Veranschaulichung zeigen die 6A bis 6C, dass auf den ersten Zugriffsverwaltungsbereich BEREICH1 zugegriffen wurde, aber die Offenlegung kann identisch auf jeden der zweiten bis n-ten Zugriffsverwaltungsbereiche BEREICH2 bis BEREICHn angewendet werden.
  • In 6A zeigt eine seitliche Achse die Zeit und „A1“ bis „Am“ zeigen die Zugänge an. Jedes Mal, wenn auf eine bestimmte Seite in dem ersten Zugriffsverwaltungsbereich BEREICH1 zugegriffen wird, kann der Zugriffsverwalter 223 (oder die Zugriffsverwaltungslogik 228) eine Zugriffszahl erhöhen, die in einem Bereich gespeichert ist, der dem ersten Zugriffsverwaltungsbereich BEREICH1 der in 6B dargestellten AKT entspricht.
  • Zum Beispiel kann, wie in 6A dargestellt, bei einem ersten Zutritt A1 zu dem ersten Zutrittsverwaltungsbereich BEREICH1 eine Zutrittszahl „1“ in dem Raum gespeichert werden, der dem ersten Zutrittsverwaltungsbereich BEREICH1 der in 6B dargestellten AKT entspricht. Wenn dann jeder der zweiten bis m-ten Zugriffe A2 bis Am auf den ersten Zugriffsverwaltungsbereich BEREICH1 erfolgt, kann die Zugriffszahl, die in dem Raum gespeichert wird, der dem ersten Zugriffsverwaltungsbereich BEREICH1 der ACT entspricht, um eins erhöht werden und kann folglich „m“ werden, wie in 6B dargestellt, wenn auf den ersten Zugriffsverwaltungsbereich BEREICH1 m-mal zugegriffen wurde.
  • Darüber hinaus kann, wenn auf den ersten Zugriffsverwaltungsbereich BEREICH1 zugegriffen wird, der Zugriffsverwalter 223 (oder die Zugriffsverwaltungslogik 228) Bits von aufgerufenen Seiten, die in einem Bitvektor enthalten sind, der dem ersten Zugriffsverwaltungsbereich BEREICH1 entspricht, auf einen Wert (z.B. „1“) setzen, der einen „festgelegten Zustand“ anzeigt.
  • Zum Beispiel, wenn k Bits, die im ersten Bitvektor BV1 enthalten sind, der dem ersten Zugriffsverwaltungsbereich BEREICH1 entspricht, den Seiten entsprechen, die in dem ersten Zugriffsverwaltungsbereich BEREICH1 enthalten sind, und wenn, wie in 6C dargestellt, auf Seiten (z.B. „1“, „2“, „100“, „101“ und „102“) zugegriffen wird, können Bits des ersten Bitvektors BV1, die den aufgerufenen Seiten entsprechen (z.B. „1“, „2“, „100“, „101“ und „102“), auf „1“ gesetzt werden. Wenn außerdem ein Bit des ersten Bitvektors BV1, das einer aufgerufenen Seite entspricht, auf den Wert gesetzt wird, der den festgelegten Zustand anzeigt, d.h. auf den festgelegten Wert „1“, kann der Zugriffsverwalter 223 (oder die Zugriffsverwaltungslogik 228) den festgelegten Wert „1“ beibehalten, wenn erneut auf die aufgerufene Seite zugegriffen wird.
  • Wenn die Zugriffszahl des ersten Zugriffsverwaltungsbereichs BEREICH1 einen voreingestellten Wert (z.B. „m“) erreicht, kann der Zugriffsverwalter 223 (oder die Zugriffsverwaltungslogik 228) den ersten Zugriffsverwaltungsbereich BEREICH1 als Hot Access Verwaltungsbereich bestimmen. Darüber hinaus kann der Zugriffsverwalter 223 (oder die Zugriffsverwaltungslogik 228) alle aufgerufenen Seiten in dem ersten Zugriffsverwaltungsbereich BEREICH1 als Hot Pages mit Bezug auf den ersten Bitvektor BV1, der dem ersten Zugriffsverwaltungsbereich BEREICH1 entspricht, der als Hot Access Verwaltungsbereich bestimmt wird, erkennen.
  • Wie vorstehend beschrieben, verwaltet der erste Controller 220 der ersten Speichervorrichtung 210 die Zugriffszahl jeder der Zugriffsverwaltungsbereiche BEREICH1 bis BEREICHn des ersten Speichers 230, bestimmt einen Hot Access Verwaltungsbereich, wenn eine der Zugriffszahlen der Zugriffsverwaltungsbereiche BEREICH1 bis BEREICHn des ersten Speichers 230 den voreingestellten Wert m erreicht, und erkennt eine oder mehrere Hot Pages in dem Hot Access Verwaltungsbereich unter Verwendung eines Bitvektors, der dem Hot Access Verwaltungsbereich entspricht.
  • Ein Verfahren zur Migration von heißen Daten, die in einer oder mehreren Hot Pages der ersten Speichervorrichtung 210 gespeichert sind - die wie vorstehend unter Bezugnahme auf die 6A bis 6C beschrieben erkannt wurden-, auf die zweite Speichervorrichtung 250 mit hoher Betriebsgeschwindigkeit, wird später nachfolgend ausführlich beschrieben.
  • 7A ist ein Flussdiagramm, das ein Datenverwaltungsverfahren gemäß einer Ausführungsform veranschaulicht. Das in 7 gezeigte Datenverwaltungsverfahren kann unter Bezugnahme auf mindestens eine der 1 bis 3, 4A, 4B, 5A, 5B und 6A bis 6C beschrieben werden.
  • Bei S710 kann die CPU 100 von 1 feststellen, ob ein Zyklus erreicht wurde, um zu prüfen, ob einen Hot Access Verwaltungsbereich im ersten Speicher 230 der ersten Speichervorrichtung 210 vorhanden ist. Der Zyklus kann voreingestellt werden. Wenn festgestellt wird, dass der voreingestellte Zyklus erreicht wurde, kann der Prozess zu S720 fortgesetzt werden. Das heißt, die CPU 100 kann in jedem voreingestellten Zyklus prüfen, ob im ersten Speicher 230 der ersten Speichervorrichtung 210 ein Hot Access Verwaltungsbereich vorhanden ist. Die Ausführungsformen sind jedoch nicht darauf beschränkt.
  • Bei S720 kann die CPU 100 über den Systembus 500 von 1 einen Befehl an die erste Speichervorrichtung 210 senden, um zu prüfen, ob der Hot Access Verwaltungsbereich im ersten Speicher 230 vorhanden ist. Der Befehl kann hier als „Hot Access Verwaltungsbereich-Prüfbefehl“ bezeichnet werden.
  • Bei S730 kann der erste Controller 220 der ersten Speichervorrichtung 210 von 2 als Reaktion auf den von der CPU 100 empfangenen Hot Access Verwaltungsbereich-Prüfbefehl die ACT prüfen und kann anhand der in der ACT gespeicherten Zugriffszahlen feststellen, ob ein Hot Access Verwaltungsbereich in dem ersten Speicher 230 vorhanden ist. Wenn festgestellt wird, dass der Hot Access Verwaltungsbereich im ersten Speicher 230 nicht vorhanden ist, kann der Prozess zu S750 übergehen.
  • Wenn andererseits festgestellt wird, dass der Hot Access Verwaltungsbereich im ersten Speicher 230 vorhanden ist, kann der erste Controller 220 eine oder mehrere Hot Pages, die in dem Hot Access Verwaltungsbereich enthalten sind, unter Bezugnahme auf einen Bit-Vektor, der dem Hot Access Verwaltungsbereich entspricht, erkennen. Wenn die eine oder mehrere Hot Pages erkannt werden, kann der Prozess zu S740 übergehen. Das Verfahren zum Bestimmen, ob der Hot Access Verwaltungsbereich vorhanden ist oder nicht, und zum Erkennen von Hot Pages wird später unter Bezugnahme auf 7B ausführlich beschrieben.
  • Bei S740 kann der erste Controller 220 der ersten Speichervorrichtung 210 Adressen der bei S730 erkannten Hot Pages an die CPU 100 übertragen. Danach kann der Prozess zu S760 übergehen.
  • Bei S750 kann der erste Controller 220 der ersten Speichervorrichtung 210 eine Antwort an die CPU 100 senden, die anzeigt, dass der Hot Access Verwaltungsbereich im ersten Speicher 230 nicht vorhanden ist. Danach kann der Prozess zu S780 übergehen.
  • Bei S760 kann die CPU 100 Datenmigrationsbefehle an die erste Speichervorrichtung 210 und die zweite Speichervorrichtung 250 übertragen.
  • Der von der CPU 100 an die erste Speichervorrichtung 210 übertragene Datenmigrationsbefehl kann einen Befehl für die Migration von heißen Daten, die in einer oder mehreren im ersten Speicher 230 der ersten Speichervorrichtung 210 enthaltenen Hot Pages gespeichert sind, in den zweiten Speicher 270 der zweiten Speichervorrichtung 250 und einen Befehl zur Speicherung von kalten Daten, die von der zweiten Speichervorrichtung 250 empfangen wurden, in den ersten Speicher 230 enthalten.
  • Darüber hinaus kann der von der CPU 100 an die zweite Speichervorrichtung 250 übertragene Datenmigrationsbefehl einen Befehl zur Migration der kalten Daten, die in einer oder mehreren Cold Pages des zweiten Speichers 270 der zweiten Speichervorrichtung 250 gespeichert sind, in den ersten Speicher 230 der ersten Speichervorrichtung 210 und einen Befehl zur Speicherung von heißen Daten, die von der ersten Speichervorrichtung 210 empfangen wurden, in den zweiten Speicher 270 enthalten. Dementsprechend kann der Prozess, nachdem die Datenmigrationsbefehle von der CPU 100 an die erste Speichervorrichtung 210 und die zweite Speichervorrichtung 250 bei S760 übertragen wurden, übergehen zu S770 und S775. Beispielsweise können S770 und S775 zur gleichen Zeit oder zu unterschiedlichen Zeiten ausgeführt werden.
  • Bei S770 kann der zweite Controller 260 der zweiten Speichervorrichtung 250 als Reaktion auf den von der CPU 100 empfangenen Datenmigrationsbefehl die kalten Daten von der einen oder den mehreren Cold Pages des zweiten Speichers 270 lesen, die kalten Daten vorübergehend in einem Pufferspeicher (nicht abgebildet) speichern und die von der ersten Speichervorrichtung 210 empfangenen heißen Daten in der einen oder den mehreren Cold Pages des zweiten Speichers 270 speichern. Darüber hinaus kann der zweite Controller 260 die von der ersten Speichervorrichtung 210 empfangenen kalten Daten an die erste Speichervorrichtung 210 übertragen und die vorübergehend im Pufferspeicher gespeicherten kalten Daten in einer oder mehreren Cold Pages des zweiten Speichers 270 speichern.
  • In einer anderen Ausführungsform, wenn der zweite Speicher 270 der zweiten Speichervorrichtung 250 eine leere Seite enthält, kann der Prozess des Auslesens der kalten Daten aus der einen oder den mehreren Cold Pages und des vorübergehenden Speicherns der kalten Daten im Pufferspeicher entfallen. Stattdessen können die von der ersten Speichervorrichtung 210 empfangenen heißen Daten in der leeren Seite des zweiten Speichers 270 gespeichert werden.
  • Um jedoch die heißen Daten des ersten Speichers 230 in den zweiten Speicher 270 zu migrieren, wenn der zweite Speicher 270 voll mit Daten ist, müssen die heißen Daten gegen die kalten Daten ausgetauscht werden, die im zweiten Speicher 270 gespeichert sind. Zu diesem Zweck kann die CPU 100 die kalten Daten aus den im zweiten Speicher 270 gespeicherten Daten auswählen und die kalten Daten gegen die heißen Daten des ersten Speichers 230 austauschen. Ein Kriterium für die Auswahl der kalten Daten kann ein Zugriffszeitpunkt oder eine Sequenz von Daten sein. Beispielsweise kann die CPU 100, als kalte Daten, Daten auswählen, die auf der am wenigsten benutzten Seite unter den Seiten des zweiten Speichers 270 gespeichert sind, und die ausgewählten kalten Daten gegen die heißen Daten des ersten Speichers 230 austauschen.
  • Bevor die CPU 100 die Datenmigrationsbefehle an die erste Speichervorrichtung 210 und die zweite Speichervorrichtung 250 bei S760 überträgt, kann die CPU 100 kalte Daten im zweiten Speicher 270 der zweiten Speichervorrichtung 250 auswählen und kann eine Adresse einer Cold Page, in der die ausgewählten kalten Daten gespeichert sind, in den an die zweite Speichervorrichtung 250 zu übertragenden Datenmigrationsbefehl aufnehmen. Ein Verfahren zur Auswahl von kalten Daten im zweiten Speicher 270 durch die CPU 100 wird später unter Bezugnahme auf 9A ausführlich beschrieben.
  • Bei S775 kann der erste Controller 220 der ersten Speichervorrichtung 210 als Reaktion auf den von der CPU 100 empfangenen Datenmigrationsbefehl die heißen Daten von einer oder mehreren Hot Pages, die in dem Hot Access Verwaltungsbereich des ersten Speichers 230 enthalten sind, lesen, die heißen Daten an den zweiten Speichervorrichtung 250 übertragen und die kalten Daten, die vom zweiten Speichervorrichtung 250 empfangen wurden, im ersten Speicher 230 speichern.
  • Bei S780 kann die CPU 100 an die erste Speichervorrichtung 210 einen Rücksetzbefehl zum Zurücksetzen der in der ACT und dem APBV gespeicherten Werte senden. In der vorliegenden Ausführungsform sendet die CPU 100 nacheinander den Hot Access Verwaltungsbereich-Prüfbefehl, den Datenmigrationsbefehl und den Rücksetzbefehl, aber die Ausführungsformen sind nicht darauf beschränkt. In einer anderen Ausführungsform kann die CPU 100 einen einzigen Befehl, der alle oben genannten Befehle enthält, an die ersten und zweiten Speichervorrichtungen 210 und 250 übertragen.
  • Bei S790 kann der erste Controller 220 der ersten Speichervorrichtung 210 die in der ACT und dem APBV gespeicherten Werte (oder Informationen) als Reaktion auf den von der CPU 100 empfangenen Rücksetzbefehl zurücksetzen.
  • 7B ist ein detailliertes Flussdiagramm von S730 in 7A gemäß einer Ausführungsform.
  • Bei S731 kann die erste Steuerung 220 die im ACT gespeicherten Werte überprüfen, d.h. die Zugriffszahl jeder der Zugriffsverwaltungsbereiche BEREICH1 bis BEREICHn im ersten Speicher 230.
  • Bei S733 kann der erste Controller 220 anhand der Zugriffszahl jeder der Zugriffsverwaltungsbereiche BEREICH1 bis BEREICHn feststellen, ob ein Hot Access Verwaltungsbereich unter den Zugriffsverwaltungsbereichen BEREICH1 bis BEREICHn vorhanden ist. Wenn z.B. eine Zugriffszahl einer der Zugriffsverwaltungsbereiche BEREICH1 bis BEREICHn einen voreingestellten Wert (z.B. „m“) erreicht, z.B. wenn es einen Zugriffsverwaltungsbereich mit einer Zugriffszahl gibt, die gleich oder größer als der voreingestellte Wert m ist, unter den Zugriffsverwaltungsbereichen BEREICH1 bis BEREICHn, kann der erste Controller 220 bestimmen, dass der Hot Access Verwaltungsbereich unter den Zugriffsverwaltungsbereichen BEREICH1 bis BEREICHn vorhanden ist. Wenn festgestellt wird, dass die Hot Access Verwaltungsbereich vorhanden ist, kann der Prozess bis S735 fortgesetzt werden. Wenn festgestellt wird, dass der Hot Access Verwaltungsbereich nicht unter den Zugriffsverwaltungsbereichen BEREICH1 bis BEREICHn vorhanden ist, kann das Verfahren bis S750 von 7A fortgesetzt werden.
  • Bei S735 kann der erste Controller 220 eine oder mehrere in dem Hot Access Verwaltungsbereich enthaltenen Hot Pages mit Bezug auf einen Bit-Vektor erkennen, der der Hot Access Verwaltungsbereich entspricht. Beispielsweise kann der erste Controller 220 Seiten als Hot Pages erkennen, die Bits entsprechen, die auf einen Wert (z.B. „1“) gesetzt wurden, der einen „festgelegten Zustand“ anzeigt. Wenn das Erkennen der Hot Pages abgeschlossen ist, kann der Prozess zu S740 von 7A übergehen.
  • 8 veranschaulicht eine Datenmigration zwischen einer ersten Speichervorrichtung und einer zweiten Speichervorrichtung gemäß einer Ausführungsform. Die in den 1 und 2 dargestellten Konfigurationen werden zur Beschreibung der in 8 dargestellten Datenmigration verwendet.
  • Unter Bezugnahme auf 8 kann die CPU 100 über den Systembus 500 (① Datenmigrationsbefehle an die erste Speichervorrichtung 210 und die zweite Speichervorrichtung 250 übertragen.
  • In diesem Fall kann der an die erste Speichervorrichtung 210 übertragene Datenmigrationsbefehl Adressen von Hot Pages, in denen heiße Daten gespeichert werden, im ersten Speicher 230, einen Lesebefehl zum Lesen der heißen Daten aus den Hot Pages und einen Schreibbefehl zum Speichern von kalten Daten, die von der zweiten Speichervorrichtung 250 übertragen wird, enthalten, aber Ausführungsformen sind nicht darauf beschränkt.
  • Darüber hinaus kann der an die zweite Speichervorrichtung 250 übertragene Datenmigrationsbefehl Adressen von Cold Pages, in denen kalte Daten gespeichert werden, im zweiten Speicher 270, einen Lesebefehl zum Lesen der kalten Daten aus den Cold Pages und einen Schreibbefehl zum Speichern von heißen Daten, die von der ersten Speichervorrichtung 230 übertragenen werden, enthalten, aber Ausführungsformen sind nicht darauf beschränkt.
  • Der zweite Controller 260 des zweiten Speichervorrichtung 250, der den Datenmigrationsbefehl von der CPU 100 empfangen hat, kann die kalten Daten aus den Cold Pages des zweiten Speichers 270 lesen und die gelesenen kalten Daten vorübergehend in einem Pufferspeicher (nicht abgebildet) speichern, der im zweiten Controller 260 (②) enthalten ist. Ebenso kann der erste Controller 220 der ersten Speichervorrichtung 210 auf der Grundlage des Datenmigrationsbefehls (②) die heißen Daten aus den Hot Pages des ersten Speichers 230 lesen und die gelesenen heißen Daten an den zweiten Controller 260 (③) übertragen.
  • Der zweite Controller 260 kann die heißen Daten, die von der ersten Speichervorrichtung 210 empfangen werden, im zweiten Speicher 270 (④) speichern. In diesem Fall kann ein Bereich des zweiten Speichers 270, in dem die heißen Daten gespeichert werden, den Cold Pages entsprechen, in denen die kalten Daten gespeichert wurden.
  • Darüber hinaus kann der zweite Controller 260 die kalten Daten, die vorübergehend im Pufferspeicher (⑤) gespeichert sind, an die erste Speichervorrichtung 210 übertragen. Der erste Controller 220 kann die kalten Daten, die von der zweiten Speichervorrichtung 250 empfangen wurden, im ersten Speicher 230 (⑥) speichern. In diesem Fall kann ein Bereich des ersten Speichers 230, in dem die kalten Daten gespeichert sind, den Hot Pages entsprechen, in denen die heißen Daten gespeichert wurden. Dementsprechend kann der Austausch zwischen den heißen Daten des ersten Speichers 230 und den kalten Daten des zweiten Speichers 270 abgeschlossen werden.
  • 9A veranschaulicht die am längsten nicht benutzten (LRU) Warteschlangen für einen ersten und einen zweiten Speicher gemäß einer Ausführungsform. Die in den 1 und 2 dargestellten Konfigurationen werden zur Beschreibung der in 9A dargestellten LRU-Warteschlangen verwendet.
  • Die CPU 100 kann in dem zweiten Speicher 270 Cold Pages auswählen, die kalte Daten speichern, die gegen heiße Daten des ersten Speichers 230 ausgetauscht werden sollen, wobei eine LRU-Warteschlange für den zweiten Speicher 270 verwendet wird.
  • Die CPU 100 kann die LRU-Warteschlangen für den ersten Speicher 230 und den zweiten Speicher 270 separat verwalten. Im Folgenden kann die LRU-Warteschlange für den ersten Speicher 230 als eine „erste LRU-Warteschlange LRUQ1“ und die LRU-Warteschlange für den zweiten Speicher 270 als eine „zweite LRU-Warteschlange LRUQ2“ bezeichnet werden.
  • Die erste LRU-Warteschlange LRUQ1 und die zweite LRU-Warteschlange LRUQ2 können jeweils im ersten Speicher 230 und im zweiten Speicher 270 gespeichert werden. Die Ausführungsformen sind jedoch nicht darauf beschränkt. Die erste LRU-Warteschlange LRUQ1 und die zweite LRU-Warteschlange LRUQ2 können die gleiche Konfiguration aufweisen. Zum Beispiel kann sowohl die erste LRU-Warteschlange LRUQ1 als auch die zweite LRU-Warteschlange LRUQ2 eine Vielzahl von Speicherplätzen zum Speichern von Adressen enthalten, die einer Vielzahl von Seiten entsprechen.
  • Eine Adresse der zuletzt verwendeten (MRU-)Seite kann im ersten Speicherplatz auf einer Seite der ersten LRU-Warteschlange LRUQ1 und der zweiten LRU-Warteschlange LRUQ2 gespeichert werden. Der erste Speicherplatz auf der einen Seite, in dem die Adresse der MRU-Seite gespeichert ist, kann als „MRU-Raum“ bezeichnet werden. Im ersten Speicherplatz auf der anderen Seite der ersten LRU-Warteschlange LRUQ1 und der zweiten LRU-Warteschlange LRUQ2 kann jeweils eine Adresse der zuletzt (oder vor langer Zeit) benutzten (LRU-)Seite gespeichert werden. Der erste Speicherplatz auf der anderen Seite, in dem die Adresse der LRU-Seite gespeichert ist, kann als „LRU-Speicherplatz“ bezeichnet werden.
  • Immer wenn auf den ersten Speicher 230 und den zweiten Speicher 270 zugegriffen wird, kann die Adresse der aufgerufenen Seite, die im MRU-Raum der ersten LRU-Warteschlange LRUQ1 und der zweiten LRU-Warteschlange LRUQ2 gespeichert ist, mit einer Adresse der neu aufgerufenen Seite aktualisiert werden. Zu diesem Zeitpunkt kann jede der Adressen der verbleibenden Seiten, auf die zugegriffen wurde und die in den anderen Speicherplätzen in jeder der ersten LRU-Warteschlange LRUQ1 und der zweiten LRU-Warteschlange LRUQ2 gespeichert sind, um einen Speicherplatz zum nächsten Speicherplatz in Richtung LRU-Speicherplatz migriert werden.
  • Die CPU 100 kann die am längsten nicht benutzten (oder long go) Seite im zweiten Speicher 270 mit Bezug auf die zweite LRU-Warteschlange LRUQ2 prüfen und Daten, die auf der entsprechenden Seite gespeichert sind, als kalte Daten bestimmen, die gegen heiße Daten des ersten Speichers 230 ausgetauscht werden sollen. Außerdem kann die CPU 100, wenn die Anzahl der heißen Daten größer als eins ist, kalte Daten entsprechend der Anzahl der heißen Daten aus einem oder mehreren LRU-Räumen der zweiten LRU-Warteschlange LRUQ2 in Richtung des MRU-Raums auswählen.
  • Wenn der Austausch zwischen den heißen Daten des ersten Speichers 230 und den kalten Daten des zweiten Speichers 270 abgeschlossen ist, kann die CPU 100 außerdem Adressinformationen aktualisieren, d. h. die Seitenadressen, die in den MRU-Räumen der ersten LRU-Warteschlange LRUQ1 und der zweiten LRU-Warteschlange LRUQ2 gespeichert sind. Wenn die Anzahl der heißen Daten größer als eins ist, kann die CPU 100 außerdem immer dann, wenn der Austausch zwischen den heißen Daten des ersten Speichers 230 und den kalten Daten des zweiten Speichers 270 abgeschlossen ist, die Seitenadressen aktualisieren, die in den MRU-Räumen der ersten LRU-Warteschlange LRUQ1 und der zweiten LRU-Warteschlange LRUQ2 gespeichert sind.
  • 9B veranschaulicht die erste LRU-Warteschlange LRUQ1 und die zweite LRU-Warteschlange LRUQ2, die nach einem Datenaustausch gemäß einer Ausführungsform aktualisiert wurden.
  • Wie oben beschrieben, kann die CPU 100 bei einer Datenmigration zwischen dem ersten Speicher 230 und dem zweiten Speicher 270 auf eine Hot Page des ersten Speichers 230 zugreifen, in der heiße Daten gespeichert sind, und kann auf eine Cold Page des zweiten Speichers 270 zugreifen, die einer im LRU-Raum der zweiten LRU-Warteschlange LRUQ2 gespeicherten Adresse entspricht. Dementsprechend kann eine Adresse der Hot Page, auf die kürzlich im ersten Speicher 230 zugegriffen wurde, neu im MRU-Raum der ersten LRU-Warteschlange LRUQ1 gespeichert werden. Außerdem kann eine Adresse der Cold Page, auf die kürzlich im zweiten Speicher 270 zugegriffen wurde, neu im MRU-Raum der zweiten LRU-Warteschlange LRUQ2 gespeichert werden. Da die Adresse neu im MRU-Raum sowohl der ersten LRU-Warteschlange LRUQ1 als auch der zweiten LRU-Warteschlange LRUQ2 gespeichert wird, können eine ursprünglich im MRU-Raum gespeicherte Adresse und nachfolgende Adressen davon um einen Speicherplatz in den LRU-Raum migriert werden.
  • Unter Bezugnahme auf 9B beträgt die Anzahl der im ersten Speicher 230 erkannten Hot Pages fünf. Es wird angenommen, dass die Adressen der fünf Hot Pages „3,“ „4,“ „5,“ „8,“ und „9“ lauten. Eine Seite, die einer Adresse entspricht, die in einem Speicherplatz gespeichert ist, der weiter vom MRU-Raum entfernt ist, weist auf eine weniger kürzlich benutzte Seite hin. Wenn die fünf Hot Pages in der Reihenfolge der am wenigsten kürzlich benutzten Seiten ausgerichtet sind, kann sich die Adressfolge „9,“ „8,“ „5,“ „4,“ und „3“ ergeben.
  • Um die in den fünf Hot Pages gespeicherten heißen Daten in den zweiten Speicher 270 zu migrieren, kann die CPU 100 fünf Cold Pages im zweiten Speicher 270 mit Bezug auf die zweite LRU-Warteschlange LRUQ2 auswählen. Die CPU 100 kann fünf Cold Pages „i“, „i-1“, „i-2“, „i-3“ und „i-4“ aus dem LRU-Raum der zweiten LRU-Warteschlange LRUQ2 in Richtung des MRU-Raums der zweiten LRU-Warteschlange LRUQ2 auswählen.
  • Unter der Annahme, dass heiße Daten, die in einer Hot Page gespeichert sind, auf die vor langer Zeit zugegriffen wurde, unter den Hot Pages „3,“ „4,“ „5,“ „8,“ und „9“ zuerst gegen kalte Daten ausgetauscht werden, können heiße Daten, die in der Hot Page „9“ gespeichert sind, zuerst gegen kalte Daten ausgetauscht werden, die in der Cold Page „i“ gespeichert sind. „Infolgedessen wird, obwohl in 9B nicht dargestellt, die Adresse „9“ neu im MRU-Raum der ersten FEVU-Warteschlange LRUQ1 gespeichert, und jede der Adressen „1“ bis „8“ wird um einen Speicherplatz nach rechts in Richtung des FEVU-Raums migriert. Außerdem wird die Adresse „i“ neu im MRU-Raum der zweiten LRU-Warteschlange LRUQ2 gespeichert, und jede der Adressen „1“ bis „i-1“ wird um einen Speicherplatz nach rechts zum LRU-Raum hin migriert.
  • In der Hot Page „8“ gespeicherte heiße Daten können in einem zweiten Schritt gegen kalte Daten ausgetauscht werden, die in der Cold Page „i-1“ gespeichert sind. Infolgedessen wird, obwohl in 9B nicht dargestellt, die Adresse „8“ neu im MRU-Raum der ersten FEVU-Warteschlange LRUQ1 gespeichert, und jede der Adressen „9“ und „1“ bis „7“ wird um einen Speicherplatz nach rechts in Richtung des FEVU-Raums migriert. Außerdem wird die Adresse „i-1“ neu im MRU-Raum der zweiten LRU-Warteschlange LRUQ2 gespeichert, und jede der Adressen „1“ bis „i-2“ wird um einen Speicherplatz nach rechts zum LRU-Raum hin migriert.
  • Anschließend können die auf der Hot Page „5“ gespeicherten heißen Daten drittens gegen die auf der Cold Page „i-2“ gespeicherten kalten Daten ausgetauscht werden. Infolgedessen wird, obwohl in 9B nicht dargestellt, die Adresse „5“ neu im MRU-Raum der ersten FEVU-Warteschlange LRUQ1 gespeichert, und jede der Adressen „8“, „9“ und „1“ bis „4“ wird um einen Speicherplatz nach rechts in Richtung des FEVU-Raums migriert. Außerdem wird die Adresse „i-2“ neu im MRU-Raum der zweiten LRU-Warteschlange LRUQ2 gespeichert, und jede der Adressen „1“ bis „i-3“ wird um einen Speicherplatz nach rechts zum LRU-Raum hin verschoben.
  • Danach können heiße Daten, die auf der Hot Page „4“ gespeichert sind, an vierter Stelle gegen kalte Daten ausgetauscht werden, die auf der Cold Page „i-3“ gespeichert sind. Infolgedessen wird, obwohl in 9B nicht dargestellt, die Adresse „4“ neu im MRU-Raum der ersten FEVU-Warteschlange LRUQ1 gespeichert, und jede der Adressen „5“, „8“, „9“ und „1“ bis „3“ wird um einen Speicherplatz nach rechts in Richtung des FEVU-Raums migriert. Darüber hinaus wird die Adresse „i-3“ neu im MRU-Raum der zweiten LRU-Warteschlange LRUQ2 gespeichert, und jede der Adressen „1“ bis „i-4“ wird um einen Speicherplatz nach rechts zum LRU-Raum hin migriert.
  • Die auf der Hot Page „3“ gespeicherten heißen Daten können schließlich gegen die auf der Cold Page „i-4“ gespeicherten kalten Daten ausgetauscht werden. Infolgedessen wird, obwohl in 9B nicht dargestellt, die Adresse „3“ neu im MRU-Raum der ersten FEVU-Warteschlange LRUQ1 gespeichert, und jede der Adressen „4“, „5“, „8“, „9“ und „1“ bis „2“ wird um einen Speicherplatz nach rechts in Richtung des FEVU-Raums migriert. Darüber hinaus wird die Adresse „i-4“ neu im MRU-Raum der zweiten FEVU-Warteschlange LRUQ2 gespeichert, und jede der Adressen „1“ bis „i-5“ wird um einen Speicherplatz nach rechts in Richtung des LRU-Raums migriert.
  • Nachdem der Datenaustausch abgeschlossen ist, wird die Adresse „3“ im MRU-Raum der ersten FEVU-Warteschlange LRUQ1 gespeichert, und die Adresse „i“ ist weiterhin im FEVU-Raum gespeichert. Außerdem wird die Adresse „i-4“ im MRU-Raum der zweiten FEVU-Warteschlange LRUQ2 gespeichert, und die Adresse „i-5“ wird migriert und im LRU-Raum gespeichert.
  • Wenn der Datenaustausch abgeschlossen ist, kann der erste Controller 220 der ersten Speichervorrichtung 210 einen Reset-Vorgang zum Zurücksetzen von Werten (oder Informationen) durchführen, die in der ACT und dem APBV des Speichers 224 gespeichert sind.
  • In einer Ausführungsform kann immer dann, wenn mindestens ein Befehl eines Hot Access Verwaltungsbereich-Befehls, ein Datenmigrationsbefehl und ein Rücksetzbefehl von der CPU 100 bereitgestellt wird, der erste Controller 220 die ACT und den APBV zurücksetzen, unabhängig davon, ob ein Hot Access Verwaltungsbereich im ersten Speicher 230 vorhanden ist und ob eine Datenmigration durchgeführt werden soll.
  • 10A zeigt eine Seitentabelle (PT) zur Abbildung zwischen einer virtuellen Adresse und einer physikalischen Adresse gemäß einer Ausführungsform.
  • Unter Bezugnahme auf 10A kann die PT eine Datenstruktur aufweisen, die Abbildungsinformationen zwischen einer virtuellen Adresse und einer physikalischen Adresse (oder einer tatsächlichen Adresse) enthält. Die PT kann mit einer Vielzahl von Page-Mapping-Einträgen (PMEs) konfiguriert sein, die eine Vielzahl von virtuellen Seitenzahlen VPN1 bis VPNj und eine Vielzahl von physikalischen Seitenzahlen PPN1 bis PPNj umfassen, die jeweils auf die Vielzahl von virtuellen Seitenzahlen VPN1 bis VPNj abgebildet werden. Die CPU 100 kann eine virtuelle Adresse in eine physikalische Adresse mit Bezug auf den PT umwandeln und auf eine Seite zugreifen, die der umgewandelten physikalischen Adresse entspricht.
  • 10B illustriert einen Page-Mapping-Eintrag (PME) von 10A gemäß einer Ausführungsform.
  • Unter Bezugnahme auf 10B kann der PME eine virtuelle Seitennummer und eine der virtuellen Seitennummer zugeordnete physikalische Seitennummer enthalten. Darüber hinaus kann der PME Seitenattributinformationen enthalten. Die Seitenattributinformationen können Informationen enthalten, die Merkmale einer Seite im Zusammenhang mit dem PME definieren, wie z.B. Lesemöglichkeit, Schreibmöglichkeit, Cache-Speichermöglichkeit und Ebenen-Zugriffsbeschränkung für die Seite im Zusammenhang mit dem PME, aber die Ausführungsformen sind nicht darauf beschränkt. Darüber hinaus kann der PME ein Hot Page Flag S enthalten, das angibt, ob es sich bei der Seite, die sich auf den PME bezieht, um eine Hot Page handelt. Der PME ist nicht auf das in 10B dargestellte Format beschränkt. In anderen Ausführungsformen kann der PME verschiedene Bereiche anderer Formate haben.
  • Wenn Adressen von Hot Pages von der ersten Speichervorrichtung 210 empfangen werden, kann die CPU 100 als Wert, der einen „festgelegten Zustand“ anzeigt, Hot Page Flags von PMEs in der PT setzen, die physikalische Adressen (d.h. physikalische Seitennummern) enthalten, die den Adressen der Hot Pages entsprechen. Danach kann die CPU 100 bei der Zuweisung eines Speichers ein Hot Page Flag eines PME überprüfen, das einer virtuellen Adresse mit Bezug auf die PT entspricht, und eine Seite der virtuellen Adresse entsprechend einem Wert des Hot Page Flags dem ersten Speicher 230 der ersten Speichervorrichtung 210 oder dem zweiten Speicher 270 der zweiten Speichervorrichtung 250 zuweisen.
  • Wenn beispielsweise das Hot Page Flag den eingestellten Wert aufweist, kann die CPU 100 die Seite der virtuellen Adresse dem zweiten Speicher 270 der zweiten Speichervorrichtung 250 zuweisen. Wenn andererseits das Hot Page-Flag nicht den eingestellten Wert aufweist, kann die CPU 100 die Seite der virtuellen Adresse dem ersten Speicher 230 der ersten Speichervorrichtung 210 zuweisen.
  • 11 ist ein Flussdiagramm, das eine Speicherzuteilungsmethode gemäß einer Ausführungsform veranschaulicht. Die in 11 dargestellte Speicherzuteilungsmethode kann unter Bezugnahme auf mindestens eine der 1 bis 3, 4A, 4B, 5A, 5B, 6A bis 6C, 7A, 7B, 8, 9A, 9B, 10A und 10B beschrieben werden.
  • Bei S1101 kann die CPU 100 eine Seitenzuteilungsanforderung und eine virtuelle Adresse von einem externen Gerät empfangen. In einer anderen Ausführungsform kann die Seitenzuteilungsanforderung von einem Anwendungsprogramm empfangen werden. Die Ausführungsformen sind jedoch nicht darauf beschränkt.
  • Bei S1103 kann die CPU 100 eine Hot-Page-Erkennungshistorie einer physikalischen Adresse, die der empfangenen virtuellen Adresse entspricht, mit Bezug auf eine Seitentabelle (PT) prüfen. Zum Beispiel kann die CPU 100 die Hot-Page-Erkennungshistorie der entsprechenden physikalischen Adresse prüfen, indem sie ein Hot Page Flag eines Page-Mapping-Eintrags (PME), der eine der empfangenen virtuellen Adressen entsprechende virtuelle Adressnummer enthält, unter der Vielzahl von PMEs prüft, die in der PT von 10A enthalten sind.
  • Bei S1105 kann die CPU 100 feststellen, ob die Hot Page-Erkennungshistorie der physikalischen Adresse, die der empfangenen virtuellen Adresse entspricht, vorhanden ist. Wenn z.B. das Hot Page Flag des PME einschließlich der empfangenen virtuellen Adresse auf den eingestellten Wert gesetzt wurde, kann die CPU 100 feststellen, dass die Hot Page-Erkennungshistorie der entsprechenden physikalischen Adresse vorhanden ist. Wenn das Hot Page Flag des PME einschließlich der empfangenen virtuellen Adresse nicht auf den eingestellten Wert gesetzt wurde, z. B. auf einen Wert, der auf einen „Reset-Status“ hindeutet, kann die CPU 100 feststellen, dass die Hot Page-Erkennungshistorie der entsprechenden physikalischen Adresse nicht vorhanden ist.
  • Wenn festgestellt wird, dass die Historie der Hot-Page-Erkennung vorhanden ist, kann der Prozess bis S1107 fortgesetzt werden. Wenn außerdem festgestellt wird, dass die Hot Page-Erkennungshistorie nicht vorhanden ist, kann der Prozess zu S1109 übergehen.
  • Bei S1107 kann die CPU 100 eine Seite, die der empfangenen virtuellen Adresse entspricht, dem zweiten Speicher 270 mit einer relativ kurzen Zugriffslatenz zuweisen.
  • Bei S1109 kann die CPU 100 die Seite, die der empfangenen virtuellen Adresse entspricht, dem ersten Speicher 230 mit einer relativ langen Zugriffslatenz zuweisen.
  • Wie oben beschrieben, wird eine Seite, die einer virtuellen Adresse entspricht, dem ersten Speicher 230 oder dem zweiten Speicher 270 zugewiesen, und zwar auf der Grundlage einer Hot-Page-Erkennungshistorie einer physikalischen Adresse, die mit der virtuellen Adresse zusammenhängt, welche zusammen mit einer Seitenzuteilungsanforderung empfangen wird. Dementsprechend kann die Gesamtleistung eines Systems verbessert werden, da eine Datenmigration reduziert und der Zugriff auf einen Speicher mit einer relativ kurzen Zugriffslatenz erhöht wird.
  • 12 veranschaulicht ein System 1000 gemäß einer Ausführungsform. In 12 kann das System 1000 eine Hauptplatine 1110, einen Prozessor 1120 und ein Speichermodul 1130 enthalten. Die Hauptplatine 1110 ist ein Substrat, auf dem Teile montiert sind, die das System konfigurieren. Die Hauptplatine 1110 kann als Mutterplatine bezeichnet werden. Die Hauptplatine 1110 kann einen Steckplatz (nicht abgebildet) enthalten, auf dem der Prozessor 1120 montiert werden kann, und einen Steckplatz 1140, auf dem das Speichermodul 1130 montiert werden kann. Die Hauptplatine 1110 kann eine Verdrahtung 1150 zur elektrischen Kopplung des Prozessors 1120 und des Speichermoduls 1130 enthalten. Der Prozessor 1120 kann auf der Hauptplatine 1110 montiert werden. Der Prozessor 1120 kann eine CPU, eine Grafikverarbeitungseinheit (GPU), einen Multimediaprozessor (MMP), einen digitalen Signalprozessor usw. enthalten. Darüber hinaus kann der Prozessor 1120 in einer System-on-Chip-Form implementiert werden, indem Prozessorchips mit verschiedenen Funktionen wie ein Anwendungsprozessor (AP) kombiniert werden.
  • Das Speichermodul 1130 kann über den Steckplatz 1140 der Hauptplatine 1110 auf der Hauptplatine 1110 montiert werden. Das Speichermodul 1130 kann elektrisch mit der Verdrahtung 1150 der Hauptplatine 1110 über den Steckplatz 1140 und die in einem Modulsubstrat des Speichermoduls 1130 ausgebildeten Modulpins verbunden werden. Das Speichermodul 1130 kann ein ungepuffertes Dual-Inline-Speichermodul (UDIMM), ein Dual-Inline-Speichermodul (DIMM), ein registriertes Dual-Inline-Speichermodul (RDIMM), ein lastreduziertes Dual-Inline-Speichermodul (LRDIMM), ein Dual-Inline-Speichermodul mit kleiner Kontur (SODIMM), ein nichtflüchtiges Dual-Inline-Speichermodul (NVDIMM) usw. enthalten.
  • Die in 1 dargestellte Speichervorrichtung 200 kann als Speichermodul 1130 eingesetzt werden. Das Speichermodul 1130 kann eine Vielzahl von Speichervorrichtungen 1131 enthalten. Jede der Vielzahl von Speichervorrichtungen 1131 kann eine flüchtige Speichervorrichtung oder eine nichtflüchtige Speichervorrichtung enthalten. Die flüchtige Speichervorrichtung kann ein SRAM, ein DRAM, ein SDRAM oder ähnliches enthalten. Die nichtflüchtige Speichervorrichtung kann ein ROM, ein PROM, ein EEPROM, ein EPROM, einen Flash-Speicher, ein PRAM, ein MRAM, ein RRAM, ein FRAM oder ähnliches enthalten.
  • Die erste Speichervorrichtung 210 der in 1 dargestellten Speichervorrichtung 200 kann als Speichervorrichtung 1131 einschließlich der nichtflüchtigen Speichervorrichtung verwendet werden. Darüber hinaus kann die Speichervorrichtung 1131 eine Stapelspeichervorrichtung oder ein durch Stapeln einer Vielzahl von Chips gebildetes Multi-Chip-Paket enthalten.
  • 13 zeigt ein System 2000 gemäß einer Ausführungsform. In 13 kann das System 2000 einen Prozessor 2010, einen Speicher-Controller 2020 und eine Speichervorrichtung 2030 enthalten. Der Prozessor 2010 kann über einen Chipsatz 2040 elektrisch mit dem Speicher-Controller 2020 gekoppelt sein. Der Speicher-Controller 2020 kann mit der Speichervorrichtung 2030 über eine Vielzahl von Bussen elektrisch gekoppelt sein. In 13 wird der Prozessor 2010 als ein solcher dargestellt, aber die Ausführungsformen sind nicht darauf beschränkt. In einer anderen Ausführungsform kann der Prozessor 2010 eine Vielzahl von Prozessoren physikalisch oder logisch enthalten.
  • Der Chipsatz 2040 kann einen Kommunikationspfad bereitstellen, auf dem ein Signal zwischen dem Prozessor 2010 und dem Speicher-Controller 2020 übertragen wird. Der Prozessor 2010 kann über den Chipsatz 2040 eine Anforderung und Daten an den Speicher-Controller 2020 übertragen, um eine Rechenoperation durchzuführen und gewünschte Daten ein- und auszugeben.
  • Der Speicher-Controller 2020 kann ein Befehlssignal, ein Adresssignal, ein Taktsignal und Daten über die Vielzahl von Bussen an die Speichervorrichtung 2030 übertragen. Die Speichervorrichtung 2030 kann die Signale vom Speicher-Controller 2020 empfangen, die Daten speichern und die gespeicherten Daten an den Speicher-Controller 2020 ausgeben. Die Speichervorrichtung 2030 kann ein oder mehrere Speichermodule enthalten. Die Speichervorrichtung 200 aus 1 kann wie die Speichervorrichtung 2030 verwendet werden.
  • In 13 kann das System 2000 außerdem einen Input/Output (E/A)-Bus 2110, E/A-Vorrichtungen 2120, 2130 und 2140, einen Festplatten-Controller 2050 und ein Plattenlaufwerk 2160 enthalten. Der Chipsatz 2040 kann elektrisch mit dem E/A-Bus 2110 gekoppelt werden. Der E/A-Bus 2110 kann einen Kommunikationspfad für die Signalübertragung zwischen dem Chipsatz 2040 und den E/A-Vorrichtungen 2120, 2130 und 2140 bereitstellen. Zu den E/A-Vorrichtungen 2120, 2130 und 2140 können die Maus 2120, der Videobildschirm 2130 und die Tastatur 2140 gehören. Der E/A-Bus2110 kann jedes beliebige Kommunikationsprotokoll für die Kommunikation mit den E/A-Vorrichtungen 2120, 2130 und 2140 enthalten. In einer Ausführungsform kann der E/A-Bus 2110 in den Chipsatz 2040 integriert werden.
  • Der Festplatten-Controller 2050 kann elektrisch mit dem Chipsatz 2040 gekoppelt werden. Der Festplatten-Controller 2050 kann einen Kommunikationspfad zwischen dem Chipsatz 2040 und einer oder mehreren Festplatten 2060 bereitstellen. Die Festplatte 2060 kann als externer Datenspeicher verwendet werden, indem sie einen Befehl und Daten speichert. Der Festplatten-Controller 2050 und die Festplatte 2060 können miteinander kommunizieren oder mit dem Chipsatz 2040 unter Verwendung eines beliebigen Kommunikationsprotokolls einschließlich des E/A-Busses 2110 kommunizieren.
  • Obwohl vorstehend verschiedene Ausführungsformen beschrieben wurden, wird denjenigen klar sein, die im Fachgebiet erfahren sind, dass die beschriebenen Ausführungsformen nur als Beispiel dienen. Folglich sollten die Speichervorrichtung mit heterogenen Speichern, das Computersystem einschließlich der Speichervorrichtung und das hier beschriebene Datenverwaltungsverfahren nicht auf der Grundlage der beschriebenen Ausführungsformen eingeschränkt 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
    • KR 1020190105263 [0001]

Claims (20)

  1. Speichersystem, umfassend: eine erste Speichervorrichtung mit einem ersten Speicher, der eine Vielzahl von Zugriffsverwaltungsbereichen und eine erste Zugriffslatenz einschließt, wobei jede der Zugriffsverwaltungsbereiche eine Vielzahl von Seiten einschließt, wobei die erste Speichervorrichtung so konfiguriert ist, um einen Hot Access Verwaltungsbereich mit einer Zugriffszahl zu erfassen, die einen voreingestellten Wert erreicht, aus der Vielzahl von Zugriffsverwaltungsbereichen, und eine oder mehrere Hot Pages zu erfassen, die in dem Hot Access Verwaltungsbereich enthalten sind; und eine zweite Speichervorrichtung mit einer zweiten Zugriffslatenz, die sich von der ersten Zugriffslatenz der ersten Speichervorrichtung unterscheidet, wobei Daten, die in der einen oder den mehreren Hot Pages gespeichert sind, zu der zweiten Speichervorrichtung migriert werden.
  2. Speichersystem nach Anspruch 1, wobei: die erste Speichervorrichtung ferner einen ersten Controller umfasst, der konfiguriert ist, um einen Betrieb des ersten Speichers zu steuern, und wobei der erste Controller umfasst: einen Speicher mit einer Zugriffszähltabelle zum Speichern von Zugriffszahlen der Vielzahl von Zugriffsverwaltungsbereichen und einer Vielzahl von Bitvektoren, die jeweils der Vielzahl von Zugriffsverwaltungsbereichen entsprechen, wobei jeder der Bitvektoren Bits einschließt, die einer Vielzahl von Seiten entsprechen, die in jeder der Vielzahl von Zugriffsverwaltungsbereichen eingeschlossen sind; und einen Zugriffsverwalter, wenn auf eine Seite in einer von der Vielzahl von Zugriffsverwaltungsbereichen zugegriffen wird, der konfiguriert ist, um eine Zugriffszahl eines aufgerufenen Zugriffsverwaltungsbereichs in einem Raum der Zugriffszähltabelle, die dem aufgerufenen Zugriffsverwaltungsbereich entspricht, zu speichern und ein Bit, das einer aufgerufenen Seite entspricht, von Bits eines Bitvektors, welcher dem aufgerufenen Zugriffsverwaltungsbereich entspricht, auf einen Wert zu setzen, der einen festgelegten Zustand anzeigt, wobei die erste Zugriffslatenz länger als die zweite Zugriffslatenz ist.
  3. Speichersystem nach Anspruch 2, wobei der erste Controller konfiguriert ist zum: Prüfen, auf der Grundlage der Zugriffszähltabelle, ob der Hot Access Verwaltungsbereich unter der Vielzahl von Zugriffsverwaltungsbereichen vorhanden ist, wenn ein Hot Access Verwaltungsbereich-Prüfbefehl von einem externen Gerät empfangen wird, und Übertragen eines Ergebnisses des Prüfens an das externe Gerät.
  4. Speichersystem nach Anspruch 3, wobei der erste Controller konfiguriert ist zum: Überprüfen eines Bit-Vektors, der dem Hot Access Verwaltungsbereich entspricht, von der Vielzahl von Bit-Vektoren, wenn der Hot Access Verwaltungsbereich vorhanden ist, Erkennen der einen oder mehreren Hot Pages von Seiten in dem Hot Access-Verwaltungsbereich, korrespondierend zu Bits, die auf den Wert gesetzt sind, der den festgelegten Zustand anzeigt, unter den Bits des Bitvektors, korrespondierend zu dem Hot Access-Verwaltungsbereich, und Übertragen von Informationen, die sich auf die eine oder mehreren Hot Pages beziehen, an das externe Gerät.
  5. Speichersystem nach Anspruch 4, wobei der erste Controller konfiguriert ist, um die in der einen oder den mehreren Hot Pages gespeicherten Daten an die zweite Speichervorrichtung zu übertragen.
  6. Speichersystem nach Anspruch 3, wobei der erste Controller konfiguriert ist, um an das externe Gerät Informationen zu übertragen, die anzeigen, dass der Hot Access Verwaltungsbereich nicht vorhanden ist, wenn der Hot Access Verwaltungsbereich nicht im ersten Speicher vorhanden ist.
  7. Speichersystem nach Anspruch 3, wobei der erste Controller konfiguriert ist, um eine Datenmigrationsoperation zum Austauschen von heißen Daten, die in der einen oder den mehreren Hot Pages gespeichert sind, die in dem Verwaltungsbereich des ersten Speichers für den Hot Access enthalten sind, mit Daten, die in einem zweiten Speicher der zweiten Speichervorrichtung gespeichert sind, durchzuführen, wenn ein Datenmigrationsbefehl von dem externen Gerät empfangen wird.
  8. Speichersystem nach Anspruch 7, wobei: der erste Speicher einen nichtflüchtigen Speicher umfasst, und der zweite Speicher einen flüchtigen Speicher umfasst.
  9. Speichersystem nach Anspruch 8, wobei: der nichtflüchtige Speicher ein Phasenwechsel-RAM (PCRAM) umfasst, und der flüchtige Speicher einen dynamischen Speicher mit wahlfreiem Zugriff (DRAM) umfasst.
  10. Speichersystem nach Anspruch 3, wobei der erste Controller konfiguriert ist, um Werte, die in der Zugriffszähltabelle gespeichert sind, und Werte in der Mehrzahl von Bitvektoren zurückzusetzen, wenn ein Rücksetzbefehl von dem externen Gerät empfangen wird.
  11. Computersystem, umfassend: eine zentrale Verarbeitungseinheit (CPU); und ein Speichersystem, das über einen Systembus elektrisch mit der CPU verbunden ist, wobei die Speichervorrichtung umfasst: eine erste Speichervorrichtung mit einem ersten Speicher, der eine Vielzahl von Zugriffsverwaltungsbereichen und eine erste Zugriffslatenz einschließt, wobei jeder der Zugriffsverwaltungsbereiche eine Vielzahl von Seiten aufweist, wobei die erste Speichervorrichtung so konfiguriert ist, um einen Hot Access Verwaltungsbereich mit einer Zugriffszahl zu erfassen, die einen voreingestellten Wert erreicht, aus der Vielzahl von Zugriffsverwaltungsbereichen, und eine oder mehrere Hot Pages zu erfassen, die in dem Hot Access Verwaltungsbereich enthalten sind; und eine zweite Speichervorrichtung mit einer zweiten Zugriffslatenz, die sich von der ersten Zugriffslatenz der ersten Speichervorrichtung unterscheidet, wobei Daten, die in der einen oder den mehreren Hot Pages gespeichert sind, zu der zweiten Speichervorrichtung migriert werden.
  12. Computersystem nach Anspruch 11, wobei: die erste Speichervorrichtung ferner einen ersten Controller umfasst, der konfiguriert ist, um einen Betrieb des ersten Speichers zu steuern, und wobei der erste Controller umfasst: einen Speicher mit einer Zugriffszähltabelle zum Speichern von Zugriffszahlen der Vielzahl von Zugriffsverwaltungsbereichen und einer Vielzahl von Bitvektoren, die jeweils der Vielzahl von Zugriffsverwaltungsbereichen entsprechen, wobei jeder der Bitvektoren Bits enthält, die einer Vielzahl von Seiten entsprechen, die in jeder der Vielzahl von Zugriffsverwaltungsbereichen enthalten sind; und einen Zugriffsverwalter, wobei, wenn auf eine Seite in einer der Vielzahl von Zugriffsverwaltungsbereichen zugegriffen wird, der Zugriffsverwalter eine Zugriffszahl eines aufgerufenen Zugriffsverwaltungsbereichs in einem Raum der Zugriffszähltabelle speichert, die dem aufgerufenen Zugriffsverwaltungsbereich entspricht, und ein einer aufgerufenen Seite entsprechendes Bit von Bits eines Bitvektors, entsprechend dem aufgerufenen Zugriffsverwaltungsbereich, auf einen Wert setzt, der einen festgelegten Zustand anzeigt, wobei die erste Zugriffslatenz länger als die zweite Zugriffslatenz ist.
  13. Computersystem nach Anspruch 12, wobei der erste Controller konfiguriert ist zum: Prüfen, ob der Hot Access Verwaltungsbereich unter der Vielzahl von Zugriffsverwaltungsbereichen vorhanden ist, basierend auf der Zugriffszähltabelle, wenn ein Hot Access Verwaltungsbereich-Prüfbefehl von der CPU empfangen wird, und Übermitteln eines Ergebnisses des Prüfens an die CPU.
  14. Computersystem nach Anspruch 13, wobei die CPU konfiguriert ist, um bei jedem voreingestellten Zyklus den Hot Access Verwaltungsbereich-Prüfbefehl an die erste Speichervorrichtung zu übertragen, um zu prüfen, ob der Hot Access Verwaltungsbereich im ersten Speicher vorhanden ist.
  15. Datenverwaltungsverfahren für ein Computersystem mit einer zentralen Verarbeitungseinheit (CPU) und ersten und zweiten Speichervorrichtungen, wobei das Verfahren Folgendes umfasst: Übertragen eines Hot Access Verwaltungsbereich-Prüfbefehls durch die CPU an die erste Speichervorrichtung, um zu prüfen, ob ein Hot Access Verwaltungsbereich in einem ersten Speicher der ersten Speichervorrichtung vorhanden ist; Übertragen einer ersten Antwort oder einer zweiten Antwort durch die erste Speichervorrichtung an die CPU, als Antwort auf den Hot Access Verwaltungsbereich-Prüfbefehl, wobei die erste Antwort Informationen in Bezug auf eine oder mehrere Hot Pages in dem Hot Access Verwaltungsbereich enthält und die zweite Antwort anzeigt, dass der Hot Access Verwaltungsbereich nicht im ersten Speicher vorhanden ist; und Übertragen, durch die CPU, eines Datenmigrationsbefehls zum Austauschen von heißen Daten, die in der einen oder den mehreren Hot Pages des ersten Speichers gespeichert sind, mit kalten Daten in einem zweiten Speicher der zweiten Speichervorrichtung, an die ersten und zweiten Speichervorrichtungen, wenn die erste Antwort von der ersten Speichervorrichtung empfangen wird, wobei die erste Speichervorrichtung eine längere Zugriffslatenz als die zweite Speichervorrichtung hat.
  16. Datenverwaltungsverfahren nach Anspruch 15, wobei das Übertragen des Hot Access Verwaltungsbereich-Prüfbefehls an die erste Speichervorrichtung in jedem voreingestellten Zyklus durchgeführt wird.
  17. Datenverwaltungsverfahren nach Anspruch 15, ferner umfassend, nach dem Übertragen des Datenmigrationsbefehls an die Speichervorrichtung: Lesen, durch die zweite Speichervorrichtung, der kalten Daten von einer Cold Page des zweiten Speichers und vorübergehendes Speichern der kalten Daten in einem Pufferspeicher; Lesen, durch die erste Speichervorrichtung, der heißen Daten von der einen oder den mehreren Hot Pages des ersten Speichers und Übertragen der heißen Daten an den zweiten Speicher; Speichern, durch die zweite Speichervorrichtung, der von der ersten Speichervorrichtung empfangenen heißen Daten in der Cold Page des zweiten Speichers; Übertragen, durch die zweite Speichervorrichtung, der kalten Daten, die vorübergehend im Pufferspeicher gespeichert sind, an die erste Speichervorrichtung; und Speichern, durch die erste Speichervorrichtung, der von der zweiten Speichervorrichtung empfangenen kalten Daten in der einen oder den mehreren Hot Pages des ersten Speichers.
  18. Datenverwaltungsverfahren nach Anspruch 15, ferner umfassend, nach dem Übertragen des Hot Access Verwaltungsbereich-Prüfbefehls an die erste Speichervorrichtung, Überprüfen, durch die erste Speichervorrichtung, einer Zugriffszahl von jeder von einer Vielzahl von Zugriffsverwaltungsbereichen im ersten Speicher; Bestimmen, durch die erste Speichervorrichtung, ob der Hot Access Verwaltungsbereich mit einer Zugriffszahl, die einen voreingestellten Wert erreicht, in der Vielzahl von Zugriffsverwaltungsbereichen vorhanden ist; und Erkennen, durch die erste Speichervorrichtung, der einen oder der mehreren Seiten, korrespondierend zu Bits, welche auf einen Wert gesetzt sind, der einen festgelegten Zustand unter den Bits eines Bitvektors anzeigt, korrespondierend zu dem Hot Access Verwaltungsbereich.
  19. Speichervorrichtung, umfassend: einen nichtflüchtigen Speicher; und einen Controller, der konfiguriert ist, um einen Betrieb des nichtflüchtigen Speichers zu steuern, wobei der Controller konfiguriert ist, um den nichtflüchtigen Speicher in eine Vielzahl von Zugriffsverwaltungsbereiche zu unterteilen, von denen jeder eine Vielzahl von Seiten umfasst, um eine Zugriffszähltabelle zum Speichern einer Zugriffszahl jeder der Vielzahl von Zugriffsverwaltungsbereichen und einer Vielzahl von Bitvektoren zu enthalten, die mit Bits entsprechend einer Vielzahl von Seiten konfiguriert sind, die in jeder der Vielzahl von Zugriffsverwaltungsbereichen enthalten sind, um eine Zugriffszahl eines aufgerufenen Zugriffsverwaltungsbereichs der Vielzahl von Zugriffsverwaltungsbereiche in einem Raum der Zugriffszähltabelle zu speichern, der dem aufgerufenen Zugriffsverwaltungsbereich entspricht, wenn auf den nichtflüchtigen Speicher zugegriffen wird, und um, als einen ersten Wert, ein Bit, das einer aufgerufenen Seite entspricht, von Bits eines Bitvektors festzulegen, das dem aufgerufenen Zugriffsverwaltungsbereich entspricht.
  20. Speichervorrichtung nach Anspruch 19, ferner umfassend einen flüchtigen Speicher, wobei der Controller konfiguriert ist, um zu dem flüchtigen Speicher Daten zu migrieren, die in einer oder mehreren Seiten gespeichert sind, die einem oder mehreren Bits entsprechen, welche den ersten Wert in einem Bitvektor aufweisen, wobei der Bitvektor einem Zugriffsverwaltungsbereich entspricht, der eine Zugriffszahl aufweist, die einen voreingestellten Wert unter der Vielzahl von Zugriffsverwaltungsbereichen in dem nichtflüchtigen Speicher erreicht.
DE102020117350.4A 2019-08-27 2020-07-01 Speichersystem einschliesslich heterogener speicher, computersystem mit dem speichersystem und datenverwaltungsverfahren dafür Pending DE102020117350A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020190105263A KR20210025344A (ko) 2019-08-27 2019-08-27 이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템, 그것의 데이터 관리 방법
KR10-2019-0105263 2019-08-27

Publications (1)

Publication Number Publication Date
DE102020117350A1 true DE102020117350A1 (de) 2021-03-04

Family

ID=74565037

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020117350.4A Pending DE102020117350A1 (de) 2019-08-27 2020-07-01 Speichersystem einschliesslich heterogener speicher, computersystem mit dem speichersystem und datenverwaltungsverfahren dafür

Country Status (5)

Country Link
US (2) US20210064535A1 (de)
JP (1) JP2021034052A (de)
KR (1) KR20210025344A (de)
CN (1) CN112445423A (de)
DE (1) DE102020117350A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220005285A (ko) * 2020-07-06 2022-01-13 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
US11537306B2 (en) * 2021-03-12 2022-12-27 Micron Technology, Inc. Cold data detector in memory system
KR20230059909A (ko) * 2021-10-26 2023-05-04 삼성전자주식회사 스토리지 컨트롤러, 스토리지 장치 및 스토리지 장치의 동작 방법
KR20230139248A (ko) 2022-03-25 2023-10-05 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그것을 포함하는 메모리 시스템
US11853572B2 (en) 2022-05-05 2023-12-26 Western Digital Technologies, Inc. Encoding-aware data routing

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100855467B1 (ko) * 2006-09-27 2008-09-01 삼성전자주식회사 이종 셀 타입을 지원하는 비휘발성 메모리를 위한 맵핑장치 및 방법
KR20130070178A (ko) * 2011-12-19 2013-06-27 한국전자통신연구원 하이브리드 저장 장치 및 그것의 동작 방법
US20130238832A1 (en) * 2012-03-07 2013-09-12 Netapp, Inc. Deduplicating hybrid storage aggregate
US20150058520A1 (en) * 2013-08-22 2015-02-26 International Business Machines Corporation Detection of hot pages for partition migration
US10162748B2 (en) * 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
KR20160143259A (ko) * 2015-06-05 2016-12-14 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
KR102403266B1 (ko) * 2015-06-22 2022-05-27 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10089014B2 (en) * 2016-09-22 2018-10-02 Advanced Micro Devices, Inc. Memory-sampling based migrating page cache
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
CN108804350B (zh) * 2017-04-27 2020-02-21 华为技术有限公司 一种内存访问方法及计算机***

Also Published As

Publication number Publication date
JP2021034052A (ja) 2021-03-01
KR20210025344A (ko) 2021-03-09
US20220245066A1 (en) 2022-08-04
CN112445423A (zh) 2021-03-05
US20210064535A1 (en) 2021-03-04

Similar Documents

Publication Publication Date Title
DE102020117350A1 (de) Speichersystem einschliesslich heterogener speicher, computersystem mit dem speichersystem und datenverwaltungsverfahren dafür
DE102011076894B4 (de) Persistenter Speicher für einen Hauptspeicher eines Prozessors
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
DE102020132764A1 (de) Solid-state-drive mit externer softwareausführung zum bewirken von internen operationen des solid-state-drive
US20130091331A1 (en) Methods, apparatus, and articles of manufacture to manage memory
US11042305B2 (en) Memory system and method for controlling nonvolatile memory
DE202010017667U1 (de) Datenspeichervorrichtung mit Flash-Speicherchips
DE102008036822A1 (de) Verfahren zum Speichern von Daten in einem Solid-State-Speicher, Solid-State-Speichersystem und Computersystem
DE102013017510A1 (de) Effiziente Speichervirtualisierung in mehrsträngigen Verarbeitungseinheiten
DE102018123669A1 (de) Host-Computer-Anordnung, Remote-Server-Anordnung, Speicherungssystem und Verfahren davon
CN103218312A (zh) 文件访问方法及***
EP3534265A1 (de) Speicherzugriffstechnik
EP2919120B1 (de) Speicherüberwachungsverfahren und zugehörige vorrichtung
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE112017001658T5 (de) Behandlung von fehleranfälligen Cache-Zeilen-Slots eines speicherseitigen Caches eines Multilevel-Systemspeichers
KR101061483B1 (ko) 메모리 회로 및 메모리 회로의 엑세스 방법, 메모리 관리 시스템 및 메모리 관리방법
US20230273750A1 (en) Memory system and method of controlling nonvolatile memory with checking a total size indicative of a sum of data length specified by a write command
DE102020211544A1 (de) Steuerung, betriebsverfahren der steuerung und speichergerät mit derselben
WO2024036985A1 (zh) 存储***及其计算存储处理器、固体硬盘和数据读写方法
DE112020005044T5 (de) Zonenanhang-befehlsplanung basierend auf zonenzustand
US20190042415A1 (en) Storage model for a computer system having persistent system memory
CN115904212A (zh) 数据处理的方法、装置、处理器和混合内存***
US20090083496A1 (en) Method for Improved Performance With New Buffers on NUMA Systems
US9128856B2 (en) Selective cache fills in response to write misses
DE112016007538T5 (de) Technologie zur realisierung eines binärverzweigten non-volatile-memory-express-treibers