JP2012194882A - メモリ制御装置、メモリ装置、メモリ制御方法、及びプログラム - Google Patents
メモリ制御装置、メモリ装置、メモリ制御方法、及びプログラム Download PDFInfo
- Publication number
- JP2012194882A JP2012194882A JP2011059386A JP2011059386A JP2012194882A JP 2012194882 A JP2012194882 A JP 2012194882A JP 2011059386 A JP2011059386 A JP 2011059386A JP 2011059386 A JP2011059386 A JP 2011059386A JP 2012194882 A JP2012194882 A JP 2012194882A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- device driver
- data
- unit
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】ライトバック処理の実行に起因して他の処理の処理速度が低下することを抑制することが可能な、新規かつ改良されたメモリ制御装置、メモリ装置、メモリ制御方法、及びプログラムを提供する。
【解決手段】主記憶部へのデータの書き込み又は読み出しと、キャッシュブロックを複数有するキャッシュ部へのデータの一時的な書き込み又は読み出しと、を実行するデバイスドライバと、前記主記憶部又は前記キャッシュ部へのファイルシステムのデータの書き込み又は読み出しを、前記デバイスドライバに命令する制御部と、を備え、前記制御部は、前記キャッシュブロックに記憶されているデータを前記デバイスドライバによって前記主記憶部に移動させるデータ移動処理を実行可能なタイミング情報を、前記デバイスドライバに通知する、メモリ制御装置。
【選択図】図1
【解決手段】主記憶部へのデータの書き込み又は読み出しと、キャッシュブロックを複数有するキャッシュ部へのデータの一時的な書き込み又は読み出しと、を実行するデバイスドライバと、前記主記憶部又は前記キャッシュ部へのファイルシステムのデータの書き込み又は読み出しを、前記デバイスドライバに命令する制御部と、を備え、前記制御部は、前記キャッシュブロックに記憶されているデータを前記デバイスドライバによって前記主記憶部に移動させるデータ移動処理を実行可能なタイミング情報を、前記デバイスドライバに通知する、メモリ制御装置。
【選択図】図1
Description
本発明は、メモリ制御装置、メモリ装置、メモリ制御方法、及びプログラムに関する。
メモリ装置は、例えば、データを記憶可能な主記憶部とキャッシュブロックを有し、デバイスドライバが、主記憶部とキャッシュブロックへのデータの記憶等を制御する。
上記のメモリ装置では、デバイスドライバによる処理の高速化等の観点から、主記憶部には更新頻度が少ないデータが記憶され、キャッシュブロックには更新頻度が多いデータが記憶される(特許文献1参照)。なお、キャッシュブロックの容量は主記憶部に比べて小さいので、キャッシュされるデータが増えると、例えば古いデータは、キャッシュブロックから主記憶部へ移動する。かかる処理は、いわゆるライトバック処理として知られている。
ところで、Linuxのようなオペレーティングシステムでは、デバイスの制御処理(ドライバ)を抽象化し、ファイルシステムの制御処理と分離している。この抽象化のため、ファイルシステム制御は、デバイス固有の特性を知らずに動作する。
そして、主記憶部とキャッシュブロックのいずれかが不揮発メモリ上に構築された場合には、デバイスドライバだけが、ライトバック処理のタイミングを制御することになる。このため、ファイルシステムからデバイスドライバへ命令(例えば、書き換え要求)が発生した際に、ライトバック処理が実行されると、書き換え要求等の他の処理の処理速度が低下するという問題がある。
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、ライトバック処理の実行に起因して他の処理の処理速度が低下することを抑制することが可能な、新規かつ改良されたメモリ制御装置、メモリ装置、メモリ制御方法、及びプログラムを提供することにある。
上記課題を解決するために、本発明のある観点によれば、主記憶部へのデータの書き込み又は読み出しと、キャッシュブロックを複数有するキャッシュ部へのデータの一時的な書き込み又は読み出しと、を実行するデバイスドライバと、前記主記憶部又は前記キャッシュ部へのファイルシステムのデータの書き込み又は読み出しを、前記デバイスドライバに命令する制御部と、を備え、前記制御部は、前記キャッシュブロックに記憶されているデータを前記デバイスドライバによって前記主記憶部に移動させるデータ移動処理を実行可能なタイミング情報を、前記デバイスドライバに通知する、メモリ制御装置が提供される。
また、前記制御部による前記デバイスドライバへの命令は、アプリケーションからの処理要求に応じた命令であり、前記制御部は、前記アプリケーションから要求された処理内容を判別し、前記処理内容の判別結果から、要求された処理の後に他の処理が続けて要求されないと判定した場合に、前記タイミング情報を前記デバイスドライバに通知しても良い。
また、前記デバイスドライバは、前記キャッシュブロックの使用状態を記憶し、前記制御部から通知を受けた前記タイミング情報と、前記キャッシュブロックの使用状態とに基づいて、前記データ移動処理を実行するか否かを判定しても良い。
また、前記デバイスドライバは、前記キャッシュブロックと論理ブロックを対応付けて記憶し、前記タイミング情報の通知を受けた際に前記キャッシュブロックを使用している論理ブロックの数が所定数に達している場合に、前記データ移動処理を強制的に実行しても良い。
また、前記デバイスドライバは、前記キャッシュブロックと論理ブロックを対応付けて記憶し、前記タイミング情報の通知を受けた際に前記論理ブロックに割り当てられているキャッシュブロックの数が所定数に達している場合に、前記データ移動処理を強制的に実行しても良い。
また、前記デバイスドライバは、前記タイミング情報の通知を受けた際に前記キャッシュ部におけるデータを記憶しないキャッシュブロックの数が所定数以下の場合に、前記データ移動処理を強制的に実行しても良い。
また、前記制御部は、前記キャッシュブロックが対応づけられた論理ブロックに対するデータ記憶の優先度に関する優先度情報を前記デバイスドライバに通知し、前記デバイスドライバは、前記データ移動処理を実行する際に、前記制御部から通知を受けた前記優先度情報に基づいて、前記複数のキャッシュブロックのうちの前記優先度が最も低い前記論理ブロックに対応づけられたキャッシュブロックに記憶されているデータを、前記主記憶部に移動させても良い。
また、上記課題を解決するために、本発明の別の観点によれば、データを記憶する主記憶部と、キャッシュブロックを複数有し、データを一時的に記憶するキャッシュ部と、前記主記憶部へのデータの書き込み又は読み出しと、前記キャッシュ部へのデータの一時的な書き込み又は読み出しと、を実行するデバイスドライバと、前記主記憶部又は前記キャッシュ部へのファイルシステムのデータの書き込み又は読み出しを、前記デバイスドライバに命令する制御部と、を備え、前記制御部は、前記キャッシュブロックに記憶されているデータを前記デバイスドライバによって前記主記憶部に移動させるデータ移動処理を実行可能なタイミング情報を、前記デバイスドライバに通知する、メモリ装置が提供される。
また、上記課題を解決するために、本発明の別の観点によれば、デバイスドライバが、主記憶部にデータを記憶させ、又はキャッシュブロックを複数有するキャッシュ部にデータを一時的に記憶させることと、制御部が、前記主記憶部又は前記キャッシュ部へのファイルシステムのデータの書き込み又は読み出しを、前記デバイスドライバに命令することと、前記制御部が、前記キャッシュブロックに記憶されているデータを前記デバイスドライバによって前記主記憶部に移動させるデータ移動処理を実行可能なタイミング情報を、前記デバイスドライバに通知することと、を含む、メモリ制御方法が提供される。
また、上記課題を解決するために、本発明の別の観点によれば、デバイスドライバが、主記憶部にデータを記憶させ、又はキャッシュブロックを複数有するキャッシュ部にデータを一時的に記憶させることと、制御部が、前記主記憶部又は前記キャッシュ部へのファイルシステムのデータの書き込み又は読み出しを、前記デバイスドライバに命令することと、前記制御部が、前記キャッシュブロックに記憶されているデータを前記デバイスドライバによって前記主記憶部に移動させるデータ移動処理を実行可能なタイミング情報を、前記デバイスドライバに通知することと、をコンピュータに実行させるための、プログラムが提供される。
以上説明したように本発明によれば、ライトバック処理の実行に起因して他の処理の処理速度が低下することを抑制できる。
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
なお、説明は以下の順序で行うものとする。
1.メモリ装置の概要
2.初回起動時の処理
3.ファイル作成時の処理
3−1.ファイル作成処理の概要
3−2.write処理におけるキャッシュ優先度の通知
3−2−1.書き換え処理
3−3.close処理におけるタイミング情報の通知
3−3−1.flush処理
4.mkdir処理におけるタイミング情報の通知
5.まとめ
1.メモリ装置の概要
2.初回起動時の処理
3.ファイル作成時の処理
3−1.ファイル作成処理の概要
3−2.write処理におけるキャッシュ優先度の通知
3−2−1.書き換え処理
3−3.close処理におけるタイミング情報の通知
3−3−1.flush処理
4.mkdir処理におけるタイミング情報の通知
5.まとめ
<1.メモリ装置の概要>
図1を参照して、本実施形態に係るメモリ装置の一例であるメモリ管理装置10の概要について説明する。図1は、メモリ管理装置10の構成を示すブロック図である。
図1を参照して、本実施形態に係るメモリ装置の一例であるメモリ管理装置10の概要について説明する。図1は、メモリ管理装置10の構成を示すブロック図である。
図1に示すように、メモリ管理装置10は、アプリケーション部110と、オペレーティングシステム部120と、主記憶部の一例である主記憶領域部130と、キャッシュ部の一例であるキャッシュブロック部140を有する。
(アプリケーション部110)
アプリケーション部110は、メモリ管理装置10における様々な機能を実現するためのものである。アプリケーション部110は、ファイルシステムに関する要求をオペレーションシステム部120に送る。例えば、アプリケーション部110は、ファイルの作成又は削除の要求や、ディレクトリの作成又は削除の要求を、オペレーションシステム部120に送る。
アプリケーション部110は、メモリ管理装置10における様々な機能を実現するためのものである。アプリケーション部110は、ファイルシステムに関する要求をオペレーションシステム部120に送る。例えば、アプリケーション部110は、ファイルの作成又は削除の要求や、ディレクトリの作成又は削除の要求を、オペレーションシステム部120に送る。
(オペレーションシステム部120)
オペレーションシステム部120は、メモリ管理装置10の動作を制御するためのものである。オペレーションシステム部120は、アプリケーション部110の要求を受けて、主記憶領域部130とキャッシュブロック部140におけるデータの読み出しや書き込みの処理を制御する。オペレーションシステム部120は、アプリケーション部110の要求に応じた処理結果をアプリケーション部110に送る。
オペレーションシステム部120は、メモリ管理装置10の動作を制御するためのものである。オペレーションシステム部120は、アプリケーション部110の要求を受けて、主記憶領域部130とキャッシュブロック部140におけるデータの読み出しや書き込みの処理を制御する。オペレーションシステム部120は、アプリケーション部110の要求に応じた処理結果をアプリケーション部110に送る。
(主記憶部130)
主記憶領域部130は、不揮発性メモリであり、様々なデータを記憶する。主記憶領域部130は、データをファイル単位で扱うFATファイルシステムでフォーマットされている。
主記憶領域部130は、不揮発性メモリであり、様々なデータを記憶する。主記憶領域部130は、データをファイル単位で扱うFATファイルシステムでフォーマットされている。
(キャッシュブロック部140)
キャッシュブロック部140は、不揮発性メモリであり、使用頻度(アクセス頻度)の高いデータを一時的に記憶する。キャッシュブロック部140は、キャッシュブロックを複数有し、各キャッシュブロックにデータを記憶可能である。キャッシュブロック部140も、FATファイルシステムでフォーマットされている。なお、キャッシュブロック部140の容量は、主記憶部130の容量に比べて小さい。キャッシュブロック部140のデータ量が所定量を超えると、詳細は後述するが、キャッシュブロック部140のデータが主記憶部130に移動するライトバック処理が行われる。
キャッシュブロック部140は、不揮発性メモリであり、使用頻度(アクセス頻度)の高いデータを一時的に記憶する。キャッシュブロック部140は、キャッシュブロックを複数有し、各キャッシュブロックにデータを記憶可能である。キャッシュブロック部140も、FATファイルシステムでフォーマットされている。なお、キャッシュブロック部140の容量は、主記憶部130の容量に比べて小さい。キャッシュブロック部140のデータ量が所定量を超えると、詳細は後述するが、キャッシュブロック部140のデータが主記憶部130に移動するライトバック処理が行われる。
(ファイルシステムについて)
ここで、ファイルシステムについて、FAT(File Allocation Table)ファイルシステムを例に挙げて説明する。
ここで、ファイルシステムについて、FAT(File Allocation Table)ファイルシステムを例に挙げて説明する。
ファイルシステムとは、記憶媒体(本実施形態における主記憶領域部130とキャッシュブロック部140)上においてファイルを管理するための仕組みである。具体的には、ファイルシステムは、ユーザが論理的に扱うファイルやディレクトリを、実際の物理的な記憶媒体上に対応させ、ファイルやディレクトリ自体を構成するシステムである。FATファイルシステムは、ディレクトリエントリとFATと呼ばれる情報によって管理される。
FATファイルシステムにおいて、ファイルはクラスタを単位として構成されているが、同一ファイルを構成する複数のクラスタの記憶媒体上の物理的な位置は必ずしも連続しているわけではない。複数のクラスタがどのような順につながって、1つのファイルを構成しているかを管理しているのが、FATである。
ディレクトリとは、ファイルを管理するための階層構造を持つグループ名である。各ディレクトリに含まれるファイルの情報は、ディレクトリエントリと呼ばれる。ディレクトリエントリには、ファイルや他のディレクトリの名前、拡張子、属性、データサイズ、ファイルの開始クラスタの番号(開始クラスタ番号)等の情報が含まれている。最上位のディレクトリをルートディレクトリと呼び、下位のディレクトリをサブディレクトリと呼ぶ。
FATファイルシステムによってフォーマットされた記憶媒体は、複数のFAT領域、ルートディレクトリ領域、実データ領域等を有する。FAT領域は、データ領域に記憶されているデータのファイル本体の在り処を示す情報であるFAT項目を記憶する領域である。FAT領域は、通常2つのFAT領域であり、2つのFAT領域には、同一の内容が記憶される。
ルートディレクトリ領域は、ファイルの在り処を管理する領域である。ルートディレクトリ領域には、ルートディレクトリに存在するファイルと、サブディレクトリに関する情報を記述したルートディレクトリエントリが記憶される。データ領域は、ファイルの内容(実データ)と、サブディレクトリ以下に存在するファイルとサブディレクトリに関する情報が記憶される。
そして、記憶媒体におけるデータのアクセスは、まず、ルートディレクトリエントリに記述された開始クラスタ番号を参照して、データ領域に記憶されたファイルの一部が読み出される。次に、FATを参照して次のデータが記憶されたデータ領域内の位置が特定され、特定された位置のデータが読み出される。
(ファイルシステム制御部150)
図1に戻って、メモリ管理装置10の構成の説明を続ける。オペレーティングシステム部120は、制御部の一例であるファイルシステム制御部150と、デバイスドライバの一例であるストレージデバイスドライバ(単に、デバイスドライバとも呼ぶ)160を有する。
図1に戻って、メモリ管理装置10の構成の説明を続ける。オペレーティングシステム部120は、制御部の一例であるファイルシステム制御部150と、デバイスドライバの一例であるストレージデバイスドライバ(単に、デバイスドライバとも呼ぶ)160を有する。
ファイルシステム制御部150は、アプリケーション部110からの要求に応じた命令を、デバイスドライバ160に送る。例えば、ファイルシステム制御部150は、主記憶領域部130又はキャッシュブロック部140へのデータの書き込み又は読み出しを、デバイスドライバ160に命令する。
ファイルシステム制御部150は、キャッシュブロック部140の各キャッシュブロックが対応づけられた論理ブロックに対するデータ記憶の優先度(以下、キャッシュ優先度とも呼ぶ)に関する優先度情報をデバイスドライバ160に通知する。具体的には、ファイルシステム制御部150は、メモリ管理装置10の初回起動時や、キャッシュブロック部140においてデータを記憶しないキャッシュブロックを割り当てる時に、各キャッシュブロックが対応づけられた論理ブロックに対する優先度情報をデバイスドライバ160に通知する。
ここで、図2と図3を参照して、キャッシュ優先度の通知に伴うファイルシステム制御部150の処理を説明する。図2は、キャッシュ優先度の割当て例を示す図である。図3は、キャッシュ優先度の通知内容を示す図である。
まず、ファイルシステム制御部150は、デバイスドライバ160から論理ブロックのサイズを取得する。例えば図2に示すように1つの論理ブロックが4つのクラスタを含む場合には、論理ブロックのサイズは4クラスタとなる。
次に、ファイルシステム制御部150は、データが置かれる領域の用途を調査する。例えばFAT型フォーマットの場合、ファイルシステム制御部150は、使用中の全クラスタに対して、ファイル用かディレクトリ用かを調査する。図2では、全クラスタがファイル用として使用されている。
次に、ファイルシステム制御部150は、調査結果に基づいて、論理ブロック単位でのキャッシュ優先度を決定する。本実施形態のファイルシステム制御部150は、以下のように論理ブロックに対してキャッシュ優先度の割当てを行う。すなわち、ファイルシステム制御部150は、FATが置かれる論路ブロックについては、常に更新されるため、キャッシュ優先度を高として割り当て、ディレクトリが置かれる論理ブロックについては、キャッシュ優先度を中として割り当てる。ファイルだけが置かれる論理ブロックについては、ディレクトリが置かれる論理ブロックよりも更新頻度が少なく、かつキャッシュしておく必要性が乏しいため、ファイルシステム制御部150は、キャッシュ優先度を低として割り当てる。例えば、図2の論理ブロックではファイルのみが置かれるので、ファイルシステム制御部150は、論理ブロックのキャッシュ優先度を低として割り当てる。
ファイルシステム制御部150は、全ての論理ブロックに対して上述した処理を行って、全ての論理ブロックに対してキャッシュ優先度を割り当てる。その後、ファイルシステム制御部150は、図3に示すように、全ての論理ブロックに割り当てたキャッシュ優先度を、デバイスドライバ160に通知する。
なお、上記では、論理ブロックに割り当てられる優先度が、高・中・低の3つであることとしたが、これに限定されない。例えば、割り当てられる優先度は、高・低の2つであっても良く、又は4つ以上であっても良い。
このように、ファイルシステム制御部150が優先度情報をデバイスドライバ160に通知することによって、デバイスドライバ160は、ライトバック処理の際にキャッシュ優先度の低いキャッシュブロックに記憶されたデータを優先して移動させることができる。この結果、ライトバック処理の際に、更新頻度の高いデータを主記憶領域130に移動させることを防止できる。また、前記データが主記憶領域130に移動することによる、前記データに対するアクセス時間が長くなることを防止できる。
また、ファイルシステム制御部150は、ライトバック処理(データ移動処理)を実行可能なタイミング情報を、デバイスドライバ160に通知する。具体的には、ファイルシステム制御部150は、アプリケーション部110から要求された処理内容を判別し、処理内容の判別結果から、要求された処理の後に他の処理が続けて要求されないと判定した場合に、タイミング情報をデバイスドライバ160に通知する。例えば、アプリケーション部110からファイルのclose処理等を受けた場合に、ファイルシステム制御部150は、タイミング情報をデバイスドライバ160に通知する。
このように、ファイルシステム制御部150がタイミング情報をデバイスドライバ160に通知することによって、デバイスドライバ160は、他の処理(例えば、write処理)の実行中にライトバック処理が行われることを防止できる。この結果、ライトバック処理に起因してwrite処理等の他の処理の処理速度が低下することを防止できる。
(デバイスドライバ160)
図1に戻って、メモリ管理装置10の構成の説明を続ける。デバイスドライバ160は、ファイルシステム制御部150からの命令を受けて、主記憶領域部130とキャッシュブロック140を制御する。デバイスドライバ160は、主記憶領域部130へのデータの書き込み又は読み出しと、キャッシュブロック部140へのデータの一時的な書き込み又は読み出しとを実行する。
図1に戻って、メモリ管理装置10の構成の説明を続ける。デバイスドライバ160は、ファイルシステム制御部150からの命令を受けて、主記憶領域部130とキャッシュブロック140を制御する。デバイスドライバ160は、主記憶領域部130へのデータの書き込み又は読み出しと、キャッシュブロック部140へのデータの一時的な書き込み又は読み出しとを実行する。
デバイスドライバ160は、ファイルシステム制御部150から通知を受けた優先度情報に基づいて、ライトバック処理の際にデータが主記憶領域部130に移動されるキャッシュブロックを選択する。具体的には、デバイスドライバ160は、キャッシュブロック部140を構成する複数のキャッシュブロックのうちの、キャッシュ優先度が最も低いキャッシュブロックを選択する。そして、デバイスドライバ160は、選択したキャッシュ優先度が最も低いキャッシュブロックに記憶されているデータを、ライトバック処理の際に主記憶領域130に移動させる。これにより、ライトバック処理の際に、キャッシュ優先度が高いキャッシュブロックに記憶されたデータ(更新頻度が高いデータ)が、主記憶領域部130に移動されることを抑制できる。
なお、デバイスドライバ160は、キャッシュブロックが空いている場合には、論理ブロックのキャッシュ優先度に関係無く、空いているキャッシュブロックにデータを書き込む。一方で、キャッシュブロックが空いていない場合には、デバイスドライバ160は、ライトバック処理を行い、空きキャッシュブロックを確保する。
デバイスドライバ160は、ファイルシステム制御部150から通知を受けた優先度情報を、キャッシュブロックの管理情報の一部として記憶している。
ここで、図4を参照して、デバイスドライバ160が記憶しているキャッシュブロックの管理情報について説明する。図4は、キャッシュブロックの管理情報を示す図である。管理情報は、キャッシュされる論理ブロックと、キャッシュブロックとの対応関係を示すものである。
管理情報には、論理ブロックに関して、アドレスと、使用状況と、キャッシュ優先度の情報が含まれる。ここで、使用状況は、各論理ブロック(例えば、図4の4つの論理ブロック)を比較したものであり、数が小さいほど最近使用された(すなわち、データが書き込まれた)ことを示す。図4では、アドレス0の論理ブロックが、4つの論理ブロックの中で直近に使用されている。キャッシュ優先度として、高・中・低の3つのいずれかが論理ブロック毎に割り当てられる。キャッシュ優先度が高い論理ブロックほど、優先してキャッシュされる。図4では、アドレス0の論理ブロックの優先度が高となっている。なお、キャッシュできる論理ブロックの数には、上限があり、図4では5つである。
また、一つの論理ブロックに対して、複数のキャッシュブロックが割当て可能となっている。図4では、アドレス0の論理ブロックに対して、アドレス0のキャッシュブロックと、アドレス4のキャッシュブロックが割り当てられている。なお、一つの論理ブロックに割当て可能なキャッシュブロックの数には、上限があり、図4では3つである。
デバイスドライバ160は、論理ブロック内のオフセットアドレス毎のアドレス変換情報を記憶している。すなわち、デバイスドライバ160は、オフセットアドレスに対応するデータが、何れのキャッシュブロックのどのオフセットアドレスに記憶されているかを記憶している。
図5は、オフセットアドレス毎のアドレス変換情報を示す図である。図5では、アドレス0の論理ブロック内のオフセットアドレス毎の、アドレス変換情報が示されている。例えば、論理ブロック内のオフセットアドレス0に対応するデータは、キャッシュブロック0のオフセットアドレス3に記憶されている。
デバイスドライバ160は、ファイルシステム制御部150から優先度情報の通知を受けた際に、上述した管理情報を更新する。そして、デバイスドライバ160は、ライトバック処理の際に、更新後の優先度情報に基づいて、キャッシュ優先度が最も低いキャッシュブロックに記憶されているデータを、主記憶領域部130に移動させる。これにより、優先度情報を受けた後のライトバック処理において、キャッシュ優先度が最も低いキャッシブロックに記憶されたデータが、主記憶領域部130に移動することとなる。
キャッシュ優先度が同じ論理ブロックが複数ある場合には、デバイスドライバ160は、使用時期が古い論理ブロックに対応づけられたキャッシュブロックに記憶されているデータを、主記憶領域部130に移動させる。使用時期が古いキャッシュブロックは、使用時期が新しいキャッシュブロックに比べて、再度データを更新する確立が低い。このため、優先度が同じキャッシュブロックが複数ある場合でも、ライトバック処理の際に、更新頻度が高いデータが主記憶領域部130に移動することを抑制できる。
また、デバイスドライバ160は、上述したように、ファイルファイルシステム制御部150からライトバック処理のタイミング情報を受ける。デバイスドライバ160は、タイミング情報を受けると、ライトバック処理を実行するか否かを判定する。具体的には、デバイスドライバ160は、タイミング情報を受けると、管理情報内のキャッシュブロックの使用状態に基づいて、ライトバック処理を実行するか否かを判定する。
そして、デバイスドライバ160は、以下のような場合に、ライトバック処理を実行する。まず、デバイスドライバ160は、タイミング情報の通知を受けた際にキャッシュブロックを使用している論理ブロックの数が所定数に達している場合に、ライトバック処理を強制的に実行する。これにより、キャッシュ優先度の高い論理ブロックに対応するキャッシュブロックのみにデータを記憶させることができる。
また、デバイスドライバ160は、タイミング情報の通知を受けた際に論理ブロックに割り当てられているキャッシュブロックの数が所定数に達している場合に、ライトバック処理を強制的に実行する。これにより、1つの論理ブロックに過大にキャッシュブロックが割り当てられることを防止できる。
更に、デバイスドライバ160は、タイミング情報の通知を受けた際に前記キャッシュ部におけるデータを記憶しないキャッシュブロックの数が所定数以下の場合に、ライトバック処理を強制的に実行する。これにより、所定数の空きキャッシュブロックを維持することができる。
このように、デバイスドライバ160がタイミング情報を受けた際にライトバック処理を実行することで、他の処理中にライトバック処理が実行されることを防止できるので、他の処理の処理速度の低下を防止できる。
メモリ管理装置10は、更に、不図示のCPU、ROM、RAM等を有する。CPUは、ROMや外部の記憶装置等から読み出されたプログラムをRAM上に展開して実行することで、各種の処理(後述するファイル作成処理等)を実現する。なお、プログラムは、記録媒体に記録されうる。
<2.初回起動時の処理>
上述したように、ファイルシステム制御部150は、メモリ管理装置10の初回起動時に、優先度情報をデバイスドライバ160に通知する。以下においては、図6を参照して、メモリ管理装置10の初回起動時の優先度情報の通知処理について説明する。図6は、メモリ管理装置10の初回起動時の処理を説明するためのフローチャートである。本処理は、CPUがROM等に記憶されたプログラムを実行することで、実現される。
上述したように、ファイルシステム制御部150は、メモリ管理装置10の初回起動時に、優先度情報をデバイスドライバ160に通知する。以下においては、図6を参照して、メモリ管理装置10の初回起動時の優先度情報の通知処理について説明する。図6は、メモリ管理装置10の初回起動時の処理を説明するためのフローチャートである。本処理は、CPUがROM等に記憶されたプログラムを実行することで、実現される。
図6のフローチャートは、アプリケーション部110が、ファイルシステム制御部150に対してマウントを要求するところから開始される(ステップS102)。ファイルシステム制御部150は、アプリケーション部110のマウント要求を受けると、マウント処理を実行する(ステップS104)。
ここで、ステップS104のマウント処理について説明する。
ファイルシステム制御部150は、アプリケーション部110に対して、例えばISO/IEC9945(POSIX)が定義するようなインターフェースを提供する。また、ファイルシステム制御部150は、ファイルシステム特有の構成(フォーマット)でデバイスドライバ160上のファイルやディレクトリを管理する。例えば、図7に示すように、ISO/IEC9293(JIS X 0605)(FAT型フォーマット)が定義するフォーマットが用いられる。図7は、FAT型ファイルシステムのパーティション構成を示す図である。
ファイルシステム制御部150は、アプリケーション部110に対して、例えばISO/IEC9945(POSIX)が定義するようなインターフェースを提供する。また、ファイルシステム制御部150は、ファイルシステム特有の構成(フォーマット)でデバイスドライバ160上のファイルやディレクトリを管理する。例えば、図7に示すように、ISO/IEC9293(JIS X 0605)(FAT型フォーマット)が定義するフォーマットが用いられる。図7は、FAT型ファイルシステムのパーティション構成を示す図である。
そして、マウント処理は、ファイルシステム制御部150がアプリケーション部110に提供するインターフェースを有効にするための準備処理であり、デバイスドライバ160からフォーマットの情報を読み取る処理である。ここで、読み取られる情報は、図7のFAT型フォーマットのBPB(BIOSパラメータブロック)領域、FAT1領域、FAT2領域に格納されている情報である。具体的には、読み取られる情報は、ファイルシステムフォーマットを管理するための情報の格納アドレスとサイズ、データの格納アドレスとサイズに関する情報である。なお、図7のFAT型フォーマットの各クラスタは、ディレクトリ又はファイルとして使用される。
図6のフローチャートに戻って、初回起動時の処理の説明を続ける。ステップS104のマウント処理の実行後、ファイルシステム制御部150は、デバイスドライバ160にキャッシュ優先度を通知する(ステップS106)。
次に、デバイスドライバ160は、通知を受けたキャッシュ優先度に基づいて、保持している各論理ブロックのキャッシュ優先度を更新する(ステップS108)。例えば、デバイスドライバ160は、キャッシュ優先度を中から高へ変更して、更新する。
次に、ファイルシステム制御部150は、マウント処理結果をアプリケーション部110へ送る(ステップS110)。アプリケーション部110がマウント処理結果を受けとると(ステップS112)、初回起動時の処理が終了する。
このように、初回起動時の処理においては、ファイルシステム制御部150からデバイスドライバ160にキャッシュ優先度が通知され、デバイスドライバ160は、保持している各論理ブロックのキャッシュ優先度を更新する。かかる場合には、ファイルシステム制御部150が優先度情報をデバイスドライバ160に通知することによって、デバイスドライバ160は、ライトバック処理の際にキャッシュ優先度の低いキャッシュブロックに記憶されたデータを優先して移動させることができる。この結果、ライトバック処理の際に、更新頻度の高いデータを主記憶領域130に移動させることを防止できる。
<3.ファイル作成時の処理>
上述したように初回起動時にキャッシュ優先度の通知が行われたが、ファイル作成時にもキャッシュ優先度の通知が行われる。そこで、以下においては、ファイル作成時のキャッシュ優先度の通知処理について説明する。
上述したように初回起動時にキャッシュ優先度の通知が行われたが、ファイル作成時にもキャッシュ優先度の通知が行われる。そこで、以下においては、ファイル作成時のキャッシュ優先度の通知処理について説明する。
(3−1.ファイル作成処理の概要)
まず、図8を参照して、ファイル作成処理の概要について説明する。図8は、ファイル作成処理の概要を説明するためのフローチャートである。本処理は、CPUがROM等に記憶されたプログラムを実行することで、実現される。
まず、図8を参照して、ファイル作成処理の概要について説明する。図8は、ファイル作成処理の概要を説明するためのフローチャートである。本処理は、CPUがROM等に記憶されたプログラムを実行することで、実現される。
図8のフローチャートは、アプリケーション部110がファイルシステム制御部150に対してファイルのopenを要求するところから開始される(ステップS202)。ファイルシステム制御部150は、アプリケーション部110のopen要求を受けると、open処理を実行する(ステップS204)。なお、open処理の実行の際にキャッシュ優先度の通知が行われるが、詳細については後述する。
アプリケーション部110は、open処理の結果をファイルシステム制御部150から受け取る(ステップS206)。次に、アプリケーション部110は、ファイルシステム制御部150に対してファイルのwriteを要求する(ステップS208)。
ファイルシステム制御部150は、アプリケーション部110のwrite要求を受けると、write処理を実行する(ステップS210)。なお、open処理の実行の際にキャッシュ優先度の通知が行われるが、詳細については後述する。
アプリケーション部110は、write処理の結果をファイルシステム制御部150から受け取る(ステップS212)。そして、ファイルのwriteを更に行う場合には(ステップS214:Yes)、上述したステップS208〜S212の処理が繰り返される。
一方で、ファイルのwriteを終了する場合には(ステップS214:No)、アプリケーション部110は、ファイルシステム制御部150に対してファイルのcloseを要求する(ステップS216)。
ファイルシステム制御部150は、アプリケーション部110のclose要求を受けると、close処理を実行する(ステップS218)。なお、close処理の実行の際に、上述したタイミング情報の通知が行われるが、詳細については後述する。
アプリケーション部110は、close処理の結果をファイルシステム制御部150から受け取る(ステップS220)。これにより、ファイル作成時の一連の処理が完了する。
(3−2.write処理におけるキャッシュ優先度の通知)
図8のステップS204のopen処理におけるキャッシュ優先度の通知処理と、ステップS210のwrite処理におけるキャッシュ優先度の通知処理は、同様である。このため、以下においては、write処理におけるキャッシュ優先度の通知処理について説明する。
図8のステップS204のopen処理におけるキャッシュ優先度の通知処理と、ステップS210のwrite処理におけるキャッシュ優先度の通知処理は、同様である。このため、以下においては、write処理におけるキャッシュ優先度の通知処理について説明する。
図9は、write処理におけるキャッシュ優先度の通知を説明するためのフローチャートである。まず、ファイルシステム制御部150は、データの書き換え対象の領域(書換領域)を決める(ステップS302)。
次に、ファイルシステム制御部150は、書換領域に対応した論理ブロックのキャッシュ優先度に変更があるか否かを判定する(ステップS304)。キャッシュ優先度に変更がある場合には(ステップS304:Yes)、ファイルシステム制御部150は、デバイスドライバ160にキャッシュ優先度の通知を行う(ステップS306)。
ここで、キャッシュ優先度の通知に伴うファイルシステム制御部150の処理を説明する。図2を参照して前述したように、ファイルシステム制御部150は、論理ブロックの用途に基づいて、論理ブロックのキャッシュ優先度を割り当てる。その後、ファイルシステム制御部150は、論理ブロックに割り当てたキャッシュ優先度を、デバイスドライバ160に通知する。
なお、初回起動時の処理においては、図3を参照して前述したように、全ての論理ブロックの優先度を通知するものとしたが、write処理においては、新規に割り当てられた論理ブロックのキャッシュ優先度のみを通知しても良い。これにより、通知の際のデータ量を少なくでき、キャッシュ優先度の通知の伴う処理時間を短縮できる。
図9のフローチャートに戻って、本処理の説明を続ける。デバイスドライバ160は、ファイルシステム制御部150から通知を受けたキャッシュ優先度に基づいて、保持している論理ブロックのキャッシュ優先度を更新する(ステップS308)。
ファイルシステム制御部150は、デバイスドライバ160にデバイスの書き換えを依頼する(ステップS310)。デバイス書き換えの依頼を受けたデバイスドライバ160は、対象ブロックのキャッシュ優先度に基づいて、書き換え処理を行う(ステップS312)。なお、書き換え処理の詳細については、後述する。
ファイルシステム制御部150は、書き換え処理の結果をデバイスドライバ160から受け取って、処理結果を確認する。そして、書き換え処理が終了するまで、上述したステップS302〜312の処理を繰り返す。
全ての書き換え処理が完了すると、本処理は終了し、図8のフローチャートに戻ることになる。
全ての書き換え処理が完了すると、本処理は終了し、図8のフローチャートに戻ることになる。
(3−2−1.書き換え処理)
図10を参照して、図9のステップS312の書き換え処理について説明する。図10は、書き換え処理を説明するためのフローチャートである。
図10を参照して、図9のステップS312の書き換え処理について説明する。図10は、書き換え処理を説明するためのフローチャートである。
書き換え処理において、デバイスドライバ160は、まず、write命令の該当アドレスから、論理ブロックアドレスと論理ブロック内のオフセットアドレスを算出する(ステップS402)。デバイスドライバ160は、図4の管理情報と、図5のアドレス変換情報とに基づいて、論理ブロックアドレスと論理ブロック内のオフセットアドレスを算出する。
次に、デバイスドライバ160は、管理情報から、論理ブロックにキャッシュブロックが割当て済みか否かを判定する(ステップS404)。ステップS404で論理ブロックにキャッシュブロックが割当て済みである場合には(Yes)、デバイスドライバ160は、キャッシュブロックへのデータの追記が可能か否かを判定する(ステップS406)。
ステップS406でキャッシュブロックへのデータの追記が可能である場合には(Yes)、デバイスドライバ160は、キャッシュブロックにデータを書き込む(ステップS408)。そして、デバイスドライバ160は、管理情報を更新する(ステップS410)。
ステップS406でキャッシュブロックへのデータの追記が不可能である場合には(No)、デバイスドライバ160は、論理ブロックに割り当てられているキャッシュブロックの使用数を確認する(ステップS412)。そして、デバイスドライバ160は、論理ブロックに割り当てられているキャッシュブロックの使用数が上限数(例えば、図2に示す3つ)に達しているか否かを判定する(ステップS414)。
ステップS414でキャッシュブロックの使用数が上限数に達している場合には(Yes)、デバイスドライバ160は、空きキャッシュブロックを作成すべく、ライトバック処理(A)を実行する(ステップS416)。
(ライトバック処理(A)について)
ここで、図11を参照して、ステップS416のライトバック処理(A)について説明する。図11は、ライトバック処理(A)を説明するためのフローチャートである。
ここで、図11を参照して、ステップS416のライトバック処理(A)について説明する。図11は、ライトバック処理(A)を説明するためのフローチャートである。
図11のフローチャートで、デバイスドライバ160は、まず、有効データをキャッシュブロックから主記憶領域部130へ移動させる(ステップS502)。そして、デバイスドライバ160は、有効データが移動したキャッシュブロックを、空きキャッシュブロックとする(ステップS504)。有効データを移動させるキャッシュブロックは、1つ、又は複数であっても良い。
次に、デバイスドライバ160は、有効データが移動したキャッシュブロックについて、図2に示す管理情報を更新する(ステップS506)。これにより、ライトバック処理(A)が完了し、図10のフローチャートに戻る。
上述したライトバック処理(A)の場合には、1つの論理ブロックに割り当てるキャッシュブロックの数を制限することにあるので、キャッシュブロック部140の容量が小さくても、更新頻度の高い複数の論理ブロックの各々にキャッシュブロックを割り当てることができる。
図10のフローチャートに戻って、書き換え処理の説明を続ける。ステップS416のライトバック処理(A)が完了すると、デバイスドライバ160は、空きのキャッシュブロック(有効データが移動したキャッシュブロック)を取得する(ステップS420)。その後、デバイスドライバ160は、空きのキャッシュブロックに新たにデータを書き込み(ステップS408)、管理情報を更新する(ステップS410)。
ステップS404で論理ブロックにキャッシュブロックが割当て済みでない場合には(No)、デバイスドライバ160は、キャッシュブロックを使用している論理ブロックの数を確認する(ステップS422)。そして、デバイスドライバ160は、キャッシュブロックを使用している論理ブロックの数が上限数(例えば、図2に示す5つ)に達しているか否かを判定する(ステップS424)。
ステップS424でキャッシュブロックを使用している論理ブロックの数が上限数に達している場合には(Yes)、デバイスドライバ160は、空きキャッシュブロックを作成すべく、ライトバック処理(B)を実行する(ステップS426)。
(ライトバック処理(B)について)
ここで、図12を参照して、ライトバック処理(B)について説明する。図12は、ライトバック処理(B)を説明するためのフローチャートである。
ここで、図12を参照して、ライトバック処理(B)について説明する。図12は、ライトバック処理(B)を説明するためのフローチャートである。
デバイスドライバ160は、まず、管理情報から、キャッシュ優先度が低の論理ブロックに割り当てられたキャッシュブロックを全て検索する(ステップS552)。そして、デバイスドライバ160は、キャッシュ優先度が低の論理ブロックに割り当てられたキャッシュブロックが存在するか否かを判定する(ステップS554)。
ステップS554でキャッシュ優先度が低の論理ブロックに割り当てられたキャッシュブロックが存在する場合には(Yes)、デバイスドライバ160は、キャッシュ優先度が低の論理ブロックの中で最近使用されていない論理ブロックを検索する(ステップS556)。すなわち、デバイスドライバ160は、図4の管理情報の中で使用状況を示す値が大きい論理ブロックを検索する。
次に、デバイスドライバ160は、ステップS556で検索された論理ブロックに割り当てられたキャッシュブロックの有効データを、主記憶領域部130に移動させる(ステップS558)。これにより、デバイスドライバ160は、キャッシュ優先度が低の同じ論理ブロックの中で最近使用されていない論理ブロックに割り当てられたキャッシュブロックを、空きキャッシュブロックにする(ステップS560)。なお、論理ブロックに複数のキャッシュブロックが割り当てられている場合には、デバイスドライバ160は、割り当てられたキャッシュブロックを、空きキャッシュブロックにする。そして、デバイスドライバ160は、管理情報を更新する(ステップS562)。
ステップS554でキャッシュ優先度が低の論理ブロックに割り当てられたキャッシュブロックが存在しない場合には(No)、デバイスドライバ160は、キャッシュ優先度が中の論理ブロックに割り当てられたキャッシュブロックを全て検索する(ステップS564)。そして、デバイスドライバ160は、キャッシュ優先度が中の論理ブロックに割り当てられたキャッシュブロックが存在するか否かを判定する(ステップS566)。
ステップS566でキャッシュ優先度が中の論理ブロックに割り当てられたキャッシュブロックが存在する場合には(Yes)、デバイスドライバ160は、キャッシュ優先度が中の論理ブロックの中で最近使用されていない論理ブロックを検索する(ステップS556)。そして、デバイスドライバ160は、前述したステップS558〜S562の処理を行う。
ステップS566でキャッシュ優先度が中の論理ブロックに割り当てられたキャッシュブロックが存在しない場合には(No)、デバイスドライバ160は、キャッシュ優先度が高の論理ブロックに割り当てられたキャッシュブロックを全て検索する(ステップS568)。次に、デバイスドライバ160は、キャッシュ優先度が高の論理ブロックの中で最近使用されていない論理ブロックを検索する(ステップS556)。そして、デバイスドライバ160は、前述したステップS558〜S562の処理を行う。
ステップS562の管理情報の更新が行われると、ライトバック処理(B)が完了し、図10のフローチャートに戻る。
ライトバック処理(B)においては、デバイスドライバ160が、ファイルシステム制御部150から通知されたキャッシュ優先度に基づいて、キャッシュ優先度が低い論理ブロックに割り当てられたキャッシュブロックのデータを主記憶領域部130に移動させる。このため、ライトバック処理の際に、キャッシュ優先度が高い論理ブロックに割り当てられたキャッシュブロックに記憶されたデータ(更新頻度が高いデータ)が、主記憶領域部130に移動することを抑制できる。
また、ライトバック処理(B)においては、キャッシュ優先度が同じ論理ブロックが複数ある場合には、デバイスドライバ160は、使用時期が最も古い論理ブロックに割り当てられたキャッシュブロックのデータを主記憶領域部130に移動させる。使用時期が最も古い論理ブロックは、その後に更新される可能性が低いので、他の論理ブロック(その後に更新される可能性が高い論理ブロック)に割り当てられたキャッシュブロックのデータが、主記憶領域部130に移動することを抑制できる。
図10のフローチャートに戻って、書き換え処理の説明を続ける。ステップS426のライトバック処理(B)が完了すると、デバイスドライバ160は、空きのキャッシュブロックを取得する(ステップS420)。その後、デバイスドライバ160は、空きのキャッシュブロックにデータを書き込み(ステップS408)、管理情報を更新する(ステップS410)。
なお、ステップS418で空きキャッシュブロックがある場合には(Yes)、デバイスドライバ160は、ライトバック処理を行わずに、空いているキャッシュブロックを取得する(ステップS420)。一方で、ステップS418で空きキャッシュブロックが無い場合には(No)、デバイスドライバ160は、前述したライトバック処理(B)を行って(ステップS426)、空いているキャッシュブロックを取得する(ステップS420)。
また、ステップS424でキャッシュブロックを使用している論理ブロックの数が上限数に達していない場合には(No)、デバイスドライバ160は、ライトバック処理を行わずに、空いているキャッシュブロックを取得する(ステップS420)。その後、デバイスドライバ160は、空きのキャッシュブロックにデータを書き込み(ステップS408)、管理情報を更新する(ステップS410)。
このように、write処理においては、ファイルシステム制御部150からデバイスドライバ160にキャッシュ優先度が通知され、デバイスドライバ160は、保持している各論理ブロックのキャッシュ優先度を更新する(open処理も同様)。かかる場合には、ファイルシステム制御部150が優先度情報をデバイスドライバ160に通知することによって、デバイスドライバ160は、ライトバック処理の際に優先度の低いキャッシュブロックに記憶されたデータを優先して移動させることができる。この結果、ライトバック処理の際に、更新頻度の高いデータを主記憶領域130に移動させることを防止できる。
(3−3.close処理におけるタイミング情報の通知)
図13を参照して、図8のステップS218のclose処理におけるタイミング情報の通知について説明する。図13は、close処理におけるタイミング情報の通知を説明するためのフローチャートである。
図13を参照して、図8のステップS218のclose処理におけるタイミング情報の通知について説明する。図13は、close処理におけるタイミング情報の通知を説明するためのフローチャートである。
まず、ファイルシステム制御部150は、ファイルのclose処理を行う(ステップS602)。ここで、close処理は、ファイル作成における最終処理であり、open処理やwrite処理とは異なり、続けて他の処理が実行される可能性が低い。このため、close処理後のアイドル時間にライトバック処理を実行させることで、他の処理の処理速度が低下することを防止できる。
ファイルシステム制御部150は、close処理後のアイドル時間にライトバック処理が可能であることを示すタイミング情報を、デバイスドライバ160に通知する(ステップS604)。ファイルシステム制御部150は、タイミング情報の通知に伴い、デバイスドライバ160にflush処理を要求する。flush処理は、強制的にライトバック処理を行う処理である。
flush処理の要求を受けたデバイスドライバ160は、図14のflush処理を実行する(ステップS606)。なお、flush処理の詳細については、後述する。
flush処理が完了すると、ファイルシステム制御部150は、close処理結果をアプリケーション部110に送る(ステップS608)。これにより、本処理が終了し、図8のフローチャートに戻ることになる。
(3−3−1.flush処理)
図14を参照して、図13のステップS606のflush処理について説明する。図14は、flush処理を説明するためのフローチャートである。
図14を参照して、図13のステップS606のflush処理について説明する。図14は、flush処理を説明するためのフローチャートである。
デバイスドライバ160は、まず、空きキャッシュブロックの数が規定数以上であるか否か(例えば、空きのキャッシュブロックがあるか否か)を判定する(ステップS702)。
ステップS702で空きのキャッシュブロックがあると判定された場合には(Yes)、デバイスドライバ160は、キャッシュブロックを使用している論理ブロックの数を確認する(ステップS704)。そして、デバイスドライバ160は、キャッシュブロックを使用している論理ブロックの数が上限数(図4の5つ)に達しているか否かを判定する(ステップS706)。
ステップS706で論理ブロックの数が上限数に達している場合には(Yes)、デバイスドライバ160は、前述した図12のライトバック処理(B)を実行する(ステップS708)。一方で、ステップS706で論理ブロックの数が上限数に達していない場合には(No)、デバイスドライバ160は、論理ブロックに割り当てられているキャッシュブロック使用数を確認する(ステップS710)。
次に、デバイスドライバ160は、論理ブロックに割り当てられているキャッシュブロックの使用数が上限数(図4の3つ)に達しているか否かを判定する(ステップS712)。
ステップS712でキャッシュブロックの使用数が上限数に達している場合には(Yes)、デバイスドライバ160は、前述した図11のライトバック処理(A)を実行する(ステップS714)。一方で、ステップS712でキャッシュブロックの使用数が上限数に達していない場合には(No)、デバイスドライバ160は、ライトバック処理(A)、ライトバック処理を実行せずに、本処理を終了する。
ステップS702で空きのキャッシュブロックが無いと判定された場合には(No)、デバイスドライバ160は、前述した図12のライトバック処理(B)を実行する(ステップS716)。これにより、本処理が完了し、図13のフローチャートに戻る。
このように、close処理において、ファイルシステム制御部150がタイミング情報をデバイスドライバ160に通知することによって、デバイスドライバ160は、他の処理(例えば、write処理)の実行中にライトバック処理が行われることを防止できる。この結果、ライトバック処理に起因してwrite処理等の他の処理の処理速度が低下することを防止できる。
(4.mkdir処理におけるタイミング情報の通知)
上記では、ライトバック処理のタイミング情報の通知が、close処理の際に行われることとしたが、ディレクトリを作成するための処理であるmkdir処理の際に行われうる。
上記では、ライトバック処理のタイミング情報の通知が、close処理の際に行われることとしたが、ディレクトリを作成するための処理であるmkdir処理の際に行われうる。
図15を参照して、mkdir処理におけるライトバック処理のタイミング情報の通知について説明する。図15は、mkdir処理におけるタイミング情報の通知を説明するためのフローチャートである。
まず、ファイルシステム制御部150は、ファイルのmkdir処理を行う(ステップS802)。ここで、mkdir処理は、close処理と同様に、続けて他の処理が実行される可能性が低い。このため、mkdir処理後のアイドル時間にライトバック処理を実行させることで、他の処理の処理速度が低下することを防止できる。
ファイルシステム制御部150は、mkdir処理後のアイドル時間にライトバック処理が可能であることを示すタイミング情報を、デバイスドライバ160に通知する(ステップS804)。ファイルシステム制御部150は、タイミング情報の通知に伴い、デバイスドライバ160にflush処理を要求する。
flush処理の要求を受けたデバイスドライバ160は、前述した図14のflush処理を実行する(ステップS806)。flush処理が完了すると、ファイルシステム制御部150は、mkdir処理結果をアプリケーション部110に送る(ステップS808)。これにより、本処理が終了する。
このように、mkdir処理において、ファイルシステム制御部150がタイミング情報をデバイスドライバ160に通知することによって、デバイスドライバ160は、他の処理(例えば、write処理)の実行中にライトバック処理が行われることを防止できる。この結果、ライトバック処理に起因してwrite処理等の他の処理の処理速度が低下することを防止できる。
なお、ライトバック処理のタイミング情報の通知は、close処理やmkdir処理以外の処理の際に実行されても良い。例えば、rmdir処理、unlink処理、rename処理も、その後に他の処理が続けて行われる可能性が低い処理であるので、タイミング情報の通知を行っても良い。ここで、rmdir処理は、ディレクトリを削除する処理である。unlink処理は、ファイルを削除する処理である。rename処理は、ファイル名を変更する処理、又はファイル名を移動する処理である。
また、アプリケーション部110の判断で、しばらくオペレーティングシステム120に要求を出さないことが分かっている場合に、アプリケーション部110が、デバイスドライバ160にタイミング情報を通知しても良い。
<5.まとめ>
上述した本実施形態では、ファイルシステム制御部150は、ライトバック処理(データ移動処理)を実行可能なタイミング情報を、デバイスドライバ160に通知する。これにより、デバイスドライバ160は、他の処理(例えば、write処理)の実行中にライトバック処理が行われることを防止できる。この結果、ライトバック処理に起因してwrite処理等の他の処理の処理速度が低下することを防止できる。
上述した本実施形態では、ファイルシステム制御部150は、ライトバック処理(データ移動処理)を実行可能なタイミング情報を、デバイスドライバ160に通知する。これにより、デバイスドライバ160は、他の処理(例えば、write処理)の実行中にライトバック処理が行われることを防止できる。この結果、ライトバック処理に起因してwrite処理等の他の処理の処理速度が低下することを防止できる。
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
上記実施形態では、メモリ管理装置10は、主記憶領域部130とキャッシュブロック部140を備えることとしたが、これに限定されず、主記憶領域部130とキャッシュブロック140は、メモリ管理装置10以外の装置に組み込まれても良い。かかる場合には、メモリ管理装置10は、メモリ制御装置として機能することになる。
また、上記実施形態では、主記憶領域部130及びキャッシュブロック部140が不揮発性メモリであることとしたが、これに限定されない。例えば、主記憶領域部130とキャッシュブロック部140のいずれか一方が、不揮発性メモリであっても良い。
尚、本明細書において、フローチャートに記述されたステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的に又は個別的に実行される処理をも含む。また時系列的に処理されるステップでも、場合によっては適宜順序を変更することが可能であることは言うまでもない。
10 メモリ管理装置
110 アプリケーション部
120 オペレーティングシステム部
130 主記憶領域部
140 キャッシュブロック部
150 ファイルシステム制御部
160 ストレージデバイスドライバ
110 アプリケーション部
120 オペレーティングシステム部
130 主記憶領域部
140 キャッシュブロック部
150 ファイルシステム制御部
160 ストレージデバイスドライバ
Claims (10)
- 主記憶部へのデータの書き込み又は読み出しと、キャッシュブロックを複数有するキャッシュ部へのデータの一時的な書き込み又は読み出しと、を実行するデバイスドライバと、
前記主記憶部又は前記キャッシュ部へのファイルシステムのデータの書き込み又は読み出しを、前記デバイスドライバに命令する制御部と、
を備え、
前記制御部は、前記キャッシュブロックに記憶されているデータを前記デバイスドライバによって前記主記憶部に移動させるデータ移動処理を実行可能なタイミング情報を、前記デバイスドライバに通知する、メモリ制御装置。 - 前記制御部による前記デバイスドライバへの命令は、アプリケーションからの処理要求に応じた命令であり、
前記制御部は、
前記アプリケーションから要求された処理内容を判別し、
前記処理内容の判別結果から、要求された処理の後に他の処理が続けて要求されないと判定した場合に、前記タイミング情報を前記デバイスドライバに通知する、請求項1に記載のメモリ制御装置。 - 前記デバイスドライバは、
前記キャッシュブロックの使用状態を記憶し、
前記制御部から通知を受けた前記タイミング情報と、前記キャッシュブロックの使用状態とに基づいて、前記データ移動処理を実行するか否かを判定する、請求項1又は請求項2に記載のメモリ制御装置。 - 前記デバイスドライバは、
前記キャッシュブロックと論理ブロックを対応付けて記憶し、
前記タイミング情報の通知を受けた際に前記キャッシュブロックを使用している論理ブロックの数が所定数に達している場合に、前記データ移動処理を強制的に実行する、請求項3に記載のメモリ制御装置。 - 前記デバイスドライバは、
前記キャッシュブロックと論理ブロックを対応付けて記憶し、
前記タイミング情報の通知を受けた際に前記論理ブロックに割り当てられているキャッシュブロックの数が所定数に達している場合に、前記データ移動処理を強制的に実行する、請求項3に記載のメモリ制御装置。 - 前記デバイスドライバは、前記タイミング情報の通知を受けた際に前記キャッシュ部におけるデータを記憶しないキャッシュブロックの数が所定数以下の場合に、前記データ移動処理を強制的に実行する、請求項3に記載のメモリ制御装置。
- 前記制御部は、前記キャッシュブロックが対応づけられた論理ブロックに対するデータ記憶の優先度に関する優先度情報を前記デバイスドライバに通知し、
前記デバイスドライバは、前記データ移動処理を実行する際に、前記制御部から通知を受けた前記優先度情報に基づいて、前記複数のキャッシュブロックのうちの前記優先度が最も低い前記論理ブロックに対応づけられたキャッシュブロックに記憶されているデータを、前記主記憶部に移動させる、請求項3〜6のいずれか1項に記載のメモリ制御装置。 - データを記憶する主記憶部と、
キャッシュブロックを複数有し、データを一時的に記憶するキャッシュ部と、
前記主記憶部へのデータの書き込み又は読み出しと、前記キャッシュ部へのデータの一時的な書き込み又は読み出しと、を実行するデバイスドライバと、
前記主記憶部又は前記キャッシュ部へのファイルシステムのデータの書き込み又は読み出しを、前記デバイスドライバに命令する制御部と、
を備え、
前記制御部は、前記キャッシュブロックに記憶されているデータを前記デバイスドライバによって前記主記憶部に移動させるデータ移動処理を実行可能なタイミング情報を、前記デバイスドライバに通知する、メモリ装置。 - デバイスドライバが、主記憶部にデータを記憶させ、又はキャッシュブロックを複数有するキャッシュ部にデータを一時的に記憶させることと、
制御部が、前記主記憶部又は前記キャッシュ部へのファイルシステムのデータの書き込み又は読み出しを、前記デバイスドライバに命令することと、
前記制御部が、前記キャッシュブロックに記憶されているデータを前記デバイスドライバによって前記主記憶部に移動させるデータ移動処理を実行可能なタイミング情報を、前記デバイスドライバに通知することと、
を含む、メモリ制御方法。 - デバイスドライバが、主記憶部にデータを記憶させ、又はキャッシュブロックを複数有するキャッシュ部にデータを一時的に記憶させることと、
制御部が、前記主記憶部又は前記キャッシュ部へのファイルシステムのデータの書き込み又は読み出しを、前記デバイスドライバに命令することと、
前記制御部が、前記キャッシュブロックに記憶されているデータを前記デバイスドライバによって前記主記憶部に移動させるデータ移動処理を実行可能なタイミング情報を、前記デバイスドライバに通知することと、
をコンピュータに実行させるための、プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011059386A JP2012194882A (ja) | 2011-03-17 | 2011-03-17 | メモリ制御装置、メモリ装置、メモリ制御方法、及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011059386A JP2012194882A (ja) | 2011-03-17 | 2011-03-17 | メモリ制御装置、メモリ装置、メモリ制御方法、及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012194882A true JP2012194882A (ja) | 2012-10-11 |
Family
ID=47086687
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011059386A Withdrawn JP2012194882A (ja) | 2011-03-17 | 2011-03-17 | メモリ制御装置、メモリ装置、メモリ制御方法、及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012194882A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019153030A (ja) * | 2018-03-02 | 2019-09-12 | Necプラットフォームズ株式会社 | キャッシュ装置およびキャッシュ装置の制御方法 |
JP2020170458A (ja) * | 2019-04-05 | 2020-10-15 | 富士通株式会社 | 情報処理装置、制御プログラム、及び制御方法 |
-
2011
- 2011-03-17 JP JP2011059386A patent/JP2012194882A/ja not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019153030A (ja) * | 2018-03-02 | 2019-09-12 | Necプラットフォームズ株式会社 | キャッシュ装置およびキャッシュ装置の制御方法 |
JP2020170458A (ja) * | 2019-04-05 | 2020-10-15 | 富士通株式会社 | 情報処理装置、制御プログラム、及び制御方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11687446B2 (en) | Namespace change propagation in non-volatile memory devices | |
US11954043B2 (en) | Memory system and method for controlling nonvolatile memory | |
US9292217B2 (en) | Logical volume space sharing | |
CN102693184B (zh) | 处理具有非易失性存储器的系统的动态和静态数据 | |
US10338839B2 (en) | Memory system and method for controlling nonvolatile memory | |
RU2658886C1 (ru) | Способ управления файлами, распределенная система хранения и узел управления | |
CN111344683A (zh) | 非易失性存储器装置中的命名空间分配 | |
KR101663667B1 (ko) | 플래시 메모리의 주소 매핑에 의한 데이터 관리 방법 및 장치 | |
US20180107593A1 (en) | Information processing system, storage control apparatus, storage control method, and storage control program | |
US20150127889A1 (en) | Nonvolatile memory system | |
EP2665065A2 (en) | Electronic device employing flash memory | |
EP2972747B1 (en) | Data storage, file and volume system providing mutliple tiers | |
US20060212495A1 (en) | Method and system for storing data into a database | |
CN110502455B (zh) | 数据存储方法及系统 | |
JP2008242503A (ja) | メモリ管理装置及び方法、並びにプログラム | |
KR20110117099A (ko) | 메모리 장치에서 맵핑 어드레스 테이블을 유지관리하는 방법 | |
JP5944502B2 (ja) | 計算機システム及び制御方法 | |
US20090300315A1 (en) | Reserve Pool Management in Virtualized Storage Systems | |
JP2019057151A (ja) | メモリシステムおよび制御方法 | |
JP5699712B2 (ja) | メモリ制御装置、メモリ装置、メモリ制御方法、及びプログラム | |
KR101017067B1 (ko) | 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법 | |
WO2011121870A1 (ja) | データ記録装置、及びデータ記録方法 | |
JP2012194882A (ja) | メモリ制御装置、メモリ装置、メモリ制御方法、及びプログラム | |
US9286204B2 (en) | Memory controller | |
JP2014186622A (ja) | 情報処理装置、情報処理方法、並びに記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20140603 |