説明

メモリ管理装置、メモリ管理方法、制御プログラム、および、記録媒体

【課題】適切なブロックサイズでデータの先読みを行う。
【解決手段】データ入出力部は、ページ単位で不揮発記憶装置からのデータの読み出しを要求し、読み出されたデータをバッファに記憶させる。プロファイル作成部は、先読み対象プログラムからの要求に従ってデータ入出力部により発行される不揮発記憶装置からのデータの読み出し要求の履歴を、先読みブロックサイズのブロック単位の読み出し位置およびサイズに変換した先読みプロファイルを作成する。先読み実行部は、先読みプロファイルに基づいて、不揮発記憶装置からバッファへの先読み対象プログラムのデータの先読みをデータ入出力部に要求する。本技術は、例えばメモリ管理装置に適用できる。

【発明の詳細な説明】
【技術分野】
【0001】
本技術は、メモリ管理装置、メモリ管理方法、制御プログラム、および、記録媒体に関し、特に、先読み処理を行う場合に用いて好適なメモリ管理装置、メモリ管理方法、制御プログラム、および、記録媒体に関する。
【背景技術】
【0002】
従来、プログラムがハードディスクなどの不揮発記憶装置へアクセスした履歴を用いて、次回のプログラム実行時に、不揮発記憶装置のデータを先読み(プリフェッチ)するシステムが提案されている(例えば、特許文献1参照)。
【0003】
このシステムでは、プログラム実行時に、不揮発記憶装置に対するデータの読み出し要求が記録され、記録した履歴に基づいて先読み方法が決定される。そして、次回以降のプログラムの実行時に、決定した先読み方法に基づいて、不揮発記憶装置からのデータの先読みが実行される。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2006−260067号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、特許文献1に記載のシステムでは、データの先読みを行う際のブロックサイズの適正化については特に考慮されていないため、必ずしも効率的にデータの先読みが行われるとは限らない。
【0006】
本技術は、適切なブロックサイズでデータの先読みを行うことができるようにするものである。
【課題を解決するための手段】
【0007】
本技術の一側面のメモリ管理装置は、第1のサイズのブロック単位で第1の記憶媒体からのデータの読み出しを要求し、前記第1の記憶媒体から読み出されたデータを第2の記憶媒体に記憶させるデータ入出力部と、対象となるプログラムからの要求に従って前記データ入出力部により発行される前記第1の記憶媒体からのデータの読み出し要求の履歴を、第2のサイズのブロック単位の読み出し位置およびサイズに変換したデータである先読みデータを作成するデータ作成部と、前記先読みデータに基づいて、前記第1の記憶媒体から前記第2の記憶媒体への前記プログラムのデータの先読みを前記データ入出力部に要求する先読み実行部とを含む。
【0008】
前記第2のサイズを、前記第1の記憶媒体からデータの読み出しが可能な最小単位を基準とするサイズにすることができる。
【0009】
前記データ入出力部には、前記第2のサイズのブロック単位で前記第1の記憶媒体のデータにアクセスするアクセス部に、前記第1の記憶媒体からのデータの読み出しを要求させることができる。
【0010】
前記第1の記憶媒体のフォーマットに基づいて、前記第2のサイズを設定する設定部をさらに設けることができる。
【0011】
前記第2の記憶媒体の使用量を監視する監視部をさらに設け、前記データ作成部には、前記第2の記憶媒体の使用量が所定の閾値を超えた期間に、前記プログラムからの要求に従って前記データ入出力部から発行される前記読み出し要求を除いて、前記先読みデータを作成させることができる。
【0012】
前記第2の記憶媒体の使用量を監視する監視部をさらに設け、前記先読み実行部には、前記第2の記憶媒体の使用量に基づいて、先読みを実行または中断させることができる。
【0013】
前記プログラムを実行する場合に、前記プログラム用の前記先読みデータが存在しないとき、前記データ作成部に前記先読みデータの作成を指示し、前記プログラム用の前記先読みデータが存在するとき、前記先読み実行部に前記プログラムのデータの先読みを指示する実行制御部をさらに設けることができる。
【0014】
次に実行されるプログラムを予測する予測部をさらに設け、前記実行制御部には、前記予測されたプログラム用の前記先読みデータが存在しないとき、前記データ作成部に前記先読みデータの作成を指示し、前記予測されたプログラム用の前記先読みデータが存在するとき、前記先読み実行部に前記予測されたプログラムのデータの先読みを指示させることができる。
【0015】
本技術の一側面のメモリ管理方法は、第1のサイズのブロック単位で第1の記憶媒体からのデータの読み出しを要求し、前記第1の記憶媒体から読み出されたデータを第2の記憶媒体に記憶させるデータ入出力部を備えるメモリ管理装置が、対象となるプログラムからの要求に従って前記データ入出力部により発行される前記第1の記憶媒体からのデータの読み出し要求の履歴を、第2のサイズのブロック単位の読み出し位置およびサイズに変換したデータである先読みデータを作成し、前記先読みデータに基づいて、前記第1の記憶媒体から前記第2の記憶媒体への前記プログラムのデータの先読みを前記データ入出力部に要求するステップを含む。
【0016】
本技術の一側面の制御プログラムまたは記録媒体に記録されている制御プログラムは、第1のサイズのブロック単位で第1の記憶媒体からのデータの読み出しを要求し、前記第1の記憶媒体から読み出されたデータを第2の記憶媒体に記憶させるデータ入出力部により対象となるプログラムからの要求に従って発行される前記第1の記憶媒体からのデータの読み出し要求の履歴を、第2のサイズのブロック単位の読み出し位置およびサイズに変換したデータである先読みデータを作成し、前記先読みデータに基づいて、前記第1の記憶媒体から前記第2の記憶媒体への前記プログラムのデータの先読みを前記データ入出力部に要求するステップを含む処理をコンピュータに実行させる。
【0017】
本技術の一側面においては、第1のサイズのブロック単位で第1の記憶媒体からのデータの読み出しを要求し、前記第1の記憶媒体から読み出されたデータを第2の記憶媒体に記憶させるデータ入出力部により対象となるプログラムからの要求に従って発行される前記第1の記憶媒体からのデータの読み出し要求の履歴を、第2のサイズのブロック単位の読み出し位置およびサイズに変換したデータである先読みデータが作成され、前記先読みデータに基づいて、前記第1の記憶媒体から前記第2の記憶媒体への前記プログラムのデータの先読みが前記データ入出力部に要求される。
【発明の効果】
【0018】
本技術の一側面によれば、適切なブロックサイズでデータの先読みを行うことができる。
【図面の簡単な説明】
【0019】
【図1】本技術を適用した情報処理システムの一実施の形態を示すブロック図である。
【図2】図1の情報処理システムにより実行される先読み処理を説明するためのフローチャートである。
【図3】本技術をブルーレイディスクレコーダに適用した場合の機能の構成例を示すブロック図である。
【図4】本技術をタブレット端末に適用した場合の機能の構成例を示すブロック図である。
【図5】本技術を適用した情報処理システムの第1の変形例を示すブロック図である。
【図6】図5の情報処理システムにより実行される先読み処理を説明するためのフローチャートである。
【図7】本技術を適用した情報処理システムの第2の変形例を示すブロック図である。
【図8】図7の情報処理システムにより実行される先読み処理を説明するためのフローチャートである。
【図9】コンピュータの構成例を示すブロック図である。
【発明を実施するための形態】
【0020】
以下、本技術を実施するための形態(以下、実施の形態という)について説明する。なお、説明は以下の順序で行う。
1.本技術の実施の形態の基本的な構成
2.第1の具体的な実施例(ブルーレイディスクレコーダに適用した例)
3.第2の具体的な実施例(タブレット端末に適用した例)
4.第1の変形例(プログラムの起動予測を行い、先読みを実施する例)
5.第2の変形例(メモリ使用量を監視しながら、先読みを実施する例)
6.その他の変形例
【0021】
<1.実施の形態の基本的な構成>
まず、図1および図2を参照して、本技術の実施の形態の基本的な構成について説明する。
【0022】
[情報処理システム101の構成例]
図1は、本技術を適用した情報処理システム101の機能の構成例を示すブロック図である。
【0023】
情報処理システム101は、不揮発記憶装置111、デバイスドライバ112、データ入出力部113、バッファ114、先読み対象プログラム115、ブロックサイズ設定部116、先読み実行制御部117、プロファイル作成部118、および、先読み実行部119を含むように構成される。また、プロファイル作成部118は、収集部131および作成部132を含むように構成される。
【0024】
なお、データ入出力部113、ブロックサイズ設定部116、先読み実行制御部117、プロファイル作成部118、および、先読み実行部119は、例えば、情報処理システム101で実行されるオペレーティングシステムにより実現される。
【0025】
また、情報処理システム1では、後述するように、先読み対象プログラム115の実行前に、先読み対象プログラム115の実行に必要なデータの少なくとも一部を不揮発記憶装置111から読み出し、バッファ114に記憶する先読みが行われる。ここで、先読み対象となるデータには、先読み対象プログラムの処理に用いるデータだけでなく、先読み対象プログラム115自身も含まれる。
【0026】
不揮発記憶装置111は、実行可能形式のプログラムやファイルなどの、永続的データを記憶する。
【0027】
デバイスドライバ112は、データ入出力部113からの要求に従って、所定のサイズ(例えば、128キロバイト)のブロックであるストレージブロック単位で、不揮発記憶装置111にアクセスする。すなわち、デバイスドライバ112は、ストレージブロック単位で、不揮発記憶装置111からデータを読み出したり、不揮発記憶装置111にデータを書き込んだりする。そして、デバイスドライバ112は、不揮発記憶装置111から読み出したデータをデータ入出力部113に渡す。
【0028】
なお、ストレージブロックのサイズは、例えば、不揮発記憶装置111のデータにアクセス可能なサイズの最小単位に設定される。
【0029】
データ入出力部113は、デマンドページング方式により、メモリ管理を行う。従って、データ入出力部113は、先読み対象プログラム115などからの要求に従って、所定のサイズ(例えば、4キロバイト)のブロックであるページ単位で、デバイスドライバ112に不揮発記憶装置111へのアクセスを要求する。すなわち、データ入出力部113は、不揮発記憶装置111からのデータの読み出し、および、不揮発記憶装置111へのデータの書き込みをページ単位でデバイスドライバ112に要求する。そして、データ入出力部113は、デバイスドライバ112により不揮発記憶装置111から読み出されたデータを要求元に渡す。
【0030】
また、データ入出力部113は、処理の高速化のため、不揮発記憶装置111から読み出されたデータをバッファ114に記憶させ、次に同じデータの読み出しが要求された場合、バッファ114に記憶されているデータを読み出し、要求元に渡す。
【0031】
さらに、データ入出力部113は、先読み実行部119からの要求に従って、データの先読みを行う。すなわち、データ入出力部113は、先読み実行部119からの要求に従って、デバイスドライバ112に不揮発記憶装置111からのデータの読み出しを要求し、デバイスドライバ112により不揮発記憶装置111から読み出されたデータをバッファ114に記憶させる。
【0032】
バッファ114は、不揮発記憶装置111に記憶されているデータのうちアクセスのあったもの、または、先読みされたものを一時的に保存する領域であり、不揮発記憶装置111よりも高速にアクセス可能な記憶装置上に確保される。バッファ114は、例えば、オペレーティングシステムが管理するメインメモリ上のページキャッシュに相当する。
【0033】
先読み対象プログラム115は、情報処理システム101の主機能を実現するためのプログラムである。
【0034】
ブロックサイズ設定部116は、不揮発記憶装置111からのデータの先読みを行う場合に、データ入出力部113がデバイスドライバ112にデータの読み出しを要求する単位となるブロックサイズ(以下、先読みブロックサイズと称する)を設定する。そして、ブロックサイズ設定部116は、設定した先読みブロックサイズを収集部131に通知する。
【0035】
先読み実行制御部117は、先読み対象プログラム115の実行時に、先読みを実行するか、あるいは、先読みプロファイルPaの作成を行うかを判断する。そして、先読み実行制御部117は、先読みを実行すると判断した場合、先読み実行部119に先読みの実行を指示する。一方、先読み実行制御部117は、先読みプロファイルPaの作成を行うと判断した場合、収集部131に先読みプロファイルPaの作成を指示する。
【0036】
プロファイル作成部118は、先読み実行部119に先読み手順を指示するデータであり、先読み対象となるデータの不揮発記憶装置111上の位置とサイズ、および、先読みを行う順序を含む先読みプロファイルPaを作成する。
【0037】
具体的には、プロファイル作成部118の収集部131は、後述するように、先読み対象プログラム115の不揮発記憶装置111へのデータ要求の履歴を収集し、作成部132に供給する。
【0038】
作成部132は、後述するように、収集部131が収集した履歴に基づいて、先読みプロファイルPaを作成する。
【0039】
先読み実行部119は、先読み実行制御部117からの指示に従って、データの先読みを行う。すなわち、先読み実行部119は、先読み対象プログラム115の実行前に、先読みプロファイルPaに基づいて、先読み対象プログラム115が必要とするデータをデータ入出力部113に要求する。これにより、要求されたデータが不揮発記憶装置111からバッファ114にコピーされ、先読み対象プログラム115がデータ入出力部113にデータ要求を行ったときに、バッファ114からデータが読み出されるようになる。その結果、先読み対象プログラム115は、高速にデータを取得することができる。
【0040】
[情報処理システム101の先読み処理]
次に、図2のフローチャートを参照して、情報処理システム101により実行される先読み処理を説明する。
【0041】
ステップS1において、ブロックサイズ設定部116は、先読みに用いるブロックサイズ(先読みブロックサイズ)を設定する。そして、ブロックサイズ設定部116は、設定した先読みブロックサイズを収集部131に通知する。
【0042】
ステップS2において、先読み対象プログラム115が起動する。これに伴い、先読み実行制御部117が、先読み対象プログラム115の起動を検知し、起動する。
【0043】
ステップS3において、先読み実行制御部117は、先読み対象プログラム115用の先読みプロファイルPaが存在するか否かを判定する。先読み対象プログラム115用の先読みプロファイルPaが存在しないと判定された場合、処理はステップS4に進む。
【0044】
ステップS4において、収集部131は、先読み対象プログラム115の不揮発記憶装置111へのデータ要求の履歴を収集する。具体的には、収集部131は、先読み対象プログラム115からの要求に従ってデータ入出力部113からデバイスドライバ112に発行される、不揮発記憶装置111からのデータの読み出し要求を監視する。そして、収集部131は、読み出しブロックサイズを基準にして、先読み対象プログラム115からの要求に従ってデータ入出力部113から発行される読み出し要求の履歴(以下、データ要求履歴と称する)を収集する。
【0045】
具体的には、収集部131は、データ入出力部113からページ単位で行われる読み出し要求を、読み出しブロックサイズを基準とする読み出し要求に変換する。すなわち、収集部131は、読み出し要求にページ単位で示されるデータの読み出し位置およびサイズを、読み出しブロックサイズのブロック単位の読み出し位置およびサイズに変換する。そして、収集部131は、変換後の読み出し要求を記録する。
【0046】
なお、このとき、例えば、読み出し要求が発行された時刻や、前回発行された読み出し要求との間の時間間隔等の時間情報を記録するようにしてもよい。
【0047】
従って、データ要求履歴は、先読み対象プログラム115からの要求に従ってデータ入出力部113から発行される読み出し要求の履歴を、読み出しブロックサイズのブロック単位の読み出し位置およびサイズに変換したデータとなる。すなわち、読み出し位置は、先読みブロックサイズのブロック単位でアドレッシングした位置により示され、サイズは、先読みブロックサイズのブロックの数により示される。
【0048】
ステップS5において、作成部132は、データ要求履歴を集約し、先読みプロファイルPaを作成する。具体的には、作成部132は、データ要求履歴を収集部131から取得し、データ要求履歴に記録されている読み出し要求に示されるデータの読み出し位置およびサイズを抽出する。そして、作成部132は、抽出した読み出し位置およびサイズを所定の順序(例えば、読み出し順)に並べた先読みプロファイルPaを作成する。なお、このとき、作成部132は、データを読み出す領域が隣接するものを1つにまとめたり、重複するものを削除したりする。
【0049】
なお、先読みプロファイルPaを作成する範囲、すなわち、データの先読みを行う範囲は、例えば、情報処理システム101の仕様や性能、バッファ114の容量、先読み対象プログラム115が実現する機能等に基づいて決められる。例えば、先読み対象プログラム115の起動完了時までに必要なデータ、あるいは、先読み対象プログラム115の実行時に必ず実行される処理に必要なデータ、あるいは、先読み対象プログラム115の全ての処理に必要なデータが先読み対象に設定され、先読みプロファイルPaが作成される。
【0050】
そして、先読みプロファイルPaが作成された後、処理は終了する。
【0051】
一方、ステップS3において、先読み対象プログラム115用の先読みプロファイルPaが存在すると判定された場合、処理はステップS6に進む。
【0052】
ステップS6において、先読み実行部119は、先読みプロファイルPaに従い先読みを実行する。具体的には、先読み実行制御部117は、先読み実行部119に先読みの実行を指示する。先読み実行部119は、先読みプロファイルPaにより示される位置およびサイズのデータを順にデータ入出力部113に要求する。
【0053】
データ入出力部113は、要求されたデータの読み出しをデバイスドライバ112に要求する。デバイスドライバ112は、データ入出力部113からの要求に従って、不揮発記憶装置111からデータを読み出し、データ入出力部113に供給する。データ入出力部113は、取得したデータをバッファ114に記憶させる。
【0054】
その後、先読み処理は終了する。
【0055】
なお、先読みブロックサイズは、例えば、デバイスドライバ112の不揮発記憶装置111に対するアクセス単位であるストレージブロックを基準とするサイズに設定される。換言すれば、先読みブロックサイズは、例えば、ストレージブロックと同じサイズ、または、ストレージブロックの整数倍のサイズに設定される。これにより、先読みプロファイルPaのデータの読み出し位置およびサイズを、ストレージブロック単位で示すことができる。
【0056】
そして、ストレージブロックのサイズが、データ入出力部113のアクセス単位であるページサイズより大きい場合、不揮発記憶装置111におけるストレージブロック単位のブロックの総数は、ページ単位のブロックの総数より少なくなる。従って、先読みプロファイルPaの読み出し位置を示すデータの情報量(アドレス長)は、ページ単位で先読みプロファイルを作成する場合と比較して小さくなる。その結果、先読みプロファイルPaのデータサイズを小さくすることができる。これは、例えば、システムリソースが小さい組み込み機器において、特に有効である。
【0057】
また、先読み時に、データ入出力部113からデバイスドライバ112に、ストレージブロックのサイズを基準にしてデータの読み出しが要求されるようになる。従って、デバイスドライバ112は、データ入出力部113から要求されるサイズのデータを、そのまま不揮発記憶装置111から読み出して、データ入出力部113に渡すことができる。その結果、不揮発記憶装置111からデータ入出力部113までの間のデータの入出力を効率的に行うことができ、処理の負荷を小さくしたり、高速化したりすることができる。
【0058】
<2.第1の実施例>
図3は、情報処理システム101をブルーレイディスクレコーダに適用した場合の機能の構成例を示すブロック図である。
【0059】
なお、図3では、ブルーレイディスクレコーダ201の構成要素のうち本技術に関連する部分のみ図示しており、その他の部分については図示を省略している。また、図中、図1と対応する部分には、下二桁が同じ符号を付してあり、処理が同じ部分については、その説明は繰り返しになるので適宜省略する。
【0060】
ブルーレイディスクレコーダ201では、図1の情報処理システム101の不揮発記憶装置111の具体例としてフラッシュメモリ211が採用され、先読み対象プログラム115の具体例としてオペレーティングシステム215が採用されている。
【0061】
ブルーレイディスクレコーダ201は、起動時にフラッシュメモリ211からオペレーティングシステム215を読み出し、オペレーティングシステム215がブルーレイディスクレコーダ201の起動時の各種の処理を行う。また、ブルーレイディスクレコーダ201は、オペレーティングシステム215の先読み対象部分、および、その先読み対象部分の処理に必要なデータの先読みを行う。
【0062】
なお、オペレーティングシステム215の先読み対象部分は、例えば、ブルーレイディスクレコーダ201の起動が完了するまでに実行される部分、あるいは、ブルーレイディスクレコーダ201の起動中に必ず実行される部分に設定される。
【0063】
ブロックサイズ設定部216は、例えば、システム設計者等が予め決めた固定値であるフラッシュメモリ211のブロックサイズを先読みブロックサイズに設定し、収集部231に通知する。
【0064】
収集部231は、ブルーレイディスクレコーダ201の初回起動時に、フラッシュメモリ211のブロックサイズを基準にして、オペレーティングシステム215からの要求に従ってデータ入出力部213から発行される読み出し要求の履歴(データ要求履歴)を収集する。作成部232は、収集されたデータ要求履歴に基づいて、オペレーティングシステム215用の先読みプロファイルPbを作成する。
【0065】
そして、ブルーレイディスクレコーダ201の2回目以降の起動時に、先読み実行部219は、先読みプロファイルPbに基づいて、フラッシュメモリ211からのデータの先読みを実行する。その結果、データ入出力部213からデバイスドライバ212へは、フラッシュメモリ211のブロックサイズ単位でデータの読み出しが要求される。従って、デバイスドライバ212は、データ入出力部213から要求されるサイズのデータを、そのままフラッシュメモリ211から読み出して、データ入出力部213に渡すことができる。
【0066】
<3.第2の実施例>
図4は、情報処理システム101をタブレット端末に適用した場合の機能の構成例を示すブロック図である。
【0067】
なお、図4では、タブレット端末301の構成要素のうち本技術に関連する部分のみ図示しており、その他の部分については図示を省略している。また、図中、図1と対応する部分には、下二桁が同じ符号を付してあり、処理が同じ部分については、その説明は繰り返しになるので適宜省略する。
【0068】
タブレット端末301では、図1の情報処理システム101の不揮発記憶装置111の具体例として外付けのメモリカード311が採用され、先読み対象プログラム115の具体例としてアプリケーションプログラム315が採用されている。
【0069】
タブレット端末301は、メモリカード311に保存されているアプリケーションプログラム315を実行することにより、所定の機能を実現する。また、タブレット端末301は、アプリケーションプログラム315の先読み対象部分、および、その先読み対象部分の処理に必要なデータの先読みを行う。
【0070】
なお、アプリケーションプログラム315の先読み対象部分は、例えば、ユーザ操作や処理の内容等に関わらず、アプリケーションプログラム315を実行する場合に必ず実行される部分に設定される。
【0071】
ブロックサイズ設定部316は、タブレット端末301にメモリカード311が装着されると、デバイスドライバ312から供給される情報に基づいて、メモリカード311のフォーマットを解析する。ブロックサイズ設定部316は、解析結果に基づいて、メモリカード311へのアクセスに最適なブロックサイズを求める。そして、ブロックサイズ設定部316は、求めたブロックサイズを先読みブロックサイズに設定し、収集部331に通知する。
【0072】
収集部331は、アプリケーションプログラム315の初回起動時に、メモリカード311の最適なブロックサイズを基準にして、アプリケーションプログラム315からの要求に従ってデータ入出力部313から発行される読み出し要求の履歴(データ要求履歴)を収集する。作成部332は、収集されたデータ要求履歴に基づいて、アプリケーションプログラム315用の先読みプロファイルPcを作成する。
【0073】
そして、アプリケーションプログラム315の2回目以降の起動時に、先読み実行部319は、先読みプロファイルPcに基づいて、メモリカード311からのデータの先読みを実行する。その結果、データ入出力部313からデバイスドライバ312へは、メモリカード311の最適なブロックサイズ単位でデータの読み出しが要求される。従って、デバイスドライバ312は、データ入出力部313から要求されるサイズのデータを、そのままメモリカード311から読み出して、データ入出力部313に渡すことができる。
【0074】
<4.第1の変形例>
次に、図5および図6を参照して、図1の情報処理システム101の第1の変形例について説明する。
【0075】
[情報処理システム401の構成例]
図5は、情報処理システム101の第1の変形例である情報処理システム401の構成例を示すブロック図である。
【0076】
なお、図中、図1と対応する部分には、下二桁が同じ符号を付してあり、処理が同じ部分については、その説明は繰り返しになるので適宜省略する。
【0077】
情報処理システム401は、情報処理システム101と比較して、起動プログラム予測部420が追加されている点が異なる。
【0078】
起動プログラム予測部420は、情報処理システム101において実行されるプログラムのうち、次に起動する可能性が高いプログラムを予測し、予測結果を先読み実行制御部417に通知する。
【0079】
先読み実行制御部417は、次に起動する可能性が高いと予測されたプログラムを先読み対象プログラム415に設定する。そして、先読み実行制御部417は、先読み対象プログラム415に対する先読みを実行するか、あるいは、先読み対象プログラム415用の先読みプロファイルPdの作成を行うかを判断する。そして、先読み実行制御部417は、先読みを実行すると判断した場合、先読み実行部419に先読みの実行を指示する。一方、先読み実行制御部417は、先読みプロファイルPdの作成を行うと判断した場合、収集部431に先読みプロファイルPdの作成を指示する。
【0080】
[情報処理システム401の先読み処理]
次に、図6のフローチャートを参照して、情報処理システム401により実行される先読み処理を説明する。
【0081】
ステップS101において、図2のステップS1の処理と同様に、先読みに用いるブロックサイズが設定される。
【0082】
ステップS102において、起動プログラム予測部420は、次に起動しそうなプログラムを予測する。そして、起動プログラム予測部420は、予測結果を先読み実行制御部417に通知する。これにより先読み実行制御部417が起動する。
【0083】
ステップS103において、先読み実行制御部417は、起動が予測されたプログラム用の先読みプロファイルPdが存在するか否かを判定する。起動が予測されたプログラム(すなわち、先読み対象プログラム415)用の先読みプロファイルPdが存在しないと判定された場合、処理はステップS104に進む。
【0084】
ステップS104において、先読み実行制御部417は、先読み対象プログラム415の起動を待つ。そして、先読み実行制御部417が先読み対象プログラム415の起動を検知したとき、処理はステップS105に進む。
【0085】
ステップS105において、図2のステップS4の処理と同様に、先読み対象プログラム415の不揮発記憶装置411へのデータ要求の履歴が収集される。
【0086】
ステップS106において、図2のステップS5の処理と同様に、データ要求履歴が集約され、先読み対象プログラム415用の先読みプロファイルPdが作成される。
【0087】
そして、先読みプロファイルPdが作成された後、処理は終了する。
【0088】
一方、ステップS103において、起動が予測されたプログラム(先読み対象プログラム515)用の先読みプロファイルPdが存在すると判定された場合、処理はステップS107に進む
【0089】
ステップS107において、図2のステップS6の処理と同様に、先読みプロファイルPdに従い先読みが実行される。
【0090】
ステップS108において、先読み対象プログラム415が起動する。このとき、すでに先読み対象プログラム415に対する先読みが実行されているため、先読み対象プログラム415の実行に係るデータを高速に取得することができる。
【0091】
その後、先読み処理は終了する。
【0092】
<5.第2の変形例>
次に、図7および図8を参照して、図1の情報処理システム101の第2の変形例について説明する。
【0093】
[情報処理システム501の構成例]
図7は、情報処理システム101の第2の変形例である情報処理システム501の構成例を示すブロック図である。
【0094】
なお、図中、図1と対応する部分には、下二桁が同じ符号を付してあり、処理が同じ部分については、その説明は繰り返しになるので適宜省略する。
【0095】
情報処理システム501は、情報処理システム101と比較して、使用メモリ量監視部520が追加されている点が異なる。
【0096】
使用メモリ量監視部520は、バッファ514が確保される記憶装置の使用量(以下、メモリ使用量とも称する)を監視し、その結果を先読み実行部519や作成部532に通知する。
【0097】
作成部532は、後述するように、収集部531が収集したデータ要求履歴に加えて、使用メモリ量監視部520によるメモリ使用量の監視結果に基づいて、先読み対象プログラム515用の先読みプロファイルPeを作成する。
【0098】
先読み実行部519は、必要に応じて、使用メモリ量監視部520から通知されるメモリ使用量に基づいて、データの先読みを実行または中断する。
【0099】
[情報処理システム501の先読み処理]
次に、図8のフローチャートを参照して、情報処理システム501により実行される先読み処理を説明する。
【0100】
ステップS201において、図2のステップS1の処理と同様に、先読みに用いるブロックサイズが設定される。
【0101】
ステップS202において、図2のステップS2の処理と同様に、先読み対象プログラム515が起動する。
【0102】
ステップS203において、図2のステップS3の処理と同様に、先読み対象プログラム515用の先読みプロファイルPeが存在するか否かが判定され、存在しないと判定された場合、処理はステップS204に進む。
【0103】
ステップS204において、図2のステップS4の処理と同様に、先読み対象プログラム515の不揮発記憶装置511へのデータ要求の履歴が収集される。
【0104】
ステップS205において、使用メモリ量監視部520は、メモリ使用量が閾値を超えた期間を記録する。
【0105】
ステップS206において、作成部532は、データ要求履歴とメモリ使用量を集約し、先読みプロファイルPeを作成する。具体的には、作成部532は、データ要求履歴を収集部531から取得し、メモリ使用量が閾値を超えた期間を示す情報を使用メモリ量監視部520から取得する。作成部532は、メモリ使用量が閾値を超えた期間がある場合、取得したデータ要求履歴から該当する期間の履歴を削除し、その前後でデータ要求履歴を分割する。
【0106】
そして、作成部532は、データ要求履歴に基づいて、図2のステップS5と同様の処理により、先読み対象プログラム515用の先読みプロファイルPeを作成する。従って、メモリ使用量が閾値を超えた期間が存在する場合、その期間にデータ入出力部513から発行された読み出し要求を除いて、先読みプロファイルPeが作成される。また、この場合、複数の先読みプロファイルPeが作成されることがある。
【0107】
そして、先読みプロファイルPeが作成された後、処理は終了する。
【0108】
一方、ステップS203において、先読み対象プログラム115用の先読みプロファイルPeが存在すると判定された場合、処理はステップS207に進む。
【0109】
ステップS207において、図2のステップS6の処理と同様に、先読みプロファイルPeに従い先読みが実行される。
【0110】
このとき、メモリ使用量が閾値を超える期間については、先読みプロファイルPeが生成されていないため、メモリ使用量が閾値を超える前に先読みが中断する。そして、メモリ使用量が再び閾値以下になった後の期間の先読みプロファイルPeが存在する場合、例えば、その先読みプロファイルPeに時刻や、読み出し要求の時間間隔等の時間情報が含まれていれば、その時間情報に基づいて、先読みが再開される。あるいは、使用メモリ量監視部520から通知されるメモリ使用量が閾値より小さい所定の値以下になったときに、先読みを再開するようにしてもよい。
【0111】
これにより、先読み処理によりメモリ使用量が閾値を超え、バッファ514が確保されている記憶装置のメモリ領域の回収が発生することが防止される。その結果、例えば、先読み対象プログラム515がまだ参照していないデータが、後から先読みされたデータにより上書きされてしまうことが防止される。
【0112】
一方、メモリ使用量が閾値以下となる期間においては、バッファ514にデータが先読みされるため、データを高速に取得することができる。
【0113】
その後、先読み処理は終了する。
【0114】
<6.その他の変形例>
以下、上述した本技術の実施の形態の変形例以外の変形例について説明する。
【0115】
[変形例1]
以上の説明では、ブロックサイズを変換してデータ要求履歴を収集する例を示したが、ブロックサイズを変換するタイミングは、この例に限定されるものではない。例えば、ブロックサイズを変換せずにデータ要求履歴を収集し、読み出しプロファイルの作成時にブロックサイズを変換するようにしてもよい。
【0116】
[変形例2]
また、本技術は、例えば、デバイスドライバとデータ入出力部の間に他のメモリ管理機構が存在する場合にも適用することができる。すなわち、データ入出力部が、そのメモリ管理機構を介して、デバイスドライバにアクセスする場合にも適用することができる。
【0117】
[変形例3]
さらに、上述した第2の変形例において、データ要求履歴において、例えば、メモリ使用量が閾値を超えた期間の履歴を削除せずに、当該期間を示す所定の情報を付与するようにしてもよい。そして、当該期間を除いて先読みプロファイルPeを作成するようにしてもよいし、全ての期間の先読みプロファイルを作成し、当該期間を示す所定の情報を先読みプロファイルに付加するようにしてもよい。
【0118】
あるいは、先読みプロファイルPeの作成時には、メモリ使用量を監視せずに、先読みの実行時に、メモリ使用量に基づいて、先読みの実行および中断を制御するようにしてもよい。例えば、使用メモリ量監視部520から通知されるメモリ使用量が閾値以上になったときに、先読みを中断し、メモリ使用量が閾値より小さい所定の値以下になったときに、先読みを再開するようにしてもよい。
【0119】
[変形例4]
また、各実施の形態及び変形例において、先読み実行部がバッファのデータを監視し、先読みプロファイルに示される位置およびサイズのデータが既にバッファに格納されている場合、そのデータをデータ入出力部113に要求しないようにしてもよい。これにより、無駄なデータの読み出し要求を削減することができる。
【0120】
[コンピュータの構成例]
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどが含まれる。
【0121】
図9は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
【0122】
コンピュータにおいて、CPU(Central Processing Unit)701,ROM(Read Only Memory)702,RAM(Random Access Memory)703は、バス704により相互に接続されている。
【0123】
バス704には、さらに、入出力インタフェース705が接続されている。入出力インタフェース705には、入力部706、出力部707、記憶部708、通信部709、及びドライブ710が接続されている。
【0124】
入力部706は、キーボード、マウス、マイクロフォンなどよりなる。出力部707は、ディスプレイ、スピーカなどよりなる。記憶部708は、ハードディスクや不揮発性のメモリなどよりなる。通信部709は、ネットワークインタフェースなどよりなる。ドライブ710は、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどのリムーバブルメディア711を駆動する。
【0125】
以上のように構成されるコンピュータでは、CPU701が、例えば、記憶部708に記憶されているプログラムを、入出力インタフェース705及びバス704を介して、RAM703にロードして実行することにより、上述した一連の処理が行われる。
【0126】
コンピュータ(CPU701)が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア711に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。
【0127】
コンピュータでは、プログラムは、リムーバブルメディア711をドライブ710に装着することにより、入出力インタフェース705を介して、記憶部708にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部709で受信し、記憶部708にインストールすることができる。その他、プログラムは、ROM702や記憶部708に、あらかじめインストールしておくことができる。
【0128】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【0129】
また、本明細書において、システムの用語は、複数の装置、手段などより構成される全体的な装置を意味するものとする。
【0130】
さらに、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
【0131】
また、例えば、本技術は以下のような構成も取ることができる。
【0132】
(1)
第1のサイズのブロック単位で第1の記憶媒体からのデータの読み出しを要求し、前記第1の記憶媒体から読み出されたデータを第2の記憶媒体に記憶させるデータ入出力部と、
対象となるプログラムからの要求に従って前記データ入出力部により発行される前記第1の記憶媒体からのデータの読み出し要求の履歴を、第2のサイズのブロック単位の読み出し位置およびサイズに変換したデータである先読みデータを作成するデータ作成部と、
前記先読みデータに基づいて、前記第1の記憶媒体から前記第2の記憶媒体への前記プログラムのデータの先読みを前記データ入出力部に要求する先読み実行部と
を含むメモリ管理装置。
(2)
前記第2のサイズは、前記第1の記憶媒体からデータの読み出しが可能な最小単位を基準とするサイズである
前記(1)に記載のメモリ管理装置。
(3)
前記データ入出力部は、前記第2のサイズのブロック単位で前記第1の記憶媒体のデータにアクセスするアクセス部に、前記第1の記憶媒体からのデータの読み出しを要求する
前記(2)に記載のメモリ管理装置。
(4)
前記第1の記憶媒体のフォーマットに基づいて、前記第2のサイズを設定する設定部を
さらに含む前記(1)に記載のメモリ管理装置。
(5)
前記第2の記憶媒体の使用量を監視する監視部をさらに含み、
前記データ作成部は、前記第2の記憶媒体の使用量が所定の閾値を超える期間に、前記プログラムからの要求に従って前記データ入出力部から発行される前記読み出し要求を除いて、前記先読みデータを作成する
前記(1)乃至(4)のいずれかに記載のメモリ管理装置。
(6)
前記第2の記憶媒体の使用量を監視する監視部をさらに含み、
前記先読み実行部は、前記第2の記憶媒体の使用量に基づいて、先読みを実行または中断する
前記(1)乃至(4)のいずれかに記載のメモリ管理装置。
(7)
前記プログラムを実行する場合に、前記プログラム用の前記先読みデータが存在しないとき、前記データ作成部に前記先読みデータの作成を指示し、前記プログラム用の前記先読みデータが存在するとき、前記先読み実行部に前記プログラムのデータの先読みを指示する実行制御部を
さらに含む前記(1)乃至(6)のいずれかに記載のメモリ管理装置。
(8)
次に実行されるプログラムを予測する予測部をさらに含み、
前記実行制御部は、前記予測されたプログラム用の前記先読みデータが存在しないとき、前記データ作成部に前記先読みデータの作成を指示し、前記予測されたプログラム用の前記先読みデータが存在するとき、前記先読み実行部に前記予測されたプログラムのデータの先読みを指示する
前記(7)に記載のメモリ管理装置。
(9)
第1のサイズのブロック単位で第1の記憶媒体からのデータの読み出しを要求し、前記第1の記憶媒体から読み出されたデータを第2の記憶媒体に記憶させるデータ入出力部を備えるメモリ管理装置が、
対象となるプログラムからの要求に従って前記データ入出力部により発行される前記第1の記憶媒体からのデータの読み出し要求の履歴を、第2のサイズのブロック単位の読み出し位置およびサイズに変換したデータである先読みデータを作成し、
前記先読みデータに基づいて、前記第1の記憶媒体から前記第2の記憶媒体への前記プログラムのデータの先読みを前記データ入出力部に要求する
ステップを含むメモリ管理方法。
(10)
第1のサイズのブロック単位で第1の記憶媒体からのデータの読み出しを要求し、前記第1の記憶媒体から読み出されたデータを第2の記憶媒体に記憶させるデータ入出力部により対象となるプログラムからの要求に従って発行される前記第1の記憶媒体からのデータの読み出し要求の履歴を、第2のサイズのブロック単位の読み出し位置およびサイズに変換したデータである先読みデータを作成し、
前記先読みデータに基づいて、前記第1の記憶媒体から前記第2の記憶媒体への前記プログラムのデータの先読みを前記データ入出力部に要求する
ステップを含む処理をコンピュータに実行させるための制御プログラム。
(11)
前記(10)に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【符号の説明】
【0133】
101 情報処理システム, 111 不揮発記憶装置, 112 デバイスドライバ, 113 データ入出力部, 114 バッファ, 115 先読み対象プログラム, 116 ブロックサイズ設定部, 117 先読み実行制御部, 118 プロファイル作成部, 119 先読み実行部, 131 収集部, 132 作成部, 201 ブルーレイディスクレコーダ, 211 フラッシュメモリ, 212 デバイスドライバ, 213 データ入出力部, 214 バッファ, 215 オペレーティングシステム, 216 ブロックサイズ設定部, 217 先読み実行制御部, 218 プロファイル作成部, 219 先読み実行部, 231 収集部, 232 作成部, 301 タブレット端末, 311 メモリカード, 312 デバイスドライバ, 313 データ入出力部, 314 バッファ, 315 アプリケーションプログラム, 316 ブロックサイズ設定部, 317 先読み実行制御部, 318 プロファイル作成部, 319 先読み実行部, 331 収集部, 332 作成部, 401 情報処理システム, 411 不揮発記憶装置, 412 デバイスドライバ, 413 データ入出力部, 414 バッファ, 415 先読み対象プログラム, 416 ブロックサイズ設定部, 417 先読み実行制御部, 418 プロファイル作成部, 419 先読み実行部, 420 起動プログラム予測部, 431 収集部, 432 作成部, 501 情報処理システム, 511 不揮発記憶装置, 512 デバイスドライバ, 513 データ入出力部, 514 バッファ, 515 先読み対象プログラム, 516 ブロックサイズ設定部, 517 先読み実行制御部, 518 プロファイル作成部, 519 先読み実行部, 520 使用メモリ量監視部, 531 収集部, 532 作成部, Pa乃至Pe 先読みプロファイル

