(57)【特許請求の範囲】
【請求項１】
ワード単位のアドレスによってアクセスされるランダムアクセスメモリデバイスと、
セクタ単位のアドレスによってアクセスされるストレージデバイスと、
バスに接続され、当該バスを介して提供されるセクタアドレスによって指定された上記ストレージデバイス上に記憶されたデータにアクセスを行うための第１のインターフェースと、
上記バスに接続され、上記ランダムアクセスメモリデバイス上のデータに上記バスを介して指定されるワードアドレスによって直接アクセスするための第２のインターフェースと、
上記バスを介し、上記第１のインターフェースおよび上記第２のインターフェースを介して指定されるアドレスに応じて、上記ランダムアクセスメモリデバイスと上記ストレージデバイスへのアクセスを制御するストレージコントローラと、を有し、
上記ストレージコントローラは、
上記第１のインターフェースを介して提供されるセクタアドレスによって指定された上記ストレージデバイス上に記憶されたデータにアクセスを行うための第１のインターフェース機能と、
上記ランダムアクセスメモリデバイス上のデータに上記第２のインターフェースを介して指定されるワードアドレスによって直接アクセスするための第２のインターフェース機能と、
上記第１のインターフェース機能によるアクセスに対して、上記ランダムアクセスメモリデバイスを第１ディスクキャッシュとして使用し、かつ、当該ランダムアクセスメモリデバイスに保存するデータを決定する機能と、
上記セクタアドレスによって指定されたデータを、レジスタアクセスの繰り返しによって転送する機能と、
上記セクタアドレスによって指定されたデータを、バスマスタ機能によって連続するワードサイズのデータとして上記第１のインターフェースおよび上記バスを通して転送する機能と、
第２ディスクキャッシュとして、上記バスを介して上記ランダムアクセスメモリデバイス上に保持するデータが指定されるキャッシュ指定機能と、を含み、
上記第２ディスクキャッシュとして保持されたデータは、第１ディスクキャッシュとしても使用可能である
ストレージ装置。
【請求項２】
上記ストレージコントローラは、
第２ディスクキャッシュとして、上記バスを介して上記ランダムアクセスメモリデバイス上に保持するデータが指定されるキャッシュ指定機能と、
キャッシュ指定を解除するキャッシュ解除機能と、を含む
請求項１記載のストレージ装置。
【請求項３】
上記キャッシュ指定機能は、
上記第１のインターフェースを介して上記ストレージコントローラに対して指示され、
上記指示には、上記ストレージデバイスのアドレスとデータサイズに関する情報が含まれ、
上記ストレージコントローラは、
上記ランダムアクセスメモリデバイス上の未使用領域から、指定されたデータサイズの領域を確保し、上記ストレージデバイスから指定されたアドレスのデータを先に確保した領域に書き込む処理を行う
請求項２記載のストレージ装置。
【請求項４】
上記キャッシュ解除機能は、
上記第１のインターフェースを介して上記ストレージコントローラに対して指示され、
上記指示には、上記ストレージデバイスのアドレスに関する情報が含まれ、
上記ストレージコントローラは、
上記ランダムアクセスメモリデバイス上の指定されたデータの領域について、解除指示以降はそのデータを当該ランダムアクセスメモリデバイス上に保持するか否かを決定する
請求項２または３記載のストレージ装置。
【請求項５】
上記ストレージコントローラは、
上記第２ディスクキャッシュとして指定されたデータがすでに第１ディスクキャッシュとして上記ランダムアクセスメモリデバイス上に存在した場合には、第２ディスクキャッシュのデータに切り換える機能を有する
請求項２から４のいずれか一に記載のストレージ装置。
【請求項６】
上記ストレージコントローラは、
第１ディスクキャッシュとして上記ランダムアクセスメモリデバイス上に保持されたデータを、自身の判断によって上記ストレージデバイスに書き戻す処理を行い、
第２ディスクキャッシュとして上記ランダムアクセスメモリデバイス上に保持されたデータは、上記解除指示を受けるまで保持し続ける
請求項２から５のいずれか一に記載のストレージ装置。
【請求項７】
上記ストレージコントローラは、
上記ランダムアクセスメモリデバイスに対して第１ディスクキャッシュとしてアクセスを伝えるための信号と、第２ディスクキャッシュとして上記バスから直接アクセスを伝えるための信号とを調停して切り替えるためのアービタを有する
請求項２から６のいずれか一に記載のストレージ装置。
【請求項８】
上記ストレージコントローラは、
キャッシュ管理情報を不揮発性メモリに保持する機能と、
上記不揮発性メモリに保持された指示内容を、起動時に再現する機能と、を有する
請求項１から７のいずれか一に記載のストレージ装置。
【請求項９】
上記ランダムアクセスメモリデバイスと上記ストレージデバイスは、当該ランダムアクセスメモリデバイスと当該ストレージデバイスの機能を併せ持つ不揮発性ランダムアクセスメモリにより形成される
請求項１から８のいずれか一に記載のストレージ装置。
【請求項１０】
上記メモリコントローラは、
上記第２のインターフェースを介して上記不揮発性ランダムアクセスメモリに直接アクセスするためのパスを有する
請求項９記載のストレージ装置。
【請求項１１】
ホストと、
メインメモリモジュールと、
上記ホストがアクセスするストレージ装置と、
上記ホストと上記メインメモリモジュールと上記ストレージ装置を接続するシステムバスと、を有し、
上記ストレージ装置は、
ワード単位のアドレスによってアクセスされるランダムアクセスメモリデバイスと、
セクタ単位のアドレスによってアクセスされるストレージデバイスと、
バスに接続され、当該バスを介して提供されるセクタアドレスによって指定された上記ストレージデバイス上に記憶されたデータにアクセスを行うための第１のインターフェースと、
上記バスに接続され、上記ランダムアクセスメモリデバイス上のデータに上記バスを介して指定されるワードアドレスによって直接アクセスするための第２のインターフェースと、
上記バスを介し、上記第１のインターフェースおよび上記第２のインターフェースを介して指定されるアドレスに応じて、上記ランダムアクセスメモリデバイスと上記ストレージデバイスへのアクセスを制御するストレージコントローラと、を有し、
上記ストレージコントローラは、
上記第１のインターフェースを介して提供されるセクタアドレスによって指定された上記ストレージデバイス上に記憶されたデータにアクセスを行うための第１のインターフェース機能と、
上記ランダムアクセスメモリデバイス上のデータに上記第２のインターフェースを介して指定されるワードアドレスによって直接アクセスするための第２のインターフェース機能と、
上記第１のインターフェース機能によるアクセスに対して、上記ランダムアクセスメモリデバイスを第１ディスクキャッシュとして使用し、かつ、当該ランダムアクセスメモリデバイスに保存するデータを決定する機能と、
上記セクタアドレスによって指定されたデータを、レジスタアクセスの繰り返しによって転送する機能と、
上記セクタアドレスによって指定されたデータを、バスマスタ機能によって連続するワードサイズのデータとして上記第１のインターフェースおよび上記バスを通して転送する機能と、
第２ディスクキャッシュとして、上記バスを介して上記ランダムアクセスメモリデバイス上に保持するデータが指定されるキャッシュ指定機能と、を含み、
上記第２ディスクキャッシュとして保持されたデータは、第１ディスクキャッシュとしても使用可能である
メモリシステム。
【請求項１２】
上記ストレージコントローラは、
第２ディスクキャッシュとして、上記ホストが上記ランダムアクセスメモリデバイス上に保持するデータを指定するキャッシュ指定機能と、
キャッシュ指定を解除するキャッシュ解除機能と、を含む
請求項１１記載のメモリシステム。
【請求項１３】
上記キャッシュ指定機能は、
上記第１のインターフェースをを介して上記ストレージコントローラに対して指示され、
上記指示には、上記ストレージデバイスのアドレスとデータサイズに関する情報が含まれ、
上記ストレージコントローラは、
上記ランダムアクセスメモリデバイス上の未使用領域から、指定されたデータサイズの領域を確保し、上記ストレージデバイスから指定されたアドレスのデータを先に確保した領域に書き込む処理を行う
請求項１２記載のメモリシステム。
【請求項１４】
上記キャッシュ解除機能は、
上記第１のインターフェースを介して上記ストレージコントローラに対して指示され、
上記指示には、上記ストレージデバイスのアドレスに関する情報が含まれ、
上記ストレージコントローラは、
上記ランダムアクセスメモリデバイス上の指定されたデータの領域について、解除指示以降はそのデータを当該ランダムアクセスメモリデバイス上に保持するか否かを決定する
請求項１２または１３記載のメモリシステム。
【請求項１５】
上記ストレージコントローラは、
上記第２ディスクキャッシュとして指定されたデータがすでに第１ディスクキャッシュとして上記ランダムアクセスメモリデバイス上に存在した場合には、第２ディスクキャッシュのデータに切り換える機能を有する
請求項１２から１４のいずれか一に記載のメモリシステム。
【請求項１６】
上記ストレージコントローラは、
第１ディスクキャッシュとして上記ランダムアクセスメモリデバイス上に保持されたデータを、自身の判断によって上記ストレージデバイスに書き戻す処理を行い、
第２ディスクキャッシュとして上記ランダムアクセスメモリデバイス上に保持されたデータは、上記ホストから解除指示を受けるまで保持し続ける
請求項１２から１５のいずれか一に記載のメモリシステム。
【請求項１７】
上記ストレージコントローラは、
上記ランダムアクセスメモリデバイスに対して第１ディスクキャッシュとしてアクセスを伝えるための信号と、第２ディスクキャッシュとして上記バスから直接アクセスを伝えるための信号とを調停して切り替えるためのアービタを有する
請求項１２から１６のいずれか一に記載のメモリシステム。
【請求項１８】
上記ストレージコントローラは、
キャッシュ管理情報を不揮発性メモリに保持する機能と、
上記不揮発性メモリに保持された指示内容を、起動時に再現する機能と、を有する
請求項１１から１７のいずれか一に記載のメモリシステム。
【請求項１９】
上記ランダムアクセスメモリデバイスと上記ストレージデバイスは、当該ランダムアクセスメモリデバイスと当該ストレージデバイスの機能を併せ持つ不揮発性ランダムアクセスメモリにより形成される
請求項１１から１８のいずれか一に記載のメモリシステム。
【請求項２０】
上記メモリコントローラは、
上記第２のインターフェースを介して上記不揮発性ランダムアクセスメモリに直接アクセスするためのパスを有する
請求項１９記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性記憶デバイスとランダムアクセスメモリを有するストレージ装置およびメモリシステムに関するものである。
【背景技術】
【０００２】
従来からストレージとメモリの速度差は非常に大きく、近年メモリの高速化が進んだことによりさらにその差が開いており、システム全体のパフォーマンスを改善する上で大きな課題となっている。
そこで、その差を改善するために、メモリがディスクキャッシュとして使用されている。
【０００３】
最近、アクセスされたセクタデータをメモリ上に残しておき、次にアクセス要求のあったときにキャッシュ内にその情報があれば、ストレージにアクセスせずに、メモリから読み込むことができる。
これは同じセクタデータを何度も読み出したり、小さなデータをたくさん書き込んだりするときに大きな効果を示している。
【０００４】
実際にＨＤＤやＳＳＤを代表とするストレージ装置は、ランダムアクセスメモリデバイス（ＲＡＭＤ）を内蔵し第１ディスクキャッシュとして使用している。
【０００５】
また、従来システムでは、メインメモリの一部を第２ディスクキャッシュとして使用している。この第２ディスクキャッシュは第１ディスクキャッシュと異なり、ＣＰＵが直接管理するディスクキャッシュである。
ただし、第２ディスクキャッシュに存在するデータはストレージ装置から第１キャッシュを経由して読み込んだデータということになる。
【０００６】
キャッシュメモリを有効に活用する技術が特許文献１や２に開示されている。
【０００７】
特許文献１に開示されたディスクキャッシュ装置は、主記憶装置（メインメモリ）上に制御用データのためのソフトキャッシュ領域を有する。
そして、ディスクコントローラはデータ判定手段を持ち、制御用データと判断したデータはキャッシュメモリ上に保持しないことでキャッシュ使用率を改善する。
この技術では、第１ディスクキャッシュと第２ディスクキャッシュのデータの重複を防ぐことができる。
【０００８】
特許文献２に開示されたストレージ装置は、ホストからキャッシュ固定化のファイル領域を指定するための領域通知命令を有し、リード（Read）コマンド実行中にこの領域通知命令を送信する。そして、ストレージ装置は、再度領域通知命令を送るまでの間転送されたデータをキャッシュメモリ上に固定化する。
この技術では、ファイルの特定領域のキャッシュメモリへの固定化が容易に行うことができる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開1994-161897号公報
【特許文献２】特開2008-026970号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかし、このＲＡＭＤ上のデータは発生したアクセス要求に基づきストレージ内部で管理され、ホストから直接操作することはできない。
【００１１】
また、第２ディスクキャッシュに存在するデータはストレージ装置から第１キャッシュを経由して読み込んだデータということになる。
つまり、２つのディスクキャッシュに同一のデータが存在する状態が絶えず発生する。  このように、２つのディスクキャッシュが独立に制御されている。
このために、第２ディスクキャッシュ上にロードされたデータは、第１ディスクキャッシュにも同時に存在することになり、メモリの使用効率を低下させ、その結果パフォーマンス改善効果も低下させている。
【００１２】
また、その一方で第２ディスクキャッシュがメインメモリを消費することによりワークメモリが小さくなる。
システムのオペレーティングシステム（ＯＳ）はワークメモリが足りない場合、スワップ動作によってストレージアクセスを発生させるため、システム動作のパフォーマンスを低下させる要因となっていた。
【００１３】
また、ストレージから起動するシステムにおいては、ＣＰＵモジュールの初期化後にストレージへのアクセスを開始し、たくさんのデータアクセスがストレージに集中する。さらに起動時にしかアクセスしないデータには、ディスクキャッシュの効果が得られない欠点があった。
【００１４】
特許文献１に開示された技術では、保持しないデータを指定するため、あらかじめキャッシュメモリにデータを先読みしておくことができず、起動時にも先読みによる高速化を図ることができない。
この技術では、コントローラはキャッシュメモリにアクセス可能なメモリインターフェースを持たない。そのため、データ、コードへのアクセス前に必ずデータ転送が必要となり、オーバーヘッドとなる。
【００１５】
特許文献２に開示された技術では、バスマスタ転送の場合、データ転送の進捗をＣＰＵは把握できず、領域通知命令を送ることが難しい。
またこの技術では、データ転送中にキャッシュメモリに固定するデータの指定するための領域通知命令を送る。このため、前の処理が実行中でまだデータ転送の開始が不可能な場合に、次のデータをキャッシュ上に準備することができず、先読みによる高速化を図ることができない。
また、コントローラはキャッシュメモリにアクセス可能なメモリインターフェースを持たない。そのため、データ、コードへのアクセス前に必ずデータ転送が必要となり、オーバーヘッドとなる。
【００１６】
本発明は、メインメモリ上に転送するデータ、コードを不要とし、システムの起動時間やコードの起動までの時間を短縮することができ、ひいてはシステム全体の処理の高速化を図ることが可能なストレージ装置およびメモリシステムを提供することにある。
【課題を解決するための手段】
【００１７】
本発明の第１の観点のストレージ装置は、ワード単位のアドレスによってアクセスされるランダムアクセスメモリデバイスと、セクタ単位のアドレスによってアクセスされるストレージデバイスと、バスに接続され、当該バスを介して提供されるセクタアドレスによって指定された上記ストレージデバイス上に記憶されたデータにアクセスを行うための第１のインターフェースと、上記バスに接続され、上記ランダムアクセスメモリデバイス上のデータに上記バスを介して指定されるワードアドレスによって直接アクセスするための第２のインターフェースと、上記バスを介し、上記第１のインターフェースおよび上記第２のインターフェースを介して指定されるアドレスに応じて、上記ランダムアクセスメモリデバイスと上記ストレージデバイスへのアクセスを制御するストレージコントローラと、を有し、上記ストレージコントローラは、上記第１のインターフェースを介して提供されるセクタアドレスによって指定された上記ストレージデバイス上に記憶されたデータにアクセスを行うための第１のインターフェース機能と、上記ランダムアクセスメモリデバイス上のデータに上記第２のインターフェースを介して指定されるワードアドレスによって直接アクセスするための第２のインターフェース機能と、上記第１のインターフェース機能によるアクセスに対して、上記ランダムアクセスメモリデバイスを第１ディスクキャッシュとして使用し、かつ、当該ランダムアクセスメモリデバイスに保存するデータを決定する機能と、上記セクタアドレスによって指定されたデータを、レジスタアクセスの繰り返しによって転送する機能と、上記セクタアドレスによって指定されたデータを、バスマスタ機能によって連続するワードサイズのデータとして上記第１のインターフェースおよび上記バスを通して転送する機能と、第２ディスクキャッシュとして、上記バスを介して上記ランダムアクセスメモリデバイス上に保持するデータが指定されるキャッシュ指定機能と、を含み、上記第２ディスクキャッシュとして保持されたデータは、第１ディスクキャッシュとしても使用可能である。
【００１８】
本発明の第２の観点のメモリシステムは、ホストと、メインメモリモジュールと、上記ホストがアクセスするストレージ装置と、上記ホストと上記メインメモリモジュールと上記ストレージ装置を接続するシステムバスと、を有し、上記ストレージ装置は、ワード単位のアドレスによってアクセスされるランダムアクセスメモリデバイスと、セクタ単位のアドレスによってアクセスされるストレージデバイスと、バスに接続され、当該バスを介して提供されるセクタアドレスによって指定された上記ストレージデバイス上に記憶されたデータにアクセスを行うための第１のインターフェースと、上記バスに接続され、上記ランダムアクセスメモリデバイス上のデータに上記バスを介して指定されるワードアドレスによって直接アクセスするための第２のインターフェースと、上記バスを介し、上記第１のインターフェースおよび上記第２のインターフェースを介して指定されるアドレスに応じて、上記ランダムアクセスメモリデバイスと上記ストレージデバイスへのアクセスを制御するストレージコントローラと、を有し、上記ストレージコントローラは、上記第１のインターフェースを介して提供されるセクタアドレスによって指定された上記ストレージデバイス上に記憶されたデータにアクセスを行うための第１のインターフェース機能と、上記ランダムアクセスメモリデバイス上のデータに上記第２のインターフェースを介して指定されるワードアドレスによって直接アクセスするための第２のインターフェース機能と、上記第１のインターフェース機能によるアクセスに対して、上記ランダムアクセスメモリデバイスを第１ディスクキャッシュとして使用し、かつ、当該ランダムアクセスメモリデバイスに保存するデータを決定する機能と、上記セクタアドレスによって指定されたデータを、レジスタアクセスの繰り返しによって転送する機能と、上記セクタアドレスによって指定されたデータを、バスマスタ機能によって連続するワードサイズのデータとして上記第１のインターフェースおよび上記バスを通して転送する機能と、第２ディスクキャッシュとして、上記バスを介して上記ランダムアクセスメモリデバイス上に保持するデータが指定されるキャッシュ指定機能と、を含み、上記第２ディスクキャッシュとして保持されたデータは、第１ディスクキャッシュとしても使用可能である。
【発明の効果】
【００１９】
本発明によれば、メインメモリ上に転送するデータ、コードを不要とし、システムの起動時間やコードの起動までに時間を短縮することができ、ひいてはシステム全体の処理の高速化を図ることができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の第１の実施形態に係るストレージ装置を搭載したメモリシステムの構成例を示す図である。
【図２】比較例としてのメモリシステムのブロック図である。
【図３】比較例におけるＳＴＧＣの基本的な内部構成を示す図である。
【図４】本発明の実施形態に係るＳＴＧＣの基本的な内部構成を示す図である。
【図５】本実施形態において、ＣＰＵからディスクキャッシュへ直接アクセス可能なＳＴＧＣの第１の構成例を示す図である。
【図６】本実施形態において、ＣＰＵからディスクキャッシュへ直接アクセス可能なＳＴＧＣの第２の構成例を示す図である。
【図７】本実施形態と比較例のシステムバスから見たメモリマップを示す図である。
【図８】本実施形態に係るＳＴＧＣを制御する制御レジスタＣＴＲＬ＿ＲＥＧの構成例を示す図である。
【図９】制御レジスタにおけるエラーレジスタの詳細を示す図である。
【図１０】制御レジスタにおけるステータスレジスタの詳細を示す図である。
【図１１】ＳＴＧＣを制御するバスマスタレジスタＢＭ＿ＲＥＧの構成例を示す図である。
【図１２】バスマスタレジスタにおけるバスマスタコマンドレジスタの詳細を示す図である。
【図１３】バスマスタレジスタにおけるバスマスタステータスレジスタの詳細を示す図である。
【図１４】ＰＲＤテーブルの詳細を示す図である。
【図１５】本実施形態のＳＴＧＣ（ストレージコントローラを）システムバスから制御した場合のシーケンスの例として、リードコマンドを実行した場合のフローチャートを示す図である。
【図１６】図１５のフローチャートに対応してリードコマンドを実行した場合に、各レジスタに設定される値の例を示す図である。
【図１７】本実施形態のＳＴＧＣ（ストレージコントローラ）をシステムバスから制御した場合のシーケンスの例として、ライト（Write）コマンドを実行した場合のフローチャートを示す図である。
【図１８】図１７のフローチャートに対応してライトコマンドを実行した場合に、各レジスタに設定される値の例を示す図である。
【図１９】本実施形態のＳＴＧＣ（ストレージコントローラ）をシステムバスから制御した場合のシーケンスの例として、セットキャッシュ(Set Cache)コマンドを実行した場合のフローチャートを示す図である。
【図２０】図１９のフローチャートに対応してセットキャッシュコマンドを実行した場合に、各レジスタに設定される値の例を示す図である。
【図２１】本実施形態のＳＴＧＣ（ストレージコントローラ）をシステムバスから制御した場合のシーケンスの例として、リリースキャッシュ(Release Cache)コマンドを実行した場合のフローチャートを示す図である。
【図２２】図２１のフローチャートに対応してリリースキャッシュ(Release Cache)コマンドを実行した場合に、各レジスタに設定される値の例を示す図である。
【図２３】図１５〜図２２のような機能を実現するために必要となるディスクキャッシュ領域の管理情報の例について説明するための図である。
【図２４】リードコマンドのＳＴＧＣ内部動作を記述したフローチャートを示す図である。
【図２５】ライトコマンドのＳＴＧＣ内部動作を記述したフローチャートを示す図である。
【図２６】キャッシュアウト(Cache Out)処理のＳＴＧＣ内部動作を記述したフローチャートを示す図である。
【図２７】セット(Set Cache)コマンドのＳＴＧＣ内部動作を記述したフローチャートを示す図である。
【図２８】リリースキャッシュ(Release Cache)コマンドのＳＴＧＣ内部動作を記述したフローチャートを示す図である。
【図２９】ストレージ上に保存されたコードをメモリ上に読み込みＣＰＵから実行するまでの時間を比較することで、本発明の実施形態の効果を記述して示す図である、
【図３０】ストレージモジュールのリセットが解除され、起動する際にＳＴＧＣで行われる動作を記述したフローチャートを示す図である。
【図３１】本実施形態のキャッシュ管理情報の初期値を自動的にロードする機能の効果を示す図である。
【図３２】本発明の第２の実施形態に係るストレージ装置を搭載したメモリシステムの構成例を示す図である。
【発明を実施するための形態】
【００２１】
以下、本発明の実施形態を図面に関連付けて説明する。
なお、説明は以下の順序で行う。
１．第１の実施形態
２．第２の実施形態
【００２２】
＜１．第１の実施形態＞
図１は、本発明の第１の実施形態に係るストレージ装置を搭載したメモリシステムの構成例を示す図である。
【００２３】
本第１の実施形態に係るメモリシステム１０は、ストレージモジュール２０、ホストとしてのＣＰＵモジュール（ＣＰＵ）３０、メインメモリモジュール（ＭＭＭ）４０、システムバス５０、およびＩＯモジュール６０，７０を有する。
ストレージモジュール２０、ＣＰＵ３０、ＭＭＭ４０、およびＩＯモジュール６０，７０はシステムバス５０により接続される。
【００２４】
本第１の実施形に係るストレージモジュール（ＳＴＧＭ）２０は、ストレージコントローラ（ＳＴＧＣ）２１、ランダムアクセスメモリデバイス（ＲＡＭＤ）２２、およびストレージデバイス（ＳＴＧＤ）２３を含んで構成されている。
ＲＡＭＤ２２はワード単位のアドレスによってアクセスされ、ＳＴＧＤ２３はセクタ単位のアドレスによってアクセスされる。
【００２５】
ＳＴＧＣ２１は、ＣＰＵ３０からアクセス可能なバスに接続する２つのインターフェース機能を有する。
ＳＴＧＣ２１は、第１のインターフェース機能としてのストレージインターフェース（ＳＴＧＣ-ＩＦ）２４、および第２のインターフェース機能としてのメモリインターフェース（ＭＥＭ-ＩＦ）２５を有する。
そして、ＳＴＧＭ２０は、ストレージインターフェース（ＳＴＧＣ-ＩＦ）２４とメモリインターフェース（ＭＥＭ-ＩＦ）２５によりシステムバス５０と接続される。
【００２６】
ＳＴＧＣ-ＩＦ２４は、ＣＰＵ３０からの指示に従って、セクタアドレスによって指定されたＳＴＧＤ２３上に記憶されたデータにアクセスを行うためのインターフェースを提供する。
ここで、セクタアドレスによって指定されたデータは、ＳＴＧＣ２１のレジスタアクセスの繰り返しによって転送される他、バスマスタ機能によって、ＭＭＭ４０との間で、連続するワードサイズのデータとして高速に転送される。
ＳＴＧＣ-ＩＦ２４からのアクセスに対して、ＳＴＧＣ２１はＲＡＭＤ２２を第１ディスクキャッシュとして使用し、ＲＡＭＤ２２上に保存するデータをＳＴＧＣ２１が決定する。
【００２７】
ＭＥＭ-ＩＦ２５は、ＲＡＭＤ２２上のデータにＣＰＵ３０がワードアドレスによって直接アクセスするためのインターフェースを提供する。
【００２８】
本実施形態のＳＴＧＣ２１は、第２ディスクキャッシュとして、ＣＰＵ３０がＲＡＭＤ２２上に保持するデータを指定するキャッシュ指定機能と、指定を解除するキャッシュ解除機能とを有する。
【００２９】
キャッシュ指定機能は、第１のインターフェースとしてのＳＴＧＣ‐ＩＦ２４を介してＳＴＧＣ２１に対して指示される。
指示には、ＳＴＧＤ２３のアドレスとデータサイズに関する情報が含まれる。
ＳＴＧＣ２１は、ＲＡＭＤ２２上の未使用領域から、指定されたデータサイズの領域を確保し、ＳＴＧＤ２３から指定されたアドレスのデータを先に確保した領域に書き込む処理を実施する。
【００３０】
キャッシュ解除機能は、第１のインターフェースとしてのＳＴＧＣ‐ＩＦ２４を介してＳＴＧＣ２１に対して指示される。
指示には、ＳＴＧＤ２３のアドレスに関する情報が含まれ、ＳＴＧＣ２１はＲＡＭＤ２２上の指定されたデータの領域について、解除指示以降はそのデータをＲＡＭＤ２２上に保持するかはＳＴＧＣ２１の判断で決定する。
【００３１】
本実施形態においては、第２ディスクキャッシュとして保持されたデータは、第１ディスクキャッシュとしても使用される。
ＳＴＧＣ２１は、第２ディスクキャッシュとして指定されたデータがすでに第１ディスクキャッシュとしてＲＡＭＤ２２上に存在した場合には、第２ディスクキャッシュのデータに切換える機能を有する。
ＳＴＧＣ２１は、第１ディスクキャッシュとしてＲＡＭＤ２２上に保持されたデータを、ＳＴＧＣ２１の判断によってＳＴＧＤ２３に書き戻す処理を行う。
ＳＴＧＣ２１は、第２ディスクキャッシュとしてＲＡＭＤ２２上に保持されたデータは、ＣＰＵ３０から解除指示を受けるまで保持し続ける。
【００３２】
ＳＴＧＣ２１は、ＲＡＭＤ２２に対して第１ディスクキャッシュとしてＳＴＧＣ２１がアクセスを伝えるための信号と、第２ディスクキャッシュとしてＣＰＵバスから直接アクセスを伝えるための信号とを切り替えるための後述する切替器（ＡＲＢＴ）を有する。
ＳＴＧＣ２１は、キャッシュ管理情報を不揮発性メモリに保持する機能と、その不揮発性メモリに保持された指示内容を、ＳＴＧＭ２０の起動時に再現する機能を有する。
なお、不揮発性メモリはＳＴＧＤ２３の一部であってもよい。
【００３３】
本実施形態において、メモリモジュールであるＳＴＧＤ２３とＲＡＭＤ２２をあわせたデバイスとして不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）を使用することも可能である。
この場合、ＭＥＭ-ＩＦ２５からＡＲＢＴを介して直接ＮＶＲＡＭにアクセスするパスを設けることで、ＳＴＧＣ２１内のデータ転送を不要としさらなる高速化が可能となる。
【００３４】
以下、本実施形態に係るメモリシステム１０について、ＳＴＧＭ２０の構成および機能を中心に、必要に応じて一般的なシステムと比較しつつ具体的に説明する。
なお、以下において、理解を容易にするために、比較例についても本実施形態の構成要素と同様の符号を付して説明する。
【００３５】
メモリシステム１０において、ＳＴＧＣ２１はＳＴＧＣ-ＩＦ２４を介してＣＰＵ３０から図示しないレジスタにアクセスされることによってストレージデバイスとして制御され、ＳＴＧＣ２１の持つバスマスタ機能によってデータ転送を行う。
ＳＴＧＤ２３は、不揮発性データ記憶領域として使用され、ＲＡＭＤ２２はＳＴＧＤ２３とＳＴＧＣ２１の間で入出力されるデータのキャッシュ領域として使用される。
ＭＥＭ‐ＩＦ２５は、ＣＰＵ３０からＲＡＭＤ２２をメモリとしてアクセスする機能を提供する。
本実施形態においては、キャッシュ領域に保持されたデータをメインメモリに転送することなく直接アクセスすることができる。
【００３６】
図２は、比較例としてのメモリシステムのブロック図である。
このメモリシステム１０Ａは、ＳＴＧＭ２０Ａがシステムバス５０ＡにＳＴＧＣ‐ＩＦ２４Ａにより接続されており、ＭＥＭ‐ＩＦの機能を有していない。
【００３７】
比較例のメモリシステム１０Ａでは、ストレージモジュール（ＳＴＧＭ）２０Ａ内に持つ第１ディスクキャッシュ２２１に加えて、メインメモリモジュール（ＭＭＭ）４０Ａ上に第２ディスクキャッシュ領域４１を確保し使用する。
第１ディスクキャッシュ領域２２１Ａは、ＳＴＧＭ２０Ａに対するアクセス情報とＳＴＧＤ２３Ａのアクセス性能を元にＳＴＧＣ２１Ａが制御するキャッシュ領域である。
これに対して、第２ディスクキャッシュ４１はＯＳやアプリケーションの要求に従ってＣＰＵ３０が管理するキャッシュ領域である。
【００３８】
本実施形態のＳＴＧＭ２０は、内蔵するディスクキャッシュ領域を、第１ディスクキャッシュ２２１と第２ディスクキャッシュ２２２の両方に使用することを特徴とする。
ディスクキャッシュ領域の管理はＳＴＧＣ２１が行うが、第２ディスクキャッシュ２２２の割当て要求時に、アドレス情報がＣＰＵ３０に対して出力されることで、ＣＰＵ３０はどのセクタがどのディスクキャッシュに存在するかを判断することができる。
不要になったディスクキャッシュを開放することもできる。
【００３９】
図３は、比較例におけるＳＴＧＣの基本的な内部構成を示す図である。
このＳＴＧＣ２１Ａは、システムバス５０Ａとのインターフェースを制御するストレージインターフェース制御部２１１Ａ、ＳＴＧＤ２３Ａを制御するストレージデバイス制御部２１２Ａ、およびＲＡＭＤ２２Ａを制御するＲＡＭデバイス制御部２１３Ａを有する。
そして、３つの制御部２１１Ａ，２１２Ａ，２１３Ａが１つの内部バスで接続されている。
【００４０】
［本ＳＴＧＣの基本的な内部構成］
図４は、本発明の実施形態に係るＳＴＧＣの基本的な内部構成を示す図である。
このＳＴＧＣ２１は、ＳＴＧＣ‐ＩＦ２４とシステムバス５０とインターフェースを制御するストレージインターフェース制御部２１１、ＳＴＧＤ２３を制御するストレージデバイス制御部２１２、およびＲＡＭＤを制御するＲＡＭデバイス制御部２１３を有する。
さらに、ＳＴＧＣ２１は、ＭＥＭ‐ＩＦ２５とシステムバス５０のインターフェースを制御するメモリインターフェース制御部２１４を有する。
本実施形態のＳＴＧＣ２１において、ＲＡＭデバイス制御部２１３は比較例のＳＴＧＣ２１Ａと同様の内部バスに加えて、メモリインターフェース制御部２１４と接続されている。
【００４１】
［ＣＰＵからＲＡＭＤアクセスの構成例］
図５は、本実施形態において、ＣＰＵからディスクキャッシュへ直接アクセス可能なＳＴＧＣの第１の構成例を示す図である。
図６は、本実施形態において、ＣＰＵからディスクキャッシュへ直接アクセス可能なＳＴＧＣの第２の構成例を示す図である。
【００４２】
図５の第１の構成例は、ＲＡＭＤ２２Ｂとして２つランダムアクセスポートＰＴ‐Ａ，ＰＴ‐Ｂを持ったメモリを搭載した場合である。
これに対応して、ＳＴＧＣ２１Ｂは、２つのＲＡＭデバイス制御部２１３−１，２１３−２を有する。
ＲＡＭデバイス制御部２１３‐１は、ＲＡＭＤ２２ＢのランダムアクセスポートＰＴ‐Ａと、ストレージインターフェース制御部２１１およびストレージデバイス制御部２１３との間に接続されている。
ＲＡＭデバイス制御部２１３‐２は、ＲＡＭＤ２２ＢのランダムアクセスポートＰＴ‐Ｂと、メモリインターフェース制御部２１４との間に接続されている。
【００４３】
図６の第２の構成例の場合、ＲＡＭデバイス制御部２１３の前段に２つのポートを含むアービタ（調停装置）２１５を有し、ＭＥＭ-ＩＦ２５経由のＣＰＵ３０によるアクセスと、ＳＴＧＣ２１Ｃ内のアクセスを調停する仕組みを持った場合の例である。
アービタ２１５は、ポートＰＴ‐Ａがストレージインターフェース制御部２１１およびストレージデバイス制御部２１２に接続され、ポートＰＴ‐Ｂがメモリインターフェース制御部２１４に接続されている。
２つのアクセスが競合した場合には、アービタ２１５は、ポートＰＴ−Ｂ側のＭＥＭ-ＩＦ２５経由のアクセスを優先し、ＣＰＵ３０の処理の遅延を防ぐ。
【００４４】
図７は、本実施形態と比較例のシステムバスから見たメモリマップを示す図である。
【００４５】
いずれもＳＴＧＣを制御するレジスタとしては、制御レジスタＣＴＲＬ＿ＲＥＧとバスマスタレジスタＢＭ＿ＲＥＧを有する。
本実施形態のメモリマップは、ＭＥＭ-ＩＦ２５からアクセスされるアドレス空間を有する。この空間を第２ディスクキャッシュ領域として使用することで、メインメモリであるＭＭＭ４０へのデータ転送時間を不要とし、メインメモリの消費も不要とすることができる。 
【００４６】
［制御レジスタの構成例］
図８は、本実施形態に係るＳＴＧＣを制御する制御レジスタＣＴＲＬ＿ＲＥＧの構成例を示す図である。
【００４７】
例では８ビット（Bit）ごとにレジスタが割り当てられ、一部はリード（Read）時とライト（Write）時でアクセスされるレジスタが切り換る。
データレジスタ（Data Register）ＤＲはＣＰＵとの間でデータ転送を行うためのレジスタであり、ＣＰＵ３０からＳＴＧＣ２１へのデータ転送のときはライト（Write）、ＳＴＧＣ２１からＣＰＵ３０へのデータ転送のときはリード（Read）する。
エラーレジスタ（Error Register）ＥＲは後述のステータスレジスタ（Status Register）ＳＲがエラー発生を通知した際にその原因を示すレジスタであり、リード専用である。
【００４８】
セクタ数レジスタ（Sector Num Register）ＳＮＲは、転送するセクタ数を設定するレジスタである。この例では８ビットであるため最大２５５セクタまで指定できる。
セクタアドレスレジスタ（Sector Address Register）ＳＡＲは、アクセスする先頭セクタアドレスを設定するレジスタである。この例では最大３２ビットアドレスまで指定できる。
ステータスレジスタ（Status Register）ＳＲは、ＳＴＧＣ２１の動作状態を示すレジスタであり、リード専用である。
【００４９】
図９は、制御レジスタにおけるエラーレジスタの詳細を示す図である。
ＡＢＲＴはアボート（Abort）を意味し、転送が途中で中断されたときに１となる。
【００５０】
図１０は、制御レジスタにおけるステータスレジスタの詳細を示す図である。
ＢＳＹはビジー（Ｂｕｓｙ）を意味し、ＢＳＹ＝１はＳＴＧＣ２１がコマンド実行中であることを示す。
ＤＲＤＹはデータレディ（Data Ready）を意味し、ＤＲＤＹ＝１はデータレジスタ（Data Register）ＤＲにデータがセットされリード可能であることを示す。
ＤＲＱはデータリクエスト（Data Request）を意味し、ＤＲＱ=１はデータレジスタＤＲが空でありライト可能であることを示す。
ＥＲＲはエラー（Error）を意味し、ＥＲＲ＝１はエラーが発生したことを示し、その要因はエラーレジスタＥＲの値から確認できる。
【００５１】
ステータスレジスタＳＲの値が変化した場合に、ＣＰＵ３０に対して割り込み信号を発生し、状態の変化を知らせる仕組みを持ったシステムも多く存在するが、ここではステータスレジスタＳＲをポーリングして確認する例について説明する。
コマンドレジスタ（Command Register）ＣＲはＳＴＧＣ２１に対してコマンドを設定するレジスタであり、ライト専用である。
ここでは８ビットの値をオペレーションコード（Operation Code）ＯＣとして使用でき、最大２５６種類のコマンドが定義可能である。
【００５２】
図１１は、ＳＴＧＣを制御するバスマスタレジスタＢＭ＿ＲＥＧの構成例を示す図である。
バスマスタコマンドレジスタ（Bus Master Command Register）ＢＭＣＲは、ＳＴＧＣ２１がバスマスタとしてシステムバス５０へ行うアクセスを制御するためのレジスタである。
バスマスタステータスレジスタ（Bus Master Status Register）ＢＭＳＲは、ＳＴＧＣ２１がバスマスタとして動作している状態を示すためのレジスタである。
バスマスタＰＲＤテーブルアドレスレジスタ（Bus Master PRD Table Address Register）ＢＭＰＲＤＴＡＲはメインメモリ上に用意されたＰＲＤ（Physical Region Descriptor）テーブルＰＲＤＴのアドレスを設定するためのレジスタである。
ＳＴＧＣ２１はＰＲＤテーブルＰＲＤＴからＰＲＤを順次読み込み、ＰＲＤテーブルＰＲＤＴに書かれたアドレス情報を元にデータ転送を行う。
【００５３】
図１２は、バスマスタレジスタにおけるバスマスタコマンドレジスタの詳細を示す図である。
リードあるいはライト（Read or Write）ＲｏＷはデータ転送の方向を設定し、Read（ＳＴＧＣからメインメモリへのデータ転送）＝０、Write（メインメモリからＳＴＧＣへのデータ転送）＝１を示す。
スタートあるいはストップ（Start or Stop）ＳｏＳはバスマスタ動作の開始と停止を設定し、Start=１、Stop＝０である。
【００５４】
図１３は、バスマスタレジスタにおけるバスマスタステータスレジスタの詳細を示す図である。
エラー（Error）ＥＲＲはデータ転送が完了しなかったことを示す。
バスマスタアクティブ（Bus Master Active）ＢＭＡはバスマスタが動作中であることを示す。
ステータスレジスタ（Status Register）ＳＲの値が変化した場合に、ＣＰＵ３０に対して割り込み信号を発生し、状態の変化を知らせる仕組みを持ったシステムも多く存在するが、ここではステータスレジスタＳＲをポーリングして確認する例について説明する。
【００５５】
図１４は、ＰＲＤテーブルの詳細を示す図である。
ＰＲＤテーブルＰＲＤＴは複数のＰＲＤテーブルエントリ（ＰＲＤ Table Entry）ＰＲＤＴＥにより形成され、最終エントリ（Entry）のみＥＯＴ＝１である。
ＰＲＤテーブルエントリ（Entry）ＰＲＤＴＥの内容は、メインメモリ上のデータ領域のアドレスを示すホストメモリ領域物理ベースアドレス（Host Memory Region Physical Base Address）ＨＭＲＰＢＡを含む。
さらに、ＰＲＤテーブルエントリ（Entry）ＰＲＤＴＥの内容は、最終エントリ（Entry）を示すＥＯＴ（End Of Table）と、そのデータ領域のサイズをバイト（Byte）で示すバイトカウント（Byte Count）ＢＣにより形成される。
なお、これらの制御レジスタＣＴＲＬ＿ＲＥＧ、バスマスタレジスタＢＭ＿ＲＥＧの構成は一般的なものであり、本発明の実施形態の特徴を示しているものではなく、本発明の実現例を具体に説明する手段としてとり上げたものである。
【００５６】
図１５は、本実施形態のＳＴＧＣ（ストレージコントローラを）システムバスから制御した場合のシーケンスの例として、リードコマンドを実行した場合のフローチャートを示す図である。
また、図１６は、図１５のフローチャートに対応してリードコマンドを実行した場合に、各レジスタに設定される値の例を示す図である。
【００５７】
ステップＳＴ１１において、ＣＰＵ３０はＭＭＭ４０上に、ＳＴＧＭ（ストレージモジュール）２０から読み込んだデータを保持するバッファ領域を確保する。
一般的なＣＰＵシステムは仮想メモリを使用するためこのバッファ領域は１つの連続するアドレス空間とは限らない。
ステップＳＴ１２において、確保したバッファ領域からＰＲＤテーブルＰＲＤＴをＭＭＭ４０上に生成する。
ステップＳＴ１３において、ＳＴＧＣ２１のバスマスタレジスタＢＭ_ＲＥＧにデータ転送方向とスタートビット（Start Bit）ＳｏＳ、ＰＲＤテーブルＰＲＤＴを保存したＭＭＭ４０のアドレスを設定する。
ステップＳＴ１４において、ＳＴＧＣ２１の制御レジスタＣＴＲＬ_ＲＥＧにリードするセクタ数と、先頭のセクタアドレスと、リードのコマンドコード（0x20）を設定する。
ＳＴＧＣ２１はコマンドの実行を開始し、データの準備ができるとバスマスタとして転送を開始する。
転送開始後、ＣＰＵ３０はＳＴＧＣ２１のバスマスタ動作をバスマスタレジスタＢＭ_ＲＥＧのバスマスタステータスレジスタ（Bus Master Status Register）ＢＭＳＲをポーリングして確認する。
ステップＳＴ１５において、ＣＰＵ３０はバスマスタアクティブ（Bus Master Active）ＢＭＡ＝０によってデータ転送の完了を確認する。
ステップＳＴ１６において、ＣＰＵ３０はエラービット（Error Bit）ＥＲＲ=０によってデータ転送の正常終了を確認する。
エラービット（Error Bit）ＥＲＲ＝１の場合には、ステップＳＴ１９においてバスマスタレジスタＢＭ_ＲＥＧのバスマスタコマンドレジスタ（Bus Master Command Register）ＢＭＣＲにストップビット（STOP bit）ＳｏＳ＝１を設定する。
バスマスタ転送完了後、ＣＰＵ３０はＳＴＧＣ２１の動作を制御レジスタＣＴＲＬ_ＲＥＧのステータスレジスタ（Status Register）ＳＲをポーリングして確認する。
ステップＳＴ１７において、ＣＰＵ３０はビジービット（BSY Bit）ＢＳＹ＝０によってコマンドの終了を確認する。
ステップＳＴ１８において、ＣＰＵ３０はエラービット（Error Bit）ＥＲＲ＝０によって、コマンド実行結果が正常であることを確認する。
エラービット（Error Bit）ＥＲＲが１の場合には、ステップＳＴ１Ａで制御レジスタＣＴＲＬ_ＲＥＧのエラーレジスタ（Error Register）ＥＲの値を確認し、エラーの状態（Abort）を確認する。
アクセスしたセクタデータは第１ディスクキャッシュとしてディスクキャッシュ領域に保持される。
【００５８】
図１７は、本実施形態のＳＴＧＣ（ストレージコントローラ）をシステムバスから制御した場合のシーケンスの例として、ライト（Write）コマンドを実行した場合のフローチャートを示す図である。
また、図１８は、図１７のフローチャートに対応してライト（Write）コマンドを実行した場合に、各レジスタに設定される値の例を示す図である。
【００５９】
ステップＳＴ２１において、ＣＰＵ３０はＭＭＭ４０上にＳＴＧＭ（ストレージモジュール）２０へ書き込むデータを保持するバッファ領域を確保し、書込みデータを用意する。
一般的なＣＰＵシステムは仮想メモリを使用するためこのバッファ領域は１つの連続するアドレス空間とは限らない。
ステップＳＴ２２において、確保したバッファ領域からＰＲＤテーブルＰＲＤＴをＭＭＭ４０上に生成する。
ステップＳＴ２３において、バスマスタレジスタＢＭ_ＲＥＧにデータ転送方向とスタートビット（Start Bit）ＳｏＳ、ＰＲＤテーブルＰＲＤＴを保存したＭＭＭ４０のアドレスを設定する。
ステップＳＴ２４において、ＳＴＧＣ２１の制御レジスタＣＴＲＬ_ＲＥＧにライトするセクタ数と、先頭のセクタアドレス（Sectorアドレス）と、ライトのコマンドコード（0x30）を設定する。
ＳＴＧＣ２１はコマンドの実行を開始し、データの受信準備ができるとバスマスタとして転送を開始する。
転送開始後、ＣＰＵ３０はＳＴＧＣ２１のバスマスタ動作をバスマスタレジスタＢＭ_ＲＥＧのバスマスタステータスレジスタ（Bus Master Status Register）ＢＭＳＲをポーリングして確認する。
ステップＳＴ２５において、ＣＰＵ３０はバスマスタアクティブ（Bus Master Active）ＢＭＡ＝０によってデータ転送の完了を確認する。
ステップＳＴ２６において、ＣＰＵ３０はエラービット（Error Bit）ＥＲＲ＝０によってデータ転送の正常終了を確認する。
エラービット（Error Bit）ＥＲＲ＝１の場合には、ステップＳＴ２９においてバスマスタレジスタＢＭ_ＲＥＧのバスマスタコマンドレジスタ（Bus Master Command Register）ＢＭＣＲにストップビット（STOP bit）ＳｏＳ＝１を設定する。
バスマスタ転送完了後、ＣＰＵ３０はＳＴＧＣ２１の動作を制御レジスタＣＴＲＬ_ＲＥＧのステータスレジスタ（Status Register）ＳＲをポーリングして確認する。
ステップＳＴ２７において、ＣＰＵ３０はビジービット（BSY Bit）ＢＳＹ＝０によってコマンドの終了を確認する。
ステップＳＴ２８において、ＣＰＵ３０はエラービット（Error Bit）ＥＲＲ＝０によって、コマンド実行結果が正常であることを確認する。
エラービット（Error Bit）ＥＲＲが１の場合には、ステップＳＴ２Ａにおいて制御レジスタＣＴＲＬ_ＲＥＧのエラーレジスタ（Error Register）ＥＲの値を確認し、エラーの状態（Abort）を確認する。
アクセスしたセクタデータは第１ディスクキャッシュとしてディスクキャッシュ領域に保持される。
【００６０】
図１９は、本実施形態のＳＴＧＣ（ストレージコントローラ）をシステムバスから制御した場合のシーケンスの例として、セットキャッシュ(Set Cache)コマンドを実行した場合のフローチャートを示す図である。
また、図２０は、図１９のフローチャートに対応してセットキャッシュ(Set Cache)コマンドを実行した場合に、各レジスタに設定される値の例を示す図である。
【００６１】
ステップＳＴ３１において、ＣＰＵ３０はＳＴＧＣ２１の制御レジスタＣＴＲＬ_ＲＥＧに第２ディスクキャッシュとして読込むデータのセクタ数と、先頭のセクタアドレスと、セクタキャッシュ（Set Cache）のコマンドコード（0xC0）を設定する。
ＳＴＧＣ２１はコマンドの実行を開始し、ＲＡＭＤ２２上のディスクキャッシュ領域の空き領域を検索し、指定されたデータをＳＴＧＤ２３から読み込む。
コマンドの実行開始後、ＣＰＵ３０は制御レジスタＣＴＲＬ_ＲＥＧのステータスレジスタ（Status Register）ＳＲをポーリングで確認する。
ステップＳＴ３２において、ＣＰＵ３０はデータレディビット（DRDY Bit）ＤＲＤＹ＝１を検出した場合、ステップＳＴ３３で制御レジスタＣＴＲＬ_ＲＥＧのデータレジスタ（Data Register）ＤＲを読み出す。
セットキャッシュ（Set Cache）コマンドの実行結果として、ＳＴＧＣ２１は指定したデータを割り当てたディスクキャッシュ領域のアドレスを出力する。
ステップＳＴ３４において、ＣＰＵ３０はビジービット（BSY Bit）ＢＳＹ＝０によって、コマンドの終了を確認する。
ステップＳＴ３５において、ＣＰＵ３０はエラービット（Error Bit）ＥＲＲ＝０によって、コマンド実行結果が正常であることを確認する。
エラービット（Error Bit）ＥＲＲ＝１の場合には、ステップＳＴ３６において制御レジスタＣＴＲＬ_ＲＥＧのエラーレジスタ（Error Register）ＥＲの値を確認し、エラーの状態（Abort、ここではCache割り当て失敗）を確認する。
【００６２】
図２１は、本実施形態のＳＴＧＣ（ストレージコントローラ）をシステムバスから制御した場合のシーケンスの例として、リリースキャッシュ(Release Cache)コマンドを実行した場合のフローチャートを示す図である。
また、図２２は、図２１のフローチャートに対応してリースキャッシュ(Release Cache)コマンドを実行した場合に、各レジスタに設定される値の例を示す図である。
【００６３】
ステップＳＴ４１において、ＣＰＵ３０はＳＴＧＣ２１の制御レジスタＣＴＲＬ_ＲＥＧに第２ディスクキャッシュとして不要となったデータのセクタ数と、先頭のセクタアドレスと、リリースキャッシュ(Release Cache)のコマンドコード（0xC1）を設定する。
ＳＴＧＣ２１はコマンドの実行を開始し、指定されたＲＡＭＤ２２上のディスクキャッシュ領域を検索し、キャッシュアウトの処理を行う。
第１ディスクキャッシュのデータとすることで、ディスクキャッシュ領域の空き領域がなくなった時にキャッシュアウトしてもよい。
コマンドの実行開始後、ＣＰＵ３０は制御レジスタＣＴＲＬ_ＲＥＧのステータスレジスタ（Status Register）ＳＲをポーリングで確認する。
ステップＳＴ４２において、ＣＰＵ３０はビジービット（BSY Bit）ＢＳＹ＝０によって、コマンドの終了を確認する。
ステップＳＴ４３において、ＣＰＵ３０はエラービット（Error Bit）ＥＲＲ＝０によって、コマンド実行結果が正常であることを確認する。
エラービット（Error Bit）ＥＲＲ＝１の場合には、ステップＳＴ４４において制御レジスタＣＴＲＬ_ＲＥＧのエラーレジスタ（Error Register）ＥＲの値を確認し、エラーの状態（Abort、ここではCache割り当て失敗）を確認する。
【００６４】
次に、図１５〜図２２のような機能を実現するために必要となるディスクキャッシュ領域の管理情報の例について説明する。
図２３は、図１５〜図２２のような機能を実現するために必要となるディスクキャッシュ領域の管理情報の例について説明するための図である。
【００６５】
この例では、ＳＴＧＣ２１はキャッシュ管理情報ＣＭＩのためのワークメモリとしてＲＡＭＤ２２を使用する。ＲＡＭＤ２２上のメモリ領域は、ディスクキャッシュ領域ＤＣＲとしてデータを保持する領域と、キャッシュ管理情報領域ＣＭＩＲにより形成される。
ＳＴＧＣ２１は、キャッシュ管理情報ＣＭＩによってディスクキャッシュ領域ＤＣＲを管理する。ディスクキャッシュ領域ＤＣＲはディスクキャッシュエントリ（Disk Cache Entry）ＤＣＥとして５１２Byteを単位として管理される。
キャッシュ管理情報ＣＭＩは、複数のキャッシュ管理情報エントリＣＭＩＥからなり、キャッシュ管理情報エントリＣＭＩＥはＳＴＧＤ２３上のセクタアドレスと管理情報（Management Information）ＭＩにより形成される。
管理情報（Management Information）ＭＩには、第１ディスクキャッシュか第２ディスクキャッシュかを示すキャッシュタイプ（Cache Type）ＣＴ、および使用中かどうかを示すユーズド／アンユーズド（Used / Unused）ＵＵＳを含む。
管理情報（Management Information）ＭＩには、書込みによってデータが変更されたかを示すダーティフラグ（Dirty Flag）ＤＲＴＦ、キャッシュアウト（Cache Out）するデータを選択するために使用される情報であるＬＲＵ Infoが含まれる。
また、ＳＴＧＣ２１のメモリインターフェース制御部２１４はディスクキャッシュ領域ＤＣＲへのシステムバス５０からのアクセスを可能とするが、キャッシュ管理情報領域ＣＭＩＲへのシステムバス５０からのアクセスを禁止する。
【００６６】
図２４から図２８は、前記４つのコマンド実行時のＳＴＧＣ内部動作を記述したフローチャートを示している。
【００６７】
図２４は、リードコマンドのＳＴＧＣ内部動作を記述したフローチャートを示す図である。
【００６８】
コマンド処理の動作は制御レジスタＣＴＲＬ_ＲＥＧのコマンドレジスタ（Command Register）ＣＲにコマンドのオペレーションコードＯＣを書き込むことによって開始する。
ステップＳＴ５１において、ＳＴＧＣ２１はバスマスタ機能を使ってＭＭＭ４０上のＰＲＤテーブルＰＲＤＴから最初のＰＲＤテーブルエントリＰＲＤＴＥを読み込む。
ステップＳＴ５２において、ＳＴＧＣ２１は制御レジスタＣＴＲＬ_ＲＥＧに書込まれたセクタアドレスとセクタ数からキャッシュ管理情報ＣＭＩを検索する。
ステップＳＴ５３においては、検索の結果ディスクキャッシュ上に該当するデータが存在した場合（キャッシュヒット）には、ステップＳＴ５４においてそのデータを、バスマスタ機能を使ってＭＭＭ４０上のデータバッファ領域に転送する。
ステップＳＴ５５において、先頭のＰＲＤテーブルエントリＰＲＤＴＥ分のデータの転送が完了したかを確認し、ステップＳＴ５６で転送情報終了か否かの判定処理を経てステップＳＴ５１に戻って次のＰＲＤテーブルエントリ）ＰＲＤＴＥを読み込む。
ステップＳＴ５３においてキャッシュミスしたと判定した場合には、ステップＳＴ５７において新たにデータを読み込むためのディスクキャッシュ領域ＤＣＲを検索する。
新しいディスクキャッシュ領域が見つからなかった場合には、ステップＳＴ５Ｂにおいてキャッシュアウト処理を行い、空きディスク領域を確保する。
ステップＳＴ５８で空き領域があると判断した場合、ステップＳＴ５９において、ＳＴＧＤから読み出したデータをバスマスタ機能でＭＭＭ４０上のデータバッファ領域に転送すると同時に、ＲＡＭＤ２２上の新たに確保したキャッシュ領域に転送する。
ステップＳＴ５Ａにおいて、キャッシュ管理情報ＣＭＩに登録し、ステップＳＴ５５で転送終了か否か、ＳＴ５６で転送情報終了か否かの判定処理を経てステップＳＴ５１に戻って次のＰＲＤテーブルエントリＰＲＤＴＥを読み込む。
以上の処理をコマンド終了まで繰り返す。
【００６９】
図２５は、ライトコマンドのＳＴＧＣ内部動作を記述したフローチャートを示す図である。
【００７０】
コマンド処理の動作は制御レジスタＣＴＲＬ_ＲＥＧのコマンドレジスタ（Command Register）ＣＲにコマンドのオペレーションコードＯＣを書き込むことによって開始する。
ステップＳＴ６１において、ＳＴＧＣ２１はバスマスタ機能を使ってＭＭＭ４０上のＰＲＤテーブルＰＲＤＴから最初のＰＲＤテーブルエントリＰＲＤＴＥを読み込む。
ステップＳＴ６２において、ＳＴＧＣ２１は制御レジスタＣＴＲＬ_ＲＥＧに書き込まれたセクタアドレスとセクタ数からキャッシュ管理情報を検索する。
ステップＳＴ６３においてキャッシュミスした場合には、ステップＳＴ６８において新たにデータを書き込むためのディスクキャッシュ領域ＤＣＲを検索する。新しいディスクキャッシュ領域が見つからなかった場合には、ステップＳＴ６Ｃにおいてキャッシュアウト処理を行い、空きディスク領域を確保する。
ステップＳＴ６３においてキャッシュヒットしたと判断した場合、ステップＳＴ６４において、ＳＴＧＣ２１はバスマスタ機能を使ってＭＭＭ４０上のデータをＲＡＭＤ２２上に確保した前記キャッシュ領域に転送する。
ステップＳＴ６５において、キャッシュ管理情報のダーティフラグ（Dirty Flag Bit）ＤＲＴＦ＝１に設定する。
そして、ステップＳＴ６６において先頭のＰＲＤテーブルエントリＰＲＤＴＥ分のデータの転送が完了したかを確認し、ステップＳＴ６７で転送情報終了か否かの判定処理を経てステップＳＴ６１に戻って次のＰＲＤテーブルエントリＰＲＤＴＥを読み込む。
【００７１】
以上の動作については一般的な比較例の基本的な動作と同じである。
本発明の実施形態ではＳＴＧＣ２１が制御するＲＡＭＤ２２上に、ディスクキャッシュ領域ＤＣＲ上のデータに第１ディスクキャッシュと第２ディスクキャッシュの２種類のキャッシュタイプ（Cache Type）ＣＴが存在する。
これに対して、比較例では第１ディスクキャッシュに相当するデータしか存在しない。
【００７２】
図２６は、キャッシュアウト(Cache Out)処理のＳＴＧＣ内部動作を記述したフローチャートを示す図である。
【００７３】
ステップＳＴ７１において、ＳＴＧＣ２１はディスクキャッシュ領域からキャッシュアウト(Cache Out)する候補となるセクタを調べる。
候補を決定するにはキャッシュ管理情報ＣＭＩの管理情報（Management Information）ＭＩにあるＬＲＵ Infoを読み込み使用する。
また、第２ディスクキャッシュはキャッシュアウト(Cache Out)の候補としない。
ステップＳＴ７２において、候補となったセクタの管理情報ＭＩがダーティフラグビット（Dirty Flag Bit）ＤＲＴＦ＝１であった場合、ステップＳＴ７３において現在ＲＡＭＤ２２上にあるセクタデータをＳＴＧＤ２３に書き戻す処理を行う。
ステップＳＴ７４において、キャッシュ管理情報を未使用にクリアする。
ダーティビット（Dirty Bit）ＤＢ＝０であったデータは、書き戻しを行わずステップＳＴ７４においてキャッシュ管理情報をクリアする。
ステップＳＴ７５において、最終セクタであると判断されるまで、以上の処理を必要とするセクタ数分繰り返す。
【００７４】
図２７は、セット(Set Cache)コマンドのＳＴＧＣ内部動作を記述したフローチャートを示す図である。
【００７５】
ステップＳＴ８１において、ＳＴＧＣ２１は制御レジスタＣＴＲＬ_ＲＥＧに書込まれたセクタアドレスとセクタ数からキャッシュ管理情報を検索する。
ステップＳＴ８２において、該当するディスクキャッシュデータが見つかった場合には、ステップＳＴ８３においてそのデータが第１ディスクキャッシュであった場合には、ステップＳＴ８４においてキャッシュ管理情報を第２ディスクキャッシュに設定変更する。
ステップＳＴ８２において、該当するディスクキャッシュデータが存在しなかった場合には、ステップＳＴ８７において、ＲＡＭＤ２２上のディスクキャッシュ領域ＤＣＲから空き領域を検索する。ステップＳＴ８８において空き領域が見つからなかった場合には、ステップＳＴ８Ｂにおいてキャッシュアウト(Cache Out)処理を行い空き領域を準備する。
ステップＳＴ８８で空き領域が有ると判断した場合にはステップＳＴ８９において、ＳＴＧＤ２３から該当するセクタデータをＲＡＭＤ２２上に確保したディスクキャッシュ空き領域に転送する。
そして、ステップＳＴ８Ａにおいてキャッシュ管理情報ＣＭＩに第２ディスクキャッシュとして登録する。
ステップＳＴ８５において指定したセクタデータに割り当てられたＲＡＭＤ２２上の第２ディスクキャッシュのアドレスを制御レジスタＣＴＲＬ_ＲＥＧのデータレジスタ（Data Register）ＤＲに設定する。データレジスタＤＲにデータを設定すると制御レジスタＣＴＲＬ＿ＲＥＧのステータスレジスタ（Status Register）においてＤＲＤＹ＝１となり、新しいデータがデータレジスタＤＲに設定されたことを通知する。データレジスタＤＲのデータが読み出されると、ＤＲＤＹ＝０となり、次のデータをデータレジスタＤＲに設定可能な状態となる。
ステップＳＴ８６において、最終セクタであると判断されるまで、以上の処理を制御レジスタＣＴＲＬ_ＲＥＧのセクタ数（Sector Num）ＳＮに設定されたセクタ数分繰り返す。
【００７６】
図２８は、リリースキャッシュ(Release Cache)コマンドのＳＴＧＣ内部動作を記述したフローチャートを示す図である。
【００７７】
ステップＳＴ９１において、ＳＴＧＣ２１は制御レジスタＣＴＲＬ_ＲＥＧに書き込まれたセクタアドレスとセクタ数からキャッシュ管理情報ＣＭＩを検索する。
ステップＳＴ９２において、該当するディスクキャッシュデータが見つかった場合には、ステップＳＴ９３においてさらに第２ディスクキャッシュかどうか確認する。ここで肯定的判定（Yes）であった場合には、ステップＳＴ９４において第１ディスクキャッシュに設定を変更する。
ステップＳＴ９５において、最終セクタであると判断されるまで、以上の処理をＣＴＲＬ_ＲＥＧのセクタ数(Sector Num)ＳＮに設定されたセクタ数分繰り返す。
第１ディスクキャッシュに変更されたデータは、次にディスクキャッシュ領域の空き領域が必要となった場合にキャッシュアウト(Cache Out)されるセクタの候補となる。
【００７８】
図２９は、ストレージ上に保存されたコードをメモリ上に読み込みＣＰＵから実行するまでの時間を比較することで、本発明の実施形態の効果を記述して示す図である。
いずれの例でも３つのコードを順番にロードし実行する。
【００７９】
ケースＣＳ１は、従来と同じコードをメモリ上に読み込み実行する動作である（Store And Download）。
コード（Code）ＣＤ１〜ＣＤ３を順番にリードコマンドでＭＭＭ４０上にロードし実行するため全処理時間としては、｛T(Read Code1) ＋T(Exec Code1) + T(Read Code2) + T(Exec Code2) + T(Read Code3) + T(Exec Code3)｝となる。
ここで、Ｔ(Ｘ)はＸの処理完了までにかかる時間を示す。
コードＣＤ１、ＣＤ２、ＣＤ３はすべて異なるセクタに保存されているため、第１ディスクキャッシュの効果は得られない。
【００８０】
ケースＣＳ２は、コードＣＤ２、コードＣＤ３のロード時間をセットキャッシュ(Set Cache)コマンドによって短縮した動作である。
先頭のコードＣＤ１はリードコマンドであるが、コードＣＤ２はコードＣＤ１の実行中にセットキャッシュ(Set Cache)コマンドを実行し、コードＣＤ３はコードＣＤ２の実行中にセットキャッシュ(Set Cache)コマンドを実行する。
これによって全処理時間は、｛T(Read Code1) + T(Exec Code1) + T(Read Code2 from Disk Cache) + T(Exec Code2) + T(Read Code3 from Disk Cache) + T(Exec Code3)｝となる。
コードＣＤ２、コードＣＤ３は第１ディスクキャッシュの効果によりロード時間が短縮されている。
【００８１】
ケースＣＳ３は、コードＣＤ１，ＣＤ２，ＣＤ３を実行するメモリとして第２ディスクキャッシュをそのまま使用した動作である（Execute In Place）。
コードＣＤ１〜ＣＤ３はすべてセットキャッシュ(Set Cache)コマンドにより第２ディスクキャッシュとしてＲＡＭＤ２２上にロードされ、ＣＰＵ３０はＳＴＧＣ３１のＭＥＭ-ＩＦ２５から直接アクセスすることによってこれらのコードを実行する。
ＳＴＧＣ２１からアクセスするＲＡＭＤ２２とメインメモリの読み出しに関するパフォーマンスが同等とすれば、ＳＴＧＭからＭＭＭ上への転送時間がなくなる。
これによって全処理時間は、｛T(Set Cache Code1) + T(Exec Code1) + T(Exec Code2) + T(Exec Code3)｝となる。
コードの実行と、セットキャッシュ(Set Cache)コマンドの実行によるＲＡＭＤ２２へのアクセスはＳＴＧＣ２１内のメモリ制御部でアービトレーションされる。そして、ＭＥＭ-ＩＦ２５からのアクセスが優先されることによって、セットキャッシュ(Set Cache)の処理時間は多少長くなるが、コードの実行時間を越えなければ上記の全処理時間となる。
実際のＣＰＵモジュールは内部に命令キャッシュ、データキャッシュを持つことから、アービトレーションによるセットキャッシュ(Set Cache)処理時間の延長の影響は実行時間を越えるほど大きくなりにくい。
【００８２】
図３０は、ストレージモジュールのリセットが解除され、起動する際にＳＴＧＣで行われる動作を記述したフローチャートを示す図である。
【００８３】
同時並列的にＳＴＧＤ２３、ＲＡＭＤ２２に対するリセットも解除される。
ＳＴＧＣ２１はステップＳＴ１０１においてキャッシュ管理情報の初期値をＲＡＭＤ２２上のキャッシュ管理情報領域ＣＭＩＲにロードする。
この初期値はＳＴＧＤ２３上に保存されるか、ＳＴＧＣ２１内の不揮発性記憶領域に保存される。
また、ＳＴＧＣ２１は初期値をその保存領域に設定する手段も提供している。
初期値によって設定されるディスクキャッシュは第１ディスクキャッシュと第２ディスクキャッシュのいずれかあるいは両方を含んでもよい。
ステップＳＴ１０２において、ＳＴＧＣ２１は初期値に従ってＳＴＧＤ２３からＲＡＭＤ２２上へセクタデータを転送する。
この処理は初期値として登録した全部の第２ディスクキャッシュがロードされるまで繰り返される。
【００８４】
図３１は、本実施形態のキャッシュ管理情報の初期値を自動的にロードする機能の効果を示す図である。
【００８５】
前提とするシステムは、図２や図３に示すブート（Boot）ＲＯＭ８０から初期起動コードを実行し、ＣＰＵ周辺デバイスの初期化、特にＭＭＭ４０を制御するメモリコントローラの初期化などを行う。
その後、ＯＳやアプリケーションの起動コードであるコードＣＤ１、ＣＤ２、ＣＤ３をＳＴＧＣ２１よりロードする。
【００８６】
ケースＣＳ１１は、ブート（Boot）ＲＯＭ８０によるＣＰＵモジュール３０の初期化処理終了後にＳＴＧＭ２０からの起動コードの読み込みを始める動作である。
全処理時間としては、｛T(Exec BootROM) + T(Read Code1) + T(Exec Code1) + T(Read Code2) + T(Exec Code2) + T(Read Code3) + T(Exec Code3)｝となる。
【００８７】
同時並列的にＳＴＧＤ２３、ＲＡＭＤ２２に対するリセットも解除されるが、ＣＰＵモジュール３０は自らの初期化処理を開始した状態であり、ＭＭＭ４０の初期化は一般的にＣＰＵモジュール３０の初期化処理の中で行われる。
このため、すべての初期化処理が終了するまでＳＴＧＣ２１のバスマスタ機能による外部へのデータ転送を使うことはできない。
ケースＣＳ１１は、そういった比較例を記述したものであり、ＣＰＵモジュール３０の起動コードがブート（Boot）ＲＯＭ８０上から実行され、その終了後にコードＣＤ１、ＣＤ２、ＣＤ３を順番にＭＭＭ４０上にロードして実行する（Store And Download）。
コードＣＤ１１〜ＣＤ１３は常に電源起動後初めてアクセスされるために、ディスクキャッシュの効果は得られない。
【００８８】
ケースＣＳ１２は、ＳＴＧＣ２１の起動処理としてコードＣＤ１１〜ＣＤ１３をセットキャッシュ(Set Cache)コマンドによって、ＣＰＵモジュール３０の起動処理が終了する前あらかじめ第２ディスクキャッシュとしてロードしておく。ケースＣＳ１２は、このことにより、起動時間を短縮する例である。
ＣＰＵモジュール３０は起動処理終了後、ＳＴＧＤ２３に対してコードをロードするため、リードコマンドを使用するので、ＲＡＭＤ２２上のキャッシュデータは第１ディスクキャッシュとして動作することでも高速化される。
【００８９】
ケースＣＳ１３は、ＳＴＧＣ２１の起動処理として、コードＣＤ１１〜ＣＤ１３をＭＭＭ４０に転送せず、ＲＡＭＤ２２上で直接実行する。ケースＣＳ１３は、このことによりＳＴＧＭ２０からＭＭＭ４０へのデータ転送時間を不要とし、起動時間を短縮する例である（第２ディスクキャッシュの効果、Execute In Place）。
起動処理終了後はこれら第２ディスクキャッシュのデータはすべてリリースキャッシュ（Release Cache）コマンドで開放することも可能である。
【００９０】
＜２．第２の実施形態＞
図３２は、本発明の第２の実施形態に係るストレージ装置を搭載したメモリシステムの構成例を示す図である。
【００９１】
本第２の実施形態に係るメモリシステム１０Ｄが上述した第１の実施形態に係るメモリシステム１０と異なる点は、以下のとおりである。
すなわち、本第２の実施形態では、ストレージモジュール２０ＤにおいてＳＴＧＤとして不揮発性記憶デバイスでありかつランダムアクセスメモリとしても使用可能な不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）２６が使用されている。
ＳＴＧＤはＲＡＭとしてアクセス可能であるが、一般的にシステムバス上のアドレス空間は全ストレージ空間よりも小さい。
したがって、メモリインターフェース制御部２１４はセットキャッシュ（Set Cache）コマンド実行時にシステムバス５０からそのデータにアクセスするＭＥＭ−ＩＦ２５上のアドレスを決定するＮＶＲＡＭアドレスに変換を行う機能を持つこともある。
また、キャッシュ管理情報はＮＶＲＡＭ２６上の決められた領域に保存するが、ワーク用として使用するキャッシュ管理情報領域と、起動用のキャッシュ管理情報を保存する領域の２つを持つ。
【００９２】
以上説明したように、本実施形態によれば、以下の効果を得ることができる。
本実施形態に係るストレージモジュールは、内蔵するランダムアクセスメモリデバイスを第１および第２ディスクキャッシュとして使用することで、システムとしてのパフォーマンスを改善することが可能である。
本実施形態では、第２ディスクキャッシュの機能をストレージモジュール上で実現することで、第１ディスクキャッシュと重複したデータの保持によるディスクキャッシュの使用効率の低下を回避し、ディスクキャッシュの対容量効果を高めることができる。
また、本実施形態によれば、メインメモリを第２ディスクキャッシュとして使用したシステムと比較して、メインメモリとストレージモジュール間のデータ転送が発生しないことによるパフォーマンスの改善が可能となる。
同時にメインメモリの使用効率も改善され、スワップ（SWAP）の発生によるシステムパフォーマンスの低下も防ぐことが可能となる。
【００９３】
また、一般的な第１ディスクキャッシュは、キャッシュ上に保持するデータをＣＰＵから指示する機能を有していない。
これに対して、本実施形態では、第２ディスクキャッシュとして指定されたデータも第１ディスクキャッシュのデータとして使用できる。
このことから、結果として第１ディスクキャッシュとしても、ＣＰＵから指示されたデータを保持できることになり、ストレージデバイスへのアクセス回数を削減できることで、パフォーマンスの改善が可能となる。
また、本実施形態では、ストレージコントローラが持つ起動用に設定したキャッシュ設定機能の指示内容を不揮発性メモリあるいはストレージデバイスの一部の領域に保持する機能を有する。また、本実施形態では、その領域に保持された指示内容を、ストレージモジュール起動時にディスクキャッシュ上に再現する機能を有する。本実施形態では、これらの機能によって、システムの起動時間の改善を可能とする。
【００９４】
一般的なメモリシステムではＣＰＵモジュールの起動処理が完了し、メインメモリおよびストレージモジュールへアクセス可能が状態になってから、ストレージ上に必要なデータへのアクセスが開始される。このため、ストレージから必要なデータがメモリ上に展開されるまでのタイムラグが大きい。
これに対して、本実施形態では、ストレージモジュール自身が、初期状態としてディスクキャッシュ上にデータを展開することが可能である。
このため、本実施形態によれば、ＣＰＵモジュールの起動完了後ただちに第１と第２ディスクキャッシュの効果が最大限に発揮され、システムの起動時間を短縮することができる。
【符号の説明】
【００９５】
１０、１０Ｄ・・・メモリシステム、２０・・・ストレージモジュール（ＳＴＧＭ）、２１・・・ストレージコントローラ、２１１・・・ストレージインターフェース制御部、２１２・・・ストレージデバイス制御部、２１３・・・ＲＡＭデバイス制御部、２１４・・・メモリインターフェース制御部、２２・・・ランダムアクセスメモリデバイス（ＲＡＭＤ）、２３・・・ストレージデバイス（ＳＴＧＤ）、２４・・・ストレージインターフェース（ＳＴＧＣ-ＩＦ）、２５・・・メモリインターフェース（ＭＥＭ-ＩＦ）、３０・・・ＣＰＵモジュール、４０・・・メインメモリモジュール（ＭＭＭ）、５０・・・システムバス。
【図１】
0005526697.tif 000002
【図２】
0005526697.tif 000003
【図３】
0005526697.tif 000004
【図４】
0005526697.tif 000005
【図５】
0005526697.tif 000006
【図６】
0005526697.tif 000007
【図７】
0005526697.tif 000008
【図８】
0005526697.tif 000009
【図９】
0005526697.tif 000010
【図１０】
0005526697.tif 000011
【図１１】
0005526697.tif 000012
【図１２】
0005526697.tif 000013
【図１３】
0005526697.tif 000014
【図１４】
0005526697.tif 000015
【図１５】
0005526697.tif 000016
【図１６】
0005526697.tif 000017
【図１７】
0005526697.tif 000018
【図１８】
0005526697.tif 000019
【図１９】
0005526697.tif 000020
【図２０】
0005526697.tif 000021
【図２１】
0005526697.tif 000022
【図２２】
0005526697.tif 000023
【図２３】
0005526697.tif 000024
【図２４】
0005526697.tif 000025
【図２５】
0005526697.tif 000026
【図２６】
0005526697.tif 000027
【図２７】
0005526697.tif 000028
【図２８】
0005526697.tif 000029
【図２９】
0005526697.tif 000030
【図３０】
0005526697.tif 000031
【図３１】
0005526697.tif 000032
【図３２】
0005526697.tif 000033