JP5360301B2 - メモリ制御装置、情報処理装置及びメモリ制御装置の制御方法 - Google Patents
メモリ制御装置、情報処理装置及びメモリ制御装置の制御方法 Download PDFInfo
- Publication number
- JP5360301B2 JP5360301B2 JP2012528558A JP2012528558A JP5360301B2 JP 5360301 B2 JP5360301 B2 JP 5360301B2 JP 2012528558 A JP2012528558 A JP 2012528558A JP 2012528558 A JP2012528558 A JP 2012528558A JP 5360301 B2 JP5360301 B2 JP 5360301B2
- Authority
- JP
- Japan
- Prior art keywords
- memory
- data
- interleave
- memories
- interleave setting
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0607—Interleaved addressing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
本発明は、メモリ制御装置、情報処理装置及びメモリ制御装置の制御方法に関する。
従来より、冗長化された複数のメモリを制御するメモリ制御装置としてのメモリコントローラや、冗長化されたメモリ及びメモリ制御装置を有する情報処理装置としてのサーバ等が知られている。これにより、複数のメモリのうちいずれかのメモリにエラーが発生しても、正常動作している他のメモリを用いて、サーバは継続して処理を実行することができる。また、メモリアクセスをより高速化するため、メモリインタリーブ(Memory Interleave)機能を用いてメモリアクセスを行うサーバがある。すなわち、サーバは、メモリへのデータの書き込み時に、連続するアドレスのデータを分割して、メモリの分割された領域であるウェイ毎のインタリーブブロックに分割したデータを交互に書き込むことにより分割して配置する。そして、書き込みを行ったデータを読み込む場合には、サーバは、ウェイ毎のインタリーブブロックから連続するアドレスのデータを交互に読み出すことにより、メモリアクセスの高速化を図る。ここで、メモリが2つのインタリーブブロックに分割される場合のインタリーブを、2−Way・メモリインタリーブといい、メモリが4つのインタリーブブロックに分割される場合のインタリーブを4−Way・メモリインタリーブという。
しかしながら、例えばサーバが2−Way・メモリインタリーブの設定に基づいてメモリ上にデータを格納した後に当該2−Way・メモリインタリーブを例えば4−Way・メモリインタリーブの設定に変更した場合には、書き込みアドレスと読み出しアドレスが一致しない。そのため、メモリに書き込んだデータとメモリから読みだしたデータとに不整合が発生する。そこで、サーバを再起動せずに、メモリに書き込んだデータとメモリから読みだしたデータとの不整合を解消するサーバ、即ち、サーバを再起動せずに、冗長化された複数のメモリのインタリーブ設定を最適に変更するサーバが考えられている。
以下、冗長化された複数のメモリのインタリーブ設定を最適に変更する方法を説明する。
図1、図2は、サーバのインタリーブ設定を変更する方法を示す模式図である。図1、図2において、サーバ30は、OS(Operating System)21、ドライバ22、ファームウェア23、及びハードウェア24を備えている。ハードウェア24は、CPU(Central Processing Unit)1、メモリコントローラ3、メモリ4〜7,25,26を含む。メモリ4,5,25はメモリ群12を構成し、メモリ6,7,26はメモリ群13を構成する。
図1では、サーバ30の記憶回路群A(Side A)14側にメモリ25を追加するとともに、記憶回路群B(Side B)15側にメモリ26を追加してから、二重化した記憶回路群B(Side B)15のインタリーブ設定を完了するまでの状態を示している。また、図2では、二重化した記憶回路群A(Side A)14のインタリーブを設定した状態を示している。ここでは、サーバ30にメモリ25,26をそれぞれ追加することによって、インタリーブ設定を2−Wayインタリーブ設定から3−Wayインタリーブ設定に変更する場合を説明する。n−Wayインタリーブ設定とは、連続するアドレスのデータをn分割して、n個のメモリに書き込み又はn個のメモリから連続するアドレスのデータを読み出す設定のことである。また、ドライバ22はCPU1上で動作するソフトウェアである。また、ファームウェア23はCPU1上で動作するソフトウェアである。このため、ドライバ22の処理手順は、CPU1がドライバ22を実行することにより実現される。また、ファームウェア23の処理手順は、CPU1がファームウェア23を実行することにより実現される。
まず、サーバ30にメモリ25,26をそれぞれ追加する。メモリ25が記憶回路群A14に追加され、メモリ26が記憶回路群B15に追加されると、ファームウェア23、及びメモリコントローラ3は追加されたメモリ25,26をそれぞれ認識し、初期化を行う(ステップA)。OS21はファームウェア23、及びメモリコントローラ3から追加されたメモリ25,26の情報を受け取ることにより、メモリ25,26をハードウェア24を構成する要素として認識する(ステップB)。記憶回路群A14及び記憶回路群B15のインタリーブ設定を変更するため、CPU1上で動作するドライバ22は稼動しているOS21のメモリアクセス等を含むトランザクションを停止し、トランザクションを停止した旨をファームウェア23に通知する(ステップC)。CPU1上で動作するドライバ22は、サーバ30をスリープモードに設定してOS21によるメモリアクセスを含むトランザクションを停止する。
CPU1上で動作するファームウェア23はメモリ4〜7,25,26の読み出しデータの一致チェックを停止する(ステップD)。ファームウェア23はメモリコントローラ3に対して、記憶回路群B15からの読み出し(Read)方向のアクセスを禁止する(ステップE)。ファームウェア23はReadアクセスを禁止した記憶回路群B15にインタリーブ設定を行う(ステップF)。ここでは、例えば、2−Wayインタリーブ設定を3−Wayインタリーブ設定に変更する場合について説明する。ファームウェア23が、記憶回路群B15のインタリーブ設定を2−Wayインタリーブ設定から3−Wayインタリーブ設定に変更したことによって、CPU1からはメモリ上のデータアクセス対象のデータのアドレスが変更されたように見える。そのため、OS21、ファームウェア23、ドライバ22から見ると、記憶回路群B15に記憶しているインタリーブ設定変更後のアドレスに格納されているデータはインタリーブ設定変更前のデータとは異なったデータとして見える。
CPU1上で動作するファームウェア23は記憶回路群A14に記憶しているデータを、2−Wayインタリーブ設定から3−Wayインタリーブ設定に変更した記憶回路群B15へコピーする(ステップG)。ファームウェア23は記憶回路群A14のデータの記憶回路群B15へのコピーを完了したら、記憶回路群B15からの読み出し禁止を解除する(ステップH)。次に、ファームウェア23はインタリーブ設定を変更していない側である記憶回路群A14からの読み出し方向のアクセスを禁止する(ステップI)。ファームウェア23は読み出しアクセスを禁止した記憶回路群A14を、2−Wayインタリーブ設定から3−Wayインタリーブ設定に変更する(ステップJ)。
CPU1上で動作するファームウェア23は記憶回路群B15に記憶しているデータを記憶回路群A14へコピーする(ステップK)。ファームウェア23は記憶回路群B15のデータの記憶回路群A14へのコピーを完了したら、記憶回路群A14からの読み出し禁止を解除する(ステップL)。ファームウェア23はメモリコントローラ3に対し二重化されているメモリ4,5,25とメモリ6,7,26との間の読み出しデータの一致チェックを再開する(ステップM)。ファームウェア23はインタリーブ設定変更処理が終了したことをドライバ22に通知し、ドライバ22はOS21に対してメモリアクセスを含むトランザクションの再開を要求する(ステップN)。
次に、図3を使って、メモリを追加した場合のインタリーブ設定変更前後のデータの状態を説明する。
例えば、図3に示すように、6つのメモリ4A〜4FにデータA〜データDが格納されるものとする。メモリコントローラ3は、メモリ4A〜4Fにアクセスする6つのチャンネル#0〜#5を有する。また、データAは、図3に示すように、2−Wayインタリーブ設定が設定されている場合には、「データA_0」及び「データA_1」に分割され、4−Wayインタリーブ設定が設定されている場合には、「データA_00」、「データA_01」、「データA_10」及び「データA_11」に分割される。データB〜DもデータAと同様にインタリーブ設定に応じて分割される。
仮に、メモリ4Fを追加した場合のインタリーブ設定変更前に、ファームウェア23が記憶回路群A14のインタリーブ設定を4−Wayインタリーブ設定及び2つの1−Wayインタリーブ設定に設定するものとする。この場合、4−Wayインタリーブ設定対象のデータA,Bは各々4分割されて、メモリ4A〜4Dに格納される。1−Wayインタリーブ設定対象のデータCはメモリ4Eに格納される。又、1−Wayインタリーブ設定対象のデータDはメモリ4Fに格納される。次に、ファームウェア23が記憶回路群A14のインタリーブ設定を4−Wayインタリーブ設定及び2−Wayインタリーブ設定に変更すると、インタリーブ設定変更前と同様に、4−Wayインタリーブ設定対象のデータA,Bは各々4分割されて、メモリ4A〜4Dに格納されている。2−Wayインタリーブ設定対象のデータC,Dは各々2分割される。すなわち、「データC_0」及び「データD_0」は、メモリ4Eに格納され、「データC_1」及び「データD_1」は、メモリ4Fに格納される。このように、メモリ4Fを追加した場合のインタリーブ設定変更後の状態は、インタリーブ設定変更前の状態と比べて、データC,Dへのアクセス方法だけが変更される。メモリモジュール数を削減した場合のメモリインタリーブ設定変更前後のデータの状態を図4に示す。この場合も、メモリ4Fを削減した場合のインタリーブ設定変更後の状態は、インタリーブ設定変更前の状態と比べて、データC,Dへのアクセス方法だけが変更される。
ところで、上記サーバ30は、メモリ群12からメモリ群13にデータをコピーするために、CPU1が実行するファームウェア23を利用する。このため、データは、メモリ群12→メモリコントローラ3→CPU1→メモリコントローラ3→メモリ群13のような長い経路を通る。従って、データのコピーに時間がかかり、インタリーブ設定の変更のためのOSのメモリアクセスを含むトランザクションの停止時間、即ちサーバ30の停止時間が長くなるという課題がある。
また、図3及び図4に示すように、データのコピーが必要なチャンネルは、インタリーブ設定が変更されたチャンネルだけである。しかしながら、上記サーバ30は、全てのデータのコピーを実行している。従って、データのコピーに時間がかかり、インタリーブ設定の変更のためのOSのメモリアクセスを含むトランザクションの停止時間、即ちサーバ30の停止時間が長くなるという課題がある。
上記課題に鑑み、明細書に開示されたメモリ制御装置、情報処理装置及びメモリ制御装置の制御方法は、インタリーブ設定の変更のための情報処理装置の停止時間を短縮することを目的とする。
上記目的を達成するため、明細書に開示されたメモリ制御装置は、データを第1の複数のメモリに分割して記憶する第1メモリ群と、前記データを第2の複数のメモリに分割して冗長に記憶する第2メモリ群とに接続するメモリ制御装置であって、前記第1の複数のメモリに接続する複数のチャンネルを有し、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第1のインタリーブ設定に基づき、前記第1メモリ群にアクセスする第1の制御回路と、前記第2の複数のメモリに接続する複数のチャンネルを有し、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第2のインタリーブ設定に基づき、前記第2メモリ群にアクセスする第2の制御回路と、前記第1メモリ群及び前記第2メモリ群に含まれるメモリの個数が変化した場合に、変化後のメモリの個数に基づいて、第3のインタリーブ設定を決定する決定手段と、前記第3のインタリーブ設定と前記第1及び第2のインタリーブ設定とを比較し、データの分割数が異なるチャンネルを特定する特定手段と、前記特定されたチャンネルに対応する部分の第3のインタリーブ設定を使って前記第1及び第2のインタリーブ設定を変更する変更手段と、前記第1のインタリーブ設定の変更に係るチャンネルに対応する第1のメモリのデータを前記第2のインタリーブ設定の変更に係るチャンネルに対応する第2のメモリにコピーし、前記第2のインタリーブ設定の変更に係るチャンネルに対応する第2のメモリのデータを前記第1のインタリーブ設定の変更に係るチャンネルに対応する第1のメモリにコピーするコピー手段とを備える。
明細書に開示された情報処理装置は、データを第1の複数のメモリに分割して記憶する第1メモリ群と、前記データを第2の複数のメモリに分割して冗長に記憶する第2メモリ群と、前記第1及び第2のメモリ群に接続するメモリ制御装置と、前記メモリ制御装置を介して前記第1及び第2のメモリ群にデータを読み書きする演算処理装置とを有する情報処理装置であって、前記メモリ制御装置は、前記第1の複数のメモリに接続する複数のチャンネルを有し、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第1のインタリーブ設定に基づき、前記第1メモリ群にアクセスする第1の制御回路と、前記第2の複数のメモリに接続する複数のチャンネルを有し、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第2のインタリーブ設定に基づき、前記第2メモリ群にアクセスする第2の制御回路と、前記第1メモリ群及び前記第2メモリ群に含まれるメモリの個数が変化した場合に、変化後のメモリの個数に基づいて、第3のインタリーブ設定を決定する決定手段と、前記第3のインタリーブ設定と前記第1及び第2のインタリーブ設定とを比較し、データの分割数が異なるチャンネルを特定する特定手段と、前記特定されたチャンネルに対応する部分の第3のインタリーブ設定を使って前記第1及び第2のインタリーブ設定を変更する変更手段と、前記第1のインタリーブ設定の変更に係るチャンネルに対応する第1のメモリのデータを前記第2のインタリーブ設定の変更に係るチャンネルに対応する第2のメモリにコピーし、前記第2のインタリーブ設定の変更に係るチャンネルに対応する第2のメモリのデータを前記第1のインタリーブ設定の変更に係るチャンネルに対応する第1のメモリにコピーするコピー手段とを備える。
明細書に開示されたメモリ制御装置の制御方法は、データを第1の複数のメモリに分割して記憶する第1メモリ群、及び前記データを第2の複数のメモリに分割して冗長に記憶する第2メモリ群に接続されるメモリ制御装置の制御方法であって、前記第1メモリ群及び前記第2メモリ群に含まれるメモリ数が変化した場合に、当該メモリ数の情報及びデータの経路に基づいて、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第3のインタリーブ設定を決定し、前記第3のインタリーブ設定と前記メモリ制御装置に含まれる第1の制御回路の第1のインタリーブ設定及び前記メモリ制御装置に含まれる第2の制御回路の第2のインタリーブ設定とを比較し、前記第1の制御回路及び前記第2の制御回路の各々に含まれる複数のチャンネルのうち、データの分割数が異なるチャンネルを特定し、前記特定されたチャンネルに対応する部分の第3のインタリーブ設定を使って前記第1及び第2のインタリーブ設定を変更し、前記第1のインタリーブ設定の変更に係るチャンネルに対応する第1のメモリのデータを前記第2のインタリーブ設定の変更に係るチャンネルに対応する第2のメモリにコピーし、前記第2のインタリーブ設定の変更に係るチャンネルに対応する第2のメモリのデータを前記第1のインタリーブ設定の変更に係るチャンネルに対応する第1のメモリにコピーする。
明細書に開示されたメモリ制御装置、情報処理装置及びメモリ制御装置の制御方法は、インタリーブ設定の変更のための情報処理装置の停止時間を短縮することができる。
以下、図面を参照しながら本発明の実施の形態を説明する。
本実施の形態では、図5に示すサーバ100のインタリーブ設定の変更について説明する。サーバ100は、再起動せずに、メモリの追加又は削減に伴うインタリーブ設定を最適に変更可能とするものである。インタリーブ設定とは、連続するアドレスのデータを分割して、データの分割数に対応する個数のメモリに当該分割されたデータを読み書きする設定である。以下、図5を用いて、サーバ100の動作について説明する。
図5は、本実施の形態に係るサーバのハードウェア構成を示すブロック図である。
サーバ100は、CPU(Central Processing Unit)101、I/O(Input/Output)デバイス102、メモリコントローラ103、制御レジスタ104、インタリーブ制御回路105、二重化制御回路107、アクセス制御回路109,116(第1の制御回路,第2の制御回路)、及びメモリ114A〜114E,121A〜121Eから構成されている。メモリ114A〜114Eはメモリ群A114(第1メモリ群)を形成し、またメモリ121A〜121Eはメモリ群B121(第2メモリ群)を形成する。さらにアクセス制御回路109とメモリ群A114は記憶回路群A(Side A)108を形成し、アクセス制御回路116とメモリ群B121は記憶回路群B(Side B)115を形成する。そして、記憶回路群A108と記憶回路群B115はミラーリング構成(二重化構成)をとっている。つまり、サーバ100は冗長化したメモリ群A114及びメモリ群B121を有している。
ここで、サーバ100は、高信頼性を実現するためにメモリ群A114とメモリ群B121との間で二重化しており、メモリが一方のメモリ群に新たに追加される場合又は削減される場合には、二重化を保つように他方のメモリ群に対しても対称に追加又は削減される。また、サーバ100では、パーティション稼働中にメモリの追加又は削減が可能である。
そして、サーバ100は、メモリインタリーブを用いた書き込み制御により、連続するアドレスのデータをメモリ群A114に記憶する。同様に、サーバ100は、メモリインタリーブを用いた書き込み制御により、同一の連続するアドレスのデータをメモリ群B121にも冗長して記憶する。より具体的には、アクセス制御回路109は、連続するアドレスのデータをメモリ114A〜114Eにインタリーブ制御を用いて書き込み、又はインタリーブ制御を用いて連続するアドレスのデータを読み出すことにより、データアクセスを行う。ここで、メモリインタリーブとは、メモリコントローラ103が連続するアドレスを有するデータを一定の分割単位であるウェイごとに分割し、分割したデータを当該ウェイへ書き込み、又は当該ウェイから読み込むことである。換言すると、メモリ114A〜114Fには連続したメモリアドレスが割り当てられている。そして、メモリコントローラ103が、メモリ114A,114Bの境界、メモリ114B,114Cの境界、メモリ114C,114Dの境界、及びメモリ114D,114Eの境界をまたいで連続アドレスへデータアクセスする。同様に、アクセス制御回路116は、メモリ121A〜121Eに連続するアドレスのデータについてインタリーブ制御を用いて書き込み、又はインタリーブ制御を用いて読み出すことにより、データアクセスを行う。即ち、メモリ121A〜121Eには連続したメモリアドレスが割り当てられている。メモリコントローラ103は、メモリ121A,121Bの境界、メモリ121B,121Cの境界、メモリ121C,121Dの境界、及びメモリ121D,121Eの境界をまたいで連続アドレスへデータアクセスする。本実施の形態では、メモリ群A114とメモリ群B121はミラーリングにより二重化されており、メモリ114A,121Aの組には同一のデータが記憶されている。同様に、メモリ114B,121Bの組、メモリ114C,121Cの組、メモリ114D,121Dの組、及びメモリ114E,121Eの組、それぞれ同一のデータが記憶されている。
以下、サーバ100が有する各ユニットの動作、機能について説明し、サーバ100が実行するメモリインタリーブの再設定手順を説明する。
以下、CPU101について説明する。演算処理装置としてのCPU101は、サーバ100における演算処理を行う。サーバ100が実行する動作は、CPU101が実行するプログラムが有する命令やサーバ100に接続されるクライアント装置からの要求などに応じたデータのメモリからの読み出し、メモリへの書き込みなどである。サーバ100は、ネットワークコントローラ等のI/Oデバイス102を介してクライアント装置などの外部装置とデータのやりとりを行う。そして、CPU101はメモリコントローラ103を介してメモリ114A〜114E,121A〜121Eのいずれかに対するアクセスを行う。このとき、メモリコントローラ103は、メモリ114A〜114E,121A〜121Eのいずれかからデータを読み出し、又はメモリ114A〜114E,121A〜121Eのいずれかへデータを書きこむ。
CPU101は、インタリーブ設定を変更するに際して、メモリ114A〜114E,121A〜121Eを用いたデータ処理を停止するようにメモリコントローラ103を制御する。具体的には、CPU101は、サーバ100をスリープモードに設定して、図6に示すOS(Operating System)201によるメモリアクセス等のトランザクションを停止する。サーバ100上で実行されるソフトウェアの側面から見ると、図6に示すドライバ202がOS201のトランザクションを停止する機能を有するソフトウェアであり、ドライバ202がOS201のトランザクションを停止する。ここで、トランザクションとは、サーバ100が実行するいくつかのセッションをひとまとまりにした処理のことである。またセッションは、サーバ100において上記のクライアント装置からの要求によりデータベースなどを更新する際に発行されるデータベース管理システムにおける問い合わせ及び当該問い合わせに対する応答の単位である。また、ドライバ202はOS201に組み込まれている。
CPU101はメモリのインタリーブ設定を、例えば、1−Wayインタリーブから2−Wayインタリーブに変更した場合、インタリーブ設定の変更に関連するメモリ114E,121E、及び新たに追加したメモリ114F,121Fを用いたデータ処理を再開する。
次にメモリコントローラ103について説明する。メモリコントローラ103は、制御レジスタ104、インタリーブ制御回路105、ROM(Read Only Memory)106、二重化制御回路107、及びアクセス制御回路109,116を有している。インタリーブ制御回路105は、リード/ライト制御部122(読出制御手段)、インタリーブ制御部123(変更手段)及びデータコピー制御部124(コピー手段)を備えている。二重化制御回路107は、データ比較部125を備えている。アクセス制御回路109は、リード/ライト設定部110、インタリーブ設定部111、メモリコピー部112、及びメモリアクセス部113を備えている。アクセス制御回路116は、リード/ライト設定部117、インタリーブ設定部118、メモリコピー部119、及びメモリアクセス部120を備えている。また、アクセス制御回路109は、メモリ群A114にアクセスするためのチャンネル#0〜#5を備えている。同様に、アクセス制御回路116は、メモリ群B121にアクセスするためのチャンネル#0〜#5を備えている。ここで、アクセス制御回路109が備えるメモリ群A114にアクセスするための「チャンネル#0〜#5」と、アクセス制御回路116が備えるメモリ群B121にアクセスするための「チャンネル#0〜#5」とは名称が同一であるが、インタリーブグループ番号の設定が異なる。インタリーブグループ番号については、後述する。
制御レジスタ104には、メモリコントローラ103が処理を実行するための設定情報が記憶されている。当該設定情報に基づき、インタリーブ制御回路105、二重化制御回路107、及びアクセス制御回路109,116が処理をそれぞれ実行する。
インタリーブ制御回路105のリード/ライト制御部122は、リード/ライト設定部110,117のそれぞれのデータのリード/ライトを制御する。例えば、リード/ライト制御部122は、リード/ライト設定部110に記憶回路群A108から読み出す方向のメモリアクセスを禁止する。この場合、アクセス制御回路109では、メモリ群A114からの読み出し方向のアクセスが禁止される。同様に、リード/ライト制御部122は、リード/ライト設定部117に記憶回路群B115から読み出す方向のメモリアクセスを禁止する。この場合、アクセス制御回路116では、メモリ群B121からの読み出し方向のアクセスが禁止される。
インタリーブ制御回路105のインタリーブ制御部123は、二重化している記憶回路群A108、記憶回路群B115ごとに、即ちSideごとにメモリインタリーブを設定する。具体的には、インタリーブ制御部123は、アクセス制御回路109,116のチャンネル単位でインタリーブ設定を実施することにより、インタリーブ設定をチャンネル単位で変更できる。アクセス制御回路109,116のチャンネル単位のインタリーブ設定は、それぞれインタリーブ設定部111,118に格納される。
インタリーブ制御回路105のデータコピー制御部124は、記憶回路群(Side)単位で又はチャンネル単位で行われるデータのコピーを制御する。例えば、メモリ114Aに記憶されているデータをメモリ121Aにコピーする場合、データコピー制御部124は、メモリ114Aに記憶されているデータを読み出すようにメモリコピー部112を制御し、その読み出されたデータをメモリ121Aに書き込むようにメモリコピー部119を制御する。
このように、インタリーブ制御回路105は、1)Side単位又はチャンネル単位でインタリーブ設定を制御する機能、2)Side単位でアクセス制御回路109,116のデータのリード/ライトを設定する機能、及び3)Side単位又はチャンネル単位でデータをコピーする機能を有している。
二重化制御回路107のデータ比較部125は、メモリアクセス部113,120が二重化しているメモリ群A114、メモリ群B121からそれぞれ読み出したデータが同一であるかのチェックを行う。また、二重化制御回路107は、データ比較部125のチェック機能の停止及び再開を行う。さらに、二重化制御回路107は、記憶回路群A108、記憶回路群B115の二重化状態を保つ制御を行う。二重化制御回路107が実行する二重化制御とは、メモリ群A114とメモリ群B121に記憶するデータを常に同一にする制御であり、メモリ群A114にインタリーブ制御を用いてデータを書き込んだら、メモリ群B121にもインタリーブ制御を用いて同一のデータを同時に書き込む制御である。
記憶回路群A108のアクセス制御回路109は、メモリ114A〜114Eが記憶するデータへのアクセスを制御する。具体的には、アクセス制御回路109のリード/ライト設定部110には、読み出し/書き込みの設定情報が格納されている。アクセス制御回路109のインタリーブ設定部111にはメモリインタリーブの設定情報が格納されている。アクセス制御回路109のメモリコピー部112は、メモリ114A〜114Eからデータを読み出し、データコピー制御部124を介してメモリ121A〜121Eに出力する、又はメモリ121A〜121Eのデータをメモリ114A〜114Eにコピーする。アクセス制御回路109のメモリアクセス部113は、メモリ114A〜114Eのデータを読み出し、データ比較部125に出力する。
記憶回路群B115のアクセス制御回路116はメモリ121A〜121Eのデータへのアクセスを制御する。具体的には、アクセス制御回路116のリード/ライト設定部117には、読み出し/書き込みの設定情報が格納されている。アクセス制御回路116のインタリーブ設定部118にはメモリインタリーブの設定情報が格納されている。アクセス制御回路116のメモリコピー部119は、メモリ121A〜121Eからデータを読み出し、データコピー制御部124を介してメモリ114A〜114Eに出力する、又はメモリ114A〜114Eのデータをメモリ121A〜121Eにコピーする。アクセス制御回路116のメモリアクセス部120は、メモリ121A〜121Eのデータを読み出し、データ比較部125に出力する。
図6は、サーバ100上で動作するOS201、ドライバ202、ファームウェア203、及びサーバ100に含まれるメモリコントローラ103それぞれの関係を示す。
図6に示すファームウェア203(決定手段、特定手段)は、図5に示すサーバ100に内蔵されたROM106に記憶される。ファームウェア203はハードウェアの起動処理や終了処理等の基本的な制御を行なうためにサーバ100に組み込まれたソフトウェアであり、メモリコントローラ103に接続されるCPU101が実行するソフトウェアである。すなわち、ファームウェア203の処理は、メモリコントローラ103に接続されるCPU101が実行することにより実現される。
CPU101上で動作するファームウェア203は、メモリコントローラ103のインタリーブ設定、インタリーブの再設定に際して行うデータのコピー処理(データのメモリ114A〜114E,121A〜121Eそれぞれへの書き込み処理)、コピー処理が終了したことをドライバ202に通知する処理などを実行する。さらに、ファームウェア203は、実装されているメモリ構成での最適なインタリーブ設定(第3のインタリーブ設定)とアクセス制御回路109又は116に設定されている現在のインタリーブ設定(第1及び第2のインタリーブ設定)とを比較し、データの分割数(Way数)が異なるチャンネルを特定する処理を実行する。また、ファームウェア203は、Side単位で又はチャンネル単位で最適なインタリーブ設定をインタリーブ制御回路105に設定する処理を実行する。
ここで、実装されているメモリ構成での最適なインタリーブ設定について説明する。ファームウェア203及びアクセス制御回路109,116は、図6に示すように、インタリーブ設定として、チャンネル番号とインタリーブグループ番号との関係を示すデータを有する。チャンネル番号は、各チャンネルを識別する番号である。インタリーブグループ番号とは、各チャンネルが連続するデータのグループに属するか又は異なるデータのグループに属するかを識別するための番号である。例えば、4−Wayインタリーブ設定では、連続するアドレスのデータを4分割して、チャンネル番号#0〜#3のチャンネルを介して4個のメモリにそれぞれ分割されたデータが書き込まれるので、チャンネル番号#0〜#3は連続するデータのグループに属する。従って、4つのチャンネル番号#0〜#3に、共通のインタリーブグループ番号「0」が割り当てられている。また、チャンネル番号#4のチャンネルは、4−Wayインタリーブ設定で使用されないので、チャンネル番号#0〜#3のチャンネルと異なるデータのグループに属する。従って、チャンネル番号#4に、「0」と異なるインタリーブグループ番号「1」が割り当てられている。インタリーブ設定は、チャンネル番号とインタリーブグループ番号との関係を示すデータであるので、ファームウェア203は、複数のインタリーブ設定を比較するときに、データの分割数が異なるチャンネルを特定し易くなる。
CPU101上で動作するファームウェア203は、サーバ100に実装されているメモリの情報(具体的には、一つのメモリ群に含まれるメモリの個数情報)及びデータの経路に基づいて、データの分割数(Way数)を決めることにより、最適なインタリーブ設定を決定する。例えば、データの分割数(Way数)は、1、2、4、8、16…のように2のn乗(n:0以上の整数)になる。また、メモリアクセスの高速化を図る観点から、ファームウェア203は、例えば、データの分割数を、2のn乗の組み合わせであり且つ一つのメモリ群に含まれるメモリの個数を超えない範囲で、最大値に設定する。例えば、メモリ群A114に含まれるメモリが5つの場合、データの分割数は2のn乗の組み合わせであり且つメモリの個数を超えない範囲で最大値に設定されるので、ファームウェア203は、データの分割数を「4」と「1」に決める。その後、メモリ群A114に含まれるメモリが1つ増加し6つになった場合、データの分割数の候補は「4」「1」「1」又は「4」「2」となる。メモリが5つ又は6つの場合でも、4つに分割されるデータの経路は変動しないので、ファームウェア203は、メモリが6つの場合には、残り2つのメモリに格納されるデータの分割数を2のn乗の組み合わせであり且つメモリの個数を超えない範囲で最大値に設定する。即ち、ファームウェア203は、データの分割数を「4」と「2」に決める。これにより、最適なインタリーブ設定は、4−Wayインタリーブ設定と2−Wayインタリーブ設定の組み合わせになる。なお、データの最適な分割数について、ここでは2のn乗(n:0以上の整数)であり且つメモリの個数を超えない範囲で最大値に設定する例を示したが、例えば、mのn乗(m,n:0以上の整数)の組み合わせであり且つメモリの個数を超えない範囲で最大値に設定しても良い。
サーバ100のメモリ群A114及びメモリ群B121に新たにメモリ114F,121Fをそれぞれ追加する場合、メモリコントローラ103は、CPU101がOS201のメモリアクセスを含むトランザクションを停止した状態で、記憶回路群A108及び記憶回路群B115を交互にインタリーブ設定を変更する。より具体的にはメモリ群A114及びメモリ群B121に新たにメモリ114F,121Fをそれぞれ追加する場合、ファームウェア203が、追加されたメモリ構成での最適なインタリーブ設定を決定し、最適なインタリーブ設定とアクセス制御回路116に設定されている現在のインタリーブ設定とを比較し、データの分割数が異なるチャンネルを特定する。そして、インタリーブ制御回路105が、特定されたチャンネルに対応するアクセス制御回路116のインタリーブ設定を変更し、特定されたチャンネルに対応するメモリ群A114のデータを、特定されたチャンネルに対応するメモリ群B121に新たなインタリーブ設定でコピーする。例えば、インタリーブ制御回路105は、2つの1−Wayインタリーブ設定のチャンネル#4,#5に対応するメモリ114E,114Fのデータをメモリ121E,121Fに2−Wayインタリーブ設定でコピーする。さらに、インタリーブ制御回路105が、特定されたチャンネルに対応するアクセス制御回路109のインタリーブ設定を変更し、特定されたチャンネルに対応するメモリ群B121のデータを、特定されたチャンネルに対応するメモリ群A114に新たなインタリーブ設定でコピーする。例えば、インタリーブ制御回路105は、チャンネル#4,#5に対応するメモリ121E,121Fのデータをメモリ114E,114Fに2−Wayインタリーブ設定でコピーする。このように、インタリーブ制御回路105は、データの分割数が異なるチャンネルに対応するアクセス制御回路116,109のインタリーブ設定を順番に変更し、データの分割数が異なるチャンネルに対応するメモリのデータを新たなインタリーブ設定を用いてコピーすることにより、サーバ100におけるメモリインタリーブの再設定を行う。従って、メモリ数の変更に応じて変更されるインタリーブ設定に関連するチャンネルのデータのみがコピーされる。メモリ数の変更に応じたメモリインタリーブの再設定は、メモリ数が増加したら増加した数に合わせてデータを分割して新たなインタリーブ設定を用いてメモリに記憶し、メモリ数が削減したら削減した数に合わせてデータを分割して新たなインタリーブ設定を用いてメモリに記憶することである。
以下、図6〜8を参照しながら、インタリーブ設定の変更処理を説明する。図6及び図7は、サーバ100のインタリーブ設定の変更処理を示す模式図である。図8は、サーバ100のインタリーブ設定の変更処理を示すフローチャートである。
図6では、サーバ100にメモリ114F、121Fをそれぞれ追加してから、アクセス制御回路116のインタリーブ設定の変更及び記憶回路群A108から記憶回路群B115へデータのコピーが完了するまでの状態を示している。また、図7では、アクセス制御回路109のインタリーブ設定の変更及び記憶回路群B115から記憶回路群A108へデータのコピーが完了するまでの状態を示している。本実施の形態では、サーバ100にメモリ114F、121Fをそれぞれ追加することによって、チャンネル#4,#5に対応する2つの1−Wayインタリーブ設定を2−Wayインタリーブ設定に変更する場合を説明する。n−Wayインタリーブ設定とは、連続するアドレスのデータをn分割して、n個のメモリに書き込み/n個のメモリから読み出す設定のことである。また、上記に示したようにドライバ202はCPU101で動作するソフトウェアであり、またファームウェア203はCPU101上で動作するソフトウェアである。そのため、以下ドライバ202の処理手順は、CPU101がドライバ202を実行することにより実現される。またファームウェア203の処理手順は、CPU101がファームウェア203を実行することにより実現される。
まず、サーバ100にメモリ114F及び121Fをそれぞれ追加する。メモリ114F,121Fがそれぞれ記憶回路群A108,記憶回路群B115に追加されると、ファームウェア203及びメモリコントローラ103は追加されたメモリ114F及び121Fを認識し、初期化を行う(ステップS1)。OS201はファームウェア203及びメモリコントローラ103から追加されたメモリ114F及び121Fの情報をそれぞれ受け取ることにより、メモリ114F及び121Fをハードウェアの構成として認識する(ステップS2)。
アクセス制御回路109及び116のインタリーブ設定を変更するため、ドライバ202は稼動しているOS201のメモリアクセスを含むトランザクションを停止し、トランザクションを停止した旨をファームウェア203に通知する(ステップS3)。ドライバ202は、サーバ100をスリープモードに設定してOS201によるメモリアクセスを含むトランザクションを停止する。ハードウェアの動作としては、CPU101がOS201のトランザクションを停止する。換言すれば、CPU101がOS201のトランザクションを停止することにより、記憶回路群A108及び記憶回路群B115に記憶しているデータを確定して、メモリコントローラ103のインタリーブ制御回路105がアクセス制御回路109,116のインタリーブ設定を変更する。記憶回路群A108及び記憶回路群B115に記憶するデータを確定するために、CPU101が記憶回路群A108及び記憶回路群B115を用いたデータ処理を停止する。
CPU101上で動作するファームウェア203は、メモリ追加後の最適なインタリーブ設定を決定する(ステップS4)。具体的には、ファームウェア203は、実装されているメモリの情報(具体的には、一つのメモリ群に含まれるメモリの個数情報)及びデータの経路に基づいて、連続するアドレスを有するデータの分割数を決めることにより、最適なインタリーブ設定を決定する。データの分割数はmのn乗(m,n:0以上の整数)の組み合わせになるので、記憶回路群A108及び記憶回路群B115にそれぞれ6つのメモリが実装されている状態では、最適なインタリーブ設定は、4−Wayインタリーブ設定と2−Wayインタリーブ設定の組み合わせになる。図6では、最適なインタリーブ設定は、ファームウェア203に含まれている、チャンネル番号とインタリーブグループ番号との関係を示すデータである。ファームウェア203は、決定された最適なインタリーブ設定をアクセス制御回路116の現在のインタリーブ設定と比較し、データの分割数が異なるチャンネル番号を特定する(ステップS5)。図6では、データの分割数が異なるチャンネルのチャンネル番号は「#4」及び「#5」である。
ファームウェア203は、メモリ群A114及びメモリ群B121の読み出しデータの一致チェックを停止する(ステップS6)。メモリ群A114及びメモリ群B121が二重化された状態で、いずれか一方のメモリ群からのデータの読み出しを禁止すると、二重化されたメモリ群A112及びメモリ群B113からの読み出しデータが異なる。二重化制御回路107がこの状態をハードウェア障害として検知しないようにするために、ファームウェア203は、二重化制御回路107におけるメモリ群A114及びメモリ群B121からの読み出しデータの一致チェックを抑止する。
ファームウェア203は、ステップS5で特定されたチャンネル番号に対応する最適なインタリーブ設定をインタリーブ制御回路105のインタリーブ制御部123に設定する(ステップS7)。インタリーブ制御回路105のインタリーブ制御部123は、ファームウェア203から受け取ったチャンネル番号に対応する最適なインタリーブ設定を保存する(ステップS8)。図6では、ファームウェア203から受け取った又はファームウェア203で特定されたチャンネル番号に対応する最適なインタリーブ設定は、チャンネル番号「#4」,「#5」とインタリーブグループ番号「1」との関係を示すデータである。
インタリーブ制御回路105のリード/ライト制御部122は、アクセス制御回路116に対して、記憶回路群B115からの読み出し(Read)方向のアクセスを禁止する(ステップS9)。記憶回路群B115のメモリ群121にデータが配置された後に、アクセス制御回路116のインタリーブ設定が変更されると、書き込んだデータと読み出したデータとの不整合が生じる。よって、リード/ライト制御部122は、アクセス制御回路116のデータ読み出しを禁止することで、アクセス制御回路116に不整合の生じているデータを使用できなくしている。ここでは、インタリーブ制御回路105は、アクセス制御回路116に対して、記憶回路群B115からの読み出し(Read)方向のアクセスを禁止した後、アクセス制御回路109に対して、記憶回路群A108からの読み出し(Read)方向のアクセスを禁止する。しかし、このアクセスの禁止の順番は、一例である。インタリーブ制御回路105は、アクセス制御回路109に対して、記憶回路群A108からの読み出し(Read)方向のアクセスを禁止した後、アクセス制御回路116に対して、記憶回路群B115からの読み出し(Read)方向のアクセスを禁止してもよい。
インタリーブ制御回路105のインタリーブ制御部123は、ファームウェア203で特定されたチャンネル番号に対応する最適なインタリーブ設定を使ってアクセス制御回路116のインタリーブ設定を変更する(ステップS10)。図6の例では、アクセス制御回路116のチャンネル番号「#5」に対応するインタリーブグループ番号が「2」から「1」に変更されている。つまり、チャンネル番号「#5」に対応するインタリーブグループ番号が「1」に変更されるので、インタリーブグループ番号「1」が設定されているチャンネル番号「#4」及び「#5」に対応するインタリーブ設定は、2つの1−Wayインタリーブ設定から1つの2−Wayインタリーブ設定に変更される。尚、ファームウェア203が、チャンネル番号「#4」及び「#5」に対応するインタリーブ設定を2つの1−Wayインタリーブ設定から1つの2−Wayインタリーブ設定に変更したことによって、CPU101からはメモリ上のデータにアクセスするアドレスが変更されたように見える。そのため、OS201、ファームウェア203、ドライバ202から見ると、記憶回路群B115に記憶している、インタリーブ設定変更後のアドレスに格納されているデータは、インタリーブ設定変更前のデータとは異なったデータとして見える。
インタリーブ制御回路105のデータコピー制御部124は、アクセス制御回路109の変更されるべきインタリーブ設定に係るチャンネル番号(「#4」及び「#5」)に対応するメモリ114E,114Fのデータを、アクセス制御回路116の変更されたインタリーブ設定に係るチャンネル番号(「#4」及び「#5」)に対応するメモリ121E,121Fにコピーする(ステップS11)。インタリーブ制御回路105のデータコピー制御部124がメモリ114E,114Fから読み出すデータは、OS201のメモリアクセスを含むトランザクションを停止した時のデータである。
インタリーブ制御回路105のリード/ライト制御部122は、アクセス制御回路116に対する記憶回路群B115からの読み出し(Read)方向のアクセス禁止を解除する(ステップS12)。ファームウェア203やインタリーブ制御回路105のデータコピー制御部124はコピー終了時にコピーが正常に終了したか否かの判定を行っても良い。
次に、インタリーブ制御回路105のリード/ライト制御部122は、アクセス制御回路109に対して、記憶回路群A108からの読み出し(Read)方向のアクセスを禁止する(ステップS13)。記憶回路群A108のメモリ群114にデータが配置された後に、アクセス制御回路109のインタリーブ設定が変更されると、書き込んだデータと読み出したデータとの不整合が生じる。よって、リード/ライト制御部122は、アクセス制御回路109のデータ読み出しを禁止することで、アクセス制御回路109に不整合の生じているデータを使用できなくしている。
インタリーブ制御回路105のインタリーブ制御部123は、ファームウェア203で特定されたチャンネル番号に対応する最適なインタリーブ設定を使ってアクセス制御回路109のインタリーブ設定を変更する(ステップS14)。図7の例では、アクセス制御回路109のチャンネル番号「#5」に対応するインタリーブグループ番号が「2」から「1」に変更されている。つまり、チャンネル番号「#「#5」に対応するインタリーブグループ番号が「1」に変更されるので、チャンネル番号「#4」及び「#5」に対応するインタリーブ設定は2つの1−Wayインタリーブ設定から1つの2−Wayインタリーブ設定に変更される。
インタリーブ制御回路105のデータコピー制御部124は、アクセス制御回路116の変更されたインタリーブ設定に係るチャンネル番号(「#4」及び「#5」)に対応するメモリ121E,121Fのデータを、アクセス制御回路109の変更されたインタリーブ設定に係るチャンネル番号(「#4」及び「#5」)に対応するメモリ114E,114Fにコピーする(ステップS15)。インタリーブ制御回路105のデータコピー制御部124がメモリ121E,121Fから読み出すデータは、OS201のメモリアクセスを含むトランザクションを停止した時のデータである。
インタリーブ制御回路105のリード/ライト制御部122は、アクセス制御回路109に対する記憶回路群A108の読み出し(Read)方向のアクセス禁止を解除する(ステップS16)。インタリーブ制御回路105のデータコピー制御部124は、ファームウェア203にコピーが終了したことを通知する(ステップS17)。ここでも、ファームウェア203やインタリーブ制御回路105のデータコピー制御部124はコピー終了時にコピーが正常に終了したか判定を行っても良い。
ファームウェア203はメモリ群A114及びメモリ群B121の読み出しデータの一致チェックを再開する(ステップS18)。ファームウェア203はインタリーブ設定の変更処理が終了したことをドライバ202に通知し、ドライバ202はOS201に対してメモリアクセスを含むトランザクションの再開を要求する(ステップS19)。CPU101は、ドライバ202からのOS201に対するトランザクションの再開要求に応じて、メモリアクセスを含むトランザクションを再開する。つまり、サーバ100はスリープモードから復帰して、メモリ群A114及びメモリ群B121を用いたデータ処理を再開する。尚、上記の各ステップで取得する情報は、OS201やメモリコントローラ103の中に保存されており、ドライバ202やファームウェア203から適宜取得可能である。
図6〜8では、メモリが増加される場合のインタリーブ設定の変更処理を説明したが、メモリを削減する場合も、同様に図6〜8のインタリーブ設定の変更処理が実行される。つまり、図6〜8のインタリーブ設定の変更処理は、メモリの個数が変化するときに実行される。
以上説明したように、本実施の形態によれば、最適なインタリーブ設定に従ってアクセス制御回路109,116のインタリーブ設定の一部が変更され、インタリーブ設定が変更されたチャンネルに対応するデータのみがコピーされるので、データのコピー時間やインタリーブ設定の変更のためのサーバ100の停止時間を短縮することができる。また、メモリコントローラ103内でデータコピーが完了し、サーバ100の再起動を必要とせずにインタリーブ設定の変更が完了するので、データのコピー時間やインタリーブ設定の変更のためのサーバ100の停止時間を短縮することができる。
また、サーバ100は、冗長化したメモリのインタリーブ設定を交互に変更することによって、再起動を必要とせずに、インタリーブ設定を最適に変更することができる。さらに、サーバ100は、メモリを増減した場合であっても、短時間でインタリーブの再設定を行うことができ、メモリアクセス帯域幅を向上することができる。
100 サーバ
101 CPU
102 I/Oデバイス
103 メモリコントローラ
104 制御レジスタ
105 インタリーブ制御回路
107 二重化制御回路
108 記憶回路群A(Side A)
109,116 アクセス制御回路
114 メモリ群A
114A〜114E,121A〜121E メモリ
115 記憶回路群B(Side B)
121 メモリ群B
122 リード/ライト制御部
123 インタリーブ制御部
124 データコピー制御部
101 CPU
102 I/Oデバイス
103 メモリコントローラ
104 制御レジスタ
105 インタリーブ制御回路
107 二重化制御回路
108 記憶回路群A(Side A)
109,116 アクセス制御回路
114 メモリ群A
114A〜114E,121A〜121E メモリ
115 記憶回路群B(Side B)
121 メモリ群B
122 リード/ライト制御部
123 インタリーブ制御部
124 データコピー制御部
Claims (8)
- データを第1の複数のメモリに分割して記憶する第1メモリ群と、前記データを第2の複数のメモリに分割して冗長に記憶する第2メモリ群とに接続するメモリ制御装置であって、
前記第1の複数のメモリに接続する複数のチャンネルを有し、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第1のインタリーブ設定に基づき、前記第1メモリ群にアクセスする第1の制御回路と、
前記第2の複数のメモリに接続する複数のチャンネルを有し、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第2のインタリーブ設定に基づき、前記第2メモリ群にアクセスする第2の制御回路と、
前記第1メモリ群及び前記第2メモリ群に含まれるメモリの個数が変化した場合に、変化後のメモリの個数に基づいて、第3のインタリーブ設定を決定する決定手段と、
前記第3のインタリーブ設定と前記第1及び第2のインタリーブ設定とを比較し、データの分割数が異なるチャンネルを特定する特定手段と、
前記特定されたチャンネルに対応する部分の第3のインタリーブ設定を使って前記第1及び第2のインタリーブ設定を変更する変更手段と、
前記第1のインタリーブ設定の変更に係るチャンネルに対応する第1のメモリのデータを前記第2のインタリーブ設定の変更に係るチャンネルに対応する第2のメモリにコピーし、前記第2のインタリーブ設定の変更に係るチャンネルに対応する第2のメモリのデータを前記第1のインタリーブ設定の変更に係るチャンネルに対応する第1のメモリにコピーするコピー手段と
を備えることを特徴とするメモリ制御装置。 - 前記メモリ制御装置において、
前記決定手段は、前記第3のインタリーブ設定におけるデータの分割数を、mのn乗であり(m,n:0以上の整数)且つ前記第1メモリ群又は前記第2メモリ群に含まれるメモリの個数を超えない範囲で、最大値に設定することを特徴とする請求項1に記載のメモリ制御装置。 - 前記メモリ制御装置において、
前記第1〜第3のインタリーブ設定は、いずれも前記複数のチャンネルの各々を識別するチャンネル番号と、各チャンネルが連続するデータのグループに属するか又は異なるデータのグループに属するかを識別するための番号とを含むことを特徴とする請求項1又は2に記載のメモリ制御装置。 - 前記メモリ制御装置において、
前記変更手段が、前記特定されたチャンネルに対応する部分の第3のインタリーブ設定を使って前記第1のインタリーブ設定を変更した後に、前記コピー手段は、前記第2のインタリーブ設定の変更に係るチャンネルに対応する第2のメモリのデータを前記第1のインタリーブ設定の変更に係るチャンネルに対応する第1のメモリにコピーし、
前記変更手段が前記特定されたチャンネルに対応する部分の第3のインタリーブ設定を使って前記第2のインタリーブ設定を変更した後に、前記コピー手段は、前記第1のインタリーブ設定の変更に係るチャンネルに対応する第1のメモリにコピーされたデータを前記第2のインタリーブ設定の変更に係るチャンネルに対応する第2のメモリにコピーすることを特徴とする請求項1乃至3のいずれか1項に記載のメモリ制御装置。 - 前記メモリ制御装置において、
前記コピー手段は、コピー終了時にデータのコピーが正常に終了したか否かを判定することを特徴とする請求項1乃至4のいずれか1項に記載のメモリ制御装置。 - 前記メモリ制御装置は、
前記第1メモリ群及び前記第2メモリ群からのデータ読み出しを禁止する読出制御手段をさらに備え、
前記変更手段が前記特定されたチャンネルに対応する部分の第3のインタリーブ設定を使って前記第1のインタリーブ設定を変更する前に、前記読出制御手段は、前記第1メモリ群からのデータ読み出しを禁止し、前記変更手段が前記特定されたチャンネルに対応する部分の第3のインタリーブ設定を使って前記第2のインタリーブ設定を変更する前に、前記読出制御手段は、前記第2メモリ群からのデータ読み出しを禁止することを特徴とする請求項1乃至5のいずれか1項に記載のメモリ制御装置。 - データを第1の複数のメモリに分割して記憶する第1メモリ群と、前記データを第2の複数のメモリに分割して冗長に記憶する第2メモリ群と、前記第1及び第2のメモリ群に接続するメモリ制御装置と、前記メモリ制御装置を介して前記第1及び第2のメモリ群にデータを読み書きする演算処理装置とを有する情報処理装置であって、
前記メモリ制御装置は、
前記第1の複数のメモリに接続する複数のチャンネルを有し、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第1のインタリーブ設定に基づき、前記第1メモリ群にアクセスする第1の制御回路と、
前記第2の複数のメモリに接続する複数のチャンネルを有し、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第2のインタリーブ設定に基づき、前記第2メモリ群にアクセスする第2の制御回路と、
前記第1メモリ群及び前記第2メモリ群に含まれるメモリの個数が変化した場合に、変化後のメモリの個数に基づいて、第3のインタリーブ設定を決定する決定手段と、
前記第3のインタリーブ設定と前記第1及び第2のインタリーブ設定とを比較し、データの分割数が異なるチャンネルを特定する特定手段と、
前記特定されたチャンネルに対応する部分の第3のインタリーブ設定を使って前記第1及び第2のインタリーブ設定を変更する変更手段と、
前記第1のインタリーブ設定の変更に係るチャンネルに対応する第1のメモリのデータを前記第2のインタリーブ設定の変更に係るチャンネルに対応する第2のメモリにコピーし、前記第2のインタリーブ設定の変更に係るチャンネルに対応する第2のメモリのデータを前記第1のインタリーブ設定の変更に係るチャンネルに対応する第1のメモリにコピーするコピー手段と
を備えることを特徴とする情報処理装置。 - データを第1の複数のメモリに分割して記憶する第1メモリ群、及び前記データを第2の複数のメモリに分割して冗長に記憶する第2メモリ群に接続されるメモリ制御装置の制御方法であって、
前記第1メモリ群及び前記第2メモリ群に含まれるメモリ数が変化した場合に、当該メモリ数の情報及びデータの経路に基づいて、データを分割して、当該データの分割数に対応する個数のメモリに分割されたデータを読み書きする第3のインタリーブ設定を決定し、
前記第3のインタリーブ設定と前記メモリ制御装置に含まれる第1の制御回路の第1のインタリーブ設定及び前記メモリ制御装置に含まれる第2の制御回路の第2のインタリーブ設定とを比較し、前記第1の制御回路及び前記第2の制御回路の各々に含まれる複数のチャンネルのうち、データの分割数が異なるチャンネルを特定し、
前記特定されたチャンネルに対応する部分の第3のインタリーブ設定を使って前記第1及び第2のインタリーブ設定を変更し、
前記第1のインタリーブ設定の変更に係るチャンネルに対応する第1のメモリのデータを前記第2のインタリーブ設定の変更に係るチャンネルに対応する第2のメモリにコピーし、前記第2のインタリーブ設定の変更に係るチャンネルに対応する第2のメモリのデータを前記第1のインタリーブ設定の変更に係る第1のチャンネルに対応するメモリにコピーする、
ことを特徴とするメモリ制御装置の制御方法。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/JP2010/063773 WO2012020505A1 (ja) | 2010-08-13 | 2010-08-13 | メモリ制御装置、情報処理装置及びメモリ制御装置の制御方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPWO2012020505A1 JPWO2012020505A1 (ja) | 2013-10-28 |
| JP5360301B2 true JP5360301B2 (ja) | 2013-12-04 |
Family
ID=45567483
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2012528558A Expired - Fee Related JP5360301B2 (ja) | 2010-08-13 | 2010-08-13 | メモリ制御装置、情報処理装置及びメモリ制御装置の制御方法 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US20130145111A1 (ja) |
| EP (1) | EP2605143A4 (ja) |
| JP (1) | JP5360301B2 (ja) |
| WO (1) | WO2012020505A1 (ja) |
Families Citing this family (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
| US10445229B1 (en) | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
| US11249652B1 (en) | 2013-01-28 | 2022-02-15 | Radian Memory Systems, Inc. | Maintenance of nonvolatile memory on host selected namespaces by a common memory controller |
| GB2519351A (en) * | 2013-10-18 | 2015-04-22 | St Microelectronics Sa | A method and apparatus for use with different memory maps |
| US9542118B1 (en) | 2014-09-09 | 2017-01-10 | Radian Memory Systems, Inc. | Expositive flash memory control |
| US11175984B1 (en) | 2019-12-09 | 2021-11-16 | Radian Memory Systems, Inc. | Erasure coding techniques for flash memory |
| JP2024137066A (ja) * | 2023-03-24 | 2024-10-07 | キオクシア株式会社 | メモリシステム |
| KR102639415B1 (ko) * | 2023-07-18 | 2024-02-23 | 메티스엑스 주식회사 | 프로세서에서 단일 트랜잭션으로부터 변환된 복수의 트랜잭션들을 처리하는 방법 및 이를 수행하기 위한 프로세서 |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS62140153A (ja) * | 1985-12-16 | 1987-06-23 | Nec Corp | 二重化デ−タ処理装置 |
| JPH03502019A (ja) * | 1988-10-27 | 1991-05-09 | ユニシス コーポレーシヨン | 自動可変メモリのインタリーブシステム |
| JPH04191944A (ja) * | 1990-11-27 | 1992-07-10 | Toshiba Corp | メモリインターリーブ制御装置 |
| JP2724078B2 (ja) * | 1992-09-29 | 1998-03-09 | 株式会社日立製作所 | 二重化メモリの保守方法 |
| JP2006505864A (ja) * | 2002-11-08 | 2006-02-16 | インテル コーポレイション | インタリーブミラーメモリシステム |
| WO2010109537A1 (ja) * | 2009-03-27 | 2010-09-30 | 富士通株式会社 | 情報処理装置、メモリ制御方法、及びメモリ制御装置 |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5428758A (en) * | 1991-05-10 | 1995-06-27 | Unisys Corporation | Method and system for remapping memory from one physical configuration to another physical configuration |
| US5530837A (en) * | 1994-03-28 | 1996-06-25 | Hewlett-Packard Co. | Methods and apparatus for interleaving memory transactions into an arbitrary number of banks |
| US5758118A (en) * | 1995-12-08 | 1998-05-26 | International Business Machines Corporation | Methods and data storage devices for RAID expansion by on-line addition of new DASDs |
| US6148414A (en) * | 1998-09-24 | 2000-11-14 | Seek Systems, Inc. | Methods and systems for implementing shared disk array management functions |
| US6643795B1 (en) * | 2000-03-30 | 2003-11-04 | Hewlett-Packard Development Company, L.P. | Controller-based bi-directional remote copy system with storage site failover capability |
| US7370025B1 (en) * | 2002-12-17 | 2008-05-06 | Symantec Operating Corporation | System and method for providing access to replicated data |
| US7424637B1 (en) * | 2003-03-21 | 2008-09-09 | Networks Appliance, Inc. | Technique for managing addition of disks to a volume of a storage system |
| US7908413B2 (en) * | 2003-07-15 | 2011-03-15 | International Business Machines Corporation | Data allocation in a distributed storage system |
| US8806103B2 (en) * | 2004-04-28 | 2014-08-12 | Hewlett-Packard Development Company, L.P. | System and method for interleaving memory |
| US7318114B1 (en) * | 2004-10-29 | 2008-01-08 | Sun Microsystems, Inc. | System and method for dynamic memory interleaving and de-interleaving |
| US7523288B2 (en) * | 2006-09-06 | 2009-04-21 | Microsoft Corporation | Dynamic fragment mapping |
| JP2008217727A (ja) | 2007-03-08 | 2008-09-18 | Hitachi Ltd | メモリホットプラグ時のデータコピー速度変更方式 |
-
2010
- 2010-08-13 JP JP2012528558A patent/JP5360301B2/ja not_active Expired - Fee Related
- 2010-08-13 WO PCT/JP2010/063773 patent/WO2012020505A1/ja not_active Ceased
- 2010-08-13 EP EP10855906.3A patent/EP2605143A4/en not_active Withdrawn
-
2013
- 2013-02-04 US US13/758,289 patent/US20130145111A1/en not_active Abandoned
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS62140153A (ja) * | 1985-12-16 | 1987-06-23 | Nec Corp | 二重化デ−タ処理装置 |
| JPH03502019A (ja) * | 1988-10-27 | 1991-05-09 | ユニシス コーポレーシヨン | 自動可変メモリのインタリーブシステム |
| JPH04191944A (ja) * | 1990-11-27 | 1992-07-10 | Toshiba Corp | メモリインターリーブ制御装置 |
| JP2724078B2 (ja) * | 1992-09-29 | 1998-03-09 | 株式会社日立製作所 | 二重化メモリの保守方法 |
| JP2006505864A (ja) * | 2002-11-08 | 2006-02-16 | インテル コーポレイション | インタリーブミラーメモリシステム |
| WO2010109537A1 (ja) * | 2009-03-27 | 2010-09-30 | 富士通株式会社 | 情報処理装置、メモリ制御方法、及びメモリ制御装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| JPWO2012020505A1 (ja) | 2013-10-28 |
| EP2605143A1 (en) | 2013-06-19 |
| US20130145111A1 (en) | 2013-06-06 |
| EP2605143A4 (en) | 2014-10-08 |
| WO2012020505A1 (ja) | 2012-02-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP5360301B2 (ja) | メモリ制御装置、情報処理装置及びメモリ制御装置の制御方法 | |
| US8103825B2 (en) | System and method for providing performance-enhanced rebuild of a solid-state drive (SSD) in a solid-state drive hard disk drive (SSD HDD) redundant array of inexpensive disks 1 (RAID 1) pair | |
| CN101206553B (zh) | 利用支持处理器的优化数据迁移方法和系统 | |
| US8738701B2 (en) | Arbitration of disk ownership in a storage pool | |
| US8627181B1 (en) | Storage apparatus, storage controller, and method for managing locations of error correcting code blocks in array | |
| US10649892B2 (en) | Operating a raw mirror within a RAID system | |
| US11070979B2 (en) | Constructing a scalable storage device, and scaled storage device | |
| JPH0683717A (ja) | 大型耐故障不揮発性複数ポート・メモリー | |
| TWI903895B (zh) | 用於使用卸載主機任務的非揮發性儲存裝置進行資料處理的方法、系統及非暫態性處理器可讀取媒體 | |
| JP2016181078A (ja) | ストレージシステム、ストレージの管理方法、及び、コンピュータ・プログラム | |
| JP5182162B2 (ja) | 計算機システム及びi/o制御方法 | |
| JP2022145964A (ja) | 記憶システム及びその制御方法 | |
| US20220318015A1 (en) | Enforcing data placement requirements via address bit swapping | |
| US20130166860A1 (en) | Memory access control device and computer system | |
| JP2006318017A (ja) | Raid構成変換方法、装置及びプログラム並びにこれを用いたディスクアレイ装置 | |
| JP5590028B2 (ja) | 情報処理装置、メモリ制御方法、及びメモリ制御装置 | |
| JP2019083082A (ja) | フラッシュメモリモジュール及びフラッシュメモリ | |
| RU2714602C1 (ru) | Способ и система для обработки данных | |
| WO2016088372A1 (ja) | アクセス装置、マイグレーション装置、分散ストレージシステム、アクセス方法及びコンピュータ読み取り可能記録媒体 | |
| WO2016122602A1 (en) | Systems and methods for sharing non-volatile memory between multiple access models | |
| US20250341987A1 (en) | Non-volatile storage device offloading of host tasks | |
| JP2702278B2 (ja) | ディスクドライブ装置 | |
| US12566667B2 (en) | Managing parity operations using controller-specific parity bitmaps | |
| US20260050382A1 (en) | Dynamic Storage Aggregate Layout Refresh | |
| WO2016068870A1 (en) | Media controller with coordination buffer |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20130806 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130819 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| LAPS | Cancellation because of no payment of annual fees |