(57)【要約】【課題】メモリミラー構成において同一のバンク識別情報に基づくリードアクセスが連続して発生する場合に、バスの利用効率を向上させる。【解決手段】メモリ制御装置５０１は、複数の動作単位に分割されたメモリへのアクセスを制御する。上記複数の動作単位のうち第１の動作単位と第２の動作単位がメモリミラーを構成する。受信部５１１は、第１の動作単位に含まれる第１のバンクと第２の動作単位に含まれる第２のバンクの両方に対応するバンク識別情報を含む複数のリードリクエストを受信する。決定部５１２は、上記複数のリードリクエストに基づく複数のリードアクセスが第１の動作単位と第２の動作単位に対して交互に行われるように、各リードアクセスのアクセス対象を決定する。制御部５１３は、各リードアクセスが決定されたアクセス対象の動作単位に対して行われるように、各リードリクエストを制御する。【選択図】図５
2014063299.tif 000002
【特許請求の範囲】
【請求項１】
複数の動作単位に分割されたメモリへのアクセスを制御するメモリ制御装置であって、
前記複数の動作単位のうち第１の動作単位と第２の動作単位がメモリミラーを構成しているとき、前記第１の動作単位に含まれる第１のバンクと前記第２の動作単位に含まれる第２のバンクの両方に対応するバンク識別情報を含む複数のリードリクエストを受信する受信手段と、
前記複数のリードリクエストに基づく複数のリードアクセスが前記第１の動作単位と前記第２の動作単位に対して交互に行われるように、各リードアクセスのアクセス対象を決定する決定手段と、
各リードアクセスが決定されたアクセス対象の動作単位に対して行われるように、各リードリクエストを制御する制御手段と、
を備えることを特徴とするメモリ制御装置。
【請求項２】
前記制御手段は、各リードリクエストに基づくリードコマンドを前記アクセス対象の動作単位へ発行することを特徴とする請求項１記載のメモリ制御装置。
【請求項３】
前記第１の動作単位及び前記第２の動作単位はそれぞれ第１の物理ランク及び第２の物理ランクであり、前記複数のリードリクエストの各々は、前記第１の物理ランク及び前記第２の物理ランクに対応する論理ランク識別情報と、前記バンク識別情報とを含み、前記決定手段は、前記バンク識別情報と前記論理ランク識別情報の組み合わせに対応する物理ランク識別情報を格納するテーブルを含み、前記第１の物理ランク及び前記第２の物理ランクのうち、各リードリクエストに含まれる前記バンク識別情報と前記論理ランク識別情報の組み合わせに基づいて前記テーブルから出力される前記物理ランク識別情報が示す物理ランクを、前記アクセス対象に決定し、前記制御手段は、各リードリクエストに基づくリードコマンドを前記アクセス対象の物理ランクへ発行する度に、前記テーブルの前記物理ランク識別情報を、前記第１の物理ランク及び前記第２の物理ランクのうち、前記アクセス対象の物理ランクとは異なる方の物理ランクを示す物理ランク識別情報に更新することを特徴とする請求項２記載のメモリ制御装置。
【請求項４】
前記制御手段は、前記アクセス対象の物理ランクから出力されたリードデータに訂正不可能なエラーが含まれている場合、前記テーブルの前記物理ランク識別情報を、前記第１の物理ランク及び前記第２の物理ランクのうち、前記訂正不可能なエラーが発生した物理ランクとは異なる方の物理ランクを示す物理ランク識別情報に固定することを特徴とする請求項３記載のメモリ制御装置。
【請求項５】
前記制御手段は、前記第１の動作単位へのアクセスを制御する第１のメモリアクセスコントローラと前記第２の動作単位へのアクセスを制御する第２のメモリアクセスコントローラのうち、前記アクセス対象の動作単位へのアクセスを制御するメモリアクセスコントローラへ、各リードリクエストを出力することを特徴とする請求項１記載のメモリ制御装置。
【請求項６】
前記第１の動作単位及び前記第２の動作単位はそれぞれ第１の物理ランク及び第２の物理ランクであり、前記複数のリードリクエストの各々は、前記第１の物理ランク及び前記第２の物理ランクに対応する論理ランク識別情報と、前記バンク識別情報とを含み、前記決定手段は、前記バンク識別情報と前記論理ランク識別情報の組み合わせに対応するメモリアクセスコントローラ識別情報を格納するテーブルを含み、前記第１の物理ランク及び前記第２の物理ランクのうち、各リードリクエストに含まれる前記バンク識別情報と前記論理ランク識別情報の組み合わせに基づいて前記テーブルから出力される前記メモリアクセスコントローラ識別情報が示すメモリアクセスコントローラに接続された物理ランクを、前記アクセス対象に決定し、前記制御手段は、前記アクセス対象の物理ランクへのアクセスを制御するメモリアクセスコントローラへ各リードリクエストを出力する度に、前記テーブルの前記メモリアクセスコントローラ識別情報を、前記第１のメモリアクセスコントローラ及び前記第２のメモリアクセスコントローラのうち、前記アクセス対象の物理ランクとは異なる方の物理ランクに接続されたメモリアクセスコントローラを示すメモリアクセスコントローラ識別情報に更新することを特徴とする請求項５記載のメモリ制御装置。（図１２）
【請求項７】
前記制御手段は、前記アクセス対象の物理ランクから出力されたリードデータに訂正不可能なエラーが含まれている場合、前記テーブルの前記メモリアクセスコントローラ識別情報を、前記第１のメモリアクセスコントローラ及び前記第２のメモリアクセスコントローラのうち、前記訂正不可能なエラーが発生した物理ランクとは異なる方の物理ランクに接続されたメモリアクセスコントローラを示すメモリアクセスコントローラ識別情報に固定することを特徴とする請求項６記載のメモリ制御装置。
【請求項８】
複数の動作単位に分割されたメモリと、
前記複数の動作単位のうち第１の動作単位と第２の動作単位がメモリミラーを構成しているとき、前記第１の動作単位に含まれる第１のバンクと前記第２の動作単位に含まれる第２のバンクの両方に対応するバンク識別情報を含む複数のリードリクエストを出力するリクエスト手段と、
前記複数のリードリクエストに基づく複数のリードアクセスが前記第１の動作単位と前記第２の動作単位に対して交互に行われるように、前記複数のリードリクエストを制御するメモリ制御手段と、
を備えることを特徴とする情報処理装置。
【請求項９】
複数の動作単位に分割されたメモリへのアクセスを制御するメモリ制御方法であって、
前記複数の動作単位のうち第１の動作単位と第２の動作単位がメモリミラーを構成しているとき、前記第１の動作単位に含まれる第１のバンクと前記第２の動作単位に含まれる第２のバンクの両方に対応するバンク識別情報を含む複数のリードリクエストを受信し、
前記複数のリードリクエストに基づく複数のリードアクセスが前記第１の動作単位と前記第２の動作単位に対して交互に行われるように、各リードアクセスのアクセス対象を決定し、
各リードアクセスが決定されたアクセス対象の動作単位に対して行われるように、各リードリクエストを制御する、
ことを特徴とするメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ制御装置、情報処理装置、及びメモリ制御方法に関する。
【背景技術】
【０００２】
現在、サーバ、パーソナルコンピュータ等の情報処理装置に搭載されるメモリを構成する部品として、Dual Inline Memory Module（ＤＩＭＭ）が広く使用されている。近年のＤＩＭＭに使用されるSynchronous Dynamic Random Access Memory（ＳＤＲＡＭ）は、動作速度が向上するにつれてランダムアクセスサイクルが長くなる傾向にある。ここで、ランダムアクセスサイクルとは、メモリ内の１つのメモリバンクにおけるアクティブ状態から次のアクティブ状態までの時間間隔を意味する。以下では、メモリバンクを単にバンクと記す場合がある。
【０００３】
ＤＩＭＭの動作方式としては、クローズドページ方式とオープンページ方式が知られている。クローズドページ方式は、メモリアクセスが終了したバンクをプリチャージし、メモリアクセスがないときはバンクをアイドル状態にしておく方式である。一方、オープンページ方式は、メモリアクセスが終了してもバンクをプリチャージせず、アクセスがないときでも、リフレッシュがなければ常にバンクをアクティブ状態にしておく方式である。
【０００４】
クローズドページ方式又はオープンページ方式のいずれの方式においても、ＤＩＭＭ内の同一バンクへのアクセスが集中してページミスが連続する場合は、メモリ帯域が著しく低下することがある。このため、ＤＩＭＭを使用する情報処理装置では、メモリ帯域低下のペナルティをいかにして隠蔽するかが、メモリのアクセス性能を左右する１つの要素となっている。
【０００５】
ところで、メモリに格納されたデータの信頼性を確保するために、データを二重化して冗長性を持たせるメモリミラーが知られている。メモリミラーを構成する方法としては、単一のメモリアクセスコントローラ（Memory Access Controller，ＭＡＣ）を用いる方法と、２つのＭＡＣを用いる方法とが考えられる。
【０００６】
ＤＩＭＭは、複数の物理ランクに分割され、各物理ランクに含まれる１つ以上のバンクは、同一のチップセレクト信号に従って動作する。したがって、物理ランクは、ＤＩＭＭ内の１つの動作単位に相当する。
【０００７】
単一のＭＡＣを用いたメモリミラー構成では、複数の物理ランクを含む１つ又は複数のＤＩＭＭを用意し、その１つ又は複数のＤＩＭＭに含まれる２つの物理ランクをペアとしてミラーを構成する。２つの物理ランクのペアは、１つの論理ランクとして扱われる。
【０００８】
図１は、単一のＭＡＣを用いたメモリミラー構成の例を示している。図１のメモリミラー構成は、ＭＡＣ１０１とＤＩＭＭ１０２を含み、ＤＩＭＭ１０２は、物理ランク１１１−１〜物理ランク１１１−４を含む。このうち、物理ランク１１１−１と物理ランク１１１−２はメモリミラーを構成する１つのペアであり、物理ランク１１１−３と物理ランク１１１−４はメモリミラーを構成するもう１つのペアである。
【０００９】
物理ランク１１１−１は、バンク１１２−１〜バンク１１２−Ｎ（Ｎは１以上の整数）を含み、物理ランク１１１−２〜物理ランク１１１−４も、物理ランク１１１−１と同様にＮ個のバンクを含む。
【００１０】
ＭＡＣ１０１は、リクエスト元からメモリアクセスリクエストを受信して、ＤＩＭＭ１０２にアクセスする。メモリアクセスリクエストがライトリクエストの場合、ＭＡＣ１０１は、ライトリクエストに含まれる論理ランクの識別情報に基づいて、その論理ランクに対応するペアの２つの物理ランクをライトアクセスのアクセス対象として選択する。そして、ＭＡＣ１０１は、ライトリクエストに含まれるバンク識別情報に基づいて、２つの物理ランクの同じバンクにライトコマンドを発行し、ライトデータを２つのバンクに同時に書き込む。
【００１１】
このとき、ＭＡＣ１０１は、ライトデータにError Correcting Code（ＥＣＣ）を付加して２つのバンクに書き込む。付加されたＥＣＣは、ＤＩＭＭ１０２から読み出されたリードデータが正しいか否かをチェックし、正しくないデータを訂正するために用いられる。
【００１２】
一方、メモリアクセスリクエストがリードリクエストの場合、ＭＡＣ１０１は、リードリクエストに含まれる論理ランクの識別情報に基づいて、その論理ランクに対応するペアの２つの物理ランクの一方をリードアクセスのアクセス対象として選択する。そして、ＭＡＣ１０１は、リードリクエストに含まれるバンク識別情報に基づいて、選択された物理ランクのバンクにリードコマンドを発行して、そのバンクからデータを読み出し、リードデータをリクエスト元へ転送する。
【００１３】
ＭＡＣ１０１とＤＩＭＭ１０２の間のデータバスは全ランクで共有しているため、リードリクエストの場合は、ライトリクエストの場合とは異なり、１つの物理ランクからしかデータを読み出すことができない。したがって、リードアクセスのアクセス対象は、２つの物理ランクの一方に固定されている。
【００１４】
そして、ＭＡＣ１０１は、読み出したデータに訂正不可能なエラーが発生した場合に、もう一方の物理ランクにリードコマンドを発行し、その物理ランク内の同じバンクからデータを読み出す。これにより、ＤＩＭＭ１０２に格納されたデータの信頼性が確保される。
【００１５】
２つのＭＡＣを用いたメモリミラー構成では、それぞれのＭＡＣに１つ以上のＤＩＭＭが接続される。そして、一方のＭＡＣに接続されたＤＩＭＭに含まれる物理ランクと、他方のＭＡＣに接続されたＤＩＭＭに含まれる物理ランクとをペアとして、ミラーを構成する。２つの物理ランクのペアは、１つの論理ランクとして扱われる。
【００１６】
図２は、２つのＭＡＣを用いたメモリミラー構成の例を示している。図２のメモリミラー構成は、インターコネクト部２０１、ＭＡＣ２０２−１、ＭＡＣ２０２−２、ＤＩＭＭ２０３−１、及びＤＩＭＭ２０３−２を含む。ＤＩＭＭ２０３−１は、物理ランク２１１−１〜物理ランク２１１−４を含み、ＤＩＭＭ２０３−２は、物理ランク２２１−１〜物理ランク２２１−４を含む。
【００１７】
このうち、物理ランク２１１−ｉ（ｉ＝１〜４）と物理ランク２２１−ｉはメモリミラーを構成する１つのペアである。この場合、ＭＡＣ２０２−１とＭＡＣ２０２−２も、メモリミラーを構成するペアとして動作する。
【００１８】
物理ランク２１１−１は、バンク２１２−１〜バンク２１２−Ｎ（Ｎは１以上の整数）を含み、物理ランク２１１−２〜物理ランク２１１−４も、物理ランク２１１−１と同様にＮ個のバンクを含む。物理ランク２２１−１は、バンク２２２−１〜バンク２２２−Ｎを含み、物理ランク２２１−２〜物理ランク２２１−４も、物理ランク２２１−１と同様にＮ個のバンクを含む。
【００１９】
インターコネクト部２０１は、リクエスト元からライトリクエストを受信すると、そのライトリクエストをＭＡＣ２０２−１及びＭＡＣ２０２−２の両方へ送信する。
【００２０】
ＭＡＣ２０２−１は、ライトリクエストに含まれる論理ランクの識別情報とバンク識別情報とに基づいて、ＤＩＭＭ２０３−１内の対応する物理ランクの対応するバンクにライトコマンドを発行し、ライトデータを書き込む。ＭＡＣ２０２−２も、ＭＡＣ２０２−１と同様にして、ＤＩＭＭ２０３−２内の対応する物理ランクの対応するバンクにライトコマンドを発行し、ライトデータを書き込む。
【００２１】
これにより、ＤＩＭＭ２０３−１及びＤＩＭＭ２０３−２内の２つの物理ランクのペアに、ライトデータが書き込まれる。図１のメモリミラー構成と同様に、ライトデータにはＥＣＣが付加される。
【００２２】
インターコネクト部２０１は、リクエスト元からリードリクエストを受信すると、ライトリクエストの場合と同様に、そのリードリクエストをＭＡＣ２０２−１及びＭＡＣ２０２−２の両方へ送信する。
【００２３】
ＭＡＣ２０２−１は、リードリクエストに含まれる論理ランクの識別情報とバンク識別情報とに基づいて、ＤＩＭＭ２０３−１内の対応する物理ランクの対応するバンクにリードコマンドを発行する。そして、ＭＡＣ２０２−１は、そのバンクからデータを読み出し、リードデータをインターコネクト部２０１へ転送する。ＭＡＣ２０２−２も、ＭＡＣ２０２−１と同様にして、ＤＩＭＭ２０３−２内の対応する物理ランクの対応するバンクにリードコマンドを発行し、そのバンクからデータを読み出し、リードデータをインターコネクト部２０１へ転送する。
【００２４】
インターコネクト部２０１は、ＭＡＣ２０２−１から受信したリードデータとＭＡＣ２０２−２から受信したリードデータを比較し、両者が一致する場合は、そのリードデータをリクエスト元へ転送する。一方、両者が一致しない場合、インターコネクト部２０１は、ハードウェアの故障と判断して動作を停止する。また、いずれか一方のリードデータに訂正不可能なエラーが発生している場合、インターコネクト部２０１は、もう一方のリードデータをリクエスト元へ転送する。これにより、ＤＩＭＭ２０３−１及びＤＩＭＭ２０３−２に格納されたデータの信頼性が確保される。
【００２５】
複数のランクを通常系及び退避系として制御し、各々に同一データを書き込み、通常系から読み出したデータのエラーを検出した場合に退避系に切り替えるように構成したメモリミラーリングも知られている（例えば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【００２６】
【特許文献１】特開２０１０−１０２６４０号公報
【発明の概要】
【発明が解決しようとする課題】
【００２７】
上述した従来のメモリミラー構成には、以下のような問題がある。
単一のＭＡＣを用いたメモリミラー構成では、ＭＡＣは、複数のリードリクエストを受信した場合、訂正不可能なエラーが発生しない限り、一方の物理ランクにアクセスし続ける。２つのＭＡＣを用いたメモリミラー構成では、インターコネクト部は、複数のリードリクエストを受信した場合、常に両方のＭＡＣへリードリクエストを送信する。そして、両方のＭＡＣが、それぞれに接続された物理ランクにアクセスする。
【００２８】
また、いずれのメモリミラー構成においても、クローズドページ方式のメモリアクセスでは、同一のバンクに連続してアクセスする際に、ＤＩＭＭのｔＲＣという制約を満足する必要がある。ｔＲＣとは、ＭＡＣからＤＩＭＭのバンクへアクティブコマンドを発行した後、同一のバンクへ再びアクティブコマンドを発行するまでの時間間隔を規定する制約である。オープンページ方式でも、同一バンクへのメモリアクセスにおいて連続してページミスが発生する場合は、ｔＲＣの制約を満足する必要がある。
【００２９】
このように、同一のバンクへのリードアクセスにおいては、ｔＲＣの制約を受けるため、アクティブコマンドの発行間隔が長くなり、バスの利用効率が低下するという問題がある。
【００３０】
なお、かかる問題は、複数の物理ランクに分割されたＤＩＭＭを含む情報処理装置に限らず、物理ランクとは異なる複数の動作単位に分割されたメモリを含む情報処理装置においても生ずるものである。
【００３１】
１つの側面において、本発明は、メモリミラー構成において同一のバンク識別情報に基づくリードアクセスが連続して発生する場合に、バスの利用効率を向上させることを目的とする。
【課題を解決するための手段】
【００３２】
１つの案では、メモリ制御装置は、受信手段、決定手段、及び制御手段を備え、複数の動作単位に分割されたメモリへのアクセスを制御する。上記複数の動作単位のうち第１の動作単位と第２の動作単位がメモリミラーを構成する。
【００３３】
受信手段は、第１の動作単位に含まれる第１のバンクと第２の動作単位に含まれる第２のバンクの両方に対応するバンク識別情報を含む複数のリードリクエストを受信する。
決定手段は、上記複数のリードリクエストに基づく複数のリードアクセスが第１の動作単位と第２の動作単位に対して交互に行われるように、各リードアクセスのアクセス対象を決定する。
【００３４】
制御手段は、各リードアクセスが決定されたアクセス対象の動作単位に対して行われるように、各リードリクエストを制御する。
【発明の効果】
【００３５】
実施形態のメモリ制御装置によれば、メモリミラー構成において同一のバンク識別情報に基づくリードアクセスが連続して発生する場合に、バスの利用効率を向上させることができる。
【図面の簡単な説明】
【００３６】
【図１】従来の単一のＭＡＣを用いたメモリミラー構成を示す図である。
【図２】従来の２つのＭＡＣを用いたメモリミラー構成を示す図である。
【図３】クローズドページ方式における第１のコマンド発行間隔を示す図である。
【図４】クローズドページ方式における第２のコマンド発行間隔を示す図である。
【図５】メモリ制御装置の構成図である。
【図６】第１のメモリアクセス制御のフローチャートである。
【図７】サーバの構成図である。
【図８】単一のＭＡＣを用いたメモリミラー構成の実施形態を示す図である。
【図９】アドレスデコーダの構成図である。
【図１０】第２のメモリアクセス制御のフローチャートである。
【図１１】２つのＭＡＣを用いたメモリミラー構成の実施形態を示す図である。
【図１２】インターコネクト部の構成図である。
【図１３】第３のメモリアクセス制御のフローチャートである。
【図１４】クローズドページ方式における第３のコマンド発行間隔を示す図である。
【発明を実施するための形態】
【００３７】
以下、図面を参照しながら、実施形態を詳細に説明する。
単一のＭＡＣを用いた場合と２つのＭＡＣを用いた場合のいずれのメモリミラー構成においても、クローズドページ方式のメモリアクセスでは、同一のバンクに連続してアクセスする際に、ＤＩＭＭのｔＲＣという制約を満足する必要がある。ｔＲＣとは、ＭＡＣからＤＩＭＭのバンクへアクティブコマンドを発行した後、同一のバンクへ再びアクティブコマンドを発行するまでの時間間隔を規定する制約である。オープンページ方式でも、同一バンクへのメモリアクセスにおいて連続してページミスが発生する場合は、ｔＲＣの制約を満足する必要がある。
【００３８】
図３は、クローズドページ方式で異なるバンクへのリードアクセスを行った場合のコマンド発行間隔を示している。図３の「ＤＩＭＭクロック」は、ＤＩＭＭの動作クロック信号を表し、「コマンド」は、ＭＡＣからＤＩＭＭへ発行されるコマンドを表す。“ＡＣＴ”は、アクティブコマンドを表し、“ＲＤＡ”は、オートプリチャージを伴うリードコマンドを表す。
【００３９】
「物理ランクＩＤ」は、ＭＡＣからＤＩＭＭへ出力される物理ランクの識別情報を表し、「バンクＩＤ」は、バンク識別情報を表す。「データ」は、物理ランクＩＤが示す物理ランク内の、バンクＩＤに対応するバンクから読み出されたリードデータを表す。
【００４０】
この場合、アクティブコマンド“ＡＣＴ”は、ｔＲＣの制約を受けることなく短い時間間隔で、バンクＩＤ“Ｂ０”〜“Ｂ４”に対応するそれぞれのバンクへ発行されている。
次に、図４は、クローズドページ方式で同一のバンクへのリードアクセスを連続して行った場合のコマンド発行間隔を示している。この場合、アクティブコマンド“ＡＣＴ”は、ｔＲＣにより規定される時間間隔で、バンクＩＤ“Ｂ０”に対応する特定のバンクへ発行されている。このように、同一のバンクへのリードアクセスにおいては、ｔＲＣの制約を受けるため、アクティブコマンドの発行間隔が長くなり、ランダムアクセスサイクルが長くなるという問題がある。
【００４１】
例えば、最近のDouble Data Rate 3 SDRAM（ＤＤＲ３  ＳＤＲＡＭ）では、ｔＲＣがＤＩＭＭクロックに換算して３０サイクル程度となっている。したがって、同一のバンクに連続してアクセスする際には、アクティブコマンドの発行間隔が３０サイクル程度となる。１回のアクセスでは４サイクルの間データバスが占有されるため、３４サイクルのうち４サイクルしかデータバスが利用されないことになる。このため、クローズドページ方式ですべてのアクセスが同一バンクに対するアクセスである場合を想定すると、バスの利用効率は１／８程度に低下してしまう。
【００４２】
そこで、メモリミラー構成において同一のバンク識別情報に基づくリードアクセスが連続して発生する場合に、バスの利用効率を向上させることが望まれる。
【００４３】
図５は、実施形態のメモリ制御装置５０１の構成例を示している。図６は、図５のメモリ制御装置５０１が行うメモリアクセス制御の例を示すフローチャートである。
【００４４】
図５のメモリ制御装置５０１は、受信部５１１、決定部５１２、及び制御部５１３を備え、複数の動作単位に分割されたメモリへのアクセスを制御する。上記複数の動作単位のうち第１の動作単位と第２の動作単位がメモリミラーを構成する。
【００４５】
受信部５１１は、第１の動作単位に含まれる第１のバンクと第２の動作単位に含まれる第２のバンクの両方に対応するバンク識別情報を含む複数のリードリクエストを受信する（ステップ６０１）。
【００４６】
決定部５１２は、上記複数のリードリクエストに基づく複数のリードアクセスが第１の動作単位と第２の動作単位に対して交互に行われるように、各リードアクセスのアクセス対象を決定する（ステップ６０２）。
【００４７】
制御部５１３は、各リードアクセスが決定されたアクセス対象の動作単位に対して行われるように、各リードリクエストを制御する（ステップ６０３）。
【００４８】
このようなメモリ制御装置５０１によれば、メモリミラー構成において同一のバンク識別情報に基づくリードアクセスが連続して発生する場合に、バスの利用効率を向上させることができる。
【００４９】
図７は、図５のメモリ制御装置５０１を含む情報処理装置（コンピュータ）であるサーバの構成例を示している。図７のサーバは、中央処理装置（Central Processing Unit，ＣＰＵ）モジュール７０１−１〜ＣＰＵモジュール７０１−４と入出力（Input Output，ＩＯ）コントローラ７０２−１及びＩＯコントローラ７０２−２を含む。
【００５０】
図７のサーバは、ＤＩＭＭ７０３−１〜ＤＩＭＭ７０３−Ｋ（Ｋは正の整数）、ＤＩＭＭ７０４−１〜ＤＩＭＭ７０４−Ｋ、ＤＩＭＭ７０５−１〜ＤＩＭＭ７０５−Ｋ、及びＤＩＭＭ７０６−１〜ＤＩＭＭ７０６−Ｋも含む。各ＤＩＭＭ７０３−ｉ（ｉ＝１〜Ｋ）は、１つ以上のＤＩＭＭを表している。ＤＩＭＭ７０４−ｉ、ＤＩＭＭ７０５−ｉ、及びＤＩＭＭ７０６−ｉについても同様である。
【００５１】
図７のサーバは、デバイス７０７−１〜デバイス７０７−３及びデバイス７０８−１〜デバイス７０８−３も含む。デバイス７０７−１〜デバイス７０７−３及びデバイス７０８−１〜デバイス７０８−３は、例えば、ハードディスクドライブ、ＩＯデバイス等である。
【００５２】
ＣＰＵモジュール７０１−１は、ＣＰＵ（プロセッサ）７１１−１〜ＣＰＵ７１１−Ｍ（Ｍは正の整数）、ルータ７１２−１、ルータ７１２−２、システムコントローラ７１３、及びＭＡＣ７１４−１〜ＭＡＣ７１４−Ｋを含む。システムコントローラ７１３は、Last Level Cache（ＬＬＣ）を含む。ＭＡＣ７１４−１〜ＭＡＣ７１４−Ｋには、ＤＩＭＭ７０３−１〜ＤＩＭＭ７０３−Ｋがそれぞれ接続されている。
【００５３】
ＣＰＵモジュール７０１−２は、ＣＰＵ７２１−１〜ＣＰＵ７２１−Ｍ、ルータ７２２−１、ルータ７２２−２、システムコントローラ７２３、及びＭＡＣ７２４−１〜ＭＡＣ７２４−Ｋを含む。システムコントローラ７２３はＬＬＣを含む。ＭＡＣ７２４−１〜ＭＡＣ７２４−Ｋには、ＤＩＭＭ７０４−１〜ＤＩＭＭ７０４−Ｋがそれぞれ接続されている。
【００５４】
ＣＰＵモジュール７０１−３は、ＣＰＵ７３１−１〜ＣＰＵ７３１−Ｍ、ルータ７３２−１、ルータ７３２−２、システムコントローラ７３３、及びＭＡＣ７３４−１〜ＭＡＣ７３４−Ｋを含む。システムコントローラ７３３はＬＬＣを含む。ＭＡＣ７３４−１〜ＭＡＣ７３４−Ｋには、ＤＩＭＭ７０５−１〜ＤＩＭＭ７０５−Ｋがそれぞれ接続されている。
【００５５】
ＣＰＵモジュール７０１−４は、ＣＰＵ７４１−１〜ＣＰＵ７４１−Ｍ、ルータ７４２−１、ルータ７４２−２、システムコントローラ７４３、及びＭＡＣ７４４−１〜ＭＡＣ７４４−Ｋを含む。システムコントローラ７４３はＬＬＣを含む。ＭＡＣ７４４−１〜ＭＡＣ７４４−Ｋには、ＤＩＭＭ７０６−１〜ＤＩＭＭ７０６−Ｋがそれぞれ接続されている。
【００５６】
ＩＯコントローラ７０２−１は、直接メモリアクセスコントローラ（Direct Memory Access Controller，ＤＭＡＣ）７５１−１〜ＤＭＡＣ７５１−Ｌ（Ｌは正の整数）及びシステムコントローラ７５２を含む。ＩＯコントローラ７０２−１は、インタフェース７５３−１〜インタフェース７５３−３も含む。インタフェース７５３−１〜インタフェース７５３−３には、デバイス７０７−１〜デバイス７０７−３がそれぞれ接続されている。
【００５７】
ＩＯコントローラ７０２−２は、ＤＭＡＣ７６１−１〜ＤＭＡＣ７６１−Ｌ、システムコントローラ７６２、及びインタフェース７６３−１〜インタフェース７６３−３を含む。インタフェース７６３−１〜インタフェース７６３−３には、デバイス７０８−１〜デバイス７０８−３がそれぞれ接続されている。
【００５８】
ルータ７１２−２、ルータ７２２−２、ルータ７３２−１、及びルータ７４２−１は相互に接続されており、ＣＰＵモジュール７０１−１〜ＣＰＵモジュール７０１−４は、相互に通信することができる。また、ルータ７３２−２とシステムコントローラ７５２は接続されており、ＣＰＵモジュール７０１−３とＩＯコントローラ７０２−１は、相互に通信することができる。同様に、ルータ７４２−２とシステムコントローラ７６２は接続されており、ＣＰＵモジュール７０１−４とＩＯコントローラ７０２−２は、相互に通信することができる。
【００５９】
単一のＭＡＣを用いたメモリミラー構成において、ＭＡＣ７１４−ｉ、ＭＡＣ７２４−ｉ、ＭＡＣ７３４−ｉ、及びＭＡＣ７４４−ｉ（ｉ＝１〜Ｋ）の各々は、図５のメモリ制御装置５０１に対応する。各ＭＡＣは、例えば、次のようなメモリアクセスリクエストを受信し、ＤＩＭＭへのアクセスを制御する。
（１）同一ＣＰＵモジュール内のＣＰＵをリクエスト元とするメモリアクセスリクエスト
（２）他のＣＰＵモジュール内のＣＰＵをリクエスト元とするメモリアクセスリクエスト
（３）ＩＯコントローラ内のＤＭＡＣをリクエスト元とするメモリアクセスリクエスト
例えば、ＣＰＵモジュール７０１−１内のＭＡＣ７１４−１は、次のようなメモリアクセスリクエストを受信する場合がある。
（１）ＣＰＵモジュール７０１−２内のＣＰＵ７２１−１〜７２１−Ｍからのメモリアクセスリクエスト
（２）ＣＰＵモジュール７０１−３内のＣＰＵ７３１−１〜７３１−Ｍからのメモリアクセスリクエスト
（３）ＣＰＵモジュール７０１−４内のＣＰＵ７４１−１〜７４１−Ｍからのメモリアクセスリクエスト
（４）ＩＯコントローラ７０２−１内のＤＭＡＣ７５１−１〜ＤＭＡＣ７５１−Ｌからのメモリアクセスリクエスト
（５）ＩＯコントローラ７０２−２内のＤＭＡＣ７６１−１〜ＤＭＡＣ７６１−Ｌからのメモリアクセスリクエスト
【００６０】
なお、ＣＰＵモジュールの数は４個に限られるものではなく、１以上の整数であればよい。ＩＯコントローラの数は２個に限られるものではなく、１以上の整数であればよい。また、ＩＯコントローラに接続されるデバイスの数は３個に限られるものではなく、１以上の整数であればよい。
【００６１】
次に、図８から図１０までを参照しながら、図７のサーバにおいて単一のＭＡＣを用いたメモリミラー構成を採用した場合のＭＡＣの構成及び動作について説明する。
図８のメモリミラー構成は、ＭＡＣ８０１とＤＩＭＭ８０２を含む。ＭＡＣ８０１は、図７のＭＡＣ７１４−ｉ、ＭＡＣ７２４−ｉ、ＭＡＣ７３４−ｉ、及びＭＡＣ７４４−ｉ（ｉ＝１〜Ｋ）の各々に対応する。ＤＩＭＭ８０２は、図７のＤＩＭＭ７０３−ｉ、ＤＩＭＭ７０４−ｉ、ＤＩＭＭ７０５−ｉ、及びＤＩＭＭ７０６−ｉ（ｉ＝１〜Ｋ）の各々に対応する。
【００６２】
ＭＡＣ８０１は、リクエストキュー８１１、アドレスデコーダ８１２、ビジーチェック部８１３、リクエスト選択部８１４、コマンド生成部８１５、及びコマンド発行部８１６を含む。ＭＡＣ８０１は、ライトデータ受信部８１７、誤り訂正符号（Error Correcting Code，ＥＣＣ）生成部８１８、ライトデータ出力部８１９、リードデータ出力部８２０、ＥＣＣチェック部８２１、リードデータ受信部８２２、及びリクエスト生成部８２３も含む。
【００６３】
ＤＩＭＭ８０２は、物理ランク８３１−１〜物理ランク８３１−４を含む。このうち、物理ランク８３１−１と物理ランク８３１−２はメモリミラーを構成する１つのペアであり、物理ランク８３１−３と物理ランク８３１−４はメモリミラーを構成するもう１つのペアである。
【００６４】
物理ランク８３１−１は、バンク８３２−１〜バンク８３２−Ｎ（Ｎは１以上の整数）を含み、物理ランク８３１−２〜物理ランク８３１−４も、物理ランク８３１−１と同様にＮ個のバンクを含む。なお、物理ランクの数は４個に限られるものではなく、２以上の偶数であればよい。
【００６５】
図９は、図８のアドレスデコーダ８１２の構成例を示している。図９のアドレスデコーダ８１２は、デコード部９０１、ランク指定部９０２、ランクテーブル９０３、及び選択部９０４を含む。
【００６６】
デコード部９０１は、リクエスト元からのメモリアクセスリクエストに含まれるアドレスをデコードし、カラムＩＤ、ロウＩＤ、バンクＩＤ、及び論理ランクＩＤを生成する。カラムＩＤ、ロウＩＤ、バンクＩＤ、及び論理ランクＩＤは、それぞれ、カラム、ロウ、バンク、及び論理ランクの識別情報である。そして、デコード部９０１は、バンクＩＤをランクテーブル９０３へ出力し、論理ランクＩＤをランク指定部９０２及びランクテーブル９０３へ出力する。
【００６７】
ランク指定部９０２は、論理ランクＩＤに対応するペアの２つの物理ランクの識別情報である２つの物理ランクＩＤを生成し、それらの物理ランクＩＤを選択部９０４へ出力する。
【００６８】
ランクテーブル９０３は、バンクＩＤ及び論理ランクＩＤの組み合わせ毎にエントリを格納している。各エントリには、物理ランクＩＤであるＰＲと更新制御情報ＩＭが含まれる。“ＬＲ０”は、物理ランク８３１−１と物理ランク８３１−２のペアに対応する論理ランクＩＤであり、“ＬＲ１”は、物理ランク８３１−３と物理ランク８３１−４のペアに対応する論理ランクＩＤである。“Ｂ０”〜“ＢＮ−１”は、各物理ランク８３１−ｉ（ｉ＝１〜４）内のＮ個のバンクのバンク識別情報である。
【００６９】
ＰＲは、論理ランクＩＤに対応するペアの２つの物理ランクのいずれか一方の物理ランクＩＤであり、リードアクセスにおけるアクセス先の物理ランクを示す。ランクテーブル９０３は、デコード部９０１から出力されるバンクＩＤ及び論理ランクＩＤの組み合わせに対応するエントリの物理ランクＩＤを、選択部９０４へ出力する。
【００７０】
ランクテーブル９０３のＰＲは、バンクＩＤ及び論理ランクＩＤの同じ組み合わせのリードアクセスが行われる度に、ペアを構成するもう一方の物理ランクの物理ランクＩＤに更新される。更新制御情報ＩＭは、ＰＲの更新を許可するか否かを示す情報であり、リードデータに訂正不可能なエラーが発生しない限り、更新を許可することを示している。
【００７１】
一方、リードアクセスにおいてリードデータに訂正不可能なエラーが発生すると、そのバンクＩＤ及び論理ランクＩＤの組み合わせに対応するＰＲが、エラーが発生した物理ランクとペアを構成するもう一方の物理ランクの物理ランクＩＤに固定される。このとき、今後ＰＲが更新されないように、更新制御情報ＩＭが更新を禁止する情報に変更される。
【００７２】
選択部９０４は、リクエスト元からのメモリアクセスリクエストに含まれるライトフラグがライトアクセスを示しているとき、ランク指定部９０２からの２つの物理ランクＩＤを選択して出力する。一方、ライトフラグがライトアクセスを示していないとき、すなわち、リードアクセスを示しているとき、ランクテーブル９０３からの物理ランクＩＤを選択して出力する。
【００７３】
図１０は、図８のＭＡＣ８０１によるメモリアクセス制御の例を示すフローチャートである。
まず、リクエストキュー８１１は、リクエスト元からのメモリアクセスリクエストを受信する（ステップ１００１）。そして、アドレスデコーダ８１２は、受信したメモリアクセスリクエストに含まれるアドレスをデコードして、ＤＩＭＭ８０２をアクセスするためのアクセス情報を生成する（ステップ１００２）。このアクセス情報は、カラムＩＤ、ロウＩＤ、バンクＩＤ、及び物理ランクＩＤを含む。アクセス情報は、ライトアクセスの場合は２つの物理ランクＩＤを含み、リードアクセスの場合は１つの物理ランクＩＤを含む。
【００７４】
次に、ビジーチェック部８１３は、ＤＩＭＭ８０２がビジーか否かをチェックする（ステップ１００３）。そして、リクエスト選択部８１４は、ＤＩＭＭ８０２がビジーでないときに、リクエストキュー８１１の複数のメモリアクセスリクエストから最も優先度の高いメモリアクセスリクエストを選択する（ステップ１００４）。リクエスト選択部８１４は、選択したメモリアクセスリクエストに含まれるライトフラグに基づいて、ライトリクエスト又はリードリクエストのいずれであるかを判定する（ステップ１００５）。
【００７５】
メモリアクセスリクエストがライトリクエストである場合（ステップ１００５，Ｙｅｓ）、リクエスト選択部８１４は、リクエスト元にライトデータリクエストを送信する（ステップ１０１０）。そして、リクエスト元はライトデータをＭＡＣ８０１へ送信する（ステップ１０１１）。
【００７６】
ライトデータ受信部８１７は、ライトデータリクエストを送信してから所定サイクル後に、リクエスト元からのライトデータを受信する（ステップ１０１２）。ＥＣＣ生成部８１８は、ライトデータのＥＣＣを生成し（ステップ１０１３）、ライトデータ出力部８１９は、ＥＣＣが付加されたライトデータをＤＩＭＭ８０２へ出力する（ステップ１０１４）。
【００７７】
コマンド生成部８１５は、ＤＩＭＭ８０２をアクセスするためのライトコマンドを生成し（ステップ１００６）、コマンド発行部８１６は、ライトコマンドをＤＩＭＭ８０２に発行する（ステップ１００７）。このとき、コマンド発行部８１６は、アクセス情報もＤＩＭＭ８０２へ出力する。
【００７８】
ＤＩＭＭ８０２は、コマンド発行部８１６からライトコマンド及びアクセス情報を受信し（ステップ１００８）、ライトデータ出力部８１９からライトデータを受信する（ステップ１００９）。そして、ＤＩＭＭ８０２は、アクセス情報が示すアクセス先にライトデータを格納する。
【００７９】
一方、メモリアクセスリクエストがリードリクエストである場合（ステップ１００５，Ｎｏ）、リクエスト選択部８１４は、リードリクエストに基づいてリードアクセスを行うことをアドレスデコーダ８１２に通知する。
【００８０】
この通知に基づいて、アドレスデコーダ８１２は、ランクテーブル９０３のエントリのうち、デコード部９０１から出力されたバンクＩＤ及び論理ランクＩＤの組み合わせに対応するエントリを参照する。そして、そのエントリの更新制御情報ＩＭが更新許可を示している場合、アドレスデコーダ８１２は、そのエントリのＰＲを、ペアを構成するもう一方の物理ランクの物理ランクＩＤに更新する。これにより、今回のリードアクセスのアクセス先とは異なる物理ランクが、バンクＩＤ及び論理ランクＩＤの同じ組み合わせに対する次回のリードアクセスのアクセス先に指定される。
【００８１】
このように、バンクＩＤ及び論理ランクＩＤの同じ組み合わせに対するリードアクセスが行われる度に、アクセス先の物理ランクＩＤを更新することで、メモリミラーを構成する２つの物理ランクに対して交互にリードアクセスが行われる。したがって、メモリミラー構成において同一のバンクＩＤに基づくリードアクセスが連続して発生する場合に、バスの利用効率を向上させることができる。
【００８２】
なお、更新制御情報ＩＭが更新禁止を示している場合は、アドレスデコーダ８１２は、そのエントリのＰＲを更新しない。
【００８３】
次に、コマンド生成部８１５は、ＤＩＭＭ８０２をアクセスするためのリードコマンドを生成し（ステップ１０１５）、コマンド発行部８１６は、リードコマンドをＤＩＭＭ８０２に発行する（ステップ１０１６）。このとき、コマンド発行部８１６は、アクセス情報もＤＩＭＭ８０２へ出力する。
【００８４】
ＤＩＭＭ８０２は、コマンド発行部８１６からリードコマンド及びアクセス情報を受信し（ステップ１０１７）、所定サイクル後にリードデータをＭＡＣ８０１へ出力する（ステップ１０１８）。
【００８５】
リードデータ受信部８２２は、ＤＩＭＭ８０２からリードデータ受信する（ステップ１０１９）。そして、ＥＣＣチェック部８２１は、リードデータに付加されたＥＣＣに基づいて、リードデータが正しいか否かをチェックし（ステップ１０２０）、エラーの有無を判定する（ステップ１０２１）。
【００８６】
リードデータにエラーがない場合（ステップ１０２１，Ｎｏ）、リードデータ出力部８２０は、リードデータをリクエスト元へ送信する（ステップ１０２２）。
【００８７】
一方、リードデータにエラーがある場合（ステップ１０２１，Ｙｅｓ）、ＥＣＣチェック部８２１は、そのエラーが訂正可能であるか否かをチェックする（ステップ１０２３）。そして、エラーが訂正可能である場合（ステップ１０２３，Ｙｅｓ）、ＥＣＣチェック部８２１は、ＥＣＣを用いてエラーを訂正し（ステップ１０２４）、リードデータ出力部８２０は、訂正したリードデータをリクエスト元へ送信する（ステップ１０２２）。
【００８８】
エラーが訂正不可能である場合（ステップ１０２３，Ｎｏ）、ＥＣＣチェック部８２１は、リードリクエストがリトライリクエストであるか否かをチェックする（ステップ１０２５）。リトライリクエストとは、リードデータに訂正不可能なエラーが発生した場合に、ペアを構成するもう１つの物理ランクへのリードアクセスを要求するリクエストである。
【００８９】
リードリクエストがリトライリクエストではない場合（ステップ１０２５，Ｎｏ）、ＥＣＣチェック部８２１は、アドレスデコーダ８１２及びリクエスト生成部８２３へ、リードデータに訂正不可能なエラーが発生したことを通知する。
【００９０】
この通知に基づいて、アドレスデコーダ８１２は、ランクテーブル９０３のエントリのうち、デコード部９０１から出力されたバンクＩＤ及び論理ランクＩＤの組み合わせに対応するエントリを参照する。そして、アドレスデコーダ８１２は、そのエントリの更新制御情報ＩＭを、更新禁止を示す情報に変更する。これにより、そのエントリのＰＲが、エラーが発生した物理ランクとペアを構成するもう一方の物理ランクの物理ランクＩＤに固定され、エラーが発生した物理ランクの使用が禁止される。
【００９１】
また、リクエスト生成部８２３は、訂正不可能なエラーが発生したことを示す通知に基づいて、リードアクセスのリトライリクエストをリクエストキュー８１１へ出力する（ステップ１０２６）。これにより、ステップ１００１以降の動作が再開され、使用が禁止された物理ランクとは異なる、もう一方の物理ランクへのリードアクセスが行われる。
【００９２】
リードリクエストがリトライリクエストである場合（ステップ１０２５，Ｙｅｓ）、ＥＣＣチェック部８２１は、エラー処理を行う（ステップ１０２７）。この場合、リードリクエストの論理ランクＩＤに対応する２つの物理ランクの両方で訂正不可能なエラーが発生したため、ＭＡＣ８０１は動作を停止する。
【００９３】
図８及び図９に示したＭＡＣ８０１及びアドレスでコーダ８１２の構成は一例に過ぎず、ＭＡＣ８０１が行う処理に応じて一部の構成要素を省略又は変更してもよい。例えば、ＥＣＣに基づくリードデータのチェックを行わない場合は、図８のＥＣＣ生成部８１８、ＥＣＣチェック部８２１、及びリクエスト生成部８２３を省略することができる。
【００９４】
また、図１０のフローチャートは一例に過ぎず、ＭＡＣ８０１の構成や条件に応じて一部の処理を省略又は変更してもよい。例えば、ＥＣＣに基づくリードデータのチェックを行わない場合は、図１０のステップ１０１３、ステップ１０２０、ステップ１０２１、ステップ１０２３〜ステップ１０２７の処理を省略することが可能である。
【００９５】
次に、図１１から図１３までを参照しながら、図７のサーバにおいて２つのＭＡＣを用いたメモリミラー構成を採用した場合のインターコネクト部の構成及び動作について説明する。
【００９６】
図１１のメモリミラー構成は、インターコネクト部１１０１、ＭＡＣ１１０２−１、ＭＡＣ１１０２−２、ＤＩＭＭ１１０３−１、及びＤＩＭＭ１１０３−２を含む。ＭＡＣ１１０２−１及びＭＡＣ１１０２−２は、以下のいずれかの２つのＭＡＣに対応する。
（１）図７のＭＡＣ７１４−１〜ＭＡＣ７１４−Ｋのうちの２つのＭＡＣ
（２）図７のＭＡＣ７２４−１〜ＭＡＣ７２４−Ｋのうちの２つのＭＡＣ
（３）図７のＭＡＣ７３４−１〜ＭＡＣ７３４−Ｋのうちの２つのＭＡＣ
（４）図７のＭＡＣ７４４−１〜ＭＡＣ７４４−Ｋのうちの２つのＭＡＣ
【００９７】
また、ＤＩＭＭ１１０３−１及びＤＩＭＭ１１０３−２は、以下のいずれかの２つのＤＩＭＭに対応する。
（１）図７のＤＩＭＭ７０３−１〜７０３−Ｋのうちの２つのＤＩＭＭ
（２）図７のＤＩＭＭ７０４−１〜７０４−Ｋのうちの２つのＤＩＭＭ
（３）図７のＤＩＭＭ７０５−１〜７０５−Ｋのうちの２つのＤＩＭＭ
（４）図７のＤＩＭＭ７０６−１〜７０６−Ｋのうちの２つのＤＩＭＭ
【００９８】
この場合、インターコネクト部１１０１は、図７のシステムコントローラ７１３、システムコントローラ７２３、システムコントローラ７３３、又はシステムコントローラ７４３内に設けられる。２つのＭＡＣを用いたメモリミラー構成において、インターコネクト部１１０１は、図５のメモリ制御装置５０１に対応する。
【００９９】
ＤＩＭＭ１１０３−１は、物理ランク１１１１−１〜物理ランク１１１１−４を含み、ＤＩＭＭ１１０３−２は、物理ランク１１２１−１〜物理ランク１１２１−４を含む。このうち、物理ランク１１１１−ｉ（ｉ＝１〜４）と物理ランク１１２１−ｉはメモリミラーを構成する１つのペアである。この場合、ＭＡＣ１１０２−１とＭＡＣ１１０２−２も、メモリミラーを構成するペアとして動作する。
【０１００】
物理ランク１１１１−１は、バンク１１１２−１〜バンク１１１２−Ｎ（Ｎは１以上の整数）を含み、物理ランク１１１１−２〜物理ランク１１１１−４も、物理ランク１１１１−１と同様にＮ個のバンクを含む。物理ランク１１２１−１は、バンク１１２２−１〜バンク１１２２−Ｎを含み、物理ランク１１２１−２〜物理ランク１１２１−４も、物理ランク１１２１−１と同様にＮ個のバンクを含む。なお、各ＤＩＭＭ内の物理ランクの数は４個に限られるものではなく、１以上の整数であればよい。
【０１０１】
図１２は、図１１のインターコネクト部１１０１の構成例を示している。図１２のインターコネクト部１１０１は、デコード部１２０１、ＭＡＣ指定部１２０２、ＭＡＣテーブル１２０３、選択部１２０４、リクエスト出力部１２０５、リクエスト生成部１２０６、及びリードデータチェック部１２０７を含む。
【０１０２】
デコード部１２０１は、リクエスト元からのメモリアクセスリクエストに含まれるアドレスをデコードし、バンクＩＤ及び論理ランクＩＤを生成する。そして、デコード部１２０１は、バンクＩＤ及び論理ランクＩＤをＭＡＣテーブル１２０３へ出力する。
【０１０３】
ＭＡＣ指定部１２０２は、メモリミラーを構成するＭＡＣ１１０２−１及びＭＡＣ１１０２−２のＭＡＣ識別情報を生成し、それらのＭＡＣ識別情報を選択部１２０４へ出力する。ＭＡＣ１１０２−１のＭＡＣ識別情報はＭＡＣ０であり、ＭＡＣ１１０２−２のＭＡＣ識別情報はＭＡＣ１である。
【０１０４】
ＭＡＣテーブル１２０３は、バンクＩＤ及び論理ランクＩＤの組み合わせ毎にエントリを格納している。各エントリには、ＭＡＣ識別情報であるＰＭと更新制御情報ＩＭが含まれる。
【０１０５】
“ＬＲ０”は、物理ランク１１１１−１と物理ランク１１２１−１のペアに対応する論理ランクＩＤであり、“ＬＲ１”は、物理ランク１１１１−２と物理ランク１１２１−２のペアに対応する論理ランクＩＤである。“ＬＲ２”は、物理ランク１１１１−３と物理ランク１１２１−３のペアに対応する論理ランクＩＤであり、“ＬＲ３”は、物理ランク１１１１−４と物理ランク１１２１−４のペアに対応する論理ランクＩＤである。“Ｂ０”〜“ＢＮ−１”は、物理ランク１１１１−ｉ及び物理ランク１１２１−ｉ（ｉ＝１〜４）の各々に含まれるＮ個のバンクのバンク識別情報である。
【０１０６】
ＰＭは、ＭＡＣ１１０２−１又はＭＡＣ１１０２−２のいずれか一方のＭＡＣ識別情報であり、リードアクセスにおけるアクセス先のＭＡＣを示す。ＭＡＣテーブル１２０３は、デコード部１２０１から出力されるバンクＩＤ及び論理ランクＩＤの組み合わせに対応するエントリのＭＡＣ識別情報を、選択部１２０４へ出力する。
【０１０７】
ＭＡＣテーブル１２０３のＰＭは、バンクＩＤ及び論理ランクＩＤの同じ組み合わせのリードアクセスが行われる度に、ペアを構成するもう一方のＭＡＣのＭＡＣ識別情報に更新される。更新制御情報ＩＭは、ＰＭの更新を許可するか否かを示す情報であり、リードデータに訂正不可能なエラーが発生しない限り、更新を許可することを示している。
【０１０８】
選択部１２０４は、リクエスト元からのメモリアクセスリクエストに含まれるライトフラグがライトアクセスを示しているとき、ＭＡＣ指定部１２０２からの２つのＭＡＣ識別情報を選択して出力する。一方、ライトフラグがライトアクセスを示していないとき、すなわち、リードアクセスを示しているとき、ＭＡＣテーブル１２０３からのＭＡＣ識別情報を選択して出力する。
【０１０９】
リクエスト出力部１２０５は、リクエスト元からのメモリアクセスリクエストを、選択部１２０４から出力される１つ又は２つのＭＡＣ識別情報が示すＭＡＣへ出力する。したがって、ライトリクエストはＭＡＣ１１０２−１及びＭＡＣ１１０２−２の両方へ出力され、リードリクエストはＭＡＣ１１０２−１又はＭＡＣ１１０２−２のいずれか一方へ出力される。
【０１１０】
リードデータチェック部１２０７は、ＭＡＣ１１０２−１又はＭＡＣ１１０２−２から、リードデータとそのリードデータが正常か否かを示す判定情報とを受信する。リードデータが正常である場合とは、リードデータにエラーが発生しなかった場合、又は、リードデータに発生したエラーが訂正された場合に相当する。一方、リードデータが正常でない場合とは、リードデータに訂正不可能なエラーが発生した場合に相当する。
【０１１１】
受信した判定情報がリードデータが正常であることを示す場合、リードデータチェック部１２０７は、受信したリードデータをリクエスト元へ送信する。
【０１１２】
一方、受信した判定情報がリードデータが正常でないことを示す場合、リードデータチェック部１２０７は、ＭＡＣテーブル１２０３の対応するエントリの更新制御情報ＩＭを、更新を禁止する情報に変更する。これにより、そのエントリのＰＭが、エラーが発生した物理ランクとペアを構成するもう一方の物理ランクに接続されたＭＡＣのＭＡＣ識別情報に固定される。
【０１１３】
そして、リードデータチェック部１２０７は、リードデータが正常でないことをリクエスト生成部１２０６へ通知する。リクエスト生成部１２０６は、この通知に基づいて、リードアクセスのリトライリクエストを生成する。
【０１１４】
図１３は、図１１のインターコネクト部１１０１とＭＡＣ１１０２−１及びＭＡＣ１１０２−２によるメモリアクセス制御の例を示すフローチャートである。
【０１１５】
まず、インターコネクト部１１０１は、リクエスト元からのメモリアクセスリクエストを受信する（ステップ１３０１）。そして、デコード部１２０１は、受信したメモリアクセスリクエストに含まれるアドレスをデコードして、バンクＩＤ及び論理ランクＩＤを生成する。ＭＡＣテーブル１２０３は、生成されたバンクＩＤ及び論理ランクＩＤの組み合わせに対応するエントリのＭＡＣ識別情報を、選択部１２０４へ出力する。
【０１１６】
選択部１２０４は、受信したメモリアクセスリクエストに含まれるライトフラグに基づいて、ライトリクエスト又はリードリクエストのいずれであるかを判定する（ステップ１３０２）。
【０１１７】
メモリアクセスリクエストがライトリクエストである場合（ステップ１３０２，Ｙｅｓ）、選択部１２０４は、ＭＡＣ指定部１２０２から出力されるＭＡＣ１１０２−１及びＭＡＣ１１０２−２のＭＡＣ識別情報を、リクエスト出力部１２０５へ出力する。一方、メモリアクセスリクエストがリードリクエストである場合（ステップ１３０２，Ｎｏ）、選択部１２０４は、ＭＡＣテーブル１２０３から出力されるＭＡＣ識別情報を、リクエスト出力部１２０５へ出力する。
【０１１８】
メモリアクセスリクエストがライトリクエストである場合（ステップ１３０２，Ｙｅｓ）、リクエスト出力部１２０５は、そのライトリクエストをＭＡＣ１１０２−１及びＭＡＣ１１０２−２の両方へ出力する（ステップ１３０３）。
【０１１９】
ＭＡＣ１１０２−１は、リクエスト出力部１２０５からのライトリクエストを受信し（ステップ１３０６）、ライト処理を行う（ステップ１３０７）。ライト処理の手順は、図１０のステップ１００６〜ステップ１０１４と同様である。
【０１２０】
このライト処理において、ＭＡＣ１１０２−１は、リクエスト元にライトデータリクエストを送信し、リクエスト元からライトデータを受信する。次に、ＭＡＣ１１０２−１は、ライトデータのＥＣＣを生成し、ＥＣＣが付加されたライトデータをＤＩＭＭ１１０３−１へ出力する。そして、ＭＡＣ１１０２−１は、ライトコマンドを生成し、そのライトコマンドをＤＩＭＭ１１０３−１に発行する。ＤＩＭＭ１１０３−１は、ライトコマンドに基づいてライトデータを格納する。
【０１２１】
ＭＡＣ１１０２−２は、リクエスト出力部１２０５からのライトリクエストを受信し（ステップ１３１６）、ライト処理を行う（ステップ１３１７）。ライト処理の手順は、ステップ１３０７と同様である。
【０１２２】
一方、メモリアクセスリクエストがリードリクエストである場合（ステップ１３０２，Ｎｏ）、リクエスト出力部１２０５は、選択部１２０４から出力されるＭＡＣ識別情報に基づいてＭＡＣを選択する（ステップ１３０４）。このとき、リクエスト出力部１２０５は、ＭＡＣ識別情報がＭＡＣ１１０２−１又はＭＡＣ１１０２−２のいずれを示しているかをチェックする（ステップ１３０５）。
【０１２３】
ＭＡＣ識別情報がＭＡＣ１１０２−１を示している場合、リクエスト出力部１２０５は、リードリクエストをＭＡＣ１１０２−１へ出力する（ステップ１３０８）。ＭＡＣ１１０２−１は、リクエスト出力部１２０５からのリードリクエストを受信し（ステップ１３０９）、リード処理を行う（ステップ１３１０）。リード処理の手順は、図１０のステップ１０１５〜ステップ１０２１及びステップ１０２３〜ステップ１０２４と同様である。
【０１２４】
このリード処理において、ＭＡＣ１１０２−１は、リードコマンドを生成し、そのリードコマンドをＤＩＭＭ１１０３−１に発行する。ＤＩＭＭ１１０３−１は、リードコマンドに基づいてリードデータをＭＡＣ１１０２−１へ出力する。
【０１２５】
ＭＡＣ１１０２−１は、リードデータに付加されたＥＣＣに基づいて、リードデータのエラーの有無を判定する。リードデータにエラーがない場合、ＭＡＣ１１０２−１は、リードデータとそのリードデータが正常であることを示す判定情報とを、インターコネクト部１１０１へ出力する（ステップ１３１１）。
【０１２６】
一方、リードデータにエラーがある場合、ＭＡＣ１１０２−１は、そのエラーが訂正可能であるか否かをチェックし、エラーが訂正可能である場合、ＥＣＣを用いてエラーを訂正する。そして、ＭＡＣ１１０２−１は、訂正したリードデータとそのリードデータが正常であることを示す判定情報とを、インターコネクト部１１０１へ出力する（ステップ１３１１）。
【０１２７】
エラーが訂正不可能である場合、ＭＡＣ１１０２−１は、リードデータとそのリードデータが正常ではないことを示す判定情報とを、インターコネクト部１１０１へ出力する（ステップ１３１１）。
【０１２８】
ＭＡＣ識別情報がＭＡＣ１１０２−２を示している場合、リクエスト出力部１２０５は、リードリクエストをＭＡＣ１１０２−２へ出力する（ステップ１３１２）。ＭＡＣ１１０２−２は、リクエスト出力部１２０５からのリードリクエストを受信し（ステップ１３１３）、リード処理を行う（ステップ１３１４）。リード処理の手順は、ステップ１３１０と同様である。ＭＡＣ１１０２−２は、リードデータとそのリードデータが正常か否かを示す判定情報とを、インターコネクト部１１０１へ出力する（ステップ１３１５）。
【０１２９】
リクエスト出力部１２０５は、ＭＡＣ１１０２−１又はＭＡＣ１１０２−２のいずれかへリードリクエストを出力したとき、ＭＡＣテーブル１２０３のエントリのうち、デコード部１２０１から出力されたバンクＩＤ及び論理ランクＩＤの組み合わせに対応するエントリを参照する。そして、そのエントリの更新制御情報ＩＭが更新許可を示している場合、リクエスト出力部１２０５は、そのエントリのＰＭを、ペアを構成するもう一方の物理ランクに接続されたＭＡＣのＭＡＣ識別情報に更新する。これにより、今回のリードアクセスの出力先とは異なるＭＡＣが、バンクＩＤ及び論理ランクＩＤの同じ組み合わせに対する次回のリードアクセスの出力先に指定される。
【０１３０】
このように、バンクＩＤ及び論理ランクＩＤの同じ組み合わせに対するリードアクセスが行われる度に、出力先のＭＡＣ識別情報を更新することで、ペアを構成する２つのＭＡＣに対して交互にリードアクセスが出力される。これにより、メモリミラーを構成する２つの物理ランクに対して交互にリードアクセスが行われる。したがって、メモリミラー構成において同一のバンクＩＤに基づくリードアクセスが連続して発生する場合に、バスの利用効率を向上させることができる。
【０１３１】
なお、更新制御情報ＩＭが更新禁止を示している場合は、リクエスト出力部１２０５は、そのエントリのＰＲを更新しない。
【０１３２】
リードデータチェック部１２０７は、ＭＡＣ１１０２−１又はＭＡＣ１１０２−２から、リードデータと判定情報を受信し（ステップ１３１８）、受信した判定情報をチェックする（ステップ１３１９）。判定情報がリードデータが正常であることを示す場合（ステップ１３１９，Ｙｅｓ）、リードデータチェック部１２０７は、受信したリードデータをリクエスト元へ送信する（ステップ１３２０）。
【０１３３】
一方、判定情報がリードデータが正常でないことを示す場合、リードデータチェック部１２０７は、リードリクエストがリトライリクエストであるか否かをチェックする（ステップ１３２１）。
【０１３４】
リードリクエストがリトライリクエストではない場合（ステップ１３２１，Ｎｏ）、リードデータチェック部１２０７は、ＭＡＣテーブル１２０３のエントリのうち、デコード部１２０１から出力されたバンクＩＤ及び論理ランクＩＤの組み合わせに対応するエントリを参照する。そして、リードデータチェック部１２０７は、そのエントリの更新制御情報ＩＭを、更新禁止を示す情報に変更する。これにより、そのエントリのＰＭが、エラーが発生した物理ランクとペアを構成するもう一方の物理ランクに接続されたＭＡＣのＭＡＣ識別情報に固定され、エラーが発生した物理ランクに接続されたＭＡＣの使用が禁止される。
【０１３５】
そして、リードデータチェック部１２０７は、リードデータが正常でないことをリクエスト生成部１２０６へ通知する（ステップ１３０２）。リクエスト生成部１２０６は、この通知に基づいて、リードアクセスのリトライリクエストを生成する。これにより、ステップ１３０１以降の動作が再開され、使用が禁止されたＭＡＣとは異なる、もう一方のＭＡＣへのリードリクエストが出力される。
【０１３６】
リードリクエストがリトライリクエストである場合（ステップ１３２１，Ｙｅｓ）、リードデータチェック部１２０７は、エラー処理を行う（ステップ１３２３）。この場合、リードリクエストの論理ランクＩＤに対応する２つの物理ランクの両方で訂正不可能なエラーが発生したため、インターコネクト部１１０１は動作を停止する。
【０１３７】
図１２に示したインターコネクト部１１０１の構成は一例に過ぎず、インターコネクト部１１０１が行う処理に応じて一部の構成要素を省略又は変更してもよい。例えば、ＥＣＣに基づくリードデータのチェックを行わない場合は、図１２のリクエスト生成部１２０６及びリードデータチェック部１２０７を省略することができる。
【０１３８】
また、図１３のフローチャートは一例に過ぎず、インターコネクト部１１０１の構成や条件に応じて一部の処理を省略又は変更してもよい。例えば、ＥＣＣに基づくリードデータのチェックを行わない場合は、図１３のステップ１３１９及びステップ１３２１〜ステップ１３２３の処理を省略することが可能である。
【０１３９】
図１４は、図８及び図１１のメモリミラー構成において、クローズドページ方式で同一バンクへのリードアクセスを連続して行った場合のコマンド発行間隔を示している。“Ｒ０”及び“Ｒ１”は、メモリミラーを構成する２つの物理ランクの物理ランクＩＤである。
【０１４０】
この場合、アクティブコマンド“ＡＣＴ”は、ｔＲＣにより規定される時間間隔で、“Ｒ０”又は“Ｒ１”に対応する同一の物理ランク内の、バンクＩＤ“Ｂ０”に対応する特定のバンクへ発行されている。ただし、同一のバンクＩＤ“Ｂ０”を伴うアクティブコマンド“ＡＣＴ”が、“Ｒ０”に対応する物理ランクと“Ｒ１”に対応する物理ランクに対して交互に発行されている。
【０１４１】
このため、見かけ上、同一バンクへのアクティブコマンド“ＡＣＴ”を、ｔＲＣにより規定される時間間隔の約半分に１回発行することができ、図４の場合と比較して、バスの利用効率が約２倍に向上する。これにより、リードアクセスにおける見かけ上のランダムアクセスサイクルを約半分に短縮することができる。
【０１４２】
なお、オープンページ方式の場合も、図８及び図１１のメモリミラー構成によれば、同一バンクへのリードアクセスを連続して行う場合にバスの利用効率を向上させることができる。
【０１４３】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【符号の説明】
【０１４４】
１０１、２０２−１、２０２−２、７１４−１〜７１４−Ｋ、７２４−１〜７２４−Ｋ、７３４−１〜７３４−Ｋ、７４４−１〜７４４−Ｋ、８０１、１１０２−１、１１０２−２  ＭＡＣ
１０２、２０３−１、２０３−２、７０３−１〜７０３−Ｋ、７０４−１〜７０４−Ｋ、７０５−１〜７０５−Ｋ、７０６−１〜７０６−Ｋ、８０２、１１０３−１、１１０３−２  ＤＩＭＭ
１１１−１〜１１１−４、２１１−１〜２１１−４、２２１−１〜２２１−４、８３１−１〜８３１−４、１１１１−１〜１１１１−４、１１２１−１〜１１２１−４  物理ランク
１１２−１〜１１２−Ｎ、２１２−１〜２１２−Ｎ、２２２−１〜２２２−Ｎ、８３２−１〜８３２−Ｎ、１１１２−１〜１１１２−Ｎ、１１２２−１〜１１２２−Ｎ  バンク
２０１、１１０１  インターコネクト部
５０１  メモリ制御装置
５１１  受信部
５１２  決定部
５１３  制御部
７０１−１〜７０１−４  ＣＰＵモジュール
７０２−１、７０２−２  ＩＯコントローラ
７０７−１〜７０７−３、７０８−１〜７０８−３  デバイス
７１１−１〜７１１−Ｍ、７２１−１〜７２１−Ｍ、７３１−１〜７３１−Ｍ、７４１−１〜７４１−Ｍ  ＣＰＵ
７１２−１、７１２−２、７２２−１、７２２−２、７３２−１、７３２−２、７４２−１、７４２−２  ルータ
７１３、７２３、７３３、７４３、７５２、７６２  システムコントローラ
７５１−１〜７５１−Ｌ、７６１−１〜７６１−Ｌ  ＤＭＡＣ
７５３−１〜７５３−３、７６３−１〜７６３−３  インタフェース
８１１  リクエストキュー
８１２  アドレスデコーダ
８１３  ビジーチェック部
８１４  リクエスト選択部
８１５  コマンド生成部
８１６  コマンド発行部
８１７  ライトデータ受信部
８１８  ＥＣＣ生成部
８１９  ライトデータ出力部
８２０  リードデータ出力部
８２１  ＥＣＣチェック部
８２２  リードデータ受信部
８２３、１２０６  リクエスト生成部
９０１、１２０１  デコード部
９０２  ランク指定部
９０３  ランクテーブル
９０４、１２０４  選択部
１２０２  ＭＡＣ指定部
１２０３  ＭＡＣテーブル
１２０５  リクエスト出力部
１２０７  リードデータチェック部
【図１】
2014063299.tif 000003
【図２】
2014063299.tif 000004
【図３】
2014063299.tif 000005
【図４】
2014063299.tif 000006
【図５】
2014063299.tif 000007
【図６】
2014063299.tif 000008
【図７】
2014063299.tif 000009
【図８】
2014063299.tif 000010
【図９】
2014063299.tif 000011
【図１０】
2014063299.tif 000012
【図１１】
2014063299.tif 000013
【図１２】
2014063299.tif 000014
【図１３】
2014063299.tif 000015
【図１４】
2014063299.tif 000016