JP2021034052A - 異種メモリを有するメモリシステム、これを含むコンピュータシステム及びそのデータ管理方法 - Google Patents
異種メモリを有するメモリシステム、これを含むコンピュータシステム及びそのデータ管理方法 Download PDFInfo
- Publication number
- JP2021034052A JP2021034052A JP2020139917A JP2020139917A JP2021034052A JP 2021034052 A JP2021034052 A JP 2021034052A JP 2020139917 A JP2020139917 A JP 2020139917A JP 2020139917 A JP2020139917 A JP 2020139917A JP 2021034052 A JP2021034052 A JP 2021034052A
- Authority
- JP
- Japan
- Prior art keywords
- memory
- access
- hot
- memory device
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1694—Configuration of memory controller to different memory types
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3409—Recording 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/3433—Recording 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
- G06F11/3471—Address tracing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/0623—Address space extension for memory modules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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/0871—Allocation or management of cache space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1657—Access to multiple memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/205—Hybrid memory, e.g. using both volatile and non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, 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
【課題】動作性能の向上が可能な異種メモリを有するメモリ装置(又はメモリシステム)、それを含むコンピュータシステム及びそのデータ管理方法を提供する。【解決手段】コンピュータシステム10が備えるメモリ装置200は、複数のアクセス管理領域を含む第1のメモリ及び第1のアクセスレイテンシを有する第1のメモリ装置210と、第1のメモリ装置の第1のアクセスレイテンシと異なる第2のアクセスレイテンシを有する第2のメモリ装置250とを含む。第1のメモリの複数のアクセス管理領域の各々は、複数のページを含む。第1のメモリ装置は、複数のアクセス管理領域のうち、設定の値に到達したアクセス回数を有するホットアクセス管理領域を検出し、ホットアクセス管理領域に含まれた一つ又はそれ以上のホットページを検出する。一つ又はそれ以上のホットページに保存されたデータは、第2のメモリ装置に移動される。【選択図】図1
Description
本発明は、コンピュータシステムに関し、より詳細には異種メモリを有するメモリ装置(又はメモリシステム)、これを含むコンピュータシステム及びそのデータ管理方法に関する。
コンピュータシステムは、多様な形態のメモリ装置を含むことができる。メモリ装置は、データを保存するためのメモリ及びメモリの動作を制御するメモリコントローラを含む。メモリは、DRAM(dynamic random access memory)やSRAM(static random access memory)などのような揮発性(volatile)メモリと、EEPROM(Electrically Erasable Programmable ROM)やFRAM(登録商標)(Ferroelectric RAM)やPCRAM(Phase change Random Access Memory)やMRAM(Magnetic RAM)やフラッシュメモリ(Flash Memory)などのような不揮発性(non-volatile)メモリとを含むことができる。揮発性メモリに保存されたデータが電源供給の中断時に消滅されるのに対し、不揮発性メモリに保存されたデータは電源供給の中断時にも消滅されない。最近は、このような異種のメモリを搭載したメモリ装置が開発されている。
また、揮発性メモリは動作速度が速いのに対し、不揮発性メモリは動作速度が相対的に遅い。よって、メモリシステムの性能向上のために、頻繁にアクセスされるデータ(例えば、ホットデータ)は揮発性メモリに保存し、頻繁にアクセスされないデータ(例えば、コールドデータ)は不揮発性メモリに保存する必要がある。
本発明は、動作性能の向上が可能な異種メモリを有するメモリ装置(又はメモリシステム)、それを含むコンピュータシステム及びそのデータ管理方法を提供する。
本発明の実施例に係るメモリシステムは、複数のアクセス管理領域を含む第1のメモリ及び第1のアクセスレイテンシ(access latency)を有する第1のメモリ装置と、前記第1のメモリ装置の第1のアクセスレイテンシと異なる第2のアクセスレイテンシを有する第2のメモリ装置とを含む。第1のメモリの複数のアクセス管理領域の各々は複数のページを含み、第1のメモリ装置は前記複数のアクセス管理領域のうち、設定の値に到達したアクセス回数を有するホットアクセス管理領域を検出し、前記ホットアクセス管理領域に含まれた一つ又はそれ以上のホットページを検出するように構成される。一つ又はそれ以上のホットページに保存されたデータが前記第2のメモリ装置に移動する。
本発明の実施例に係るコンピュータシステムは、中央処理装置(central processing unit;CPU);及び、前記中央処理装置とシステムバスを介して連結したメモリシステムを含む。前記メモリシステムは、複数のアクセス管理領域を含む第1のメモリ及び第1のアクセスレイテンシを有する第1のメモリ装置と、前記第1のメモリ装置の第1のアクセスレイテンシと異なる第2のアクセスレイテンシを有する第2のメモリ装置とを含む。第1のメモリの複数のアクセス管理領域の各々は複数のページを含み、第1のメモリ装置は前記複数のアクセス管理領域のうち、設定の値に到達したアクセス回数を有するホットアクセス管理領域を検出し、前記ホットアクセス管理領域に含まれた一つ又はそれ以上のホットページを検出するように構成される。一つ又はそれ以上のホットページに保存されたデータが前記第2のメモリ装置に移動する。
本発明の実施例に係るコンピュータシステムのデータ管理方法は、中央処理装置(CPU)が、第1のメモリ装置の第1のメモリ内にホットアクセス管理領域が存在するか否かを確認するためのホットアクセス管理領域確認命令を前記第1のメモリ装置に転送するステップ;前記第1のメモリ装置が、前記ホットアクセス管理領域確認命令に応じて、前記ホットアクセス管理領域内の一つ又はそれ以上のホットページに関連した情報を含む第1の応答、又は、前記第1のメモリ内に前記ホットアクセス管理領域が存在しないことを示す第2の応答を前記中央処理装置に転送するステップ;及び、前記第1のメモリ装置から前記第1の応答が受信されると、前記中央処理装置(CPU)が、前記第1のメモリの前記一つ又はそれ以上のホットページに保存されたホットデータを、前記第2のメモリ装置の第2のメモリ内のコールドデータと交換するためのデータ移動(data migration)の命令を前記第1及び第2のメモリ装置に転送するステップを含む。前記第1のメモリ装置は前記第2のメモリ装置より長いアクセスレイテンシを有する。
本発明の実施例に係るメモリ割り当て方法は、中央処理装置(CPU)がページ割り当て要請及び仮想住所を受信するステップ;前記中央処理装置が前記受信された仮想住所に対応する物理住所に対するホットページ検出履歴を確認するステップ;確認結果に応じて前記受信された仮想住所に対応するページを前記第1のメモリ装置の第1のメモリ及び前記第2のメモリ装置の第2のメモリに割り当てるステップを含む。
本発明の実施例に係るメモリ装置は、不揮発性メモリ及び前記不揮発性メモリの動作を制御するコントローラを含む。前記コントローラは、前記不揮発性メモリを各々複数のページを含む複数のアクセス管理領域に区分する。前記コントローラは、前記複数のアクセス管理領域の各々に対するアクセス回数を保存するアクセス回数テーブルと、前記複数のアクセス管理領域の各々に含まれた前記複数のページに対応するビットからなる複数のビットベクトルとを含む。前記コントローラは、前記不揮発性メモリがアクセスされると、前記複数のアクセス管理領域のうち、アクセスされたアクセス管理領域に対応する前記アクセス回数テーブルの空間に前記アクセスされたアクセス管理領域のアクセス回数を保存し、前記アクセスされたアクセス管理領域に対応するビットベクトルのビットのうち、アクセスされたページに対応するビットを第1の値に設定する。
本実施例によれば、メモリ装置から直接アクセス回数が高いホットページを検出することで、実質的に有効な(又は有意味な)ホットデータを動作速度の速いメモリに移動させることができるので、システム全体の動作性能を向上させることができる。
また、本実施例によれば、ホットページ検出履歴によって動作速度が速いメモリ又は動作速度が遅いメモリにページを割り当てることで、データ移動を減少させ、動作速度が速いメモリへのアクセスを増加させ、システムの全体性能を向上させることができる。
以下、添付図面に基づき、本発明の好適な実施例を詳細に説明する。
図1は、本発明の実施例に係るコンピュータシステム10を示す図である。
本実施例に係るコンピュータシステム10は、例えば、メインフレームコンピュータ、サーバーコンピュータ、パーソナルコンピュータ、モバイル機器、及びプログラム可能な家電製品などのような汎用或いは特殊な目的のコンピュータシステムであり得る。
図1に示すように、コンピュータシステム10は、システムバス500に電気的に連結している中央処理装置(central processing unit、CPU)100、メモリ装置200、ストレージ300及び入出力インターフェース400を含む。一実施例によれば、コンピュータシステム10は、CPU100に連結しているキャッシュ(cache)150をさらに含むことができる。
CPU100は商用利用可な多様なプロセッサであり、例えば、AMD(登録商標) Athlon(登録商標)、Duron(登録商標)及びOpteron(登録商標)プロセッサ;ARM(登録商標)アプリケーション、組み込み及び保安プロセッサ;IBM(登録商標)とMotorola(登録商標) ドラゴンボール(登録商標)及びパワーPC(登録商標)プロセッサ;IBM(登録商標)とSony(登録商標)セルプロセッサ;Intel(登録商標) Celeron(登録商標)、Core(2)Duo(登録商標)、 Core i3、 Core i5、 Core i7、Itanium(登録商標)、Pentium(登録商標)、Xeon(登録商標)、XScale(登録商標)プロセッサ;及び類似なプロセッサを無限に含むことができる。デュアルマイクロプロセッサ、マルチ−コアプロセッサ、及び他のマルチ−プロセッサアーキテクチャがCPU100として採択され得る。
CPU100は、メモリ装置200(又はメモリシステム)に保存されたプログラム及び/又はデータの処理又は実行が可能である。例えば、CPU100は、クロック信号発生器(図示せず)により提供されたクロック信号に応じて前記プログラム及び/又は前記データの処理又は実行が可能である。
また、CPU100は、キャッシュ150及びメモリ装置200をアクセス(access)するように構成できる。例えば、CPU100はデータをメモリ装置200に保存できる。メモリ装置200に保存されるデータは、ストレージ300から読み出されたデータ、或いは、入出力インターフェース400を介して入力されたデータであり得る。また、CPU100は、キャッシュ150及びメモリ装置200に保存されたデータを読み出すむことができる。
一方、CPU100は、メモリ装置200に保存されたデータに基づいて多様な動作が遂行できる。例えば、CPU100は、メモリ装置200に含まれた第1のメモリ装置210及び第2のメモリ装置250間でデータ移動を遂行するための命令をメモリ装置200に提供できる。
キャッシュ150は、相対的に動作速度が速い装置及び相対的に動作速度が遅い装置間の動作速度の差によるボトルネック(bottleneck)現象を低減するための汎用メモリである。即ち、キャッシュ150は、相対的に高速に動作するCPU100及び相対的に低速に動作するメモリ装置200間のデータのボトルネック現象を緩和させる。キャッシュ150は、メモリ装置200に保存されたデータのうち、CPU100がよくアクセスするデータをキャッシングすることができる。
図1には示していないが、キャッシュ150は複数のキャッシュを含むことができる。例えば、キャッシュ150はL1キャッシュやL2キャッシュなどを含むことができる。ここで、‘L’はレベルを意味する。一般に、L1キャッシュは、CPU100内に内蔵され、データの参照及び使用に優先的に用いられる。L1キャッシュは、キャッシュ150に含まれたキャッシュのうち、動作速度が 最も速いが、保存容量は小さいことがある。L1キャッシュにターゲットデータが存在しないと(例えば、キャッシュミス)、CPU100はL2キャッシュがアクセスできる。L2キャッシュは、L1キャッシュより相対的に動作速度が遅いが、保存容量は大きいことがある。L2キャッシュにターゲットデータが存在しないと、CPU100はメモリ装置200をアクセスする。
メモリ装置200は、第1のメモリ装置210及び第2のメモリ装置250を含むことができる。第1のメモリ装置210及び第2のメモリ装置250は、互いに異なる構造を持つことができる。例示的に、第1のメモリ装置210は、不揮発性メモリ(non-volatile memory、NVM)及び不揮発性メモリを制御するコントローラを含み、第2のメモリ装置250は、揮発性メモリ(volatile memory、VM)及び揮発性メモリを制御するコントローラを含むことができる。例えば、揮発性メモリはDRAM(dynamic random access memory)であり、不揮発性メモリはPCRAM(phase change RAM)であるが、これに限定されるものではない。
コンピュータシステム10は、メモリ装置200にデータを短期的且つ一時的に保存できる。また、メモリ装置200は、ファイルシステム形式のデータを保存したり、読み出し専用空間を別に置いて運営体制プログラムを保存したりすることができる。一方、CPU100が応用プログラムを実行する際、応用プログラムの少なくとも一部はストレージ300から読み出されてメモリ装置200にロードできる。メモリ装置200については以後図に基づいて詳細に説明する。
ストレージ300は、ハードディスクドライブ(以下、HDD)及びSSD(solid state drive)の一つを含むことができる。ストレージは、コンピュータシステム10が使用者データを長期間に保存するための大容量保存媒体である。ストレージ300には、運営システム(Operation System、OS)や応用プログラム(application program)やプログラムデータ(program data)などが保存できる。
入出力インターフェース400は、入力インターフェース及び出力インターフェースとして含むことができる。入力インターフェースは外部入力装置と連結することができる。一実施例によれば、外部入力装置は、キーボード(keyboard)、マウス(Mouse)、マイク(Mike)及びスキャナー(Scanner)などであり得る。使用者は、外部入力装置を介して命令、データ及び情報をコンピュータシステム10に入力できる。
出力インターフェースは、外部出力装置と連結することができる。一実施例によれば、外部出力装置は、モニタ(Monitor)、プリンタ(Printer)及びスピーカ(Speaker)などであり得る。使用者の命令に対するコンピュータシステム10の実行及び処理の結果は、外部出力装置により表現される。
図2は、図1のメモリ装置200を示す図である。図2に示すように、メモリ装置200は、第1のメモリ230、例えば、不揮発性メモリを含む第1のメモリ装置210と、第2のメモリ270、例えば、揮発性メモリを含む第2のメモリ装置250とを含むことができる。第1のメモリ装置210は第2のメモリ装置250より動作速度が遅いが、保存容量は大きいことがある。動作速度は書き込み速度及び読み出し速度を含むことができる。
前述したように、キャッシュ150においてキャッシュミスが発生した場合、CPU100はメモリ装置200をアクセスしてターゲットデータを検索する。第2のメモリ装置250が第1のメモリ装置210より動作速度が速いので、CPU100が検索するターゲットデータが第2のメモリ装置250に保存された場合、第1のメモリ装置210に保存された場合より速くアクセスできる。
このために、CPU100は、第1のメモリ装置210に保存され、相対的にアクセス回数が多いデータ(以下、‘ホットデータ’という)を第2のメモリ装置250に移動させ、第2のメモリ装置250に保存され、相対的にアクセス回数が少ないデータ(以下、‘コールドデータ’という)を第1のメモリ装置210に移動させるようにメモリ装置200が制御できる。
このとき、CPU100で第1のメモリ装置210に対してページ単位にアクセス回数を管理する場合、CPU100で判断したホットデータ及びコールドデータは、第1のメモリ装置210に保存された実際のホットデータ及びコールドデータと異なることがある。これは、外部装置からCPU100に受信されるアクセス要請のうち、大部分はキャッシュ150でヒットされ、メモリ装置200へのアクセスは極めて一部に過ぎず、CPU100ではアクセスされたデータがキャッシュ150に保存されたものか、または、メモリ装置200に保存されたものかを正確に判断出来ないためである。
これにより、本実施例では、メモリ装置200の第1のメモリ装置210がCPU100の要請(又は命令)により、第1のメモリ230内にホットページが含まれたホットアクセス管理領域が存在するか否かを確認し、ホットアクセス管理領域内で一つ又はそれ以上のホットページを検出し、検出された一つ又はそれ以上のホットページに関連した情報(例えば、住所)をCPU100に提供する。CPU100は、第1のメモリ装置210から提供された情報に基づき、第1のメモリ装置210及び第2のメモリ装置250間のデータ移動を遂行するようにメモリ装置200を制御する。このとき、第1のメモリ装置210及び第2のメモリ装置250間のデータ移動は、第1のメモリ230内のホットページに保存されたホットデータと、第2のメモリ270内のコールドページに保存されたコールドデータとを交換する動作であり得る。このための具体的な構成及び方法は、以後図面に基づいて詳細に説明する。
また、図2を参照すれば、第1のメモリ装置210は、第1のコントローラ220及び第1のメモリ230を含むことができる。また、第2のメモリ装置250は、第2のコントローラ260及び第2のメモリ270を含むことができる。図2では図面の簡略化のために、第1のメモリ230及び第2のメモリ270を各々一つのメモリブロック又はチップとして示したが、第1のメモリ230及び第2のメモリ270は、各々複数のメモリブロック又は複数のメモリチップを含むこともできる。
第1のメモリ装置210の第1のコントローラ220は第1のメモリ230の動作が制御できる。第1のコントローラ220は、CPU100から受信された命令に対応する動作を遂行するように第1のメモリ230が制御できる。
図3は、本発明の実施例に係る第1のメモリ230に含まれたページが複数のアクセス管理領域にグループした例を示す図である。
図3に示すように、第1のコントローラ220は、第1のメモリ230のページを含むデータ保存領域を複数の領域REGION1〜REGIONn(nは正の整数である)としてグループ化できる。複数の領域REGION1〜REGIONnは、各々複数のページPage1〜Pagek(kは正の整数である)を含むことができる。以後では複数の領域REGION1〜REGIONnを各々‘アクセス管理領域’という。
第1のコントローラ220は、アクセス管理領域REGION1〜REGIONnの各々に対するアクセス回数が管理できる。第1のコントローラ220が第1のメモリ230に対するアクセス回数をページ単位に管理せず、ページ単位より大きいアクセス管理領域単位に管理することは、第1のメモリ230の保存容量は非常に大きいので、ページ単位にアクセス回数を管理する場合、各ページのアクセス回数を保存するためのストレージオーバーヘッド(storage overhead)が増加するためである。本実施例では、ストレージオーバーヘッドの増加を防止するために、ページ単位より大きいアクセス管理領域単位にアクセス回数をカウントする。
また、第1のコントローラ220は、アクセス管理領域REGION1〜REGIONnの各々のアクセス回数に基づき、ホットページが含まれたホットアクセス管理領域が第1のメモリ230に存在するか否かが判断できる。例えば、第1のコントローラ220は、第1のメモリ230のアクセス管理領域REGION1〜REGIONnのうち、アクセス回数が既設定の値に到達したアクセス管理領域をホットアクセス管理領域として判断できる。また、第1のコントローラ220は、ホットアクセス管理領域のページのうち、アクセスされたページを検出し、検出されたページをホットページとして判断できる。例えば、第1のコントローラ220は、ホットアクセス管理領域に対応するビットベクトルを用いてホットページが検出できる。
第1のコントローラ220がホットアクセス管理領域の存在の可否を判断し、ホットアクセス管理領域内のホットページを検出することについては、以後図面に基づいて詳細に説明する。
第1のメモリ230は、複数のメモリセルからなるメモリセルアレイ(図示せず)、メモリセルアレイにデータを書き込んだり、或いは、メモリセルアレイからデータを読み出すための周辺回路(図示せず)、及び周辺回路の動作を制御するための制御ロジック(図示せず)などを含むことができる。第1のメモリ230は不揮発性メモリであり得る。例えば、第1のメモリ230は、PCRAMからなることができるが、これに限定されず、多様な不揮発性メモリからなることができる。
第2のメモリ装置250の第2のコントローラ260は、第2のメモリ270の動作が制御できる。第2のコントローラ260は、CPU100から受信された命令に対応する動作を遂行するように第2のメモリ270が制御できる。第2のメモリ270は、第2のコントローラ260から提供された命令により、メモリセルアレイ(図示せず)にデータを書き込んだり、或いは、メモリセルアレイからデータを読み出す動作が遂行できる。
第2のメモリ270は、複数のメモリセルからなるメモリセルアレイ、メモリセルアレイにデータを書き込んだり、或いは、メモリセルアレイからデータを読み出すための周辺回路(図示せず)、及び周辺回路の動作を制御するための制御ロジック(図示せず)などを含むことができる。
第2のメモリ270は揮発性メモリであり得る。例えば、第2のメモリ270はDRAMからなることができるが、これに限定されず、多様な揮発性メモリからなることができる。
第1のメモリ装置210は、第2のメモリ装置250より長いアクセスレイテンシを有することができる。ここで、アクセスレイテンシは、メモリ装置がCPU100から命令を受信した時点から、メモリ装置が受信の命令に対応する応答(response)をCPU100に転送する時点までの時間を意味する。また、第1のメモリ装置210は、第2のメモリ装置250より大きい単位時間当り電力消耗量を有することができる。
図4aは、本発明の実施例に係る第1のメモリ装置210の第1のコントローラ220を示す図である。
図4aに示すように、第1のコントローラ220Aは、第1のインターフェース221、メモリコア222、アクセスマネージャー223、メモリ224及び第2のインターフェース225を含むことができる。
第1のインターフェース221は、システムバス500(図1)を介してCPU100から転送される命令などを受信したり、或いは、CPU100にデータなどが転送できる。
メモリコア222は、第1のコントローラ220Aの全ての動作が制御できる。メモリコア222は、マイクロコントロールユニット(micro control unit;MCU)や中央処理装置(CPU)からなることができる。メモリコア222はCPU100から提供された命令が処理できる。CPU100から提供された命令を処理するために、メモリコア222は、コード形態の命令(instruction)又はアルゴリズム、すなわち、ファームウエアを実行させ、第1のインターフェース221、アクセスマネージャー223、メモリ224及び第2のインターフェース225などのような第1のコントローラ220Aの内部構成等と、第1のメモリ230とが制御できる。
メモリコア222は、CPU100から提供された命令に基づき、第1のメモリ230の動作を制御するための制御信号を生成し、生成された制御信号を第2のインターフェース225を介して第1のメモリ230に提供できる。
メモリコア222は、第1のメモリ230のデータ保存領域の全体を、複数のページを含む複数のアクセス管理領域にグループ化できる。メモリコア222は、アクセスマネージャー223を用いて、第1のメモリ230のアクセス管理領域の各々に対するアクセス回数が管理できる。また、メモリコア222は、アクセスマネージャー223を用いて、第1のメモリ230のアクセス管理領域の各々に含まれたページに関するアクセス情報が管理できる。
アクセスマネージャー223は、メモリコア222の制御により、第1のメモリ230のアクセス管理領域の各々に対するアクセス回数が管理できる。例えば、第1のメモリ230のページがアクセスされると、アクセスマネージャー223は、アクセスされたページを含むアクセス管理領域に対応するアクセス回数を増加させることができる。また、アクセスマネージャー223は、アクセスされたページを含むアクセス管理領域に対応するビットベクトルのビットのうち、アクセスされたページに対応するビットを‘セット(set)状態’を示す値に設定できる。
メモリ224は、第1のメモリ230のアクセス管理領域の各々に対するアクセス回数を保存するために構成されたアクセス回数テーブル(ACT)を含むことができる。また、メモリ224は、第1のメモリ230のアクセス管理領域の各々に対応するビットベクトルからなるアクセスページビットベクトル(APBV)を含むことができる。メモリ224は、SRAM及びDRAMなどを含むことができるが、これに限定されるものではない。
第2のインターフェース225は、メモリコア222の制御により第1のメモリ230が制御できる。第2のインターフェース225は、メモリコア222により生成された制御信号を第1のメモリ230に提供できる。制御信号は、第1のメモリ230の動作を制御するためのコマンド、アドレス及び動作信号などを含むことができる。第2のインターフェース225は、書き込みデータを第1のメモリ230に提供したり、第1のメモリ230から読み出しデータを受信したりすることができる。
第1のコントローラ220の第1のインターフェース221、メモリコア222、アクセスマネージャー223、メモリ224及び第2のインターフェース225は、内部バス227を介して電気的に連結できる。
図4bは、本発明の他の実施例に係る第1のメモリ装置210の第1のコントローラ220Bを示す図である。図4bを参照して本実施例に係る第1のコントローラ220Bを説明する際、図4aに示す第1のコントローラ220Aと同一の構成に関する説明は省略する。
図4bに示すように、第1のコントローラ220Bは、メモリコア222内に含まれたアクセス管理ロジック228を含むことができる。アクセス管理ロジック228は、ソフトウェア、ハードウェア又はそれらの組合からなることができる。アクセス管理ロジック228は、メモリコア222の制御により、第1のメモリ230のアクセス管理領域の各々に対するアクセス回数が管理できる。例えば、第1のメモリ230のページがアクセスされると、アクセス管理ロジック228は、アクセスされたページを含むアクセス管理領域に対応するアクセス回数を増加させることができる。また、アクセス管理ロジック228は、アクセスされたページを含むアクセス管理領域に対応するビットベクトルのビットのうち、アクセスされたページに対応するビットを‘セット(set)状態’を示す値に設定できる。
図5aは、本発明の実施例に係るアクセス回数テーブル(ACT)を示す図である。
図5aに示すように、アクセス回数テーブル(ACT)は、第1のメモリ230のアクセス管理領域REGION1〜REGIONnの各々に対するアクセス回数を保存する空間からなることができる。第1のコントローラ220A、220Bのアクセスマネージャー223(又はアクセス管理ロジック228)は、第1のメモリ230のページがアクセスされる毎に、アクセスされたページを含むアクセス管理領域に対応するアクセス回数をアクセス回数テーブル(ACT)の対応空間に保存できる。
図5bは、アクセスページビットベクトル(APBV)を示す図である。
図5bに示すように、アクセスページビットベクトル(APBV)は、第1のメモリ230のアクセス管理領域REGION1〜REGIONnの各々に対応するビットベクトルBV1〜BVnを含むことができる。一つのアクセス管理領域に対応する一つのビットベクトルは、アクセス管理領域に含まれたページの数(すなわち、‘k’個)と同数のビットからなることができる。第1のコントローラ220A、220Bのアクセスマネージャー223(又はアクセス管理ロジック228)は、第1のメモリ230のページがアクセスされる毎に、アクセスされたページを含むアクセス管理領域に対応するビットベクトル(BV)のビットのうち、アクセスされたページに対応するビットを‘セット(set)状態’を示す値に設定できる。
図6aはアクセス管理領域に対するアクセスの発生を示す図、図6bはアクセスが発生したアクセス管理領域のアクセス回数が保存されたアクセス回数テーブルを示す図、図6cはアクセス管理領域のアクセスされたページに対応するビットが‘セット(set)状態’を示す値に設定されたビットベクトルを示す図である。図6a〜図6cでは第1のアクセス管理領域REGION1を例として示したが、本発明は第2〜第nのアクセス管理領域REGION2〜REGIONnの各々に対しても同様に適用できる。
図6aに示すように、横軸は時間を示し、‘A1’〜‘Am’はアクセスを示す。アクセスマネージャー223(又はアクセス管理ロジック228)は、第1のアクセス管理領域REGION1内の任意のページがアクセスされる毎に、図6bに示すアクセス回数テーブル(ACT)の第1のアクセス管理領域REGION1に対応する空間に保存されたアクセス回数を増加させることができる。
例えば、図6aに示すように、第1のアクセス管理領域REGION1に対する1番目のアクセス(A1)が発生すると、図6bに示すアクセス回数テーブル(ACT)の第1のアクセス管理領域REGION1に対応する空間にアクセス回数‘1’が保存されることができる。次いで、第1のアクセス管理領域REGION1に対して2番目〜m番目のアクセス(A2〜Am)が各々発生する毎に、アクセス回数テーブル(ACT)の第1のアクセス管理領域REGION1に対応する空間に保存されたアクセス回数は‘1’ずつ増加して図6bのように結局‘m’になり得る。
また、アクセスマネージャー223(又はアクセス管理ロジック228)は、第1のアクセス管理領域REGION1がアクセスされる毎に、第1のアクセス管理領域REGION1に対応するビットベクトルに含まれたビットのうち、アクセスされたページに対応するビットを‘セット(set)状態’を示す値(例えば、‘1’)に設定できる。
例えば、図6cに示すように、第1のアクセス管理領域REGION1に対応する第1のビットベクトルBV1に含まれたk個のビットのうち、アクセスされたページ(例えば、‘1’、‘2’、‘100’、‘101’及び‘102’)に対応するビットが‘1’に設定できる。また、アクセスされたページに対応する第1のビットベクトルBV1のビットが‘セット(set)状態’を示す値に設定される場合、アクセスされたページが再びアクセスされると、アクセスマネージャー223(又はアクセス管理ロジック228)は設定の値‘1’が維持できる。
アクセスマネージャー223(又はアクセス管理ロジック228)は、第1のアクセス管理領域REGION1に対するアクセス回数が既設定の値(例えば、‘m’)に到達すると、第1のアクセス管理領域REGION1をホットアクセス管理領域として判断できる。また、アクセスマネージャー223(又はアクセス管理ロジック228)は、ホットアクセス管理領域である第1のアクセス管理領域REGION1に対応する第1のビットベクトルBV1を参照して、第1のアクセス管理領域REGION1からアクセスされたページを全部ホットページとして検出できる。
ここまで、第1のメモリ装置210の第1のコントローラ220が第1のメモリ230のアクセス管理領域REGION1〜REGIONnの各々に対するアクセス回数を管理し、第1のメモリ230のアクセス管理領域REGION1〜REGIONnのアクセス回数のうち、あるアクセス回数が設定値‘m’に到達すると、ホットアクセス管理領域として判断し、ホットアクセス管理領域に対応するビットベクトルを用いて、ホットアクセス管理領域から一つ又はそれ以上のホットページを検出することを説明した。
以後では、図6a〜図6cに示すように、検出された第1のメモリ装置210の一つ又はそれ以上のホットページに保存されたホットデータを、動作速度が速い第2のメモリ装置250に移動させる方法について詳細に説明する。
図7aは、本発明の実施例に係るデータ管理方法を示すフローチャートである。図7aに示すデータ管理方法は、図1〜図3、図4a、図4b、図5a、図5b及び図6a〜図6cの少なくとも一つを参照して説明する。
ステップS710において、CPU100は、第1のメモリ装置210の第1のメモリ230内にホットアクセス管理領域が存在するか否かを確認するための周期に到達したか否かが判断できる。該周期は事前に設定できる。設定の周期に到達したと判断される場合、プロセスはステップS720に進行できる。すなわち、CPU100は、設定の周期毎に第1のメモリ装置210の第1のメモリ230にホットアクセス管理領域が存在するか否かが確認できるが、これに限定されるものではない。
ステップS720において、CPU100は、システムバス500(図1を参照)を介して第1のメモリ230にホットアクセス管理領域が存在するか否かを確認するための命令を第1のメモリ装置210に転送できる。ここで、命令は“ホットアクセス管理領域確認命令”として指すことができる。
ステップS730において、第1のメモリ装置210の第1のコントローラ220は、CPU100から受信されたホットアクセス管理領域確認命令に応じてアクセス回数テーブル(ACT)を確認し、アクセス回数テーブル(ACT)に保存されたアクセス回数に基づき、ホットアクセス管理領域が第1のメモリ230に存在するか否かが判断できる。第1のメモリ230にホットアクセス管理領域が存在しないと判断される場合、プロセスはステップS750に進行できる。
一方、第1のメモリ230にホットアクセス管理領域が存在すると判断される場合、第1のコントローラ220はホットアクセス管理領域に対応するビットベクトルを参照して、ホットアクセス管理領域に含まれた一つ又はそれ以上のホットページが検出できる。一つ又はそれ以上のホットページが検出される場合、プロセスはステップS740に進行できる。ホットアクセス管理領域が存在するか否かを判断し、ホットページを検出する過程は、以後図7bを参照して詳細に説明する。
ステップS740において、第1のメモリ装置210の第1のコントローラ220は、ステップS730で検出されたホットページの住所をCPU100に転送できる。以後、プロセスはステップS760に進行できる。
一方、ステップS750において、第1のメモリ装置210の第1のコントローラ220は、第1のメモリ230にホットアクセス管理領域なしを示す応答をCPU100に転送できる。以後、プロセスはステップS780に進行できる。
ステップS760において、CPU100は、第1のメモリ装置210及び第2のメモリ装置250にデータ移動命令が転送できる。
CPU100から第1のメモリ装置210に転送されるデータ移動命令は、第1のメモリ装置210の第1のメモリ230に含まれた一つ又はそれ以上のホットページに保存されたホットデータを第2のメモリ装置250の第2のメモリ270に移動させるための命令、及び、第2のメモリ装置250から受信されたコールドデータを第1のメモリ230に保存するための命令等を含むことができる。
また、CPU100から第2のメモリ装置250に転送されるデータ移動命令は、第2のメモリ装置250の第2のメモリ270の一つ又はそれ以上のコールドページに保存されたコールドデータを第1のメモリ装置210の第1のメモリ230に移動させる命令、及び、第1のメモリ装置210から受信されたホットデータを第2のメモリ270に保存するための命令等を含むことができる。したがって、CPU100から第1のメモリ装置210及び第2のメモリ装置250にデータ移動命令が転送された後、プロセスはステップS770及びステップS775に進行できる。例えば、ステップS770及びステップS775は、同時に遂行したり、或いは、異なる時間に遂行したりする。
ステップS770において、第2のメモリ装置250の第2のコントローラ260は、CPU100から受信されたデータ移動命令により、第2のメモリ270の一つ又はそれ以上のコールドページからコールドデータを読み出してバッファメモリ(図示せず)に一時保存し、第1のメモリ装置210から受信されたホットデータを一つ又はそれ以上のコールドページに保存できる。また、第2のコントローラ260は、バッファメモリに一時保存されたコールドデータを第1のメモリ装置210に転送できる。
このとき、第2のメモリ装置250の第2のメモリ270が空きページを含む場合、コールドページからコールドデータを読み出してバッファメモリに一時保存する過程は省略できる。代わりに、第1のメモリ装置210から受信されたホットデータは、第2のメモリ270の空きページに保存できる。
しかしながら、第2のメモリ270がいっぱいになる場合、第1のメモリ230のホットデータを第2のメモリ270に移動させるために、第2のメモリ270に保存されたコールドデータと交換しなければならない。このために、CPU100は、第2のメモリ270に保存されたデータからコールドデータを選択し、コールドデータを第1のメモリ230のホットデータと交換できる。コールドデータを選択する基準はアクセスされた時点(又は順序)であり得る。例えば、CPU100は、第2のメモリ270のページのうち、アクセスされてから長い時間が経ったページ(即ち、コールドページ)に保存されたデータ(即ち、コールドデータ)を選択し、選択されたコールドデータを第1のメモリ230のホットデータと交換できる。
CPU100は、ステップS760において、第1のメモリ装置210及び第2のメモリ装置250にデータ移動命令を転送する前に、第2のメモリ装置250の第2のメモリ270からコールドデータを選択し、選択されたコールドデータが保存されたコールドページの住所を第2のメモリ装置250に転送するデータ移動命令に含めることができる。CPU100が第2のメモリ270からコールドデータを選択する方法については、以後図9aを参照して詳細に説明する。
ステップS775において、第1のメモリ装置210の第1のコントローラ220は、CPU100から受信されたデータ移動命令により、第1のメモリ230のホットアクセス管理領域に含まれた一つ又はそれ以上のホットページからホットデータを読み出して第2のメモリ装置250に転送し、第2のメモリ装置250から受信されたコールドデータを第1のメモリ230に保存できる。
ステップS780において、CPU100は、アクセス回数テーブル(ACT)及びアクセスページビットベクトル(APBV)に保存された値を初期化するためのリセット命令を第1のメモリ装置210に転送できる。本実施例では、CPU100が各々の命令、すなわち、ホットアクセス管理領域確認命令、データ移動命令及びリセット命令を順次転送することを例に説明したが、これに限定されるものではない。他の実施例において、CPU100は、前述したた命令を全部含む一つの命令を第1及び第2のメモリ装置210、250に転送できる。
ステップS790において、第1のメモリ装置210の第1のコントローラ220は、CPU100から受信されたリセット命令により、アクセス回数テーブル(ACT)及びアクセスページビットベクトル(APBV)に保存された値(又は情報)が初期化できる。
図7bは、図7aのステップS730を具体的に示すフローチャートである。
ステップS731において、第1のコントローラ220は、アクセス回数テーブル(ACT)に保存された値、すなわち、アクセス管理領域REGION1〜REGIONnの各々のアクセス回数が確認できる。
ステップS733において、第1のコントローラ220は、アクセス管理領域REGION1〜REGIONnの各々のアクセス回数に基づき、アクセス管理領域REGION1〜REGIONnのうち、ホットアクセス管理領域が存在するか否かが判断できる。例えば、第1のコントローラ220は、アクセス回数が既設定の値(例えば、‘m’)に到達したアクセス管理領域がある場合、例えば、アクセス管理領域REGION1〜REGIONnのうち、設定された値‘m’以上のアクセス回数を有するアクセス管理領域がある場合、ホットアクセス管理領域が存在すると判断できる。ホットアクセス管理領域が存在すると判断される場合、プロセスはステップS735に進行できる。一方、ホットアクセス管理領域が存在しないと判断される場合、プロセスはステップS750に進行できる。
ステップS735において、第1のコントローラ220は、ホットアクセス管理領域に対応するビットベクトルに基づき、ホットアクセス管理領域に含まれた一つ又はそれ以上のホットページが検出できる。例えば、第1のコントローラ220は、ビットベクトルに含まれたビットのうち、‘セット(set)状態’を示す値(例えば、‘1’)に設定されたビットに対応するページをホットページとして検出できる。ホットページ等の検出が完了する場合、プロセスはステップS740に進行できる。
図8は、本発明の実施例に係る第1のメモリ装置及び第2のメモリ装置間のデータ移動を示す図である。図1及び図2に示す構成等が図8に示すデータ移動を説明するのに使用され得る。
図8に示すように、CPU100は、システムバス500(図1を参照)を介して第1のメモリ装置210及び第2のメモリ装置250にデータ移動命令が転送できる(丸囲み数字「1」)。
このとき、第1のメモリ装置210に転送されたデータ移動命令は、第1のメモリ230からホットデータが保存されたホットページの住所、ホットページからホットデータを読み出すための読み出し命令、及び第2のメモリ装置250から転送されたコールドデータを保存するための書き込み命令などを含むことができるが、これに限定されるものではない。
また、第2のメモリ装置250に転送されたデータ移動命令は、第2のメモリ270からコールドデータが保存されたコールドページの住所、コールドページからコールドデータを読み出すための読み出し命令、及び第1のメモリ装置210から転送されたホットデータを保存するための書き込み命令などを含むことができるが、これに限定されるものではない。
CPU100からデータ移動命令を受信した第2のメモリ装置250の第2のコントローラ260は、第2のメモリ270のコールドページからコールドデータを読み出し、読み出したコールドデータを第2のコントローラ260内に含まれたバッファメモリ(図示せず)に一時保存できる(丸囲み数字「2」)。同様に、第1のメモリ装置210の第1のコントローラ220は、データ移動命令に基づき、第1のメモリ230のホットページからホットデータを読み出し(丸囲み数字「2」)、読み出したホットデータを第2のコントローラ260に転送できる(丸囲み数字「3」)。
第2のコントローラ260は、第1のメモリ装置210から受信されたホットデータを第2のメモリ270に保存できる(丸囲み数字「4」)。このとき、第2のメモリ270からホットデータが保存される領域は、コールドデータが保存されていたコールドページである。
また、第2のコントローラ260は、バッファメモリに一時保存されたコールドデータを第1のメモリ装置210に転送できる(丸囲み数字「5」)。第1のコントローラ220は、第2のメモリ装置250から受信されたコールドデータを第1のメモリ230に保存できる(丸囲み数字「6」)。このとき、第1のメモリ230からコールドデータが保存される領域はホットデータが保存されていたホットページである。これにより、第1のメモリ230のホットデータ及び第2のメモリ270のコールドデータ間の交換が完了される。
図9aは、第1のメモリ及び第2のメモリ270に対するLRU(least recently used)キュー(queue)を示す図である。図1及び図2に示す構成等が図9aに示すLRUキューを説明するのに使用され得る。
CPU100は、第2のメモリ270に対するLRUキューを用いて、第2のメモリ270から第1のメモリ230のホットデータと交換されるコールドデータを保存したコールドページが選択できる。
CPU100は、第1のメモリ230及び第2のメモリ270の各々に対するLRUキューを別に管理できる。以後では、第1のメモリ230に対するLRUキューを第1のLRUキューLRUQ1とし、第2のメモリ270に対するLRUキューを第2のLRUキューLRUQ2とする。
第1のLRUキューLRUQ1及び第2のLRUキューLRUQ2は、第1のメモリ230及び第2のメモリ270に各々保存できるが、これに限定されるものではない。例えば、第1のLRUキューLRUQ1及び第2のLRUキューLRUQ2は、第1のメモリ230に保存されたり、或いは、第2のメモリ270に保存されたりする。第1のLRUキューLRUQ1及び第2のLRUキューLRUQ2は互いに同一の構成を有することができる。例えば、第1のLRUキューLRUQ1及び第2のLRUキューLRUQ2は、各々複数のページに対応する住所を保存するための複数の保存空間を含むことができる。
第1のLRUキューLRUQ1及び第2のLRUキューLRUQ2の各々の一側の1番目の保存空間には、最も最近にアクセスされた(MRU;most recently used)ページの住所が保存できる。最も最近にアクセスされたページの住所が保存された一側の1番目の保存空間は‘MRU空間’と呼ばれる。第1のLRUキューLRUQ1及び第2のLRUキューLRUQ2の各々の他側の1番目の空間には、最も過去に(又は長い時間前に)アクセスされた(LRU)ページの住所が保存できる。最も過去にアクセスされたページの住所が保存された他側の1番目の保存空間は‘LRU空間’と呼ばれる。
第1のメモリ230及び第2のメモリ270がアクセスされる毎に、第1のLRUキューLRUQ1及び第2のLRUキューLRUQ2の各々のMRU空間には新規にアクセスされたページの住所が保存され、元来MRU空間に保存されていた以前アクセスページから余りアクセスページの住所は、各々LRU側に一間ずつ移動できる。
CPU100は、第2のLRUキューLRUQ2を参照して、第2のメモリ270から最も過去に(又は長い時間前に)アクセスされたページを確認し、該ページに保存されたデータを第1のメモリ230のホットデータと交換するコールドデータとして決定できる。また、CPU100は、ホットデータが複数個ある場合、第2のLRUキューLRUQ2の一つ又はそれ以上のLRU空間からMRU空間の方にホットデータの個数に対応する個数だけのコールドデータが選択できる。
また、CPU100は、第1のメモリ230のホットデータ及び第2のメモリ270のコールドデータの交換が完了すると、第1のLRUキューLRUQ1及び第2のLRUキューLRUQ2のMRU空間に保存された情報、すなわち、ページ住所が更新できる。また、ホットデータが複数個ある場合、CPU100は、第1のメモリ230のホットデータ及び第2のメモリ270のコールドデータの交換が完了する毎に、第1のLRUキューLRUQ1及び第2のLRUキューLRUQ2のMRU空間に保存されたページ住所が更新できる。
図9bは、データ交換後に第1のLRUキューLRUQ1及び第2のLRUキューLRUQ2が更新された状態を示す図である。
前述したように、第1のメモリ230及び第2のメモリ270間のデータ移動のために、CPU100は、第1のメモリ230ではホットデータが保存されたホットページをアクセスし、第2のメモリ270では第2のLRUキューLRUQ2のLRU空間に保存された住所に対応するコールドページがアクセスできる。これにより、第1のメモリ230から最近にアクセスされたホットページの住所が第1のLRUキューLRUQ1のMRU空間に新規保存され、第2のメモリ270から最近にアクセスされたコールドページの住所が第2のLRUキューLRUQ2のMRU空間に新規保存できる。第1のLRUキューLRUQ1及び第2のLRUキューLRUQ2の各々のMRU空間に住所が新規保存されることで、元来MRU空間に保存された住所及び以後の住所はLRU空間側に一間ずつ移動できる。
図9bを参照すれば、第1のメモリ230から検出されたホットページは5個である。5個のホットページの住所を‘3’、‘4’、‘5’、‘8’及び‘9’として仮定する。MRU空間から遠く離れた保存空間に保存されたアドレスに対応するページは、アクセスされてから長い時間が経ったページを示す。5個のホットページをアクセスされてから長い時間が経った順に整列すれば、住所順序は‘9’、‘8’、‘5’、‘4’及び‘3’になり得る。
5個のホットページに保存されたホットデータを第2のメモリ270に移動させるために、CPU100は、第2のLRUキューLRUQ2を参照して、第2のメモリ270から5個のコールドページが選択できる。CPU100は、第2のLRUキューLRUQ2のLRU空間からMRU空間の方に5個のコールドページ(‘i’、‘i−1’、‘i−2’、‘i−3’及び‘i−4’)が選択できる。
ホットページ(‘3’、‘4’、‘5’、‘8’及び‘9’)のうち、アクセスされてから長い時間が経ったホットページに保存されたホットデータからコールドデータと交換すると仮定する場合、ホットページ‘9’に保存されたホットデータと、コールドページ‘i’に保存されたコールドデータとが1番目に交換できる。その結果、図9bに示しなかったが、第1のLRUキューLRUQ1のMRUには住所‘9’が新規保存され、住所‘1’〜‘8’の各々は右に一間ずつ移動できる。また、第2のLRUキューLRUQ2のMRUには住所‘i’が新規保存され、住所‘1’〜‘i−1’の各々は右に一間ずつ移動できる。
ホットページ住所‘8’に保存されたホットデータと、コールドページ住所‘i−1’に保存されたコールドデータとが2番目に交換できる。その結果、図9bに示しなかったが、第1のLRUキューLRUQ1のMRUには住所‘8’が新規保存され、住所‘9’及び‘1’〜‘7’の各々は右に一間ずつ移動できる。また、第2のLRUキューLRUQ2のMRUには住所‘i−1’が新規保存され、住所‘i’及び‘1’〜‘i−2’の各々は右に一間ずつ移動できる。
ホットページ住所‘5’に保存されたホットデータと、コールドページ住所‘i−2’に保存されたコールドデータとが3番目に交換できる。その結果、図9bに示しなかったが、第1のLRUキューLRUQ1のMRUには住所‘5’が新規保存され、住所‘8’、‘9’及び‘1’〜‘4’の各々は右に一間ずつ移動できる。また、第2のLRUキューLRUQ2のMRUには住所‘i−2’が新規保存され、住所‘i−1’、‘i’及び ‘i−2’の各々は右に一間ずつ移動できる。
ホットページ住所‘4’に保存されたホットデータと、コールドページ住所‘i−3’に保存されたコールドデータとが4番目に交換できる。その結果、図9bに示しなかったが、第1のLRUキューLRUQ1のMRUには住所‘4’が新規保存され、住所‘5’、‘8’、‘9’及び‘1’〜‘3’の各々は右に一間ずつ移動できる。また、第2のLRUキューLRUQ2のMRUには住所‘i−3’が新規保存され、住所‘i−2’、‘i−1’、‘i’及び ‘i−4’の各々は右に一間ずつ移動できる。
ホットページ住所‘3’に保存されたホットデータと、コールドページ住所‘i−4’に保存されたコールドデータとが4番目に交換できる。その結果、図9bに示しなかったが、第1のLRUキューLRUQ1のMRUには住所‘3’が新規保存され、住所‘4’、‘5’、‘8’、‘9’及び‘1’〜‘2’の各々は右に一間ずつ移動できる。また、第2のLRUキューLRUQ2のMRUには住所‘i−4’が新規保存され、住所‘i−3’、‘i−2’、‘i−1’、‘i’及び ‘1’〜‘ i−5’の各々は右にある一間ずつ移動できる。
データ交換が完了した後、第1のLRUキューLRUQ1のMRUには住所‘3’が保存され、LRUには相変らず住所‘i’が保存された状態になる。また、第2のLRUキューLRUQ2のMRUには住所‘i−4’が保存され、LRUには住所‘i−5’が保存された状態になる。
一方、第1のメモリ装置210の第1のコントローラ220は、データ交換が完了する場合、メモリ224のアクセス回数テーブル(ACT)及びアクセスページビットベクトル(APBV)に保存された値(又は情報)を初期化するリセット動作が遂行できる。アクセス回数テーブル(ACT)及びアクセスページビットベクトル(APBV)に対するリセット動作を遂行することは、非常に長時間の間にアクセス回数が増加して既設定の臨界回数(m)に到達したアクセス管理領域をホットアクセス管理領域として判断し、該アクセス管理領域内のアクセスされたページに保存されたデータをホットデータとして第2のメモリ270に移動させることは無意味であるからである。すなわち、前述した場合のホットデータは無効な(又は無意味な)ホットデータであり得る。
したがって、第1のコントローラ220は、CPU100からホットアクセス管理領域命令、データ移動命令及びリセット命令の少なくとも一つが受信される毎に、ホットアクセス管理領域の存在の可否及びデータ移動の遂行の可否と無関係に、アクセス回数テーブル(ACT)及びアクセスページビットベクトル(APBV)が初期化できる。
図10aは、本発明の実施例に係る仮想住所及び物理住所間のマッピングのためのページテーブルを示す図である。
図10aに示すように、ページテーブル(PT)は、仮想住所及び物理住所(又は実際住所)間のマッピング情報を含むデータ構造であり得る。ページテーブル(PT)は、複数の仮想ページ番号VPN1〜VPNjと、複数の仮想ページ番号VPN1〜VPNjの各々にマッピングされた複数の物理ページ番号PPN1〜PPNjとを含む複数のページマッピングエントリ(PME)からなることができる。CPU100は、ページテーブル(PT)を参照して仮想住所を物理住所に変換し、変換された物理住所に対応するページがアクセスできる。
図10bは、図10aのページマッピングエントリ(PME)を示す図である。
図10bに示すように、ページマッピングエントリ(PME)は、仮想ページ番号と、仮想ページ番号にマッピングされた物理ページ番号とを含むことができる。また、ページマッピングエントリ(PME)はページ属性情報を含むことができる。ページ属性情報は、ページマッピングエントリ(PME)に関連したページに対する読み出し可能性、書き込み可能性、キャッシュ記憶可能性及びレベルアクセス制限などのような特性を定義した情報を含むことができるが、これに限定されるものではない。また、ページマッピングエントリ(PME)は、関連したページがホットページであるか否かを示すホットページフラッグ(S)を含むことができる。ページマッピングエントリ(PME)は、図10bに示す形態に限定されず、多様な範囲の形態を有することができる。
CPU100は、第1のメモリ装置210から検出されたホットページの住所を受信すると、ページテーブル(PT)のページマッピングエントリ(PME)のうち、ホットページの住所に対応する物理住所(すなわち、物理ページ番号)を含むページマッピングエントリ(PME)のホットページフラッグを‘セット(set)状態’を示す値に設定できる。以後、CPU100は、メモリ割り当て時、ページテーブル(PT)を参照して仮想住所に対応するページマッピングエントリ(PME)のホットページフラッグを確認し、該仮想住所に対するページを第1のメモリ装置210の第1のメモリ230に割り当て、或いは、第2のメモリ装置250の第2のメモリ270に割り当てることができる。
例えば、ホットページフラッグが‘セット’値を有する場合、CPU100は、第2のメモリ装置250の第2のメモリ270に仮想住所に対するページを割り当てることができる。一方、ホットページフラッグが‘セット’値を有しない場合、CPU100は、第1のメモリ装置210の第1のメモリ230に仮想住所に対するページを割り当てることができる。
図11は、本発明の実施例に係るメモリ割り当て方法を示すフローチャートである。図11に示すメモリ割り当て方法は、図1〜図3、図4a、図4b、図5a、図5b、図6a〜図6c、図7a、図7b、図8、図9a、図9b、図10a及び図10bの少なくとも一つを参照して説明できる。
ステップS1101において、CPU100は、外部装置からページ割り当て要請及び仮想住所が受信できる。他の実施例において、ページ割り当て要請は応用プログラムから受信できるが、これに限定されるものではない。
ステップS1103において、CPU100は、ページテーブル(PT)を参照して受信された仮想住所に対応する物理住所に対するホットページ検出履歴が確認できる。例えば、CPU100は、図10aのページテーブル(PT)に含まれた複数のページマッピングエントリのうち、受信された仮想住所を含むページマッピングエントリ(PME)のホットページフラッグを確認することで、該物理住所に対するホットページ検出履歴が確認できる。
ステップS1105において、CPU100は、受信された仮想住所に対応する物理住所に対するホットページ検出履歴が存在するか否かが判断できる。例えば、CPU100は、受信された仮想住所を含むページマッピングエントリ(PME)のホットページフラッグが‘セット(set)状態’を示す値に設定されている場合、該物理住所に対するホットページ検出履歴が存在すると判断できる。一方、CPU100は、受信された仮想住所を含むページマッピングエントリ(PME)のホットページフラッグが‘リセット(reset)状態’を示す値に設定されている場合、該物理住所に対するホットページ検出履歴が存在しないと判断できる。
ホットページ検出履歴が存在すると判断される場合、プロセスはステップS1107に進行できる。また、ホットページ検出履歴が存在しないと判断される場合、プロセスはステップS1109に進行できる。
ステップS1107において、CPU100は、受信された仮想住所に対応するページを相対的にアクセスレイテンシの速い第2のメモリ270に割り当てることができる。
ステップS1109において、CPU100は、受信された仮想住所に対応するページを相対的にアクセスレイテンシの遅い第1のメモリ230に割り当てることができる。
このように、ページ割り当て要請と共に、受信された仮想住所に関連した物理住所に対するホットページ検出履歴により、仮想住所に対応するページを第1のメモリ230又は第2のメモリ270に割り当てることで、データ移動を減少させ、相対的にアクセスレイテンシの速いメモリへのアクセスを増加させてシステムの全体性能が向上できる。
図12は、本発明の実施例に係るシステム1000を示す図である。図12に示すように、前記システム1000は、メインボード1110、プロセッサ1120及びメモリモジュール1130を含むことができる。前記メインボード1110は、システムを構成する部品を装着するための基板であって、マザーボード(Mother Board)とも呼ばれる。前記メインボード1110は、前記プロセッサ1120が装着されるスロット(図示せず)と、前記メモリモジュール1130が装着されるスロット1140とを含むことができる。前記メインボード1110は、前記プロセッサ1120と前記メモリモジュール1130とを電気的に連結するための配線1150を含むことができる。前記プロセッサ1120は前記メインボード1110上に装着できる。前記プロセッサ1120は、中央処理装置(CPU)、グラフィック処理装置(Graphic Processing Unit;GPU)、マルチメディアプロセッサ(Multi-Media Processor;MMP)及びデジタル信号プロセッサ(Digital Signal Processor)を含むことができる。また、アプリケーションプロセッサ(AP)のように多様な機能を持つプロセッサチップを組合せて、システムオンチップ(System On Chip)の形態に具現できる。
前記メモリモジュール1130は、前記メインボード1110のスロット1140を介して前記メインボード1110上に装着できる。前記メモリモジュール1130は、モジュール基板に形成されたモジュールピン及び前記スロット1140を介して前記メインボード1110の配線1150と連結することができる。前記メモリモジュール1130は、例えば、UDIMM(Unbuffered Dual Inline Memory Module)、DIMM(Dual Inline Memory Module)、RDIMM(Registered Dual Inline Memory Module)、LRDIMM(Load Reduced Dual Inline Memory Module)、SODIMM(Small Outline Dual Inline Memory Module)及びNVDIMM(Non-Volatile Dual Inline Memory Module)などを含むことができる。
図1に示すメモリ装置200は、前記メモリモジュール1130に適用できる。前記メモリモジュール1130は、各々複数のメモリ装置1131を含むことができる。前記複数のメモリ装置1131は、各々揮発性メモリ装置及び不揮発性メモリ装置の一つ以上を含むことができる。前記揮発性メモリ装置はSRAM、DRAM及びSDRAMなどを含むことができ、前記不揮発性メモリ装置はROM、PROM、EEPROM、EPROM、フラッシュメモリ、PRAM、MRAM、RRAM(登録商標)及びFRAMなどを含むことができる。図1に示すメモリ装置200の第1のメモリ装置210は、不揮発性メモリ装置を含む前記メモリ装置1131に適用できる。また、前記メモリ装置1131は、複数のチップが積層されて形成される積層メモリ装置又はマルチチップパッケージを含むことができる。
図13は、本発明の他の実施例に係るシステム2000を示す図である。図13に示すように、前記システム2000は、プロセッサ2010、メモリコントローラ2020及びメモリ装置2030を含む。前記プロセッサ2010はチップセット2040を介して前記メモリコントローラ2020と連結でき、前記メモリコントローラ2020は複数のバスを介して前記メモリ装置2030と連結できる。図9に示すように、前記プロセッサ2010は、一つであるものを例示したが、これに限定されず、物理的又は論理的に複数のプロセッサが具備され得る。
前記チップセット2040は、前記プロセッサ2010及び前記メモリコントローラ2020間で信号が転送される通信経路が提供できる。前記プロセッサ2010は演算動作を遂行し、所望のデータを入出力させるために前記チップセット2040を介して前記メモリコントローラ2020に要請及びデータが転送できる。
前記メモリコントローラ2020は、前記複数のバスを介してコマンド信号、アドレス信号、クロック信号及びデータを前記メモリ装置2030に転送できる。前記メモリ装置2030は、前記メモリコントローラ2020から前記信号を受信してデータが保存でき、保存のデータを前記メモリコントローラ2020に出力できる。前記メモリ装置2030は一つ以上のメモリモジュールを含むことができる。図1のメモリ装置200は前記メモリ装置2030に適用できる。
図13に示すように、前記システム2000は、入出力バス2110、入出力装置2120、2130、2140、ディスクドライバコントローラ2050及びディスクドライブ2060をさらに含むことができる。前記チップセット2040は入出力バス2110と連結できる。前記入出力バス2110は、前記チップセット2040から入出力装置2120、2130、2140までの信号転送のための通信経路が提供できる。前記入出力装置はマウス2120、ビデオディスプレイ2130又はキーボード2140を含むことができる。前記入出力バス2110は、前記入出力装置2120、2130、2140と通信するいかなる通信プロトコルでも含むことができる。また、前記入出力バス2110は前記チップセット2040内に集積できる。
前記ディスクドライバコントローラ2050は、前記チップセット2040と連結して動作できる。前記ディスクドライバコントローラ2050は、前記チップセット2040と一つ又はそれ以上のディスクドライブ2060間の通信経路が提供できる。前記ディスクドライブ2060は、命令及びデータを保存することにより、外部データ保存装置として活用できる。前記ディスクドライバコントローラ2050及び前記ディスクドライブ2060は、入出力バス2110を含むいかなる通信プロトコルを用いて、互いに又は前記チップセット2040と通信できる。
本発明の属する技術分野における通常の技術者は、本発明がその技術的思想や必須特徴から逸脱しない範囲内において、他の具体的な形態で実施できるので、前述した実施例は全ての面において例示的なものであり、限定的なものではないと理解しなければならない。本発明の範囲は前記詳細な説明よりも後述する特許請求の範囲により示され、特許請求の範囲の意味及び範囲、その等価概念から導出される全ての変更又は変形された形態が、本発明の範囲に含まれるものと解析しなければならない。
10 コンピュータシステム
100 CPU
150 キャッシュ
200 メモリ装置
210 第1のメモリ装置
220 第1のコントローラ
221 第1のインターフェース
222 メモリコア
223 アクセスマネージャー
224 メモリ
225 第2のインターフェース
230 第1のメモリ
250 :第2のメモリ装置
260 第2のコントローラ
270 第2のメモリ
100 CPU
150 キャッシュ
200 メモリ装置
210 第1のメモリ装置
220 第1のコントローラ
221 第1のインターフェース
222 メモリコア
223 アクセスマネージャー
224 メモリ
225 第2のインターフェース
230 第1のメモリ
250 :第2のメモリ装置
260 第2のコントローラ
270 第2のメモリ
Claims (20)
- 複数のアクセス管理領域を含む第1のメモリ及び第1のアクセスレイテンシを有する第1のメモリ装置と、
前記第1のメモリ装置の前記第1のアクセスレイテンシと異なる第2のアクセスレイテンシを有する第2のメモリ装置とを含み、
前記第1のメモリの複数のアクセス管理領域の各々は複数のページを含み、前記第1のメモリ装置は前記複数のアクセス管理領域のうち、設定の値に到達したアクセス回数を有するホットアクセス管理領域を検出し、前記ホットアクセス管理領域に含まれた一つ又はそれ以上のホットページを検出するように構成され、
前記一つ又はそれ以上のホットページに保存されたデータが前記第2のメモリ装置に移動することを特徴とする、メモリシステム。 - 前記第1のメモリ装置は、前記第1のメモリの動作を制御する第1のコントローラをさらに含み、
前記第1のコントローラは、
前記複数のアクセス管理領域に対するアクセス回数を保存するアクセス回数テーブル、及び前記複数のアクセス管理領域の各々に対応する複数のビットベクトルとを含むメモリと、
前記複数のアクセス管理領域の一つのページがアクセスされると、アクセスされたアクセス管理領域に対応する前記アクセス回数テーブルの空間に前記アクセスされたアクセス管理領域のアクセス回数を保存し、前記アクセスされたアクセス管理領域に対応するビットベクトルのビットのうち、アクセスされたページに対応するビットを‘セット(set)状態’を示す値に設定するアクセスマネージャーとを含み、
前記各ビットベクトルは前記複数のアクセス管理領域の各々に含まれた複数のページに対応するビットを含み、
前記第1のアクセスレイテンシは前記第2のアクセスレイテンシより長いことを特徴とする、請求項1に記載のメモリシステム。 - 前記第1のコントローラは、外部装置からホットアクセス管理領域確認命令が受信されると、前記アクセス回数テーブルに基づき、前記複数のアクセス管理領域のうち、前記ホットアクセス管理領域が存在するか否かを確認し、確認結果を前記外部装置に転送することを特徴とする、請求項2に記載のメモリシステム。
- 前記第1のコントローラは、前記ホットアクセス管理領域が存在すると、前記複数のビットベクトルのうち、前記ホットアクセス管理領域に対応するビットベクトルを確認し、前記ホットアクセス管理領域に対応する前記ビットベクトルのビットのうち、前記‘セット(set)状態’を示す値に設定されたビットに対応する前記一つ又はそれ以上のホットページを検出し、前記一つ又はそれ以上のホットページに関連した情報を前記外部装置に転送することを特徴とする、請求項3に記載のメモリシステム。
- 前記第1のコントローラは、前記一つ又はそれ以上のホットページに保存されたデータを前記第2のメモリ装置に転送することを特徴とする、請求項4に記載のメモリシステム。
- 前記第1のコントローラは、前記ホットアクセス管理領域が存在しないと、前記ホットアクセス管理領域が存在しないことを示す情報を前記外部装置に転送することを特徴とする、請求項3に記載のメモリシステム。
- 前記外部装置からデータ移動命令が受信されると、前記第1のメモリの前記ホットアクセス管理領域に含まれた前記一つ又はそれ以上のホットページに保存されたホットデータを、前記第2のメモリ装置の第2のメモリに保存されたデータと交換するデータ移動動作を遂行することを特徴とする、請求項3に記載のメモリシステム。
- 前記第1のメモリは不揮発性メモリを含み、前記第2のメモリは揮発性メモリを含むことを特徴とする、請求項7に記載のメモリシステム。
- 前記不揮発性メモリはPCRAM(phase change RAM)を含み、前記揮発性メモリはDRAM(dynamic random access memory)を含むことを特徴とする、請求項8に記載のメモリシステム。
- 前記外部装置からリセット命令が受信されると、前記第1のコントローラは、前記アクセス回数テーブルに保存された値及び前記複数のビットベクトルの値を初期化することを特徴とする、請求項3に記載のメモリシステム。
- 中央処理装置(central processing unit;CPU)と、
前記中央処理装置とシステムバスを介して連結したメモリシステムとを含み、
前記メモリシステムは、
複数のアクセス管理領域を含む第1のメモリ及び第1のアクセスレイテンシを有する第1のメモリ装置と、
前記第1のメモリ装置の前記第1のアクセスレイテンシと異なる第2のアクセスレイテンシを有する第2のメモリ装置とを含み、
前記各アクセス管理領域は複数のページを含み、前記第1のメモリ装置は前記複数のアクセス管理領域のうち、設定の値に到達したアクセス回数を有するホットアクセス管理領域を検出し、前記ホットアクセス管理領域に含まれた一つ又はそれ以上のホットページを検出するように構成され、
前記一つ又はそれ以上のホットページに保存されたデータが前記第2のメモリ装置に移動することを特徴とする、コンピュータシステム。 - 前記第1のメモリ装置は、前記第1のメモリの動作を制御する第1のコントローラをさらに含み、
前記第1のコントローラは、
前記複数のアクセス管理領域に対するアクセス回数を保存するアクセス回数テーブル、及び前記複数のアクセス管理領域の各々に対応する複数のビットベクトルとを含むメモリと、
前記複数のアクセス管理領域の一つのページがアクセスされると、アクセスされたアクセス管理領域に対応する前記アクセス回数テーブルの空間に前記アクセスされたアクセス管理領域のアクセス回数を保存し、前記アクセスされたアクセス管理領域に対応するビットベクトルのビットのうち、アクセスされたページに対応するビットを‘セット(set)状態’を示す値に設定するアクセスマネージャーとを含み、
前記各ビットベクトルは前記複数のアクセス管理領域の各々に含まれた複数のページに対応するビットを含み、
前記第1のアクセスレイテンシは前記第2のアクセスレイテンシより長いことを特徴とする、請求項11に記載のコンピュータシステム。 - 前記第1のコントローラは、前記中央処理装置からホットアクセス管理領域確認命令が受信されると、前記アクセス回数テーブルに基づき、前記複数のアクセス管理領域のうち、前記ホットアクセス管理領域が存在するか否かを確認し、確認結果を前記中央処理装置に転送することを特徴とする、請求項12に記載のコンピュータシステム。
- 前記中央処理装置は、既設定の周期毎に前記第1のメモリに前記ホットアクセス管理領域が存在するか否かを確認するためのホットアクセス管理領域確認命令を前記第1のメモリ装置に転送することを特徴とする、請求項13に記載のコンピュータシステム。
- 中央処理装置(CPU)と、第1及び第2のメモリ装置とを含むコンピュータシステムのデータ管理方法であって、
前記中央処理装置が、前記第1のメモリ装置の第1のメモリ内にホットアクセス管理領域が存在するか否かを確認するためのホットアクセス管理領域確認命令を前記第1のメモリ装置に転送するステップ;
前記第1のメモリ装置が、前記ホットアクセス管理領域確認命令に応じて、前記ホットアクセス管理領域内の一つ又はそれ以上のホットページに関連した情報を含む第1の応答、又は、前記第1のメモリ内に前記ホットアクセス管理領域が存在しないことを示す第2の応答を前記中央処理装置に転送するステップ;及び、
前記第1のメモリ装置から前記第1の応答が受信されると、前記中央処理装置が、前記第1のメモリの前記一つ又はそれ以上のホットページに保存されたホットデータを、前記第2のメモリ装置の第2のメモリ内のコールドデータと交換するためのデータ移動命令を前記第1及び第2のメモリ装置に転送するステップを含み、
前記第1のメモリ装置は前記第2のメモリ装置より長いアクセスレイテンシを有することを特徴とする、データ管理方法。 - 前記ホットアクセス管理領域確認命令を前記第1のメモリ装置に転送するステップは、既設定の周期毎に遂行されることを特徴とする、請求項15に記載のデータ管理方法。
- 前記データ移動命令を前記メモリ装置に転送するステップの以後に、
前記第2のメモリ装置が前記第2のメモリのコールドページから前記コールドデータを読み出してバッファメモリに一時保存するステップ;
前記第1のメモリ装置が前記第1のメモリの前記一つ又はそれ以上のホットページから前記ホットデータを読み出して前記第2のメモリに転送するステップ;
前記第2のメモリ装置が前記第2のメモリの前記コールドページに前記第1のメモリ装置から受信された前記ホットデータを保存するステップ;
前記第2のメモリ装置が前記バッファメモリに一時保存された前記コールドデータを前記第1のメモリ装置に転送するステップ;及び、
前記第1のメモリ装置が前記第1のメモリの前記一つ又はそれ以上のホットページに前記第2のメモリ装置から受信された前記コールドデータを保存するステップをさらに含むことを特徴とする、請求項15に記載のデータ管理方法。 - 前記第1のメモリ装置に前記ホットアクセス管理領域確認命令を転送する段階の以後に、
前記第1のメモリ装置が前記第1のメモリの複数のアクセス管理領域の各々に対するアクセス回数を確認するステップ;
前記第1のメモリ装置が前記複数のアクセス管理領域のうち、前記アクセス回数が既設定の値に到達した前記ホットアクセス管理領域が存在するか否かを判断するステップ;及び、
前記第1のメモリ装置が前記ホットアクセス管理領域に対応するビットベクトルのビットのうち、‘セット(set)状態’を示す値に設定されたビットに対応する一つ又はそれ以上のページを検出するステップをさらに含むことを特徴とする、請求項15に記載のデータ管理方法。 - 不揮発性メモリ及び前記不揮発性メモリの動作を制御するコントローラを含むメモリ装置であって、
前記コントローラは前記不揮発性メモリを複数のアクセス管理領域に区分し、前記複数のアクセス管理領域の各々は複数のページを含み、
前記コントローラは、前記複数のアクセス管理領域の各々に対するアクセス回数を保存するアクセス回数テーブル、及び前記複数のアクセス管理領域の各々に含まれた前記複数のページに対応するビットからなる複数のビットベクトルを含み、
前記コントローラは、前記不揮発性メモリがアクセスされると、前記複数のアクセス管理領域のうち、アクセスされたアクセス管理領域に対応する前記アクセス回数テーブルの空間に前記アクセスされたアクセス管理領域のアクセス回数を保存し、前記アクセスされたアクセス管理領域に対応するビットベクトルのビットのうち、アクセスされたページに対応するビットを第1の値に設定することを特徴とする、メモリ装置。 - 前記メモリ装置は、揮発性メモリをさらに含み、
前記コントローラは、前記不揮発性メモリの前記複数のアクセス管理領域のうち、設定の値に到達したアクセス回数を有するアクセス管理領域に対応するビットベクトルが、前記第1の値を有する一つ又はそれ以上のビットに対応する一つ又はそれ以上のページに保存されたデータを前記揮発性メモリに移動させることを特徴とする、請求項19に記載のメモリ装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2019-0105263 | 2019-08-27 | ||
KR1020190105263A KR20210025344A (ko) | 2019-08-27 | 2019-08-27 | 이종 메모리를 갖는 메인 메모리 장치, 이를 포함하는 컴퓨터 시스템, 그것의 데이터 관리 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021034052A true JP2021034052A (ja) | 2021-03-01 |
Family
ID=74565037
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020139917A Pending JP2021034052A (ja) | 2019-08-27 | 2020-08-21 | 異種メモリを有するメモリシステム、これを含むコンピュータシステム及びそのデータ管理方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US20210064535A1 (ja) |
JP (1) | JP2021034052A (ja) |
KR (1) | KR20210025344A (ja) |
CN (1) | CN112445423A (ja) |
DE (1) | DE102020117350A1 (ja) |
Families Citing this family (4)
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 |
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)
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 | 华为技术有限公司 | 一种内存访问方法及计算机系统 |
-
2019
- 2019-08-27 KR KR1020190105263A patent/KR20210025344A/ko active Search and Examination
-
2020
- 2020-04-03 US US16/839,708 patent/US20210064535A1/en not_active Abandoned
- 2020-06-18 CN CN202010562294.2A patent/CN112445423A/zh not_active Withdrawn
- 2020-07-01 DE DE102020117350.4A patent/DE102020117350A1/de active Pending
- 2020-08-21 JP JP2020139917A patent/JP2021034052A/ja active Pending
-
2022
- 2022-04-22 US US17/727,600 patent/US20220245066A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20210064535A1 (en) | 2021-03-04 |
CN112445423A (zh) | 2021-03-05 |
US20220245066A1 (en) | 2022-08-04 |
DE102020117350A1 (de) | 2021-03-04 |
KR20210025344A (ko) | 2021-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10896136B2 (en) | Storage system including secondary memory that predicts and prefetches data | |
US11379381B2 (en) | Main memory device having heterogeneous memories, computer system including the same, and data management method thereof | |
US8443144B2 (en) | Storage device reducing a memory management load and computing system using the storage device | |
JP2021034052A (ja) | 異種メモリを有するメモリシステム、これを含むコンピュータシステム及びそのデータ管理方法 | |
JP5624583B2 (ja) | プログラム、計算処理装置、メモリ管理方法および計算機 | |
JP2017220242A (ja) | メモリ装置、メモリモジュール、及びメモリ装置の動作方法 | |
KR20190066466A (ko) | 기입 레이턴시를 줄일 수 있는 저장 장치의 동작 방법 | |
US11016904B2 (en) | Storage device for performing map scheduling and electronic device including the same | |
US20190042415A1 (en) | Storage model for a computer system having persistent system memory | |
US20190303300A1 (en) | Fast page fault handling process implemented on persistent memory | |
EP4060505A1 (en) | Techniques for near data acceleration for a multi-core architecture | |
US11526441B2 (en) | Hybrid memory systems with cache management | |
CN114270317B (zh) | 层次型存储器系统 | |
CN114341816A (zh) | 三层层次型存储器系统 | |
US20220374150A1 (en) | Adjustable timer component for semiconductor devices | |
US11941295B2 (en) | Data storage device and method for providing an adaptive data path | |
US11650843B2 (en) | Hierarchical memory systems | |
US20170153994A1 (en) | Mass storage region with ram-disk access and dma access | |
US20220229552A1 (en) | Computer system including main memory device having heterogeneous memories, and data management method thereof | |
US11106595B2 (en) | Hierarchical memory systems | |
TW202403556A (zh) | 記憶體系統及其操作方法 | |
CN114270442A (zh) | 层次型存储器系统 | |
KR20240063607A (ko) | 데이터 및 데이터 블록을 제공하는 스왑 메모리 장치, 이의 동작하는 방법, 및 이를 포함하는 전자 장치의 동작하는 방법 |