【特許請求の範囲】
【請求項1】
第1のサイズのブロック単位で第1の記憶媒体からのデータの読み出しを要求し、前記第1の記憶媒体から読み出されたデータを第2の記憶媒体に記憶させるデータ入出力部と、
対象となるプログラムからの要求に従って前記データ入出力部により発行される前記第1の記憶媒体からのデータの読み出し要求の履歴を、第2のサイズのブロック単位の読み出し位置およびサイズに変換したデータである先読みデータを作成するデータ作成部と、
前記先読みデータに基づいて、前記第1の記憶媒体から前記第2の記憶媒体への前記プログラムのデータの先読みを前記データ入出力部に要求する先読み実行部と
を含むメモリ管理装置。
【請求項2】
前記第2のサイズは、前記第1の記憶媒体からデータの読み出しが可能な最小単位を基準とするサイズである
請求項1に記載のメモリ管理装置。
【請求項3】
前記データ入出力部は、前記第2のサイズのブロック単位で前記第1の記憶媒体のデータにアクセスするアクセス部に、前記第1の記憶媒体からのデータの読み出しを要求する
請求項2に記載のメモリ管理装置。
【請求項4】
前記第1の記憶媒体のフォーマットに基づいて、前記第2のサイズを設定する設定部を
さらに含む請求項1に記載のメモリ管理装置。
【請求項5】
前記第2の記憶媒体の使用量を監視する監視部をさらに含み、
前記データ作成部は、前記第2の記憶媒体の使用量が所定の閾値を超えた期間に、前記プログラムからの要求に従って前記データ入出力部から発行される前記読み出し要求を除いて、前記先読みデータを作成する
請求項1に記載のメモリ管理装置。
【請求項6】
前記第2の記憶媒体の使用量を監視する監視部をさらに含み、
前記先読み実行部は、前記第2の記憶媒体の使用量に基づいて、先読みを実行または中断する
請求項1に記載のメモリ管理装置。
【請求項7】
前記プログラムを実行する場合に、前記プログラム用の前記先読みデータが存在しないとき、前記データ作成部に前記先読みデータの作成を指示し、前記プログラム用の前記先読みデータが存在するとき、前記先読み実行部に前記プログラムのデータの先読みを指示する実行制御部を
さらに含む請求項1に記載のメモリ管理装置。
【請求項8】
次に実行されるプログラムを予測する予測部をさらに含み、
前記実行制御部は、前記予測されたプログラム用の前記先読みデータが存在しないとき、前記データ作成部に前記先読みデータの作成を指示し、前記予測されたプログラム用の前記先読みデータが存在するとき、前記先読み実行部に前記予測されたプログラムのデータの先読みを指示する
請求項7に記載のメモリ管理装置。
【請求項9】
第1のサイズのブロック単位で第1の記憶媒体からのデータの読み出しを要求し、前記第1の記憶媒体から読み出されたデータを第2の記憶媒体に記憶させるデータ入出力部を備えるメモリ管理装置が、
対象となるプログラムからの要求に従って前記データ入出力部により発行される前記第1の記憶媒体からのデータの読み出し要求の履歴を、第2のサイズのブロック単位の読み出し位置およびサイズに変換したデータである先読みデータを作成し、
前記先読みデータに基づいて、前記第1の記憶媒体から前記第2の記憶媒体への前記プログラムのデータの先読みを前記データ入出力部に要求する
ステップを含むメモリ管理方法。
【請求項10】
第1のサイズのブロック単位で第1の記憶媒体からのデータの読み出しを要求し、前記第1の記憶媒体から読み出されたデータを第2の記憶媒体に記憶させるデータ入出力部により対象となるプログラムからの要求に従って発行される前記第1の記憶媒体からのデータの読み出し要求の履歴を、第2のサイズのブロック単位の読み出し位置およびサイズに変換したデータである先読みデータを作成し、
前記先読みデータに基づいて、前記第1の記憶媒体から前記第2の記憶媒体への前記プログラムのデータの先読みを前記データ入出力部に要求する
ステップを含む処理をコンピュータに実行させるための制御プログラム。
【請求項11】
請求項10に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate