JP2012078939A - 情報処理装置およびキャッシュ制御方法 - Google Patents
情報処理装置およびキャッシュ制御方法 Download PDFInfo
- Publication number
- JP2012078939A JP2012078939A JP2010221591A JP2010221591A JP2012078939A JP 2012078939 A JP2012078939 A JP 2012078939A JP 2010221591 A JP2010221591 A JP 2010221591A JP 2010221591 A JP2010221591 A JP 2010221591A JP 2012078939 A JP2012078939 A JP 2012078939A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- bitmap
- storage device
- data
- sector
- 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
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】大容量のキャッシュデバイスを用いても、少ない容量のメモリで、性能低下を抑えること。
【解決手段】実施形態によれば、情報処理装置は、第1の記憶装置のキャッシュ領域を第2の記憶装置のキャッシュとして用いて、第2の記憶装置へのデータの書き込みおよび第2の記憶装置からのデータの読み出しを所定のデータ長のブロック単位で処理するキャッシュ制御手段であって、キャッシュ領域内のキャッシュデータの状態を所定のデータ長のセクタ単位で示すセクタビットマップをキャッシュ領域の各ブロック毎に設け、第1の記憶装置内の管理データ領域内で、第1の記憶装置のキャッシュ領域内の全てのブロックに対応するセクタビットマップをビットマップとして管理し、メモリ内に確保されるキャッシュ領域をビットマップのキャッシュとして用いるこキャッシュ制御手段を具備する。
【選択図】 図3
【解決手段】実施形態によれば、情報処理装置は、第1の記憶装置のキャッシュ領域を第2の記憶装置のキャッシュとして用いて、第2の記憶装置へのデータの書き込みおよび第2の記憶装置からのデータの読み出しを所定のデータ長のブロック単位で処理するキャッシュ制御手段であって、キャッシュ領域内のキャッシュデータの状態を所定のデータ長のセクタ単位で示すセクタビットマップをキャッシュ領域の各ブロック毎に設け、第1の記憶装置内の管理データ領域内で、第1の記憶装置のキャッシュ領域内の全てのブロックに対応するセクタビットマップをビットマップとして管理し、メモリ内に確保されるキャッシュ領域をビットマップのキャッシュとして用いるこキャッシュ制御手段を具備する。
【選択図】 図3
Description
本発明の実施形態は、例えばSSD(Solid state drive)とHDD(Hard disk drive)とを搭載し、SSDをHDDのキャッシュとして用いて、HDDに対するアクセスの高速化を図るパーソナルコンピュータ等の情報処理装置およびキャッシュ制御方法に関する。
情報化社会である今日では、日々、大量のデータが取り扱われている。また、データを記憶させる媒体として、大容量で比較的安価なHDDが広く用いられている。大容量で比較的安価である反面、HDDは、アクセス速度が比較的低速である。
一方、フラッシュメモリは、HDDと比較して、アクセス速度は高速ではあるが高価であり、例えば複数台のHDDを搭載するファイルサーバ等において、フラッシュメモリが用いられるSSDを、すべてのHDDについて代替として適用しようとすると、大幅なコストアップを招いてしまう。
そこで、特性の異なる複数種のデータ記憶媒体を組み合わせることで、コストアップを最小限に止めつつ、大容量かつアクセス速度が高速なデータ記憶システムを構築するための仕組みが、これまでも種々提案されている。
例えば、最小アクセス単位が512バイトのHDDのキャッシュを考える。キャッシュ容量が128Gバイトのとき、キャッシュには256Mセクタのデータを保持する。256Mセクタの状態を管理するビットマップは、1種あたり256Mビット、すなわち、32Mバイトものデータとなる。たとえば、2種類のビットマップ(有効/無効、Dirty/Clean)を設ける場合は、64MBもの領域を必要とする。
ビットマップをメモリ上に格納し、キャッシュ制御部をホストコンピュータ上のドライバで実現する場合、このメモリをページアウトされないメモリ(Non-paged pool)として確保する必要があるが、このような大きなNon-paged poolを確保できない可能性がある。 キャッシュ制御部を組み込み型システム(たとえばキャッシュ内蔵のハイブリッドHDD)で実現する場合は、大きなメモリを必要とし、コストアップとなる。
また、ビットマップを記憶装置に確保する場合、キャッシュを制御するたびに外部記憶装置のアクセスが必要となり、性能低下につながる。
大容量のキャッシュデバイスを用いた場合、ビットマップを格納するために大容量のメモリが必要になったり、ビットマップを記憶装置に格納すると、性能が低下したりする。
本発明の目的は、大容量のキャッシュデバイスを用いても、少ない容量のメモリで、性能低下を抑えることが可能な情報処理装置およびキャッシュ制御方式を提供することにある。
実施形態によれば、情報処理装置は、メモリと、第1の記憶装置と、第2の記憶装置と、キャッシュ制御手段を具備する。キャッシュ制御手段は、前記第1の記憶装置と前記第2の記憶装置とを制御し、前記第1の記憶装置のキャッシュ領域を前記第2の記憶装置のキャッシュとして用いて、前記第2の記憶装置へのデータの書き込みおよび前記第2の記憶装置からのデータの読み出しを所定のデータ長のブロック単位で処理し、前記キャッシュ領域内のキャッシュデータの状態を所定のデータ長のセクタ単位で示すセクタビットマップを前記キャッシュ領域の各ブロック毎に設け、前記第1の記憶装置内の管理データ領域内で、前記第1の記憶装置の前記キャッシュ領域内の全てのブロックに対応するセクタビットマップをビットマップとして管理し、前記メモリ内に確保されるキャッシュ領域を前記ビットマップのキャッシュとして用いることによって、前記第1の記憶装置の一部のブロックに対応する複数のセクタビットマップをビットマップキャッシュとして管理する。
以下、実施の形態について図面を参照して説明する。
図1は、実施形態に係る情報処理装置のシステム構成を示す図である。本実施形態の情報処理装置は、パーソナルコンピュータとして実現されている。
図1に示すように、本情報処理装置は、CPU(Central processing unit)11、MCH(Memory controller hub)12、メインメモリ13、ICH(I/o controller hub)14、GPU(Graphics processing unit)15、ビデオメモリ(VRAM)15A、サウンドコントローラ16、BIOS−ROM(Read only memory)17、HDD18A,18B、SSD19、ODD(Optical disc drive)20、各種周辺機器21、EEPROM(Electrically erasable programmable ROM)22、EC/KBC(Embedded controller/keyboard controller)23等を備えている。
CPU11は、本情報処理装置の動作を制御するプロセッサであり、HDD18A,18BやODD20からメインメモリ13にロードされる各種プログラムを実行する。このCPU11によって実行される各種プログラムの中には、リソース管理を司るOS110や、当該OS110の配下で動作する、HDD/SSDドライバ(キャッシュドライバ)120および各種アプリケーションプログラム130等が存在する。HDD/SSDドライバ120は、HDD18A,18BとSSD19とを制御するプログラムである。本情報処理装置は、SSD19の一部または全部をHDD18A,18Bのキャッシュとして利用することで、HDD18A,18Bに対するアクセスの高速化を図る。HDD/SSDドライバ120は、そのための仕組みを備えたものであり、以下、その原理について詳述する。
また、CPU11は、BIOS−ROM17に格納されたBIOSも実行する。BIOSは、ハードウェア制御のためのプログラムである。以下では、BIOS−ROM17の格納物であるBIOS自体についてもBIOS17と表記することがある。
MCH12は、CPU11とICH14との間を接続するブリッジとして動作すると共に、メインメモリ13をアクセス制御するメモリコントローラとして動作する。また、MCH12は、GPU15との通信を実行する機能を有している。
GPU15は、本情報処理装置に組み込まれ、または、外部接続される表示装置を制御する表示コントローラである。GPU15は、VRAM15Aを有し、また、各種プログラムが表示しようとする画像をCPU11に代わって描画するアクセラレータを搭載している。
ICH14は、HDD18A,18B、SSD19およびODD19を制御するためのIDE(Integrated device electronics)コントローラを内蔵する。ICH14は、PCI(Peripheral component interconnect)バスに接続された各種周辺機器21の制御も行う。また、ICH14は、サウンドコントローラ16との通信機能も有している。
サウンドコントローラ16は音源デバイスであり、各種プログラムが再生対象とするオーディオデータを、本情報処理装置に組み込まれ、または、外部接続されるスピーカ等に出力する。
EEPROM22は、例えば本情報処理装置の個体情報や環境設定情報などを格納するためのメモリデバイスである。そして、EC/KBC23は、電力管理を行うためのエンベデッドコントローラと、キーボードやポインティングデバイス等の操作によるデータ入力を制御するためのキーボードコントローラとが集積された1チップMPU(Micro processing unit)である。
図2に本実施形態の情報処理装置の構成例を示す。HDDの台数はHDD18A,18Bの2台である。HDD18A,18Bの容量はそれぞれ1Tバイトであり、1セクタは512バイトである。また、SSD19に割り当てられるキャッシュ容量は128Gバイトである。SSD19のブロックサイズは、64Kバイトである。
また、HDD/SSDドライバ120は、セットアソシアティブ方式でキャッシュを管理する。キャッシュWay数は4であり、キャッシュIndex数は512Kである。
図3は、以上のようなシステム構成を有する本情報処理装置上で動作するHDD/SSDドライバ120の動作原理を説明するための概念図である。
HDD/SSDドライバ120は、SSD19のキャッシュ領域19Aを、例えば64Kバイトといったブロック単位で管理する。また、HDD/SSDドライバ120は、ホストシステム200からのHDD18A,18Bへのデータの書き込み要求またはHDD18A,18Bからのデータの読み出し要求を受けると、このキャッシュ領域の管理単位と同じ64Kバイトのブロック単位に分割する。そして、HDD18A,18BやSSD19に対して、(ブロック単位に分割後の)データの書き込み要求またはデータの読み出し要求を必要に応じて発行することによって処理する。例えば、ホストシステム200からHDDのLBA(Logical Block Address)が3のアドレスから、セクタ数(Sector Count)がC0hのリードまたはライトのリクエストがあった場合、次の3つのブロックに分割して処理する。
(1) LBA=3、SC=7Dh
(2) LBA=80h、SC=80h
(3) LBA=100h、SC=43h
なお、HDD/SSDドライバ120は、HDD18A,18Bのキャッシュとして利用されるSSD19上のデータを管理するために、管理データ領域202をメインメモリ13上に確保する。
(2) LBA=80h、SC=80h
(3) LBA=100h、SC=43h
なお、HDD/SSDドライバ120は、HDD18A,18Bのキャッシュとして利用されるSSD19上のデータを管理するために、管理データ領域202をメインメモリ13上に確保する。
ホストからのリクエストをブロック分割した後、HDD/SSDドライバ120は、図4に示すように、LBA(31ビット)にHDD18A,18Bを識別する識別ビット(1ビット)を付加した32ビットのアドレスでリクエストがあったデータを、ブロック単位で分割した後の各データの各ブロックの先頭アドレスで管理する。この32ビットのアドレスをDLBAと呼ぶことにする。
DLBAが決まると、HDD/SSDドライバ120は、DLBAからIndex,Tagを求める。すなわち、図5に示すように、DLBAの下位7ビットがOffset、上位25ビットがBID、BIDをIndex数で割った余りがIndex、BIDをIndex数で割った商がTagである。
HDD/SSDドライバ120は、SSD19(キャッシュメモリ)に蓄積されているデータがどのHDD18A,18Bのどのブロックに対応するかはキャッシュディレクトリによって管理する。本実施形態では、128GバイトのSSD19(キャッシュメモリ)を1ブロック64Kバイト単位で管理されるので、キャッシュディレクトリは合計で2Mブロックとなる。
また、キャッシュ方式が4−wayセットアソシアティブ方式であるので、キャッシュディレクトリは、図6に示すように、512Kインデックス×4ウェイのテーブルとなる。キャッシュディレクトリによって管理されるデータは、タグとその他の管理データから構成される。
HDD/SSDドライバ120は、ホストからのリクエストに対してIndexとTagを演算する。HDD/SSDドライバ120は、Indexに基づいてキャッシュディレクトリを参照する。何れかのいずれかのWayとホストからのリクエストのTagが一致している場合はヒット、いずれのWayとも一致しない場合はミスである。ヒットした場合、HDD/SSDドライバ120は、リクエストに対応するキャッシュデバイスのデータにアクセスする。ミスした場合、HDD/SSDドライバ120は、リクエストに対し必要に応じて適切な方法でキャッシュディレクトリにキャッシュエントリを確保した後に、SSD19にアクセスがあったデータをキャッシュするが一般的である。
HDD/SSDドライバ120は、ブロック内のキャッシュデータの状態をHDDの最小アクセス単位であるセクタ単位で管理するためにビットマップを作成する。HDD/SSDドライバ120は、ビットマップを参照することによって、ブロック内のデータがHDDに書き込まれているかをセクタ単位で判断することが可能になる。
なお、SSD19のキャッシュ領域の容量が大きくなると、ビットマップの容量も大きくなる。ビットマップの容量が大きいと、ビットマップの全てをメモリ13に格納することが困難になるため、ビットマップの全てをビットマップ原本としてSSD19に格納し、ビットマップ原本の一部をビットマップキャッシュとしてメモリ13に格納する。
(ビットマップ)
ホストシステムからのデータの書き込み要求は、ホストシステムの管理単位とSSDのブロックサイズとが異なるために、ブロック全体を書き込む要求とは限らない。例えば1ブロックが128セクタで構成されるとすると、この128セクタ中のどのセクタに有効なデータが存在するのか、また、どのセクタにHDD18A,18Bへの未書き込みデータ(Dirty)が存在するのか、を判別するための仕組みが必要になる。HDD/SSDドライバ120は、この問題に対応するために、図7に示す存在セクタビットマップおよび図8に示すDirtyセクタビットマップを、SSD19のキャッシュ領域19Aのブロック毎に設ける。
ホストシステムからのデータの書き込み要求は、ホストシステムの管理単位とSSDのブロックサイズとが異なるために、ブロック全体を書き込む要求とは限らない。例えば1ブロックが128セクタで構成されるとすると、この128セクタ中のどのセクタに有効なデータが存在するのか、また、どのセクタにHDD18A,18Bへの未書き込みデータ(Dirty)が存在するのか、を判別するための仕組みが必要になる。HDD/SSDドライバ120は、この問題に対応するために、図7に示す存在セクタビットマップおよび図8に示すDirtyセクタビットマップを、SSD19のキャッシュ領域19Aのブロック毎に設ける。
存在セクタビットマップは、対応するブロック内のどのセクタが有効であるかを記憶する管理データであり、Dirtyセクタビットマップは、対応するブロック内のどのセクタがDirtyであるかを記憶する管理データである。これら2つのセクタビットマップは、図9に示すように、ブロック内の各セクタの状態を1ビットで記憶する。1ブロックが128セクタで構成されている場合、ブロック毎に設けられる各セクタビットマップは、128ビット、つまり16バイトのデータとなる。
これら2つのセクタビットマップを管理することにより、HDD/SSDドライバ120は、SSD19を利用しつつ、HDD18A,18Bへのデータの書き込みやHDD18A,18Bからのデータの読み出しを適切に実行することができる。
ビットマップは、キャッシュ領域19A内のデータをブロック単位で管理するために、キャッシュのブロックごとにビットマップの種類数分、キャッシュデバイスのブロック数分必要となる。本実施形態では、ブロックサイズが64Kバイト(128セクタ)であるから、128ビット=16バイトのビットマップをブロックごとに2個、キャッシュ全体のブロック数である2M組必要となる。また、前述したように一つのビットマップのサイズは、16バイトであるので、ビットマップの容量は、16バイト×2(個)×2M(組)=64Mバイトとなる。
図10に示すように、HDD/SSDドライバ120は、SSD19の管理データ保存領域19B内に適切な序列でビットマップが並べられたビットマップ原本201を格納するビットマップ領域を設ける。ここで適切な序列とは、1組のIndexとWayに対応するビットマップが、管理領域のどの位置に格納されているのか、また逆に、管理領域の存在セクタビットマップおよびDirtyセクタビットマップはどのIndexとWayの組に対応するのかが容易にわかるような序列である。図10に示す例は、適切な序列の例である。図10に示すように、IdexおよびWay順にビットマップが並べられている。一つのビットマップは、存在セクタビットマップ(ビットマップ0)およびDirtyセクタビットマップ(ビットマップ1)が順に並べられている。
なお、図10に示す序列の例では、ビットマップ領域のビットマップのバイトアドレス(BMBA)は図11に示すように表される。
(ビットマップキャッシュ)
本実施形態の場合、ビットマップ原本の容量は、前述したように64Mバイトになる。HDD/SSDドライバ120は、メインメモリ13内に管理データキャッシュ領域を確保し、管理データキャッシュ領域内にビットマップ原本の一部をキャッシュ技術を用いて管理データ保存領域210にビットマップキャッシュ211として保存する。
本実施形態の場合、ビットマップ原本の容量は、前述したように64Mバイトになる。HDD/SSDドライバ120は、メインメモリ13内に管理データキャッシュ領域を確保し、管理データキャッシュ領域内にビットマップ原本の一部をキャッシュ技術を用いて管理データ保存領域210にビットマップキャッシュ211として保存する。
ビットマップキャッシュ211は、SSD19の管理データ保存領域に格納されているビットマップ原本201の一部をHDD/SSDドライバ120が管理するメモリ13内の管理データ保存領域210に保持するものである。本実施形態では、ビットマップキャッシュ211の容量が16Mバイト、セクタ単位の管理、4−wayセットアソシアティブ方式を説明する。ビットマップキャッシュのIndex数は、ビットマップキャッシュの容量が16Mバイト、SSD19のブロックサイズが64Kバイト、Way数が4であるので、8Kとなる。
前述したビットマップのバイトアドレスBMBAが決まると、HDD/SSDドライバ120は、バイトアドレスBMBAからビットマップインデックスBmIndex,ビットマップタグBmTagを求める。すなわち、図12に示すように、バイトアドレスBMBAの下位9ビットがビットマップセクタオフセット(BmSctOffset)、上位17ビットがビットマップセクタID(BmSctID)、ビットマップセクタID(BmSctID)をIndex数で割った余りがビットマップインデックスBmIndex、ビットマップセクタID(BmSctID)をIndex数で割った商がビットマップタグBmTagである。
前述したようにビットマップキャッシュのIndex数は8Kであり、Way数が4であるために、ビットマップキャッシュ211のキャッシュディレクトリは、8KIndex×4Wayのテーブルとなる。ビットマップインデックスBmIndexでビットマップキャッシュディレクトリを参照し、ビットマップタグBmTagがいずれかのWayと一致していればヒット、いずれのWayとも一致していなければミスである。
ビットマップキャッシュにミスしたときは、HDD/SSDドライバ120は、最も長い間アクセスされていないエントリを使用する。このとき、HDD/SSDドライバ120は、必要に応じて最も最近アクセスされていないエントリのビットマップデータをビットマップ原本に書き出してからこのエントリを使用する。
なお、HDD/SSDドライバ120が、最も長い間アクセスされていないエントリを使用する場合、最も長い間アクセスされていないエントリのビットマップをビットマップ原本に書き出す必要がある。しかし、最も長い間アクセスされていないエントリのビットマップを直ぐにビットマップ原本に書き出さなくて済むように、最も長い間アクセスされなくなったエントリのビットマップをメモリ13に一旦書き出した後に、メモリ13に書き出されたビットマップのビットマップ原本への書き出しをバックグランドで実行するようにしても良い。
なお、SSDがNAND型フラッシュメモリで構成される場合、ビットマップ原本の格納開始アドレスがNAND型フラッシュメモリのページの先頭アドレスと同じにアドレスになるようにし、ビットマップ原本の管理単位をSSDのページサイズの倍数とするとよい
ここで、ページサイズとは、NAND型フラッシュメモリの書き込み・読み出し最小単位である。ページサイズに満たない書き込み・読み出し要求は、ページサイズの書き込み・読み出しに比べ一般に多くの時間を要する。このオーバヘッドを抑えるために、ビットマップ原本への書き込み・読み出しを、ページ単位で行うようにする。このために、ビットマップ原本の管理単位をSSDのページサイズの倍数とする。
ここで、ページサイズとは、NAND型フラッシュメモリの書き込み・読み出し最小単位である。ページサイズに満たない書き込み・読み出し要求は、ページサイズの書き込み・読み出しに比べ一般に多くの時間を要する。このオーバヘッドを抑えるために、ビットマップ原本への書き込み・読み出しを、ページ単位で行うようにする。このために、ビットマップ原本の管理単位をSSDのページサイズの倍数とする。
以上のように、本情報処理装置によれば、ビットマップ原本201をSSD19の管理データ保存領域19Bに格納すると共に、メモリ13の管理データ保存領域210にビットマップ原本201のキャッシュデータであるビットマップキャッシュを格納することで、大容量のSSD19を用いても、少ない容量のメモリ13であっても、性能低下を抑えることが可能になる。
(第2の実施形態)
第2の実施形態では、ダイレクトビットマップ方式でキャッシュを管理する方法について説明する。
第2の実施形態では、ダイレクトビットマップ方式でキャッシュを管理する方法について説明する。
第1の実施形態では、16Mバイトのビットマップキャッシュに対しビットマップ原本は64Mバイトと大きいので、セットアソシアティブ方式は使用効率の面でも、検索速度の面でも効率が良い。使用効率が良いというのは、全Indexが同じ容量の原本の対象になっているということ、すなわち、全Indexが8ブロックの原本を持ち、そのうち4ブロック分のキャッシュされている。
ここで、ビットマップキャッシュの容量が16Mバイト、ビットマップ原本の容量が16Mバイト+16Kバイトの場合を考える。これを管理単位がセクタである4−wayセットアソシアティブとすると、Index数は8K(0〜8191)となる。ところが、Index0〜31は5ブロックの原本、Index32〜8191は4ブロックの原本となり、後者のIndexでは必ずヒットするのに対し、前者のIndexはミスするケースが存在する。このような場合では、ダイレクトマップ方式でビットマップ原本のキャッシュデータであるビットマップキャッシュを管理する方が有効である。
図13を参照して、ダイレクトマップ方式でビットマップ原本のキャッシュデータであるビットマップキャッシュを管理する方法を説明する。
ダイレクトマップ方式は、メモリ中のブロックをキャッシュ内のどこに配置するかをブロックの番地から一意に決める方式であり、あるブロックを格納したい場所に既に別のブロックが置かれていたら、たとえ他の場所が空いていてもそれを捨ててしまう。
HDD/SSDドライバ120は、ビットマップ原本201の各ブロックにビットマップブロックID(BMBID)という識別子(0〜33,554,463)を、ビットマップキャッシュの各ブロックにビットマップキャッシュブロックID(BMCBID)という識別子(0〜33,554,431)を付与する。
HDD/SSDドライバ120は、ビットマップ原本のブロック数分のビットマップ管理テーブルBMCT(BitMap Control Table)と、ビットマップキャッシュのブロック数分のビットマップキャッシュ管理テーブルBMCCT(BitMap Cache Control Table)を設け、二つのテーブルを管理データ保存領域210に格納する。
HDD/SSDドライバ120が当該ブロックのビットマップにアクセスし、当該ブロックのビットマップがビットマップキャッシュ211にキャッシュする場合、ビットマップキャッシュ管理テーブル・リンク(BMCCT Link)は、ビットマップキャッシュ管理テーブルBMCCTの該当アドレスが格納される。当該ブロックがキャッシュされていないときは、NULLポインタが格納される。初期値はNULLである。
ビットマップ管理テーブル・リンクBMCT Linkは、当該ブロックがキャッシュしているビットマップ管理テーブルBMCTの該当アドレスが格納される。当該ブロックがキャッシュされていないときは、NULLポインタが格納される。初期値はNULLである。
ビットマップ原本への未書き込みデータ(Dirty)であるかを示すDirtyフラグは、当該ブロックのデータがキャッシュ上で変更されたときにYesとなるフラグである。初期値はNoである。
LRU Linkは、アクセスされた順に張られたリンクで、Link HeadのMRU Linkが最も最近アクセスされたブロックを、LRU Linkが最も最近アクセスされていないブロックを指している。LRU Linkの初期値は、ビットマップキャッシュの全ブロックがリンクされた状態である。
(動作説明)
HDD/SSDドライバ120が、ビットマップを必要とするとき、ビットマップ管理テーブルBMCTを参照する。
HDD/SSDドライバ120が、ビットマップを必要とするとき、ビットマップ管理テーブルBMCTを参照する。
ビットマップキャッシュ管理テーブル・リンクBMCCT Linkに有効なポインタがあるとき(x)は、ビットマップキャッシュのヒット(ビットマップにキャッシュされている)を意味する。ヒットした場合、HDD/SSDドライバ120は、ポインタをたどってビットマップキャッシュを使用する。このとき、HDD/SSDドライバ120は、BMCCTの当該ブロックのLRU LinkをLink HeadのMRU Linkにつなぎかえる。ビットマップキャッシュを更新したとき、HDD/SSDドライバ120は、HDD/SSDドライバ120は、DirtyフラグをYesにする。
ビットマップ管理テーブルBMCTのビットマップキャッシュ管理テーブル・リンクBMCCT LinkがNULLの場合(y)は、ビットマップキャッシュのミス(ビットマップにキャッシュされていない)を意味する。HDD/SSDドライバ120は、Link HeadのLRU Linkで最も最近アクセスされていないビットマップキャッシュのブロックをたどる。このブロックのDirtyビットがYesの場合、HDD/SSDドライバ120は、ビットマップ管理テーブル・リンクBMCT Linkをたどってビットマップ原本のブロックを割り出し、キャッシュの内容をビットマップ原本に書き出す。その後、HDD/SSDドライバ120は、ビットマップをビットマップ原本からビットマップキャッシュに読み出し、DirtyフラグをNoに、LRU Linkを張り替える。
ダイレクトマップ方式では、セットアソシアティブ方式に比べて、キャッシュの使用効率が均等になる。また、ダイレクトマップ方式では、LRU管理をリンクとしているので、検索が速い。また、ダイレクトマップ方式では、ビットマップ原本をテーブルにしているので、ヒット/ミスの検索が速い。
このため、キャッシュ原本のサイズがビットマップキャッシュの容量の{(Way数+1)/Way数}倍未満の場合にダイレクトマップ方式で管理を行うことが好ましい。キャッシュ原本のサイズがビットマップキャッシュの容量の{(Way数+1)/Way数}以上の場合にセットアソシアティブ方式で管理を行うと、必ずヒットするIndexとミスる場合が或るIndexとが存在するためである。
以上の説明では、ビットマップ原本のキャッシュデータであるビットマップキャッシュを管理する方式としてセットアソシアティブ方式およびダイレクトマップ方式の例を挙げたが、キャッシュ管理方式は他の方法でも良い。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
18A.18B…HDD,19…SSD,19A…キャッシュ領域,19B…管理データ保存領域,120…HDD/SSDドライバ,201…ビットマップ原本,202…管理データ領域,210…管理データ保存領域,211…ビットマップキャッシュ。
Claims (9)
- メモリと、
第1の記憶装置と、
第2の記憶装置と、
前記第1の記憶装置と前記第2の記憶装置とを制御し、前記第1の記憶装置のキャッシュ領域を前記第2の記憶装置のキャッシュとして用いて、前記第2の記憶装置へのデータの書き込みおよび前記第2の記憶装置からのデータの読み出しを所定のデータ長のブロック単位で処理するキャッシュ制御手段であって、前記キャッシュ領域内のキャッシュデータの状態を所定のデータ長のセクタ単位で示すセクタビットマップを前記キャッシュ領域の各ブロック毎に設け、前記第1の記憶装置内の管理データ領域内で、前記第1の記憶装置の前記キャッシュ領域内の全てのブロックに対応するセクタビットマップをビットマップとして管理し、前記メモリ内に確保されるキャッシュ領域を前記ビットマップのキャッシュとして用いることによって、前記第1の記憶装置の一部のブロックに対応する複数のセクタビットマップをビットマップキャッシュとして管理するキャッシュ制御手段と、
を具備する情報処理装置。 - 前記第1の記憶装置は、NAND型フラッシュメモリを有する請求項1記載の情報処理装置。
- 前記ビットマップの格納開始アドレスが前記NAND型フラッシュメモリのページの先頭アドレスとなるように前記ビットマップを格納する請求項2に記載の情報記憶装置。
- 前記キャッシュ制御手段は、前記ビットマップの管理単位を前記NAND型フラッシュメモリのページサイズの倍数とする請求項1記載の情報処理装置
- 前記キャッシュ制御手段は、セットアソシアティブ方式またはダイレクトマップ方式によって管理を行う請求項1に記載の情報処理装置。
- 前記セットアソシアティブ方式によって管理を行うと、前記ビットマップのサイズが前記ビットマップキャッシュの容量の{(Way数+1)/Way数}倍未満となる場合、ダイレクトマップ方式で管理を行う請求項5記載の情報処理装置。
- 前記セクタビットマップは、前記キャッシュ領域のブロック内のキャッシュデータが有効か無効かを前記セクタ単位で示す第1のセクタビットマップ、前記キャッシュ領域のブロック内のいずれのデータが前記第2の記憶装置への未書き込みデータであるのかを前記セクタ単位で示す第2のセクタビットマップの少なくとも一方を含む請求項1に記載の情報処理装置。
- 第1の記憶装置と第2の記憶装置とを制御し、前記第1の記憶装置のキャッシュ領域を前記第2の記憶装置のキャッシュとして用いて、前記第2の記憶装置へのデータの書き込みおよび前記第2の記憶装置からのデータの読み出しを所定のデータ長のブロック単位で処理するキャッシュ制御方法であって、
前記キャッシュ領域内のキャッシュデータの状態を所定のデータ長のセクタ単位で示すセクタビットマップを前記キャッシュ領域の各ブロック毎に設け、前記第1の記憶装置内の管理データ領域内で、前記第1の記憶装置の前記キャッシュ領域内の全てのブロックに対応するセクタビットマップをビットマップとして管理し、
メモリ内に確保されるキャッシュ領域を前記ビットマップのキャッシュとして用いることによって、前記第1の記憶装置の一部のブロックに対応する複数のセクタビットマップをビットマップキャッシュとして管理する
キャッシュ制御方法。 - 第1の記憶装置と第2の記憶装置とを制御し、前記第1の記憶装置のキャッシュ領域を前記第2の記憶装置のキャッシュとして用いて、前記第2の記憶装置へのデータの書き込みおよび前記第2の記憶装置からのデータの読み出しを所定のデータ長のブロック単位で処理する情報処理装置を、
前記キャッシュ領域内のキャッシュデータの状態を所定のデータ長のセクタ単位で示すセクタビットマップを前記キャッシュ領域の各ブロック毎に設け、前記第1の記憶装置内の管理データ領域内で、前記第1の記憶装置の前記キャッシュ領域内の全てのブロックに対応するセクタビットマップをビットマップとして管理し、前記メモリ内に確保されるキャッシュ領域を前記ビットマップのキャッシュとして用いることによって、前記第1の記憶装置の一部のブロックに対応する複数のセクタビットマップをビットマップキャッシュとして管理するキャッシュ制御手段、
として機能させるプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010221591A JP2012078939A (ja) | 2010-09-30 | 2010-09-30 | 情報処理装置およびキャッシュ制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010221591A JP2012078939A (ja) | 2010-09-30 | 2010-09-30 | 情報処理装置およびキャッシュ制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012078939A true JP2012078939A (ja) | 2012-04-19 |
Family
ID=46239151
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010221591A Withdrawn JP2012078939A (ja) | 2010-09-30 | 2010-09-30 | 情報処理装置およびキャッシュ制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012078939A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014182818A (ja) * | 2013-03-15 | 2014-09-29 | Seagate Technology Llc | 複数の格納媒体デバイスについてのファイルシステムバックアップのためのデバイス、格納媒体および方法 |
CN104461936A (zh) * | 2014-11-28 | 2015-03-25 | 华为技术有限公司 | 缓存数据的刷盘方法及装置 |
US9336153B2 (en) | 2013-07-26 | 2016-05-10 | Hitachi, Ltd. | Computer system, cache management method, and computer |
JP2016122394A (ja) * | 2014-12-25 | 2016-07-07 | 株式会社バイオス | 記憶制御システム及び記憶制御装置 |
-
2010
- 2010-09-30 JP JP2010221591A patent/JP2012078939A/ja not_active Withdrawn
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014182818A (ja) * | 2013-03-15 | 2014-09-29 | Seagate Technology Llc | 複数の格納媒体デバイスについてのファイルシステムバックアップのためのデバイス、格納媒体および方法 |
US9336153B2 (en) | 2013-07-26 | 2016-05-10 | Hitachi, Ltd. | Computer system, cache management method, and computer |
CN104461936A (zh) * | 2014-11-28 | 2015-03-25 | 华为技术有限公司 | 缓存数据的刷盘方法及装置 |
CN104461936B (zh) * | 2014-11-28 | 2017-10-17 | 华为技术有限公司 | 缓存数据的刷盘方法及装置 |
JP2016122394A (ja) * | 2014-12-25 | 2016-07-07 | 株式会社バイオス | 記憶制御システム及び記憶制御装置 |
US10061522B2 (en) | 2014-12-25 | 2018-08-28 | Bios Corporation | Storage controlling system and storage controlling apparatus |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9996466B2 (en) | Apparatus, system and method for caching compressed data | |
EP3673377B1 (en) | Logical to physical mapping | |
USRE48127E1 (en) | Information processing apparatus and driver | |
JP4988008B2 (ja) | 情報処理装置およびドライバ | |
US7783859B2 (en) | Processing system implementing variable page size memory organization | |
US6745283B1 (en) | Disk drive for dynamically allocating memory accessed concurrently by a host interface and a disk interface to facilitate large host commands | |
US7793070B2 (en) | Processing system implementing multiple page size memory organization with multiple translation lookaside buffers having differing characteristics | |
US8112589B2 (en) | System for caching data from a main memory with a plurality of cache states | |
GB2511325A (en) | Cache allocation in a computerized system | |
JPWO2015076354A1 (ja) | ストレージ装置と方法並びにプログラム | |
JP5117608B1 (ja) | 情報処理装置、ハイブリッド記憶装置、およびキャッシュ方法 | |
JP2011204060A (ja) | ディスク装置 | |
JP2012078939A (ja) | 情報処理装置およびキャッシュ制御方法 | |
KR102465851B1 (ko) | 캐시 엔트리에서 메모리 액세스 요청의 펜던시를 식별하기 위한 시스템 및 방법 | |
JP7132491B2 (ja) | メモリ制御装置、メモリ制御プログラムおよびメモリ制御方法 | |
JP5025670B2 (ja) | 情報処理装置およびデータ記憶装置 | |
JP2010176305A (ja) | 情報処理装置およびデータ記憶装置 | |
CN111796757B (zh) | 一种固态硬盘缓存区管理方法和装置 | |
USRE49818E1 (en) | Information processing method in a multi-level hierarchical memory system | |
KR102210536B1 (ko) | 비휘발성 메모리 장치의 데이터 관리 시스템 및 그 방법 | |
JP6027479B2 (ja) | 半導体メモリ装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Withdrawal of application because of no request for examination |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20131203 |