JP6061037B2 - 記憶制御装置、記憶制御方法および記憶制御プログラム - Google Patents
記憶制御装置、記憶制御方法および記憶制御プログラム Download PDFInfo
- Publication number
- JP6061037B2 JP6061037B2 JP2015537465A JP2015537465A JP6061037B2 JP 6061037 B2 JP6061037 B2 JP 6061037B2 JP 2015537465 A JP2015537465 A JP 2015537465A JP 2015537465 A JP2015537465 A JP 2015537465A JP 6061037 B2 JP6061037 B2 JP 6061037B2
- Authority
- JP
- Japan
- Prior art keywords
- area
- actual use
- storage
- management information
- management
- 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; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/30—Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
- G06F11/1451—Management of the data involved in backup or backup restore by selection of backup contents
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Power Sources (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
本発明は、記憶制御装置、記憶制御方法および記憶制御プログラムに関する。
データのバックアップ技術の一例として、ある記憶装置の記憶領域全体の内容を、その中に実際にデータが書き込まれているかに関係なく、他の記憶装置へバックアップするという技術がある。この技術は、バックアップの制御が簡単になる反面、実際にデータが書き込まれていない記憶領域の内容も他の記憶装置へ転送される分だけ、転送に要する時間が長くなるという問題がある。
このような問題に関連し、ハイバネーションの高速化を図る技術として次のようなものがある。
例えば、計算機システムを起動する前に、主記憶装置の全領域に予め決められた固定データを書き込み、ハイバネーション処理の実施時に、主記憶装置の領域を区切った分割領域のうち、全域に固定データが書き込まれたままの領域を未使用領域と判定し、その領域に対しては、内容の固定記憶装置への転送を省略する技術が提案されている。
例えば、計算機システムを起動する前に、主記憶装置の全領域に予め決められた固定データを書き込み、ハイバネーション処理の実施時に、主記憶装置の領域を区切った分割領域のうち、全域に固定データが書き込まれたままの領域を未使用領域と判定し、その領域に対しては、内容の固定記憶装置への転送を省略する技術が提案されている。
また、例えば、ハイバネーションの際に、ページ毎にプログラムのマッピング状態を示すページインフォメーションに基づいて、空き領域および破棄可能領域を除く他の領域のみを使用中メモリとして、HDD(Hard Disk Drive)へセーブする技術が提案されている。
しかしながら、ハイバネーションの高速化を図る上記技術のいずれも、メモリ領域を予め決められた一定の大きさに分割した分割領域毎に、HDDへデータを転送するか否かを判定するものである。このため、依然として、実際にはデータが書き込まれていない領域の内容がHDDに転送され、その分だけデータ転送に要する時間が長くなるという問題が残る。
1つの側面では、本発明は、データのバックアップに要する時間を短縮した記憶制御装置、記憶制御方法および記憶制御プログラムを提供することを目的とする。
1つの案では、記憶制御装置が提供される。記憶制御装置は、記憶部および制御部を有する。記憶部は、第1の記憶装置の記憶領域のうち、データが書き込まれた領域を示す使用領域が登録される領域管理情報を記憶する。制御部は、第1の記憶装置の記憶領域のうち、領域管理情報に登録された使用領域に記憶されたデータを、第2の記憶装置に保存する。
また、1つの案では、上記記憶制御装置と同様の処理を実行する記憶制御方法が提供される。
さらに、1つの案では、上記記憶制御装置と同様の機能を実現する記憶制御プログラムが提供される。
さらに、1つの案では、上記記憶制御装置と同様の機能を実現する記憶制御プログラムが提供される。
一側面では、データのバックアップに要する時間を短縮できる。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の記憶制御装置の構成例および処理例を示す図である。記憶制御装置10は、記憶装置11(第1の記憶装置)に記憶されているデータを、記憶装置12(第2の記憶装置)にバックアップする機能を有する装置である。記憶装置11,12は、RAM(Random Access Memory)やDIMM(Dual Inline Memory Module)等の揮発性メモリでもよく、SSD(Solid State Drive)やHDD等の不揮発性記憶装置であってもよい。また、記憶装置11,12は、異なる種類の記憶装置であってもよい。例えば、記憶装置11が揮発性メモリであり、記憶装置12が不揮発性記憶装置であってもよい。また、記憶装置11,12は、複数個の揮発性メモリまたは不揮発性記憶装置で構成されたものであってもよい。
[第1の実施の形態]
図1は、第1の実施の形態の記憶制御装置の構成例および処理例を示す図である。記憶制御装置10は、記憶装置11(第1の記憶装置)に記憶されているデータを、記憶装置12(第2の記憶装置)にバックアップする機能を有する装置である。記憶装置11,12は、RAM(Random Access Memory)やDIMM(Dual Inline Memory Module)等の揮発性メモリでもよく、SSD(Solid State Drive)やHDD等の不揮発性記憶装置であってもよい。また、記憶装置11,12は、異なる種類の記憶装置であってもよい。例えば、記憶装置11が揮発性メモリであり、記憶装置12が不揮発性記憶装置であってもよい。また、記憶装置11,12は、複数個の揮発性メモリまたは不揮発性記憶装置で構成されたものであってもよい。
記憶制御装置10は、記憶部13および制御部14を有する。
記憶部13は、領域管理情報13aを記憶する。領域管理情報13aには、記憶装置11の記憶領域のうち、データが書き込まれた領域を示す使用領域が登録される。なお、データが書き込まれた領域を領域管理情報13aに登録する方法としては、例えば、記憶制御装置10が第1の記憶装置11へのデータの書き込み要求と書き込みアドレスとを受信したとき、受信した書き込みアドレスが示す書込領域を、使用領域として領域管理情報13aに登録する方法がある。
記憶部13は、領域管理情報13aを記憶する。領域管理情報13aには、記憶装置11の記憶領域のうち、データが書き込まれた領域を示す使用領域が登録される。なお、データが書き込まれた領域を領域管理情報13aに登録する方法としては、例えば、記憶制御装置10が第1の記憶装置11へのデータの書き込み要求と書き込みアドレスとを受信したとき、受信した書き込みアドレスが示す書込領域を、使用領域として領域管理情報13aに登録する方法がある。
制御部14は、記憶装置11の記憶領域のうち、領域管理情報13aに登録された使用領域に記憶されたデータを、記憶装置12に保存する。
例えば、図1では、“0x0100〜0x0200”のアドレス範囲である使用領域#1と、“0x0300〜0x0500”のアドレス範囲である使用領域#2とが、領域管理情報13aに登録されているとする。この場合、制御部14は、第1の記憶装置11の記憶領域のうち、使用領域#1に記憶されているデータと、使用領域#2に記憶されているデータのみを第2の記憶装置12に保存する。
例えば、図1では、“0x0100〜0x0200”のアドレス範囲である使用領域#1と、“0x0300〜0x0500”のアドレス範囲である使用領域#2とが、領域管理情報13aに登録されているとする。この場合、制御部14は、第1の記憶装置11の記憶領域のうち、使用領域#1に記憶されているデータと、使用領域#2に記憶されているデータのみを第2の記憶装置12に保存する。
このように、記憶制御装置10は、使用領域が登録された領域管理情報13aに基づいて、第1の記憶装置11のデータを第2の記憶装置12へ保存する。これにより、記憶制御装置10は、第1の記憶装置11の記憶領域のうち、データが書き込まれた領域の内容だけを第2の記憶装置12へ転送することができる。その結果、必要最小限の領域の内容だけが第1の記憶装置11から第2の記憶装置12へ転送され、データのバックアップに要する時間が短縮される。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムの例を示す図である。第2の実施の形態の情報処理システムは、システム記憶装置100、管理装置200および複数のサーバ装置300a,300b,…を有する。システム記憶装置100は、管理装置200およびサーバ装置300a,300b,…と接続されている。また、管理装置200は、サーバ装置300a,300b,…と接続されている。さらに、情報処理システムは、システム内の上記各装置に電源を供給するための装置として、無停電電源装置(UPS: Uninterruptible Power Supply)51および電源ユニット(PSU:Power Supply Unit)52を有している。
図2は、第2の実施の形態の情報処理システムの例を示す図である。第2の実施の形態の情報処理システムは、システム記憶装置100、管理装置200および複数のサーバ装置300a,300b,…を有する。システム記憶装置100は、管理装置200およびサーバ装置300a,300b,…と接続されている。また、管理装置200は、サーバ装置300a,300b,…と接続されている。さらに、情報処理システムは、システム内の上記各装置に電源を供給するための装置として、無停電電源装置(UPS: Uninterruptible Power Supply)51および電源ユニット(PSU:Power Supply Unit)52を有している。
UPS51には、外部電源50が接続されている。UPS51は、外部電源50から供給された電力を、PSU52を介してシステム内の各装置に供給する。また、UPS51は、充電池を有し、外部電源50から供給された電力を用いて充電池を充電する。UPS51は、停電などによる、外部電源50からUPS51への電源断を検出したとき、充電池から一定時間PSU52に電力を供給すると共に、電源断の状態である旨をPSU52を経由して管理装置200へ通知する。
PSU52は、コンピュータに電力を供給する装置である。PSU52は、UPS51から供給された交流の電力を直流に変換し、変換した電力をシステム記憶装置100および管理装置200へ供給する。
なお、PSU52は、管理装置200およびシステム記憶装置100だけでなく、サーバ装置300a,300b,…にも電力を供給してもよい。あるいは、サーバ装置300a,300b,…には、PSU52とは別のPSUから電力が供給されてもよい。
システム記憶装置100は、第1の実施の形態の記憶制御装置10の一例である。システム記憶装置100は、揮発性メモリおよび不揮発性記憶装置を備える。システム記憶装置100は、サーバ装置300a,300b,…のいずれかの要求に応じて、揮発性メモリへのアクセスを実行し、実行結果を要求元のサーバ装置に送信する。これにより、システム記憶装置100は、揮発性メモリの記憶領域をサーバ装置300a,300b,…によって共有されるメモリ領域として提供する。
また、システム記憶装置100は、管理装置200の要求に応じて、揮発性メモリ上のデータを、不揮発性記憶装置にバックアップする。さらに、システム記憶装置100は、管理装置200の要求に応じて、バックアップされたデータ(以下、“バックアップデータ”)を揮発性メモリに復元する。
管理装置200は、システムの状態を管理するコンピュータである。管理装置200は、外部電源50からの電源断の有無を監視する。例えば、電源ユニット52は、UPS51が外部電源50からの電源断を検出したことの通知を、PSU52を介して受信したとき、電源断を判定する。また、管理装置200は、PSU52の故障の有無を監視し、PSU52の故障を検知したときに、電源断と判定してもよい。
管理装置200は、電源断と判定した場合、システム記憶装置100に揮発性メモリ上のデータのバックアップを要求する。また、管理装置200は、電源が復旧したと判定した場合、システム記憶装置100にバックアップデータの復元を要求する。
サーバ装置300a,300b,…は、それぞれ所定の処理を実行するコンピュータである。サーバ装置300a,300b,…は、システム記憶装置100が備える揮発性メモリを共有して処理を実行することが可能である。サーバ装置300a,300b,…は、システム記憶装置100が備える揮発性メモリへのアクセスをシステム記憶装置100へ要求し、アクセス結果をシステム記憶装置100から受信する。サーバ装置300a,300b,…はそれぞれ、例えば、マルチクラスタコンピュータシステムにおけるクラスタを構成する。
図3は、管理装置のハードウェア構成例を示す図である。管理装置200は、プロセッサ201、RAM202、HDD203、画像信号処理部204、入力信号処理部205、ディスクドライブ206および通信インタフェース207を有する。これらのユニットは、管理装置200内でバス208に接続されている。
プロセッサ201は、プログラムの命令を実行する演算器を含むプロセッサである。プロセッサ201は、HDD203に記憶されているプログラムやデータの少なくとも一部をRAM202にロードしてプログラムを実行する。なお、プロセッサ201は複数のプロセッサコアを備えてもよい。また、管理装置200は、複数のプロセッサを備えてもよい。また、管理装置200は、複数のプロセッサまたは複数のプロセッサコアを用いて並列処理を行ってもよい。また、2以上のプロセッサの集合、FPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Circuit)等の専用回路、2以上の専用回路の集合、プロセッサと専用回路の組み合わせ等を「プロセッサ」と呼んでもよい。
RAM202は、プロセッサ201が実行するプログラムやプログラムから参照されるデータを一時的に記憶する揮発性メモリである。なお、管理装置200は、RAM以外の種類のメモリを備えてもよく、複数個の揮発性メモリを備えてもよい。
HDD203は、OS(Operating System)やファームウェアやアプリケーションソフトウェア等のソフトウェアのプログラムおよびデータを記憶する不揮発性の記憶装置である。なお、管理装置200は、フラッシュメモリ等の他の種類の記憶装置を備えてもよく、複数個の不揮発性の記憶装置を備えてもよい。
画像信号処理部204は、プロセッサ201からの命令に従って、管理装置200に接続されたディスプレイ21に画像を出力する。ディスプレイ21としては、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイ等を用いることができる。
入力信号処理部205は、管理装置200に接続された入力デバイス22から入力信号を取得し、プロセッサ201に通知する。入力デバイス22としては、マウスやタッチパネル等のポインティングデバイス、キーボード等を用いることができる。
ディスクドライブ206は、記録媒体23に記録されたプログラムやデータを読み取る駆動装置である。記録媒体23として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDD等の磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)等の光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。ディスクドライブ206は、プロセッサ201からの命令に従って、記録媒体23から読み取ったプログラムやデータをRAM202またはHDD203に格納する。
通信インタフェース207は、他の情報処理装置(例えば、システム記憶装置100等)と通信を行う。
なお、管理装置200はディスクドライブ206を備えていなくてもよく、専ら他の情報処理装置からアクセスされる場合には、画像信号処理部204や入力信号処理部205を備えていなくてもよい。また、ディスプレイ21や入力デバイス22は、管理装置200の筐体と一体に形成されていてもよい。
なお、管理装置200はディスクドライブ206を備えていなくてもよく、専ら他の情報処理装置からアクセスされる場合には、画像信号処理部204や入力信号処理部205を備えていなくてもよい。また、ディスプレイ21や入力デバイス22は、管理装置200の筐体と一体に形成されていてもよい。
なお、サーバ装置300a,300b,…も、管理装置200と同様のハードウェアを用いて実現できる。
図4は、システム記憶装置のハードウェア構成例を示す図である。システム記憶装置100は、通信インタフェース101,102、DIMM110、SSD120および記憶制御回路130を有する。DIMM110は、第1の実施の形態の記憶装置11の一例である。SSD120は、第1の実施の形態の記憶装置12の一例である。記憶制御回路130は、第1の実施の形態の制御部14の一例である。
図4は、システム記憶装置のハードウェア構成例を示す図である。システム記憶装置100は、通信インタフェース101,102、DIMM110、SSD120および記憶制御回路130を有する。DIMM110は、第1の実施の形態の記憶装置11の一例である。SSD120は、第1の実施の形態の記憶装置12の一例である。記憶制御回路130は、第1の実施の形態の制御部14の一例である。
DIMM110は、サーバ装置300a,300b,…から参照されるデータを一時的に記憶する揮発性メモリである。なお、システム記憶装置100は、RAM等DIMM以外の種類の揮発性メモリを備えてもよく、複数個の揮発性メモリを備えてもよい。
SSD120は、DIMM110に記憶されているデータのバックアップデータを記憶する不揮発性の記憶装置である。なお、システム記憶装置100は、フラッシュメモリやHDD等の他の種類の記憶装置を備えてもよく、複数個の不揮発性の記憶装置を備えてもよい。
通信インタフェース101は、サーバ装置300a,300b,…からDIMM110へのアクセス要求を受信し、受信したアクセス要求を記憶制御回路130へ出力する。アクセス要求の種類は、DIMM110へデータの書き込みを要求する書込要求、または、DIMM110からのデータの読出しを要求する読出要求となる。また、通信インタフェース101は、アクセス要求に対するアクセス結果を記憶制御回路130から受信し、受信したアクセス結果をアクセス要求元のサーバ装置300a,300b,…に送信する。
通信インタフェース102は、管理装置200からバックアップ要求を受信し、受信したバックアップ要求を記憶制御回路130へ出力する。バックアップ要求は、管理装置200がシステム記憶装置100にDIMM110上のデータのバックアップを要求するための通知である。また、通信インタフェース102は、記憶制御回路130からバックアップ完了通知を受信すると、受信したバックアップ完了通知を管理装置200へ送信する。
さらに、通信インタフェース102は、管理装置200から復元要求を受信し、受信した復元要求を記憶制御回路130へ出力する。復元要求は、管理装置200がシステム記憶装置100にSSD120上のバックアップデータの復元を要求するための通知である。また、通信インタフェース102は、記憶制御回路130から復元完了通知を受信すると、受信した復元完了通知を管理装置200へ送信する。
記憶制御回路130は、DIMM110やSSD120を用いたデータの読み書き、およびDIMM110上のデータのバックアップに関する処理を制御する回路である。記憶制御回路130は、DIMM入出力部140、管理情報記憶部150、SSD入出力部160、メモリ制御部170、アドレス管理部180および転送制御部190を有する。
DIMM入出力部140は、メモリ制御部170または転送制御部190からの要求に応じて、DIMM110へのデータの入出力を制御する。DIMM入出力部140は、例えば、DIMM110に対してデータの読み出しアドレスを出力するためのDIMMリードレジスタや、DIMM110に対してデータの書き込み先アドレスを出力するためのDIMMライトレジスタを有する。これらのDIMMリードレジスタやDIMMライトレジスタへのアドレスの設定は、データ入出力の要求元のメモリ制御部170または転送制御部190から行われる。
SSD入出力部160は、転送制御部190からの要求に応じて、SSD120へのデータの入出力を制御する。SSD入出力部160は、例えば、SSD120に対してデータの読み出しアドレスを出力するためのSSDリードレジスタや、SSD120に対してデータの書き込み先アドレスを出力するためのSSDライトレジスタを有する。これらのSSDリードレジスタやSSDライトレジスタへのアドレスの設定は、データ入出力の要求元の転送制御部190から行われる。
管理情報記憶部150は、第1の実施の形態の記憶部13の一例である。管理情報記憶部150は、DIMM110上の使用中の領域を示す情報をそれぞれ記憶する複数の管理レジスタを有する。使用中の領域とは、例えば、サーバ装置300a,300b,…の要求によりデータが書き込まれた領域である。以下、DIMM110における使用中の領域を“実使用領域”と記載する場合がある。
メモリ制御部170は、通信インタフェース101を経由して、サーバ装置300a,300b,…からDIMM110へのアクセス要求を受信する。アクセス要求には、データの入出力先領域の先頭アドレスとデータ長とが含まれる。メモリ制御部170は、アクセス要求に含まれる先頭アドレスとデータ長とに基づいて、データの入出力先のアドレスをDIMM入出力部140へ指定することで、DIMM110のデータの入出力を実行する。また、メモリ制御部170は、受信したアクセス要求の種類が書込要求である場合、アドレス管理部180へ、書き込み先領域の先頭アドレスとデータ長とを出力する。
アドレス管理部180は、メモリ制御部170が書込要求を受信し、書き込み先領域の先頭アドレスとデータ長とがメモリ制御部170から出力されると、その書込要求で指定された書き込み先のアドレス範囲と、管理レジスタに格納されている実使用領域とに基づいて、管理レジスタを更新する。以下、書込要求で指定された書き込み先のアドレス範囲を“書込要求領域”と記載する場合がある。
転送制御部190は、通信インタフェース102を経由して、管理装置200からのバックアップ要求および復元要求を受信する。転送制御部190は、管理装置200からのバックアップ要求に応じて、DIMM110からSSD120へデータをバックアップする。この際、転送制御部190は、管理レジスタを参照して、実使用領域のデータのみをSSD120へバックアップする。また、転送制御部190は、管理装置200からの復元要求に応じて、SSD120からDIMM110へバックアップデータを復元する。転送制御部190は、データのバックアップや復元の際、DIMM入出力部140およびSSD入出力部160を用いて、DIMM110とSSD120との間のデータの転送を制御する。
なお、記憶制御回路130は、例えば、同一基板上に実装された1つ以上のハードウェア回路として実現可能である。このようなハードウェア回路としては、プロセッサ、LSI(Large Scale Integration)、FPGA、ASIC等がある。
次に、図5〜6を用いて、本実施の形態で例として適用されるDIMM110へのデータの書き込みの制限について説明する。なお、以下の説明において、“0x…”は16進数で表記したことを示す。
図5は、データの書き込みの制限の例を示す図である。アドレス111は、DIMM110上のアドレスの位置を0x10バイト間隔で表したものである。バイト位置112は、アドレス111上の位置を先頭としたバイト位置を示す。例えば、領域#1のアドレス範囲は、“0x0_FFB0”〜“0x0_FFB7”となり、領域#2のアドレス範囲は、“0x0_FFD8”〜“0x0_FFE7”となる。また、領域#3のアドレス範囲は、“0x1_0011”〜“0x1_0018”となる。
アライン境界113は、DIMM110において、書き込み先のアドレス範囲の先頭のアドレスとして許容されるアドレスの位置を示す。システム記憶装置100では、8バイト毎にアライン境界が存在する。すなわち、システム記憶装置100において、書き込み先の先頭のアドレスは、8の倍数であるときのみ許容される。例えば、領域#1,#2は、先頭のアドレスが8の倍数であるため、書込要求領域として、領域#1または領域#2を指定することができる。しかし、領域#3は、先頭のアドレスが8の倍数でないため、書込要求領域として領域#3を指定することはできない。
図6は、データの書き込みの制限の例を示す図(続き)である。DIMM110は、固定サイズであるページ単位で分割されている。ページ境界114は、ページ毎の境界を示す。ここでは、1ページのサイズを64キロバイトとする。
サーバ装置300a,300b,…は、DIMM110への書き込みを要求する際、ページ境界114をまたがるような書込要求領域を指定することはできない。例えば、領域#4のアドレス範囲は、“0x0_FFC8”〜“0x1_0007”であり、ページ境界である“0x0_FFFF”をまたがっている。そのため、サーバ装置300a,300b,…は、DIMM110への書き込みを要求する際、領域#4を指定することはできない。
次に、図7〜9を用いて、システム記憶装置100が用いるデータについて説明する。
図7は、管理レジスタの例を示す図である。管理レジスタ群151は、実使用領域を示す情報を格納する管理レジスタ152の集合である。管理レジスタ群151は、複数の分割領域の数分存在し、これらの分割領域それぞれに対応づけられている。本実施例では、各管理レジスタ群151は、4つずつ管理レジスタ152を有する。なお、管理レジスタ群151が有する管理レジスタ152の数は、4つ未満でもよいし、5つ以上でもよい。
図7は、管理レジスタの例を示す図である。管理レジスタ群151は、実使用領域を示す情報を格納する管理レジスタ152の集合である。管理レジスタ群151は、複数の分割領域の数分存在し、これらの分割領域それぞれに対応づけられている。本実施例では、各管理レジスタ群151は、4つずつ管理レジスタ152を有する。なお、管理レジスタ群151が有する管理レジスタ152の数は、4つ未満でもよいし、5つ以上でもよい。
分割領域とは、DIMM110の記憶領域が分割された領域である。また、本実施の形態では、DIMM110は8つの分割領域に分割されている。各分割領域は、各分割領域のアドレスの上位3ビットの値により識別される。例えば、“0x0_0000_0000”〜“0x0_FFFF_FFFF”のアドレス範囲で示される分割領域の場合、識別子は“0x0”となる。また、“0x1_0000_0000”〜“0x1_FFFF_FFFF”のアドレス範囲で示される分割領域の場合、識別子は“0x1”となり、“0x7_0000_0000”〜“0x7_FFFF_FFFF”のアドレス範囲で示される分割領域の場合、識別子は“0x7”となる。以下、識別子が“0x0”である分割領域を“分割領域(0x0)”と記載する場合がある。また、分割領域(0x0)に対応する複数の管理レジスタ群151を“管理レジスタ群(0x0)”と記載する場合がある。
なお、分割領域の数は7つ以下でもよいし、9つ以上でもよい。その場合、分割領域の識別子を取得するためのビット数は、分割領域の数に応じて変わる。例えば、分割領域を16個にする場合、分割領域の識別子は、アドレスの上位4ビットとする。
管理レジスタ152は、レジスタ、有効ビット、先頭ポインタおよび末尾ポインタの項目を有する。レジスタの項目には、管理レジスタ群151内の管理レジスタ152を識別するための識別子が設定される。管理レジスタ群151それぞれについて、各管理レジスタ152のレジスタの項目には、“R0”〜“R3”のいずれかの異なる識別子が設定される。以下、管理レジスタ群(0x0)に属する管理レジスタ152の識別子が“R0”の場合、その管理レジスタ152を“管理レジスタ(0#R0)”と記載する場合がある。また、管理レジスタ(0#R0)に対応する実使用領域を、“実使用領域(0#R0)”と記載する場合がある。
有効ビットの項目には、管理レジスタ152が有効であるかを示す情報が設定される。有効な管理レジスタ152とは、実使用領域に関する情報が設定されている管理レジスタ152のことである。管理レジスタ152が有効である場合、有効ビットの項目には“1”が設定され、管理レジスタ152が無効である場合、有効ビットの項目には“0”が設定される。
先頭ポインタの項目には、実使用領域の先頭のアドレスが設定される。末尾ポインタの項目には、実使用領域の末尾のアドレスの次のアドレスが設定される。例えば、実使用領域のアドレス範囲が“0x0_0000_0100”〜“0x0_0020_00FF”である場合、先頭ポインタには“0x0_0000_0100”が設定され、末尾ポインタには“0x0_0020_0100”が設定される。
上記のように、DIMM110の記憶領域を複数の分割領域に分割し、分割領域毎に一定数の管理レジスタ152を割り当てて実使用領域を登録するようにした。これにより、有限個の管理レジスタ152を使用しながらも、実際にデータが書き込まれた実使用領域を、DIMM110の記憶領域全体にわたって偏りなく管理することができる。
図8は、書き込み要求に伴う管理レジスタへの登録処理の例を示す図である。書込要求31は、サーバ装置300a,300b,…からシステム記憶装置100へ、データの書き込みを要求するための通知である。書込要求31には、書込要求領域に関する情報が含まれる。書込要求31は、先頭アドレス、データ長およびデータの項目を有する。
先頭アドレスの項目には、DIMM110における書込要求領域の先頭のアドレス(以下、先頭アドレス)が設定される。データ長の項目には、DIMM110における書込要求領域のデータ長が設定される。データの項目には、書込要求領域に書き込むデータが設定される。
アドレス管理部180は、書込要求31に含まれる書込要求領域を管理レジスタ152に登録する場合、管理レジスタ152の先頭ポインタの項目に、書込要求31の先頭アドレスを設定する。また、管理レジスタ152の末尾ポインタの項目に、書込要求31の先頭アドレスにデータ長を加えた値を設定する。
例えば、書込要求31において、先頭アドレスには“0x0_0000_0100”が設定され、データ長には“0x20_0000”が設定されているとする。この書込要求31で示される書込要求領域を実使用領域(0#R0)として登録する際、管理レジスタ(0#R0)の先頭ポインタには“0x0_0000_0100”が設定され、末尾ポインタには“0x0#0020#0100”が設定される。
ここで、第2の実施の形態のシステムにおいて、書き込みが要求されるたびに全ての書込要求領域を実使用領域として管理レジスタ152に登録できることが望ましい。しかし、物理的に設置可能な管理レジスタ152の数は限られているため、書き込みが要求されるたびに全ての書込要求領域を登録することは不可能である。そこで、第2の実施の形態のシステムでは、一定の条件下において、書込要求領域と登録済みの実使用領域とをマージして別の実使用領域に置き換えて管理レジスタ152に登録し直す。以下の図9〜17では、書込要求領域と実使用領域との位置関係に基づいて、書込要求領域と実使用領域とをマージした実使用領域で管理レジスタ152を更新する例について説明する。
まず、図9〜10を用いて、書込要求領域が実使用領域と重複しない場合の管理レジスタ152の更新例について説明し、図11〜13を用いて、書込要求領域が実使用領域と重複する場合の管理レジスタ152の更新例について説明する。次に、図14を用いて、書込要求領域が実使用領域に包含される場合の管理レジスタ152の更新例について説明し、図15〜16を用いて、書込要求領域と実使用領域との間隔に基づく管理レジスタ152の更新例について説明する。そして、図17〜18を用いて、書込要求領域と複数の実使用領域それぞれとを比較した場合について、管理レジスタ152を更新する例について説明する。
なお、図9〜18の説明では、分割領域(0x0)上の領域について書込要求31がされたものとする。また、図9〜18の説明では、DIMM110上のアドレスを5桁の16進数(例えば、“0x0_1000”)で表すものとする。また、図9〜18の説明では、管理レジスタ152における有効ビットの項目の記載を省略する。また、図9〜18の説明では、無効な(すなわち、有効ビットが“0”である)管理レジスタ152の記載を省略する。
図9は、書込要求領域が実使用領域と重複しない場合の管理レジスタの更新例を示す図である。アドレス管理部180は、有効な管理レジスタ152に登録されている実使用領域と、書込要求領域との間隔に基づき、書込要求領域と実使用領域との位置関係を判定し、判定した位置関係に基づいてその実使用領域に対応する管理レジスタ152を更新する。
位置関係判定表153は、書込要求領域と実使用領域との位置関係に関する情報を格納する表である。位置関係判定表153は、説明をわかりやすくするために示した表であるが、例えば、アドレス管理部180が処理結果を一時的に保持して参照するために、記憶制御回路130内の記憶装置(図示せず)に一時的に格納されてもよい。位置関係判定表153は、レジスタ、間隔A、間隔B、間隔C、間隔Dおよび位置関係の項目を有する。
レジスタの項目には、管理レジスタ152を識別する識別子が設定される。レジスタの項目の値により、書込要求領域との位置関係を比較する実使用領域を特定できる。
間隔Aの項目には、“書込要求領域の先頭アドレス−実使用領域の先頭ポインタ”により算出された間隔が設定される。間隔Bの項目には、“書込要求領域の先頭アドレス−実使用領域の末尾ポインタ”により算出された間隔が設定される。間隔Cの項目には、“実使用領域の先頭ポインタ−書込要求領域の先頭アドレスにデータ長を加算したアドレス(以下、末尾アドレス)”により算出された間隔が設定される。間隔Dの項目には、“実使用領域の末尾ポインタ−書込要求領域の末尾アドレス”により算出された間隔が設定される。
間隔Aの項目には、“書込要求領域の先頭アドレス−実使用領域の先頭ポインタ”により算出された間隔が設定される。間隔Bの項目には、“書込要求領域の先頭アドレス−実使用領域の末尾ポインタ”により算出された間隔が設定される。間隔Cの項目には、“実使用領域の先頭ポインタ−書込要求領域の先頭アドレスにデータ長を加算したアドレス(以下、末尾アドレス)”により算出された間隔が設定される。間隔Dの項目には、“実使用領域の末尾ポインタ−書込要求領域の末尾アドレス”により算出された間隔が設定される。
位置関係の項目には、書込要求領域と実使用領域の位置関係を示す情報が設定される。例えば、対応する管理レジスタ152に登録された実使用領域が書込要求領域と重複しない場合、位置関係の項目には、“重複無し”が設定される。また、対応する管理レジスタ152に登録された実使用領域の一部が書込要求領域と重複する場合、位置関係の項目には、“重複”が設定される。また、対応する管理レジスタ152に登録された実使用領域が書込要求領域を包含する場合、位置関係の項目には、“包含”が設定される。さらに、対応する管理レジスタ152が無効である場合、位置関係の項目には、“無効”が設定される。なお、図9〜18の説明では、位置関係が“無効”であるレコードの記載を省略する。
図9上段のように、実使用領域と重複せず、かつ、実使用領域より後ろの記憶領域への書込要求がされた場合、間隔A,Bそれぞれが0より大きくなる。この場合、アドレス管理部180は、書込要求領域と実使用領域との位置関係を“重複無し”と判定する。
例えば、先頭ポインタが“0x0_2000”であり、かつ、末尾ポインタが“0x0_3000”である実使用領域(0#R0)がDIMM110上に存在している。この状態で、先頭アドレスが“0x0_4000”であり、かつ、データ長が“0x1000”である書込要求領域への書込要求31が受信されたとする。この場合、アドレス管理部180は、書込要求領域と実使用領域との位置関係を次のように判定する。
まず、アドレス管理部180は、間隔A〜Dを算出する。その結果、図9の位置関係判定表153が示すように、間隔Aは“0x2000”となり、間隔Bは“0x1000”となり、間隔Cは“−0x3000”となり、間隔Dは“−0x2000”となる。この場合、間隔A,Bそれぞれが0より大きいため、アドレス管理部180は、書込要求領域と実使用領域との位置関係を“重複無し”と判定する。
そして、位置関係が“重複無し”の場合、アドレス管理部180は、書込要求31で指定された書込要求領域を、実使用領域として管理レジスタ152へ登録する。具体的には、アドレス管理部180は、先頭ポインタが“0x0_4000”であり、かつ、末尾ポインタが“0x0_4000+0x1000=0x0_5000”である実使用領域を、新たに無効な管理レジスタ152(ここでは、管理レジスタ(0#R1)とする)へ登録する。
図10は、書込要求領域が実使用領域と重複しない場合の管理レジスタの更新例を示す図(続き)である。図10上段のように、実使用領域と重複せず、かつ、実使用領域より手前の記憶領域への書込要求がされた場合、間隔C,Dそれぞれが0より大きくなる。この場合、アドレス管理部180は、書込要求領域と実使用領域との位置関係を“重複無し”と判定する。
例えば、先頭ポインタが“0x0_4000”であり、かつ、末尾ポインタが“0x0_5000”である実使用領域(0#R0)がDIMM110上に存在している。この状態で、先頭アドレスが“0x0_2000”であり、かつ、データ長が“0x1000”である書込要求領域への書込要求31が受信されたとする。
この場合、まず、アドレス管理部180は、書込要求領域と実使用領域との位置関係を次のように判定する。まず、アドレス管理部180は、間隔A〜Dを算出する。その結果、図10の位置関係判定表153が示すように、間隔Aは“−0x2000”となり、間隔Bは“−0x3000”となり、間隔Cは“0x1000”となり、間隔Dは“0x2000”となる。この場合、間隔C,Dそれぞれが0より大きいため、アドレス管理部180は、書込要求領域と実使用領域との位置関係を“重複無し”と判定する。
そして、図9と同様に、アドレス管理部180は、書込要求31で指定された書込要求領域を、実使用領域として無効である管理レジスタ152(ここでは、管理レジスタ(0#R1))へ登録する。具体的には、アドレス管理部180は、先頭ポインタが“0x0_2000”であり、かつ、末尾ポインタが“0x0_2000+0x1000=0x0_3000”である実使用領域を新たに管理レジスタ(0#R1)へ登録する。
図11は、書込要求領域が実使用領域と重複する場合の管理レジスタの更新例を示す図である。図11上段のように、実使用領域と重複し、かつ、実使用領域の先頭ポインタより後ろの記憶領域への書込要求がされた場合、間隔Aが0以上となり、間隔Bが0以下となり、間隔C,Dそれぞれは0未満となる。この場合、アドレス管理部180は、書込要求領域と実使用領域との位置関係を“重複”と判定する。
例えば、先頭ポインタが“0x0_2000”であり、かつ、末尾ポインタが“0x0_4000”である実使用領域(0#R0)がDIMM110上に存在している。この状態で、先頭アドレスが“0x0_3000”であり、かつ、データ長が“0x2000”である書込要求領域への書込要求31が受信されたとする。
この場合、まず、アドレス管理部180は、書込要求領域と実使用領域との位置関係を次のように判定する。まず、アドレス管理部180は、間隔A〜Dを算出する。その結果、図11の位置関係判定表153が示すように、間隔Aは“0x1000”となり、間隔Bは“−0x1000”となり、間隔Cは“−0x3000”となり、間隔Dは“−0x1000”となる。この場合、間隔Aが0以上であり、間隔Bが0以下となり、かつ、間隔C,Dそれぞれは0未満であるため、アドレス管理部180は、書込要求領域と実使用領域との位置関係を“重複”と判定する。
そして、位置関係が“重複”の場合、アドレス管理部180は、書込要求31で指定された書込要求領域と実使用領域(0#R0)とをマージした領域で、実使用領域(0#R0)を更新する。マージ後の実使用領域の先頭ポインタには、書込要求領域の先頭アドレスおよび“重複”と判定された実使用領域の先頭ポインタの中で最小のものが設定される。マージ後の実使用領域の末尾ポインタには、書込要求領域の末尾アドレスおよび“重複”と判定された実使用領域の末尾ポインタの中で最大のものが設定される。
図11上段では、実使用領域(0#R0)の先頭ポインタは、書込要求領域の先頭アドレスより小さいため、実使用領域(0#R0)の先頭ポインタがマージ後の実使用領域の先頭ポインタとなる。また、書込要求領域の末尾アドレスは、実使用領域(0#R0)の末尾ポインタより大きいため、書込要求領域の末尾アドレスがマージ後の実使用領域の末尾ポインタとなる。そのため、実使用領域(0#R0)の末尾ポインタが、書込要求領域の末尾アドレスで更新される。
具体的には、アドレス管理部180は、書込要求領域の末尾アドレスである“0x0_3000+0x2000=0x0_5000”で、管理レジスタ(0#R0)における末尾ポインタを更新する。これにより、図11上段のように、実使用領域(0#R0)は、書込要求領域と実使用領域(0#R0)を1つに纏めた新たな実使用領域に置き換えられる。
図12は、書込要求領域が実使用領域と重複する場合の管理レジスタの更新例を示す図(続き)である。図12上段のように、実使用領域と重複し、かつ、実使用領域の先頭ポインタより手前の記憶領域への書込要求がされた場合、間隔Dが0以上となり、間隔Cが0以下となり、間隔A,Bそれぞれは0未満となる。この場合、アドレス管理部180は、書込要求領域と実使用領域との位置関係を“重複”と判定する。
例えば、先頭ポインタが“0x0_3000”であり、かつ、末尾ポインタが“0x0_5000”の実使用領域(0#R0)がDIMM110上に存在している。この状態で、先頭アドレスが“0x0_2000”であり、かつ、データ長が“0x2000”である書込要求領域への書込要求31が受信されたとする。
この場合、まず、アドレス管理部180は、書込要求領域と実使用領域との位置関係を次のように判定する。まず、アドレス管理部180は、間隔A〜Dを算出する。その結果、図12の位置関係判定表153が示すように、間隔Aは“−0x1000”となり、間隔Bは“−0x3000”となり、間隔Cは“−0x1000”となり、間隔Dは“0x1000”となる。この場合、間隔Dが0以上であり、間隔Cが0以下となり、かつ、間隔A,Bそれぞれは0未満であるため、アドレス管理部180は、書込要求領域と実使用領域との位置関係を“重複”と判定する。
そして、図11と同様に、アドレス管理部180は、書込要求31で指定された書込要求領域と実使用領域(0#R0)とをマージした領域で、実使用領域(0#R0)を更新する。図12上段では、書込要求領域の先頭アドレスは、実使用領域(0#R0)の先頭ポインタより小さいため、書込要求領域の先頭アドレスがマージ後の実使用領域の先頭ポインタとなる。また、実使用領域(0#R0)の末尾ポインタは、書込要求領域の末尾アドレスより大きいため、実使用領域(0#R0)の末尾ポインタがマージ後の実使用領域の末尾ポインタとなる。そのため、実使用領域(0#R0)の先頭ポインタが、書込要求領域の先頭アドレスで更新される。
具体的には、アドレス管理部180は、書込要求領域の先頭アドレスである“0x0_2000”で、管理レジスタ(0#R0)における先頭ポインタを更新する。これにより、図12上段のように、実使用領域(0#R0)が、書込要求領域と実使用領域(0#R0)を1つに纏めた新たな実使用領域に置き換えられる。
図13は、書込要求領域が実使用領域と重複する場合の管理レジスタの更新例を示す図(続き2)である。図13上段のように、実使用領域が包含される記憶領域への書込要求がされた場合、間隔A,B,C,Dはそれぞれ0未満となる。この場合、アドレス管理部180は、書込要求領域と実使用領域との位置関係を“重複”と判定する。
例えば、先頭ポインタが“0x0_3000”であり、かつ、末尾ポインタが“0x0_4000”の実使用領域(0#R0)がDIMM110上に存在している。このとき、先頭アドレスが“0x0_2000”であり、かつ、データ長が“0x3000”である書込要求領域への書込要求31が受信されたとする。この場合、次のように、アドレス管理部180は、書込要求領域と実使用領域との位置関係を判定する。
まず、アドレス管理部180は、間隔A〜Dを算出する。その結果、図13の位置関係判定表153が示すように、間隔Aは“−0x1000”となり、間隔Bは“−0x2000”となり、間隔Cは“−0x2000”となり、間隔Dは“−0x1000”となる。この場合、間隔A,B,C,Dそれぞれは0未満であるため、アドレス管理部180は、書込要求領域と実使用領域との位置関係を“重複”と判定する。
そして、図11と同様に、アドレス管理部180は、書込要求31で指定された書込要求領域と実使用領域(0#R0)とをマージした領域で、実使用領域(0#R0)を更新する。図13上段では、書込要求領域の先頭アドレスは、実使用領域(0#R0)の先頭ポインタより小さいため、書込要求領域の先頭アドレスがマージ後の実使用領域の先頭ポインタとなる。また、書込要求領域の末尾アドレスは、実使用領域(0#R0)の末尾ポインタより大きいため、書込要求領域の末尾アドレスがマージ後の実使用領域の末尾ポインタとなる。そのため、実使用領域(0#R0)の先頭ポインタが、書込要求領域の先頭アドレスで更新され、実使用領域(0#R0)の末尾ポインタが、書込要求領域の末尾アドレスで更新される。
具体的には、アドレス管理部180は、書込要求領域の先頭アドレスである“0x0_2000”で、管理レジスタ(0#R0)の先頭ポインタを更新する。同様に、アドレス管理部180は、書込要求領域の末尾アドレスである“0x0_2000+0x3000=0x0_5000”で、管理レジスタ(0#R0)の末尾ポインタを更新する。これにより、図13上段のように、実使用領域(0#R0)が、書込要求領域と実使用領域(0#R0)を1つに纏めた新たな実使用領域に置き換えられる。
図11〜13で説明したように、書込要求領域と実使用領域との位置関係が重複している場合、これらの領域は実質的に1つの実使用領域と判断できる。そのため、アドレス管理部180は、書込要求領域と重複する実使用領域を、書込要求領域とマージして管理レジスタ152を更新する。これにより、実使用領域を登録するための管理レジスタ152の数が節約され、管理レジスタ152を有効に利用できる。
図14は、書込要求領域が実使用領域に包含される場合の管理レジスタの更新例を示す図である。図14上段のように、実使用領域に包含される記憶領域への書込要求がされた場合、間隔A,Dそれぞれは0以上となり、間隔B,Cそれぞれは0未満となる。この場合、アドレス管理部180は、書込要求領域と実使用領域との位置関係を“包含”と判定する。
例えば、先頭ポインタが“0x0_2000”であり、かつ、末尾ポインタが“0x0_5000”の実使用領域(0#R0)がDIMM110上に存在している。この状態で、先頭アドレスが“0x0_3000”であり、かつ、データ長が“0x1000”である書込要求領域への書込要求31が受信されたとする。
この場合、まず、アドレス管理部180は、書込要求領域と実使用領域との位置関係を次のように判定する。まず、アドレス管理部180は、間隔A〜Dを算出する。その結果、図14の位置関係判定表153が示すように、間隔Aは“0x1000”となり、間隔Bは“−0x2000”となり、間隔Cは“−0x2000”となり、間隔Dは“0x1000”となる。この場合、間隔A,Dそれぞれは0以上となり、間隔B,Cそれぞれは0未満であるため、アドレス管理部180は、書込要求領域と実使用領域との位置関係を“包含”と判定する。
図14上段のように、実使用領域(0#R0)に書込要求領域が包含されている場合、実使用領域(0#R0)と書込要求領域とをマージしても実使用領域(0#R0)の記憶領域は変わらない。また、複数の実使用領域それぞれは互いに重複しない領域に存在するため、1の実使用領域に包含されている書込要求領域が、他の実使用領域と重複することはない。そのため、位置関係が“包含”の実使用領域が、書込要求領域に対応する分割領域に含まれる場合、管理レジスタ152は、アドレス管理部180により更新されず、そのままとなる。
図15は、書込要求領域と実使用領域との間隔に基づく管理レジスタの更新例を示す図である。図15上段のように、実使用領域と重複しない場合でも、間隔Bが閾値未満である場合、アドレス管理部180は、書込要求領域と実使用領域との位置関係を“重複”と判定する。以下、図15〜16の説明では、閾値を“0x50”とする。
例えば、先頭ポインタが“0x0_2000”であり、かつ、末尾ポインタが“0x0_3000”の実使用領域(0#R0)がDIMM110上に存在している。この状態で、先頭アドレスが“0x0_3020”であり、かつ、データ長が“0x1000”である書込要求領域への書込要求31が受信されたとする。
この場合、アドレス管理部180は、書込要求領域と実使用領域との位置関係を次のように判定する。まず、アドレス管理部180は、間隔A〜Dを算出する。その結果、図15の位置関係判定表153が示すように、間隔Aは“0x1020”となり、間隔Bは“0x20”となり、間隔Cは“−0x2020”となり、間隔Dは“−0x1020”となる。この場合、間隔A,Bそれぞれが0より大きいが、間隔Bが閾値未満のため、アドレス管理部180は、書込要求領域と実使用領域との位置関係を“重複”と判定する。
そして、アドレス管理部180は、書込要求領域と実使用領域(0#R0)とこれらの間の未使用の領域(以下、未使用領域)をマージする。これらの領域のマージの方法は、図11で説明した方法と同様である。すなわち、図15上段では、実使用領域(0#R0)の先頭ポインタは、書込要求領域の先頭アドレスより小さいため、実使用領域(0#R0)の先頭ポインタがマージ後の実使用領域の先頭ポインタとなる。また、書込要求領域の末尾アドレスは、実使用領域(0#R0)の末尾ポインタより大きいため、書込要求領域の末尾アドレスがマージ後の実使用領域の末尾ポインタとなる。そのため、実使用領域(0#R0)の末尾ポインタが、書込要求領域の末尾アドレスで更新される。
具体的には、アドレス管理部180は、書込要求領域の末尾アドレスである“0x0_3020+0x1000=0x0_4020”で、管理レジスタ(0#R0)の末尾ポインタを更新する。これにより、図15上段のように、書込要求領域と実使用領域(0#R0)とこれらの間の未使用領域とを1つに纏めた新たな実使用領域に、実使用領域(0#R0)が置き換えられる。
図16は、書込要求領域と実使用領域との間隔に基づく管理レジスタの更新例を示す図(続き)である。図16上段のように、実使用領域と重複しない場合でも、間隔Cが閾値未満である場合、アドレス管理部180は、書込要求領域と実使用領域との位置関係を“重複”と判定する。
例えば、先頭ポインタが“0x0_3020”であり、かつ、末尾ポインタが“0x0_4020”の実使用領域(0#R0)がDIMM110上に存在している。このとき、先頭アドレスが“0x0_2000”であり、かつ、データ長が“0x1000”である書込要求領域への書込要求31が受信されたとする。
この場合、アドレス管理部180は、書込要求領域と実使用領域との位置関係を次のように判定する。
まず、アドレス管理部180は、間隔A〜Dを算出する。その結果、図16の位置関係判定表153が示すように、間隔Aは“−0x1020”となり、間隔Bは“−0x2020”となり、間隔Cは“0x20”となり、間隔Dは“0x1020”となる。この場合、間隔C,Dそれぞれが0より大きいが、間隔Cが閾値未満のため、アドレス管理部180は、書込要求領域と実使用領域との位置関係を“重複”と判定する。
まず、アドレス管理部180は、間隔A〜Dを算出する。その結果、図16の位置関係判定表153が示すように、間隔Aは“−0x1020”となり、間隔Bは“−0x2020”となり、間隔Cは“0x20”となり、間隔Dは“0x1020”となる。この場合、間隔C,Dそれぞれが0より大きいが、間隔Cが閾値未満のため、アドレス管理部180は、書込要求領域と実使用領域との位置関係を“重複”と判定する。
そして、アドレス管理部180は、図11と同様に、書込要求領域と実使用領域(0#R0)とこれらの間の未使用領域をマージする。すなわち、図16上段では、書込要求領域の先頭アドレスは、実使用領域(0#R0)の先頭ポインタより小さいため、書込要求領域の先頭アドレスがマージ後の実使用領域の先頭ポインタとなる。また、実使用領域(0#R0)の末尾ポインタは、書込要求領域の末尾アドレスより大きいため、実使用領域(0#R0)の末尾ポインタがマージ後の実使用領域の末尾ポインタとなる。そのため、実使用領域(0#R0)の先頭ポインタが、書込要求領域の先頭アドレスで更新される。
具体的には、アドレス管理部180は、書込要求領域の先頭アドレスである“0x0_2000”で、実使用領域(0#R0)の先頭ポインタを更新する。これにより、図16上段のように、書込要求領域と、実使用領域(0#R0)と、書込要求領域と実使用領域(0#R0)との間の未使用領域とを、1つに纏めた新たな実使用領域に実使用領域(0#R0)が置き換えられる。
図15〜16で説明したように、書込要求領域と実使用領域が重複しない場合でも、間隔Bまたは間隔Cが閾値未満の場合、書込要求領域、実使用領域およびこれらの間の使用されていない領域(以下、未使用領域)がマージされることになる。この場合、実使用領域に実際にはデータが記録されていない領域(未使用領域)が含まれることになる。しかし、間隔Bまたは間隔Cが閾値未満である場合、未使用領域の存在によるデータのバックアップの速度への影響は少ないと考えられる。そこで、システム記憶装置100は、このようなバックアップへの影響が少ない未使用領域は、実使用領域とみなし、書込要求領域および実使用領域と共に1つに纏めた実使用領域に置き換える。これにより、管理する実使用領域の数が減少し、管理レジスタ152の数を節約することができる。
なお、アドレス管理部180は、例えば、図15または図16のような状況の場合でも、管理レジスタ群151に空きの管理レジスタ152(すなわち、有効ビットが“0”の管理レジスタ152)がある場合には、マージを行わずに、書き込み要求領域を新たな実使用領域として空きの管理レジスタ152に登録してもよい。
図17は、書込要求領域が複数の実使用領域と重複する場合の管理レジスタの更新例を示す図である。図17上段のように、複数の実使用領域と重複する記憶領域への書込要求がされた場合、アドレス管理部180は、書込要求領域と重複する複数の実使用領域とを1つに纏めた実使用領域に、これらの複数の実使用領域を置き換える。図17では、位置関係判定表153の各レコードが、各管理レジスタ152に対応づけて記載されている。そのため、位置関係判定表153のレジスタの項目の記載を省略する。以下、図18についても同様とする。
例えば、先頭ポインタが“0x0_3800”であり、かつ、末尾ポインタが“0x0_4800”である実使用領域(0#R0)と、先頭ポインタが“0x0_2000”であり、かつ、末尾ポインタが“0x0_3000”である実使用領域R1がDIMM110上に存在している。さらに、先頭ポインタが“0x0_6800”であり、かつ、末尾ポインタが“0x0_7800”である実使用領域R2と、先頭ポインタが“0x0_5000”であり、かつ、末尾ポインタが“0x0_6000”である実使用領域R3がDIMM110上に存在している。この状態で、先頭アドレスが“0x0_2800”であり、かつ、データ長が“0x3000”である書込要求領域への書込要求31が受信されたとする。
この場合、アドレス管理部180は、書込要求領域と実使用領域との位置関係を次のように判定する。
まず、アドレス管理部180は、各実使用領域について、間隔A〜Dを算出する。その結果、図17の位置関係判定表153が示すように、実使用領域(0#R0)について、間隔Aは“−0x1000”となり、間隔Bは“−0x2000”となり、間隔Cは“−0x2000”となり、間隔Dは“−0x1000”となる。また、実使用領域R1について、間隔Aは“0x800”となり、間隔Bは“−0x800”となり、間隔Cは“−0x3800”となり、間隔Dは“−0x2800”となる。また、実使用領域R2について、間隔Aは“−0x4000”となり、間隔Bは“−0x5000”となり、間隔Cは“0x1000”となり、間隔Dは“0x2000”となる。また、実使用領域R3について、間隔Aは“−0x2800”となり、間隔Bは“−0x3800”となり、間隔Cは“−0x800”となり、間隔Dは“0x800”となる。この場合、アドレス管理部180は、書込要求領域と実使用領域(0#R0,0#R1,0#R3)との位置関係を“重複”と判定し、書込要求領域と実使用領域R2との位置関係を“重複無し”と判定する。
まず、アドレス管理部180は、各実使用領域について、間隔A〜Dを算出する。その結果、図17の位置関係判定表153が示すように、実使用領域(0#R0)について、間隔Aは“−0x1000”となり、間隔Bは“−0x2000”となり、間隔Cは“−0x2000”となり、間隔Dは“−0x1000”となる。また、実使用領域R1について、間隔Aは“0x800”となり、間隔Bは“−0x800”となり、間隔Cは“−0x3800”となり、間隔Dは“−0x2800”となる。また、実使用領域R2について、間隔Aは“−0x4000”となり、間隔Bは“−0x5000”となり、間隔Cは“0x1000”となり、間隔Dは“0x2000”となる。また、実使用領域R3について、間隔Aは“−0x2800”となり、間隔Bは“−0x3800”となり、間隔Cは“−0x800”となり、間隔Dは“0x800”となる。この場合、アドレス管理部180は、書込要求領域と実使用領域(0#R0,0#R1,0#R3)との位置関係を“重複”と判定し、書込要求領域と実使用領域R2との位置関係を“重複無し”と判定する。
このとき、アドレス管理部180は、書込要求31で指定された書込要求領域と実使用領域(0#R0,0#R1,0#R3)とをマージした領域で、実使用領域(0#R0,0#R1,0#R3)を更新する。これらの領域のマージの方法は、図11で説明した方法と同様である。すなわち、図17上段では、書込要求領域の先頭アドレスおよび実使用領域(0#R0,0#R1,0#R3)それぞれの先頭ポインタのうち、実使用領域R1の先頭ポインタが最小(すなわち、一番手前)である。そのため、実使用領域R1の先頭ポインタがマージ後の実使用領域の先頭ポインタとなる。また、書込要求領域の末尾アドレスおよび実使用領域(0#R0,0#R1,0#R3)それぞれの末尾ポインタのうち、実使用領域R3の末尾ポインタが最大(すなわち、一番後ろ)である。そのため、実使用領域R3の末尾ポインタがマージ後の実使用領域の末尾ポインタとなる。したがって、先頭ポインタが実使用領域R1の先頭ポインタであり、かつ、末尾ポインタが実使用領域R3の末尾ポインタである新たな実使用領域に、実使用領域(0#R0,0#R1,0#R3)が置き換わる。
具体的には、まず、アドレス管理部180は、実使用領域(0#R0,0#R1,0#R3)に対応する管理レジスタ(0#R0,0#R1,0#R3)から管理レジスタ152を1つ選択する。ここでは、管理レジスタ(0#R0)を選択したとする。次に、アドレス管理部180は、実使用領域R1の先頭ポインタである“0x0_2000”で、選択した管理レジスタ(0#R0)における実使用領域(0#R0)の先頭ポインタを更新する。同様に、アドレス管理部180は、実使用領域R3の末尾ポインタである“0x0_6000”で、管理レジスタ(0#R0)における実使用領域(0#R0)の末尾ポインタを更新する。さらに、アドレス管理部180は、管理レジスタ(0#R1,0#R3)それぞれの有効ビットを“0”に更新する(図示無し)。これにより、図17上段のように、書込要求領域と実使用領域(0#R0,0#R1,0#R3)を1つに纏めた新たな実使用領域に、実使用領域(0#R0,0#R1,0#R3)が置き換えられる。
図17の例では、管理レジスタ群151の更新前は、有効な管理レジスタ152の数が4つである。これに対し、管理レジスタ群151の更新後は、3つの実使用領域と書込要求領域とを1つの実使用領域に置き換えることで、有効な管理レジスタ152の数は2つに減少する。このように、書込要求領域は、位置関係が“重複”であれば、複数の実使用領域に対してもマージが可能である。これにより、より管理レジスタ152の数を節約できる。
図18は、書込要求領域が複数のいずれの実使用領域とも重複しない場合の管理レジスタの更新例を示す図である。図18上段のように、複数のいずれの実使用領域とも重複しない記憶領域への書込要求がされたとき、管理レジスタ群151に登録可能な(有効ビットが“0”である)管理レジスタ152が存在する場合、アドレス管理部180は、書込要求領域をその登録可能な管理レジスタ152へ登録する。
登録可能な管理レジスタ152が存在しない場合、まず、アドレス管理部180は、書込要求領域との距離が最小である実使用領域を選択する。そして、アドレス管理部180は、書込要求領域と選択した実使用領域とを1つに纏めた実使用領域に、これらの複数の実使用領域を置き換える。図18では、書込要求領域が複数のいずれの実使用領域とも重複せず、かつ、登録可能な管理レジスタ152が存在しない場合について説明する。
例えば、先頭ポインタが“0x0_4800”であり、かつ、末尾ポインタが“0x0_5800”である実使用領域R0と、先頭ポインタが“0x0_1000”であり、かつ、末尾ポインタが“0x0_2000”である実使用領域R1がDIMM110上に存在している。さらに、先頭ポインタが“0x0_7800”であり、かつ、末尾ポインタが“0x0_8800”である実使用領域R2と、先頭ポインタが“0x0_6000”であり、かつ、末尾ポインタが“0x0_7000”である実使用領域R3がDIMM110上に存在している。この状態で、先頭アドレスが“0x0_2800”であり、かつ、データ長が“0x1000”である書込要求領域への書込要求31が受信されたとする。この場合、アドレス管理部180は、書込要求領域と実使用領域との位置関係を次のように判定する。
まず、アドレス管理部180は、各実使用領域について、間隔A〜Dを算出する。その結果、図18の位置関係判定表153が示すように、実使用領域R0について、間隔Aは“−0x2000”となり、間隔Bは“−0x3000”となり、間隔Cは“0x1000”となり、間隔Dは“0x2000”となる。また、実使用領域R1について、間隔Aは“0x1800”となり、間隔Bは“0x800”となり、間隔Cは“−0x2800”となり、間隔Dは“−0x1800”となる。また、実使用領域R2について、間隔Aは“−0x5000”となり、間隔Bは“−0x6000”となり、間隔Cは“0x4000”となり、間隔Dは“0x5000”となる。また、実使用領域R3について、間隔Aは“−0x3800”となり、間隔Bは“−0x4800”となり、間隔Cは“0x2800”となり、間隔Dは“0x3800”となる。この場合、アドレス管理部180は、書込要求領域と実使用領域(0#R0,0#R1,0#R2,0#R3)との位置関係を“重複無し”と判定する。
このとき、まず、アドレス管理部180は、間隔Bの絶対値が一番小さい実使用領域と、間隔Cの絶対値が一番小さい実使用領域とを抽出する。図18の示すように、間隔Bが一番小さい実使用領域は、実使用領域R1であり、間隔Cが一番小さい実使用領域は実使用領域R0である。次に、アドレス管理部180は、間隔B(R1)と間隔C(R0)とを比較し、値の小さい間隔Bが算出された実使用領域R1を選択する。“間隔B(R1)”は、実使用領域R1について算出された間隔Bを意味する。
そして、アドレス管理部180は、図18に示すように管理レジスタ群151に無効な管理レジスタ151が存在しない場合、書込要求31で指定された書込要求領域と選択した実使用領域R1とをマージした領域で、実使用領域R1を更新する。これらの領域のマージの方法は、図11で説明した方法と同様である。すなわち、図18上段では、書込要求領域の先頭アドレスおよび実使用領域R1の先頭ポインタのうち、実使用領域R1の先頭ポインタが最小(すなわち、一番手前)である。そのため、実使用領域R1の先頭ポインタがマージ後の実使用領域の先頭ポインタとなる。また、書込要求領域の末尾アドレスおよび実使用領域R1の末尾ポインタのうち、書込要求領域の末尾ポインタが最大(すなわち、一番後ろ)である。そのため、書込要求領域の末尾ポインタがマージ後の実使用領域の末尾ポインタとなる。したがって、先頭ポインタが実使用領域R1の先頭ポインタであり、かつ、末尾ポインタが書込要求領域の末尾ポインタである新たな実使用領域に、実使用領域R1が置き換わる。
具体的には、まず、アドレス管理部180は、実使用領域R1に対応する管理レジスタ(0#R1)を選択する。次に、アドレス管理部180は、実使用領域R1の先頭ポインタである“0x0_1000”で、選択した管理レジスタ(0#R1)における実使用領域R1の先頭ポインタを更新する。同様に、アドレス管理部180は、書込要求領域の末尾ポインタである“0x0_3800”で、管理レジスタ(0#R1)における実使用領域R1の末尾ポインタを更新する。これにより、図18上段のように、書込要求領域と実使用領域R1を1つに纏めた新たな実使用領域に、実使用領域R1が置き換えられる。
図18の例では、管理レジスタ群151に無効な(すなわち、使用可能な)管理レジスタ151が存在せず、書込要求領域と重複する実使用領域が存在しない。この場合に、書込要求領域との間隔が最小の実使用領域と書込要求領域とを1つの実使用領域に置き換えることで、書込要求領域に関する情報を管理レジスタ群151のいずれかの管理レジスタ152に登録できる。
次に、図19〜20を用いて、システム記憶装置100が管理レジスタ152を更新する処理について、フローチャートを用いて説明する。
図19は、管理レジスタの更新処理の例を示すフローチャートである。以下、図19に示す処理をステップ番号に沿って説明する。ここでは、サーバ装置300aがシステム記憶装置100へデータの書込要求31を送信したものとする。
図19は、管理レジスタの更新処理の例を示すフローチャートである。以下、図19に示す処理をステップ番号に沿って説明する。ここでは、サーバ装置300aがシステム記憶装置100へデータの書込要求31を送信したものとする。
(ステップS11)メモリ制御部170は、書込要求31をサーバ装置300aから受信する。
(ステップS12)アドレス管理部180は、書込要求31に含まれる先頭アドレスに基づいて、書込要求31により特定される書込要求領域(以下、書込要求領域)の属する分割領域を特定する。具体的には、アドレス管理部180は、書込要求31に含まれる先頭アドレスの上位3ビットの値により、書込要求領域の属する分割領域を特定する。
(ステップS12)アドレス管理部180は、書込要求31に含まれる先頭アドレスに基づいて、書込要求31により特定される書込要求領域(以下、書込要求領域)の属する分割領域を特定する。具体的には、アドレス管理部180は、書込要求31に含まれる先頭アドレスの上位3ビットの値により、書込要求領域の属する分割領域を特定する。
これ以後、例として、前述した位置関係判定表153を利用し、位置関係判定表153に適宜情報を登録しながら処理を進めるものとする。位置関係判定表153は、1つの分割領域に割り当てられた所定数(ここでは“4”)の管理レジスタ152にそれぞれ対応するレコードを有する。また、各レコードの「レジスタ」の項目には、対応する管理レジスタ152の識別子が登録されている。
(ステップS13)アドレス管理部180は、特定した分割領域に対応する管理レジスタ群151から、管理レジスタ152を1つ選択する。
(ステップS14)アドレス管理部180は、選択した管理レジスタ152が有効か判定する。具体的には、アドレス管理部180は、選択した管理レジスタ152の有効ビットの項目が“1”であるか判定する。選択した管理レジスタ152が有効である場合、処理をステップS15へ進める。選択した管理レジスタ152が無効である場合、処理をステップS17へ進める。
(ステップS14)アドレス管理部180は、選択した管理レジスタ152が有効か判定する。具体的には、アドレス管理部180は、選択した管理レジスタ152の有効ビットの項目が“1”であるか判定する。選択した管理レジスタ152が有効である場合、処理をステップS15へ進める。選択した管理レジスタ152が無効である場合、処理をステップS17へ進める。
(ステップS15)アドレス管理部180は、図9等で説明したように、選択した管理レジスタ152で特定される実使用領域(以下、選択した実使用領域)と、書込要求領域との間隔A〜Dを算出する。
アドレス管理部180は、選択した管理レジスタ152に対応するレコードを位置関係判定表153から検索し、検索されたレコードの間隔A〜Dそれぞれの項目に対応する算出結果を登録する。選択した管理レジスタ152に対応するレコードは、レジスタの項目の値が、選択した管理レジスタ152の識別子(レジスタの項目)と一致するレコードであり、以下同様とする。
(ステップS16)アドレス管理部180は、算出した間隔A〜Dに基づいて、図9〜18で説明したように、選択した管理レジスタ152で特定される実使用領域と、書込要求31で特定される書込要求領域との位置関係を判定する。
すなわち、アドレス管理部180は、次のような判定条件に従って位置関係を判定する。
・間隔A,Bがともに0より大きい場合、“重複無し”と判定する。
・間隔A,Bがともに0より大きい場合、“重複無し”と判定する。
・間隔C,Dがともに0より大きい場合、“重複無し”と判定する。
・間隔Aが0以上であり、間隔Bが0以下であり、かつ、間隔C,Dがともに0未満である場合、“重複”と判定する。
・間隔Aが0以上であり、間隔Bが0以下であり、かつ、間隔C,Dがともに0未満である場合、“重複”と判定する。
・間隔Dが0以上であり、間隔Cが0以下であり、かつ、間隔A,Bがともに0未満である場合、“重複”と判定する。
・間隔A,B,C,Dがともに0未満である場合、“重複”と判定する。
・間隔A,B,C,Dがともに0未満である場合、“重複”と判定する。
・間隔A,Dがともに0以上であり、かつ、間隔B,Cがともに0未満である場合、“包含”と判定する。
アドレス管理部180は、選択した管理レジスタ152に対応するレコードを位置関係判定表153から検索し、検索されたレコードの位置関係の項目を判定結果で更新する。
アドレス管理部180は、選択した管理レジスタ152に対応するレコードを位置関係判定表153から検索し、検索されたレコードの位置関係の項目を判定結果で更新する。
(ステップS17)アドレス管理部180は、選択した管理レジスタ152に対応するレコードを位置関係判定表153から検索し、検索されたレコードの位置関係の項目を“無効”で更新する。
(ステップS18)アドレス管理部180は、ステップS12で特定した分割領域に対応する管理レジスタ群151において、全管理レジスタ152を選択済みか判定する。全管理レジスタ152を選択済みの場合、処理をステップS21へ進める。未選択の管理レジスタ152が存在する場合、処理をステップS13へ進める。
図20は、管理レジスタの更新処理の例を示すフローチャート(続き)である。以下、図20に示す処理をステップ番号に沿って説明する。
(ステップS21)アドレス管理部180は、図19のステップS12で特定された分割領域上に存在する複数の実使用領域のうち、図19のステップS16で、書込要求領域との位置関係が“包含”と判定された実使用領域が存在するか判定する。具体的には、アドレス管理部180は、位置関係判定表153に位置関係が“包含”であるレコードが含まれているか判定する。“包含”と判定された実使用領域が存在する場合、処理を終了する。“包含”と判定された実使用領域が存在しない場合、処理をステップS22へ進める。
(ステップS21)アドレス管理部180は、図19のステップS12で特定された分割領域上に存在する複数の実使用領域のうち、図19のステップS16で、書込要求領域との位置関係が“包含”と判定された実使用領域が存在するか判定する。具体的には、アドレス管理部180は、位置関係判定表153に位置関係が“包含”であるレコードが含まれているか判定する。“包含”と判定された実使用領域が存在する場合、処理を終了する。“包含”と判定された実使用領域が存在しない場合、処理をステップS22へ進める。
(ステップS22)アドレス管理部180は、図19のステップS12で特定された分割領域に対応する実使用領域が存在しないか判定する。具体的には、アドレス管理部180は、位置関係判定表153の全レコードにおいて、位置関係の項目に“無効”が設定されているか判定する。実使用領域が存在しない場合、処理をステップS27へ進める。実使用領域が存在する場合、処理をステップS23へ進める。
(ステップS23)アドレス管理部180は、図19のステップS12で特定された分割領域に対応する複数の実使用領域のうち、図19のステップS16で、書込要求領域との位置関係が“重複”と判定された実使用領域が存在するか判定する。具体的には、アドレス管理部180は、位置関係判定表153に位置関係が“重複”であるレコードが含まれているか判定する。“重複”と判定された実使用領域が存在する場合、処理をステップS30へ進める。“重複”と判定された実使用領域が存在しない場合、処理をステップS24へ進める。
(ステップS24)アドレス管理部180は、図19のステップS12で特定された分割領域に対応する複数の実使用領域のうち、書込要求領域との距離が最小の実使用領域を選択する。書込要求領域との距離とは、書込要求領域との間隔B,Cのうち0より大きい間隔である。
具体的には、アドレス管理部180は、まず、位置関係判定表153において、位置関係の項目に“無効”以外が設定されているレコードを検索する。次に、アドレス管理部180は、検索された各レコードについて、間隔B,Cの項目のうち0より大きい間隔を、書込要求領域との距離として取得する。そして、アドレス管理部180は、取得した距離が最小であるレコードを選択する。
(ステップS25)アドレス管理部180は、選択した実使用領域と書込要求領域との距離が閾値未満か判定する。距離が閾値未満である場合、処理をステップS29へ進める。距離が閾値以上である場合、処理をステップS26へ進める。
(ステップS26)アドレス管理部180は、図19のステップS12で特定された分割領域に対応する管理レジスタ群151において、登録可能な管理レジスタ152が存在するか判定する。具体的には、アドレス管理部180は、位置関係判定表153において、位置関係の項目に“無効”が設定されているレコードが存在するか判定する。登録可能な管理レジスタ152が存在する場合、処理をステップS27へ進める。登録可能な管理レジスタ152が存在しない場合、処理をステップS29へ進める。
(ステップS27)アドレス管理部180は、登録可能な管理レジスタ152を1つ選択する。具体的には、アドレス管理部180は、図19のステップS12で特定された分割領域に対応する管理レジスタ群151において、有効ビットが“0”である管理レジスタ152を選択する。
(ステップS28)アドレス管理部180は、選択した管理レジスタ152に書込要求領域を新たな実使用領域として登録する。具体的には、アドレス管理部180は、選択した管理レジスタ152の有効ビットの項目に“1”を設定し、先頭ポインタの項目に書込要求領域の先頭アドレスを設定する。同様に、アドレス管理部180は、選択した管理レジスタ152の末尾ポインタの項目に書込要求領域の末尾アドレス(すなわち、“書込要求領域の先頭アドレス+書込要求領域のデータ長”であり、以下同様)を設定する。
(ステップS29)アドレス管理部180は、位置関係判定表153において、ステップS24で選択した実使用領域に対応するレコードの位置関係の項目を“重複”で更新する。すなわち、アドレス管理部180は、ステップS24で選択した実使用領域を書込要求領域と重複しているとみなす。
(ステップS30)アドレス管理部180は、マージ後の実使用領域の先頭ポインタを、以下のように算出する。
まず、アドレス管理部180は、位置関係判定表153から位置関係が“重複“であるレコードに対応する管理レジスタ152を検索する。具体的には、アドレス管理部180は、重複であるレコードに設定されているレジスタの識別子と一致する管理レジスタ152を、図19のステップS12で特定された分割領域に対応する管理レジスタ群151から検索する。次に、アドレス管理部180は、選択した各管理レジスタ152の先頭ポインタおよび書込要求31の先頭アドレスのうち最小値を、マージ後の実使用領域の先頭ポインタとして算出する。
まず、アドレス管理部180は、位置関係判定表153から位置関係が“重複“であるレコードに対応する管理レジスタ152を検索する。具体的には、アドレス管理部180は、重複であるレコードに設定されているレジスタの識別子と一致する管理レジスタ152を、図19のステップS12で特定された分割領域に対応する管理レジスタ群151から検索する。次に、アドレス管理部180は、選択した各管理レジスタ152の先頭ポインタおよび書込要求31の先頭アドレスのうち最小値を、マージ後の実使用領域の先頭ポインタとして算出する。
(ステップS31)アドレス管理部180は、マージ後の実使用領域の末尾ポインタを、以下のように算出する。
まず、アドレス管理部180は、ステップS30と同様に、位置関係が“重複“であるレコードに対応する管理レジスタ152を位置関係判定表153から検索する。次に、アドレス管理部180は、検索した各管理レジスタ152の末尾ポインタおよび書込要求31の末尾アドレスのうち最大値を、マージ後の実使用領域の末尾ポインタとして算出する。
まず、アドレス管理部180は、ステップS30と同様に、位置関係が“重複“であるレコードに対応する管理レジスタ152を位置関係判定表153から検索する。次に、アドレス管理部180は、検索した各管理レジスタ152の末尾ポインタおよび書込要求31の末尾アドレスのうち最大値を、マージ後の実使用領域の末尾ポインタとして算出する。
(ステップS32)アドレス管理部180は、検索した管理レジスタ152から管理レジスタ152を1つ選択する。例えば、アドレス管理部180は、検索した管理レジスタ152のうち、レジスタの識別子が最小の管理レジスタ152を選択する。次に、アドレス管理部180は、選択した管理レジスタ152の先頭ポインタを、ステップS30で算出されたマージ後の先頭ポインタで更新する。次に、アドレス管理部180は、選択した管理レジスタ152の末尾ポインタを、ステップS31で算出されたマージ後の末尾ポインタで更新する。
(ステップS33)アドレス管理部180は、ステップS32で選択されなかった各管理レジスタ152の有効ビットを“0”に更新する。
以上の図19,図20の処理により、書込要求領域と1つ以上の実使用領域とが必要に応じてマージされ、有限個の管理レジスタ152を効率的に使用して実使用領域を管理できるようになる。
以上の図19,図20の処理により、書込要求領域と1つ以上の実使用領域とが必要に応じてマージされ、有限個の管理レジスタ152を効率的に使用して実使用領域を管理できるようになる。
また、アドレス管理部180は、サーバ装置300a,300b,…からDIMM110への書込要求をシステム記憶装置100が受信するたびに、対応する管理レジスタ群151に対する実使用領域の登録や、登録されている実使用領域の更新を行う。このため、管理装置200からのバックアップ要求をシステム記憶装置100が受信したとき、その時点でDIMM110にデータが書き込まれている領域の情報が、管理レジスタ群151に登録されている状態となる。
これにより、転送制御部190は、バックアップ要求を受信してバックアップ処理を開始する際に、管理レジスタ群151に登録された情報を参照するだけで、DIMM110の記憶領域のうちデータを読み出すべき領域を認識できる。このため、例えば、バックアップ処理を開始する時点で、DIMM110の記憶領域のうちデータを読み出すべき領域を調査するといった負荷がかかる処理を実行しなくて済むので、バックアップ処理を即座に開始することができる。
次に、DIMM110に格納されたデータのバックアップ処理、およびバックアップデータの復元処理について説明する。
図21は、復元管理情報およびその記録処理の例を示す図である。なお、図21の説明では、管理レジスタ152における有効ビットの項目の記載を省略する。また、図21の説明では、無効な管理レジスタ152の記載を省略する。
図21は、復元管理情報およびその記録処理の例を示す図である。なお、図21の説明では、管理レジスタ152における有効ビットの項目の記載を省略する。また、図21の説明では、無効な管理レジスタ152の記載を省略する。
復元管理情報121は、SSD120に記憶されているバックアップデータを復元するための情報を格納する。復元管理情報は、種別、先頭アドレスおよびデータ長の項目を有する。
種別の項目には、復元管理情報の種別を示す情報が設定される。種別が“復元”の場合、復元管理情報がバックアップデータの復元先に関する情報であることを示す。種別が“終了”の場合、復元管理情報がバックアップデータの終端であることを示す。以下、バックアップデータの終端であることを示す復元管理情報121を“復元管理情報(終了)”と記載する場合がある。
先頭アドレスの項目には、復元先の実使用領域の先頭アドレスが設定される。データ長の項目には、復元先の実使用領域のデータ長が設定される。
例えば、復元管理情報121が復元先の実使用領域に関するものである場合、復元先の先頭ポインタが“0x0_0000_0100”であり、末尾ポインタ“0x0_0020_0100”である実使用領域の場合、先頭アドレスの項目には、“0x0_0000_0100”が設定される。同様に、データ長の項目には、末尾ポインタと先頭ポインタとの差分である“0x20_0000”が設定される。また、復元管理情報121が復元管理情報(終了)である場合、先頭アドレスおよびデータ長の項目には、例えば、“NULL”が設定される。
例えば、復元管理情報121が復元先の実使用領域に関するものである場合、復元先の先頭ポインタが“0x0_0000_0100”であり、末尾ポインタ“0x0_0020_0100”である実使用領域の場合、先頭アドレスの項目には、“0x0_0000_0100”が設定される。同様に、データ長の項目には、末尾ポインタと先頭ポインタとの差分である“0x20_0000”が設定される。また、復元管理情報121が復元管理情報(終了)である場合、先頭アドレスおよびデータ長の項目には、例えば、“NULL”が設定される。
SSD120は、復元管理情報121と、復元管理情報121に対応する実使用領域のデータとを交互に並べたデータをバックアップデータとして記憶する。例えば、DIMM110には、分割領域(0x0)上の実使用領域(0#R0,0#R1)および、分割領域(0x7)上の実使用領域(7#R0)のみが存在するとした場合、次のように、DIMM110のバックアップデータがSSD120に記憶される。
まず、SSD120の所定のアドレス(例えば、先頭アドレス)から実使用領域(0#R0)に対応する復元管理情報121が記憶される。以下、実使用領域(0#R0)に対応する復元管理情報121を“復元管理情報(0#R0)”と記載する場合がある。次に、SSD120上の復元管理情報(0#R0)の末尾の次のアドレスから、実使用領域(0#R0)内のデータが記憶される。なお、「実使用領域内のデータ」とは、実使用領域の記憶内容全体を表す。以下、実使用領域(0#R0)上のデータを“データ(0#R0)”と記載する場合がある。次に、データ(0#R0)の末尾の次のアドレスから、復元管理情報(0#R1)、データ(0#R1)の順にデータが記憶され、続けて、復元管理情報(7#R0)、データ(7#R0)の順にデータが記憶される。そして、最後に、復元管理情報(終了)が記憶される。
次に、図22〜25を用いて、システム記憶装置100におけるバックアップ処理および復元処理の例について、フローチャートを用いて説明する。
図22は、バックアップ処理の例を示すフローチャートである。図22〜23で説明する処理は、管理装置200からバックアップを要求されたときに、転送制御部190により実行される処理である。以下、図22に示す処理をステップ番号に沿って説明する。
図22は、バックアップ処理の例を示すフローチャートである。図22〜23で説明する処理は、管理装置200からバックアップを要求されたときに、転送制御部190により実行される処理である。以下、図22に示す処理をステップ番号に沿って説明する。
(ステップS41)転送制御部190は、DIMM110から分割領域を1つ選択する。具体的には、転送制御部190は、DIMM110から分割領域に対応する管理レジスタ群151を1つ選択する。選択の順番は、分割領域のアドレスの値が小さい順とする。
(ステップS42)転送制御部190は、選択した管理レジスタ群151から管理レジスタ152を1つ選択する。選択の順番は、レジスタの識別子の値が小さい順とする。
(ステップS43)転送制御部190は、選択した管理レジスタ152の有効ビットが“1”であるか判定する。有効ビットが“1”である場合、処理をステップS44へ進める。有効ビットが“0”である場合、処理をステップS42へ進める。
(ステップS43)転送制御部190は、選択した管理レジスタ152の有効ビットが“1”であるか判定する。有効ビットが“1”である場合、処理をステップS44へ進める。有効ビットが“0”である場合、処理をステップS42へ進める。
(ステップS44)転送制御部190は、選択した管理レジスタ152に基づき復元管理情報121を生成する。生成される復元管理情報121の種別の項目には、“復元”が設定される。また、生成される復元管理情報121の先頭アドレスの項目には、選択した管理レジスタ152の先頭ポインタの項目の値が設定される。さらに、生成される復元管理情報121のデータ長の項目には、“選択した管理レジスタ152の末尾ポインタ−選択した管理レジスタ152の先頭ポインタ”により算出された値が設定される。
転送制御部190は、生成された復元管理情報121を、SSD入出力部160を通じて、SSD120の空き領域の先頭領域に書き込む。なお、本フローチャートにおいて、SSD120への書き込みは、SSD120の記憶領域の先頭を起点として、直前に書き込みが行われた領域に続く領域へ行われる。
(ステップS45)転送制御部190は、DIMM110の記憶領域のうち、選択した管理レジスタ152に登録されている実使用領域から、DIMM入出力部140を通じてデータを読み出す。具体的には、転送制御部190は、DIMM入出力部140のDIMMリードレジスタに、選択した管理レジスタ152に登録されている先頭ポインタの値を設定して、DIMM入出力部140にデータの読み出しを要求する。それ以後、転送制御部190は、DIMMリードレジスタの設定値を、選択した管理レジスタ152に登録されている末尾ポインタの値に達するまでカウントアップする。これにより、実使用領域のデータがDIMM110から読み出される。
転送制御部190は、読み出されたデータを、SSD入出力部160を通じて、SSD120の空き領域の先頭領域に書き込む。
(ステップS46)転送制御部190は、ステップS41で選択した管理レジスタ群151から全管理レジスタ152を選択したか判定する。全管理レジスタ152を選択した場合、処理をステップS47へ進める。未選択の管理レジスタ152が存在する場合、処理をステップS42へ進める。
(ステップS46)転送制御部190は、ステップS41で選択した管理レジスタ群151から全管理レジスタ152を選択したか判定する。全管理レジスタ152を選択した場合、処理をステップS47へ進める。未選択の管理レジスタ152が存在する場合、処理をステップS42へ進める。
(ステップS47)転送制御部190は、全管理レジスタ群151を選択したか判定する。全管理レジスタ群151を選択した場合、処理をステップS48へ進める。未選択の管理レジスタ群151が存在する場合、処理をステップS41へ進める。
(ステップS48)転送制御部190は、復元管理情報(終了)を生成する。生成される復元管理情報(終了)の種別の項目には、“終了”が設定される。また、生成される復元管理情報(終了)のその他の項目には“NULL”が設定される。転送制御部190は、生成された復元管理情報(終了)を、SSD入出力部160を通じて、SSD120の空き領域の先頭領域へ書き込む。
(ステップS49)転送制御部190は、バックアップ完了通知を管理装置200に送信するよう、通信インタフェース102に要求する。すると、バックアップ完了通知が通信インタフェース102により、管理装置200に送信される。
図23は、復元処理の例を示すフローチャートである。図23で説明する処理は、管理装置200からバックアップデータの復元を要求されたときに、記憶制御回路130により実行される処理である。また、図23では、SSD120上の先頭の復元管理情報121は、復元管理情報(終了)以外であるもの(すなわち、SSD120には、1以上の実使用領域のバックアップデータが格納されている)とする。以下、図23に示す処理をステップ番号に沿って説明する。
(ステップS71)転送制御部190は、全ての管理レジスタ152をリセットする。具体的には、転送制御部190は、全ての管理レジスタ152について、有効ビットの項目に“0”を設定し、先頭ポインタおよび末尾ポインタの各項目の設定値を消去する。
(ステップS72)転送制御部190は、SSD入出力部160を通じて、SSD120の所定のアドレス(例えば、先頭アドレス)から先頭の復元管理情報121を読み出す。
(ステップS73)転送制御部190は、読み出した復元管理情報121に設定されている先頭アドレスの上位3ビットと、識別子が一致する管理レジスタ群151を特定する。
(ステップS74)転送制御部190は、特定された管理レジスタ群151における空きの管理レジスタ152(有効ビットが“0”である管理レジスタ152)のうち、先頭の管理レジスタ152(レジスタの識別子が最小の管理レジスタ152)を選択する。
(ステップS75)転送制御部190は、ステップS72または後述するステップS77で読み出した復元管理情報121に基づいて、選択した管理レジスタ152に実使用領域に関する情報を登録し、管理レジスタ152を復元する。
具体的には、転送制御部190は、選択した管理レジスタ152の有効ビットの項目に“1”を設定し、選択した管理レジスタ152の先頭ポインタの項目に、読み出した復元管理情報121に設定されている先頭アドレスを設定する。同様に、転送制御部190は、選択した管理レジスタ152の末尾ポインタの項目に、“読み出した復元管理情報121に設定されている先頭アドレス+読み出した復元管理情報121に設定されているデータ長”によって算出される値を設定する。
(ステップS76)転送制御部190は、選択した管理レジスタ152に対してステップS75で設定されたポインタに基づき、SSD120からデータを読み出してDIMM110へ書き込む。
具体的には、転送制御部190は、SSD入出力部160を通じて、直前に復元管理情報121が読み出された領域に続くSSD120の記憶領域から、管理レジスタ152にそれぞれ設定された先頭ポインタと末尾ポインタとの差分に対応するサイズの分だけ、データを読み出す。転送制御部190は、読み出されたデータをDIMM入出力部140に転送する。
また、転送制御部190は、DIMM入出力部140のDIMMライトレジスタに、管理レジスタ152に設定された先頭ポインタを設定し、DIMM入出力部140にデータの書き込みを要求する。それ以後、転送制御部190は、DIMMライトレジスタの設定値を、管理レジスタ152に設定された末尾ポインタの値に達するまでカウントアップする。これにより、管理レジスタ152が示すDIMM110上の実使用領域に、SSD120から読み出されたバックアップデータが書き込まれ、実使用領域が復元される。
(ステップS77)転送制御部190は、SSD入出力部160を通じて、SSD120から次の復元管理情報121を読み出す。SSD120からの読み出しは、ステップS76でデータが読み出された領域の次から行われる。
(ステップS78)転送制御部190は、読み出した復元管理情報121に設定されている種別が“終了”であるか判定する。すなわち、転送制御部190は、読み出した復元管理情報121が復元管理情報(終了)であるか判定する。種別が“終了”である場合、処理をステップS79へ進める。種別が“終了”以外(すなわち、“復元”)である場合、処理をステップS73へ進める。
(ステップS79)転送制御部190は、復元完了通知を管理装置200に送信するよう、通信インタフェース102に要求する。すると、復元完了通知が通信インタフェース102により、管理装置200に送信される。
以上の図23の処理により、バックアップ処理の直前において、各分割領域に対応する管理レジスタ群151に登録されていた情報が復元される。なお、図23の処理例では、1つの管理レジスタ群151の中においては、情報が登録される管理レジスタ152の位置が、バックアップ処理の前と復元後とで変わる場合がある。その理由は、図23の処理例では、管理レジスタ群151内の先頭の管理レジスタ群151から順に、情報が登録されているからである。ただし、復元される情報の内容(すなわち、実使用領域の範囲)は変更されない。
第2の実施の形態の情報処理システムによれば、DIMM110上のデータをSSD120へバックアップする際、管理レジスタ152に登録されている実使用領域に格納されているデータのみをSSD120へバックアップする。また、管理レジスタ152には、書込要求により指定される書込要求領域に基づいて実使用領域が設定される。これにより、実使用領域には実際に書込要求された記憶領域のみが含まれ、実使用領域と判定された領域の中に未使用領域が含まれなくなる。よって、DIMM110の全記憶領域のうち使用中の記憶領域のみをSSD120へバックアップすることができ、DIMM110からSSD120へのデータのバックアップが効率化される。
また、アドレス管理部180は、書込要求領域と重複する実使用領域が管理レジスタ152に登録されている場合、書込要求領域と重複する実使用領域とをマージした領域で、重複する実使用領域を置き換えて管理レジスタ152に登録する。これにより、実使用領域を登録する管理レジスタ152の数を減らすことができるため、管理レジスタ152全体の記憶容量を抑制することができる。
また、書込要求領域を包含する実使用領域が管理レジスタ152に登録されている場合、アドレス管理部180は、管理レジスタ152を更新しない。これにより、管理レジスタ152の数を減らすことができるため、管理レジスタ152の記憶容量を抑制することができる。また、この場合、書込要求領域と実使用領域とをマージする処理を省略できるため、処理速度が向上する。
また、アドレス管理部180は、書込要求領域と重複する実使用領域が管理レジスタ152に登録されていない場合、管理レジスタ152に登録されている実使用領域のうち、書込要求領域との距離が最も近い実使用領域を、書込要求領域をマージした実使用領域で置き換えて管理レジスタ152に登録する。これにより、書込要求領域を実使用領域とマージすることが多くなるため、管理レジスタ152の数をより減少することができる。よって、管理レジスタ152の記憶容量を抑制することができる。
また、システム記憶装置100は、管理レジスタ152の数を制限することで、レジスタの容量を節約することができる。
また、上記のように、実使用領域のアドレスに基づいて分割領域を判定することで、書込要求領域のアドレスに応じて、一意に更新する管理レジスタ152の候補を特定することができるため、更新する管理レジスタ152の候補を高速に特定できる。
また、上記のように、実使用領域のアドレスに基づいて分割領域を判定することで、書込要求領域のアドレスに応じて、一意に更新する管理レジスタ152の候補を特定することができるため、更新する管理レジスタ152の候補を高速に特定できる。
[第3の実施の形態]
第2の実施の形態に示したシステム記憶装置100は、図24に示すようなコンピュータとして実現されてもよい。
第2の実施の形態に示したシステム記憶装置100は、図24に示すようなコンピュータとして実現されてもよい。
図24は、第3の実施の形態に係るシステム記憶装置のハードウェア構成例を示す図である。システム記憶装置100aは、プロセッサ401、RAM402、HDD403、入力信号処理部404、ディスクドライブ405、通信インタフェース406,407、DIMM入出力部408およびSSD入出力部409を有する。これらのユニットは、システム記憶装置100a内でバス410に接続されている。また、システム記憶装置100aは、第2の実施の形態と同様のDIMM110およびSSD120を有する。
プロセッサ401は、プログラムの命令を実行する演算器を含むプロセッサである。RAM402は、プロセッサ401が実行するプログラムやプログラムから参照されるデータを一時的に記憶する揮発性メモリである。HDD403は、OSやファームウェアやアプリケーションソフトウェア等のプログラムおよびデータを記憶する不揮発性の記憶装置である。
入力信号処理部404は、システム記憶装置100aに接続された入力デバイス404aから入力信号を取得し、プロセッサ401に通知する。ディスクドライブ405は、記録媒体405aに記録されたプログラムやデータを読み取る駆動装置である。ディスクドライブ405は、プロセッサ401からの命令に従って、記録媒体405aから読み取ったプログラムやデータをRAM402またはHDD403に格納する。
通信インタフェース406は、管理装置200と通信を行う。通信インタフェース406は、例えば、管理装置200から、バックアップ要求や復元要求を受信する。通信インタフェース407は、サーバ装置300a,300b,…と通信を行う。通信インタフェース407は、例えば、サーバ装置300a,300b,…から、DIMM110に対するアクセス要求を受信する。
DIMM入出力部408は、図4のDIMM入出力部140に対応するハードウェアであり、DIMM110へのアクセスを行う。SSD入出力部409は、図4のSSD入出力部160に対応するハードウェアであり、SSD120へのアクセスを行う。
第3の実施の形態のシステム記憶装置100aにおいては、図4のメモリ制御部170、アドレス管理部180および転送制御部190の処理が、所定のプログラムをプロセッサ401が実行することによって実現される。また、図4の管理情報記憶部150は、例えば、RAM402またはHDD403の記憶領域によって実現され、このような記憶領域に、管理レジスタ152と同様の情報が記憶される。これにより、システム記憶装置100aは、図4のシステム記憶装置100と同様の処理を実行することができる。
なお、前述のように、第1の実施の形態の情報処理は、記憶制御装置10にプログラムを実行させることで実現でき、第2の実施の形態の情報処理は、システム記憶装置100や管理装置200やサーバ装置300a,300b,…にプログラムを実行させることで実現できる。また、第3の実施の形態の情報処理は、システム記憶装置100aにプログラムを実行させることで実現できる。このようなプログラムは、コンピュータ読み取り可能な記録媒体(例えば、記録媒体23)に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリ等を使用できる。磁気ディスクには、FDおよびHDDが含まれる。光ディスクには、CD、CD−R(Recordable)/RW(Rewritable)、DVDおよびDVD−R/RWが含まれる。
プログラムを流通させる場合、例えば、当該プログラムを記録した可搬記録媒体が提供される。また、プログラムを他のコンピュータの記憶装置に格納しておき、ネットワーク30経由でプログラムを配布することもできる。コンピュータは、例えば、可搬記録媒体に記録されたプログラムまたは他のコンピュータから受信したプログラムを、記憶装置(例えば、HDD203)に格納し、当該記憶装置からプログラムを読み込んで実行する。ただし、可搬記録媒体から読み込んだプログラムを直接実行してもよく、他のコンピュータからネットワークを介して受信したプログラムを直接実行してもよい。また、上記の情報処理の少なくとも一部を、DSP、ASIC、PLD(Programmable Logic Device)等の電子回路で実現することも可能である。
上記については単に本発明の原理を示すものである。さらに、多数の変形や変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応する全ての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
10 記憶制御装置
11,12 記憶装置
13 記憶部
14 制御部
#1,#2 使用領域
11,12 記憶装置
13 記憶部
14 制御部
#1,#2 使用領域
Claims (10)
- 第1の記憶装置の記憶領域のうち、データが書き込まれた領域を示し、かつ連続するアドレス範囲を示す使用領域が、1以上登録される領域管理情報を記憶する記憶部と、
前記第1の記憶装置へのデータの書き込み要求および書き込みアドレスを受信したとき、受信した書き込みアドレスが示す書き込み領域を、使用領域として前記領域管理情報に登録する領域管理部と、
前記第1の記憶装置の記憶領域のうち、前記領域管理情報に登録された使用領域に記憶されたデータを、第2の記憶装置に保存する制御部と、
を有し、
前記領域管理部は、前記領域管理情報に登録されている使用領域のうち、前記書き込み領域と重複する1以上の使用領域を、前記書き込み領域とマージし、前記重複する1以上の使用領域を前記領域管理情報から削除し、マージによって生成された使用領域を前記領域管理情報に登録することを特徴とする記憶制御装置。 - 前記領域管理部は、前記領域管理情報に登録されている使用領域のうち、前記書き込み領域と重複している使用領域が存在しない場合、前記書き込み領域との間隔が最も近い使用領域を選択し、選択した使用領域を前記書き込み領域とマージし、前記選択した使用領域をマージによって生成された使用領域に置き換えることを特徴とする請求項1記載の記憶制御装置。
- 前記領域管理部は、前記選択した使用領域と前記書き込み領域との距離が閾値未満の場合に、前記選択した使用領域を前記書き込み領域とマージし、前記選択した使用領域をマージによって生成された使用領域に置き換えることを特徴とする請求項2記載の記憶制御装置。
- 前記領域管理部は、前記書き込み領域が前記領域管理情報に登録されている使用領域のいずれかに包含されている場合、前記領域管理情報の更新を回避することを特徴とする請求項1乃至3のいずれか1項に記載の記憶制御装置。
- 第1の記憶装置の記憶領域を分割した複数の分割領域にそれぞれ対応する複数の領域管理情報を記憶する記憶部であって、前記複数の領域管理情報それぞれには、前記複数の分割領域のうち対応する分割領域におけるデータが書き込まれた領域を示す使用領域が、一定数を上限として登録される、前記記憶部と、
前記第1の記憶装置の記憶領域のうち、前記複数の領域管理情報に登録された使用領域に記憶されたデータを、第2の記憶装置に保存する制御部と、
を有することを特徴とする記憶制御装置。 - 前記制御部は、前記第2の記憶装置にデータを保存する際、前記保存したデータに対応する使用領域に関する情報を前記第2の記憶装置に保存し、前記第2の記憶装置に保存されたデータを前記第1の記憶装置へ書き戻す際、前記第2の記憶装置に保存された、使用領域に関する情報に基づき、前記第1の記憶装置におけるデータの記憶状態を、前記第2の記憶装置にデータを保存する直前の状態に復元することを特徴とする請求項1乃至5のいずれか1項に記載の記憶制御装置。
- 第1の記憶装置の記憶領域のうち、データが書き込まれた領域を示し、かつ連続するアドレス範囲を示す使用領域を、領域管理情報に1以上登録し、
前記第1の記憶装置の記憶領域のうち、前記領域管理情報に登録された使用領域に記憶されたデータを、第2の記憶装置に保存する、
処理を含み、
前記領域管理情報への登録では、
前記第1の記憶装置へのデータの書き込み要求および書き込みアドレスを受信したとき、受信した書き込みアドレスが示す書き込み領域を、使用領域として前記領域管理情報に登録し、
前記領域管理情報に登録されている使用領域のうち、前記書き込み領域と重複する1以上の使用領域を、前記書き込み領域とマージし、前記重複する1以上の使用領域を前記領域管理情報から削除し、マージによって生成された使用領域を前記領域管理情報に登録する、
ことを特徴とする記憶制御方法。 - 第1の記憶装置の記憶領域を分割した複数の分割領域に複数の領域管理情報がそれぞれ対応付けられており、前記複数の分割領域それぞれにおけるデータが書き込まれた領域を示す使用領域を、前記複数の領域管理情報のうち対応する領域管理情報に対して、一定数を上限として登録し、
前記第1の記憶装置の記憶領域のうち、前記複数の領域管理情報に登録された使用領域に記憶されたデータを、第2の記憶装置に保存する、
ことを特徴とする記憶制御方法。 - コンピュータに、
第1の記憶装置の記憶領域のうち、データが書き込まれた領域を示し、かつ連続するアドレス範囲を示す使用領域を、領域管理情報に1以上登録し、
前記第1の記憶装置の記憶領域のうち、前記領域管理情報に登録された使用領域に記憶されたデータを、第2の記憶装置に保存する、
処理を実行させ、
前記領域管理情報への登録では、
前記第1の記憶装置へのデータの書き込み要求および書き込みアドレスを受信したとき、受信した書き込みアドレスが示す書き込み領域を、使用領域として前記領域管理情報に登録し、
前記領域管理情報に登録されている使用領域のうち、前記書き込み領域と重複する1以上の使用領域を、前記書き込み領域とマージし、前記重複する1以上の使用領域を前記領域管理情報から削除し、マージによって生成された使用領域を前記領域管理情報に登録する、
ことを特徴とする記憶制御プログラム。 - コンピュータに、
第1の記憶装置の記憶領域を分割した複数の分割領域に複数の領域管理情報がそれぞれ対応付けられており、前記複数の分割領域それぞれにおけるデータが書き込まれた領域を示す使用領域を、前記複数の領域管理情報のうち対応する領域管理情報に対して、一定数を上限として登録し、
前記第1の記憶装置の記憶領域のうち、前記複数の領域管理情報に登録された使用領域に記憶されたデータを、第2の記憶装置に保存する、
処理を実行させることを特徴とする記憶制御プログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2013/075143 WO2015040694A1 (ja) | 2013-09-18 | 2013-09-18 | 記憶制御装置、記憶制御方法および記憶制御プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6061037B2 true JP6061037B2 (ja) | 2017-01-18 |
JPWO2015040694A1 JPWO2015040694A1 (ja) | 2017-03-02 |
Family
ID=52688380
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015537465A Expired - Fee Related JP6061037B2 (ja) | 2013-09-18 | 2013-09-18 | 記憶制御装置、記憶制御方法および記憶制御プログラム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP6061037B2 (ja) |
WO (1) | WO2015040694A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017041182A (ja) * | 2015-08-21 | 2017-02-23 | ファナック株式会社 | 数値制御装置 |
JP2019197304A (ja) * | 2018-05-08 | 2019-11-14 | アズビル株式会社 | 情報蓄積装置、情報蓄積システムおよび情報蓄積方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0944418A (ja) * | 1995-07-21 | 1997-02-14 | Internatl Business Mach Corp <Ibm> | 情報処理システム及びその制御方法 |
JPH09212416A (ja) * | 1995-11-30 | 1997-08-15 | Toshiba Corp | 計算機システムおよび計算機システムの電力管理方法 |
JP2011524555A (ja) * | 2008-12-04 | 2011-09-01 | 株式会社日立製作所 | 揮発性メモリと不揮発性メモリとを備えたストレージシステム |
JP2013088928A (ja) * | 2011-10-14 | 2013-05-13 | Hitachi Ltd | 計算機及びデータ退避方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04358243A (ja) * | 1991-06-04 | 1992-12-11 | Fujitsu Ltd | 半導体ディスク装置 |
-
2013
- 2013-09-18 WO PCT/JP2013/075143 patent/WO2015040694A1/ja active Application Filing
- 2013-09-18 JP JP2015537465A patent/JP6061037B2/ja not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0944418A (ja) * | 1995-07-21 | 1997-02-14 | Internatl Business Mach Corp <Ibm> | 情報処理システム及びその制御方法 |
JPH09212416A (ja) * | 1995-11-30 | 1997-08-15 | Toshiba Corp | 計算機システムおよび計算機システムの電力管理方法 |
JP2011524555A (ja) * | 2008-12-04 | 2011-09-01 | 株式会社日立製作所 | 揮発性メモリと不揮発性メモリとを備えたストレージシステム |
JP2013088928A (ja) * | 2011-10-14 | 2013-05-13 | Hitachi Ltd | 計算機及びデータ退避方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2015040694A1 (ja) | 2015-03-26 |
JPWO2015040694A1 (ja) | 2017-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI424316B (zh) | 控制器、資料儲存裝置、及程式產品 | |
JP5603997B2 (ja) | ストレージ装置及びデータ制御方法 | |
US9996542B2 (en) | Cache management in a computerized system | |
TWI590049B (zh) | 記憶體裝置與其操作方法 | |
CN104216837A (zh) | 一种内存系统、内存访问请求的处理方法和计算机系统 | |
US20150347310A1 (en) | Storage Controller and Method for Managing Metadata in a Cache Store | |
US20160266923A1 (en) | Information processing system and method for controlling information processing system | |
JP2010186477A (ja) | メモリシステム及びその磨耗度管理方法 | |
JP2013174975A (ja) | メモリシステムとそのデータ書き込み方法 | |
JPWO2008099786A1 (ja) | メモリ障害復旧方法、情報処理装置およびプログラム | |
US20160196085A1 (en) | Storage control apparatus and storage apparatus | |
JP2017126334A (ja) | 記憶装置及びその動作方法並びにシステム | |
JP2017062636A (ja) | ストレージ装置およびストレージ制御プログラム | |
JP6061037B2 (ja) | 記憶制御装置、記憶制御方法および記憶制御プログラム | |
JP2020191055A (ja) | 瞬断からの回復処理方法及び装置、並びにコンピュータ読み取り可能な記憶媒体 | |
US10515071B2 (en) | Database management system and database management method using logical addresses and timestamps | |
JP2019191863A (ja) | 記憶装置,情報処理プログラムおよび情報処理システム | |
EP3136245B1 (en) | Computer | |
JP7011156B2 (ja) | ストレージ制御装置およびプログラム | |
JP2019144921A (ja) | 情報処理装置及び情報処理方法 | |
US20130086351A1 (en) | Obtaining additional data storage from another data storage system | |
US8667218B2 (en) | Storage apparatus comprising RAID groups of RAID 1 series and control method of writing to RAID group of RAID 1 series | |
JP2009129025A (ja) | 記憶情報配置システム、記憶情報配置方法、および記憶情報配置プログラム | |
US9760485B2 (en) | Fast write and management of persistent cache in a system that includes tertiary storage | |
US8886908B2 (en) | Management of multiple capacity types in storage systems |
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: 20161115 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20161128 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6061037 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |