JP2016520233A - メモリシステム、メモリアクセス要求を処理するための方法、およびコンピュータシステム - Google Patents

メモリシステム、メモリアクセス要求を処理するための方法、およびコンピュータシステム Download PDF

Info

Publication number
JP2016520233A
JP2016520233A JP2016515607A JP2016515607A JP2016520233A JP 2016520233 A JP2016520233 A JP 2016520233A JP 2016515607 A JP2016515607 A JP 2016515607A JP 2016515607 A JP2016515607 A JP 2016515607A JP 2016520233 A JP2016520233 A JP 2016520233A
Authority
JP
Japan
Prior art keywords
memory
access request
data unit
unit block
type
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.)
Withdrawn
Application number
JP2016515607A
Other languages
English (en)
Inventor
▲リ▼城 ▲陳▼
▲リ▼城 ▲陳▼
立新 ▲張▼
立新 ▲張▼
明宇 ▲陳▼
明宇 ▲陳▼
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2016520233A publication Critical patent/JP2016520233A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • 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
    • 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/0215Addressing or allocation; Relocation with look ahead addressing means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • 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/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/60Details of cache memory
    • G06F2212/6024History based prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/654Look-ahead translation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Abstract

本発明は、メモリシステム、メモリアクセス要求を処理するための方法、およびコンピュータシステムを開示する。本メモリシステムは、異なる種類であり、プロセッサの動作データを記憶するように別々に構成された第1の種類のメモリおよび第2の種類のメモリと、第1の種類のメモリに位置するデータユニットブロックのフェッチアドレスを記憶するメモリインデキシングテーブルと、メモリコントローラのメモリアクセス要求を受信し、フェッチアドレスに対応するデータユニットブロックが第1の種類のメモリまたは第2の種類のメモリのどちらに記憶されているかを判断し、判断されたメモリにおいてメモリアクセス要求のフェッチ動作を完了させるバッファスケジューラと、データユニットブロックのアクセス情報を更新し、データユニットブロックのアクセス情報に従って、第2の種類のメモリ内のデータユニットブロックを第1の種類のメモリへと移動させるか否かを判断し、移動後にメモリインデキシングテーブルを更新するように構成された移動スケジューラとを備える。

Description

