JP5175953B2 - 情報処理装置およびキャッシュ制御方法 - Google Patents

情報処理装置およびキャッシュ制御方法 Download PDF

Info

Publication number
JP5175953B2
JP5175953B2 JP2011124542A JP2011124542A JP5175953B2 JP 5175953 B2 JP5175953 B2 JP 5175953B2 JP 2011124542 A JP2011124542 A JP 2011124542A JP 2011124542 A JP2011124542 A JP 2011124542A JP 5175953 B2 JP5175953 B2 JP 5175953B2
Authority
JP
Japan
Prior art keywords
cache
driver
hdd
data
storage unit
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
JP2011124542A
Other languages
English (en)
Other versions
JP2012252514A (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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2011124542A priority Critical patent/JP5175953B2/ja
Priority to US13/333,795 priority patent/US8677061B2/en
Publication of JP2012252514A publication Critical patent/JP2012252514A/ja
Application granted granted Critical
Publication of JP5175953B2 publication Critical patent/JP5175953B2/ja
Priority to US15/073,618 priority patent/USRE49417E1/en
Priority to US16/209,330 priority patent/USRE49418E1/en
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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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/0871Allocation or management of cache space
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/217Hybrid disk, e.g. using both magnetic and solid state storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明の実施形態は、キャッシュデバイスとして用いる情報処理装置およびキャッシュ制御方法に関する。
ハードディスクドライブとフラッシュメモリとを備え、フラッシュメモリをハードディスクドライブのキャッシュデバイスとして用いるハイブリッドハードディスクドライブが発売されている。ハイブリッドハードディスクドライブでは、キャッシュ制御を行うために演算速度が速い制御部を備える必要がある。
特開2010−257481号公報 特開平10−154101号公報 特表2008−538437号公報
演算速度が遅い制御部を用いて、キャッシュ制御を行いたいという要望があるが、演算速度が遅い制御部を用いると、アクセス速度が遅くなってしまう恐れがある。
本発明の目的は、演算速度が遅い制御部を用いても、アクセス速度の低下を抑制することが可能な情報処理装置のキャッシュ制御方法を提供することを目的とする。
実施形態によれば、情報処理装置は、記憶装置と、揮発性メモリと、キャッシュドライバと、プロセッサとを具備する。記憶装置は、制御部と、第1の不揮発性記憶部と前記第1の不揮発性記憶部よりアクセス速度が速い第2の不揮発性記憶部とを有する。キャッシュドライバは、前記第2の不揮発性記憶部の少なくとも一部の領域を前記第1の不揮発性記憶部のキャッシュとして用いる。プロセッサは、前記揮発性メモリにロードされた、オペレーティングシステムと前記キャッシュドライバとを実行する。前記キャッシュドライバは、前記第2の不揮発性記憶部に格納されたキャッシュデータを管理するための第1のキャッシュ管理情報を前記揮発性メモリに格納し、シャットダウン時に、前記キャッシュドライバは、前記揮発性メモリに格納された前記第1のキャッシュ管理情報を第2のキャッシュ管理情報として前記第1の不揮発性記憶部または前記第2の不揮発性記憶部に格納し、起動時、前記制御部は、前記第2のキャッシュ管理情報に基づいて前記第2の不揮発性記憶部の少なくとも一部の領域を第1の不揮発性記憶部のリードキャッシュデバイスとして用いるリードキャッシュ制御処理と、キャッシュ管理情報管理処理とを実行する。
第1の実施形態の情報処理装置の構成の一例を示すブロック図。 第1の実施形態の情報処理装置の主要部を示すブロック図。 第2の実施形態の情報処理装置の主要部を示すブロック図。 第2の実施形態の、電源が投入されてからの制御部およびH−HDDドライバの処理の手順を示すフローチャート。 第2の実施形態の、シャットダウン時のH−HDDドライバおよび制御部によって行われる処理の手順を示すフローチャート。 第2の実施形態の、H−HDDの制御部によってキャッシュデータの管理が行われている状態で、リードアクセスがあった場合の制御部の処理の手順を示すフローチャート。 第2の実施形態の、H−HDDの制御部によってキャッシュデータの管理が行われている状態で、ライトアクセスがあった場合の制御部の処理の手順を示すフローチャート。 第3の実施形態の情報処理装置の主要部の構成を示すブロック図。 第3の実施形態の、起動時のH−HDDドライバおよび制御部の処理の手順を示すフローチャート。 第3の実施形態の、起動時のH−HDDドライバおよび制御部の処理の手順を示すフローチャート。 第3の実施形態の、正常なシャットダウン時のH−HDDドライバおよび制御部の処理の手順を示すフローチャート。 第4の実施形態の情報処理装置の主要部を示すブロック図。 第4の実施形態の情報処理装置のH−HDDドライバによって生成されたキャッシュ管理情報の一例を示す図。 キャッシュ管理情報内のキャッシュディレクトリの一例を示す図。 キャッシュディレクトリ内のタグデータの一例を示す図。 第4の実施形態の、H−HDDの制御部によってキャッシュデータの管理が行われている状態で、リードアクセスがあった場合の制御部の処理の手順を示す図。 第5の実施形態の情報処理装置の主要部を示すブロック図。 第5の実施形態の情報処理装置のH−HDDドライバによって生成されたキャッシュ管理情報の一例を示す図。 第5の実施形態のタグデータの一例を示す図。 第5の実施形態のH−HDDドライバによるキャッシュの管理手法の一例を示すフローチャート。 第7の実施形態の情報処理装置の主要部の一例を示すブロック図。 第7の実施形態の、H−HDDドライバによって管理されるキャッシュ管理情報内のタグデータの一例を示す図。 第8の実施形態の情報処理装置の構成の一例を示すブロック図。 第8の実施形態の情報処理装置の主要部の一例を示すブロック図。 第8の実施形態の、電源が投入されてからのコントローラおよびUSB−HDDドライバの処理の手順の一例を示すフローチャート。 第9の実施形態の情報処理装置の主要部の一例を示すブロック図。 第9の実施形態のトレース管理情報の一例を示す図。 第9の実施形態のコントローラによって実行される処理の手順をの一例を示すフローチャート。 第9の実施形態のキャッシュドライバによって実行される処理の手順をの一例を示すフローチャート。 第9の実施形態の変形例の情報処理装置の主要部の一例を示すブロック図。 第10の実施形態の情報処理装置の主要部の一例を示すブロック図。 第10の実施形態のトレース管理情報の一例を示す図。 第10の実施形態のコントローラによって実行される処理の手順をの一例を示すフローチャート。 第10の実施形態のキャッシュドライバによって実行される処理の手順をの一例を示すフローチャート。
以下、実施の形態について図面を参照して説明する。
図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、H−HDD(Hybrid Hard disk drive)(記憶装置)18、ODD(Optical disc drive)20、各種周辺機器21、EEPROM(Electrically erasable programmable ROM)22、EC/KBC(Embedded controller/keyboard controller)23等を備えている。
CPU11は、本情報処理装置の動作を制御するプロセッサであり、H−HDD18やODD20からメインメモリ13にロードされる各種プログラムを実行する。このCPU11によって実行される各種プログラムの中には、リソース管理を司るOS110や、当該OS110の配下で動作する、H−HDDドライバ(キャッシュドライバ)120および各種アプリケーションプログラム130等が存在する。H−HDDドライバ120は、H−HDD18を制御するプログラムである。本情報処理装置は、H−HDD18内のHDD18B(第1の不揮発性記憶部)よりアクセス速度が速いSSD(Solid State Drive)(第2の不揮発性記憶部)18CをHDD18Bのキャッシュとして利用することで、HDD18Bに対するアクセスの高速化を図る。SSD18Cは、フラッシュメモリを有する。
また、CPU11は、BIOS−ROM17に格納されたBIOSも実行する。BIOSは、ハードウェア制御のためのプログラムである。以下では、BIOS−ROM17の格納物であるBIOS自体についてもBIOS17と表記することがある。
MCH12は、CPU11とICH14との間を接続するブリッジとして動作すると共に、メインメモリ13をアクセス制御するメモリコントローラとして動作する。また、MCH12は、GPU15との通信を実行する機能を有している。
GPU15は、本情報処理装置に組み込まれ、または、外部接続される表示装置を制御する表示コントローラである。GPU15は、VRAM15Aを有し、また、各種プログラムが表示しようとする画像をCPU11に代わって描画するアクセラレータを搭載している。
ICH14は、H−HDD18およびODD19を制御するためのATA(AT Attachment)コントローラを内蔵する。ICH14は、PCI(Peripheral component interconnect)バスに接続された各種周辺機器21の制御も行う。また、ICH14は、サウンドコントローラ16との通信機能も有している。
H−HDD18は、制御部18A、HDD18B、SSD18Cを有する。制御部は、ATAコントローラからの命令に応じてHDD18B、SSD18Cにアクセスする。
サウンドコントローラ16は音源デバイスであり、各種プログラムが再生対象とするオーディオデータを、本情報処理装置に組み込まれ、または、外部接続されるスピーカ等に出力する。
EEPROM22は、例えば本情報処理装置の個体情報や環境設定情報などを格納するためのメモリデバイスである。そして、EC/KBC23は、電力管理を行うためのエンベデッドコントローラと、キーボードやポインティングデバイス等の操作によるデータ入力を制御するためのキーボードコントローラとが集積された1チップMPU(Micro processing unit)である。
次に、H−HDD18およびH−HDDドライバ120の機能について図2を参照して説明する。図2は、図1に示す情報処理装置の主要部を示すブロック図である。
情報処理装置10はオペレーティングシステム(OS)が制御し、オペレーティングシステム110からH−HDD18へのアクセスはすべてH−HDDドライバ120を介して行われる。H−HDDドライバ120はATAコントローラ14Aを直接的または間接的に制御する。ATAコントローラ14Aを介してH−HDD18が接続されている。また、H−HDDドライバ120は、メモリコントローラ12Aを介して、主メモリ13へのデータのアクセスを行う。
H−HDDドライバ120はシステムの起動時に主メモリ13にロードされる。H−HDDドライバ120は、キャッシュ管理情報201を格納するための領域を主メモリ13内に確保して初期化し、キャッシュデータ212には何も記録されていない状態にした後、キャッシュ制御処理を開始する。キャッシュ管理情報201は、キャッシュディレクトリなどのキャッシュデータを管理するためのデータを有する。H−HDDドライバ120の動作時、H−HDDドライバ120は、主メモリ13内のキャッシュ管理情報201にライトキャッシュおよびリードキャッシュの学習データを管理するためのデータを記録する。シャットダウン時、H−HDDドライバ120は、主メモリ13内のキャッシュ管理情報201を破棄する。
なお、H−HDDドライバ120が動作を開始するまでは、BIOSプログラムがH−HDD18を制御する。制御部18Aは、ホストからライトアクセス要求またはリードアクセス要求があった場合、ハードディスクドライブ18Bにアクセスする。
H−HDD18は、オペレーティングシステム110からは単一の記憶装置(HDD18B)として認識される。SSD18Cの一部または全部の領域がHDD18Bのキャッシュとして使用される。オペレーティングシステム110は、キャッシュデータの格納領域として使用されるSSD18Cのキャッシュデータ領域212に直接アクセスすることができない。
本実施形態によれば、CPU11によって実行されるドライバ120を用いてキャッシュ制御を行うことによって、H−HDD18に演算速度が遅い制御部18Aを用いても、アクセス速度の低下を抑制することが可能になる。
(第2の実施形態:SSDの寿命低下抑制)
第1の実施形態では、起動の度にキャッシュ管理情報201を破棄しているので、起動の度にキャッシュデータ領域212内にキャッシュデータを書き込むことになるので、SSDの寿命が短くなる。また、起動時にキャッシュデータ212がHDD18Bのデータと一致していることが保証できれば、キャッシュ管理情報201を不揮発性記憶領域に保存し、起動時にロードすることによってキャッシュデータ212を破棄せずに使用することができ、H−HDD18の性能向上も図れる。この実施形態では、SSDの寿命が短くなることを抑制し、H−HDDの性能を向上させることが可能な手法について説明する。
本実施形態のH−HDD18およびH−HDDドライバの機能について図3のブロック図を参照して説明する。第2の実施形態の情報処理装置の主要部を示すブロック図である。
H−HDDドライバ320はシステムの起動時に主メモリ13にロードされ、SSD18C内に格納されているキャッシュ管理情報211をキャッシュ管理情報201として主メモリ13内に格納した後、動作を開始する。キャッシュ管理情報211は、キャッシュディレクトリなどのキャッシュデータを管理するためのデータを有する。H−HDDドライバ320の動作時、H−HDDドライバ320は、主メモリ13内のキャッシュ管理情報201にライトキャッシュおよびリードキャッシュの学習データを記録する。シャットダウン時、H−HDDドライバ320は、SSD18C内に主メモリ13内のキャッシュ管理情報201をキャッシュ管理情報211として格納する。
なお、H−HDDドライバ320が動作を開始するまでは、BIOSプログラムがH−HDD18を制御する。制御部18Aは、ホストからアクセスがあった場合、キャッシュ管理情報211を参照して、データが学習されているかを判定する。H−HDDドライバ320の動作開始時にはH−HDD18に対してドライバ動作開始通知を発行する。
H−HDD18は、オペレーティングシステム110からは単一の記憶装置(HDD18B)として認識される。SSD18Cの一部または全部の領域がHDD18Bのキャッシュとして使用される。オペレーティングシステム110は、キャッシュデータの格納領域として使用されるSSD18Cのキャッシュデータ領域312に直接アクセスすることができない。
H−HDD18内の制御部18Aは、SSD18Cにキャッシュデータを蓄える学習機能は有しないが、SSD18Cに蓄えられたキャッシュデータの管理機能、すなわち、ホストからのアクセス要求がキャッシュデータにヒットしているかを判別する判別機能、キャッシュデータにヒットしていた場合にキャッシュデータからデータを読み出す機能、キャッシュデータ内の特定のデータを無効化する機能、およびキャッシュの管理データを更新する機能を有する。
H−HDD18の制御部18Aは電源投入後、ドライバ動作開始通知までの間、SSD18C内のキャッシュデータを管理する。制御部18Aがキャッシュデータを管理する期間において、ホスト側でキャッシュに関与しないBIOSが動作している。ホストからのリードアクセス要求がSSD18C内のキャッシュデータにヒットしていれば、制御部18Aは、SSD18C内からデータをリードし、キャッシュデータにミスすればHDD18Bからデータをリードする。制御部18Aは、ライト要求がキャッシュデータにヒットしていればキャッシュデータの当該データを無効化し、キャッシュのヒット・ミスに関わらずHDD18Bにデータをライトする。ホストからドライバ動作開始通知を受け取ると、キャッシュの管理を放棄する。
ドライバの動作開始後は、H−HDDドライバ320がSSD18C内のキャッシュデータの制御および管理を行う。H−HDDドライバ320は、必要に応じてキャッシュへのデータの蓄積、入れ替え、管理データの更新を行う。
電源が投入されてからの制御部18AおよびH−HDDドライバ320の動作を図4のフローチャートを参照して説明する。
電源が投入されると、制御部18AがSSD18C内のキャッシュデータの管理を開始する(ステップ401)。H−HDDドライバ320が主メモリ13にロードされ、H−HDDドライバ320が処理を実行できるようになると、H−HDDドライバ320は、制御部18Aに対してドライバ動作開始通知を発行する(ステップ402)。制御部18Aは、ドライバ動作開始通知を受信すると、キャッシュデータの管理を停止する(ステップ403)。制御部18Aは、H−HDDドライバ320に対して管理動作停止通知を発行する(ステップ404)。管理動作停止通知を受信すると、H−HDDドライバ320は、制御部18Aにキャッシュ管理情報211のリードアクセス要求を発行する(ステップ405)。制御部18Aは、要求に応じてキャッシュ管理情報211をH−HDDドライバ320に転送する(ステップ406)。H−HDDドライバ320は、転送されたキャッシュ管理情報211をキャッシュ管理情報201として主メモリ13内に格納する(ステップ407)。キャッシュ管理情報201の格納後、H−HDDドライバ320は、ハードディスクドライブ18Bのキャッシュデータの管理を開始する(ステップ408)。
次に、シャットダウン時のH−HDDドライバ320および制御部18Aによって行われる処理を図5のフローチャートを参照して説明する。
オペレーティングシステム110からシャットダウンが通知されると、H−HDDドライバ320は、制御部18Aにキャッシュ管理情報201のSSD18Cへのライトアクセスを要求する(ステップ501)。制御部18Aは、キャッシュ管理情報201をキャッシュ管理情報211としてSSD18Cに書き込む(ステップ502)。書き込み終了後、制御部18Aは、キャッシュ管理情報211の書き込み終了をH−HDDドライバ320に通知する(ステップ503)。H−HDDドライバ320は、オペレーティングシステム110にシャットダウンの準備が完了した旨を通知する(ステップ504)。
次に、H−HDD18の制御部18Aによってキャッシュデータの管理が行われている状態で、リードアクセスがあった場合の制御部18Aの動作について図6のフローチャートを参照して説明する。
ホストからリードアクセスがあると、制御部18Aは、キャッシュデータ内にアクセスされたデータが学習されているかを判定する(ステップ601)。学習されている(ヒット)と判定した場合(ステップ601のYes)、制御部18Aは、SSD18Cから学習されているデータを読み出し(ステップ602)、読み出したデータをホストに転送する(ステップ604)。学習されていない(ミス)と判定した場合(ステップ601のNo)、制御部18Aは、HDD18Bからリードアクセスされたデータを読み出し(ステップ603)、読み出したデータをホストに転送する(ステップ604)。
次に、H−HDD18の制御部18Aによってキャッシュデータの管理が行われている状態で、ライトアクセスがあった場合の制御部18Aの動作について図7のフローチャートを参照して説明する。
ホストからライトアクセスがあると、制御部18Aは、キャッシュデータ内にアクセスされたデータが学習されているかを判定する(ステップ701)。学習されている(ヒット)と判定した場合(ステップ701のYes)、制御部18Aは、SSD18C内のキャッシュデータからアクセスされたデータを無効化し(ステップ702)、データをHDD18Bに書き込む(ステップ703)。学習されていない(ミス)と判定した場合(ステップ701のNo)、制御部18Aは、HDD18Bにデータを書き込む(ステップ703)。
H−HDD18でのキャッシュ制御を、電源投入後からH−HDDドライバ320動作開始まで(BIOS制御期間)に限定し、機能も限定(学習機能なし)することにより、H−HDD18側のキャッシュ制御の負担を軽減している。また、OS稼動開始後はH−HDDドライバ320がキャッシュの全制御を行うので、処理能力の高いホストのCPU11と、メインメモリ13内に中間的なバッファメモリを確保することにより、性能向上とコストアップの抑制を図ることが可能になる。
(第3の実施形態:電源断を伴わないリブート対応)
電源断を伴わないリブートの場合、H−HDD18の制御部18Aは、ホストがリブートしたことを認識することができないので、リブートが行われてもH−HDD18の制御部18Aはキャッシュデータの管理を行うことができない。本実施形態では、H−HDD18の制御部18Aが正常な電源断を伴わないリブートを認識し、リブート後に制御部18Aがキャッシュデータを管理することが可能にする手法について説明する。
図8は、第3の実施形態の情報処理装置の主要部の構成を示すブロック図である。
H−HDDドライバ120は、H−HDD18の不揮発性メモリ、例えばSSD18C内に2値でキャッシュの管理主体を表す管理主体フラグ813を書き込む領域を確保する。管理主体フラグ813には、管理主体が制御部18Aであることを示す“HHDD”に対応する値、管理主体が制H−HDDドライバ120であることを示す“DRVR”に対応する値の値が書き込まれる。H−HDDドライバ120および制御部18は、管理主体フラグ813の値の参照および変更を行うことが可能である。なお、管理主体フラグ813の初期値は、“DRVR“である。
H−HDD18の制御部18Aは、電源投入時およびリセット時に管理主体フラグ813の値を参照する。値が“HHDD”の場合、制御部18Aは、ドライバ動作開始通知を受信するまで第1の実施形態で説明したキャッシュデータの管理を行う。値が“DRVR”のときはキャッシュの管理を行わない。なお、リセットの通知は少なくともリブート時にはホストからH−HDD18に発行されるものとする(ホスト稼働中にも発生することがある)。
また、フラグの値が“DRVR”の場合に制御部18Aがキャッシュの管理を行わないのは、正常稼働中のリセット以外の、強制リブートやオペレーティングシステム110のクラッシュ後のリブートといったオペレーティングシステム110の正常なシャットダウンを経ないリブート時には、SSD18C内のキャッシュデータ領域212内のキャッシュデータとキャッシュディレクトリなどを有するキャッシュ管理情報211との間に不整合が発生している可能性があるためである。
なお、H−HDD18の制御部18Aがドライバ動作開始通知を受領すると、管理主体フラグ813の値を“DRVR”に書き替えた後に、キャッシュの管理を放棄する。また、H−HDDドライバ120は動作開始時に管理主体フラグ813の値を参照し、値が“HHDD”のときはキャッシュデータ領域212内のデータを有効としてSSD18C内のキャッシュ管理情報211を主メモリ13のキャッシュ管理情報201の領域に読み出し、値が“DRVR”の場合は主メモリ13のキャッシュ管理情報201を初期化し、キャッシュ管理データ領域212には何も記録されていない状態にする。ここで、H−HDDドライバ120が管理主体フラグ813の値が“DRVR”の場合にキャッシュデータ領域212内のデータを無効化するのは、強制リブートやオペレーティングシステム110のクラッシュ後のリブートといったオペレーティングシステム110の正常なシャットダウンを経ないリブートが発生したことを表し、キャッシュデータ領域212内のデータとキャッシュディレクトリなどのキャッシュ管理情報211との間に不整合が発生しているためである。
また、H−HDDドライバ120は、正常なシャットダウン処理時に、管理主体フラグ813の値を“HHDD”に変更する。
図9および図10のフローチャートを参照して起動時のH−HDDドライバ120および制御部18の処理の手順を説明する。
起動後、制御部18Aは、管理主体フラグ813の値を参照する(ステップ901A)。制御部18Aは、管理主体フラグ813の値が“HHDD”であるかを判定する(ステップ902A)。“HHDD”であると判定した場合(ステップ902AのYes)、制御部18AがSSD18C内のキャッシュデータの管理を開始する(ステップ903)。
H−HDDドライバ120が主メモリ13にロードされ、H−HDDドライバ120が処理を実行できるようになると、H−HDDドライバ120は、管理主体フラグ813の値を参照する(ステップ901B)。“HHDD”であると判定した場合(ステップ902BのYes)、H−HDDドライバ120は、制御部18Aに対してドライバ動作開始通知を発行する(ステップ904)。
制御部18Aは、ドライバ動作開始通知を受信すると、キャッシュデータの管理を停止する(ステップ905)。制御部18Aは、管理主体フラグ813の値を“DRVR”に書き替える(ステップ906)。制御部18Aは、H−HDDドライバ120に対して管理動作停止通知を発行する(ステップ907)。管理動作停止通知を受信すると、H−HDDドライバ120は、制御部18Aにキャッシュ管理情報211のリードアクセス要求を発行する(ステップ908)。制御部18Aは、要求に応じてキャッシュ管理情報211を主メモリ13のキャッシュ管理情報201領域に転送する(ステップ909)。キャッシュ管理情報201読み出し後、H−HDDドライバ120は、ハードディスクドライブ18Bのキャッシュデータの管理を開始する(ステップ911)。
ステップ902Aおよび902Bにおいて“HHDD”ではないと判定した場合(ステップ902A,902BのNo)、H−HDDドライバ120は、主メモリ13内のキャッシュ管理情報201を初期化する(ステップ924)。
次に、正常なシャットダウン時のH−HDDドライバ120および制御部18の処理の手順を図11を参照して説明する。
オペレーティングシステム110からシャットダウンが通知されると、H−HDDドライバ120は、キャッシュ制御処理を停止する(ステップ1101)。H−HDDドライバ120は、制御部18Aにキャッシュ管理情報201のSSD18Cへのライトアクセスを要求する(ステップ1102)。制御部18Aは、キャッシュ管理情報201をキャッシュ管理情報211としてSSD18Cに書き込む(ステップ1103)。書き込み終了後、制御部18Aは、キャッシュ管理情報211の書き込み終了をH−HDDドライバ120に通知する(ステップ1104)。
H−HDDドライバ120は、管理主体フラグ812の値を“HHDD”に書き替えるように制御部18Aに命令する(ステップ1105)。制御部18Aは、管理主体フラグ812の値を“HHDD”に書き替える(ステップ1106)。書き換え後、制御部18Aは、書き換えが完了した旨を通知する(ステップ1107)。通知の受領後、H−HDDドライバ120は、オペレーティングシステム110にシャットダウンの準備が完了した旨を通知する(ステップ1109)。
本実施形態では、不正に装置が終了した場合、キャッシュ管理情報211を破棄し、初期化したキャッシュ管理情報201に基づいてキャッシュの管理を行うことで、正常な電源断を伴わないリブートに対応することが可能になる。
(第4の実施形態:起動高速化)
本実施形態では、起動を高速化する手法について説明する。
図12のブロック図を参照して第4の実施形態のH−HDD18およびH−HDDドライバの機能を説明する。図12は、第4の実施形態の情報処理装置の主要部を示すブロック図である。
本実施形態のH−HDDドライバ1220によって生成されたキャッシュ管理情報1201(1211)は、図13に示すように、管理データ1301およびキャッシュディレクトリ1302を有する。管理データ1301内には、後述するトレース領域1301Aが確保されている。
本実施形態のH−HDDドライバ1220は、キャッシュ方式の実施例として16−wayセットアソシアティブ方式を用いる。キャッシュ管理情報1201(1211)内のキャッシュディレクトリ1302は、例えば図14に示すように、512Kインデックス×16ウェイのテーブルである。キャッシュディレクトリ1302によって管理されるタグデータは、図15に示すように、タグ(Tag)1501とその他の管理データ1502から構成される。なお、HDD18BのLBAをIndex数で割った場合の商がTagであり、余りがIndexである。
H−HDDドライバ1220は、キャッシュディレクトリによって管理される各タグデータ1500の管理データ1502内に起動フラグ1501Aを設ける。起動フラグの値は、“0”または“1”である。起動フラグ1501Aの値が“1”の場合に起動時に使用されたキャッシュデータに対応するタグデータ1500であることを示し、起動フラグ1501Aの値が“0”の場合に起動時に使用されていないタグデータ1500であることを示す。
また、H−HDDドライバ1220は、キャッシュ管理情報1201(1211)内の管理データ1301内にトレース領域1301Aを確保する。H−HDD18の制御部18AおよびH−HDDドライバ1220は、トレース領域1301Aの参照および変更を行うことが可能である。さらにオペレーティングシステム110の起動が完了したときに動作する図示されていないプログラムから、H−HDDドライバ1220に対して起動完了通知を発行する。
H−HDD18の制御部18Aがキャッシュデータを管理している状態において、制御部18Aは、リードアクセス要求に対してキャッシュデータがヒットしたときは、キャッシュディレクトリ内のヒットしたキャッシュデータに対応するタグデータの起動フラグ1501Aの値を“1”に書き替える。リードアクセス要求に対してキャッシュデータがミスしたときは、制御部18Aは、キャッシュ管理情報1211内のトレース領域1301Aにリードアクセス要求のパラメータ(LBA,セクタ数)を蓄積する。
H−HDDドライバ1220は、動作開始後、キャッシュ管理情報1211内のトレース領域1301Aを参照し、ドライバ1220の動作開始前にBIOSによってリードされたデータをキャッシュデータとしてSSD18Cに蓄積し、当該キャッシュディレクトリ内のキャッシュされたデータに対応するタグデータの起動フラグの値を“1”にする。
H−HDDドライバ1220は、キャッシュディレクトリ内の起動フラグが“1”のタグデータに対応するキャッシュをキャッシュデータ領域212から追い出さないように制御する。
H−HDDドライバ1220は、シャットダウン時に主メモリ13内のキャッシュディレクトリを含むキャッシュ管理情報1201をSSD18Cにキャッシュ管理情報1211として保存する際、キャッシュディレクトリの全起動フラグの値を“0”にする。
次に、H−HDD18の制御部18Aによってキャッシュデータの管理が行われている状態で、リードアクセスがあった場合の制御部1218Aの動作について図16のフローチャートを参照して説明する。
ホストからリードアクセスがあると、制御部1218Aは、キャッシュデータ内にアクセスされたデータが学習されているかを判定する(ステップ1601)。学習されている(ヒット)と判定した場合(ステップ1601のYes)、制御部1218Aは、キャッシュディレクトリ内のヒットしたキャッシュデータに対応するタグデータの起動フラグ1501Aの値を“1”に書き替える(ステップ1602)。制御部1218Aは、SSD18Cから学習されているキャッシュデータを読み出し(ステップ1603)、読み出したキャッシュデータをホストに転送する(ステップ1604)。
学習されていない(ミス)と判定した場合(ステップ1601のNo)、制御部1218Aは、キャッシュ管理情報1211内のトレース領域1301Aにリードアクセス要求のパラメータ(LBA,セクタ数)を書き込む(ステップ1605)。制御部1218Aは、リードアクセスされたデータをハードディスクドライブ18Bから読み出し(ステップ1606)、読み出したデータをホストに転送する(ステップ1604)。
本実施形態は、システム本体の起動高速化に寄与する。起動は毎回同じデータをリードすることが多いが、起動ごとにリードするデータ(場所)が変わることもある。本実施形態では、起動に使用するデータを起動のたびに毎回学習することにより、起動時にリードするデータが変わっても対応できる効果がある。
また、H−HDD18の制御部1218Aは、リード要求がキャッシュにミスしたときはトレース領域1301Aにリードアクセス要求のコマンドを記録するだけの簡単な処理にとどめることにより、制御部1218Aの負担を軽減している。
(第5の実施形態:起動時の学習データ制限)
上記実施形態では、起動時に学習されたデータが削除されないため、起動時の学習されたデータが多いと、キャッシュデータ領域212のうち稼働中に使用可能な領域が少なくなり、十分なキャッシュの効果を発揮できなくなってしまう。本実施形態では、起動に学習するデータの量を制限する手法について説明する。
図17は、第5の実施形態のH−HDD18およびH−HDDドライバの機能を説明するためのブロック図である。図17は、第5の実施形態の情報処理装置の主要部を示すブロック図である。
本実施形態のH−HDDドライバ1720によって生成されたキャッシュ管理情報1701(1711)は、図18に示すように、管理データ1801およびキャッシュディレクトリ1302を有する。キャッシュ管理情報1701(1711)内には、第4の実施形態と同様にトレース領域1801Aが確保されている。キャッシュディレクトリ1302によって管理される各タグデータ1900の管理データ1902内に起動フラグ1902AとLRUカウンタ1902Bを設ける。LRUカウンタ1902Bは、同一Index内でアクセスされた順番を記録するフィールドで、例えば16ウェイのとき、LRUカウンタ1902Bが0のデータは最も最近アクセスされたことを表し、LRUカウンタ1902Bが15のときは最も昔にアクセスされたことを表す。制御部1718Aがキャッシュデータを管理している状態において、制御部1718Aは、リードアクセス要求に対してキャッシュデータがヒットしたときは、キャッシュディレクトリ1701内の起動フラグ1902Aの値を“1”に書き換え、同一IndexのLRUカウンタ1902Bを更新する。リードアクセス要求に対してキャッシュデータがミスしたときは、制御部1718Aは、トレース領域1801Aにリードアクセス要求のパラメータ(LBA,セクタ数)1801Bをリードされた順番に記録する。
H−HDDドライバ1720は、起動フラグの値が“1”のタグデータの量をあらかじめ定められた量、例えば16Wayの場合には16Wayの1/4の4Way分に制限する。H−HDDドライバ1720は、LRUカウンタ1902Bに基づいて、アクセス日時が古いデータがキャッシュデータ領域212内に残るように制御する。
次に、H−HDDドライバ1220によるキャッシュの管理手法について図20のフローチャートを参照して説明する。
H−HDDドライバ1720は、キャッシュディレクトリ内のIndexごとに起動フラグ1902Aの値が“1”のタグデータ数を算出する(ステップ2001)。H−HDDドライバ1720は、Indexごとに起動フラグ1902Aの値が“1”のタグデータ数が設定数より多いかを判定する(ステップ2002)。設定数より多いと判定した場合(ステップ2002のYes)、H−HDDドライバ1720は、LRUカウンタ1902Bを参照して同一Indexのキャッシュディレクトリの起動フラグ1902Aの値が“1”のタグデータのうちアクセス日時が最も新しいタグデータの起動フラグ1902Aの値を“0”にする(ステップ2009)。H−HDDドライバ1720は、ステップ2001からの処理を実行する。
設定数より大きくないと判定した場合(ステップ2002のNo)、トレース領域1801Aのトレースを先頭から逐次処理する。H−HDDドライバ1720は、トレース領域1801A内にパラメータ1801Bがあるかを判定する(ステップ2003)。パラメータ1801Bがあると判定した場合(ステップ2003のYes)、H−HDDドライバ1720は、トレース領域内のパラメータからIndexを算出し、キャッシュディレクトリ内の該当するIndexの起動フラグの値が“1”のタグデータ数を算出する(ステップ2004)。H−HDDドライバ1720は、タグデータ数が設定数と等しいかを判定する(ステップ2005)。設定数と等しくないと判定した場合(ステップ2005のYes)、H−HDDドライバ1720は、トレース領域1801A内のパラメータ1801Bを破棄する(ステップ2010)。
設定数と等しいと判定した場合(ステップ2005のYes)、H−HDDドライバ1720は、処理中のパラメータに対応するデータをHDDから読み出す(ステップ2006)。H−HDDドライバ1720は、同一Index内のLRUカウンタを参照し、起動フラグの値が“0”のうちもっとも古いキャッシュデータをHDDから読み出したデータに置き換える(ステップ2007)。、H−HDDドライバ1720は、置き換えたデータに対応するタグデータを起動フラグの値を“1”にしてキャッシュディレクトリに追加する(ステップ2008)。ステップ2008の実行後、H−HDDドライバ1720は、ステップ2003以降の処理を実行する。パラメータ1801Bがないと判定した場合(ステップ2003のNo)、H−HDDドライバ1720は、処理を終了する。
H−HDDドライバ1720は、トレースデータの処理完了後、ドライバへの起動完了通知を受領するまで、オペレーティングシステムからのリード要求がキャッシュにヒットし、同一Indexの起動フラグの値が“1”であるタグデータの数が設定数と同じ場合は起動フラグの値を変更せず、同一Indexの起動フラグの値が“1”であるタグデータの数が設定数と異なる(小さい)場合は起動フラグの値を”1”に変更する。H−HDDドライバ1720は、オペレーティングシステムからのリード要求がキャッシュにミスしHDDからリードしたデータをキャッシュに登録する際、同一Indexの起動フラグの値が“1”であるタグデータの数が設定数と同じ場合は起動フラグの値を“0”にし、同一Indexの起動フラグの値が“1”であるタグデータの数が設定数と異なる(小さい)場合は起動フラグの値を”1”にする。
本実施形態では、ドライバへの起動完了通知が何らかの原因により発行されなかった場合や、想定以上にリードの量が多かったときに、通常稼動時にもキャッシュデータを一定量以上確保できることを保証する。
(第6の実施形態:ブート時のライトデータをキャッシュデータから削除)
本実施形態では、次回起動時にリードされる可能性の低いデータを極力残さないようにする手法について説明する。
本実施形態のH−HDDドライバおよび制御部の構成は、第4の実施形態と同様なので図示を省略する。
H−HDDドライバ1220は、起動フラグの値が“1”であるタグデータに対応するキャッシュデータにライトアクセス要求があったときは、起動フラグの値を“0”にする。 起動時にリードアクセスされ、その後ライトアクセスが発生したキャッシュデータは次の起動時にリードされない可能性が高い。起動フラグの値が“0”のタグデータに対応するキャッシュデータは削除されても、ブート時間が長くなることがない。
なお、起動時に、H−HDD18の制御部1218Aは、ライトアクセス要求がトレース領域内のパラメータに対応するデータに対応したときは、当該パラメータを削除しても良い。
本実施形態によれば、リードアクセスされたキャッシュデータを削除することでキャッシュデータを整理しつつ、ブート時間が長くなることを抑制する。
(第7の実施形態:他のHDDをキャッシュ対象にする)
図21は、第7の実施形態の情報処理装置の主要部を示すブロック図である。
本実施形態のH−HDDドライバは、SSD18Cの少なくとも一部の領域をHDD18BおよびHDD2130のキャッシュとして用いる。
H−HDDドライバ2120によって管理されるキャッシュ管理情報2011(2111)内のタグデータを図22を参照して説明する。タグデータ2200内の管理データ2202内には学習対象のHDDを識別するためのHDD_ID2202Aが記録されている。HDD_ID2202Aのビット数は、キャッシュ管理情報2101を作成時に設定される。
本実施形態では、H−HDD18のHDD18B部だけでなく、H−HDD18が接続されている情報処理装置に接続されているその他のHDD2130の性能も向上する。たとえば、本願のH−HDDを使用したUSB−HDDを情報処理装置に接続すると、情報処理装置に内蔵されているHDDも高速になる。
(第8の実施形態:HDDとSSDとを独立に見せる)
本実施形態は、磁気ディスクのように比較的大容量、安価、低速、高消費電力の第1の記憶装置(HDD)と、半導体不揮発性メモリのように、比較的小容量、高価、高速、低消費電力の第2の記憶装置(SSD)を、外部記憶装置が接続される計算機システム(PC)上で動作する外部記憶装置制御手段(HDDドライバ)がSSDをHDDのキャッシュとして使用することにより、比較的大容量、安価、高速、低消費電力のストレージシステムを提供する。
第7の実施形態まではホストに対して、HDDとSSDから構成されるH−HDDを単一の記憶装置として見せていた。本実施形態ではホストに対してHDDとSSDとをそれぞれ独立の記憶装置として見せる。本実施形態では、同じデバイスに対しては同時に1つのコマンドしか発行できないようなOSであっても、HDDとSSDの両方にコマンドを同時に発行できる。
図23は、第8の実施形態に係る情報処理装置のシステム構成を示す図である。本実施形態の情報処理装置は、パーソナルコンピュータとして実現されている。
図23に示すように、本情報処理装置は、CPU11、MCH12、メインメモリ13、ICH14、GPU15、VRAM15A、サウンドコントローラ16、BIOS−ROM17、HDD2318、ODD20、各種周辺機器21、EEPROM22、EC/KBC23等を備えている。
CPU11は、本情報処理装置の動作を制御するプロセッサであり、メインメモリ13にロードされたキャッシュドライバ2320を実行する。キャッシュドライバ2320は、HDD2318と外部記憶装置で有るUSB−HDD2340を制御するプログラムである。また、ICH14は、USB−HDD2340等のUSBデバイスを制御するためのUSBコントローラを内蔵する。
次に、USB−HDD2040およびUSB−HDD2040を制御する情報処理装置の構成について図24を参照して説明する。図24は、第8の実施形態の情報処理装置の主要部を示すブロック図である。
図24に示すように、USB−HDD2040は、コントローラ2341、HDD2342、およびSSD2343等を備えている。
HDD2342およびSSD2343はATA規格に対応するストレージである。コントローラ2341は、USB規格のコマンドとATA規格のコマンドとを変換するブリッジデバイスである。USB/ATAブリッジコントローラ2341は、USBコントローラ14Bから発行されたUSB規格のコマンドをATA規格のコマンドに変換し、変換されたコマンドをHDD2342またはSSD2343に発行する。コントローラ2341は、HDD2342またはSSD2343にから発行されたATA規格のコマンドをUSB規格のコマンドに変換し、変換されたコマンドをUSBコントローラ14Bに発行する。
SSD2343の少なくとも一部の領域は、HDD2340のキャッシュデバイスとして用いられる。キャッシュドライバ2320は、キャッシュ管理情報2401を格納するための領域を主メモリ13内に確保した後、キャッシュ制御処理を開始する。キャッシュ管理情報2401は、キャッシュディレクトリなどのキャッシュデータを管理するためのデータを有する。キャッシュドライバ2320は、主メモリ13内のキャッシュ管理情報2401にライトキャッシュおよびリードキャッシュの学習データを管理するためのデータを記録する。シャットダウン時、キャッシュドライバ2320は、主メモリ13内のキャッシュ管理情報2401をSSD2343内にキャッシュ管理情報2411として記録する。起動時に、キャッシュドライバによってキャッシュ管理情報2411はキャッシュ管理情報2401として主メモリ13にロードされる。
なお、このUSB−HDD2340はドライバ2320がインストールされたコンピュータ2300だけでなく、データ交換のためにドライバがインストールされていないコンピュータに接続されることがある。SSD2343の全領域をHDD2342のキャッシュとして使用する場合、キャッシュドライバがインストールされていないコンピュータではSSD2343をドライバがインストールされていないコンピュータのOSに対して見せる必要がない。SSD2343をドライバがインストールされていないコンピュータのOSに見せると、SSD2343を動作させるための機構が動作することによる内部資源の消費や、使用できなデバイスが見えることによるユーザへの不要な困惑を煽ることになる。本実施形態では、必要なときだけSSDをOSに見せる。
キャッシュドライバ2320は、主メモリ13内にロードされて動作可能になると、「キャッシュドライバ動作開始通知」をUSB−HDD2340に発行する。コントローラ2341は、電源投入後はHDD2342のみをOS110に見せる。キャッシュドライバ2320から発行された「キャッシュドライバ動作開始通知」を受領すると、コントローラ2341はSSD2343をOS110に見せる。
電源が投入されてからのコントローラ2341およびキャッシュドライバ2320の動作を図25のフローチャートを参照して説明する。
電源が投入されると、コントローラ2341は、HDD2342をコンピュータ(PC)2300に対して見せる(ステップ2501)。キャッシュドライバ2320が主メモリ13にロードされ、キャッシュドライバ2320が処理を実行できるようになると、キャッシュドライバ2320は、コントローラ2341に対してドライバ動作開始通知を発行する(ステップ2502)。コントローラ2341は、ドライバ動作開始通知を受信すると、SSD2343をコンピュータ2300に見せる(ステップ2503)。キャッシュドライバ2320は、コントローラ2341にキャッシュ管理情報2411のリードアクセス要求を発行する(ステップ405)。コントローラ2341は、要求に応じてキャッシュ管理情報2411をキャッシュドライバ2320に転送する(ステップ406)。キャッシュドライバ2320は、転送されたキャッシュ管理情報2411をキャッシュ管理情報2401として主メモリ13内に格納する(ステップ407)。キャッシュ管理情報2401の格納後、キャッシュドライバ2320は、ハードディスクドライブ2342のキャッシュデータの管理を開始する(ステップ408)。
本実施形態によれば、HDD2342とSSD2343とをそれぞれコンピュータ2300に見せることで、同じデバイスに対しては同時に1つのコマンドしか発行できないようなOSであっても、HDDとSSDの両方にコマンドを同時に発行できる。
(第9の実施形態:ライトトレース)
USB−HDD2040およびUSB−HDD2040を制御する情報処理装置の構成について図26を参照して説明する。図26は、第9の実施形態の情報処理装置の主要部を示すブロック図である。
キャッシュドライバ2320は、コンピュータが起動するときに主メモリ13にロードされ動作を開始する。OS110からシャットダウンの通知を受け取ると、キャッシュドライバ2320はキャッシュディレクトリなどのキャッシュ管理情報2401をSSD2343の管理データ領域内にキャッシュ管理情報2411として格納する。
コンピュータが再起動されると、キャッシュドライバ2320は再び主メモリ13にロードされ動作を開始する。BIOSのようなキャッシュドライバが動作する前にHDDを制御するモジュールにキャッシュを管理する機能がない場合、このモジュールを介してライトされたデータがキャッシュにヒットしていた場合、キャッシュドライバはHDDのデータが書き換えられたことを知らないので、HDDとキャッシュにデータの不整合が発生してしまう。
また、USB−HDD2340が別のコンピュータで使用された場合、HDD2342のデータが書き換えられたことを知らないので、HDD2342とSSD2343内のキャッシュデータとの間にデータの不整合が発生している可能性があるため、すべてのキャッシュデータを無効化する必要がある。
本実施形態では、このようなケースでもデータ不整合を発生させずに、再起動前に学習したデータを使用できるようにするものである。
USB−HDD2340のコントローラ2641は、ホストから発行されたライトコマンドをトレースする機能と、トレース有効フラグとを管理する機能を有する。
コントローラ2641は、例えばトレースデータとトレース有効フラグとをHDD2342内に設けられたトレース管理情報2613内に記録する。トレース管理情報2613は、図27に示すように、トレース有効フラグ2701とトレース領域2702とを有する。トレース管理情報2613は、コントローラ2641とキャッシュドライバ2320との双方から参照と変更が可能である。トレース結果とトレース有効フラグは、不揮発性の記憶装置に記録されるのであれば、SSD2343内に記録しなくても良い。
トレース有効フラグ2701の初期値は“OFF”である。コントローラ2641は、トレース有効フラグの値が“ON”の場合、ライトコマンドの対象アドレスをトレース領域2702に記録する。トレース領域が満杯になった場合、コントローラ2641は、トレース有効フラグの値を“OFF”にする。
キャッシュドライバ2320は、動作開始時にトレース有効フラグ2701の値を参照する。値が“OFF”の場合、キャッシュドライバ2320は、キャッシュの整合性を保証できないと判断し、主メモリ13内のキャッシュ管理情報2401を初期化してキャッシュデータ2412になにも記録されていない状態にする。値が“ON”の場合、キャッシュドライバ2320は、トレース領域2702内のトレースデータを参照し、キャッシュドライバ動作していない期間にライトされたアドレスがキャッシュにヒットしている場合は、そのキャッシュデータを無効化する。すべてのトレースデータに対して処理が完了したら、キャッシュドライバ2320は、トレース有効フラグの値を“OFF”にする。キャッシュドライバ2320がOS110からシャットダウン通知を受領し、シャットダウン処理が完了した場合、およびUSB−HDD2340の安全な取り外しに伴う処理が完了した場合、キャッシュドライバ2320は、トレース有効フラグを”ON”にする。
コントローラによって実行される処理の手順を図28のフローチャートを参照して説明する。
コントローラ2641は、動作開始時にトレース有効フラグ2701の値を参照し、値が“ON”であるかを判定する(ステップ2801)。“ON”であると判定した場合(ステップ2801のYes)、コントローラ2641は、アクセスがあったらライトアクセスであるかを判定する(ステップ2802)。ライトアクセスであると判定した場合(ステップ2802のNo)、コントローラ2641は、トレース領域2702内にトレースデータを記録することが可能であるかを判定する(ステップ2803)。記録可能であると判定した場合(ステップ2803のYes)、コントローラ2641は、トレース領域2702にトレースデータを記録する(ステップ2803)。記録可能ではないと判定した場合(ステップ2803のNo)、コントローラ2641は、トレース有効フラグ2701の値を“OFF”に書き替える(ステップ2805)。
次に、キャッシュドライバ2320によって実行される処理の手順を図29のフローチャートを参照して説明する。
キャッシュドライバ2320は、動作開始時にトレース有効フラグ2701の値を参照し、値が“ON”であるかを判定する(ステップ2901)。“ON”ではないと判定した場合(ステップ2901のNo)、キャッシュドライバ2320は、主メモリ13内のキャッシュ管理情報2401を初期化してキャッシュデータ2412になにも記録されていない状態にする(ステップ2908)。“ON”であると判定した場合(ステップ2901のYes)、キャッシュドライバ2320は、SSD2343内のキャッシュ管理情報2411を主メモリ13のキャッシュ管理情報2401領域に読み出し、トレースデータを処理する。キャッシュドライバ2320は、トレース領域2702内に読み出されていないトレースデータがあるかを判定する(ステップ2902)。トレースデータがあると判定した場合(ステップ2902のYes)、トレース領域2702内から一つのトレースデータを読み出す(ステップ2903)。キャッシュドライバ2320は、キャッシュ管理情報2401に基づいてトレースデータに記録されているアドレス対応するデータがキャッシュデータにヒットするかを判定する(ステップ2904)。ヒットしたと判定した場合(ステップ2904のYes)、キャッシュドライバ2320は、トレースデータに対応するタグデータを破棄する(ステップ2905)。ヒットしないと判定した場合(ステップ2904のNo)、またはステップ2905の後、キャッシュドライバ2320は、キャッシュドライバ2320は、ステップ2902からの処理を順次実行する。トレースデータがないと判定した場合(ステップ2902のNo)、キャッシュドライバ2320は、トレース有効フラグ2701の値を“OFF”に書き替える(ステップ2906)。ステップ2906の後、シャットダウン処理が完了した場合、またはUSB−HDD2340の安全な取り外しに伴う処理が完了した場合、キャッシュドライバ2320は、トレース有効フラグ2701の値を“ON”に書き替える(ステップ2907)。
本実施形態は、ハイブリッドHDDだけでなく、図30に示すような独立のHDD2342とSSD2343とでキャッシュの動作をさせるときにも使用できる。この場合、HDD2342内にホストから発行されたライトコマンドをトレースする機能と、不揮発性のトレース有効フラグとを管理する機能を有するコントローラ3001を設ける。
本実施形態の場合、HDDに対するライトコマンドをトレースすることにより、キャッシュドライバ2320が動作しない環境で、このHDDが使用され、一部のデータが書き換えられた場合でも、キャッシュ全体を無効化せずに、書き換えられたデータのみを無効化し、他のデータは有効にすることが可能になる。
(第10の実施形態:ライトトレース+識別子)
本実施形態では、HDD制御部に機能を追加することにより、計算機システムの再起動後にも、再起動前に学習したデータを使用できるようにし、同じキャッシュドライバを有する他の計算機システムでHDDが書き換えられてもデータの整合性を保証するものである。
次に、USB−HDD2040およびUSB−HDD2040を制御する情報処理装置の構成について図31を参照して説明する。図31は、第10の実施形態の情報処理装置の主要部を示すブロック図である。
USB−HDD2340のコントローラ3141は、ホストから発行されたライトコマンドをトレースする機能と、キャッシュドライバ識別子を管理する機能を有する。
コントローラ3141は、例えばトレースデータとキャッシュドライバ識別子とをHDD2342内に設けられたトレース管理情報3101内に記録する。トレース管理情報3113は、図32に示すように、キャッシュドライバ識別子格納領域3201とトレース領域2702とを有する。キャッシュドライバ識別子格納領域3201がクリアされている状態は、キャッシュドライバ識別子が格納されていないことを表す。キャッシュドライバ識別子格納領域3201の初期値はクリア状態である。トレース管理情報3101は、コントローラ3141とキャッシュドライバ3120との双方から参照と変更が可能である。トレース結果とトレース有効フラグは、不揮発性の記憶装置に記録されるのであれば、ハードディスクドライブ2342内に記録しなくても良い。
コントローラ3141は、キャッシュドライバ識別子格納領域3201がクリア状態でない場合、ライトコマンドの対象アドレスをトレース領域2702に記録する。トレース領域2702が満杯になった場合、キャッシュドライバ識別子格納領域3201をクリアする。
キャッシュドライバ3120は自身を識別するためのユニークな識別子3120Aを生成する。同じキャッシュドライバであっても、異なるコンピュータで動作するキャッシュドライバは異なる識別子を有する。例えば、キャッシュドライバ3120は、キャッシュドライバ3120のインストール時間に基づいて識別子3120Aを生成する。また、キャッシュドライバ3120は、オペレーティングシステムがインストールされているHDDのIDに基づいて識別子3120Aを生成する。また、キャッシュドライバ3120は、コンピュータのIDに基づいて識別子3120Aを生成する。また、キャッシュドライバ3120のオペレーティングシステムのIDに基づいて識別子3120Aを生成する。また、キャッシュドライバ3120のオペレーティングシステムがユーザの指紋を示す指紋データに基づいて識別子3120Aを生成する。
キャッシュドライバ3120は、動作開始するときにキャッシュドライバ識別子格納領域3201内のキャッシュドライバ識別子およびドライバ3120内のキャッシュドライバ識別子3120Aを参照し、二つの識別子が一致するかを判定する。二つの識別子が一致しない場合に、キャッシュドライバ3120は、キャッシュの整合性を保証できないと判断し、キャッシュの全内容を破棄する。
二つの識別子が一致する場合、キャッシュドライバ3120は、トレース領域2702内のトレースデータを参照し、キャッシュドライバ動作していない期間にライトされたアドレスがキャッシュにヒットしている場合は、そのキャッシュデータを無効化する。すべてのトレースデータに対する処理が完了したら、キャッシュドライバ識別子格納領域3201をクリアする。キャッシュドライバ3120がOS110からシャットダウン通知を受領し、シャットダウン処理が完了したとき、および、このHDD2340の安全な取り外しに伴う処理が完了したとき、キャッシュドライバ識別子格納領域3201に自身の識別子3120Aを書き込む。
コントローラ3141によって実行される処理の手順を図33のフローチャートを参照して説明する。
コントローラ3141は、動作開始時に識別子がクリア状態であるかを判定する(ステップ3301)。クリア状態でないと判定した場合(ステップ3301のNo)、コントローラ3141は、アクセスがあったらライトアクセスであるかを判定する(ステップ3302)。ライトアクセスであると判定した場合(ステップ3302のNo)、コントローラ3141は、トレース領域2702内にトレースデータを記録することが可能であるかを判定する(ステップ3303)。記録可能であると判定した場合(ステップ3303のYes)、コントローラ3141は、トレース領域2702にトレースデータを記録する(ステップ3303)。記録可能ではないと判定した場合(ステップ3303のNo)、コントローラ3141は、キャッシュドライバ識別子格納領域3201の値をクリアする(ステップ3305)。
次に、キャッシュドライバ3120によって実行される処理の手順を図34のフローチャートを参照して説明する。
キャッシュドライバ3120は、動作開始時に識別子3120Aの値とキャッシュドライバ識別子格納領域3201に格納されている値とが一致するかを判定する(ステップ3401)。一致していないと判定した場合(ステップ3401のNo)、キャッシュドライバ3120は、主メモリ13内のキャッシュ管理情報2401を初期化し、キャッシュデータ2412に何も記録されていない状態にする(ステップ3408)。一致すると判定した場合(ステップ3401のYes)、キャッシュドライバ3120は、SSD2343内のキャッシュ管理情報を主メモリ13内のキャッシュ管理情報2401領域に読み出し、トレースデータを処理する。キャッシュドライバ3120は、トレース領域2702内にトレースデータがあるかを判定する(ステップ3402)。トレースデータがあると判定した場合(ステップ3402のYes)、トレース領域2702内から一つのトレースデータを読み出す(ステップ3403)。キャッシュドライバ3120は、キャッシュ管理情報2401に基づいてトレースデータに記録されているアドレス対応するデータがキャッシュデータにヒットするかを判定する(ステップ3404)。ヒットしたと判定した場合(ステップ3404のYes)、キャッシュドライバ3120は、トレースデータに対応するタグデータを破棄する(ステップ3405)。ヒットしないと判定した場合(ステップ3404のNo)、またはステップ3405の後、キャッシュドライバ3120は、ステップ3402からの処理を順次実行する。トレースデータがないと判定した場合(ステップ3402のNo)、キャッシュドライバ3120は、キャッシュドライバ識別子格納領域3201内のデータをクリアする(ステップ3406)。ステップ3406の後、ステップ3408の後、シャットダウン処理が完了した場合、またはUSB−HDD2340の安全な取り外しに伴う処理が完了した場合、キャッシュドライバ3120は、キャッシュドライバ識別子格納領域3201に識別子3120Aの値を書き込む(ステップ3407)。
第9の実施形態では、HDDがキャッシュドライバが動作しているコンピュータと、キャッシュドライバが動作していない別のコンピュータで交互に使用する場合には有効であるが、同じキャッシュドライバを有する複数のコンピュータが存在し、そのコンピュータ間でこのHDDを交互に使用する場合に、データの整合性を保証できなかった。たとえば、コンピュータ−AにHDDを接続し、HDDを安全な取り外すとフラグはONになるが、このHDDをコンピュータ−Bに接続するとキャッシュドライバが動作を開始するときにフラグをOFFにするのでライトアクセスはトレースされない。コンピュータ−BからこのHDDを安全に取り外し、コンピュータ−Aに接続すると、コンピュータ−Bでデータをライトしたにも関わらずフラグがONでトレースデータが存在しない状態となってしまう。
本実施形態では、フラグの代わりにドライバによって生成されたユニークな識別子によって管理することで、キャッシュドライバを有する複数のコンピュータの間でHDDを移動させても、キャッシュの整合性を保つことが可能になる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
11…CPU,13…主メモリ,18…H−HDD,18A…制御部,18B…HDD,18C…SSD,110…オペレーティングシステム,H−HDDドライバ(キャッシュドライバ)120。

Claims (7)

  1. 制御部と、第1の不揮発性記憶部と前記第1の不揮発性記憶部よりアクセス速度が速い第2の不揮発性記憶部とを有する記憶装置と、
    揮発性メモリと、
    前記第2の不揮発性記憶部の少なくとも一部の領域を前記第1の不揮発性記憶部のキャッシュとして用いるキャッシュドライバと、
    前記揮発性メモリにロードされた、オペレーティングシステムと前記キャッシュドライバとを実行するプロセッサと、
    を具備し、
    前記キャッシュドライバは、
    前記第2の不揮発性記憶部に格納されたキャッシュデータを管理するための第1のキャッシュ管理情報を前記揮発性メモリに格納し、
    シャットダウン時に、前記キャッシュドライバは、前記揮発性メモリに格納された前記第1のキャッシュ管理情報を第2のキャッシュ管理情報として前記第1の不揮発性記憶部または前記第2の不揮発性記憶部に格納し、
    起動時、前記制御部は、前記第2のキャッシュ管理情報に基づいて前記第2の不揮発性記憶部の少なくとも一部の領域を第1の不揮発性記憶部のリードキャッシュデバイスとして用いるリードキャッシュ制御処理と、キャッシュ管理情報管理処理とを実行する
    情報処理装置。
  2. 前記キャッシュドライバは、前記揮発性メモリにキャッシュドライバにロードされた後に動作開始通知を前記制御部に発行し、
    前記制御部は、前記動作開始通知に応じて前記リードキャッシュ制御処理およびキャッシュ管理情報管理処理の実行を停止する、
    請求項1に記載の情報処理装置。
  3. 前記情報処理装置の起動時、前記制御部は、リードアクセス要求されたデータを識別するデータを前記第2のキャッシュ管理情報内に書き込む、
    請求項1に記載の情報処理装置。
  4. 前記キャッシュドライバは、前記起動時にリードアクセス要求されたデータが格納されている領域に対してライトアクセス要求が発行された場合、前記起動時にリードアクセス要求されたデータを識別するデータを起動時にリードアクセス要求されていない状態に書き替える、
    請求項3に記載の情報処理装置。
  5. 前記情報処理装置に第2の記憶装置が接続されている場合、前記キャッシュドライバは前記第2の不揮発性記憶部の少なくとも一部の領域を前記第1の不揮発性記憶部および前記第2の記憶装置のキャッシュとして用いる、
    請求項1に記載の情報処理装置。
  6. 前記第1の不揮発性記憶部はハードディスクドライブを有し、
    前記第2の不揮発性記憶部はフラッシュメモリを有する、
    請求項1に記載の情報処理装置。
  7. 制御部と、第1の不揮発性記憶部と前記第1の不揮発性記憶部よりアクセス速度が速い第2の不揮発性記憶部とを有する記憶装置を具備する情報処理装置のキャッシュ制御方法であって、
    前記第2の不揮発性記憶部の少なくとも一部の領域を第1の不揮発性記憶部のキャッシュとして用いるキャッシュドライバは、前記第2の不揮発性記憶部に格納されたキャッシュデータを管理するための第1のキャッシュ管理情報を前記揮発性メモリに格納し、
    シャットダウン時に、前記キャッシュドライバは、前記揮発性メモリに格納された前記第1のキャッシュ管理情報を第2のキャッシュ管理情報として前記第1の不揮発性記憶部または前記第2の不揮発性記憶部に格納し、
    オペレーティングシステムを実行するプロセッサによって、前記キャッシュドライバを実行し、
    起動時、前記制御部は、前記第2のキャッシュ管理情報に基づいて前記第2の不揮発性記憶部の少なくとも一部の領域を第1の不揮発性記憶部のリードキャッシュデバイスとして用いるリードキャッシュ制御処理と、キャッシュ管理情報管理処理とを実行する、
    キャッシュ制御方法。
JP2011124542A 2011-06-02 2011-06-02 情報処理装置およびキャッシュ制御方法 Expired - Fee Related JP5175953B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2011124542A JP5175953B2 (ja) 2011-06-02 2011-06-02 情報処理装置およびキャッシュ制御方法
US13/333,795 US8677061B2 (en) 2011-06-02 2011-12-21 Information processing apparatus and cache control method
US15/073,618 USRE49417E1 (en) 2011-06-02 2016-03-17 Information processing apparatus and cache control method
US16/209,330 USRE49418E1 (en) 2011-06-02 2018-12-04 Information processing apparatus and cache control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011124542A JP5175953B2 (ja) 2011-06-02 2011-06-02 情報処理装置およびキャッシュ制御方法

Publications (2)

Publication Number Publication Date
JP2012252514A JP2012252514A (ja) 2012-12-20
JP5175953B2 true JP5175953B2 (ja) 2013-04-03

Family

ID=47262582

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011124542A Expired - Fee Related JP5175953B2 (ja) 2011-06-02 2011-06-02 情報処理装置およびキャッシュ制御方法

Country Status (2)

Country Link
US (3) US8677061B2 (ja)
JP (1) JP5175953B2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014102886A1 (en) * 2012-12-28 2014-07-03 Hitachi, Ltd. Information processing apparatus and cache control method
JP6065642B2 (ja) * 2013-02-25 2017-01-25 富士通株式会社 ストレージ制御プログラム、ストレージ制御装置、ストレージシステム、及びストレージ制御方法
JP6273678B2 (ja) * 2013-03-01 2018-02-07 日本電気株式会社 ストレージ装置
JP5707540B1 (ja) 2014-01-31 2015-04-30 株式会社東芝 階層化ストレージシステム、ストレージコントローラ、及び階層間のデータ移動を代替する方法
CN104699422B (zh) * 2015-03-11 2018-03-13 华为技术有限公司 缓存数据的确定方法及装置
US9990285B2 (en) 2015-07-16 2018-06-05 Toshiba Memory Corporation Data access control apparatus

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5420998A (en) * 1992-04-10 1995-05-30 Fujitsu Limited Dual memory disk drive
US5577226A (en) * 1994-05-06 1996-11-19 Eec Systems, Inc. Method and system for coherently caching I/O devices across a network
JPH1040170A (ja) * 1996-07-26 1998-02-13 Toshiba Corp ディスクキャッシュシステム
JPH10154101A (ja) 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
US7603516B2 (en) * 2000-12-15 2009-10-13 Stmicroelectronics Nv Disk controller providing for the auto-transfer of host-requested-data from a cache memory within a disk memory system
US7299379B2 (en) * 2003-06-27 2007-11-20 Intel Corporation Maintaining cache integrity by recording write addresses in a log
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US7620773B2 (en) * 2005-04-15 2009-11-17 Microsoft Corporation In-line non volatile memory disk read cache and write buffer
JP4836647B2 (ja) * 2006-04-21 2011-12-14 株式会社東芝 不揮発性キャッシュメモリを用いる記憶装置とその制御方法
KR101128234B1 (ko) * 2006-08-23 2012-03-23 엘지전자 주식회사 메모리 접근 제어 장치 및 방법
JPWO2008129616A1 (ja) * 2007-04-09 2010-07-22 東芝ストレージデバイス株式会社 記憶装置、記憶装置の制御装置、記憶装置の制御方法
JPWO2009004674A1 (ja) * 2007-06-29 2010-08-26 東芝ストレージデバイス株式会社 記憶装置、ディスク装置、書込み判定方法、制御装置
KR20090034087A (ko) * 2007-10-02 2009-04-07 삼성전자주식회사 비휘발성 저장매체를 이용한 미디어 컨텐츠 재생 방법 및그 장치
JP2009104687A (ja) * 2007-10-22 2009-05-14 Fujitsu Ltd 記憶装置及び制御回路
US8195878B2 (en) * 2009-02-19 2012-06-05 Pmc-Sierra, Inc. Hard disk drive with attached solid state drive cache
JP2011022657A (ja) * 2009-07-13 2011-02-03 Fujitsu Ltd メモリシステムおよび情報処理装置
JP2011090460A (ja) * 2009-10-21 2011-05-06 Toshiba Corp データ記憶装置およびデータ記憶装置における制御方法
JP4988008B2 (ja) * 2010-05-13 2012-08-01 株式会社東芝 情報処理装置およびドライバ
JP4988007B2 (ja) * 2010-05-13 2012-08-01 株式会社東芝 情報処理装置およびドライバ
JP4724253B2 (ja) * 2010-07-02 2011-07-13 株式会社東芝 データ記憶システムおよびキャッシュデータの一貫性保証方法

Also Published As

Publication number Publication date
US20120311234A1 (en) 2012-12-06
USRE49417E1 (en) 2023-02-14
JP2012252514A (ja) 2012-12-20
USRE49418E1 (en) 2023-02-14
US8677061B2 (en) 2014-03-18

Similar Documents

Publication Publication Date Title
JP4988008B2 (ja) 情報処理装置およびドライバ
JP4988007B2 (ja) 情報処理装置およびドライバ
USRE49418E1 (en) Information processing apparatus and cache control method
JP5117608B1 (ja) 情報処理装置、ハイブリッド記憶装置、およびキャッシュ方法
JP5492156B2 (ja) 情報処理装置およびキャッシュ方法
KR101044220B1 (ko) 비휘발성 메모리 캐시 성능 향상
US20150039837A1 (en) System and method for tiered caching and storage allocation
JP2011128998A (ja) 半導体記憶装置
US8112589B2 (en) System for caching data from a main memory with a plurality of cache states
US8433847B2 (en) Memory drive that can be operated like optical disk drive and method for virtualizing memory drive as optical disk drive
JP2014534520A (ja) セグメント化されたキャッシュ
JP2012053572A (ja) 情報処理装置およびキャッシュの制御方法
JP5025670B2 (ja) 情報処理装置およびデータ記憶装置
US20130166847A1 (en) Information processing apparatus and cache control method
JP2012078939A (ja) 情報処理装置およびキャッシュ制御方法
JP2010176305A (ja) 情報処理装置およびデータ記憶装置
USRE49818E1 (en) Information processing method in a multi-level hierarchical memory system
US20130326146A1 (en) Information processing apparatus, memory apparatus, and data management method
JP2015158902A (ja) メモリおよびコントローラを備える装置およびデータ記憶装置を備える装置
JP4724253B2 (ja) データ記憶システムおよびキャッシュデータの一貫性保証方法
JP2012216033A (ja) 情報処理装置および情報処理装置の起動方法
JP2011113129A (ja) 情報記録装置及び情報記録方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120918

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121119

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: 20121211

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130107

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160111

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees