(57)【要約】      （修正有）【課題】ホストプロセッサ及びメインメモリ間のデータ転送能力を向上させるメモリシステムを提供する。【解決手段】メモリシステムは、第１のアドレスを含む第１のメモリＭＤと、第１のメモリＭＤのデータを記憶可能な第２のメモリＭＢと、第３のメモリＭＲと、第１、第２及び第３のメモリＭＤ、ＭＢ、ＭＲへのアクセスを制御するコントローラ１４と、を備える。コントローラ１４は、第１のアドレスへのアクセスを行うコマンドが発行され、そのコマンドが第１のアドレスへの書き込み動作を指示し、かつ、第１のアドレスのデータが第２及び第３のメモリＭＢ，ＭＲに記憶されていない場合、第１のアクセスに代えて第３のメモリＭＲへのアクセスを行う。【選択図】図１
2018049387.tif 000002
【特許請求の範囲】
【請求項１】
第１のアドレスを含む第１のメモリと、前記第１のメモリのデータを記憶可能な第２のメモリと、第３のメモリと、前記第１、第２、及び、第３のメモリへのアクセスを制御するコントローラと、を具備し、
前記コントローラは、
前記第１のアドレスへの第１のアクセスを行うコマンドが発行され、かつ、前記第１のアドレスのデータが前記第２のメモリ内に記憶される第１の場合、前記第１のアクセスに代えて前記第２のメモリへの第２のアクセスを行い、
前記コマンドが発行され、かつ、前記第１のアドレスの前記データが前記第３のメモリの第２のアドレス内に記憶される第２の場合、前記第１のアクセスに代えて前記第２のアドレスへの第３のアクセスを行い、
前記コマンドが発行され、前記コマンドが前記第１のアドレスへの書き込み動作を指示し、かつ、前記第１及び第２の場合以外の第３の場合、前記第１のアクセスに代えて前記第３のメモリの第３のアドレスへの第４のアクセスを行う、
メモリシステム。
【請求項２】
第１のアドレスを含む第１のメモリと、前記第１のメモリのデータを記憶可能な第２のメモリと、第３のメモリと、前記第１、第２、及び、第３のメモリへのアクセスを制御するコントローラと、ＣＰＵコアを含むプロセッサと、を具備し、
前記コントローラは、
前記プロセッサにより前記第１のアドレスへの第１のアクセスを行うコマンドが発行され、かつ、前記第１のアドレスのデータが前記第２のメモリ内に記憶される第１の場合、前記第１のアクセスに代えて前記第２のメモリへの第２のアクセスを行い、
前記プロセッサにより前記コマンドが発行され、かつ、前記第１のアドレスの前記データが前記第３のメモリの第２のアドレス内に記憶される第２の場合、前記第１のアクセスに代えて前記第２のアドレスへの第３のアクセスを行い、
前記プロセッサにより前記コマンドが発行され、前記コマンドが前記第１のアドレスへの書き込み動作を指示し、かつ、前記第１及び第２の場合以外の第３の場合、前記第１のアクセスに代えて前記第３のメモリの第３のアドレスへの第４のアクセスを行う、
プロセッサシステム。
【請求項３】
第１のアドレスを含む第１のメモリと、前記第１のメモリのデータを記憶可能な第２のメモリと、第３のメモリと、前記第１のメモリにアクセスするコマンドに基づいて、前記第１、第２、及び、第３のメモリへのアクセスを制御するコントローラと、を具備し、
前記第２及び第３のメモリは、同一のメモリ階層内に配置される、前記第１のメモリのキャッシュメモリであり、
前記第１のアドレスの前記データが前記第２のメモリ内に記憶される場合、前記第１のアドレスの前記データは、前記第３のメモリ内に記憶されず、かつ、前記第１のアドレスの前記データが前記第３のメモリ内に記憶される場合、前記第１のアドレスの前記データは、前記第２のメモリ内に記憶されない、
メモリシステム。
【請求項４】
第１のアドレスを含む第１のメモリと、前記第１のメモリのデータを記憶可能な第２のメモリと、第３のメモリと、前記第１のメモリにアクセスするコマンドに基づいて、前記第１、第２、及び、第３のメモリへのアクセスを制御するコントローラと、前記コマンドを発行するプロセッサと、を具備し、
前記第２及び第３のメモリは、同一のメモリ階層内に配置される、前記第１のメモリのキャッシュメモリであり、
前記第１のアドレスの前記データが前記第２のメモリ内に記憶される場合、前記第１のアドレスの前記データは、前記第３のメモリ内に記憶されず、かつ、前記第１のアドレスの前記データが前記第３のメモリ内に記憶される場合、前記第１のアドレスの前記データは、前記第２のメモリ内に記憶されない、
プロセッサシステム。
【請求項５】
前記第２のメモリは、前記第１のメモリのセンスアンプとして機能する、請求項１又は３に記載のメモリシステム。
【請求項６】
前記第２のメモリは、前記第１のメモリのセンスアンプとして機能する、請求項２又は４に記載のプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、メモリシステム及びプロセッサシステムに関する。
【背景技術】
【０００２】
ホストプロセッサと、メインメモリと、を含むメモリシステムにおいて、メインメモリは、例えば、ＤＲＡＭ（ダイナミックランダムアクセスメモリ）を備える。しかし、ＤＲＡＭは、データ保持のために、定期的にリフレッシュを行わなければならない、という特質を有する。従って、ＤＲＡＭをメインメモリとする場合、ホストプロセッサ及びメインメモリ間のデータ転送能力がＤＲＡＭのリフレッシュにより制限される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許出願公開第2013/0329491号明細書
【特許文献２】米国特許出願公開第2012/0317376号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
実施形態は、ホストプロセッサ及びメインメモリ間のデータ転送能力を向上させる技術を提案する。
【課題を解決するための手段】
【０００５】
実施形態によれば、メモリシステムは、第１のアドレスを含む第１のメモリと、前記第１のメモリのデータを記憶可能な第２のメモリと、第３のメモリと、前記第１、第２、及び、第３のメモリへのアクセスを制御するコントローラと、を備え、前記コントローラは、前記第１のアドレスへの第１のアクセスを行うコマンドが発行され、かつ、前記第１のアドレスのデータが前記第２のメモリ内に記憶される第１の場合、前記第１のアクセスに代えて前記第２のメモリへの第２のアクセスを行い、前記コマンドが発行され、かつ、前記第１のアドレスの前記データが前記第３のメモリの第２のアドレス内に記憶される第２の場合、前記第１のアクセスに代えて前記第２のアドレスへの第３のアクセスを行い、前記コマンドが発行され、前記コマンドが前記第１のアドレスへの書き込み動作を指示し、かつ、前記第１及び第２の場合以外の第３の場合、前記第１のアクセスに代えて前記第３のメモリの第３のアドレスへの第４のアクセスを行う。
【図面の簡単な説明】
【０００６】
【図１】メモリシステムの例を示す図。
【図２】メモリシステムの例を示す図。
【図３】メモリシステムの例を示す図。
【図４】メモリシステムの例を示す図。
【図５】３つのメモリ間でのデータ移動の例を示す図。
【図６】ＤＲＡＭの例を示す図。
【図７】バッファメモリ（ＤＲＡＭのセンスアンプ）の例を示す図。
【図８】リディームメモリの例を示す図。
【図９】リディームメモリのセンスアンプの例を示す図。
【図１０】メモリアクセス制御（memory access controlling）の例を示すフローチャート。
【図１１Ａ】図１０のメモリアクセス制御を視覚化（visualize）した図。
【図１１Ｂ】図１０のメモリアクセス制御を視覚化した図。
【図１１Ｃ】図１０のメモリアクセス制御を視覚化した図。
【図１２】比較例としてのメモリアクセス制御を示すフローチャート。
【図１３】リディームメモリの空き制御（memory space controlling）の例を示すフローチャート。
【図１４】図１３のリディームメモリの空き制御を視覚化した図。
【図１５】リディームメモリの空き制御の条件を示すフローチャート。
【図１６】リディームメモリの空き制御の条件を示すフローチャート。
【図１７】リディームメモリからＤＲＡＭへの書き戻し動作（write back operation）の例を示すフローチャート。
【図１８】第１の適用例を示す図。
【図１９】第２の適用例を示す図。
【図２０】第３の適用例を示す図。
【図２１】第４の適用例を示す図。
【図２２】ＬＵＴ（バッファメモリヒットテーブル）の例を示す図。
【図２３】ＬＵＴ（リディームメモリヒットテーブル）の例を示す図。
【図２４】ＬＵＴ（リディームメモリヒットテーブル）の例を示す図。
【発明を実施するための形態】
【０００７】
以下、図面を参照しながら実施例を説明する。  
（メモリシステム）  
図１乃至図４は、メモリシステムの例を示している。
【０００８】
本実施例が適用されるメモリシステムは、プロセッサ（ホスト）１０と、メインメモリ１１と、を備える。
【０００９】
メモリシステムは、例えば、パーソナルコンピュータ、携帯端末を含む電子機器、デジタルスチルカメラ及びビデオカメラを含む撮像装置、タブレットコンピュータ、スマートフォン、ゲーム機器、カーナビゲーションシステム、プリンタ機器、スキャナ機器や、サーバーシステムなど、である。
【００１０】
図１の例では、プロセッサ１０は、ＣＰＵ１２と、キャッシュメモリ１３と、コントローラ１４と、を備え、かつ、コントローラ１４は、ＬＵＴ（look-up table）１５を備える。また、メインメモリ１１は、ＤＲＡＭ  ＭＤと、バッファメモリＭＢと、リディームメモリ（redeem memory）ＭＲと、を備える。
【００１１】
図２の例では、プロセッサ１０は、ＣＰＵ１２と、キャッシュメモリ１３と、コントローラ１４と、を備え、かつ、コントローラ１４は、ＬＵＴ１５と、リディームメモリＭＲと、を備える。また、メインメモリ１１は、ＤＲＡＭ  ＭＤと、バッファメモリＭＢと、を備える。
【００１２】
図３の例では、プロセッサ１０は、ＣＰＵ１２と、キャッシュメモリ１３と、を備える。また、メインメモリ１１は、ＤＲＡＭ  ＭＤと、バッファメモリＭＢと、リディームメモリＭＲと、を備える。コントローラ１４は、プロセッサ１０及びメインメモリ１１間に接続され、かつ、ＬＵＴ１５を備える。
【００１３】
図４の例では、プロセッサ１０は、ＣＰＵ１２と、キャッシュメモリ１３と、を備える。また、メインメモリ１１は、ＤＲＡＭ  ＭＤと、バッファメモリＭＢと、を備える。コントローラ１４は、プロセッサ１０及びメインメモリ１１間に接続され、かつ、ＬＵＴ１５と、リディームメモリＭＲと、を備える。
【００１４】
ＣＰＵ１２は、例えば、複数のＣＰＵコアを備える。複数のＣＰＵコアは、異なるデータ処理を互いに並行して行うことができる要素のことである。近年、ＣＰＵコア数の増加（例えば、８コア、１６コアなど）によりプロセッサ１０の処理能力が向上し、かつ、メインメモリ１１のメモリ容量が増大したため（例えば、１００ギガバイトなど）、プロセッサ１０及びメインメモリ１１間のデータ転送能力の向上が緊急の課題となっている。
【００１５】
キャッシュメモリ１２は、この課題を解決する一つの技術である。キャッシュメモリ１２は、例えば、高速アクセスが可能なＳＲＡＭ（スタティックランダムアクセスメモリ）を備え、ＤＲＡＭ  ＭＤ内に記憶されたデータをキャッシュすることにより、この課題を解決する。しかし、ＳＲＡＭは、待機電力が大きく、かつ、セル面積が大きいため、大容量化することができない。
【００１６】
そこで、本実施例のメモリシステムは、３種類のメモリ、例えば、ＤＲＡＭ  ＭＤ、バッファメモリＭＢ、及び、リディームメモリＭＲを備える。
【００１７】
ＤＲＡＭ  ＭＤは、メインメモリ１１におけるデータの正式な格納場所である。バッファメモリＭＢ及びリディームメモリＭＲは、プロセッサ１０がＤＲＡＭ  ＭＤ内に記憶されたデータに高速アクセスするための要素である。
【００１８】
バッファメモリＭＢは、例えば、ＳＲＡＭである。バッファメモリＭＢは、例えば、ＤＲＡＭ  ＭＤのセンスアンプとして機能する。
【００１９】
ＤＲＡＭ  ＭＤ及びバッファメモリＭＢは、以下の特徴を有する。
【００２０】
ＤＲＡＭ  ＭＤへのアクセスは、メモリセルアレイ内の１つのロウをアクティベート(activate)することにより行う。１つのロウをアクティベートするとは、１つのロウ、即ち、１本のワード線に接続されるメモリセル内の選択トランジスタをオンにすることを意味する。１つのロウをアクティベートする動作は、例えば、ロウオープン動作（row-open operation）又はページオープン動作（page-open operation）と称される。また、アクティベートされた１つのロウは、例えば、オープンロウ（opened row）又はオープンページ（opened page）と称される。
【００２１】
一方、ＤＲＡＭ  ＭＤにおいて、１つのロウをデアクティベート(deactivate)するとは、１つのロウ、即ち、１本のワード線に接続されるメモリセル内の選択トランジスタをオフにすることを意味する。１つのロウをデアクティベートする動作は、例えば、ロウクローズ動作（row-close operation）又はページクローズ動作（page-close operation）と称される。また、デアクティベートされた１つのロウは、例えば、クローズロウ（closed row）又はクローズページ（closed page）と称される。１つのロウがデアクティベートされた状態では、次のアクセスに備えて、ビット線のプリチャージ動作などが行われる。
【００２２】
バッファメモリＭＢは、例えば、ＤＲＡＭ  ＭＤのアクティベートされた１つのロウ内の複数のメモリセル（１本のワード線に接続される複数のメモリセル）内に記憶されるデータ（以下、ページデータと称する）を記憶可能である。バッファメモリＭＢは、プロセッサ１０内のキャッシュメモリ（例えば、Ｌ１〜Ｌ３キャッシュ）１３のメモリ階層と、メインメモリ１１内のＤＲＡＭ  ＭＤのメモリ階層と、の間のメモリ階層を有するキャッシュメモリとして機能する。
【００２３】
例えば、プロセッサ１０は、アクセス対象となるデータがバッファメモリＭＢ内に記憶されている場合（バッファメモリヒットの場合）、ＤＲＡＭ  ＭＤにアクセスすることなく、バッファメモリＭＢにアクセスすることにより、メインメモリ１１へのアクセスを高速化する。
【００２４】
リディームメモリＭＲは、アクセス対象となるデータがバッファメモリＭＢ内に記憶されていない場合（バッファメモリミスの場合）でも、ＤＲＡＭ  ＭＤにアクセスすることなく、即ち、ＤＲＡＭ  ＭＤにおいてページオープン／クローズ動作（ロウオープン／クローズ動作）を行うことなく、アクセス対象となるデータの読み出し／書き込み動作を可能とする要素である。
【００２５】
例えば、バッファメモリミスの場合、一般的には、ＤＲＡＭ  ＭＤにおいて、まず、ページクローズ動作を行い、この後、アクセス対象となる新たなページ（ロウ）をアクセスするためにページオープン動作を行わなければならない。しかし、このようなページオープン／クローズ動作は、メインメモリ１１へのアクセスを遅くする。
【００２６】
そこで、バッファメモリミスの場合であっても、アクセス対象となるデータがリディームメモリＭＲ内に記憶されている場合（リディームメモリヒットの場合）には、ＤＲＡＭ  ＭＤへのアクセスを先延ばしし、即ち、ＤＲＡＭ  ＭＤにおいてページオープン／クローズ動作（ロウオープン／クローズ動作）を先延ばしし、現時点では、アクセス対象となるデータの読み出し／書き込み動作をリディームメモリＭＲにおいて実行可能とする。
【００２７】
また、書き込み動作において、バッファメモリミスの場合で、かつ、アクセス対象となるデータがリディームメモリＭＲ内に記憶されていない場合（リディームメモリミスの場合）にも、現時点では、書き込みデータをリディームメモリＭＲに記憶させることにより、ＤＲＡＭ  ＭＤへのアクセス、即ち、ＤＲＡＭ  ＭＤにおけるページオープン／クローズ動作（ロウオープン／クローズ動作）を先延ばしすることができる。
【００２８】
リディームメモリＭＲは、バッファメモリＭＢのメモリ階層と同じメモリ階層を有する。即ち、リディームメモリＭＲは、バッファメモリＭＢと同様に、プロセッサ１０内のキャッシュメモリ１３のメモリ階層と、メインメモリ１１内のＤＲＡＭ  ＭＤのメモリ階層と、の間のメモリ階層を有するキャッシュメモリとして機能する。
【００２９】
リディームメモリＭＲのメモリ階層とバッファメモリＭＢのメモリ階層は、同じであるため、プロセッサ１０が管理する同一アドレスのデータがこれら２つのメモリ内に同時期に記憶されることはない。
【００３０】
即ち、メインメモリ１１におけるデータの正式な格納場所であるＤＲＡＭ  ＭＤ及びキャッシュメモリとしてのバッファメモリＭＢの両者、又は、メインメモリ１１におけるデータの正式な格納場所であるＤＲＡＭ  ＭＤ及びキャッシュメモリとしてのリディームメモリＭＲの両者が、同時期に、同一アドレスのデータを記憶することはあっても、リディームメモリＭＲ及びバッファメモリＭＢの両者が、同時期に、同一アドレスのデータを記憶しない。
【００３１】
リディームメモリＭＲは、メインメモリ１１内のキャッシュメモリとして機能するため、高速アクセスが可能なメモリであるのが望ましい。また、リディームメモリＭＲは、後述するメモリアクセス制御の関係上、バッファメモリＭＢのメモリ容量よりも大きなメモリ容量を有しているのが望ましい。さらに、メモリシステムの低消費電力化を図り、かつ、リフレッシュなどによるアクセス制限を無くすため、リディームメモリＭＲは、不揮発性メモリ、又は、非常に長いデータリテンションタイムを有する揮発性メモリであるのが望ましい。
【００３２】
そのようなメモリとしては、例えば、ＭＲＡＭ（マグネティックランダムアクセスメモリ）、ＲｅＲＡＭ（抵抗変化メモリ）など、の不揮発性ＲＡＭ、又は、メモリセル内の選択トランジスタのチャネルを酸化物半導体（例えば、ＩＧＺＯなど）としたＤＲＡＭ（ULR DRAM: Ultra Long Retention DRAM）がある。
【００３３】
バッファメモリＭＢ内に記憶されるページデータは、例えば、書き込み動作において、バッファメモリヒットである場合に更新される。従って、バッファメモリＭＢ内のページデータは、例えば、書き込み動作により更新される一方、正式な格納場所であるＤＲＡＭ  ＭＤに書き戻されていない、いわゆるダーティーデータ（dirty data）である。
【００３４】
同様に、リディームメモリＭＲ内に記憶されるページデータも、例えば、書き込み動作において、リディームメモリヒットである場合に更新される。従って、リディームメモリＭＲ内のページデータも、例えば、書き込み動作により更新される一方、正式な格納場所であるＤＲＡＭ  ＭＤに書き戻されていない、いわゆるダーティーデータである。
【００３５】
これらダーティーデータは、最終的には、正式な格納場所であるＤＲＡＭ  ＭＤに書き戻し、クリーンデータ（clean data）にする。
【００３６】
本実施例のメモリシステムでは、例えば、図５に示すように、３種類のメモリ、即ち、ＤＲＡＭ  ＭＤ、バッファメモリＭＢ、及び、リディームメモリＭＲ間のデータの移動は、ループ状に制御される。
【００３７】
まず、ＤＲＡＭ  ＭＤ内のページデータは、例えば、ページオープン動作により、バッファメモリＭＢ内に移動する（図５の矢印Ｔ１）。次に、バッファメモリＭＢ内のページデータは、例えば、ページクローズ動作により、リディームメモリＭＲ内に移動する（図５の矢印Ｔ２）。最後に、リディームメモリＭＲ内のページデータは、所定時期に、ＤＲＡＭ  ＭＤ内に書き戻される（図５の矢印Ｔ３）。
【００３８】
リディームメモリＭＲ内のページデータをＤＲＡＭ  ＭＤ内に書き戻す所定時期は、例えば、リディームメモリＭＲに空きが無くなった後とする。また、リディームメモリＭＲに空きが無くなった後であっても、直ちに、新たなページデータをリディームメモリＭＲに書き込む必要がないときは、プロセッサ１０のパフォーマンス（データ処理能力）に影響を与えないため、リディームメモリＭＲに空きが無くなった後、所定条件を満たしたときに、リディームメモリＭＲ内のページデータをＤＲＡＭ  ＭＤ内に書き戻す。
【００３９】
この所定条件は、例えば、メインメモリ１１へのアクセスが一定期間無いとか、又は、ＤＲＡＭ  ＭＤにおいてリフレッシュが行われ、かつ、リフレッシュ対象のページがリディームメモリＭＲ内に存在するとか、である。
【００４０】
リディームメモリＭＲ内のページデータをＤＲＡＭ  ＭＤ内に書き戻す所定時期は、上記以外に、例えば、プロセッサ１０内でのデータ処理量が少ない時期としてもよい。そのような時期は、プロセッサ１０及びメインメモリ１１間のデータ転送量も少なく、ＤＲＡＭ  ＭＤ内でのページオープン／クローズ動作がプロセッサ１０のパフォーマンスに影響を与えることがないからである。
【００４１】
そのような時期は、例えば、プロセッサ（複数のＣＰＵコア）１０が低消費電力モードに入った後であるとか、プロセッサ１０内の複数のＣＰＵコアのうち動作状態のＣＰＵコア数が所定数以下となった後であるとか、プロセッサ（複数のＣＰＵコア）１０の最大データ処理量を１００％としたときに現在のデータ処理量が所定％以下であるとか、又は、メモリシステム（ＤＲＡＭ  ＭＤ）の電源を遮断するなど、ＤＲＡＭ  ＭＤのデータをストレージデバイス（ＨＤＤ、ＳＳＤなど）に書き戻す必要性が生じた後とか、である。
【００４２】
ＤＲＡＭ  ＭＤのデータをストレージデバイスに書き戻す必要性が生じた場合、バッファメモリＭＢ内のページデータは、ページクローズ動作によりリディームメモリＭＲ内に移動させない。この場合、バッファメモリＭＢ内のページデータは、ページクローズ動作前に、ＤＲＡＭ  ＭＤ内に書き戻される（図５の矢印Ｔ４）。また、ページクローズ動作後に、リディームメモリＭＲ内のページデータがＤＲＡＭ  ＭＤ内に書き戻される（図５の矢印Ｔ３）。
【００４３】
このような一連のデータ制御によれば、例えば、プロセッサ１０がデータ処理を行っている期間においては、ＤＲＡＭ  ＭＤでのページオープン／クローズ動作の発生が抑制される。従って、その期間において、プロセッサ１０及びメインメモリ１１間のデータ転送能力が向上し、メモリシステムのパフォーマンスが向上する。
【００４４】
以上のデータ制御は、コントローラ１４により制御される。コントローラ１４は、このようなデータ制御を行うため、有効データが何処にあるかを示すＬＵＴ１５を備える。ＬＵＴ１５は、プロセッサ１０内のＲＡＭに記憶しておき、そこから取得してもよいし、又は、ＤＲＡＭ  ＭＤ内に記憶しておき、そこから取得してもよい。コントローラ１４によるデータ制御の具体例は、後述する。
【００４５】
（ＤＲＡＭ）  
図６は、ＤＲＡＭの例を示している。
【００４６】
ＤＲＡＭ  ＭＤは、アレイ状に配置される複数のメモリセルＵ００〜Ｕｉｊを備える。バッファメモリＭＢは、ＤＲＡＭ  ＭＤのセンスアンプＳＡｊである。
【００４７】
１つのメモリセルＵｉｊは、直列接続されるキャパシタＣｉｊ及びトランジスタ（ＦＥＴ： Field Effect Transistor）Ｔｉｊを備える。但し、ｉは、例えば、０，１，２，…１０２３であり、ｊは、例えば、０，１，２，…４０９５である。
【００４８】
キャパシタＣｉｊは、第１及び第２の電極を備え、トランジスタＴｉｊは、第１及び第２の端子を有する電流経路と、この電流経路のオン／オフを制御する制御端子と、を備える。トランジスタＴｉｊの第１の端子は、キャパシタＣｉｊの第１の電極に接続される。
【００４９】
ビット線ＢＬｊは、トランジスタＴｉｊの第２の端子に接続され、第１の方向に延びる。ビット線ＢＬｊは、バッファメモリＭＢ、即ち、センスアンプＳＡｊに接続される。ワード線ＷＬｉは、トランジスタＴｉｊの制御端子に接続され、第１の方向に交差する第２の方向に延びる。キャパシタＣｉｊの第２の電極は、例えば、接地電位Ｖｓｓに設定される。
【００５０】
ワード線ＷＬｉに接続される複数のメモリセルＵｉ０〜Ｕｉｊは、１つのグループ、例えば、ページＰＧｉ内に属する。ページＰＧｉ内のメモリセルＵｉ０〜Ｕｉｊに記憶されるデータは、ページデータである。また、ＤＲＡＭ  ＭＤにおいて、ページオープン／クローズ動作は、ページ単位で行われる。
【００５１】
複数のセンスアンプＳＡ０〜ＳＡｊは、複数のカラムＣｏＬ０〜ＣｏＬｊに対応して設けられる。
【００５２】
このようなＤＲＡＭ  ＭＤにおいて、書き込み動作は、例えば、ビット線ＢＬｊをプリチャージ電位（例えば、Ｖｄｄ／２）から書き込みデータの値に応じた電位に変化させることにより行う。
【００５３】
例えば、メモリセルＵｉｊに１ビットデータ（０又は１）を書き込む場合、書き込みデータが０のときは、センスアンプＳＡｊからビット線ＢＬｊに接地電位Ｖｓｓを転送し、書き込みデータが１のときは、センスアンプＳＡｊからビット線ＢＬｊに電源電位Ｖｄｄを転送すればよい。
【００５４】
また、読み出し動作は、例えば、ビット線ＢＬｊをプリチャージ電位（例えば、Ｖｄｄ／２）、かつ、フローティングとすればよい。この場合、ワード線ＷＬｉをアクティブにすると、メモリセルＵｉｊ内に記憶されたデータ、即ち、キャパシタＣｉｊに蓄積された電荷量に応じてビット線ＢＬｊの電位が変化する。
【００５５】
メモリセルＵｉｊ内に記憶されたデータ（読み出しデータ）は、このビット線ＢＬｊの電位変化をセンスアンプＳＡｊによりセンスすることにより、検出できる。
【００５６】
図７は、バッファメモリの例を示している。
【００５７】
バッファメモリＭＢは、ＤＲＡＭ  ＭＤのセンスアンプＳＡｊである。
【００５８】
メモリセルＵｉｊ、キャパシタＣｉｊ、トランジスタＴｉｊ、ワード線ＷＬｉ、及び、ビット線ＢＬｊは、それぞれ、図６に示すメモリセルＵｉｊ、キャパシタＣｉｊ、トランジスタＴｉｊ、ワード線ＷＬｉ、及び、ビット線ＢＬｊに対応する。
【００５９】
Ｑｐｒｅは、読み出し／書き込み動作（ページクローズ動作）において、プリチャージ電位Ｖｐｒｅをビット線ＢＬｊに印加するためのトランジスタ（例えば、ＮチャネルＦＥＴ）である。例えば、読み出し／書き込み動作では、制御信号φｐｒｅがアクティブ（例えば、ハイレベル）になると、トランジスタＱｐｒｅがオンとなり、Ｖｐｒｅ＝Ｖｄｄ／２がビット線ＢＬｊに転送される。制御信号φｐｒｅがノンアクティブ（例えば、ロウレベル）になると、トランジスタＱｐｒｅは、オフとなる。
【００６０】
Ｑｃｌａｍｐは、読み出し／書き込み動作において、ビット線ＢＬｊをセンスアンプＳＡｊに電気的に接続するためのスイッチ素子（クランプ回路）として機能する。Ｑｃｌａｍｐは、例えば、ＮチャネルＦＥＴである。読み出し／書き込み動作において、制御信号φｃｌａｍｐがアクティブになると、トランジスタＱｃｌａｍｐがオンとなり、ビット線ＢＬｊとセンスアンプＳＡｊが電気的に接続される。制御信号φｃｌａｍｐがノンアクティブになると、トランジスタＱｃｌａｍｐは、オフとなる。
【００６１】
センスアンプＳＡｊは、ＳＲＡＭ、即ち、フリップフロップ接続される２つのインバータ回路を備える。制御信号（センスアンプイネーブル信号）φＳＥがアクティブになると、センスアンプＳＡｊが動作状態になる。また、制御信号φＳＥがノンアクティブになると、センスアンプＳＡｊが非動作状態になる。
【００６２】
センスアンプＳＡｊは、２つの入出力ノードＳ１，Ｓ２を備える。読み出し／書き込みデータは、例えば、入出力ノードＳ１から入出力される。
【００６３】
Ｑｅｑは、２つの入出力ノードＳ１，Ｓ２の電位をイコライズするトランジスタ（イコライズ回路）である。Ｑｅｑは、例えば、ＮチャネルＦＥＴである。制御信号φｅｑがアクティブになると、トランジスタＱｅｑがオンとなり、２つの入出力ノードＳ１，Ｓ２の電位がイコライズされる。制御信号φｅｑがノンアクティブになると、トランジスタＱｅｑがオフとなる。
【００６４】
Ｑｒｓｔは、２つの入出力ノードＳ１，Ｓ２の電位をリセットするトランジスタ（例えば、ＮチャネルＦＥＴ）である。制御信号φｒｓｔがアクティブになると、トランジスタＱｒｓｔがオンとなり、２つの入出力ノードＳ１，Ｓ２の電位がリセットされる。制御信号φｒｓｔがノンアクティブになると、トランジスタＱｒｓｔがオフとなる。
【００６５】
（リディームメモリ）  
図８は、リディームメモリの例を示している。
【００６６】
本例では、リディームメモリＭＲは、ＭＲＡＭである。また、リディームメモリＭＲのセンスアンプＳＡｊは、上述のＤＲＡＭ  ＭＤと同様に、バッファメモリＭＢとして使用可能である。但し、リディームメモリＭＲのセンスアンプＳＡｊは、バッファメモリＭＢとして使用しなくてもよい。
【００６７】
リディームメモリ  ＭＲは、アレイ状に配置される複数のメモリセルＸ００〜Ｘｉｊを備える。１つのメモリセルＸｉｊは、直列接続される磁気抵抗効果素子ＭＴＪｉｊ及びトランジスタ（ＦＥＴ）Ｑｉｊを備える。但し、ｉは、例えば、０，１，２，…１０２３であり、ｊは、例えば、０，１，２，…４０９５である。
【００６８】
磁気抵抗効果素子ＭＴＪｉｊは、第１及び第２の電極を備え、トランジスタＱｉｊは、第１及び第２の端子を有する電流経路と、この電流経路のオン／オフを制御する制御端子と、を備える。トランジスタＱｉｊの第１の端子は、磁気抵抗効果素子ＭＴＪｉｊの第１の電極に接続される。
【００６９】
ビット線ＢＬｊは、磁気抵抗効果素子ＭＴＪｉｊの第２の電極に接続され、第１の方向に延びる。ビット線ＢＬｊは、バッファメモリＭＢ、即ち、センスアンプＳＡｊに接続される。ソース線ＳＬｊは、トランジスタＱｉｊの第２の端子に接続され、第１の方向に延びる。ワード線ＷＬｉは、トランジスタＱｉｊの制御端子に接続され、第１の方向に交差する第２の方向に延びる。
【００７０】
ワード線ＷＬｉに接続される複数のメモリセルＸｉ０〜Ｘｉｊは、１つのグループ、例えば、ページＰＧｉ内に属する。ページＰＧｉ内のメモリセルＸｉ０〜Ｘｉｊに記憶されるデータは、ページデータである。
【００７１】
複数のセンスアンプＳＡ０〜ＳＡｊは、複数のカラムＣｏＬ０〜ＣｏＬｊに対応して設けられる。
【００７２】
図９は、リディームメモリのセンスアンプの例を示している。
【００７３】
メモリセルＸｉｊ、磁気抵抗効果素子ＭＴＪｉｊ、トランジスタＱｉｊ、ワード線ＷＬｉ、ビット線ＢＬｊ、及び、ソース線ＳＬｊは、それぞれ、図８に示すメモリセルＸｉｊ、磁気抵抗効果素子ＭＴＪｉｊ、トランジスタＱｉｊ、ワード線ＷＬｉ、ビット線ＢＬｊ、及び、ソース線ＳＬｊに対応する。
【００７４】
Ｑｐｒｅ及びＱｃｌａｍｐは、図７におけるＱｐｒｅ及びＱｃｌａｍｐに対応する。
【００７５】
但し、Ｑｐｒｅは、読み出し動作において、プリチャージ電位Ｖｐｒｅをビット線ＢＬｊに印加するためのトランジスタ（例えば、ＮチャネルＦＥＴ）であり、書き込み動作においては、オフを維持する。
【００７６】
また、Ｑｃｌａｍｐは、読み出し動作において、ビット線ＢＬｊをセンスアンプＳＡｊに電気的に接続するためのスイッチ素子（クランプ回路）として機能する。即ち、書き込み動作においては、Ｑｃｌａｍｐは、オフを維持する。
【００７７】
センスアンプＳＡｊは、図７のセンスアンプＳＡｊと同じである。
【００７８】
但し、リディームメモリＭＲのセンスアンプＳＡｊは、読み出し動作で使用し、書き込み動作で使用しない。
【００７９】
Ｑｅｑ及びＱｒｓｔは、図７におけるＱｅｑ及びＱｒｓｔに対応する。これらトランジスタＱｅｑ，Ｑｒｓｔの機能は、図７におけるトランジスタＱｅｑ，Ｑｒｓｔの機能と同じであるため、ここでの説明を省略する。
【００８０】
リディームメモリＭＲは、書き込みドライバ／シンカー１６を備える。
【００８１】
書き込みドライバ／シンカー１６は、第１のドライバ／シンカーＤ／Ｓ＿ａと、第２のドライバ／シンカーＤ／Ｓ＿ｂと、を備える。
【００８２】
第１のドライバ／シンカーＤ／Ｓ＿ａは、制御信号φａにより制御され、かつ、直列接続されるＰチャネルＦＥＴ  Ｑａ＿ｐ及びＮチャネルＦＥＴ  Ｑａ＿ｎを備える。第２のドライバ／シンカーＤ／Ｓ＿ｂは、制御信号φｂにより制御され、かつ、直列接続されるＰチャネルＦＥＴ  Ｑｂ＿ｐ及びＮチャネルＦＥＴ  Ｑｂ＿ｎを備える。
【００８３】
書き込み動作において、制御信号φｗがアクティブになると、第１のドライバ／シンカーＤ／Ｓ＿ａがビット線ＢＬｊに電気的に接続される。
【００８４】
例えば、“０”−書き込みでは、書き込みパルスは、制御信号φａを“０”に設定し、制御信号φｂを“１”に設定することにより発生させる。但し、“０”は、接地電位Ｖｓｓに対応し、“１”は、電源電位Ｖｄｄに対応する。以下、同じ。
【００８５】
この場合、書き込み電流は、磁気抵抗効果素子ＭＴＪｉｊからトランジスタＴｉｊに向かう方向に流れ、かつ、磁気抵抗効果素子ＭＴＪｉｊは、低抵抗状態に変化する。結果として、メモリセルＵｉｊに“０”が書き込まれる。
【００８６】
また、“１”−書き込みでは、書き込みパルスは、制御信号φａを“１”に設定し、制御信号φｂを“０”に設定することにより発生させる。
【００８７】
この場合、書き込み電流は、トランジスタＴｉｊから磁気抵抗効果素子ＭＴＪｉｊに向かう方向に流れ、かつ、磁気抵抗効果素子ＭＴＪｉｊは、高抵抗状態に変化する。結果として、メモリセルＵｉｊに“１”が書き込まれる。
【００８８】
一方、読み出し動作では、制御信号φｗがノンアクティブに設定され、第１のドライバ／シンカーＤ／Ｓ＿ａがビット線ＢＬｊから電気的に切断される。また、制御信号φｂが“１”に設定される。この場合、接地電位Ｖｓｓがソース線ＳＬｊに印加される。
【００８９】
（メモリアクセス制御）  
図１乃至図４のコントローラ１４によるメモリアクセス制御の例を説明する。
【００９０】
図１０は、メモリアクセス制御の例を示すフローチャートである。
【００９１】
まず、コントローラ１４は、ＤＲＡＭにアクセスするコマンドが発行されたか否かをチェックする（ステップＳＴ００）。
【００９２】
コントローラ１４は、ＤＲＡＭにアクセスするコマンドが発行されたことを確認すると、ＬＵＴ１５に基づいて、アクセス対象となるデータがバッファメモリ内に記憶されているか否かをチェックする（ステップＳＴ０１）。
【００９３】
コントローラ１４は、アクセス対象となるデータがバッファメモリ内に記憶されていること（バッファメモリヒット）を確認すると、バッファメモリにアクセスし、読み出し／書き込み動作を実行する（ステップＳＴ０２）。
【００９４】
例えば、図１１Ａに示すように、アクセス対象となるデータがロウアドレスＲＡ＿ｘにより指定され、かつ、ロウアドレスＲＡ＿ｘのデータ（ページデータ）ＰＧ＿ｘがバッファメモリＭＢ内に読み出されている場合、バッファメモリＭＢにアクセスし、ページデータＰＧ＿ｘの全て又は一部に対して読み出し／書き込み動作を実行可能である。
【００９５】
一方、コントローラ１４は、アクセス対象となるデータがバッファメモリ内に記憶されていないこと（バッファメモリミス）を確認すると、ＬＵＴ１５に基づいて、アクセス対象となるデータがリディームメモリ内に記憶されているか否かをチェックする（ステップＳＴ０３）。
【００９６】
コントローラ１４は、アクセス対象となるデータがリディームメモリ内に記憶されていること（リディームメモリヒット）を確認すると、リディームメモリにアクセスし、読み出し／書き込み動作を実行する（ステップＳＴ０４）。
【００９７】
例えば、図１１Ａに示すように、アクセス対象となるデータがロウアドレスＲＡ＿ｙにより指定され、かつ、ロウアドレスＲＡ＿ｙのデータ（ページデータ）ＰＧ＿ｙがリディームメモリＭＲのロウアドレスＲｅＡ＿ｙに読み出されている場合、リディームメモリＭＲのロウアドレスＲｅＡ＿ｙにアクセスし、ページデータＰＧ＿ｙの全て又は一部に対して読み出し／書き込み動作を実行可能である。
【００９８】
尚、ステップＳＴ０１とステップＳＴ０３の順序を入れ替えることも可能である。
【００９９】
また、コントローラ１４は、アクセス対象となるデータがバッファメモリ内に記憶されておらず（バッファメモリミス）、かつ、リディームメモリ内にも記憶されていないこと（リディームメモリミス）を確認すると、プロセッサからの指示が書き込み動作であるか、又は、読み出し動作であるか、をチェックする（ステップＳＴ０５）。
【０１００】
プロセッサからの指示が書き込み動作である場合、コントローラ１４は、リディームメモリにアクセスし、書き込み動作を実行する（ステップＳＴ０６）。
【０１０１】
例えば、図１１Ｂに示すように、アクセス対象となるデータがロウアドレスＲＡ＿ｚにより指定され、かつ、ロウアドレスＲＡ＿ｚのデータ（ページデータ）ＰＧ＿ｚがバッファメモリＭＢ及びリディームメモリＭＲに読み出されていない場合、ロウアドレスＲＡ＿ｚのデータをリディームメモリＭＲのアドレスＲｅＡ＿ｚに書き込む。
【０１０２】
ここで、バッファメモリ及びリディームメモリにおけるデータ管理は、ページ単位、又は、マスク付きのページ単位で行う。
【０１０３】
例えば、ページオープン動作によりＤＲＡＭからバッファメモリに読み出されたデータは、ページ単位で管理される。また、ページクローズ動作によりバッファメモリからリディームメモリに移動したデータも、ページ単位で管理される。このような経路によりバッファメモリ内又はリディームメモリ内に記憶されたページデータの全ては、有効データとして使用可能だからである。
【０１０４】
これに対し、バッファメモリミス及びリディームメモリミスの書き込み動作において、プロセッサからリディームメモリに書き込まれたデータは、ページ単位、又は、マスク付きのページ単位で管理される。
【０１０５】
即ち、アクセス対象となるページ（ロウ）内の全てのビットにデータを書き込む場合、リディームメモリに書き込まれるページデータの全ては、有効データである。従って、この場合、リディームメモリに書き込まれたデータは、ページ単位で管理される。
【０１０６】
また、アクセス対象となるページ（ロウ）内の一部のビットにデータを書き込む場合、リディームメモリに書き込まれるページデータの全ては、有効データとならない。例えば、アクセス対象となるページ内の一部のビット（有効データ）がリディームメモリ内に書き込まれ、残りのビット（有効データ）は、ＤＲＡＭ内に存在する場合もあり得る。
【０１０７】
従って、この場合、リディームメモリに書き込まれたデータは、マスク付きのページ単位で管理される。マスク付きのページ単位で管理するとは、ページデータの一部のビットを有効データとして管理し、残りのビットを無効データ（マスク付き）として管理することを意味する。
【０１０８】
バッファメモリミス、リディームメモリミス、かつ、プロセッサからの指示が書き込み動作である場合、リディームメモリに対する書き込み動作を終えた後、リディームメモリに空きがあるか否かをチェックする（ステップＳＴ０７）。
【０１０９】
リディームメモリに対する書き込み動作により、リディームメモリに空きがなくなった場合、リディームメモリの空き制御を実行する（ステップＳＴ０８）。
【０１１０】
リディームメモリの空き制御について図１３を参照しながら説明する。
【０１１１】
まず、ＤＲＡＭがページオープン状態にあるか否かチェックする（ステップＳＴ２１）。ＤＲＡＭがページオープン状態にある場合、ページクローズ動作を実行する（ステップＳＴ２２）。ページオープン状態のときにバッファメモリ内に記憶されていたデータ（ダーティーデータ）は、ページクローズ動作を行う前にＤＲＡＭ内に書き戻される。
【０１１２】
例えば、図１４に示すように、ロウアドレスＲＡ＿ｘのページデータＰＧ＿ｘがバッファメモリＭＢに読み出されている場合、コントローラ１４は、ページデータＰＧ＿ｘをバッファメモリＭＢからＤＲＡＭ  ＭＤに書き戻した後、ページクローズ動作を実行する。
【０１１３】
次に、リディームメモリから追い出す（evict）データを決める（ステップＳＴ２３）。
【０１１４】
リディームメモリから追い出すデータは、リディームメモリのロウアドレス単位、即ち、ページ単位、又は、マスク付のページ単位で行う。
【０１１５】
例えば、コントローラ１４は、リディームメモリ内に記憶されているデータの使用頻度を、リディームメモリのロウアドレス単位で管理する。使用頻度は、例えば、ＭＲＵ（most recently used）や、ＬＲＵ（least recently used）など、の指標を利用する。
【０１１６】
ＭＲＵは、最近、最も使用されたデータ、即ち、最終アクセス時点から現時点までの期間（a period from a final access time to a present time）が最小であるデータを意味する。また、ＬＲＵは、最近、最も使用されなかったデータ、即ち、最終アクセス時点から現時点までの期間が最大であるデータを意味する。
【０１１７】
コントローラ１４は、例えば、ＬＲＵを含むロウアドレスに係わるデータを、リディームメモリからの追い出しの対象、即ち、リディームメモリからＤＲＡＭへの書き戻しの対象として選択する。
【０１１８】
尚、ステップＳＴ２３は、ステップＳＴ２１〜ＳＴ２２と並行して行ってもよいし、又は、それらのステップより前に行ってもよい。
【０１１９】
次に、コントローラ１４は、リディームメモリからの追い出しの対象となったロウアドレスのデータが１ページ全て有効であるか否かをチェックする（ステップＳＴ２４）。
【０１２０】
リディームメモリからの追い出しの対象となったロウアドレスのデータが１ページ全て有効でない場合、即ち、リディームメモリからの追い出しの対象となったロウアドレスのデータがマスク付きのページデータである場合、ＬＵＴ１５に基づいて、そのロウアドレスに対応するＤＲＡＭのロウアドレスをアクセスし、ページオープン動作により、ＤＲＡＭからバッファメモリにページデータを読み出す（ステップＳＴ２５）。
【０１２１】
例えば、図１４に示すように、追い出しの対象となったリディームメモリＭＲのロウアドレスＲｅＡ＿ｙのデータがマスク付きのページデータであり、かつ、ロウアドレスＲｅＡ＿ｙに対応するＤＲＡＭ  ＭＤのロウアドレスがＲＡ＿ｙである場合、ロウアドレスＲＡ＿ｙのデータをＤＲＡＭ  ＭＤからバッファメモリＭＢに読み出す。
【０１２２】
この後、コントローラ１４は、追い出しの対象となったデータを、リディームメモリからバッファメモリに移動させる（ステップＳＴ２６）。
【０１２３】
例えば、ステップＳＴ２５を経由しない場合、ページデータ（有効データ）の全てがリディームメモリからバッファメモリに転送される。また、ステップＳＴ２５を経由する場合、ページデータの一部（有効データ）がリディームメモリからバッファメモリに転送され、バッファメモリ内のページデータに上書きされる。
【０１２４】
また、バッファメモリのデータは、ＤＲＡＭに書き戻される。
【０１２５】
ここで、図１４に示すように、例えば、リディームメモリＭＲからバッファメモリＭＢへのデータの移動は、コントローラ１４を経由して行うのが望ましい。
【０１２６】
この後、ページクローズ動作が実行される（ステップＳＴ２７）。
【０１２７】
例えば、図１４に示すように、コントローラ１４は、ロウアドレスＲＡ＿ｙのデータをバッファメモリＭＢからＤＲＡＭ  ＭＤに書き戻した後、ページクローズ動作を実行する。
【０１２８】
最後に、ステップＳＴ２１においてページオープン状態であった場合、コントローラ１４は、ステップＳＴ２２においてクローズされたページを、再び、ＤＲＡＭからバッファメモリに読み出し、リディームメモリの空き制御を実行する前の状態に戻すため、ページオープン動作を実行する（ステップＳＴ２８〜ＳＴ２９）。
【０１２９】
例えば、図１４に示すように、ステップＳＴ２２においてクローズされたロウアドレスがＲｅＡ＿ｘである場合、コントローラ１４は、ロウアドレスＲＡ＿ｘのページデータＰＧ＿ｘをＤＲＡＭ  ＭＤからバッフメモリＭＢに読み出す。
【０１３０】
以上のステップにより、リディームメモリの空き制御が完了する。
【０１３１】
図１０のメモリアクセス制御の説明に戻る。
【０１３２】
バッファメモリミス、リディームメモリミス、かつ、プロセッサからの指示が読み出し動作である場合、コントローラ１４は、ＤＲＡＭにアクセスし、読み出し動作を実行する（ステップＳＴ０９〜ＳＴ１３）。
【０１３３】
具体的には、まず、ＤＲＡＭがページオープン状態にあるか否かチェックする（ステップＳＴ０９）。ＤＲＡＭがページオープン状態にある場合、コントローラ１４は、バッファメモリ内に読み出されているページデータをリディームに移動させる（ステップＳＴ１０）。また、コントローラ１４は、ＤＲＡＭのロウアドレスとリディームメモリのロウアドレスとの対応関係を示すＬＵＴを作成する。
【０１３４】
バッファメモリのデータをリディームメモリに移動させるのは、バッファメモリに読み出されていたデータは、近いうちに、再び、アクセス対象となる可能性が高いため、ＤＲＡＭに書き戻すよりは、ページオープン／クローズ動作が無い高速アクセス可能なリディームメモリに移動させるのが好都合であるからである。
【０１３５】
コントローラ１４は、ページデータをバッファメモリからリディームメモリに移動させた後、ページクローズ動作を実行する（ステップＳＴ１１）。
【０１３６】
例えば、図１１Ｃに示すように、ロウアドレスＲＡ＿ｘのページデータＰＧ＿ｘがバッファメモリＭＢに読み出されている場合、コントローラ１４は、ページデータＰＧ＿ｘをバッファメモリＭＢからリディームメモリＭＲに移動させた後、ページクローズ動作を実行する。ページデータＰＧ＿ｘは、バッファメモリＭＢから、コントローラ１４を経由して、リディームメモリＭＲのロウアドレスＲｅＡ＿ｘに書き込むのが望ましい。
【０１３７】
次に、コントローラ１４は、ページオープン動作により、アクセス対象となるＤＲＡＭのロウアドレスに係わるページデータをＤＲＡＭからバッファメモリに読み出す（ステップＳＴ１２）。
【０１３８】
例えば、図１１Ｃに示すように、アクセス対象となるＤＲＡＭのロウアドレスがＲＡ＿ｙである場合、コントローラ１４は、ページオープン動作により、ロウアドレスＲＡ＿ｙに係わるページデータＰＧ＿ｙをＤＲＡＭ  ＭＤからバッファメモリＭＢに読み出す。
【０１３９】
この後、コントローラ１４は、バッファメモリＭＢにアクセスし、プロセッサが必要とするデータをバッファメモリＭＢから読み出す（ステップＳＴ１３）。
【０１４０】
例えば、図１１Ｃに示すように、プロセッサが必要とするデータ、即ち、アクセス対象となるデータがページデータＰＧ＿ｙの一部である場合、コントローラは、そのページデータＰＧ＿ｙの一部をバッファメモリＭＢから読み出す。
【０１４１】
このように、バッファメモリミス、リディームメモリミス、かつ、プロセッサからの指示が読み出し動作である場合のみ、ＤＲＡＭにアクセスし、ページオープン／クローズ動作が実行される。
【０１４２】
これは、言い換えれば、それ以外の場合、即ち、バッファメモリヒット（ステップＳＴ０１）、リディームメモリヒット（ステップＳＴ０３）、及び、バッファメモリミス、リディームメモリミス、かつ、プロセッサからの指示が書き込み動作である場合、現時点では、ＤＲＡＭにおけるページオープン／クローズ動作を行わず、これらを先延ばしすることができることを意味する。
【０１４３】
従って、プロセッサがメインメモリへのアクセスを必要としているときに、ページオープン／クローズ動作により、メインメモリへのアクセス速度が低下する、という事態が発生することがない。
【０１４４】
図１２は、比較例を示している。  
比較例では、バッファメモリミスの場合、必ず、ＤＲＡＭにおけるページオープン／クローズ動作が発生する。
【０１４５】
本実施例では、図１２のバッファメモリミスの場合を、図１１Ａ、図１１Ｂ、及び、図１１Ｃの３つの場合に分け、これらのうち、図１１Ａ及び図１１Ｂの場合においては、ページオープン／クローズ動作を先延ばしできる点に特徴を有する。
【０１４６】
最後に、リディームメモリに開きがあるか否かをチェックする（ステップＳＴ０７）。
【０１４７】
これは、ステップＳＴ０９においてページオープン状態であった場合、コントローラ１４は、バッファメモリのページデータをリディームメモリに移動させるため、リディームメモリに空きがなくなる可能性が生じるためである。
【０１４８】
そこで、リディームメモリに空きがなくなる場合を想定し、コントローラ１４は、プロセッサが必要とするデータをバッファメモリから読み出した後（ステップＳＴ１３）、リディームメモリに空きがあるか否かをチェックする（ステップＳＴ０７）。
【０１４９】
そして、リディームメモリに空きが無い場合、上述したように、リディームメモリの空き制御（図１３）を実行する（ステップＳＴ０８）。
【０１５０】
以上のステップにより、メモリアクセス制御が完了する。
【０１５１】
上述のメモリアクセス制御（図１０）において、リディームメモリの空き制御（図１３）は、ステップＳＴ０７の時点でリディームメモリに空きがない場合に実行される。
【０１５２】
しかし、コントローラ１４は、それ以外の場合に、リディームメモリの空き制御を実行することもできる。
【０１５３】
例えば、図１５に示すように、プロセッサからメインメモリへのアクセスが一定期間無い場合、コントローラ１４は、リディームメモリの空き制御（図１３）を実行することも可能である（ステップＳＴ３１〜ＳＴ３２）。
【０１５４】
また、図１６に示すように、ＤＲＡＭのリフレッシュが行われ、かつ、リフレッシュ対象のロウアドレス（ページ）がリディームメモリ内に存在する場合、コントローラ１４は、リディームメモリの空き制御（図１３）を実行することも可能である（ステップＳＴ４１〜ＳＴ４２）。
【０１５５】
また、上述したように、リディームメモリ内に記憶されたデータは、ダーティーデータである。従って、最終的には、リディームメモリ内に記憶されたデータは、正式な格納場所であるＤＲＡＭに書き戻し、クリーンデータにしなければならない。
【０１５６】
図１７は、リディームメモリからＤＲＡＭへの書き戻し動作の例を示している。
【０１５７】
まず、コントローラ１４は、所定条件が満たされているか否かをチェックする（ステップＳＴ５１）。
【０１５８】
この所定条件は、例えば、プロセッサ（複数のＣＰＵコア）が低消費電力モードに入ったこと、プロセッサ内の複数のＣＰＵコアのうち動作状態のＣＰＵコア数が所定数以下であること、プロセッサ（複数のＣＰＵコア）の最大データ処理量を１００％としたときに現在のデータ処理量が所定％以下であること、又は、メモリシステム（ＤＲＡＭ）の電源を遮断するなど、ＤＲＡＭのデータをストレージデバイスに書き戻す必要性が生じていること、などがある。
【０１５９】
次に、コントローラ１４は、所定条件が満たされていることを確認すると、ＤＲＡＭがページオープン状態にあるか否かチェックする（ステップＳＴ５２）。ＤＲＡＭがページオープン状態にある場合、ページクローズ動作を実行する（ステップＳＴ５３）。ページオープン状態のときにバッファメモリ内に記憶されていたデータ（ダーティーデータ）は、ページクローズ動作を行う前にＤＲＡＭ内に書き戻される。
【０１６０】
この後、コントローラ１４は、ページ単位、又は、マスク付きのページ単位で、リディームメモリからＤＲＡＭにページデータを書き戻す（ステップＳＴ５４）。
【０１６１】
尚、リディームメモリ内の全てのページデータをＤＲＡＭに書き戻す場合、コントローラ１４は、ページオープン／クローズ動作を繰り返し行う。
【０１６２】
（適用例）  
図１８乃至図２１は、適用例に係わるメモリシステムを示している。
【０１６３】
これらの適用例は、例えば、ＤＩＭＭ（dual-inline memory module）などのメモリモジュールにＤＲＡＭ（バッファメモリを含む）を搭載したコンベンショナルな技術に、本実施例を適用した場合の例である。
【０１６４】
図１８の例では、メインメモリ（ＤＲＡＭモジュール）１１Ｄは、複数のバンクＢＡ０，ＢＡ１，…ＢＡｎ（ｎは２以上の自然数）を備える。例えば、１つのバンクＢＡｋは、ＤＲＡＭ  ＭＤ＿ｋと、バッファメモリＭＢ＿ｋと、を備える。但し、ｋは、１〜ｎのうちの１つである。１つのバンクＢＡｋは、１つのパッケージ製品（チップ）に対応していてもよいし、又は、複数のバンクＢＡ０，ＢＡ１，…ＢＡｎは、１つのパッケージ製品、又は、複数のパッケージ製品のなかに含まれていてもよい。
【０１６５】
また、コントローラ１４は、プロセッサ１０内に搭載され、かつ、リディームメモリＭＲは、コントローラ１４内に搭載される。
【０１６６】
この場合、メインメモリ１１Ｄは、例えば、コンベンショナルなＤＲＡＭモジュールとし、本実施例は、コントローラ１４の構造及びメモリアクセス制御（アルゴリズム）を変更することにより実行可能となる。
【０１６７】
図１９の例では、メインメモリ１１は、ＤＲＡＭモジュール１１Ｄと、リディームメモリモジュール１１Ｒと、を備える。
【０１６８】
ＤＲＡＭモジュール１１Ｄは、複数のバンクＢＡ０，ＢＡ１，…ＢＡｎを備える。例えば、１つのバンクＢＡｋは、ＤＲＡＭ  ＭＤ＿ｋと、バッファメモリＭＢ＿ｋと、を備える。但し、ｋは、１〜ｎのうちの１つである。１つのバンクＢＡｋは、１つのパッケージ製品に対応していてもよいし、又は、複数のバンクＢＡ０，ＢＡ１，…ＢＡｎは、１つのパッケージ製品、又は、複数のパッケージ製品のなかに含まれていてもよい。
【０１６９】
リディームメモリモジュール１１Ｒも、複数のバンクＢＡ０，ＢＡ１，…ＢＡｎを備える。例えば、１つのバンクＢＡｋは、リディームメモリＭＲ＿ｋと、センスアンプ（バッファメモリとして用いてもよい）ＳＡｋと、を備える。但し、ｋは、１〜ｎのうちの１つである。１つのバンクＢＡｋは、１つのパッケージ製品に対応していてもよいし、又は、複数のバンクＢＡ０，ＢＡ１，…ＢＡｎは、１つのパッケージ製品、又は、複数のパッケージ製品のなかに含まれていてもよい。
【０１７０】
この場合、本実施例は、コンベンショナルなＤＲＡＭモジュール１１Ｄに新たなリディームメモリモジュール１１Ｒを追加し、かつ、コントローラ１４の構造及びメモリアクセス制御（アルゴリズム）を変更することにより、実行可能となる。
【０１７１】
図２０の例では、メインメモリ（ＤＲＡＭモジュール）１１Ｄは、コントローラ１４と、複数のバンクＢＡ０，ＢＡ１，…ＢＡｎと、リディームメモリＭＲと、を備える。
【０１７２】
コントローラ１４は、例えば、１つのパッケージ製品に対応する。
【０１７３】
１つのバンクＢＡｋは、例えば、ＤＲＡＭ  ＭＤ＿ｋと、バッファメモリＭＢ＿ｋと、を備える。但し、ｋは、１〜ｎのうちの１つである。１つのバンクＢＡｋは、１つのパッケージ製品に対応していてもよいし、又は、複数のバンクＢＡ０，ＢＡ１，…ＢＡｎは、１つのパッケージ製品、又は、複数のパッケージ製品のなかに含まれていてもよい。
【０１７４】
リディームメモリＭＲは、例えば、１つのパッケージ製品に対応する。
【０１７５】
この場合、本実施例は、例えば、ＤＲＡＭモジュール１１Ｄ内に、コントローラ１４及びリディームメモリＭＲを混載し、かつ、コントローラ１４の構造及びメモリアクセス制御（アルゴリズム）を変更することにより、実行可能となる。
【０１７６】
図２１の例では、メインメモリ（ＤＲＡＭモジュール）１１Ｄは、コントローラ１４と、複数のバンクＢＡ０，ＢＡ１，…ＢＡｎと、を備える。また、コントローラ１４は、リディームメモリＭＲを備える。
【０１７７】
コントローラ１４は、例えば、１つのパッケージ製品に対応する。
【０１７８】
１つのバンクＢＡｋは、例えば、ＤＲＡＭ  ＭＤ＿ｋと、バッファメモリＭＢ＿ｋと、を備える。但し、ｋは、１〜ｎのうちの１つである。１つのバンクＢＡｋは、１つのパッケージ製品に対応していてもよいし、又は、複数のバンクＢＡ０，ＢＡ１，…ＢＡｎは、１つのパッケージ製品、又は、複数のパッケージ製品のなかに含まれていてもよい。
【０１７９】
この場合、本実施例は、例えば、ＤＲＡＭモジュール１１Ｄ内に、リディームメモリＭＲを含むコントローラ１４を混載し、かつ、コントローラ１４の構造及びメモリアクセス制御（アルゴリズム）を変更することにより、実行可能となる。
【０１８０】
図２２乃至図２４は、それぞれ、図１８乃至図２１のコントローラ１４内のＬＵＴ１５の例を示している。
【０１８１】
図２２は、バッファメモリヒットテーブルの例である。
【０１８２】
バッファメモリヒットテーブルは、複数のバンクＢＡ０，ＢＡ１，…ＢＡｎの各々について、バッファメモリＭＢ内にページデータがキャッシュされているか否か、及び、バッファメモリＭＢ内にページデータがキャッシュされている場合は、バッファメモリＭＢ内にキャッシュされているページデータのＤＲＡＭアドレス（ロウアドレス）を規定する。
【０１８３】
例えば、バンクＢＡ０のバッファメモリＭＢにロウアドレスＲＡ０＿ｘのページデータが読み出されている場合、バンクＢＡ０に対応するフラグは、１に設定され、バンクＢＡ０に対応するＤＲＡＭアドレスは、ＲＡ０＿ｘとなる。
【０１８４】
また、バンクＢＡ１のバッファメモリＭＢにロウアドレスＲＡ０＿ｙのページデータが読み出されている場合、バンクＢＡ１に対応するフラグは、１に設定され、バンクＢＡ１に対応するＤＲＡＭアドレスは、ＲＡ０＿ｙとなる。
【０１８５】
さらに、バンクＢＡｎのバッファメモリＭＢにロウアドレスＲＡ０＿ｚのページデータが読み出されている場合、バンクＢＡｎに対応するフラグは、１に設定され、バンクＢＡｎに対応するＤＲＡＭアドレスは、ＲＡ０＿ｚとなる。
【０１８６】
図２３は、リディームメモリヒットテーブルの例である。
【０１８７】
このテーブルは、図１８、図２０、及び、図２１の適用例に対応する。
【０１８８】
即ち、図１８、図２０、及び、図２１に示されるリディームメモリアドレスＲｅＡ＿０，…ＲｅＡ＿７、及び、ＤＲＡＭアドレスＲＡ０＿ａ，ＲＡ０＿ｂ，ＲＡ０＿ｃ，ＲＡ１＿ｄ，ＲＡ１＿ｅ，…ＲＡｎ＿ｆ，ＲＡｎ＿ｇと、図２３に示されるリディームメモリアドレスＲｅＡ＿０，…ＲｅＡ＿７、及び、ＤＲＡＭアドレスＲＡ０＿ａ，ＲＡ０＿ｂ，ＲＡ０＿ｃ，ＲＡ１＿ｄ，ＲＡ１＿ｅ，…ＲＡｎ＿ｆ，ＲＡｎ＿ｇと、は互いに対応する。
【０１８９】
リディームメモリヒットテーブルは、複数のリディームメモリアドレス（ロウアドレス）ＲｅＡ＿０，ＲｅＡ＿１，…ＲｅＡ＿７の各々について、そのアドレス内に記憶されているページデータが、何処のＤＲＡＭ（バンク）の何処のロウアドレスのページデータであるか、を規定する。
【０１９０】
例えば、リディームメモリアドレスＲｅＡ＿０に記憶されているページデータがバンクＢＡ０内のＤＲＡＭアドレス（ロウアドレス）ＲＡ０＿ａのページデータである場合、リディームメモリアドレスＲｅＡ＿０に対応するフラグは、１となり、リディームメモリアドレスＲｅＡ＿０に対応するバンクは、ＢＡ０となり、かつ、リディームメモリアドレスＲｅＡ＿０に対応するＤＲＡＭアドレスは、ＲＡ０＿ａとなる。
【０１９１】
また、リディームメモリアドレスＲｅＡ＿１に記憶されているページデータがバンクＢＡ０内のＤＲＡＭアドレス（ロウアドレス）ＲＡ０＿ｂのページデータである場合、リディームメモリアドレスＲｅＡ＿１に対応するフラグは、１となり、リディームメモリアドレスＲｅＡ＿１に対応するバンクは、ＢＡ０となり、かつ、リディームメモリアドレスＲｅＡ＿１に対応するＤＲＡＭアドレスは、ＲＡ０＿ｂとなる。
【０１９２】
さらに、リディームメモリアドレスＲｅＡ＿６に記憶されているページデータがバンクＢＡｎ内のＤＲＡＭアドレス（ロウアドレス）ＲＡｎ＿ｇのページデータである場合、リディームメモリアドレスＲｅＡ＿６に対応するフラグは、１となり、リディームメモリアドレスＲｅＡ＿６に対応するバンクは、ＢＡｎとなり、かつ、リディームメモリアドレスＲｅＡ＿６に対応するＤＲＡＭアドレスは、ＲＡｎ＿ｇとなる。
【０１９３】
尚、リディームメモリアドレスＲｅＡ＿７にページデータが記憶されていない場合、即ち、リディームメモリアドレスＲｅＡ＿７に空きがある場合、リディームメモリアドレスＲｅＡ＿７に対応するフラグは、０となり、リディームメモリアドレスＲｅＡ＿７に対応するバンク及びＤＲＡＭアドレスは、無効となる。
【０１９４】
図２４は、リディームメモリヒットテーブルの例である。
【０１９５】
このテーブルは、図１９の適用例に対応する。
【０１９６】
即ち、図１９に示されるリディームメモリアドレスＲｅＡ＿０，…ＲｅＡ＿７、及び、ＤＲＡＭアドレスＲＡ０＿ａ，ＲＡ０＿ｂ，ＲＡ０＿ｃ，ＲＡ１＿ｄ，ＲＡ１＿ｅ，…ＲＡｎ＿ｆ，ＲＡｎ＿ｇと、図２４に示されるリディームメモリアドレスＲｅＡ＿０，…ＲｅＡ＿７、及び、ＤＲＡＭアドレスＲＡ０＿ａ，ＲＡ０＿ｂ，ＲＡ０＿ｃ，ＲＡ１＿ｄ，ＲＡ１＿ｅ，…ＲＡｎ＿ｆ，ＲＡｎ＿ｇと、は互いに対応する。
【０１９７】
図１９の適用例では、ＤＲＡＭモジュール１１Ｄの複数のバンクＢＡ０，ＢＡ１，…ＢＡｎと、リディームメモリモジュール１１Ｒの複数のバンクＢＡ０，ＢＡ１，…ＢＡｎと、が一対一に対応する。従って、リディームメモリヒットテーブルは、バンク毎に設けられる。
【０１９８】
各バンクにおいて、リディームメモリヒットテーブルは、リディームメモリアドレス（ロウアドレス）とＤＲＡＭアドレスとの関係を規定する。
【０１９９】
例えば、バンクＢＡ０において、リディームメモリアドレスＲｅＡ＿０に記憶されているページデータがＤＲＡＭアドレス（ロウアドレス）ＲＡ０＿ａのページデータである場合、リディームメモリアドレスＲｅＡ＿０に対応するフラグは、１となり、かつ、リディームメモリアドレスＲｅＡ＿０に対応するＤＲＡＭアドレスは、ＲＡ０＿ａとなる。
【０２００】
また、バンクＢＡ１において、リディームメモリアドレスＲｅＡ＿０に記憶されているページデータがＤＲＡＭアドレス（ロウアドレス）ＲＡ１＿ｄのページデータである場合、リディームメモリアドレスＲｅＡ＿０に対応するフラグは、１となり、かつ、リディームメモリアドレスＲｅＡ＿０に対応するＤＲＡＭアドレスは、ＲＡ１＿ｄとなる。
【０２０１】
さらに、バンクＢＡｎにおいて、リディームメモリアドレスＲｅＡ＿０に記憶されているページデータがＤＲＡＭアドレス（ロウアドレス）ＲＡｎ＿ｆのページデータである場合、リディームメモリアドレスＲｅＡ＿０に対応するフラグは、１となり、かつ、リディームメモリアドレスＲｅＡ＿０に対応するＤＲＡＭアドレスは、ＲＡｎ＿ｆとなる。
【０２０２】
尚、各バンクにおいて、リディームメモリアドレスにページデータが記憶されていない場合、即ち、リディームメモリアドレスに空きがある場合、そのリディームメモリアドレスに対応するフラグは、０となり、そのリディームメモリアドレスに対応するＤＲＡＭアドレスは、無効となる。
【０２０３】
（むすび）  
以上、実施形態によれば、ホストプロセッサ及びメインメモリ間のデータ転送能力を向上させることができる。
【０２０４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０２０５】
１０：  プロセッサ、  １１：  メインメモリ、  １２：  ＣＰＵ、  １３：  キャッシュメモリ、  １４：  コントローラ、  １５：  ＬＵＴ、  １６：  書き込みドライバ／シンカー、  １７：  インターフェース部、  １８：  コマンド処理部、  １９：  アドレス処理部、  ２０：  データバッファ、  ＭＤ：  ＤＲＡＭ、  ＭＢ：  バッファメモリ、  ＭＲ：  リディームメモリ。
【図１】
2018049387.tif 000003
【図２】
2018049387.tif 000004
【図３】
2018049387.tif 000005
【図４】
2018049387.tif 000006
【図５】
2018049387.tif 000007
【図６】
2018049387.tif 000008
【図７】
2018049387.tif 000009
【図８】
2018049387.tif 000010
【図９】
2018049387.tif 000011
【図１０】
2018049387.tif 000012
【図１１Ａ】
2018049387.tif 000013
【図１１Ｂ】
2018049387.tif 000014
【図１１Ｃ】
2018049387.tif 000015
【図１２】
2018049387.tif 000016
【図１３】
2018049387.tif 000017
【図１４】
2018049387.tif 000018
【図１５】
2018049387.tif 000019
【図１６】
2018049387.tif 000020
【図１７】
2018049387.tif 000021
【図１８】
2018049387.tif 000022
【図１９】
2018049387.tif 000023
【図２０】
2018049387.tif 000024
【図２１】
2018049387.tif 000025
【図２２】
2018049387.tif 000026
【図２３】
2018049387.tif 000027
【図２４】
2018049387.tif 000028