(57)【要約】【課題】記憶装置からデータの読出しを繰り返し行うことにより発生する読出し時間の増大を抑制する情報処理装置、データアクセス方法およびプログラムを提供する。【解決手段】実施形態の情報処理装置は、記憶手段と、アクセス制御手段と、カウント手段と、判定手段と、削除手段と、を備える。記憶手段は、ＮＡＮＤ型フラッシュメモリでデータを記憶する。アクセス制御手段は、記憶手段に記憶されたデータへのアクセス要求を出力する。カウント手段は、アクセス要求が読出しの要求である場合、そのアクセス要求が示す記憶手段の記憶領域に対する読出し回数を１増やす。判定手段は、読出し回数が所定回数に達したか否かを判定する。削除手段は、判定手段により読出し回数が所定回数に達したと判定された場合、その読出し回数に対応する記憶領域に記憶された第１データを削除する。【選択図】図６
2016024779.tif 000002
【特許請求の範囲】
【請求項１】
ＮＡＮＤ型フラッシュメモリでデータを記憶する記憶手段と、
前記記憶手段に記憶されたデータへのアクセス要求を出力するアクセス制御手段と、
前記アクセス要求が読出しの要求である場合、該アクセス要求が示す前記記憶手段の記憶領域に対する読出し回数を１増やすカウント手段と、
前記読出し回数が所定回数に達したか否かを判定する判定手段と、
前記判定手段により前記読出し回数が前記所定回数に達したと判定された場合、該読出し回数に対応する前記記憶領域に記憶された第１データを削除する削除手段と、
を備えた情報処理装置。
【請求項２】
前記カウント手段は、前記判定手段により前記読出し回数が前記所定回数に達したと判定された場合、該読出し回数をリセットする請求項１に記載の情報処理装置。
【請求項３】
前記削除手段は、前記判定手段により前記読出し回数が前記所定回数に達したと判定された場合、前記所定回数に達した前記読出し回数に対応する前記記憶領域の前記第１データを取得し、該記憶領域に記憶された該第１データを削除し、取得した該第１データを前記記憶手段に新たに第２データとして書き込む請求項１に記載の情報処理装置。
【請求項４】
前記アクセス制御手段は、前記記憶手段において、セクタ単位の前記記憶領域である第１記憶領域に記憶されたデータへの前記アクセス要求を出力し、
前記カウント手段は、前記アクセス要求が書込みまたは削除の要求である場合、該アクセス要求が示す前記第１記憶領域に対する前記読出し回数をリセットする請求項１に記載の情報処理装置。
【請求項５】
前記アクセス制御手段は、前記記憶手段において、セクタ単位の前記記憶領域である第１記憶領域に記憶されたデータへの前記アクセス要求を出力し、
前記記憶手段は、論理セクタと、前記第１記憶領域である物理セクタとの対応情報を有するメモリ制御手段を有し、
前記メモリ制御手段は、前記物理セクタに記憶された前記第１データを削除する場合、前記対応情報によって該物理セクタに対応付けられた前記論理セクタのデータを削除する請求項１に記載の情報処理装置。
【請求項６】
前記アクセス制御手段は、前記記憶手段において、ファイル単位の前記記憶領域である第２記憶領域に記憶されたデータに前記アクセス要求する請求項１に記載の情報処理装置。
【請求項７】
前記カウント手段は、前記アクセス要求が削除の要求である場合、該アクセス要求が示す前記第２記憶領域に対する前記読出し回数をリセットする請求項６に記載の情報処理装置。
【請求項８】
前記所定回数は、前記ＮＡＮＤ型フラッシュメモリのブロックにおける読出しの許容回数を、１ブロック内のページ数で除した値の回数以下の回数である請求項１に記載の情報処理装置。
【請求項９】
情報提供サーバと通信するためのインターフェース手段をさらに備え、
前記情報提供サーバに対応するキャッシュサーバとして機能する請求項１〜８のいずれか一項に記載の情報処理装置。
【請求項１０】
ＮＡＮＤ型フラッシュメモリでデータを記憶する記憶手段に記憶されたデータへのアクセス要求を出力するアクセス制御ステップと、
前記アクセス要求が読出しの要求である場合、該アクセス要求が示す前記記憶手段の記憶領域に対する読出し回数を１増やすカウントステップと、
前記読出し回数が所定回数に達したか否かを判定する判定ステップと、
前記読出し回数が前記所定回数に達したと判定した場合、該読出し回数に対応する前記記憶領域に記憶された第１データを削除する削除ステップと、
を有するデータアクセス方法。
【請求項１１】
ＮＡＮＤ型フラッシュメモリでデータを記憶する記憶手段を備えたコンピュータを、
前記記憶手段に記憶されたデータへのアクセス要求を出力するアクセス制御手段と、
前記アクセス要求が読出しの要求である場合、該アクセス要求が示す前記記憶手段の記憶領域に対する読出し回数を１増やすカウント手段と、
前記読出し回数が所定回数に達したか否かを判定する判定手段と、
前記判定手段により前記読出し回数が前記所定回数に達したと判定された場合、該読出し回数に対応する前記記憶領域に記憶された第１データを削除する削除手段と、
して機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置、データアクセス方法およびプログラムに関する。
【背景技術】
【０００２】
近年、データ記憶装置であるＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリ、ＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリカード、およびＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等にＮＡＮＤ（Ｎｏｔ  ＡＮＤ）型フラッシュメモリ（以下、単にＮＡＮＤメモリという）が採用され、記憶容量の大容量化および高速な読み書きが実現されている。一般に、ＮＡＮＤメモリは、データの書込み回数がかさむと記憶素子の物理的な損傷を招来することが知られているが、データの読出し回数がかさむことによって、記憶されたデータが壊れていく現象（いわゆる、読出しディスターブ（Ｒｅａｄ  Ｄｉｓｔｕｒｂ））が発生する。このようなＮＡＮＤメモリにおける読出しディスターブに対する対策として、データ記憶装置に記憶されているデータのうち壊れたデータを、所定のアルゴリズムによって修復する技術が提案されている。
【０００３】
しかし、このような技術においては、データ記憶装置からの壊れたデータの読出し時に、データを修復するためのアルゴリズムが実行されるため、読出し時間が増大するという問題点があった。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１９２０５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、上記に鑑みてなされたものであって、記憶装置からデータの読出しを繰り返し行うことにより発生する読出し時間の増大を抑制する情報処理装置、データアクセス方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
実施形態の情報処理装置は、記憶手段と、アクセス制御手段と、カウント手段と、判定手段と、削除手段と、を備える。記憶手段は、ＮＡＮＤ型フラッシュメモリでデータを記憶する。アクセス制御手段は、記憶手段に記憶されたデータへのアクセス要求を出力する。カウント手段は、アクセス要求が読出しの要求である場合、そのアクセス要求が示す記憶手段の記憶領域に対する読出し回数を１増やす。判定手段は、読出し回数が所定回数に達したか否かを判定する。削除手段は、判定手段により読出し回数が所定回数に達したと判定された場合、その読出し回数に対応する記憶領域に記憶された第１データを削除する。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態に係る情報処理装置のハードウェア構成を示す図である。
【図２】第１の実施形態に係る情報処理装置のソフトウェア構成を示す図である。
【図３】ＳＳＤの構成図である。
【図４】ＮＡＮＤメモリチップの構成図である。
【図５】論理セクタと物理セクタとの変換について説明する図である。
【図６】第１の実施形態に係る情報処理装置の機能ブロック構成を示す図である。
【図７】第１の実施形態のリードカウンタテーブルの例を示す図である。
【図８】第１の実施形態のデータアクセス要求に対する処理のフローチャートである。
【図９】第１の実施形態の変形例に係る情報処理装置の機能ブロック構成を示す図である。
【図１０】データ削除前の論理セクタおよび物理セクタの状態の例を示す図である。
【図１１】データ削除後の論理セクタおよび物理セクタの状態の例を示す図である。
【図１２】データ書込み後の論理セクタおよび物理セクタの状態の例を示す図である。
【図１３】第２の実施形態に係る情報処理装置のソフトウェア構成を示す図である。
【図１４】第２の実施形態に係る情報処理装置の機能ブロック構成を示す図である。
【図１５】第３の実施形態に係る情報処理装置のソフトウェア構成を示す図である。
【図１６】第３の実施形態に係る情報処理装置の機能ブロック構成を示す図である。
【図１７】第３の実施形態に係るリードカウンタテーブルの例を示す図である。
【図１８】第３の実施形態のアプリケーションからシステムコールが出力された場合の処理のフローチャートである。
【図１９】第４の実施形態のクライアントサーバシステムの構成例を示す図である。
【図２０】第４の実施形態の変形例のクライアントサーバシステムの構成例を示す図である。
【発明を実施するための形態】
【０００８】
以下に、図面を参照しながら、本発明の実施形態に係る情報処理装置、データアクセス方法およびプログラムを詳細に説明する。また、以下の図面において、同一の部分には同一の符号が付してある。ただし、図面は模式的なものであるため、具体的な厚みおよび寸法は以下の説明を参酌して判断すべきものである。
【０００９】
（第１の実施形態）
図１は、第１の実施形態に係る情報処理装置のハードウェア構成の一例を示す図である。図１を参照しながら、本実施形態に係る情報処理装置１０のハードウェア構成について説明する。
【００１０】
情報処理装置１０は、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、ワークステーション、またはサーバ等の装置である。図１に示すように、情報処理装置１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１３と、ネットワークＩ／Ｆ１４（インターフェース手段）と、ディスプレイ１５と、ストレージアクセス部１６と、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）１７（記憶手段）と、キーボード１８と、マウス１９と、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ドライブ２０と、を備えている。
【００１１】
ＣＰＵ１１は、情報処理装置１０全体の動作を制御する装置である。ＲＯＭ１２は、情報処理装置１０用のプログラムを記憶している不揮発性記憶装置である。
【００１２】
ＲＡＭ１３は、ＣＰＵ１１のワークエリアとして使用される揮発性記憶装置である。ＲＡＭ１３は、アプリケーションを含む各種プログラム、および情報処理装置１０で行われる各種処理に使用されるデータ等を記憶する。ＲＡＭ１３に展開されたＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）上でアプリケーションが、ＣＰＵ１１によって実行される。
【００１３】
ネットワークＩ／Ｆ１４は、外部機器とインターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）または専用回線等のネットワークを介して、データを通信するためのインターフェースである。
【００１４】
ディスプレイ１５は、カーソル、メニュー、ウィンドウ、文字または画像等の各種情報を表示する表示装置である。ディスプレイ１５は、例えば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）ディスプレイ、液晶ディスプレイ、プラズマディスプレイまたは有機ＥＬ（Ｅｌｅｃｔｒｏｌｕｍｉｎｅｓｃｅｎｃｅ）ディスプレイ等である。
【００１５】
ストレージアクセス部１６は、デバイスドライバからのデータアクセス要求に従って、ＳＳＤ１７に対してデータの読出し、書込み、または削除等のアクセスを行う装置である。ストレージアクセス部１６は、ＳＳＤ１７と、ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）等のインターフェース規格で接続される。
【００１６】
ＳＳＤ１７は、記憶媒体としてフラッシュメモリを用いた記憶装置である。ＳＳＤ１７は、本実施形態において、フラッシュメモリとしてＮＡＮＤメモリを備えている。
【００１７】
キーボード１８は、文字、数字、各種指示の選択、およびカーソルの移動等を行う入力装置である。マウス１９は、各種指示の選択および実行、処理対象の選択、ならびにカーソルの移動等を行うための入力装置である。
【００１８】
ＣＤ−ＲＯＭドライブ２０は、着脱自在な記憶媒体の一例としてのＣＤ−ＲＯＭ２１に対するデータの読み出しおよび書き込みを制御する装置である。
【００１９】
上述のＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、ネットワークＩ／Ｆ１４、ディスプレイ１５、ストレージアクセス部１６、キーボード１８、マウス１９、およびＣＤ−ＲＯＭドライブ２０は、アドレスバスおよびデータバス等のバス２２によって互いに通信可能に接続されている。
【００２０】
図２は、第１の実施形態に係る情報処理装置のソフトウェア構成の一例を示す図である。図２を参照しながら、本実施形態に係る情報処理装置１０のソフトウェア構成について説明する。
【００２１】
図２に示すように、情報処理装置１０のソフトウェアは、アプリケーション３０と、ＯＳ４０と、を含む。
【００２２】
アプリケーション３０は、特定の作業を行うために使用されるプログラムである。アプリケーション３０は、ＲＡＭ１３に展開されたＯＳ４０上で、ＣＰＵ１１により実行される。
【００２３】
ＯＳ４０は、情報処理装置１０の基本的な管理および制御のための機能、ならびにアプリケーション３０等のプログラムが共通して使用する基本的な機能等を実装した基本ソフトウェアである。ＯＳ４０は、システムコール４１と、ファイルシステム４２と、ブロックデバイス４３と、デバイスドライバ４４と、を含む。
【００２４】
システムコール４１は、ＯＳ４０のカーネルの機能を利用するためのソフトウェア上のインターフェースであり、カーネルとアプリケーション３０との橋渡しの機能を有する。
【００２５】
ファイルシステム４２は、記憶装置（本実施形態ではＳＳＤ１７）に記憶されているデータを所定の管理方式に従って管理するシステムである。
【００２６】
ブロックデバイス４３は、記憶装置（本実施形態ではＳＳＤ１７）にデータを入出力する際、データを所定のまとまりで入出力し、かつ、ランダムアクセスを可能とするデバイスである。
【００２７】
デバイスドライバ４４は、ストレージアクセス部１６を制御して、ＳＳＤ１７に対するデータの入出力を実現するドライバである。デバイスドライバ４４は、アクセス制御モジュール４４１と、カウンタモジュール４４２と、判定モジュール４４３と、削除モジュール４４４と、を含む。
【００２８】
アクセス制御モジュール４４１は、ストレージアクセス部１６に対して、読出し、書込み、または削除等のデータアクセス要求を送信する機能を実現するソフトウェアモジュールである。
【００２９】
カウンタモジュール４４２は、後述するカウンタ部４４２ａの機能を実現するソフトウェアモジュールである。判定モジュール４４３は、後述する判定部４４３ａの機能を実現するソフトウェアモジュールである。削除モジュール４４４は、後述する削除部４４４ａの機能を実現するソフトウェアモジュールである。
【００３０】
なお、デバイスドライバ４４が有するソフトウェアモジュールの構成は、図２に示す構成に限定されるものではなく、各モジュールが実現する機能を実現するソフトウェアであれば、どのようなソフトウェアモジュールの構成であってもよい。
【００３１】
図３は、ＳＳＤの構成図である。図４は、ＮＡＮＤメモリチップの構成図である。図５は、論理セクタと物理セクタとの変換について説明する図である。図３〜５を参照しながら、ＳＳＤ１７の構成の概要を説明する。
【００３２】
図３に示すように、ＳＳＤ１７は、ＮＡＮＤメモリ制御部１７１（メモリ制御手段）と、ＮＡＮＤメモリ部１７２と、を備えている。
【００３３】
ＮＡＮＤメモリ制御部１７１は、ストレージアクセス部１６から受信した読出し、書込み、または削除等のコマンドに従って、ＮＡＮＤメモリ部１７２にアクセスする機器である。具体的には、ＮＡＮＤメモリ制御部１７１は、ストレージアクセス部１６から受信したコマンドに従って、読出し、書込み、または削除等の物理コマンドによってＮＡＮＤメモリ部１７２にアクセスし、ＮＡＮＤメモリ部１７２からの物理応答を受信する。この場合、読出しの物理コマンドに対する物理応答は、読出しの対象となるデータを含む。また、書込み、または削除の物理コマンドに対する物理応答は、データの書込み、または削除の完了通知を含む。そして、ＮＡＮＤメモリ制御部１７１は、ＮＡＮＤメモリ部１７２から受信した物理応答に対応した応答をストレージアクセス部１６に送信する。
【００３４】
ＮＡＮＤメモリ部１７２は、データを記憶するＮＡＮＤ型フラッシュメモリの本体部分であり、複数のＮＡＮＤメモリチップ１７３によって構成されている。
【００３５】
ＮＡＮＤメモリチップ１７３は、図４に示すように、記憶素子のまとまりであるブロック１７４を複数（例えば、２０４８個のブロック）備えて、１プレーンを構成している。ブロック１７４は、さらに記憶素子のまとまりを細分化した複数のページ１７４ａによって構成されている。ブロック１７４は、例えば、図４に示すように、１２８ページ分のページ１７４ａによって構成されている。ページ１７４ａは、例えば、２０４８バイト（≒２ｋＢ）分のデータを記憶することが可能な記憶素子の集合体である。なお、図４では、ＮＡＮＤメモリチップ１７３が、複数のブロック１７４で構成されるプレーンを１個備えた例を示しているが、これに限定されるものではなく、２個以上のプレーンを備えるものとしてもよい。
【００３６】
ＮＡＮＤメモリ制御部１７１は、ＮＡＮＤメモリチップ１７３に対して、データを読み出す場合、ページ（図４の例では２ｋＢ）の単位で行う。一方、ＮＡＮＤメモリ制御部１７１は、ＮＡＮＤメモリチップ１７３に対して、データを書き込む場合、および削除する場合、ブロック（図４の例では１２８ページ）の単位で行う。また、ＮＡＮＤメモリ制御部１７１は、ＮＡＮＤメモリチップ１７３に対してデータを上書きすることができない。すなわち、ＮＡＮＤメモリ制御部１７１は、ＮＡＮＤメモリチップ１７３に対して、データを上書きする場合、対象のブロックのデータを一度、削除（消去）しなければならない。その後、ＮＡＮＤメモリ制御部１７１は、データの書込みをブロック単位で行うことができる。
【００３７】
実際には、ＮＡＮＤメモリ制御部１７１は、外部のストレージアクセス部１６に対して、セクタというデータのまとまりの単位でデータアクセス機能を提供する。すなわち、ＮＡＮＤメモリ制御部１７１は、ストレージアクセス部１６に対して、セクタ単位でデータの読出し、書込み、および削除等のアクセス機能を提供する。これによって、ストレージアクセス部１６は、ＮＡＮＤメモリ制御部１７１を介して、ＮＡＮＤメモリ部１７２に対して、セクタ単位で読出し、書込み、および削除等のアクセスが可能となる。すなわち、ＮＡＮＤメモリ制御部１７１によるページ単位のデータの読出し、およびブロック単位のデータの書込みおよび削除の制御によって、ストレージアクセス部１６によるセクタ単位のデータアクセスが可能となる。ここで、セクタは、例えば、５１２Ｂ（バイト）または４ｋＢ等であり、ページ１７４ａの容量と必ずしも等しいわけではない。
【００３８】
ＮＡＮＤメモリ制御部１７１は、上述のようにストレージアクセス部１６に対して、セクタ単位のデータアクセスを提供するために、図５に示すように、論理セクタ５０１と物理セクタ５０２（記憶領域、第１記憶領域）との変換を行う。論理セクタは、ＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓｉｎｇ）とも呼ばれる。具体的には、ＮＡＮＤメモリ制御部１７１は、論理セクタ５０１の番号（以下、論理番号という）と、物理セクタ５０２の番号（以下、物理番号という）とを対応付ける論物対応表５０３（対応情報）を有している。論物対応表５０３は、図５に示すように、論理番号と物理番号とを対応付ける表である。論理セクタ５０１は、ストレージアクセス部１６によってデータの読出し、書込み、および削除等のデータアクセスの対象となる仮想上のセクタである。すなわち、ストレージアクセス部１６は、論理セクタ５０１の論理番号を指定して、データアクセスを行う。一方、物理セクタ５０２は、実際にＮＡＮＤメモリ部１７２に割り当てられた実際の記憶領域としてのセクタである。例えば、図５に示す例の場合、ストレージアクセス部１６が、論理番号が「３」の論理セクタ５０１のデータを読み出すためのコマンドをＮＡＮＤメモリ制御部１７１に送信したとする。すると、ＮＡＮＤメモリ制御部１７１は、論物対応表５０３によって、論理番号「３」を物理番号「０」に変換し、物理番号「０」の物理セクタ５０２からデータを読み出し、コマンドに対する応答として、読み出したデータをストレージアクセス部１６に送信する。また、ＮＡＮＤメモリ制御部１７１が、上述の物理コマンドによって物理セクタ５０２へデータを書込むタイミング、または物理セクタ５０２のデータを削除するタイミングは、ＮＡＮＤメモリ制御部１７１の制御方式に依存する。
【００３９】
また、図５の例では、論理セクタ５０１上にデータが書き込まれていない場合は、対応する物理セクタ５０２は割り当てられておらず、この場合、対応する物理セクタ５０２の物理番号は「ｎｕｌｌ」と表現している。なお、図５の例では、論理セクタ５０１と物理セクタ５０２とが一対一で対応している例を示したが、これに限定されるものではなく、例えば、１つの論理番号に対して複数の物理セクタ５０２が対応しているものとしてもよく、あるいは、論理セクタ５０１および物理セクタ５０２のデータ粒度がそれぞれ異なるものとしてもよい。
【００４０】
図６は、第１の実施形態に係る情報処理装置の機能ブロック構成の一例を示す図である。図７は、第１の実施形態のリードカウンタテーブルの例を示す図である。図６および７を参照しながら、本実施形態に係る情報処理装置１０の機能ブロック構成について説明する。
【００４１】
上述したように、ＮＡＮＤメモリで構成された複数のＮＡＮＤメモリチップ１７３を有するＮＡＮＤメモリ部１７２では、読出しディスターブと呼ばれる、データの読出し回数がかさむことによって記憶されたデータが壊れていく現象が発生する。読出しディスターブでは、ＮＡＮＤメモリにおいて、仮に、図４に示すブロック１７４の特定の箇所のページ１７４ａを読み出した場合、同一のブロック１７４の他の箇所のページ１７４ａにも負荷がかかり、直接読み出したページではない箇所のページに記憶されたデータも壊れていく。そして、読出し回数が許容回数以上発生すると、その部分のデータにエラーが発生し、ＮＡＮＤメモリ制御部１７１は、データ修復のための修復アルゴリズム（例えば、リードソロモン法によるアルゴリズム等）のような演算負荷の大きいエラー修復処理を実行する。このため、読出しディスターブが発生したブロックに対するデータの読出しにおいては、読出し時間が増大して、遅延が大きくなる。また、読出しディスターブが発生したブロックは、データの削除、および再度の書込みを行わない限り解消されない。そこで、本実施形態では、ＮＡＮＤメモリ部１７２を構成するすべてのブロック１７４において、読出し回数が読出しディスターブが発生する回数未満のうちに、データの削除を行う制御を実現する。
【００４２】
図６に示すように、デバイスドライバ４４は、ＲＡＭ１３に展開されてＣＰＵ１１により実行されることで、アクセス制御部４４１ａ（アクセス制御手段）、カウンタ部４４２ａ（カウント手段）、判定部４４３ａ（判定手段）、および削除部４４４ａ（削除手段）の各処理部として機能する。
【００４３】
アクセス制御部４４１ａは、上位のソフトウェア（具体的には、ブロックデバイス４３）からの要求に従って、ストレージアクセス部１６に対して読出し、書込み、または削除等のデータアクセス要求（アクセス要求）を送信する処理部である。また、アクセス制御部４４１ａは、ストレージアクセス部１６から、データアクセス要求に応じたデータアクセス応答を受信する。アクセス制御部４４１ａは、ＣＰＵ１１によって実行されるデバイスドライバ４４のアクセス制御モジュール４４１により実現される。データアクセス要求には、ＮＡＮＤメモリ制御部１７１のどの論理番号の論理セクタ５０１にアクセスするかを示す論理番号の情報が含まれる。また、書込みのデータアクセス要求には、ＮＡＮＤメモリ制御部１７１の論理セクタ５０１に書き込むためのデータが含まれる。また、読出しのデータアクセス要求に対するデータアクセス応答は、ストレージアクセス部１６によってＳＳＤ１７から読み出されたデータが含まれる。また、書込みまたは削除のデータアクセス要求に対するデータアクセス応答は、ストレージアクセス部１６によるＳＳＤ１７へのデータの書込みまたは削除の完了通知を含む。
【００４４】
カウンタ部４４２ａは、アクセス制御部４４１ａが出力するデータアクセス要求を受け取り、図７に示すリードカウンタテーブル６００において、データアクセス要求に含まれる論理番号に対応する読出し回数の制御を行う処理部である。そして、カウンタ部４４２ａは、受け取ったデータアクセス要求が読出しのものである場合、リードカウンタテーブル６００において、データアクセス要求に含まれる論理番号に対応する読出し回数をカウントアップ（インクリメント）する。また、カウンタ部４４２ａは、受け取ったデータアクセス要求が書込みまたは削除のものである場合、リードカウンタテーブル６００において、データアクセス要求に含まれる論理番号に対応する読出し回数を０にリセットする。このようにして、カウンタ部４４２ａは、データアクセス要求が示す論理番号の論理セクタ５０１に対応する物理セクタ５０２の累積の読出し回数を、リードカウンタテーブル６００に保持する。また、カウンタ部４４２ａは、カウントアップした読出し回数の情報を判定部４４３ａに送る。また、カウンタ部４４２ａは、判定部４４３ａからカウンタリセット要求を受け取った場合、リードカウンタテーブル６００において、該当する論理セクタ５０１の読出し回数を０にリセットする。カウンタ部４４２ａは、ＣＰＵ１１によって実行されるデバイスドライバ４４のカウンタモジュール４４２により実現される。また、リードカウンタテーブル６００は、情報処理装置１０がシャットダウン状態においてはＳＳＤ１７に保存されているものとし、情報処理装置１０が起動状態においては、ＳＳＤ１７からＲＡＭ１３に読み出されて、高速に更新可能な状態となるようにし、起動状態からシャットダウン状態となる場合に、現状の読出し回数を維持した状態でＳＳＤ１７に保存されるものとすればよい。
【００４５】
判定部４４３ａは、カウンタ部４４２ａから受け取った読出し回数が、所定の上限回数（所定回数）以上であるか否かを判定する処理部である。判定部４４３ａは、読出し回数が所定の上限回数以上である場合、該当する論理セクタ５０１のデータの削除指令を、削除部４４４ａに送り、リードカウンタテーブル６００において該当する論理セクタ５０１の読出し回数のカウンタリセット要求を、カウンタ部４４２ａに送る。判定部４４３ａは、ＣＰＵ１１によって実行されるデバイスドライバ４４の判定モジュール４４３により実現される。ここで、所定の上限回数とは、例えば、以下の式（１）によって算出された回数とする。
【００４６】
（上限回数）＝（ＮＡＮＤメモリ固有のブロックにおける読出しの許容回数）／（１ブロック内のページ数）                                                      （１）
【００４７】
この式（１）によって算出される回数を上限回数とすることによって、少なくとも、同一ブロックにおいて同じデータの読出しが行われる回数を許容回数以下とすることができるので、読出しディスターブの発生を抑制することができる。
【００４８】
なお、読出し回数についての上限回数を式（１）で算出される回数にすることに限定されるものではなく、式（１）で求まる回数未満の値を上限回数としても、同様の効果を得ることができる。また、式（１）におけるブロックにおける読出しの許容回数とは、この回数より多く読出しを行った場合に必ず読出しディスターブが発生するという趣旨の回数ではなく、あくまで読出しディスターブの発生が抑制できる目安となる上限の回数であることを付言しておく。
【００４９】
削除部４４４ａは、判定部４４３ａから削除指令を受け取った場合、削除指令で示される論理番号の論理セクタ５０１のデータの削除を要求するデータアクセス要求を、ストレージアクセス部１６に送信する処理部である。削除部４４４ａは、ＣＰＵ１１によって実行されるデバイスドライバ４４の削除モジュール４４４により実現される。
【００５０】
ストレージアクセス部１６は、アクセス制御部４４１ａから受信した読出し、書込み、または削除のデータアクセス要求に従って、それぞれの処理に対応するコマンドを、ＳＳＤ１７（具体的には、ＮＡＮＤメモリ制御部１７１）に送信する。そして、ストレージアクセス部１６は、ＳＳＤ１７に送信したコマンドに応じた応答をＳＳＤ１７から受信する。この場合、読出しのコマンドに対する応答は、読出しの対象となるデータを含む。また、書込み、または削除のコマンドに対応する応答は、データのＳＳＤ１７への書込み、または削除の完了通知を含む。また、ストレージアクセス部１６は、削除部４４４ａから削除のデータアクセス要求を受信した場合、データアクセス要求に含まれる論理番号に対応する論理セクタ５０１のデータを削除するためのコマンドを、ＳＳＤ１７に送信する。
【００５１】
なお、図６に示すアクセス制御部４４１ａ、カウンタ部４４２ａ、判定部４４３ａおよび削除部４４４ａは、機能を概念的に示したものであって、このような構成に限定されるものではない。
【００５２】
また、図６に示すアクセス制御部４４１ａ、カウンタ部４４２ａ、判定部４４３ａおよび削除部４４４ａは、ソフトウェアであるプログラムではなく、少なくとも一部がハードウェア回路によって実現されるものとしてもよい。例えば、アクセス制御部４４１ａ、カウンタ部４４２ａ、判定部４４３ａおよび削除部４４４ａのうち少なくともいずれかがハードウェア回路によって実現される場合、ストレージアクセス部１６において実装されるものとしてもよい。
【００５３】
図８は、第１の実施形態のデータアクセス要求に対する処理のフローチャートである。図８を参照しながら、デバイスドライバ４４が上位のソフトウェア（具体的には、ブロックデバイス４３）からデータのアクセス要求を受け取った場合の処理について説明する。まず、デバイスドライバ４４のアクセス制御部４４１ａは、上位のソフトウェアから読出し、書込み、または削除のデータアクセス要求を受け取ると、それぞれの処理に対応するデータアクセス要求をストレージアクセス部１６に送信する。
【００５４】
＜ステップＳ１１＞
デバイスドライバ４４のカウンタ部４４２ａは、アクセス制御部４４１ａから送信されたデータアクセス要求を受け取る。そして、カウンタ部４４２ａは、受け取ったデータアクセス要求がデータの読出しの要求であるか否かを判定する。データアクセス要求がデータの読出しの要求でない場合（ステップＳ１１：Ｎｏ）、ステップＳ１２へ進み、データの読出しの要求である場合（ステップＳ１１：Ｙｅｓ）、ステップＳ１４へ進む。
【００５５】
＜ステップＳ１２＞
カウンタ部４４２ａは、受け取ったデータアクセス要求がデータの書込みまたは削除の要求であるか否かを判定する。データアクセス要求がデータの書込みまたは削除の要求である場合（ステップＳ１２：Ｙｅｓ）、ステップＳ１３へ進み、データの書込みまたは削除のいずれの要求でない場合（ステップＳ１２：Ｎｏ）、処理が終了する。
【００５６】
＜ステップＳ１３＞
カウンタ部４４２ａは、受け取ったデータアクセス要求がデータの書込みまたは削除の要求である場合、リードカウンタテーブル６００において、データアクセス要求が示す論理番号に対応する読出し回数を０にリセットする。これは、例えば、データアクセス要求がデータの書込みの要求である場合、ＮＡＮＤメモリ制御部１７１によって、データアクセス要求が示す論理番号に対応する論理セクタ５０１にデータが書き込まれ、論物対応表５０３において論理番号に対応する物理番号が割り当てられて、その物理番号に対応する物理セクタ５０２にデータが新たに書き込まれる。これによって、データが書き込まれた物理セクタ５０２のデータは、読出し回数が０となるからである。また、データアクセス要求がデータの削除の要求である場合、ＮＡＮＤメモリ制御部１７１によって、データアクセス要求が示す論理番号に対応する論理セクタ５０１のデータが削除され、論物対応表５０３において論理番号に対応する物理番号の割り当てがクリア（「ｎｕｌｌ」）されるからである。そして、処理が終了する。
【００５７】
＜ステップＳ１４＞
カウンタ部４４２ａは、受け取ったデータアクセス要求がデータの読出しの要求である場合、リードカウンタテーブル６００において、データアクセス要求が示す論理番号に対応する読出し回数をカウントアップ（インクリメント）する。そして、カウンタ部４４２ａは、カウントアップした読出し回数の情報を、デバイスドライバ４４の判定部４４３ａに送る。そして、ステップＳ１５へ進む。
【００５８】
＜ステップＳ１５＞
判定部４４３ａは、カウンタ部４４２ａから受け取った読出し回数が、所定の上限回数以上であるか否かを判定する。読出し回数が所定の上限回数以上である場合（ステップＳ１５：Ｙｅｓ）、ステップＳ１６へ進み、読出し回数が所定の上限回数未満である場合（ステップＳ１５：Ｎｏ）、処理が終了する。
【００５９】
＜ステップＳ１６＞
判定部４４３ａは、読出し回数が所定の上限回数以上である場合、リードカウンタテーブル６００において読出し回数に対応する論理番号の論理セクタ５０１のデータの削除指令を、デバイスドライバ４４の削除部４４４ａに送る。削除部４４４ａは、判定部４４３ａから削除指令を受け取ると、削除指令で示される論理番号の論理セクタ５０１のデータの削除を要求するデータアクセス要求を、ストレージアクセス部１６に送信する。ストレージアクセス部１６は、削除部４４４ａから削除のデータアクセス要求を受信すると、データアクセス要求に含まれる論理番号に対応する論理セクタ５０１のデータを削除するためのコマンドを、ＳＳＤ１７のＮＡＮＤメモリ制御部１７１に送信する。ＮＡＮＤメモリ制御部１７１は、ストレージアクセス部１６から削除のコマンドを受信すると、コマンドで示される論理番号の論理セクタ５０１のデータを、物理コマンドによって削除する。そして、ＮＡＮＤメモリ制御部１７１は、データを削除した論理セクタ５０１に対応する物理セクタ５０２のデータ（第１データ）を所定のタイミングで削除する。そして、ステップＳ１７へ進む。
【００６０】
＜ステップＳ１７＞
判定部４４３ａは、さらに、リードカウンタテーブル６００において、データの削除対象である論理セクタ５０１の論理番号に対応する読出し回数をリセットするためのカウンタリセット要求を、カウンタ部４４２ａに送る。カウンタ部４４２ａは、判定部４４３ａからカウンタリセット要求を受け取ると、リードカウンタテーブル６００において、カウンタリセット要求が示す論理番号に対応する読出し回数を０にリセットする。そして、処理が終了する。
【００６１】
以上のように、デバイスドライバ４４のカウンタ部４４２ａは、アクセス制御部４４１ａがストレージアクセス部１６に送信したデータアクセス要求を受け取り、データアクセス要求が読出しの要求であると判定した場合、データアクセス要求が示す論理番号に対応する読出し回数をカウントアップする。判定部４４３ａは、カウントアップされた読出し回数が、所定の上限回数以上であると判定した場合、読出し回数に対応するＳＳＤ１７におけるデータの削除指令を、削除部４４４ａに送る。そして、削除部４４４ａは、削除指令に従って、読出し回数に対応するＳＳＤ１７におけるデータを削除するためのデータアクセス要求によって、ストレージアクセス部１６を介して、読出し回数に対応するＳＳＤ１７におけるデータを削除させるものとしている。これによって、少なくとも、ＮＡＮＤメモリにおける同一の記憶領域のデータの読出しが行われる回数を許容回数以下とすることができるので、読出しディスターブの発生を抑制することができる。よって、記憶装置であるＳＳＤ１７からのデータを読み出す場合に、データを修復するためのエラー修復処理が実行されることを回避することができ、読出し時間の増大を抑制することができる。
【００６２】
また、判定部４４３ａは、カウントアップされた読出し回数が、所定の上限回数以上であると判定した場合、リードカウンタテーブル６００において、データの削除対象である論理セクタ５０１の論理番号に対応する読出し回数をリセットするためのカウンタリセット要求を、カウンタ部４４２ａに送る。そして、カウンタ部４４２ａは、カウンタリセット要求に従って、リードカウンタテーブル６００において、カウンタリセット要求が示す論理番号に対応する読出し回数を０にリセットする。これによって、論理番号に対して論物対応表５０３により新たに割り当てられる物理番号に対応する物理セクタ５０２に書き込まれたデータについて、新たに読出しの回数をカウントすることができる。
【００６３】
また、上述の所定の上限回数を、式（１）によって算出される回数以下の回数とすることによって、少なくとも、ＮＡＮＤメモリにおける同一の記憶領域のデータの読出しが行われる回数を許容回数以下とすることができる。これによって、より高い確実性をもって、読出しディスターブの発生を抑制することができ、ＳＳＤ１７からのデータの読出し時間の増大を抑制することができる。
【００６４】
（第１の実施形態の変形例）
本変形例に係る情報処理装置について、第１の実施形態に係る情報処理装置１０と相違する点を中心に説明する。本変形例に係る情報処理装置は、図１に示す第１の実施形態に係る情報処理装置１０と同様のハードウェア構成を有する。また、本変形例に係る情報処理装置は、図２に示す第１の実施形態に係る情報処理装置１０のソフトウェア構成のうち、デバイスドライバ４４の代わりにデバイスドライバ４５に置換したソフトウェア構成を有する。
【００６５】
図９は、第１の実施形態の変形例に係る情報処理装置の機能ブロック構成の一例を示す図である。図９を参照しながら、本変形例に係る情報処理装置の機能ブロック構成について、第１の実施形態に係る情報処理装置１０の機能ブロック構成と相違する点を中心に説明する。
【００６６】
図９に示すように、デバイスドライバ４５は、ＲＡＭ１３に展開されてＣＰＵ１１により実行されることで、アクセス制御部４５１ａ（アクセス制御手段）、カウンタ部４５２ａ（カウント手段）、判定部４５３ａ（判定手段）、および削除部４５４ａ（削除手段）の各処理部として機能する。アクセス制御部４５１ａ、カウンタ部４５２ａ、および判定部４５３ａの機能は、それぞれ第１の実施形態の図６で示したアクセス制御部４４１ａ、カウンタ部４４２ａ、および判定部４４３ａの機能と同様である。
【００６７】
削除部４５４ａは、判定部４５３ａから削除指令を受け取った場合、削除指令で示される論理番号に対応する物理番号の物理セクタ５０２のデータの読出しを要求するデータアクセス要求を、ストレージアクセス部１６に送信する処理部である。また、削除部４５４ａは、削除指令で示される論理番号の論理セクタ５０１のデータの削除を要求するデータアクセス要求を、ストレージアクセス部１６に送信する。そして、削除部４５４ａは、削除指令で示される論理番号に対応する論理セクタ５０１に対して、読み出したデータの書込みを要求するデータアクセス要求を、ストレージアクセス部１６に送信する。
【００６８】
ストレージアクセス部１６は、アクセス制御部４５１ａから受信した読出し、書込み、または削除のデータアクセス要求に従って、それぞれの処理に対応するコマンドを、ＳＳＤ１７（具体的には、ＮＡＮＤメモリ制御部１７１）に送信する。そして、ストレージアクセス部１６は、ＳＳＤ１７に送信したコマンドに応じた応答をＳＳＤ１７から受信する。
【００６９】
また、ストレージアクセス部１６は、削除部４５４ａから読出しのデータアクセス要求を受信した場合、データアクセス要求に含まれる論理番号に対応する論理セクタ５０１のデータを読み出すためのコマンドを、ＳＳＤ１７に送信する。次に、ストレージアクセス部１６は、削除部４５４ａから削除のデータアクセス要求を受信した場合、データアクセス要求に含まれる論理番号に対応する論理セクタ５０１のデータを削除するためのコマンドを、ＳＳＤ１７に送信する。そして、ストレージアクセス部１６は、削除部４５４ａから書込みのデータアクセス要求を受信した場合、データアクセス要求に含まれる論理番号に対応する論理セクタ５０１にデータを書き込むためのコマンドを、ＳＳＤ１７に送信する。
【００７０】
図１０は、データ削除前の論理セクタおよび物理セクタの状態の例を示す図である。図１１は、データ削除後の論理セクタおよび物理セクタの状態の例を示す図である。図１２は、データ書込み後の論理セクタおよび物理セクタの状態の例を示す図である。図８および１０〜１２を参照しながら、本変形例に係る情報処理装置において、デバイスドライバ４５が上位のソフトウェア（具体的には、ブロックデバイス４３）からデータアクセス要求を受け取った場合の処理について、第１の実施形態と相違する点を中心に説明する。本変形例に係る情報処理の図８に示すステップＳ１１〜Ｓ１５およびＳ１７の処理は、第１の実施の形態に係る情報処理装置１０の処理と同様である。
【００７１】
＜ステップＳ１６＞
判定部４５３ａは、読出し回数が所定の上限回数以上である場合、リードカウンタテーブル６００において読出し回数に対応する論理番号の論理セクタ５０１のデータの削除指令を、デバイスドライバ４５の削除部４５４ａに送る。削除部４５４ａは、判定部４５３ａから削除指令を受け取ると、削除指令で示される論理番号に対応する物理番号の物理セクタ５０２のデータの読出しを要求するデータアクセス要求を、ストレージアクセス部１６に送信する。そして、削除部４５４ａは、送信したデータアクセス要求に対する応答として、ストレージアクセス部１６からデータアクセス応答（図示せず）を受信して、上述の削除指令で示される論理番号に対応する物理番号の物理セクタ５０２から読み出されたデータを取得する。
【００７２】
例えば、削除部４５４ａは、図１０に示すように、削除指令で示される論理番号「９」から論物対応表５０３により変換される物理番号「３」の物理セクタ５０２から読み出された削除対象のデータを含むデータアクセス応答を受信する。
【００７３】
次に、削除部４５４ａは、削除指令で示される論理番号の論理セクタ５０１のデータの削除を要求するデータアクセス要求を、ストレージアクセス部１６に送信する。ストレージアクセス部１６は、削除部４５４ａから削除のデータアクセス要求を受信すると、データアクセス要求に含まれる論理番号に対応する論理セクタ５０１のデータを削除するためのコマンドを、ＳＳＤ１７のＮＡＮＤメモリ制御部１７１に送信する。ＮＡＮＤメモリ制御部１７１は、ストレージアクセス部１６から削除のコマンドを受信すると、コマンドで示される論理番号の論理セクタ５０１のデータを、物理コマンドによって削除する。そして、ＮＡＮＤメモリ制御部１７１は、データを削除した論理セクタ５０１に対応する物理セクタ５０２のデータを所定のタイミングで削除する。
【００７４】
例えば、図１１に示すように、ＮＡＮＤメモリ制御部１７１は、ストレージアクセス部１６から受信したコマンドで示される論理番号「９」の論理セクタ５０１のデータを、物理コマンドによって削除する。そして、ＮＡＮＤメモリ制御部１７１は、論物対応表５０３において論理番号「９」に対応する物理番号の割り当てをクリアする（「ｎｕｌｌ」を書き込む）。これによって、論理番号と物理番号との対応関係がクリアされるので、物理番号「３」の物理セクタ５０２へのアクセス（読出し）は生じないことになる。また、ＮＡＮＤメモリ制御部１７１は、物理番号「３」の物理セクタ５０２のデータを所定のタイミングで削除する。
【００７５】
そして、削除部４５４ａは、削除指令で示される論理番号に対応する論理セクタ５０１に対して取得したデータの書込みを要求するデータアクセス要求を、ストレージアクセス部１６に送信する。ストレージアクセス部１６は、削除部４５４ａから書込みのデータアクセス要求を受信すると、データアクセス要求に含まれる論理番号に対応する論理セクタ５０１に対して取得したデータを書き込むためのコマンドを、ＳＳＤ１７のＮＡＮＤメモリ制御部１７１に送信する。ＮＡＮＤメモリ制御部１７１は、ストレージアクセス部１６から書込みのコマンドを受信すると、コマンドで示される論理番号の論理セクタ５０１に、コマンドに含まれるデータ（第２データ）を、物理コマンドによって書き込む。そして、ＮＡＮＤメモリ制御部１７１は、データを書き込んだ論理セクタ５０１に対して新たに対応付けた物理セクタ５０２にそのデータを所定のタイミングで書き込む。これによって、所定の上限回数以上となった読出し回数に対応するデータが、新たに割り当てられた物理セクタ５０２にコピーされることになる。
【００７６】
例えば、図１２に示すように、ＮＡＮＤメモリ制御部１７１は、ストレージアクセス部１６から受信したコマンドで示される論理番号「９」の論理セクタ５０１に、コマンドに含まれるデータを、物理コマンドによって書き込む。次に、ＮＡＮＤメモリ制御部１７１は、論物対応表５０３において論理番号「９」に対応する別の新たな物理番号である「４」を割り当てる。そして、ＮＡＮＤメモリ制御部１７１は、論理番号「９」の論理セクタ５０１に書き込まれたデータを、論理番号「９」に対応する物理番号「４」の物理セクタ５０２に所定のタイミングで書き込む。
【００７７】
以上のように、第１の実施形態においては所定の上限回数以上となった読出し回数に対応するＳＳＤ１７におけるデータを削除のみ行っているのに対し、本変形例では、削除対象のデータを読み出して取得し、削除対象となった物理セクタ５０２とは異なる新たに割り当てられた物理セクタ５０２に、取得したデータをコピーするものとしている。これによって、第１の実施形態の効果を奏すると共に、読出しディスターブが発生する前にデータを削除するのみではなく、そのデータを新たに割り当てられた物理セクタ５０２に書込み（コピー）するので、そのデータを維持することができる。
【００７８】
また、コピーされる論理セクタ５０１は同一のままでよく、その論理セクタ５０１に対応する読出し回数はリセットされる。したがって、論理セクタ５０１に対して新たに割り当てられた物理セクタ５０２にコピーされたデータを読み出す場合、削除対象となった論理番号と同一の論理番号に基づいて読み出せばよく、継続してそのデータを利用することが可能となる。
【００７９】
（第２の実施形態）
本実施形態に係る情報処理装置について、第１の実施形態に係る情報処理装置１０と相違する点を中心に説明する。本実施形態に係る情報処理装置は、図１に示す第１の実施形態に係る情報処理装置１０と同様のハードウェア構成を有する。
【００８０】
図１３は、第２の実施形態に係る情報処理装置のソフトウェア構成の一例を示す図である。図１３を参照しながら、本実施形態に係る情報処理装置のソフトウェア構成について説明する。なお、システムコール４１およびファイルシステム４２は、第１の実施形態の情報処理装置１０のソフトウェア構成である図２に記載されたものと同様であるので、同一符号を付し、ここでの説明を省略する。
【００８１】
図１３に示すように、本実施形態に係る情報処理装置のソフトウェアは、アプリケーション３０と、ＯＳ４０ａと、を含む。
【００８２】
アプリケーション３０は、特定の作業を行うために使用されるプログラムである。アプリケーション３０は、ＲＡＭ１３（図１参照）に展開されたＯＳ４０ａ上で、ＣＰＵ１１（図１参照）により実行される。
【００８３】
ＯＳ４０ａは、本実施形態に係る情報処理装置の基本的な管理および制御のための機能、ならびにアプリケーション３０等のプログラムが共通して使用する基本的な機能等を実装した基本ソフトウェアである。ＯＳ４０ａは、システムコール４１と、ファイルシステム４２と、ブロックデバイス４６と、デバイスドライバ４７と、を含む。
【００８４】
ブロックデバイス４６は、記憶装置（ＳＳＤ１７（図１参照））にデータを入出力する際、データを所定のまとまりで行い、かつ、ランダムアクセスを可能とするデバイスである。ブロックデバイス４６は、アクセス制御モジュール４６１と、カウンタモジュール４６２と、判定モジュール４６３と、削除モジュール４６４と、を含む。
【００８５】
アクセス制御モジュール４６１は、デバイスドライバ４７に対して、読出し、書込み、または削除等のデータアクセス要求を送信する機能を実現するソフトウェアモジュールである。
【００８６】
カウンタモジュール４６２は、後述するカウンタ部４６２ａの機能を実現するソフトウェアモジュールである。判定モジュール４６３は、後述する判定部４６３ａの機能を実現するソフトウェアモジュールである。削除モジュール４６４は、後述する削除部４６４ａの機能を実現するソフトウェアモジュールである。
【００８７】
なお、ブロックデバイス４６が有するソフトウェアモジュールの構成は、図１３に示す構成に限定されるものではなく、各モジュールが実現する機能を実現するソフトウェアであれば、どのようなソフトウェアモジュールの構成であってもよい。
【００８８】
図１４は、第２の実施形態に係る情報処理装置の機能ブロック構成の一例を示す図である。図１４を参照しながら、本実施形態に係る情報処理装置の機能ブロック構成について、第１の実施形態に係る情報処理装置１０のブロック構成と相違する点を中心に説明する。
【００８９】
図１４に示すように、ブロックデバイス４６は、ＲＡＭ１３に展開されてＣＰＵ１１により実行されることで、アクセス制御部４６１ａ（アクセス制御手段）、カウンタ部４６２ａ（カウント手段）、判定部４６３ａ（判定手段）、および削除部４６４ａ（削除手段）の各処理部として機能する。
【００９０】
アクセス制御部４６１ａは、上位のソフトウェア（具体的には、ファイルシステム４２）からの要求に従って、デバイスドライバ４７に対して読出し、書込み、または削除等のデータアクセス要求（アクセス要求）を送る処理部である。また、アクセス制御部４６１ａは、デバイスドライバ４７から、データアクセス要求に応じたデータアクセス応答を受け取る。アクセス制御部４６１ａは、ＣＰＵ１１によって実行されるブロックデバイス４６のアクセス制御モジュール４６１により実現される。データアクセス要求には、ＮＡＮＤメモリ制御部１７１のどの論理番号の論理セクタ５０１にアクセスするかを示す論理番号の情報が含まれる。また、書込みのデータアクセス要求には、ＮＡＮＤメモリ制御部１７１の論理セクタ５０１に書き込むためのデータが含まれる。また、読出しのデータアクセス要求に対するデータアクセス応答は、ストレージアクセス部１６によってＳＳＤ１７から読み出されたデータが含まれる。また、書込みまたは削除のデータアクセス要求に対するデータアクセス応答は、ストレージアクセス部１６によるＳＳＤ１７へのデータの書込みまたは削除の完了通知を含む。
【００９１】
カウンタ部４６２ａは、アクセス制御部４６１ａが出力するデータアクセス要求を受け取り、リードカウンタテーブル６００（図７参照）において、データアクセス要求に含まれる論理番号に対応する読出し回数の制御を行う処理部である。そして、カウンタ部４６２ａは、受け取ったデータアクセス要求が読出しのものである場合、リードカウンタテーブル６００において、データアクセス要求に含まれる論理番号に対応する読出し回数をカウントアップ（インクリメント）する。また、カウンタ部４６２ａは、受け取ったデータアクセス要求が書込みまたは削除のものである場合、リードカウンタテーブル６００において、データアクセス要求に含まれる論理番号に対応する読出し回数を０にリセットする。このようにして、カウンタ部４６２ａは、データアクセス要求が示す論理番号の論理セクタ５０１に対応する物理セクタ５０２の累積の読出し回数を、リードカウンタテーブル６００に保持する。また、カウンタ部４６２ａは、カウントアップした読出し回数の情報を判定部４６３ａに送る。また、カウンタ部４６２ａは、判定部４６３ａからカウンタリセット要求を受け取った場合、リードカウンタテーブル６００において、該当する論理セクタ５０１の読出し回数を０にリセットする。カウンタ部４６２ａは、ＣＰＵ１１によって実行されるブロックデバイス４６のカウンタモジュール４６２により実現される。
【００９２】
判定部４６３ａは、カウンタ部４６２ａから受け取った読出し回数が、所定の上限回数以上であるか否かを判定する処理部である。判定部４６３ａは、読出し回数が所定の上限回数以上である場合、該当する論理セクタ５０１のデータの削除指令を、削除部４６４ａに送り、リードカウンタテーブル６００において該当する論理セクタ５０１の読出し回数のカウンタリセット要求を、カウンタ部４６２ａに送る。判定部４６３ａは、ＣＰＵ１１によって実行されるブロックデバイス４６の判定モジュール４６３により実現される。ここで、所定の上限回数とは、例えば、上述の式（１）によって算出された回数とする。
【００９３】
なお、読出し回数についての上限回数を上述の式（１）で算出される回数にすることに限定されるものではなく、式（１）で求まる回数未満の値を上限回数としても、同様の効果を得ることができる。
【００９４】
削除部４６４ａは、判定部４６３ａから削除指令を受け取った場合、削除指令で示される論理番号の論理セクタ５０１のデータの削除を要求するデータアクセス要求を、デバイスドライバ４７に送る処理部である。削除部４６４ａは、ＣＰＵ１１によって実行されるブロックデバイス４６の削除モジュール４６４により実現される。
【００９５】
デバイスドライバ４７は、アクセス制御部４６１ａから受け取った読出し、書込み、または削除のデータアクセス要求に従って、それぞれの処理に対応するデータアクセス要求を、ストレージアクセス部１６に送信する。そして、デバイスドライバ４７は、ストレージアクセス部１６に送信したデータアクセス要求に応じたデータアクセス応答をストレージアクセス部１６から受信する。この場合、読出しのデータアクセス要求に対するデータアクセス応答は、読出しの対象となるデータを含む。また、書込み、または削除のデータアクセス要求に対応するデータアクセス応答は、データのＳＳＤ１７への書込み、または削除の完了通知を含む。また、デバイスドライバ４７は、削除部４６４ａから削除のデータアクセス要求を受信した場合、データアクセス要求に含まれる論理番号に対応する論理セクタ５０１のデータを削除するためのデータアクセス要求を、ストレージアクセス部１６に送信する。
【００９６】
ストレージアクセス部１６は、デバイスドライバ４７から受信した読出し、書込み、または削除のデータアクセス要求に従って、それぞれの処理に対応するコマンドを、ＳＳＤ１７（具体的には、ＮＡＮＤメモリ制御部１７１）に送信する。そして、ストレージアクセス部１６は、ＳＳＤ１７に送信したコマンドに応じた応答をＳＳＤ１７から受信する。この場合、読出しのコマンドに対する応答は、読出しの対象となるデータを含む。また、書込み、または削除のコマンドに対応する応答は、データのＳＳＤ１７への書込み、または削除の完了通知を含む。
【００９７】
なお、図１４に示すアクセス制御部４６１ａ、カウンタ部４６２ａ、判定部４６３ａおよび削除部４６４ａは、機能を概念的に示したものであって、このような構成に限定されるものではない。
【００９８】
また、図１４に示すアクセス制御部４６１ａ、カウンタ部４６２ａ、判定部４６３ａおよび削除部４６４ａは、ソフトウェアであるプログラムではなく、少なくとも一部がハードウェア回路によって実現されるものとしてもよい。
【００９９】
次に、上述の図８に示したフローチャートに従って、ブロックデバイス４６が上位のソフトウェア（具体的には、ファイルシステム４２）からデータのアクセス要求を受け取った場合の処理について説明する。まず、ブロックデバイス４６のアクセス制御部４６１ａは、上位のソフトウェアから読出し、書込み、または削除のデータアクセス要求を受け取ると、それぞれの処理に対応するデータアクセス要求をデバイスドライバ４７に送る。
【０１００】
＜ステップＳ１１＞
ブロックデバイス４６のカウンタ部４６２ａは、アクセス制御部４６１ａから出力されたデータアクセス要求を受け取る。そして、カウンタ部４６２ａは、受け取ったデータアクセス要求がデータの読出しの要求であるか否かを判定する。データアクセス要求がデータの読出しの要求でない場合（ステップＳ１１：Ｎｏ）、ステップＳ１２へ進み、データの読出しの要求である場合（ステップＳ１１：Ｙｅｓ）、ステップＳ１４へ進む。
【０１０１】
＜ステップＳ１２＞
カウンタ部４６２ａは、受け取ったデータアクセス要求がデータの書込みまたは削除の要求であるか否かを判定する。データアクセス要求がデータの書込みまたは削除の要求である場合（ステップＳ１２：Ｙｅｓ）、ステップＳ１３へ進み、データの書込みまたは削除のいずれの要求でない場合（ステップＳ１２：Ｎｏ）、処理が終了する。
【０１０２】
＜ステップＳ１３＞
カウンタ部４６２ａは、受け取ったデータアクセス要求がデータの書込みまたは削除の要求である場合、リードカウンタテーブル６００において、データアクセス要求が示す論理番号に対応する読出し回数を０にリセットする。そして、処理が終了する。
【０１０３】
＜ステップＳ１４＞
カウンタ部４６２ａは、受け取ったデータアクセス要求がデータの読出しの要求である場合、リードカウンタテーブル６００において、データアクセス要求が示す論理番号に対応する読出し回数をカウントアップ（インクリメント）する。そして、カウンタ部４６２ａは、カウントアップした読出し回数の情報を、ブロックデバイス４６の判定部４６３ａに送る。そして、ステップＳ１５へ進む。
【０１０４】
＜ステップＳ１５＞
判定部４６３ａは、カウンタ部４６２ａから受け取った読出し回数が、所定の上限回数以上であるか否かを判定する。読出し回数が所定の上限回数以上である場合（ステップＳ１５：Ｙｅｓ）、ステップＳ１６へ進み、読出し回数が所定の上限回数未満である場合（ステップＳ１５：Ｎｏ）、処理が終了する。
【０１０５】
＜ステップＳ１６＞
判定部４６３ａは、読出し回数が所定の上限回数以上である場合、リードカウンタテーブル６００において読出し回数に対応する論理番号の論理セクタ５０１のデータの削除指令を、ブロックデバイス４６の削除部４６４ａに送る。削除部４６４ａは、判定部４６３ａから削除指令を受け取ると、削除指令で示される論理番号の論理セクタ５０１のデータの削除を要求するデータアクセス要求を、デバイスドライバ４７に送る。デバイスドライバ４７は、削除部４６４ａから削除のデータアクセス要求を受信すると、データアクセス要求に含まれる論理番号に対応する論理セクタ５０１のデータを削除するためのデータアクセス要求を、ストレージアクセス部１６に送信する。ストレージアクセス部１６は、デバイスドライバ４７から削除のデータアクセス要求を受信すると、データアクセス要求に含まれる論理番号に対応する論理セクタ５０１のデータを削除するためのコマンドを、ＳＳＤ１７のＮＡＮＤメモリ制御部１７１に送信する。ＮＡＮＤメモリ制御部１７１は、ストレージアクセス部１６から削除のコマンドを受信すると、コマンドで示される論理番号の論理セクタ５０１のデータを、物理コマンドによって削除する。そして、ＮＡＮＤメモリ制御部１７１は、データを削除した論理セクタ５０１に対応する物理セクタ５０２のデータ（第１データ）を所定のタイミングで削除する。そして、ステップＳ１７へ進む。
【０１０６】
＜ステップＳ１７＞
判定部４６３ａは、さらに、リードカウンタテーブル６００において、データの削除対象である論理セクタ５０１の論理番号に対応する読出し回数をリセットするためのカウンタリセット要求を、カウンタ部４６２ａに送る。カウンタ部４６２ａは、判定部４６３ａからカウンタリセット要求を受け取ると、リードカウンタテーブル６００において、カウンタリセット要求が示す論理番号に対応する読出し回数を０にリセットする。そして、処理が終了する。
【０１０７】
以上のように、本実施形態の情報処理装置は、デバイスドライバではなく、その上位のブロックデバイス４６に、第１の実施形態のデバイスドライバ４４が実現するアクセス制御部４４１ａ、カウンタ部４４２ａ、判定部４４３ａ、および削除部４４４ａに相当する機能が備えられている。これによっても、第１の実施形態と同様の効果を奏することができる。
【０１０８】
（第３の実施形態）
本実施形態に係る情報処理装置について、第１の実施形態に係る情報処理装置１０と相違する点を中心に説明する。本実施形態に係る情報処理装置は、図１に示す第１の実施形態に係る情報処理装置１０と同様のハードウェア構成を有する。
【０１０９】
図１５は、第３の実施形態に係る情報処理装置のソフトウェア構成の一例を示す図である。図１５を参照しながら、本実施形態に係る情報処理装置のソフトウェア構成について説明する。なお、システムコール４１、ファイルシステム４２、およびブロックデバイス４３は、第１の実施形態の情報処理装置１０のソフトウェア構成である図２に記載されたものと同様であるので、同一符号を付し、ここでの説明を省略する。また、デバイスドライバ４７は、第２の実施形態の情報処理装置のソフトウェア構成である図１３に記載されたものと同様であるので、同一符号を付し、ここでの説明を省略する。
【０１１０】
図１５に示すように、本実施形態に係る情報処理装置のソフトウェアは、アプリケーション３１と、ＯＳ４０ｂと、を含む。
【０１１１】
アプリケーション３１は、特定の作業を行うために使用されるプログラムである。アプリケーション３１は、アクセス制御モジュール３１１と、カウンタモジュール３１２と、判定モジュール３１３と、削除モジュール３１４と、を含む。アプリケーション３１は、ＲＡＭ１３（図１参照）に展開されたＯＳ４０ｂ上で、ＣＰＵ１１（図１参照）により実行される。
【０１１２】
アクセス制御モジュール３１１は、システムコール４１に対して、読出し、書込み、または削除等のシステムコールを送る機能を実現するソフトウェアモジュールである。
【０１１３】
カウンタモジュール３１２は、後述するカウンタ部３１２ａの機能を実現するソフトウェアモジュールである。判定モジュール３１３は、後述する判定部３１３ａの機能を実現するソフトウェアモジュールである。削除モジュール３１４は、後述する削除部３１４ａの機能を実現するソフトウェアモジュールである。
【０１１４】
なお、アプリケーション３１が有するソフトウェアモジュールの構成は、図１５に示す構成に限定されるものではなく、各モジュールが実現する機能を実現するソフトウェアであれば、どのようなソフトウェアモジュールの構成であってもよい。
【０１１５】
ＯＳ４０ｂは、本実施形態に係る情報処理装置の基本的な管理および制御のための機能、ならびにアプリケーション３１等のプログラムが共通して使用する基本的な機能等を実装した基本ソフトウェアである。ＯＳ４０ｂは、システムコール４１と、ファイルシステム４２と、ブロックデバイス４３と、デバイスドライバ４７と、を含む。
【０１１６】
図１６は、第３の実施形態に係る情報処理装置の機能ブロック構成の一例を示す図である。図１７は、第３の実施形態に係るリードカウンタテーブルの例を示す図である。図１６および１７を参照しながら、本実施形態に係る情報処理装置の機能ブロック構成について、第１の実施形態に係る情報処理装置１０のブロック構成と相違する点を中心に説明する。
【０１１７】
図１６に示すように、アプリケーション３１は、ＲＡＭ１３に展開されてＣＰＵ１１により実行されることで、アクセス制御部３１１ａ（アクセス制御手段）、カウンタ部３１２ａ（カウント手段）、判定部３１３ａ（判定手段）、および削除部３１４ａ（削除手段）の各処理部として機能する。
【０１１８】
アクセス制御部３１１ａは、システムコール４１に対して読出し、書込み、または削除等のシステムコール（アクセス要求）を送る処理部である。また、アクセス制御部３１１ａは、システムコール４１から、システムコールに応じたシステムコール応答を受け取る。アクセス制御部３１１ａは、ＣＰＵ１１によって実行されるアプリケーション３１のアクセス制御モジュール３１１により実現される。システムコールには、どのファイルにアクセスするかを示すファイル名等のファイル情報が含まれる。また、書込みのシステムコールには、ファイルのデータを書き込むためのデータが含まれる。また、読出しのシステムコールに対するシステムコール応答は、ストレージアクセス部１６によってＳＳＤ１７から読み出されたファイルのデータが含まれる。また、書込みまたは削除のシステムコールに対するシステムコール応答は、ストレージアクセス部１６によるＳＳＤ１７へのファイルのデータの書込みまたは削除の完了通知を含む。
【０１１９】
カウンタ部３１２ａは、アクセス制御部３１１ａが出力するシステムコールを受け取り、図１７に示すリードカウンタテーブル６００ａにおいて、システムコールに含まれるファイル名に対応する読出し回数の制御を行う処理部である。そして、カウンタ部３１２ａは、受け取ったシステムコールが読出しのものである場合、リードカウンタテーブル６００ａにおいて、システムコールに含まれるファイル名に対応する読出し回数をカウントアップ（インクリメント）する。また、カウンタ部３１２ａは、受け取ったシステムコールが削除のものである場合、リードカウンタテーブル６００ａにおいて、システムコールに含まれるファイル名に対応する読出し回数を０にリセットする。このようにして、カウンタ部３１２ａは、システムコールが示すファイル名のファイルの累積の読出し回数を、リードカウンタテーブル６００ａに保持する。また、カウンタ部３１２ａは、カウントアップした読出し回数の情報を判定部３１３ａに送る。また、カウンタ部３１２ａは、判定部３１３ａからカウンタリセット要求を受け取った場合、リードカウンタテーブル６００ａにおいて、該当するファイル名の読出し回数を０にリセットする。カウンタ部３１２ａは、ＣＰＵ１１によって実行されるアプリケーション３１のカウンタモジュール３１２により実現される。また、リードカウンタテーブル６００ａは、本実施形態に係る情報処理装置がシャットダウン状態においてはＳＳＤ１７に保存されているものとし、本実施形態に係る情報処理装置が起動状態においては、ＳＳＤ１７からＲＡＭ１３に読み出されて、高速に更新可能な状態となるようにし、起動状態からシャットダウン状態となる場合に、現状の読出し回数を維持した状態でＳＳＤ１７に保存されるものとすればよい。
【０１２０】
また、リードカウンタテーブル６００ａで示されるファイル名に対応する読出し回数とは、そのファイル名のファイルがＳＳＤ１７の適当な物理セクタに分散して記憶されているので、それらのファイルを構成するデータが記憶された物理セクタ（記憶領域、第２記憶領域）、またはその物理セクタに対応付けられた論理セクタに対応した読出し回数ということができる。
【０１２１】
判定部３１３ａは、カウンタ部３１２ａから受け取った読出し回数が、所定の上限回数以上であるか否かを判定する処理部である。判定部３１３ａは、読出し回数が所定の上限回数以上である場合、該当するファイルの削除指令を、削除部３１４ａに送り、リードカウンタテーブル６００ａにおいて該当するファイル名の読出し回数のカウンタリセット要求を、カウンタ部３１２ａに送る。判定部３１３ａは、ＣＰＵ１１によって実行されるアプリケーション３１の判定モジュール３１３により実現される。ここで、所定の上限回数とは、例えば、上述の式（１）によって算出された回数とする。
【０１２２】
なお、読出し回数についての上限回数を上述の式（１）で算出される回数にすることに限定されるものではなく、式（１）で求まる回数未満の値を上限回数としても、同様の効果を得ることができる。
【０１２３】
削除部３１４ａは、判定部３１３ａから削除指令を受け取った場合、削除指令で示されるファイル名のファイルの削除を要求するシステムコールを、システムコール４１に送る処理部である。削除部３１４ａは、ＣＰＵ１１によって実行されるアプリケーション３１の削除モジュール３１４により実現される。
【０１２４】
システムコール４１は、アクセス制御部３１１ａから受け取った読出し、書込み、または削除のシステムコールに従って、それぞれの処理に対応するファイルアクセス要求を、ファイルシステム４２に送る。そして、システムコール４１は、ファイルシステム４２に送ったファイルアクセス要求に応じたファイルアクセス応答をファイルシステム４２から受信する。この場合、読出しのファイルアクセス要求に対するファイルアクセス応答は、読出しの対象となるファイルを含む。また、書込み、または削除のファイルアクセス要求に対応するファイルアクセス応答は、データのＳＳＤ１７への書込み、または削除の完了通知を含む。また、システムコール４１は、削除部３１４ａから削除のシステムコールを受信した場合、システムコールに含まれるファイル名のファイルを削除するためのファイルアクセス要求を、ファイルシステム４２に送信する。
【０１２５】
ファイルシステム４２は、システムコール４１から受け取った読出し、書込み、または削除のファイルアクセス要求に従って、それぞれの処理に対応するデータアクセス要求を、ブロックデバイス４３に送る。そして、ファイルシステム４２は、ブロックデバイス４３に送ったデータアクセス要求に応じたデータアクセス応答をブロックデバイス４３から受け取る。この場合、読出しのデータアクセス要求に対応するデータアクセス応答は、読出しの対象となるデータを含む。また、書込み、または削除のデータアクセス要求に対応するデータアクセス応答は、データのＳＳＤ１７への書込み、または削除の完了通知を含む。
【０１２６】
ブロックデバイス４３は、ファイルシステム４２から受け取った読出し、書込み、または削除のデータアクセス要求に従って、それぞれの処理に対応するデータアクセス要求をデバイスドライバ４７に送る。そして、ブロックデバイス４３は、デバイスドライバ４７に送ったデータアクセス要求に応じたデータアクセス応答をデバイスドライバ４７から受け取る。この場合、読出しのデータアクセス要求に対応するデータアクセス応答は、読出しの対象となるデータを含む。また、書込み、または削除のデータアクセス要求に対応するデータアクセス応答は、データのＳＳＤ１７への書込み、または削除の完了通知を含む。
【０１２７】
デバイスドライバ４７は、ブロックデバイス４３から受け取った読出し、書込み、または削除のデータアクセス要求に従って、それぞれの処理に対応するデータアクセス要求をストレージアクセス部１６に送信する。そして、デバイスドライバ４７は、ストレージアクセス部１６に送信したデータアクセス要求に応じたデータアクセス応答をストレージアクセス部１６から受信する。この場合、読出しのデータアクセス要求に対応するデータアクセス応答は、読出しの対象となるデータを含む。また、書込み、または削除のデータアクセス要求に対応するデータアクセス応答は、データのＳＳＤ１７への書込み、または削除の完了通知を含む。
【０１２８】
ストレージアクセス部１６は、デバイスドライバ４７から受信した読出し、書込み、または削除のデータアクセス要求に従って、それぞれの処理に対応するコマンドを、ＳＳＤ１７（具体的には、ＮＡＮＤメモリ制御部１７１）に送信する。そして、ストレージアクセス部１６は、ＳＳＤ１７に送信したコマンドに応じた応答をＳＳＤ１７から受信する。この場合、読出しのコマンドに対する応答は、読出しの対象となるデータを含む。また、書込み、または削除のコマンドに対応する応答は、データのＳＳＤ１７への書込み、または削除の完了通知を含む。
【０１２９】
なお、図１６に示すアクセス制御部３１１ａ、カウンタ部３１２ａ、判定部３１３ａおよび削除部３１４ａは、機能を概念的に示したものであって、このような構成に限定されるものではない。
【０１３０】
また、図１６に示すアクセス制御部３１１ａ、カウンタ部３１２ａ、判定部３１３ａおよび削除部３１４ａは、ソフトウェアであるプログラムではなく、少なくとも一部がハードウェア回路によって実現されるものとしてもよい。
【０１３１】
図１８は、第３の実施形態のアプリケーションからシステムコールが出力された場合の処理のフローチャートである。図１８を参照しながら、アプリケーション３１がシステムコールを出力した場合の処理について説明する。まず、アプリケーション３１に発生した処理に応じてＳＳＤ１７にアクセスする必要がある場合、アプリケーション３１のアクセス制御部３１１ａは、読出し、書込み、または削除のシステムコールをシステムコール４１に送る。
【０１３２】
＜ステップＳ３１＞
アプリケーション３１のカウンタ部３１２ａは、アクセス制御部３１１ａから出力されたシステムコールを受け取る。そして、カウンタ部３１２ａは、受け取ったシステムコールがデータの読出しのコールであるか否かを判定する。システムコールがデータの読出しのコールでない場合（ステップＳ３１：Ｎｏ）、ステップＳ３２へ進み、データの読出しのコールである場合（ステップＳ３１：Ｙｅｓ）、ステップＳ３４へ進む。
【０１３３】
＜ステップＳ３２＞
カウンタ部３１２ａは、受け取ったシステムコールがデータの削除のコールであるか否かを判定する。システムコールがデータの削除のコールである場合（ステップＳ３２：Ｙｅｓ）、ステップＳ３３へ進み、データの削除のコールでない場合（ステップＳ３２：Ｎｏ）、処理が終了する。
【０１３４】
＜ステップＳ３３＞
カウンタ部３１２ａは、受け取ったシステムコールが削除のコールである場合、リードカウンタテーブル６００ａにおいて、システムコールが示すファイル名に対応する読出し回数を０にリセットする。ここで、システムコールが書込みのコールである場合、システムコールが示すファイル名のファイルを構成する物理セクタ５０２のデータのすべてが書込みの対象となるとは限らない。したがって、システムコールが書込みのコールである場合、システムコールが示すファイル名に対応する読出し回数を０にリセットすることは適当ではないため、読出し回数をそのままとする。そして、処理が終了する。
【０１３５】
＜ステップＳ３４＞
カウンタ部３１２ａは、受け取ったシステムコールがデータの読出しのコールである場合、リードカウンタテーブル６００ａにおいて、システムコールが示すファイル名に対応する読出し回数をカウントアップ（インクリメント）する。そして、カウンタ部３１２ａは、カウントアップした読出し回数の情報を、アプリケーション３１の判定部３１３ａに送る。そして、ステップＳ３５へ進む。
【０１３６】
＜ステップＳ３５＞
判定部３１３ａは、カウンタ部３１２ａから受け取った読出し回数が、所定の上限回数以上であるか否かを判定する。読出し回数が所定の上限回数以上である場合（ステップＳ３５：Ｙｅｓ）、ステップＳ３６へ進み、読出し回数が所定の上限回数未満である場合（ステップＳ３５：Ｎｏ）、処理が終了する。
【０１３７】
＜ステップＳ３６＞
判定部３１３ａは、読出し回数が所定の上限回数以上である場合、リードカウンタテーブル６００ａにおいて読出し回数に対応するファイル名のファイル（第１データ）の削除指令を、アプリケーション３１の削除部３１４ａに送る。削除部３１４ａは、判定部３１３ａから削除指令を受け取ると、削除指令で示されるファイル名のファイルの削除を要求するシステムコールを、システムコール４１に送る。システムコール４１は、削除部３１４ａから削除のシステムコールを受け取ると、システムコールに含まれるファイル名のファイルを削除するためのファイルアクセス要求を、ファイルシステム４２に送る。ファイルシステム４２は、システムコール４１から削除のファイルアクセス要求を受け取ると、ファイルアクセス要求に含まれるファイル名のファイルを構成するデータを削除するためのデータアクセス要求をブロックデバイス４３に送る。具体的には、ファイルシステム４２は、ブロックデバイス４３に送るデータアクセス要求に、削除対象のデータに対応する論理番号を含める。ブロックデバイス４３は、ファイルシステム４２から削除のデータアクセス要求を受け取ると、データアクセス要求に含まれる論理番号に対応する論理セクタ５０１のデータを削除するためのデータアクセス要求を、デバイスドライバ４７に送る。デバイスドライバ４７は、ブロックデバイス４３から削除のデータアクセス要求を受け取ると、データアクセス要求に含まれる論理番号に対応する論理セクタ５０１のデータを削除するためのデータアクセス要求を、ストレージアクセス部１６に送信する。ストレージアクセス部１６は、デバイスドライバ４７から削除のデータアクセス要求を受信すると、データアクセス要求に含まれる論理番号に対応する論理セクタ５０１のデータを削除するためのコマンドを、ＳＳＤ１７のＮＡＮＤメモリ制御部１７１に送信する。ＮＡＮＤメモリ制御部１７１は、ストレージアクセス部１６から削除のコマンドを受信すると、コマンドで示される論理番号の論理セクタ５０１のデータを、物理コマンドによって削除する。そして、ＮＡＮＤメモリ制御部１７１は、データを削除した論理セクタ５０１に対応する物理セクタ５０２のデータを所定のタイミングで削除する。そして、ステップＳ３７へ進む。
【０１３８】
＜ステップＳ３７＞
判定部３１３ａは、さらに、リードカウンタテーブル６００ａにおいて、削除対象であるファイルのファイル名に対応する読出し回数をリセットするためのカウンタリセット要求を、カウンタ部３１２ａに送る。カウンタ部３１２ａは、判定部３１３ａからカウンタリセット要求を受け取ると、リードカウンタテーブル６００ａにおいて、カウンタリセット要求が示すファイル名に対応する読出し回数を０にリセットする。そして、処理が終了する。
【０１３９】
以上のように、本実施形態の情報処理装置は、ＯＳ４０ｂ上で動作するアプリケーション３１に、第１の実施形態のデバイスドライバ４４が実現するアクセス制御部４４１ａ、カウンタ部４４２ａ、判定部４４３ａ、および削除部４４４ａに相当する機能が備えられている。ただし、データの読出し、書込み、および削除の単位は、セクタ単位ではなく、ファイル単位となっているので、ファイルのファイル名ごとに読出し回数を管理するものとしている。これによっても、第１の実施形態と同様の効果を奏することができる。また、アプリケーション３１において、上述の機能を備えることができるので、簡易に実装することが可能となり、ＳＳＤ１７における読出しディスターブの発生の抑制をアプリケーションレベルで簡易に実現することができる。
【０１４０】
（第４の実施形態）
本実施形態においては、第１〜３の実施形態いずれかに係る情報処理装置をネットワーク上のウェブキャッシュサーバに適用した例を説明する。
【０１４１】
図１９は、第４の実施形態のクライアントサーバシステムの構成例を示す図である。図１９を参照しながら、本実施形態のネットワーク構成の概要を説明する。
【０１４２】
図１９に示すように、本実施形態のネットワーク構成は、ウェブサーバ５０（情報提供サーバ）と、ウェブサーバ５０に接続されたウェブキャッシュサーバ１０ａと、ネットワークを介してウェブキャッシュサーバ１０ａに接続されたウェブクライアント５５と、を含むクライアントサーバ型の構成である。
【０１４３】
ウェブサーバ５０は、ＷＷＷ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ）システムにおいて、ＨＴＭＬ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）文書および画像等のコンテンツを蓄積し、ウェブクライアント５５のブラウザ等のアプリケーションの要求に応じて、ネットワークを介して、コンテンツを送信する装置またはシステムである。ウェブサーバ５０は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）５１を備えており、ＨＤＤ５１に上述のコンテンツを蓄積している。
【０１４４】
ウェブキャッシュサーバ１０ａは、第１〜３の実施形態いずれかに係る情報処理装置を適用したキャッシュサーバである。ウェブキャッシュサーバ１０ａは、ウェブサーバ５０が提供するコンテンツの複製を蓄積し、ウェブクライアント５５からの要求があった場合に、ウェブサーバ５０に代わって、ネットワークを介して、コンテンツを提供する装置またはシステムである。ウェブキャッシュサーバ１０ａは、ＳＳＤ１７を備えており、ＳＳＤ１７に上述のコンテンツの複製を蓄積している。このように、ウェブサーバ５０とウェブクライアント５５との間に、ウェブキャッシュサーバ１０ａを介することによって、ネットワークのトラフィック、およびウェブサーバ５０のサーバの負荷を低減することができる。
【０１４５】
ウェブクライアント５５は、ユーザの要求に応じて、ウェブサーバ５０（またはウェブキャッシュサーバ１０ａ）に対してコンテンツの送信を要求し、ウェブブラウザ等のアプリケーションによってコンテンツの閲覧を可能とする装置またはシステムである。
【０１４６】
以上のように、第１〜３の実施形態いずれかの情報処理装置を、クライアントサーバ型のＷＷＷシステムのウェブキャッシュサーバ１０ａに適用するものとしている。これによって、ウェブキャッシュサーバ１０ａが備えるＳＳＤ１７において、読出しディスターブの発生を抑制し、読出し時間の増大を抑制することができるので、ＳＳＤ１７の高性能な読み書き機能と併せて、キャッシュサーバとしての高速処理が可能となる。
【０１４７】
（第４の実施形態の変形例）
本変形例においては、第１〜３の実施形態のいずれかに係る情報処理装置をネットワーク上のデータベースキャッシュサーバに適用した例を説明する。
【０１４８】
図２０は、第４の実施形態の変形例のクライアントサーバシステムの構成例を示す図である。図２０を参照しながら、本変形例のネットワーク構成の概要を説明する。
【０１４９】
図２０に示すように、本変形例のネットワーク構成は、データベースサーバ６０（情報提供サーバ）と、ネットワークを介してデータベースサーバ６０に接続されたデータベースキャッシュサーバ１０ｂと、ネットワークを介してデータベースサーバ６０およびデータベースキャッシュサーバ１０ｂに接続されたデータベースクライアント６５と、を含むクライアントサーバ型の構成である。
【０１５０】
データベースサーバ６０は、データベース管理システム（ＤＢＭＳ：Ｄａｔａｂａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）を稼働させ、様々なデータをデータベースとして蓄積し、データベースクライアント６５から要求されたデータを送信したり、要求に従ってデータを書き換える装置またはシステムである。データベースサーバ６０は、ＨＤＤ６１を備えており、ＨＤＤ６１にデータベースが構成され、上述の様々なデータを蓄積している。
【０１５１】
データベースキャッシュサーバ１０ｂは、第１〜３の実施形態いずれかに係る情報処理装置を適用したキャッシュサーバである。データベースキャッシュサーバ１０ｂは、データベースサーバ６０が提供するデータの複製を蓄積し、データベースクライアント６５からの要求があった場合に、データベースサーバ６０に代わって、ネットワークを介して、データを提供等する装置またはシステムである。データベースキャッシュサーバ１０ｂは、ＳＳＤ１７を備えており、ＳＳＤ１７に上述のデータの複製を蓄積している。このように、データベースサーバ６０と共に、データベースキャッシュサーバ１０ｂを設置することによって、例えば、データベースクライアント６５からデータベースサーバ６０に対して要求したデータを、データベースキャッシュサーバ１０ｂに蓄積させ、次回に同様のデータの要求がデータベースクライアント６５からなされた場合、データベースキャッシュサーバ１０ｂから高速にデータを提供することができる。
【０１５２】
データベースクライアント６５は、ユーザの要求に従って、データベースサーバ６０（またはデータベースキャッシュサーバ１０ｂ）に対してデータの送信、または、データベースのデータの書換え等を要求する装置またはシステムである。
【０１５３】
以上のように、第１〜３の実施形態いずれかの情報処理装置を、クライアントサーバ型のデータベースシステムのデータベースキャッシュサーバ１０ｂに適用するものとしている。これによって、データベースキャッシュサーバ１０ｂが備えるＳＳＤ１７において、読出しディスターブの発生を抑制し、読出し時間の増大を抑制することができるので、ＳＳＤ１７の高性能な読み書き機能と併せて、キャッシュサーバとしての高速処理が可能となる。
【０１５４】
なお、上述の実施形態の情報処理装置において、ＮＡＮＤメモリを備える記憶装置としてＳＳＤ１７を例に示したが、これに限定されるものではない。すなわち、ＮＡＮＤメモリを備える記憶装置が、ＵＳＢメモリ、またはＳＤメモリカード等のその他の記憶装置であってもよい。
【０１５５】
また、上述の実施形態の情報処理装置のＣＰＵ１１で実行されるＯＳおよびアプリケーションであるプログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ−ＲＯＭ、ＣＤ−Ｒ、メモリカード、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、またはフレキシブルディスク（ＦＤ）等のコンピュータで読み取り可能な記憶媒体に記憶されて提供される。
【０１５６】
また、上述の実施形態の情報処理装置のＣＰＵ１１で実行されるＯＳおよびアプリケーションであるプログラムは、インターネット等のネットワークに接続されたコンピュータ上に格納され、ネットワーク経由でダウンロードされることにより提供されるようにしてもよい。また、上述の実施形態の情報処理装置のＣＰＵ１１で実行されるＯＳおよびアプリケーションであるプログラムは、インターネット等のネットワーク経由で提供または配布されるようにしてもよい。また、上述の実施形態の情報処理装置のＣＰＵ１１で実行されるＯＳおよびアプリケーションであるプログラムは、ＲＯＭ等に予め組み込んで提供されるようにしてもよい。
【０１５７】
また、上述の実施形態の情報処理装置のＣＰＵ１１で実行されるＯＳおよびアプリケーションであるプログラムは、上述したＣＰＵ１１で実行される各機能をコンピュータ上で実現させるためのモジュール構成となっている。実際のハードウェアとしては、ＣＰＵ１１が記憶装置（ＲＯＭ１２およびＳＳＤ１７等）からプログラムを読み出して実行することによって、上述の各機能がコンピュータ上で実現されるようになっている。
【０１５８】
以上のように本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これらの新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、および変更を行うことができる。これらの実施形態およびその変形は、発明の範囲および要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１５９】
１０  情報処理装置
１０ａ  ウェブキャッシュサーバ
１０ｂ  データベースキャッシュサーバ
１１  ＣＰＵ
１２  ＲＯＭ
１３  ＲＡＭ
１４  ネットワークＩ／Ｆ
１５  ディスプレイ
１６  ストレージアクセス部
１７  ＳＳＤ
１８  キーボード
１９  マウス
２０  ＣＤ−ＲＯＭドライブ
２１  ＣＤ−ＲＯＭ
２２  バス
３０、３１  アプリケーション
４０、４０ａ、４０ｂ  ＯＳ
４１  システムコール
４２  ファイルシステム
４３  ブロックデバイス
４４、４５  デバイスドライバ
４６  ブロックデバイス
４７  デバイスドライバ
５０  ウェブサーバ
５１  ＨＤＤ
５５  ウェブクライアント
６０  データベースサーバ
６１  ＨＤＤ
６５  データベースクライアント
１７１  ＮＡＮＤメモリ制御部
１７２  ＮＡＮＤメモリ部
１７３  ＮＡＮＤメモリチップ
１７４  ブロック
１７４ａ  ページ
３１１  アクセス制御モジュール
３１１ａ  アクセス制御部
３１２  カウンタモジュール
３１２ａ  カウンタ部
３１３  判定モジュール
３１３ａ  判定部
３１４  削除モジュール
３１４ａ  削除部
４４１  アクセス制御モジュール
４４１ａ  アクセス制御部
４４２  カウンタモジュール
４４２ａ  カウンタ部
４４３  判定モジュール
４４３ａ  判定部
４４４  削除モジュール
４４４ａ  削除部
４５１ａ  アクセス制御部
４５２ａ  カウンタ部
４５３ａ  判定部
４５４ａ  削除部
４６１  アクセス制御モジュール
４６１ａ  アクセス制御部
４６２  カウンタモジュール
４６２ａ  カウンタ部
４６３  判定モジュール
４６３ａ  判定部
４６４  削除モジュール
４６４ａ  削除部
５０１  論理セクタ
５０２  物理セクタ
５０３  論物対応表
６００、６００ａ  リードカウンタテーブル
【図１】
2016024779.tif 000003
【図２】
2016024779.tif 000004
【図３】
2016024779.tif 000005
【図４】
2016024779.tif 000006
【図５】
2016024779.tif 000007
【図６】
2016024779.tif 000008
【図７】
2016024779.tif 000009
【図８】
2016024779.tif 000010
【図９】
2016024779.tif 000011
【図１０】
2016024779.tif 000012
【図１１】
2016024779.tif 000013
【図１２】
2016024779.tif 000014
【図１３】
2016024779.tif 000015
【図１４】
2016024779.tif 000016
【図１５】
2016024779.tif 000017
【図１６】
2016024779.tif 000018
【図１７】
2016024779.tif 000019
【図１８】
2016024779.tif 000020
【図１９】
2016024779.tif 000021
【図２０】
2016024779.tif 000022