(57)【要約】  メモリ群１１４及びメモリ群１２１に含まれるメモリ数が変化した場合に、ファームウェア２０３が当該メモリ数の情報及びデータの経路に基づいて、最適なインタリーブ設定を決定し、最適なインタリーブ設定とアクセス制御回路１０９，１１６のインタリーブ設定とを比較し、データの分割数が異なるチャンネルを特定し、インタリーブ制御回路１０５が特定されたチャンネルに対応する部分の最適なインタリーブ設定を使ってアクセス制御回路１０９，１１６のインタリーブ設定の一部を変更し、インタリーブ設定が変更されたチャンネルに対応するデータのみをコピーする。
2012020505.tif 000002
【特許請求の範囲】
【請求項１】
データを第１の複数のメモリに分割して記憶する第１メモリ群と、前記データを第２の複数のメモリに分割して冗長に記憶する第２メモリ群とに接続するメモリ制御装置であって、
前記第１の複数のメモリに接続する複数のチャンネルを有し、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第１のインタリーブ設定に基づき、前記第１メモリ群にアクセスする第１の制御回路と、
前記第２の複数のメモリに接続する複数のチャンネルを有し、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第２のインタリーブ設定に基づき、前記第２メモリ群にアクセスする第２の制御回路と、
前記第１メモリ群及び前記第２メモリ群に含まれるメモリの個数が変化した場合に、変化後のメモリの個数に基づいて、第３のインタリーブ設定を決定する決定手段と、
前記第３のインタリーブ設定と前記第１及び第２のインタリーブ設定とを比較し、データの分割数が異なるチャンネルを特定する特定手段と、
前記特定されたチャンネルに対応する部分の第３のインタリーブ設定を使って前記第１及び第２のインタリーブ設定を変更する変更手段と、
前記第１のインタリーブ設定の変更に係るチャンネルに対応するメモリのデータを前記第２のインタリーブ設定の変更に係るチャンネルに対応するメモリにコピーし、前記第２のインタリーブ設定の変更に係るチャンネルに対応するメモリのデータを前記第１のインタリーブ設定の変更に係るチャンネルに対応するメモリにコピーするコピー手段と
を備えることを特徴とするメモリ制御装置。
【請求項２】
前記メモリ制御装置において、
前記決定手段は、前記第３のインタリーブ設定におけるデータの分割数を、ｍのｎ乗であり（ｍ，ｎ：０以上の整数）且つ前記第１メモリ群又は前記第２メモリ群に含まれるメモリの個数を超えない範囲で、最大値に設定することを特徴とする請求項１に記載のメモリ制御装置。
【請求項３】
前記メモリ制御装置において、
前記第１〜第３のインタリーブ設定は、いずれも前記複数のチャンネルの各々を識別するチャンネル番号と、各チャンネルが連続するデータのグループに属するか又は異なるデータのグループに属するかを識別するための番号とを含むことを特徴とする請求項１又は２に記載のメモリ制御装置。
【請求項４】
前記メモリ制御装置において、
前記変更手段が、前記特定されたチャンネルに対応する部分の第３のインタリーブ設定を使って前記第１のインタリーブ設定を変更した後に、前記コピー手段は、前記第２のインタリーブ設定の変更に係るチャンネルに対応するメモリのデータを前記第１のインタリーブ設定の変更に係るチャンネルに対応するメモリにコピーし、
前記変更手段が前記特定されたチャンネルに対応する部分の第３のインタリーブ設定を使って前記第２のインタリーブ設定を変更した後に、前記コピー手段は、前記第１のインタリーブ設定の変更に係るチャンネルに対応するメモリにコピーされたデータを前記第２のインタリーブ設定の変更に係るチャンネルに対応するメモリにコピーすることを特徴とする請求項１乃至３のいずれか１項に記載のメモリ制御装置。
【請求項５】
前記メモリ制御装置において、
前記コピー手段は、コピー終了時にデータのコピーが正常に終了したか否かを判定することを特徴とする請求項１乃至４のいずれか１項に記載のメモリ制御装置。
【請求項６】
前記メモリ制御装置は、
前記第１メモリ群及び前記第２メモリ群からのデータ読み出しを禁止する読出制御手段をさらに備え、
前記変更手段が前記特定されたチャンネルに対応する部分の第３のインタリーブ設定を使って前記第１のインタリーブ設定を変更する前に、前記読出制御手段は、前記第１メモリ群からのデータ読み出しを禁止し、前記変更手段が前記特定されたチャンネルに対応する部分の第３のインタリーブ設定を使って前記第２のインタリーブ設定を変更する前に、前記読出制御手段は、前記第２メモリ群からのデータ読み出しを禁止することを特徴とする請求項１乃至５のいずれか１項に記載のメモリ制御装置。
【請求項７】
データを第１の複数のメモリに分割して記憶する第１メモリ群と、前記データを第２の複数のメモリに分割して冗長に記憶する第２メモリ群と、前記第１及び第２のメモリ群に接続するメモリ制御装置と、前記メモリ制御装置を介して前記第１及び第２のメモリ群にデータを読み書きする演算処理装置とを有する情報処理装置であって、
前記メモリ制御装置は、
前記第１の複数のメモリに接続する複数のチャンネルを有し、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第１のインタリーブ設定に基づき、前記第１メモリ群にアクセスする第１の制御回路と、
前記第２の複数のメモリに接続する複数のチャンネルを有し、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第２のインタリーブ設定に基づき、前記第２メモリ群にアクセスする第２の制御回路と、
前記第１メモリ群及び前記第２メモリ群に含まれるメモリの個数が変化した場合に、変化後のメモリの個数に基づいて、第３のインタリーブ設定を決定する決定手段と、
前記第３のインタリーブ設定と前記第１及び第２のインタリーブ設定とを比較し、データの分割数が異なるチャンネルを特定する特定手段と、
前記特定されたチャンネルに対応する部分の第３のインタリーブ設定を使って前記第１及び第２のインタリーブ設定を変更する変更手段と、
前記第１のインタリーブ設定の変更に係るチャンネルに対応するメモリのデータを前記第２のインタリーブ設定の変更に係るチャンネルに対応するメモリにコピーし、前記第２のインタリーブ設定の変更に係るチャンネルに対応するメモリのデータを前記第１のインタリーブ設定の変更に係るチャンネルに対応するメモリにコピーするコピー手段と
を備えることを特徴とする情報処理装置。
【請求項８】
データを第１の複数のメモリに分割して記憶する第１メモリ群、及び前記データを第２の複数のメモリに分割して冗長に記憶する第２メモリ群に接続されるメモリ制御装置の制御方法であって、
前記第１メモリ群及び前記第２メモリ群に含まれるメモリ数が変化した場合に、当該メモリ数の情報及びデータの経路に基づいて、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第３のインタリーブ設定を決定し、
前記第３のインタリーブ設定と前記メモリ制御装置に含まれる第１の制御回路の第１のインタリーブ設定及び前記メモリ制御装置に含まれる第２の制御回路の第２のインタリーブ設定とを比較し、前記第１の制御回路及び前記第２の制御回路の各々に含まれる複数のチャンネルのうち、データの分割数が異なるチャンネルを特定し、
前記特定されたチャンネルに対応する部分の第３のインタリーブ設定を使って前記第１及び第２のインタリーブ設定を変更し、
前記第１のインタリーブ設定の変更に係るチャンネルに対応するメモリのデータを前記第２のインタリーブ設定の変更に係るチャンネルに対応するメモリにコピーし、前記第２のインタリーブ設定の変更に係るチャンネルに対応するメモリのデータを前記第１のインタリーブ設定の変更に係るチャンネルに対応するメモリにコピーする、
ことを特徴とするメモリ制御装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ制御装置、情報処理装置及びメモリ制御装置の制御方法に関する。
【背景技術】
【０００２】
従来より、冗長化された複数のメモリを制御するメモリ制御装置としてのメモリコントローラや、冗長化されたメモリ及びメモリ制御装置を有する情報処理装置としてのサーバ等が知られている。これにより、複数のメモリのうちいずれかのメモリにエラーが発生しても、正常動作している他のメモリを用いて、サーバは継続して処理を実行することができる。また、メモリアクセスをより高速化するため、メモリインタリーブ（Ｍｅｍｏｒｙ  Ｉｎｔｅｒｌｅａｖｅ）機能を用いてメモリアクセスを行うサーバがある。すなわち、サーバは、メモリへのデータの書き込み時に、連続するアドレスのデータを分割して、メモリの分割された領域であるウェイ毎のインタリーブブロックに分割したデータを交互に書き込むことにより分割して配置する。そして、書き込みを行ったデータを読み込む場合には、サーバは、ウェイ毎のインタリーブブロックから連続するアドレスのデータを交互に読み出すことにより、メモリアクセスの高速化を図る。ここで、メモリが２つのインタリーブブロックに分割される場合のインタリーブを、２−Ｗａｙ・メモリインタリーブといい、メモリが４つのインタリーブブロックに分割される場合のインタリーブを４−Ｗａｙ・メモリインタリーブという。【０００３】
しかしながら、例えばサーバが２−Ｗａｙ・メモリインタリーブの設定に基づいてメモリ上にデータを格納した後に当該２−Ｗａｙ・メモリインタリーブを例えば４−Ｗａｙ・メモリインタリーブの設定に変更した場合には、書き込みアドレスと読み出しアドレスが一致しない。そのため、メモリに書き込んだデータとメモリから読みだしたデータとに不整合が発生する。そこで、サーバを再起動せずに、メモリに書き込んだデータとメモリから読みだしたデータとの不整合を解消するサーバ、即ち、サーバを再起動せずに、冗長化された複数のメモリのインタリーブ設定を最適に変更するサーバが考えられている。【０００４】
以下、冗長化された複数のメモリのインタリーブ設定を最適に変更する方法を説明する。【０００５】
図１、図２は、サーバのインタリーブ設定を変更する方法を示す模式図である。図１、図２において、サーバ３０は、ＯＳ（Operating System）２１、ドライバ２２、ファームウェア２３、及びハードウェア２４を備えている。ハードウェア２０４は、ＣＰＵ（Central Processing Unit）１、メモリコントローラ３、メモリ４〜７，２５，２６を含む。メモリ４，５，２５はメモリ群１２を構成し、メモリ６，７，２７はメモリ群１３を構成する。【０００６】
図１では、サーバ３０の記憶回路群Ａ（Ｓｉｄｅ  Ａ）１４側にメモリ２５を追加するとともに、記憶回路群Ｂ（Ｓｉｄｅ  Ｂ）１５側にメモリ２６を追加してから、二重化した記憶回路群Ｂ（Ｓｉｄｅ  Ｂ）１５のインタリーブ設定を完了するまでの状態を示している。また、図２では、二重化した記憶回路群Ａ（Ｓｉｄｅ  Ａ）１４のインタリーブを設定した状態を示している。ここでは、サーバ３０にメモリ２５，２６をそれぞれ追加することによって、インタリーブ設定を２−Ｗａｙインタリーブ設定から３−Ｗａｙインタリーブ設定に変更する場合を説明する。ｎ−Ｗａｙインタリーブ設定とは、連続するアドレスのデータをｎ分割して、ｎ個のメモリに書き込み又はｎ個のメモリから連続するアドレスのデータを読み出す設定のことである。また、ドライバ２２はＣＰＵ１上で動作するソフトウェアである。また、ファームウェア２３はＣＰＵ１上で動作するソフトウェアである。このため、ドライバ２２の処理手順は、ＣＰＵ１がドライバ２２を実行することにより実現される。また、ファームウェア２３の処理手順は、ＣＰＵ１がファームウェア２３を実行することにより実現される。【０００７】
まず、サーバ３０にメモリ２５，２６をそれぞれ追加する。メモリ２５が記憶回路群Ａ１４に追加され、メモリ２６が記憶回路群Ｂ１５に追加されると、ファームウェア２３、及びメモリコントローラ３は追加されたメモリ２５，２６をそれぞれ認識し、初期化を行う（ステップＡ）。ＯＳ２１はファームウェア２３、及びメモリコントローラ３から追加されたメモリ２５，２６の情報を受け取ることにより、メモリ２５，２６をハードウェア２４を構成する要素として認識する（ステップＢ）。記憶回路群Ａ１４及び記憶回路群Ｂ１５のインタリーブ設定を変更するため、ＣＰＵ１上で動作するドライバ２２は稼動しているＯＳ２１のメモリアクセス等を含むトランザクションを停止し、トランザクションを停止した旨をファームウェア２３に通知する（ステップＣ）。ＣＰＵ１上で動作するドライバ２２は、サーバ３０をスリープモードに設定してＯＳ２１によるメモリアクセスを含むトランザクションを停止する。【０００８】
ＣＰＵ１上で動作するファームウェア２３はメモリ４〜７，２５，２６の読み出しデータの一致チェックを停止する（ステップＤ）。ファームウェア２３はメモリコントローラ３に対して、記憶回路群Ｂ１５からの読み出し（Ｒｅａｄ）方向のアクセスを禁止する（ステップＥ）。ファームウェア２３はＲｅａｄアクセスを禁止した記憶回路群Ｂ１５にインタリーブ設定を行う（ステップＦ）。ここでは、例えば、２−Ｗａｙインタリーブ設定を３−Ｗａｙインタリーブ設定に変更する場合について説明する。ファームウェア２３が、記憶回路群Ｂ１５のインタリーブ設定を２−Ｗａｙインタリーブ設定から３−Ｗａｙインタリーブ設定に変更したことによって、ＣＰＵ１からはメモリ上のデータアクセス対象のデータのアドレスが変更されたように見える。そのため、ＯＳ２１、ファームウェア２３、ドライバ２２から見ると、記憶回路群Ｂ１５に記憶しているインタリーブ設定変更後のアドレスに格納されているデータはインタリーブ設定変更前のデータとは異なったデータとして見える。【０００９】
ＣＰＵ１上で動作するファームウェア２３は記憶回路群Ａ１４に記憶しているデータを、２−Ｗａｙインタリーブ設定から３−Ｗａｙインタリーブ設定に変更した記憶回路群Ｂ１５へコピーする（ステップＧ）。ファームウェア２３は記憶回路群Ａ１４のデータの記憶回路群Ｂ１５へのコピーを完了したら、記憶回路群Ｂ１５からの読み出し禁止を解除する（ステップＨ）。次に、ファームウェア２３はインタリーブ設定を変更していない側である記憶回路群Ａ１４からの読み出し方向のアクセスを禁止する（ステップＩ）。ファームウェア２３は読み出しアクセスを禁止した記憶回路群Ａ１４を、２−Ｗａｙインタリーブ設定から３−Ｗａｙインタリーブ設定に変更する（ステップＪ）。【００１０】
ＣＰＵ１上で動作するファームウェア２３は記憶回路群Ｂ１５に記憶しているデータを記憶回路群Ａ１４へコピーする（ステップＫ）。ファームウェア２３は記憶回路群Ｂ１５のデータの記憶回路群Ａ１４へのコピーを完了したら、記憶回路群Ａ１４からの読み出し禁止を解除する（ステップＬ）。ファームウェア２３はメモリコントローラ３に対し二重化されているメモリ４，５，２５とメモリ６，７，２６との間の読み出しデータの一致チェックを再開する（ステップＭ）。ファームウェア２３はインタリーブ設定変更処理が終了したことをドライバ２２に通知し、ドライバ２２はＯＳ２１に対してメモリアクセスを含むトランザクションの再開を要求する（ステップＮ）。【００１１】
次に、図３を使って、メモリを追加した場合のインタリーブ設定変更前後のデータの状態を説明する。【００１２】
例えば、図３に示すように、６つのメモリ４Ａ〜４ＦにデータＡ〜データＤが格納されるものとする。メモリコントローラ３は、メモリ４Ａ〜４Ｆにアクセスする６つのチャンネル＃０〜＃５を有する。また、データＡは、図３に示すように、２−Ｗａｙインタリーブ設定が設定されている場合には、「データＡ＿０」及び「データＡ＿１」に分割され、４−Ｗａｙインタリーブ設定が設定されている場合には、「データＡ＿００」、「データＡ＿０１」、「データＡ＿１０」及び「データＡ＿１１」に分割される。データＢ〜ＤもデータＡと同様にインタリーブ設定に応じて分割される。【００１３】
仮に、メモリ４Ｆを追加した場合のインタリーブ設定変更前に、ファームウェア２３が記憶回路群Ａ１４のインタリーブ設定を４−Ｗａｙインタリーブ設定及び２つの１−Ｗａｙインタリーブ設定に設定するものとする。この場合、４−Ｗａｙインタリーブ設定対象のデータＡ，Ｂは各々４分割されて、メモリ４Ａ〜４Ｄに格納される。１−Ｗａｙインタリーブ設定対象のデータＣはメモリ４Ｅに格納される。又、１−Ｗａｙインタリーブ設定対象のデータＤはメモリ４Ｆに格納される。次に、ファームウェア２３が記憶回路群Ａ１４のインタリーブ設定を４−Ｗａｙインタリーブ設定及び２−Ｗａｙインタリーブ設定に変更すると、インタリーブ設定変更前と同様に、４−Ｗａｙインタリーブ設定対象のデータＡ，Ｂは各々４分割されて、メモリ４Ａ〜４Ｄに格納されている。２−Ｗａｙインタリーブ設定対象のデータＣ，Ｄは各々２分割される。すなわち、「データＣ＿０」及び「データＤ＿０」は、メモリ４Ｅに格納され、「データＣ＿１」及び「データＤ＿１」は、メモリ４Ｆに格納される。このように、メモリ４Ｆを追加した場合のインタリーブ設定変更後の状態は、インタリーブ設定変更前の状態と比べて、データＣ，Ｄへのアクセス方法だけが変更される。メモリモジュール数を削減した場合のメモリインタリーブ設定変更前後のデータの状態を図４に示す。この場合も、メモリ４Ｆを削減した場合のインタリーブ設定変更後の状態は、インタリーブ設定変更前の状態と比べて、データＣ，Ｄへのアクセス方法だけが変更される。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特表２００６−５０５８６４号公報
【特許文献２】特開２００８−２１７７２７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
ところで、上記サーバ３０は、メモリ群１２からメモリ群１３にデータをコピーするために、ＣＰＵ１が実行するファームウェア２３を利用する。このため、データは、メモリ群１２→メモリコントローラ３→ＣＰＵ１→メモリコントローラ３→メモリ群１３のような長い経路を通る。従って、データのコピーに時間がかかり、インタリーブ設定の変更のためのＯＳのメモリアクセスを含むトランザクションの停止時間、即ちサーバ３０の停止時間が長くなるという課題がある。【００１６】
また、図３及び図４に示すように、データのコピーが必要なチャンネルは、インタリーブ設定が変更されたチャンネルだけである。しかしながら、上記サーバ３０は、全てのデータのコピーを実行している。従って、データのコピーに時間がかかり、インタリーブ設定の変更のためのＯＳのメモリアクセスを含むトランザクションの停止時間、即ちサーバ３０の停止時間が長くなるという課題がある。【００１７】
上記課題に鑑み、明細書に開示されたメモリ制御装置、情報処理装置及びメモリ制御装置の制御方法は、インタリーブ設定の変更のための情報処理装置の停止時間を短縮することを目的とする。
【課題を解決するための手段】
【００１８】
上記目的を達成するため、明細書に開示されたメモリ制御装置は、データを第１の複数のメモリに分割して記憶する第１メモリ群と、前記データを第２の複数のメモリに分割して冗長に記憶する第２メモリ群とに接続するメモリ制御装置であって、前記第１の複数のメモリに接続する複数のチャンネルを有し、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第１のインタリーブ設定に基づき、前記第１メモリ群にアクセスする第１の制御回路と、前記第２の複数のメモリに接続する複数のチャンネルを有し、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第２のインタリーブ設定に基づき、前記第２メモリ群にアクセスする第２の制御回路と、前記第１メモリ群及び前記第２メモリ群に含まれるメモリの個数が変化した場合に、変化後のメモリの個数に基づいて、第３のインタリーブ設定を決定する決定手段と、前記第３のインタリーブ設定と前記第１及び第２のインタリーブ設定とを比較し、データの分割数が異なるチャンネルを特定する特定手段と、前記特定されたチャンネルに対応する部分の第３のインタリーブ設定を使って前記第１及び第２のインタリーブ設定を変更する変更手段と、前記第１のインタリーブ設定の変更に係るチャンネルに対応するメモリのデータを前記第２のインタリーブ設定の変更に係るチャンネルに対応するメモリにコピーし、前記第２のインタリーブ設定の変更に係るチャンネルに対応するメモリのデータを前記第１のインタリーブ設定の変更に係るチャンネルに対応するメモリにコピーするコピー手段とを備える。【００１９】
明細書に開示された情報処理装置は、データを第１の複数のメモリに分割して記憶する第１メモリ群と、前記データを第２の複数のメモリに分割して冗長に記憶する第２メモリ群と、前記第１及び第２のメモリ群に接続するメモリ制御装置と、前記メモリ制御装置を介して前記第１及び第２のメモリ群にデータを読み書きする演算処理装置とを有する情報処理装置であって、前記メモリ制御装置は、前記第１の複数のメモリに接続する複数のチャンネルを有し、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第１のインタリーブ設定に基づき、前記第１メモリ群にアクセスする第１の制御回路と、前記第２の複数のメモリに接続する複数のチャンネルを有し、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第２のインタリーブ設定に基づき、前記第２メモリ群にアクセスする第２の制御回路と、前記第１メモリ群及び前記第２メモリ群に含まれるメモリの個数が変化した場合に、変化後のメモリの個数に基づいて、第３のインタリーブ設定を決定する決定手段と、前記第３のインタリーブ設定と前記第１及び第２のインタリーブ設定とを比較し、データの分割数が異なるチャンネルを特定する特定手段と、前記特定されたチャンネルに対応する部分の第３のインタリーブ設定を使って前記第１及び第２のインタリーブ設定を変更する変更手段と、前記第１のインタリーブ設定の変更に係るチャンネルに対応するメモリのデータを前記第２のインタリーブ設定の変更に係るチャンネルに対応するメモリにコピーし、前記第２のインタリーブ設定の変更に係るチャンネルに対応するメモリのデータを前記第１のインタリーブ設定の変更に係るチャンネルに対応するメモリにコピーするコピー手段とを備える。【００２０】
明細書に開示されたメモリ制御装置の制御方法は、データを第１の複数のメモリに分割して記憶する第１メモリ群、及び前記データを第２の複数のメモリに分割して冗長に記憶する第２メモリ群に接続されるメモリ制御装置の制御方法であって、前記第１メモリ群及び前記第２メモリ群に含まれるメモリ数が変化した場合に、当該メモリ数の情報及びデータの経路に基づいて、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第３のインタリーブ設定を決定し、前記第３のインタリーブ設定と前記メモリ制御装置に含まれる第１の制御回路の第１のインタリーブ設定及び前記メモリ制御装置に含まれる第２の制御回路の第２のインタリーブ設定とを比較し、前記第１の制御回路及び前記第２の制御回路の各々に含まれる複数のチャンネルのうち、データの分割数が異なるチャンネルを特定し、前記特定されたチャンネルに対応する部分の第３のインタリーブ設定を使って前記第１及び第２のインタリーブ設定を変更し、前記第１のインタリーブ設定の変更に係るチャンネルに対応するメモリのデータを前記第２のインタリーブ設定の変更に係るチャンネルに対応するメモリにコピーし、前記第２のインタリーブ設定の変更に係るチャンネルに対応するメモリのデータを前記第１のインタリーブ設定の変更に係るチャンネルに対応するメモリにコピーする。
【発明の効果】
【００２１】
明細書に開示されたメモリ制御装置、情報処理装置及びメモリ制御装置の制御方法は、インタリーブ設定の変更のための情報処理装置の停止時間を短縮することができる。
【図面の簡単な説明】
【００２２】
【図１】サーバのインタリーブ設定を変更する方法を示す模式図である。
【図２】サーバのインタリーブ設定を変更する方法を示す模式図である。
【図３】メモリを追加した場合のインタリーブ設定変更前後のデータの状態を示す図である。
【図４】メモリを削減した場合のインタリーブ設定変更前後のデータの状態を示す図である。
【図５】本実施の形態に係るサーバ１００のハードウェア構成を示すブロック図である。
【図６】サーバ１００のインタリーブ設定の変更処理を示す模式図である。
【図７】サーバ１００のインタリーブ設定の変更処理を示す模式図である。
【図８】サーバ１００のインタリーブ設定の変更処理を示すフローチャートである。
【発明を実施するための形態】
【００２３】
以下、図面を参照しながら本発明の実施の形態を説明する。
【００２４】
本実施の形態では、図５に示すサーバ１００のインタリーブ設定の変更について説明する。サーバ１００は、再起動せずに、メモリの追加又は削減に伴うインタリーブ設定を最適に変更可能とするものである。インタリーブ設定とは、連続するアドレスのデータを分割して、データの分割数に対応する個数のメモリに当該分割されたデータを読み書きする設定である。以下、図５を用いて、サーバ１００の動作について説明する。
【００２５】
図５は、本実施の形態に係るサーバのハードウェア構成を示すブロック図である。
【００２６】
サーバ１００は、ＣＰＵ（Ｃｅｎｔｒａｌ Ｐｒｏｃｅｓｓｉｎｇ Ｕｎｉｔ）１０１、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）デバイス１０２、メモリコントローラ１０３、制御レジスタ１０４、インタリーブ制御回路１０５、二重化制御回路１０７、アクセス制御回路１０９，１１６（第１の制御回路，第２の制御回路）、及びメモリ１１４Ａ〜１１４Ｅ，１２１Ａ〜１２１Ｅから構成されている。メモリ１１４Ａ〜１１４Ｅはメモリ群Ａ１１４（第１メモリ群）を形成し、またメモリ１２１Ａ〜１２１Ｅはメモリ群Ｂ１２１（第２メモリ群）を形成する。さらにアクセス制御回路１０９とメモリ群Ａ１１４は記憶回路群Ａ（Ｓｉｄｅ Ａ）１０８を形成し、アクセス制御回路１１６とメモリ群Ｂ１２１は記憶回路群Ｂ（Ｓｉｄｅ Ｂ）１１５を形成する。そして、記憶回路群Ａ１０８と記憶回路群Ｂ１１５はミラーリング構成（二重化構成）をとっている。つまり、サーバ１００は冗長化したメモリ群Ａ１１４及びメモリ群Ｂ１２１を有している。
【００２７】
ここで、サーバ１００は、高信頼性を実現するためにメモリ群Ａ１１４とメモリ群Ｂ１２１との間で二重化しており、メモリが一方のメモリ群に新たに追加される場合又は削減される場合には、二重化を保つように他方のメモリ群に対しても対称に追加又は削減される。また、サーバ１００では、パーティション稼働中にメモリの追加又は削減が可能である。
【００２８】
そして、サーバ１００は、メモリインタリーブを用いた書き込み制御により、連続するアドレスのデータをメモリ群Ａ１１４に記憶する。同様に、サーバ１００は、メモリインタリーブを用いた書き込み制御により、同一の連続するアドレスのデータをメモリ群Ｂ１２１にも冗長して記憶する。より具体的には、アクセス制御回路１０９は、連続するアドレスのデータをメモリ１１４Ａ〜１１４Ｅにインタリーブ制御を用いて書き込み、又はインタリーブ制御を用いて連続するアドレスのデータを読み出すことにより、データアクセスを行う。ここで、メモリインタリーブとは、メモリコントローラ１０３が連続するアドレスを有するデータを一定の分割単位であるウェイごとに分割し、分割したデータを当該ウェイへ書き込み、又は当該ウェイから読み込むことである。換言すると、メモリ１１４Ａ〜１１４Ｆには連続したメモリアドレスが割り当てられている。そして、メモリコントローラ１０３が、メモリ１１４Ａ，１１４Ｂの境界、メモリ１１４Ｂ，１１４Ｃの境界、メモリ１１４Ｃ，１１４Ｄの境界、及びメモリ１１４Ｄ，１１４Ｅの境界をまたいで連続アドレスへデータアクセスする。同様に、アクセス制御回路１１６は、メモリ１２１Ａ〜１２１Ｅに連続するアドレスのデータについてインタリーブ制御を用いて書き込み、又はインタリーブ制御を用いて読み出すことにより、データアクセスを行う。即ち、メモリ１２１Ａ〜１２１Ｅには連続したメモリアドレスが割り当てられている。メモリコントローラ１０３は、メモリ１２１Ａ，１２１Ｂの境界、メモリ１２１Ｂ，１２１Ｃの境界、メモリ１２１Ｃ，１２１Ｄの境界、及びメモリ１２１Ｄ，１２１Ｅの境界をまたいで連続アドレスへデータアクセスする。本実施の形態では、メモリ群Ａ１１４とメモリ群Ｂ１２１はミラーリングにより二重化されており、メモリ１１４Ａ，１２１Ａの組には同一のデータが記憶されている。同様に、メモリ１１４Ｂ，１２１Ｂの組、メモリ１１４Ｃ，１２１Ｃの組、メモリ１１４Ｄ，１２１Ｄの組、及びメモリ１１４Ｅ，１２１Ｅの組、それぞれ同一のデータが記憶されている。
【００２９】
以下、サーバ１００が有する各ユニットの動作、機能について説明し、サーバ１００が実行するメモリインタリーブの再設定手順を説明する。
【００３０】
以下、ＣＰＵ１０１について説明する。演算処理装置としてのＣＰＵ１０１は、サーバ１００における演算処理を行う。サーバ１００が実行する動作は、ＣＰＵ１０１が実行するプログラムが有する命令やサーバ１００に接続されるクライアント装置からの要求などに応じたデータのメモリからの読み出し、メモリへの書き込みなどである。サーバ１００は、ネットワークコントローラ等のＩ／Ｏデバイス１０２を介してクライアント装置などの外部装置とデータのやりとりを行う。そして、ＣＰＵ１０１はメモリコントローラ１０３を介してメモリ１１４Ａ〜１１４Ｅ，１２１Ａ〜１２１Ｅのいずれかに対するアクセスを行う。このとき、メモリコントローラ１０３は、メモリ１１４Ａ〜１１４Ｅ，１２１Ａ〜１２１Ｅのいずれかからデータを読み出し、又はメモリ１１４Ａ〜１１４Ｅ，１２１Ａ〜１２１Ｅのいずれかへデータを書きこむ。
【００３１】
ＣＰＵ１０１は、インタリーブ設定を変更するに際して、メモリ１１４Ａ〜１１４Ｅ，１２１Ａ〜１２１Ｅを用いたデータ処理を停止するようにメモリコントローラ１０３を制御する。具体的には、ＣＰＵ１０１は、サーバ１００をスリープモードに設定して、図６に示すＯＳ（Ｏｐｅｒａｔｉｎｇ Ｓｙｓｔｅｍ）２０１によるメモリアクセス等のトランザクションを停止する。サーバ１００上で実行されるソフトウェアの側面から見ると、図６に示すドライバ２０２がＯＳ２０１のトランザクションを停止する機能を有するソフトウェアであり、ドライバ２０２がＯＳ２０１のトランザクションを停止する。ここで、トランザクションとは、サーバ１００が実行するいくつかのセッションをひとまとまりにした処理のことである。またセッションは、サーバ１００において上記のクライアント装置からの要求によりデータベースなどを更新する際に発行されるデータベース管理システムにおける問い合わせ及び当該問い合わせに対する応答の単位である。また、ドライバ２０２はＯＳ２０１に組み込まれている。
【００３２】
ＣＰＵ１０１はメモリのインタリーブ設定を、例えば、１−Ｗａｙインタリーブから２−Ｗａｙインタリーブに変更した場合、インタリーブ設定の変更に関連するメモリ１１４Ｅ，１２１Ｅ、及び新たに追加したメモリ１１４Ｆ，１２１Ｆを用いたデータ処理を再開する。
【００３３】
次にメモリコントローラ１０３について説明する。メモリコントローラ１０３は、制御レジスタ１０４、インタリーブ制御回路１０５、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０６、二重化制御回路１０７、及びアクセス制御回路１０９，１１６を有している。インタリーブ制御回路１０５は、リード／ライト制御部１２２（読出制御手段）、インタリーブ制御部１２３（変更手段）及びデータコピー制御部１２４（コピー手段）を備えている。二重化制御回路１０７は、データ比較部１２５を備えている。アクセス制御回路１０９は、リード／ライト設定部１１０、インタリーブ設定部１１１、メモリコピー部１１２、及びメモリアクセス部１１３を備えている。アクセス制御回路１１６は、リード／ライト設定部１１７、インタリーブ設定部１１８、メモリコピー部１１９、及びメモリアクセス部１２０を備えている。また、アクセス制御回路１０９は、メモリ群Ａ１１４にアクセスするためのチャンネル＃０〜＃５を備えている。同様に、アクセス制御回路１１６は、メモリ群Ｂ１２１にアクセスするためのチャンネル＃０〜＃５を備えている。ここで、アクセス制御回路１０９が備えるメモリ群Ａ１１４にアクセスするための「チャンネル＃０〜＃５」と、アクセス制御回路１１６が備えるメモリ群Ｂ１２１にアクセスするための「チャンネル＃０〜＃５」とは名称が同一であるが、インタリーブグループ番号の設定が異なる。インタリーブグループ番号については、後述する。
【００３４】
制御レジスタ１０４には、メモリコントローラ１０３が処理を実行するための設定情報が記憶されている。当該設定情報に基づき、インタリーブ制御回路１０５、二重化制御回路１０７、及びアクセス制御回路１０９，１１６が処理をそれぞれ実行する。
【００３５】
インタリーブ制御回路１０５のリード／ライト制御部１２２は、リード／ライト設定部１１０，１１７のそれぞれのデータのリード／ライトを制御する。例えば、リード／ライト制御部１２２は、リード／ライト設定部１１０に記憶回路群Ａ１０８から読み出す方向のメモリアクセスを禁止する。この場合、アクセス制御回路１０９では、メモリ群Ａ１１４からの読み出し方向のアクセスが禁止される。同様に、リード／ライト制御部１２２は、リード／ライト設定部１１７に記憶回路群Ｂ１１５から読み出す方向のメモリアクセスを禁止する。この場合、アクセス制御回路１１６では、メモリ群Ｂ１２１からの読み出し方向のアクセスが禁止される。
【００３６】
インタリーブ制御回路１０５のインタリーブ制御部１２３は、二重化している記憶回路群Ａ１０８、記憶回路群Ｂ１１５ごとに、即ちＳｉｄｅごとにメモリインタリーブを設定する。具体的には、インタリーブ制御部１２３は、アクセス制御回路１０９，１１６のチャンネル単位でインタリーブ設定を実施することにより、インタリーブ設定をチャンネル単位で変更できる。アクセス制御回路１０９，１１６のチャンネル単位のインタリーブ設定は、それぞれインタリーブ設定部１１１，１１８に格納される。
【００３７】
インタリーブ制御回路１０５のデータコピー制御部１２４は、記憶回路群（Ｓｉｄｅ）単位で又はチャンネル単位で行われるデータのコピーを制御する。例えば、メモリ１１４Ａに記憶されているデータをメモリ１２１Ａにコピーする場合、データコピー制御部１２４は、メモリ１１４Ａに記憶されているデータを読み出すようにメモリコピー部１１２を制御し、その読み出されたデータをメモリ１２１Ａに書き込むようにメモリコピー部１１９を制御する。
【００３８】
このように、インタリーブ制御回路１０５は、１）Ｓｉｄｅ単位又はチャンネル単位でインタリーブ設定を制御する機能、２）Ｓｉｄｅ単位でアクセス制御回路１０９，１１６のデータのリード／ライトを設定する機能、及び３）Ｓｉｄｅ単位又はチャンネル単位でデータをコピーする機能を有している。
【００３９】
二重化制御回路１０７のデータ比較部１２５は、メモリアクセス部１１３，１２０が二重化しているメモリ群Ａ１１４、メモリ群Ｂ１２１からそれぞれ読み出したデータが同一であるかのチェックを行う。また、二重化制御回路１０７は、データ比較部１２５のチェック機能の停止及び再開を行う。さらに、二重化制御回路１０７は、記憶回路群Ａ１０８、記憶回路群Ｂ１１５の二重化状態を保つ制御を行う。二重化制御回路１０７が実行する二重化制御とは、メモリ群Ａ１１４とメモリ群Ｂ１２１に記憶するデータを常に同一にする制御であり、メモリ群Ａ１１４にインタリーブ制御を用いてデータを書き込んだら、メモリ群Ｂ１２１にもインタリーブ制御を用いて同一のデータを同時に書き込む制御である。
【００４０】
記憶回路群Ａ１０８のアクセス制御回路１０９は、メモリ１１４Ａ〜１１４Ｅが記憶するデータへのアクセスを制御する。具体的には、アクセス制御回路１０９のリード／ライト設定部１１０には、読み出し／書き込みの設定情報が格納されている。アクセス制御回路１０９のインタリーブ設定部１１１にはメモリインタリーブの設定情報が格納されている。アクセス制御回路１０９のメモリコピー部１１２は、メモリ１１４Ａ〜１１４Ｅからデータを読み出し、データコピー制御部１２４を介してメモリ１２１Ａ〜１２１Ｅに出力する、又はメモリ１２１Ａ〜１２１Ｅのデータをメモリ１１４Ａ〜１１４Ｅにコピーする。アクセス制御回路１０９のメモリアクセス部１１３は、メモリ１１４Ａ〜１１４Ｅのデータを読み出し、データ比較部１２５に出力する。
【００４１】
記憶回路群Ｂ１１５のアクセス制御回路１１６はメモリ１２１Ａ〜１２１Ｅのデータへのアクセスを制御する。具体的には、アクセス制御回路１１６のリード／ライト設定部１１７には、読み出し／書き込みの設定情報が格納されている。アクセス制御回路１１６のインタリーブ設定部１１８にはメモリインタリーブの設定情報が格納されている。アクセス制御回路１１６のメモリコピー部１１９は、メモリ１２１Ａ〜１２１Ｅからデータを読み出し、データコピー制御部１２４を介してメモリ１１４Ａ〜１１４Ｅに出力する、又はメモリ１１４Ａ〜１１４Ｅのデータをメモリ１２１Ａ〜１２１Ｅにコピーする。アクセス制御回路１１６のメモリアクセス部１２０は、メモリ１２１Ａ〜１２１Ｅのデータを読み出し、データ比較部１２５に出力する。
【００４２】
図６は、サーバ１００上で動作するＯＳ２０１、ドライバ２０２、ファームウェア２０３、及びサーバ１００に含まれるメモリコントローラ１０３それぞれの関係を示す。
【００４３】
図６に示すファームウェア２０３（決定手段、特定手段）は、図５に示すサーバ１００に内蔵されたＲＯＭ１０６に記憶される。ファームウェア２０３はハードウェアの起動処理や終了処理等の基本的な制御を行なうためにサーバ１００に組み込まれたソフトウェアであり、メモリコントローラ１０３に接続されるＣＰＵ１０１が実行するソフトウェアである。すなわち、ファームウェア２０３の処理は、メモリコントローラ１０３に接続されるＣＰＵ１０１が実行することにより実現される。
【００４４】
ＣＰＵ１０１上で動作するファームウェア２０３は、メモリコントローラ１０３のインタリーブ設定、インタリーブの再設定に際して行うデータのコピー処理（データのメモリ１１４Ａ〜１１４Ｅ，１２１Ａ〜１２１Ｅそれぞれへの書き込み処理）、コピー処理が終了したことをドライバ２０２に通知する処理などを実行する。さらに、ファームウェア２０３は、実装されているメモリ構成での最適なインタリーブ設定（第３のインタリーブ設定）とアクセス制御回路１０９又は１１６に設定されている現在のインタリーブ設定（第１及び第２のインタリーブ設定）とを比較し、データの分割数（Ｗａｙ数）が異なるチャンネルを特定する処理を実行する。また、ファームウェア２０３は、Ｓｉｄｅ単位で又はチャンネル単位で最適なインタリーブ設定をインタリーブ制御回路１０５に設定する処理を実行する。
【００４５】
ここで、実装されているメモリ構成での最適なインタリーブ設定について説明する。ファームウェア２０３及びアクセス制御回路１０９，１１６は、図６に示すように、インタリーブ設定として、チャンネル番号とインタリーブグループ番号との関係を示すデータを有する。チャンネル番号は、各チャンネルを識別する番号である。インタリーブグループ番号とは、各チャンネルが連続するデータのグループに属するか又は異なるデータのグループに属するかを識別するための番号である。例えば、４−Ｗａｙインタリーブ設定では、連続するアドレスのデータを４分割して、チャンネル番号＃０〜＃３のチャンネルを介して４個のメモリにそれぞれ分割されたデータが書き込まれるので、チャンネル番号＃０〜＃３は連続するデータのグループに属する。従って、４つのチャンネル番号＃０〜＃３に、共通のインタリーブグループ番号「０」が割り当てられている。また、チャンネル番号＃４のチャンネルは、４−Ｗａｙインタリーブ設定で使用されないので、チャンネル番号＃０〜＃３のチャンネルと異なるデータのグループに属する。従って、チャンネル番号＃４に、「０」と異なるインタリーブグループ番号「１」が割り当てられている。インタリーブ設定は、チャンネル番号とインタリーブグループ番号との関係を示すデータであるので、ファームウェア２０３は、複数のインタリーブ設定を比較するときに、データの分割数が異なるチャンネルを特定し易くなる。
【００４６】
ＣＰＵ１０１上で動作するファームウェア２０３は、サーバ１００に実装されているメモリの情報（具体的には、一つのメモリ群に含まれるメモリの個数情報）及びデータの経路に基づいて、データの分割数（Ｗａｙ数）を決めることにより、最適なインタリーブ設定を決定する。例えば、データの分割数（Ｗａｙ数）は、１、２、４、８、１６…のように２のｎ乗（ｎ：０以上の整数）になる。また、メモリアクセスの高速化を図る観点から、ファームウェア２０３は、例えば、データの分割数を、２のｎ乗の組み合わせであり且つ一つのメモリ群に含まれるメモリの個数を超えない範囲で、最大値に設定する。例えば、メモリ群Ａ１１４に含まれるメモリが５つの場合、データの分割数は２のｎ乗の組み合わせであり且つメモリの個数を超えない範囲で最大値に設定されるので、ファームウェア２０３は、データの分割数を「４」と「１」に決める。その後、メモリ群Ａ１１４に含まれるメモリが１つ増加し６つになった場合、データの分割数の候補は「４」「１」「１」又は「４」「２」となる。メモリが５つ又は６つの場合でも、４つに分割されるデータの経路は変動しないので、ファームウェア２０３は、メモリが６つの場合には、残り２つのメモリに格納されるデータの分割数を２のｎ乗の組み合わせであり且つメモリの個数を超えない範囲で最大値に設定する。即ち、ファームウェア２０３は、データの分割数を「４」と「２」に決める。これにより、最適なインタリーブ設定は、４−Ｗａｙインタリーブ設定と２−Ｗａｙインタリーブ設定の組み合わせになる。なお、データの最適な分割数について、ここでは２のｎ乗（ｎ：０以上の整数）であり且つメモリの個数を超えない範囲で最大値に設定する例を示したが、例えば、ｍのｎ乗（ｍ，ｎ：０以上の整数）の組み合わせであり且つメモリの個数を超えない範囲で最大値に設定しても良い。
【００４７】
サーバ１００のメモリ群Ａ１１４及びメモリ群Ｂ１２１に新たにメモリ１１４Ｆ，１２１Ｆをそれぞれ追加する場合、メモリコントローラ１０３は、ＣＰＵ１０１がＯＳ２０１のメモリアクセスを含むトランザクションを停止した状態で、記憶回路群Ａ１０８及び記憶回路群Ｂ１１５を交互にインタリーブ設定を変更する。より具体的にはメモリ群Ａ１１４及びメモリ群Ｂ１２１に新たにメモリ１１４Ｆ，１２１Ｆをそれぞれ追加する場合、ファームウェア２０３が、追加されたメモリ構成での最適なインタリーブ設定を決定し、最適なインタリーブ設定とアクセス制御回路１１６に設定されている現在のインタリーブ設定とを比較し、データの分割数が異なるチャンネルを特定する。そして、インタリーブ制御回路１１５が、特定されたチャンネルに対応するアクセス制御回路１１６のインタリーブ設定を変更し、特定されたチャンネルに対応するメモリ群Ａ１１４のデータを、特定されたチャンネルに対応するメモリ群Ｂ１２１に新たなインタリーブ設定でコピーする。例えば、インタリーブ制御回路１１５は、２つの１−Ｗａｙインタリーブ設定のチャンネル＃４，＃５に対応するメモリ１１４Ｅ，１１４Ｆのデータをメモリ１２１Ｅ，１２１Ｆに２−Ｗａｙインタリーブ設定でコピーする。さらに、インタリーブ制御回路１１５が、特定されたチャンネルに対応するアクセス制御回路１０９のインタリーブ設定を変更し、特定されたチャンネルに対応するメモリ群Ｂ１２１のデータを、特定されたチャンネルに対応するメモリ群Ａ１１４に新たなインタリーブ設定でコピーする。例えば、インタリーブ制御回路１１５は、チャンネル＃４，＃５に対応するメモリ１２１Ｅ，１２１Ｆのデータをメモリ１１４Ｅ，１１４Ｆに２−Ｗａｙインタリーブ設定でコピーする。このように、インタリーブ制御回路１１５は、データの分割数が異なるチャンネルに対応するアクセス制御回路１１６，１０９のインタリーブ設定を順番に変更し、データの分割数が異なるチャンネルに対応するメモリのデータを新たなインタリーブ設定を用いてコピーすることにより、サーバ１００におけるメモリインタリーブの再設定を行う。従って、メモリ数の変更に応じて変更されるインタリーブ設定に関連するチャンネルのデータのみがコピーされる。メモリ数の変更に応じたメモリインタリーブの再設定は、メモリ数が増加したら増加した数に合わせてデータを分割して新たなインタリーブ設定を用いてメモリに記憶し、メモリ数が削減したら削減した数に合わせてデータを分割して新たなインタリーブ設定を用いてメモリに記憶することである。
【００４８】
以下、図６〜８を参照しながら、インタリーブ設定の変更処理を説明する。図６及び図７は、サーバ１００のインタリーブ設定の変更処理を示す模式図である。図８は、サーバ１００のインタリーブ設定の変更処理を示すフローチャートである。
【００４９】
図６では、サーバ１００にメモリ１１４Ｆ、１２１Ｆをそれぞれ追加してから、アクセス制御回路１１６のインタリーブ設定の変更及び記憶回路群Ａ１０８から記憶回路群Ｂ１１５へデータのコピーが完了するまでの状態を示している。また、図７では、アクセス制御回路１０９のインタリーブ設定の変更及び記憶回路群Ｂ１１５から記憶回路群Ａ１０８へデータのコピーが完了するまでの状態を示している。本実施の形態では、サーバ１００にメモリ１１４Ｆ、１２１Ｆをそれぞれ追加することによって、チャンネル＃４，＃５に対応する２つの１−Ｗａｙインタリーブ設定を２−Ｗａｙインタリーブ設定に変更する場合を説明する。ｎ−Ｗａｙインタリーブ設定とは、連続するアドレスのデータをｎ分割して、ｎ個のメモリに書き込み／ｎ個のメモリから読み出す設定のことである。また、上記に示したようにドライバ２０２はＣＰＵ１０１で動作するソフトウェアであり、またファームウェア２０３はＣＰＵ１０１上で動作するソフトウェアである。そのため、以下ドライバ２０２の処理手順は、ＣＰＵ１０１がドライバ２０２を実行することにより実現される。またファームウェア２０３の処理手順は、ＣＰＵ１０１がファームウェア２０３を実行することにより実現される。
【００５０】
まず、サーバ１００にメモリ１１４Ｆ及び１２１Ｆをそれぞれ追加する。メモリ１１４Ｆ，１２１Ｆがそれぞれ記憶回路群Ａ１０８，記憶回路群Ｂ１１５に追加されると、ファームウェア２０３及びメモリコントローラ１０３は追加されたメモリ１１４Ｆ及び１２１Ｆを認識し、初期化を行う（ステップＳ１）。ＯＳ２０１はファームウェア２０３及びメモリコントローラ１０３から追加されたメモリ１１４Ｆ及び１２１Ｆの情報をそれぞれ受け取ることにより、メモリ１１４Ｆ及び１２１Ｆをハードウェアの構成として認識する（ステップＳ２）。
【００５１】
アクセス制御回路１０９及び１１６のインタリーブ設定を変更するため、ドライバ２０２は稼動しているＯＳ２０１のメモリアクセスを含むトランザクションを停止し、トランザクションを停止した旨をファームウェア２０３に通知する（ステップＳ３）。ドライバ２０２は、サーバ１００をスリープモードに設定してＯＳ２０１によるメモリアクセスを含むトランザクションを停止する。ハードウェアの動作としては、ＣＰＵ１０１がＯＳ２０１のトランザクションを停止する。換言すれば、ＣＰＵ１０１がＯＳ２０１のトランザクションを停止することにより、記憶回路群Ａ１０８及び記憶回路群Ｂ１１５に記憶しているデータを確定して、メモリコントローラ１０３のインタリーブ制御回路１０５がアクセス制御回路１０９，１１６のインタリーブ設定を変更する。記憶回路群Ａ１０８及び記憶回路群Ｂ１１５に記憶するデータを確定するために、ＣＰＵ１０１が記憶回路群Ａ１０８及び記憶回路群Ｂ１１５を用いたデータ処理を停止する。
【００５２】
ＣＰＵ１０１上で動作するファームウェア２０３は、メモリ追加後の最適なインタリーブ設定を決定する（ステップＳ４）。具体的には、ファームウェア２０３は、実装されているメモリの情報（具体的には、一つのメモリ群に含まれるメモリの個数情報）及びデータの経路に基づいて、連続するアドレスを有するデータの分割数を決めることにより、最適なインタリーブ設定を決定する。データの分割数はｍのｎ乗（ｍ，ｎ：０以上の整数）の組み合わせになるので、記憶回路群Ａ１０８及び記憶回路群Ｂ１１５にそれぞれ６つのメモリが実装されている状態では、最適なインタリーブ設定は、４−Ｗａｙインタリーブ設定と２−Ｗａｙインタリーブ設定の組み合わせになる。図６では、最適なインタリーブ設定は、ファームウェア２０３に含まれている、チャンネル番号とインタリーブグループ番号との関係を示すデータである。ファームウェア２０３は、決定された最適なインタリーブ設定をアクセス制御回路１１６の現在のインタリーブ設定と比較し、データの分割数が異なるチャンネル番号を特定する（ステップＳ５）。図６では、データの分割数が異なるチャンネルのチャンネル番号は「＃４」及び「＃５」である。
【００５３】
ファームウェア２０３は、メモリ群Ａ１１４及びメモリ群Ｂ１２１の読み出しデータの一致チェックを停止する（ステップＳ６）。メモリ群Ａ１１４及びメモリ群Ｂ１２１が二重化された状態で、いずれか一方のメモリ群からのデータの読み出しを禁止すると、二重化されたメモリ群Ａ１１２及びメモリ群Ｂ１１３からの読み出しデータが異なる。二重化制御回路１０７がこの状態をハードウェア障害として検知しないようにするために、ファームウェア２０３は、二重化制御回路１０７におけるメモリ群Ａ１１４及びメモリ群Ｂ１２１からの読み出しデータの一致チェックを抑止する。
【００５４】
ファームウェア２０３は、ステップＳ５で特定されたチャンネル番号に対応する最適なインタリーブ設定をインタリーブ制御回路１０５のインタリーブ制御部１２３に設定する（ステップＳ７）。インタリーブ制御回路１０５のインタリーブ制御部１２３は、ファームウェア２０３から受け取ったチャンネル番号に対応する最適なインタリーブ設定を保存する（ステップＳ８）。図６では、ファームウェア２０３から受け取った又はファームウェア２０３で特定されたチャンネル番号に対応する最適なインタリーブ設定は、チャンネル番号「＃４」，「＃５」とインタリーブグループ番号「１」との関係を示すデータである。
【００５５】
インタリーブ制御回路１０５のリード／ライト制御部１２２は、アクセス制御回路１１６に対して、記憶回路群Ｂ１１５からの読み出し（Ｒｅａｄ）方向のアクセスを禁止する（ステップＳ９）。記憶回路群Ｂ１１５のメモリ群１２１にデータが配置された後に、アクセス制御回路１１６のインタリーブ設定が変更されると、書き込んだデータと読み出したデータとの不整合が生じる。よって、リード／ライト制御部１２２は、アクセス制御回路１１６のデータ読み出しを禁止することで、アクセス制御回路１１６に不整合の生じているデータを使用できなくしている。ここでは、インタリーブ制御回路１０５は、アクセス制御回路１１６に対して、記憶回路群Ｂ１１５からの読み出し（Ｒｅａｄ）方向のアクセスを禁止した後、アクセス制御回路１０９に対して、記憶回路群Ａ１０８からの読み出し（Ｒｅａｄ）方向のアクセスを禁止する。しかし、このアクセスの禁止の順番は、一例である。インタリーブ制御回路１０５は、アクセス制御回路１０９に対して、記憶回路群Ａ１０８からの読み出し（Ｒｅａｄ）方向のアクセスを禁止した後、アクセス制御回路１１６に対して、記憶回路群Ｂ１１５からの読み出し（Ｒｅａｄ）方向のアクセスを禁止してもよい。
【００５６】
インタリーブ制御回路１０５のインタリーブ制御部１２３は、ファームウェア２０３で特定されたチャンネル番号に対応する最適なインタリーブ設定を使ってアクセス制御回路１１６のインタリーブ設定を変更する（ステップＳ１０）。図６の例では、アクセス制御回路１１６のチャンネル番号「＃５」に対応するインタリーブグループ番号が「２」から「１」に変更されている。つまり、チャンネル番号「＃５」に対応するインタリーブグループ番号が「１」に変更されるので、インタリーブグループ番号「１」が設定されているチャンネル番号「＃４」及び「＃５」に対応するインタリーブ設定は、２つの１−Ｗａｙインタリーブ設定から１つの２−Ｗａｙインタリーブ設定に変更される。尚、ファームウェア２０３が、チャンネル番号「＃４」及び「＃５」に対応するインタリーブ設定を２つの１−Ｗａｙインタリーブ設定から１つの２−Ｗａｙインタリーブ設定に変更したことによって、ＣＰＵ１０１からはメモリ上のデータにアクセスするアドレスが変更されたように見える。そのため、ＯＳ２０１、ファームウェア２０３、ドライバ２０２から見ると、記憶回路群Ｂ１１５に記憶している、インタリーブ設定変更後のアドレスに格納されているデータは、インタリーブ設定変更前のデータとは異なったデータとして見える。
【００５７】
インタリーブ制御回路１０５のデータコピー制御部１２４は、アクセス制御回路１０９の変更されるべきインタリーブ設定に係るチャンネル番号（「＃４」及び「＃５」）に対応するメモリ１１４Ｅ，１１４Ｆのデータを、アクセス制御回路１１６の変更されたインタリーブ設定に係るチャンネル番号（「＃４」及び「＃５」）に対応するメモリ１２１Ｅ，１２１Ｆにコピーする（ステップＳ１１）。インタリーブ制御回路１０５のデータコピー制御部１２４がメモリ１１４Ｅ，１１４Ｆから読み出すデータは、ＯＳ２０１のメモリアクセスを含むトランザクションを停止した時のデータである。
【００５８】
インタリーブ制御回路１０５のリード／ライト制御部１２２は、アクセス制御回路１１６に対する記憶回路群Ｂ１１５からの読み出し（Ｒｅａｄ）方向のアクセス禁止を解除する（ステップＳ１２）。ファームウェア２０３やインタリーブ制御回路１０５のデータコピー制御部１２４はコピー終了時にコピーが正常に終了したか否かの判定を行っても良い。
【００５９】
次に、インタリーブ制御回路１０５のリード／ライト制御部１２２は、アクセス制御回路１０９に対して、記憶回路群Ａ１０８からの読み出し（Ｒｅａｄ）方向のアクセスを禁止する（ステップＳ１３）。記憶回路群Ａ１０８のメモリ群１１４にデータが配置された後に、アクセス制御回路１０９のインタリーブ設定が変更されると、書き込んだデータと読み出したデータとの不整合が生じる。よって、リード／ライト制御部１２２は、アクセス制御回路１０９のデータ読み出しを禁止することで、アクセス制御回路１０９に不整合の生じているデータを使用できなくしている。
【００６０】
インタリーブ制御回路１０５のインタリーブ制御部１２３は、ファームウェア２０３で特定されたチャンネル番号に対応する最適なインタリーブ設定を使ってアクセス制御回路１０９のインタリーブ設定を変更する（ステップＳ１４）。図７の例では、アクセス制御回路１０９のチャンネル番号「＃５」に対応するインタリーブグループ番号が「２」から「１」に変更されている。つまり、チャンネル番号「＃「＃５」に対応するインタリーブグループ番号が「１」に変更されるので、チャンネル番号「＃４」及び「＃５」に対応するインタリーブ設定は２つの１−Ｗａｙインタリーブ設定から１つの２−Ｗａｙインタリーブ設定に変更される。
【００６１】
インタリーブ制御回路１０５のデータコピー制御部１２４は、アクセス制御回路１１６の変更されたインタリーブ設定に係るチャンネル番号（「＃４」及び「＃５」）に対応するメモリ１２１Ｅ，１２１Ｆのデータを、アクセス制御回路１０９の変更されたインタリーブ設定に係るチャンネル番号（「＃４」及び「＃５」）に対応するメモリ１１４Ｅ，１１４Ｆにコピーする（ステップＳ１５）。インタリーブ制御回路１０５のデータコピー制御部１２４がメモリ１２１Ｅ，１２１Ｆから読み出すデータは、ＯＳ２０１のメモリアクセスを含むトランザクションを停止した時のデータである。
【００６２】
インタリーブ制御回路１０５のリード／ライト制御部１２２は、アクセス制御回路１０９に対する記憶回路群Ａ１０８の読み出し（Ｒｅａｄ）方向のアクセス禁止を解除する（ステップＳ１６）。インタリーブ制御回路１０５のデータコピー制御部１２４は、ファームウェア２０３にコピーが終了したことを通知する（ステップＳ１７）。ここでも、ファームウェア２０３やインタリーブ制御回路１０５のデータコピー制御部１２４はコピー終了時にコピーが正常に終了したか判定を行っても良い。
【００６３】
ファームウェア２０３はメモリ群Ａ１１４及びメモリ群Ｂ１２１の読み出しデータの一致チェックを再開する（ステップＳ１８）。ファームウェア２０３はインタリーブ設定の変更処理が終了したことをドライバ２０２に通知し、ドライバ２０２はＯＳ２０１に対してメモリアクセスを含むトランザクションの再開を要求する（ステップＳ１９）。ＣＰＵ１０１は、ドライバ２０２からのＯＳ２０１に対するトランザクションの再開要求に応じて、メモリアクセスを含むトランザクションを再開する。つまり、サーバ１００はスリープモードから復帰して、メモリ群Ａ１１４及びメモリ群Ｂ１２１を用いたデータ処理を再開する。尚、上記の各ステップで取得する情報は、ＯＳ２０１やメモリコントローラ１０３の中に保存されており、ドライバ２０２やファームウェア２０３から適宜取得可能である。
【００６４】
図６〜８では、メモリが増加される場合のインタリーブ設定の変更処理を説明したが、メモリを削減する場合も、同様に図６〜８のインタリーブ設定の変更処理が実行される。つまり、図６〜８のインタリーブ設定の変更処理は、メモリの個数が変化するときに実行される。
【００６５】
以上説明したように、本実施の形態によれば、最適なインタリーブ設定に従ってアクセス制御回路１０９，１１６のインタリーブ設定の一部が変更され、インタリーブ設定が変更されたチャンネルに対応するデータのみがコピーされるので、データのコピー時間やインタリーブ設定の変更のためのサーバ１００の停止時間を短縮することができる。また、メモリコントローラ１０３内でデータコピーが完了し、サーバ１００の再起動を必要とせずにインタリーブ設定の変更が完了するので、データのコピー時間やインタリーブ設定の変更のためのサーバ１００の停止時間を短縮することができる。
【００６６】
また、サーバ１００は、冗長化したメモリのインタリーブ設定を交互に変更することによって、再起動を必要とせずに、インタリーブ設定を最適に変更することができる。さらに、サーバ１００は、メモリを増減した場合であっても、短時間でインタリーブの再設定を行うことができ、メモリアクセス帯域幅を向上することができる。
【符号の説明】
【００６７】
１００  サーバ
１０１  ＣＰＵ
１０２  Ｉ／Ｏデバイス
１０３  メモリコントローラ
１０４  制御レジスタ
１０５  インタリーブ制御回路
１０７  二重化制御回路
１０８  記憶回路群Ａ（Ｓｉｄｅ Ａ）
１０９，１１６  アクセス制御回路
１１４  メモリ群Ａ
１１４Ａ〜１１４Ｅ，１２１Ａ〜１２１Ｅ  メモリ
１１５  記憶回路群Ｂ（Ｓｉｄｅ Ｂ）
１２１  メモリ群Ｂ
１２２  リード／ライト制御部
１２３  インタリーブ制御部
１２４  データコピー制御部
【図１】
2012020505.tif 000003
【図２】
2012020505.tif 000004
【図３】
2012020505.tif 000005
【図４】
2012020505.tif 000006
【図５】
2012020505.tif 000007
【図６】
2012020505.tif 000008
【図７】
2012020505.tif 000009
【図８】
2012020505.tif 000010
【手続補正書】
【提出日】平成25年2月7日(2013.2.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データを第１の複数のメモリに分割して記憶する第１メモリ群と、前記データを第２の複数のメモリに分割して冗長に記憶する第２メモリ群とに接続するメモリ制御装置であって、
前記第１の複数のメモリに接続する複数のチャンネルを有し、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第１のインタリーブ設定に基づき、前記第１メモリ群にアクセスする第１の制御回路と、
前記第２の複数のメモリに接続する複数のチャンネルを有し、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第２のインタリーブ設定に基づき、前記第２メモリ群にアクセスする第２の制御回路と、
前記第１メモリ群及び前記第２メモリ群に含まれるメモリの個数が変化した場合に、変化後のメモリの個数に基づいて、第３のインタリーブ設定を決定する決定手段と、
前記第３のインタリーブ設定と前記第１及び第２のインタリーブ設定とを比較し、データの分割数が異なるチャンネルを特定する特定手段と、
前記特定されたチャンネルに対応する部分の第３のインタリーブ設定を使って前記第１及び第２のインタリーブ設定を変更する変更手段と、
前記第１のインタリーブ設定の変更に係るチャンネルに対応する第１のメモリのデータを前記第２のインタリーブ設定の変更に係るチャンネルに対応する第２のメモリにコピーし、前記第２のインタリーブ設定の変更に係るチャンネルに対応する第２のメモリのデータを前記第１のインタリーブ設定の変更に係るチャンネルに対応する第１のメモリにコピーするコピー手段と
を備えることを特徴とするメモリ制御装置。
【請求項２】
前記メモリ制御装置において、
前記決定手段は、前記第３のインタリーブ設定におけるデータの分割数を、ｍのｎ乗であり（ｍ，ｎ：０以上の整数）且つ前記第１メモリ群又は前記第２メモリ群に含まれるメモリの個数を超えない範囲で、最大値に設定することを特徴とする請求項１に記載のメモリ制御装置。
【請求項３】
前記メモリ制御装置において、
前記第１〜第３のインタリーブ設定は、いずれも前記複数のチャンネルの各々を識別するチャンネル番号と、各チャンネルが連続するデータのグループに属するか又は異なるデータのグループに属するかを識別するための番号とを含むことを特徴とする請求項１又は２に記載のメモリ制御装置。
【請求項４】
前記メモリ制御装置において、
前記変更手段が、前記特定されたチャンネルに対応する部分の第３のインタリーブ設定を使って前記第１のインタリーブ設定を変更した後に、前記コピー手段は、前記第２のインタリーブ設定の変更に係るチャンネルに対応する第２のメモリのデータを前記第１のインタリーブ設定の変更に係るチャンネルに対応する第１のメモリにコピーし、
前記変更手段が前記特定されたチャンネルに対応する部分の第３のインタリーブ設定を使って前記第２のインタリーブ設定を変更した後に、前記コピー手段は、前記第１のインタリーブ設定の変更に係るチャンネルに対応する第１のメモリにコピーされたデータを前記第２のインタリーブ設定の変更に係るチャンネルに対応する第２のメモリにコピーすることを特徴とする請求項１乃至３のいずれか１項に記載のメモリ制御装置。
【請求項５】
前記メモリ制御装置において、
前記コピー手段は、コピー終了時にデータのコピーが正常に終了したか否かを判定することを特徴とする請求項１乃至４のいずれか１項に記載のメモリ制御装置。
【請求項６】
前記メモリ制御装置は、
前記第１メモリ群及び前記第２メモリ群からのデータ読み出しを禁止する読出制御手段をさらに備え、
前記変更手段が前記特定されたチャンネルに対応する部分の第３のインタリーブ設定を使って前記第１のインタリーブ設定を変更する前に、前記読出制御手段は、前記第１メモリ群からのデータ読み出しを禁止し、前記変更手段が前記特定されたチャンネルに対応する部分の第３のインタリーブ設定を使って前記第２のインタリーブ設定を変更する前に、前記読出制御手段は、前記第２メモリ群からのデータ読み出しを禁止することを特徴とする請求項１乃至５のいずれか１項に記載のメモリ制御装置。
【請求項７】
データを第１の複数のメモリに分割して記憶する第１メモリ群と、前記データを第２の複数のメモリに分割して冗長に記憶する第２メモリ群と、前記第１及び第２のメモリ群に接続するメモリ制御装置と、前記メモリ制御装置を介して前記第１及び第２のメモリ群にデータを読み書きする演算処理装置とを有する情報処理装置であって、
前記メモリ制御装置は、
前記第１の複数のメモリに接続する複数のチャンネルを有し、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第１のインタリーブ設定に基づき、前記第１メモリ群にアクセスする第１の制御回路と、
前記第２の複数のメモリに接続する複数のチャンネルを有し、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第２のインタリーブ設定に基づき、前記第２メモリ群にアクセスする第２の制御回路と、
前記第１メモリ群及び前記第２メモリ群に含まれるメモリの個数が変化した場合に、変化後のメモリの個数に基づいて、第３のインタリーブ設定を決定する決定手段と、
前記第３のインタリーブ設定と前記第１及び第２のインタリーブ設定とを比較し、データの分割数が異なるチャンネルを特定する特定手段と、
前記特定されたチャンネルに対応する部分の第３のインタリーブ設定を使って前記第１及び第２のインタリーブ設定を変更する変更手段と、
前記第１のインタリーブ設定の変更に係るチャンネルに対応する第１のメモリのデータを前記第２のインタリーブ設定の変更に係るチャンネルに対応する第２のメモリにコピーし、前記第２のインタリーブ設定の変更に係るチャンネルに対応する第２のメモリのデータを前記第１のインタリーブ設定の変更に係るチャンネルに対応する第１のメモリにコピーするコピー手段と
を備えることを特徴とする情報処理装置。
【請求項８】
データを第１の複数のメモリに分割して記憶する第１メモリ群、及び前記データを第２の複数のメモリに分割して冗長に記憶する第２メモリ群に接続されるメモリ制御装置の制御方法であって、
前記第１メモリ群及び前記第２メモリ群に含まれるメモリ数が変化した場合に、当該メモリ数の情報及びデータの経路に基づいて、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第３のインタリーブ設定を決定し、
前記第３のインタリーブ設定と前記メモリ制御装置に含まれる第１の制御回路の第１のインタリーブ設定及び前記メモリ制御装置に含まれる第２の制御回路の第２のインタリーブ設定とを比較し、前記第１の制御回路及び前記第２の制御回路の各々に含まれる複数のチャンネルのうち、データの分割数が異なるチャンネルを特定し、
前記特定されたチャンネルに対応する部分の第３のインタリーブ設定を使って前記第１及び第２のインタリーブ設定を変更し、
前記第１のインタリーブ設定の変更に係るチャンネルに対応する第１のメモリのデータを前記第２のインタリーブ設定の変更に係るチャンネルに対応する第２のメモリにコピーし、前記第２のインタリーブ設定の変更に係るチャンネルに対応する第２のメモリのデータを前記第１のインタリーブ設定の変更に係る第１のチャンネルに対応するメモリにコピーする、
ことを特徴とするメモリ制御装置の制御方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００５
【補正方法】変更
【補正の内容】
【０００５】
図１、図２は、サーバのインタリーブ設定を変更する方法を示す模式図である。図１、図２において、サーバ３０は、ＯＳ（Operating System）２１、ドライバ２２、ファームウェア２３、及びハードウェア２４を備えている。ハードウェア２４は、ＣＰＵ（Central Processing Unit）１、メモリコントローラ３、メモリ４〜７，２５，２６を含む。メモリ４，５，２５はメモリ群１２を構成し、メモリ６，７，２６はメモリ群１３を構成する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１８
【補正方法】変更
【補正の内容】
【００１８】
上記目的を達成するため、明細書に開示されたメモリ制御装置は、データを第１の複数のメモリに分割して記憶する第１メモリ群と、前記データを第２の複数のメモリに分割して冗長に記憶する第２メモリ群とに接続するメモリ制御装置であって、前記第１の複数のメモリに接続する複数のチャンネルを有し、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第１のインタリーブ設定に基づき、前記第１メモリ群にアクセスする第１の制御回路と、前記第２の複数のメモリに接続する複数のチャンネルを有し、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第２のインタリーブ設定に基づき、前記第２メモリ群にアクセスする第２の制御回路と、前記第１メモリ群及び前記第２メモリ群に含まれるメモリの個数が変化した場合に、変化後のメモリの個数に基づいて、第３のインタリーブ設定を決定する決定手段と、前記第３のインタリーブ設定と前記第１及び第２のインタリーブ設定とを比較し、データの分割数が異なるチャンネルを特定する特定手段と、前記特定されたチャンネルに対応する部分の第３のインタリーブ設定を使って前記第１及び第２のインタリーブ設定を変更する変更手段と、前記第１のインタリーブ設定の変更に係るチャンネルに対応する第１のメモリのデータを前記第２のインタリーブ設定の変更に係るチャンネルに対応する第２のメモリにコピーし、前記第２のインタリーブ設定の変更に係るチャンネルに対応する第２のメモリのデータを前記第１のインタリーブ設定の変更に係るチャンネルに対応する第１のメモリにコピーするコピー手段とを備える。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１９
【補正方法】変更
【補正の内容】
【００１９】
明細書に開示された情報処理装置は、データを第１の複数のメモリに分割して記憶する第１メモリ群と、前記データを第２の複数のメモリに分割して冗長に記憶する第２メモリ群と、前記第１及び第２のメモリ群に接続するメモリ制御装置と、前記メモリ制御装置を介して前記第１及び第２のメモリ群にデータを読み書きする演算処理装置とを有する情報処理装置であって、前記メモリ制御装置は、前記第１の複数のメモリに接続する複数のチャンネルを有し、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第１のインタリーブ設定に基づき、前記第１メモリ群にアクセスする第１の制御回路と、前記第２の複数のメモリに接続する複数のチャンネルを有し、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第２のインタリーブ設定に基づき、前記第２メモリ群にアクセスする第２の制御回路と、前記第１メモリ群及び前記第２メモリ群に含まれるメモリの個数が変化した場合に、変化後のメモリの個数に基づいて、第３のインタリーブ設定を決定する決定手段と、前記第３のインタリーブ設定と前記第１及び第２のインタリーブ設定とを比較し、データの分割数が異なるチャンネルを特定する特定手段と、前記特定されたチャンネルに対応する部分の第３のインタリーブ設定を使って前記第１及び第２のインタリーブ設定を変更する変更手段と、前記第１のインタリーブ設定の変更に係るチャンネルに対応する第１のメモリのデータを前記第２のインタリーブ設定の変更に係るチャンネルに対応する第２のメモリにコピーし、前記第２のインタリーブ設定の変更に係るチャンネルに対応する第２のメモリのデータを前記第１のインタリーブ設定の変更に係るチャンネルに対応する第１のメモリにコピーするコピー手段とを備える。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００２０
【補正方法】変更
【補正の内容】
【００２０】
明細書に開示されたメモリ制御装置の制御方法は、データを第１の複数のメモリに分割して記憶する第１メモリ群、及び前記データを第２の複数のメモリに分割して冗長に記憶する第２メモリ群に接続されるメモリ制御装置の制御方法であって、前記第１メモリ群及び前記第２メモリ群に含まれるメモリ数が変化した場合に、当該メモリ数の情報及びデータの経路に基づいて、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第３のインタリーブ設定を決定し、前記第３のインタリーブ設定と前記メモリ制御装置に含まれる第１の制御回路の第１のインタリーブ設定及び前記メモリ制御装置に含まれる第２の制御回路の第２のインタリーブ設定とを比較し、前記第１の制御回路及び前記第２の制御回路の各々に含まれる複数のチャンネルのうち、データの分割数が異なるチャンネルを特定し、前記特定されたチャンネルに対応する部分の第３のインタリーブ設定を使って前記第１及び第２のインタリーブ設定を変更し、前記第１のインタリーブ設定の変更に係るチャンネルに対応する第１のメモリのデータを前記第２のインタリーブ設定の変更に係るチャンネルに対応する第２のメモリにコピーし、前記第２のインタリーブ設定の変更に係るチャンネルに対応する第２のメモリのデータを前記第１のインタリーブ設定の変更に係るチャンネルに対応する第１のメモリにコピーする。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００４７
【補正方法】変更
【補正の内容】
【００４７】
サーバ１００のメモリ群Ａ１１４及びメモリ群Ｂ１２１に新たにメモリ１１４Ｆ，１２１Ｆをそれぞれ追加する場合、メモリコントローラ１０３は、ＣＰＵ１０１がＯＳ２０１のメモリアクセスを含むトランザクションを停止した状態で、記憶回路群Ａ１０８及び記憶回路群Ｂ１１５を交互にインタリーブ設定を変更する。より具体的にはメモリ群Ａ１１４及びメモリ群Ｂ１２１に新たにメモリ１１４Ｆ，１２１Ｆをそれぞれ追加する場合、ファームウェア２０３が、追加されたメモリ構成での最適なインタリーブ設定を決定し、最適なインタリーブ設定とアクセス制御回路１１６に設定されている現在のインタリーブ設定とを比較し、データの分割数が異なるチャンネルを特定する。そして、インタリーブ制御回路１０５が、特定されたチャンネルに対応するアクセス制御回路１１６のインタリーブ設定を変更し、特定されたチャンネルに対応するメモリ群Ａ１１４のデータを、特定されたチャンネルに対応するメモリ群Ｂ１２１に新たなインタリーブ設定でコピーする。例えば、インタリーブ制御回路１０５は、２つの１−Ｗａｙインタリーブ設定のチャンネル＃４，＃５に対応するメモリ１１４Ｅ，１１４Ｆのデータをメモリ１２１Ｅ，１２１Ｆに２−Ｗａｙインタリーブ設定でコピーする。さらに、インタリーブ制御回路１０５が、特定されたチャンネルに対応するアクセス制御回路１０９のインタリーブ設定を変更し、特定されたチャンネルに対応するメモリ群Ｂ１２１のデータを、特定されたチャンネルに対応するメモリ群Ａ１１４に新たなインタリーブ設定でコピーする。例えば、インタリーブ制御回路１０５は、チャンネル＃４，＃５に対応するメモリ１２１Ｅ，１２１Ｆのデータをメモリ１１４Ｅ，１１４Ｆに２−Ｗａｙインタリーブ設定でコピーする。このように、インタリーブ制御回路１０５は、データの分割数が異なるチャンネルに対応するアクセス制御回路１１６，１０９のインタリーブ設定を順番に変更し、データの分割数が異なるチャンネルに対応するメモリのデータを新たなインタリーブ設定を用いてコピーすることにより、サーバ１００におけるメモリインタリーブの再設定を行う。従って、メモリ数の変更に応じて変更されるインタリーブ設定に関連するチャンネルのデータのみがコピーされる。メモリ数の変更に応じたメモリインタリーブの再設定は、メモリ数が増加したら増加した数に合わせてデータを分割して新たなインタリーブ設定を用いてメモリに記憶し、メモリ数が削減したら削減した数に合わせてデータを分割して新たなインタリーブ設定を用いてメモリに記憶することである。
【国際調査報告】
2012020505.tif 000011
2012020505.tif 000012