JP2016028319A - アクセス制御プログラム、アクセス制御装置及びアクセス制御方法 - Google Patents
アクセス制御プログラム、アクセス制御装置及びアクセス制御方法 Download PDFInfo
- Publication number
- JP2016028319A JP2016028319A JP2015128147A JP2015128147A JP2016028319A JP 2016028319 A JP2016028319 A JP 2016028319A JP 2015128147 A JP2015128147 A JP 2015128147A JP 2015128147 A JP2015128147 A JP 2015128147A JP 2016028319 A JP2016028319 A JP 2016028319A
- Authority
- JP
- Japan
- Prior art keywords
- block
- page
- memory area
- area
- blocks
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】要求ブロックとともに、近傍のブロックも読み出す処理を用いたデータアクセスにおける、読み出したブロックの利用効率を向上させる技術を提供する。
【解決手段】アクセス制御プログラムは、コンピュータに、第1のデータに対するアクセス要求に応じて、記憶領域がブロック単位で管理された第1記憶部から、第1のデータを含む第1のブロックを含む連続するブロックを読み出し、連続するブロックを、記憶領域をページ単位で管理するメモリ領域にロードし、第1記憶部の連続するブロックを無効化し、連続するブロックのメモリ領域へのロードにより、メモリ領域から押し出されたページを、メモリ領域におけるページへのアクセス状況に応じて、第1記憶部の連続した空き領域に書き込む処理を実行させることにより、上記課題の解決を図る。
【選択図】図4
【解決手段】アクセス制御プログラムは、コンピュータに、第1のデータに対するアクセス要求に応じて、記憶領域がブロック単位で管理された第1記憶部から、第1のデータを含む第1のブロックを含む連続するブロックを読み出し、連続するブロックを、記憶領域をページ単位で管理するメモリ領域にロードし、第1記憶部の連続するブロックを無効化し、連続するブロックのメモリ領域へのロードにより、メモリ領域から押し出されたページを、メモリ領域におけるページへのアクセス状況に応じて、第1記憶部の連続した空き領域に書き込む処理を実行させることにより、上記課題の解決を図る。
【選択図】図4
Description
本発明は、記憶装置に記憶されたデータにアクセスする技術に関する。
近年、ビジネスの高速化に伴い、次々と流れてくる大量のデータをリアルタイムに処理することが求められている。これに伴い、流れて来るデータに対し、その場で分析処理を実行する技術であるストリームデータ処理が注目されている。
ストリーム処理の中には、メモリに載るサイズを越えるデータを分析対象とするものも存在する。メモリに載るサイズを越えるデータを処理するためには、処理に応じて、ディスクに対するアクセスを行い、分析処理が実行される。
データアクセスの効率化を図るため、サーバが、データアクセスで要求されたディスクのブロックとともに、そのブロックの近傍にあるブロックもアクセスされることを期待して、物理的に近傍にあるブロックを予めメモリ領域に読み出すことができる。
しかしながら、ブロックの近傍にあるブロックがアクセスされるのは、ディスクにおけるブロックの配置と、データアクセスとが関連を持つ場合である。ディスクにおけるブロックの配置がデータアクセスと十分に関連を持たない場合は、アクセス要求されたブロックの近傍のブロックを予め読み出しても、実際にアクセスされない状況が生じ、メモリ領域の利用効率を低下させる。
本発明は、一側面として、要求ブロックとともに、近傍のブロックも読み出す処理を用いたデータアクセスにおける、読み出したブロックの利用効率を向上させる技術を提供する。
本発明の一側面に係るアクセス制御プログラムは、コンピュータに、次の処理を実行させる。コンピュータは、第1のデータに対するアクセス要求に応じて、記憶領域がブロック単位で管理された第1記憶部から、第1のデータを含む第1のブロックを含む連続するブロックを読み出す。コンピュータは、連続するブロックを、記憶領域をページ単位で管理するメモリ領域にロードする。コンピュータは、第1記憶部の連続するブロックを無効化する。コンピュータは、連続するブロックのメモリ領域へのロードにより、メモリ領域から押し出されたページを、メモリ領域における該ページへのアクセス状況に応じて、第1記憶部の連続した空き領域に書き込む。
本発明によれば、一側面として、要求ブロックとともに、近傍のブロックも読み出す処理を用いたデータアクセスにおける、読み出したブロックの利用効率を向上させることができる。
メモリに載るサイズを越えるデータを扱うストリーム処理では、大量のデータが流入した場合、ディスクアクセスが頻発し、サーバ全体の処理性能に影響を与える。
図1は、データアクセスにおけるメモリ領域とディスク間でのデータブロックの取り扱いを説明する図である。図1において、ディスク102と、メモリ領域101とが示されている。ここでは、メモリ上の一部領域を、メモリ領域101としている。メモリ領域101のページ置き換えアルゴリズムに関しては、一例として、メモリ領域101において参照されていない時間が最も長いページを置換対象にする方式(Least Recently Used、LRU)が用いられる。
図1において、ディスク102上には複数のブロック1〜8が配置されている。データアクセス要求により要求されたデータが記憶されているブロックが読み出され、メモリ領域101に配置される。例えば、ブロック1,3,5に記憶されたデータについてデータアクセス要求がされた場合、ディスク102からブロック1,3,5が読み出され、読み出されたブロック1,3,5に対応するページ1,3,5がメモリ領域101に配置される。
ここで、メモリ領域101上で配置されるページを置き換える場合、置き換え対象となるページ(置き換えページ)は、ページ置き換えアルゴリズムにより決定される。
LRU方式では、メモリ領域101に保持されたページであって、かつ、最終アクセス日時が最古のページが、置き換えページとして選択される。置き換えページに対応するブロックは、たとえばディスク102へ書き戻される。ページは、ページへのアクセスの日時の古い順に、キュー103によって管理される。例えば、アクセスされたデータに対応するページは、キュー103の最後尾へ配置される。その結果、アクセスされなかったデータに対応するページほどキュー103の先頭に位置することになる。キュー103の先頭に位置するページから、置き換えページとしてページが選択され、その選択されたページがたとえばディスク102へ書き戻される。図1において、キュー103は、(A1)、(A2),(A3)の順でデータアクセスが発生後のキューの状態を示す。
図2は、データアクセスにおけるプリフェッチを説明するための図である。本実施形態において、プリフェッチは、ディスク102上のブロックを、予めメモリ領域101に読み出しておくことである。図2では、データアクセスで要求されたブロックに対応するページをメモリ領域101に配置する際、物理配置上、要求されたブロックの近傍にあるブロックもアクセスされて、一緒にメモリ領域101に配置されている。このように、参照時の空間的局所性を利用して、その時点で要求がない近傍のブロックに対応するページを、プリフェッチにより事前にメモリ領域101に配置する。
ディスク102へのアクセス回数の削減のため、プリフェッチによりその時点で要求されていないブロックに対応するページも一緒にメモリ領域101に配置される。しかし、要求されたブロックに対応するページと一緒にメモリ領域101に配置されたページが、アクセスされる前に他ページに置き換えされるとプリフェッチの効果がない。
図2では、ページ置き換えアルゴリズムのキュー103は、プリフェッチにより、ディスク102に配置されたブロック5及びその近傍ブロック(6,7)をアクセスした後の状態を表している。
図3A及び図3Bは、ディスクアクセスが頻発する場合に起こりうる事象を説明するための図である。ディスクアクセスが頻発する状況では、メモリ領域101のサイズ制限のため、ページ置き換えアルゴリズムによるメモリ領域101からディスク102への書き戻しも頻発する。
図3Aにおいて、データアクセス(A1)のプリフェッチで、ディスク102におけるブロック1とその近傍ブロック(2,3,4)がアクセスされると、メモリ領域101にページ1,2,3,4が配置される。
データアクセス(A2)のプリフェッチで、ディスク102におけるブロック5とその近傍ブロック(6,7,8)がアクセスされると、メモリ領域101にページ5,6,7,8が配置される。この場合、メモリ領域101のサイズ制限(例えば、6ページ分とする)のため、ページ置き換えアルゴリズムによりページの置き換えが発生する。その結果、データアクセス(A1)で先読みされたブロック3,4に対応するページ3,4はアクセスされていないので、置き換え対象となる。
プリフェッチで先読みされたページのうちアクセスされずに置き換わるページが増えた結果、メモリ領域101の利用効率が低下する。すなわち、アクセスされないブロックに対応するページが、メモリ領域101に配置されることになる(すなわち、無駄読みが発生する)。そのため、メモリ領域101を、アクセスされないページが占めることになる(メモリ領域の利用効率の低下)。また、プリフェッチで先読みされたページのうちアクセスされずに置き換わるページが増えた場合、プリフェッチにより読み出された複数のブロックに対する使用されるブロックの割合が低下するので、ディスクアクセスが非効率となる。
例えば、図3Bに示すように、データアクセス(A1)〜(A4)のアクセスがあった場合について説明する。データアクセス(A1)、(A2)及び(A4)でプリフェッチが行われる。データアクセス(A1)でプリフェッチされたブロックに対応するページ1,2,3,4のうち、アクセスされたページは、ページ1,2であり、使用されたページの割合は2/4である。一方で、データアクセス(A2)でプリフェッチされたブロックに対応するページ5,6,7,8のうち、アクセスされたページは、ページ5であり、使用されたページの割合は、1/4である。
このように、プリフェッチの効果が得られない上に、ディスクアクセスも非効率(1つのブロックのために、4ブロック読んでいて、使われなかった)となる。
そこで、本実施形態では、プリフェッチによる無駄読みを削減し、メモリ領域の利用効率を向上させる技術を説明する。
図4は、本実施形態におけるアクセス制御装置の一例を示す。アクセス制御装置1は、読出部2、ロード部3、無効化部4、書込部5を含む。アクセス制御装置1の一例として、制御部12が挙げられる。
読出部2は、第1のデータに対するアクセス要求に応じて、記憶領域がブロック単位で管理された第1記憶部6から、第1のデータを含む第1のブロックを含む連続するブロックを読み出す。読出部2の一例として、IO実行部13が挙げられる。
ロード部3は、連続するブロックを、記憶領域をページ単位で管理するメモリ領域にロードする。ロード部3の一例として、IO実行部13が挙げられる。
無効化部4は、第1記憶部6の連続するブロックを無効化する。無効化の一例として、IO実行部13が挙げられる。
書込部5は、連続するブロックのメモリ領域へのロードにより、メモリ領域から押し出されたページを、メモリ領域におけるページへのアクセス状況に応じて、第1記憶部6または第2記憶部7の連続した空き領域に書き込む。書込部5は、押し出されたページのうち、メモリ領域にてアクセスされたページを第1記憶部6に書き込む。書込部5は、押し出されたページのうち、メモリ領域にてアクセスされなかったページを、記憶領域がブロック単位で管理された第2記憶部7に書き込む。書込部5の一例として、ページ管理部17が挙げられる。
このように構成することにより、メモリ領域において使用されたデータを、使用されたデータ用の記憶装置にまとまって配置することができる。その結果、要求ブロックとともに、近傍のブロックも読み出す処理を用いたデータアクセスにおける、ブロックの利用効率を向上させることができる。
以下に、本実施形態を詳述する。
本実施形態は、例えば、サーバ装置(以下、「サーバ」と称する。)におけるストレージミドルウェア機能を実現する制御部により実行される。ディスクからのブロックの読み出しでは、サーバは、アプリケーションプログラム(以下、「アプリケーション」と称する。)からのデータアクセスで要求されたブロックの他、物理領域が近傍の有効なブロックを併せて読み出す(プリフェッチ)。
本実施形態は、例えば、サーバ装置(以下、「サーバ」と称する。)におけるストレージミドルウェア機能を実現する制御部により実行される。ディスクからのブロックの読み出しでは、サーバは、アプリケーションプログラム(以下、「アプリケーション」と称する。)からのデータアクセスで要求されたブロックの他、物理領域が近傍の有効なブロックを併せて読み出す(プリフェッチ)。
その読み出しでは、サーバは、揮発性read(読み出すブロックは、ディスク上から削除する)を実行する。揮発性readを実行することで、物理領域上に連続した空き領域を確保することができる。
ディスクへのページ書き込みでは、サーバは、“使われたページ(すなわち、アクセスのあったページ)”と“使われなかったページ(すなわち、アクセスのなかったページ)”を、2つのリストを用いて、別々に指定する。
ストレージミドルウェア起動時、サーバは、“使われたページ”に対応するブロックを書き込むusedエリア、“使われなかったページ”に対応するブロックを書き込むunusedエリアを作成し、usedエリア、unusedエリアの使用領域の最後に追記する。これにより、使われたページに対応するブロックをまとめて配置し、無駄読み削減とメモリ領域の利用効率の向上を図る。
サーバは、usedエリア、unusedエリアに関わらず、ブロックの読み出しは揮発性readを用いて、要求されたデータに関するブロックとその近傍の連続物理領域とにアクセスする。
図5A−図5Cは、本実施形態における動作を説明するための図である。本実施形態では、ページ置き換えアルゴリズムの一例として、LRU方法を用いる。また、メモリ領域のサイズ制限は、例えば、6ブロック分とする。
図5Aに示すように、ディスクからのブロックの読み出しでは、サーバは、プリフェッチにより、要求があったブロック及びその近傍のブロックにアクセスする。それから、サーバは、揮発性readを実行することにより、ディスクアクセスで読み出したブロックを、ディスク102から削除にする。
次に、図5B、図5Cに示すように、サーバは、メモリ領域101に保持したページをディスクに書き戻す時は、使われたページに対応するブロックと使われなかったページに対応するブロックとを別々の領域(usedエリア、unusedエリア)に追記する。これにより、使われたページに対応するブロックがまとまって配置されるので、無駄読み削減と、メモリ領域の利用効率を向上させることができる。
例えば、図5B及び図5Cにおけるデータアクセス(A1)〜(A5)が行われる場合について考えてみる。データアクセス(A1)で、ブロックId=1〜4のブロックがプリフェッチされると、ディスク102bからブロックId=1〜4のブロックが削除され、キュー103にはブロックId=1〜4が格納される。
データアクセス(A2)で、ブロックId=5〜8のブロックがプリフェッチされると、ディスク102bからブロックId=5〜8のブロックが削除され、キュー103にはブロックId=5〜8が格納される。このとき、メモリ領域101のサイズ制限のため、所定のページがディスクに書き戻される。データアクセス(A1)でプリフェッチされたページのうちページ(3,4)は使われなかったページ(アクセスされなかったページ)なので、ページ(3,4)はunusedエリアのあるディスク102aに書き戻される。
それから、データアクセス(A3)で、メモリ領域101に保持されているページ(2)にアクセスがされ、キュー103内のブロックIdの順番が更新される。それから、データアクセス(A4)で、ブロックId=9〜14のブロックがプリフェッチされると、ディスク102bからブロックId=9〜14のブロックが削除され、キュー103にはブロックId=9〜14が格納される。このとき、メモリ領域101のサイズ制限のため、所定のページがディスクに書き戻される。キュー103内に保持されたブロックIdのうち、ページ(6,7、8)は使われなかった(アクセスされなかった)ので、ページ(6,7、8)はunusedエリアのあるディスク102aに書き戻される。一方、キュー103内に保持されたブロックIdに対応するページのうち、ページ(1,2、5)は使われた(アクセスされた)ので、ページ(1,2,5)はusedエリアのあるディスク102bに追記される。
データアクセス(A5)で、ブロックId=1,2,5のブロックがプリフェッチされると、ディスクからブロックId=1,2,5のブロックが削除され、キュー103にはブロックId=1,2,5が格納される。このとき、メモリ領域101のサイズ制限のため、所定のページがディスクに書き戻される。キュー103に保持されたブロックIdに対応するページのうち、使われなかった(アクセスされなかった)ページ(12、13、14)は、unusedエリアのあるディスク102aに書き戻される。
本実施形態によれば、“使われたページ”に対応するブロックが、ディスクの領域上にまとまって配置される。その結果として、プリフェッチによる無駄読みを削減し、メモリ領域の利用効率を向上させる。また、プリフェッチの効率化と、メモリ領域による高速化を両立させることができる。
以下に、本実施形態をさらに詳述する。
図6は、本実施形態におけるデータとブロックを説明するための図である。データは、図6(A)に示すように、キーと値(value)との組である。ブロックは、ディスク102a,102bにおいて、アドレスで管理される管理単位である。データは、図6(B)に示すように、ディスク102a,102bにブロック単位で格納される。1つのブロックには、複数の組のデータが含まれる。
図6は、本実施形態におけるデータとブロックを説明するための図である。データは、図6(A)に示すように、キーと値(value)との組である。ブロックは、ディスク102a,102bにおいて、アドレスで管理される管理単位である。データは、図6(B)に示すように、ディスク102a,102bにブロック単位で格納される。1つのブロックには、複数の組のデータが含まれる。
ブロック及び該ブロックに対応するページは、ブロックIdにより識別される。ブロックの読み出しは、ブロックIdを指定することにより行われる。
図7は、本実施形態におけるサーバのハードウェア構成を示す。サーバ11は、制御部12とディスク(ストレージ)20a,20bを含む。制御部12は、本実施形態に係るプログラムを記憶装置(不図示)から読み出して実行することにより、ディスク20へのデータの読み書きを行うストレージミドルウェア機能を有する。
ディスク20aには、ストレージミドルウェア起動時にunusedエリアが作成され、ディスク20bにusedエリアが作成される。unusedエリアは、“使われなかったページ”に対応するブロックを書き込む領域である。usedエリアは、“使われたページ”に対応するブロックを書き込む領域である。なお、unusedエリア、usedエリアは1つのディスク内に存在してもよいし、それぞれ異なるディスクに存在してもよい。
ストレージミドルウェアにおける入出力(IO)のインターフェース(IF)として、例えば、“getitems_bulk(K, N)”、“setitems_bulk(N)”がある。
“getitems_bulk(K, N)”は、制御部12がディスクからメモリ領域へブロックを読み出すIFである。Kは読み出し要求対象のブロックIdである。制御部12は、キーKに対応するブロックとディスク上の物理配置が近くのブロックもまとめて読み出す(プリフェッチ)。Nは後述するIOサイズである。IOサイズは、アクセスする物理配置の近傍の範囲(サイズでも、データ件数でもよい)を示し、指定された範囲で示される近傍領域にアクセスがされる。本実施例では、IOサイズ(N)をブロック数で指定する。
setitems_bulk(N)は、メモリ領域からディスクへブロックを書き込むIFである。制御部12は、IOサイズ(N)を指定する。 setitems_bulk(N)は、IOサイズ(N)から書き込むブロックを決定する。その書き込み対象ブロックを、アクセスのあったusedブロックと、アクセスのなかったunusedブロックに分けて、usedブロックはusedエリアへ、unusedブロックはunusedエリアへ書き込む。
制御部12は、IO実行部13、IOサイズ算出部16、ページ管理部17、メモリ領域19を含む。
IO実行部13は、アプリケーションからのデータアクセス(readアクセス、またはwriteアクセス)要求に基づいて、ディスク20上のブロックにアクセスするブロック読み出しを実行する。
IO実行部13は、ブロックIOキュー14と、物理レイアウト管理情報15a,15bを有する。ブロックIOキュー14は、要求されたブロックのIdを入れるキューである。
物理レイアウト管理情報15a,15bは、ディスク20a,20b上の各ブロックについて、そのブロックの有効・無効と、そのブロックのブロックアドレスとを管理する。物理レイアウト管理情報15aは、unusedエリア用として指定されたディスク20aについての物理レイアウト管理情報である。物理レイアウト管理情報15bは、usedエリア用として指定されたディスク20bについての物理レイアウト管理情報である。
IO実行部13は、“getitems_bulk(K, N)”を実行することにより、ブロック読み出しを行う。IO実行部13は、アプリケーションからブロックへのアクセス要求があった場合、その要求されたブロックのブロックIdをブロックIOキュー14に入れ、ブロックIOキュー14から順次、ブロックIdを取り出して要求を実行する。
その際、IO実行部13は、IOサイズ算出部16を呼び出し、読み出すブロック数(N)を取得する。Nは、IOサイズ算出部16がブロックIOキュー14の長さ(L)と1つ前のブロック読み出し要求で算出したIOサイズ(N’)によって決定する値であり、1以上の値である。
IO実行部13は、ブロックの読み出しの場合には、ブロックIOキュー14の先頭からブロックIdを取り出し、物理レイアウト管理情報15を通して、ブロックアドレスを取得し、そのブロックアドレスに基づいてディスク20a、20bにアクセスする。
このとき、IO実行部13は、指定ブロックId(K)に対応するブロックにアクセスする。それと共に、IO実行部13は、Nで指定された数に従ってディスク20上の物理配置のその近傍のブロックにアクセスし、その中で、物理レイアウト管理情報で有効なブロックを返す。
IO実行部13は、ブロックの読み出しの際には、通常、不揮発性readを用い、ある閾値を下回ったら揮発性readを用いる。
IO実行部13は、ブロックを読み出す前に、物理レイアウト管理情報15を参照し、充填率を算出し、充填率に基づいて、読み出し方式を揮発性readにするか、不揮発性readにするか選択する。
IO実行部13は、揮発性readを選択した場合においてブロックを削除する時は、物理レイアウト管理情報15上でそのブロックを無効にする。
また、IO実行部13は、“setitems_bulk(N)”を実行することにより、メモリ領域19上にあるページに対応するブロックのうち、Nで指定された数のブロックをディスクへ書き戻す。このとき、IO実行部13は、後述するページ管理リスト18上の参照カウンタの情報に従って、メモリ領域19上にあるページに対応するブロックを、使われたブロック[used_key_value_list]と使われなかったブロック[unused_key_value_list]とに分類する。
[unused_key_value_list]で指定されたブロックについて、IO実行部13は、ブロックをディスクに書き込む前に物理レイアウト管理情報15を参照し、揮発性readで読み出されたか、不揮発性readで読み出されたかを確認する。すなわち、IO実行部13は、物理レイアウト管理情報15を参照し、当該ブロックが無効になっているか否かにより、揮発性readで読み出されたか、不揮発性readで読み出されたかを確認する。
IO実行部13は、[unused_key_value_list]で指定されたブロックが不揮発readで読み出されていればが何もしない。IO実行部13は、[unused_key_value_list]で指定されたブロックが揮発性readで読み出されていれば、ディスク20への追記対象にする。
IO実行部13は、[used_key_value_list]で指定されたブロックについて、既存の該当ブロックを無効にして、ディスクへの追記対象にする。
IO実行部13は、ディスクへ追記する対象ブロックが決定した場合、物理レイアウト管理情報15を更新して、ディスク20へ、決定した対象ブロックを追記する。IO実行部13は、追記対象に関わらず、[unused_key_value_list]及び[used_key_value_list]で指定されたブロックについては、ページ管理リスト18から削除する。
IOサイズ算出部16は、ブロックIOキュー14に積まれた要求されたブロックIdの数(以下、キュー長(L))と、1つ前のブロック読み出し要求で算出したIOサイズ(N’)から、IOサイズ(=読み出すブロック数)(N)を算出して返す。
ページ管理部17は、ページ管理リスト18を保持する。ページ管理部17の処理の詳細については、図10で説明する。ページ管理リスト18は、各ブロックの参照回数と直近でアクセスされたブロックを管理するために用いられる。
ページ管理リスト18は、各ブロックの参照カウンタを持つ。ページ管理部17は、ブロック読み出し要求があると、ページ管理リスト18における、該当ブロックの参照カウンタをカウントアップして、当該ブロックをページ管理リスト18の先頭に移動する。
図8は、本実施形態における物理レイアウト管理情報の一例を示す。上述の通り、物理レイアウト管理情報15aは、unusedエリア用として指定されたディスク20aについての物理レイアウト管理情報である。物理レイアウト管理情報15bは、usedエリア用として指定されたディスク20bについての物理レイアウト管理情報である。物理レイアウト管理情報15a,15bは、同じデータ構造を有する。物理レイアウト管理情報15a,15bは、「ブロックId」15−1、「有効/無効フラグ」15−2、「ブロックアドレス」15−3のデータ項目を含む。
「ブロックId」15−1には、ディスク20a,20b上のブロックを識別するブロックIdが格納されている。「有効/無効フラグ」15−2には、ブロックIdで示されるブロックが有効(〇)か無効(×)かのフラグ情報が格納される。ブロックアドレス15−3には、ブロックIdで示されるブロックのディスク20a,20b上のアドレスが格納される。
IO実行部13は、ブロックIOキュー14に格納された先頭のブロックIdから順に読み出す。IO実行部13は、物理レイアウト管理情報15a,15bを参照し、ブロックIOキュー14から読み出したブロックIdのブロックアドレスを取得する。IO実行部13は、その取得したブロックアドレスの示すディスク20a,20b上のアドレスにアクセスする。
図9は、本実施形態におけるページ管理リストの一例を示す。ページ管理リスト18は、「ブロックId」18−1、「参照カウンタ」18−2のデータ項目を含む。「ブロックId」18−1には、メモリ領域19に配置されたページに対応するブロックを識別するブロックIdが格納されている。「参照カウンタ」18−2には、ブロックIdで示されるブロックに対応するページの参照回数が格納される。
ページ管理リスト18には、より直近でアクセスされたページが、よりリストの先頭に格納される。
図10は、本実施形態におけるIO実行部の動作フローを示す。IO実行部13は、ブロックIOキュー14に格納されたブロックId(=K)を、ブロックIOキュー14の先頭から順に読み出すと、ブロックIOキュー14に積まれた要求されたブロックIdの数(以下、キュー長(L))を取得する(S1)。
IO実行部13は、IOサイズ算出部16を呼び出し、IOサイズ(読み出すブロック数)(N)を取得する(S2)。IOサイズ算出部16は、ブロックIOキューの長さ(L)と、1つ前のブロック読み出しリクエストで算出したIOサイズ(N’)から、IOサイズ(N)を決定する。キュー長(L)には、事前に閾値が設定される。Nの初期値は1とし、Lが閾値を超えていたら、例えば、N’×2倍の値を新しいNとする(例:1,2,4,8,・・・増える)。逆に、そのLが閾値を下回っていたら、Nを1/2にする(例、8,4,2,1)。Nの最小値は1、最大値は事前に決めた値(例えば、64といった値)とする。
IO実行部13は、ページ管理部17を呼び出す(S3)。ページ管理部17は、必要に応じて、メモリ領域からアクセス頻度の低いページをディスクへ書き出す。ページ管理部17は、メモリ領域が満杯である場合において、ブロックを読み出す時は、まず、メモリ領域に保持されたページのうち、IOサイズ分のページをディスクへ書き戻す。その書き戻し対象となるページは、ページ管理リスト18の下位のブロックからIOサイズ分(N個)とする。その時、ページ管理部17は、参照カウンタの値によって、使われたページに対応するブロックと使われなかったページに対応するブロックに分類する。参照カウンタ=0のブロックは“使われなかったページ”に対応するブロック”であり、参照カウンタ>0のブロックは“使われたページに対応するブロック”となる。
IO実行部13は、IF getitems_bulk(K, N)を呼び出す(S4)。IO実行部13は、指定ブロックId(K)に対応するブロックにアクセスすると共に、IOサイズ(読み出すブロック数)に従ってディスク20の物理配置上、指定ブロックId(K)近傍のブロックにもアクセスする。IO実行部13は、そのアクセスしたブロックのうち、有効なブロックを返す。
IO実行部13は、指定ブロックId(K)に対応するブロックについて、物理レイアウト管理情報から当該ブロックのブロックアドレスを取得し、ディスク上のブロックにアクセスする。物理レイアウト管理情報は、上述したように、used用とunused用の2つある。IO実行部13は、ブロックアドレスを検索する際は、2つの物理レイアウト管理情報15a,15bを検索する。
IO実行部13は、ブロックの読み出しの際には、揮発性readを用いる。すなわち、IO実行部13は、読み出したブロックを、ディスクから削除されたブロックと同等に扱う。つまり、IO実行部13は、物理レイアウト管理情報15a,15b上で読み出したブロックを無効化する。
図11は、本実施形態におけるIF getitems_bulk(K, N)の動作フローを示す。呼び出されたgetitems_bulk(K, N)には、入力パラメータとして、リクエストされたブロックId(K)と、IOサイズ(N)が渡される。
IO実行部13は、リクエストされたブロックId(K)をキーとして、物理レイアウト管理情報15a,15bを検索して、ブロックId(=K)のブロックアドレスを取得する(S11)。例えば、図8において、リクエストされたブロックIdが“1”の場合、物理レイアウト管理情報からブロックアドレス“1001”が取得される。
IO実行部13は、揮発性read方式を用いて、ディスク20aまたはディスク20bからブロックId=K〜K+N−1(K:整数、N:整数)のブロックを読み出す(S12)。
IO実行部13は、S12で読み出したブロックを無効化するため、物理レイアウト管理情報15aまたは物理レイアウト管理情報15bにおいて、その読み出したブロックの有効/無効フラグを無効(×)に更新する(S13)。
IO実行部13は、S12で読み出した有効なブロックを返す(S14)。すなわち、IO実行部13は、S12で読み出したブロックのうち、S13での更新前の物理レイアウト管理情報15a,15bにおいて、有効/無効フラグが有効(〇)になっているブロックを返す。IO実行部13は、その読み出した有効なブロックをメモリ領域19に保持する。
図12は、本実施形態におけるIOサイズ算出部の動作フローを示す。図10のS2において、IO実行部13により呼び出されたIOサイズ算出部16は、図12のフローを実行する。IOサイズ算出部16は、入力パラメータとして、ブロックIOキュー長(L)と、前回算出したIOサイズ(N’)をIO実行部13により受け取る。
IOサイズ算出部16は、ブロックIOキュー長(L)と閾値T2とを比較する(S21)。閾値T2は、予め記憶部に設定されている。ブロックIOキュー長(L)>閾値T2の場合、IOサイズ算出部16は、N’×2により算出した値をNに設定する(S22)。ここで、Nの最大値は事前に決められている。Nの最大値を例えば64とし、それ以上大きくはしない。
ブロックIOキュー長(L)≦閾値T2の場合、IOサイズ算出部16は、N’/2により算出した値をNに設定する(S23)。ここで、Nの最小値を“1”とし、それより小さくはしない。
IOサイズ算出部16は、算出したIOサイズ(N)をIO実行部13へ返す(S24)。
図13は、本実施形態におけるブロックId(K=7)のブロックがリクエストされた場合のページ管理リストの更新例である。ブロックId=7のブロックがリクエストされると、ページ管理部17は、ページ管理リスト18において、ブロックId=7の参照カウンタをインクリメントし、ブロックId=7のエントリをページ管理リスト18の先頭に移動させる。
図14は、本実施形態におけるgetitems_bulk(K, N)呼び出し後のページ管理リストの更新例を示す。図14では、ブロックId(K=1)のブロックがリクエストされ、IOサイズN=4、IF getitems_bulk(1,4)、ブロックId=[1,2,3,4]のブロックが読み出される場合について説明する。
ページ管理部17は、リクエストされたブロック(ブロックId=1)に対応するページのエントリを、ページ管理リスト18の先頭へ配置する。また、ページ管理部17は、IOサイズ=4指定で読み出された、リクエストされていないブロック(ブロックId=2,3,4)に対応するページのエントリを、ページ管理リスト18の最後に配置し、それらの参照カウンタを“0”に設定する。
図15は、本実施形態におけるページ管理部の動作フローを示す。図10のS3において、IO実行部13により呼び出されたページ管理部17は、図15のフローを実行する。ページ管理部17は、入力パラメータとして、リクエストされたブロックId(K)と、IOサイズ(N)をIO実行部13により受け取る。
ページ管理部17は、リクエストされたブロック(K)について、図13及び図14で説明したように、ページ管理リスト18を更新する(S31)。
ページ管理部17は、メモリ領域に保持されている全ページ数、すなわち、ページ管理リスト18に登録されている全エントリ数を取得する(S32)。
ページ管理部17は、S32で取得したページ数が、メモリ領域19に保持可能なブロックの最大数である場合(S33で「Yes」)、次の処理を行う。すなわち、ページ管理部17は、IF setitems_bulk(N)を呼び出す(S34)。
データの追記の際には、(1)ブロックの追記、(2)物理レイアウト管理情報を更新(書き込んだブロックを有効にする)、(3)ページ管理リストの更新が行われる。
図16A及び図16Bは、本実施形態におけるIF setitems_bulk(N)の動作フローを示す。ページ管理部17により呼び出されたsetitems_bulk(N)には、入力パラメータとして、IOサイズ(N)が渡される。
ページ管理部17は、ページ管理リスト18を参照して、対象ブロックを決定する(S41)。ここでは、ページ管理部17は、ページ管理リスト18の最後からIOサイズ(N)分のブロックを対象ブロックとして選択する。例えば、N=4の場合、図17に示すように、ページ管理リスト18の下から4エントリで示すページに対応するブロックが対象ブロックとして選択される。
ページ管理部17は、S41で選択された対象ブロックを、参照カウンタに基づいて、使われた(used)ページに対応するブロックと、使われなかった(unused)ページに対応するブロックとに分類する(S42)。参照カウンタ=0のページに対応するブロックは、使われなかった(unused)ページに対応するブロックであり、参照カウンタ>0のページに対応するブロックは、使われた(used)ブロックと判定される。図17の場合、usedブロックは、ブロックId=6のブロックであり、unusedブロックは、ブロックId=2,3,4のブロックである。
ページ管理部17は、usedブロックをusedエリアに追記し(S43a)、unusedブロックをunusedエリアに追記する(S43b)。S43a及びS43bの処理の詳細を、図16Bに示す。
ページ管理部17は、追記対象となるブロックがusedブロックの場合、usedエリアに追記する。また、ページ管理部17は、追記対象となるブロックがunusedブロックの場合、unusedエリアに追記する(S43−1)。
S43−1では、ページ管理部17は、追記対象となるブロックがusedブロックの場合、ディスク20bに作成されたusedエリアのうち、有効なブロックが配置されている最後の領域に隣接する空き領域へ、追記対象となるusedブロックを追記する。すなわち、ページ管理部17は、ディスク20bにおいて書込まれた記憶領域のうち、物理的に一番後ろに位置する記憶領域から物理的に連続するm個のブロックが配置されていない空領域に、m個のブロックをそれぞれ書込みする。ここで、m(m:整数)個のブロックとは、S42においてusedブロックとして分類されたブロック群のことである。
また、S43−1では、ページ管理部17は、追記対象となるブロックがunusedブロックの場合、ディスク20aに作成されたunusedエリアのうち、有効なブロックが配置されている最後の領域に隣接する空き領域へ、追記対象となるunusedブロックを追記する。すなわち、ページ管理部17は、ディスク20aにおいて書込まれた記憶領域のうち、物理的に一番後ろに位置する記憶領域から物理的に連続するm個のブロックが配置されていない空領域に、m個のブロックをそれぞれ書込みする。ここで、m(m:整数)個のブロックとは、S42においてunusedブロックとして分類されたブロック群のことである。
ページ管理部17は、usedブロックについては物理レイアウト管理情報(used用)15b、unusedブロックについては物理レイアウト管理情報(unused用)15aを更新する(S43−2)。物理レイアウト管理情報の更新について、図18を用いて説明する。
ページ管理部17は、追記対象ブロックに対応するページのエントリを、ページ管理リスト18から削除する(S43−3)。ページ管理部17は、ページ管理リスト18からS41で決定された対象ブロック(unusedブロックとusedブロック)に対応するページのエントリを削除する。図17の場合、ページ管理リスト18の下から4つのエントリ(破線で囲まれたエントリ)が削除される。
図18は、本実施形態における物理レイアウト管理情報(used用)と物理レイアウト管理情報(unused用)の更新例を示す。なお、物理レイアウト管理情報(used用)15bと物理レイアウト管理情報(unused用)15aの更新前において、以下で説明するブロックId=2,3,4、6のブロックは、usedエリアに配置されているものとする。
例えば、追記対象となるusedブロックが、ブロックId=6のブロックである場合、ページ管理部17は、図18(A)に示すように、旧ブロックId=6に対応するブロックとして、新たにブロックId=10のエントリを、物理レイアウト管理情報(used用)15bの最後に追加する。このとき、追加されたエントリの有効/無効フラグは、有効(〇)となっている。
また、例えば、追記対象となるunusedブロックが、ブロックId=2,3,4のブロックである場合、ページ管理部17は、図18(B)に示すように、旧ブロックId=2,3,4に対応するブロックとして、新たにブロックId=20,21,22のエントリを、物理レイアウト管理情報(unused用)15aの最後に追加する。このとき、追加されたエントリの有効/無効フラグは、有効(〇)となっている。
本実施形態によれば、“使われたページ”に対応するブロックがディスクの記憶領域上にまとまって配置される。その結果として、プリフェッチによる無駄読みを削減し、メモリ領域の利用効率を向上させることができる。それと共に、プリフェッチに効率化と、メモリによる高速化との両立を図ることができる。
なお、本実施形態では、メモリ領域からディスクへページを書き戻す場合、ディスク20a、20bにて有効なブロックが配置されている最後の領域に隣接する空き領域(または無効化された領域)へそのブロックを追記したが、これに限定されない。例えば、追記対象となるブロックのサイズ以上の空き領域(無効化された領域)がディスク内にあれば、その空き領域の直前にある有効なブロックの次の領域からそのブロックを書き込むようにしてもよい。
図19は、本実施形態におけるプログラムを実行するコンピュータのハードウェア環境の構成ブロック図の一例である。コンピュータ30は、サーバ装置11として機能する。コンピュータ30は、CPU32、ROM33、RAM36、通信I/F34、記憶装置37、出力I/F31、入力I/F35、読み取り装置38、バス39、出力機器41、入力機器42によって構成されている。
ここで、CPUは、中央演算装置を示す。ROMは、リードオンリメモリを示す。RAMは、ランダムアクセスメモリを示す。I/Fは、インターフェースを示す。バス39には、CPU32、ROM33、RAM36、通信I/F34、記憶装置37、出力I/F31、入力I/F35、及び読み取り装置38が接続されている。読み取り装置38は、可搬型記録媒体を読み出す装置である。出力機器41は、出力I/F31に接続されている。入力機器42は、入力I/F35に接続にされている。
記憶装置37としては、ハードディスク、フラッシュメモリ、磁気ディスクなど様々な形式の記憶装置を使用することができる。記憶装置37またはROM33には、CPU32をアクセス制御装置1として機能させるプログラムが格納されている。RAM36は、データを一時的に保持するメモリ領域を有する。
CPU32は、記憶装置37等に格納した上記実施形態で説明した処理を実現するプログラムを読み出し、当該プログラムを実行する。
上記実施形態で説明した処理を実現するプログラムは、プログラム提供者側から通信ネットワーク40、および通信I/F34を介して、例えば記憶装置37に格納されてもよい。また、上記実施形態で説明した処理を実現するプログラムは、市販され、流通している可搬型記憶媒体に格納されていてもよい。この場合、この可搬型記憶媒体は読み取り装置38にセットされて、記憶装置37にそのプログラムがインストールされ、インストールされたプログラムがCPU32によって読み出されて、実行されてもよい。可搬型記憶媒体としてはCD−ROM、フレキシブルディスク、光ディスク、光磁気ディスク、ICカード、USBメモリ装置など様々な形式の記憶媒体を使用することができる。このような記憶媒体に格納されたプログラムが読み取り装置38によって読み取られる。
また、入力機器42には、キーボード、マウス、電子カメラ、ウェブカメラ、マイク、スキャナ、センサ、タブレットなどを用いることが可能である。また、出力機器41には、ディスプレイ、プリンタ、スピーカなどを用いることが可能である。また、ネットワーク40は、インターネット、LAN、WAN、専用線、有線、無線等の通信網であってよい。
なお、本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
上記実施形態に関し、更に以下の付記を開示する。
(付記1)
コンピュータに、
第1のデータに対するアクセス要求に応じて、記憶領域がブロック単位で管理された第1記憶部から、前記第1のデータを含む第1のブロックを含む連続するブロックを読み出し、
前記連続するブロックを、記憶領域をページ単位で管理するメモリ領域にロードし、
前記第1記憶部の前記連続するブロックを無効化し、
前記連続するブロックの前記メモリ領域へのロードにより、該メモリ領域から押し出されたページを、前記メモリ領域における該ページへのアクセス状況に応じて、前記第1記憶部の連続した空き領域に書き込む
処理を実行させることを特徴とするアクセス制御プログラム。
(付記2)
前記書き込みにおいて、前記押し出されたページのうち、前記メモリ領域にてアクセスされた前記ページを前記第1記憶部に書き込む
ことを特徴とする付記1に記載のアクセス制御プログラム。
(付記3)
前記書き込みにおいて、前記押し出されたページのうち、前記メモリ領域にてアクセスされなかった前記ページを、記憶領域がブロック単位で管理された前記第1記憶部とは異なる第2記憶部に書き込む
ことを特徴とする付記1または2に記載のアクセス制御プログラム。
(付記4)
第1のデータに対するアクセス要求に応じて、記憶領域がブロック単位で管理された第1記憶部から、前記第1のデータを含む第1のブロックを含む連続するブロックを読み出す読出部、
前記連続するブロックを、記憶領域をページ単位で管理するメモリ領域にロードするロード部と、
前記第1記憶部の前記連続するブロックを無効化する無効化部と、
前記連続するブロックの前記メモリ領域へのロードにより、該メモリ領域から押し出されたページを、前記メモリ領域における該ページへのアクセス状況に応じて、前記第1記憶部の連続した空き領域に書き込む書込部と、
を備えることを特徴とするアクセス制御装置。
(付記5)
前記書込部は、前記押し出されたページのうち、前記メモリ領域にてアクセスされた前記ページを前記第1記憶部に書き込む
ことを特徴とする付記4に記載のアクセス制御装置。
(付記6)
前記書込部は、前記押し出されたページのうち、前記メモリ領域にてアクセスされなかった前記ページを、記憶領域がブロック単位で管理された前記第1記憶部とは異なる第2記憶部に書き込む
ことを特徴とする付記4または5に記載のアクセス制御装置。
(付記7)
コンピュータは、
第1のデータに対するアクセス要求に応じて、記憶領域がブロック単位で管理された第1記憶部から、前記第1のデータを含む第1のブロックを含む連続するブロックを読み出し、
前記連続するブロックを、記憶領域をページ単位で管理するメモリ領域にロードし、
前記第1記憶部の前記連続するブロックを無効化し、
前記連続するブロックの前記メモリ領域へのロードにより、該メモリ領域から押し出されたページを、前記メモリ領域における該ページへのアクセス状況に応じて、前記第1記憶部の連続した空き領域に書き込む
処理を実行させることを特徴とするアクセス制御方法。
(付記8)
前記書き込みにおいて、前記押し出されたページのうち、前記メモリ領域にてアクセスされた前記ページを前記第1記憶部に書き込む
ことを特徴とする付記7に記載のアクセス制御方法。
(付記9)
前記書き込みにおいて、前記押し出されたページのうち、前記メモリ領域にてアクセスされなかった前記ページを、記憶領域がブロック単位で管理された前記第1記憶部とは異なる第2記憶部に書き込む
ことを特徴とする付記7または8に記載のアクセス制御方法。
(付記1)
コンピュータに、
第1のデータに対するアクセス要求に応じて、記憶領域がブロック単位で管理された第1記憶部から、前記第1のデータを含む第1のブロックを含む連続するブロックを読み出し、
前記連続するブロックを、記憶領域をページ単位で管理するメモリ領域にロードし、
前記第1記憶部の前記連続するブロックを無効化し、
前記連続するブロックの前記メモリ領域へのロードにより、該メモリ領域から押し出されたページを、前記メモリ領域における該ページへのアクセス状況に応じて、前記第1記憶部の連続した空き領域に書き込む
処理を実行させることを特徴とするアクセス制御プログラム。
(付記2)
前記書き込みにおいて、前記押し出されたページのうち、前記メモリ領域にてアクセスされた前記ページを前記第1記憶部に書き込む
ことを特徴とする付記1に記載のアクセス制御プログラム。
(付記3)
前記書き込みにおいて、前記押し出されたページのうち、前記メモリ領域にてアクセスされなかった前記ページを、記憶領域がブロック単位で管理された前記第1記憶部とは異なる第2記憶部に書き込む
ことを特徴とする付記1または2に記載のアクセス制御プログラム。
(付記4)
第1のデータに対するアクセス要求に応じて、記憶領域がブロック単位で管理された第1記憶部から、前記第1のデータを含む第1のブロックを含む連続するブロックを読み出す読出部、
前記連続するブロックを、記憶領域をページ単位で管理するメモリ領域にロードするロード部と、
前記第1記憶部の前記連続するブロックを無効化する無効化部と、
前記連続するブロックの前記メモリ領域へのロードにより、該メモリ領域から押し出されたページを、前記メモリ領域における該ページへのアクセス状況に応じて、前記第1記憶部の連続した空き領域に書き込む書込部と、
を備えることを特徴とするアクセス制御装置。
(付記5)
前記書込部は、前記押し出されたページのうち、前記メモリ領域にてアクセスされた前記ページを前記第1記憶部に書き込む
ことを特徴とする付記4に記載のアクセス制御装置。
(付記6)
前記書込部は、前記押し出されたページのうち、前記メモリ領域にてアクセスされなかった前記ページを、記憶領域がブロック単位で管理された前記第1記憶部とは異なる第2記憶部に書き込む
ことを特徴とする付記4または5に記載のアクセス制御装置。
(付記7)
コンピュータは、
第1のデータに対するアクセス要求に応じて、記憶領域がブロック単位で管理された第1記憶部から、前記第1のデータを含む第1のブロックを含む連続するブロックを読み出し、
前記連続するブロックを、記憶領域をページ単位で管理するメモリ領域にロードし、
前記第1記憶部の前記連続するブロックを無効化し、
前記連続するブロックの前記メモリ領域へのロードにより、該メモリ領域から押し出されたページを、前記メモリ領域における該ページへのアクセス状況に応じて、前記第1記憶部の連続した空き領域に書き込む
処理を実行させることを特徴とするアクセス制御方法。
(付記8)
前記書き込みにおいて、前記押し出されたページのうち、前記メモリ領域にてアクセスされた前記ページを前記第1記憶部に書き込む
ことを特徴とする付記7に記載のアクセス制御方法。
(付記9)
前記書き込みにおいて、前記押し出されたページのうち、前記メモリ領域にてアクセスされなかった前記ページを、記憶領域がブロック単位で管理された前記第1記憶部とは異なる第2記憶部に書き込む
ことを特徴とする付記7または8に記載のアクセス制御方法。
101 メモリ領域
102,102a,102b ディスク
103 キュー
1 アクセス制御装置
2 読出部
3 ロード部
4 無効化部
5 書込部
6 第1記憶装置
7 第2記憶装置
11 サーバ
12 制御部
13 IO実行部
14 ブロックIOキュー
15a,15b 物理レイアウト管理情報
16 IOサイズ算出部
17 ページ管理部
18 ページ管理リスト
19 メモリ
20a,20b ディスク
102,102a,102b ディスク
103 キュー
1 アクセス制御装置
2 読出部
3 ロード部
4 無効化部
5 書込部
6 第1記憶装置
7 第2記憶装置
11 サーバ
12 制御部
13 IO実行部
14 ブロックIOキュー
15a,15b 物理レイアウト管理情報
16 IOサイズ算出部
17 ページ管理部
18 ページ管理リスト
19 メモリ
20a,20b ディスク
Claims (5)
- コンピュータに、
第1のデータに対するアクセス要求に応じて、記憶領域がブロック単位で管理された第1記憶部から、前記第1のデータを含む第1のブロックを含む連続するブロックを読み出し、
前記連続するブロックを、記憶領域をページ単位で管理するメモリ領域にロードし、
前記第1記憶部の前記連続するブロックを無効化し、
前記連続するブロックの前記メモリ領域へのロードにより、該メモリ領域から押し出されたページを、前記メモリ領域における該ページへのアクセス状況に応じて、前記第1記憶部の連続した空き領域に書き込む
処理を実行させることを特徴とするアクセス制御プログラム。 - 前記書き込みにおいて、前記押し出されたページのうち、前記メモリ領域にてアクセスされた前記ページを前記第1記憶部に書き込む
ことを特徴とする請求項1に記載のアクセス制御プログラム。 - 前記書き込みにおいて、前記押し出されたページのうち、前記メモリ領域にてアクセスされなかった前記ページを、記憶領域がブロック単位で管理された前記第1記憶部とは異なる第2記憶部に書き込む
ことを特徴とする請求項1または2に記載のアクセス制御プログラム。 - 第1のデータに対するアクセス要求に応じて、記憶領域がブロック単位で管理された第1記憶部から、前記第1のデータを含む第1のブロックを含む連続するブロックを読み出す読出部、
前記連続するブロックを、記憶領域をページ単位で管理するメモリ領域にロードするロード部と、
前記第1記憶部の前記連続するブロックを無効化する無効化部と、
前記連続するブロックの前記メモリ領域へのロードにより、該メモリ領域から押し出されたページを、前記メモリ領域における該ページへのアクセス状況に応じて、前記第1記憶部の連続した空き領域に書き込む書込部と、
を備えることを特徴とするアクセス制御装置。 - コンピュータは、
第1のデータに対するアクセス要求に応じて、記憶領域がブロック単位で管理された第1記憶部から、前記第1のデータを含む第1のブロックを含む連続するブロックを読み出し、
前記連続するブロックを、記憶領域をページ単位で管理するメモリ領域にロードし、
前記第1記憶部の前記連続するブロックを無効化し、
前記連続するブロックの前記メモリ領域へのロードにより、該メモリ領域から押し出されたページを、前記メモリ領域における該ページへのアクセス状況に応じて、前記第1記憶部の連続した空き領域に書き込む
処理を実行させることを特徴とするアクセス制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015128147A JP2016028319A (ja) | 2014-07-08 | 2015-06-25 | アクセス制御プログラム、アクセス制御装置及びアクセス制御方法 |
US14/790,522 US20160011989A1 (en) | 2014-07-08 | 2015-07-02 | Access control apparatus and access control method |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014140931 | 2014-07-08 | ||
JP2014140931 | 2014-07-08 | ||
JP2015128147A JP2016028319A (ja) | 2014-07-08 | 2015-06-25 | アクセス制御プログラム、アクセス制御装置及びアクセス制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016028319A true JP2016028319A (ja) | 2016-02-25 |
Family
ID=55067689
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015128147A Pending JP2016028319A (ja) | 2014-07-08 | 2015-06-25 | アクセス制御プログラム、アクセス制御装置及びアクセス制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20160011989A1 (ja) |
JP (1) | JP2016028319A (ja) |
Family Cites Families (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5150472A (en) * | 1989-10-20 | 1992-09-22 | International Business Machines Corp. | Cache management method and apparatus for shared, sequentially-accessed, data |
US5420983A (en) * | 1992-08-12 | 1995-05-30 | Digital Equipment Corporation | Method for merging memory blocks, fetching associated disk chunk, merging memory blocks with the disk chunk, and writing the merged data |
US5539895A (en) * | 1994-05-12 | 1996-07-23 | International Business Machines Corporation | Hierarchical computer cache system |
JP3586887B2 (ja) * | 1994-06-10 | 2004-11-10 | 松下電器産業株式会社 | 情報記録再生装置およびデータキャッシュ方法 |
US5822749A (en) * | 1994-07-12 | 1998-10-13 | Sybase, Inc. | Database system with methods for improving query performance with cache optimization strategies |
US5623608A (en) * | 1994-11-14 | 1997-04-22 | International Business Machines Corporation | Method and apparatus for adaptive circular predictive buffer management |
US7103794B2 (en) * | 1998-06-08 | 2006-09-05 | Cacheflow, Inc. | Network object cache engine |
JP3522527B2 (ja) * | 1998-03-27 | 2004-04-26 | 富士通株式会社 | 入出力制御装置および入出力制御方法 |
US6370622B1 (en) * | 1998-11-20 | 2002-04-09 | Massachusetts Institute Of Technology | Method and apparatus for curious and column caching |
US6381659B2 (en) * | 1999-01-19 | 2002-04-30 | Maxtor Corporation | Method and circuit for controlling a first-in-first-out (FIFO) buffer using a bank of FIFO address registers capturing and saving beginning and ending write-pointer addresses |
US6532521B1 (en) * | 1999-06-30 | 2003-03-11 | International Business Machines Corporation | Mechanism for high performance transfer of speculative request data between levels of cache hierarchy |
US6510494B1 (en) * | 1999-06-30 | 2003-01-21 | International Business Machines Corporation | Time based mechanism for cached speculative data deallocation |
US6912687B1 (en) * | 2000-05-11 | 2005-06-28 | Lsi Logic Corporation | Disk array storage subsystem with parity assist circuit that uses scatter-gather list |
US6725397B1 (en) * | 2000-11-14 | 2004-04-20 | International Business Machines Corporation | Method and system for preserving data resident in volatile cache memory in the event of a power loss |
US6629211B2 (en) * | 2001-04-20 | 2003-09-30 | International Business Machines Corporation | Method and system for improving raid controller performance through adaptive write back/write through caching |
WO2003017598A1 (en) * | 2001-08-15 | 2003-02-27 | The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations | Scsi-to-ip cache storage device and method |
US6782444B1 (en) * | 2001-11-15 | 2004-08-24 | Emc Corporation | Digital data storage subsystem including directory for efficiently providing formatting information for stored records |
US20030154349A1 (en) * | 2002-01-24 | 2003-08-14 | Berg Stefan G. | Program-directed cache prefetching for media processors |
JP4067887B2 (ja) * | 2002-06-28 | 2008-03-26 | 富士通株式会社 | プリフェッチを行う演算処理装置、情報処理装置及びそれらの制御方法 |
US7953926B2 (en) * | 2002-08-15 | 2011-05-31 | Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations | SCSI-to-IP cache storage device and method |
US7058764B2 (en) * | 2003-04-14 | 2006-06-06 | Hewlett-Packard Development Company, L.P. | Method of adaptive cache partitioning to increase host I/O performance |
US7051159B2 (en) * | 2003-06-30 | 2006-05-23 | International Business Machines Corporation | Method and system for cache data fetch operations |
KR100546348B1 (ko) * | 2003-07-23 | 2006-01-26 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그 데이터 저장 방법 |
JP4287433B2 (ja) * | 2003-11-18 | 2009-07-01 | パナソニック株式会社 | ファイル記録装置 |
US7162584B2 (en) * | 2003-12-29 | 2007-01-09 | Intel Corporation | Mechanism to include hints within compressed data |
JP4713867B2 (ja) * | 2004-09-22 | 2011-06-29 | 株式会社東芝 | メモリコントローラ,メモリ装置及びメモリコントローラの制御方法 |
JP4366298B2 (ja) * | 2004-12-02 | 2009-11-18 | 富士通株式会社 | 記憶装置、その制御方法及びプログラム |
US7487320B2 (en) * | 2004-12-15 | 2009-02-03 | International Business Machines Corporation | Apparatus and system for dynamically allocating main memory among a plurality of applications |
GB0603552D0 (en) * | 2006-02-22 | 2006-04-05 | Advanced Risc Mach Ltd | Cache management within a data processing apparatus |
WO2007099598A1 (ja) * | 2006-02-28 | 2007-09-07 | Fujitsu Limited | プリフェッチ機能を有するプロセッサ |
JP5089901B2 (ja) * | 2006-03-28 | 2012-12-05 | 株式会社日立製作所 | 記憶制御装置及び記憶制御装置の制御方法 |
JP5002201B2 (ja) * | 2006-06-30 | 2012-08-15 | 株式会社東芝 | メモリシステム |
US20080007569A1 (en) * | 2006-07-06 | 2008-01-10 | Rom-Shen Kao | Control protocol and signaling in a new memory architecture |
KR100794312B1 (ko) * | 2006-12-27 | 2008-01-11 | 삼성전자주식회사 | 명령어 자동 처리 유니트를 포함한 메모리 컨트롤러 및그를 포함한 메모리 시스템 |
JP5083757B2 (ja) * | 2007-04-19 | 2012-11-28 | インターナショナル・ビジネス・マシーンズ・コーポレーション | データをキャッシュする技術 |
US8359430B1 (en) * | 2007-08-30 | 2013-01-22 | Network Appliance, Inc. | Techniques for efficient mass storage layout optimization |
JP2009098934A (ja) * | 2007-10-17 | 2009-05-07 | Hitachi Ltd | プロセッサ及びキャッシュメモリ |
US8145844B2 (en) * | 2007-12-13 | 2012-03-27 | Arm Limited | Memory controller with write data cache and read data cache |
US8255635B2 (en) * | 2008-02-01 | 2012-08-28 | International Business Machines Corporation | Claiming coherency ownership of a partial cache line of data |
TWI373768B (en) * | 2008-02-05 | 2012-10-01 | Phison Electronics Corp | System, controller and method for data storage |
US8843691B2 (en) * | 2008-06-25 | 2014-09-23 | Stec, Inc. | Prioritized erasure of data blocks in a flash storage device |
US8086804B2 (en) * | 2008-09-24 | 2011-12-27 | Oracle America, Inc. | Method and system for optimizing processor performance by regulating issue of pre-fetches to hot cache sets |
US8443150B1 (en) * | 2008-11-04 | 2013-05-14 | Violin Memory Inc. | Efficient reloading of data into cache resource |
US8788758B1 (en) * | 2008-11-04 | 2014-07-22 | Violin Memory Inc | Least profitability used caching scheme |
JP5593718B2 (ja) * | 2010-02-05 | 2014-09-24 | 富士通株式会社 | ストレージ装置、ストレージ装置制御プログラムおよびストレージ装置制御方法 |
US20120311271A1 (en) * | 2011-06-06 | 2012-12-06 | Sanrad, Ltd. | Read Cache Device and Methods Thereof for Accelerating Access to Data in a Storage Area Network |
JP6011194B2 (ja) * | 2012-09-21 | 2016-10-19 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US9201806B2 (en) * | 2013-01-04 | 2015-12-01 | International Business Machines Corporation | Anticipatorily loading a page of memory |
US9483191B2 (en) * | 2013-03-15 | 2016-11-01 | Arris Enterprises, Inc. | Multi-tier storage for delivery of services |
US9286225B2 (en) * | 2013-03-15 | 2016-03-15 | Saratoga Speed, Inc. | Flash-based storage system including reconfigurable circuitry |
GB2513333A (en) * | 2013-04-23 | 2014-10-29 | Ibm | Method and apparatus for testing a storage system |
US9529730B2 (en) * | 2014-04-28 | 2016-12-27 | Apple Inc. | Methods for cache line eviction |
-
2015
- 2015-06-25 JP JP2015128147A patent/JP2016028319A/ja active Pending
- 2015-07-02 US US14/790,522 patent/US20160011989A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20160011989A1 (en) | 2016-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Jo et al. | FAB: Flash-aware buffer management policy for portable media players | |
CN107066397B (zh) | 用于管理数据迁移的方法、***和存储介质 | |
CN111344684B (zh) | 多层缓存安置机制 | |
US7921260B2 (en) | Preferred write-mostly data cache replacement policies | |
US20140143493A1 (en) | Bypassing a Cache when Handling Memory Requests | |
JP4829191B2 (ja) | キャッシュシステム | |
KR102453192B1 (ko) | 다른 캐시에서의 엔트리들의 가용성을 기반으로 한 캐시 엔트리 교체 | |
CN110737399B (zh) | 用于管理存储***的方法、设备和计算机程序产品 | |
US20180300258A1 (en) | Access rank aware cache replacement policy | |
US20130205089A1 (en) | Cache Device and Methods Thereof | |
US8806139B2 (en) | Cache set replacement order based on temporal set recording | |
JP2017509998A (ja) | キャッシュ汚染を低減するために専用キャッシュセットにおける専用プリフェッチポリシーを競合させることに基づいた適応キャッシュプリフェッチング | |
KR20100021868A (ko) | 플래시 메모리 장치를 위한 버퍼 캐쉬 관리 방법 | |
CN111324556B (zh) | 用于将预定数目的数据项预取到高速缓存的方法和*** | |
US11593268B2 (en) | Method, electronic device and computer program product for managing cache | |
Ramasamy et al. | RFFE: A buffer cache management algorithm for flash-memory-based SSD to improve write performance | |
CN108021514A (zh) | 一种缓存替换的方法和设备 | |
CN107229580B (zh) | 顺序流检测方法与装置 | |
US20170046278A1 (en) | Method and apparatus for updating replacement policy information for a fully associative buffer cache | |
US11029892B2 (en) | Memory control apparatus and memory control method for swapping data based on data characteristics | |
JP2016038907A (ja) | アクセス制御プログラム、アクセス制御装置及びアクセス制御方法 | |
US9842061B2 (en) | Implementing advanced caching | |
US11513961B2 (en) | Online heuristic sequentiality detection over input/output streams for cache systems in large address spaces | |
JP2016028319A (ja) | アクセス制御プログラム、アクセス制御装置及びアクセス制御方法 | |
JP6919277B2 (ja) | ストレージシステム、ストレージ管理装置、ストレージ管理方法、及びプログラム |