(57)【要約】【課題】適切なブロックサイズでデータの先読みを行う。【解決手段】データ入出力部は、ページ単位で不揮発記憶装置からのデータの読み出しを要求し、読み出されたデータをバッファに記憶させる。プロファイル作成部は、先読み対象プログラムからの要求に従ってデータ入出力部により発行される不揮発記憶装置からのデータの読み出し要求の履歴を、先読みブロックサイズのブロック単位の読み出し位置およびサイズに変換した先読みプロファイルを作成する。先読み実行部は、先読みプロファイルに基づいて、不揮発記憶装置からバッファへの先読み対象プログラムのデータの先読みをデータ入出力部に要求する。本技術は、例えばメモリ管理装置に適用できる。【選択図】図１
2013008094.tif 000002
【特許請求の範囲】
【請求項１】
第１のサイズのブロック単位で第１の記憶媒体からのデータの読み出しを要求し、前記第１の記憶媒体から読み出されたデータを第２の記憶媒体に記憶させるデータ入出力部と、
対象となるプログラムからの要求に従って前記データ入出力部により発行される前記第１の記憶媒体からのデータの読み出し要求の履歴を、第２のサイズのブロック単位の読み出し位置およびサイズに変換したデータである先読みデータを作成するデータ作成部と、
前記先読みデータに基づいて、前記第１の記憶媒体から前記第２の記憶媒体への前記プログラムのデータの先読みを前記データ入出力部に要求する先読み実行部と
を含むメモリ管理装置。
【請求項２】
前記第２のサイズは、前記第１の記憶媒体からデータの読み出しが可能な最小単位を基準とするサイズである
請求項１に記載のメモリ管理装置。
【請求項３】
前記データ入出力部は、前記第２のサイズのブロック単位で前記第１の記憶媒体のデータにアクセスするアクセス部に、前記第１の記憶媒体からのデータの読み出しを要求する
請求項２に記載のメモリ管理装置。
【請求項４】
前記第１の記憶媒体のフォーマットに基づいて、前記第２のサイズを設定する設定部を
さらに含む請求項１に記載のメモリ管理装置。
【請求項５】
前記第２の記憶媒体の使用量を監視する監視部をさらに含み、
前記データ作成部は、前記第２の記憶媒体の使用量が所定の閾値を超えた期間に、前記プログラムからの要求に従って前記データ入出力部から発行される前記読み出し要求を除いて、前記先読みデータを作成する
請求項１に記載のメモリ管理装置。
【請求項６】
前記第２の記憶媒体の使用量を監視する監視部をさらに含み、
前記先読み実行部は、前記第２の記憶媒体の使用量に基づいて、先読みを実行または中断する
請求項１に記載のメモリ管理装置。
【請求項７】
前記プログラムを実行する場合に、前記プログラム用の前記先読みデータが存在しないとき、前記データ作成部に前記先読みデータの作成を指示し、前記プログラム用の前記先読みデータが存在するとき、前記先読み実行部に前記プログラムのデータの先読みを指示する実行制御部を
さらに含む請求項１に記載のメモリ管理装置。
【請求項８】
次に実行されるプログラムを予測する予測部をさらに含み、
前記実行制御部は、前記予測されたプログラム用の前記先読みデータが存在しないとき、前記データ作成部に前記先読みデータの作成を指示し、前記予測されたプログラム用の前記先読みデータが存在するとき、前記先読み実行部に前記予測されたプログラムのデータの先読みを指示する
請求項７に記載のメモリ管理装置。
【請求項９】
第１のサイズのブロック単位で第１の記憶媒体からのデータの読み出しを要求し、前記第１の記憶媒体から読み出されたデータを第２の記憶媒体に記憶させるデータ入出力部を備えるメモリ管理装置が、
対象となるプログラムからの要求に従って前記データ入出力部により発行される前記第１の記憶媒体からのデータの読み出し要求の履歴を、第２のサイズのブロック単位の読み出し位置およびサイズに変換したデータである先読みデータを作成し、
前記先読みデータに基づいて、前記第１の記憶媒体から前記第２の記憶媒体への前記プログラムのデータの先読みを前記データ入出力部に要求する
ステップを含むメモリ管理方法。
【請求項１０】
第１のサイズのブロック単位で第１の記憶媒体からのデータの読み出しを要求し、前記第１の記憶媒体から読み出されたデータを第２の記憶媒体に記憶させるデータ入出力部により対象となるプログラムからの要求に従って発行される前記第１の記憶媒体からのデータの読み出し要求の履歴を、第２のサイズのブロック単位の読み出し位置およびサイズに変換したデータである先読みデータを作成し、
前記先読みデータに基づいて、前記第１の記憶媒体から前記第２の記憶媒体への前記プログラムのデータの先読みを前記データ入出力部に要求する
ステップを含む処理をコンピュータに実行させるための制御プログラム。
【請求項１１】
請求項１０に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、メモリ管理装置、メモリ管理方法、制御プログラム、および、記録媒体に関し、特に、先読み処理を行う場合に用いて好適なメモリ管理装置、メモリ管理方法、制御プログラム、および、記録媒体に関する。
【背景技術】
【０００２】
従来、プログラムがハードディスクなどの不揮発記憶装置へアクセスした履歴を用いて、次回のプログラム実行時に、不揮発記憶装置のデータを先読み(プリフェッチ)するシステムが提案されている（例えば、特許文献１参照）。
【０００３】
このシステムでは、プログラム実行時に、不揮発記憶装置に対するデータの読み出し要求が記録され、記録した履歴に基づいて先読み方法が決定される。そして、次回以降のプログラムの実行時に、決定した先読み方法に基づいて、不揮発記憶装置からのデータの先読みが実行される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−２６００６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載のシステムでは、データの先読みを行う際のブロックサイズの適正化については特に考慮されていないため、必ずしも効率的にデータの先読みが行われるとは限らない。
【０００６】
本技術は、適切なブロックサイズでデータの先読みを行うことができるようにするものである。
【課題を解決するための手段】
【０００７】
本技術の一側面のメモリ管理装置は、第１のサイズのブロック単位で第１の記憶媒体からのデータの読み出しを要求し、前記第１の記憶媒体から読み出されたデータを第２の記憶媒体に記憶させるデータ入出力部と、対象となるプログラムからの要求に従って前記データ入出力部により発行される前記第１の記憶媒体からのデータの読み出し要求の履歴を、第２のサイズのブロック単位の読み出し位置およびサイズに変換したデータである先読みデータを作成するデータ作成部と、前記先読みデータに基づいて、前記第１の記憶媒体から前記第２の記憶媒体への前記プログラムのデータの先読みを前記データ入出力部に要求する先読み実行部とを含む。
【０００８】
前記第２のサイズを、前記第１の記憶媒体からデータの読み出しが可能な最小単位を基準とするサイズにすることができる。
【０００９】
前記データ入出力部には、前記第２のサイズのブロック単位で前記第１の記憶媒体のデータにアクセスするアクセス部に、前記第１の記憶媒体からのデータの読み出しを要求させることができる。
【００１０】
前記第１の記憶媒体のフォーマットに基づいて、前記第２のサイズを設定する設定部をさらに設けることができる。
【００１１】
前記第２の記憶媒体の使用量を監視する監視部をさらに設け、前記データ作成部には、前記第２の記憶媒体の使用量が所定の閾値を超えた期間に、前記プログラムからの要求に従って前記データ入出力部から発行される前記読み出し要求を除いて、前記先読みデータを作成させることができる。
【００１２】
前記第２の記憶媒体の使用量を監視する監視部をさらに設け、前記先読み実行部には、前記第２の記憶媒体の使用量に基づいて、先読みを実行または中断させることができる。
【００１３】
前記プログラムを実行する場合に、前記プログラム用の前記先読みデータが存在しないとき、前記データ作成部に前記先読みデータの作成を指示し、前記プログラム用の前記先読みデータが存在するとき、前記先読み実行部に前記プログラムのデータの先読みを指示する実行制御部をさらに設けることができる。
【００１４】
次に実行されるプログラムを予測する予測部をさらに設け、前記実行制御部には、前記予測されたプログラム用の前記先読みデータが存在しないとき、前記データ作成部に前記先読みデータの作成を指示し、前記予測されたプログラム用の前記先読みデータが存在するとき、前記先読み実行部に前記予測されたプログラムのデータの先読みを指示させることができる。
【００１５】
本技術の一側面のメモリ管理方法は、第１のサイズのブロック単位で第１の記憶媒体からのデータの読み出しを要求し、前記第１の記憶媒体から読み出されたデータを第２の記憶媒体に記憶させるデータ入出力部を備えるメモリ管理装置が、対象となるプログラムからの要求に従って前記データ入出力部により発行される前記第１の記憶媒体からのデータの読み出し要求の履歴を、第２のサイズのブロック単位の読み出し位置およびサイズに変換したデータである先読みデータを作成し、前記先読みデータに基づいて、前記第１の記憶媒体から前記第２の記憶媒体への前記プログラムのデータの先読みを前記データ入出力部に要求するステップを含む。
【００１６】
本技術の一側面の制御プログラムまたは記録媒体に記録されている制御プログラムは、第１のサイズのブロック単位で第１の記憶媒体からのデータの読み出しを要求し、前記第１の記憶媒体から読み出されたデータを第２の記憶媒体に記憶させるデータ入出力部により対象となるプログラムからの要求に従って発行される前記第１の記憶媒体からのデータの読み出し要求の履歴を、第２のサイズのブロック単位の読み出し位置およびサイズに変換したデータである先読みデータを作成し、前記先読みデータに基づいて、前記第１の記憶媒体から前記第２の記憶媒体への前記プログラムのデータの先読みを前記データ入出力部に要求するステップを含む処理をコンピュータに実行させる。
【００１７】
本技術の一側面においては、第１のサイズのブロック単位で第１の記憶媒体からのデータの読み出しを要求し、前記第１の記憶媒体から読み出されたデータを第２の記憶媒体に記憶させるデータ入出力部により対象となるプログラムからの要求に従って発行される前記第１の記憶媒体からのデータの読み出し要求の履歴を、第２のサイズのブロック単位の読み出し位置およびサイズに変換したデータである先読みデータが作成され、前記先読みデータに基づいて、前記第１の記憶媒体から前記第２の記憶媒体への前記プログラムのデータの先読みが前記データ入出力部に要求される。
【発明の効果】
【００１８】
本技術の一側面によれば、適切なブロックサイズでデータの先読みを行うことができる。
【図面の簡単な説明】
【００１９】
【図１】本技術を適用した情報処理システムの一実施の形態を示すブロック図である。
【図２】図１の情報処理システムにより実行される先読み処理を説明するためのフローチャートである。
【図３】本技術をブルーレイディスクレコーダに適用した場合の機能の構成例を示すブロック図である。
【図４】本技術をタブレット端末に適用した場合の機能の構成例を示すブロック図である。
【図５】本技術を適用した情報処理システムの第１の変形例を示すブロック図である。
【図６】図５の情報処理システムにより実行される先読み処理を説明するためのフローチャートである。
【図７】本技術を適用した情報処理システムの第２の変形例を示すブロック図である。
【図８】図７の情報処理システムにより実行される先読み処理を説明するためのフローチャートである。
【図９】コンピュータの構成例を示すブロック図である。
【発明を実施するための形態】
【００２０】
以下、本技術を実施するための形態（以下、実施の形態という）について説明する。なお、説明は以下の順序で行う。
１．本技術の実施の形態の基本的な構成
２．第１の具体的な実施例（ブルーレイディスクレコーダに適用した例）
３．第２の具体的な実施例（タブレット端末に適用した例）
４．第１の変形例（プログラムの起動予測を行い、先読みを実施する例）
５．第２の変形例（メモリ使用量を監視しながら、先読みを実施する例）
６．その他の変形例
【００２１】
＜１．実施の形態の基本的な構成＞
まず、図１および図２を参照して、本技術の実施の形態の基本的な構成について説明する。
【００２２】
［情報処理システム１０１の構成例］
図１は、本技術を適用した情報処理システム１０１の機能の構成例を示すブロック図である。
【００２３】
情報処理システム１０１は、不揮発記憶装置１１１、デバイスドライバ１１２、データ入出力部１１３、バッファ１１４、先読み対象プログラム１１５、ブロックサイズ設定部１１６、先読み実行制御部１１７、プロファイル作成部１１８、および、先読み実行部１１９を含むように構成される。また、プロファイル作成部１１８は、収集部１３１および作成部１３２を含むように構成される。
【００２４】
なお、データ入出力部１１３、ブロックサイズ設定部１１６、先読み実行制御部１１７、プロファイル作成部１１８、および、先読み実行部１１９は、例えば、情報処理システム１０１で実行されるオペレーティングシステムにより実現される。
【００２５】
また、情報処理システム１では、後述するように、先読み対象プログラム１１５の実行前に、先読み対象プログラム１１５の実行に必要なデータの少なくとも一部を不揮発記憶装置１１１から読み出し、バッファ１１４に記憶する先読みが行われる。ここで、先読み対象となるデータには、先読み対象プログラムの処理に用いるデータだけでなく、先読み対象プログラム１１５自身も含まれる。
【００２６】
不揮発記憶装置１１１は、実行可能形式のプログラムやファイルなどの、永続的データを記憶する。
【００２７】
デバイスドライバ１１２は、データ入出力部１１３からの要求に従って、所定のサイズ（例えば、１２８キロバイト）のブロックであるストレージブロック単位で、不揮発記憶装置１１１にアクセスする。すなわち、デバイスドライバ１１２は、ストレージブロック単位で、不揮発記憶装置１１１からデータを読み出したり、不揮発記憶装置１１１にデータを書き込んだりする。そして、デバイスドライバ１１２は、不揮発記憶装置１１１から読み出したデータをデータ入出力部１１３に渡す。
【００２８】
なお、ストレージブロックのサイズは、例えば、不揮発記憶装置１１１のデータにアクセス可能なサイズの最小単位に設定される。
【００２９】
データ入出力部１１３は、デマンドページング方式により、メモリ管理を行う。従って、データ入出力部１１３は、先読み対象プログラム１１５などからの要求に従って、所定のサイズ（例えば、４キロバイト）のブロックであるページ単位で、デバイスドライバ１１２に不揮発記憶装置１１１へのアクセスを要求する。すなわち、データ入出力部１１３は、不揮発記憶装置１１１からのデータの読み出し、および、不揮発記憶装置１１１へのデータの書き込みをページ単位でデバイスドライバ１１２に要求する。そして、データ入出力部１１３は、デバイスドライバ１１２により不揮発記憶装置１１１から読み出されたデータを要求元に渡す。
【００３０】
また、データ入出力部１１３は、処理の高速化のため、不揮発記憶装置１１１から読み出されたデータをバッファ１１４に記憶させ、次に同じデータの読み出しが要求された場合、バッファ１１４に記憶されているデータを読み出し、要求元に渡す。
【００３１】
さらに、データ入出力部１１３は、先読み実行部１１９からの要求に従って、データの先読みを行う。すなわち、データ入出力部１１３は、先読み実行部１１９からの要求に従って、デバイスドライバ１１２に不揮発記憶装置１１１からのデータの読み出しを要求し、デバイスドライバ１１２により不揮発記憶装置１１１から読み出されたデータをバッファ１１４に記憶させる。
【００３２】
バッファ１１４は、不揮発記憶装置１１１に記憶されているデータのうちアクセスのあったもの、または、先読みされたものを一時的に保存する領域であり、不揮発記憶装置１１１よりも高速にアクセス可能な記憶装置上に確保される。バッファ１１４は、例えば、オペレーティングシステムが管理するメインメモリ上のページキャッシュに相当する。
【００３３】
先読み対象プログラム１１５は、情報処理システム１０１の主機能を実現するためのプログラムである。
【００３４】
ブロックサイズ設定部１１６は、不揮発記憶装置１１１からのデータの先読みを行う場合に、データ入出力部１１３がデバイスドライバ１１２にデータの読み出しを要求する単位となるブロックサイズ（以下、先読みブロックサイズと称する）を設定する。そして、ブロックサイズ設定部１１６は、設定した先読みブロックサイズを収集部１３１に通知する。
【００３５】
先読み実行制御部１１７は、先読み対象プログラム１１５の実行時に、先読みを実行するか、あるいは、先読みプロファイルＰａの作成を行うかを判断する。そして、先読み実行制御部１１７は、先読みを実行すると判断した場合、先読み実行部１１９に先読みの実行を指示する。一方、先読み実行制御部１１７は、先読みプロファイルＰａの作成を行うと判断した場合、収集部１３１に先読みプロファイルＰａの作成を指示する。
【００３６】
プロファイル作成部１１８は、先読み実行部１１９に先読み手順を指示するデータであり、先読み対象となるデータの不揮発記憶装置１１１上の位置とサイズ、および、先読みを行う順序を含む先読みプロファイルＰａを作成する。
【００３７】
具体的には、プロファイル作成部１１８の収集部１３１は、後述するように、先読み対象プログラム１１５の不揮発記憶装置１１１へのデータ要求の履歴を収集し、作成部１３２に供給する。
【００３８】
作成部１３２は、後述するように、収集部１３１が収集した履歴に基づいて、先読みプロファイルＰａを作成する。
【００３９】
先読み実行部１１９は、先読み実行制御部１１７からの指示に従って、データの先読みを行う。すなわち、先読み実行部１１９は、先読み対象プログラム１１５の実行前に、先読みプロファイルＰａに基づいて、先読み対象プログラム１１５が必要とするデータをデータ入出力部１１３に要求する。これにより、要求されたデータが不揮発記憶装置１１１からバッファ１１４にコピーされ、先読み対象プログラム１１５がデータ入出力部１１３にデータ要求を行ったときに、バッファ１１４からデータが読み出されるようになる。その結果、先読み対象プログラム１１５は、高速にデータを取得することができる。
【００４０】
［情報処理システム１０１の先読み処理］
次に、図２のフローチャートを参照して、情報処理システム１０１により実行される先読み処理を説明する。
【００４１】
ステップＳ１において、ブロックサイズ設定部１１６は、先読みに用いるブロックサイズ（先読みブロックサイズ）を設定する。そして、ブロックサイズ設定部１１６は、設定した先読みブロックサイズを収集部１３１に通知する。
【００４２】
ステップＳ２において、先読み対象プログラム１１５が起動する。これに伴い、先読み実行制御部１１７が、先読み対象プログラム１１５の起動を検知し、起動する。
【００４３】
ステップＳ３において、先読み実行制御部１１７は、先読み対象プログラム１１５用の先読みプロファイルＰａが存在するか否かを判定する。先読み対象プログラム１１５用の先読みプロファイルＰａが存在しないと判定された場合、処理はステップＳ４に進む。
【００４４】
ステップＳ４において、収集部１３１は、先読み対象プログラム１１５の不揮発記憶装置１１１へのデータ要求の履歴を収集する。具体的には、収集部１３１は、先読み対象プログラム１１５からの要求に従ってデータ入出力部１１３からデバイスドライバ１１２に発行される、不揮発記憶装置１１１からのデータの読み出し要求を監視する。そして、収集部１３１は、読み出しブロックサイズを基準にして、先読み対象プログラム１１５からの要求に従ってデータ入出力部１１３から発行される読み出し要求の履歴（以下、データ要求履歴と称する）を収集する。
【００４５】
具体的には、収集部１３１は、データ入出力部１１３からページ単位で行われる読み出し要求を、読み出しブロックサイズを基準とする読み出し要求に変換する。すなわち、収集部１３１は、読み出し要求にページ単位で示されるデータの読み出し位置およびサイズを、読み出しブロックサイズのブロック単位の読み出し位置およびサイズに変換する。そして、収集部１３１は、変換後の読み出し要求を記録する。
【００４６】
なお、このとき、例えば、読み出し要求が発行された時刻や、前回発行された読み出し要求との間の時間間隔等の時間情報を記録するようにしてもよい。
【００４７】
従って、データ要求履歴は、先読み対象プログラム１１５からの要求に従ってデータ入出力部１１３から発行される読み出し要求の履歴を、読み出しブロックサイズのブロック単位の読み出し位置およびサイズに変換したデータとなる。すなわち、読み出し位置は、先読みブロックサイズのブロック単位でアドレッシングした位置により示され、サイズは、先読みブロックサイズのブロックの数により示される。
【００４８】
ステップＳ５において、作成部１３２は、データ要求履歴を集約し、先読みプロファイルＰａを作成する。具体的には、作成部１３２は、データ要求履歴を収集部１３１から取得し、データ要求履歴に記録されている読み出し要求に示されるデータの読み出し位置およびサイズを抽出する。そして、作成部１３２は、抽出した読み出し位置およびサイズを所定の順序（例えば、読み出し順）に並べた先読みプロファイルＰａを作成する。なお、このとき、作成部１３２は、データを読み出す領域が隣接するものを１つにまとめたり、重複するものを削除したりする。
【００４９】
なお、先読みプロファイルＰａを作成する範囲、すなわち、データの先読みを行う範囲は、例えば、情報処理システム１０１の仕様や性能、バッファ１１４の容量、先読み対象プログラム１１５が実現する機能等に基づいて決められる。例えば、先読み対象プログラム１１５の起動完了時までに必要なデータ、あるいは、先読み対象プログラム１１５の実行時に必ず実行される処理に必要なデータ、あるいは、先読み対象プログラム１１５の全ての処理に必要なデータが先読み対象に設定され、先読みプロファイルＰａが作成される。
【００５０】
そして、先読みプロファイルＰａが作成された後、処理は終了する。
【００５１】
一方、ステップＳ３において、先読み対象プログラム１１５用の先読みプロファイルＰａが存在すると判定された場合、処理はステップＳ６に進む。
【００５２】
ステップＳ６において、先読み実行部１１９は、先読みプロファイルＰａに従い先読みを実行する。具体的には、先読み実行制御部１１７は、先読み実行部１１９に先読みの実行を指示する。先読み実行部１１９は、先読みプロファイルＰａにより示される位置およびサイズのデータを順にデータ入出力部１１３に要求する。
【００５３】
データ入出力部１１３は、要求されたデータの読み出しをデバイスドライバ１１２に要求する。デバイスドライバ１１２は、データ入出力部１１３からの要求に従って、不揮発記憶装置１１１からデータを読み出し、データ入出力部１１３に供給する。データ入出力部１１３は、取得したデータをバッファ１１４に記憶させる。
【００５４】
その後、先読み処理は終了する。
【００５５】
なお、先読みブロックサイズは、例えば、デバイスドライバ１１２の不揮発記憶装置１１１に対するアクセス単位であるストレージブロックを基準とするサイズに設定される。換言すれば、先読みブロックサイズは、例えば、ストレージブロックと同じサイズ、または、ストレージブロックの整数倍のサイズに設定される。これにより、先読みプロファイルＰａのデータの読み出し位置およびサイズを、ストレージブロック単位で示すことができる。
【００５６】
そして、ストレージブロックのサイズが、データ入出力部１１３のアクセス単位であるページサイズより大きい場合、不揮発記憶装置１１１におけるストレージブロック単位のブロックの総数は、ページ単位のブロックの総数より少なくなる。従って、先読みプロファイルＰａの読み出し位置を示すデータの情報量（アドレス長）は、ページ単位で先読みプロファイルを作成する場合と比較して小さくなる。その結果、先読みプロファイルＰａのデータサイズを小さくすることができる。これは、例えば、システムリソースが小さい組み込み機器において、特に有効である。
【００５７】
また、先読み時に、データ入出力部１１３からデバイスドライバ１１２に、ストレージブロックのサイズを基準にしてデータの読み出しが要求されるようになる。従って、デバイスドライバ１１２は、データ入出力部１１３から要求されるサイズのデータを、そのまま不揮発記憶装置１１１から読み出して、データ入出力部１１３に渡すことができる。その結果、不揮発記憶装置１１１からデータ入出力部１１３までの間のデータの入出力を効率的に行うことができ、処理の負荷を小さくしたり、高速化したりすることができる。
【００５８】
＜２．第１の実施例＞
図３は、情報処理システム１０１をブルーレイディスクレコーダに適用した場合の機能の構成例を示すブロック図である。
【００５９】
なお、図３では、ブルーレイディスクレコーダ２０１の構成要素のうち本技術に関連する部分のみ図示しており、その他の部分については図示を省略している。また、図中、図１と対応する部分には、下二桁が同じ符号を付してあり、処理が同じ部分については、その説明は繰り返しになるので適宜省略する。
【００６０】
ブルーレイディスクレコーダ２０１では、図１の情報処理システム１０１の不揮発記憶装置１１１の具体例としてフラッシュメモリ２１１が採用され、先読み対象プログラム１１５の具体例としてオペレーティングシステム２１５が採用されている。
【００６１】
ブルーレイディスクレコーダ２０１は、起動時にフラッシュメモリ２１１からオペレーティングシステム２１５を読み出し、オペレーティングシステム２１５がブルーレイディスクレコーダ２０１の起動時の各種の処理を行う。また、ブルーレイディスクレコーダ２０１は、オペレーティングシステム２１５の先読み対象部分、および、その先読み対象部分の処理に必要なデータの先読みを行う。
【００６２】
なお、オペレーティングシステム２１５の先読み対象部分は、例えば、ブルーレイディスクレコーダ２０１の起動が完了するまでに実行される部分、あるいは、ブルーレイディスクレコーダ２０１の起動中に必ず実行される部分に設定される。
【００６３】
ブロックサイズ設定部２１６は、例えば、システム設計者等が予め決めた固定値であるフラッシュメモリ２１１のブロックサイズを先読みブロックサイズに設定し、収集部２３１に通知する。
【００６４】
収集部２３１は、ブルーレイディスクレコーダ２０１の初回起動時に、フラッシュメモリ２１１のブロックサイズを基準にして、オペレーティングシステム２１５からの要求に従ってデータ入出力部２１３から発行される読み出し要求の履歴（データ要求履歴）を収集する。作成部２３２は、収集されたデータ要求履歴に基づいて、オペレーティングシステム２１５用の先読みプロファイルＰｂを作成する。
【００６５】
そして、ブルーレイディスクレコーダ２０１の２回目以降の起動時に、先読み実行部２１９は、先読みプロファイルＰｂに基づいて、フラッシュメモリ２１１からのデータの先読みを実行する。その結果、データ入出力部２１３からデバイスドライバ２１２へは、フラッシュメモリ２１１のブロックサイズ単位でデータの読み出しが要求される。従って、デバイスドライバ２１２は、データ入出力部２１３から要求されるサイズのデータを、そのままフラッシュメモリ２１１から読み出して、データ入出力部２１３に渡すことができる。
【００６６】
＜３．第２の実施例＞
図４は、情報処理システム１０１をタブレット端末に適用した場合の機能の構成例を示すブロック図である。
【００６７】
なお、図４では、タブレット端末３０１の構成要素のうち本技術に関連する部分のみ図示しており、その他の部分については図示を省略している。また、図中、図１と対応する部分には、下二桁が同じ符号を付してあり、処理が同じ部分については、その説明は繰り返しになるので適宜省略する。
【００６８】
タブレット端末３０１では、図１の情報処理システム１０１の不揮発記憶装置１１１の具体例として外付けのメモリカード３１１が採用され、先読み対象プログラム１１５の具体例としてアプリケーションプログラム３１５が採用されている。
【００６９】
タブレット端末３０１は、メモリカード３１１に保存されているアプリケーションプログラム３１５を実行することにより、所定の機能を実現する。また、タブレット端末３０１は、アプリケーションプログラム３１５の先読み対象部分、および、その先読み対象部分の処理に必要なデータの先読みを行う。
【００７０】
なお、アプリケーションプログラム３１５の先読み対象部分は、例えば、ユーザ操作や処理の内容等に関わらず、アプリケーションプログラム３１５を実行する場合に必ず実行される部分に設定される。
【００７１】
ブロックサイズ設定部３１６は、タブレット端末３０１にメモリカード３１１が装着されると、デバイスドライバ３１２から供給される情報に基づいて、メモリカード３１１のフォーマットを解析する。ブロックサイズ設定部３１６は、解析結果に基づいて、メモリカード３１１へのアクセスに最適なブロックサイズを求める。そして、ブロックサイズ設定部３１６は、求めたブロックサイズを先読みブロックサイズに設定し、収集部３３１に通知する。
【００７２】
収集部３３１は、アプリケーションプログラム３１５の初回起動時に、メモリカード３１１の最適なブロックサイズを基準にして、アプリケーションプログラム３１５からの要求に従ってデータ入出力部３１３から発行される読み出し要求の履歴（データ要求履歴）を収集する。作成部３３２は、収集されたデータ要求履歴に基づいて、アプリケーションプログラム３１５用の先読みプロファイルＰｃを作成する。
【００７３】
そして、アプリケーションプログラム３１５の２回目以降の起動時に、先読み実行部３１９は、先読みプロファイルＰｃに基づいて、メモリカード３１１からのデータの先読みを実行する。その結果、データ入出力部３１３からデバイスドライバ３１２へは、メモリカード３１１の最適なブロックサイズ単位でデータの読み出しが要求される。従って、デバイスドライバ３１２は、データ入出力部３１３から要求されるサイズのデータを、そのままメモリカード３１１から読み出して、データ入出力部３１３に渡すことができる。
【００７４】
＜４．第１の変形例＞
次に、図５および図６を参照して、図１の情報処理システム１０１の第１の変形例について説明する。
【００７５】
［情報処理システム４０１の構成例］
図５は、情報処理システム１０１の第１の変形例である情報処理システム４０１の構成例を示すブロック図である。
【００７６】
なお、図中、図１と対応する部分には、下二桁が同じ符号を付してあり、処理が同じ部分については、その説明は繰り返しになるので適宜省略する。
【００７７】
情報処理システム４０１は、情報処理システム１０１と比較して、起動プログラム予測部４２０が追加されている点が異なる。
【００７８】
起動プログラム予測部４２０は、情報処理システム１０１において実行されるプログラムのうち、次に起動する可能性が高いプログラムを予測し、予測結果を先読み実行制御部４１７に通知する。
【００７９】
先読み実行制御部４１７は、次に起動する可能性が高いと予測されたプログラムを先読み対象プログラム４１５に設定する。そして、先読み実行制御部４１７は、先読み対象プログラム４１５に対する先読みを実行するか、あるいは、先読み対象プログラム４１５用の先読みプロファイルＰｄの作成を行うかを判断する。そして、先読み実行制御部４１７は、先読みを実行すると判断した場合、先読み実行部４１９に先読みの実行を指示する。一方、先読み実行制御部４１７は、先読みプロファイルＰｄの作成を行うと判断した場合、収集部４３１に先読みプロファイルＰｄの作成を指示する。
【００８０】
［情報処理システム４０１の先読み処理］
次に、図６のフローチャートを参照して、情報処理システム４０１により実行される先読み処理を説明する。
【００８１】
ステップＳ１０１において、図２のステップＳ１の処理と同様に、先読みに用いるブロックサイズが設定される。
【００８２】
ステップＳ１０２において、起動プログラム予測部４２０は、次に起動しそうなプログラムを予測する。そして、起動プログラム予測部４２０は、予測結果を先読み実行制御部４１７に通知する。これにより先読み実行制御部４１７が起動する。
【００８３】
ステップＳ１０３において、先読み実行制御部４１７は、起動が予測されたプログラム用の先読みプロファイルＰｄが存在するか否かを判定する。起動が予測されたプログラム（すなわち、先読み対象プログラム４１５）用の先読みプロファイルＰｄが存在しないと判定された場合、処理はステップＳ１０４に進む。
【００８４】
ステップＳ１０４において、先読み実行制御部４１７は、先読み対象プログラム４１５の起動を待つ。そして、先読み実行制御部４１７が先読み対象プログラム４１５の起動を検知したとき、処理はステップＳ１０５に進む。
【００８５】
ステップＳ１０５において、図２のステップＳ４の処理と同様に、先読み対象プログラム４１５の不揮発記憶装置４１１へのデータ要求の履歴が収集される。
【００８６】
ステップＳ１０６において、図２のステップＳ５の処理と同様に、データ要求履歴が集約され、先読み対象プログラム４１５用の先読みプロファイルＰｄが作成される。
【００８７】
そして、先読みプロファイルＰｄが作成された後、処理は終了する。
【００８８】
一方、ステップＳ１０３において、起動が予測されたプログラム（先読み対象プログラム５１５）用の先読みプロファイルＰｄが存在すると判定された場合、処理はステップＳ１０７に進む
【００８９】
ステップＳ１０７において、図２のステップＳ６の処理と同様に、先読みプロファイルＰｄに従い先読みが実行される。
【００９０】
ステップＳ１０８において、先読み対象プログラム４１５が起動する。このとき、すでに先読み対象プログラム４１５に対する先読みが実行されているため、先読み対象プログラム４１５の実行に係るデータを高速に取得することができる。
【００９１】
その後、先読み処理は終了する。
【００９２】
＜５．第２の変形例＞
次に、図７および図８を参照して、図１の情報処理システム１０１の第２の変形例について説明する。
【００９３】
［情報処理システム５０１の構成例］
図７は、情報処理システム１０１の第２の変形例である情報処理システム５０１の構成例を示すブロック図である。
【００９４】
なお、図中、図１と対応する部分には、下二桁が同じ符号を付してあり、処理が同じ部分については、その説明は繰り返しになるので適宜省略する。
【００９５】
情報処理システム５０１は、情報処理システム１０１と比較して、使用メモリ量監視部５２０が追加されている点が異なる。
【００９６】
使用メモリ量監視部５２０は、バッファ５１４が確保される記憶装置の使用量（以下、メモリ使用量とも称する）を監視し、その結果を先読み実行部５１９や作成部５３２に通知する。
【００９７】
作成部５３２は、後述するように、収集部５３１が収集したデータ要求履歴に加えて、使用メモリ量監視部５２０によるメモリ使用量の監視結果に基づいて、先読み対象プログラム５１５用の先読みプロファイルＰｅを作成する。
【００９８】
先読み実行部５１９は、必要に応じて、使用メモリ量監視部５２０から通知されるメモリ使用量に基づいて、データの先読みを実行または中断する。
【００９９】
［情報処理システム５０１の先読み処理］
次に、図８のフローチャートを参照して、情報処理システム５０１により実行される先読み処理を説明する。
【０１００】
ステップＳ２０１において、図２のステップＳ１の処理と同様に、先読みに用いるブロックサイズが設定される。
【０１０１】
ステップＳ２０２において、図２のステップＳ２の処理と同様に、先読み対象プログラム５１５が起動する。
【０１０２】
ステップＳ２０３において、図２のステップＳ３の処理と同様に、先読み対象プログラム５１５用の先読みプロファイルＰｅが存在するか否かが判定され、存在しないと判定された場合、処理はステップＳ２０４に進む。
【０１０３】
ステップＳ２０４において、図２のステップＳ４の処理と同様に、先読み対象プログラム５１５の不揮発記憶装置５１１へのデータ要求の履歴が収集される。
【０１０４】
ステップＳ２０５において、使用メモリ量監視部５２０は、メモリ使用量が閾値を超えた期間を記録する。
【０１０５】
ステップＳ２０６において、作成部５３２は、データ要求履歴とメモリ使用量を集約し、先読みプロファイルＰｅを作成する。具体的には、作成部５３２は、データ要求履歴を収集部５３１から取得し、メモリ使用量が閾値を超えた期間を示す情報を使用メモリ量監視部５２０から取得する。作成部５３２は、メモリ使用量が閾値を超えた期間がある場合、取得したデータ要求履歴から該当する期間の履歴を削除し、その前後でデータ要求履歴を分割する。
【０１０６】
そして、作成部５３２は、データ要求履歴に基づいて、図２のステップＳ５と同様の処理により、先読み対象プログラム５１５用の先読みプロファイルＰｅを作成する。従って、メモリ使用量が閾値を超えた期間が存在する場合、その期間にデータ入出力部５１３から発行された読み出し要求を除いて、先読みプロファイルＰｅが作成される。また、この場合、複数の先読みプロファイルＰｅが作成されることがある。
【０１０７】
そして、先読みプロファイルＰｅが作成された後、処理は終了する。
【０１０８】
一方、ステップＳ２０３において、先読み対象プログラム１１５用の先読みプロファイルＰｅが存在すると判定された場合、処理はステップＳ２０７に進む。
【０１０９】
ステップＳ２０７において、図２のステップＳ６の処理と同様に、先読みプロファイルＰｅに従い先読みが実行される。
【０１１０】
このとき、メモリ使用量が閾値を超える期間については、先読みプロファイルＰｅが生成されていないため、メモリ使用量が閾値を超える前に先読みが中断する。そして、メモリ使用量が再び閾値以下になった後の期間の先読みプロファイルＰｅが存在する場合、例えば、その先読みプロファイルＰｅに時刻や、読み出し要求の時間間隔等の時間情報が含まれていれば、その時間情報に基づいて、先読みが再開される。あるいは、使用メモリ量監視部５２０から通知されるメモリ使用量が閾値より小さい所定の値以下になったときに、先読みを再開するようにしてもよい。
【０１１１】
これにより、先読み処理によりメモリ使用量が閾値を超え、バッファ５１４が確保されている記憶装置のメモリ領域の回収が発生することが防止される。その結果、例えば、先読み対象プログラム５１５がまだ参照していないデータが、後から先読みされたデータにより上書きされてしまうことが防止される。
【０１１２】
一方、メモリ使用量が閾値以下となる期間においては、バッファ５１４にデータが先読みされるため、データを高速に取得することができる。
【０１１３】
その後、先読み処理は終了する。
【０１１４】
＜６．その他の変形例＞
以下、上述した本技術の実施の形態の変形例以外の変形例について説明する。
【０１１５】
［変形例１］
以上の説明では、ブロックサイズを変換してデータ要求履歴を収集する例を示したが、ブロックサイズを変換するタイミングは、この例に限定されるものではない。例えば、ブロックサイズを変換せずにデータ要求履歴を収集し、読み出しプロファイルの作成時にブロックサイズを変換するようにしてもよい。
【０１１６】
［変形例２］
また、本技術は、例えば、デバイスドライバとデータ入出力部の間に他のメモリ管理機構が存在する場合にも適用することができる。すなわち、データ入出力部が、そのメモリ管理機構を介して、デバイスドライバにアクセスする場合にも適用することができる。
【０１１７】
［変形例３］
さらに、上述した第２の変形例において、データ要求履歴において、例えば、メモリ使用量が閾値を超えた期間の履歴を削除せずに、当該期間を示す所定の情報を付与するようにしてもよい。そして、当該期間を除いて先読みプロファイルＰｅを作成するようにしてもよいし、全ての期間の先読みプロファイルを作成し、当該期間を示す所定の情報を先読みプロファイルに付加するようにしてもよい。
【０１１８】
あるいは、先読みプロファイルＰｅの作成時には、メモリ使用量を監視せずに、先読みの実行時に、メモリ使用量に基づいて、先読みの実行および中断を制御するようにしてもよい。例えば、使用メモリ量監視部５２０から通知されるメモリ使用量が閾値以上になったときに、先読みを中断し、メモリ使用量が閾値より小さい所定の値以下になったときに、先読みを再開するようにしてもよい。
【０１１９】
［変形例４］
また、各実施の形態及び変形例において、先読み実行部がバッファのデータを監視し、先読みプロファイルに示される位置およびサイズのデータが既にバッファに格納されている場合、そのデータをデータ入出力部１１３に要求しないようにしてもよい。これにより、無駄なデータの読み出し要求を削減することができる。
【０１２０】
［コンピュータの構成例］
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどが含まれる。
【０１２１】
図９は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
【０１２２】
コンピュータにおいて、CPU（Central Processing Unit）７０１，ROM（Read Only Memory）７０２，RAM（Random Access Memory）７０３は、バス７０４により相互に接続されている。
【０１２３】
バス７０４には、さらに、入出力インタフェース７０５が接続されている。入出力インタフェース７０５には、入力部７０６、出力部７０７、記憶部７０８、通信部７０９、及びドライブ７１０が接続されている。
【０１２４】
入力部７０６は、キーボード、マウス、マイクロフォンなどよりなる。出力部７０７は、ディスプレイ、スピーカなどよりなる。記憶部７０８は、ハードディスクや不揮発性のメモリなどよりなる。通信部７０９は、ネットワークインタフェースなどよりなる。ドライブ７１０は、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどのリムーバブルメディア７１１を駆動する。
【０１２５】
以上のように構成されるコンピュータでは、CPU７０１が、例えば、記憶部７０８に記憶されているプログラムを、入出力インタフェース７０５及びバス７０４を介して、RAM７０３にロードして実行することにより、上述した一連の処理が行われる。
【０１２６】
コンピュータ（CPU７０１）が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア７１１に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。
【０１２７】
コンピュータでは、プログラムは、リムーバブルメディア７１１をドライブ７１０に装着することにより、入出力インタフェース７０５を介して、記憶部７０８にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部７０９で受信し、記憶部７０８にインストールすることができる。その他、プログラムは、ROM７０２や記憶部７０８に、あらかじめインストールしておくことができる。
【０１２８】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０１２９】
また、本明細書において、システムの用語は、複数の装置、手段などより構成される全体的な装置を意味するものとする。
【０１３０】
さらに、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
【０１３１】
また、例えば、本技術は以下のような構成も取ることができる。
【０１３２】
（１）
第１のサイズのブロック単位で第１の記憶媒体からのデータの読み出しを要求し、前記第１の記憶媒体から読み出されたデータを第２の記憶媒体に記憶させるデータ入出力部と、
対象となるプログラムからの要求に従って前記データ入出力部により発行される前記第１の記憶媒体からのデータの読み出し要求の履歴を、第２のサイズのブロック単位の読み出し位置およびサイズに変換したデータである先読みデータを作成するデータ作成部と、
前記先読みデータに基づいて、前記第１の記憶媒体から前記第２の記憶媒体への前記プログラムのデータの先読みを前記データ入出力部に要求する先読み実行部と
を含むメモリ管理装置。
（２）
前記第２のサイズは、前記第１の記憶媒体からデータの読み出しが可能な最小単位を基準とするサイズである
前記（１）に記載のメモリ管理装置。
（３）
前記データ入出力部は、前記第２のサイズのブロック単位で前記第１の記憶媒体のデータにアクセスするアクセス部に、前記第１の記憶媒体からのデータの読み出しを要求する
前記（２）に記載のメモリ管理装置。
（４）
前記第１の記憶媒体のフォーマットに基づいて、前記第２のサイズを設定する設定部を
さらに含む前記（１）に記載のメモリ管理装置。
（５）
前記第２の記憶媒体の使用量を監視する監視部をさらに含み、
前記データ作成部は、前記第２の記憶媒体の使用量が所定の閾値を超える期間に、前記プログラムからの要求に従って前記データ入出力部から発行される前記読み出し要求を除いて、前記先読みデータを作成する
前記（１）乃至（４）のいずれかに記載のメモリ管理装置。
（６）
前記第２の記憶媒体の使用量を監視する監視部をさらに含み、
前記先読み実行部は、前記第２の記憶媒体の使用量に基づいて、先読みを実行または中断する
前記（１）乃至（４）のいずれかに記載のメモリ管理装置。
（７）
前記プログラムを実行する場合に、前記プログラム用の前記先読みデータが存在しないとき、前記データ作成部に前記先読みデータの作成を指示し、前記プログラム用の前記先読みデータが存在するとき、前記先読み実行部に前記プログラムのデータの先読みを指示する実行制御部を
さらに含む前記（１）乃至（６）のいずれかに記載のメモリ管理装置。
（８）
次に実行されるプログラムを予測する予測部をさらに含み、
前記実行制御部は、前記予測されたプログラム用の前記先読みデータが存在しないとき、前記データ作成部に前記先読みデータの作成を指示し、前記予測されたプログラム用の前記先読みデータが存在するとき、前記先読み実行部に前記予測されたプログラムのデータの先読みを指示する
前記（７）に記載のメモリ管理装置。
（９）
第１のサイズのブロック単位で第１の記憶媒体からのデータの読み出しを要求し、前記第１の記憶媒体から読み出されたデータを第２の記憶媒体に記憶させるデータ入出力部を備えるメモリ管理装置が、
対象となるプログラムからの要求に従って前記データ入出力部により発行される前記第１の記憶媒体からのデータの読み出し要求の履歴を、第２のサイズのブロック単位の読み出し位置およびサイズに変換したデータである先読みデータを作成し、
前記先読みデータに基づいて、前記第１の記憶媒体から前記第２の記憶媒体への前記プログラムのデータの先読みを前記データ入出力部に要求する
ステップを含むメモリ管理方法。
（１０）
第１のサイズのブロック単位で第１の記憶媒体からのデータの読み出しを要求し、前記第１の記憶媒体から読み出されたデータを第２の記憶媒体に記憶させるデータ入出力部により対象となるプログラムからの要求に従って発行される前記第１の記憶媒体からのデータの読み出し要求の履歴を、第２のサイズのブロック単位の読み出し位置およびサイズに変換したデータである先読みデータを作成し、
前記先読みデータに基づいて、前記第１の記憶媒体から前記第２の記憶媒体への前記プログラムのデータの先読みを前記データ入出力部に要求する
ステップを含む処理をコンピュータに実行させるための制御プログラム。
（１１）
前記（１０）に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【符号の説明】
【０１３３】
１０１  情報処理システム，  １１１  不揮発記憶装置，  １１２  デバイスドライバ，  １１３  データ入出力部，  １１４  バッファ，  １１５  先読み対象プログラム，  １１６  ブロックサイズ設定部，  １１７  先読み実行制御部,  １１８  プロファイル作成部，  １１９  先読み実行部，  １３１  収集部,  １３２  作成部,  ２０１  ブルーレイディスクレコーダ，  ２１１  フラッシュメモリ，  ２１２  デバイスドライバ，  ２１３  データ入出力部，  ２１４  バッファ，  ２１５  オペレーティングシステム，  ２１６  ブロックサイズ設定部，  ２１７  先読み実行制御部，  ２１８  プロファイル作成部，  ２１９  先読み実行部，  ２３１  収集部,  ２３２  作成部,  ３０１  タブレット端末，  ３１１  メモリカード，  ３１２  デバイスドライバ，  ３１３  データ入出力部，  ３１４  バッファ，  ３１５  アプリケーションプログラム，  ３１６  ブロックサイズ設定部，  ３１７  先読み実行制御部，  ３１８  プロファイル作成部，  ３１９  先読み実行部,  ３３１  収集部,  ３３２  作成部,  ４０１  情報処理システム，  ４１１  不揮発記憶装置，  ４１２  デバイスドライバ，  ４１３  データ入出力部，  ４１４  バッファ，  ４１５  先読み対象プログラム，  ４１６  ブロックサイズ設定部，  ４１７  先読み実行制御部，  ４１８  プロファイル作成部，  ４１９  先読み実行部，  ４２０  起動プログラム予測部，  ４３１  収集部,  ４３２  作成部,  ５０１  情報処理システム，  ５１１  不揮発記憶装置，  ５１２  デバイスドライバ，  ５１３  データ入出力部，  ５１４  バッファ，  ５１５  先読み対象プログラム，  ５１６  ブロックサイズ設定部，  ５１７  先読み実行制御部，  ５１８  プロファイル作成部，  ５１９  先読み実行部，  ５２０  使用メモリ量監視部，  ５３１  収集部,  ５３２  作成部,  Ｐａ乃至Ｐｅ  先読みプロファイル
【図１】
2013008094.tif 000003
【図２】
2013008094.tif 000004
【図３】
2013008094.tif 000005
【図４】
2013008094.tif 000006
【図５】
2013008094.tif 000007
【図６】
2013008094.tif 000008
【図７】
2013008094.tif 000009
【図８】
2013008094.tif 000010
【図９】
2013008094.tif 000011