(57)【要約】      （修正有）【課題】通常読み出しと投機読み出しとを適切に選択する演算処理装置を提供する。【解決手段】演算処理装置は、演算部と、揮発性メモリと不揮発性メモリとを有し、揮発性メモリが不揮発性メモリのキャッシュとして動作するメモリモジュールに対し、演算部からの読み出し要求に対応するアクセス制御を行うメモリアクセス制御部とを有す。メモリアクセス制御部は、演算部からの読み出し要求の要求アドレスを含む所定単位アドレスが登録されるアドレステーブルを有し、読み出し要求Ｓ１に応答して、要求アドレスがアドレステーブルの所定単位アドレスに含まれる場合、投機読み出しをメモリモジュールに発行しアドレステーブルを更新Ｓ３し、含まれない場合、通常読み出しをメモリモジュールに発行Ｓ４する。【選択図】図１４
2020101983.tif 000002
【特許請求の範囲】
【請求項１】
メモリへの読み出し要求を発行する演算部と、
第1のレイテンシで読み出し可能で第１の容量を有する揮発性メモリと、前記第1のレイテンシより長い第２のレイテンシで読み出し可能で前記第１の容量より大きい第２の容量を有する不揮発性メモリとを有し、前記揮発性メモリが前記不揮発性メモリのキャッシュとして動作するメモリモジュールに対し、前記演算部からの読み出し要求に対応するアクセス制御を行うメモリアクセス制御部とを有し、
前記メモリアクセス制御部は、
前記演算部からの読み出し要求の要求アドレスを含む所定単位アドレス（ページアドレス）が登録される複数のエントリを有するアドレステーブルを有し、
前記読み出し要求に応答して、前記要求アドレスが前記アドレステーブルに記憶されたいずれかの前記所定単位アドレスに含まれる第１のケースの場合、投機読み出しを前記メモリモジュールに発行し、前記要求アドレスが前記アドレステーブルに登録されたいずれの前記所定単位アドレスにも含まれない第２のケースの場合、通常読み出しを前記メモリモジュールに発行し、
前記通常読み出しを発行した場合、前記メモリモジュールからの読み出しレディー信号に応答して送信要求信号を返信し、前記送信要求信号の返信から第１の所定時間後に読み出しデータを受信し、
前記投機読み出しを発行した場合、前記メモリモジュールからヒットフラグと読み出しデータを受信すると前記読み出しデータを取得し、ミスフラグと読み出しデータを受信すると前記読み出しデータを取得せず、
前記第２のケースの場合、前記アドレステーブル内のいずれかの登録中の所定単位アドレスを、前記要求アドレスを含む所定単位アドレスに置き換える、演算処理装置。
【請求項２】
複数の前記演算部を有し、前記複数の演算部がそれぞれ前記読み出し要求を発行し、
前記メモリアクセス制御部は、
前記第２のケースの場合、第２のケースになる頻度より少ない頻度で、前記いずれかの登録中の所定単位アドレスを前記要求アドレスを含む所定単位アドレスに置き換える、請求項１に記載の演算処理装置。
【請求項３】
前記メモリアクセス制御部は、
前記演算部からの読み出し要求の回数、前記第１のケースの回数、または前記第２のケースの回数のいずれかをカウントし、
前記第２のケースの場合、前記カウントの値が基準値に達していれば、前記いずれかの登録中の所定単位アドレスを前記要求アドレスを含む所定単位アドレスに置き換えると共に前記カウントの値をクリアし、前記カウントの値が前記基準値未満であれば、前記置き換えを行わない、請求項２に記載の演算処理装置。
【請求項４】
前記メモリモジュールは、前記通常読み出しまたは前記投機読み出しに応答して、前記所定単位アドレスの情報が登録されるキャッシュタグを参照し読み出しアドレスを含む前記所定単位アドレスの情報が登録されているか否かをチェックし、
前記アドレステーブルの複数のエントリの数が、前記キャッシュタグのエントリ数よりも少ない、請求項２に記載の演算処理装置。
【請求項５】
前記アドレステーブルの複数のエントリの数に対する前記キャッシュタグのエントリ数の比率が小さいほど、前記登録中の所定単位アドレスを前記要求アドレスを含む所定単位アドレスに置き換える頻度が低い、請求項４に記載の演算処理装置。
【請求項６】
前記演算部の数が多いほど、前記登録中の所定単位アドレスを前記要求アドレスを含む所定単位アドレスに置き換える頻度が低い、請求項４に記載の演算処理装置。
【請求項７】
前記メモリアクセス制御部は、
前記アドレステーブルの前記複数のエントリ内の前記登録中の所定単位アドレスを、順番に、前記要求アドレスを含む所定単位アドレスに置き換える、請求項２記載の演算処理装置。
【請求項８】
前記登録中の所定単位アドレスを前記要求アドレスを含む所定単位アドレスに置き換える頻度が変更可能である、請求項２または４に記載の演算処理装置。
【請求項９】
第1のレイテンシで読み出し可能で第１の容量を有する揮発性メモリと、前記第1のレイテンシより長い第２のレイテンシで読み出し可能で前記第１の容量より大きい第２の容量を有する不揮発性メモリとを有し、前記揮発性メモリが前記不揮発性メモリのキャッシュとして動作するメモリモジュールと、
前記メモリモジュールにアクセス可能な演算処理装置を有し、
前記演算処理装置は、
前記メモリモジュールへの読み出し要求を発行する演算部と、
前記メモリモジュールに対し、前記演算部からの読み出し要求に対応するアクセス制御を行うメモリアクセス制御部とを有し、
前記メモリアクセス制御部は、
前記演算部からの読み出し要求の要求アドレスを含む所定単位アドレスが登録される複数のエントリを有するアドレステーブルを有し、
前記読み出し要求に応答して、前記要求アドレスが前記アドレステーブルに記憶されたいずれかの前記所定単位アドレスに含まれる第１のケースの場合、投機読み出しを前記メモリモジュールに発行し、前記要求アドレスが前記アドレステーブルに登録されたいずれの前記所定単位アドレスにも含まれない第２のケースの場合、通常読み出しを前記メモリモジュールに発行し、
前記通常読み出しを発行した場合、前記メモリモジュールからの読み出しレディー信号に応答して送信要求信号を返信し、前記送信要求信号の返信から第１の所定時間後に読み出しデータを受信し、
前記投機読み出しを発行した場合、前記メモリモジュールからヒットフラグと読み出しデータを受信すると前記読み出しデータを取得し、ミスフラグと読み出しデータを受信すると前記読み出しデータを取得せず、
前記第２のケースの場合、前記アドレステーブル内のいずれかの登録中の所定単位アドレスを、前記要求アドレスを含む所定単位アドレスに置き換える、情報処理装置。
【請求項１０】
メモリへの読み出し要求を発行する演算部と、
第1のレイテンシで読み出し可能で第１の容量を有する揮発性メモリと、前記第1のレイテンシより長い第２のレイテンシで読み出し可能で前記第１の容量より大きい第２の容量を有する不揮発性メモリとを有し、前記揮発性メモリが前記不揮発性メモリのキャッシュとして動作するメモリモジュールに対し、前記演算部からの読み出し要求に対応するアクセス制御を行い、前記演算部からの読み出し要求の要求アドレスを含む所定単位アドレスが登録される複数のエントリを有するアドレステーブルを有するメモリアクセス制御部とを有する、演算処理装置の前記メモリアクセス制御部が、
前記読み出し要求に応答して、前記要求アドレスが前記アドレステーブルに記憶されたいずれかの前記所定単位アドレスに含まれる第１のケースの場合、投機読み出しを前記メモリモジュールに発行し、前記要求アドレスが前記アドレステーブルに登録されたいずれの前記所定単位アドレスにも含まれない第２のケースの場合、通常読み出しを前記メモリモジュールに発行し、
前記通常読み出しを発行した場合、前記メモリモジュールからの読み出しレディー信号に応答して送信要求信号を返信し、前記送信要求信号の返信から第１の所定時間後に読み出しデータを受信し、
前記投機読み出しを発行した場合、前記メモリモジュールからヒットフラグと読み出しデータを受信すると前記読み出しデータを取得し、ミスフラグと読み出しデータを受信すると前記読み出しデータを取得せず、
前記第２のケースの場合、前記アドレステーブル内のいずれかの登録中の所定単位アドレスを、前記要求アドレスを含む所定単位アドレスに置き換える、演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，演算処理装置、情報処理装置及び演算処理装置の制御方法に関する。
【背景技術】
【０００２】
パソコンやサーバの主記憶装置には、主に揮発性メモリであるDRAMモジュールが使用されている。一方で、例えば、金融市場などの超高速取引を必要とする業界ではパソコンやサーバの処理速度の向上が重要である。そのため、例えばSSD（Solid State Drive）やHDD（Hard Disk Drive）に代表される２次記憶装置内のデータベースの一部を主記憶装置に展開することで、２次記憶装置へのアクセスを削減したインメモリデータベースが注目されている。
【０００３】
上記のような要求に応えるべく、DRAMより記憶容量が大きなメモリ素子をDRAMのメモリモジュールに搭載したデバイスが開発されている。その一つとして、単価は高いが高速アクセス可能なDRAM等の揮発性メモリと、単価が安く大容量のNAND型フラッシュメモリ等の不揮発性メモリと、を単一のメモリモジュール内に搭載したデバイスがある。例えばNVDIMM（Nonvolatile Dual In Line Memory Module）である。このメモリモジュールは、DRAMをキャッシュとして使用する大容量の不揮発性メモリモジュールである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１７−２２０２３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
NVDIMMなどの揮発性メモリと不揮発性メモリを混載したメモリモジュール（以下、不揮発性メモリモジュールと称する）は、揮発性メモリであるDRAMを大容量の不揮発性メモリのキャッシュとして使用する。不揮発性メモリモジュールは、通常読み出しを受信すると、DRAMキャッシュにヒットすればデータ取得までのレイテンシは短くなるが、DRAMキャッシュでミスすると揮発性メモリへのアクセスが発生しレイテンシは長くなる。その結果、不揮発性メモリモジュールは、読み出し順とは異なるアウトオブオーダでデータをホストに返信する。そして、読み出しのプロトコルでは、読み出しからデータ取得までの間にホストとメモリモジュールとが信号を送受信するハンドシェイクを行うため、DRAMのメモリモジュールよりレイテンシが長くなる。
【０００６】
一方、不揮発性メモリモジュールでは、ハンドジェークを省略してデータを取得でき、通常読み出しよりレイテンシを短くした投機読み出しが利用できる。この投機読み出しの場合、DRAMキャッシュでヒットした場合は通常読み出しよりレイテンシが短くなるが、ミスした場合は逆に長くなる。
【０００７】
そこで，本実施の形態の第1の側面の目的は，通常読み出しと投機読み出しとを適切に選択する演算処理装置、情報処理装置及び演算処理装置の制御方法を提供することにある。
【課題を解決するための手段】
【０００８】
本実施の形態の第１の側面は，メモリへの読み出し要求を発行する演算部と、
第1のレイテンシで読み出し可能で第１の容量を有する揮発性メモリと、前記第1のレイテンシより長い第２のレイテンシで読み出し可能で前記第１の容量より大きい第２の容量を有する不揮発性メモリとを有し、前記揮発性メモリが前記不揮発性メモリのキャッシュとして動作するメモリモジュールに対し、前記演算部からの読み出し要求に対応するアクセス制御を行うメモリアクセス制御部とを有し、
前記メモリアクセス制御部は、
前記演算部からの読み出し要求の要求アドレスを含む所定単位アドレス（ページアドレス）が登録される複数のエントリを有するアドレステーブルを有し、
前記読み出し要求に応答して、前記要求アドレスが前記アドレステーブルに記憶されたいずれかの前記所定単位アドレスに含まれる第１のケースの場合、投機読み出しを前記メモリモジュールに発行し、前記要求アドレスが前記アドレステーブルに登録されたいずれの前記所定単位アドレスにも含まれない第２のケースの場合、通常読み出しを前記メモリモジュールに発行し、
前記通常読み出しを発行した場合、前記メモリモジュールからの読み出しレディー信号に応答して送信要求信号を返信し、前記送信要求信号の返信から第１の所定時間後に読み出しデータを受信し、
前記投機読み出しを発行した場合、前記メモリモジュールからヒットフラグと読み出しデータを受信すると前記読み出しデータを取得し、ミスフラグと読み出しデータを受信すると前記読み出しデータを取得せず、
前記第２のケースの場合、前記アドレステーブル内のいずれかの登録中の所定単位アドレスを、前記要求アドレスを含む所定単位アドレスに置き換える、演算処理装置である。
【発明の効果】
【０００９】
第１の側面によれば，通常読み出しと投機読み出しとが適切に選択され、読み出しのデータ取得までのレイテンシを短くできる。
【図面の簡単な説明】
【００１０】
【図１】本実施の形態における演算処理装置と不揮発性メモリモジュールの構成例を示す図である。
【図２】通常読み出しでの動作シーケンスを示す図である。
【図３】通常読み出しでのメモリアクセス制御部と不揮発性メモリモジュール間の信号のタイミングチャートを示す図である。
【図４】通常読み出しでの動作シーケンスを示す図である。
【図５】通常読み出しでのメモリアクセス制御部と不揮発性メモリモジュール間の信号のタイミングチャートを示す図である。
【図６】投機読み出しでの動作シーケンスを示す図である。投機読み出しのコマンドは、例えばSREADである。
【図７】投機読み出しでのメモリアクセス制御部と不揮発性メモリモジュール間の信号のタイミングチャートを示す図である。
【図８】投機読み出しでの動作シーケンスを示す図である。投機読み出しのコマンドは、例えばSREADである。
【図９】投機読み出しでのメモリアクセス制御部と不揮発性メモリモジュール間の信号のタイミングチャートを示す図である。
【図１０】不揮発性メモリモジュールのレイテンシの例のテーブルを示す図である。
【図１１】不揮発性メモリモジュールとその２つのメモリへの読み出しデータの関係を示す図である。
【図１２】本実施の形態におけるメモリアクセス制御部MACと不揮発性メモリモジュールNV_MMの構成例を示す図である。
【図１３】第1の実施の形態におけるメモリアクセス制御部内のコマンド発行部CMD_ISSUの構成例を示す図である。
【図１４】コマンド発行部CMD_ISSUの動作例のフローチャートを示す図である。
【図１５】コマンド発行部のケース１，２の動作の具体例を示す図である。
【図１６】第２の実施の形態におけるメモリアクセス制御部内のコマンド発行部CMD_ISSUの構成例を示す図である。
【図１７】コマンド発行部CMD_ISSUの動作例のフローチャートを示す図である。
【図１８】コマンド発行部の複数のケースの動作の具体例を示す図である。
【図１９】メモリアクセス制御部がミスのたびにページアドレステーブルを更新する場合の動作例を示す図である。
【図２０】メモリアクセス制御部が読み出し要求Ｎ回毎に１回ページアドレステーブルを更新する動作例を示す図である。
【図２１】通常読み出しXREADのみを発行した場合または投機読み出しSREADのみを発行した場合と、第２の実施の形態のようにページアドレステーブルにヒットか否かでXREADまたはSREADを発行した場合との比較を示す図である。
【発明を実施するための形態】
【００１１】
［本実施の形態における演算処理装置と不揮発性メモリモジュール］
図１は、本実施の形態における演算処理装置と不揮発性メモリモジュールの構成例を示す図である。情報処理装置１は、演算処理装置（プロセッサまたは中央演算ユニット（Central Processor Unit）、以下プロセッサと称する。）CPUと、不揮発性メモリモジュールNV_MMとを有する。プロセッサCPUは、不揮発性メモリモジュールをメインメモリとして使用する。
【００１２】
プロセッサCPUは、それぞれ演算器２とレベル１のキャッシュL1_CACHEとを有するｎ個（ｎは複数）の演算部としての演算コアCORE_0〜CORE_n-1と、複数の演算コア（以下、単に「コア」と称する）に共通に設けられたレベル２のキャッシュL2_CACHEと、メモリアクセス制御部MACとを有する。メモリアクセス制御部は、プロセッサCPUとは別のチップで構成されてもよい。また、プロセッサCPUは、１個または複数個設けられても良い。
【００１３】
また、不揮発性メモリモジュールMV_MMは、メモリ制御部M_CONと、DRAM等の揮発性メモリV_MEMと、NAND型フラッシュメモリ等の不揮発性メモリNV_MEMとを有する。揮発性メモリV_MEMは、不揮発性メモリNV_MEMのキャッシュとして使用される。したがって、揮発性メモリV_MEM内にはキャッシュタグが格納される。
【００１４】
コアCOREは、図示しない命令フェッチ及び命令デコーダを含む命令発行部が命令を発行し、演算器２が発行された命令を実行する。発行された命令の実行においてメモリアクセスが必要な場合、コアは、メモリへのアクセスを要求するメモリ要求を発行する。メモリ要求には、読み出し要求と書き込み要求が含まれる。そして、L1キャッシュL1_CACHEは、発行されたメモリ要求がキャッシュヒットの場合、L1キャッシュ内のデータの読み出しまたはデータへの書き込みを含むメモリ要求を実行し、一方、キャッシュミスの場合、更にメモリ要求をL2キャッシュL2_CACHEに発行する。
【００１５】
L2キャッシュL2_CACHEは、複数のコアから発行されるメモリ要求に応答して、L1キャッシュと同様に、発行されたメモリ要求がキャッシュヒットの場合、L2キャッシュ内のデータに対してメモリ要求を実行し、一方、キャッシュミスの場合、更にメモリ要求をメモリアクセス制御部MACに発行する。
【００１６】
［不揮発性メモリモジュールの読み出し］
メモリ要求が読み出し要求の場合について、メモリアクセス制御部MACと不揮発性メモリモジュールNV_MMの動作を簡単に説明する。前述したとおり、不揮発性メモリモジュールNV_MMは、メモリ制御部M_CONと、DRAM等の揮発性メモリV_MEMと、NAND型フラッシュメモリ等の不揮発性メモリNV_MEMとを有する。揮発性メモリV_MEMは、不揮発性メモリNV_MEMのキャッシュとして使用される。また、揮発性メモリV_MEMの読み出しのレイテンシは、不揮発性メモリNV_MEMより短く、一方、揮発性メモリのデータ容量は不揮発性メモリより小さい。
【００１７】
さらに、不揮発性メモリモジュールへの読み出しはバイト単位（１バイトまたは複数バイト）で行われる。また、揮発性メモリV_MEMへの読み出しもバイト単位で行われる。一方、不揮発性メモリNV_MEMへの読み出しはバイト単位より大きい容量のページ単位で行われる。
【００１８】
メモリ制御部M_CONは、メモリアクセス制御部MACからの読み出しに応答して、揮発性メモリでキャッシュヒットすれば、揮発性メモリV_MEM内の読み出し先のバイト単位のデータをメモリアクセス制御部MACに返信する。一方、キャッシュミスすれば、不揮発性メモリNV_MEM内の読み出しアドレスを含むページ領域のデータを揮発性メモリV_MEMに登録し（記憶し）、読み出しアドレスに対応するバイト領域のデータをメモリアクセス制御部MACに返信する。
【００１９】
揮発性メモリV_MEMがDRAMの場合、読み出しのレイテンシはDRAMと同様に短い。そのため、キャッシュヒットした場合、不揮発性メモリモジュールは、揮発性メモリV_MEM内のデータをメモリアクセス制御部に応答するので、DRAMと同様に読み出しレイテンシが短くなる。一方、キャッシュミスした場合、不揮発性メモリモジュールは、不揮発性メモリNV_MEM内のデータをメモリアクセス制御部に応答するので、DRAMより長い読み出しレイテンシになる。
【００２０】
読み出しレイテンシがメモリモジュール内の状態に応じて異なるので、揮発性メモリモジュールV_MMは、メモリアクセス制御部MACに対して、読み出し順ではなくアウトオブオーダで読み出しデータを応答する。このアウトオブオーダでのデータ応答を考慮して、不揮発性メモリモジュールNV_MMは、２種類の読み出し、即ち、通常読み出しと投機読み出しをサポートする。通常読み出しは、投機読み出しではない非投機（ノンスペキュレイティブ）読み出しである。
【００２１】
前述したとおり、揮発性メモリV_MEMが不揮発性メモリNV_MEMのキャッシュとして使用されるために、不揮発性メモリモジュールVM_MMは、例えば、揮発性メモリ内に記憶されているデータのアドレス情報を登録するキャッシュタグと同等の記憶手段を有する。キャッシュタグは、例えば、揮発性メモリV_MEM内に設けられるが、メモリ制御部M_CON内に設けられても良い。また、キャッシュミスすると、不揮発性メモリ内の読み出し先のデータを含むページ領域のデータが揮発性メモリ内に登録され、例えば、キャッシュタグ内に読み出し先アドレスを含むページ領域のアドレス情報（所定単位アドレスの情報またはページアドレスの情報）が登録される。但し、揮発性メモリモジュールの予定されている規格には、上記のキャッシュ制御に関する要件は含まれていない。
【００２２】
次に、不揮発性メモリモジュールがサポートする通常読み出しと投機読み出しについて説明する。
【００２３】
［通常読み出しXREAD］
図２，図４は、通常読み出しでの動作シーケンスを示す図である。通常読み出しのコマンドは、例えばXREADである。図２，図４には、メモリアクセス制御部MACと、不揮発性メモリモジュールNV_MEM内のメモリ制御部M_CONと揮発性メモリV_MEMと不揮発性メモリNV_MEMが示される。
【００２４】
図３，５は、通常読み出しでのメモリアクセス制御部と不揮発性メモリモジュール間の信号のタイミングチャートを示す図である。図３，図５には、メモリアクセス制御部MACがコマンド等を出力するコマンドバスCMDと、不揮発性メモリモジュールNV_MMが出力する読み出し応答信号RSP_Rと、データバスDQと、ECCバスECCと、メタデータ信号META_DATAが示される。
【００２５】
図２，図３に示す通常読み出しXREADがキャッシュヒットする場合、以下の動作になる。メモリアクセス制御部MACは、通常読み出しXREADとそのアドレスXADDとをコマンドバスCMDに発行する。通常読み出しXREADにはユニークな読み出し識別子RIDが付加される。
【００２６】
通常読み出しXREADに応答して、不揮発性メモリモジュールのメモリ制御部M_CONは、揮発性メモリV_MEMにアクセスし、キャッシュヒットしてデータ応答が可能になると、リードレディ信号RD_RDYをメモリアクセス制御部MACに送信する。そして、メモリアクセス制御部MACがリードレディ信号RD_RDYに応答して、送信要求信号SENDをコマンドバスCMDを介して不揮発性メモリモジュールに送信する。
【００２７】
この送信要求信号SENDの発行から所定時間ｔSEND後に、不揮発性メモリモジュールは、読み出しデータDATAをメモリアクセス制御部MACに送信する。読み出しデータDATAに加えて、ECC信号ECCと、読み出し識別子RIDも送信される。このように、不揮発性メモリモジュールNV_MMは、メモリアクセス制御部MACとリードレディ信号RD_RDY及び送信要求信号SENDによるハンドシェイクを行った後、メモリアクセス制御部MACにデータ応答する。
【００２８】
この場合、揮発性メモリV_MEMでキャッシュヒットしたため、通常読み出しXREADからデータ応答までのレイテンシは、DRAMと同様に短くなる。但し、ハンドシェイクが行なわれる分、レイテンシはDRAMより長くなる。
【００２９】
図４，図５は、通常読み出しがキャッシュミスする場合の動作である。図２，図３と同様に、メモリアクセス制御部MACは、通常読み出しXREADとそのアドレスXADDとをコマンドバスCMDに発行する。通常読み出しXREADにはユニークな読み出し識別子RIDが付加される。
【００３０】
通常読み出しXREADに応答して、不揮発性メモリモジュールのメモリ制御部M_CONは、揮発性メモリV_MEMにアクセスしキャッシュミスすると、不揮発性メモリNV_MEMにアクセスする。そして、不揮発性メモリNV_MEMから読み出されたページ単位のデータを揮発性メモリに登録し（記憶し）、データ応答が可能になり、リードレディ信号RD_RDYをメモリアクセス制御部MACに送信する。そして、メモリアクセス制御部MACが、リードレディ信号RD_RDYに応答して送信要求信号SENDをコマンドバスCMDを介して不揮発性メモリモジュールに送信する。
【００３１】
この送信要求信号SENDの発行から所定時間ｔSEND後に、不揮発性メモリモジュールは、読み出しデータDATAをメモリアクセス制御部MACに送信する。読み出しデータDATAに加えて、ECC信号ECCと、読み出し識別子RIDも送信される。このように、不揮発性メモリモジュールNV_MMは、キャッシュミスの場合、不揮発性メモリからデータを読み出し揮発性メモリに登録する。そして、メモリアクセス制御部MACとリードレディ信号RD_RDY及び送信要求信号SENDによるハンドシェイクを行った後、メモリアクセス制御部MACにデータ応答する。
【００３２】
不揮発性メモリNV_MEMへのレイテンシが揮発性メモリよりも長いので、不揮発性メモリモジュールがデータ応答するまでのレイテンシは、キャッシュヒットの場合よりもかなり長くなる。例えば、キャッシュヒットの場合のレイテンシは約６０nsec、キャッシュミスの場合のレイテンシは平均３００nsecである。
【００３３】
［投機読み出しSREAD］
図６，図８は、投機読み出しでの動作シーケンスを示す図である。投機読み出しのコマンドは、例えばSREADである。図７，９は、投機読み出しでのメモリアクセス制御部と不揮発性メモリモジュール間の信号のタイミングチャートを示す図である。
【００３４】
図６，図７に示す投機読み出しSREADがキャッシュヒットする場合、以下の動作になる。メモリアクセス制御部MACは、通常読み出しXREADと同様に、投機読み出しSREADとそのアドレスXADDとをコマンドバスCMDに発行する。投機読み出しSREADにもユニークな読み出し識別子RIDが付加される。
【００３５】
投機読み出しSREADに応答して、不揮発性メモリモジュールのメモリ制御部M_CONは、揮発性メモリV_MEMにアクセスし、キャッシュヒットまたはミスにかかわらず、投機読み出しSREADから所定時間tSEND後に、データ応答する。不揮発性メモリモジュールは、データ応答で、キャッシュヒットの場合は揮発性メモリから読み出したデータを、ECCコードとキャッシュヒットフラグH/Mと共に、メモリアクセス制御部MACに返信する。メモリアクセス制御部は、キャッシュヒットフラグがキャッシュヒットの場合、受信したデータを取得する。一方、キャッシュミスの場合は、不揮発性メモリモジュールは、ダミーのデータを、ECCコードとキャッシュヒットフラグと共に、返信し、メモリアクセス制御部は、キャッシュヒットフラグがキャッシュミスであるので、受信したデータを破棄し、リードレディ信号を待つ。
【００３６】
上記のとおり、投機読み出しでは、キャッシュヒットした場合、不揮発性メモリモジュールは、リードレディ信号と送信要求信号SENDによるハンドシェイクを行わないで、投機読み出しから所定時間tSEND後にデータ応答する。よって、DRAMと同等に短いレイテンシになり、通常読み出しXREADでキャッシュヒットした場合よりも短いレイテンシ、例えば３０nsec、になる。
【００３７】
図８，図９に示す投機読み出しがキャッシュミスする場合、以下の動作になる。まず、メモリアクセス制御部MACは、投機読み出しSREADとそのアドレスXADDとをコマンドバスCMDに発行する。投機読み出しSREADにはユニークな読み出し識別子RIDが付加される。
【００３８】
投機読み出しSREADに応答して、不揮発性メモリモジュールのメモリ制御部M_CONは、揮発性メモリV_MEMにアクセスし、キャッシュヒットまたはミスにかかわらず、投機読み出しSREADから所定時間tSEND後に、データ応答する。不揮発性メモリモジュールは、データ応答で、キャッシュミスの場合はダミーの読み出したデータを、ECCコードとキャッシュヒットフラグH/Mと共に、メモリアクセス制御部MACに返信する。メモリアクセス制御部は、キャッシュヒットフラグがキャッシュミスであるので、受信したデータを破棄し、リードレディ信号を待つ。
【００３９】
一方、不揮発性メモリモジュールのメモリ制御部M_CONは、キャッシュミスしたため、不揮発性メモリにアクセスし、読み出しアドレスを含むページ領域のデータを読み出し、揮発性メモリに登録する。さらに、不揮発性メモリモジュールは、リードレディ信号をメモリアクセス制御部MACに送信する。そして、メモリアクセス制御部MACがリードレディ信号RD_RDYに応答して、送信要求信号SENDをコマンドバスCMDを介して不揮発性メモリモジュールに送信する。
【００４０】
この送信要求信号SENDの発行から所定時間ｔSEND後に、不揮発性メモリモジュールは、読み出しデータDATAをメモリアクセス制御部MACに送信する。読み出しデータDATAに加えて、ECC信号ECCと、読み出し識別子RIDも送信される。
【００４１】
投機読み出しでキャッシュミスの場合、投機読み出しSREADから所定時間tSEND後の投機的データ応答が追加されるので、メモリアクセス制御部と不揮発性メモリモジュール間のバスの使用効率が悪化する。そのため、投機読み出しでキャッシュミスの場合、通常読み出しでキャッシュミスした場合よりレイテンシが長く、例えば平均４００nsecになる。
【００４２】
図１０は、不揮発性メモリモジュールのレイテンシの例のテーブルを示す図である。このテーブルに示すとおり、通常読み出しXREADのレイテンシの例は、キャッシュヒットすると６０nsec、キャッシュミスすると平均３００nsecである。一方、投機読み出しSREADのレイテンシの例は、キャッシュヒットすると３０nsec、キャッシュミスすると平均４００nsecである。この表からすると、メモリアクセス制御部MACは、キャッシュヒットする場合は、投機読み出しSREADを発行するのが望ましく、キャッシュミスする場合は、通常読み出しXREADを発行するのが望ましいことが理解できる。逆に、キャッシュミスする場合に投機読み出しを発行すると長いレイテンシが大きなペナルティになる。
【００４３】
図１１は、不揮発性メモリモジュールとその２つのメモリへの読み出しデータの関係を示す図である。図１１には、不揮発性メモリモジュールVM_MMの揮発性メモリV_MEMと不揮発性メモリNV_MEMの読み出しデータのサイズが示される。両メモリは、マトリクスの各行が１ページに対応するデータサイズであり、各行の１ページは複数のバイトを有する。図１１では、単純化して、１ページは８バイトを有しているが、実際には、１ページのデータは、数キロバイトのデータを有する。また、不揮発性メモリNV_MEMのページ数は、揮発性メモリV_MEMのページ数より大きい。
【００４４】
メモリアクセス制御部MACが発行する読み出しREADには、読み出し先のアドレスとデータサイズが付加され、図１１の例では、アドレスADDがB300であり、データサイズが６４バイトである。この読み出しREADに応答して、不揮発性メモリモジュールは、揮発性メモリでキャッシュヒットした場合、アドレスB300の１バイトのデータを先頭に、６４バイトのデータを読み出す。一方、揮発性メモリでキャッシュミスした場合、不揮発性メモリモジュールは、不揮発性メモリNV_MEM内のアドレスB300を含むページアドレスBxxxの１ページのデータを読み出し、揮発性メモリV_MEMに記憶し登録する。さらに、不揮発性メモリモジュールは、登録した１ページのデータから、アドレスB300の１バイトのデータを先頭に６４バイトのデータを、メモリアクセス制御部に応答する。
【００４５】
上記の例では、アドレスB300は、１バイトのデータに対するアドレスであり、アドレスBxxxは、１ページのデータに対するページアドレスである。
【００４６】
上記の通り、不揮発性メモリモジュールは、読み出しREADのアドレスB300について揮発性メモリでキャッシュミスすると、不揮発性メモリから読み出しのアドレスB300を含む１ページのデータを読み出し、揮発性メモリに登録する。したがって、その後発行された読み出しREADのアドレスが、B100, B200など、ページアドレスBxxxの１ページ内のアドレスであれば、不揮発性メモリモジュールは、揮発性メモリでキャッシュヒットし、揮発性メモリから読み出したデータを応答する。このように、不揮発性メモリモジュールに対する読み出しのデータサイズ（バイト単位）が、不揮発性メモリの読み出しのデータサイズ（ページ単位）より小さい。従って、一旦、キャッシュミスして不揮発性メモリの１ページのデータが揮発性メモリに登録されると、その後の読み出しREADのアドレスが同一ページ内であれば、キャッシュヒットする可能性が高い。
【００４７】
［本実施の形態のメモリアクセス制御部］
図１２は、本実施の形態におけるメモリアクセス制御部MACと不揮発性メモリモジュールNV_MMの構成例を示す図である。メモリアクセス制御部MACは、プロセッサ内のラストレベルキャッシュ（図１ではL2キャッシュ）から発行されるメモリ要求M_RQを受信し、受信したメモリ要求を要求キューRQ_QUEに保存する。リクエスト発行制御部RQ_ISSU_CONは、要求キューRQ_QUE内の発行可能なメモリ要求M_RQを選択する。発行可能か否かは、例えば不揮発性メモリモジュールの読み出しの発行禁止期間以外か否かなど読み出し発行ルールに基づく。そして、コマンド発行部CMD_ISSUは、選択されたメモリ要求M_RQが読み出し要求の場合、通常読み出しXREADか投機読み出しSREADのいずれかを選択し、不揮発性メモリモジュールNV_MMに発行する。
【００４８】
不揮発性メモリモジュールNV_MMは、図１に示したものと同じ構成を有する。不揮発性メモリモジュールは、受信した通常読み出しXREADまたは投機読み出しSREADに対するデータを、内部の揮発性メモリまたは不揮発性メモリから読み出し、読み出したデータを、データバスDATAを介して、メモリアクセス制御部MACに返信する。不揮発性メモリモジュールは、読み出しデータの返信と共に、読み出しデータのエラー訂正コードECCと読み出し識別子RIDなどが別のバスを介して返信する。
【００４９】
メモリアクセス制御部MACは、データ受信部DATA_RCVが、読み出しデータDATAとECCとRIDを受信し、ECCに基づいてデータDATAのエラーを訂正し、訂正後のデータをラストレベルキャッシュに応答する。
【００５０】
［第1の実施の形態におけるメモリアクセス制御部］
図１３は、第1の実施の形態におけるメモリアクセス制御部内のコマンド発行部CMD_ISSUの構成例を示す図である。コマンド発行部CMD_ISSUは、投機読み出しSREAD対象のページアドレスを複数登録するページアドレステーブルTBLと、ページアドレスの更新エントリを指すポインタPTRと、コマンド選択部CMD_SELとを有する。
【００５１】
前述したとおり、不揮発性メモリモジュールは、揮発性メモリにキャッシュ登録されているデータに対応するアドレス情報（ページアドレス）をキャッシュタグに記憶し、読み出しXREADまたはSREADに応答して、キャッシュタグのアドレス情報が読み出しアドレスにヒットするか否かのキャッシュヒット判定を行う。コマンド発行部CMD_ISSU内のページアドレステーブルTBLのページアドレスを記憶するエントリ数は、キャッシュタグのエントリ数よりもかなり少ない。
【００５２】
図１４は、コマンド発行部CMD_ISSUの動作例のフローチャートを示す図である。コマンド選択部CMD_SELは、入力されるメモリ要求M_RQが読み出し要求の場合（S1のYES）、ページアドレステーブルTBLを参照し、通常読み出しXREADか投機読み出しSREADのいずれかを選択し、不揮発性メモリモジュールに発行する。
【００５３】
具体的には、コマンド選択部CMD_SELは、読み出し要求のアドレスが、ページアドレステーブルTBLに登録中のページアドレスのいずれにも含まれない第２のケースでは（ミス）（S2のNO）、通常読み出しXREADを選択しメモリモジュールに発行する（S4）。それと共に、ページアドレステーブルTBLのポインタPTRが指し示すエントリに、読み出し要求のアドレスを含むページアドレスを登録する（S4）。このとき、エントリ内に既登録のページアドレスは新しいページアドレスに置き換えられる（S4）。また、ポインタPTRは＋１インクリメントされる。ポインタPTRは、ページアドレスの更新が行われるたびに、例えばページアドレステーブルのインデックス順（または逆順）にインクリメントされる。
【００５４】
一方、コマンド選択部CMD_SELは、読み出し要求のアドレスが、ページアドレステーブルTBLに登録中のいずれかのページアドレスに含まれる第１のケース（ヒット）（S2のYES）では、投機読み出しSREADを選択し発行する（S3）。メモリモジュールでキャッシュヒットする可能性が高いからである。
【００５５】
図１５は、コマンド発行部のケース１，２の動作の具体例を示す図である。前提として、ページアドレステーブルTBLには、ページアドレスAxxx, Bxxx, Cxxx, Dxxxが登録中である。このことは、メモリモジュールでは、以前ページアドレスAxxx, Bxxx, Cxxx, Dxxxのデータが揮発性メモリ内に記憶されたことがあることを意味する。
【００５６】
ケース１（CASE1）の場合、読み出し要求のアドレスADDがバイトアドレスC200であり、ページアドレステーブル内のページアドレスCxxxに含まれ、ページアドレステーブルヒットHITである。そのため、コマンド選択部CMD_SELは、読み出し要求に対して、投機読み出しSREADを発行する。
【００５７】
一方、ケース２（CASE2）の場合、読み出し要求のアドレスADDがバイトアドレスE030であり、ページアドレステーブル内のいずれのページアドレスにも含まれず、ページアドレステーブルミスMISSである。そのため、コマンド選択部CMD_SELは、読み出し要求に対して通常読み出しXREADを発行する。さらに、コマンド選択部は、ポインタPTRが指し示すページアドレスAxxxを、読み出し要求のアドレスE030を含む新たなページアドレスExxxに置換する更新処理UPDATEを行い、ポインタPTRを１つインクリメントする。
【００５８】
上記のメモリアクセス制御部は、読み出し要求のアドレスがページアドレステーブルに登録中のいずれのページアドレスにも含まれないケース２（ミス）の場合、通常読み出しXREADを選択して発行し、その読み出し要求のアドレスのページアドレスをページアドレステーブルに登録する。通常読み出しXREADを発行された不揮発性メモリモジュールは、キャッシュタグでキャッシュミスになると、不揮発性メモリにアクセスし読み出しアドレスを含むページアドレスの１ページのデータを読み出し、揮発性メモリに登録する。
【００５９】
そのため、その後、要求キューRQ_QUEで選択された読み出し要求M_RQのアドレスがページアドレステーブルに登録されたいずれかのページアドレスに含まれるケース１の場合、不揮発性メモリモジュールでキャッシュヒットする可能性が高い。そこで、メモリアクセス制御部のコマンド発行部CMD_ISSUは、前記の読み出し要求に応答して投機読み出しSREADを発行する。この投機読み出しSREADは、不揮発性メモリモジュールでキャッシュヒットする可能性が高く、不揮発性メモリモジュールが、ハンドシェイクなしに応答するデータにヒット状態のヒットフラグを付加してコアのメモリアクセス制御部MACに応答する可能性が高い。そのため、メモリアクセス制御部は、投機読み出しSREADの最短のレイテンシでデータを取得できる可能性が高い。
【００６０】
逆に、読み出し要求のアドレスが登録中のいずれのページアドレスにも含まれないケース２の場合、キャッシュヒットする可能性がケース１よりも低い。そこで、コマンド選択部CMD_SELは、通常読み出しXREADを選択し発行する。この通常読み出しXREADは、たとえ不揮発性メモリモジュールでキャッシュミスしても、投機読み出しSREADでのキャッシュミスよりもレイテンシが短く、投機読み出しSREADのキャッシュミス時の最長レイテンシでデータを受信することを回避できる。
【００６１】
但し、前述のとおり、メモリアクセス制御部MAC内のページアドレステーブルのエントリ数は、不揮発性メモリモジュール内のキャッシュタグのエントリ数より少ないので、必ずしも、ページアドレステーブル内のページアドレスと、不揮発性メモリモジュール内のキャッシュタグ内のページアドレスとは一致していない。そのため、通常読み出しXREADでキャッシュヒットすることもあれば、投機読み出しSREADでキャッシュミスすることも生じうる。
【００６２】
［第２の実施の形態におけるメモリアクセス制御部］
図１に示すとおり、不揮発性メモリモジュールに読み出し要求を発行するプロセッサが複数のコアを有する場合、複数のコアはそれぞれが実行するプロセスにおいて読み出し要求を別々に発行する。そのため、複数のコアがそれぞれ発行する読み出し要求のアドレスは、ランダムなアドレスになることが予想される。但し、１つのコアが発行する読み出し要求のアドレスは、一般に、ある時間内にあるアドレス領域内に集中する時間的局所性及び空間的局所性があることが予想できる。
【００６３】
一方、不揮発性メモリモジュール内のキャッシュタグのエントリ数に比較すると、メモリアクセス制御部内のページアドレステーブルのエントリ数は非常に少ないことがある。例えば、メモリアクセス制御部MACがプロセッサCPUのチップ内に内蔵される場合、ページアドレステーブルのエントリ数には一定の上限が設けられる。
【００６４】
上記のようにマルチコアプロセッサのメインメモリとして不揮発性メモリモジュールを使用する場合、マルチコアからの読み出し要求のアドレスは、複数のコア間ではランダムなアドレスになる。また、メモリアクセス制御部内のページアドレステーブルのエントリ数に限りがあり少ない。そのため、第１の実施の形態のように、ページアドレステーブルの更新をケース２のたびに毎回行うと、ページアドレステーブルに新たに登録されたページアドレスに含まれるアドレスの読み出し要求が、その登録後再入力されるまでに、そのページアドレスがページアドレステーブルから追い出されることが頻繁に発生する。その場合、不揮発性メモリモジュール内のキャッシュタグのエントリ数は多いため、再入力された読み出し要求はキャッシュタグではヒットするが、ページアドレステーブルではミスとなり、最短のレイテンシで読み出せる可能性のある投機読み出しSREADを発行できなくなる。
【００６５】
そこで、第２の実施の形態では、ケース２のたびに毎回ページアドレステーブルを更新せず、ケース２になる頻度より少ない頻度でページアドレステーブルを更新する。例えば、ケース２が所定回数発生する毎に一回、ページアドレステーブルを更新する。または、ケース１が所定回数発生する毎に一回、ページアドレステーブルを更新する。あるいは、読み出し要求が所定回数発生する毎に一回、ページアドレステーブルを更新する。
【００６６】
図１６は、第２の実施の形態におけるメモリアクセス制御部内のコマンド発行部CMD_ISSUの構成例を示す図である。第１の実施の形態と同様に、コマンド発行部CMD_ISSUは、投機読み出しSREAD対象のページアドレスを複数登録するページアドレステーブルTBLと、ページアドレスの更新対象のエントリを指すポインタPTRと、コマンド選択部CMD_SELとを有する。さらに、コマンド発行部CMD_ISSUは、コアからの読み出し要求等をカウントするカウンタCNTRと、所定回数Ｎを記憶するレジスタＮを有する。このカウンタCNTRは、前述のケース２の回数、ケース１の回数、または読み出し要求の回数をカウントする。そして、カウンタCNTRが所定回数、例えばＮ回、に達していれば、ケース２においてページアドレステーブルを新たなページアドレスで更新する。また、レジスタＮの所定回数Ｎは、ユーザ等により書き換え可能（変更可能）である。
【００６７】
図１７は、コマンド発行部CMD_ISSUの動作例のフローチャートを示す図である。この例では、カウンタCNTRは読み出し要求の回数をカウントする。
【００６８】
まず、コマンド選択部CMD_SELは、入力されるメモリ要求M_RQが読み出し要求の場合（S1のYES）、ページアドレステーブルTBLを参照し、通常読み出しXREADか投機読み出しSREADのいずれかを選択し、不揮発性メモリモジュールに発行する。
【００６９】
コマンド選択部CMD_SELは、入力された読み出し要求のアドレスが、ページアドレステーブルに登録中のいずれかのページアドレスに含まれるケース１（ヒット）か、いずれのページアドレスにも含まれないケース２（ミス）かの判定を実行する（S2）。
【００７０】
ケース１（ヒット）の場合（S2のYES）、カウンタCNTRが所定回数Ｎに達していない場合（S11のNO）、コマンド選択部CMD_SELは、投機読み出しSREADを選択して発行し、カウンタを＋１インクリメントする（S12）。一方、カウンタCNTRが所定回数Ｎに達していない場合（S11のYES）、コマンド選択部CMD_SELは、投機読み出しSREADを選択して発行し、カウンタをインクリメントしない（S13）。
【００７１】
逆に、判定S2でケース２（ミス）の場合、カウンタCNTRが所定回数Ｎに達していない場合（S14のNO）、コマンド選択部CMD_SELは、通常読み出しXREADを選択して発行し、カウンタを＋１インクリメントする（S15）。一方、カウンタCNTRが所定回数Ｎに達している場合（S14のYES）、コマンド選択部CMD_SELは、投機読み出しSREADを選択して発行し、ページアドレステーブルのポインタが指すエントリを読み出し要求のアドレスを含むページアドレスに置換または更新し、カウンタを０にリセットする（S16）。
【００７２】
図１８は、コマンド発行部の複数のケースの動作の具体例を示す図である。前提として、ページアドレステーブルTBLには、ページアドレスAxxx, Bxxx, Cxxx, Dxxxが登録中である。
【００７３】
ケース１_１（CASE1_1）の場合、メモリ要求M_RQが読み出し要求であり、読み出し要求のアドレスADDがバイトアドレスC200であり、ページアドレステーブル内のページアドレスCxxxに含まれるので、ヒットHITである。そのため、コマンド選択部CMD_SELは、投機読み出しSREADを発行する。そして、コマンド選択部は、カウンタがＮに達していないので、カウンタを＋１インクリメントする（S12）。
【００７４】
一方、ケース２_１（CASE2_1）の場合、メモリ要求が読み出し要求であり、そのアドレスADDがバイトアドレスE030であり、ページアドレステーブル内のいずれのページアドレスにも含まれないので、ミスMISSである。そのため、コマンド選択部CMD_SELは、通常読み出しXREADを発行する。さらに、コマンド選択部は、カウンタがＮに達していないので、カウンタを＋１インクリメントする（S15）。但し、コマンド選択部は、カウンタがＮに達していないので、ページアドレステーブルを新たなページアドレスに更新しない。
【００７５】
次に、ケース１_２（CASE1_2）の場合、メモリ要求のアドレスADDがバイトアドレスD300であり、ページアドレステーブル内のページアドレスDxxxに含まれるので、ヒットHITである。そのため、コマンド選択部は、投機読み出しSREADを発行する。そして、カウンタがＮに達しているので、カウンタのインクリメントは行わない（S13）。
【００７６】
最後に、ケース２_２（CASE2_2）の場合、メモリ要求のアドレスADDがバイトアドレスF300であり、ページアドレステーブル内のいずれのページアドレスにも含まれないので、ミスMISSである。そのため、コマンド選択部CMD_SELは、通常読み出しXREADを発行する（S16）。さらに、ポインタPTRが指し示すページアドレスAxxxを、読み出し要求のアドレスE030を含む新たなページアドレスFxxxに変換する更新処理UPDATEを行い、ポインタPTRを０にリセットする（S16）。
【００７７】
図１９は、メモリアクセス制御部がミスのたびにページアドレステーブルを更新する場合の動作例を示す図である。図１９中、左側に縦方向の時間軸tに沿って、読み出し要求のアドレスと発行した通常読み出しXREADまたは投機読み出しSREADが示され、右側に時間０−１６に対応するページアドレステーブルの変遷例を示す。ページアドレステーブルは４つのエントリを有する例である。左側の読み出し要求のアドレスは４ビットの１６進数で記載し、右側のページアドレステーブルP_ADD_TBLには、ポインタPが指すインデックス０〜３のエントリに、読み出し要求のアドレスの最上位ビットをそのまま最上位ビットに表示し下位３ビットを「ｘ」で表示するページアドレスが記載される。
【００７８】
左側の時間軸ｔに沿った読み出し要求のアドレスは、マルチコアプロセッサからの例であり、アトランダムになっている。そして、右側のページアドレステーブルは、時間４，５，６，７，８，１０，１１，１２，１３，１４，１５，１６でそれぞれ新しいページアドレスに更新されている。
【００７９】
この例では、時間５でページアドレステーブルに登録されたページアドレス「5xxx」に、時間９の読み出し要求のアドレス「５F40」がヒットして、時間９で投機読み出しSREADが発行されている。一方、それ以外の時間では全て読み出し要求のアドレスを含むページアドレスがテーブル内に登録されておらずミスとなり、通常読み出しXREADが発行されている。
【００８０】
図２０は、メモリアクセス制御部が読み出し要求Ｎ回毎に１回ページアドレステーブルを更新する動作例を示す図である。左側の時間軸に対するアドレス例は図１９と同じである。
【００８１】
この場合、右側のページアドレステーブルは、時間０−１５ではページアドレスの更新は発生せず、時間１６にページアドレスの更新が行われる。そして、左側の時間軸に対応して示される発行された読み出しは、時間８，１０，１２，１３で投機読み出しSREADになる。このように、ページアドレステーブルの更新頻度を、ケース２のミスになる頻度より少ない頻度にすることで、ページアドレステーブルのエントリ数が少なく、ランダムな読み出しアドレスの読み出し要求が入力された場合でも、投機読み出しSREADを適切に発行することができる。その結果、投機読み出しによるキャッシュヒット時の短いレイテンシでデータを取得する頻度を上げることができる。
【００８２】
上記のページアドレステーブルを更新する頻度を示す所定回数Ｎは、種々の要因により最適な値に設定されることが望ましい。例えば、（１）アドレステーブルのエントリ数に対するメモリモジュール内のキャッシュタグのエントリ数の比率が小さいほど、所定回数Ｎを大きくし、アドレステーブル内の登録中のページアドレスを読み出し要求のアドレスを含むページアドレスに置き換える頻度を低くする。（２）メモリモジュールに読み出し要求を発行するコアの数が多いほど、所定回数Ｎを大きくし、登録中のページアドレスを読み出し要求のアドレスを含むページアドレスに置き換える頻度を低くする。（３）所定回数Ｎを変更しながら、プロセッサに所定のプログラムを実行させて、平均レイテンシが最も短くなる所定回数Ｎに設定する。
【００８３】
図２１は、通常読み出しXREADのみを発行した場合または投機読み出しSREADのみを発行した場合と、第２の実施の形態のようにページアドレステーブルにヒットか否かでXREADまたはSREADを発行した場合との比較を示す図である。２つの比較グラフそれぞれで、横軸が揮発性メモリV_MEMのキャッシュタグでのヒット率を、縦軸が平均レイテンシを示す。読み出し要求のアドレスを図１９，２０の様にランダムに発生させてシミュレーションを行った結果である。
【００８４】
投機読み出しSREADのみを発行した場合との比較では、キャッシュヒット率が低いほど、第２の実施の形態では適切に通常読み出しXREADを発行するので、レイテンシの差が大きくなる。また、通常読み出しXREADのみを発行した場合との比較では、逆に、キャッシュヒット率が高いほど、第２の実施の形態では適切に投機読み出しSREADを発行するので、レイテンシの差が大きくなる。いずれの比較においても、第２の実施の形態の平均レイテンシが比較対象より短くなることが示される。
【００８５】
以上のとおり、本実施の形態によれば、揮発性メモリと不揮発性メモリを搭載する不揮発性メモリモジュールに対する読み出し要求について、通常読み出しと投機読み出しを適宜選択して発行するので、平均的なレイテンシを短くできる。
【符号の説明】
【００８６】
CPU：プロセッサ、中央演算ユニット
CORE：コア、プロセッサコア
L2_CASCHE：レベル２キャッシュ
MAC：メモリアクセス制御部
NV_MM：不揮発性メモリモジュール、メモリモジュール
V_MEM：揮発性メモリ
NV_MEM：不揮発性メモリ
XREAD：通常読み出し
SREAD：投機読み出し
RD_RDY：リードレディ信号
SEND：送信要求信号
【図１】
2020101983.tif 000003
【図２】
2020101983.tif 000004
【図３】
2020101983.tif 000005
【図４】
2020101983.tif 000006
【図５】
2020101983.tif 000007
【図６】
2020101983.tif 000008
【図７】
2020101983.tif 000009
【図８】
2020101983.tif 000010
【図９】
2020101983.tif 000011
【図１０】
2020101983.tif 000012
【図１１】
2020101983.tif 000013
【図１２】
2020101983.tif 000014
【図１３】
2020101983.tif 000015
【図１４】
2020101983.tif 000016
【図１５】
2020101983.tif 000017
【図１６】
2020101983.tif 000018
【図１７】
2020101983.tif 000019
【図１８】
2020101983.tif 000020
【図１９】
2020101983.tif 000021
【図２０】
2020101983.tif 000022
【図２１】
2020101983.tif 000023