(57)【特許請求の範囲】
【請求項１】
データを格納する複数のメモリ領域を有するメモリ部と、
前記メモリ部に格納されているデータのメモリアドレス及び読み出し回数を前記メモリ領域毎に保持するテーブル部と、
カスケード接続された他のメモリ装置から入力されるデータ及び該入力されるデータのメモリアドレスを格納する第１のバッファと、
前記カスケード接続された他の前記メモリ装置に出力するデータ及び該出力するデータのメモリアドレスを格納する第２のバッファと、
（１）前記テーブル部に保持されている読み出し回数の最少値が前記カスケード接続された次のメモリ装置から読み出されたデータの読み出し回数より少ない場合に、前記次のメモリ装置から読み出されたデータ及び該読み出されたデータのメモリアドレスを前記第１のバッファに格納するとともに前記読み出し回数が最少のメモリ領域のデータ及び該メモリ領域のデータのメモリアドレスを前記第２のバッファを介して前記次のメモリ装置に出力し、（２）前記メモリ部のリフレッシュを実行するタイミングで、前記読み出し回数が最少のメモリ領域のデータ及び該メモリ領域のデータのメモリアドレスを前記第１のバッファに格納されているデータ及び該格納されているデータのメモリアドレスで書き換える制御部と、を有することを特徴とするメモリ装置。
【請求項２】
前記制御部は、（１）前記メモリ部からデータを読み出したことによって前記カスケード接続された１つ前の前記メモリ装置からデータ及び該メモリ装置からのデータのメモリアドレスが入力された場合に、前記１つ前のメモリ装置から入力されたデータ及び該入力されたデータのメモリアドレスを前記第１のバッファに格納し、（２）前記メモリ部のリフレッシュを実行するタイミングで、読み出しが行われたメモリ領域のデータ及び該メモリ領域のデータのメモリアドレスを前記第１のバッファに格納されているデータ及び該格納されているデータのメモリアドレスで書き換えることを特徴とする請求項１記載のメモリ装置。
【請求項３】
前記制御部は、前記メモリ部からデータを読み出した場合に読み出したデータと該読み出したデータのメモリアドレス及び読み出し回数を前記カスケード接続された１つ前のメモリ装置に出力することを特徴とする請求項１又は２記載のメモリ装置。
【請求項４】
前記テーブル部は、前記メモリ領域の状態を示す情報を前記メモリ領域毎に保持し、
前記制御部は、前記メモリ領域にデータを書き込むとき、前記テーブル部を参照し該書き込むデータのメモリアドレスが一致する前記メモリ領域がない場合には、前記メモリ領域の状態を示す情報を基に空き状態の前記メモリ領域を判定し該書き込むデータの書き込みを行うメモリ領域を決定することを特徴とする請求項１〜３の何れか１項に記載のメモリ装置。
【請求項５】
前記制御部は、前記メモリ部から読み出したデータのエラーの有無を判定し、訂正可能なエラーである場合には訂正したデータで書き換えを行うことを特徴とする請求項１〜４の何れか１項に記載のメモリ装置。
【請求項６】
前記制御部は、前記エラーを有すると判定されたデータが格納されている前記メモリ領域に対する書き換えを行うときには、書き換えるデータを空き状態の前記メモリ領域に割り当てることを特徴とする請求項５記載のメモリ装置。
【請求項７】
カスケード接続された複数のメモリ装置と、
前記複数のメモリ装置の１つと接続され、前記複数のメモリ装置に対するメモリアクセスを行うホストとを有し、
前記メモリ装置は、
データを格納する複数のメモリ領域を有するメモリ部と、
前記メモリ部に格納されているデータのメモリアドレス及び読み出し回数を前記メモリ領域毎に保持するテーブル部と、
他の前記メモリ装置から入力されるデータ及び該入力されるデータのメモリアドレスを格納する第１のバッファと、
他の前記メモリ装置に出力するデータ及び該出力するデータのメモリアドレスを格納する第２のバッファと、
（１）前記テーブル部に保持されている読み出し回数の最少値が前記カスケード接続された次のメモリ装置から読み出されたデータの読み出し回数より少ない場合に、前記次のメモリ装置から読み出されたデータ及び該読み出されたデータのメモリアドレスを前記第１のバッファに格納するとともに前記読み出し回数が最少のメモリ領域のデータ及び該メモリ領域のデータのメモリアドレスを前記第２のバッファを介して前記次のメモリ装置に出力し、（２）前記メモリ部のリフレッシュを実行するタイミングで、前記読み出し回数が最少のメモリ領域のデータ及び該メモリ領域のデータのメモリアドレスを前記第１のバッファに格納されているデータ及び該格納されているデータのメモリアドレスで書き換える制御部と、を有することを特徴とする情報処理装置。
【請求項８】
データを格納する複数のメモリ領域を有するメモリ部と、前記メモリ部に格納されているデータのメモリアドレス及び読み出し回数を前記メモリ領域毎に保持するテーブル部と、カスケード接続された他のメモリ装置から入力されるデータ及び該入力されるデータのメモリアドレスを格納する第１のバッファと、前記カスケード接続された他の前記メモリ装置に出力するデータ及び該出力するデータのメモリアドレスを格納する第２のバッファと、前記メモリ部を制御する制御部と、を有するメモリ装置の制御方法であって、
前記メモリ部に要求されたデータがない場合に、前記テーブル部に保持されている読み出し回数が最少のメモリ領域のデータ及び該メモリ領域のデータのメモリアドレスを前記第２のバッファに格納し、
前記テーブル部に保持されている読み出し回数の最少値が前記カスケード接続された次のメモリ装置から読み出されたデータの読み出し回数より少ない場合に、前記次のメモリ装置から読み出されたデータ及び該読み出されたデータのメモリアドレスを前記第１のバッファに格納するとともに前記第２のバッファに格納されているデータ及び該格納されているデータのメモリアドレスを前記次のメモリ装置に出力し、
前記メモリ部のリフレッシュを実行するタイミングで、前記制御部が前記読み出し回数が最少のメモリ領域のデータ及び該メモリ領域のデータのメモリアドレスを前記第１のバッファに格納されているデータ及び該格納されているデータのメモリアドレスで書き換えることを特徴とするメモリ装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ装置及びメモリ装置の制御方法に関する。
【背景技術】
【０００２】
ＣＰＵ（Central Processing Unit）等のホストに対してＤＲＡＭ（Dynamic Random Access Memory）素子等を有する複数のメモリデバイスが接続されたシステムにおいて、複数のメモリデバイスの接続形態としては、ホストに対して１対１で接続する並列接続やホストに対して縦続接続するカスケード接続がある。ホストは、内部のキャッシュメモリにデータが存在しない（ミスヒット）場合、接続されたメモリデバイス（メインメモリ）からデータを読み出すとともに、キャッシュメモリへの書き込みを実施することで、メモリアクセスのスループットを改善している。
【０００３】
また、アクセス速度が異なるメモリを有するシステムにおいて、ホスト側で、データの読み出し頻度が高いデータをアクセス速度が速いメモリに割り当てるように物理アドレスと論理アドレスのマッチングを制御する技術が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−１６７４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ホストに対して複数のメモリデバイスが接続されたシステムにおいて、高記憶容量でかつ高スループットを実現するためには、以下のような課題がある。例えば、複数のメモリデバイスを１対１で並列に接続すると、メモリアクセスのレイテンシはすべてのメモリデバイスで同じであるが、ホストと接続する信号数（ホストの接続ピン数）がメモリデバイス数に応じて増加するためにホストの面積等が増加しコストが増大する。複数のメモリデバイスをカスケード接続すると、ホストと接続する信号数は少なくホストの面積等の増加を抑えられるが、ホストに対して遠いメモリデバイスに格納されたデータを読み出すには、その間にあるメモリデバイスを経由してアクセスするためにレイテンシが大きくなる。
【０００６】
１つの側面では、本発明の目的は、ホストに対して複数のメモリデバイスがカスケード接続されたシステムにおけるデータの割り当てを最適化し、メモリアクセスのレイテンシを改善することにある。
【課題を解決するための手段】
【０００７】
メモリ装置の一態様は、複数のメモリ領域を有するメモリ部と、メモリ部に格納されているデータのメモリアドレス及び読み出し回数をメモリ領域毎に保持するテーブル部と、カスケード接続された他のメモリ装置から入力されるデータ及びメモリアドレスを格納する第１のバッファと、カスケード接続された他のメモリ装置に出力するデータ及びメモリアドレスを格納する第２のバッファと、制御部とを有する。制御部は、テーブル部に保持されている読み出し回数の最少値がカスケード接続された次のメモリ装置から読み出されたデータの読み出し回数より少ない場合に、次のメモリ装置から読み出されたデータ及びメモリアドレスを第１のバッファに格納するとともに読み出し回数が最少のメモリ領域のデータ及びメモリアドレスを第２のバッファを介して次のメモリ装置に出力する。また、制御部は、メモリ部のリフレッシュを実行するタイミングで、読み出し回数が最少のメモリ領域のデータ及びメモリアドレスを第１のバッファに格納されているデータ及びメモリアドレスで書き換える。
【発明の効果】
【０００８】
発明の一態様においては、読み出し回数の少ないデータを、カスケード接続された次のメモリ装置から読み出された読み出し回数の多いデータで書き換えて、システムにおけるデータの割り当てを読み出し回数に応じた割り当てに最適化でき、メモリアクセスのレイテンシを改善することが可能となる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態におけるシステム構成の例を示す図である。
【図２】本実施形態におけるメモリデバイスの構成例を示す図である。
【図３】本実施形態における管理テーブルを説明するための図である。
【図４】本実施形態における書き込み動作の例を示すフローチャートである。
【図５】本実施形態における読み出し動作の例を示すフローチャートである。
【図６】本実施形態における読み出し動作を説明するための図である。
【図７】本実施形態における書き換え動作の例を示すフローチャートである。
【図８】本実施形態における書き換え動作を説明するための図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態を図面に基づいて説明する。
【００１１】
図１は、本発明の一実施形態におけるシステム構成の例を示す図である。本実施形態におけるシステムは、ＣＰＵ（Central Processing Unit）等のホスト１０１、及びホスト１０１に対してカスケード接続（縦続接続）された複数のメモリデバイス（メモリ装置）１０２−Ａ、１０２−Ｂ、１０２−Ｃを有する。
【００１２】
メモリデバイス１０２−Ａ、１０２−Ｂ、１０２−Ｃの各々は、例えばＤＲＡＭ（Dynamic Random Access Memory）素子等の記憶素子を有する。なお、図１においては、３つのメモリデバイス１０２−Ａ、１０２−Ｂ、１０２−Ｃがカスケード接続された例を示しているが、これに限定されるものではなく、カスケード接続されるメモリデバイスの数は任意の複数である。
【００１３】
図１に示したシステムでは、メモリデバイス１０２−Ｂに格納されているデータをホスト１０１が読み出す場合、メモリデバイス１０２−Ａを経由してメモリデバイス１０２−Ｂに対するメモリアクセスが行われる。同様に、メモリデバイス１０２−Ｃに格納されているデータをホスト１０１が読み出す場合、メモリデバイス１０２−Ａ及びメモリデバイス１０２−Ｂを経由してメモリデバイス１０２−Ｃに対するメモリアクセスが行われる。したがって、ホスト１０１からのメモリアクセスのレイテンシは、メモリデバイス１０２−Ａ、メモリデバイス１０２−Ｂ、メモリデバイス１０２−Ｃの順に大きくなる。
【００１４】
メモリデバイス１０２−Ａ、１０２−Ｂ、１０２−Ｃの構成について説明する。図２は、本実施形態におけるメモリデバイス（メモリ装置）１０２の構成例を示す図である。本実施形態におけるメモリデバイス１０２は、メモリ部２０１、制御部２０２、リンク部２０３、２０４、及びスイッチ部２０５を有する。
【００１５】
リンク部２０３、２０４は、外部と命令（コマンド）、アドレスａｄｒｓ及びデータｄａｔａをシリアル又はパラレルで送受信する。リンク部２０３は、前段に接続された１つ前のメモリデバイス（初段のメモリデバイスである場合にはホスト１０１）と命令、アドレス及びデータを送受信する。リンク部２０４は、後段に接続された次のメモリデバイスと命令、アドレス及びデータを送受信する。スイッチ部２０５は、メモリ間の命令、アドレス及びデータの受渡しを制御する。また、スイッチ部２０５は、例えば、競合したときの順序制御を行ったりする。
【００１６】
メモリ部２０１は、それぞれデータを格納する複数のメモリセルを有するメモリセル部２１１及び選択されたメモリセルに対しデータを入出力するためのマルチプレクサ２１２を有する。また、メモリ部２０１は、制御部２０２から供給されるローアドレス及びカラムアドレスに従ってメモリセルを選択するローデコーダ２１３及びカラムデコーダ２１４を有する。
【００１７】
制御部２０２は、メモリ部２０１を制御する。制御部２０２は、メモリ制御部２２１、管理テーブル２２２、比較回路２２３、書き込み用バッファ２２４、及び読み出し用バッファ２２５を有する。メモリ制御部２２１は、アクセス制御部２２６、ライトバッファ２２７、リードバッファ２２８、ＥＣＣ処理部２２９、及びリフレッシュカウンタ２３０を有し、メモリ部２０１に対するアクセスを制御する。
【００１８】
アクセス制御部２２６は、スイッチ部２０５を介して入力される命令（コマンド）ＣＭＤ、比較回路２２３の出力、及びリフレッシュカウンタ２３０の出力等に基づいて、メモリ部２０１に供給するローアドレスやカラムアドレスの生成やタイミング制御を行う。ライトバッファ２２７は、メモリに書き込むデータＷＤＴ（ＸＩＤＴ）をメモリ部２０１に出力する。リードバッファ２２８は、メモリ部２０１から読み出したデータＲＤＴ（ＸＯＤＴ）を出力する。
【００１９】
ＥＣＣ処理部２２９は、メモリ部２０１から読み出されたデータＲＤＴについて、誤り訂正符号（ＥＣＣ：Error Correcting Code）に基づいてエラーの有無を判定し、訂正可能なエラー（コレクタブルエラー）である場合には誤り訂正処理を行う。また、ＥＣＣ処理部２２９は、必要に応じてアクセス制御部２２６に対して冗長処理を要求する。リフレッシュカウンタ２３０は、経過時間（経過サイクル）をカウントしてリフレッシュの実行を要求する。
【００２０】
管理テーブル２２２は、メモリ部２０１に格納されるデータのメモリアドレスや読み出し回数を保持し管理するためのテーブルである。管理テーブル２２２は、メモリ部２０１のラインサイズ単位のメモリ領域毎にレジスタを有する。各々のレジスタは、図３に示すように３つのフィールド３０１、３０２、３０３を有する。図３は、本実施形態における管理テーブル２２２を説明するための図である。図３において、図２に示した構成要素と同一の機能を有する構成要素には同一の符号を付している。
【００２１】
第１のフィールド３０１には、対応するメモリ領域に格納されているデータが有効であるか無効であるか等のメモリ領域の状態を示す情報Ｖ［１：０］が格納される。第２のフィールド３０２には、対応するメモリ領域に格納されているデータの読み出し回数を示すカウント値ＨＯＴ［１５：０］が格納される。第３のフィールド３０３には、対応するメモリ領域に格納されているデータのメモリアドレスが格納される。ここで、第３のフィールド３０３には、メモリアドレスのうち、ラインサイズ分に相当する下位ビットを除いたタグ部ＴＡＧ＿ＡＤＤが格納される。
【００２２】
比較回路２２３は、ホスト１０１から出力されたアドレスａｄｒｓのタグ部ＭＡＤＴＡＧと管理テーブル２２２に格納されているタグ部ＴＡＧ＿ＡＤＤとの比較を行う。比較回路２２３は、アドレスのタグ部の比較結果（一致するか否かを示す信号）を出力する。
【００２３】
書き込み用バッファ２２４及び読み出し用バッファ２２５は、それぞれメモリデバイス１０２間でのデータの入れ換えに用いる情報を保持するバッファである。書き込み用バッファ２２４は、自らのメモリ部２０１に書き込む入れ換えデータに係る情報ＸＩＮを保持するためのバッファであり、書き込みフラグＷｆｌｇ、アドレスＷａｄ、データＷｄｔ、及びタグＷｔａｇを保持する。また、読み出し用バッファ２２５は、カスケード接続された次のメモリデバイスのメモリ部２０１に書き込む追い出しデータに係る情報ＸＯＵＴを保持するためのバッファであり、読み出しフラグＲｆｌｇ、アドレスＲａｄ、データＲｄｔ、及びタグＲｔａｇを保持する。
【００２４】
次に、動作について説明する。以下では、メモリデバイス１０２−ＡをメモリＡと称し、メモリデバイス１０２−ＢをメモリＢと称し、メモリデバイス１０２−ＣをメモリＣと称して説明する。
【００２５】
＜ホスト１０１からの書き込み動作＞
まず、ホスト１０１からの書き込み動作について説明する。図４は、本実施形態におけるホスト１０１からの書き込み動作の例を示すフローチャートである。メモリＡがホスト１０１からの書き込み命令を受信すると（Ｓ１０１）、メモリＡの制御部２０２は、管理テーブル２２２において有効（情報Ｖ［１：０］＝“１０”）を示すレジスタに格納されているタグ部ＴＡＧ＿ＡＤＤとホスト１０１からのメモリアドレスのタグ部ＭＡＤＴＡＧとが一致するか否かを判定する（Ｓ１０２）。
【００２６】
ホスト１０１からのメモリアドレスのタグ部ＭＡＤＴＡＧに一致するタグ部ＴＡＧ＿ＡＤＤが管理テーブル２２２に存在しない場合（Ｓ１０２のＮＯ）には、メモリＡの制御部２０２は、メモリ部２０１にメモリ領域の空きがあるか否かを判定する（Ｓ１０３）。メモリＡの制御部２０２は、管理テーブル２２２において情報Ｖ［１：０］が値“００”のメモリ領域を空き状態と判定し、情報Ｖ［１：０］が値“００”のレジスタがあれば、メモリ領域の空きがあると判定する。
【００２７】
管理テーブル２２２に格納されているタグ部ＴＡＧ＿ＡＤＤとホスト１０１からのメモリアドレスのタグ部ＭＡＤＴＡＧとが一致する場合（Ｓ１０２のＹＥＳ）、もしくはメモリ領域の空きがある場合（Ｓ１０３のＹＥＳ）には、ステップＳ１０４に進む。そして、メモリＡの制御部２０２は、そのメモリ領域に対して書き込みを行う（Ｓ１０４）とともに、管理テーブル２２２を更新する（Ｓ１０５）。ステップＳ１０５での管理テーブル２２２の更新では、書き込みを行ったメモリ領域に対応するレジスタにタグ部ＴＡＧ＿ＡＤＤとしてメモリアドレスのタグ部を登録するとともに、情報Ｖ［１：０］を値“１０”に設定する。その後、メモリＡは、書き込みを行ったことをホスト１０１に対して応答する（Ｓ１０６）。
【００２８】
ステップＳ１０３での判定の結果、メモリ領域の空きがない場合（Ｓ１０３のＮＯ）には、メモリＡは、書き込み命令を次のメモリＢに転送する（Ｓ１０７）。書き込み命令を受けたメモリＢの制御部２０２は、管理テーブル２２２において有効なレジスタに格納されているタグ部ＴＡＧ＿ＡＤＤとメモリアドレスのタグ部ＭＡＤＴＡＧとが一致するか否かを判定する（Ｓ１０８）。メモリアドレスのタグ部ＭＡＤＴＡＧに一致するタグ部ＴＡＧ＿ＡＤＤが管理テーブル２２２に存在しない場合（Ｓ１０８のＮＯ）には、メモリＢの制御部２０２は、メモリ部２０１にメモリ領域の空きがあるか否かを判定する（Ｓ１０９）。
【００２９】
管理テーブル２２２に格納されているタグ部ＴＡＧ＿ＡＤＤとメモリアドレスのタグ部ＭＡＤＴＡＧとが一致する場合（Ｓ１０８のＹＥＳ）、もしくはメモリ領域の空きがある場合（Ｓ１０９のＹＥＳ）には、ステップＳ１１０に進む。そして、メモリＢの制御部２０２は、そのメモリ領域に対して書き込みを行う（Ｓ１１０）とともに、管理テーブル２２２を更新する（Ｓ１１１）。ステップＳ１１１での管理テーブル２２２の更新では、書き込みを行ったメモリ領域に対応するレジスタにタグ部ＴＡＧ＿ＡＤＤとしてメモリアドレスのタグ部を登録するとともに、情報Ｖ［１：０］を値“１０”に設定する。また、メモリＢは、書き込みを行ったことをメモリＡに対して応答し（Ｓ１１２）、それを受けたメモリＡはホスト１０１に対して応答する（Ｓ１０６）。
【００３０】
なお、ステップＳ１０９での判定の結果、メモリ領域の空きがない場合（Ｓ１０９のＮＯ）には、メモリＢは、書き込み命令を次のメモリＣに転送する（Ｓ１１３）。書き込み命令を受けたメモリＣでは、メモリＢと同様の処理を行う。
【００３１】
＜ホスト１０１からの読み出し動作＞
次に、ホスト１０１からの読み出し動作について説明する。図５は、本実施形態におけるホスト１０１からの読み出し動作の例を示すフローチャートである。メモリＡがホスト１０１からの読み出し命令を受信すると（Ｓ２０１）、メモリＡの制御部２０２は、管理テーブル２２２において有効なレジスタに格納されているタグ部ＴＡＧ＿ＡＤＤとホスト１０１からのメモリアドレスのタグ部ＭＡＤＴＡＧとが一致するか否かを判定する（Ｓ２０２）。
【００３２】
管理テーブル２２２に格納されているタグ部ＴＡＧ＿ＡＤＤとホスト１０１からのメモリアドレスのタグ部ＭＡＤＴＡＧとが一致する場合（Ｓ２０２のＹＥＳ）、メモリＡの制御部２０２は、そのメモリ領域からデータを読み出す（Ｓ２０３）。そして、メモリＡの制御部２０２は、読み出したデータについて誤り訂正符号に基づいてエラーの有無を判定し（Ｓ２０４）、データエラーがあり訂正可能であれば（ステップＳ２０５のＹＥＳ）、エラーを訂正するとともに情報Ｖ［１：０］を不良を示す値“１１”に設定する（Ｓ２０６）。
【００３３】
続いて、メモリＡの制御部２０２は、データを読み出したメモリ領域に対応するレジスタに格納されている読み出し回数のカウント値ＨＯＴ［１５：０］を１増加させ、管理テーブル２２２を更新する（Ｓ２０７）。その後、メモリＡは、ホスト１０１に読み出し命令に対する応答を行う（Ｓ２０８）。
【００３４】
ステップＳ２０２での判定の結果、ホスト１０１からのメモリアドレスのタグ部ＭＡＤＴＡＧに一致するタグ部ＴＡＧ＿ＡＤＤが管理テーブル２２２に存在しない場合（Ｓ２０２のＮＯ）には、メモリＡは、読み出し命令を次のメモリＢに転送する（Ｓ２０９）。また、メモリＡの制御部２０２は、読み出し用バッファ２２５のアドレスＲａｄ＿Ａ（“＿Ａ”はメモリＡに係るものであることを示す。以下についても同様。）にメモリアドレスを格納する（Ｓ２１０）。続いて、メモリＡの制御部２０２は、管理テーブル２２２において有効かつカウント値ＨＯＴ［１５：０］の値が最少であるタグ部ＴＡＧ＿ＡＤＤを読み出すとともに、対応するメモリ領域からデータを読み出す（Ｓ２１２）。
【００３５】
メモリＡの制御部２０２は、入れ換え元の情報をバッファ２２４、２２５に格納する（Ｓ２１２）。ステップＳ２１２での入れ換え元の情報の格納では、ステップＳ２１１において読み出したデータ及びタグ部ＴＡＧ＿ＡＤＤを読み出し用バッファ２２５のデータＲｄｔ＿Ａ及びタグＲｔａｇ＿Ａに格納するとともに、対応するメモリ領域を示すアドレス値を書き込み用バッファ２２４のアドレスＷａｄ＿Ａに格納する。そして、メモリＡの制御部２０２は、読み出し用バッファ２２５の読み出しフラグＲｆｌｇ＿Ａを“１”に設定する（Ｓ２１３）。
【００３６】
読み出し命令を受けたメモリＢの制御部２０２は、管理テーブル２２２において有効なレジスタに格納されているタグ部ＴＡＧ＿ＡＤＤとメモリアドレスのタグ部ＭＡＤＴＡＧとが一致するか否かを判定する（Ｓ２１４）。管理テーブル２２２に格納されているタグ部ＴＡＧ＿ＡＤＤとメモリアドレスのタグ部ＭＡＤＴＡＧとが一致する場合（Ｓ２１４のＹＥＳ）、メモリＢの制御部２０２は、そのメモリ領域からデータを読み出す（Ｓ２１５）。そして、メモリＢの制御部２０２は、読み出したデータについて誤り訂正符号に基づいてエラーの有無を判定し（Ｓ２１６）、データエラーがあり訂正可能であれば（ステップＳ２１７のＹＥＳ）、エラーを訂正するとともに情報Ｖ［１：０］を値“１１”に設定する（Ｓ２１８）。
【００３７】
続いて、メモリＢの制御部２０２は、データを読み出したメモリ領域に対応するレジスタに格納されている読み出し回数のカウント値ＨＯＴ［１５：０］を１増加させ、管理テーブル２２２を更新する（Ｓ２１９）。そして、メモリＢは、読み出しデータ、管理テーブル２２２のカウント値ＨＯＴ＿Ｂ（“＿Ｂ”はメモリＢに係るものであることを示す。以下についても同様。）及びタグ部ＴＡＧ＿ＡＤＤ＿Ｂを１つ前に接続されたメモリデバイスであるメモリＡへ応答し、対応するメモリ領域を示すアドレス値を書き込み用バッファ２２４のアドレスＷａｄ＿Ｂに格納する（Ｓ２２０）。なお、ステップＳ２１４での判定の結果、メモリアドレスのタグ部ＭＡＤＴＡＧに一致するタグ部ＴＡＧ＿ＡＤＤが管理テーブル２２２に存在しない場合（Ｓ２１４のＮＯ）には、メモリＢは、読み出し命令を次のメモリＣに転送する（Ｓ２２６）。読み出し命令を受けたメモリＣでは、メモリＢと同様の処理を行う。
【００３８】
メモリＢからの応答を受けたメモリＡは、ホスト１０１に読み出し命令に対する応答を行う（Ｓ２０８）。また、メモリＡの制御部２０２は、書き込み用バッファ２２４のアドレスＷａｄ＿Ａのアドレス値が示すメモリ領域に対応するカウント値ＨＯＴ＿Ａと、メモリＢから受けたカウント値ＨＯＴ＿Ｂとを比較する（Ｓ２２１）。すなわち、メモリＡの制御部２０２は、メモリＡの管理テーブル２２２において最少のカウント値ＨＯＴ＿ＡとメモリＢから受けたカウント値ＨＯＴ＿Ｂとを比較する。
【００３９】
カウント値ＨＯＴ＿Ａがカウント値ＨＯＴ＿Ｂより少ない場合（Ｓ２２２のＹＥＳ）には、メモリＡの制御部２０２は、書き込み用バッファ２２４の書き込みフラグＷｆｌｇ＿Ａを“１”に設定する（Ｓ２２３）とともに、入れ換え先の情報を書き込み用バッファ２２４に格納する（Ｓ２２４）。ステップＳ２２４での入れ換え先の情報の格納では、メモリＢからの読み出しデータ及びタグ部ＴＡＧ＿ＡＤＤ＿Ｂを書き込み用バッファ２２４のデータＷｄｔ＿Ａ及びタグＷｔａｇ＿Ａに格納する。そして、書き換え動作に移行する。なお、メモリＢからの読み出しデータは、訂正可能なエラーがあった場合に誤り訂正が施されたデータであるので、後述する書き換え動作では、誤り訂正済みのデータで書き換えが行われることとなる。
【００４０】
ステップＳ２２１での比較の結果、カウント値ＨＯＴ＿Ａがカウント値ＨＯＴ＿Ｂ以上である場合（Ｓ２２２のＮＯ）には、メモリＡの制御部２０２は、書き込み用バッファ２２４の書き込みフラグＷｆｌｇ＿Ａを“０”に設定する（Ｓ２２５）。
【００４１】
例えば、図６に示すように、ホスト１０１からメモリアドレス０ｘ０２ＣＡ＿ｘｘｘｘに対する読み出し命令（リード命令）６０１が発行されたとする。このとき、メモリＡの管理テーブル２２２にはメモリアドレスのタグ部０ｘ０２ＣＡに一致するものが存在しないので、読み出し用バッファ２２５のアドレスＲａｄ＿Ａにメモリアドレスを格納するとともに、読み出し命令をメモリＢに転送する。また、メモリＡでは、管理テーブル２２２においてカウント値ＨＯＴが最少であるタグ部及び対応するメモリ領域のデータが読み出し用バッファ２２５のタグＲｔａｇ＿Ａ及びデータＲｄｔ＿Ａに格納されるとともに、対応するメモリ領域を示すアドレス値が書き込み用バッファ２２４のアドレスＷａｄ＿Ａに格納される。そして、読み出し用バッファ２２５の読み出しフラグＲｆｌｇ＿Ａが“１”に設定される。
【００４２】
メモリアドレス０ｘ０２ＣＡ＿ｘｘｘｘに対する読み出し命令を受けたメモリＢの管理テーブル２２２にはメモリアドレスのタグ部０ｘ０２ＣＡに一致するものが存在するので、メモリＢでは、対応するメモリ領域からデータが読み出される。また、データが読み出されたメモリ領域に対応するカウント値ＨＯＴがメモリＡにおけるカウント値ＨＯＴの最少よりも大きいので、メモリＡの書き込み用バッファ２２４の書き込みフラグＷｆｌｇ＿Ａが“１”に設定される。そして、メモリＢでの読み出しデータ及びデータが読み出されたメモリ領域に対応するタグ部がメモリＡの書き込み用バッファ２２４のデータＷｄｔ＿Ａ及びタグＷｔａｇ＿Ａに格納される。また、データが読み出されたメモリ領域を示すアドレス値がメモリＢの書き込み用バッファ２２４のアドレスＷａｄ＿Ｂに格納される。
【００４３】
＜メモリデバイス１０２間での書き換え動作＞
次に、メモリデバイス１０２間での書き換え動作について説明する。図７は、本実施形態におけるメモリデバイス１０２間での書き換え動作の例を示すフローチャートである。以下では、メモリＡとメモリＢとの間でデータの書き換え（入れ換え）を行う場合について説明するが、他の隣接するメモリデバイス間でのデータの書き換え（入れ換え）も同様である。このメモリデバイス１０２間での書き換え動作は、ホスト１０１が処理に介在することなく、メモリデバイス１０２間の処理のみで行われる。
【００４４】
メモリＡの制御部２０２は、書き込み用バッファ２２４の書き込みフラグＷｆｌｇ＿Ａ及び読み出し用バッファ２２５の読み出しフラグＲｆｌｇ＿Ａがともに“１”であるか否かを確認する（Ｓ３０１）。書き込みフラグＷｆｌｇ＿Ａ及び読み出しフラグＲｆｌｇ＿Ａの少なくとも一方が“０”である場合（Ｓ３０１のＮＯ）には、書き換え動作を終了する。言い換えれば、メモリＡの制御部２０２は、書き込みフラグＷｆｌｇ＿Ａ及び読み出しフラグＲｆｌｇ＿Ａがともに“１”になった場合（Ｓ３０１のＹＥＳ）に書き換え処理を開始してステップＳ３０２に進む。
【００４５】
書き換え処理を開始すると、メモリＡの制御部２０２は、読み出し用バッファ２２５のアドレスＲａｄ＿Ａ、データＲｄｔ＿Ａ、及びタグＲｔａｇ＿Ａに格納されている値をメモリＢに転送する（Ｓ３０２）とともに、対応するメモリ領域のデータをメモリＢからの読み出しデータに書き換える。この書き換えタイミングは、ＤＲＡＭにおけるリフレッシュサイクルを利用する。リフレッシュの実行タイミング（リフレッシュビジィ）でなければ（Ｓ３０３のＮＯ）、メモリＡの制御部２０２は、リフレッシュカウンタ２３０のカウント値を１増加させる（Ｓ３０４）。リフレッシュカウンタ２３０のカウント値が所定の値に到達しリフレッシュの実行タイミングになる（Ｓ３０３のＹＥＳ）と、メモリＡの制御部２０２は、書き込み用バッファ２２４の書き込みフラグＷｆｌｇ＿Ａの状態を確認する。
【００４６】
メモリＡの制御部２０２は、書き込みフラグＷｆｌｇ＿Ａが“１”であれば、書き込み用バッファ２２４のアドレスＷａｄ＿Ａに格納されたアドレス値が示すメモリ領域にデータＷｄｔ＿Ａに格納されたデータを書き込む（Ｓ３０５）。なお、書き込みフラグＷｆｌｇ＿Ａが“０”であれば、メモリＡの制御部２０２は、通常のリフレッシュ動作を行う。
【００４７】
書き換えデータをメモリ領域に書き込んだ後、メモリＡの制御部２０２は、書き込みを行ったメモリ領域に対応するレジスタのタグ部に書き込み用バッファ２２４のタグＷｔａｇ＿Ａに格納された値を登録するとともにカウント値ＨＯＴ［１５：０］を１増加させ、管理テーブル２２２を更新する（Ｓ３０６）。以上の動作が終了した後、メモリＡの制御部２０２は、書き込み用バッファ２２４の書き込みフラグＷｆｌｇ＿Ａ及び読み出し用バッファ２２５の読み出しフラグＲｆｌｇ＿Ａをともに“０”にリセットして書き換え動作を終了する。
【００４８】
また、メモリＡからアドレスＲａｄ＿Ａ、データＲｄｔ＿Ａ、及びタグＲｔａｇ＿Ａを受けたメモリＢの制御部２０２は、管理テーブル２２２において有効なレジスタに格納されているタグ部ＴＡＧ＿ＡＤＤとアドレスＲａｄ＿Ａのタグ部とが一致するか否かを判定する（Ｓ３０８）。管理テーブル２２２に格納されているタグ部ＴＡＧ＿ＡＤＤとアドレスＲａｄ＿Ａとが一致する場合（Ｓ３０８のＹＥＳ）には、さらに情報Ｖ［１：０］が“１０”であるか、言い換えれば書き込む領域が不良となった領域でないかを確認する（Ｓ３０９）。これは、書き込む領域が不良とされた領域である場合に、書き込むデータを空き状態の異なるメモリ領域に割り当てるためである。
【００４９】
アドレスＲａｄ＿Ａのタグ部に一致するタグ部ＴＡＧ＿ＡＤＤが管理テーブル２２２に存在しない場合（Ｓ３０８のＮＯ）、もしくは一致するものが存在するが情報Ｖ［１：０］が“１０”でない場合（Ｓ３０９のＮＯ）には、メモリＢの制御部２０２は、メモリ部２０１にメモリ領域の空きがあるか否かを判定する（Ｓ３１０）。判定の結果、メモリ領域の空きがある場合（Ｓ３１０のＹＥＳ）には、メモリＢの制御部２０２は、そのメモリ領域を示すアドレス値を書き込み用バッファ２２４のアドレスＷａｄ＿Ｂに格納する（Ｓ３１１）。
【００５０】
続いて、メモリＢの制御部２０２は、メモリＡからのデータＲｄｔ＿Ａ及びタグＲｔａｇ＿Ａの値を書き込み用バッファ２２４のデータＷｄｔ＿Ｂ及びタグＷｔａｇ＿Ｂに格納するとともに、書き込みフラグＷｆｌｇ＿Ｂを“１”に設定する（Ｓ３１２）。メモリＢにおけるデータ書き換えのタイミングも、ＤＲＡＭにおけるリフレッシュサイクルを利用する。リフレッシュの実行タイミング（リフレッシュビジィ）でなければ（Ｓ３１３のＮＯ）、メモリＢの制御部２０２は、リフレッシュカウンタ２３０のカウント値を１増加させる（Ｓ４０４）。リフレッシュカウンタ２３０のカウント値が所定の値に到達しリフレッシュの実行タイミングになる（Ｓ３１３のＹＥＳ）と、メモリＢの制御部２０２は、書き込み用バッファ２２４の書き込みフラグＷｆｌｇ＿Ｂの状態を確認する。
【００５１】
メモリＢの制御部２０２は、書き込みフラグＷｆｌｇ＿Ｂが“１”であれば、書き込み用バッファ２２４のアドレスＷａｄ＿Ｂに格納されたアドレス値が示すメモリ領域にデータＷｄｔ＿Ｂに格納されたデータを書き込む（Ｓ３１５）。なお、書き込みフラグＷｆｌｇ＿Ｂが“０”であれば、メモリＢの制御部２０２は、通常のリフレッシュ動作を行う。
【００５２】
書き換えデータをメモリ領域に書き込んだ後、メモリＢの制御部２０２は、書き込みを行ったメモリ領域に対応するレジスタのタグ部に書き込み用バッファ２２４のタグＷｔａｇ＿Ｂに格納された値を登録し、管理テーブル２２２を更新する（Ｓ３１６）。なお、ステップＳ３１６での管理テーブル２２２の更新では、カウント値ＨＯＴ［１５：０］を変化させずに保持するようにしているが、カウント値ＨＯＴ［１５：０］を１減少させるように制御しても良い。以上の動作が終了した後、メモリＢの制御部２０２は、書き込み用バッファ２２４の書き込みフラグＷｆｌｇ＿Ｂ及び読み出し用バッファ２２５の読み出しフラグＲｆｌｇ＿Ｂをともに“０”にリセットして書き換え動作を終了する。
【００５３】
例えば、図８に示すように、メモリＡにおいて書き込み用バッファ２２４の書き込みフラグＷｆｌｇ＿Ａ及び読み出し用バッファ２２５の読み出しフラグＲｆｌｇ＿Ａがともに“１”になると、読み出し用バッファ２２５のアドレスＲａｄ＿Ａ、データＲｄｔ＿Ａ、及びタグＲｔａｇ＿Ａに格納されている値がメモリＢに転送される。メモリＢの管理テーブル２２２にメモリＡから転送されたタグＲｔａｇ＿Ａと一致するタグ部があり、かつその情報Ｖ［１：０］が“１０”であるので、メモリＡから転送されたデータＲｄｔ＿Ａ及びタグＲｔａｇ＿Ａの値は、メモリＢの書き込み用バッファ２２４のデータＷｄｔ＿Ｂ及びタグＷｔａｇ＿Ｂに格納される。
【００５４】
そして、メモリＡでは、リフレッシュを実行するタイミングにおいて書き込み用バッファ２２４の書き込みフラグＷｆｌｇ＿Ａが“１”であると、書き込み用バッファ２２４のアドレスＷａｄ＿Ａが示すメモリ領域にデータＷｄｔ＿Ａのデータが書き込まれるとともに、管理テーブル２２２の対応するレジスタにタグＷｔａｇ＿Ａのタグが書き込まれる。同様に、メモリＢでは、リフレッシュを実行するタイミングにおいて書き込み用バッファ２２４の書き込みフラグＷｆｌｇ＿Ｂが“１”であると、書き込み用バッファ２２４のアドレスＷａｄ＿Ｂが示すメモリ領域にデータＷｄｔ＿Ｂのデータが書き込まれるとともに、管理テーブル２２２の対応するレジスタにタグＷｔａｇ＿Ｂのタグが書き込まれる。
【００５５】
本実施形態によれば、複数のメモリデバイスがカスケード接続されたシステムにおいて、あるメモリデバイス（例えば、メモリＡ）にある読み出し回数の少ないデータと次のメモリデバイス（例えば、メモリＢ）にある読み出し回数の多いデータとをメモリデバイス間の制御により入れ換える。これにより、システムにおいて読み出し回数の多いデータをホスト１０１に近い（メモリアクセスレイテンシの小さい）メモリデバイスに割り当てることができ、データの割り当てを読み出し回数（データの使用頻度）に応じた割り当てに最適化しメモリアクセスのレイテンシを改善することができる。また、割り当てを最適化するためのメモリデバイスでのデータの書き換えは、リフレッシュを実行するタイミングで行うので、通常のアクセスに影響を与えることなく、システム性能を損なわずに実現することができる。
【００５６】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００５７】
１０１  ホスト
１０２  メモリデバイス（メモリ装置）
２０１  メモリ部
２０２  制御部
２０３、２０４  リンク部
２０５  スイッチ部
２２１  メモリ制御部
２２２  管理テーブル
２２３  比較回路
２２４  書き込み用バッファ
２２５  読み出し用バッファ
２２６  アクセス制御部
２２７  ライトバッファ
２２８  リードバッファ
２２９  ＥＣＣ処理部
２３０  リフレッシュカウンタ
【図１】
0006464916.tif 000002
【図２】
0006464916.tif 000003
【図３】
0006464916.tif 000004
【図４】
0006464916.tif 000005
【図５】
0006464916.tif 000006
【図６】
0006464916.tif 000007
【図７】
0006464916.tif 000008
【図８】
0006464916.tif 000009