本発明は、コンピュータストレージ技術の分野に関し、特にメモリシステム、メモリアクセス要求を処理するための方法、およびコンピュータシステムに関する。
プロセッサの処理速度およびデータストレージの読出し速度の要件が、コンピュータ技術の急速な発達につれて増大している。マルチコアプロセッサは、2つ以上の完結した演算エンジン(コア)が1つのプロセッサへと統合されていることを指す。図1を参照すると、マルチコアマルチメモリ(multi-core multi-memory)のコンピュータアーキテクチャが、CPU 100およびストレージモジュール110を備えており、CPUは、複数のプロセッサコアおよびキャッシュを備えており、メモリコントローラが、I/Oインターフェイスによってストレージモジュールへと接続され、ストレージモジュールは、複数のメモリモジュールを備えている。
データセンタ(Data Center)における処理を必要とするデータが増えるにつれて、可能な限り多くのデータをメモリに記憶することによって処理速度を高めるために、メモリ容量に関するデータセンタの要件も増大する。1つ以上のメモリチャネルが、従来からのメモリシステムに存在でき、これらのメモリチャネルは、メモリコントローラによって管理される。各々のメモリチャネルは、1つ以上のメモリスロットをサポートすることができ、メモリモジュールは、各々のメモリスロットに取り付けられる。やりとりのための経路が、メモリコントローラと1つのメモリチャネルとの間、およびメモリチャネルとメモリモジュールとの間に存在する。種々のメモリチャネルは、互いに独立しており、種々のメモリモジュールは、互いに独立している。伝統的なメモリは、同期のタイミングにもとづくDDRx(DDR3など)プロトコルのDRAMを使用するが、DRAMは、ビット密度が低い、待機時の電力消費が大きい(DRAMは定期的なリフレッシュを必要とするため)、などの欠点を有しており、データセンタにおいてメモリが消費する電力消費は、システム全体の合計の電力消費の25%超を占めることが、研究によって示されている。近年において、相変化メモリ(Phase Change Memory、PCM)、磁気ランダムアクセスメモリ(Magnetic Random Access Memory、MRAM)、およびフラッシュメモリ(Flash)などの不揮発メモリ(Non-Volatile Memory、NVM)など、複数の新規なメモリ材料が現れてきている。これらのNVMは、ビット密度が高い、待機時の電力消費が少ない、などの利点を有するとともに、電源の異常の場合であっても、データを保持することができる(不揮発である)。一部のNVM(PCMなど)の読出しアクセスのレイテンシは、DRAMと比べてわずかに劣るだけかもしれないが、それらの書込みアクセスのレイテンシは、DRAMよりもはるかに大きく、NVMの書込み耐久性は限られている。これらの欠点ゆえに、NVMは、DRAMを完全に置き換えるメモリとしてよりもむしろ、DRAMの拡張メモリとして役に立つ。拡張メモリは、これに限られるわけではないがNVMを含み、他の種類のストレージも含む。
DRAMと拡張メモリとのハイブリッドメモリを使用することが、将来の傾向となっており、DRAMが通常は拡張メモリのためのキャッシュ(Cache)として使用され、頻繁にアクセスされるデータが、アクセスのレイテンシを小さくするために、DRAMに配置される。しかしながら、従来からのDDR同期フェッチタイミングは、この種の混成の非一様なフェッチのレイテンシを直接処理することができず、処理を担当するソフトウェア(オペレーティングシステムOSまたは仮想マシンモニタVMMなど)を必要とする。ハイブリッドメモリは、ソフトウェアにとって透過的(transparent)でない。
従来からのDDRメモリの同期アクセスインターフェイスは、アクセスコマンドが固有のレイテンシを有することを必要とし、したがってDDRメモリは、ハイブリッドメモリによってもたらされるこの種の非一様なフェッチのレイテンシ特性を直接処理することができず、非一様なレイテンシの処理を担当するソフトウェア(オペレーティングシステムまたは仮想マシンモニタなど)を必要とする。図2が、ソフトウェアがハイブリッドメモリへのアクセスの要求を処理するプロセスを示している。ここでは、OS(オペレーティングシステム)が例として使用され、VMM(仮想マシンモニタ)は、OSの機構と同様の機構を有する。この場合、下位層(underlying layer)におけるハイブリッドメモリは、OSにとって透過的でない。OSは、どのページ(Page)が現時点においてDRAM内に存在し、どのページが拡張メモリにのみ存在するのかを、維持する必要がある。これは、通常は、ページテーブルのエントリにフラグバイトを追加することによって実現される。メモリアクセス要求の受信時に、OSは、最初にページテーブルを照会し、アクセスすべきデータがDRAM内に存在するのかどうかを学習する。存在する場合、DRAMへの直接のアクセスが行われ、存在しない場合、ページフォルト(Page Fault)を生成する必要があり、最初にページが拡張メモリからDRAMへと移動させられ、対応するページテーブルのエントリのフラグバイトが更新され、最終的にメモリアクセス要求をDRAMへと送信することができる。
性能を最適化するために、ソフトウェアは、ページのアクセス頻度情報の収集をさらに担当し、頻度情報は、通常は、ページの移動の戦略を案内するために、ページテーブルのエントリに記憶され、例えば書込みが頻繁に行われるページがDRAMに記憶される場合、ソフトウェアのオーバヘッドが比較的大きい。さらに、ハイブリッドメモリを使用する大規模なシステムにおいては、マシンの状態を拡張メモリへと再び書き込むために、チェックポイント保護(Checkpoint protection)をソフトウェアにおいて定期的に実行することがさらに必要である。
本発明の実施形態の目的は、メモリアクセス速度を改善するために、メモリシステムおよびメモリアクセス要求のための方法を提供することにある。
第1の態様によれば、
プロセッサの動作データを記憶するように別々に構成された種類の異なる第1の種類のメモリおよび第2の種類のメモリと、
前記第1の種類のメモリに位置するデータユニットブロックのフェッチアドレスを含むメモリインデキシングテーブルを記憶するように構成されたバッファと、
フェッチアドレスおよびフェッチ動作を含むメモリコントローラによって送信されたメモリアクセス要求を受信し、前記フェッチアドレスおよび前記メモリインデキシングテーブルに従って、前記フェッチアドレスに対応するデータユニットブロックが前記第1の種類のメモリまたは前記第2の種類のメモリのどちらに記憶されているかを判断し、該判断された第1の種類のメモリまたは第2の種類のメモリにおいて前記メモリアクセス要求の前記フェッチ動作を達成し、前記メモリアクセス要求の前記フェッチ動作の結果を前記メモリコントローラへと返すように構成されたバッファスケジューラと
を備えるメモリシステムが提供される。
第1の考えられる実施のやり方において、
前記バッファスケジューラは、前記フェッチアドレスに対応するデータユニットブロックが前記第2の種類のメモリに記憶されていると判断される場合に、該データユニットブロックのアクセス情報の更新の通知を送信するようにさらに構成され、
当該メモリシステムは、
前記移動スケジューラによって送信された通知を受信して、前記データユニットブロックのアクセス情報を更新し、前記データユニットブロックのアクセス情報に従って、前記第2の種類のメモリ内のデータユニットブロックを前記第1の種類のメモリへと移動させるか否かを判断し、移動後に前記メモリインデキシングテーブルを更新するように構成された移動スケジューラ
をさらに備える。
第1の態様または第1の態様の第1の考えられる実施のやり方に関連し、第2の考えられる実施のやり方において、前記バッファスケジューラは、前記データユニットブロックが前記第1の種類のメモリに位置すると判断される場合に、前記第1の種類のメモリにおいて前記メモリアクセス要求を完了させ、前記データユニットブロックが前記第2の種類のメモリに位置すると判断される場合に、前記第2の種類のメモリにおいて前記メモリアクセス要求を完了させるように特に構成される。
第1の態様または第1の態様の第1の考えられる実施のやり方に関連し、第3の考えられる実施のやり方において、前記バッファスケジューラは、前記データユニットブロックが前記第1の種類のメモリに位置すると判断される場合に、前記第1の種類のメモリにおいて前記メモリアクセス要求を完了させ、前記データユニットブロックが前記第2の種類のメモリに位置すると判断される場合に、前記第2の種類のメモリ内の前記データユニットブロックを前記第1の種類のメモリへと移動させ、前記第1の種類のメモリにおいて前記メモリアクセス要求を完了させるように特に構成される。
第1の態様あるいは第1の態様の第2の考えられる実施のやり方または第1の態様の第3の考えられる実施のやり方に関連し、第4の考えられる実施のやり方において、前記バッファスケジューラは、
前記メモリコントローラによって送信されたメモリアクセス要求パケットを解析して、前記フェッチアドレスおよび前記フェッチ動作を含むメモリアクセス要求を抽出するように構成された解析モジュールと、
前記第1の種類のメモリにアクセスするメモリアクセス要求を記憶するように構成された第1の要求待ち行列と、
前記第2の種類のメモリにアクセスするメモリアクセス要求を記憶するように構成された第2の要求待ち行列と、
前記フェッチアドレスを使用することによって前記メモリインデキシングテーブルを照会して、メモリアクセス要求によって要求されたデータユニットブロックが第1の種類のメモリ内にあるか否かを判断し、該データユニットブロックが前記第1の種類のメモリ内にある場合に前記メモリアクセス要求を前記第1の要求待ち行列に記憶し、該データユニットブロックが前記第1の種類のメモリ内にない場合に前記メモリアクセス要求を前記第2の要求待ち行列に記憶するように構成された判断モジュールと、
前記第1の種類のメモリにアクセスする前記メモリアクセス要求のフェッチ動作の結果を記憶するように構成された第1の返送待ち行列と、
前記第2の種類のメモリにアクセスする前記メモリアクセス要求のフェッチ動作の結果を記憶するように構成された第2の返送待ち行列と、
前記第1の要求待ち行列内の前記メモリアクセス要求を前記第1の種類のメモリへとスケジュールし、該メモリアクセス要求に対応するフェッチ動作を実行し、前記第2の要求待ち行列内の前記メモリアクセス要求を前記第2の種類のメモリへとスケジュールし、該メモリアクセス要求に対応するフェッチ動作を実行するように構成されたスケジューリングモジュールと、
複数のメモリアクセス要求のフェッチ動作の結果をパケットへとパッケージし、該パケットを前記メモリコントローラへと返すように構成されたパッケージングモジュールと
を備える。
第1の態様、あるいは第1の態様の第2の考えられる実施のやり方、第1の態様の第3の考えられる実施のやり方、または第1の態様の第4の考えられる実施のやり方に関連し、第5の考えられる実施のやり方において、
前記アクセス情報は、アクセス動作の量を含んでおり、
前記移動スケジューラは、
移動しきい値を記憶するように構成されたレジスタと、
前記アクセス動作の量を前記移動しきい値と比較し、比較結果に応じて、前記第2の種類のメモリ内のデータユニットブロックを前記第1の種類のメモリへと移動させるか否かを判断するように構成された移動判断ロジカルモジュールと、
前記移動判断ロジカルが移動が必要であるとの結果を出力するときに移動コマンドを記憶するように構成されたコマンドバッファと、
前記第2の種類のメモリ内に記憶された前記移動コマンドに対応するデータユニットブロックのデータを一時的に記憶するように構成されたデータバッファと、
前記データユニットブロックに対応する前記アクセス動作の量を更新し、前記移動判断ロジカルが移動が必要であるとの結果を出力するときに前記メモリインデキシングテーブルを更新するように構成された更新モジュールと
を備える。
第1の態様、あるいは第1の態様の第2の考えられる実施のやり方、第1の態様の第3の考えられる実施のやり方、第1の態様の第4の考えられる実施のやり方、または第1の態様の第5の考えられる実施のやり方に関連し、第6の考えられる実施のやり方において、前記第1の種類のメモリは、揮発メモリモジュールであり、前記第2の種類のメモリは、不揮発メモリモジュールである。
第1の態様、あるいは第1の態様の第2の考えられる実施のやり方、第1の態様の第3の考えられる実施のやり方、第1の態様の第4の考えられる実施のやり方、または第1の態様の第5の考えられる実施のやり方に関連し、第7の考えられる実施のやり方において、前記第1の種類のメモリのアクセス速度は、前記第2の種類のメモリのアクセス速度よりも高速である。
第2の態様によれば、
プロセッサの動作データを記憶するように別々に構成された揮発メモリおよび不揮発メモリと、
データユニットブロックのアクセス情報を示すために用いられ、該データユニットブロックのフェッチアドレス、メモリ位置、およびフェッチ動作の量を含んでおり、前記メモリ位置は該データユニットブロックが前記揮発メモリまたは前記不揮発メモリのどちらに記憶されているかを示しているタグテーブルを記憶するように構成されたバッファと、
フェッチアドレスおよびフェッチ動作を含むメモリコントローラのメモリアクセス要求を受信し、前記フェッチアドレスを使用することによって前記タグテーブルを照会することで、前記データユニットブロックが前記揮発メモリまたは前記不揮発メモリのどちらに記憶されているかを判断し、該判断された揮発メモリまたは不揮発メモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリコントローラへと返すように構成されたバッファスケジューラと
を備えるメモリシステムが提供される。
第2の態様の第1の考えられる実施のやり方において、前記バッファスケジューラは、前記データユニットブロックのアクセス情報の更新の通知を送信するようにさらに構成され、
当該メモリシステムは、
前記通知を受信して、前記タグテーブル内の前記データユニットブロックのアクセス情報を更新し、前記データユニットブロックのアクセス情報に従って、前記不揮発メモリ内のデータユニットブロックを前記揮発メモリへと移動させるか否かを判断し、移動後に前記タグテーブルを更新するように構成された移動スケジューラ
をさらに備える。
第2の態様の第2の考えられる実施のやり方において、前記バッファスケジューラは、
前記メモリコントローラによって送信されたメモリアクセス要求パケットを解析して、メモリアクセス要求を抽出するように構成された解析モジュールと、
前記揮発メモリにアクセスするメモリアクセス要求を記憶するように構成された第1の要求待ち行列と、
前記不揮発メモリにアクセスするメモリアクセス要求を記憶するように構成された第2の要求待ち行列と、
前記フェッチアドレスを使用することによってメモリインデキシングテーブルを照会して、各々のメモリアクセス要求によってアクセスされるデータユニットブロックが前記揮発メモリ内にあるか否かを判断し、該データユニットブロックが前記揮発メモリ内にある場合に前記メモリアクセス要求を前記第1の要求待ち行列に記憶し、該データユニットブロックが前記揮発メモリ内にない場合に前記メモリアクセス要求を前記第2の要求待ち行列に記憶し、該データユニットブロックの前記アクセス情報の更新の通知を送信するように構成された判断モジュールと、
前記揮発メモリにアクセスする前記メモリアクセス要求の結果を記憶するように構成された第1の返送待ち行列と、
前記不揮発メモリにアクセスする前記メモリアクセス要求の結果を記憶するように構成された第2の返送待ち行列と、
前記第1の要求待ち行列内の前記メモリアクセス要求を前記揮発メモリへとスケジュールして、該メモリアクセス要求に対応するフェッチ動作を実行し、前記第2の要求待ち行列内の前記メモリアクセス要求を前記不揮発メモリへとスケジュールして、該メモリアクセス要求に対応するフェッチ動作を実行するように構成されたスケジューリングモジュールと、
複数のメモリアクセス要求の結果をパケットへとパッケージし、該パケットを前記メモリコントローラへと返すように構成されたパッケージングモジュールと
を備える。
第2の態様または第2の態様の第1の考えられる実施のやり方に関連し、第3の考えられる実施のやり方において、前記アクセス情報は、アクセス動作の量を含んでおり、
前記移動スケジューラは、
移動しきい値を記憶するように構成されたレジスタと、
前記アクセス動作の量を前記移動しきい値と比較して、前記不揮発メモリ内のページを前記揮発メモリへと移動させるか否かを判断するように構成された移動判断ロジカルモジュールと、
前記移動判断ロジカルが移動が必要であるとの結果を出力するときに移動コマンドを記憶するように構成されたコマンドバッファと、
前記不揮発メモリ内に記憶された前記移動コマンドに対応するデータユニットブロックのデータを一時的に記憶するように構成されたデータバッファと、
前記データユニットブロックに対応する前記アクセス動作の量を更新し、前記移動判断ロジカルが移動が必要であるとの結果を出力するときに前記メモリインデキシングテーブルを更新するように構成されたタグ更新モジュールと
を備える。
第2の態様、あるいは第2の態様の第1の考えられる実施のやり方、第2の態様の第2の考えられる実施のやり方、または第2の態様の第3の考えられる実施のやり方に関連し、第4の考えられる実施のやり方において、前記揮発メモリは、DRAM(ダイナミックランダム・アクセス・メモリ、dynamic random access memory)であり、前記不揮発メモリは、NVM(不揮発メモリ、non-volatile memory)である。
第3の態様によれば、メモリアクセス要求を処理するための方法であって、
メモリアクセス要求パケットを受信し、該要求パケットからメモリアクセス要求のフェッチアドレスおよびフェッチ動作を取得するステップと、
前記メモリアクセス要求内の前記フェッチアドレスを使用することによってメモリインデキシングテーブルを照会して、該アクセス要求に対応するデータユニットブロックが第1の種類のメモリまたは該第1の種類のメモリとは異なる種類の第2の種類のメモリのどちらに記憶されているかを判断し、移動スケジューラに対して前記データユニットブロックのアクセス情報の更新を指示するステップと、
前記データユニットブロックが前記第1の種類のメモリに記憶されている場合に、前記第1の種類のメモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップと、
前記データユニットブロックが前記第2の種類のメモリに記憶されている場合に、前記第2の種類のメモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップと
を含む方法が提供される。
第1の考えられる実施のやり方において、前記データユニットブロックが前記第2の種類のメモリに記憶されている場合に、前記第2の種類のメモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップは、
前記データユニットブロックが前記第2の種類のメモリに記憶されている場合に、アクセス対象の前記データユニットブロックを前記第1の種類のメモリへと移動させ、次いで前記第1の種類のメモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップ
を含む。
第2の考えられる実施のやり方において、前記データユニットブロックが前記第2の種類のメモリに記憶されている場合に、前記第2の種類のメモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップは、
前記データユニットブロックが前記第2の種類のメモリに記憶されている場合に、前記第2の種類のメモリに直接アクセスして前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップ
を含む。
第3の態様、あるいは第3の態様の第1の考えられる実施のやり方または第3の態様の第2の考えられる実施のやり方に関連し、第3の考えられる実施のやり方において、当該方法は、
前記データユニットブロックの前記アクセス情報に従って、前記移動スケジューラによって、前記第2の種類のメモリ内に位置する前記データユニットブロックを前記第1の種類のメモリへと移動させるか否かを判断するステップ
をさらに含む。
第3の態様の第3の考えられる実施のやり方に関連し、第4の考えられる実施のやり方において、
前記アクセス情報は、アクセス動作の量を含んでおり、
前記データユニットブロックの前記アクセス情報に従って、前記移動スケジューラによって、前記第2の種類のメモリ内に位置する前記データユニットブロックを前記第1の種類のメモリへと移動させるか否かを判断するステップは、
前記移動スケジューラによって、記録された前記データユニットブロックのアクセス動作の量を移動しきい値と比較し、前記アクセス動作の量が前記移動しきい値以上である場合に移動が必要であると判断し、前記アクセス動作の量が前記移動しきい値未満である場合に移動は不要であると判断するステップ
を含む。
第3の態様の第4の考えられる実施のやり方に関連し、第5の考えられる実施のやり方において、当該方法は、
前記移動スケジューラによって、移動が必要であると判断される場合に前記メモリインデキシングテーブルの情報を更新するステップ
をさらに含む。
第4の態様によれば、メモリアクセス要求を処理するための方法であって、
メモリアクセス要求パケットを受信し、該要求パケットからメモリアクセス要求のフェッチアドレスおよびフェッチ動作を取得するステップと、
データユニットブロックのアクセス情報を示すために用いられ、該データユニットブロックのフェッチアドレス、メモリ位置、およびフェッチ動作の量を含んでおり、前記メモリ位置は該データユニットブロックが揮発メモリまたは不揮発メモリのどちらに記憶されているかを示しているタグテーブルを、前記メモリアクセス要求内の前記フェッチアドレスを使用することによって照会して、該アクセス要求に対応するデータユニットブロックが揮発メモリまたは不揮発メモリのどちらに記憶されているかを判断するステップと、
前記データユニットブロックが前記揮発メモリに記憶されている場合に、前記揮発メモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップと、
前記データユニットブロックが前記不揮発メモリに記憶されている場合に、前記不揮発メモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップと
を含む方法が提供される。
第1の考えられる実施のやり方において、前記データユニットブロックが前記不揮発メモリに記憶されている場合に、前記不揮発メモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップは、
前記データユニットブロックが前記不揮発メモリに記憶されている場合に、アクセス対象の前記データユニットブロックを前記揮発メモリへと移動させ、次いで前記揮発メモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップ
を含む。
第2の考えられる実施のやり方において、前記データユニットブロックが前記不揮発メモリに記憶されている場合に、前記不揮発メモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップは、
前記データユニットブロックが前記不揮発メモリに記憶されている場合に、前記不揮発メモリに直接アクセスして前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップ
を含む。
第4の態様、あるいは第4の態様の第1の考えられる実施のやり方、または第4の態様の第2の考えられる実施のやり方に関連し、第3の考えられる実施のやり方において、
前記アクセス情報は、アクセス動作の量を含んでおり、
前記データユニットブロックの前記アクセス情報に従って、前記不揮発メモリ内に位置する前記データユニットブロックを前記揮発メモリへと移動させるか否かを判断するステップは、
記録された前記データユニットブロックのアクセス動作の量を移動しきい値と比較し、前記アクセス動作の量が前記移動しきい値以上である場合に移動が必要であると判断し、前記アクセス動作の量が前記移動しきい値未満である場合に移動は不要であると判断するステップ
を含む。
第4の態様、あるいは第4の態様の第1の考えられる実施のやり方、第4の態様の第2の考えられる実施のやり方、または第4の態様の第3の考えられる実施のやり方に関連し、第4の考えられる実施のやり方において、当該方法は、
前記タグテーブル内の前記データユニットブロックのアクセス情報を更新するステップと、
前記データユニットブロックの前記アクセス情報に従って、前記不揮発メモリ内に位置する前記データユニットブロックを前記揮発メモリへと移動させるか否かを判断し、移動後に前記タグテーブルを更新するステップと
をさらに含む。
第5の態様によれば、
メモリアクセス要求を開始するように構成されたメモリコントローラを備えているマルチコアプロセッサと、
第1の態様または第2の態様のいずれかの考えられる実施のやり方に従ってもたらされるメモリシステムと
を備えるコンピュータシステムが提供される。
本発明の実施形態において、異なる種類のメモリの管理が、ハードウェアによって実行される。種類が異なる第1の種類のメモリおよび第2の種類のメモリが、メモリシステムに存在する。メモリアクセス要求を、第1の種類のメモリおよび第2の種類のメモリにおいて別々に完了させることができ、これはOSにとって透過的であり、ページフォルトを引き起こすことがなく、メモリアクセス速度を改善することができる。
本発明の実施形態または先行技術における技術的解決策をより明瞭に説明するために、実施形態または先行技術の説明に必要な添付の図面を、以下で簡単に紹介する。当然ながら、添付の図面は、以下の説明において、あくまでも本発明のいくつかの実施形態を示すにすぎず、当業者であれば、依然として、創造的な活動を必要とすることなくこれらの添付の図面から他の図を導き出すことが可能である。
マルチコアマルチメモリコンピュータのアーキテクチャの概略図である。 ハイブリッドメモリへのアクセスを処理するソフトウェアの概略のフロー図である。 本発明によるメモリシステムの実施形態の概略の構造図である。 本発明によるバッファスケジューラの実施形態の概略の構造図である。 本発明による移動スケジューラの実施形態の概略の構造図である。 本発明によるメモリシステムの別の実施形態の概略の構造図である。 本発明によるバッファスケジューラの別の実施形態の概略の構造図である。 本発明によるメモリアクセス要求を処理するバッファスケジューラの概略のフロー図である。 本発明によるタグテーブルの実施形態の概略の構造図である。 本発明による移動スケジューラの別の実施形態の概略の構造図である。 本発明によるページの移動の要否を判断する移動スケジューラの概略のフロー図である。 本発明の実施形態によるコンピュータシステムの実施形態の概略の構造図である。 本発明の実施形態によるコンピュータシステムの別の実施形態の概略の構造図である。 本発明の実施形態によるメモリアクセス要求を処理するための方法の実施形態の概略のフロー図である。 本発明の実施形態によるメモリアクセス要求を処理するための方法の別の実施形態の概略のフロー図である。
以下は、本発明の実施形態における技術的解決策を、本発明の実施形態における添付の図面を参照して、明瞭かつ充分に説明する。当然ながら、説明される実施形態は、あくまでも本発明の一部の実施形態であり、すべての実施形態ではない。当業者が本発明の実施形態にもとづいて創造的な活動を必要とすることなく得ることができるすべての他の実施形態は、本発明の保護の範囲に含まれる。
本発明の技術的解決策の理解を容易にするために、本発明の実施形態において現れるいくつかの技術用語を、最初に説明する。本発明の実施形態において言及されるCPU(Central Processing Unit、中央演算処理装置)は、プロセッサの一種であり、プロセッサは、ASIC(Application Specific Integrated Circuit、特定用途向け集積回路)または本発明の実施形態を実行するように構成された1つ以上の他の集積回路であってもよい。当業者であれば、プロセッサの別の実施のやり方で本発明の実施形態におけるCPUを置き換えてもよいことを、理解できるであろう。
メモリコントローラは、メモリモジュール(あるいは、メモリと称される)の制御ならびにコンピュータシステムの内部のメモリとプロセッサとの間のデータ交換のための重要な一部分である。現時点において、一般的なやり方は、CPUにメモリコントローラを埋め込むことである。しかしながら、メモリコントローラおよびCPUは、別個独立に実現され、接続を使用することによって通信してもよい。
メモリモジュールは、プロセッサ(例えば、CPU)の動作データを記憶するように構成される。一般に、メモリモジュールは、1つ以上のストレージユニット(あるいは、メモリチップと称される)を備える。メモリチャネルインターフェイスが、メモリモジュール上に位置し、メモリチャネルの接続に用いられるインターフェイスである。メモリチャネルは、メモリモジュールをメモリコントローラへと接続するチャネルである。
いくつかの一般的に用いられるメモリモジュールが、以下で例として説明される。DIMM(Dual Inline Memory Modules、デュアル・インライン・メモリ・モジュール)が、Pentium(登録商標) CPUの発売後に現れた新規なメモリモジュールである。DIMMは、64ビットのデータチャネルを提供し、したがってPentium(登録商標)のマザーボードにおいて単独で使用することができる。DIMMは、SIMM(single in-line memory module、シングル・インライン・メモリ・モジュール)のスロットよりも長く、DIMMは、新たな168ピンのEDORAM(Extended Data Output RAM、拡張データ出力RAM)メモリもサポートする。DRAM(Dynamic Random Access Memory、ダイナミック・ランダム・アクセス・メモリ)が、最も一般的なメモリチップであり、DIMMまたはSIMMは、1つ以上のDRAMを備えることができる。DRAMは、きわめて短い時間だけしかデータを保持することができない。データを保持するために、DRAMは、ストレージ用コンデンサを使用し、したがって或る時間期間のたびにリフレッシュが必要であり、ストレージユニットがリフレッシュされない場合、記憶された情報は失われる。DRAMに記憶されたデータは、電源オフまたは電源の異常の場合にも失われてしまう。NVM(Non-Volatile Memory、不揮発メモリ)は、メモリチップとして使用することができる別の種類のメモリグラニュール(memory granule)であり、DIMMまたはSIMMは、1つ以上のNVMを備えることができる。一般に、NVMは、プログラムおよびデータを記憶するために使用され、NVMに記憶されたデータは、電源オフまたは電源の異常の場合も失われることがなく、これがDRAMの特徴からの違いである。メモリがデータの読出しまたは書込みを行うたびに、特定のデータユニットにもとづく動作が実行され、ここでデータユニットは、通常は4kのデータを表すページまたはメモリページ(Page)である。
さらに、本発明の実施形態において説明される「接続」が、2つ以上の仮想のモジュールの間、2つ以上の実在のモジュールの間、または実在のモジュールと仮想のモジュールとの間に通信接続が存在することを示しており、その具体的な手段が、1つ以上の通信ラインまたは信号線であってよいことに、注意すべきである。特に指定されない限り、「接続」は、直接接続であってよく、インターフェイスまたはポートを使用することによる接続であってよく、あるいは別の仮想のモジュールまたは実在のモジュールを使用することによる接続であってよい。特に指定されない限り、本発明の実施形態における「第1」および「第2」は、区別のためのものにすぎず、特定の順番を示すためのものではない。
図3を参照すると、図3は、
プロセッサの動作データを記憶するように構成された第1の種類のメモリ301と、
プロセッサの動作データを記憶するように構成され、第1の種類のメモリとは種類が異なる第2の種類のメモリ302と、
第1の種類のメモリに位置するデータユニットブロックのフェッチアドレスを含むメモリインデキシングテーブルを記憶するように構成されたバッファ303と、
フェッチアドレスおよびフェッチ動作を含むメモリコントローラのメモリアクセス要求を受信し、フェッチアドレスおよびメモリインデキシングテーブルに従って、フェッチアドレスに対応するデータユニットブロックが第1の種類のメモリまたは第2の種類のメモリのどちらに記憶されているかを判断し、判断された第1の種類のメモリまたは第2の種類のメモリにおいてメモリアクセス要求を達成し、メモリアクセス要求の結果をメモリコントローラへと返すように構成されたバッファスケジューラ304と
を備えるメモリシステムの実施形態を示している。
さらに、一実施形態において、バッファスケジューラは、フェッチアドレスに対応するデータユニットブロックが第2の種類のメモリに記憶されていると判断されるときに、データユニットブロックのアクセス情報の更新の通知を送信するようにさらに構成される。メモリシステムは、移動スケジューラ305をさらに備え、移動スケジューラは、移動スケジューラによって送信される通知を受信して、データユニットブロックのアクセス情報を更新し、データユニットブロックのアクセス情報に従って、第2の種類のメモリ内のデータユニットブロックを第1の種類のメモリへと移動させるか否かを判断し、移動後にメモリインデキシングテーブルを更新するように構成される。
第1の種類のメモリおよび第2の種類のメモリは、個別にメモリモジュールであってよく、あるいは個別に少なくとも1つのメモリチップであってよく、プロセッサの動作データを記憶できる限りにおいて、それらの粒度(granularities)に制約はない。第1の種類のメモリおよび第2の種類のメモリは、種類が異なっており、種類の相違は、2つのメモリの記憶媒体の種類の相違、または2つのメモリの記憶速度の相違であってよい。一実施形態においては、第1の種類のメモリが、揮発メモリモジュールであり、第2の種類のメモリが、不揮発メモリモジュールである(第1の種類のメモリの読出し/書込み速度が、第2の種類のメモリの読出し/書込み速度よりも高速である)。別の実施形態においては、第1の種類のメモリおよび第2の種類のメモリの両方が、揮発メモリモジュールであり、第1の種類のメモリの読出し/書込み速度が、第2の種類のメモリの読出し/書込み速度よりも高速である。別の実施形態においては、第1の種類のメモリおよび第2の種類のメモリの両方が、不揮発メモリモジュールであり、第1の種類のメモリの読出し/書込み速度が、第2の種類のメモリの読出し/書込み速度よりも高速である。
一実施形態において、バッファスケジューラは、第2の種類のメモリにおいてメモリアクセス要求を直接達成することができる。具体的には、バッファスケジューラは、データユニットブロックが第1の種類のメモリに位置すると判断される場合に、第1の種類のメモリにおいてメモリアクセス要求を達成し、データユニットブロックが第2の種類のメモリに位置すると判断される場合に、第2の種類のメモリにおいてメモリアクセス要求を達成するように構成される。
別の実施形態において、バッファスケジューラは、第2の種類のメモリにおいてメモリアクセス要求を直接達成することがない。具体的には、バッファスケジューラは、データユニットブロックが第1の種類のメモリに位置すると判断される場合に、第1の種類のメモリにおいてメモリアクセス要求を達成し、データユニットブロックが第2の種類のメモリに位置すると判断される場合に、第2の種類のメモリ内のデータユニットブロックを第1の種類のメモリへと移動させ、第1の種類のメモリにおいてメモリアクセス要求を達成するように構成される。一実施形態においては、データユニットブロックを第1の種類のメモリへと複製し、その後にアクセスの完了後に削除することができる。
一実施形態においては、アクセス情報が、アクセス動作の量を含み、移動スケジューラが、記録されたデータユニットブロックのアクセス動作の量を移動しきい値と比較し、アクセス動作の量が移動しきい値以上である場合に、移動が必要であると判断し、アクセス動作の量が移動しきい値未満である場合に、移動は不要であると判断するように特に構成される。移動しきい値を、必要に応じて設定することができる。
メモリインデキシングテーブルが、第1の種類のメモリ内のデータユニットブロックを示すために使用される。一実施形態において、メモリインデキシングテーブルは、第1の種類のメモリに位置するデータユニットブロックのフェッチアドレスだけを記憶する。別の実施形態において、メモリインデキシングテーブルは、すべてのメモリアクセス要求に対応するデータユニットブロックのフェッチアドレスを記憶し、データユニットブロックのフェッチアドレス、メモリ位置、およびフェッチ動作の量を含み、ここでメモリ位置は、データユニットブロックが第1の種類のメモリまたは第2の種類のメモリのどちらに記憶されているかを示す。別の実施形態において、メモリインデキシングテーブルは、すべてのメモリアクセス要求に対応するデータユニットブロックのフェッチアドレスを記憶し、データユニットブロックのフェッチアドレス、メモリ位置、フェッチ動作の量、およびデータ更新フラグを含み、ここでメモリ位置は、データユニットブロックが第1の種類のメモリまたは第2の種類のメモリのどちらに記憶されているかを示し、データ更新フラグは、データユニットブロックの内容が更新されたことを示す。受け取ったメモリアクセス要求のフェッチ動作が書込み動作である場合、データユニットブロックの内容が更新される。当然ながら、メモリインデキシングテーブルは、他の情報も記憶することができる。メモリインデキシングテーブルを記憶するバッファを、SRAMおよびDRAMなどの記憶媒体を使用することによって物理的に実現することができる。SRAMが、アクセス速度がより速いがゆえに推奨される。物理的な位置に関して、バッファは、バッファスケジューラの内部または外部に位置することができ、あるいは移動スケジューラの内部または外部に位置することができる。
図4を参照すると、一実施形態において、バッファスケジューラは、
メモリコントローラによって送信されたメモリアクセス要求パケットを解析してメモリアクセス要求を抽出するように構成された解析モジュール401と、
第1の種類のメモリのアクセスのためのメモリアクセス要求を記憶するように構成された第1の要求待ち行列402と、
第2の種類のメモリのアクセスのためのメモリアクセス要求を記憶するように構成された第2の要求待ち行列403と、
メモリアクセス要求内のフェッチアドレスを使用することによってメモリインデキシングテーブルを照会して、各々のメモリアクセス要求が要求するデータユニットブロックが第1の種類のメモリ内にあるかどうかを判断し、データユニットブロックが第1の種類のメモリ内にある場合にメモリアクセス要求を第1の要求待ち行列に記憶し、データユニットブロックが第1の種類のメモリ内にない場合にメモリアクセス要求を第2の要求待ち行列に記憶するように構成された判断モジュール404と、
第1の要求待ち行列内のメモリアクセス要求を第1の種類のメモリへとスケジュールして、メモリアクセス要求に対応するフェッチ動作を実行し、第2の要求待ち行列内のメモリアクセス要求を第2の種類のメモリへとスケジュールして、メモリアクセス要求に対応するフェッチ動作を実行するように構成されたスケジューリングモジュール405と、
第1の種類のメモリにアクセスするメモリアクセス要求の結果を記憶するように構成された第1の返送待ち行列406と、
第2の種類のメモリにアクセスするメモリアクセス要求の結果を記憶するように構成された第2の返送待ち行列407と、
少なくとも1つのメモリアクセス要求の結果をパケットへとパッケージし、パケットをメモリコントローラへと返送するように構成されたパッケージングモジュール408と
を備える。
図5を参照すると、一実施形態においては、アクセス情報がアクセス動作の量を含み、移動スケジューラが、
移動しきい値を記憶するように構成されたレジスタ501と、
アクセス動作の量を移動しきい値と比較し、第2の種類のメモリ内のページを第1の種類のメモリへと移動させるか否かを判断するように構成された移動判断ロジカル502と、
移動判断ロジカルが移動が必要であるとの結果を出力するときに、移動コマンドを記憶するように構成されたコマンドバッファ503と、
第2の種類のメモリに記憶されたデータであって、移動コマンドに対応するデータユニットブロックのデータを、一時的に記憶するように構成されたデータバッファ504と、
データユニットブロックに対応するアクセス動作の量を更新し、移動判断ロジカルが移動が必要であるとの結果を出力するときに、メモリインデキシングテーブルを更新するように構成された更新モジュール505と
を備える。
アクセス動作の量が移動しきい値以上である場合、移動判断ロジカル503は、第2の種類のメモリ内のページを第1の種類のメモリへと移動させる必要があるとの結果を出力し、アクセス動作の量が移動しきい値未満である場合、移動判断ロジカル503は、第2の種類のメモリ内のページを第1の種類のメモリへと移動させる必要がないとの結果を出力する。
メモリインデキシングテーブルが第1の種類のメモリ内に位置するデータユニットブロックのフェッチアドレスだけを記憶する場合、移動スケジューラは、データユニットブロックの動作情報を記憶するように構成された第2のレジスタをさらに備え、この動作情報は、アクセス動作の量を含む。別の実施形態において、メモリインデキシングテーブルは、すべてのメモリアクセス要求に対応するデータユニットブロックのフェッチアドレスを記憶し、移動スケジューラは、メモリインデキシングテーブル内のデータユニットブロックのアクセス動作の量を直接更新する。当然ながら、レジスタおよび第2のレジスタは、物理的には1つのユニットまたは2つのユニットであってよく、コマンドバッファおよびデータバッファも、物理的には1つのユニットまたは2つのユニットであってよい。レジスタは、物理的には、移動判断ロジカルの内部または外部に位置することができる。
アクセス動作は、読出し動作および書込み動作を含む。レジスタは、読出し動作の移動しきい値および書込み動作の移動しきい値を別々に記憶することができる。第2のレジスタは、データユニットブロックの読出し動作の量および書込み動作の量を別々に記憶することができる。判断時に、移動判断ロジカル503は、読出し動作および書込み動作を別々に判断することができる。
以上の実施形態における「移動」は、メモリ内のデータが或るメモリモジュールから別のメモリモジュールへと動かされることを指し、本明細書における「移動」を、「動かすこと」または「複製」で置き換えることも可能である。以上の実施形態における「データユニットブロック」は、メモリモジュールによって記憶されるデータの単位を指し、あるいはメモリにおけるデータの移動の最小単位を指す。一実施形態において、データユニットブロックは、ページ(page)であり、通常はページは4kのメモリデータを表す。
以上の実施形態において、異種混交性を実行するためにハードウェアを使用するメモリシステムは、異なる種類のメモリの管理を実行する。異なる種類の第1の種類のメモリおよび第2の種類のメモリが、メモリシステムに存在し、メモリアクセス要求を、第1の種類のメモリおよび第2の種類のメモリのそれぞれにおいて達成することができ、それがOSまたは処理のための他のソフトウェアを必要とせず、ページフォルトを引き起こすことがなく、メモリアクセス速度を改善でき、ハードウェアによる実行は、ソフトウェアのオーバヘッドを減らすことができる。
図6を参照すると、図6は、
プロセッサの動作データを記憶するように構成された揮発メモリ601と、
プロセッサの動作データを記憶するように構成された不揮発メモリ602と、
データユニットブロックのアクセス情報を示すために使用されるタグ(tag)テーブルを記憶し、さらにデータユニットブロックのフェッチアドレス、メモリ位置、およびフェッチ動作の量を記憶するように構成され、メモリ位置はデータユニットブロックが揮発メモリまたは不揮発メモリのどちらに記憶されているかを示しているバッファ603と、
フェッチアドレスおよびフェッチ動作を含むメモリコントローラのメモリアクセス要求を受信し、フェッチアドレスを使用することによってタグテーブルを照会することで、フェッチアドレスに対応するページが揮発メモリまたは不揮発メモリのどちらに記憶されているかを判断し、判断された揮発メモリまたは不揮発メモリにおいてメモリアクセス要求のフェッチ動作を達成し、メモリアクセス要求の結果をメモリコントローラへと返すように構成されたバッファスケジューラ604と
を備えるメモリシステムの別の実施形態を示している。
さらに、別の実施形態において、バッファスケジューラは、データユニットブロックのアクセス情報の更新の通知を送信するようにさらに構成される。メモリシステムは、通知を受信して、タグテーブル内のデータユニットブロックのアクセス情報を更新し、データユニットブロックのアクセス情報に従って、不揮発メモリ内のデータユニットブロックを揮発メモリへと移動させるか否かを判断し、移動後にタグテーブルを更新するように構成された移動スケジューラ605をさらに備える。
この実施形態において、タグテーブルは、すべてのメモリアクセス要求に対応するデータユニットブロックのフェッチアドレスを記憶する。一実施形態において、タグテーブルは、データユニットブロックのフェッチアドレス、メモリ位置、およびフェッチ動作の量を含み、ここでメモリ位置は、データユニットブロックが第1の種類のメモリまたは第2の種類のメモリのどちらに記憶されているかを示す。別の実施形態において、タグテーブルは、データユニットブロックのフェッチアドレス、メモリ位置、フェッチ動作の量、およびデータ更新フラグを含み、ここでメモリ位置は、データユニットブロックが第1の種類のメモリまたは第2の種類のメモリのどちらに記憶されているかを示し、データ更新フラグは、データユニットブロックの内容が更新されたことを示す。受け取ったメモリアクセス要求のフェッチ動作が書込み動作である場合、データユニットブロックの内容が更新される。当然ながら、タグテーブルは、他の情報も記憶することができる。タグテーブルを記憶するバッファを、物理的には、SRAMおよびDRAMなどの記憶媒体を使用することによって実現することができる。SRAMが、アクセス速度がより速いがゆえに推奨される。物理的な位置に関して、バッファは、独立して存在でき、あるいはバッファスケジューラの内部または外部に位置することができ、もしくは移動スケジューラの内部または外部に位置することができる。
一実施形態において、データユニットブロックは、ページである。
上述の実施形態と比べて、この実施形態においては、第1の種類のメモリが、具体的には揮発メモリであり、第2の種類のメモリが、具体的には不揮発メモリであり、メモリインデキシングテーブルが、具体的にはタグテーブルであり、データユニットブロックが、具体的にはページである。当然ながら、揮発メモリおよび不揮発メモリは、別々にメモリモジュールであってよく、あるいは別々に少なくとも1つのメモリチップであってよく、それらの粒度に制約はない。上述の実施形態におけるバッファスケジューラおよび移動スケジューラの実施形態を、この実施形態においても使用することができ、相違点は、上述の実施形態における第1の種類のメモリが、この実施形態においては特に揮発メモリであり、上述の実施形態における第2の種類のメモリが、この実施形態においては特に不揮発メモリであり、上述の実施形態におけるデータユニットブロックが、この実施形態においては特にページである点にある。
一実施形態において、揮発メモリはDRAMであり、不揮発メモリはNVMである。
この実施形態において、ハイブリッドメモリの管理は、メモリシステム内のハードウェアを使用することによって実行される。動作が頻繁なページが、揮発メモリに記憶され、動作が頻繁でないページが、不揮発メモリに記憶される。メモリアクセス要求を、良好な参照の局在性を有するページのアクセス性能への無作為にアクセスされるページからの干渉を減らすように、揮発メモリおよび不揮発メモリのそれぞれにおいて達成することができ、したがってメモリアクセス速度を改善でき、不揮発メモリから揮発メモリへのページの移動を実行できることで、アクセス性能が改善される。
図7を参照すると、揮発メモリがDRAMであり、不揮発メモリがNVMであり、データユニットブロックが特にページであり、メモリアクセス要求がフェッチ要求メッセージである場合が、例として使用される。図7は、パケット解析モジュールと、パッケージングモジュールと、判断モジュールと、スケジューリングモジュールと、要求待ち行列と、返送待ち行列とを備えるバッファスケジューラの実施形態を示している。要求待ち行列および返送待ち行列は、異なる記憶媒体に従って別々に管理され、この実施形態においてはDRAM要求待ち行列、NVM要求待ち行列、DRAM返送待ち行列、およびNVM返送待ち行列を含む。パケット解析モジュールは、メモリコントローラによって送信されたメモリアクセス要求パケットの解析を担当し、メモリアクセス要求を抽出する。パケットが複数の読出し/書込み要求を含むことができ、メモリアクセス要求が、フェッチアドレス、フェッチ粒度、フェッチ動作(読出し動作または書込み動作)、および優先度などの情報を含むことに、注意すべきである。各々のメモリアクセス要求に関して、判断モジュールは、フェッチアドレスを使用することによってタグテーブルを照会して、アクセス対象のページがDRAM内にあるか否かを判断し、アクセス対象のページがDRAM内にある場合にメモリアクセス要求をDRAM要求待ち行列に配置し、アクセス対象のページがDRAM内にない場合は要求をNVM要求待ち行列に配置する。スケジューリングモジュールは、要求待ち行列内のメモリアクセス要求のスケジューリングを担当し、それぞれの物理的なインターフェイスを使用することによって要求を実行のために対応するメモリチップへとスケジューリングし、すなわちDRAMにおける要求をDRAMの物理的なインターフェイスを使用することによってスケジューリングし、NVMの要求をNVMの物理的なインターフェイスを使用することによってスケジューリングする。読出し要求の完了後に、返送されるデータは、対応する返送待ち行列に配置され、最終的に全体返送待ち行列に配置され、パッケージングモジュールが、複数の要求によって返送されるデータをパケットへとパッケージし、パケットをメモリコントローラへと返送するために使用される。
図8を参照すると、バッファスケジューラがメモリアクセス要求を処理する手順は、以下を含む。
(1)メモリアクセス要求パケットを受信した後に、バッファスケジューラがパケットを解析し、メモリアクセス要求のアドレスおよび読出し/書込み情報を得る。
(2)バッファスケジューラが、アドレスを使用することによってタグテーブルを照会し、アクセス対象のページがDRAM内にあるか否かを判断する。DRAM内にある場合、(3)へと進み、DRAM内にない場合、(4)へと進む。
(3)バッファスケジューラが、メモリアクセス要求をDRAMへと送信し、移動スケジューラに対してページのアクセス情報の更新を指示する。DRAMからのデータの取得後に、バッファスケジューラは、データをパケットへとカプセル化し、パケットをプロセッサへと返送する。要求の処理が終了する。
(4)バッファスケジューラが、メモリアクセス要求をNVMへと送信する。この場合、データがNVMからバッファスケジューラへと直接返され、次いでパケットへとカプセル化され、プロセッサへと返送される。同時に、バッファスケジューラは、移動スケジューラに対してページのアクセス情報の更新を指示する。次いで、移動スケジューラが、ページをNVMからDRAMへと移動させる必要があるか否かを判断する。必要がない場合、メモリアクセス要求の処理は終わり、必要である場合、(5)へと進む。
(5)移動スケジューラが、ページ移動動作を開始し、タグテーブルを更新する。DRAM内に依然として空きが存在する場合、移動スケジューラは、NVMからのページをDRAMへと直接配置し、DRAM内に空きが存在しない場合、移動スケジューラは、DRAMから置き換えられるべきページを選択し、新たなページをDRAMへと配置する。ここでのページ移動およびデータをNVMから返す処理が、同時に実行されてもよいことに注意すべきである。
タグテーブルに記憶される情報は、ページのアドレス、ページがどのメモリに位置しているか、およびページアクセスの量を含む。さらに、タグテーブルの主要な機能が含まれてよく、ここで主要な機能は、どの物理的なアドレス空間が現時点においてDRAM内に位置しているかを維持すること、および各ページのアクセスカウントを維持することである。タグテーブルは、直接アドレス指定を使用することができ、あるいはサーチ処理の加速および空間のオーバヘッドの削減のために、ハッシュテーブルなどの別のやり方を使用することができる。タグテーブルの更新は、ソフトウェア(例えば、OSまたはハイパーバイザ)にとって完全に透過的な移動スケジューラによって達成される。
図9は、タグテーブルの実施の例であり、ハッシュテーブルが、各ページの情報を維持するために使用される。フェッチアドレスが、ハッシュ動作において、ハッシュテーブルのインデックスを得るために使用される。複数のページが同じ場所へとハッシュされる場合(ハッシュの衝突と称される)、リンクリスト(linked list)が、複数のページの情報を接続するために使用される。ハッシュテーブルの各エントリは、対応するページのアクセス情報を含み、TAGは、アドレス全体であり、Pは、現在のページがDRAM内にあるか否かを示す存在ビットであり、Pが1である場合、現在のページがDRAM内にあることを示しており、0は、現在のページがDRAM内にないことを示しており、Dは、ページが書き換えられたか否かを示すダーティビットであり、Countは、ページのアクセスの回数を示しており、ページの移動を案内するために使用される。新たなメモリアクセス要求の受信時に、バッファスケジューラは、ハッシュ動作を実行してインデックスを取得し、指定のページに一致する情報が見つかるまでインデックスをリンクリスト内のTAGと1つずつ比較する。
図10を参照すると、揮発メモリがDRAMであり、不揮発メモリがNVMである場合が、例として使用され、移動スケジューラの実施形態が、移動判断ロジカル、タグテーブル更新モジュール、コマンドバッファ、およびデータバッファを備える。移動判断ロジカルは、アクセス対象のNVMページをDRAMへと移動させる必要があるか否かを判断するように構成される。移動判断ロジカルは、読出し/書込みアクセスの量についての移動しきい値を記憶するように構成されたレジスタを備える。コマンドバッファは、NVMページを移動させるためのコマンド(主として、移動を必要とするページのアドレスおよびページがDRAMにおいて配置されるアドレス)を記憶し、データバッファは、NVMとDRAMとの間のデータ移動のためのエージェント(agent)として機能する。バッファスケジューラがNVMへのアクセスの要求を受信したとき(タグテーブルの照会後に、アクセス要求のページがDRAM内に存在しない場合)、一方では、バッファスケジューラが、要求をスケジューリングを待つためのNVM要求待ち行列に追加すると同時に、要求を移動スケジューラへと入力する。移動判断ロジカルは、タグテーブルにおいてページのアクセス情報を照会し、移動しきい値(しきい値は、移動判断ロジカルの内部のレジスタに記憶され、設定可能である)を超えるか否かを判断し、ここでアクセス情報は、主として読出しアクセスおよび書込みアクセスの量の情報である。移動しきい値を超える場合、ページをNVMからDRAMへと移動させるためのコマンドが、コマンドバッファに追加される。移動スケジューラは、最初にデータをNVMからデータバッファへと抽出し、次いでデータをデータバッファから目標のDRAMへと配置する。移動の完了後に、対応するページの情報を、タグテーブルにおいて更新する必要がある。
図11を参照すると、図11は、移動スケジューラがページをNVMからDRAMへと移動させる必要があるか否かを判断する手順を示している。単純な移動の方針を設定することができる。最近の時間期間におけるページの読出しアクセスおよび書込みアクセスの量の統計が収集され、読出しアクセスしきい値および書込みアクセスしきい値が、それぞれTrおよびTwに設定される。最近の時間期間におけるページの読出しアクセスの量が、Trを超える場合、または最近の時間期間におけるページの書込みアクセスの量が、Twを超える場合に、ページは移動候補として選択される。
(1)NVMへと送信されたフェッチ要求について、フェッチ要求が読出し要求であるか否かを判断する。読出し要求である場合、(2)へと進み、読出し要求でない場合、(3)へと進む。
(2)最近の時間期間におけるページの読出しアクセスの量が、読出ししきい値Trを超えるか否かを判断する。超えない場合、移動は不要であり、処理は終了し、超える場合には、(4)へと進む。
(3)最近の時間期間におけるページの書込みアクセスの量が、書込みしきい値Twを超えるか否かを判断する。超えない場合、移動は不要であり、処理は終了し、超える場合には、(4)へと進む。
(4)ページを移動候補として選択し、ページをDRAM内の置き換えられるべきページとさらに比較する。ページのアクセスの量の方が多い場合、ページの移動を開始し、タグテーブルの情報を更新する。
当然ながら、段階(2)および(3)において書込みアクセスまたは書込みアクセスがしきい値を超えると判断される場合に、段階(4)を実行しなくてもよく、ページの移動が直接開始され、タグテーブルの情報が更新される。当然ながら、別の移動の方針も設定できる。
ソフトウェアにとって透過的なチェックポイント(checkpoint)保護を、以上の実施形態におけるメモリシステムについてさらに実行することができ、例えば移動スケジューラが、DRAM内の書き換えられたデータをNVMへと定期的にバックアップする。NVM内の領域の一部を、チェックポイントを特に記憶するために予約することができる。DRAM内の各々のページについて、ページが書き換えられたか否かを示すために、フラグバイトのダーティが、タグにおいて相応に設定される。移動スケジューラは、DRAM内のページを定期的に調べ、DRAM内の書き換えられたデータだけをDRAMへとバックアップする。
さらに、チェックポイントのオーバヘッドを減らすために、チェックポイントを、DRAMがリフレッシュ(Refresh)されているとき、またはバックグラウンドのエラースキャニング(ECCスクラブ(ECC Scrubbing))が実行されているときに、実行することができる。DRAMがリフレッシュされているとき、バッファスケジューラは、データをDRAMから行バッファ(Row Buffer)へと読み出し、その後にデータを書き戻す必要がある。バックグラウンドのエラースキャニングが実行されているとき、データをバッファスケジューラへと読み出す必要があり、エラーチェックが実行され、エラーが発見された後に、補正されたデータがDRAMへと書き戻される。これら2つの動作は、どちらもDRAMからのデータの読出しを必要とし、ここで読み出されたデータを、DRAMの通常の動作に影響を及ぼすことなくオーバヘッドを減らすために、定期的なチェックポイントの実行に使用することができる。
DRAMおよびNVMを含むハイブリッドメモリにおいて、DRAMについてのハードウェアプリフェッチ(Prefetch)をバッファスケジューラにおいて実行することも可能である。ハードウェアは、性能を改善するために、ページアクセスモードを学習し、プリフェッチコマンドを生成し、短時間のうちにアクセスされると予測されるページを前もってDRAMへと移動させる。また、バッファスケジューラにおいてハードウェアヴィクティム(Victim)を実行することも可能である。DRAMから追い出されたページは、短時間のうちに再びアクセスされる可能性がきわめて高いため、追い出されたページをヴィクティムバッファに配置することで、性能を改善することができる。
さらに本発明は、マルチコアプロセッサとメモリシステムとを備えるコンピュータシステムをさらに開示し、ここでマルチコアプロセッサは、メモリアクセス要求を開始するように構成されたメモリコントローラを備え、メモリシステムは、例えば図3〜図11に対応する実施形態など、上述の実施形態および上述の実施形態の内部モジュール構成要素における任意のメモリシステムであってよい。例えば、図12を参照すると、メモリシステムは、メモリインデキシングテーブル、移動スケジューラ、バッファスケジューラ、第1の種類のメモリ、および第2の種類のメモリを備える。モジュールの機能および分割については、上述の実施形態を参照されたい。例えば、図13を参照すると、メモリシステムは、タグテーブル、移動スケジューラ、バッファスケジューラ、DRAM、およびNVMを備える(当然ながら、別の実施形態においては、DRAMおよびNVMがそれぞれ揮発メモリおよび不揮発メモリであってよい)。モジュールの機能および分割については、上述の実施形態を参照されたい。
図14を参照すると、図14は、メモリアクセス要求を処理するための方法の実施形態を示しており、本方法は、以下を含む。
S1401:メモリアクセス要求パケットを受信し、要求パケットからメモリアクセス要求のフェッチアドレスおよびフェッチ動作を取得する。
S1402:メモリアクセス要求内のフェッチアドレスを使用することによってメモリインデキシングテーブルを照会して、アクセス要求に対応するデータユニットブロックが第1の種類のメモリまたは第1の種類のメモリとは異なる種類の第2の種類のメモリのどちらに記憶されているかを判断し、移動スケジューラに対してデータユニットブロックのアクセス情報の更新を指示する。
S1403:データユニットブロックが第1の種類のメモリに記憶されている場合、第1の種類のメモリにおいてメモリアクセス要求のフェッチ動作を完了し、メモリアクセス要求の結果をメモリアクセス要求の生成元(initiator)へと返送する。
S1404:データユニットブロックが第2の種類のメモリに記憶されている場合、第2の種類のメモリにおいてメモリアクセス要求のフェッチ動作を完了し、メモリアクセス要求の結果をメモリアクセス要求の生成元へと返送する。
一実施形態において、ステップS1404は、
データユニットブロックが第2の種類のメモリに記憶されている場合に、アクセス対象のデータユニットブロックを第1の種類のメモリへと移動させ、次いで第1の種類のメモリにおいてメモリアクセス要求のフェッチ動作を完了させ、メモリアクセス要求の結果をメモリアクセス要求の生成元へと返送するステップ
を含む。
別の実施形態において、ステップS1404は、
データユニットブロックが第2の種類のメモリ内にある場合に、第2の種類のメモリに直接アクセスして、メモリアクセス要求のフェッチ動作を完了させ、メモリアクセス要求の結果をメモリアクセス要求の生成元へと返送するステップ
を含む。
一実施形態において、本方法は、以下をさらに含む。
S1405:移動スケジューラが、データユニットブロックのアクセス情報を更新する。
S1406:移動スケジューラが、データユニットブロックのアクセス情報に従って、第2の種類のメモリ内に位置するデータユニットブロックを第1の種類のメモリへと移動させるか否かを判断する。
一実施形態においては、アクセス情報が、アクセス動作の量を含み、ステップS1405が、
移動スケジューラによって、記録されたデータユニットブロックのアクセス動作の量を移動しきい値と比較し、アクセス動作の量が移動しきい値以上である場合に、移動が必要であると判断し、アクセス動作の量が移動しきい値未満である場合に、移動は不要であると判断するステップ
を含む。随意により、ステップS1405は、移動が必要であると判断されたときに、移動スケジューラによってメモリインデキシングテーブルの情報を更新するステップをさらに含む。
この実施形態において、異なる種類の第1の種類のメモリおよび第2の種類のメモリを含むメモリシステムの管理が実行される。メモリアクセス要求を、処理を中断することなく第1の種類のメモリおよび第2の種類のメモリのそれぞれにおいて達成できるため、メモリアクセス速度を改善することができる。
図15を参照すると、図15は、別の実施形態に従ってメモリアクセス要求を処理するための方法の別の実施形態を示しており、本方法は、以下を含む。
S1501:メモリアクセス要求パケットを受信し、要求パケットからメモリアクセス要求のフェッチアドレスおよびフェッチ動作を取得する。
S1502:データユニットブロックのアクセス情報を示すために使用され、データユニットブロックのフェッチアドレス、メモリ位置、およびフェッチ動作の量を含んでおり、メモリ位置はデータユニットブロックが揮発メモリまたは不揮発メモリのどちらに記憶されているかを示しているタグテーブルを、メモリアクセス要求内のフェッチアドレスを使用することによって照会して、アクセス要求に対応するデータユニットブロックが揮発メモリまたは不揮発メモリのどちらに記憶されているか否かを判断する。
S1503:データユニットブロックが揮発メモリに記憶されている場合に、揮発メモリにおいてメモリアクセス要求のフェッチ動作を完了し、メモリアクセス要求の結果をメモリアクセス要求の生成元へと返送する。
S1504:データユニットブロックが不揮発メモリに記憶されている場合に、不揮発メモリにおいてメモリアクセス要求のフェッチ動作を完了し、メモリアクセス要求の結果をメモリアクセス要求の生成元へと返送する。
一実施形態において、ステップS1504は、
データユニットブロックが不揮発メモリに記憶されている場合に、アクセス対象のデータユニットブロックを揮発メモリへと移動させ、次いで揮発メモリにおいてメモリアクセス要求のフェッチ動作を完了させ、メモリアクセス要求の結果をメモリアクセス要求の生成元へと返送するステップ
を含む。
別の実施形態において、ステップS1504は、
データユニットブロックが不揮発メモリ内にある場合に、不揮発メモリに直接アクセスして、メモリアクセス要求のフェッチ動作を完了させ、メモリアクセス要求の結果をメモリアクセス要求の生成元へと返送するステップ
を含む。
さらに、一実施形態において、メモリアクセス要求を処理するための方法は、以下をさらに含む。
S1505:タグテーブル内のデータユニットブロックのアクセス情報を更新する。
S1506:データユニットブロックのアクセス情報に従って、不揮発メモリ内に位置するデータユニットブロックを揮発メモリへと移動させるか否かを判断し、移動後にタグテーブルを更新する。
一実施形態においては、アクセス情報が、アクセス動作の量を含み、ステップS1506が、
記録されたデータユニットブロックのアクセス動作の量を移動しきい値と比較し、アクセス動作の量が移動しきい値以上である場合に、移動が必要であると判断し、アクセス動作の量が移動しきい値未満である場合に、移動は不要であると判断するステップ
を含む。
移動が必要であると判断される場合、不揮発メモリに記憶されたデータユニットブロックを揮発メモリへと移動させる動作を実行し、移動後にタグテーブルを更新する。
一実施形態において、データユニットブロックは、ページである。
この実施形態において、揮発メモリおよび不揮発メモリを含むメモリシステムの管理が実行される。メモリアクセス要求を、処理を中断することなく揮発メモリおよび不揮発メモリのそれぞれにおいて達成できるため、メモリアクセス速度を改善することができる。
当業者であれば、実施形態における方法の工程のすべてまたは一部を、関連のハードウェアに対して指示を行うコンピュータプログラムによって実行できることを、理解できるであろう。プログラムを、コンピュータにとって読み取り可能な記憶媒体に保存することができる。プログラムの動作時に、実施形態における方法の工程が実行される。上述の記憶媒体として、磁気ディスク、光ディスク、読出し専用メモリ(Read-Only Memory、ROM)、またはランダムアクセスメモリ(Random Access Memory、RAM)を挙げることができる。
以上は、あくまでも本発明の典型的な実施形態にすぎない。当業者であれば、本発明の技術的思想および技術的範囲から離れることなく、本発明に対する種々の改良および変種を作り出すことができる。
301 メモリ
302 メモリ
303 バッファ
304 バッファスケジューラ
305 移動スケジューラ
401 解析モジュール
402 行列
403 行列
404 判断モジュール
405 スケジューリングモジュール
406 行列
407 行列
408 パッケージングモジュール
501 レジスタ
502 移動判断ロジカル
503 コマンドバッファ
504 データバッファ
505 更新モジュール
601 揮発メモリ
602 不揮発メモリ
603 バッファ
604 バッファスケジューラ
605 移動スケジューラ
RAM 拡張データ出力
Tr 読出ししきい値
Tw 書込みしきい値
本発明は、コンピュータストレージ技術の分野に関し、特にメモリシステム、メモリアクセス要求を処理するための方法、およびコンピュータシステムに関する。
プロセッサの処理速度およびデータストレージの読出し速度の要件が、コンピュータ技術の急速な発達につれて増大している。マルチコアプロセッサは、2つ以上の完結した演算エンジン(コア)が1つのプロセッサへと統合されていることを指す。図1を参照すると、マルチコアマルチメモリ(multi-core multi-memory)のコンピュータアーキテクチャが、CPU 100およびストレージモジュール110を備えており、CPUは、複数のプロセッサコアおよびキャッシュを備えており、メモリコントローラが、I/Oインターフェイスによってストレージモジュールへと接続され、ストレージモジュールは、複数のメモリモジュールを備えている。
データセンタ(Data Center)における処理を必要とするデータが増えるにつれて、可能な限り多くのデータをメモリに記憶することによって処理速度を高めるために、メモリ容量に関するデータセンタの要件も増大する。1つ以上のメモリチャネルが、従来からのメモリシステムに存在でき、これらのメモリチャネルは、メモリコントローラによって管理される。各々のメモリチャネルは、1つ以上のメモリスロットをサポートすることができ、メモリモジュールは、各々のメモリスロットに取り付けられる。やりとりのための経路が、メモリコントローラと1つのメモリチャネルとの間、およびメモリチャネルとメモリモジュールとの間に存在する。種々のメモリチャネルは、互いに独立しており、種々のメモリモジュールは、互いに独立している。伝統的なメモリは、同期のタイミングにもとづくDDRx(DDR3など)プロトコルのDRAMを使用するが、DRAMは、ビット密度が低い、待機時の電力消費が大きい(DRAMは定期的なリフレッシュを必要とするため)、などの欠点を有しており、データセンタにおいてメモリが消費する電力消費は、システム全体の合計の電力消費の25%超を占めることが、研究によって示されている。近年において、相変化メモリ(Phase Change Memory、PCM)、磁気ランダムアクセスメモリ(Magnetic Random Access Memory、MRAM)、およびフラッシュメモリ(Flash)などの不揮発メモリ(Non-Volatile Memory、NVM)など、複数の新規なメモリ材料が現れてきている。これらのNVMは、ビット密度が高い、待機時の電力消費が少ない、などの利点を有するとともに、電源の異常の場合であっても、データを保持することができる(不揮発である)。一部のNVM(PCMなど)の読出しアクセスのレイテンシは、DRAMと比べてわずかに劣るだけかもしれないが、それらの書込みアクセスのレイテンシは、DRAMよりもはるかに大きく、NVMの書込み耐久性は限られている。これらの欠点ゆえに、NVMは、DRAMを完全に置き換えるメモリとしてよりもむしろ、DRAMの拡張メモリとして役に立つ。拡張メモリは、これに限られるわけではないがNVMを含み、他の種類のストレージも含む。
DRAMと拡張メモリとのハイブリッドメモリを使用することが、将来の傾向となっており、DRAMが通常は拡張メモリのためのキャッシュ(Cache)として使用され、頻繁にアクセスされるデータが、アクセスのレイテンシを小さくするために、DRAMに配置される。しかしながら、従来からのDDRは、同期フェッチタイミングに基づいていて、この種の混成の非一様なフェッチのレイテンシを直接処理することができず、処理を担当するソフトウェア(オペレーティングシステムOSまたは仮想マシンモニタVMMなど)を必要とする。ハイブリッドメモリは、ソフトウェアにとって透過的(transparent)でない。
従来からのDDRメモリの同期アクセスインターフェイスは、アクセスコマンドが固有のレイテンシを有することを必要とし、したがってDDRメモリは、ハイブリッドメモリによってもたらされるこの種の非一様なフェッチのレイテンシ特性を直接処理することができず、非一様なレイテンシの処理を担当するソフトウェア(オペレーティングシステムまたは仮想マシンモニタなど)を必要とする。図2が、ソフトウェアがハイブリッドメモリへのアクセスの要求を処理するプロセスを示している。ここでは、OS(オペレーティングシステム)が例として使用され、VMM(仮想マシンモニタ)は、OSの機構と同様の機構を有する。この場合、下位層(underlying layer)におけるハイブリッドメモリは、OSにとって透過的でない。OSは、どのページ(Page)が現時点においてDRAM内に存在し、どのページが拡張メモリにのみ存在するのかを、維持する必要がある。これは、通常は、ページテーブルのエントリにフラグバイトを追加することによって実現される。メモリアクセス要求の受信時に、OSは、最初にページテーブルを照会し、アクセスすべきデータがDRAM内に存在するのかどうかを学習する。データがDRAM内に存在する場合、DRAMへの直接のアクセスが行われ、データがDRAM内に存在しない場合、ページフォルト(Page Fault)を生成する必要があり、最初にページが拡張メモリからDRAMへと移動させられ、対応するページテーブルのエントリのフラグバイトが更新され、最終的にメモリアクセス要求をDRAMへと送信することができる。
性能を最適化するために、ソフトウェアは、ページのアクセス頻度情報の収集をさらに担当し、頻度情報は、通常は、ページの移動の戦略を案内するために、ページテーブルのエントリに記憶され、例えば書込みが頻繁に行われるページがDRAMに記憶される場合、ソフトウェアのオーバヘッドが比較的大きい。さらに、ハイブリッドメモリを使用する大規模なシステムにおいては、マシンの状態を拡張メモリへと再び書き込むために、チェックポイント保護(Checkpoint protection)をソフトウェアにおいて定期的に実行することがさらに必要である。
本発明の実施形態の目的は、メモリアクセス速度を改善するために、メモリシステムおよびメモリアクセスを処理するための方法を提供することにある。
第1の態様によれば、
プロセッサの動作データを記憶するように別々に構成された種類の異なる第1のメモリおよび第2のメモリと、
前記第1のメモリに位置するデータユニットブロックのフェッチアドレスを含むメモリインデキシングテーブルを記憶するように構成されたバッファと、
フェッチアドレスおよびフェッチ動作を含むメモリコントローラによって送信されたメモリアクセス要求を受信し、前記フェッチアドレスおよび前記メモリインデキシングテーブルに従って、前記フェッチアドレスに対応するデータユニットブロックが前記第1のメモリまたは前記第2のメモリのどちらに記憶されているかを判断し、該判断された第1のメモリまたは第2のメモリにおいて前記メモリアクセス要求の前記フェッチ動作を達成し、前記メモリアクセス要求の前記フェッチ動作の結果を前記メモリコントローラへと返すように構成されたバッファスケジューラと
を備えるメモリシステムが提供される。
第1の考えられる実施のやり方において、
前記バッファスケジューラは、前記フェッチアドレスに対応するデータユニットブロックが前記第2のメモリに記憶されていると判断される場合に、該データユニットブロックのアクセス情報の更新の通知を送信するようにさらに構成され、
当該メモリシステムは、
前記バッファスケジューラによって送信された通知を受信して、前記データユニットブロックのアクセス情報を更新し、前記データユニットブロックのアクセス情報に従って、前記第2のメモリ内のデータユニットブロックを前記第1のメモリへと移動させるか否かを判断し、移動後に前記メモリインデキシングテーブルを更新するように構成された移動スケジューラ
をさらに備える。
第1の態様または第1の態様の第1の考えられる実施のやり方に関連し、第2の考えられる実施のやり方において、前記バッファスケジューラは、前記データユニットブロックが前記第1のメモリに位置すると判断される場合に、前記第1のメモリにおいて前記メモリアクセス要求を完了させ、前記データユニットブロックが前記第2のメモリに位置すると判断される場合に、前記第2のメモリにおいて前記メモリアクセス要求を完了させるように特に構成される。
第1の態様または第1の態様の第1の考えられる実施のやり方に関連し、第3の考えられる実施のやり方において、前記バッファスケジューラは、前記データユニットブロックが前記第1のメモリに位置すると判断される場合に、前記第1のメモリにおいて前記メモリアクセス要求を完了させ、前記データユニットブロックが前記第2のメモリに位置すると判断される場合に、前記第2のメモリ内の前記データユニットブロックを前記第1のメモリへと移動させ、前記第1のメモリにおいて前記メモリアクセス要求を完了させるように特に構成される。
第1の態様あるいは第1の態様の第2の考えられる実施のやり方または第1の態様の第3の考えられる実施のやり方に関連し、第4の考えられる実施のやり方において、前記バッファスケジューラは、
前記メモリコントローラによって送信されたメモリアクセス要求パケットを解析して、前記フェッチアドレスおよび前記フェッチ動作を含むメモリアクセス要求を抽出するように構成された解析モジュールと、
前記第1のメモリにアクセスするメモリアクセス要求を記憶するように構成された第1の要求待ち行列と、
前記第2のメモリにアクセスするメモリアクセス要求を記憶するように構成された第2の要求待ち行列と、
前記フェッチアドレスを使用することによって前記メモリインデキシングテーブルを照会して、メモリアクセス要求によって要求されたデータユニットブロックが第1のメモリ内にあるか否かを判断し、該データユニットブロックが前記第1のメモリ内にある場合に前記メモリアクセス要求を前記第1の要求待ち行列に記憶し、該データユニットブロックが前記第1のメモリ内にない場合に前記メモリアクセス要求を前記第2の要求待ち行列に記憶するように構成された判断モジュールと、
前記第1のメモリにアクセスする前記メモリアクセス要求のフェッチ動作の結果を記憶するように構成された第1の返送待ち行列と、
前記第2のメモリにアクセスする前記メモリアクセス要求のフェッチ動作の結果を記憶するように構成された第2の返送待ち行列と、
前記第1の要求待ち行列内の前記メモリアクセス要求を前記第1のメモリへとスケジュールし、該メモリアクセス要求に対応するフェッチ動作を実行し、前記第2の要求待ち行列内の前記メモリアクセス要求を前記第2のメモリへとスケジュールし、該メモリアクセス要求に対応するフェッチ動作を実行するように構成されたスケジューリングモジュールと、
少なくとも1つのメモリアクセス要求のフェッチ動作の結果をパケットへとパッケージし、該パケットを前記メモリコントローラへと返すように構成されたパッケージングモジュールと
を備える。
第1の態様、あるいは第1の態様の第2の考えられる実施のやり方、第1の態様の第3の考えられる実施のやり方、または第1の態様の第4の考えられる実施のやり方に関連し、第5の考えられる実施のやり方において、
前記アクセス情報は、アクセス動作の量を含んでおり、
前記移動スケジューラは、
移動しきい値を記憶するように構成されたレジスタと、
前記アクセス動作の量を前記移動しきい値と比較し、比較結果に応じて、前記第2のメモリ内のデータユニットブロックを前記第1のメモリへと移動させるか否かを判断するように構成された移動判断ロジカルモジュールと、
前記移動判断ロジカルモジュールが移動が必要であるとの結果を出力するときに移動コマンドを記憶するように構成されたコマンドバッファと、
前記第2のメモリ内に記憶された前記移動コマンドに対応するデータユニットブロックのデータを一時的に記憶するように構成されたデータバッファと、
前記データユニットブロックに対応する前記アクセス動作の量を更新し、前記移動判断ロジカルモジュールが移動が必要であるとの結果を出力するときに前記メモリインデキシングテーブルを更新するように構成された更新モジュールと
を備える。
第1の態様、あるいは第1の態様の第2の考えられる実施のやり方、第1の態様の第3の考えられる実施のやり方、第1の態様の第4の考えられる実施のやり方、または第1の態様の第5の考えられる実施のやり方に関連し、第6の考えられる実施のやり方において、前記第1のメモリは、揮発メモリモジュールであり、前記第2のメモリは、不揮発メモリモジュールである。
第1の態様、あるいは第1の態様の第2の考えられる実施のやり方、第1の態様の第3の考えられる実施のやり方、第1の態様の第4の考えられる実施のやり方、または第1の態様の第5の考えられる実施のやり方に関連し、第7の考えられる実施のやり方において、前記第1のメモリのアクセス速度は、前記第2のメモリのアクセス速度よりも高速である。
第2の態様によれば、
プロセッサの動作データを記憶するように別々に構成された揮発メモリおよび不揮発メモリと、
データユニットブロックのアクセス情報を示すために用いられ、該データユニットブロックのフェッチアドレス、メモリ位置、およびフェッチ動作の量を含んでおり、前記メモリ位置は該データユニットブロックが前記揮発メモリまたは前記不揮発メモリのどちらに記憶されているかを示しているタグテーブルを記憶するように構成されたバッファと、
フェッチアドレスおよびフェッチ動作を含むメモリコントローラのメモリアクセス要求を受信し、前記フェッチアドレスを使用することによって前記タグテーブルを照会することで、前記データユニットブロックが前記揮発メモリまたは前記不揮発メモリのどちらに記憶されているかを判断し、該判断された揮発メモリまたは不揮発メモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリコントローラへと返すように構成されたバッファスケジューラと
を備えるメモリシステムが提供される。
第2の態様の第1の考えられる実施のやり方において、前記バッファスケジューラは、前記データユニットブロックのアクセス情報の更新の通知を送信するようにさらに構成され、
当該メモリシステムは、
前記通知を受信して、前記タグテーブル内の前記データユニットブロックのアクセス情報を更新し、前記データユニットブロックのアクセス情報に従って、前記不揮発メモリ内のデータユニットブロックを前記揮発メモリへと移動させるか否かを判断し、移動後に前記タグテーブルを更新するように構成された移動スケジューラ
をさらに備える。
第2の態様の第2の考えられる実施のやり方において、前記バッファスケジューラは、
前記メモリコントローラによって送信されたメモリアクセス要求パケットを解析して、メモリアクセス要求を抽出するように構成された解析モジュールと、
前記揮発メモリにアクセスするメモリアクセス要求を記憶するように構成された第1の要求待ち行列と、
前記不揮発メモリにアクセスするメモリアクセス要求を記憶するように構成された第2の要求待ち行列と、
前記フェッチアドレスを使用することによってメモリインデキシングテーブルを照会して、各々のメモリアクセス要求によってアクセスされるデータユニットブロックが前記揮発メモリ内にあるか否かを判断し、該データユニットブロックが前記揮発メモリ内にある場合に前記メモリアクセス要求を前記第1の要求待ち行列に記憶し、該データユニットブロックが前記揮発メモリ内にない場合に前記メモリアクセス要求を前記第2の要求待ち行列に記憶し、該データユニットブロックの前記アクセス情報の更新の通知を送信するように構成された判断モジュールと、
前記揮発メモリにアクセスする前記メモリアクセス要求の結果を記憶するように構成された第1の返送待ち行列と、
前記不揮発メモリにアクセスする前記メモリアクセス要求の結果を記憶するように構成された第2の返送待ち行列と、
前記第1の要求待ち行列内の前記メモリアクセス要求を前記揮発メモリへとスケジュールして、該メモリアクセス要求に対応するフェッチ動作を実行し、前記第2の要求待ち行列内の前記メモリアクセス要求を前記不揮発メモリへとスケジュールして、該メモリアクセス要求に対応するフェッチ動作を実行するように構成されたスケジューリングモジュールと、
少なくとも1つのメモリアクセス要求の結果をパケットへとパッケージし、該パケットを前記メモリコントローラへと返すように構成されたパッケージングモジュールと
を備える。
第2の態様または第2の態様の第1の考えられる実施のやり方に関連し、第3の考えられる実施のやり方において、前記アクセス情報は、アクセス動作の量を含んでおり、
前記移動スケジューラは、
移動しきい値を記憶するように構成されたレジスタと、
前記アクセス動作の量を前記移動しきい値と比較して、前記不揮発メモリ内のページを前記揮発メモリへと移動させるか否かを判断するように構成された移動判断ロジカルモジュールと、
前記移動判断ロジカルモジュールが移動が必要であるとの結果を出力するときに移動コマンドを記憶するように構成されたコマンドバッファと、
前記不揮発メモリ内に記憶された前記移動コマンドに対応するデータユニットブロックのデータを一時的に記憶するように構成されたデータバッファと、
前記データユニットブロックに対応する前記アクセス動作の量を更新し、前記移動判断ロジカルモジュールが移動が必要であるとの結果を出力するときに前記メモリインデキシングテーブルを更新するように構成されたタグ更新モジュールと
を備える。
第2の態様、あるいは第2の態様の第1の考えられる実施のやり方、第2の態様の第2の考えられる実施のやり方、または第2の態様の第3の考えられる実施のやり方に関連し、第4の考えられる実施のやり方において、前記揮発メモリは、DRAM(ダイナミックランダム・アクセス・メモリ、dynamic random access memory)であり、前記不揮発メモリは、NVM(不揮発メモリ、non-volatile memory)である。
第3の態様によれば、メモリアクセス要求を処理するための方法であって、
メモリアクセス要求パケットを受信し、該要求パケットからメモリアクセス要求のフェッチアドレスおよびフェッチ動作を取得するステップと、
前記メモリアクセス要求内の前記フェッチアドレスを使用することによってメモリインデキシングテーブルを照会して、該メモリアクセス要求に対応するデータユニットブロックが第1のメモリまたは該第1のメモリとは異なる種類の第2のメモリのどちらに記憶されているかを判断し、移動スケジューラに対して前記データユニットブロックのアクセス情報の更新を指示するステップと、
前記データユニットブロックが前記第1のメモリに記憶されている場合に、前記第1のメモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップと、
前記データユニットブロックが前記第2のメモリに記憶されている場合に、前記第2のメモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップと
を含む方法が提供される。
第1の考えられる実施のやり方において、前記データユニットブロックが前記第2のメモリに記憶されている場合に、前記第2のメモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップは、
前記データユニットブロックが前記第2のメモリに記憶されている場合に、アクセス対象の前記データユニットブロックを前記第1のメモリへと移動させ、次いで前記第1のメモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップ
を含む。
第2の考えられる実施のやり方において、前記データユニットブロックが前記第2のメモリに記憶されている場合に、前記第2のメモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップは、
前記データユニットブロックが前記第2のメモリに記憶されている場合に、前記第2のメモリに直接アクセスして前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップ
を含む。
第3の態様、あるいは第3の態様の第1の考えられる実施のやり方または第3の態様の第2の考えられる実施のやり方に関連し、第3の考えられる実施のやり方において、当該方法は、
前記データユニットブロックの前記アクセス情報に従って、前記移動スケジューラによって、前記第2のメモリ内に位置する前記データユニットブロックを前記第1のメモリへと移動させるか否かを判断するステップ
をさらに含む。
第3の態様の第3の考えられる実施のやり方に関連し、第4の考えられる実施のやり方において、
前記アクセス情報は、アクセス動作の量を含んでおり、
前記データユニットブロックの前記アクセス情報に従って、前記移動スケジューラによって、前記第2のメモリ内に位置する前記データユニットブロックを前記第1のメモリへと移動させるか否かを判断するステップは、
前記移動スケジューラによって、記録された前記データユニットブロックのアクセス動作の量を移動しきい値と比較し、前記アクセス動作の量が前記移動しきい値以上である場合に移動が必要であると判断し、前記アクセス動作の量が前記移動しきい値未満である場合に移動は不要であると判断するステップ
を含む。
第3の態様の第4の考えられる実施のやり方に関連し、第5の考えられる実施のやり方において、当該方法は、
前記移動スケジューラによって、移動が必要であると判断される場合に前記メモリインデキシングテーブルの情報を更新するステップ
をさらに含む。
第4の態様によれば、メモリアクセス要求を処理するための方法であって、
メモリアクセス要求パケットを受信し、該要求パケットからメモリアクセス要求のフェッチアドレスおよびフェッチ動作を取得するステップと、
データユニットブロックのアクセス情報を示すために用いられ、該データユニットブロックのフェッチアドレス、メモリ位置、およびフェッチ動作の量を含んでおり、前記メモリ位置は該データユニットブロックが揮発メモリまたは不揮発メモリのどちらに記憶されているかを示しているタグテーブルを、前記メモリアクセス要求内の前記フェッチアドレスを使用することによって照会して、該メモリアクセス要求に対応するデータユニットブロックが揮発メモリまたは不揮発メモリのどちらに記憶されているかを判断するステップと、
前記データユニットブロックが前記揮発メモリに記憶されている場合に、前記揮発メモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップと、
前記データユニットブロックが前記不揮発メモリに記憶されている場合に、前記不揮発メモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップと
を含む方法が提供される。
第1の考えられる実施のやり方において、前記データユニットブロックが前記不揮発メモリに記憶されている場合に、前記不揮発メモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップは、
前記データユニットブロックが前記不揮発メモリに記憶されている場合に、アクセス対象の前記データユニットブロックを前記揮発メモリへと移動させ、次いで前記揮発メモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップ
を含む。
第2の考えられる実施のやり方において、前記データユニットブロックが前記不揮発メモリに記憶されている場合に、前記不揮発メモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップは、
前記データユニットブロックが前記不揮発メモリに記憶されている場合に、前記不揮発メモリに直接アクセスして前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップ
を含む。
第4の態様、あるいは第4の態様の第1の考えられる実施のやり方、または第4の態様の第2の考えられる実施のやり方に関連し、第3の考えられる実施のやり方において、
前記アクセス情報は、アクセス動作の量を含んでおり、
前記方法は、
記録された前記データユニットブロックのアクセス動作の量を移動しきい値と比較し、前記アクセス動作の量が前記移動しきい値以上である場合に移動が必要であると判断し、前記アクセス動作の量が前記移動しきい値未満である場合に移動は不要であると判断するステップ
更に含む。
第4の態様、あるいは第4の態様の第1の考えられる実施のやり方、第4の態様の第2の考えられる実施のやり方、または第4の態様の第3の考えられる実施のやり方に関連し、第4の考えられる実施のやり方において、当該方法は、
前記タグテーブル内の前記データユニットブロックのアクセス情報を更新するステップと、
前記データユニットブロックの前記アクセス情報に従って、前記不揮発メモリ内に位置する前記データユニットブロックを前記揮発メモリへと移動させるか否かを判断し、移動後に前記タグテーブルを更新するステップと
をさらに含む。
第5の態様によれば、
メモリアクセス要求を開始するように構成されたメモリコントローラを備えているマルチコアプロセッサと、
第1の態様または第2の態様のいずれかの考えられる実施のやり方に従ってもたらされるメモリシステムと
を備えるコンピュータシステムが提供される。
本発明の実施形態において、異なる種類のメモリの管理が、ハードウェアによって実行される。種類が異なる第1のメモリおよび第2のメモリが、メモリシステムに存在する。メモリアクセス要求を、第1のメモリおよび第2のメモリにおいて別々に完了させることができ、これはOSにとって透過的であり、ページフォルトを引き起こすことがなく、メモリアクセス速度を改善することができる。
本発明の実施形態または先行技術における技術的解決策をより明瞭に説明するために、実施形態または先行技術の説明に必要な添付の図面を、以下で簡単に紹介する。当然ながら、添付の図面は、以下の説明において、あくまでも本発明のいくつかの実施形態を示すにすぎず、当業者であれば、依然として、創造的な活動を必要とすることなくこれらの添付の図面から他の図を導き出すことが可能である。
マルチコアマルチメモリコンピュータのアーキテクチャの概略図である。 ハイブリッドメモリへのアクセスを処理するソフトウェアの概略のフロー図である。 本発明によるメモリシステムの実施形態の概略の構造図である。 本発明によるバッファスケジューラの実施形態の概略の構造図である。 本発明による移動スケジューラの実施形態の概略の構造図である。 本発明によるメモリシステムの別の実施形態の概略の構造図である。 本発明によるバッファスケジューラの別の実施形態の概略の構造図である。 本発明によるメモリアクセス要求を処理するバッファスケジューラの概略のフロー図である。 本発明によるタグテーブルの実施形態の概略の構造図である。 本発明による移動スケジューラの別の実施形態の概略の構造図である。 本発明によるページの移動の要否を判断する移動スケジューラの概略のフロー図である。 本発明の実施形態によるコンピュータシステムの実施形態の概略の構造図である。 本発明の実施形態によるコンピュータシステムの別の実施形態の概略の構造図である。 本発明の実施形態によるメモリアクセス要求を処理するための方法の実施形態の概略のフロー図である。 本発明の実施形態によるメモリアクセス要求を処理するための方法の別の実施形態の概略のフロー図である。
以下は、本発明の実施形態における技術的解決策を、本発明の実施形態における添付の図面を参照して、明瞭かつ充分に説明する。当然ながら、説明される実施形態は、あくまでも本発明の一部の実施形態であり、すべての実施形態ではない。当業者が本発明の実施形態にもとづいて創造的な活動を必要とすることなく得ることができるすべての他の実施形態は、本発明の保護の範囲に含まれる。
本発明の技術的解決策の理解を容易にするために、本発明の実施形態において現れるいくつかの技術用語を、最初に説明する。本発明の実施形態において言及されるCPU(Central Processing Unit、中央演算処理装置)は、プロセッサの一種であり、プロセッサは、ASIC(Application Specific Integrated Circuit、特定用途向け集積回路)または本発明の実施形態を実行するように構成された1つ以上の他の集積回路であってもよい。当業者であれば、プロセッサの別の実施のやり方で本発明の実施形態におけるCPUを置き換えてもよいことを、理解できるであろう。
メモリコントローラは、メモリモジュール(あるいは、メモリと称される)の制御ならびにコンピュータシステムの内部のメモリとプロセッサとの間のデータ交換のための重要な一部分である。現時点において、一般的なやり方は、CPUにメモリコントローラを統合することである。しかしながら、メモリコントローラおよびCPUは、別個独立に実現され、接続を使用することによって通信してもよい。
メモリモジュールは、プロセッサ(例えば、CPU)の動作データを記憶するように構成される。一般に、メモリモジュールは、1つ以上のストレージユニット(あるいは、メモリチップと称される)を備える。メモリチャネルインターフェイスが、メモリモジュール上に位置し、メモリチャネルの接続に用いられるインターフェイスである。メモリチャネルは、メモリモジュールをメモリコントローラへと接続するチャネルである。
いくつかの一般的に用いられるメモリモジュールが、以下で例として説明される。DIMM(Dual Inline Memory Module、デュアル・インライン・メモリ・モジュール)が、Pentium(登録商標) CPUの発売後に現れた新規なメモリモジュールである。DIMMは、64ビットのデータチャネルを提供し、したがってPentium(登録商標)のマザーボードにおいて単独で使用することができる。DIMMは、SIMM(single in-line memory module、シングル・インライン・メモリ・モジュール)のスロットよりも長く、DIMMは、新たな168ピンのEDORAM(Extended Data Output RAM、拡張データ出力RAM)メモリもサポートする。DRAM(Dynamic Random Access Memory、ダイナミック・ランダム・アクセス・メモリ)が、最も一般的なメモリチップであり、DIMMまたはSIMMは、1つ以上のDRAMを備えることができる。DRAMは、きわめて短い時間だけしかデータを保持することができない。データを保持するために、DRAMは、ストレージ用コンデンサを使用し、したがって或る時間期間のたびにリフレッシュが必要であり、ストレージユニットがリフレッシュされない場合、記憶された情報は失われる。DRAMに記憶されたデータは、電源オフまたは電源の異常の場合にも失われてしまう。NVM(Non-Volatile Memory、不揮発メモリ)は、メモリチップとして使用することができる別の種類のメモリグラニュール(memory granule)であり、DIMMまたはSIMMは、1つ以上のNVMを備えることができる。一般に、NVMは、プログラムおよびデータを記憶するために使用され、NVMに記憶されたデータは、電源オフまたは電源の異常の場合も失われることがなく、これがDRAMの特徴からの違いである。メモリがデータの読出しまたは書込みを行うたびに、特定のデータユニットにもとづく動作が実行され、ここでデータユニットは、通常は4kのデータを表すページまたはメモリページ(Page)である。
さらに、本発明の実施形態において説明される「接続」が、2つ以上の仮想のモジュールの間、2つ以上の実在のモジュールの間、または実在のモジュールと仮想のモジュールとの間に通信接続が存在することを示しており、その具体的な手段が、1つ以上の通信ラインまたは信号線であってよいことに、注意すべきである。特に指定されない限り、「接続」は、直接接続であってよく、インターフェイスまたはポートを使用することによる接続であってよく、あるいは別の仮想のモジュールまたは実在のモジュールを使用することによる接続であってよい。特に指定されない限り、本発明の実施形態における「第1」および「第2」は、区別のためのものにすぎず、特定の順番を示すためのものではない。
図3を参照すると、図3は、
プロセッサの動作データを記憶するように構成された第1のメモリ301と、
プロセッサの動作データを記憶するように構成され、第1のメモリとは種類が異なる第2のメモリ302と、
第1のメモリに位置するデータユニットブロックのフェッチアドレスを含むメモリインデキシングテーブルを記憶するように構成されたバッファ303と、
フェッチアドレスおよびフェッチ動作を含むメモリコントローラのメモリアクセス要求を受信し、フェッチアドレスおよびメモリインデキシングテーブルに従って、フェッチアドレスに対応するデータユニットブロックが第1のメモリまたは第2のメモリのどちらに記憶されているかを判断し、判断された第1のメモリまたは第2のメモリにおいてメモリアクセス要求を達成し、メモリアクセス要求の結果をメモリコントローラへと返すように構成されたバッファスケジューラ304と
を備えるメモリシステムの実施形態を示している。
さらに、一実施形態において、バッファスケジューラは、フェッチアドレスに対応するデータユニットブロックが第2のメモリに記憶されていると判断されるときに、データユニットブロックのアクセス情報の更新の通知を送信するようにさらに構成される。メモリシステムは、移動スケジューラ305をさらに備え、移動スケジューラは、バッファスケジューラによって送信される通知を受信して、データユニットブロックのアクセス情報を更新し、データユニットブロックのアクセス情報に従って、第2のメモリ内のデータユニットブロックを第1のメモリへと移動させるか否かを判断し、移動後にメモリインデキシングテーブルを更新するように構成される。
第1のメモリおよび第2のメモリは、個別にメモリモジュールであってよく、あるいは個別に少なくとも1つのメモリチップであってよく、プロセッサの動作データを記憶できる限りにおいて、それらの粒度(granularities)に制約はない。第1のメモリおよび第2のメモリは、種類が異なっており、種類の相違は、2つのメモリの記憶媒体の種類の相違、または2つのメモリの記憶速度の相違であってよい。一実施形態においては、第1のメモリが、揮発メモリモジュールであり、第2のメモリが、不揮発メモリモジュールである(第1のメモリの読出し/書込み速度が、第2のメモリの読出し/書込み速度よりも高速である)。別の実施形態においては、第1のメモリおよび第2のメモリの両方が、揮発メモリモジュールであり、第1のメモリの読出し/書込み速度が、第2のメモリの読出し/書込み速度よりも高速である。別の実施形態においては、第1のメモリおよび第2のメモリの両方が、不揮発メモリモジュールであり、第1のメモリの読出し/書込み速度が、第2のメモリの読出し/書込み速度よりも高速である。
一実施形態において、バッファスケジューラは、第2のメモリにおいてメモリアクセス要求を直接達成することができる。具体的には、バッファスケジューラは、データユニットブロックが第1のメモリに位置すると判断される場合に、第1のメモリにおいてメモリアクセス要求を達成し、データユニットブロックが第2のメモリに位置すると判断される場合に、第2のメモリにおいてメモリアクセス要求を達成するように構成される。
別の実施形態において、バッファスケジューラは、第2のメモリにおいてメモリアクセス要求を直接達成することがない。具体的には、バッファスケジューラは、データユニットブロックが第1のメモリに位置すると判断される場合に、第1のメモリにおいてメモリアクセス要求を達成し、データユニットブロックが第2のメモリに位置すると判断される場合に、第2のメモリ内のデータユニットブロックを第1のメモリへと移動させ、第1のメモリにおいてメモリアクセス要求を達成するように構成される。一実施形態においては、データユニットブロックを第1のメモリへと複製し、その後にアクセスの完了後に削除することができる。
一実施形態においては、アクセス情報が、アクセス動作の量を含み、移動スケジューラが、記録されたデータユニットブロックのアクセス動作の量を移動しきい値と比較し、アクセス動作の量が移動しきい値以上である場合に、移動が必要であると判断し、アクセス動作の量が移動しきい値未満である場合に、移動は不要であると判断するように特に構成される。移動しきい値を、必要に応じて設定することができる。
メモリインデキシングテーブルが、第1のメモリ内のデータユニットブロックを示すために使用される。一実施形態において、メモリインデキシングテーブルは、第1のメモリに位置するデータユニットブロックのフェッチアドレスだけを記憶する。別の実施形態において、メモリインデキシングテーブルは、すべてのメモリアクセス要求に対応するデータユニットブロックのフェッチアドレスを記憶し、データユニットブロックのフェッチアドレス、メモリ位置、およびフェッチ動作の量を含み、ここでメモリ位置は、データユニットブロックが第1のメモリまたは第2のメモリのどちらに記憶されているかを示す。別の実施形態において、メモリインデキシングテーブルは、すべてのメモリアクセス要求に対応するデータユニットブロックのフェッチアドレスを記憶し、データユニットブロックのフェッチアドレス、メモリ位置、フェッチ動作の量、およびデータ更新フラグを含み、ここでメモリ位置は、データユニットブロックが第1のメモリまたは第2のメモリのどちらに記憶されているかを示し、データ更新フラグは、データユニットブロックの内容が更新されたことを示す。受け取ったメモリアクセス要求のフェッチ動作が書込み動作である場合、データユニットブロックの内容が更新される。当然ながら、メモリインデキシングテーブルは、他の情報も記憶することができる。メモリインデキシングテーブルを記憶するバッファを、SRAMおよびDRAMなどの記憶媒体を使用することによって物理的に実現することができる。SRAMが、アクセス速度がより速いがゆえに推奨される。物理的な位置に関して、バッファは、バッファスケジューラの内部または外部に位置することができ、あるいは移動スケジューラの内部または外部に位置することができる。
図4を参照すると、一実施形態において、バッファスケジューラは、
メモリコントローラによって送信されたメモリアクセス要求パケットを解析してメモリアクセス要求を抽出するように構成された解析モジュール401と、
第1のメモリのアクセスのためのメモリアクセス要求を記憶するように構成された第1の要求待ち行列402と、
第2のメモリのアクセスのためのメモリアクセス要求を記憶するように構成された第2の要求待ち行列403と、
メモリアクセス要求内のフェッチアドレスを使用することによってメモリインデキシングテーブルを照会して、各々のメモリアクセス要求が要求するデータユニットブロックが第1のメモリ内にあるかどうかを判断し、データユニットブロックが第1のメモリ内にある場合にメモリアクセス要求を第1の要求待ち行列に記憶し、データユニットブロックが第1のメモリ内にない場合にメモリアクセス要求を第2の要求待ち行列に記憶するように構成された判断モジュール404と、
第1の要求待ち行列内のメモリアクセス要求を第1のメモリへとスケジュールして、メモリアクセス要求に対応するフェッチ動作を実行し、第2の要求待ち行列内のメモリアクセス要求を第2のメモリへとスケジュールして、メモリアクセス要求に対応するフェッチ動作を実行するように構成されたスケジューリングモジュール405と、
第1のメモリにアクセスするメモリアクセス要求の結果を記憶するように構成された第1の返送待ち行列406と、
第2のメモリにアクセスするメモリアクセス要求の結果を記憶するように構成された第2の返送待ち行列407と、
少なくとも1つのメモリアクセス要求の結果をパケットへとパッケージし、パケットをメモリコントローラへと返送するように構成されたパッケージングモジュール408と
を備える。
図5を参照すると、一実施形態においては、アクセス情報がアクセス動作の量を含み、移動スケジューラが、
移動しきい値を記憶するように構成されたレジスタ501と、
アクセス動作の量を移動しきい値と比較し、第2のメモリ内のページを第1のメモリへと移動させるか否かを判断するように構成された移動判断ロジカルモジュール502と、
移動判断ロジカルモジュールが移動が必要であるとの結果を出力するときに、移動コマンドを記憶するように構成されたコマンドバッファ503と、
第2のメモリに記憶されたデータであって、移動コマンドに対応するデータユニットブロックのデータを、一時的に記憶するように構成されたデータバッファ504と、
データユニットブロックに対応するアクセス動作の量を更新し、移動判断ロジカルモジュールが移動が必要であるとの結果を出力するときに、メモリインデキシングテーブルを更新するように構成された更新モジュール505と
を備える。
アクセス動作の量が移動しきい値以上である場合、移動判断ロジカルモジュール502は、第2のメモリ内のページを第1のメモリへと移動させる必要があるとの結果を出力し、アクセス動作の量が移動しきい値未満である場合、移動判断ロジカルモジュール502は、第2のメモリ内のページを第1のメモリへと移動させる必要がないとの結果を出力する。
メモリインデキシングテーブルが第1のメモリ内に位置するデータユニットブロックのフェッチアドレスだけを記憶する場合、移動スケジューラは、データユニットブロックの動作情報を記憶するように構成された第2のレジスタをさらに備え、この動作情報は、アクセス動作の量を含む。別の実施形態において、メモリインデキシングテーブルは、すべてのメモリアクセス要求に対応するデータユニットブロックのフェッチアドレスを記憶し、移動スケジューラは、メモリインデキシングテーブル内のデータユニットブロックのアクセス動作の量を直接更新する。当然ながら、レジスタおよび第2のレジスタは、物理的には1つのユニットまたは2つのユニットであってよく、コマンドバッファおよびデータバッファも、物理的には1つのユニットまたは2つのユニットであってよい。レジスタは、物理的には、移動判断ロジカルモジュールの内部または外部に位置することができる。
アクセス動作は、読出し動作および書込み動作を含む。レジスタは、読出し動作の移動しきい値および書込み動作の移動しきい値を別々に記憶することができる。第2のレジスタは、データユニットブロックの読出し動作の量および書込み動作の量を別々に記憶することができる。判断時に、移動判断ロジカルモジュール502は、読出し動作および書込み動作を別々に判断することができる。
以上の実施形態における「移動」は、メモリ内のデータが或るメモリモジュールから別のメモリモジュールへと動かされることを指し、本明細書における「移動」を、「動かすこと」または「複製」で置き換えることも可能である。以上の実施形態における「データユニットブロック」は、メモリモジュールによって記憶されるデータの単位を指し、あるいはメモリ間のデータの移動の最小単位を指す。一実施形態において、データユニットブロックは、ページ(page)であり、通常はページは4kのメモリデータを表す。
以上の実施形態において、異種混交性を実行するためにハードウェアを使用するメモリシステムは、異なる種類のメモリの管理を実行する。異なる種類の第1のメモリおよび第2のメモリが、メモリシステムに存在し、メモリアクセス要求を、第1のメモリおよび第2のメモリのそれぞれにおいて達成することができ、それがOSまたは処理のための他のソフトウェアを必要とせず、ページフォルトを引き起こすことがなく、メモリアクセス速度を改善でき、ハードウェアによる実行は、ソフトウェアのオーバヘッドを減らすことができる。
図6を参照すると、図6は、
プロセッサの動作データを記憶するように構成された揮発メモリ601と、
プロセッサの動作データを記憶するように構成された不揮発メモリ602と、
データユニットブロックのアクセス情報を示すために使用されるタグ(tag)テーブルを記憶し、さらにデータユニットブロックのフェッチアドレス、メモリ位置、およびフェッチ動作の量を記憶するように構成され、メモリ位置はデータユニットブロックが揮発メモリまたは不揮発メモリのどちらに記憶されているかを示しているバッファ603と、
フェッチアドレスおよびフェッチ動作を含むメモリコントローラのメモリアクセス要求を受信し、フェッチアドレスを使用することによってタグテーブルを照会することで、フェッチアドレスに対応するページが揮発メモリまたは不揮発メモリのどちらに記憶されているかを判断し、判断された揮発メモリまたは不揮発メモリにおいてメモリアクセス要求のフェッチ動作を達成し、メモリアクセス要求の結果をメモリコントローラへと返すように構成されたバッファスケジューラ604と
を備えるメモリシステムの別の実施形態を示している。
さらに、別の実施形態において、バッファスケジューラは、データユニットブロックのアクセス情報の更新の通知を送信するようにさらに構成される。メモリシステムは、通知を受信して、タグテーブル内のデータユニットブロックのアクセス情報を更新し、データユニットブロックのアクセス情報に従って、不揮発メモリ内のデータユニットブロックを揮発メモリへと移動させるか否かを判断し、移動後にタグテーブルを更新するように構成された移動スケジューラ605をさらに備える。
この実施形態において、タグテーブルは、すべてのメモリアクセス要求に対応するデータユニットブロックのフェッチアドレスを記憶する。一実施形態において、タグテーブルは、データユニットブロックのフェッチアドレス、メモリ位置、およびフェッチ動作の量を含み、ここでメモリ位置は、データユニットブロックが揮発メモリまたは不揮発メモリのどちらに記憶されているかを示す。別の実施形態において、タグテーブルは、データユニットブロックのフェッチアドレス、メモリ位置、フェッチ動作の量、およびデータ更新フラグを含み、ここでメモリ位置は、データユニットブロックが揮発メモリまたは不揮発メモリのどちらに記憶されているかを示し、データ更新フラグは、データユニットブロックの内容が更新されたことを示す。受け取ったメモリアクセス要求のフェッチ動作が書込み動作である場合、データユニットブロックの内容が更新される。当然ながら、タグテーブルは、他の情報も記憶することができる。タグテーブルを記憶するバッファを、物理的には、SRAMおよびDRAMなどの記憶媒体を使用することによって実現することができる。SRAMが、アクセス速度がより速いがゆえに推奨される。物理的な位置に関して、バッファは、独立して存在でき、あるいはバッファスケジューラの内部または外部に位置することができ、もしくは移動スケジューラの内部または外部に位置することができる。
一実施形態において、データユニットブロックは、ページである。
上述の実施形態と比べて、この実施形態においては、第1のメモリが、具体的には揮発メモリであり、第2のメモリが、具体的には不揮発メモリであり、メモリインデキシングテーブルが、具体的にはタグテーブルであり、データユニットブロックが、具体的にはページである。当然ながら、揮発メモリおよび不揮発メモリは、別々にメモリモジュールであってよく、あるいは別々に少なくとも1つのメモリチップであってよく、それらの粒度に制約はない。上述の実施形態におけるバッファスケジューラおよび移動スケジューラの実施形態を、この実施形態においても使用することができ、相違点は、上述の実施形態における第1のメモリが、この実施形態においては特に揮発メモリであり、上述の実施形態における第2のメモリが、この実施形態においては特に不揮発メモリであり、上述の実施形態におけるデータユニットブロックが、この実施形態においては特にページである点にある。
一実施形態において、揮発メモリはDRAMであり、不揮発メモリはNVMである。
この実施形態において、ハイブリッドメモリの管理は、メモリシステム内のハードウェアを使用することによって実行される。動作が頻繁なページが、揮発メモリに記憶され、動作が頻繁でないページが、不揮発メモリに記憶される。メモリアクセス要求を、良好な参照の局在性を有するページのアクセス性能への無作為にアクセスされるページからの干渉を減らすように、揮発メモリおよび不揮発メモリのそれぞれにおいて達成することができ、したがってメモリアクセス速度を改善でき、不揮発メモリから揮発メモリへのページの移動を実行できることで、アクセス性能が改善される。
図7を参照すると、揮発メモリがDRAMであり、不揮発メモリがNVMであり、データユニットブロックが特にページであり、メモリアクセス要求がフェッチ要求メッセージである場合が、例として使用される。図7は、パケット解析モジュールと、パッケージングモジュールと、判断モジュールと、スケジューリングモジュールと、要求待ち行列と、返送待ち行列とを備えるバッファスケジューラの実施形態を示している。要求待ち行列および返送待ち行列は、異なる記憶媒体に従って別々に管理され、この実施形態においてはDRAM要求待ち行列、NVM要求待ち行列、DRAM返送待ち行列、およびNVM返送待ち行列を含む。パケット解析モジュールは、メモリコントローラによって送信されたメモリアクセス要求パケットの解析を担当し、メモリアクセス要求を抽出する。パケットが複数の読出し/書込み要求を含むことができ、メモリアクセス要求が、フェッチアドレス、フェッチ粒度、フェッチ動作(読出し動作または書込み動作)、および優先度などの情報を含むことに、注意すべきである。各々のメモリアクセス要求に関して、判断モジュールは、フェッチアドレスを使用することによってタグテーブルを照会して、アクセス対象のページがDRAM内にあるか否かを判断し、アクセス対象のページがDRAM内にある場合にメモリアクセス要求をDRAM要求待ち行列に配置し、アクセス対象のページがDRAM内にない場合は要求をNVM要求待ち行列に配置する。スケジューリングモジュールは、要求待ち行列内のメモリアクセス要求のスケジューリングを担当し、それぞれの物理的なインターフェイスを使用することによって要求を実行のために対応するメモリチップへとスケジューリングし、すなわちDRAMにおける要求をDRAMの物理的なインターフェイスを使用することによってスケジューリングし、NVMの要求をNVMの物理的なインターフェイスを使用することによってスケジューリングする。読出し要求の完了後に、返送されるデータは、対応する返送待ち行列に配置され、最終的に全体返送待ち行列に配置され、パッケージングモジュールが、複数の要求によって返送されるデータをパケットへとパッケージし、パケットをメモリコントローラへと返送するために使用される。
図8を参照すると、バッファスケジューラがメモリアクセス要求を処理する手順は、以下を含む。
(1)メモリアクセス要求パケットを受信した後に、バッファスケジューラがパケットを解析し、メモリアクセス要求のアドレスおよび読出し/書込み情報を得る。
(2)バッファスケジューラが、アドレスを使用することによってタグテーブルを照会し、アクセス対象のページがDRAM内にあるか否かを判断する。アクセス対象のページがDRAM内にある場合、(3)へと進み、アクセス対象のページがDRAM内にない場合、(4)へと進む。
(3)バッファスケジューラが、メモリアクセス要求をDRAMへと送信し、移動スケジューラに対してページのアクセス情報の更新を指示する。DRAMからのデータの取得後に、バッファスケジューラは、データをパケットへとカプセル化し、パケットをプロセッサへと返送する。要求の処理が終了する。
(4)バッファスケジューラが、メモリアクセス要求をNVMへと送信する。この場合、データがNVMからバッファスケジューラへと直接返され、次いでパケットへとカプセル化され、プロセッサへと返送される。同時に、バッファスケジューラは、移動スケジューラに対してページのアクセス情報の更新を指示する。次いで、移動スケジューラが、ページをNVMからDRAMへと移動させる必要があるか否かを判断する。移動スケジューラが、ページをNVMからDRAMへと移動させる必要がないと判断した場合、メモリアクセス要求の処理は終わり、移動スケジューラが、ページをNVMからDRAMへと移動させる必要あると判断した場合、(5)へと進む。
(5)移動スケジューラが、ページ移動動作を開始し、タグテーブルを更新する。DRAM内に依然として空きが存在する場合、移動スケジューラは、NVMからのページをDRAMへと直接配置し、DRAM内に空きが存在しない場合、移動スケジューラは、DRAMから置き換えられるべきページを選択し、新たなページをDRAMへと配置する。ここでのページ移動およびデータをNVMから返す処理が、同時に実行されてもよいことに注意すべきである。
タグテーブルに記憶される情報は、ページのアドレス、ページがどのメモリに位置しているか、およびページアクセスの量を含む。さらに、タグテーブルの主要な機能が含まれてよく、ここで主要な機能は、どの物理的なアドレス空間が現時点においてDRAM内に位置しているかを維持すること、および各ページのアクセスカウントを維持することである。タグテーブルは、直接アドレス指定を使用することができ、あるいはサーチ処理の加速および空間のオーバヘッドの削減のために、ハッシュテーブルなどの別のやり方を使用することができる。タグテーブルの更新は、ソフトウェア(例えば、OSまたはハイパーバイザ)にとって完全に透過的な移動スケジューラによって達成される。
図9は、タグテーブルの実施の例であり、ハッシュテーブルが、各ページの情報を維持するために使用される。フェッチアドレスが、ハッシュ動作において、ハッシュテーブルのインデックスを得るために使用される。複数のページが同じ場所へとハッシュされる場合(ハッシュの衝突と称される)、リンクリスト(linked list)が、複数のページの情報を接続するために使用される。ハッシュテーブルの各エントリは、対応するページのアクセス情報を含み、TAGは、アドレス全体であり、Pは、現在のページがDRAM内にあるか否かを示す存在ビットであり、Pが1である場合、現在のページがDRAM内にあることを示しており、0は、現在のページがDRAM内にないことを示しており、Dは、ページが書き換えられたか否かを示すダーティビットであり、Countは、ページのアクセスの回数を示しており、ページの移動を案内するために使用される。新たなメモリアクセス要求の受信時に、バッファスケジューラは、ハッシュ動作を実行してインデックスを取得し、指定のページに一致する情報が見つかるまでインデックスをリンクリスト内のTAGと1つずつ比較する。
図10を参照すると、揮発メモリがDRAMであり、不揮発メモリがNVMである場合が、例として使用され、移動スケジューラの実施形態が、移動判断ロジカルモジュール、タグテーブル更新モジュール、コマンドバッファ、およびデータバッファを備える。移動判断ロジカルモジュールは、アクセス対象のNVMページをDRAMへと移動させる必要があるか否かを判断するように構成される。移動判断ロジカルモジュールは、読出し/書込みアクセスの量についての移動しきい値を記憶するように構成されたレジスタを備える。コマンドバッファは、NVMページを移動させるためのコマンド(主として、移動を必要とするページのアドレスおよびページがDRAMにおいて配置されるアドレス)を記憶し、データバッファは、NVMとDRAMとの間のデータ移動のためのエージェント(agent)として機能する。バッファスケジューラがNVMへのアクセスの要求を受信したとき(タグテーブルの照会後に、メモリアクセス要求のページがDRAM内に存在しない場合)、一方では、バッファスケジューラが、要求をスケジューリングを待つためのNVM要求待ち行列に追加すると同時に、要求を移動スケジューラへと入力する。移動判断ロジカルモジュールは、タグテーブルにおいてページのアクセス情報を照会し、移動しきい値(しきい値は、移動判断ロジカルモジュールの内部のレジスタに記憶され、設定可能である)を超えるか否かを判断し、ここでアクセス情報は、主として読出しアクセスおよび書込みアクセスの量の情報である。移動しきい値を超える場合、ページをNVMからDRAMへと移動させるためのコマンドが、コマンドバッファに追加される。移動スケジューラは、最初にデータをNVMからデータバッファへと抽出し、次いでデータをデータバッファから目標のDRAMへと配置する。移動の完了後に、対応するページの情報を、タグテーブルにおいて更新する必要がある。
図11を参照すると、図11は、移動スケジューラがページをNVMからDRAMへと移動させる必要があるか否かを判断する手順を示している。単純な移動の方針を設定することができる。最近の時間期間におけるページの読出しアクセスおよび書込みアクセスの量の統計が収集され、読出しアクセスしきい値および書込みアクセスしきい値が、それぞれTrおよびTwに設定される。最近の時間期間におけるページの読出しアクセスの量が、Trを超える場合、または最近の時間期間におけるページの書込みアクセスの量が、Twを超える場合に、ページは移動候補として選択される。
(1)NVMへと送信されたフェッチ要求について、フェッチ要求が読出し要求であるか否かを判断する。フェッチ要求が読出し要求である場合、(2)へと進み、フェッチ要求が読出し要求でない場合、(3)へと進む。
(2)最近の時間期間におけるページの読出しアクセスの量が、読出ししきい値Trを超えるか否かを判断する。最近の時間期間におけるページの読出しアクセスの量が、読出ししきい値T r 超えない場合、移動は不要であり、処理は終了し、最近の時間期間におけるページの読出しアクセスの量が、読出ししきい値T r 超える場合には、(4)へと進む。
(3)最近の時間期間におけるページの書込みアクセスの量が、書込みしきい値Twを超えるか否かを判断する。最近の時間期間におけるページの書込みアクセスの量が、書込みしきい値T w 超えない場合、移動は不要であり、処理は終了し、最近の時間期間におけるページの書込みアクセスの量が、書込みしきい値T w 超える場合には、(4)へと進む。
(4)ページを移動候補として選択し、ページをDRAM内の置き換えられるべきページとさらに比較する。ページのアクセスの量の方が多い場合、ページの移動を開始し、タグテーブルの情報を更新する。
当然ながら、段階(2)および(3)において書込みアクセスの量または読出しアクセスの量がしきい値を超えると判断される場合に、段階(4)を実行しなくてもよく、ページの移動が直接開始され、タグテーブルの情報が更新される。当然ながら、別の移動の方針も設定できる。
ソフトウェアにとって透過的なチェックポイント(checkpoint)保護を、以上の実施形態におけるメモリシステムについてさらに実行することができ、例えば移動スケジューラが、DRAM内の書き換えられたデータをNVMへと定期的にバックアップする。NVM内の領域の一部を、チェックポイントを特に記憶するために予約することができる。DRAM内の各々のページについて、ページが書き換えられたか否かを示すために、フラグバイトのダーティが、タグにおいて相応に設定される。移動スケジューラは、DRAM内のページを定期的に調べ、DRAM内の書き換えられたデータだけをNVMへとバックアップする。
さらに、チェックポイントのオーバヘッドを減らすために、チェックポイントを、DRAMがリフレッシュ(Refresh)されているとき、またはメモリスクラブ(Memory Scrubbing)が実行されているときに、実行することができる。DRAMがリフレッシュされているとき、バッファスケジューラは、データをDRAMから行バッファ(Row Buffer)へと読み出し、その後にデータを書き戻す必要がある。メモリスクラブが実行されているとき、データをバッファスケジューラへと読み出す必要があり、エラーチェックが実行され、エラーが発見された後に、補正されたデータがDRAMへと書き戻される。これら2つの動作は、どちらもDRAMからのデータの読出しを必要とし、ここで読み出されたデータを、DRAMの通常の動作に影響を及ぼすことなくオーバヘッドを減らすために、定期的なチェックポイントの実行に使用することができる。
DRAMおよびNVMを含むハイブリッドメモリにおいて、DRAMについてのハードウェアプリフェッチ(Prefetch)をバッファスケジューラにおいて実行することも可能である。ハードウェアは、性能を改善するために、ページアクセスモードを学習し、プリフェッチコマンドを生成し、短時間のうちにアクセスされると予測されるページを前もってDRAMへと移動させる。また、バッファスケジューラにおいてハードウェアヴィクティム(Victim)を実行することも可能である。DRAMから追い出されたページは、短時間のうちに再びアクセスされる可能性がきわめて高いため、追い出されたページをヴィクティムバッファに配置することで、性能を改善することができる。
さらに本発明は、マルチコアプロセッサとメモリシステムとを備えるコンピュータシステムをさらに開示し、ここでマルチコアプロセッサは、メモリアクセス要求を開始するように構成されたメモリコントローラを備え、メモリシステムは、例えば図3〜図11に対応する実施形態など、上述の実施形態および上述の実施形態の内部モジュール構成要素における任意のメモリシステムであってよい。例えば、図12を参照すると、メモリシステムは、メモリインデキシングテーブル、移動スケジューラ、バッファスケジューラ、第1のメモリ、および第2のメモリを備える。モジュールの機能および分割については、上述の実施形態を参照されたい。例えば、図13を参照すると、メモリシステムは、タグテーブル、移動スケジューラ、バッファスケジューラ、DRAM、およびNVMを備える(当然ながら、別の実施形態においては、DRAMおよびNVMがそれぞれ揮発メモリおよび不揮発メモリであってよい)。モジュールの機能および分割については、上述の実施形態を参照されたい。
図14を参照すると、図14は、メモリアクセス要求を処理するための方法の実施形態を示しており、本方法は、以下を含む。
S1401:メモリアクセス要求パケットを受信し、要求パケットからメモリアクセス要求のフェッチアドレスおよびフェッチ動作を取得する。
S1402:メモリアクセス要求内のフェッチアドレスを使用することによってメモリインデキシングテーブルを照会して、メモリアクセス要求に対応するデータユニットブロックが第1のメモリまたは第1のメモリとは異なる種類の第2のメモリのどちらに記憶されているかを判断し、移動スケジューラに対してデータユニットブロックのアクセス情報の更新を指示する。
S1403:データユニットブロックが第1のメモリに記憶されている場合、第1のメモリにおいてメモリアクセス要求のフェッチ動作を完了し、メモリアクセス要求の結果をメモリアクセス要求の生成元(initiator)へと返送する。
S1404:データユニットブロックが第2のメモリに記憶されている場合、第2のメモリにおいてメモリアクセス要求のフェッチ動作を完了し、メモリアクセス要求の結果をメモリアクセス要求の生成元へと返送する。
一実施形態において、ステップS1404は、
データユニットブロックが第2のメモリに記憶されている場合に、アクセス対象のデータユニットブロックを第1のメモリへと移動させ、次いで第1のメモリにおいてメモリアクセス要求のフェッチ動作を完了させ、メモリアクセス要求の結果をメモリアクセス要求の生成元へと返送するステップ
を含む。
別の実施形態において、ステップS1404は、
データユニットブロックが第2のメモリ内にある場合に、第2のメモリに直接アクセスして、メモリアクセス要求のフェッチ動作を完了させ、メモリアクセス要求の結果をメモリアクセス要求の生成元へと返送するステップ
を含む。
一実施形態において、本方法は、以下をさらに含む。
S1405:移動スケジューラが、データユニットブロックのアクセス情報を更新する。
S1406:移動スケジューラが、データユニットブロックのアクセス情報に従って、第2のメモリ内に位置するデータユニットブロックを第1のメモリへと移動させるか否かを判断する。
一実施形態においては、アクセス情報が、アクセス動作の量を含み、ステップS1405が、
移動スケジューラによって、記録されたデータユニットブロックのアクセス動作の量を移動しきい値と比較し、アクセス動作の量が移動しきい値以上である場合に、移動が必要であると判断し、アクセス動作の量が移動しきい値未満である場合に、移動は不要であると判断するステップ
を含む。随意により、ステップS1405は、移動が必要であると判断されたときに、移動スケジューラによってメモリインデキシングテーブルの情報を更新するステップをさらに含む。
この実施形態において、異なる種類の第1のメモリおよび第2のメモリを含むメモリシステムの管理が実行される。メモリアクセス要求を、処理を中断することなく第1のメモリおよび第2のメモリのそれぞれにおいて達成できるため、メモリアクセス速度を改善することができる。
図15を参照すると、図15は、別の実施形態に従ってメモリアクセス要求を処理するための方法の別の実施形態を示しており、本方法は、以下を含む。
S1501:メモリアクセス要求パケットを受信し、要求パケットからメモリアクセス要求のフェッチアドレスおよびフェッチ動作を取得する。
S1502:データユニットブロックのアクセス情報を示すために使用され、データユニットブロックのフェッチアドレス、メモリ位置、およびフェッチ動作の量を含んでおり、メモリ位置はデータユニットブロックが揮発メモリまたは不揮発メモリのどちらに記憶されているかを示しているタグテーブルを、メモリアクセス要求内のフェッチアドレスを使用することによって照会して、メモリアクセス要求に対応するデータユニットブロックが揮発メモリまたは不揮発メモリのどちらに記憶されているか否かを判断する。
S1503:データユニットブロックが揮発メモリに記憶されている場合に、揮発メモリにおいてメモリアクセス要求のフェッチ動作を完了し、メモリアクセス要求の結果をメモリアクセス要求の生成元へと返送する。
S1504:データユニットブロックが不揮発メモリに記憶されている場合に、不揮発メモリにおいてメモリアクセス要求のフェッチ動作を完了し、メモリアクセス要求の結果をメモリアクセス要求の生成元へと返送する。
一実施形態において、ステップS1504は、
データユニットブロックが不揮発メモリに記憶されている場合に、アクセス対象のデータユニットブロックを揮発メモリへと移動させ、次いで揮発メモリにおいてメモリアクセス要求のフェッチ動作を完了させ、メモリアクセス要求の結果をメモリアクセス要求の生成元へと返送するステップ
を含む。
別の実施形態において、ステップS1504は、
データユニットブロックが不揮発メモリ内にある場合に、不揮発メモリに直接アクセスして、メモリアクセス要求のフェッチ動作を完了させ、メモリアクセス要求の結果をメモリアクセス要求の生成元へと返送するステップ
を含む。
さらに、一実施形態において、メモリアクセス要求を処理するための方法は、以下をさらに含む。
S1505:タグテーブル内のデータユニットブロックのアクセス情報を更新する。
S1506:データユニットブロックのアクセス情報に従って、不揮発メモリ内に位置するデータユニットブロックを揮発メモリへと移動させるか否かを判断し、移動後にタグテーブルを更新する。
一実施形態においては、アクセス情報が、アクセス動作の量を含み、ステップS1506が、
記録されたデータユニットブロックのアクセス動作の量を移動しきい値と比較し、アクセス動作の量が移動しきい値以上である場合に、移動が必要であると判断し、アクセス動作の量が移動しきい値未満である場合に、移動は不要であると判断するステップ
を含む。
移動が必要であると判断される場合、不揮発メモリに記憶されたデータユニットブロックを揮発メモリへと移動させる動作を実行し、移動後にタグテーブルを更新する。
一実施形態において、データユニットブロックは、ページである。
この実施形態において、揮発メモリおよび不揮発メモリを含むメモリシステムの管理が実行される。メモリアクセス要求を、処理を中断することなく揮発メモリおよび不揮発メモリのそれぞれにおいて達成できるため、メモリアクセス速度を改善することができる。
当業者であれば、実施形態における方法の工程のすべてまたは一部を、関連のハードウェアに対して指示を行うコンピュータプログラムによって実行できることを、理解できるであろう。プログラムを、コンピュータにとって読み取り可能な記憶媒体に保存することができる。プログラムの動作時に、実施形態における方法の工程が実行される。上述の記憶媒体として、磁気ディスク、光ディスク、読出し専用メモリ(Read-Only Memory、ROM)、またはランダムアクセスメモリ(Random Access Memory、RAM)を挙げることができる。
以上は、あくまでも本発明の典型的な実施形態にすぎない。当業者であれば、本発明の技術的思想および技術的範囲から離れることなく、本発明に対する種々の改良および変種を作り出すことができる。
301 メモリ
302 メモリ
303 バッファ
304 バッファスケジューラ
305 移動スケジューラ
401 解析モジュール
402 行列
403 行列
404 判断モジュール
405 スケジューリングモジュール
406 行列
407 行列
408 パッケージングモジュール
501 レジスタ
502 移動判断ロジカルモジュール
503 コマンドバッファ
504 データバッファ
505 更新モジュール
601 揮発メモリ
602 不揮発メモリ
603 バッファ
604 バッファスケジューラ
605 移動スケジューラ
RAM 拡張データ出力
Tr 読出ししきい値
Tw 書込みしきい値

