(57)【要約】  並列にアクセスされるデータサイズおよびアクセス速度が異なるメモリ装置をキャッシュメモリとして効率良く動作させる。  メモリアクセス装置は、並列にアクセス可能な複数のメモリをそれぞれ有して並列にアクセスされるデータサイズおよびアクセス速度が異なる第１および第２のメモリ装置に対してアクセスを行う。メモリアクセス装置は、管理情報記憶部およびアクセス制御部を備える。管理情報記憶部は、第１および第２のメモリ装置の対応する各々の管理単位を関連付けて、管理情報として記憶する。アクセス制御部は、管理情報に基づいて第１および第２のメモリ装置の何れかに対してアクセスを行う。
2019077812.tif 000002
【特許請求の範囲】
【請求項１】
並列にアクセス可能な複数のメモリをそれぞれ有して並列にアクセスされるデータサイズおよびアクセス速度が異なる第１および第２のメモリ装置の対応する各々の管理単位を関連付けて管理情報として記憶する管理情報記憶部と、
前記管理情報に基づいて前記第１および第２のメモリ装置の何れかに対してアクセスを行うアクセス制御部と
を具備するメモリアクセス装置。
【請求項２】
前記第２のメモリ装置は、前記第１のメモリ装置と比較して、アクセス速度がより高速であり、かつ、並列にアクセスされるデータサイズがより狭く、
前記管理情報記憶部は、前記第１および第２のメモリ装置において並列にアクセスされるデータサイズを各々の管理単位として前記管理情報を記憶する
請求項１記載のメモリアクセス装置。
【請求項３】
前記管理情報記憶部は、前記第１のメモリ装置の所定の１つの管理単位と対応する前記第２のメモリ装置の複数の管理単位とを関連付けて前記管理情報として記憶する
請求項２記載のメモリアクセス装置。
【請求項４】
前記管理情報記憶部は、前記第１のメモリ装置の前記所定の１つの管理単位に対応して前記第２のメモリ装置の複数の管理単位の全体について使用状況を示す使用状況情報を記憶する
請求項３記載のメモリアクセス装置。
【請求項５】
前記管理情報記憶部は、前記第１のメモリ装置の前記所定の１つの管理単位に対応して前記第２のメモリ装置の複数の管理単位の各々について使用状況を示す使用状況情報を記憶する
請求項３記載のメモリアクセス装置。
【請求項６】
前記使用状況情報は、前記第１のメモリ装置の前記所定の１つの管理単位に対応して割り当てられた前記第２のメモリ装置の複数の管理単位の各々についてアドレスの順序に従って前記使用状況を示す
請求項５記載のメモリアクセス装置。
【請求項７】
前記使用状況情報は、前記第１のメモリ装置の前記所定の１つの管理単位に対応して前記第２のメモリ装置の複数の管理単位の各々について割当ての状況を示す
請求項５記載のメモリアクセス装置。
【請求項８】
前記管理情報記憶部は、前記第１のメモリ装置の前記管理単位に対応するものとして割り当てられているか否かを前記第２のメモリ装置の前記複数の管理単位ごとに割当情報として記憶する
請求項３記載のメモリアクセス装置。
【請求項９】
前記管理情報記憶部は、前記第１のメモリ装置の前記所定の１つの管理単位に対応して前記第２のメモリ装置の複数の管理単位の何れかにおいて前記第１のメモリ装置と不一致が生じているか否かを示す不一致情報を記憶する
請求項３記載のメモリアクセス装置。
【請求項１０】
アイドル状態になると、前記不一致情報が前記第１のメモリ装置との不一致を示している前記第２のメモリ装置のデータを、対応する前記第１のメモリ装置に書き込む処理を行う請求項９記載のメモリアクセス装置。
【請求項１１】
前記第１のメモリ装置の前記所定の１つの管理単位は、前記第１のメモリ装置の最大スループットでライトコマンドが実行される領域毎に割り当てられる
請求項３記載のメモリアクセス装置。
【請求項１２】
並列にアクセス可能な複数のメモリをそれぞれ有して並列にアクセスされるデータサイズおよびアクセス速度が異なる第１および第２のメモリ装置と、
前記第１および第２のメモリ装置の対応する各々の管理単位を関連付けて管理情報として記憶する管理情報記憶部と、
前記管理情報に基づいて前記第１および第２のメモリ装置の何れかに対してアクセスを行うアクセス制御部と
を具備するメモリシステム。
【請求項１３】
前記第１および第２のメモリ装置は、不揮発性メモリである
請求項１２記載のメモリシステム。
【請求項１４】
並列にアクセス可能な複数のメモリをそれぞれ有して並列にアクセスされるデータサイズおよびアクセス速度が異なる第１および第２のメモリ装置と、
前記第１のメモリ装置に対するアクセスコマンドを発行するホストコンピュータと、
前記第１および第２のメモリ装置の対応する各々の管理単位を関連付けて管理情報として記憶する管理情報記憶部を有して前記管理情報に基づいて前記第１および第２のメモリ装置の何れかに対してアクセスを行うアクセス制御部と
を具備する情報処理システム。
【請求項１５】
前記アクセス制御部は、前記ホストコンピュータにおけるデバイスドライバである
請求項１４記載の情報処理システム。
【請求項１６】
前記アクセス制御部は、前記第１および第２のメモリ装置におけるメモリコントローラである
請求項１４記載の情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、メモリアクセス装置に関する。詳しくは、並列にアクセス可能な複数のメモリを有するメモリシステムまたは情報処理システムにおいて、メモリへのアクセスを制御するメモリアクセス装置に関する。
【背景技術】
【０００２】
アクセス速度が異なるメモリを組み合わせてライト性能を向上させるメモリシステムが知られている。例えば、性能が異なる２つのＳＳＤ（Solid State Disk）を用いたストレージシステムが提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１９９１９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述の従来技術では、低速ＳＳＤに書き込むデータが小さい場合に、高速ＳＳＤに代行ライトして、必要に応じてまとめて低速ＳＳＤに移動している。しかしながら、並列にアクセスされるデータサイズやアクセス速度はシステムの構成によっても異なるため、一方をキャッシュメモリとして用いる場合に、効率良く管理できないおそれがある。【０００５】
本技術はこのような状況に鑑みて生み出されたものであり、並列にアクセスされるデータサイズおよびアクセス速度が異なるメモリ装置をキャッシュメモリとして効率良く動作させることを目的とする。
【課題を解決するための手段】
【０００６】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、並列にアクセス可能な複数のメモリをそれぞれ有して並列にアクセスされるデータサイズおよびアクセス速度が異なる第１および第２のメモリ装置の対応する各々の管理単位を関連付けて管理情報として記憶する管理情報記憶部と、上記管理情報に基づいて上記第１および第２のメモリ装置の何れかに対してアクセスを行うアクセス制御部とを具備するメモリアクセス装置である。これにより、並列にアクセスされるデータサイズおよびアクセス速度が異なる第１および第２のメモリ装置に対して、管理情報に基づいてアクセスを行うという作用をもたらす。【０００７】
また、この第１の側面において、上記第２のメモリ装置は、上記第１のメモリ装置と比較して、アクセス速度がより高速であり、かつ、並列にアクセスされるデータサイズがより狭く、上記管理情報記憶部は、上記第１および第２のメモリ装置において並列にアクセスされるデータサイズを各々の管理単位として上記管理情報を記憶するようにしてもよい。これにより、低速な第１のメモリ装置および高速な第２のメモリ装置に対して、管理情報に基づいてアクセスを行うという作用をもたらす。【０００８】
また、この第１の側面において、上記管理情報記憶部は、上記第１のメモリ装置の所定の１つの管理単位と対応する上記第２のメモリ装置の複数の管理単位とを関連付けて上記管理情報として記憶するようにしてもよい。これにより、第１のメモリ装置の管理単位を基準として、第１のメモリ装置および第２のメモリ装置の管理を行うという作用をもたらす。【０００９】
また、この第１の側面において、上記管理情報記憶部は、上記第１のメモリ装置の上記所定の１つの管理単位に対応して上記第２のメモリ装置の複数の管理単位の全体について使用状況を示す使用状況情報を記憶するようにしてもよい。これにより、第１のメモリ装置の管理単位をまとめて、第１のメモリ装置および第２のメモリ装置の管理を行うという作用をもたらす。【００１０】
また、この第１の側面において、上記管理情報記憶部は、上記第１のメモリ装置の上記所定の１つの管理単位に対応して上記第２のメモリ装置の複数の管理単位の各々について使用状況を示す使用状況情報を記憶するようにしてもよい。これにより、第２のメモリ装置の複数の管理単位の各々に分けて使用状況を管理するという作用をもたらす。【００１１】
また、この第１の側面において、上記使用状況情報は、上記第１のメモリ装置の上記所定の１つの管理単位に対応して割り当てられた上記第２のメモリ装置の複数の管理単位の各々についてアドレスの順序に従って上記使用状況を示すようにしてもよい。これにより、アドレスの順序に従って使用状況を管理するという作用をもたらす。【００１２】
また、この第１の側面において、上記使用状況情報は、上記第１のメモリ装置の上記所定の１つの管理単位に対応して上記第２のメモリ装置の複数の管理単位の各々について割当ての状況を示すようにしてもよい。これにより、第２のメモリ装置の複数の管理単位の各々に分けて割当状況を管理するという作用をもたらす。【００１３】
また、この第１の側面において、上記管理情報記憶部は、上記第１のメモリ装置の上記管理単位に対応するものとして割り当てられているか否かを上記第２のメモリ装置の上記複数の管理単位ごとに割当情報として記憶するようにしてもよい。これにより、第２のメモリ装置の複数の管理単位ごとに割当てを行うという作用をもたらす。【００１４】
また、この第１の側面において、上記管理情報記憶部は、上記第１のメモリ装置の上記所定の１つの管理単位に対応して上記第２のメモリ装置の複数の管理単位の何れかにおいて上記第１のメモリ装置と不一致が生じているか否かを示す不一致情報を記憶するようにしてもよい。これにより、第１のメモリ装置と第２のメモリ装置のコンシステンシを維持させるという作用をもたらす。【００１５】
また、この第１の側面において、アイドル状態になると、上記不一致情報が上記第１のメモリ装置との不一致を示している上記第２のメモリ装置のデータを、対応する上記第１のメモリ装置に書き込む処理を行うようにしてもよい。これにより、アイドル状態となっている期間を利用して第１のメモリ装置と第２のメモリ装置のコンシステンシを維持させるという作用をもたらす。【００１６】
また、この第１の側面において、上記第１のメモリ装置の上記所定の１つの管理単位は、上記第１のメモリ装置の最大スループットでライトコマンドが実行される領域毎に割り当てられるようにしてもよい。これにより、メモリシステムとしての性能を最大限に向上させるという作用をもたらす。【００１７】
また、本技術の第２の側面は、並列にアクセス可能な複数のメモリをそれぞれ有して並列にアクセスされるデータサイズおよびアクセス速度が異なる第１および第２のメモリ装置と、上記第１および第２のメモリ装置の対応する各々の管理単位を関連付けて管理情報として記憶する管理情報記憶部と、上記管理情報に基づいて上記第１および第２のメモリ装置の何れかに対してアクセスを行うアクセス制御部とを具備するメモリシステムである。これにより、並列にアクセスされるデータサイズおよびアクセス速度が異なる第１および第２のメモリ装置を有して、管理情報に基づいてそれらにアクセスを行うという作用をもたらす。この場合において、上記第１および第２のメモリ装置は、不揮発性メモリであってもよい。【００１８】
また、本技術の第３の側面は、並列にアクセス可能な複数のメモリをそれぞれ有して並列にアクセスされるデータサイズおよびアクセス速度が異なる第１および第２のメモリ装置と、上記第１のメモリ装置に対するアクセスコマンドを発行するホストコンピュータと、上記第１および第２のメモリ装置の対応する各々の管理単位を関連付けて管理情報として記憶する管理情報記憶部を有して上記管理情報に基づいて上記第１および第２のメモリ装置の何れかに対してアクセスを行うアクセス制御部とを具備する情報処理システムである。これにより、並列にアクセスされるデータサイズおよびアクセス速度が異なる第１および第２のメモリ装置を有して、管理情報に基づいてホストコンピュータから第１および第２のメモリ装置にアクセスを行うという作用をもたらす。【００１９】
また、この第３の側面において、上記アクセス制御部は、上記ホストコンピュータにおけるデバイスドライバであってもよい。これにより、ホストコンピュータにおいて第１および第２のメモリ装置を使い分けるという作用をもたらす。【００２０】
また、この第３の側面において、上記アクセス制御部は、上記第１および第２のメモリ装置におけるメモリコントローラであってもよい。これにより、ホストコンピュータから意識することなく第１および第２のメモリ装置を使い分けるという作用をもたらす。
【発明の効果】
【００２１】
本技術によれば、並列にアクセスされるデータサイズおよびアクセス速度が異なるメモリ装置をキャッシュメモリとして効率良く動作させることができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００２２】
【図１】本技術の第１の実施の形態における情報処理システムの一構成例を示す図である。
【図２】本技術の実施の形態におけるメモリアドレス空間の一例を示す図である。
【図３】本技術の実施の形態における低速メモリ装置３００の一構成例を示す図である。
【図４】本技術の実施の形態における低速メモリ装置３００の並列アクセス単位とアドレス空間の一例を示す図である。
【図５】本技術の実施の形態における高速メモリ装置２００の一構成例を示す図である。
【図６】本技術の実施の形態におけるホストコンピュータ１００の一構成例を示す図である。
【図７】本技術の第１の実施の形態におけるホストメモリ１２０の記憶内容の一例を示す図である。
【図８】本技術の実施の形態における並列操作情報テーブル１２１の記憶内容の一例を示す図である。
【図９】本技術の第１の実施の形態におけるエントリ管理情報テーブル１２２の記憶内容の一例を示す図である。
【図１０】本技術の第１の実施の形態におけるキャッシュドライバ１０４のライトコマンド処理の処理手順の一例を示す流れ図である。
【図１１】本技術の第１の実施の形態におけるキャッシュドライバ１０４のエントリの追出し処理の処理手順の一例を示す流れ図である。
【図１２】本技術の第１の実施の形態におけるキャッシュドライバ１０４のリードコマンド処理の処理手順の一例を示す流れ図である。
【図１３】本技術の第１の実施の形態におけるキャッシュドライバ１０４のキャッシュ入換え処理の処理手順の一例を示す流れ図である。
【図１４】本技術の第１の実施の形態の変形例におけるキャッシュドライバ１０４のダーティフラグクリア処理の処理手順の一例を示す流れ図である。
【図１５】本技術の第２の実施の形態におけるエントリ管理情報テーブル１２２の記憶内容の一例を示す図である。
【図１６】本技術の第２の実施の形態におけるキャッシュドライバ１０４のライトコマンド処理の処理手順の一例を示す流れ図である。
【図１７】本技術の第２の実施の形態におけるキャッシュドライバ１０４のエントリの追出し処理の処理手順の一例を示す流れ図である。
【図１８】本技術の第２の実施の形態におけるキャッシュドライバ１０４のリードコマンド処理の処理手順の一例を示す流れ図である。
【図１９】本技術の第１の実施の形態におけるキャッシュドライバ１０４のキャッシュ追加処理の処理手順の一例を示す流れ図である。
【図２０】本技術の第３の実施の形態におけるホストメモリ１２０の記憶内容の一例を示す図である。
【図２１】本技術の第３の実施の形態における未割当アドレスリスト１２４の記憶内容の一例を示す図である。
【図２２】本技術の第３の実施の形態におけるエントリ管理情報テーブル１２２の記憶内容の一例を示す図である。
【図２３】本技術の第３の実施の形態における高速メモリ装置２００の領域の割当状況の具体例を示す図である。
【図２４】本技術の第３の実施の形態におけるキャッシュドライバ１０４のライトコマンド処理の処理手順の一例を示す流れ図である。
【図２５】本技術の第３の実施の形態におけるキャッシュドライバ１０４のエントリの追出し処理の処理手順の一例を示す流れ図である。
【図２６】本技術の第３の実施の形態におけるキャッシュドライバ１０４のリードコマンド処理の処理手順の一例を示す流れ図である。
【図２７】本技術の第３の実施の形態におけるキャッシュドライバ１０４のキャッシュ入換え処理の処理手順の一例を示す流れ図である。
【図２８】本技術の第４の実施の形態において測定対象となるオフセットと並列アクセス単位との組合せの例である。
【図２９】本技術の第４の実施の形態におけるキャッシュドライバ１０４の並列アクセス単位測定処理の処理手順の一例を示す流れ図である。
【図３０】本技術の第５の実施の形態における情報処理システムの一構成例を示す図である。
【図３１】本技術の第５の実施の形態におけるメモリコントローラ３３０の一構成例を示す図である。
【発明を実施するための形態】
【００２３】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（エントリ使用フラグにより管理する例）
２．第２の実施の形態（セクタ使用状況により管理する例）
３．第３の実施の形態（割当状況により管理する例）
４．第４の実施の形態（パフォーマンス測定を行う例）
５．第５の実施の形態（メモリ装置内で管理する例）
【００２４】
＜１．第１の実施の形態＞
［情報処理システムの構成］
図１は、本技術の第１の実施の形態における情報処理システムの一構成例を示す図である。
【００２５】
この情報処理システムは、ホストコンピュータ１００と、高速メモリ装置２００と、低速メモリ装置３００とから構成される。この例では、ホストコンピュータ１００のキャッシュドライバ１０４、高速メモリ装置２００および低速メモリ装置３００はメモリシステム４００を構成する。
【００２６】
ホストコンピュータ１００は、低速メモリ装置３００に対してデータのリード処理およびライト処理等を指令するコマンドを発行するものである。このホストコンピュータ１００は、ホストコンピュータ１００としての処理を実行するプロセッサを備える。このプロセッサにより、ＯＳ（Operating System）およびアプリケーションのソフトウェア１０１およびキャッシュドライバ１０４が実行される。
【００２７】
ソフトウェア１０１は、必要に応じて、キャッシュドライバ１０４に対してライトコマンドおよびリードコマンドを実行して、データの書込みおよび読出しを行う。ソフトウェア１０１からのメモリアクセスは低速メモリ装置３００をターゲットとして行われるが、そのキャッシュメモリとして高速メモリ装置２００が使用される。
【００２８】
キャッシュドライバ１０４は、高速メモリ装置２００および低速メモリ装置３００を制御する。このキャッシュドライバ１０４は、ソフトウェア１０１に対して、データの書込みおよび読出しを行う領域を、一つの連続したアドレス（ＬＢＡ：Logical Block Address）で構成されるストレージ空間として見せる。なお、キャッシュドライバ１０４は、特許請求の範囲に記載のアクセス制御部の一例である。
【００２９】
低速メモリ装置３００は、ソフトウェア１０１から見たアドレス空間を記憶するメモリ装置である。すなわち、ソフトウェア１０１がライトコマンドおよびリードコマンドにより指定可能な最小単位であるセクタおよび実行対象とする容量は、低速メモリ装置３００のセクタおよび容量と一致する。この低速メモリ装置３００は、複数の不揮発性メモリ（ＮＶＭ：Non-Volatile Memory）３２０をＳＳＤとして有しており、これらはメモリコントローラ３１０により制御される。なお、低速メモリ装置３００は、特許請求の範囲に記載の第１のメモリ装置の一例である。
【００３０】
高速メモリ装置２００は、低速メモリ装置３００よりも高速に読み書き可能なメモリ装置であり、低速メモリ装置３００のキャッシュメモリとして機能する。低速メモリ装置３００および高速メモリ装置２００は、並列にアクセス可能な複数のメモリをそれぞれ有しており、並列にアクセスされるデータサイズおよびアクセス速度が異なる。この高速メモリ装置２００は、複数の不揮発性メモリ２２０をＳＳＤとして有しており、これらはメモリコントローラ２１０により制御される。なお、高速メモリ装置２００は、特許請求の範囲に記載の第２のメモリ装置の一例である。
【００３１】
図２は、本技術の実施の形態におけるメモリアドレス空間の一例を示す図である。
【００３２】
この例では、メモリシステムとしてソフトウェア１０１からアクセス可能な最小単位であるセクタのサイズおよび全体の容量は、低速メモリ装置３００のセクタサイズおよび容量と一致する。ここでは、１セクタを５１２Ｂ（バイト）としており、全体の容量を５１２ＧＢとしている。
【００３３】
一方、キャッシュメモリとして機能する高速メモリ装置２００は、セクタサイズが５１２Ｂで低速メモリ装置３００と同じであるが、全体の容量は６４ＧＢで低速メモリ装置３００よりも小さくなっている。
【００３４】
図３は、本技術の実施の形態における低速メモリ装置３００の一構成例を示す図である。
【００３５】
低速メモリ装置３００は、それぞれが１２８ＧＢの容量を有する４つの不揮発性メモリ（メモリダイ）３２０を有し、これらはメモリコントローラ３１０により制御される。１つの不揮発性メモリ３２０において読出しまたは書込みを行う最小単位であるページのサイズは１６ＫＢである。すなわち、１つのページには３２セクタのデータが記録される。３２セクタ未満のデータの書き換えが必要な場合には、メモリコントローラ３１０は、リードモディファイライトにより書き換えを行う。
【００３６】
メモリコントローラ３１０は、４つの不揮発性メモリ３２０に対して最大で４並列に書込みを行うことができる。このとき、メモリコントローラ３１０は、４つの不揮発性メモリ３２０のそれぞれのページ（１６ＫＢ）に対して書込みを実行し、最大６４ＫＢの書込みを実行する。
【００３７】
メモリコントローラ３１０がリードモディファイライトを行うことなく、４並列に書込みを行う場合が低速メモリ装置３００の最大スループットとなる。この実施の形態においては、最大スループットとなる書込みを実行する単位を、並列アクセス単位と称する。この例においては、低速メモリ装置３００の並列アクセス単位は６４ＫＢである。
【００３８】
図４は、本技術の実施の形態における低速メモリ装置３００の並列アクセス単位とアドレス空間の一例を示す図である。
【００３９】
この低速メモリ装置３００において最大スループットとなる書込みを実行するためには、並列アクセス単位である６４ＫＢ毎にアラインされた領域に書込みが行われる必要がある。すなわち、メモリコントローラ３１０から並列アクセス単位（６４ＫＢ）の倍数のサイズでライトコマンドの実行が指示された場合に、低速メモリ装置３００への書込みは最大スループットとなる。
【００４０】
図５は、本技術の実施の形態における高速メモリ装置２００の一構成例を示す図である。
【００４１】
高速メモリ装置２００は、それぞれが８ＧＢの容量を有する８つの不揮発性メモリ（メモリダイ）２２０を有し、これらはメモリコントローラ２１０により制御される。１つの不揮発性メモリ２２０において読出しまたは書込みを行う最小単位であるページのサイズは５１２Ｂである。すなわち、１つのページには１セクタのデータが記録される。
【００４２】
メモリコントローラ２１０は、８つの不揮発性メモリ２２０に対して最大で８並列に書込みを行うことができる。このとき、メモリコントローラ２１０は、８つの不揮発性メモリ２２０のそれぞれのページ（５１２Ｂ）に対して書込みを実行し、最大４ＫＢの書込みを実行する。
【００４３】
メモリコントローラ２１０がリードモディファイライトを行うことなく、８並列に書込みを行う場合が高速メモリ装置２００の最大スループットとなる。この例においては、高速メモリ装置２００の並列アクセス単位は４ＫＢである。すなわち、メモリコントローラ２１０から並列アクセス単位（４ＫＢ）の倍数のサイズでライトコマンドの実行が指示された場合に、高速メモリ装置２００への書込みは最大スループットとなる。
【００４４】
なお、並列アクセス単位は、特許請求の範囲に記載の「並列にアクセスされるデータサイズ」の一例である。この実施の形態において、並列アクセス単位は、上述のように、低速メモリ装置３００については６４ＫＢであり、高速メモリ装置２００については４ＫＢである。
【００４５】
図６は、本技術の実施の形態におけるホストコンピュータ１００の一構成例を示す図である。
【００４６】
ホストコンピュータ１００は、プロセッサ１１０と、ホストメモリ１２０と、高速メモリインターフェース１３０と、低速メモリインターフェース１４０とを備え、それらはバス１８０によって相互に接続されている。
【００４７】
プロセッサ１１０は、ホストコンピュータ１００における処理を実行する処理装置である。ホストメモリ１２０は、プロセッサ１１０の処理実行に必要なデータおよびプログラムなどを記憶するメモリである。例えば、ソフトウェア１０１およびキャッシュドライバ１０４は、ホストメモリ１２０に実行コードが展開され、プロセッサ１１０によって実行される。また、ソフトウェア１０１およびキャッシュドライバ１０４によって使用されるデータは、ホストメモリ１２０に展開される。
【００４８】
高速メモリインターフェース１３０は、高速メモリ装置２００とのやりとりを行うためのインターフェースである。低速メモリインターフェース１４０は、低速メモリ装置３００とのやりとりを行うためのインターフェースである。キャッシュドライバ１０４は、高速メモリインターフェース１３０および低速メモリインターフェース１４０を介して、高速メモリ装置２００および低速メモリ装置３００のそれぞれに対してリードコマンドまたはライトコマンドを実行する。
【００４９】
［テーブル構成］
図７は、本技術の第１の実施の形態におけるホストメモリ１２０の記憶内容の一例を示す図である。
【００５０】
ホストメモリ１２０は、並列操作情報テーブル１２１と、エントリ管理情報テーブル１２２と、アクセス頻度管理情報テーブル１２３と、バッファ１２５とを記憶する。キャッシュドライバ１０４は、ホストコンピュータ１００の電源遮断時に、高速メモリ装置２００または低速メモリ装置３００（もしくは両方）の不揮発性メモリに、並列操作情報テーブル１２１、エントリ管理情報テーブル１２２およびアクセス頻度管理情報テーブル１２３を退避する。
【００５１】
並列操作情報テーブル１２１は、高速メモリ装置２００および低速メモリ装置３００に対して並列操作を行うための情報を保持するテーブルである。エントリ管理情報テーブル１２２は、高速メモリ装置２００をキャッシュメモリとして使用する際の各エントリを管理するための情報を保持するテーブルである。アクセス頻度管理情報テーブル１２３は、高速メモリ装置２００をキャッシュメモリとして使用する際のエントリ毎のアクセス頻度を管理するテーブルである。キャッシュドライバ１０４は、アクセス頻度管理情報テーブル１２３の情報を利用して、例えばＬＲＵ（Least Recently Used）アルゴリズムによりエントリ毎のアクセス頻度を管理する。バッファ１２５は、高速メモリ装置２００および低速メモリ装置３００との間でデータをやりとりする際のバッファである。
【００５２】
図８は、本技術の実施の形態における並列操作情報テーブル１２１の記憶内容の一例を示す図である。
【００５３】
この並列操作情報テーブル１２１は、高速メモリ装置２００および低速メモリ装置３００について、並列アクセス単位およびアラインメントを記憶する。並列アクセス単位は、上述のように、高速メモリ装置２００については４ＫＢ、低速メモリ装置３００については６４ＫＢである。アラインメントは、書込みが最大スループットとなるための領域配置の単位であり、並列アクセス単位と同様に、高速メモリ装置２００については４ＫＢ、低速メモリ装置３００については６４ＫＢである。
【００５４】
図９は、本技術の第１の実施の形態におけるエントリ管理情報テーブル１２２の記憶内容の一例を示す図である。
【００５５】
このエントリ管理情報テーブル１２２は、低速メモリ装置３００の並列アクセス単位の６４ＫＢを１エントリとして、「割当アドレス」、「エントリ使用フラグ」および「ダーティフラグ」を保持する。なお、エントリ管理情報テーブル１２２は、特許請求の範囲に記載の管理情報記憶部の一例である。
【００５６】
「割当アドレス」は、低速メモリ装置３００の並列アクセス単位の「低速メモリアドレス」に対して割り当てられている高速メモリ装置２００の「高速メモリアドレス」を示す。「低速メモリアドレス」は、低速メモリ装置３００の論理アドレスに対応しており、論理アドレスと低速メモリ装置３００のアドレスは１対１で対応する。「高速メモリアドレス」は、キャッシュされたデータが記録されている高速メモリ装置２００のアドレスを保持する。
【００５７】
「エントリ使用フラグ」は、対応するエントリ番号が使用中であるか否かを示すフラグである。この「エントリ使用フラグ」が「使用中」（例えば「１」）を示している場合のみ、そのエントリの情報は有効である。一方、「未使用」（例えば「０」）を示している場合には、そのエントリの情報は全て無効なものとなる。なお、「エントリ使用フラグ」は、特許請求の範囲に記載の使用状況情報の一例である。
【００５８】
「ダーティフラグ」は、高速メモリ装置２００がキャッシュされているデータの更新の有無を示すフラグである。この「ダーティフラグ」が「クリーン」（例えば「０」）を示している場合には、そのエントリの低速メモリ装置３００のデータと高速メモリ装置２００の対応するデータが一致している。一方、「ダーティ」（例えば「１」）を示している場合には、そのエントリの高速メモリ装置２００のデータは更新されており、そのエントリの低速メモリ装置３００のデータと高速メモリ装置２００の対応するデータは一致していない可能性がある。なお、「ダーティフラグ」は、特許請求の範囲に記載の不一致情報の一例である。
【００５９】
この実施の形態において、低速メモリ装置３００および高速メモリ装置２００は、並列アクセス単位により管理される。すなわち、低速メモリ装置３００の管理単位は６４ＫＢであり、高速メモリ装置２００の管理単位は４ＫＢである。このエントリ管理情報テーブル１２２においては、低速メモリ装置３００の管理単位である６４ＫＢを１エントリとして、高速メモリ装置２００の４ＫＢ毎の管理単位を単位として管理が行われる。
【００６０】
［動作］
図１０は、本技術の第１の実施の形態におけるキャッシュドライバ１０４のライトコマンド処理の処理手順の一例を示す流れ図である。キャッシュドライバ１０４は、ソフトウェア１０１からライトコマンドを受けると、バッファ１２５に保持されたライトデータを低速メモリ装置３００の並列アクセス単位（６４ＫＢ）毎に分割して（ステップＳ９１１）、以下のライト処理を行う。
【００６１】
キャッシュドライバ１０４は、処理対象となるデータを選択して（ステップＳ９１２）、そのデータが高速メモリ装置２００に記憶されていない場合には（ステップＳ９１３：Ｎｏ）、エントリに空きがあるか否かを判断する（ステップＳ９１４）。高速メモリ装置２００のエントリに空きがない場合には（ステップＳ９１４：Ｎｏ）、高速メモリ装置２００のエントリの追出し処理を実行する（ステップＳ９２０）。なお、このエントリの追出し処理（ステップＳ９２０）の内容については後述する。
【００６２】
高速メモリ装置２００のエントリに空きがある場合（ステップＳ９１４：Ｙｅｓ）、または、エントリの追出し処理（ステップＳ９２０）により空きができた場合には、エントリのデータを生成する（ステップＳ９１５）。すなわち、低速メモリ装置３００のデータが、高速メモリ装置２００にコピーされる。
【００６３】
処理対象となるデータが高速メモリ装置２００に記憶されている場合（ステップＳ９１３：Ｙｅｓ）、または、エントリのデータが生成された場合（ステップＳ９１５）、高速メモリ装置２００のエントリにデータの書込みが行われる（ステップＳ９１６）。そして、この書込みに関して、エントリ管理情報テーブル１２２が更新される（ステップＳ９１７）。
【００６４】
並列アクセス単位毎に分割されたデータの全てについて書込みが行われるまで、ステップＳ９１２以降の処理が繰り返される（ステップＳ９１８：Ｎｏ）。全てのデータの書込みが完了すると（ステップＳ９１８：Ｙｅｓ）、キャッシュドライバ１０４はライトコマンドの完了をソフトウェア１０１に通知する（ステップＳ９１９）。
【００６５】
図１１は、本技術の第１の実施の形態におけるキャッシュドライバ１０４のエントリの追出し処理（ステップＳ９２０）の処理手順の一例を示す流れ図である。
【００６６】
キャッシュドライバ１０４は、アクセス頻度管理情報テーブル１２３を参照して、例えばＬＲＵアルゴリズムにより、高速メモリ装置２００における追出し対象エントリを決定する（ステップＳ９２１）。
【００６７】
追出し対象エントリの「ダーティフラグ」が「ダーティ」を示している場合には（ステップＳ９２２：Ｙｅｓ）、そのエントリのデータを高速メモリ装置２００から読み出して（ステップＳ９２３）、低速メモリ装置３００に書き込む（ステップＳ９２４）。これにより、低速メモリ装置３００のデータが最新状態となる。一方、追出し対象エントリの「ダーティフラグ」が「クリーン」を示している場合には（ステップＳ９２２：Ｎｏ）、そのエントリの低速メモリ装置３００のデータが高速メモリ装置２００と一致しているため、低速メモリ装置３００に書き戻す必要はない。
【００６８】
図１２は、本技術の第１の実施の形態におけるキャッシュドライバ１０４のリードコマンド処理の処理手順の一例を示す流れ図である。キャッシュドライバ１０４は、低速メモリ装置３００の並列アクセス単位（６４ＫＢ）毎に分割して（ステップＳ９３１）、以下のリード処理を行う。
【００６９】
キャッシュドライバ１０４は、処理対象となるデータを選択して（ステップＳ９３２）、そのデータが高速メモリ装置２００に記憶されている場合には（ステップＳ９３３：Ｙｅｓ）、高速メモリ装置２００から読出しを行う（ステップＳ９３５）。いわゆるキャッシュヒットの場合である。
【００７０】
一方、処理対象となるデータが高速メモリ装置２００に記憶されていない場合には（ステップＳ９３３：Ｎｏ）、低速メモリ装置３００から読出しを行う（ステップＳ９３４）。いわゆるキャッシュミスヒットの場合である。そして、キャッシュの入換え処理を行う（ステップＳ９４０）。このキャッシュ入換え処理（ステップＳ９４０）の内容については後述する。
【００７１】
高速メモリ装置２００または低速メモリ装置３００から読出しが行われると、キャッシュドライバ１０４は、そのリードデータをバッファ１２５に転送する（ステップＳ９３７）。
【００７２】
並列アクセス単位毎に分割されたデータの全てについて読出しが行われるまで、ステップＳ９３２以降の処理が繰り返される（ステップＳ９３８：Ｎｏ）。全てのデータの書込みが完了すると（ステップＳ９３８：Ｙｅｓ）、キャッシュドライバ１０４はリードコマンドの完了をソフトウェア１０１に通知する（ステップＳ９３９）。
【００７３】
なお、キャッシュ入換え処理は、リードコマンド処理終了後に行ってもよい。その場合、低速メモリ装置３００から読み出したデータをバッファ１２５に一時的に保持してキャッシュ入換え処理を行い、終了後にそのデータを破棄することが考えられる。キャッシュ入換え処理をリードコマンド処理終了後に行うことにより、リードコマンド処理中に行う処理数を削減することができ、ソフトウェア１０１はリードコマンド完了の応答を早期に受信することができる。
【００７４】
ここでは、高速メモリ装置２００をリードライト両用のキャッシュメモリとして利用することを想定したが、ライトキャッシュとして利用する場合には、リードコマンド処理におけるキャッシュ入換え処理は不要である。
【００７５】
図１３は、本技術の第１の実施の形態におけるキャッシュドライバ１０４のキャッシュ入換え処理（ステップＳ９４０）の処理手順の一例を示す流れ図である。
【００７６】
キャッシュドライバ１０４は、高速メモリ装置２００のエントリに空きがあるか否かを判断する（ステップＳ９４１）。高速メモリ装置２００のエントリに空きがない場合には（ステップＳ９４１：Ｎｏ）、高速メモリ装置２００のエントリの追出し処理を実行する（ステップＳ９４２）。なお、このエントリの追出し処理（ステップＳ９４２）の内容は、上述のエントリの追出し処理（ステップＳ９２０）と同様であるため、詳細な説明は省略する。
【００７７】
高速メモリ装置２００のエントリに空きがある場合（ステップＳ９４１：Ｙｅｓ）、または、エントリの追出し処理（ステップＳ９４２）により空きができた場合には、低速メモリ装置３００のデータが、高速メモリ装置２００のエントリに書き込まれる（ステップＳ９４３）。また、エントリ管理情報テーブル１２２が更新される（ステップＳ９４４）。
【００７８】
このように、本技術の第１の実施の形態によれば、低速メモリ装置３００の並列アクセス単位にアラインさせた領域毎に、対応する高速メモリ装置２００を管理することにより、高速メモリ装置２００をキャッシュメモリとして効率良く動作させることができる。
【００７９】
［変形例］
上述の第１の実施の形態では、エントリの追出し処理においてダーティフラグをクリアしていたが（ステップＳ９２２）、この処理は前もって行うことが可能である。すなわち、キャッシュドライバ１０４は、ソフトウェア１０１からコマンドを受け付けていないアイドル状態において、ダーティフラグのクリア処理を行ってもよい。クリア処理を前もって実行しておくことにより、ライトコマンド実行中に追い出し処理が発生した場合にはダーティフラグが「クリーン」となっており、処理が削減されるため処理時間を短縮することができる。
【００８０】
図１４は、本技術の第１の実施の形態の変形例におけるキャッシュドライバ１０４のダーティフラグクリア処理の処理手順の一例を示す流れ図である。
【００８１】
キャッシュドライバ１０４は、ソフトウェア１０１からコマンドを受け付けていないアイドル状態になると、ダーティフラグが「ダーティ」を示すエントリを検索する（ステップＳ９５１）。「ダーティ」を示すエントリが存在しない場合には（ステップＳ９５２：Ｎｏ）、このダーティフラグクリア処理を終了する。
【００８２】
「ダーティ」を示すエントリが存在する場合には（ステップＳ９５２：Ｙｅｓ）、アクセス頻度管理情報テーブル１２３を参照して、例えばＬＲＵアルゴリズムにより、高速メモリ装置２００における処理対象エントリを決定する（ステップＳ９５３）。そして、処理対象エントリのデータを高速メモリ装置２００から読み出して（ステップＳ９５４）、低速メモリ装置３００に書き込む（ステップＳ９５５）。その後、そのエントリのダーティフラグをクリアする（ステップＳ９５６）。これにより、ダーティフラグは「クリーン」を示すようになる。
【００８３】
このダーティフラグクリア処理は、キャッシュドライバ１０４がソフトウェア１０１から新たなコマンドを受け付けるまで（ステップＳ９５７：Ｙｅｓ）、繰り返すことができる（ステップＳ９５７：Ｎｏ）。
【００８４】
このように、本技術の第１の実施の形態の変形例によれば、ダーティフラグのクリア処理を前もって実行しておくことにより、ライトコマンド実行中の追い出し処理に要する処理を削減することができる。
【００８５】
＜２．第２の実施の形態＞
上述の第１の実施の形態では、１つのエントリに対して１つのエントリ使用フラグを用いて管理していたが、その場合、低速メモリ装置３００から高速メモリ装置２００に一度にまとめてデータ書込みを行う必要があり、また、「ダーティ」なデータを高速メモリ装置２００から低速メモリ装置３００に書き戻す際にもまとめて行う必要がある。そのため、エントリのごく一部を使用する場合であってもエントリ全体の入換えを要し、無駄な処理が行われるおそれがあった。そこで、この第２の実施の形態では、１つのエントリを複数のセクタに分けて管理を行う。なお、情報処理システムとしての基本的な構成は、上述の第１の実施の形態と同様であるため、詳細な説明は省略する。
【００８６】
［テーブル構成］
図１５は、本技術の第２の実施の形態におけるエントリ管理情報テーブル１２２の記憶内容の一例を示す図である。
【００８７】
この第２の実施の形態のエントリ管理情報テーブル１２２は、上述の第１の実施の形態における「エントリ使用フラグ」に代えて、「セクタ使用状況」を保持する。この「セクタ使用状況」は、高速メモリ装置２００の「高速メモリアドレス」に対応する１２８のセクタの各々について、そのセクタが使用中であるか否かを示す。これにより、上述の第１の実施の形態のようにエントリ（６４ＫＢ）単位ではなく、セクタ（５１２Ｂ）単位で使用の有無を管理することができる。なお、「セクタ使用状況」は、特許請求の範囲に記載の使用状況情報の一例である。
【００８８】
この第２の実施の形態においては、高速メモリ装置２００の割当てについては１つのエントリについて連続した領域がまとめて割り当てられる。例えば、６４ＫＢのエントリが高速メモリ装置２００上に割り当てられるが、高速メモリ装置２００にデータを転送するのは５１２Ｂのセクタ毎に必要となった時点でよい。したがって、不要なデータ転送を削減することができる。
【００８９】
［動作］
図１６は、本技術の第２の実施の形態におけるキャッシュドライバ１０４のライトコマンド処理の処理手順の一例を示す流れ図である。
【００９０】
この第２の実施の形態におけるライトコマンド処理は、基本的には上述の第１の実施の形態と同様である。ただし、高速メモリ装置２００の空きエントリに対して、低速メモリ装置３００のデータをコピーする処理（ステップＳ９１５）が不要である点が異なる。後述するように、不足するデータは後から追加される。
【００９１】
図１７は、本技術の第２の実施の形態におけるキャッシュドライバ１０４のエントリの追出し処理（ステップＳ９６０）の処理手順の一例を示す流れ図である。
【００９２】
この第２の実施の形態におけるエントリの追出し処理は、基本的には上述の第１の実施の形態と同様である。ただし、追出し対象エントリの「ダーティフラグ」が「ダーティ」を示している場合には（ステップＳ９６２：Ｙｅｓ）、キャッシュドライバ１０４がエントリのデータを生成する（ステップＳ９６３）点が異なる。すなわち、キャッシュドライバ１０４は、「セクタ使用状況」に従って低速メモリ装置３００からデータを読み出して、高速メモリ装置２００のデータとマージすることにより、エントリ全体のデータを生成する。
【００９３】
追出し対象のエントリの「セクタ使用状況」により示される状況が、１２８セクタ未満の１つの連続したセクタである場合、エントリ全体のデータを生成することなく、１回のライトコマンドの実行によって低速メモリ装置３００にデータ書込みを行ってもよい。この場合、エントリのデータ生成に該当する処理は低速メモリ装置３００の内部で実行されることになり、低速メモリインターフェース１４０を介して読み出す処理が削減され、処理時間を短縮することができる。
【００９４】
なお、上述の第１の実施の形態の変形例と同様に、キャッシュドライバ１０４は、ソフトウェア１０１からコマンドを受け付けていないアイドル状態において、ダーティフラグのクリア処理を行ってもよい。
【００９５】
図１８は、本技術の第２の実施の形態におけるキャッシュドライバ１０４のリードコマンド処理の処理手順の一例を示す流れ図である。
【００９６】
この第２の実施の形態におけるリードコマンド処理は、基本的には上述の第１の実施の形態と同様である。ただし、高速メモリ装置２００からデータを読み出す際（ステップＳ９３５）、不足データがあれば追加を行う点が異なる。すなわち、「セクタ使用状況」が「未使用」（例えば「０」）を示すセクタを読み出す必要がある場合（ステップＳ９６６：Ｙｅｓ）、そのデータを低速メモリ装置３００から読み出して（ステップＳ９６７）、ソフトウェア１０１に返す。そして、それとともに、高速メモリ装置２００にも追加する処理を行う（ステップＳ９７０）。これにより、必要になった時点でデータを低速メモリ装置３００から高速メモリ装置２００にコピーすることができる。
【００９７】
なお、キャッシュ入換え処理は上述の第１の実施の形態と同様であり、この第２の実施の形態においてもキャッシュ入換え処理をリードコマンド処理終了後に行ってもよい。
【００９８】
図１９は、本技術の第１の実施の形態におけるキャッシュドライバ１０４のキャッシュ追加処理（ステップＳ９７０）の処理手順の一例を示す流れ図である。
【００９９】
キャッシュドライバ１０４は、高速メモリ装置２００においてデータを追加するエントリを検索する（ステップＳ９７１）。そして、ステップＳ９６７において読み出されたデータが、高速メモリ装置２００に書き込まれる（ステップＳ９７２）。また、エントリ管理情報テーブル１２２が更新される（ステップＳ９７３）。
【０１００】
なお、このキャッシュ追加処理は、リードコマンド処理終了後に行ってもよい。
【０１０１】
このように、本技術の第２の実施の形態によれば、エントリにおけるセクタ単位で使用の有無を管理することにより、不要なデータ転送を削減することができる。
【０１０２】
＜３．第３の実施の形態＞
上述の第２の実施の形態では、高速メモリ装置２００の連続するセクタに対応して「セクタ使用状況」を管理していたが、高速メモリ装置２００の割当てを任意に行うことも可能である。この第３の実施の形態では、エントリ内の読み書きされたデータのみに高速メモリ装置２００の領域の割当てを行う。なお、情報処理システムとしての基本的な構成は、上述の第１の実施の形態と同様であるため、詳細な説明は省略する。
【０１０３】
［テーブル構成］
図２０は、本技術の第３の実施の形態におけるホストメモリ１２０の記憶内容の一例を示す図である。
【０１０４】
この第３の実施の形態では、上述の第１の実施の形態における情報に加えて、未割当アドレスリスト１２４を記憶する。この未割当アドレスリスト１２４は、高速メモリ装置２００の領域のうち、キャッシュのエントリとして割り当てられていない領域を管理するものである。
【０１０５】
図２１は、本技術の第３の実施の形態における未割当アドレスリスト１２４の記憶内容の一例を示す図である。
【０１０６】
この未割当アドレスリスト１２４は、高速メモリ装置２００の「高速メモリアドレス」に対応して、その領域がキャッシュのエントリとして割り当てられているか否かを示す「割当状態」を保持する。キャッシュドライバ１０４は、この未割当アドレスリスト１２４を参照することにより、高速メモリ装置２００の領域がキャッシュのエントリとして割り当てられているか否かを判断することができる。
【０１０７】
高速メモリ装置２００の割当てを行う際には、高速メモリ装置２００のスループットが最大となるサイズ（４ＫＢ）と、アドレスのアラインメントに合わせて、高速メモリ装置２００のアドレス空間が分割される。分割されたアドレス空間毎に、キャッシュとしての割当状態が管理される。すなわち、この未割当アドレスリスト１２４は、４ＫＢのアラインメントにより、並列アクセス単位（４ＫＢ）で管理される。
【０１０８】
なお、この例では、４ＫＢでアラインメントされた連続するアドレスが表記されているが、先頭アドレスを代表値としてもよい。
【０１０９】
また、高速メモリ装置２００のアドレスの代わりに、インデックスとして、値の小さい先頭アドレス（０ｘ００００）に「０」、次に値の小さい先頭アドレス（０ｘ０００８）に「１」、という要領で、昇順に番号を付して管理してもよい。この場合、インデックスから先頭アドレスを得るためには、「インデックス番号×アラインメント」によって算出することが可能である。
【０１１０】
「割当状態」は、分割されたアドレス空間毎の割当状態を示す。この「割当状態」が、例えば「１」であればキャッシュとして割当済の状態を表し、「０」であればキャッシュとして割り当てられていない状態を表す。キャッシュドライバ１０４は、キャッシュとしての割当てが必要となった場合、この未割当アドレスリスト１２４を先頭から参照して「割当状態」が「０」を示すアドレス空間を検索して、該当するアドレス空間の割当てを行う。
【０１１１】
図２２は、本技術の第３の実施の形態におけるエントリ管理情報テーブル１２２の記憶内容の一例を示す図である。
【０１１２】
この第３の実施の形態のエントリ管理情報テーブル１２２は、「高速メモリアドレス」を個別に指定するとともに、上述の第１の実施の形態における「エントリ使用フラグ」に代えて「割当状況」を保持する。この「割当状況」は、高速メモリ装置２００に割り当てられている領域が低速メモリ装置３００の何れの領域に対応するかを示すものである。
【０１１３】
「高速メモリアドレス」と「割当状況」とを組み合わせることにより、セクタを単位とした割当ての状況、すなわち、割当ての有無、および、割り当てられているアドレス配置を知ることができる。なお、割当状況は、特許請求の範囲に記載の使用状況情報の一例である。
【０１１４】
図２３は、本技術の第３の実施の形態における高速メモリ装置２００の領域の割当状況の具体例を示す図である。
【０１１５】
この例では、低速メモリ装置３００の並列アクセス単位６４ＫＢに対して、高速メモリ装置２００の並列アクセス単位４ＫＢを個別に割り当てている。すなわち、低速メモリ装置３００の「０ｘ００８０」からの領域において、第１番目の４ＫＢ領域にはキャッシュのエントリは割り当てられていない。第２番目の４ＫＢ領域には、高速メモリ装置２００の「０ｘ００００」の領域が割り当てられている。第３番目の４ＫＢ領域には、高速メモリ装置２００の「０ｘ０００８」の領域が割り当てられている。第４番目の４ＫＢ領域にはキャッシュのエントリは割り当てられていない。第５番目の４ＫＢ領域には、高速メモリ装置２００の「０ｘ００Ｆ０」の領域が割り当てられている。
【０１１６】
このように、第３の実施の形態のエントリ管理情報テーブル１２２を参照することにより、低速メモリ装置３００に割り当てられている高速メモリ装置２００の領域を知ることができる。
【０１１７】
［動作］
図２４は、本技術の第３の実施の形態におけるキャッシュドライバ１０４のライトコマンド処理の処理手順の一例を示す流れ図である。
【０１１８】
この第３の実施の形態におけるライトコマンド処理は、基本的には上述の第２の実施の形態と同様である。ただし、以下に説明するように、高速メモリ装置２００におけるセクタの使用状況ではなく、高速メモリ装置２００への割当ての状態を判断する点において第２の実施の形態とは異なっている。
【０１１９】
キャッシュドライバ１０４は、処理対象となるデータを選択して（ステップＳ８１２）、その全てのデータを書き込むための領域が既に高速メモリ装置２００に割当済であるか否かを判断する（ステップＳ８１３）。割当済でなければ（ステップＳ８１３：Ｎｏ）、高速メモリ装置２００の領域に、割当済の領域と合わせて、処理対象とする全てのデータを書き込むための未割当の領域が有るか否かを判断する（ステップＳ８１４）。もし、そのような未割当の領域がなければ（ステップＳ８１４：Ｎｏ）、高速メモリ装置２００のエントリの追出し処理を実行する（ステップＳ８２０）。なお、このエントリの追出し処理（ステップＳ８２０）の内容については後述する。
【０１２０】
その後、高速メモリ装置２００にデータの書込みが行われる（ステップＳ８１６）。このとき、割当済の領域または未割当の領域に、処理対象とするデータが書き込まれる。そして、この書込みに関して、エントリ管理情報テーブル１２２が更新される（ステップＳ８１７）。
【０１２１】
図２５は、本技術の第３の実施の形態におけるキャッシュドライバ１０４のエントリの追出し処理（ステップＳ８２０）の処理手順の一例を示す流れ図である。
【０１２２】
キャッシュドライバ１０４は、アクセス頻度管理情報テーブル１２３を参照して、例えばＬＲＵアルゴリズムにより、高速メモリ装置２００における追出し対象エントリを決定する（ステップＳ８２１）。
【０１２３】
追出し対象エントリの「ダーティフラグ」が「ダーティ」を示している場合には（ステップＳ８２２：Ｙｅｓ）、そのエントリのデータを高速メモリ装置２００から読み出して（ステップＳ８２３）、低速メモリ装置３００に書き込む（ステップＳ８２４）。これにより、低速メモリ装置３００のデータが最新状態となる。一方、追出し対象エントリの「ダーティフラグ」が「クリーン」を示している場合には（ステップＳ８２２：Ｎｏ）、そのエントリの低速メモリ装置３００のデータが高速メモリ装置２００と一致しているため、低速メモリ装置３００に書き戻す必要はない。その後、エントリ管理情報テーブル１２２が更新される（ステップＳ８２５）。
【０１２４】
このようにして追出し（解放）された高速メモリ装置２００の領域について、そのサイズが、新たにデータを書き込むサイズ以上であるか否かが判断される（ステップＳ８２６）。必要なサイズに足りない場合（ステップＳ８２６：Ｎｏ）、ステップＳ８２１以降の処理が繰り返される。必要なサイズを満たす場合には（ステップＳ８２６：Ｙｅｓ）、この追出し処理を終了する。
【０１２５】
図２６は、本技術の第３の実施の形態におけるキャッシュドライバ１０４のリードコマンド処理の処理手順の一例を示す流れ図である。
【０１２６】
この第３の実施の形態におけるリードコマンド処理は、基本的には上述の第２の実施の形態と同様である。ただし、以下に説明するように、データが不足する場合においては、第２の実施の形態のようにセクタ単位で追加するのではなく、キャッシュの入換えを行う点において、第２の実施の形態とは異なる。
【０１２７】
処理対象となるデータが高速メモリ装置２００に記憶されている場合には（ステップＳ８３３：Ｙｅｓ）、キャッシュドライバ１０４は、高速メモリ装置２００からデータを読み出す（ステップＳ８３５）。その際、不足データがある場合には（ステップＳ８３６：Ｙｅｓ）、その不足データを低速メモリ装置３００から読み出して（ステップＳ８３７）、必要なデータが揃ったところでソフトウェア１０１に返す。その後、キャッシュの入換え処理を行う（ステップＳ８５０）。
【０１２８】
一方、処理対象となるデータが高速メモリ装置２００に記憶されていない場合には（ステップＳ８３３：Ｎｏ）、処理対象となるデータの全てを低速メモリ装置３００から読み出して（ステップＳ８３４）、ソフトウェア１０１に返す。この場合においても、キャッシュの入換え処理を行う（ステップＳ８５０）。
【０１２９】
図２７は、本技術の第３の実施の形態におけるキャッシュドライバ１０４のキャッシュ入換え処理（ステップＳ８５０）の処理手順の一例を示す流れ図である。
【０１３０】
キャッシュドライバ１０４は、高速メモリ装置２００に割当済の領域がなければ（ステップＳ８５１：Ｎｏ）、高速メモリ装置２００に使用可能な未割当領域があるか否かを判断する（ステップＳ８５２）。未割当領域がない場合には（ステップＳ８５２：Ｎｏ）、高速メモリ装置２００のエントリの追出し処理を実行する（ステップＳ８５３）。なお、このエントリの追出し処理（ステップＳ８５３）の内容は、上述のエントリの追出し処理（ステップＳ８２０）と同様であるため、詳細な説明は省略する。
【０１３１】
その後、高速メモリ装置２００にデータが書き込まれる（ステップＳ８５４）。また、エントリ管理情報テーブル１２２が更新される（ステップＳ９５５）。
【０１３２】
このように、本技術の第３の実施の形態によれば、エントリ管理情報テーブル１２２において高速メモリ装置２００の割当状況を管理することにより、高速メモリ装置２００の割当てを任意の配置により行うことができる。
【０１３３】
＜４．第４の実施の形態＞
上述の実施の形態では、高速メモリ装置２００および低速メモリ装置３００の並列アクセス単位が既知であるものと想定していた。この第４の実施の形態では、高速メモリ装置２００および低速メモリ装置３００の少なくとも一方の並列アクセス単位が未知の値である場合に、これを測定する手法について説明する。なお、想定する情報処理システムは上述の実施の形態と同様であるため、詳細な説明は省略する。
【０１３４】
図２８は、本技術の第４の実施の形態において測定対象となるオフセットと並列アクセス単位との組合せの例である。
【０１３５】
この第４の実施の形態では、オフセットと並列アクセス単位との複数の組合せを予め設定して、各組合せについて順番にパフォーマンスを測定して、その中で最もスループットが高かった組合せを採用する。算出されたスループットの値が同じものが複数存在する場合、オフセットの値と並列アクセス単位それぞれが最も小さい値を選択する。この例では、並列アクセス単位として、４ＫＢ、８ＫＢ、１６ＫＢ、３２ＫＢ、６４ＫＢおよび１２８ＫＢの６種類を想定し、アラインメントのオフセットとして、０、４ＫＢ、８ＫＢ、１６ＫＢ、３２ＫＢおよび６４ＫＢの６種類を想定している。この中で、１番から２１番まで順に選択される。
【０１３６】
パフォーマンスを測定する際には、例えば、ライトコマンドを実行し、１コマンドの応答時間、または、単位時間内に実行したコマンド数を測定する。このとき、ライトコマンドの転送データサイズを、選択した並列アクセス単位とする。また、開始アドレスとして、「オフセット＋並列アクセス単位」を指定する。
【０１３７】
１コマンドの応答時間を測定した場合は、「転送サイズ／応答時間」によりスループット（バイト／秒）を算出する。単位時間内に実行したコマンド数を測定した場合は、「コマンド数×転送データサイズ」を計算して、スループットを算出する。
【０１３８】
［動作］
図２９は、本技術の第４の実施の形態におけるキャッシュドライバ１０４の並列アクセス単位測定処理の処理手順の一例を示す流れ図である。キャッシュドライバ１０４は、情報処理システムのメモリ（この例では低速メモリ装置３００および高速メモリ装置２００）の中に並列アクセス単位が未知の値のものがあれば（ステップＳ８９１：Ｙｅｓ）、以下の手順により、並列アクセス単位の測定を行う。
【０１３９】
キャッシュドライバ１０４は、測定対象となるメモリを選択する（ステップＳ８９２）。そして、オフセットと並列アクセス単位との組合せを１組ずつ選択しながら（ステップＳ８９３）、その組合せによるパフォーマンスを測定する（ステップＳ８９４）。キャッシュドライバ１０４は、図示しないタイマーを用いてパフォーマンス測定を行う。この測定は、予め設定されたオフセットと並列アクセス単位との組合せの全てについて繰り返し行われる（ステップＳ８９５：Ｎｏ）。
【０１４０】
全ての組合せについて測定が終了すると（ステップＳ８９５：Ｙｅｓ）、その中で最もスループットが高かったオフセットと並列アクセス単位との組合せが選択される（ステップＳ８９６）。その結果に応じて、並列操作情報テーブル１２１が更新される（ステップＳ８９７）。
【０１４１】
最終的に、並列アクセス単位が未知の値のものがなくなれば（ステップＳ８９１：Ｎｏ）、この並列アクセス単位測定処理は終了する。
【０１４２】
このように、本技術の第４の実施の形態によれば、並列アクセス単位が未知のメモリであっても、測定によりその並列アクセス単位を求めて、並列操作情報テーブル１２１に設定することができる。
【０１４３】
＜５．第５の実施の形態＞
上述の実施の形態では、高速メモリ装置２００および低速メモリ装置３００のそれぞれにメモリコントローラを配置する構成を想定していた。そのため、ホストコンピュータ１００のキャッシュドライバ１０４によって高速メモリ装置２００または低速メモリ装置３００にアクセスを振り分ける必要があった。これに対し、この第５の実施の形態では、メモリコントローラを１つに統合して、ホストコンピュータ１００から特に意識することなくメモリを高速メモリと低速メモリを使い分けることを可能にする。
【０１４４】
［情報処理システムの構成］
図３０は、本技術の第５の実施の形態における情報処理システムの一構成例を示す図である。
【０１４５】
この情報処理システムは、ホストコンピュータ１００と、メモリ装置３０１とから構成される。上述の第１乃至第４の実施の形態と異なり、メモリ装置３０１内に高速不揮発性メモリ２２１および低速不揮発性メモリ３２１の両者を備え、それぞれメモリコントローラ３３０に接続される。高速不揮発性メモリ２２１および低速不揮発性メモリ３２１の何れにアクセスするかは、メモリコントローラ３３０が判断を行う。
【０１４６】
ホストコンピュータ１００からは、高速不揮発性メモリ２２１および低速不揮発性メモリ３２１の何れにアクセスするかは意識しなくてよいため、上述の第１乃至第４の実施の形態と異なりキャッシュドライバは不要となる。それに代えて、ホストコンピュータ１００は、ソフトウェア１０１からメモリ装置３０１にアクセスするためのデバイスドライバ１０５を備える。
【０１４７】
図３１は、本技術の第５の実施の形態におけるメモリコントローラ３３０の一構成例を示す図である。
【０１４８】
メモリコントローラ３３０は、上述の第１乃至第４の実施の形態におけるキャッシュドライバ１０４と同様の処理を行う。そのため、このメモリコントローラ３３０は、プロセッサ３３１と、メモリ３３２と、並列操作情報保持部３３３と、エントリ管理部３３４と、アクセス頻度管理部３３５と、バッファ３３６とを備える。また、外部とのインターフェースとして、ホストインターフェース３３７と、高速メモリインターフェース３３８と、低速メモリインターフェース３３９とを備える。なお、メモリコントローラ３３０は、特許請求の範囲に記載のアクセス制御部の一例である。
【０１４９】
プロセッサ３３１は、メモリコントローラ３３０を動作させるための処理を行う処理装置である。メモリ３３２は、プロセッサ３３１の動作に必要なデータやプログラムを記憶するためのメモリである。
【０１５０】
並列操作情報保持部３３３は、高速不揮発性メモリ２２１および低速不揮発性メモリ３２１に対して並列操作を行うための情報を保持する並列操作情報テーブル１２１を保持するものである。エントリ管理部３３４は、高速不揮発性メモリ２２１をキャッシュメモリとして使用する際の各エントリを管理するためのエントリ管理情報テーブル１２２を管理するものである。アクセス頻度管理部３３５は、高速不揮発性メモリ２２１をキャッシュメモリとして使用する際のエントリ毎のアクセス頻度を管理するアクセス頻度管理情報テーブル１２３を管理するものである。バッファ３３６は、高速メモリ装置２００および低速メモリ装置３００との間でデータをやりとりする際のバッファである。
【０１５１】
ホストインターフェース３３７は、ホストコンピュータ１００との間でやりとりを行うためのインターフェースである。高速メモリインターフェース３３８は、高速不揮発性メモリ２２１との間でやりとりを行うためのインターフェースである。低速メモリインターフェース３３９は、低速不揮発性メモリ３２１との間でやりとりを行うためのインターフェースである。
【０１５２】
このような構成において、メモリコントローラ３３０は、高速不揮発性メモリ２２１および低速不揮発性メモリ３２１に対してライトアクセスやリードアクセス等を行う。その制御の内容は上述の第１乃至第４の実施の形態におけるキャッシュドライバ１０４と同様であるため、詳細な説明は省略する。
【０１５３】
このように、本技術の第５の実施の形態によれば、何れのメモリにアクセスすべきかがメモリ装置３０１の中で判断されるため、ホストコンピュータ１００からは意識することなくメモリを使い分けることができる。
【０１５４】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１５５】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disc）、メモリカード、ブルーレイディスク（Blu-ray（登録商標）Disc）等を用いることができる。
【０１５６】
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
【０１５７】
なお、本技術は以下のような構成もとることができる。
（１）並列にアクセス可能な複数のメモリをそれぞれ有して並列にアクセスされるデータサイズおよびアクセス速度が異なる第１および第２のメモリ装置の対応する各々の管理単位を関連付けて管理情報として記憶する管理情報記憶部と、
前記管理情報に基づいて前記第１および第２のメモリ装置の何れかに対してアクセスを行うアクセス制御部と
を具備するメモリアクセス装置。
（２）前記第２のメモリ装置は、前記第１のメモリ装置と比較して、アクセス速度がより高速であり、かつ、並列にアクセスされるデータサイズがより狭く、
前記管理情報記憶部は、前記第１および第２のメモリ装置において並列にアクセスされるデータサイズを各々の管理単位として前記管理情報を記憶する
前記（１）に記載のメモリアクセス装置。
（３）前記管理情報記憶部は、前記第１のメモリ装置の所定の１つの管理単位と対応する前記第２のメモリ装置の複数の管理単位とを関連付けて前記管理情報として記憶する
前記（２）に記載のメモリアクセス装置。
（４）前記管理情報記憶部は、前記第１のメモリ装置の前記所定の１つの管理単位に対応して前記第２のメモリ装置の複数の管理単位の全体について使用状況を示す使用状況情報を記憶する
前記（３）に記載のメモリアクセス装置。
（５）前記管理情報記憶部は、前記第１のメモリ装置の前記所定の１つの管理単位に対応して前記第２のメモリ装置の複数の管理単位の各々について使用状況を示す使用状況情報を記憶する
前記（３）に記載のメモリアクセス装置。
（６）前記使用状況情報は、前記第１のメモリ装置の前記所定の１つの管理単位に対応して割り当てられた前記第２のメモリ装置の複数の管理単位の各々についてアドレスの順序に従って前記使用状況を示す
前記（５）に記載のメモリアクセス装置。
（７）前記使用状況情報は、前記第１のメモリ装置の前記所定の１つの管理単位に対応して前記第２のメモリ装置の複数の管理単位の各々について割当ての状況を示す
前記（５）に記載のメモリアクセス装置。
（８）前記管理情報記憶部は、前記第１のメモリ装置の前記管理単位に対応するものとして割り当てられているか否かを前記第２のメモリ装置の前記複数の管理単位ごとに割当情報として記憶する
前記（３）または（５）から（７）のいずれかに記載のメモリアクセス装置。
（９）前記管理情報記憶部は、前記第１のメモリ装置の前記所定の１つの管理単位に対応して前記第２のメモリ装置の複数の管理単位の何れかにおいて前記第１のメモリ装置と不一致が生じているか否かを示す不一致情報を記憶する
前記（３）から（８）のいずれかに記載のメモリアクセス装置。
（１０）アイドル状態になると、前記不一致情報が前記第１のメモリ装置との不一致を示している前記第２のメモリ装置のデータを、対応する前記第１のメモリ装置に書き込む処理を行う前記（９）に記載のメモリアクセス装置。
（１１）前記第１のメモリ装置の前記所定の１つの管理単位は、前記第１のメモリ装置の最大スループットでライトコマンドが実行される領域毎に割り当てられる
前記（３）から（１０）のいずれかに記載のメモリアクセス装置。
（１２）並列にアクセス可能な複数のメモリをそれぞれ有して並列にアクセスされるデータサイズおよびアクセス速度が異なる第１および第２のメモリ装置と、
前記第１および第２のメモリ装置の対応する各々の管理単位を関連付けて管理情報として記憶する管理情報記憶部と、
前記管理情報に基づいて前記第１および第２のメモリ装置の何れかに対してアクセスを行うアクセス制御部と
を具備するメモリシステム。
（１３）前記第１および第２のメモリ装置は、不揮発性メモリである
前記（１２）に記載のメモリシステム。
（１４）並列にアクセス可能な複数のメモリをそれぞれ有して並列にアクセスされるデータサイズおよびアクセス速度が異なる第１および第２のメモリ装置と、
前記第１のメモリ装置に対するアクセスコマンドを発行するホストコンピュータと、
前記第１および第２のメモリ装置の対応する各々の管理単位を関連付けて管理情報として記憶する管理情報記憶部を有して前記管理情報に基づいて前記第１および第２のメモリ装置の何れかに対してアクセスを行うアクセス制御部と
を具備する情報処理システム。
（１５）前記アクセス制御部は、前記ホストコンピュータにおけるデバイスドライバである
前記（１４）に記載の情報処理システム。
（１６）前記アクセス制御部は、前記第１および第２のメモリ装置におけるメモリコントローラである
前記（１４）に記載の情報処理システム。
【符号の説明】
【０１５８】
１００  ホストコンピュータ
１０１  ソフトウェア
１０４  キャッシュドライバ
１０５  デバイスドライバ
１１０  プロセッサ
１２０  ホストメモリ
１２１  並列操作情報テーブル
１２２  エントリ管理情報テーブル
１２３  アクセス頻度管理情報テーブル
１２４  未割当アドレスリスト
１２５  バッファ
１３０  高速メモリインターフェース
１４０  低速メモリインターフェース
１８０  バス
２００  高速メモリ装置
２１０  メモリコントローラ
２２０  不揮発性メモリ
２２１  高速不揮発性メモリ
３００  低速メモリ装置
３０１  メモリ装置
３１０  メモリコントローラ
３２０  不揮発性メモリ
３２１  低速不揮発性メモリ
３３０  メモリコントローラ
３３１  プロセッサ
３３２  メモリ
３３３  並列操作情報保持部
３３４  エントリ管理部
３３５  アクセス頻度管理部
３３６  バッファ
３３７  ホストインターフェース
３３８  高速メモリインターフェース
３３９  低速メモリインターフェース
４００  メモリシステム
【図１】
2019077812.tif 000003
【図２】
2019077812.tif 000004
【図３】
2019077812.tif 000005
【図４】
2019077812.tif 000006
【図５】
2019077812.tif 000007
【図６】
2019077812.tif 000008
【図７】
2019077812.tif 000009
【図８】
2019077812.tif 000010
【図９】
2019077812.tif 000011
【図１０】
2019077812.tif 000012
【図１１】
2019077812.tif 000013
【図１２】
2019077812.tif 000014
【図１３】
2019077812.tif 000015
【図１４】
2019077812.tif 000016
【図１５】
2019077812.tif 000017
【図１６】
2019077812.tif 000018
【図１７】
2019077812.tif 000019
【図１８】
2019077812.tif 000020
【図１９】
2019077812.tif 000021
【図２０】
2019077812.tif 000022
【図２１】
2019077812.tif 000023
【図２２】
2019077812.tif 000024
【図２３】
2019077812.tif 000025
【図２４】
2019077812.tif 000026
【図２５】
2019077812.tif 000027
【図２６】
2019077812.tif 000028
【図２７】
2019077812.tif 000029
【図２８】
2019077812.tif 000030
【図２９】
2019077812.tif 000031
【図３０】
2019077812.tif 000032
【図３１】
2019077812.tif 000033
【国際調査報告】
2019077812.tif 000034
2019077812.tif 000035
2019077812.tif 000036
2019077812.tif 000037