(57)【要約】      （修正有）【課題】メモリ・インターフェイスとＩ／Ｏインターフェイスの双方に接続可能なメモリ・ユニットを提供する。【解決手段】ＤＩＭＭスロット１１１に装着された第１記憶装置２００と、ＤＩＭＭスロット１１１に装着されると共に、Ｉ／Ｏインターフェイスにも接続された第２記憶装置３００と、Ｉ／Ｏインターフェイスに接続された第３記憶装置４００とを備え、第２記憶装置３００は、メモリ・インターフェイスを介して不揮発性メモリに格納されたデータの読み出しが可能な第１動作モードと、Ｉ／Ｏインターフェイスを介して不揮発性メモリに対するデータの読み書きが可能な第２動作モードとを切り替え設定される。第２記憶装置３００が第１動作モードのときに、第２記憶装置３００に対して行われた書き込み要求による書き込み対象のデータは、第３記憶装置４００に保存される。【選択図】図１
2015114932.tif 000002
【特許請求の範囲】
【請求項１】
ＤＲＡＭの装着部に装着されるメモリ・ユニットであって、
不揮発性メモリと、
メモリ・インターフェイスへの接続手段である第１接続部と、
Ｉ／Ｏインターフェイスへの接続手段である第２接続部と、
を備える、メモリ・ユニット。
【請求項２】
前記メモリ・インターフェイスを介して前記不揮発性メモリに格納されたデータの読み出しが可能な第１動作モードと、前記Ｉ／Ｏインターフェイスを介して前記不揮発性メモリに対するデータの読み書きが可能な第２動作モードとを切り替え設定される、請求項１に記載のメモリ・ユニット。
【請求項３】
前記ＤＲＡＭの装着部は、ＤＩＭＭ（Dual Inline Memory Module）スロットである、請求項１または請求項２に記載のメモリ・ユニット。
【請求項４】
前記不揮発性メモリは、フラッシュ・メモリである、請求項１乃至請求項３の何れかに記載のメモリ・ユニット。
【請求項５】
前記不揮発性メモリ、前記第１接続部および前記第２接続部に接続され、前記第１動作モードのときは、前記メモリ・インターフェイスを介して取得したアドレスを当該不揮発性メモリのアドレスに変換し、当該メモリ・インターフェイスと当該不揮発性メモリとのタイミング調整を行う制御装置、をさらに備える、請求項１または請求項２に記載のメモリ・ユニット。
【請求項６】
前記制御装置は、前記第１動作モードのときは、読み出し要求に対しては、前記不揮発性メモリに格納されている当該読み出し要求の読み出し対象に該当するデータを返し、書き込み要求に対しては、ダミー・データを返し、前記第２動作モードのときは、当該不揮発性メモリを前記メモリ・インターフェイスから隔離する、請求項５に記載のメモリ・ユニット。
【請求項７】
ＤＩＭＭ（Dual Inline Memory Module）スロットに装着されるメモリ・ユニットであって、
フラッシュ・メモリと、
メモリ・インターフェイスへの接続手段であり、前記ＤＩＭＭスロットに装着される第１接続部と、
Ｉ／Ｏインターフェイスへの接続手段である第２接続部と、
前記フラッシュ・メモリ、前記第１接続部および前記第２接続部に接続され、前記メモリ・インターフェイスを介して前記フラッシュ・メモリに格納されたデータの読み出しが可能な第１動作モードのときは、前記メモリ・インターフェイスを介して取得したアドレスを当該フラッシュ・メモリのアドレスに変換し、当該メモリ・インターフェイスと当該フラッシュ・メモリとのタイミング調整を行い、読み出し要求に対しては、前記フラッシュ・メモリに格納されている当該読み出し要求の読み出し対象に該当するデータを返し、書き込み要求に対しては、ダミー・データを返し、前記Ｉ／Ｏインターフェイスを介して前記フラッシュ・メモリに対するデータの読み書きが可能な第２動作モードのときは、当該フラッシュ・メモリを前記メモリ・インターフェイスから隔離する、メモリ・ユニット。
【請求項８】
記憶装置を備えたコンピュータ・システムであって、
ＤＲＡＭの装着部に装着されてメモリ・インターフェイスに接続された第１記憶装置と、
ＤＲＡＭの装着部に装着されてメモリ・インターフェイスに接続されると共に、Ｉ／Ｏインターフェイスにも接続された第２記憶装置とを備え、
前記第２記憶装置は、
不揮発性メモリと、
メモリ・インターフェイスへの接続手段である第１接続部と、
Ｉ／Ｏインターフェイスへの接続手段である第２接続部と、を備え、
前記メモリ・インターフェイスを介して前記不揮発性メモリに格納されたデータの読み出しが可能な第１動作モードと、前記Ｉ／Ｏインターフェイスを介して前記不揮発性メモリに対するデータの読み書きが可能な第２動作モードとを切り替え設定される、コンピュータ・システム。
【請求項９】
Ｉ／Ｏインターフェイスに接続され、前記第２記憶装置が前記第１動作モードのときに、当該第２記憶装置に対して行われた書き込み要求による書き込み対象のデータを保存する第３記憶装置を、さらに備える、請求項８に記載のコンピュータ・システム。
【請求項１０】
前記第２記憶装置が前記第１動作モードのときに前記第３記憶装置に保存された前記書き込み対象のデータを読み出す読み出し要求が当該第１動作モードのときに行われた場合、当該第３記憶装置から当該データが読み出される、請求項９に記載のコンピュータ・システム。
【請求項１１】
前記第２記憶装置が前記第１動作モードから前記第２動作モードに切り替えられた場合に、当該第１動作モードのときに前記第３記憶装置に保存された前記書き込み対象のデータが、前記Ｉ／Ｏインターフェイスを介して当該第２記憶装置の前記不揮発性メモリに書き込まれる、請求項９に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ・インターフェイスとＩ／Ｏインターフェイスの双方に接続可能なメモリ・ユニットおよびコンピュータ・システムに関する。
【背景技術】
【０００２】
コンピュータ・システムにおいて、主記憶装置は、メモリ・バス等を含む専用のインターフェイス（メモリ・インターフェイス）を介して、ＣＰＵ（Central Processing Unit）が直接アクセスすることが可能な記憶装置である。そのため、主記憶装置に対しては、汎用のＩ／Ｏインターフェイスを介して接続される他の記憶装置よりも高速なアクセスが可能である。一般に、この主記憶装置としては、電源を切ると記憶内容が失われる揮発性メモリが用いられており、通常は、ＤＲＡＭ（Dynamic Random Access Memory）が用いられている。
【０００３】
一方、電源を切っても記憶内容が失われない不揮発性メモリであって、記憶内容の書き換えが可能なフラッシュ・メモリの普及に伴い、このフラッシュ・メモリを主記憶装置として使用する仕組みが実現されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開第２０１２／０２０４０７９号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
既存のコンピュータ・システムでは、通常、主記憶装置として一般的に用いられるＤＲＡＭに対応するメモリ・インターフェイスが用意される。そのため、既存のシステムで、フラッシュ・メモリのようなＤＲＡＭ以外のメモリ・デバイスを主記憶装置として扱うことは難しい。特に、書き込み処理は、ＤＲＡＭ以外のメモリ・デバイスでは、アクセス・タイミングがＤＲＡＭとは大きく異なるために扱いが難しく、調整のための処理を介在させるとオーバーヘッドが発生する等の問題があった。
【０００６】
本発明は、上記の課題に鑑み、ＤＲＡＭでないメモリ・デバイスをコンピュータ・システムの主記憶装置として用いる場合において、メモリ・インターフェイスからの書き込み処理における問題を解消することを目的とする。
【課題を解決するための手段】
【０００７】
上記の目的を達成するため、本発明は、次のようなメモリ・ユニットとして実現される。このユニットは、ＤＲＡＭの装着部に装着されるメモリ・ユニットであって、不揮発性メモリと、メモリ・インターフェイスへの接続手段である第１接続部と、Ｉ／Ｏインターフェイスへの接続手段である第２接続部と、を備える。そして、メモリ・インターフェイスを介して不揮発性メモリに格納されたデータの読み出しが可能な第１動作モードと、Ｉ／Ｏインターフェイスを介して不揮発性メモリに対するデータの読み書きが可能な第２動作モードとを切り替え設定される。
【０００８】
より詳細には、ＤＲＡＭの装着部は、ＤＩＭＭ（Dual Inline Memory Module）スロットとすることができる。また、不揮発性メモリは、フラッシュ・メモリとすることができる。
【０００９】
また、このメモリ・ユニットは、不揮発性メモリ、第１接続部および第２接続部に接続され、第１動作モードのときは、メモリ・インターフェイスを介して取得したアドレスを不揮発性メモリのアドレスに変換し、メモリ・インターフェイスと不揮発性メモリとのタイミング調整を行い、読み出し要求に対しては、不揮発性メモリに格納されている読み出し要求の読み出し対象に該当するデータを返し、書き込み要求に対しては、ダミー・データを返し、第２動作モードのときは、不揮発性メモリをメモリ・インターフェイスから隔離する制御装置、をさらに備える構成とすることができる。
【００１０】
さらに本発明は、上記のメモリ・ユニットを備えたコンピュータ・システムとしても実現される。このコンピュータシステムは、ＤＲＡＭの装着部に装着されてメモリ・インターフェイスに接続された第１記憶装置と、ＤＲＡＭの装着部に装着されてメモリ・インターフェイスに接続されると共に、Ｉ／Ｏインターフェイスにも接続された上記のメモリ・ユニットに相当する第２記憶装置と、Ｉ／Ｏインターフェイスに接続され、第２記憶装置が第１動作モードのときに、第２記憶装置に対して行われた書き込み要求による書き込み対象のデータを保存する第３記憶装置と、を備える。
【００１１】
より好ましくは、第２記憶装置が第１動作モードのときに第３記憶装置に保存された書き込み対象のデータを読み出す読み出し要求が、その第１動作モードのときに行われた場合、第３記憶装置から読み出し要求に係るデータが読み出される。また、第２記憶装置が第１動作モードから第２動作モードに切り替えられた場合に、第１動作モードのときに第３記憶装置に保存された書き込み対象のデータが、Ｉ／Ｏインターフェイスを介して第２記憶装置の不揮発性メモリに書き込まれる。
【発明の効果】
【００１２】
本発明によれば、ＤＲＡＭでないメモリ・デバイスをコンピュータ・システムの主記憶装置として用いる場合において、メモリ・インターフェイスからの書き込み処理における問題を解消することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】本実施形態が適用されるコンピュータ・システムの構成例を示す図である。
【図２】第２記憶装置および中継コントローラの構成例と接続関係を示す図である。
【図３】第２記憶装置の動作モードを説明する図である。
【図４】直接接続モードにおけるデータアクセスの流れを示す図である。
【図５】外部接続モードにおけるデータアクセスの流れを示す図である。
【図６】本実施形態による第２記憶装置の動作モードの切り替え方法を説明するフローチャートである。
【図７】本実施形態によるメモリ・システムを備えたコンピュータ・システムの応用例を示す図である。
【発明を実施するための形態】
【００１４】
以下、添付図面を参照して、本発明の実施形態について詳細に説明する。
【００１５】
＜システム構成＞
図１は、本実施形態が適用されるコンピュータ・システムの構成例を示す図である。本実施形態が適用されるコンピュータ・システムは、ＣＰＵ１００と、記憶装置として、第１記憶装置２００、第２記憶装置３００および第３記憶装置４００とを備える。また、このコンピュータ・システムは、後述する第２動作モードにおいて第２記憶装置３００に対するデータの読み書きを制御する中継コントローラ５００を備える。ＣＰＵ１００には、主記憶装置にアクセスするためのメモリ・コントローラ１１０と、外部装置に接続するためのＰＣＩｅ（PCI Express）コントローラ１２０とが設けられている。
【００１６】
第１記憶装置２００は、ＣＰＵ１００からメモリ・インターフェイスを介して直接アクセスされる主記憶装置であり、ＣＰＵ１００に対して少なくとも１個は設けられる。この第１記憶装置２００は、ＯＳ（Operating System）等のソフトウェアを稼働させるために用いられる。また、第１記憶装置２００は、通常、揮発性の半導体メモリであるＤＲＡＭを用いたＤＩＭＭ（Dual Inline Memory Module）等のメモリ・デバイスにより実現される。図１に示す例では、第１記憶装置２００は、ＤＩＭＭで実現され、ＣＰＵ１００のメモリ・コントローラ１１０に接続されたＤＲＡＭのスロット（装着部）であるＤＩＭＭスロット１１１に装着されている。
【００１７】
第２記憶装置３００は、ＣＰＵ１００からメモリ・インターフェイスを介して直接アクセス可能な直接接続モード（第１動作モード）と、Ｉ／Ｏインターフェイスを介して外部記憶装置としてアクセス可能な外部接続モード（第２動作モード）とを切り替え可能に構成されたメモリ・ユニットである。すなわち、この第２記憶装置３００は、メモリ・インターフェイスへの接続手段と、Ｉ／Ｏインターフェイスへの接続手段とを備える。この第２記憶装置３００は、例えば、不揮発性の半導体メモリであるフラッシュ・メモリを用いたメモリ・デバイスとして実現される。図１に示す例では、第２記憶装置３００は、ＣＰＵ１００のメモリ・コントローラ１１０に接続されたＤＩＭＭスロット１１１に装着されると共に、ＰＣＩｅコントローラ１２０に接続されたＰＣＩｅスロット１２１に装着された中継コントローラ５００に接続されている。これにより、第２記憶装置３００は、直接接続モードで動作しているときは、メモリ・コントローラ１１０を含むメモリ・インターフェイスを介してＣＰＵ１００から直接アクセスされる。一方、外部接続モードで動作しているときは、ＰＣＩｅコントローラ１２０を含むＩ／Ｏインターフェイスおよび中継コントローラ５００を介して、外部装置としてＣＰＵ１００からアクセスされる。
【００１８】
第３記憶装置４００は、Ｉ／Ｏインターフェイスを介してアクセスされる外部記憶装置である。この第３記憶装置４００は、ＳＳＤ（Solid State Drive）やＨＤＤ（Hard Disk Drive）等の既存の外部記憶装置により実現される。また、主記憶装置の記憶領域の一部を仮想的な外部記憶装置として用いるＲＡＭディスクにより実現しても良い。図１に示す例では、第３記憶装置４００は、ＣＰＵ１００のＰＣＩｅコントローラ１２０に接続されたＳＡＴＡ（Serial ATA）インターフェイス（Ｉ／Ｆ）１２２に接続されている。なお、特に図示しないが、第３記憶装置４００としてＲＡＭディスクが用いられる場合は、例えば、第１記憶装置２００の記憶領域の一部がＲＡＭディスクに設定される。詳しくは後述するが、この第３記憶装置４００は、第２記憶装置３００が直接接続モードで動作している際に書き込み要求が行われた場合に、第２記憶装置３００の代わりに書き込みデータを記憶する一時的な記憶手段（一時記憶手段）として機能する。
【００１９】
中継コントローラ５００は、Ｉ／Ｏインターフェイス経由でのＣＰＵ１００から第２記憶装置３００へのアクセスを中継する。一般に、外部記憶装置の接続にはＩ／ＯインターフェイスとしてＳＡＴＡインターフェイスが用いられるので、第２記憶装置３００がＳＡＴＡインターフェイスをサポートする場合は、中継コントローラ５００として既存のＰＣＩｅのＳＡＴＡカードを用いても良い。
【００２０】
図１に示す構成例では、ＣＰＵ１００に設けられた２個のメモリ・コントローラ１１０に、それぞれ２個のＤＩＭＭスロット１１１が接続され、このうち３個のＤＩＭＭスロット１１１に第２記憶装置３００が装着されているが、図示の構成は例示に過ぎず、本実施形態におけるＤＩＭＭスロット１１１および第２記憶装置３００の数は図示の構成には限定されない。
【００２１】
＜第２記憶装置３００および中継コントローラ５００の構成＞
図２は、第２記憶装置３００および中継コントローラ５００の構成例と接続関係を示す図である。図２に示す構成例において、第２記憶装置３００は、不揮発性メモリの一例としてのフラッシュ・メモリ３１０と、制御装置３２０と、バッファ（バッファ・チップ）３３０とを備える。また、第２記憶装置３００は、Ｉ／Ｏインターフェイスへの接続手段（第１接続部）として、制御装置３２０と中継コントローラ５００とを接続するためのコネクタ３０１を備える。さらに、第２記憶装置３００は、メモリ・インターフェイスへの接続手段（第２接続部）として、ＤＩＭＭスロット１１１に対応する端子群を有し、ＤＩＭＭスロット１１１に装着可能な形状に形成された接続部３０２を備える。なお、接続部３０２の形状や端子数等の構成は、第２記憶装置３００が装着されるメモリ・インターフェイス側のコネクタに対応して定められるものであり、本実施形態が示すＤＩＭＭスロット１１１に対応するものに限定されない。
【００２２】
フラッシュ・メモリ３１０は、バッファ３３０を介してＤＩＭＭのメモリ・バスに接続される。バッファ３３０は、メモリとしてＤＲＡＭの代わりにフラッシュ・メモリ３１０（不揮発性メモリ）を用いる場合に生じるアクセス・タイミングの差異および電気的な特性の差異を吸収するために設けられる。
【００２３】
また、ＤＩＭＭ等のＤＲＡＭを搭載したメモリ・デバイスでは、システム起動時等にデータ信号のタイミング・キャリブレーションが行われる。第２記憶装置３００においては、このタイミング・キャリブレーションはバッファ３３０により実行される。図２に示す構成例では、４組のフラッシュ・メモリ３１０とバッファ３３０とが記載されているが、図示の構成は例示に過ぎず、本実施形態におけるフラッシュ・メモリ３１０およびバッファ３３０の数は図示の構成には限定されない。
【００２４】
制御装置３２０は、第２記憶装置３００の動作モード（直接接続モードと外部接続モード）を切り替え制御する。そして、各動作モードにおけるフラッシュ・メモリ３１０に対するデータの読み書きを制御する。この制御装置３２０は、例えばＡＳＩＣ（Application Specific Integrated Circuit）により実現される。本実施形態の制御装置３２０は、直接接続モードでの動作において、第２記憶装置３００を読み出し専用の記憶装置として制御する。すなわち、ＣＰＵ１００から読み出し要求が行われた場合は、該当するアドレスからのデータの読み出しを制御するが、書き込み要求が行われた場合は、その要求を受け付けない。詳しくは後述するが、第２記憶装置３００が直接接続モードである場合の書き込み要求に基づくデータの書き込み処理は、第３記憶装置４００に対して行われる。
【００２５】
第２記憶装置３００が直接接続モードで動作している場合、制御装置３２０は、ＤＩＭＭスロット１１１を介してコマンドおよびアクセス先のアドレスを取得する。そして、取得したアドレスをフラッシュ・メモリ３１０のアドレスに変換し、取得したコマンドおよび変換したアドレスに基づきフラッシュ・メモリ３１０へのアクセスを制御する。一方、第２記憶装置３００が外部接続モードで動作している場合、制御装置３２０は、ＰＣＩｅスロット１２１および中継コントローラ５００を介してコマンド、アクセス先のアドレスおよびデータを取得する。そして、取得したコマンドおよびアドレスに基づきフラッシュ・メモリ３１０へのアクセスを制御する。
【００２６】
図２に示す構成例において、中継コントローラ５００は、第２記憶装置３００に対するデータの読み書きを制御するための制御部５１０と、第２記憶装置３００に接続するためのコネクタ５０１とを備える。この中継コントローラ５００は、複数の第２記憶装置３００のＩ／Ｏインターフェイスを束ねて、ＣＰＵ１００に接続する。また、図２に示す構成例では、ＰＣＩｅインターフェイスをＳＡＴＡインターフェイスに変換する変換装置を兼ねている。
【００２７】
中継コントローラ５００の制御部５１０は、例えばＡＳＩＣにより実現され、接続された各第２記憶装置３００の各制御装置３２０と共に、外部接続モードにおける第２記憶装置３００のフラッシュ・メモリ３１０に対するデータの読み書きを制御する。図２に示す構成例では、中継コントローラ５００は、３個のコネクタ５０１を備え、３個の第２記憶装置３００に接続されているが、図示の構成は例示に過ぎず、本実施形態におけるコネクタ５０１の数（接続可能な第２記憶装置３００の数）は図示の構成には限定されない。また、図２に示す例では、中継コントローラ５００と第２記憶装置３００の制御装置３２０とはＳＡＴＡインターフェイスにより接続されているが、ＳＡＴＡ以外のＩ／Ｏインターフェイスにより接続される構成としても良い。
【００２８】
＜第２記憶装置３００の動作モード＞
図３は、第２記憶装置３００の動作モードを説明する図である。上述したように、第２記憶装置３００は、直接接続モードと外部接続モードとで動作する。図３に示すように、直接接続モードでは、第２記憶装置３００は、主記憶装置（メイン・メモリ）として扱われる。一方、外部接続モードでは、第２記憶装置３００は、外部記憶装置（ストレージ）として扱われる。以下、第２記憶装置３００における２つの動作モードについて、それぞれ説明する。
【００２９】
＜直接接続モード＞
上記のように、直接接続モードにおいて第２記憶装置３００は、主記憶装置の一部としてマウントされ、マッピングされる。具体的には、ＯＳは、ＲＡＭディスクのような主記憶装置を用いて実現される仮想ストレージとして第２記憶装置３００を認識する。このため、ＯＳには、この仮想ストレージとしての第２記憶装置３００にアクセスするための専用のデバイス・ドライバが用意される。これにより、ＯＳ上で動作するアプリケーション・プログラム（以下、単にアプリケーションと記す）からのアクセス要求は、このデバイス・ドライバで解釈され、該当するデータのアドレスが物理アドレスから仮想アドレスに変換されてアプリケーションに返される。また、直接接続モードにおいて第２記憶装置３００の制御装置３２０は、Ｉ／Ｏインターフェイス（ＳＡＴＡ）側からのアクセスを無視する。すなわち、直接接続モードにおいて第２記憶装置３００は、Ｉ／Ｏインターフェイス（ＳＡＴＡ）から隔離される。
【００３０】
また、上述したように、直接接続モードにおいて第２記憶装置３００は、読み出し専用の記憶装置として動作する。したがって、ＯＳからの読み出し要求に対しては、第２記憶装置３００の要求に対応するアドレスに格納されているデータが返されるが、ＯＳから書き込み要求が行われても第２記憶装置３００に対してデータの書き込みは行われない。
【００３１】
すなわち、第２記憶装置３００の制御装置３２０は、直接接続モードにおいてＤＩＭＭスロット１１１を介して取得するアクセス要求のうち、読み出し要求に関しては、ＤＲＡＭのアクセス・プロトコルを変換し、フラッシュ・メモリ３１０に格納されているデータをメモリ・インターフェイス側に提供する。具体的には、制御装置３２０は、ＤＩＭＭとフラッシュ・メモリ３１０とのタイミング調整を行い、読み出し要求によるアクセス先のアドレスをフラッシュ・メモリ３１０のアドレスに変換する。そして、変換されたアドレスに格納されているデータを読み出してＣＰＵ１００に返す。
【００３２】
一方、直接接続モードにおいてＤＩＭＭスロット１１１を介して取得するアクセス要求のうち、書き込み要求に関しては、第２記憶装置３００の制御装置３２０は、ダミー・データをＣＰＵ１００に返す。本実施形態では、第２記憶装置３００に対する書き込み要求が行われた場合、書き込みデータは、ＯＳ側のデバイス・ドライバの制御により、第１記憶装置２００にバッファされた後に、書き込み先アドレスの情報と共に第３記憶装置４００に保存される。第３記憶装置４００に保存された書き込みデータは、第２記憶装置３００の動作モードが外部接続モードに切り替わった際に、第２記憶装置３００へ移される。外部接続モードにおける第３記憶装置４００から第２記憶装置へのデータ転送については後述する。直接接続モードでの動作中に書き込んだ（更新された）データを読み出す場合は、データが保存されている第３記憶装置４００から読み出される。
【００３３】
＜外部接続モード＞
外部接続モードにおいて第２記憶装置３００は、ＳＳＤ等と同様の外部記憶装置（ストレージ）としてマウントされる。ＯＳは、第２記憶装置３００を外部記憶装置として認識するが、論理的には直接接続モードにおける主記憶装置としての第２記憶装置３００と同じ形でマウントされるため、動作モードに関わらず、アプリケーション・レベルでは第２記憶装置３００は同一のイメージとなる。なお、第２記憶装置３００を外部記憶装置として接続することは、通常のＳＳＤ等の外部記憶装置を接続することと同様であるので、直接接続モードにおいて仮想ストレージとしてのアクセスのために設けられたような専用のデバイス・ドライバを設ける必要はない。上記のデバイス・ドライバに対しては、第２記憶装置３００が装着されたＤＩＭＭスロット１１１にＤＩＭＭが存在しない、または、ダミーが装着されているものとして認識させる。また、外部接続モードの第２記憶装置３００に対するファイル管理には、基本的に、ログ構造化ファイル・システム（Log-structured File System、Versioning File System）が適用される。また、外部接続モードでは、ＯＳが第２記憶装置３００の記憶領域をメモリ空間として認識していないため、第２記憶装置３００に対するメモリ・インターフェイス側からのアクセスは行われない。もし第２記憶装置３００に対するメモリ・インターフェイス側からのアクセスが行われた場合、第２記憶装置３００の制御装置３２０は、このアクセスを無視する。すなわち、外部接続モードにおいて第２記憶装置３００は、メモリ・インターフェイスから隔離される。
【００３４】
外部接続モードでは、第２記憶装置３００に対するデータの読み書きは、いずれも可能である。外部記憶装置に対しては、ＣＰＵ１００から直接、データを読み書きできないため、外部接続モードの第２記憶装置３００に対しても、主記憶装置である第１記憶装置２００を介してデータの読み書きが行われる。すなわち、データの読み出しでは、まずデータが第２記憶装置３００の該当アドレスから第１記憶装置２００にコピーされ、その後に、第１記憶装置２００からＣＰＵ１００に読み込まれる。データの書き込みでは、まず書き込みデータが第１記憶装置２００に保持され、その後に、第１記憶装置２００から第２記憶装置３００の該当アドレスへ転送される。
【００３５】
また、外部接続モードでは、第２記憶装置３００が直接接続モードで動作している際に第３記憶装置４００を用いて行われたデータの書き込み（更新）を第２記憶装置３００に反映させる処理が行われる。すなわち、第３記憶装置４００に保存されている書き込みデータにより、その書き込みデータの書き込み要求において指定された第２記憶装置３００の書き込み先アドレスのデータが更新される。この書き込み反映処理は、第２記憶装置３００が外部接続モードで起動した後に、直ちに実行される。
【００３６】
なお、第２記憶装置３００の初期化、システムのリカバリ、システムの複製、第２記憶装置３００に記録されているデータの最適化などの処理は、第２記憶装置３００が外部接続モードで動作しているときに行われる。また、第２記憶装置３００に記録されているデータのバックアップは、第２記憶装置３００が直接接続モードおよび外部接続モードのどちらで動作しているときにも行うことができる。
【００３７】
＜直接接続モードおよび外部接続モードにおけるデータアクセスの比較＞
図４は、直接接続モードにおけるデータアクセスの流れを示す図である。図５は、外部接続モードにおけるデータアクセスの流れを示す図である。図４および図５に示す例おいて、アプリケーション６１０は、ＯＳ６２０上で動作する。アプリケーション６１０による処理においてデータの読み出し要求や書き込み要求が行われると、ＯＳ６２０の制御により、第１記憶装置２００、第２記憶装置３００、第３記憶装置４００に対するアクセスが行われる。
【００３８】
直接接続モードでは、第２記憶装置３００は、メモリ・インターフェイスに接続される。そして、アプリケーション６１０は、第２記憶装置３００に格納されているデータに対して直接アクセスすることができる。また、図４に示すように、直接接続モードにおいて、第２記憶装置３００に格納されているデータは、ＯＳ６２０に設けられた直接接続モードでのアクセス制御専用のデバイス・ドライバである仮想ストレージ・ドライバ６２１を介して管理される。また、第１記憶装置２００および第３記憶装置４００は、仮想ストレージ・ドライバ６２１および一般のメモリ・デバイス制御用のデバイス・ドライバである書き込み制御ドライバ６２２により制御される。
【００３９】
図４に示す構成において、アプリケーション６１０から第２記憶装置３００へのアクセス要求は、仮想ストレージ・ドライバ６２１で解釈される。そして、アクセス対象に該当するデータの第２記憶装置３００における物理アドレスが仮想アドレスに変換されてアプリケーション６１０に返される。これ以降、アプリケーション６１０は、得られた仮想アドレスで指定されるメモリ領域を直接読み出すことで、第２記憶装置３００に格納されているデータに対して、主記憶装置からの読み出しの形式で直接的にアクセスする。
【００４０】
アプリケーション６１０から第２記憶装置３００へのアクセス要求がデータの書き込み要求であった場合は、仮想ストレージ・ドライバ６２１および書き込み制御ドライバ６２２の制御により、書き込みデータが一旦、第１記憶装置２００にバッファされた後に、第２記憶装置３００ではなく、第３記憶装置４００に、第２記憶装置３００に対する変更履歴として保存される。
【００４１】
外部接続モードでは、第２記憶装置３００は、Ｉ／Ｏインターフェイスに接続され、ＯＳ６２０において通常のＳＳＤ等と同様の外部記憶装置として認識される。したがって、図５に示すように、ストレージ・ドライバ６２３によって第１記憶装置２００、第２記憶装置３００および第３記憶装置４００が制御される。このため、図４に示した直接接続モードにおける仮想ストレージ・ドライバ６２１のような専用のデバイス・ドライバは不要である。
【００４２】
図５に示す構成において、アプリケーション６１０から第２記憶装置３００へのアクセス要求があった場合、第２記憶装置３００から読み出されるデータは、ストレージ・ドライバ６２３の制御により、まず第１記憶装置２００に転送された後に読み込まれる。また、第２記憶装置３００へ書き込まれるデータは、ストレージ・ドライバ６２３の制御により、まず第１記憶装置２００にバッファされた後に第２記憶装置３００へ転送される。
【００４３】
＜動作モードの切り替え＞
図６は、本実施形態による第２記憶装置３００の動作モードの切り替え方法を説明するフローチャートである。本実施形態では、第２記憶装置３００の動作モードによって、ＯＳが第２記憶装置３００を主記憶装置として認識（アドレス空間に配置）するか、外部記憶装置として認識するかが異なる。そのため、動作モードの切り替えは、ＯＳを再起動することで行われる。
【００４４】
第２記憶装置３００の動作モードを切り替えるための具体的手法としては、例えば、ＯＳレベルで起動オプションを変更し、ＯＳの再起動時に反映させることが考えられる。また、ＢＩＯＳ（Basic Input Output System）レベルで認識するデバイスの設定を変更し、ＯＳの再起動時に反映させるようにしても良い。以下の説明では、ＯＳレベルでの起動オプションの変更により第２記憶装置３００の動作モードを切り替える場合を例として、ＯＳの起動時の動作を説明する。
【００４５】
図６に示す例において、ＯＳの起動が開始されると（ステップ６０１）、ＯＳの起動オプションの設定に基づき、第２記憶装置３００の動作モードが決定される（ステップ６０２）。第２記憶装置３００が直接接続モードに設定される場合（ステップ６０３でＹｅｓ）、ＯＳは、第２記憶装置３００を認識する（ステップ６０４）。なお、ＢＩＯＳレベルで第２記憶装置３００の認識設定を変更する場合は、ＯＳの起動時にＢＩＯＳの設定に基づき動作モードが決定され、直接接続モードであれば、ＢＩＯＳおよびＯＳが第２記憶装置３００を認識することになる。
【００４６】
次に、ＯＳは、デバイス・ドライバ（図４に示した例では仮想ストレージ・ドライバ６２１）により、ステップ６０４で認識した第２記憶装置３００を仮想ストレージとしてマウントする（ステップ６０５）。この後、ＯＳの起動が完了し（ステップ６０６）、第２記憶装置３００が主記憶装置による仮想ストレージとして使用可能となる。
【００４７】
一方、ＯＳの起動に際して第２記憶装置３００が外部接続モードに設定される場合（ステップ６０３でＮｏ）、ＯＳは、第２記憶装置３００を認識しないで起動処理を続行する（ステップ６０７）。なお、ＢＩＯＳレベルで第２記憶装置３００の認識設定を変更する場合は、ＯＳの起動時にＢＩＯＳの設定に基づき動作モードが決定され、外部接続モードであれば、ＢＩＯＳおよびＯＳにおいて第２記憶装置３００が認識されないことになる。
【００４８】
次に、ＯＳは、デバイス・ドライバ（図５に示した例ではストレージ・ドライバ６２３）により、中継コントローラ５００を経由して、第２記憶装置３００を外部記憶装置としてマウントする（ステップ６０８）。この後、ＯＳの起動が完了し（ステップ６０６）、第２記憶装置３００が外部記憶装置として使用可能となる。
【００４９】
なお、第２記憶装置３００がデータの書き込み可能な外部接続モードで動作するようにＯＳの再起動が行われた場合、第２記憶装置３００が直接接続モードで動作している際に行われたデータの書き込み（更新）の内容を第２記憶装置３００に反映させるために、ＯＳの起動完了後、直ちに第３記憶装置４００に保存されている内容にしたがって、第２記憶装置３００の記憶内容が更新される。
【００５０】
＜適用例＞
本実施形態は、第２記憶装置３００を直接接続モードで動作させた場合、データの読み出しに関しては、主記憶装置として扱われる第２記憶装置３００から直接データを読み出すことができる。このため、第２記憶装置３００をＳＳＤ等の外部記憶装置として扱う場合と比較して、高速（低レイテンシ、高バンド幅）にアクセスすることができる。
【００５１】
これに対し、データの書き込みに関しては、第２記憶装置３００に直接データを書き込まず、外部記憶装置である第３記憶装置４００に対して行う。第３記憶装置４００に書き込まれたデータは、動作モードが切り替えられることにより第２記憶装置３００に反映されるまでは、第３記憶装置４００から読み出すことができるが、このデータの書き込みおよび読み出しは、外部記憶装置である第３記憶装置４００を対象としているので、第２記憶装置３００から直接データを読み出す場合と比較して遅くなる。
【００５２】
したがって、本実施形態のメモリ・システムを備えたコンピュータ・システムは、通常の動作において、第２記憶装置３００へのアクセスの種類として、データの書き込みよりもデータの読み出しの方が大幅に多いようなシステムや、扱うデータの更新頻度が少ないようなシステムに用いることが好適である。インターネット等のネットワーク上に設けられたサーバの多くは、新たに追加されるデータよりも既に保存されているデータの方が多く、既存のデータを読み出すためにアクセスされることが多い。そして、既存のデータが更新されることも少ない。特に、掲示板のような時系列データを扱うサービスを行うサーバや、辞書・辞典などのサーバではそのような傾向が強い。したがって、この種のサーバに対して、本実施形態のメモリ・システムを備えたコンピュータ・システムを用いることができる。
【００５３】
また、直接接続モードの第２記憶装置３００からは直接データを読み出すことができ、第１記憶装置２００のような主記憶装置に読み出し対象のデータをコピーする必要がないことを考慮すると、上記のようなシステムであって、扱うデータのサイズが大きい場合には、さらに好適である。
【００５４】
図７は、本実施形態によるメモリ・システムを備えたコンピュータ・システムの応用例を示す図である。図７に示すシステムにおいて、第１種ノード７１０および第２種ノード７２０は、本実施形態のメモリ・システムを備えたコンピュータ・システムである。すなわち、図７に示すシステムは、本実施形態のメモリ・システムを備えたコンピュータ・システムを複数台備えて構成される。
【００５５】
第１種ノード７１０は、第２記憶装置３００が直接接続モードに設定されているノードである。第２種ノード７２０は、第２記憶装置３００が外部接続モードに設定されているノードである。したがって、各ノードは、第２記憶装置３００の動作モードが切り替わると、第１種ノード７１０から第２種ノード７２０へ、または第２種ノード７２０から第１種ノード７１０へ切り替わる。
【００５６】
図７に示すシステムにおいて、データ入力は、第２記憶装置３００が外部接続モードで動作している第２種ノード７２０に対して行われる。入力されたデータが一定量に達した段階で、そのノードは、第１種ノード７１０に変更される。第２記憶装置３００に格納されているデータへのアクセスは、第１種ノード７１０に対して行われる。
【００５７】
各ノードは、第１種ノード７１０として一定期間運用された後、第２記憶装置３００に格納されているデータをバックアップ用記憶装置７３０に移動させ、第２種ノード７２０に変更される。バックアップ用記憶装置７３０としては、ＳＳＤやＨＤＤ等の大容量の外部記憶装置を用いることができる。バックアップ用記憶装置７３０からは、バックアップされているデータを読み出すことができる。
【００５８】
以上のように構成されたシステムによれば、比較的新しい（バックアップされる前の）データは、第１種ノード７１０から読み出されるため、高速なデータ・アクセスを提供することができる。第１種ノード７１０の第２記憶装置３００に格納されていない古い（バックアップされた後の）データは、バックアップ用記憶装置７３０に保存されているので、第１種ノード７１０ほど高速ではないが、アクセスすることが可能である。
【００５９】
なお、図７に示すシステムは、データの書き込みは第２種ノード７２０として動作しているノードに対して行われ、第１種ノード７１０からはデータの読み出しのみが行われるため、各ノードに第３記憶装置４００を設ける必要はない。また、ここでは、各ノードを本実施形態のメモリ・システムを備えたコンピュータ・システムである構成例について説明した。これに対し、第２記憶装置３００をＤＩＭＭのメモリ・インターフェイスに接続している場合、コンピュータ・システムのハードウェアがＤＩＭＭのプラグ・アンド・プレイに対応していれば、ＤＩＭＭスロット単位で第２記憶装置３００の動作モードを切り替えることが可能である。したがって、複数の第２記憶装置３００を第１種ノード７１０および第２種ノード７２０に割り当てて図７に示すシステムを構成しても良い。この場合、バックアップ用記憶装置７３０としては、第３記憶装置４００を用いても良いし、他の外部記憶装置を用いても良い。
【符号の説明】
【００６０】
１００…ＣＰＵ、１１０…メモリ・コントローラ、１１１…ＤＩＭＭスロット、１２０…ＰＣＩｅコントローラ、１２１…ＰＣＩｅスロット、１２２…ＳＡＴＡインターフェイス、２００…第１記憶装置、３００…第２記憶装置、３０１…コネクタ、３１０…フラッシュ・メモリ、３２０…制御装置、３３０…バッファ、４００…第３記憶装置、５００…中継コントローラ、５０１…コネクタ、５１０…制御部、６１０…アプリケーション、６２０…ＯＳ、６２１…仮想ストレージ・ドライバ、６２２…書き込み制御ドライバ、６２３…ストレージ・ドライバ
【図１】
2015114932.tif 000003
【図２】
2015114932.tif 000004
【図３】
2015114932.tif 000005
【図４】
2015114932.tif 000006
【図５】
2015114932.tif 000007
【図６】
2015114932.tif 000008
【図７】
2015114932.tif 000009