(57)【要約】【課題】記憶装置の容量を効率的に利用しつつ、記憶装置全体のスループットを向上させる。【解決手段】書込部は、低速アクセス記憶部のアクセスタイムの相当期間内に高速アクセス記憶部において読み出しうる高速アクセスデータ数を設定して、複数のデータを高速アクセス記憶部および低速アクセス記憶部に書き込む場合には複数のデータのうち高速アクセスデータ数のデータを高速アクセスデータとして高速アクセス記憶部に書き込むとともに残りのデータを低速アクセスデータとして低速アクセス記憶部に書き込む。読出部は、低速アクセス記憶部および高速アクセス記憶部に書き込まれた複数のデータを読み出す場合には高速アクセス記憶部に対して高速アクセスデータの読出し要求を発行するとともに高速アクセスデータが読み出されたときに低速アクセスデータの読出しが開始されるように低速アクセス記憶部に対して低速アクセスデータの読出し要求を発行する。【選択図】図３
2013142947.tif 000002
【特許請求の範囲】
【請求項１】
データの読出し要求が発行されたときから前記データが読み出されるまでのアクセスタイムが高速アクセス記憶部より長い低速アクセス記憶部のアクセスタイムの相当期間内に前記高速アクセス記憶部において読み出しうるデータ数を高速アクセスデータ数として設定して、複数のデータを前記高速アクセス記憶部および前記低速アクセス記憶部に書き込む場合には前記複数のデータのうち前記高速アクセスデータ数のデータを高速アクセスデータとして前記高速アクセス記憶部に書き込むとともに残りのデータを低速アクセスデータとして前記低速アクセス記憶部に書き込む書込部と、
前記低速アクセス記憶部および前記高速アクセス記憶部に書き込まれた前記複数のデータを読み出す場合には前記高速アクセス記憶部に対して前記高速アクセスデータの読出し要求を発行するとともに前記高速アクセスデータが読み出されたときに前記低速アクセスデータの読出しが開始されるように前記低速アクセス記憶部に対して前記低速アクセスデータの読出し要求を発行する読出部と
を具備する記憶制御装置。
【請求項２】
最初に読み出される前記低速アクセスデータが書き込まれたアドレスである低速アクセス開始アドレスを前記高速アクセスデータが書き込まれたアドレスである高速アクセスアドレスから取得するための管理情報を記憶する管理情報記憶部をさらに具備し、
前記読出部は、前記高速アクセスアドレスから前記高速アクセスデータを読み出す場合には前記高速アクセスデータの読出し要求を前記高速アクセス記憶部に対して発行するとともに前記管理情報に基づいて前記低速アクセス開始アドレスを取得して当該低速アクセス開始アドレスからの前記低速アクセスデータの読出し要求を前記低速アクセス記憶部に対して発行する
請求項１記載の記憶制御装置。
【請求項３】
前記管理情報記憶部は、前記高速アクセスアドレスごとに当該高速アクセスアドレスと前記低速アクセス開始アドレスとの相対的な位置を示す情報を前記管理情報として記憶し、
前記読出部は、前記高速アクセスアドレスから前記高速アクセスデータを読み出す場合には前記高速アクセスアドレスと当該高速アクセスアドレスに対応する前記管理情報とから前記低速アクセス開始アドレスを取得する
請求項２記載の記憶制御装置。
【請求項４】
前記読出部は、前記高速アクセス記憶部に対する前記高速アクセスデータの読出し要求と前記低速アクセス記憶部に対する前記低速アクセスデータの読出し要求とを同時に発行する
請求項１記載の記憶制御装置。
【請求項５】
前記書込部は、前記複数のデータの書込みの指示とともに前記高速アクセスデータ数が指定された場合には当該指定された高速アクセスデータ数を設定して前記複数のデータを書き込む
請求項１記載の記憶制御装置。
【請求項６】
前記書込部は、前記書込みの指示とともに書き込まれたデータが高速で読み出されるように書き込む旨が指示された場合には前記複数のデータのうち前記高速アクセスデータ数のデータを高速アクセスデータとして前記高速アクセス記憶部に書き込むとともに前記残りのデータを低速アクセスデータとして前記低速アクセス記憶部に書き込む
請求項５記載の記憶制御装置。
【請求項７】
書込部が、データの読出し要求が発行されたときから前記データが読み出されるまでのアクセスタイムが高速アクセス記憶部より長い低速アクセス記憶部のアクセスタイムの相当期間内に前記高速アクセス記憶部において読み出しうるデータ数を高速アクセスデータ数として設定して、複数のデータを前記高速アクセス記憶部および前記低速アクセス記憶部に書き込む場合には前記複数のデータのうち前記高速アクセスデータ数のデータを高速アクセスデータとして前記高速アクセス記憶部に書き込むとともに残りのデータを低速アクセスデータとして前記低速アクセス記憶部に書き込む書込手順と、
読出部が、前記低速アクセス記憶部および前記高速アクセス記憶部に書き込まれた前記複数のデータを読み出す場合には前記高速アクセス記憶部に対して前記高速アクセスデータの読出し要求を発行するとともに前記高速アクセスデータが読み出されたときに前記低速アクセスデータの読出しが開始されるように前記低速アクセス記憶部に対して前記低速アクセスデータの読出し要求を発行する読出手順と
を具備する記憶制御装置の制御方法。
【請求項８】
高速アクセス記憶部と、
データの読出し要求が発行されたときから前記データが読み出されるまでのアクセスタイムが前記高速アクセス記憶部より長い低速アクセス記憶部と、
前記低速アクセス記憶部のアクセスタイムの相当期間内に前記高速アクセス記憶部において読み出しうるデータ数を高速アクセスデータ数として設定して、複数のデータを前記高速アクセス記憶部および前記低速アクセス記憶部に書き込む場合には前記複数のデータのうち前記高速アクセスデータ数のデータを高速アクセスデータとして前記高速アクセス記憶部に書き込むとともに残りのデータを低速アクセスデータとして前記低速アクセス記憶部に書き込む書込部と、前記低速アクセス記憶部および前記高速アクセス記憶部に書き込まれた前記複数のデータを読み出す場合には前記高速アクセス記憶部に対して前記高速アクセスデータの読出し要求を発行するとともに前記高速アクセスデータが読み出されたときに前記低速アクセスデータの読出しが開始されるように前記低速アクセス記憶部に対して前記低速アクセスデータの読出し要求を発行する読出部とを備える記憶制御装置と
を具備する記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、記憶制御装置に関する。詳しくは、アクセスタイムの異なる２つの記憶部を制御する記憶制御装置、記憶装置、および、それらにおける制御方法に関する。
【背景技術】
【０００２】
従来、読出しにおけるアクセスタイム（レイテンシ）を小さくしつつ、大容量の記憶装置を実現するために、記憶装置においてアクセスタイムの異なる記憶部を２つ組み合わせて使用することがあった。例えば、アクセスタイムが比較的短い（低レイテンシの）記憶部としてフラッシュメモリが使用され、アクセスタイムが比較的長い（高レイテンシの）記憶部としてＨＤＤが使用されることがある。また、低レイテンシの記憶部としてＮＶＲＡＭ（Non Volatile Random Access Memory）が使用され、高レイテンシの記憶部としてフラッシュメモリが使用されることもある。アクセスタイムの異なる記憶部を組み合わせる場合、一般に低レイテンシの記憶部は、高レイテンシの記憶部と比較して単位容量当たりの単価が高いため、高レイテンシの記憶部よりも容量が小さいものが使用される。
【０００３】
このようなアクセスタイムの異なる記憶部を組み合わせた記憶装置にデータを書き込む場合、記憶装置は、そのデータをいずれの記憶部に書き込むかを判断する必要がある。書込み先の判断に関して、アクセス頻度の高いデータを低レイテンシの記憶部に優先的に書き込む方法が提案されている（例えば、特許文献１参照。）。これにより、アクセス頻度の高いデータの読出しにおいて、記憶装置全体のアクセスタイムが短くなる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２０５３３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述の従来技術では、アクセスタイム経過後に単位時間当たりに読み出されるデータ数（すなわち、スループット）が十分に向上しないことがあった。例えば、データが記憶部の各々に書き込まれた場合に、低レイテンシの記憶部に書き込まれたデータ数が少な過ぎる場合がある。この場合、低レイテンシの記憶部における読出しが完了した時点から、高レイテンシの記憶部における読出しが開始するまでの空き時間が長くなり、その空き時間の分、スループットが低下するおそれがある。また、低レイテンシの記憶部に書き込まれるデータ数が多過ぎる場合には、低レイテンシの記憶部の容量が無駄に使用されるおそれがある。このように、低レイテンシの記憶部に書き込まれるデータ数が適切でないために、低レイテンシの記憶部の容量が無駄に使用されるおそれや、記憶装置全体のスループットが十分に向上しなくなるおそれがあった。
【０００６】
本技術はこのような状況に鑑みて生み出されたものであり、記憶装置の容量を効率的に利用しつつ、記憶装置全体のスループットを向上させることを目的とする。
【課題を解決するための手段】
【０００７】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、データの読出し要求が発行されたときから上記データが読み出されるまでのアクセスタイムが高速アクセス記憶部より長い低速アクセス記憶部のアクセスタイムの相当期間内に上記高速アクセス記憶部において読み出しうるデータ数を高速アクセスデータ数として設定して、複数のデータを上記高速アクセス記憶部および上記低速アクセス記憶部に書き込む場合には上記複数のデータのうち上記高速アクセスデータ数のデータを高速アクセスデータとして上記高速アクセス記憶部に書き込むとともに残りのデータを低速アクセスデータとして上記低速アクセス記憶部に書き込む書込部と、上記低速アクセス記憶部および上記高速アクセス記憶部に書き込まれた上記複数のデータを読み出す場合には上記高速アクセス記憶部に対して上記高速アクセスデータの読出し要求を発行するとともに上記高速アクセスデータが読み出されたときに上記低速アクセスデータの読出しが開始されるように上記低速アクセス記憶部に対して上記低速アクセスデータの読出し要求を発行する読出部とを具備する記憶制御装置、および、その制御方法である。これにより、複数のデータを書き込む場合には高速アクセスデータ数の高速アクセスデータが高速アクセス記憶部に書き込まれるとともに残りの低速アクセスデータが低速アクセス記憶部に書き込まれ、複数のデータを読み出す場合には高速アクセスデータおよび低速アクセスデータの読出し要求が発行されるという作用をもたらす。
【０００８】
また、この第１の側面において、最初に読み出される上記低速アクセスデータが書き込まれたアドレスである低速アクセス開始アドレスを上記高速アクセスデータが書き込まれたアドレスである高速アクセスアドレスから取得するための管理情報を記憶する管理情報記憶部をさらに具備し、上記読出部は、上記高速アクセスアドレスから上記高速アクセスデータを読み出す場合には上記高速アクセスデータの読出し要求を上記高速アクセス記憶部に対して発行するとともに上記管理情報に基づいて上記低速アクセス開始アドレスを取得して当該低速アクセス開始アドレスからの上記低速アクセスデータの読出し要求を上記低速アクセス記憶部に対して発行してもよい。これにより、高速アクセスアドレスから低速アクセス開始アドレスが取得されるという作用をもたらす。
請求項１記載の記憶制御装置。
【０００９】
また、この第１の側面において、上記管理情報記憶部は、上記高速アクセスアドレスごとに当該高速アクセスアドレスと上記低速アクセス開始アドレスとの相対的な位置を示す情報を上記管理情報として記憶し、上記読出部は、上記高速アクセスアドレスから上記高速アクセスデータを読み出す場合には上記高速アクセスアドレスと当該高速アクセスアドレスに対応する上記管理情報とから上記低速アクセス開始アドレスを取得してもよい。これにより、高速アクセスアドレスと低速アクセス開始アドレスとの相対的な位置、および、高速アクセスアドレスとから、低速アクセス開始アドレスが取得されるという作用をもたらす。
【００１０】
また、この第１の側面において、上記読出部は、上記高速アクセス記憶部に対する上記高速アクセスデータの読出し要求と上記低速アクセス記憶部に対する上記低速アクセスデータの読出し要求とを同時に発行してもよい。これにより、高速アクセスデータの読出し要求と低速アクセスデータの読出し要求とが同時に発行されるという作用をもたらす。
【００１１】
また、この第１の側面において、上記書込部は、上記複数のデータの書込みの指示とともに上記高速アクセスデータ数が指定された場合には当該指定された高速アクセスデータ数を設定して上記複数のデータを書き込むこともできる。これにより、指示された高速アクセスデータ数が設定されるという作用をもたらす。
【００１２】
また、この第１の側面において、上記書込部は、上記書込みの指示とともに書き込まれたデータが高速で読み出されるように書き込む旨が指示された場合には上記複数のデータのうち上記高速アクセスデータ数のデータを高速アクセスデータとして上記高速アクセス記憶部に書き込むとともに上記残りのデータを低速アクセスデータとして上記低速アクセス記憶部に書き込むこともできる。これにより、データが高速で読み出されるように書き込む旨が指示された場合に高速アクセスデータが高速アクセス記憶部に書き込まれるとともに低速アクセスデータが低速アクセス記憶部に書き込まれるという作用をもたらす。
【００１３】
また、本技術の第２の側面は、高速アクセス記憶部と、データの読出し要求が発行されたときから上記データが読み出されるまでのアクセスタイムが上記高速アクセス記憶部より長い低速アクセス記憶部と、上記低速アクセス記憶部のアクセスタイムの相当期間内に上記高速アクセス記憶部において読み出しうるデータ数を高速アクセスデータ数として設定して、複数のデータを上記高速アクセス記憶部および上記低速アクセス記憶部に書き込む場合には上記複数のデータのうち上記高速アクセスデータ数のデータを高速アクセスデータとして上記高速アクセス記憶部に書き込むとともに残りのデータを低速アクセスデータとして上記低速アクセス記憶部に書き込む書込部と、上記低速アクセス記憶部および上記高速アクセス記憶部に書き込まれた上記複数のデータを読み出す場合には上記高速アクセス記憶部に対して上記高速アクセスデータの読出し要求を発行するとともに上記高速アクセスデータが読み出されたときに上記低速アクセスデータの読出しが開始されるように上記低速アクセス記憶部に対して上記低速アクセスデータの読出し要求を発行する読出部とを備える記憶制御装置とを具備する記憶装置である。これにより、複数のデータを書き込む場合には高速アクセスデータ数の高速アクセスデータが高速アクセス記憶部に書き込まれるとともに残りの低速アクセスデータが低速アクセス記憶部に書き込まれ、複数のデータを読み出す場合には高速アクセスデータおよび低速アクセスデータの読出し要求が発行されるという作用をもたらす。
【発明の効果】
【００１４】
本技術によれば、記憶装置の容量が効率的に利用することができるとともに記憶装置全体のスループットを向上させることができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００１５】
【図１】実施の形態における情報処理システムの一構成例を示すブロック図である。
【図２】実施の形態における記憶制御部の具体的な構成例を示すブロック図である。
【図３】実施の形態における記憶制御部の一構成例を示すブロック図である。
【図４】実施の形態におけるＮＶＲＡＭの一構成例を示すブロック図である。
【図５】実施の形態におけるコマンドで設定されるパラメータの一例を示す図である。
【図６】実施の形態におけるページの構成の一例を示す図である。
【図７】実施の形態におけるセクタアドレス変換テーブルの一例を示す図である。
【図８】実施の形態におけるＮＶＲＡＭページアドレス変換テーブルの一例を示す図である。
【図９】実施の形態におけるフラッシュメモリ物理アドレス管理テーブルの一例を示す図である。
【図１０】実施の形態におけるＮＶＲＡＭ物理アドレス管理テーブルの一例を示す図である。
【図１１】実施の形態におけるデータ書込み部の一構成例を示すブロック図である。
【図１２】実施の形態におけるデータ読出し部の一構成例を示すブロック図である。
【図１３】実施の形態における読出し処理のシーケンス図の一例である。
【図１４】実施の形態におけるデータの転送のタイミングを説明するための図である。
【図１５】実施の形態における書込み処理の一例を示すフローチャートである。
【図１６】実施の形態における読出し処理の一例を示すフローチャートである。
【図１７】実施の形態におけるＮＶＲＡＭ読出し処理の一例を示すフローチャートである。
【図１８】実施の形態におけるフラッシュメモリ読出し処理の一例を示すフローチャートである。
【図１９】実施の形態におけるフラッシュメモリへの書込み前のセクタアドレス変換テーブルの一例を示す図である。
【図２０】実施の形態におけるフラッシュメモリへの書込み後のセクタアドレス変換テーブルの一例を示す図である。
【図２１】実施の形態におけるＮＶＲＡＭへの書込み前のセクタアドレス変換テーブルの一例を示す図である。
【図２２】実施の形態におけるＮＶＲＡＭへの書込み後のセクタアドレス変換テーブルの一例を示す図である。
【図２３】実施の形態の変形例におけるライトコマンドで設定されるパラメータの一例を示す図である。
【発明を実施するための形態】
【００１６】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（所定数のデータをＮＶＲＡＭに書き込み、残りをフラッシュメモリに書き込む例）
２．変形例
【００１７】
＜１．第１の実施の形態＞
［情報処理システムの構成例］
図１は、実施の形態における情報処理システムの一例を示すブロック図である。この情報処理システムは、情報処理においてデータを記憶し、記憶したデータを読み出すものである。情報処理システムは、ホストコンピュータ１００およびデータ記憶装置２００を備える。
【００１８】
ホストコンピュータ１００は、情報処理において、データ記憶装置２００にデータを書き込み、書き込んだデータをデータ記憶装置２００から読み出すものである。
【００１９】
データを書き込む場合、ホストコンピュータ１００は、ライトコマンドをライトデータとともにデータ記憶装置２００へ信号線１０９を介して出力する。そして、ホストコンピュータ１００は、ライトコマンドに対する応答をデータ記憶装置２００から信号線１０９を介して受け取る。一方、データを読み出す場合、ホストコンピュータ１００は、リードコマンドをデータ記憶装置２００へ信号線１０９を介して出力する。そして、ホストコンピュータ１００は、リードコマンドに対する応答と読み出されたリードデータとをデータ記憶装置２００から信号線１０９を介して受け取る。ここで、データ記憶装置２００においてデータの書込みと読出しとは、例えば、５１２バイトの単位で実行されるものとする。このデータ記憶装置２００のアクセス単位（５１２バイト）のデータを以下、「セクタ」と称する。
【００２０】
データ記憶装置２００は、ホストコンピュータ１００の制御に従って、データを記憶するとともに記憶したデータを読み出すものである。このデータ記憶装置２００は、記憶制御部３００と、読出しにおけるアクセスタイムの異なる２つの記憶部とを備える。ここで、読出しにおけるアクセスタイムは、記憶部に対してデータのリードリクエストを発行してから、そのデータの読出しが完了するまでの時間である。アクセスタイムの短い方の記憶部は、例えば、ＮＶＲＡＭ４００である。アクセスタイムの長い方の記憶部は、例えば、フラッシュメモリ５００である。
【００２１】
なお、アクセスタイムが互いに異なるのであれば、記憶部の組合せはＮＶＲＡＭ４００およびフラッシュメモリ５００に限定されない。例えば、データ記憶装置２００は、アクセスタイムが比較的短い記憶部としてフラッシュメモリを、アクセスタイムが比較的長い記憶部としてＨＤＤ（Hard Disk Drive）を備えてもよい。また、データ記憶装置２００は、特許請求の範囲に記載の記憶装置の一例である。記憶制御部３００は、特許請求の範囲に記載の記憶制御装置の一例である。ＮＶＲＡＭ４００は、特許請求の範囲に記載の高速アクセス記憶部の一例であり、フラッシュメモリ５００は、特許請求の範囲に記載の低速アクセス記憶部の一例である。
【００２２】
記憶制御部３００は、ホストコンピュータ１００の制御に従って、ＮＶＲＡＭ４００およびフラッシュメモリ５００にデータを書き込み、または、書き込まれたデータを読み出すものである。記憶制御部３００は、複数のセクタからなるデータの書込みを指示するライトコマンドを受け取った場合には、一定数（例えば、３個）のセクタをＮＶＲＡＭ４００に信号線３０８を介して出力して書き込む。また、記憶制御部３００は、残りのセクタをフラッシュメモリ５００に信号線３０９を介して出力して書き込む。そして、リードコマンドを受け取った場合には、記憶制御部３００は、ＮＶＲＡＭ４００およびフラッシュメモリ５００に対してリードリクエストを同時に発行する。記憶制御部３００は、ＮＶＲＡＭ４００およびフラッシュメモリ５００から受け取ったリードデータと応答とをホストコンピュータ１００へ出力する。
【００２３】
ここで、ＮＶＲＡＭ４００に書き込むセクタ数を以下、「ＮＶＲＡＭ連続セクタ数」と称する。このＮＶＲＡＭ連続セクタ数は、フラッシュメモリ５００のアクセスタイムの相当期間内にＮＶＲＡＭ４００から読み出すことができるセクタ数である。ＮＶＲＡＭ連続セクタ数は、ＮＶＲＡＭ４００およびフラッシュメモリ５００のアクセスタイムと、ＮＶＲＡＭ４００のスループットとから求められる。このスループットは、アクセスタイムが経過した後において単位時間当たりに読み出されるデータ（セクタ）数である。アクセスタイムやスループットの具体的な値の例と、それらの値からＮＶＲＡＭ連続セクタ数を求める方法については、後述する。なお、ＮＶＲＡＭ連続セクタ数は、特許請求の範囲における高速アクセスデータ数の一例である。
【００２４】
ＮＶＲＡＭ４００およびフラッシュメモリ５００は、記憶制御部３００の制御に従ってデータを記憶し、または記憶したデータを読み出すものである。ここで、ＮＶＲＡＭ４００においては、エラー訂正コード（ＥＣＣ:Error Correcting Code）を除き、例えば、２５６バイトの単位でデータの書込みと読出しとが行われるものとする。以下、ＮＶＲＡＭ４００におけるアクセス単位（２５６バイト）のデータを「ＮＶＲＡＭページ」と称する。一方、フラッシュメモリ５００においては、エラー訂正コードを除き、例えば、８セクタの単位でデータの書込みと読出しとが行われるものとする。以下、フラッシュメモリ５００におけるアクセス単位（５１２×８バイト）のデータを「フラッシュメモリページ」と称する。
【００２５】
［データ記憶装置の構成例］
図２は、実施の形態における記憶制御部３００の具体的な構成例を示すブロック図である。記憶制御部３００は、処理装置３１１、ＲＡＭ３１２、エラー訂正処理部３１３、ＲＯＭ(Read Only Memory)３１４、および、バス３１５を備える。また、記憶制御部３００は、ホストインターフェース３１６、ＮＶＲＡＭインターフェース３１７、および、フラッシュメモリインターフェース３１８を備える。
【００２６】
処理装置３１１は、記憶制御部３００全体を制御するものである。ＲＡＭ３１２は、処理装置３１１が実行する処理において必要となるデータを一時的に保持するものである。エラー訂正処理部３１３は、書き込むデータにエラー訂正コードを付加し、そのエラー訂正コードに基づいて読み出されたデータにおけるエラーを訂正するものである。ＲＯＭ３１４は、処理装置３１１が実行するプログラムを記憶するものである。
【００２７】
バス３１５は、処理装置３１１、ＲＡＭ３１２、エラー訂正処理部３１３、ＲＯＭ３１４、ホストインターフェース３１６、ＮＶＲＡＭインターフェース３１７、および、フラッシュメモリインターフェース３１８が相互にデータを交換するための共通の経路である。
【００２８】
ホストインターフェース３１６は、ホストコンピュータ１００との間でデータやコマンドを相互に交換するものである。ＮＶＲＡＭインターフェース３１７は、ＮＶＲＡＭ４００との間でデータやリクエストを相互に交換するものである。フラッシュメモリインターフェース３１８は、フラッシュメモリ５００との間でデータやリクエストを相互に交換するものである。
【００２９】
図３は、実施の形態における記憶制御部３００の一構成例を示すブロック図である。記憶制御部３００は、データ書込部３２０およびデータ読出部３７０を備える。さらに、記憶制御部３００は、セクタアドレス変換テーブル３３０、ＮＶＲＡＭページアドレス変換テーブル３４０、フラッシュメモリ物理アドレス管理テーブル３５０、および、ＮＶＲＡＭ物理アドレス管理テーブル３６０を備える。データ書込部３２０およびデータ読出部３７０は、例えば、図２に例示した処理装置３１１、ＲＡＭ３１２、エラー訂正処理部３１３、および、ＲＯＭ３１４により実現される。テーブルの各々は、例えば、図２に例示したＲＡＭ３１２に保持される。
【００３０】
セクタアドレス変換テーブル３３０は、論理アドレスとフラッシュメモリ５００の物理アドレスとを対応付けたテーブルである。この論理アドレスは、データ記憶装置２００において、セクタごとに割り当てられるアドレスである。また、フラッシュメモリ５００においては、物理アドレスは、セクタごとに割り当てられるものとする。なお、セクタアドレス変換テーブル３３０を記憶するＲＡＭ３１２は、特許請求の範囲に記載の管理情報記憶部の一例である。
【００３１】
ＮＶＲＡＭページアドレス変換テーブル３４０は、論理アドレスとＮＶＲＡＭ４００の物理アドレスとを対応付けたテーブルである。ＮＶＲＡＭ４００においては、物理アドレスは、ＮＶＲＡＭページ（１／２セクタ）ごとに割り当てられるものとする。
【００３２】
フラッシュメモリ物理アドレス管理テーブル３５０は、フラッシュメモリ５００の物理アドレスの各々のステータスが記載されたテーブルである。ＮＶＲＡＭ物理アドレス管理テーブル３６０は、ＮＶＲＡＭ４００の物理アドレスの各々のステータスが記載されたテーブルである。これらのステータスは、例えば、「使用中」、「空き」、および、「不良」のうちのいずれかの状態である。ここで、「使用中」は、物理アドレスにデータが書き込まれている状態であり、「空き」は、物理アドレスにデータが書き込まれていない状態である。「不良」は、何らかの原因により物理アドレスにおいてデータの書込みや読出しができなくなった状態である。
【００３３】
データ書込部３２０は、ホストコンピュータ１００の制御に従ってＮＶＲＡＭ４００およびフラッシュメモリ５００にデータを書き込むものである。データ書込部３２０は、ホストコンピュータ１００からライトコマンドおよびライトデータを受け取った場合には、テーブルの各々を参照して、そのライトコマンドにより指定された論理アドレスを物理アドレスに変換する。そして、データ書込部３２０は、その物理アドレスにライトデータを書き込み、テーブルの各々を更新する。なお、データ書込部３２０は、特許請求の範囲に記載の書込部の一例である。データ書込部３２０の書込処理の詳細については後述する。
【００３４】
データ読出部３７０は、ホストコンピュータ１００の制御に従ってＮＶＲＡＭ４００およびフラッシュメモリ５００からデータを読み出すものである。データ読出部３７０は、ホストコンピュータ１００からリードコマンドを受け取った場合には、テーブルの各々を参照して、そのリードコマンドにより指定された論理アドレスを物理アドレスに変換する。そして、データ読出部３７０は、物理アドレスを指定したリードリクエストをＮＶＲＡＭ４００およびフラッシュメモリ５００に対して同時に発行する。データ読出部３７０は、ＮＶＲＡＭ４００およびフラッシュメモリ５００からリードデータを受け取ってホストコンピュータ１００へ出力する。なお、データ読出部３７０は、特許請求の範囲に記載の読出部の一例である。データ読出部３７０の読出処理の詳細については後述する。
【００３５】
［ＮＶＲＡＭの構成例］
図４は、実施の形態におけるＮＶＲＡＭ４００の一構成例を示すブロック図である。このＮＶＲＡＭ４００は、インターフェース４１０、メモリ制御部４２０、アドレスデコーダ４３０、キャッシュレジスタ４４０、データレジスタ４５０、および、メモリアレイ４６０を備える。なお、フラッシュメモリ５００の構成は、ＮＶＲＡＭ４００の構成と同様である。
【００３６】
インターフェース４１０は、記憶制御部３００との間でリクエストやデータを相互に交換するものである。
【００３７】
メモリ制御部４２０は、ＮＶＲＡＭ４００全体を制御するものである。メモリ制御部４２０は、インターフェース４１０を介してライトリクエストを受け取った場合には、ライトリクエストにより指定された物理アドレスをアドレスデコーダ４３０に出力してデコードさせ、アドレスデコーダ４３０からデコード結果を受け取る。また、メモリ制御部４２０は、キャッシュレジスタ４４０を制御して、記憶制御部３００から転送されたライトデータ（１／２セクタ）を保持させる。そして、データレジスタ４５０に転送可能であれば、メモリ制御部４２０は、キャッシュレジスタ４４０を制御して、記憶制御部３００からのライトデータをデータレジスタ４５０へ転送させる。また、メモリ制御部４２０は、データレジスタ４５０を制御して、キャッシュレジスタ４４０から転送されたライトデータ（１／２セクタ）を保持させ、そのライトデータをメモリアレイ４６０に書き込ませる。
【００３８】
ここで、メモリ制御部４２０は、キャッシュレジスタ４４０に記憶制御部３００からのデータを受け取る処理と、データレジスタ４５０にデータを書き込ませる処理とを並列に実行すること（いわゆる、「インターリーブ動作」）ができる。このため、ＮＶＲＡＭ４００は、データを書き込んでいる間に、次に書き込むデータを記憶制御部３００から受け取ることができる。
【００３９】
一方、メモリ制御部４２０は、インターフェース４１０を介してリードリクエストを受け取った場合には、リードリクエストにより指定された物理アドレスをアドレスデコーダ４３０に出力してデコードさせ、アドレスデコーダ４３０からデコード結果を受け取る。また、メモリ制御部４２０は、データレジスタ４５０を制御して、メモリアレイ４６０から読み出されたリードデータ（１／２セクタ）を保持させる。そして、キャッシュレジスタ４４０に転送可能であれば、メモリ制御部４２０は、データレジスタ４５０を制御して、メモリアレイ４６０からのリードデータをキャッシュレジスタ４４０へ転送させる。また、メモリ制御部４２０は、キャッシュレジスタ４４０を制御して、データレジスタ４５０から転送されたリードデータ（１／２セクタ）を保持させ、そのリードデータを記憶制御部３００へインターフェース４１０を介して出力させる。
【００４０】
ここで、メモリ制御部４２０は、データレジスタ４５０にデータを読み出させる処理と、キャッシュレジスタ４４０にデータを記憶制御部３００へ出力させる処理とを並列に実行すること（インターリーブ動作）ができる。このため、ＮＶＲＡＭ４００は、読み出したデータを記憶制御部３００へ出力している間に、次に出力するデータをメモリアレイ４６０から読み出すことができる。
【００４１】
また、リードリクエストが発行されてから、リードデータの転送が可能となるまでの時間を、以下、「ビジー時間」と称する。キャッシュレジスタ４４０とデータレジスタ４５０との間のリードデータの転送時間は極めて短く、記憶制御部３００とＮＶＲＡＭ４００との間のリードリクエストの受け渡しの時間も極めて短いものとする。これらの時間を無視した場合、リードリクエストが発行されてから、データレジスタ４５０にＮＶＲＡＭページが読み出されるまでの時間がビジー時間に相当する。
【００４２】
アドレスデコーダ４３０は、メモリ制御部４２０から受け取った物理アドレスをデコードして、デコード結果に従って、メモリアレイ４６０におけるメモリセルを活性化させるものである。また、アドレスデコーダ４３０は、デコード結果をメモリ制御部４２０に出力する。
【００４３】
キャッシュレジスタ４４０は、インターフェース４１０を介して記憶制御部３００へ出力するデータ、または、記憶制御部３００から受け取ったデータを一時的に保持するものである。データレジスタ４５０は、メモリアレイ４６０に書き込むデータ、または、メモリアレイ４６０から読み出されたデータを一時的に保持するものである。これらのキャッシュレジスタ４４０とデータレジスタ４５０とは、ＮＶＲＡＭページのサイズに応じた本数の信号線により接続されている。例えば、ＮＶＲＡＭページのサイズが２６５バイトである場合、２６５×８本のパラレル転送用の信号線で接続されている。このため、キャッシュレジスタ４４０とデータレジスタ４５０との間においては高速なデータ転送が行われる。
【００４４】
メモリアレイ４６０は、複数のメモリセルが２次元格子状に配置されたものである。各々のメモリセルには、所定サイズのデータが保持される。
【００４５】
図５は、実施の形態におけるコマンドで設定されるパラメータの一例を示す図である。図５（ａ）は、ライトコマンドで設定されるパラメータの一例である。パラメータとして、先頭論理アドレス、データサイズ、および、高速指定フラグＨＦなどが設定される。先頭論理アドレスは、データの書込み対象の論理アドレスのうちの先頭の論理アドレスである。データサイズは、例えば、ライトデータのセクタ数である。
【００４６】
高速指定フラグＨＦは、データが高速で読み出されるように書き込むか否かを示すフラグである。例えば、データが高速で読み出されるように書き込む場合には高速指定フラグＨＦにＴ（True）が設定され、そうでない場合には、高速指定フラグＨＦにはＦ（False）が設定される。高速指定フラグＨＦがＴである場合には、記憶制御部３００は、ライトデータのうちのＮＶＲＡＭ連続セクタ数のセクタをＮＶＲＡＭ４００に書き込み、残りのセクタをフラッシュメモリ５００に書き込む。一方、高速指定フラグＨＦがＦである場合には、記憶制御部３００は、ライトデータの全てをフラッシュメモリ５００に書き込む。
【００４７】
なお、データが高速で読み出されるように書き込むか否かを高速指定フラグＨＦにより指示する構成としているが、通常のライトコマンドとは異なる専用のライトコマンド（以下、「高速指定ライトコマンド」と称する。）により、指示する構成としてもよい。この場合、記憶制御部３００は、ライトコマンドが高速指定ライトコマンドであるか否かにより、ＮＶＲＡＭ４００に書き込むか否かを判断すればよい。
【００４８】
図５（ｂ）は、実施の形態におけるリードコマンドで設定されるパラメータの一例である。パラメータとしては、先頭論理アドレスおよびデータサイズなどが設定される。先頭論理アドレスは、データの読出し対象の論理アドレスのうちの先頭の論理アドレスである。データサイズは、例えば、リードデータのセクタ数である。
【００４９】
図６は、実施の形態におけるページの構成の一例を示す図である。図６（ａ）は、ＮＶＲＡＭページの構成の一例を示す図である。このＮＶＲＡＭページは、例えば、２５６バイトのデータと９バイトのエラー訂正コード（ＥＣＣ）とからなる、２６５バイトのデータである。図６（ｂ）は、フラッシュメモリページの構成の一例を示す図である。このフラッシュメモリページは、例えば、５４０バイトの８個のデータからなる、４３２０バイトのデータである。５４０バイトのデータの各々は、５１２バイトのデータ（セクタ）と、２８バイトのエラー訂正コードとからなる。
【００５０】
図７は、セクタアドレス変換テーブル３３０の一例を示す図である。このセクタアドレス変換テーブル３３０には、論理アドレスごとにセクタ管理情報が記載される。このセクタ管理情報は、フラッシュメモリ物理アドレス、物理アドレスオフセット、有効フラグ、ＮＶＲＡＭフラグ、ＮＶＲＡＭセクタ番号、および、ＮＶＲＡＭ連続セクタ数を含む。
【００５１】
フラッシュメモリ物理アドレスは、フラッシュメモリ５００において論理アドレスに割り当てられた物理アドレスである。物理アドレスオフセットは、フラッシュメモリページにおいて、いずれかの物理アドレスを基準とした物理アドレスの各々の相対的な位置を示すものである。例えば、フラッシュメモリページが８セクタからなる場合には、１６進法で０乃至７の値が物理アドレスオフセットとして記載される。
【００５２】
有効フラグは、論理アドレスに、ＮＶＲＡＭ４００またはフラッシュメモリ５００の物理アドレスが割り当てられているか否かを示すフラグである。例えば、論理アドレスに物理アドレスが割り当てられている場合には有効フラグにＴ（True）が設定され、論理アドレスに物理アドレスが割り当てられていない場合には有効フラグにＦ（False）が設定される。
【００５３】
ＮＶＲＡＭフラグは、論理アドレスに、ＮＶＲＡＭ４００の物理アドレスが割り当てられているか否かを示すフラグである。例えば、論理アドレスにＮＶＲＡＭ４００の物理アドレスが割り当てられている場合にはＮＶＲＡＭフラグにＴ（True）が設定される。一方、論理アドレスにＮＶＲＡＭ４００の物理アドレスが割り当てられていない場合にはＮＶＲＡＭフラグにＦ（False）が設定される。
【００５４】
ＮＶＲＡＭセクタ番号は、ＮＶＲＡＭ４００において、先頭論理アドレスを基準とした論理アドレスの各々の相対的な位置を示すものである。例えば、ＮＶＲＡＭ連続セクタ数が３である場合には、１６進法で０乃至２の値がＮＶＲＡＭセクタ番号として記載される。ＮＶＲＡＭ連続セクタ数は、ＮＶＲＡＭ４００に連続して書き込まれるセクタ数である。
【００５５】
ＮＶＲＡＭセクタ番号およびＮＶＲＡＭ連続セクタ数を参照することにより、データ読出部３７０は、フラッシュメモリ５００から最初にデータを読み出す論理アドレス（以下、「開始論理アドレス」と称する）を容易に求めることができる。具体的には、データ読出部３７０は、次の式１から開始論理アドレスを演算する。
（開始論理アドレス）＝（先頭論理アドレス）＋（ＮＶＲＡＭ連続セクタ数）
−（ＮＶＲＡＭセクタ番号）    式１
式１を使用しなくとも、論理アドレスの各々のＮＶＲＡＭフラグを参照することにより、開始論理アドレスを求めることができるが、ＮＶＲＡＭ連続セクタ数が多いと、時間がかかるおそれがある。ＮＶＲＡＭセクタ番号およびＮＶＲＡＭ連続セクタ数を記載しておくことにより、開始論理アドレスを演算により求めることができるため、ソフトウェアのオーバーヘッドが低減される。
【００５６】
なお、記憶制御部３００は、ＮＶＲＡＭ連続セクタ数およびＮＶＲＡＭ連続セクタ数から、開始論理アドレスを取得する構成としているが、他の方法により、開始論理アドレスを取得してもよい。例えば、記憶制御部３００は、書込み時に、開始論理アドレスそのものを、ＮＶＲＡＭフラグがＴ(True)の論理アドレスに対応付けて記載しておき、読出し時に、その開始論理アドレスを読み出してもよい。
【００５７】
図８は、実施の形態におけるＮＶＲＡＭページアドレス変換テーブル３４０の一例を示す図である。このＮＶＲＡＭページアドレス変換テーブル３４０には、論理アドレスごとに論理アドレスオフセットおよびＮＶＲＡＭページ管理情報が記載される。ＮＶＲＡＭページ管理情報は、ＮＶＲＡＭ物理アドレス、物理ページ番号、および、連続物理ページ数を含む。
【００５８】
論理アドレスオフセットは、セクタにおいて、いずれかの論理アドレスを基準とした、論理アドレスの各々の相対的な位置を示すものである。例えば、１セクタが２つのＮＶＲＡＭページに分割される場合には、１６進法で０または１の値が論理アドレスオフセットとして記載される。
【００５９】
ＮＶＲＡＭ物理アドレスは、論理アドレスおよび論理アドレスオフセットから決定されるアドレスに割り当てられた物理アドレスである。ＮＶＲＡＭ連続物理ページ数は、ＮＶＲＡＭ４００に連続して書き込まれるＮＶＲＡＭページの数である。ＮＶＲＡＭ連続物理ページ数は、次の式２により決定される。
(ＮＶＲＡＭ連続物理ページ数)＝（ＮＶＲＡＭ連続セクタ数）×（セクタのサイズ）
／（ＮＶＲＡＭページのサイズ）    式２
式２において、セクタのサイズとＮＶＲＡＭページのサイズとは、エラー訂正コードを含まないデータのサイズである。例えば、ＮＶＲＡＭ連続セクタ数が３であり、セクタのサイズが５１２バイトであり、ＮＶＲＡＭページのサイズが２５６バイトである場合、式２より、ＮＶＲＡＭ連続物理ページ数は６に決定される。物理ページ番号は、いずれかのＮＶＲＡＭページを基準としたＮＶＲＡＭページの各々の相対的な位置を示すものである。例えば、ＮＶＲＡＭ連続物理ページ数が６である場合には、１６進法で０乃至５の値が物理ページ番号として記載される。
【００６０】
図９は、実施の形態におけるフラッシュメモリ物理アドレス管理テーブル３５０の一例を示す図である。このフラッシュメモリ物理アドレス管理テーブル３５０には、フラッシュメモリ物理アドレスごとにステータスが記載される。フラッシュメモリ物理アドレスは、フラッシュメモリ５００における物理アドレスである。ステータスは、例えば、「使用中」、「空き」、および、「不良」のうちのいずれかの状態である。
【００６１】
図１０は、実施の形態におけるＮＶＲＡＭ物理アドレス管理テーブル３６０の一例を示す図である。このＮＶＲＡＭ物理アドレス管理テーブル３６０には、ＮＶＲＡＭ物理アドレスごとにステータスが記載される。ＮＶＲＡＭ物理アドレスは、ＮＶＲＡＭ４００における物理アドレスである。ステータスは、例えば、「使用中」、「空き」、および、「不良」のうちのいずれかの状態である。
【００６２】
［データ書込部の構成例］
図１１は、実施の形態におけるデータ書込部３２０の一構成例を示すブロック図である。このデータ書込部３２０は、コマンド解析部３２１、書込先判断部３２２、データ書込要求部３２３、および、テーブル更新部３２４を備える。
【００６３】
コマンド解析部３２１は、ライトコマンドを解析するものである。コマンド解析部３２１は、解析結果に基づいて、ライトコマンドで指定された先頭論理アドレスおよびデータサイズをデータ書込要求部３２３へ出力する。また、コマンド解析部３２１は、ライトコマンドで指定されたデータサイズおよび高速指定フラグを書込先判断部３２２へ出力する。
【００６４】
書込先判断部３２２は、ＮＶＲＡＭ４００およびフラッシュメモリ５００のうちのいずれにデータを書き込むかを判断するものである。書込先判断部３２２は、データサイズおよび高速指定フラグをコマンド解析部３２１から受け取り、データ書込要求部３２３から応答を受け取る。
【００６５】
高速指定フラグがＦである場合には、書込先判断部３２２は、フラッシュメモリ５００を書込み先とした判断結果をデータ書込要求部３２３へ出力する。
【００６６】
一方、高速指定フラグがＴである場合には、データサイズの示す個数のセクタのうち、先頭からＮＶＲＡＭ連続セクタ数のセクタについて、ＮＶＲＡＭ４００を書込み先とした判断結果をデータ書込要求部３２３へ出力する。そして、書込先判断部３２２は、残りのセクタについて、フラッシュメモリ５００を書込み先とした判断結果をデータ書込要求部３２３へ出力する。書込み対象のセクタが、先頭から何番目であるかについては、データ書込要求部３２３が出力した応答を書込先判断部３２２が計数することにより求められる。
【００６７】
データ書込要求部３２３は、ライトデータをＮＶＲＡＭ４００またはフラッシュメモリ５００に書き込むものである。データ書込要求部３２３は、先頭論理アドレスおよびデータサイズをコマンド解析部３２１から受け取り、ライトデータをホストコンピュータ１００から受け取る。また、データ書込要求部３２３は、書込み先の判断結果を書込先判断部３２２から受け取る。データ書込要求部３２３は、先頭論理アドレス以降のデータサイズに応じた個数の論理アドレスを書込み対象とする。データ書込要求部３２３は、書込先判断部３２２からの判断結果に従って、書込み対象の論理アドレスに対応する物理アドレスを決定する。
【００６８】
ＮＶＲＡＭ４００が書込み先である場合には、データ書込要求部３２３は、セクタを２５６バイト単位で分割し、各々にエラー訂正コードを付加してＮＶＲＡＭページを生成する。また、データ書込要求部３２３は、信号線３４８を介してＮＶＲＡＭページアドレス変換テーブル３４０を参照して、書込み対象の論理アドレスに割り当てられた物理アドレスがあるか否かを判断する。物理アドレスが割り当てられていない場合には、データ書込要求部３２３は、信号線３６８を介してＮＶＲＡＭ物理アドレス管理テーブル３６０を参照して、空いている物理アドレスのうちのいずれかを論理アドレスに割り当てる。データ書込要求部３２３は、論理アドレスに割り当てられた物理アドレスにＮＶＲＡＭページを書き込む。
【００６９】
フラッシュメモリ５００が書込み先である場合には、データ書込要求部３２３は、セクタごとにエラー訂正コードを付加する。また、データ書込要求部３２３は、信号線３３８を介してセクタアドレス変換テーブル３３０を参照して、書込み対象の論理アドレスに割り当てられた物理アドレスがあるか否かを判断する。物理アドレスが割り当てられていない場合には、データ書込要求部３２３は、信号線３５８を介してフラッシュメモリ物理アドレス管理テーブル３５０を参照して、空いている物理アドレスのうちのいずれかを論理アドレスに割り当てる。データ書込要求部３２３は、論理アドレスに割り当てられた物理アドレスに８セクタ単位でデータを書き込む。フラッシュメモリページのサイズが、セクタのサイズより大きいため、データ書込要求部３２３は、必要に応じて、バッファなどにフラッシュメモリページ１つ分のデータを保持させてから書き込む。
【００７０】
データ書込要求部３２３は、セクタの各々を書き込むたびに、１セクタを書き込んだ旨を通知する応答を書込先判断部３２２に出力し、論理アドレスと、その論理アドレスに対応する物理アドレスをテーブル更新部３２４に出力する。また、全てのセクタを書き込んだ場合には、データ書込要求部３２３は、ライトコマンドの終了を通知する応答をホストコンピュータ１００に出力する。
【００７１】
テーブル更新部３２４は、論理アドレスおよび物理アドレスをデータ書込要求部３２３から受け取り、それらのアドレスに基づいてテーブルの各々を更新するものである。
【００７２】
［データ読出部の構成例］
図１２は、実施の形態におけるデータ読出部３７０の一構成例を示すブロック図である。このデータ読出部３７０は、コマンド解析部３７１、開始論理アドレス演算部３７２、ＮＶＲＡＭ読出部３７３、フラッシュメモリ読出部３７４、および、リードデータ送信部３７５を備える。
【００７３】
コマンド解析部３７１は、リードコマンドを解析するものである。コマンド解析部３７１は、解析結果に基づいて、リードコマンドで指定された先頭論理アドレスおよびデータサイズを、開始論理アドレス演算部３７２およびＮＶＲＡＭ読出部３７３に出力する。
【００７４】
開始論理アドレス演算部３７２は、最初にフラッシュメモリ５００から読み出すデータが書き込まれた論理アドレス（開始論理アドレス）を演算するものである。開始論理アドレス演算部３７２は、コマンド解析部３７１から先頭論理アドレスおよびデータサイズを受け取る。開始論理アドレス演算部３７２は、その先頭論理アドレスに対応するＮＶＲＡＭ連続セクタ数とＮＶＲＡＭセクタ番号とをセクタアドレス変換テーブル３３０から信号線３３９を介して読み出す。開始論理アドレス演算部３７２は、ＮＶＲＡＭ連続セクタ数およびＮＶＲＡＭセクタ番号に基づいて、例えば、上述の式１により開始論理アドレスを演算する。
【００７５】
開始論理アドレス演算部３７２は、式１から得られた開始論理アドレスが、リードコマンドで指定された論理アドレスであれば、開始論理アドレスをフラッシュメモリ読出部３７４に出力する。また、開始論理アドレス演算部３７２は、ＮＶＲＡＭ連続セクタ数およびＮＶＲＡＭセクタ番号の差分をデータサイズから減じた値を読出しセクタ数としてフラッシュメモリ読出部３７４に出力する。
【００７６】
ＮＶＲＡＭ読出部３７３は、ＮＶＲＡＭ４００からデータを読み出すものである。ＮＶＲＡＭ読出部３７３は、コマンド解析部３７１から先頭論理アドレスおよびデータサイズを受け取る。ＮＶＲＡＭ読出部３７３は、その先頭論理アドレスに対応するＮＶＲＡＭフラグをセクタアドレス変換テーブル３３０から信号線３３９を介して読み出す。ＮＶＲＡＭがＴ（True）であれば、ＮＶＲＡＭ読出部３７３は、先頭論理アドレスに対応するＮＶＲＡＭ連続セクタ数およびＮＶＲＡＭセクタ番号をセクタアドレス変換テーブル３３０から読み出す。ＮＶＲＡＭ読出部３７３は、ＮＶＲＡＭ連続セクタ数およびＮＶＲＡＭセクタ番号とデータサイズとから、下記の式３が成立するか否かを判断する。
（データサイズ）≧（ＮＶＲＡＭ連続セクタ数）−(ＮＶＲＡＭセクタ番号)    式３
【００７７】
式３が成立する場合には、先頭論理アドレスから、式３の右辺（差分）の数のセクタ数を読出し対象とする。式３が成立しない場合には、ＮＶＲＡＭ読出部３７３は、先頭論理アドレスからデータサイズの個数の論理アドレスを読出し対象とする。例えば、式３の右辺が３の値であり、データサイズが４である場合には、３個の論理アドレスが読出し対象とされる。また、式３の右辺が３の値であり、データサイズが２である場合には、２個の論理アドレスが読出し対象とされる。
【００７８】
ＮＶＲＡＭ読出部３７３は、信号線３４９を介してＮＶＲＡＭページアドレス変換テーブル３４０を参照し、読出し対象の論理アドレスに対応する物理アドレスを読み出す。ＮＶＲＡＭ読出部３７３は、信号線３６９を介してＮＶＲＡＭ物理アドレス管理テーブル３６０を参照し、その物理アドレスが不良の状態であるか否かを判断する。不良でない場合には、ＮＶＲＡＭ読出部３７３は、その物理アドレスを指定したリードリクエストを発行してＮＶＲＡＭ４００へ出力し、ＮＶＲＡＭ４００から出力されたリードデータを受け取り、必要に応じてバッファに保持する。ＮＶＲＡＭ読出部３７３は、リードデータに付加されたエラー訂正コードに基づいてエラー訂正処理を実行し、エラー訂正コードを削除してからリードデータ送信部３７５に出力する。
【００７９】
フラッシュメモリ読出部３７４は、フラッシュメモリ５００からデータを読み出すものである。フラッシュメモリ読出部３７４は、開始論理アドレス演算部３７２から開始論理アドレスおよび読出しセクタ数を受け取る。フラッシュメモリ読出部３７４は、開始論理アドレスから読出しセクタ数の論理アドレスを読出し対象とする。フラッシュメモリ読出部３７４は、信号線３３９を介してセクタアドレス変換テーブル３３０を参照し、読出し対象の論理アドレスに対応する物理アドレスを読み出す。フラッシュメモリ読出部３７４は、信号線３５９を介してフラッシュメモリ物理アドレス管理テーブル３５０を参照し、その物理アドレスが不良の状態であるか否かを判断する。不良でない場合には、フラッシュメモリ読出部３７４は、その物理アドレスを指定したリードリクエストを発行してフラッシュメモリ５００へ出力する。このリードリクエストは、ＮＶＲＡＭ読出部３７３によるリードリクエストの発行と同時に発行されるものとする。フラッシュメモリ読出部３７４は、フラッシュメモリ５００から出力されたリードデータを受け取り、必要に応じてバッファに保持する。フラッシュメモリ読出部３７４は、リードデータに付加されたエラー訂正コードに基づいてエラー訂正処理を実行し、エラー訂正コードを削除してリードデータ送信部３７５に出力する。
【００８０】
リードデータ送信部３７５は、ＮＶＲＡＭ読出部３７３またはフラッシュメモリ読出部３７４からのリードデータをリードコマンドに対する応答とともにホストコンピュータ１００へ出力するものである。
【００８１】
図１３は、実施の形態における読出し処理のシーケンス図の一例である。データＤ１乃至Ｄ１６のうち、データＤ１乃至Ｄ３がＮＶＲＡＭ４００に書き込まれ、残りのデータＤ４乃至Ｄ１６がフラッシュメモリ５００に書き込まれているものとする。データＤ１乃至Ｄ１６が書き込まれたアドレスを指定したリードコマンドをホストコンピュータ１００が記憶制御部３００に出力した場合について考える。
【００８２】
ここで、ＮＶＲＡＭ４００は、前述したようにデータ転送用のバッファとして、キャッシュレジスタ４４０およびデータレジスタ４５０を備えるため、データの読出し処理と、読み出したデータの転送処理とを並列に実行することができる。したがって、ＮＶＲＡＭ４００は、あるリードリクエストの実行中に、次のリードリクエストを受け付けることができる。しかし、バッファの各々の容量は、ＮＶＲＡＭページ１つ分であるため、リードリクエストを３つ以上、同時に受け付けることはできないものとする。フラッシュメモリ５００も同様に、リードリクエストを２つまで同時に受け付けることができるものとする。
【００８３】
記憶制御部３００は、データＤ１をデータＤ１−１およびＤ１−２に分割して、これらのデータの読出しをＮＶＲＡＭ４００に対して要求するリードリクエストを発行する。また、記憶制御部３００は、データＤ１−１およびＤ１−２に係るリクエストと同時に、データＤ４乃至Ｄ１１の読出しを要求するリードリクエストとデータＤ１２乃至Ｄ１６の読出しを要求するリードリクエストとを発行する。
【００８４】
そして、リードデータＤ１−１が読み出されると、記憶制御部３００は、リードデータＤ２−１についてのリードリクエストを発行する。データＤ１−２が読み出されると、記憶制御部３００は、データＤ１−１およびＤ１−２からなるデータをデータＤ１としてホストコンピュータ１００に出力する。リードコマンドの実行時点から、データＤ１が読み出されるまでの時間がデータ記憶装置２００のアクセスタイム（レイテンシ）となる。アクセスタイムが比較的短いＮＶＲＡＭ４００から、最初のデータＤ１が読み出されるため、データ記憶装置２００全体のアクセスタイムが短くなる。
【００８５】
例えば、ＮＶＲＡＭ４００のビジー時間が０．１マイクロセカンド（μｓ）であり、ＮＶＲＡＭ４００から記憶制御部３００への１／２セクタの転送時間が５．３マイクロセカンド（μｓ）である構成を考える。この場合、ＮＶＲＡＭ４００のアクセスタイムは、リードコマンドの実行時点から、分割した１／２セクタが出力されるまでの時間であるため、ビジー時間に１／２セクタの転送時間を加算した、５．７マイクロセカンド（μｓ）となる。また、データ記憶装置２００全体のアクセスタイムは、ビジー時間に１セクタの転送時間を加算した、１０．７マイクロセカンド（μｓ）となる。
【００８６】
データＤ１乃至Ｄ３がＮＶＲＡＭ４００から読み出されたあとは、残りのデータＤ４乃至Ｄ１６がフラッシュメモリ５００から読み出される。全てのデータが読み出されると、記憶制御部３００は、リードコマンドの終了をホストコンピュータ１００に通知する。
【００８７】
図１４は、実施の形態におけるデータの転送のタイミングを説明するための図である。図１４においては、横軸が時間軸であるものとする。また、図１４における斜線部の横軸における長さは、ビジー時間を表わすものとする。具体的には、ＶＲＡＭ４００のビジー時間を０．１マイクロセカンド（μｓ）とし、フラッシュメモリ５００のビジー時間を３０マイクロセカンド（μｓ）とする。記憶制御部３００と、ＮＶＲＡＭ４００およびフラッシュメモリ５００との間のデータ転送周波数を５０メガヘルツ（ＭＨｚ）とし、８ビットのデータがパラレル転送されるものとする。ホストコンピュータ１００と記憶制御部３００との間のリードコマンドの転送時間と、記憶制御部３００と、ＮＶＲＡＭ４００およびフラッシュメモリ５００との間のリードリクエストの転送時間は十分に短いものとする。
【００８８】
この場合、ＮＶＲＡＭ４００から記憶制御部３００へ２６５バイト（ＮＶＲＡＭページ）のデータが転送される時間は、次の式４より算出される。
２６５÷５０×１０６[Ｈｚ]＝５．３×１０−６[ｓ]＝５．３[μｓ]    式４
式４より、ＮＶＲＡＭページ２つ分（１セクタ）の転送時間は、１０．６マイクロセカンド（μｓ）である。ＮＶＲＡＭ４００のスループットは、セクタのサイズ（５１２バイト）を１０．６マイクロセカンド（μｓ）で除した値となる。
【００８９】
一方、フラッシュメモリ５００から記憶制御部３００へ、エラー訂正コードを付加した１セクタ（５４０バイト）のデータが転送される時間は、次の式５より算出される。
５４０÷５０×１０６[Ｈｚ]＝１０．８×１０−６[ｓ]＝１０．８[μｓ]    式５
式５から得られた１セクタの転送時間をフラッシュメモリ５００のビジー時間に加算することにより、フラッシュメモリ５００のアクセスタイムとして、４０．８マイクロセカンド（μｓ）が得られる。
【００９０】
フラッシュメモリ５００のアクセスタイムの間にＮＶＲＡＭ４００から読み出すことができるセクタ数は、ＮＶＲＡＭ４００のビジー時間と、式４から得られた転送時間とに基づいて、次の式６から算出される。
（４０．８[μｓ]−０．１[μｓ]）／１０．６[μｓ]≒３．８    式６
式６より、フラッシュメモリ５００のアクセスタイムの間に、ＮＶＲＡＭ４００から最大で３セクタのデータを読み出すことができる。したがって、この例においては、ＮＶＲＡＭ連続セクタ数は３に設定される。
【００９１】
３セクタがＮＶＲＡＭ４００から読み出されるまでに、フラッシュメモリ５００のビジー時間が経過してデータ転送が可能となっているため、ＮＶＲＡＭ４００が読み出されたときにフラッシュメモリ５００からの読出しを開始することができる。したがって、ＮＶＲＡＭ４００からの読出しが完了してから、フラッシュメモリ５００からの読出しの開始までに空き時間が生じることがなくなり、スループットが向上する。
【００９２】
仮に、ＮＶＲＡＭ連続セクタ数を３より多くしたとしても、スループットはあまり向上しない。アクセスタイム経過後におけるＮＶＲＡＭ４００とフラッシュメモリ５００とのセクタ当たりの転送時間の差はほとんどないためである。このため、ＮＶＲＡＭ連続セクタ数を３より多くしても、多くした分、ＮＶＲＡＭ４００の容量が無駄になる。上述したように、スループットが向上する最低限の個数のＮＶＲＡＭ連続セクタ数を設定することにより、ＮＶＲＡＭ４００の容量を効率的に使用することができる。
【００９３】
なお、記憶制御部３００によりＮＶＲＡＭ４００およびフラッシュメモリ５００に対してリードリクエストが同時に発行される構成としているが、発行のタイミングは同時に限定されない。ＮＶＲＡＭ連続セクタ数のセクタが読み出されるまでに、フラッシュメモリ５００のビジー時間が終了していればよい。具体的には、式４から得られる３セクタ分の転送時間と、ＮＶＲＡＭ４００のビジー時間とを加算すると、３セクタが読み出されるまでの時間は３１．９マイクロセカンド（μｓ）である。この時間と、フラッシュメモリ５００のビジー時間との差分は、１．９マイクロセカンド（μｓ）である。したがって、ＮＶＲＡＭ４００に対するリードリクエストの発行時点から、１．９マイクロセカンド（μｓ）が経過するまでに、フラッシュメモリ５００に対してリードリクエストを発行すればよい。
【００９４】
［データ書込部の動作例］
図１５は、実施の形態における書込み処理の一例を示すフローチャートである。この書込み処理は、例えば、記憶制御部３００がホストコンピュータ１００からライトコマンドおよびライトデータを受け取ったときに開始する。
【００９５】
記憶制御部３００におけるデータ書込部３２０は、ライトコマンドで指定された先頭論理アドレスおよびデータサイズに基づいて、ライトデータの書込み処理をセクタ単位で分割する（ステップＳ９２１）。データ書込部３２０は、先頭論理アドレスからデータサイズの個数の論理アドレスのうち、データを書き込んでいない論理アドレスのいずれか（例えば、アドレス値が最小の論理アドレス）を書込み先の論理アドレスとして決定する（ステップＳ９２２）。
【００９６】
データ書込部３２０は、セクタアドレス変換テーブル３３０を参照して、書込み先の論理アドレスに対応するセクタ管理情報を読み出す（ステップＳ９２３）。
【００９７】
データ書込部３２０は、ホストコンピュータ１００から受け取った高速指定フラグがＴ（True）であるか否かを判断する（ステップＳ９２４）。高速指定フラグがＴである場合には（ステップＳ９２４：Ｙｅｓ）、データ書込部３２０は、書込み対象の論理アドレスが、先頭論理アドレスからＮＶＲＡＭ連続セクタ数（例えば、３）以内のアドレスであるか否かを判断する（ステップＳ９２５）。
【００９８】
先頭論理アドレスからＮＶＲＡＭ連続セクタ数以内のアドレスである場合には（ステップＳ９２５：Ｙｅｓ）、データ書込部３２０は、ＮＶＲＡＭページアドレス変換テーブル３４０から、論理アドレスに対応する物理アドレスを読み出す。対応する物理アドレスが記載されていない場合には、データ書込部３２０は、ＮＶＲＡＭ物理アドレス管理テーブル３６０を参照して、空きの物理アドレスを論理アドレスに割り当てる。データ書込部３２０は、論理アドレスに対応する、ＮＶＲＡＭ４００の物理アドレスにデータを書き込む（ステップＳ９２６）。データ書込部３２０は、書込み内容に基づいてセクタアドレス変換テーブル３３０を更新する（ステップＳ９２７）。具体的には、データ書込部３２０は、論理アドレスに対応する有効フラグおよびＮＶＲＡＭフラグをＴ（True）に更新する。また、論理アドレスに対応するＮＶＡＲＭ連続セクタ数の欄に３を記載し、ＮＶＲＡＭセクタ番号の欄には０乃至２のうちのいずれかを記載する。
【００９９】
データ書込部３２０は、書込み内容に基づいてＮＶＲＡＭページアドレス変換テーブル３４０を更新する（ステップＳ９２８）。書込みを実行した論理アドレスがＮＶＲＡＭページアドレス変換テーブル３４０に登録されていない場合には、データ書込部３２０は、その論理アドレスとＮＶＲＡＭページ管理情報とを登録する。
【０１００】
高速指定フラグがＦ（False）である場合（ステップＳ９２４：Ｎｏ）、または、先頭論理アドレスからＮＶＲＡＭ連続セクタ数以内のアドレスでない場合には（ステップＳ９２５：Ｎｏ）、データ書込部３２０は、フラッシュメモリ５００を書込み対象とする。データ書込部３２０は、書込み対象の論理アドレスに対応する物理アドレスセクタ管理情報から取得する。セクタ管理情報において、対応する物理アドレスがない場合には、データ書込部３２０は、フラッシュメモリ物理アドレス管理テーブル３５０を参照して、空きの物理アドレスを論理アドレスに割り当てる。データ書込部３２０は、論理アドレスに対応する、フラッシュメモリ５００の物理アドレスにデータを書き込む（ステップＳ９２９）。データ書込部３２０は、書込み内容に基づいてセクタアドレス変換テーブル３３０を更新する（ステップＳ９３０）。具体的には、データ書込部３２０は、論理アドレスに対応する有効フラグをＴ（True）に、ＮＶＲＡＭフラグをＦ（False）に更新する。また、データ書込部３２０は、論理アドレスに対応する物理アドレスおよび物理アドレスオフセットを記載する。
【０１０１】
テーブルの更新後（ステップＳ９２８またはＳ９３０）、データ書込部３２０は、ライトデータのうち書込みを実行していないデータ（セクタ）があるか否かを判断する（ステップＳ９３１）。未書込みのデータがある場合には（ステップＳ９３１：Ｙｅｓ）、データ書込部３２０は、ステップＳ９２２に戻る。未書込みのデータがない場合には（ステップＳ９３１：Ｎｏ）、データ書込部３２０は、ライトコマンドの終了をホストコンピュータ１００に通知する（ステップＳ９３２）。ステップＳ９３２の後、データ書込部３２０は、書込み処理を終了する。
【０１０２】
［データ読出部の動作例］
図１６は、実施の形態における読出し処理の一例を示すフローチャートである。この読出し処理は、例えば、記憶制御部３００がホストコンピュータ１００からリードコマンドを受け取ったときに開始する。
【０１０３】
記憶制御部３００におけるデータ読出部３７０は、リードコマンドで指定された先頭論理アドレスおよびデータサイズに基づいて、リードデータの読出し処理をセクタ単位で分割する（ステップＳ９５１）。データ読出部３７０は、先頭論理アドレスからデータサイズの個数の論理アドレスのうち、データを読み出していない論理アドレスのいずれか（例えば、アドレス値が最小の論理アドレス）を読出し先の論理アドレスとして決定する（ステップＳ９５２）。
【０１０４】
データ読出部３７０は、セクタアドレス変換テーブル３３０を参照して、読出し先の論理アドレスに対応するセクタ管理情報を読み出す（ステップＳ９５３）。データ読出部３７０は、セクタ管理情報におけるＮＶＲＡＭフラグがＴ（True）であるか否かを判断する（ステップＳ９５４）。
【０１０５】
ＮＶＲＡＭフラグがＴである場合には（ステップＳ９５４：Ｙｅｓ）、データ読出部３７０は、式１を使用して、フラッシュメモリ５００における開始論理アドレスを演算する（ステップＳ９５５）。そして、データ読出部３７０は、フラッシュメモリ５００に対するリードリクエストを発行する必要があるか否かを判断する。具体的には、開始論理アドレスが、リードコマンドにより指定された論理アドレスである場合には、リードリクエストを発行する必要があると判断される。そうでない場合には、リードリクエストを発行する必要がないと判断される（ステップＳ９５６）。
【０１０６】
ＮＶＲＡＭフラグがＦ（False）である場合（ステップＳ９５４：Ｎｏ）またはリードリクエストを発行する必要がある場合（ステップＳ９５６：Ｙｅｓ）、データ読出部３７０は、フラッシュメモリ５００に対してリードリクエストを発行する。ただし、一度発行したリードリクエストについては、発行する必要はない。このリードリクエストにおいては、開始論理アドレス以降の論理アドレスが指定される（ステップＳ９５７）。
【０１０７】
フラッシュメモリ５００に対してリードリクエストを発行する必要がない場合（ステップＳ９５６：Ｎｏ）、または、ステップＳ９５７の後、データ読出部３７０は、ＮＶＲＡＭ読出し処理を実行する（ステップＳ９６０）。そして、データ読出部３７０は、フラッシュメモリ読出し処理を実行する（ステップＳ９７０）。
【０１０８】
データ読出部３７０は、読み出していないデータ（セクタ）があるか否かを判断する（ステップＳ９５８）。未読出しのデータがある場合には（ステップＳ９５８：Ｙｅｓ）、データ読出部３７０は、ステップＳ９５２に戻る。未読出しのデータがない場合には（ステップＳ９５８：Ｎｏ）、データ読出部３７０は、リードコマンドの終了をホストコンピュータ１００に通知する（ステップＳ９５９）。ステップＳ９５９の後、データ読出部３７０は、読出し処理を終了する。
【０１０９】
図１７は、実施の形態におけるＮＶＲＡＭ読出し処理の一例を示すフローチャートである。データ読出部３７０は、読出し対象の論理アドレスが開始論理アドレス以降のアドレスであるか否かを判断する（ステップＳ９６１）。
【０１１０】
開始論理アドレス以降のアドレスでない場合には（ステップＳ９６１：Ｎｏ）、データ読出部３７０は、読出し対象の論理アドレスに対応するセクタ管理情報をセクタアドレス変換テーブル３３０から読み出す。そして、データ読出部３７０は、式３が成立するか否かにより、式３の右辺（差分）の個数、または、データサイズに応じた個数の論理アドレスをＮＶＲＡＭ４００における読出し対象とする（ステップＳ９６２）。そして、データ読出部３７０は、ＮＶＲＡＭ４００における読出し処理を２５６バイト（１／２セクタ）単位で分割する（ステップＳ９６３）。
【０１１１】
データ読出部３７０は、読出し対象の論理アドレスに対応する物理アドレスをＮＶＲＡＭページアドレス変換テーブル３４０から読み出して、読出し対象の物理アドレスに決定する。１セクタ分の論理アドレスには、２つの物理アドレスが割り当てられているが、値が小さい論理アドレスオフセットに対応する物理アドレスから順に読出し対象とされる（ステップＳ９６４）。データ読出部３７０は、決定した物理アドレスからＮＶＲＡＭページ（１／２セクタ）を読み出す（ステップＳ９６５）。
【０１１２】
データ読出部３７０は、ホストコンピュータ１００へデータを転送可能であるか否かを判断する。例えば、エラー訂正処理が終了した場合に、データの転送が可能であると判断される（ステップＳ９６６）。
【０１１３】
データの転送が可能である場合には（ステップＳ９６６：Ｙｅｓ）、データ読出部３７０は、読み出したデータをセクタ単位でホストコンピュータ１００へ転送する（ステップＳ９６７）。
【０１１４】
データの転送が可能でない場合（ステップＳ９６６：Ｎｏ）、または、ステップＳ９６７の後、データ読出部３７０は、ＮＶＲＡＭ４００から読み出すＮＶＲＡＭページがあるか否かを判断する（ステップＳ９６８）。ＮＶＲＡＭ４００から読み出すデータがある場合には（ステップＳ９６８：Ｙｅｓ）、データ読出部３７０は、ステップＳ９６４に戻る。開始論理アドレス以降である場合（ステップＳ９６１：Ｙｅｓ）、または、ＮＶＲＡＭ４００から読み出すデータがない場合には（ステップＳ９６８：Ｎｏ）、データ読出部３７０は、ＮＶＲＡＭ読出し処理を終了する。
【０１１５】
図１８は、実施の形態におけるフラッシュメモリ読出し処理の一例を示すフローチャートである。データ読出部３７０は、フラッシュメモリ５００に対してリードリクエストを発行したか否かを判断する（ステップＳ９７１）。
【０１１６】
リードリクエストを発行していた場合には（ステップＳ９７１：Ｙｅｓ）、データ読出部３７０は、フラッシュメモリ５００のビジー時間の経過により、フラッシュメモリ５００からのデータの読出しが可能となっている否かを判断する（ステップＳ９７２）。データの読出しが可能となっていない場合には（ステップＳ９７２：Ｎｏ）、データ読出部３７０は、ステップＳ９７２に戻る。
【０１１７】
データの読出しが可能となった場合には（ステップＳ９７２：Ｙｅｓ）、フラッシュメモリ５００からデータを読み出す（ステップＳ９７３）。データ読出部３７０は、ホストコンピュータ１００へデータを転送可能であるか否かを判断する。例えば、エラー訂正処理が終了した場合に、データの転送が可能であると判断される（ステップＳ９７４）。
【０１１８】
データの転送が可能である場合には（ステップＳ９７４：Ｙｅｓ）、データ読出部３７０は、読み出したデータをセクタ単位でホストコンピュータ１００へ転送する（ステップＳ９７５）。データの転送が可能でない場合（ステップＳ９７４：Ｎｏ）、または、ステップＳ９７５の後、データ読出部３７０は、フラッシュメモリ読出し処理を終了する。
【０１１９】
図１９は、実施の形態におけるフラッシュメモリ５００への書込み前のセクタアドレス変換テーブル３３０の一例を示す図である。「ｊ＋３」、「ｊ＋５」および「ｊ＋７」などの論理アドレスには物理アドレスが割り当てられており、これらに対応する有効フラグにＴ（True）が設定されている。一方、「ｊ」、「ｊ＋１」および「ｊ＋２」などの論理アドレスには物理アドレスが割り当てられておらず、これらに対応する有効フラグにＦ（False）が設定されている。
【０１２０】
図２０は、実施の形態におけるフラッシュメモリ５００への書込み後のセクタアドレス変換テーブル３３０の一例を示す図である。図２０の斜線部は、図１９に例示したセクタアドレス変換テーブル３３０において更新された部分である。「ｊ」を先頭論理アドレスとして、フラッシュメモリページ（８セクタ）をフラッシュメモリ５００に書き込んだ場合について考える。この場合、「ｊ」乃至「ｊ＋７」の論理アドレスに対応するフラッシュメモリ物理アドレスの欄には、「ｊ」に対応する物理アドレス「ｆＡｊ」が記載される。また、「ｊ」乃至「ｊ＋７」の論理アドレスに対応する物理アドレスオフセットの欄には、物理アドレス「ｆＡｊ」を基準とした物理アドレスの相対位置を示す「０」乃至「７」の値が記載される。さらに、「ｊ」乃至「ｊ＋７」の論理アドレスに対応する有効フラグにはＴ（True）が設定される。このように、論理アドレスの各々に対応付けて、フラッシュメモリページにおける基準の物理アドレスと、物理アドレスオフセットとが記載される。
【０１２１】
図２１は、実施の形態におけるＮＶＲＡＭ４００への書込み前のセクタアドレス変換テーブル３３０の一例を示す図である。「ｉ」、「ｉ＋１」および「ｉ＋２」などの論理アドレスには物理アドレスが割り当てられておらず、これらに対応する有効フラグおよびＮＶＲＡＭフラグにＦ（False）が設定されている。
【０１２２】
図２２は、実施の形態におけるＮＶＲＡＭ４００への書込み後のセクタアドレス変換テーブル３３０の一例を示す図である。図２２の斜線部は、図２１に例示したセクタアドレス変換テーブル３３０において更新された部分である。「ｉ」を先頭論理アドレスとして３セクタのデータをＮＶＲＡＭ４００に書き込んだ場合について考える。この場合、「ｉ」乃至「ｉ＋２」の論理アドレスに対応するＮＶＲＡＭフラグには、Ｔ（True）が設定される。また、「ｉ」乃至「ｉ＋２」の論理アドレスに対応するＮＶＲＡＭセクタ番号の欄には、先頭論理アドレスを基準とした論理アドレスの相対的な位置である「０」乃至「２」が記載される。「ｉ」乃至「ｉ＋２」の論理アドレスに対応するＮＶＲＡＭ連続セクタ数の欄には「３」の値が記載される。このように、ＮＶＲＡＭ４００にデータが書き込まれた場合には、論理アドレスに対応付けて、連続する論理アドレスの数（ＮＶＲＡＭ連続セクタ数）と、それらの論理アドレスの相対的な位置（ＮＶＲＡＭセクタ番号）とが記載される。
【０１２３】
このように、本技術の実施の形態によれば、記憶制御部３００は、複数のデータを書き込む場合には、フラッシュメモリ５００のアクセスタイムの相当期間内にＮＶＲＡＭ４００から読み出しうるデータ数をＮＶＲＡＭ４００に書き込む。そして、記憶制御部３００は、残りのデータをフラッシュメモリ５００に書き込む。一方、複数のデータを読み出す場合には、記憶制御部３００は、ＮＶＲＡＭ４００からの読出し完了時にフラッシュメモリ５００からの読出しが開始されるようにＮＶＲＡＭ４００およびフラッシュメモリ５００に対してリードリクエストを発行する。これにより、記憶制御部３００は、ＮＶＲＡＭ４００からデータが読み出されたときに、フラッシュメモリ５００からの読出しを開始することができる。したがって、ＮＶＲＡＭ４００におけるデータの読出し完了時点から、フラッシュメモリ５００における読出し開始までの空き時間が生じなくなり、スループットが向上する。また、スループットが向上する最小限のデータ数をＮＶＲＡＭ４００に書き込むため、ＮＶＲＡＭ４００の容量が効率的に利用される。
【０１２４】
また、記憶制御部３００が高速で読み出されるようにデータを書き込むことにより、このデータを読み出す機器の利便性を向上させることができる。例えば、スマートフォンやタブレットＰＣ（Personal Computer）など、高速起動が要求されることが多い機器の利便性を向上させることができる。具体的には、これらの機器において起動時に実行されるソフトウェアコードについて、高速に読み出されるように書き込むことにより、機器の高速起動が実現される。
【０１２５】
＜２．変形例＞
図２３を参照して、上述の実施の形態における変形例について説明する。図２３は、変形例におけるライトコマンドで設定されるパラメータの一例である。パラメータとして、高速指定フラグＨＦの代わりに、ＮＶＲＡＭ連続セクタ数が設定される。ホストコンピュータ１００は、複数セクタからなるデータを書き込むときに、ＮＶＲＡＭ連続セクタ数を決定して、データ記憶装置２００に指示する。ホストコンピュータ１００は、アプリケーションの種類や、ホストコンピュータ１００とデータ記憶装置２００との間のデータ転送時間などに基づいて、ＮＶＲＡＭ連続セクタ数を変更することできる。データ記憶装置２００は、ホストコンピュータ１００の指示に従って、ＮＶＲＡＭ連続セクタ数を設定する。
【０１２６】
このように、変形例によれば、ホストコンピュータ１００は、必要に応じてＮＶＲＡＭ連続セクタ数を変更することができる。
【０１２７】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１２８】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disk）、メモリカード、ブルーレイディスク（Blu-ray Disc（登録商標））等を用いることができる。
【０１２９】
なお、本技術は以下のような構成もとることができる。
（１）データの読出し要求が発行されたときから前記データが読み出されるまでのアクセスタイムが高速アクセス記憶部より長い低速アクセス記憶部のアクセスタイムの相当期間内に前記高速アクセス記憶部において読み出しうるデータ数を高速アクセスデータ数として設定して、複数のデータを前記高速アクセス記憶部および前記低速アクセス記憶部に書き込む場合には前記複数のデータのうち前記高速アクセスデータ数のデータを高速アクセスデータとして前記高速アクセス記憶部に書き込むとともに残りのデータを低速アクセスデータとして前記低速アクセス記憶部に書き込む書込部と、
前記低速アクセス記憶部および前記高速アクセス記憶部に書き込まれた前記複数のデータを読み出す場合には前記高速アクセス記憶部に対して前記高速アクセスデータの読出し要求を発行するとともに前記高速アクセスデータが読み出されたときに前記低速アクセスデータの読出しが開始されるように前記低速アクセス記憶部に対して前記低速アクセスデータの読出し要求を発行する読出部と
を具備する記憶制御装置。
（２）最初に読み出される前記低速アクセスデータが書き込まれたアドレスである低速アクセス開始アドレスを前記高速アクセスデータが書き込まれたアドレスである高速アクセスアドレスから取得するための管理情報を記憶する管理情報記憶部をさらに具備し、
前記読出部は、前記高速アクセスアドレスから前記高速アクセスデータを読み出す場合には前記高速アクセスデータの読出し要求を前記高速アクセス記憶部に対して発行するとともに前記管理情報に基づいて前記低速アクセス開始アドレスを取得して当該低速アクセス開始アドレスからの前記低速アクセスデータの読出し要求を前記低速アクセス記憶部に対して発行する
前記（１）記載の記憶制御装置。
（３）前記管理情報記憶部は、前記高速アクセスアドレスごとに当該高速アクセスアドレスと前記低速アクセス開始アドレスとの相対的な位置を示す情報を前記管理情報として記憶し、
前記読出部は、前記高速アクセスアドレスから前記高速アクセスデータを読み出す場合には前記高速アクセスアドレスと当該高速アクセスアドレスに対応する前記管理情報とから前記低速アクセス開始アドレスを取得する
前記（２）記載の記憶制御装置。
（４）前記読出部は、前記高速アクセス記憶部に対する前記高速アクセスデータの読出し要求と前記低速アクセス記憶部に対する前記低速アクセスデータの読出し要求とを同時に発行する
前記（１）乃至（３）のいずれかに記載の記憶制御装置。
（５）前記書込部は、前記複数のデータの書込みの指示とともに前記高速アクセスデータ数が指定された場合には当該指定された高速アクセスデータ数を設定して前記複数のデータを書き込む
前記（１）乃至（４）のいずれかに記載の記憶制御装置。
（６）前記書込部は、前記書込みの指示とともに書き込まれたデータが高速で読み出されるように書き込む旨が指示された場合には前記複数のデータのうち前記高速アクセスデータ数のデータを高速アクセスデータとして前記高速アクセス記憶部に書き込むとともに前記残りのデータを低速アクセスデータとして前記低速アクセス記憶部に書き込む
前記（５）記載の記憶制御装置。
（７）書込部が、データの読出し要求が発行されたときから前記データが読み出されるまでのアクセスタイムが高速アクセス記憶部より長い低速アクセス記憶部のアクセスタイムの相当期間内に前記高速アクセス記憶部において読み出しうるデータ数を高速アクセスデータ数として設定して、複数のデータを前記高速アクセス記憶部および前記低速アクセス記憶部に書き込む場合には前記複数のデータのうち前記高速アクセスデータ数のデータを高速アクセスデータとして前記高速アクセス記憶部に書き込むとともに残りのデータを低速アクセスデータとして前記低速アクセス記憶部に書き込む書込手順と、
読出部が、前記低速アクセス記憶部および前記高速アクセス記憶部に書き込まれた前記複数のデータを読み出す場合には前記高速アクセス記憶部に対して前記高速アクセスデータの読出し要求を発行するとともに前記高速アクセスデータが読み出されたときに前記低速アクセスデータの読出しが開始されるように前記低速アクセス記憶部に対して前記低速アクセスデータの読出し要求を発行する読出手順と
を具備する記憶制御装置の制御方法。
（８）高速アクセス記憶部と、
データの読出し要求が発行されたときから前記データが読み出されるまでのアクセスタイムが前記高速アクセス記憶部より長い低速アクセス記憶部と、
前記低速アクセス記憶部のアクセスタイムの相当期間内に前記高速アクセス記憶部において読み出しうるデータ数を高速アクセスデータ数として設定して、複数のデータを前記高速アクセス記憶部および前記低速アクセス記憶部に書き込む場合には前記複数のデータのうち前記高速アクセスデータ数のデータを高速アクセスデータとして前記高速アクセス記憶部に書き込むとともに残りのデータを低速アクセスデータとして前記低速アクセス記憶部に書き込む書込部と、前記低速アクセス記憶部および前記高速アクセス記憶部に書き込まれた前記複数のデータを読み出す場合には前記高速アクセス記憶部に対して前記高速アクセスデータの読出し要求を発行するとともに前記高速アクセスデータが読み出されたときに前記低速アクセスデータの読出しが開始されるように前記低速アクセス記憶部に対して前記低速アクセスデータの読出し要求を発行する読出部とを備える記憶制御装置と
を具備する記憶装置。
【符号の説明】
【０１３０】
１００  ホストコンピュータ
２００  データ記憶装置
３００  記憶制御部
３１１  処理装置
３１２  ＲＡＭ
３１３  エラー訂正処理部
３１４  ＲＯＭ
３１５  バス
３１６  ホストインターフェース
３１７  ＮＶＲＡＭインターフェース
３１８  フラッシュメモリインターフェース
３２０  データ書込部
３２１、３７１  コマンド解析部
３２２  書込先判断部
３２３  データ書込要求部
３２４  テーブル更新部
３３０  セクタアドレス変換テーブル
３４０  ＮＶＲＡＭページアドレス変換テーブル
３５０  フラッシュメモリ物理アドレス管理テーブル
３６０  ＮＶＲＡＭ物理アドレス管理テーブル
３７０  データ読出部
３７２  開始論理アドレス演算部
３７３  ＮＶＲＡＭ読出部
３７４  フラッシュメモリ読出部
３７５  リードデータ送信部
４００  ＮＶＲＡＭ
４１０  インターフェース
４２０  メモリ制御部
４３０  アドレスデコーダ
４４０  キャッシュレジスタ
４５０  データレジスタ
４６０  メモリアレイ
５００  フラッシュメモリ
【図１】
2013142947.tif 000003
【図２】
2013142947.tif 000004
【図３】
2013142947.tif 000005
【図４】
2013142947.tif 000006
【図５】
2013142947.tif 000007
【図６】
2013142947.tif 000008
【図７】
2013142947.tif 000009
【図８】
2013142947.tif 000010
【図９】
2013142947.tif 000011
【図１０】
2013142947.tif 000012
【図１１】
2013142947.tif 000013
【図１２】
2013142947.tif 000014
【図１３】
2013142947.tif 000015
【図１４】
2013142947.tif 000016
【図１５】
2013142947.tif 000017
【図１６】
2013142947.tif 000018
【図１７】
2013142947.tif 000019
【図１８】
2013142947.tif 000020
【図１９】
2013142947.tif 000021
【図２０】
2013142947.tif 000022
【図２１】
2013142947.tif 000023
【図２２】
2013142947.tif 000024
【図２３】
2013142947.tif 000025