(57)【要約】【課題】  効率的なバッファリング技術を提供する。【解決手段】  バッファリング装置において、読出部３５０が、リングバッファ方式でデータをメモリ装置に書き込み、判定部３３０は、データがメモリ装置３１０に連続して書き込まれているか否かを判定する。判定部３３０は、中央処理装置２００からデータの転送要求を受けると、データの連続性が判定された場合に、転送要求されたデータに連続したデータの先読み指示を読出部３５０に通知する。読出部３５０は、先読み指示を受けて記録媒体からデータを先読みし、メモリ装置に先読みしたデータを書き込む。読出部３５０は、先読み指示を受けて、転送要求されたデータに後続する所定量のデータを先読みする。【選択図】  図４
2006163642.tif 000002
【特許請求の範囲】
【請求項１】
連続した識別番号を割り当てられた複数の記憶領域を有するメモリ装置と、
記録媒体に記録されたデータを読み出して、前記メモリ装置に書き込む読出部と、
前記データが前記メモリ装置に連続して書き込まれているか否かを判定する判定部と、
を備えることを特徴とするバッファリング装置。
【請求項２】
前記読出部は、リングバッファ方式でデータを前記メモリ装置に書き込むことを特徴とする請求項１に記載のバッファリング装置。
【請求項３】
前記判定部は、データの転送要求を受けると、転送要求されたデータに連続したデータの先読み指示を前記読出部に通知し、
前記読出部は、先読み指示を受けて前記記録媒体からデータを先読みし、前記メモリ装置に先読みしたデータを書き込むことを特徴とする請求項１または２に記載のバッファリング装置。
【請求項４】
前記読出部は、先読み指示を受けて、転送要求されたデータに後続する所定量のデータを先読みすることを特徴とする請求項３に記載のバッファリング装置。
【請求項５】
前記判定部は、前記メモリ装置で最新のデータが書き込まれた記憶領域と、転送要求されたデータが書き込まれている記憶領域の間の連続した記憶領域において、転送要求されたデータから、書き込まれた最新のデータまでが連続している場合に、前記先読み指示を前記読出部に通知することを特徴とする請求項３または４に記載のバッファリング装置。
【請求項６】
前記判定部は、前記メモリ装置で最新のデータが書き込まれた記憶領域と、転送要求されたデータが書き込まれている記憶領域の間の連続した記憶領域において、転送要求されたデータから、書き込まれた最新のデータまでが連続していない場合に、前記先読み指示を前記読出部に通知しないことを特徴とする請求項３から５のいずれかに記載のバッファリング装置。
【請求項７】
連続した識別番号を割り当てられた複数の記憶領域を有するメモリ装置のバッファリング方法であって、
記録媒体に記録されたデータを読み出して、前記メモリ装置に書き込むステップと、
前記データが前記メモリ装置に連続して書き込まれているか否かを判定するステップと、
を備えることを特徴とするバッファリング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バッファリング装置およびバッファリング方法に関し、特に、リングバッファを利用したバッファリング装置およびバッファリング方法に関する。
【背景技術】
【０００２】
近年、携帯型のゲーム装置や個人情報端末（ＰＤＡ）などの携帯型電子装置が普及している。携帯型電子装置は、ユーザの多様なニーズに応えるべく様々な機能をもつことを求められている。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
特に最近では、記録媒体からプログラムや動画像データなどのデジタルデータを読み出して、様々なアプリケーションを実行できる機能が切望されている。この機能が実現できると、携帯型電子装置は、多様な用途に利用可能となり、その有用性を増す。このとき、記録媒体から効率的にデジタルデータをバッファリングすることのできる技術が必要となる。特に携帯型電子装置は、軽量化および低廉化を求められるため、ハードウエアを効率的に利用したバッファリング技術を実現することが必要であるが、例えば設置型のＰＣ（パーソナルコンピュータ）においても、バッファリング技術を効率化することは重要である。
【０００４】
本発明は、上記のような課題に鑑みてなされたものであり、その目的は、記録媒体からデジタルデータをバッファリングすることのできる技術を提供することにある。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、本発明のある態様のバッファリング装置は、連続した識別番号を割り当てられた複数の記憶領域を有するメモリ装置と、記録媒体に記録されたデータを読み出して、メモリ装置に書き込む読出部と、データがメモリ装置に連続して書き込まれているか否かを判定する判定部とを備える。
【発明の効果】
【０００６】
本発明によれば、記録媒体からデジタルデータを効率的にバッファリングすることのできる技術を提供することができる。
【発明を実施するための最良の形態】
【０００７】
図１は、本発明の実施例である携帯型電子装置１００の正面図である。携帯型電子装置１００の筐体１０は、全体として横長の長円形状を有している。筐体１０の両端は、中心線から一定の距離偏心した位置を中心とする円弧状に湾曲形成されている。
【０００８】
筐体１０の中央部分には、表示装置としての液晶ディスプレイ（以下、「ＬＣＤ」という）１２が嵌め込まれている。例えば、携帯型電子装置１００がゲーム装置として機能する場合、このＬＣＤ１２にはゲーム画面が表示され、携帯型電子装置１００がいわゆる個人情報端末として機能する場合には、スケジュール帳や住所録などが表示される。
【０００９】
筐体１０の上側部１０ａの表面、つまりユーザに対する面は、主に、ユーザの左手により把持される左手領域４８Ｌと、右手により把持される右手領域４８Ｒと、ＬＣＤ１２の下方に位置し各種ボタンが配置される横長のボタン領域５０と、ＬＣＤ１２の上方に位置する装飾領域１６とから構成される。
【００１０】
左手領域４８Ｌには、主に方向指示入力をするための十字キー２０と、主に方向指示のアナログ入力をするためのアナログデバイス２２が設けられている。右手領域４８Ｒには、主に単一の指示を入力するための押しボタン３０ａ、３０ｂ、３０ｃ、３０ｄ（以下、これらを総称するときには、「押しボタン３０」という）が設けられている。
【００１１】
ボタン領域５０は、携帯型電子装置１００を保持するユーザから近い側の、筐体１０の上側部の外縁近傍に配置される。ボタン領域５０は、十字キー２０、アナログデバイス２２、押しボタン３０以外の各種ボタンが配置される領域である。
【００１２】
Ｌボタン４６Ｌ、Ｒボタン４６Ｒは、それぞれユーザの左手人差し指または中指、右手人差し指または中指で操作されるボタンである。Ｌボタン４６Ｌ、Ｒボタン４６Ｒは、十字キー２０または押しボタン３０だけでは操作できない特別な指示を与えるために使用される。
【００１３】
図２は、携帯型電子装置１００の平面図である。筐体１０は、上側部１０ａ、中間部１０ｂおよび下側部１０ｃから構成され、その内部に各種ボタン操作による信号を発生するスイッチ接点と、その信号を処理し各種演算を実行する中央処理装置などが搭載された回路基板（図示せず）を内蔵している。図示しない回路基板は、上側部１０ａまたは下側部１０ｃに固定されている。また、中間部１０ｂは上側部１０ａおよび下側部１０ｃに比して剛性が高く、筐体１０全体の剛性を確保している。
【００１４】
筐体１０の背面の両端には膨らみ４２Ｌ、４２Ｒが形成されている。これら２つの膨らみの間は平面となっており、その平面のほぼ全体が、小型ディスクドライブの蓋４４となっている。この蓋４４は、中間部１０ｂに設けられたスイッチをスライドすることによって、図２の上方に展開し、その下部にある図示しない小型ディスクドライブにディスクを載置できるようになっている。このディスクは、携帯型電子装置１００のアプリケーションプログラムやゲームプログラム、また動画再生用のデータや音楽再生用のデータを提供する。
【００１５】
本実施例の携帯型電子装置１００は、ディスクに格納されたプログラムおよびデータに応じて、様々な種類の装置として機能することができる。ディスクがゲームプログラムを格納していれば、携帯型電子装置１００はゲーム装置として機能し、またディスクが音楽データを格納していれば、携帯型電子装置１００が音声再生装置として機能する。さらに、ディスクが動画データを格納していれば、携帯型電子装置１００は、動画再生装置として機能することになり、ユーザは、映画などの映像コンテンツを楽しむことができる。また携帯型電子装置１００は、無線通信機能を有し、外部からのデータのダウンロードを可能とし、また外部に対して自身のデータを送信することができる。
【００１６】
図３は、本実施例の携帯型電子装置のハードウエア構成を示す。携帯型電子装置１００は、装置全体を制御する中央処理装置２００、装置全体に電力を供給するバッテリ２１０、表示装置であるＬＣＤ１２、音声を出力するスピーカ２１２、無線通信を実行する無線モジュール２１４、ディスク８０を載置するディスクドライブを回転するモータ２１６、およびモータ２１６を駆動するモータドライバ２１８、ディスク８０からデータやプログラムのバッファリング処理などを制御するサブ処理装置３００を備える。なお、以下では、データおよびプログラムを、統一的に「デジタルデータ」ないしは単に「データ」として表現する。
【００１７】
サブ処理装置３００は、ディスク８０に格納されているデータを読み出してメモリ装置に一旦格納し、その後、中央処理装置２００に出力する。本実施例の携帯型電子装置１００は、メモリ装置へのデータ読込み処理や、メモリ装置からの転送処理を効率的に行うことができる。
【００１８】
本実施例で説明するバッファリング機能は、携帯型電子装置１００において特に効果的に利用することができる。携帯型電子装置１００は軽量化および低廉化を求められるため、非常に高速なＣＰＵや大容量のメモリ装置を搭載することができず、したがってハードウエア資源を効率的に使用する必要がある。なお、本実施例の効率的なバッファリング機能を、高速なＣＰＵや大容量メモリ装置を搭載した設置型のＰＣ（パーソナルコンピュータ）において利用することも可能である。
【００１９】
図４は、本実施例の携帯型電子装置における中央処理装置とサブ処理装置の構成を示す。サブ処理装置３００は、連続した識別番号を割り当てられた複数の記憶領域を有するメモリ装置３１０、メモリ装置３１０の複数の記憶領域を分割する領域割当部３２０、主にメモリ装置３１０に格納されたデジタルデータの連続性を判定する判定部３３０、メモリ装置３１０からデジタルデータを中央処理装置２００に転送する転送部３４０、およびディスク８０からデジタルデータを読み出してメモリ装置３１０に書き込む読出部３５０を備える。
【００２０】
中央処理装置２００は、全体の動作を制御する制御部２３０、メモリ装置３１０の複数の記憶領域を分割するための分割指示を生成する分割指示部２４０、ディスク８０またはメモリ装置３１０からデジタルデータを読み出すための読出指示を生成する読出指示部２４２、転送されたデジタルデータを受け付ける受付部２４６、転送されたデータを一時記憶するメモリ装置２５０、画像処理を実行する画像処理部２６０、および音声処理を実行する音声処理部２７０を備える。
【００２１】
以上の構成は、ハードウエア的には、任意のコンピュータのＣＰＵ、メモリ、その他のＬＳＩで実現でき、ソフトウエア的にはメモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。
【００２２】
図４では、画像処理部２６０および音声処理部２７０が中央処理装置２００に含まれているが、画像処理部２６０および音声処理部２７０は、それぞれ中央処理装置２００とは独立したユニットとして構成されてもよい。また、中央処理装置２００およびサブ処理装置３００の機能は、別個のＣＰＵにより実現されてもよいが、単一のＣＰＵにより実現することも可能である。
【００２３】
メモリ装置３１０は、キャッシュ用メモリであり、ＳＤＲＡＭで構成される。本実施例において、ＳＤＲＡＭの容量は16Mbit(2Mbyte)であり、誤り訂正符号（ＥＣＣ）ブロックを１単位として最大６０の記憶領域のそれぞれにＥＣＣブロックを格納できる。なお、ディスク８０はセクタを単位としてデジタルデータを記録しているが、ＥＣＣブロックは、ディスク８０の１６セクタ分とする。読出部３５０は、ディスク８０からデジタルデータを読み出すと、誤りを訂正するために冗長データを付加し、メモリ装置３１０の所定領域に書き込む。なお、ＳＤＲＡＭの容量やＥＣＣブロックの大きさは例示であり、またメモリ装置３１０はＳＤＲＡＭ以外の他のメモリで構成されてもよい。
【００２４】
本実施例において、サブ処理装置３００は、ディスク８０から入力データを読み出して一旦メモリ装置３１０に格納し、その後、中央処理装置２００に出力するデジタルデータのバッファリング装置として機能する。なお、このときサブ処理装置３００は、中央処理装置２００の一部の機能と協同して、バッファリング処理を実現してもよい。この場合は、サブ処理装置３００と中央処理装置２００の機能の一部がバッファリング装置として機能することになる。なお、メモリ装置３１０からの転送先は、別チップとして構成される中央処理装置２００に限らない。例えば中央処理装置２００とサブ処理装置３００とが１つのチップとして構成されている場合には、転送先は、同一チップ内の画像処理部２６０または音声処理部２７０であってよい。なお、画像処理機能および音声処理機能が画像処理ユニットおよび音声処理ユニットなどの別チップとして構成されている場合には、転送先が、画像処理ユニットまたは音声処理ユニットであってよい。
【００２５】
図５（ａ）は、連続した識別番号を割り当てられた複数の記憶領域を有するメモリ装置３１０を概念的に示す。ここで、識別番号は記憶領域を特定するための番号である。メモリ装置３１０は、AREA0からAREA59までの６０の記憶領域を有して構成される。各記憶領域には、誤り符号化されたデジタルデータが格納される。なお、各記憶領域に含まれる複数の記憶素子には、位置を示すアドレスが付けられている。このアドレスは、識別番号の小さい記憶領域から順に割り当てられる。全ての記憶素子のアドレスを連続して設定することで、後述するバッファリング処理を容易にすることができる。
【００２６】
図５（ｂ）は、メモリ装置３１０における複数の記憶領域を２つの領域に分割した状態を示す。分割した２つの領域を、それぞれUNLOCK領域とLOCK領域と呼ぶ。UNLOCK領域は、主としてシーケンシャルデータを格納するための領域であり、LOCK領域は、中央処理装置２００にて固定的に利用するデータを格納するための領域である。UNLOCK領域にはディスク８０に記録されたデジタルデータが書き込まれ、LOCK領域にはディスク８０に記録されたデジタルデータや中央処理装置２００から供給されるデータなどが書き込まれる。例えば、動画や音声などのデータはシーケンシャルにUNLOCK領域にバッファリングされ、ファイルシステムのディレクトリエントリなどの固定的に使用されるデータはLOCK領域に格納される。
【００２７】
本実施例のメモリ装置３１０において、UNLOCK領域は、連続した識別番号で特定される複数の記憶領域により構成される。ここでは、UNLOCK領域が、AREA0からAREA(n-1)の計ｎ個の連続した記憶領域で構成されている。なおUNLOCK領域において、各記憶領域内および記憶領域間で、記憶素子のアドレスは連続して割り振られている。
【００２８】
UNLOCK領域はリングバッファとして使用される。ディスク８０から連続して読み出されたデータは、連続した識別番号で特定される記憶領域にリングバッファ方式で順次書き込まれる。ディスク８０のデータは１６セクタ分を１単位としてデコードされ、デコードされたデータが１つの記憶領域（AREA）に格納される。これにより、UNLOCK領域からシーケンシャルデータを読み出して中央処理装置２００に転送するときのアドレス制御を容易にすることができる。すなわち、リングバッファ上でシーケンシャルデータを読み出すためには、UNLOCK領域において、読出開始アドレスから読出終了アドレスまでを１ずつインクリメントしていけばよく、アドレス管理が簡単なものとなる。
【００２９】
携帯型電子装置１００の起動直後は、全ての記憶領域がUNLOCK領域に設定される。その後、中央処理装置２００において、制御部２３０が、メモリ装置３１０を分割させるべく、分割指示部２４０を制御する。分割指示部２４０は、メモリ装置３１０の複数の記憶領域を分割するための分割指示を生成し、領域割当部３２０に送る。
【００３０】
領域割当部３２０は、生成された分割指示をもとに、メモリ装置３１０における複数の記憶領域をUNLOCK領域とLOCK領域に分割する。このときUNLOCK領域は、リングバッファ領域に割り当てられ、UNLOCK領域内の複数の記憶領域が連続した識別番号を有して構成される。なお、領域割当部３２０は、自律的にメモリ装置３１０の分割を行う機能を有してもよい。図５（ｂ）の例では、UNLOCK領域内の複数の記憶領域が、0から(n-1)の連続した識別番号を有して構成される。既述したように、AREA内でアドレスは連続して設定されており、またAREA間でもアドレスの連続性は保たれているため、UNLOCK領域が複数のAREAで構成されていても、アドレスの連続性は維持されている。
【００３１】
一方、LOCK領域内の記憶領域は連続した識別番号を有していなくてもよい。図５（ｂ）の例では、LOCK領域内の複数の記憶領域が、nから59の連続した識別番号を有して構成されているが、例えば、LOCK領域内の複数の記憶領域は、メモリ装置３１０の両端に分かれて設定されてもよい。UNLOCK領域は、基本的にシーケンシャルデータを中央処理装置２００に転送する目的で利用されるため、記憶領域が連続して設定される必要があるが、LOCK領域は、シーケンシャルデータを格納するものではないため、記憶領域が連続して設定される必要はない。
【００３２】
分割指示は、UNLOCK領域とLOCK領域の境界を指定する。この指定は、境界となるAREAを指示するものであってもよく、具体的には境界となるメモリ装置３１０上のアドレスを指示するものであってよい。また、AREA0ないしはAREA59からのAREAの個数で境界を表現するものであってもよい。例えば、分割指示が、AREA59から(60-n)個分の記憶領域をLOCK領域に指定するものであってもよい。逆に、AREA0からn個分の記憶領域をUNLOCK領域とする分割指示であってもよい。このように、２つの異なる境界を指定することで領域割当部３２０は、メモリ装置３１０を異なる領域に割り当てることが可能となる。
【００３３】
分割指示部２４０は、UNLOCK領域とLOCK領域の境界を、ディスク８０の種類に応じて設定してもよい。例えば、動画データ、ゲームプログラム、音楽データの３種類のデジタルデータについて考察すると、動画データおよび音楽データはシーケンシャルデータであり、再生される順に、ディスク８０の連続するセクタに連続的に記録されている。したがって、データの連続性が高く、シーケンシャルデータを格納するUNLOCK領域を大きく設定することが好ましい。
【００３４】
一方、ゲームプログラムは、ユーザによる操作により出力を変化させるものであり、例えばゲームキャラクタやゲーム背景など、ゲームアプリケーションの実行に固有の情報を多く必要とする。そのため、動画データや音楽データなどのシーケンシャルデータと比較すると、LOCK領域に保持させるデータが多く、そのためLOCK領域を大きくとることが好ましい。このように、シーケンシャルデータの場合は、そうでない場合と比較してUNLOCK領域を相対的に大きくとることが好ましく、これにより、領域割当部３２０は、メモリ装置３１０をディスク８０のアプリケーションに応じて効果的に領域設定することが可能となる。なお、領域割当部３２０は、１つのアプリケーションの実行中に、領域の境界を動かして、動的に領域の再割当てを行ってもよい。領域の動的な再割当ては、分割指示部２４０からの指示に基づいて行われてもよく、またメモリ装置３１０の利用状況を自律的に判定することで行われてもよい。例えば、領域割当部３２０は、メモリ装置３１０においてシーケンシャルデータの書込頻度が下がった場合に、UNLOCK領域を小さくできることを判定して、領域の再設定を行ってもよい。この場合、再設定した後の領域の範囲は制御部２３０に通知され、管理される。
【００３５】
本実施例の携帯型電子装置１００において、メモリ装置３１０にデジタルデータを蓄積するために、読出指示部２４２が、サブ処理装置３００に対して、ディスク８０からデジタルデータの読出を要求する。この要求には、読出指示とプリフェッチ指示の２種類が存在する。
【００３６】
読出指示は、デジタルデータの読み込みおよび先読みを要求するコマンドであり、さらに読み込んだデジタルデータを中央処理装置２００に転送するコマンドでもある。すなわち、読み込みを指示されたデータは、サブ処理装置３００においてディスク８０から読み込まれてメモリ装置３１０に一旦格納されると同時に中央処理装置２００に転送され、このとき転送されるデータに後続する所定量のデータがディスク８０から読み込ま（先読みさ）れる。先読みされるデータ量は、読出指示において指定される。既にメモリ装置３１０に先読みされているデータに対して読出指示が発行された場合には、そのデータをディスク８０から読み込む必要はなく、メモリ装置３１０から中央処理装置２００に直接転送し、そのデータから所定量分の後続データの先読みを行う。
【００３７】
プリフェッチ指示は、デジタルデータの読み込みを要求するコマンドである。先読みおよび中央処理装置２００へのデータ転送は行わず、メモリ装置３１０にディスク８０から読み込んだデータを保存しておく。
【００３８】
読出指示およびプリフェッチ指示には、LOCKビットが含まれる。LOCKビットが立てられたときには、デジタルデータがLOCK領域へバッファリングされ、LOCKビットが立てられていないときには、UNLOCK領域へバッファリングされる。また、LOCKビットが立てられた読出指示は先読みを行わない設定としてもよい。LOCK領域では固定長のデータのみがバッファリングされ、先読みを必要としないためである。なお、LOCKビットが立てられている読出指示で、LOCK領域にデータがなくてUNLOCK領域にデータが存在する場合には、UNLOCK領域にあるデータをLOCK領域へコピーする。LOCK領域へのデータのバッファリングは、確保されたLOCK領域のAREA識別番号の小さい順に行われる。
【００３９】
本実施例では、上記した２種類の読出要求のうち、読出指示に基づいて実行するディスク８０からのデータ読込み、および先読みなどの処理を工夫することで、効率的なバッファリング処理を実現する。
【００４０】
図６は、読出指示を利用してディスクデータをメモリ装置３１０にバッファリングする状態例を示す。ディスク８０の０番目のセクタからデータを連続的に読み出す場合を例にとる。制御部２３０が読出指示部２４２を制御することで、読出指示部２４２が、０番目のセクタからの読出指示をサブ処理装置３００に送る。なお、メモリ装置３１０のUNLOCK領域には、データがまだ書き込まれていないものとする。
【００４１】
図６（ａ）は、データ書込み前のUNLOCK領域の状態を示す。リングバッファとして機能するUNLOCK領域において、ポインタは、データの書込み位置を特定する。
読出指示部２４２が、ディスク８０のセクタ０−１５に記録されているデジタルデータの読出指示を生成して、サブ処理装置３００における判定部３３０に送る。本実施例において、読出指示は、４８セクタ分のデジタルデータの先読みを要求する。判定部３３０は、読出および転送を要求されるセクタ０−１５のデジタルデータがメモリ装置３１０に存在するか否かを判定する。このとき、メモリ装置３１０にはデータが書き込まれていないため、判定部３３０はセクタ０−１５のデジタルデータがメモリ装置３１０に存在しないことを判定し、読出部３５０に、セクタ０−１５のデジタルデータの読込み指示と、セクタ１６−６３のデジタルデータの先読み指示を通知し、また転送部３４０にセクタ０−１５のデジタルデータの転送指示を通知する。
【００４２】
図６（ｂ）は、セクタ０−１５のデータの読出指示を受けて、読出部３５０によりディスク８０から読み出したデータをメモリ装置３１０に書き込んだ状態を示す。まずAREA0にセクタ０−１５のデータが書き込まれる。転送部３４０は、転送要求を受けたセクタ０−１５のデータがメモリ装置３１０に書き込まれると、そのデータを中央処理装置２００の受付部２４６に転送する。また読出部３５０は、先読み指示を受けてディスク８０からセクタ１６−６３のデータを先読みし、先読みしたデータをメモリ装置３１０において連続するAREA1、AREA2、AREA3に書き込む。具体的には、AREA0にセクタ０−１５のデータが書き込まれた時点で、ポインタがAREA1に移動し、AREA1にセクタ１６−３１のデータが書き込まれる。同様に、ポインタが移動して、AREA2、AREA3のそれぞれにセクタ３２−４７、セクタ４８−６３のデータが書き込まれる。先読みされる全てのデータがメモリ装置３１０に書き込まれた時点で、ポインタはAREA4に移動する。各AREAに格納されるデータのセクタ情報は、判定部３３０が保有するキャッシュ管理テーブル（図示せず）にて管理される。キャッシュ管理テーブルでは、AREAの識別番号と、記録したセクタ番号とが対応付けられている。なお、図６は、メモリ装置３１０の状態を示すものであるが、図６に示す情報は、キャッシュ管理テーブルに含まれる状態に相当している。
【００４３】
読出部３５０がディスク８０からデータを読み出すまとまりは、識別番号が１６の整数倍で表現されるセクタから１６個分のセクタのデータとして設定されていてもよい。ここで、セクタ１０−２３のデータの読出指示が生成された場合には、セクタ１０−２３のデータをそれぞれ包含するセクタ０−１５のデータとセクタ１６−３１のデータとが読み込まれることになる。このとき、キャッシュ管理テーブルは、AREAの識別番号と、そのAREAに記録した最初のセクタすなわち１６の整数倍で表現されるセクタ番号とを対応付けて保持する。なお、この場合、各AREAには、常に連続する１６個のセクタに記録されたデータがシーケンシャルに書き込まれることになる。
【００４４】
続いて、読出指示部２４２が、ディスク８０のセクタ１６−３１に記録されているデジタルデータの読出指示を生成して、サブ処理装置３００における判定部３３０に送る。ここでは、ディスク８０が動画データなどのシーケンシャルデータを記録しており、連続再生する場合を想定している。
【００４５】
判定部３３０は、読出および転送を要求されるセクタ１６−３１のデジタルデータがメモリ装置３１０に存在するか否かを判定する。読出および転送を要求されるデータがメモリ装置３１０に存在していれば、メモリ装置３１０にデータをバッファリングせず、メモリ装置３１０から直接データが転送される。読出および転送を要求されるデータがメモリ装置３１０に存在する状態を、キャッシュがヒットした状態と呼ぶ。本実施例では、読出指示により要求されたデータがメモリ装置３１０の記憶領域上に連続したセクタの順序でバッファリングされているときに、キャッシュがヒットした状態となる。
【００４６】
判定部３３０は、キャッシュ管理テーブルを検索して、セクタ１６−３１のデータが連続してメモリ装置３１０に書き込まれているか否かを判定する。キャッシュ管理テーブルには、AREA1に先読みされたセクタ１６−３１のデジタルデータが書き込まれているキャッシュ管理情報が記述されており、判定部３３０はセクタ１６−３１のデジタルデータがメモリ装置３１０に存在することを判定し、転送部３４０にセクタ１６−３１のデジタルデータの転送指示を通知する。
【００４７】
判定部３３０は、上記した読込処理と同時に先読み処理を実行するか判断するために、データがメモリ装置３１０に連続して書き込まれているか否かを判定する。データの連続性は、ポインタに近い記憶領域から検索される。具体的に、判定部３３０は、最新のデータが書き込まれた記憶領域と、読出および転送要求されたセクタのデータが書き込まれている記憶領域の間の連続した記憶領域において、転送要求されたデータから、書き込まれた最新のデータまでが連続しているか否かを判定する。最新のデータが書き込まれた記憶領域とは、リングバッファにおいて最後にデータ書込がされた記憶領域であり、図６（ｂ）の例ではAREA3に対応する。すなわち、ポインタが存在する直前のAREAである。また、転送要求されたセクタ１６−３１のデータが書き込まれている記憶領域はAREA1であり、したがって、判定部３３０は、AREA1からAREA3にかけて、データの連続性を判定する。
【００４８】
データの連続性は、ディスク８０に記録されたデータが、その再生順にUNLOCK領域に書き込まれているか否かにより判定される。既述したように、データの連続性は、ポインタに近い記憶領域から検索される。ディスク８０においてデータは、その再生順にしたがって連続するセクタに記録されているため、結局のところ、連続性の判断は、メモリ装置３１０に書き込まれたデータがセクタ番号順で存在するか否によることになる。判定部３３０は、上記したように、ポインタの直前のAREA（すなわち最新のデータが書き込まれた記憶領域）から、転送要求されたデータが書き込まれているAREAまでのセクタ情報をキャッシュ管理テーブルで確認する。このとき、各AREAに書き込まれる最初のセクタデータが１６の整数倍で表現されるセクタ番号に限定されている場合には、各AREAの先頭のエリア番号が１６ずつずれている場合に、データの連続性が判定されることになる。
【００４９】
図６（ｂ）の例では、AREA1からAREA3にかけて、セクタ１６−６３のデータが連続して格納されている。したがって、判定部３３０は、先読みする価値が高いことを認識して、セクタ１６−３１に連続する４８セクタ分のデータ、すなわちセクタ３２−７９のデータを先読みすることを決定する。このとき、キャッシュ管理テーブルにより、セクタ３２−６３のデータが既にメモリ装置３１０に格納されているため、残りのセクタ６４−７９のデジタルデータの先読み指示を読出部３５０に通知する。これにより、特にシーケンシャルデータである場合には、予め先読みしておくことで、リアルタイム再生をスムーズに行うことが可能となる。
【００５０】
図６（ｃ）は、セクタ１６−３１のデータの読出指示を受けて、読出部３５０によりディスク８０から読み出したデータをメモリ装置３１０に書き込んだ状態を示す。セクタ１６−３１のデータが既にAREA1に存在しているため、読出部３５０が同じデータをディスク８０から再読込することなく、転送部３４０が、セクタ１６−３１のデータを受付部２４６に転送する。また読出部３５０は、先読み指示を受けてディスク８０からセクタ６４−７９のデータを先読みし、先読みしたデータをメモリ装置３１０において連続するAREA4に書き込む。
【００５１】
図６（ｄ）は、セクタ９６−１１１のデータの読出指示を受けて、読出部３５０によりディスク８０から読み出したデータをメモリ装置３１０に書き込んだ状態を示す。判定部３３０は、キャッシュ管理テーブルを参照した結果、セクタ９６−１１１のデータがメモリ装置３１０に存在していないことを判定する。いわゆる、キャッシュがヒットしない状態に相当する。そのため判定部３３０は、読出部３５０に、セクタ９６−１１１のデジタルデータの読込み指示と、セクタ１１２−１５９のデジタルデータの先読み指示を通知し、また転送部３４０にセクタ９６−１１１のデジタルデータの転送指示を通知する。その結果、連続するAREAに、セクタ９６−１５９までのデータが格納される。
【００５２】
なお、UNLOCK領域はリングバッファ方式で利用され、データがAREA(n-1)まで書き込まれると、始めのAREA0からまたデータの書込が行われる。データの書込位置はポインタの位置で特定され、ポインタはデータの書込が行われるごとに、次の識別番号の記憶領域に移動する。
【００５３】
上記した例では、１AREA分のデータに対して読出および転送要求が行われているが、読出および転送要求の単位はAREAではなく、読出および転送要求されるデータが連続していればよい。例えば、図６（ｃ）に示すメモリ状態において、セクタ５０−５５のデータに対して読出および転送要求が行われた場合であっても、このデータが既にメモリ装置３１０にバッファリングされており、セクタ５０のデータから最新の書込データまでのデータが連続しているため、転送処理および先読み処理が実行されることになる。なお、キャッシュ管理テーブルが、AREA識別番号と、１６の倍数で表現される先頭セクタ番号とを対応付けて保持している場合には、セクタ４８から最新の書込データまでの連続性が判定されることになる。
【００５４】
なお、先読みするデータ量を４８セクタ分すなわち３AREA分と設定しているが、先読み処理において、最低限の先読みデータ量と、努力目標である最大限の先読みデータ量とが設定されていてもよい。例えば、最低限の先読みデータ量を４８セクタ分とし、最大限の先読みデータ量を１３８セクタ分とする。上記したデータ連続性が満足されている限り、転送要求があったデータに後続する４８セクタ分のデータは必ずメモリ装置３１０に先読みされ、まだ先読みする時間的な余裕がある場合には、さらに９０セクタ分のデータが追加的に先読みされる。
【００５５】
この追加の先読み処理は、１６セクタ分のデータを１単位とし、１６セクタ分のデータごとに可能な場合に限り先読みされていく。予め多くのデータを先読みしておくことで、例えばデータ読出に瞬間的な不具合が生じる場合などに効果的に対応できるとともに、先読みデータ量に最大値を設けておくことで、中央処理装置２００において要求されるデータの連続性が途絶えた場合に、無駄に先読みしていた状態を回避できる。特に、携帯型電子装置１００はバッテリ駆動であり、無駄な先読み処理でディスク８０を回転させるためにモータを駆動することはバッテリの浪費であり好ましくない。本実施例の先読み処理によると、データ再生の効率化とバッテリ消費量の低減化の双方を満足することが可能となる。
【００５６】
図７は、メモリ装置３１０に書き込まれたデータのバッファリング状態例を示す。なお、このバッファリングは、前述の先読みを行わないプリフェッチ指示に基づいて実行されたものとする。以下では、図７（ａ）〜図７（ｃ）に示すバッファリング状態例を用いて、具体的なバッファリング処理方法を説明する。
【００５７】
図７（ａ）に示す状態では、AREA5のデータの連続性が保たれているが、AREA5とAREA4の間で連続性が途切れている。セクタ６４−７９のデータについて読出指示があった場合、判定部３３０はAREA4にセクタ６４−７９のデータが格納されていることを判定し、転送部３４０から受付部２４６に転送させる。このとき、最新の書込位置であるAREA5とAREA4との間で、データの連続性が失われているため、判定部３３０は先読み指示を読出部３５０に通知しない。したがって、セクタ６４−７９のデータ転送は行われるものの、後続するデータの先読み処理は行われないことになる。これは、バッファリングされているデータの連続性が既に損なわれていることから、今後読出要求がされるデータの連続性も損なわれていることが多いという予測に基づいている。一方、AREA4から直接データ転送を行うことで、予め先読みしていたデータを有効に利用できる。
【００５８】
一方、セクタ１１０−１１５のデータについて読出指示があった場合、判定部３３０はAREA5にセクタ１１０−１１５のデータが格納されていることを判定し、転送部３４０から受付部２４６に転送させる。このとき、AREA5では、データが連続して書き込まれているため、判定部３３０は先読み指示を読出部３５０に通知し、読出部３５０にセクタ１１６−１６３のデータを先読みさせる。
【００５９】
図７（ｂ）に示す状態で、セクタ０−３１のデータについて読出指示があった場合、判定部３３０は、セクタ０−３１のデータが連続する記憶領域に存在しないことを判定する。AREA3にセクタ１６−３１のデータ、AREA0にセクタ０−１５のデータが記録されているが、これらのAREAは連続していないため、キャッシュがヒットしない状態となる。判定部３３０は読出部３５０にセクタ０−３１のデータの読出指示と、セクタ３２−７９のデータの先読み指示を送り、また転送部３４０にセクタ０−３１のデータの転送指示を送る。
【００６０】
図７（ｃ）に示す状態で、セクタ０−３１のデータについて読出指示があった場合、判定部３３０はこのデータをポインタに近い記憶領域から検索する。AREA4にセクタ０−１５のデータが存在するが、セクタ１６−３１のデータを包含していないため無視する。AREA0、AREA1にセクタ０−３１のデータが連続して書き込まれていることを判定すると、判定部３３０は、転送部３４０にセクタ０−３１のデータの転送指示を送る。なお、最新のデータが書き込まれたAREA5とAREA1との間で、データが連続して書き込まれていないため、判定部３３０は先読み指示を読出部３５０に通知しない。
【００６１】
以上のように、サブ処理装置３００において、メモリ装置３１０のUNLOCK領域は、読出指示に基づいて先読みされたデータをシーケンシャルにバッファリングされる。キャッシュがヒットした場合には、そのデータをメモリ装置３１０から転送することで、ディスク８０から読み出す場合と比較して、転送時間を短縮することができる。また、先読み処理を行う場合に一定に制限を課しておくことで、先読み処理が無駄になる事態を予め回避することができ、バッテリの省電力化に貢献できる。
【００６２】
以上、本発明を実施例をもとに説明した。この実施例は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【図面の簡単な説明】
【００６３】
【図１】本発明の実施例である携帯型電子装置の正面図である。
【図２】携帯型電子装置の平面図である。
【図３】携帯型電子装置のハードウエア構成を示す図である。
【図４】本実施例の携帯型電子装置における中央処理装置とサブ処理装置の構成を示す図である。
【図５】メモリ装置の構造を概念的に示す図である。
【図６】読出指示を利用してメモリ装置にバッファリングする状態例を示す図である。
【図７】メモリ装置に書き込まれたデータのバッファリング状態例を示す図である。
【符号の説明】
【００６４】
２４０・・・分割指示部、２５０・・・メモリ装置、３１０・・・メモリ装置、３２０・・・領域割当部、３３０・・・判定部、３４０・・・転送部、３５０・・・読出部。
【図１】
2006163642.tif 000003
【図２】
2006163642.tif 000004
【図３】
2006163642.tif 000005
【図４】
2006163642.tif 000006
【図５】
2006163642.tif 000007
【図６】
2006163642.tif 000008
【図７】
2006163642.tif 000009