Claims (25)

  1. プロセッサの動作データを別々に記憶する種類の異なる第1の種類のメモリおよび第2の種類のメモリと、
    前記第1の種類のメモリに位置するデータユニットブロックのフェッチアドレスを含むメモリインデキシングテーブルを記憶するバッファと、
    フェッチアドレスおよびフェッチ動作を含むメモリコントローラによって送信されたメモリアクセス要求を受信し、前記フェッチアドレスおよび前記メモリインデキシングテーブルに従って、前記フェッチアドレスに対応するデータユニットブロックが前記第1の種類のメモリまたは前記第2の種類のメモリのどちらに記憶されているかを判断し、該判断された第1の種類のメモリまたは第2の種類のメモリにおいて前記メモリアクセス要求の前記フェッチ動作を達成し、前記メモリアクセス要求の前記フェッチ動作の結果を前記メモリコントローラへと返すバッファスケジューラと
    を備えるメモリシステム。
  2. 前記バッファスケジューラは、前記フェッチアドレスに対応するデータユニットブロックが前記第2の種類のメモリに記憶されていると判断される場合に、該データユニットブロックのアクセス情報の更新の通知を送信するようにさらに構成され、
    当該メモリシステムは、
    前記移動スケジューラによって送信された通知を受信して、前記データユニットブロックのアクセス情報を更新し、前記データユニットブロックのアクセス情報に従って、前記第2の種類のメモリ内のデータユニットブロックを前記第1の種類のメモリへと移動させるか否かを判断し、移動後に前記メモリインデキシングテーブルを更新する移動スケジューラ
    をさらに備える請求項1に記載のメモリシステム。
  3. 前記バッファスケジューラは、前記データユニットブロックが前記第1の種類のメモリに位置すると判断される場合に、前記第1の種類のメモリにおいて前記メモリアクセス要求を完了させ、前記データユニットブロックが前記第2の種類のメモリに位置すると判断される場合に、前記第2の種類のメモリにおいて前記メモリアクセス要求を完了させるように特に構成されている請求項1または2に記載のメモリシステム。
  4. 前記バッファスケジューラは、前記データユニットブロックが前記第1の種類のメモリに位置すると判断される場合に、前記第1の種類のメモリにおいて前記メモリアクセス要求を完了させ、前記データユニットブロックが前記第2の種類のメモリに位置すると判断される場合に、前記第2の種類のメモリ内の前記データユニットブロックを前記第1の種類のメモリへと移動させ、前記第1の種類のメモリにおいて前記メモリアクセス要求を完了させるように特に構成されている請求項1または2に記載のメモリシステム。
  5. 前記バッファスケジューラは、
    前記メモリコントローラによって送信されたメモリアクセス要求パケットを解析して、前記フェッチアドレスおよび前記フェッチ動作を含むメモリアクセス要求を抽出する解析モジュールと、
    前記第1の種類のメモリにアクセスするメモリアクセス要求を記憶する第1の要求待ち行列と、
    前記第2の種類のメモリにアクセスするメモリアクセス要求を記憶する第2の要求待ち行列と、
    前記フェッチアドレスを使用することによって前記メモリインデキシングテーブルを照会して、メモリアクセス要求によって要求されたデータユニットブロックが第1の種類のメモリ内にあるか否かを判断し、該データユニットブロックが前記第1の種類のメモリ内にある場合に前記メモリアクセス要求を前記第1の要求待ち行列に記憶し、該データユニットブロックが前記第1の種類のメモリ内にない場合に前記メモリアクセス要求を前記第2の要求待ち行列に記憶する判断モジュールと、
    前記第1の種類のメモリにアクセスする前記メモリアクセス要求のフェッチ動作の結果を記憶する第1の返送待ち行列と、
    前記第2の種類のメモリにアクセスする前記メモリアクセス要求のフェッチ動作の結果を記憶する第2の返送待ち行列と、
    前記第1の要求待ち行列内の前記メモリアクセス要求を前記第1の種類のメモリへとスケジュールし、該メモリアクセス要求に対応するフェッチ動作を実行し、前記第2の要求待ち行列内の前記メモリアクセス要求を前記第2の種類のメモリへとスケジュールし、該メモリアクセス要求に対応するフェッチ動作を実行するスケジューリングモジュールと、
    複数のメモリアクセス要求のフェッチ動作の結果をパケットへとパッケージし、該パケットを前記メモリコントローラへと返すパッケージングモジュールと
    を備える請求項1から4のいずれか一項に記載のメモリシステム。
  6. 前記アクセス情報は、アクセス動作の量を含んでおり、
    前記移動スケジューラは、
    移動しきい値を記憶するレジスタと、
    前記アクセス動作の量を前記移動しきい値と比較し、比較結果に応じて、前記第2の種類のメモリ内のデータユニットブロックを前記第1の種類のメモリへと移動させるか否かを判断する移動判断ロジカルモジュールと、
    前記移動判断ロジカルが移動が必要であるとの結果を出力するときに移動コマンドを記憶するコマンドバッファと、
    前記第2の種類のメモリ内に記憶された前記移動コマンドに対応するデータユニットブロックのデータを一時的に記憶するデータバッファと、
    前記データユニットブロックに対応する前記アクセス動作の量を更新し、前記移動判断ロジカルが移動が必要であるとの結果を出力するときに前記メモリインデキシングテーブルを更新する更新モジュールと
    を備える請求項1から5のいずれか一項に記載のメモリシステム。
  7. 前記第1の種類のメモリは、揮発メモリモジュールであり、前記第2の種類のメモリは、不揮発メモリモジュールである請求項1から6のいずれか一項に記載のメモリシステム。
  8. 前記第1の種類のメモリのアクセス速度は、前記第2の種類のメモリのアクセス速度よりも高速である請求項1から6のいずれか一項に記載のメモリシステム。
  9. プロセッサの動作データを別々に記憶する揮発メモリおよび不揮発メモリと、
    データユニットブロックのアクセス情報を示すために用いられ、該データユニットブロックのフェッチアドレス、メモリ位置、およびフェッチ動作の量を含んでおり、前記メモリ位置は該データユニットブロックが前記揮発メモリまたは前記不揮発メモリのどちらに記憶されているかを示しているタグテーブルを記憶するバッファと、
    フェッチアドレスおよびフェッチ動作を含むメモリコントローラのメモリアクセス要求を受信し、前記フェッチアドレスを使用することによって前記タグテーブルを照会することで、前記データユニットブロックが前記揮発メモリまたは前記不揮発メモリのどちらに記憶されているかを判断し、該判断された揮発メモリまたは不揮発メモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリコントローラへと返すバッファスケジューラと
    を備えるメモリシステム。
  10. 前記バッファスケジューラは、前記データユニットブロックのアクセス情報の更新の通知を送信するようにさらに構成され、
    当該メモリシステムは、
    前記通知を受信して、前記タグテーブル内の前記データユニットブロックのアクセス情報を更新し、前記データユニットブロックのアクセス情報に従って、前記不揮発メモリ内のデータユニットブロックを前記揮発メモリへと移動させるか否かを判断し、移動後に前記タグテーブルを更新する移動スケジューラ
    をさらに備える請求項9に記載のメモリシステム。
  11. 前記バッファスケジューラは、
    前記メモリコントローラによって送信されたメモリアクセス要求パケットを解析して、メモリアクセス要求を抽出する解析モジュールと、
    前記揮発メモリにアクセスするメモリアクセス要求を記憶する第1の要求待ち行列と、
    前記不揮発メモリにアクセスするメモリアクセス要求を記憶する第2の要求待ち行列と、
    前記フェッチアドレスを使用することによってメモリインデキシングテーブルを照会して、各々のメモリアクセス要求によってアクセスされるデータユニットブロックが前記揮発メモリ内にあるか否かを判断し、該データユニットブロックが前記揮発メモリ内にある場合に前記メモリアクセス要求を前記第1の要求待ち行列に記憶し、該データユニットブロックが前記揮発メモリ内にない場合に前記メモリアクセス要求を前記第2の要求待ち行列に記憶し、該データユニットブロックの前記アクセス情報の更新の通知を送信する判断モジュールと、
    前記揮発メモリにアクセスする前記メモリアクセス要求の結果を記憶する第1の返送待ち行列と、
    前記不揮発メモリにアクセスする前記メモリアクセス要求の結果を記憶する第2の返送待ち行列と、
    前記第1の要求待ち行列内の前記メモリアクセス要求を前記揮発メモリへとスケジュールして、該メモリアクセス要求に対応するフェッチ動作を実行し、前記第2の要求待ち行列内の前記メモリアクセス要求を前記不揮発メモリへとスケジュールして、該メモリアクセス要求に対応するフェッチ動作を実行するスケジューリングモジュールと、
    複数のメモリアクセス要求の結果をパケットへとパッケージし、該パケットを前記メモリコントローラへと返すパッケージングモジュールと
    を備える請求項9または10に記載のメモリシステム。
  12. 前記アクセス情報は、アクセス動作の量を含んでおり、
    前記移動スケジューラは、
    移動しきい値を記憶するレジスタと、
    前記アクセス動作の量を前記移動しきい値と比較して、前記不揮発メモリ内のページを前記揮発メモリへと移動させるか否かを判断する移動判断ロジカルモジュールと、
    前記移動判断ロジカルが移動が必要であるとの結果を出力するときに移動コマンドを記憶するコマンドバッファと、
    前記不揮発メモリ内に記憶された前記移動コマンドに対応するデータユニットブロックのデータを一時的に記憶するデータバッファと、
    前記データユニットブロックに対応する前記アクセス動作の量を更新し、前記移動判断ロジカルが移動が必要であるとの結果を出力するときに前記メモリインデキシングテーブルを更新するタグ更新モジュールと
    を備える請求項9から11のいずれか一項に記載のメモリシステム。
  13. 前記揮発メモリは、DRAM(ダイナミック・ランダム・アクセス・メモリ、dynamic random access memory)であり、前記不揮発メモリは、NVM(不揮発メモリ、non-volatile memory)である請求項9から12のいずれか一項に記載のメモリシステム。
  14. メモリアクセス要求を処理するための方法であって、
    メモリアクセス要求パケットを受信し、該要求パケットからメモリアクセス要求のフェッチアドレスおよびフェッチ動作を取得するステップと、
    前記メモリアクセス要求内の前記フェッチアドレスを使用することによってメモリインデキシングテーブルを照会して、該アクセス要求に対応するデータユニットブロックが第1の種類のメモリまたは該第1の種類のメモリとは異なる種類の第2の種類のメモリのどちらに記憶されているかを判断し、移動スケジューラに対して前記データユニットブロックのアクセス情報の更新を指示するステップと、
    前記データユニットブロックが前記第1の種類のメモリに記憶されている場合に、前記第1の種類のメモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップと、
    前記データユニットブロックが前記第2の種類のメモリに記憶されている場合に、前記第2の種類のメモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップと
    を含む方法。
  15. 前記データユニットブロックが前記第2の種類のメモリに記憶されている場合に、前記第2の種類のメモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップは、
    前記データユニットブロックが前記第2の種類のメモリに記憶されている場合に、アクセス対象の前記データユニットブロックを前記第1の種類のメモリへと移動させ、次いで前記第1の種類のメモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップ
    を含む請求項14に記載の方法。
  16. 前記データユニットブロックが前記第2の種類のメモリに記憶されている場合に、前記第2の種類のメモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップは、
    前記データユニットブロックが前記第2の種類のメモリに記憶されている場合に、前記第2の種類のメモリに直接アクセスして前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップ
    を含む請求項14に記載の方法。
  17. 前記データユニットブロックの前記アクセス情報に従って、前記移動スケジューラによって、前記第2の種類のメモリ内に位置する前記データユニットブロックを前記第1の種類のメモリへと移動させるか否かを判断するステップ
    をさらに含む請求項14から16のいずれか一項に記載の方法。
  18. 前記アクセス情報は、アクセス動作の量を含んでおり、
    前記データユニットブロックの前記アクセス情報に従って、前記移動スケジューラによって、前記第2の種類のメモリ内に位置する前記データユニットブロックを前記第1の種類のメモリへと移動させるか否かを判断するステップは、
    前記移動スケジューラによって、記録された前記データユニットブロックのアクセス動作の量を移動しきい値と比較し、前記アクセス動作の量が前記移動しきい値以上である場合に移動が必要であると判断し、前記アクセス動作の量が前記移動しきい値未満である場合に移動は不要であると判断するステップ
    を含む請求項17に記載の方法。
  19. 前記移動スケジューラによって、移動が必要であると判断される場合に前記メモリインデキシングテーブルの情報を更新するステップ
    をさらに含む請求項18に記載の方法。
  20. メモリアクセス要求を処理するための方法であって、
    メモリアクセス要求パケットを受信し、該要求パケットからメモリアクセス要求のフェッチアドレスおよびフェッチ動作を取得するステップと、
    データユニットブロックのアクセス情報を示すために用いられ、該データユニットブロックのフェッチアドレス、メモリ位置、およびフェッチ動作の量を含んでおり、前記メモリ位置は該データユニットブロックが揮発メモリまたは不揮発メモリのどちらに記憶されているかを示しているタグテーブルを、前記メモリアクセス要求内の前記フェッチアドレスを使用することによって照会して、該アクセス要求に対応するデータユニットブロックが揮発メモリまたは不揮発メモリのどちらに記憶されているかを判断するステップと、
    前記データユニットブロックが前記揮発メモリに記憶されている場合に、前記揮発メモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップと、
    前記データユニットブロックが前記不揮発メモリに記憶されている場合に、前記不揮発メモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップと
    を含む方法。
  21. 前記データユニットブロックが前記不揮発メモリに記憶されている場合に、前記不揮発メモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップは、
    前記データユニットブロックが前記不揮発メモリに記憶されている場合に、アクセス対象の前記データユニットブロックを前記揮発メモリへと移動させ、次いで前記揮発メモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップ
    を含む請求項20に記載の方法。
  22. 前記データユニットブロックが前記不揮発メモリに記憶されている場合に、前記不揮発メモリにおいて前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップは、
    前記データユニットブロックが前記不揮発メモリに記憶されている場合に、前記不揮発メモリに直接アクセスして前記メモリアクセス要求の前記フェッチ動作を完了させ、前記メモリアクセス要求の結果を前記メモリアクセス要求の生成元へと返すステップ
    を含む請求項20に記載の方法。
  23. 前記アクセス情報は、アクセス動作の量を含んでおり、
    前記データユニットブロックの前記アクセス情報に従って、前記不揮発メモリ内に位置する前記データユニットブロックを前記揮発メモリへと移動させるか否かを判断するステップは、
    記録された前記データユニットブロックのアクセス動作の量を移動しきい値と比較し、前記アクセス動作の量が前記移動しきい値以上である場合に移動が必要であると判断し、前記アクセス動作の量が前記移動しきい値未満である場合に移動は不要であると判断するステップ
    を含む請求項20から22のいずれか一項に記載の方法。
  24. 前記タグテーブル内の前記データユニットブロックのアクセス情報を更新するステップと、
    前記データユニットブロックの前記アクセス情報に従って、前記不揮発メモリ内に位置する前記データユニットブロックを前記揮発メモリへと移動させるか否かを判断し、移動後に前記タグテーブルを更新するステップと
    をさらに含む請求項20から23のいずれか一項に記載の方法。
  25. メモリアクセス要求を開始するメモリコントローラを備えているマルチコアプロセッサと、
    請求項1から13のいずれか一項に記載のメモリシステムと
    を備えるコンピュータシステム。
