JP5699712B2 - メモリ制御装置、メモリ装置、メモリ制御方法、及びプログラム - Google Patents

メモリ制御装置、メモリ装置、メモリ制御方法、及びプログラム Download PDF

Info

Publication number
JP5699712B2
JP5699712B2 JP2011059385A JP2011059385A JP5699712B2 JP 5699712 B2 JP5699712 B2 JP 5699712B2 JP 2011059385 A JP2011059385 A JP 2011059385A JP 2011059385 A JP2011059385 A JP 2011059385A JP 5699712 B2 JP5699712 B2 JP 5699712B2
Authority
JP
Japan
Prior art keywords
cache
device driver
data
control unit
priority
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.)
Expired - Fee Related
Application number
JP2011059385A
Other languages
English (en)
Other versions
JP2012194881A (ja
Inventor
石澤 宏明
宏明 石澤
暢宏 金子
暢宏 金子
修祐 佐伯
修祐 佐伯
嵩 木田
嵩 木田
知浩 香取
知浩 香取
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2011059385A priority Critical patent/JP5699712B2/ja
Priority to CN2012100621648A priority patent/CN102708066A/zh
Priority to US13/416,535 priority patent/US8972659B2/en
Publication of JP2012194881A publication Critical patent/JP2012194881A/ja
Application granted granted Critical
Publication of JP5699712B2 publication Critical patent/JP5699712B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning

Description

本発明は、メモリ制御装置、メモリ装置、メモリ制御方法、及びプログラムに関する。
メモリ装置は、例えば、データを記憶可能な主記憶部とキャッシュブロックを有し、デバイスドライバが、主記憶部とキャッシュブロックへのデータの記憶等を制御する。
上記のメモリ装置では、デバイスドライバによる処理の高速化等の観点から、主記憶部には更新頻度が少ないデータが記憶され、キャッシュブロックには更新頻度が多いデータが記憶される(特許文献1参照)。なお、キャッシュブロックの容量は主記憶部に比べて小さいので、キャッシュされるデータが増えると、例えば古いデータは、キャッシュブロックから主記憶部へ移動する。かかる処理は、いわゆるライトバック処理として知られている。
特開2009−70098号公報
ところで、Linux(登録商標)のようなオペレーティングシステムでは、デバイスの制御処理(ドライバ)を抽象化し、ファイルシステムの制御処理と分離している。この抽象化のため、ファイルシステム制御は、デバイス固有の特性を知らずに動作する。
そして、特許文献1のようにドライバ処理の高速化のためにキャッシュブロックをメモリ装置に構築した場合、デバイスドライバだけが、ライトバック処理のタイミングを制御することになる。この結果、データの更新頻度の高いキャッシュブロックがライトバック処理の対象となり、キャッシュブロックからユーザブロックへデータが移動してしまう問題がある。
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、更新頻度の高いデータを記憶するキャッシュブロックがライトバック処理の対象となることを抑制することが可能な、新規かつ改良されたメモリ制御装置、メモリ装置、メモリ制御方法、及びプログラムを提供することにある。
上記課題を解決するために、本発明のある観点によれば、主記憶部へのデータの書き込み又は読み出しと、キャッシュブロックを複数有するキャッシュ部へのデータの一時的な書き込み又は読み出しと、を実行するデバイスドライバと、前記主記憶部又は前記キャッシュ部へのファイルシステムのデータの書き込み又は読み出しを、前記デバイスドライバに命令する制御部と、を備え、前記制御部は、前記キャッシュブロックが対応づけられた論理ブロックに対するデータ記憶の優先度に関する優先度情報を前記デバイスドライバに通知する、メモリ制御装置が提供される。
また、前記デバイスドライバは、前記制御部から通知を受けた前記優先度情報に基づいて、前記複数のキャッシュブロックのうちの記憶しているデータが前記主記憶部に移動されるキャッシュブロックを選択しても良い。
また、前記デバイスドライバは、前記複数のキャッシュブロックのうちの前記優先度が最も低い前記論理ブロックに対応づけられたキャッシュブロックに記憶されているデータを、前記主記憶部に移動させても良い。
また、前記デバイスドライバは、前記優先度情報を記憶し、前記制御部から前記優先度情報の通知を受けた際に、前記優先度情報を更新し、更新後の前記優先度情報に基づいて、前記複数のキャッシュブロックのうちの前記優先度が最も低い前記論理ブロックに対応づけられたキャッシュブロックに記憶されているデータを、前記主記憶部に移動させても良い。
また、前記デバイスドライバは、更新した前記優先度情報と、前記論理ブロックの使用状況に関する情報とを対応づけて記憶し、前記優先度が同じ複数の論理ブロックのうちの、使用時期が最も古い論理ブロックに対応づけられたキャッシュブロックに記憶されているデータを、前記主記憶部に移動させても良い。
また、前記制御部は、前記メモリ制御装置の初回起動時に、前記優先度情報を前記デバイスドライバに通知しても良い。
また、前記制御部は、前記キャッシュ部においてデータを記憶しないキャッシュブロックを割り当てる時に、前記優先度情報を前記デバイスドライバに通知しても良い。
また、上記課題を解決するために、本発明の別の観点によれば、データを記憶する主記憶部と、キャッシュブロックを複数有し、データを一時的に記憶するキャッシュ部と、前記主記憶部へのデータの書き込み又は読み出しと、前記キャッシュ部へのデータの一時的な書き込み又は読み出しと、を実行するデバイスドライバと、前記主記憶部又は前記キャッシュ部へのファイルシステムのデータの書き込み又は読み出しを、前記デバイスドライバに命令する制御部と、を備え、前記制御部は、前記キャッシュブロックが対応づけられた論理ブロックに対するデータ記憶の優先度に関する優先度情報を前記デバイスドライバに通知する、メモリ装置が提供される。
また、上記課題を解決するために、本発明の別の観点によれば、デバイスドライバが、主記憶部へのデータの書き込み又は読み出しと、キャッシュブロックを複数有するキャッシュ部へのデータの一時的な書き込み又は読み出しと、を実行することと、制御部が、前記主記憶部又は前記キャッシュ部へのファイルシステムのデータの書き込み又は読み出しを、前記デバイスドライバに命令することと、前記制御部が、前記キャッシュブロックが対応づけられた論理ブロックに対するデータ記憶の優先度に関する優先度情報を前記デバイスドライバに通知することと、を含む、メモリ制御方法が提供される。
また、上記課題を解決するために、本発明の別の観点によれば、デバイスドライバが、主記憶部へのデータの書き込み又は読み出しと、キャッシュブロックを複数有するキャッシュ部へのデータの一時的な書き込み又は読み出しと、を実行することと、制御部が、前記主記憶部又は前記キャッシュ部へのファイルシステムのデータの書き込み又は読み出しを、前記デバイスドライバに命令することと、前記制御部が、前記キャッシュブロックが対応づけられた論理ブロックに対するデータ記憶の優先度に関する優先度情報を前記デバイスドライバに通知することと、をコンピュータに実行させるための、プログラムが提供される。
以上説明したように本発明によれば、更新頻度の高いデータを記憶するキャッシュブロックがライトバック処理の対象となることを抑制できる。
メモリ管理装置10の構成を示すブロック図である。 キャッシュ優先度の割当て例を示す図である キャッシュ優先度の通知内容を示す図である。 キャッシュブロックの管理情報を示す図である。 オフセットアドレス毎のアドレス変換情報を示す図である。 メモリ管理装置10の初回起動時の処理を説明するためのフローチャートである。 FAT型ファイルシステムのパーティション構成を示す図である。 ファイル作成処理の概要を説明するためのフローチャートである。 write処理におけるキャッシュ優先度の通知を説明するためのフローチャートである。 書き換え処理を説明するためのフローチャートである。 ライトバック処理(A)を説明するためのフローチャートである。 ライトバック処理(B)を説明するためのフローチャートである。 close処理におけるタイミング情報の通知を説明するためのフローチャートである。 flush処理を説明するためのフローチャートである。 mkdir処理におけるタイミング情報の通知を説明するためのフローチャートである。
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
なお、説明は以下の順序で行うものとする。
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は、アプリケーション部110と、オペレーティングシステム部120と、主記憶部の一例である主記憶領域部130と、キャッシュ部の一例であるキャッシュブロック部140を有する。
(アプリケーション部110)
アプリケーション部110は、メモリ管理装置10における様々な機能を実現するためのものである。アプリケーション部110は、ファイルシステムに関する要求をオペレーションシステム部120に送る。例えば、アプリケーション部110は、ファイルの作成又は削除の要求や、ディレクトリの作成又は削除の要求を、オペレーションシステム部120に送る。
(オペレーションシステム部120)
オペレーションシステム部120は、メモリ管理装置10の動作を制御するためのものである。オペレーションシステム部120は、アプリケーション部110の要求を受けて、主記憶領域部130とキャッシュブロック部140におけるデータの読み出しや書き込みの処理を制御する。オペレーションシステム部120は、アプリケーション部110の要求に応じた処理結果をアプリケーション部110に送る。
(主記憶部130)
主記憶領域部130は、不揮発性メモリであり、様々なデータを記憶する。主記憶領域部130は、データをファイル単位で扱うFATファイルシステムでフォーマットされている。
(キャッシュブロック部140)
キャッシュブロック部140は、不揮発性メモリであり、使用頻度(アクセス頻度)の高いデータを一時的に記憶する。キャッシュブロック部140は、キャッシュブロックを複数有し、各キャッシュブロックにデータを記憶可能である。キャッシュブロック部140も、FATファイルシステムでフォーマットされている。なお、キャッシュブロック部140の容量は、主記憶部130の容量に比べて小さい。キャッシュブロック部140のデータ量が所定量を超えると、詳細は後述するが、キャッシュブロック部140のデータが主記憶部130に移動するライトバック処理が行われる。
(ファイルシステムについて)
ここで、ファイルシステムについて、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を有する。
ファイルシステム制御部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へのデータの一時的な書き込み又は読み出しとを実行する。
デバイスドライバ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等に記憶されたプログラムを実行することで、実現される。
図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に提供するインターフェースを有効にするための準備処理であり、デバイスドライバ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のフローチャートは、アプリケーション部110がファイルシステム制御部150に対してファイルのopenを要求するところから開始される(ステップS202)。ファイルシステム制御部150は、アプリケーション部110のopen要求を受けると、open処理を実行する(ステップS204)。なお、open処理の実行の際にキャッシュ優先度の通知が行われるが、詳細については後述する。
アプリケーション部110は、open処理の結果をファイルシステム制御部150から受け取る(ステップS206)。次に、アプリケーション部110は、ファイルシステム制御部150に対してファイルのwriteを要求する(ステップS208)。
ファイルシステム制御部150は、アプリケーション部110のwrite要求を受けると、write処理を実行する(ステップS210)。なお、write処理の実行の際にキャッシュ優先度の通知が行われるが、詳細については後述する。
アプリケーション部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処理におけるキャッシュ優先度の通知処理について説明する。
図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のフローチャートに戻ることになる。
(3−2−1.書き換え処理)
図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は、論理ブロックに割り当てられているキャッシュブロックの使用数が上限数(例えば、図に示す3つ)に達しているか否かを判定する(ステップS414)。
ステップS414でキャッシュブロックの使用数が上限数に達している場合には(Yes)、デバイスドライバ160は、空きキャッシュブロックを作成すべく、ライトバック処理(A)を実行する(ステップS416)。
(ライトバック処理(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は、キャッシュブロックを使用している論理ブロックの数が上限数(例えば、図に示す5つ)に達しているか否かを判定する(ステップS424)。
ステップS424でキャッシュブロックを使用している論理ブロックの数が上限数に達している場合には(Yes)、デバイスドライバ160は、空きキャッシュブロックを作成すべく、ライトバック処理(B)を実行する(ステップS426)。
(ライトバック処理(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処理におけるタイミング情報の通知を説明するためのフローチャートである。
まず、ファイルシステム制御部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処理を説明するためのフローチャートである。
デバイスドライバ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)、ライトバック処理(B)を実行せずに、本処理を終了する。
ステップS702で空きのキャッシュブロックが無いと判定された場合には(No)、デバイスドライバ160は、前述した図12のライトバック処理(B)を実行する(ステップS716)。これにより、本処理が完了し、図13のフローチャートに戻る。
このように、close処理において、ファイルシステム制御部150がタイミング情報をデバイスドライバ160に通知することによって、デバイスドライバ160は、他の処理(例えば、write処理)の実行中にライトバック処理が行われることを防止できる。この結果、ライトバック処理に起因してwrite処理等の他の処理の処理速度が低下することを防止できる。
(4.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は、ライトバック処理の際にキャッシュ優先度の低いキャッシュブロックに記憶されたデータを優先して移動させることができる。この結果、ライトバック処理の際に、更新頻度の高いデータを主記憶領域130に移動させることを防止できる。
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
上記実施形態では、メモリ管理装置10は、主記憶領域部130とキャッシュブロック部140を備えることとしたが、これに限定されず、主記憶領域部130とキャッシュブロック140は、メモリ管理装置10以外の装置に組み込まれても良い。かかる場合には、メモリ管理装置10は、メモリ制御装置として機能することになる。
また、上記実施形態では、主記憶領域部130及びキャッシュブロック部140が不揮発性メモリであることとしたが、これに限定されない。例えば、主記憶領域部130とキャッシュブロック部140のいずれか一方が、不揮発性メモリであっても良い。
尚、本明細書において、フローチャートに記述されたステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的に又は個別的に実行される処理をも含む。また時系列的に処理されるステップでも、場合によっては適宜順序を変更することが可能であることは言うまでもない。
10 メモリ管理装置
110 アプリケーション部
120 オペレーティングシステム部
130 主記憶領域部
140 キャッシュブロック部
150 ファイルシステム制御部
160 ストレージデバイスドライバ

Claims (10)

  1. 主記憶部へのデータの書き込み又は読み出しと、キャッシュブロックを複数有するキャッシュ部へのデータの一時的な書き込み又は読み出しと、を実行するデバイスドライバと、
    前記主記憶部又は前記キャッシュ部へのファイルシステムのデータの書き込み又は読み出しを、前記デバイスドライバに命令する制御部と、
    を備え、
    前記制御部は、前記キャッシュブロックが対応づけられた論理ブロックに対するデータ記憶の優先度に関する優先度情報を前記デバイスドライバに通知し、
    さらに前記制御部は、アプリケーションから要求された処理内容に応じて、タイミング情報を前記デバイスドライバに通知し、
    前記デバイスドライバは、前記制御部から通知された前記タイミング情報に基づき、前記キャッシュブロックに記憶されたデータを前記主記憶部に移動させる、メモリ制御装置。
  2. 前記デバイスドライバは、前記制御部から通知を受けた前記優先度情報に基づいて、前記複数のキャッシュブロックのうちの記憶しているデータが前記主記憶部に移動されるキャッシュブロックを選択する、請求項1に記載のメモリ制御装置。
  3. 前記デバイスドライバは、前記複数のキャッシュブロックのうちの前記優先度が最も低い前記論理ブロックに対応づけられたキャッシュブロックに記憶されているデータを、前記主記憶部に移動させる、請求項2に記載のメモリ制御装置。
  4. 前記デバイスドライバは、
    前記優先度情報を記憶し、
    前記制御部から前記優先度情報の通知を受けた際に、前記優先度情報を更新し、
    更新後の前記優先度情報に基づいて、前記複数のキャッシュブロックのうちの前記優先度が最も低い前記論理ブロックに対応づけられたキャッシュブロックに記憶されているデータを、前記主記憶部に移動させる、請求項3に記載のメモリ制御装置。
  5. 前記デバイスドライバは、
    更新した前記優先度情報と、前記論理ブロックの使用状況に関する情報とを対応づけて記憶し、
    前記優先度が同じ複数の論理ブロックのうちの、使用時期が最も古い前記論理ブロックに対応づけられたキャッシュブロックに記憶されているデータを、前記主記憶部に移動させる、請求項4に記載のメモリ制御装置。
  6. 前記制御部は、前記メモリ制御装置の初回起動時に、前記優先度情報を前記デバイスドライバに通知する、請求項1〜5のいずれか1項に記載のメモリ制御装置。
  7. 前記制御部は、前記キャッシュ部においてデータを記憶しないキャッシュブロックを割り当てる時に、前記優先度情報を前記デバイスドライバに通知する、請求項1〜5のいずれか1項に記載のメモリ制御装置。
  8. データを記憶する主記憶部と、
    キャッシュブロックを複数有し、データを一時的に記憶するキャッシュ部と、
    前記主記憶部へのデータの書き込み又は読み出しと、前記キャッシュ部へのデータの一時的な書き込み又は読み出しと、を実行するデバイスドライバと、
    前記主記憶部又は前記キャッシュ部へのファイルシステムのデータの書き込み又は読み出しを、前記デバイスドライバに命令する制御部と、
    を備え、
    前記制御部は、前記キャッシュブロックが対応づけられた論理ブロックに対するデータ記憶の優先度に関する優先度情報を前記デバイスドライバに通知し、
    さらに前記制御部は、アプリケーションから要求された処理内容に応じて、タイミング情報を前記デバイスドライバに通知し、
    前記デバイスドライバは、前記制御部から通知された前記タイミング情報に基づき、前記キャッシュブロックに記憶されたデータを前記主記憶部に移動させる、メモリ装置。
  9. デバイスドライバが、主記憶部へのデータの書き込み又は読み出しと、キャッシュブロックを複数有するキャッシュ部へのデータの一時的な書き込み又は読み出しと、を実行することと、
    制御部が、前記主記憶部又は前記キャッシュ部へのファイルシステムのデータの書き込み又は読み出しを、前記デバイスドライバに命令することと、
    前記制御部が、前記キャッシュブロックが対応づけられた論理ブロックに対するデータ記憶の優先度に関する優先度情報を前記デバイスドライバに通知することと、
    さらに前記制御部は、アプリケーションから要求された処理内容に応じて、タイミング情報を前記デバイスドライバに通知することと、
    前記デバイスドライバは、前記制御部から通知された前記タイミング情報に基づき、前記キャッシュブロックに記憶されたデータを前記主記憶部に移動させることと、
    を含む、メモリ制御方法。
  10. デバイスドライバが、主記憶部へのデータの書き込み又は読み出しと、キャッシュブロックを複数有するキャッシュ部へのデータの一時的な書き込み又は読み出しと、を実行することと、
    制御部が、前記主記憶部又は前記キャッシュ部へのファイルシステムのデータの書き込み又は読み出しを、前記デバイスドライバに命令することと、
    前記制御部が、前記キャッシュブロックが対応づけられた論理ブロックに対するデータ記憶の優先度に関する優先度情報を前記デバイスドライバに通知することと、
    さらに前記制御部は、アプリケーションから要求された処理内容に応じて、タイミング情報を前記デバイスドライバに通知することと、
    前記デバイスドライバは、前記制御部から通知された前記タイミング情報に基づき、前記キャッシュブロックに記憶されたデータを前記主記憶部に移動させることと、
    をコンピュータに実行させるための、プログラム。
JP2011059385A 2011-03-17 2011-03-17 メモリ制御装置、メモリ装置、メモリ制御方法、及びプログラム Expired - Fee Related JP5699712B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2011059385A JP5699712B2 (ja) 2011-03-17 2011-03-17 メモリ制御装置、メモリ装置、メモリ制御方法、及びプログラム
CN2012100621648A CN102708066A (zh) 2011-03-17 2012-03-09 存储器控制装置、存储器装置、存储器控制方法和程序
US13/416,535 US8972659B2 (en) 2011-03-17 2012-03-09 Memory control device, memory device, memory control method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011059385A JP5699712B2 (ja) 2011-03-17 2011-03-17 メモリ制御装置、メモリ装置、メモリ制御方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2012194881A JP2012194881A (ja) 2012-10-11
JP5699712B2 true JP5699712B2 (ja) 2015-04-15

Family

ID=46829413

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011059385A Expired - Fee Related JP5699712B2 (ja) 2011-03-17 2011-03-17 メモリ制御装置、メモリ装置、メモリ制御方法、及びプログラム

Country Status (3)

Country Link
US (1) US8972659B2 (ja)
JP (1) JP5699712B2 (ja)
CN (1) CN102708066A (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140042431A (ko) * 2012-09-28 2014-04-07 삼성전자주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템의 데이터 관리 방법
WO2015131310A1 (zh) * 2014-03-03 2015-09-11 华为技术有限公司 提供数据服务的方法和网络设备
CN105630696A (zh) * 2015-03-27 2016-06-01 上海磁宇信息科技有限公司 一种利用mram保护nand的方法及存储结构
CN105894440B (zh) * 2016-03-30 2019-02-01 福州瑞芯微电子股份有限公司 一种图像多层数据处理方法和装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02118859A (ja) * 1988-10-28 1990-05-07 Nec Corp 索引検索バッファ管理方式
JP2571298B2 (ja) * 1990-04-26 1997-01-16 株式会社 ピーエフユー データ管理制御方式
JPH04181446A (ja) * 1990-11-16 1992-06-29 Hitachi Ltd リプレースメントアルゴリズムおよびそれを用いた計算機システム
JP3460617B2 (ja) * 1999-03-30 2003-10-27 富士通株式会社 ファイル制御装置
JP2002207620A (ja) * 2001-01-10 2002-07-26 Toshiba Corp ファイルシステム及び該システムにおけるデータキャッシング方法
JP4368610B2 (ja) * 2003-05-07 2009-11-18 パナソニック株式会社 データ管理方法、データ管理プログラムおよびナビゲーション装置
WO2005059757A1 (ja) * 2003-12-19 2005-06-30 Matsushita Electric Industrial Co.,Ltd. 記録デバイス制御装置
JP4189342B2 (ja) * 2004-03-11 2008-12-03 東芝ソリューション株式会社 ストレージ装置、ストレージコントローラ及びライトバックキャッシュ制御方法
US7490197B2 (en) * 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
JP4331220B2 (ja) * 2007-03-07 2009-09-16 株式会社東芝 未使用物理領域自律管理機能を持つストレージ装置
JP4356782B2 (ja) 2007-09-12 2009-11-04 ソニー株式会社 メモリ装置、メモリ制御方法、およびプログラム

Also Published As

Publication number Publication date
JP2012194881A (ja) 2012-10-11
US8972659B2 (en) 2015-03-03
CN102708066A (zh) 2012-10-03
US20120239884A1 (en) 2012-09-20

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
US10338839B2 (en) Memory system and method for controlling nonvolatile memory
US9134908B2 (en) Logical volume space sharing
KR100951107B1 (ko) 최적의 성능을 위한 파일 관리 방법
CN111344683A (zh) 非易失性存储器装置中的命名空间分配
EP2972747B1 (en) Data storage, file and volume system providing mutliple tiers
US20150127889A1 (en) Nonvolatile memory system
US8868622B2 (en) Method and apparatus for allocating resources in a computer system
EP2665065A2 (en) Electronic device employing flash memory
US20060212495A1 (en) Method and system for storing data into a database
JP2008242503A (ja) メモリ管理装置及び方法、並びにプログラム
CN112771493B (zh) 将写入流分离到多个分区中
CN110502455B (zh) 数据存储方法及系统
US20090300315A1 (en) Reserve Pool Management in Virtualized Storage Systems
JP5944502B2 (ja) 計算機システム及び制御方法
JP5699712B2 (ja) メモリ制御装置、メモリ装置、メモリ制御方法、及びプログラム
KR101017067B1 (ko) 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법
KR20170084675A (ko) 메모리 내의 데이터를 액세스하는 방법과 이를 이용하는 메모리 장치
JP5385835B2 (ja) データ記録装置
WO2016106757A1 (zh) 一种存储数据的管理方法、存储管理器及存储系统
JP2012194882A (ja) メモリ制御装置、メモリ装置、メモリ制御方法、及びプログラム
EP2672390A1 (en) Memory controller
JP6668785B2 (ja) 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
EP3485362B1 (en) Maintaining data associated with a storage device related applications

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140306

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141029

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141104

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141225

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150120

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150202

R151 Written notification of patent or utility model registration

Ref document number: 5699712

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees