(57)【特許請求の範囲】
【請求項１】
冗長化したメモリを有する情報処理装置において、
複数の記憶領域を有し、記憶容量を可変可能な第１メモリと、
複数の記憶領域を有し、記憶容量を可変可能で前記第１メモリと冗長化した第２メモリと、
前記第１メモリの各記憶領域にメモリインタリーブ方式で格納されたデータを前記第２メモリの各記憶領域にそれぞれ対応付けて前記メモリインタリーブ方式で記憶するメモリコントローラと、を有し、
前記メモリコントローラは、前記第１メモリと前記第２メモリの記憶容量に新たな記憶領域を追加する変更があった場合、前記第２メモリに記憶されたデータを、前記第１メモリの記憶容量の前記変更に対応した変更した後の記憶領域にそれぞれ書き込み、前記第１メモリの前記変更した後の記憶領域に書き込まれたデータを、前記第２メモリの記憶容量の前記変更に対応した変更した後の記憶領域にそれぞれ書き込むように制御する、
ことを特徴とする情報処理装置。
【請求項２】
複数の記憶領域を有し、記憶容量を可変可能な第１メモリと第２メモリを冗長化して有し、前記第１メモリの各記憶領域にメモリインタリーブ方式で格納されたデータを前記第２メモリの各記憶領域にそれぞれ対応付けて前記メモリインタリーブ方式で記憶する情報処理装置におけるデータの記憶領域を変更するメモリ制御方法において、
前記第１メモリと前記第２メモリの記憶容量に新たな記憶領域を追加する変更があった場合、前記第２メモリに記憶されたデータを、前記第１メモリの記憶領域の前記変更に対応した新たな記憶領域にそれぞれ書き込み、
前記第１メモリの新たな記憶領域に書き込まれたデータを、前記第２メモリの記憶容量の前記変更に対応した新たな記憶領域にそれぞれ書き込む
ことを特徴とするメモリ制御方法。
【請求項３】
データを第１の複数のメモリにメモリインタリーブ方式で分割して記憶する第１のメモリ群と前記データを第２の複数のメモリに前記メモリインタリーブ方式で分割して冗長に記憶する第２のメモリ群に接続されるメモリ制御装置において、
前記第１のメモリ群に接続されてデータの読み書きを行うとともに、前記第１のメモリ群に第３のメモリが追加され、前記第２のメモリ群に第４のメモリが追加される場合に
は、前記第３のメモリの追加後に、前記第１のメモリ群に分割して記憶されていた前記データを読み出す第１のアクセス制御回路と、
前記第２のメモリ群に接続されてデータの読み書きを行うとともに、前記第１のメモリ群に第３のメモリが追加され、前記第２のメモリ群に第４のメモリが追加される場合に
は、前記第１のアクセス制御回路が前記追加後に第１のメモリ群から読み出した前記データを、前記第４のメモリが追加された後の第２のメモリ群に分割して記憶する第２のアクセス制御回路と、
を有することを特徴とするメモリ制御装置。
【請求項４】
請求項３に記載の前記メモリ制御装置において、
前記第２のアクセス制御回路はさらに、
前記第４のメモリが追加された後の第２のメモリ群に分割して記憶された前記データを読み出し、
前記第１のアクセス制御回路はさらに、
前記第２のアクセス制御回路が前記追加された後の第２のメモリ群から読み出した前記データを、前記第３のメモリを追加後の第１のメモリ群に分割して記憶することを特徴とするメモリ制御装置。    
【請求項５】
データを第１の複数のメモリにメモリインタリーブ方式で分割して記憶する第１のメモリ群と前記データを第２の複数のメモリに前記メモリインタリーブ方式で分割して冗長に記憶する第２のメモリ群に接続されるとともに、前記第１のメモリ群に接続されてデータの読み書きを行う第１のアクセス制御回路と前記第２のメモリ群に接続されてデータの読み書きを行う第２のアクセス制御回路を有するメモリ制御装置の制御方法において、
前記第１のメモリ群に第３のメモリが追加されるステップと、
前記第２のメモリ群に第４のメモリが追加されるステップと、
前記第１のアクセス制御回路が、前記第３のメモリの追加後に、前記追加前の前記第１のメモリ群に分割して記憶されていた前記データを読み出すステップと、
前記第２のアクセス制御回路が、前記第１のアクセス制御回路が前記追加後の第１のメモリ群から読み出した前記データを、前記第４のメモリが追加された後の第２のメモリ群に分割して記憶するステップと、
を有することを特徴とするメモリ制御方法。
【請求項６】
請求項５に記載の前記メモリ制御方法において、
前記第２のアクセス制御回路が、前記第４のメモリが追加された後の第２のメモリ群に分割して記憶された前記データを読み出すステップと、
前記第１のアクセス制御回路が、前記第２のアクセス制御回路が前記追加された後の第２のメモリ群から読み出した前記データを、前記第３のメモリが追加後の第１のメモリ群に分割して記憶するステップと、
を有することを特徴とするメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、メモリ制御方法、及びメモリ制御装置に関する。
【背景技術】
【０００２】
情報処理装置としてのサーバには、冗長化されたメモリを有する場合がある。これにより冗長化されたメモリのいずれかにエラーが発生しても、正常動作している他のメモリを用いて、サーバは継続して処理を実行することができる。またサーバはメモリアクセスをより高速化するため、インタリーブ機能を用いてメモリアクセスを行うものがある。すなわち、メモリへのデータの書き込み時に、連続するアドレスのデータを分割して、メモリの分割された領域であるウェイ毎のインタリーブブロックに配置する。そして、書き込みを行ったデータを読み込む場合には、ウェイ毎のインタリーブブロックに配置された連続するアドレスのデータを並列に読み込むことにより、メモリアクセスの高速化を図る。ここで、メモリが２つのインタリーブブロックに分割される場合のインタリーブを、２−Ｗａｙ・インタリーブといい、メモリが４つのインタリーブブロックに分割される場合のインタリーブを４−Ｗａｙ・インタリーブという。【０００３】
しかしながら、例えばサーバが２−Ｗａｙ・インタリーブの設定に基づいてメモリ上にデータを格納した後に当該２−Ｗａｙ・インタリーブを例えば４−Ｗａｙ・インタリーブの設定に変更した場合には、書き込みアドレスと読み出しアドレスが一致しない。そのため、メモリに書き込んだデータとメモリからデータを読みだしたデータに不整合が発生することになる。そのため、例えば、メモリを追加することにより、サーバのインタリーブ設定を変更する必要が生じた場合には、サーバの動作を停止後、サーバの再起動処理後にインタリーブ設定の変更を行っていた。
【発明の開示】
【０００４】
（発明が解決しようとする課題）
本発明に係るサーバは、メモリを冗長構成し、メモリ追加時のデータ管理を行うことを実現する。
【０００５】
（課題を解決するための手段）
本実施例に係るサーバの一側面によれば、冗長化したメモリを有する情報処理装置において、複数の記憶領域を有し、記憶容量を可変可能な第１メモリと、複数の記憶領域を有し、記憶容量を可変可能で前記第１メモリと冗長化した第２メモリと、前記第１メモリの各記憶領域にメモリインタリーブ方式で格納されたデータを前記第２メモリの各記憶領域にそれぞれ対応付けて前記メモリインタリーブ方式で記憶するメモリコントローラと、を有し、前記メモリコントローラは、前記第１メモリと前記第２メモリの記憶容量に新たな記憶領域を追加する変更があった場合、前記第２メモリに記憶されたデータを、前記第１メモリの記憶容量の前記変更に対応した変更した後の記憶領域にそれぞれ書き込み、前記第１メモリの前記変更した後の記憶領域に書き込まれたデータを、前記第２メモリの記憶容量の前記変更に対応した変更した後の記憶領域にそれぞれ書き込むように制御する、ことを特徴とする。
【０００６】
また本実施例に係るメモリ制御方法の一側面によれば、複数の記憶領域を有し、記憶容量を可変可能な第１メモリと第２メモリを冗長化して有し、前記第１メモリの各記憶領域にメモリインタリーブ方式で格納されたデータを前記第２メモリの各記憶領域にそれぞれ対応付けて前記メモリインタリーブ方式で記憶する情報処理装置におけるデータの記憶領域を変更するメモリ制御方法において、前記第１メモリと前記第２メモリの記憶容量に新たな記憶領域を追加する変更があった場合、前記第２メモリに記憶されたデータを、前記第１メモリの記憶領域の前記変更に対応した新たな記憶領域にそれぞれ書き込み、前記第１メモリの新たな記憶領域に書き込まれたデータを、前記第２メモリの記憶容量の前記変更に対応した新たな記憶領域にそれぞれ書き込むことを特徴とする。
【０００７】
また本実施例に係るメモリ制御装置の一側面によれば、
データを第１の複数のメモリにメモリインタリーブ方式で分割して記憶する第１のメモリ群と前記データを第２の複数のメモリに前記メモリインタリーブ方式で分割して冗長に記憶する第２のメモリ群に接続されるメモリ制御装置において、前記第１のメモリ群に接続されてデータの読み書きを行うとともに、前記第１のメモリ群に第３のメモリが追加され、前記第２のメモリ群に第４のメモリが追加される場合には、前記第３のメモリの後に、前記第１のメモリ群に分割して記憶されていた前記データを読み出す第１のアクセス制御回路と、前記第２のメモリ群に接続されてデータの読み書きを行うとともに、前記第１のメモリ群に第３のメモリが追加され、前記第２のメモリ群に第４のメモリが追加される場合には、前記第１のアクセス制御回路が前記追加後に第１のメモリ群から読み出した前記データを、前記第４のメモリが追加された後の第２のメモリ群に分割して記憶する第２のアクセス制御回路とを有することを特徴とする。
【０００８】
また本実施例に係るメモリ制御方法の一側面によれば、データを第１の複数のメモリにメモリインタリーブ方式で分割して記憶する第１のメモリ群と前記データを第２の複数のメモリに前記メモリインタリーブ方式で分割して冗長に記憶する第２のメモリ群に接続されるとともに、前記第１のメモリ群に接続されてデータの読み書きを行う第１のアクセス制御回路と前記第２のメモリ群に接続されてデータの読み書きを行う第２のアクセス制御回路を有するメモリ制御装置の制御方法において、前記第１のメモリ群に第３のメモリが追加されるステップと、前記第２のメモリ群に第４のメモリが追加されるステップと、前記第１のアクセス制御回路が、前記第３のメモリの追加後に、前記追加前の前記第１のメモリ群に分割して記憶されていた前記データを読み出すステップと、前記第２のアクセス制御回路が、前記第１のアクセス制御回路が前記追加後の第１のメモリ群から読み出した前記データを、前記第４のメモリが追加された後の第２のメモリ群に分割して記憶するステップと、を有することを特徴とする。 
【０００９】
（発明の効果）
本発明に係る情報処理装置によれば、冗長構成されたメモリを有する場合において、再起動を必要とせずにインタリーブ設定の変更を行うことができる。
【図面の簡単な説明】
【００１０】
【図１】本実施例に係るサーバ１００のハードブロック図である。
【図２】本実施例に係るサーバ１００のインタリーブ設定の変更を示す模式図である。
【図３】本実施例に係るサーバ１００のインタリーブ設定の変更を示す模式図である。
【図４】本実施例に係るサーバ１００のインタリーブ設定に係るフローチャートである。
【符号の説明】
【００１１】
１００…サーバ
１０１…ＣＰＵ
１０２…Ｉ／Ｏデバイス
１０３…メモリコントローラ
１０４…メモリ
１０５…メモリ
１０６…メモリ
１０７…メモリ
１０８…レジスタ
１０９…二重化制御回路
１１０…アクセス制御回路
１１１…アクセス制御回路
１１２…メモリ群Ａ
１１３…メモリ群Ｂ
１１４…記憶回路群Ａ（Ｓｉｄｅ  Ａ）
１１５…記憶回路群Ｂ（Ｓｉｄｅ  Ｂ）
１１６…ＲＯＭ
２０１…ＯＳ
２０２…ドライバ
２０３…ファームウェア
２０４…ハードウェア
【発明を実施するための最良の形態】
【００１２】
［１．本実施例の概要］
本実施例では、図１に示すサーバ１００のインタリーブ設定の変更について説明する。本実施例に係るサーバ１００は、再起動せずに、メモリ追加に伴うインタリーブ設定を最適に変更可能とするものである。本実施例におけるサーバ１００は、互いに冗長化したメモリ群Ａ１１２、１１３を有し、それぞれのメモリ群Ａ１１２、１１３毎にインタリーブしてデータアクセスするサーバである。以下、図１を用いて本実施例に係るサーバの動作について説明する。【００１３】
［２．サーバ１００］
図１は本実施例に係るサーバ１００のハードブロック図である。サーバ１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）デバイス１０２、メモリコントローラ１０３、メモリ１０４、１０５、１０６、１０７、レジスタ１０８、二重化制御回路１０９、アクセス制御回路１１０、１１１、及びＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１１６から構成されている。メモリ１０４とメモリ１０５はメモリ群Ａ１１２を形成し、またメモリ１０６とメモリ１０７はメモリ群Ｂ１１３を形成する。さらにアクセス制御回路１１０とメモリ群Ａ１１２は記憶回路群Ａ（Ｓｉｄｅ  Ａ）１１４を形成し、アクセス制御回路１１１とメモリ群Ｂ１１３は記憶回路群Ｂ（Ｓｉｄｅ  Ｂ）１１５を形成する。そして記憶回路群Ａ１１４とＢ面１１５はミラーリング構造をとっている。つまりサーバ１０３は冗長化したメモリ群Ａ１１２、メモリ群Ｂ１１３を有している。【００１４】
ここで、サーバ１００は、高信頼化を実現するためにメモリ群Ａ１１２とメモリ群Ｂ１１３の間で二重化しており、メモリが一方のメモリ群に新たに追加される場合または削減される場合には、二重化を保つよう他方のメモリ群に対しても対称に追加または削減される。【００１５】
そしてサーバ１００は、インタリーブを用いた書き込み制御により、連続するアドレスのデータをメモリ群Ａ１１２に記憶する。同様に、サーバ１００は、インタリーブを用いた書き込み制御により、同一の連続するアドレスのデータをメモリ群Ｂ１１３にも冗長して記憶する。より具体的にはアクセス制御回路１１０はメモリ１０４とメモリ１０５に連続するアドレスのデータをインタリーブ制御を用いて書き込み、またはインタリーブ制御を用いて読み出すことにより、データアクセスを行う。ここで、インタリーブとは、メモリコントローラ１０３が連続するアドレスを有するデータを一定の分割単位（例えば、メモリバンク）であるウェイごとに分割し、分割したデータを当該ウェイへ書き込み、または当該ウェイから読み込むことである。換言するとメモリ１０４とメモリ１０５には連続したメモリアドレスが割り当てられている。そしてメモリコントローラ１０３がメモリ１０４とメモリ１０５の境界をまたいだ連続アドレスへデータアクセスする。同様にしてアクセス制御回路１１１は、メモリ１０６とメモリ１０７に連続するアドレスのデータをインタリーブ制御を用いて書き込み、またはインタリーブ制御を用いて読み出すことにより、データアクセスを行う。すなわちメモリ１０６とメモリ１０７には連続したメモリアドレスが割り当てられており、メモリコントローラ１０３はメモリ１０６とメモリ１０７の境界をまたいだ連続アドレスへデータアクセスする。本実施例では、メモリ群Ａ１１２とメモリ群Ｂはミラーリングにより二重化されており、サーバ１００は記憶回路群Ａのメモリ１０４と記憶回路群Ｂのメモリ１０６それぞれには同一のデータ、記憶回路群Ａのメモリ１０５と記憶回路群Ｂのメモリ１０７それぞれにも同一のデータが記憶する。以下、サーバ１００が有する各ユニットの動作、機能について説明し、サーバ１００が実行するインタリーブの再設定手順を説明する。【００１６】
［２．１．ＣＰＵ１０１］
演算処理装置としてのＣＰＵ１０１は、サーバ１００における演算処理を行う。サーバ１００が実行する動作は、ＣＰＵ１０１が実行するプログラムが有する命令やサーバ１００に接続されるクライアント装置からの要求などに応じたデータのメモリからの読み出し、メモリへの書き込みなどである。本実施例に係るサーバ１００はネットワークコントローラ等のＩ／Ｏデバイス１０２を介してクライアント装置などの外部装置とデータのやりとりを行う。そしてＣＰＵ１０１はメモリコントローラ１０３を介してメモリに対するアクセスを行い、メモリコントローラ１０３はメモリ１０４〜１０７からデータを読み出し、またメモリ１０４〜１０７へデータを書きこむ。【００１７】
そしてＣＰＵ１０１は、インタリーブ設定を変更するに際して、メモリ１０４〜１０７を用いたデータ処理を停止するようにメモリコントローラ１０３を制御する。具体的にはＣＰＵ１０１は、サーバ１００をスリープモードに設定して、図２に示すＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）２０１によるメモリアクセス等のトランザクションを停止する。サーバ１００上で実行されるソフトウェアの側面から見ると、図２に示すドライバ２０２がＯＳ２０１のトランザクションを停止する機能を有するソフトウェアであり、ドライバ２０２がＯＳ２０１のトランザクションを停止する。ここでトランザクションとは、サーバ１００が実行するいくつかのセッションをひとまとまりにした処理のことである。またセッションは、サーバ１００において上記のクライアント装置からの要求によりデータベースなどを更新する際に発行されるデータベース管理システムにおける問い合わせ及び問い合わせに対する応答の単位である。またドライバ２０２はＯＳ２０１に組み込まれている。【００１８】
ＣＰＵ１０１はメモリのインタリーブ設定を、例えば２−Ｗａｙから３−Ｗａｙに変更した場合、再びメモリ１０４〜１０７、及び新たに追加したメモリを用いたデータ処理を再開する。【００１９】
［２．２．メモリコントローラ１０３］
メモリコントローラ１０３は、レジスタ１０８、二重化制御回路１０９、及びアクセス制御回路１１０、１１１、ＲＯＭ１１６を有している。【００２０】
メモリコントローラ１０３は、１）二重化されている記憶回路群Ａ１１４、記憶回路群Ｂ１１５からの読み出し方向のアクセスを禁止する機能を有する。またメモリコントローラ１０３は、２）二重化しているメモリ群Ａ１１４、メモリ群１１５から読み出したデータが同一であるかのチェックを行う機能を停止する機能を有する。さらに、メモリコントローラ１０３は、３）二重化している記憶回路群Ａ１１４、記憶回路群Ｂ１１５のインタリーブ設定を制御する機能を有する。そして、メモリコントローラ１０３は、４）二重化しているメモリ群Ａ１１４、メモリ群１１５から読み出したデータが同一であるかのチェックを行う機能を上記２）の停止状態から再開する機能を有する。【００２１】
また図２に示すファームウェア２０３は、図１に示すサーバ１００に内蔵されたＲＯＭ１１６に記憶される。ファームウェア２０３はハードウェア２０４の起動処理や終了処理等の基本的な制御を行なうためにサーバ１００に組み込まれたソフトウェアである。ファームウェア２０３は、メモリコントローラ１０３のインタリーブ設定、インタリーブの再設定に際して行うデータのコピー処理（データをメモリ１０４〜１０７への書き込み処理）、コピー処理が終了したことをドライバ２０２に通知する処理などを実行する。ファームウェア２０３はメモリコントローラ１０３上で動作するソフトウェアである。すなわち、ファームウェア２０３の処理は、メモリコントローラ１０３が実行することにより実現される。【００２２】
レジスタ１０８には、メモリコントローラ１０３が処理を実行するための設定情報が記憶されている。メモリコントローラ１０３で実行されるファームウェア２０３が用いる設定情報であって、当該設定情報に基づき、二重化制御回路１０９、アクセス制御回路１１０、１１１が処理を実行する。二重化制御回路１０９は、二重化されたメモリ１０４とメモリ１０６からの読み出しデータの一致チェックを行う。又、二重化制御回路１０９は、二重化されたメモリ１０５とメモリ１０７からの読み出しデータの一致チェックを行う。さらに、二重化制御回路１０９は、記憶回路群Ａ１１４、記憶回路群Ｂ１１５の二重化を保つ制御を行う。具体的に二重化制御回路１０９が実行する二重化制御とは、メモリ群Ａ１１２とメモリ群Ｂ１１３に記憶するデータを同一にする制御であり、メモリ群Ａ１１２にデータをインタリーブ制御を用いて書き込んだら、メモリ群Ｂ１１３にも同一のデータをインタリーブ制御を用いて書き込む制御である。記憶制御回路群Ａ１１４のアクセス制御回路１１０がメモリ１０４、１０５のデータへのアクセスを制御し、記憶制御回路群Ｂ１１５のアクセス制御回路１１１がメモリ１０６、１０７のデータへのアクセスを制御する。具体的にはアクセス制御回路１１０にはメモリ１０４、１０５へのインタリーブ設定、読み出し／書き込み設定に係る設定情報が格納されている。アクセス制御回路１１１にはメモリ１０６、１０７へのインタリーブ設定、読み出し／書き込み設定に係る設定情報が格納されている。インタリーブ設定、読み出し／書き込み設定に係る設定情報は、レジスタ１０８に格納されていてもよい。そしてアクセス制御回路１１０がメモリ１０４、１０５へのインタリーブ設定、読み出し／書き込み設定に係る設定情報をレジスタ１０８から読み出し、アクセス制御回路１１１がメモリ１０６、１０７へのインタリーブ設定、読み出し／書き込み設定に係る設定情報をレジスタ１０８から読み出すものであってもよい。【００２３】
サーバ１００のメモリ群Ａ１１２、メモリ群Ｂ１１３に新たにメモリを追加する場合、本実施例に係るメモリコントローラ１０３は、ＣＰＵ１０１がＯＳ２０１のトランザクションを停止した状態で、記憶回路群Ａ１１４及び記憶回路群Ｂ１１５を交互にインタリーブ設定を変更する。より具体的にはメモリ群Ａ１１２、メモリ群Ｂ１１３に新たにメモリを追加する場合、メモリコントローラ１０３はメモリ群Ａ１１２に記憶するデータを消去する。そして、メモリコントローラ１０３は、メモリ数の変更に応じてメモリを新たに追加したメモリ群Ａ１１２へメモリ群Ｂ１１３に記憶しているデータを新たなインタリーブ設定で書きこむ。例えば、メモリ群Ｂ１１３に２−Ｗａｙのインタリーブ設定で記憶するデータを、メモリ群Ａ１１２に３−Ｗａｙの新たなインタリーブ設定でデータを書き込む。そしてさらにメモリコントローラ１０３はメモリ群Ｂ１１３に記憶するデータを消去し、メモリ数の変更に応じてメモリを新たに追加したメモリ群Ｂ１１３へメモリ群Ａ１１２に記憶しているデータを新たなインタリーブ設定で書き込む。例えば、メモリ群Ａ１１２に３−Ｗａｙのインタリーブ設定で記憶するデータを、メモリ群Ｂ１１３に３−Ｗａｙの新たなインタリーブ設定でデータを書き込む。このようにして、メモリコントローラ１０３は、メモリ群Ａ１１２が格納するデータをメモリ群Ｂ１１３に書き込む際に、新たなインタリーブ設定を用いて書き込むことにより、サーバ１００におけるインタリーブの再設定を行う。具体的にメモリ数の変更に応じたインタリーブの再設定は、メモリ数を増加したら増加した数に合わせてデータを分割して新たなインタリーブ設定を用いてメモリに記憶し、メモリ数を削減したら削減した数に合わせてデータを分割して新たなインタリーブ設定を用いてメモリに記憶することである。【００２４】
［３．インタリーブ設定の変更手順］
図２、図３は本実施例に係るサーバ１００のインタリーブ設定の変更を示す模式図である。図２は、サーバ１００上で動作するＯＳ２０１、ドライバ２０２、ファームウェア２０３、及びサーバ１００を構成するハードウェア２０４を示したブロック図である。ハードウェア２０４はＣＰＵ１０１、メモリコントローラ１０３、メモリ１０４〜１０７を含むものである。【００２５】
図２では、サーバ１００にメモリ２０５、２０６を追加してから二重化した記憶回路群Ｂ１１５のインタリーブ設定を完了した状態までを示している。また図３では、二重化したもう一方のＡ面１１４のインタリーブを設定した状態までを示している。本実施例では、サーバ１００にメモリ２０５、２０６を追加することによって、インタリーブ設定を２−Ｗａｙインタリーブ設定から３−Ｗａｙインタリーブ設定に変更する場合を説明する。ｎ−Ｗａｙインタリーブ設定とは、連続するアドレスのデータをｎ分割して、ｎ個のメモリに書き込み／ｎ個のメモリから読み出す設定のことである。また上記に示したようにドライバ２０２はＣＰＵ１０１で動作するソフトウェアであり、またファームウェア２０３はメモリコントローラ１０３上で動作するソフトウェアである。そのため以下ドライバ２０２の処理手順は、ＣＰＵ１０１がドライバ２０２を実行することにより実現される。またファームウェア２０３の処理手順は、メモリコントローラ１０３がファームウェア２０３を実行することにより実現される。【００２６】
まずサーバ１００にメモリ２０５、２０６を追加する。メモリ２０５は記憶回路群Ａ１１４に追加され、メモリ２０６は記憶回路群Ｂ１１５に追加されると、ファームウェア２０３、及びメモリコントローラ１０３は追加されたメモリ２０５、２０６を認識し、初期化を行う（ステップＡ）。ＯＳ２０１はファームウェア２０３、及びメモリコントローラ１０３から追加されたメモリ２０５、２０６の情報を受け取ることにより、メモリ２０５、２０６をハードウェア２０４の構成として認識する（ステップＢ）。【００２７】
記憶回路群Ａ１１４及び記憶回路群Ｂ１１５のインタリーブ設定を変更するため、ドライバ２０２は稼動しているＯＳ２０１のトランザクションを停止し、トランザクションを停止した旨をファームウェア２０３に通知する（ステップＣ）。ドライバ２０２は、サーバ１００をスリープモードに設定してＯＳ２０１によるメモリアクセスを含むトランザクションを停止する。【００２８】
ファームウェア２０３はメモリ１０４〜１０７、２０５、２０６の読み出しデータの一致チェックを停止する（ステップＤ）。ファームウェア２０３はメモリコントローラ１０３に対して、記憶回路群Ｂ１１５の読み出し（Ｒｅａｄ）方向のアクセスを禁止する（ステップＥ）。ファームウェア２０３はＲｅａｄアクセスを禁止した記憶回路群Ｂ１１５を最適なインタリーブ設定を行う（ステップＦ）。本実施例でいう最適なインタリーブ設定は、メモリ２０６の増加したことによる３―Ｗａｙインタリーブ設定である。ファーム２０３が記憶回路群Ｂ１１５のインタリーブ設定が２−Ｗａｙインタリーブ設定から３−Ｗａｙインタリーブ設定に変更したことによって、ＣＰＵ１０１からはメモリ上のデータアクセスするアドレスが変更されたように見える。そのためＯＳ２０１、ファームウェア２０３、ドライバ２０２から見ると記憶回路群Ｂ１１５に記憶しているインタリーブ設定変更後のアドレスに格納されているデータはインタリーブ設定変更前のデータとは異なったデータとして見える。【００２９】
ファームウェア２０３は記憶回路群Ａ１１４に記憶しているデータを３−Ｗａｙインタリーブ設定に変更した記憶回路群Ｂ１１５へコピーする（ステップＧ）。ファームウェア２０３は記憶回路群Ａ１１４のデータを記憶回路群Ｂ１１５へコピー完了したら、記憶回路群Ｂ１１５の読み出し禁止を解除する（ステップＨ）。【００３０】
次にファームウェア２０３はインタリーブ設定を変更していない側である記憶回路群Ａ１１４の読み出し方向のアクセスを禁止する（ステップＩ）。ファームウェア２０３は読み出しアクセスを禁止した記憶回路群Ａ１１４を２−Ｗａｙインタリーブ設定から３−Ｗａｙインタリーブ設定に変更する（ステップＪ）。【００３１】
ファームウェア２０３は記憶回路群Ｂ１１５に記憶しているデータを記憶回路群Ａ１１４へコピーする（ステップＫ）。ファームウェア２０３は記憶回路群Ｂ１１５のデータを記憶回路群Ａ１１４へコピー完了したら、記憶回路群Ａ１１４の読み出し禁止を解除する。（ステップＬ）。【００３２】
ファームウェア２０３はメモリコントローラ１０３に対し二重化されているメモリ１０４〜１０７、２０５、２０６の読み出しデータの一致チェックを再開する（ステップＭ）。ファームウェア２０３はインタリーブ設定変更処理が終了したことをドライバ２０２に通知し、ドライバ２０２はＯＳ２０１に対してメモリアクセスを含むトランザクションの再開を要求する（ステップＮ）。【００３３】
［４．フローチャート］
図４は本実施例に係るサーバ１００のインタリーブ設定に係るフローチャートである。図４に示すフローチャートを用いて、サーバ１００が行うインタリーブ設定変更についてより詳細に説明する。【００３４】
サーバ１００においてメモリ２０５は記憶回路群Ａ１１４にメモリ２０６は記憶回路群Ｂ１１５に追加されると、ファームウェア２０３、及びメモリコントローラ１０３は追加されたメモリ２０５、２０６を認識し、初期化を行う（ステップＳ４０１）。ＯＳ２０１は追加されたメモリ２０５、２０６の情報、つまりメモリ２０５、２０６の記憶容量の情報を受け取ることにより、メモリ２０５、２０６を認識する（ステップＳ４０２）。【００３５】
ドライバ２０２は稼動しているＯＳ２０１のメモリアクセスを含むトランザクションを停止し、トランザクションを停止した旨をファームウェア２０３に通知する（ステップＳ４０３）。本実施例では記憶回路群Ａ１１４、記憶回路群Ｂ１１５のインタリーブ設定を２−Ｗａｙインタリーブ設定から３−Ｗａｙインタリーブ設定に変更するため、ハードの動作としてはＣＰＵ１０１がＯＳ２０１のトランザクションを停止する。換言すればＣＰＵ１０１がＯＳ２０１のトランザクションを停止することにより、記憶回路群Ａ１１４、記憶回路群Ｂ１１５に記憶しているデータを確定して、メモリコントローラ１０３が記憶回路群Ａ１１４、記憶回路群Ｂ１１５のインタリーブ設定を２−Ｗａｙインタリーブ設定から３−Ｗａｙインタリーブ設定に変更する。記憶回路群Ａ１１４、記憶回路群Ｂ１１５に記憶するデータを確定するために、ＣＰＵ１０１が記憶回路群Ａ１１４、記憶回路群Ｂ１１５を用いたデータ処理を停止する。【００３６】
ファームウェア２０３はメモリ１０４〜１０７、２０５、２０６からの読み出しデータの一致チェックを停止する（ステップＳ４０４）。二重化制御回路１０９がメモリ１０４〜１０７、２０５、２０６からの読み出しデータの一致チェックを行っている。ファームウェア２０３は二重化制御回路１０９に指示してメモリ１０４〜１０７、２０５、２０６からの読み出しデータの一致チェックを停止する。【００３７】
次のステップＳ４０５においてサーバ１００のインタリーブ設定変更前に、ファームウェア２０３は記憶回路群Ｂデータの読み出しを禁止する。このデータ読み出し禁止状態では、メモリコントローラ１０３がメモリ群Ａ１１２からはデータを読み出せるが、メモリ群Ｂ１１３からはデータを読み出せず、二重化されたメモリ群Ａ１１２及びメモリ群Ｂ１１３からの読み出しデータが異なる。二重化制御回路１０９がこの状態をハードウェア障害として検知しないために、ファームウェア２０３は二重化制御回路１０９におけるメモリ１０４〜１０７、２０５、２０６の読み出しデータのチェックを停止する。【００３８】
ファームウェア２０３はメモリコントローラ１０３に対して、記憶回路群Ｂ１１５の読み出し（Ｒｅａｄ）方向のアクセスを禁止する（ステップＳ４０５）。より具体的にはアクセス制御回路１１０がメモリ１０４、１０５、２０５のデータへのアクセスを制御し、アクセス制御回路１１１がメモリ１０６、１０７、２０６のデータへのアクセスを制御する。そのためファームウェア２０３はアクセス制御回路１１１におけるメモリ１０６、１０７、２０６のデータへのアクセスを禁止設定とする。ファームウェア２０３は読み出し方向のアクセスを禁止した記憶回路群Ｂ１１５を２−Ｗａｙインタリーブから３―Ｗａｙインタリーブに設定を変更する（ステップＳ４０６）。より具体的にはファームウェア２０３は、記憶回路群Ｂ１１５のアクセス制御回路１１１を２−Ｗａｙインタリーブから３―Ｗａｙインタリーブに設定する。【００３９】
ファームウェア２０３はメモリ１０４〜１０７からデータの読み出しをトライする。記憶回路群Ｂ１１５のデータ読み出しは禁止になっているため、結果としてファームウェア２０３は記憶回路群Ａ１１４のメモリ１０４、１０５からのみデータを読み出す（ステップＳ４０７）。ファームウェア２０３がメモリ１０４、１０５から読み出すデータは、ＯＳ２０１のトランザクションを停止した時のデータである。【００４０】
ファームウェア２０３は記憶回路群Ａ１１４のメモリ１０４、１０５から読み出したデータを記憶回路群Ｂ１１５のメモリ１０６、１０７、２０６へ書き込む（ステップＳ４０８）。ステップＳ４０６でファームウェア２０３は記憶回路群Ｂ１１５を３―Ｗａｙインタリーブに設定しているので、メモリ１０６、１０７、２０６へ３―Ｗａｙインタリーブで書き込む。なおアクセス制御回路１１０、１１１のデータ書き込みの設定は「書き込み可能」としている。そのためファームウェア２０３は、記憶回路群Ａ１１４に記憶しているデータを記憶回路群Ａ１１４、記憶回路群Ｂ１１５の両面に書き込む処理をおこなっている。もちろんサーバ１００はファームウェア２０３が記憶回路群Ｂ１１５のみに記憶回路群Ａ１１４のデータを書き込むようにしてもよい。【００４１】
ファームウェア２０３は記憶回路群Ａ１１４のデータを記憶回路群Ｂ１１５へコピー完了したか否かを判別する（ステップＳ４０９）。ファームウェア２０３が記憶回路群Ａ１１４のデータを記憶回路群Ｂ１１５への書き込みを完了していないと判別する場合（ステップＳ４０９  ＮＯ）、再びファームウェア２０３は記憶回路群Ａ１１４のメモリ１０４、１０５からデータを読み出して、記憶回路群Ｂ１１５のメモリ１０６、１０７、２０６へ３−Ｗａｙインタリーブで書き込む（ステップＳ４０７、Ｓ４０８）。【００４２】
ファームウェア２０３が記憶回路群Ａ１１４のデータを記憶回路群Ｂ１１５へコピー完了したと判別する場合（ステップＳ４０９  ＹＥＳ）、ファームウェア２０３は記憶回路群Ｂ１１５の読み出し禁止を解除する（ステップＳ４１０）。ファームウェア２０３やハードウェア２０４はデータコピー終了時にコピーが正常に終了したか判定を行っても良い。【００４３】
次にファームウェア２０３はインタリーブ設定を変更していない側である記憶回路群Ａ１１４の読み出し方向のアクセスを禁止する（ステップＳ４１１）。より具体的にはファームウェア２０３はアクセス制御回路１１０におけるメモリ１０４、１０５、２０５のデータへのアクセスを禁止設定とする。ファームウェア２０３は読み出しアクセスを禁止した記憶回路群Ａ１１４を２−Ｗａｙインタリーブ設定から３−Ｗａｙインタリーブ設定に変更する（ステップＳ４１２）。ファームウェア２０３は記憶回路群Ｂ１１５のメモリ１０６、１０７、２０６からデータを読み出す（ステップＳ４１３）。ここでファームウェア２０３はメモリ１０４〜１０７、２０５、２０６からデータの読み出しをトライする。記憶回路群Ａ１１４のデータ読み出しは禁止になっているため、結果としてファームウェア２０３は記憶回路群Ｂ１１５のメモリ１０６、１０７、２０６からのみデータを読み出すこととなる。【００４４】
ファームウェア２０３は記憶回路群Ｂ１１５のメモリ１０６、１０７、２０６から読み出したデータを記憶回路群Ａ１１４のメモリ１０４、１０５、２０５へ書き込む（ステップＳ４１４）。ステップＳ４１２でファームウェア２０３は記憶回路群Ａ１１４を３―Ｗａｙインタリーブに設定しているので、メモリ１０４、１０５、２０５へ３―Ｗａｙインタリーブで書き込む。【００４５】
ファームウェア２０３は記憶回路群Ｂ１１５のデータを記憶回路群Ａ１１４へコピー完了したか否かを判別する（ステップＳ４１５）。ファームウェア２０３が記憶回路群Ｂ１１５のデータを記憶回路群Ａ１１４へのデータ書き込みを完了していないと判別する場合（ステップＳ４１５  ＮＯ）、再びファームウェア２０３は記憶回路群Ｂ１１５のメモリ１０６、１０７、２０６からデータを読み出して、記憶回路群Ａ１１４のメモリ１０４、１０５、２０５へ３−Ｗａｙインタリーブで書き込む（ステップＳ４１３、Ｓ４１４）。【００４６】
ファームウェア２０３が記憶回路群Ａ１１４のデータを記憶回路群Ｂ１１５へコピー完了したと判別する場合（ステップＳ４１５  ＹＥＳ）、ファームウェア２０３は記憶回路群Ａ１１４の読み出し禁止を解除する（ステップＳ４１６）。ここでもファームウェア２０３やハードウェア２０４はデータの書き込み終了時にデータの書き込みが正常に終了したか判定を行っても良い。ファームウェア２０３はメモリ群Ａ１１２（メモリ１０４、１０５、２０５）、メモリ群Ｂ１１３（メモリ１０６、１０７、２０６）のインタリーブを再設定した後、メモリ群Ａ１１２とメモリ群Ｂ１１３に記憶するデータが一致するか否かを判定してもよい。【００４７】
ファームウェア２０３はメモリ１０４〜１０７、２０５、２０６からの読み出しデータの一致チェックを再開する。（ステップＳ４１７）。ファームウェア２０３はインタリーブ設定変更処理が終了したことをドライバ２０２に通知し、ドライバ２０２はＯＳ２０１に対してトランザクションの再開を要求する（ステップＳ４１８）。ＣＰＵ１０１は、ドライバ２０２からのＯＳ２０１に対するトランザクションの再開要求に応じて、メモリアクセスを含むトランザクションを再開する。つまりサーバ１００はスリープモードから復帰して、メモリ１０４〜１０７、２０５、２０６を用いたデータ処理を再開する。【００４８】
本発明に係るサーバによれば、冗長化したメモリのインタリーブ設定を交互に変更することによって、再起動を必要とせずに、インタリーブ設定を最適に変更することができる。つまり本実施例におけるサーバ１００は、メモリ二重化機能とハードウェア、ファームウェア、ドライバの制御を利用して、再起動せずに、インタリーブ設定した場合に起きる書き込みデータと読み出しデータの不整合といった問題を解決している。その結果、サーバ１００は、メモリ追加した場合であっても、短時間でインタリーブの再設定を行うことができ、メモリアクセス帯域幅を向上することができる。
【産業上の利用可能性】
【００４９】
本実施例によるサーバは、再起動せずに、インタリーブを再設定するものである。したがって、本実施例に係るサーバは、システムの拡張を行うサーバを提供するうえで極めて有用である。
【図１】
0005590028.tif 000002
【図２】
0005590028.tif 000003
【図３】
0005590028.tif 000004
【図４】
0005590028.tif 000005