JP2016515607A 2013-05-31 2013-11-26 メモリシステム、メモリアクセス要求を処理するための方法、およびコンピュータシステム Withdrawn JP2016520233A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201310213533.3 2013-05-31
CN201310213533.3A CN104216837A (zh) 2013-05-31 2013-05-31 一种内存***、内存访问请求的处理方法和计算机***
PCT/CN2013/087840 WO2014190695A1 (zh) 2013-05-31 2013-11-26 一种内存***、内存访问请求的处理方法和计算机***

Publications (1)

Publication Number Publication Date
JP2016520233A true JP2016520233A (ja) 2016-07-11

Family

ID=51987935

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016515607A Withdrawn JP2016520233A (ja) 2013-05-31 2013-11-26 メモリシステム、メモリアクセス要求を処理するための方法、およびコンピュータシステム

Country Status (6)

Country Link
US (1) US20160085585A1 (ja)
EP (1) EP3007070A4 (ja)
JP (1) JP2016520233A (ja)
KR (1) KR20160016896A (ja)
CN (1) CN104216837A (ja)
WO (1) WO2014190695A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018206379A (ja) * 2017-05-30 2018-12-27 シーゲイト テクノロジー エルエルシーSeagate Technology LLC 書き換え可能なインプレースメモリを有するデータ記憶装置
JP2020524859A (ja) * 2017-06-23 2020-08-20 華為技術有限公司Huawei Technologies Co.,Ltd. メモリアクセス技術およびコンピュータシステム

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104380259B (zh) 2012-10-17 2018-09-21 华为技术有限公司 降低内存***功耗的方法和内存控制器
US10275276B2 (en) * 2013-08-19 2019-04-30 International Business Machines Corporation Migrating jobs from a source server from which data is migrated to a target server to which the data is migrated
US9846642B2 (en) * 2014-10-21 2017-12-19 Samsung Electronics Co., Ltd. Efficient key collision handling
CN104571955A (zh) * 2014-12-27 2015-04-29 华为技术有限公司 提高存储容量的方法和装置
CN110059020B (zh) * 2015-04-23 2024-01-30 华为技术有限公司 扩展内存的访问方法、设备以及***
CN105095138B (zh) * 2015-06-29 2018-05-04 中国科学院计算技术研究所 一种扩展同步内存总线功能的方法和装置
WO2017107163A1 (zh) * 2015-12-25 2017-06-29 研祥智能科技股份有限公司 基于异构混合内存的内存管理方法和***
US9847105B2 (en) 2016-02-01 2017-12-19 Samsung Electric Co., Ltd. Memory package, memory module including the same, and operation method of memory package
US10592114B2 (en) 2016-03-03 2020-03-17 Samsung Electronics Co., Ltd. Coordinated in-module RAS features for synchronous DDR compatible memory
US10621119B2 (en) 2016-03-03 2020-04-14 Samsung Electronics Co., Ltd. Asynchronous communication protocol compatible with synchronous DDR protocol
US9830086B2 (en) * 2016-03-03 2017-11-28 Samsung Electronics Co., Ltd. Hybrid memory controller for arbitrating access to volatile and non-volatile memories in a hybrid memory group
CN105893274B (zh) * 2016-05-11 2018-09-21 华中科技大学 一种面向异构内存***建立检查点的装置
US10474370B1 (en) * 2016-05-20 2019-11-12 EMC IP Holding Company LLC Method and system for mitigating the effect of write and read disturbances in solid state memory regions
US10810144B2 (en) * 2016-06-08 2020-10-20 Samsung Electronics Co., Ltd. System and method for operating a DRR-compatible asynchronous memory module
CN109923520B (zh) * 2016-12-12 2022-05-13 华为技术有限公司 计算机***及内存访问技术
CN108345789B (zh) * 2017-04-01 2019-02-22 清华大学 记录访存操作信息的方法及装置
KR20180109142A (ko) 2017-03-27 2018-10-08 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10956090B2 (en) * 2017-06-20 2021-03-23 Kyocera Document Solutions Inc. Memory system and electronic apparatus
CN107547408B (zh) * 2017-07-28 2020-08-28 新华三技术有限公司 一种mac地址哈希冲突的处理方法和装置
KR102395190B1 (ko) * 2017-07-31 2022-05-06 삼성전자주식회사 호스트와 인터페이스를 수행하는 스토리지 장치, 호스트 및 스토리지 장치의 동작방법
CN107506152B (zh) * 2017-09-12 2020-05-08 上海交通大学 一种提高pm访存请求并行度的解析装置与方法
CN109582214B (zh) * 2017-09-29 2020-04-28 华为技术有限公司 数据访问方法以及计算机***
US10860244B2 (en) * 2017-12-26 2020-12-08 Intel Corporation Method and apparatus for multi-level memory early page demotion
KR20190113443A (ko) 2018-03-28 2019-10-08 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR102605609B1 (ko) 2018-04-02 2023-11-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US20210209098A1 (en) * 2018-06-15 2021-07-08 Micro Focus Llc Converting database language statements between dialects
US10838725B2 (en) 2018-09-26 2020-11-17 Apple Inc. Low latency fetch circuitry for compute kernels
US11163473B2 (en) 2018-11-19 2021-11-02 Micron Technology, Inc. Systems, devices, techniques, and methods for data migration
US11256437B2 (en) 2018-11-19 2022-02-22 Micron Technology, Inc. Data migration for memory operation
US11182090B2 (en) 2018-11-19 2021-11-23 Micron Technology, Inc. Systems, devices, and methods for data migration
CN109739625B (zh) * 2018-12-11 2021-07-16 联想(北京)有限公司 一种访问控制方法及电子设备
US10534575B1 (en) * 2018-12-14 2020-01-14 Sap Se Buffering of associative operations on random memory addresses
CN109558093B (zh) * 2018-12-19 2022-04-15 哈尔滨工业大学 一种针对图像处理型负载的混合内存页面迁移方法
CN109656482B (zh) * 2018-12-19 2022-03-25 哈尔滨工业大学 一种基于存储器访问的写热页面预测方法
CN110347510A (zh) * 2019-07-09 2019-10-18 中国科学院微电子研究所 一种混合内存的管理方法、***、设备及介质
CN110399219B (zh) * 2019-07-18 2022-05-17 深圳云天励飞技术有限公司 内存访问方法、dmc及存储介质
CN110543433B (zh) * 2019-08-30 2022-02-11 中国科学院微电子研究所 一种混合内存的数据迁移方法及装置
CN110955488A (zh) * 2019-09-10 2020-04-03 中兴通讯股份有限公司 一种持久性内存的虚拟化方法及***
CN112579251B (zh) * 2019-09-29 2024-04-23 华为技术有限公司 虚拟机内存管理的方法及设备
US11620233B1 (en) * 2019-09-30 2023-04-04 Amazon Technologies, Inc. Memory data migration hardware
CN111695685B (zh) * 2020-05-12 2023-09-26 中国科学院计算技术研究所 一种面向图神经网络应用的片上存储***及方法
CN111880735B (zh) * 2020-07-24 2023-07-14 北京浪潮数据技术有限公司 一种存储***中数据迁移方法、装置、设备及存储介质
US11693593B2 (en) * 2020-10-28 2023-07-04 Micron Technology, Inc. Versioning data stored on memory device
CN112214302B (zh) * 2020-10-30 2023-07-21 中国科学院计算技术研究所 一种进程调度方法
US11656979B2 (en) * 2020-12-22 2023-05-23 SK Hynix Inc. Data tiering in heterogeneous memory system
KR102482191B1 (ko) * 2020-12-23 2022-12-27 연세대학교 산학협력단 하이브리드 메모리 장치 및 이의 관리 방법
US20220223201A1 (en) * 2021-01-11 2022-07-14 Micron Technology, Inc. Caching Techniques for Deep Learning Accelerator
US20230033029A1 (en) * 2021-07-22 2023-02-02 Vmware, Inc. Optimized memory tiering
WO2023018470A1 (en) 2021-08-13 2023-02-16 Micron Technology, Inc. Undo capability for memory devices
TWI835221B (zh) * 2022-07-26 2024-03-11 旺宏電子股份有限公司 記憶體裝置及其操作方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08314794A (ja) * 1995-02-28 1996-11-29 Matsushita Electric Ind Co Ltd 安定記憶装置へのアクセス待ち時間を短縮するための方法およびシステム
CN101636712B (zh) * 2006-12-06 2016-04-13 才智知识产权控股公司(2) 在存储控制器内服务对象请求的装置、***和方法
WO2008121559A1 (en) * 2007-03-30 2008-10-09 Rambus Incorporated System including hierarchical memory modules having different types of integrated circuit memory devices
WO2009048707A1 (en) * 2007-10-12 2009-04-16 Rambus Inc. Managing flash memory in computer systems
US8166229B2 (en) * 2008-06-30 2012-04-24 Intel Corporation Apparatus and method for multi-level cache utilization
US20100169602A1 (en) * 2008-12-29 2010-07-01 Jared E Hulbert Method and Apparatus for Efficient Memory Placement
US20100169708A1 (en) * 2008-12-29 2010-07-01 John Rudelic Method and apparatus to profile ram memory objects for displacment with nonvolatile memory
KR101612922B1 (ko) * 2009-06-09 2016-04-15 삼성전자주식회사 메모리 시스템 및 메모리 시스템 관리 방법
TWI460588B (zh) * 2009-07-17 2014-11-11 Toshiba Kk Memory management device and memory information processing device
US8615637B2 (en) * 2009-09-10 2013-12-24 Advanced Micro Devices, Inc. Systems and methods for processing memory requests in a multi-processor system using a probe engine
US8914568B2 (en) * 2009-12-23 2014-12-16 Intel Corporation Hybrid memory architectures
CN102609378B (zh) * 2012-01-18 2016-03-30 中国科学院计算技术研究所 一种消息式内存访问装置及其访问方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018206379A (ja) * 2017-05-30 2018-12-27 シーゲイト テクノロジー エルエルシーSeagate Technology LLC 書き換え可能なインプレースメモリを有するデータ記憶装置
JP2020524859A (ja) * 2017-06-23 2020-08-20 華為技術有限公司Huawei Technologies Co.,Ltd. メモリアクセス技術およびコンピュータシステム
US11231864B2 (en) 2017-06-23 2022-01-25 Huawei Technologies Co., Ltd. Memory access technology and computer system
US11681452B2 (en) 2017-06-23 2023-06-20 Huawei Technologies Co., Ltd. Memory access technology and computer system

Also Published As

Publication number Publication date
WO2014190695A1 (zh) 2014-12-04
CN104216837A (zh) 2014-12-17
EP3007070A1 (en) 2016-04-13
KR20160016896A (ko) 2016-02-15
EP3007070A4 (en) 2016-05-18
US20160085585A1 (en) 2016-03-24

Similar Documents

Publication Publication Date Title
JP2016520233A (ja) メモリシステム、メモリアクセス要求を処理するための方法、およびコンピュータシステム
US10552337B2 (en) Memory management and device
US11675659B2 (en) DDR memory error recovery
CN109582214B (zh) 数据访问方法以及计算机***
US11210020B2 (en) Methods and systems for accessing a memory
EP2472412B1 (en) Explicitly regioned memory organization in a network element
TWI764265B (zh) 用於將資料連結至記憶體命名空間的記憶體系統
US11748034B2 (en) Signalling for heterogeneous memory systems
KR20220041937A (ko) 메모리 유형에 대한 페이지 테이블 후크
KR20220060548A (ko) 데이터가 저장된 메모리 디바이스를 식별하기 위해 저장된 메타데이터 액세싱
KR20150036281A (ko) 스마트 메모리 버퍼
US10733101B2 (en) Processing node, computer system, and transaction conflict detection method
JP2019536136A (ja) プラットフォームマージニング及びデバッグのためのソフトウェアモードレジスタアクセス
US10769074B2 (en) Computer memory content movement
US10762137B1 (en) Page table search engine
US10810133B1 (en) Address translation and address translation memory for storage class memory
US11531601B2 (en) Error recovery for non-volatile memory modules
US11137941B2 (en) Command replay for non-volatile dual inline memory modules
US20130191587A1 (en) Memory control device, control method, and information processing apparatus
US10754789B1 (en) Address translation for storage class memory in a system that includes virtual machines
US20230376427A1 (en) Memory system and computing system including the same
US20230350797A1 (en) Flash-based storage device and copy-back operation method thereof
US20230420036A1 (en) Method and apparatus for recovering regular access performance in fine-grained dram
US20130151766A1 (en) Convergence of memory and storage input/output in digital systems

Legal Events

Date Code Title Description
A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20161111