JP2011238175A - 情報処理装置およびドライバ - Google Patents

情報処理装置およびドライバ Download PDF

Info

Publication number
JP2011238175A
JP2011238175A JP2010111280A JP2010111280A JP2011238175A JP 2011238175 A JP2011238175 A JP 2011238175A JP 2010111280 A JP2010111280 A JP 2010111280A JP 2010111280 A JP2010111280 A JP 2010111280A JP 2011238175 A JP2011238175 A JP 2011238175A
Authority
JP
Japan
Prior art keywords
data
storage device
external storage
cache area
area
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.)
Granted
Application number
JP2010111280A
Other languages
English (en)
Other versions
JP4988007B2 (ja
Inventor
Takehiko Kurashige
剛彦 蔵重
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 JP2010111280A priority Critical patent/JP4988007B2/ja
Priority to US13/079,621 priority patent/US8639881B2/en
Publication of JP2011238175A publication Critical patent/JP2011238175A/ja
Application granted granted Critical
Publication of JP4988007B2 publication Critical patent/JP4988007B2/ja
Priority to US13/756,230 priority patent/US20130145094A1/en
Priority to US15/009,093 priority patent/USRE48127E1/en
Priority to US16/939,224 priority patent/USRE49818E1/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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)

Abstract

【課題】第1の外部記憶装置を第2の外部記憶装置のキャッシュとして用いて第2の外部記憶装置のアクセスの高速化を図る場合の更なる効率化を図る。
【解決手段】実施形態の情報処理装置は、第1の外部記憶装置を第2の外部記憶装置のキャッシュとして用いて第2の外部記憶装置に対するデータアクセスを所定のデータ長のブロック単位で処理するドライバを具備する。ドライバは、ホストシステムとの間でデータの受け渡しを行うためにメインメモリ上に確保されるバッファ領域と第1の外部記憶装置および第2の外部記憶装置との間に介在させるキャッシュ領域をメインメモリ上に確保するキャッシュ確保手段を有し、メインメモリ上に確保したキャッシュ領域を利用して、第1の外部記憶装置と第2の外部記憶装置との間におけるブロック単位でのデータの受け渡し等を実行する。
【選択図】図2

Description

本発明の実施形態は、例えばSSD(Solid state drive)とHDD(Hard disk drive)とを搭載し、SSDをHDDのキャッシュとして用いて、HDDに対するアクセスの高速化を図るパーソナルコンピュータ等の情報処理装置に関する。
情報化社会である今日では、日々、大量のデータが取り扱われている。また、データを記憶させる媒体として、大容量で比較的安価なHDDが広く用いられている。大容量で比較的安価である反面、HDDは、アクセス速度が比較的低速である。
一方、フラッシュメモリは、HDDと比較して、アクセス速度は高速ではあるが高価であり、例えば複数台のHDDを搭載するファイルサーバ等において、フラッシュメモリが用いられるSSDを、すべてのHDDについて代替として適用しようとすると、大幅なコストアップを招いてしまう。
そこで、特性の異なる複数種のデータ記憶媒体を組み合わせることで、コストアップを最小限に止めつつ、大容量かつアクセス速度が高速なデータ記憶システムを構築するための仕組みが、これまでも種々提案されている。
特開2008−46964号公報 特開平7−230411号公報 特表2009−503731号公報 特開平7−6093号公報
例えば、高価・高速という特性を有する第1のデータ記憶媒体と、安価・低速という特性を有する第2のデータ記憶媒体とを組み合わせたデータ記憶システムでは、第1のデータ記憶媒体を第2のデータ記憶媒体のキャッシュとして用いることで、第2のデータ記憶媒体に対するアクセスを外見上高速化することができる。
ところで、このような構成を持つデータ記憶システムでは、第1のデータ記憶媒体に対するアクセスと、第2のデータ記憶媒体に対するアクセスとが、互いに独立して行われているのが一般的である。従って、第1のデータ記憶媒体と第2のデータ記憶媒体との間で必要となるデータの受け渡し等に関しては、例えば高速化や効率化を図るためのさらなる工夫を講ずる余地があった。
実施形態の情報処理装置は、メインメモリと、第1の外部記憶装置と、第2の外部記憶装置と、前記第1の外部記憶装置と前記第2の外部記憶装置とを制御し、前記第1の外部記憶装置を前記第2の外部記憶装置のキャッシュとして用いて、前記第2の外部記憶装置へのデータの書き込みおよび前記第2の外部記憶装置からのデータの読み出しを所定のデータ長のブロック単位で処理するドライバとを具備する。ドライバは、データの書き込みおよびデータの読み出しを要求するホストシステムとの間でデータの受け渡しを行うために前記メインメモリ上に確保されるバッファ領域と前記第1の外部記憶装置および前記第2の外部記憶装置との間に介在させるキャッシュ領域を前記メインメモリ上に確保するキャッシュ確保手段を有し、当該キャッシュ確保手段によって前記メインメモリ上に確保したキャッシュ領域を利用して、前記第1の外部記憶装置と前記第2の外部記憶装置との間におけるブロック単位でのデータの受け渡し等を実行する。
実施形態の情報処理装置のシステム構成を示す図。 実施形態の情報処理装置上で動作するHDD/SSDドライバ(キャッシュドライバ)の動作原理を説明するための概念図。 実施形態の情報処理装置上に設けられる存在セクタビットマップおよびDirtyセクタビットマップの一例を示す第1の図。 実施形態の情報処理装置上に設けられる存在セクタビットマップおよびDirtyセクタビットマップの一例を示す第2の図。 実施形態の情報処理装置上に設けられるDirtyフラグおよびPartialフラグの一例を示す図。 実施形態の情報処理装置上に設けられるOwnershipフラグの一例を示す図。 実施形態の情報処理装置上に設けられるライトトレース領域の一例を示す図。 実施形態の情報処理装置上に設けられるSSDおよびHDDの個体情報および電源投入回数を記録する領域の一例を示す図。 実施形態の情報処理装置上に設けられるPinフラグの一例を示す図。 実施形態の情報処理装置がデータ・マージ時に実行する必要最小分のデータの読み出しを説明するための概念図。 実施形態の情報処理装置が実行するセットアソシアティブ方式によるデータの管理を説明するための概念図。
以下、図面を参照して、この発明の一実施形態を説明する。
図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、HDD18、SSD19、ODD(Optical disc drive)20、各種周辺機器21、EEPROM(Electrically erasable programmable ROM)22、EC/KBC(Embedded controller/keyboard controller)23等を備えている。
CPU11は、本情報処理装置の動作を制御するプロセッサであり、HDD18やODD20から主メモリ13にロードされる各種プログラムを実行する。このCPU11によって実行される各種プログラムの中には、リソース管理を司るOS110や、当該OS110の配下で動作する、HDD/SSDドライバ(キャッシュドライバ)120および各種アプリケーションプログラム130等が存在する。HDD/SSDドライバ120は、HDD18とSSD19とを制御するプログラムである。本情報処理装置は、SSD19の一部または全部をHDD18のキャッシュとして利用することで、HDD18に対するアクセスの高速化を図る。HDD/SSDドライバ120は、そのための仕組みを備えたものであり、以下、その原理について詳述する。
なお、SSD19の一部をHDD18のキャッシュとして利用する場合、SSD19のその他の部分は、SSD19に対してコマンドを発行することで、例えば各種アプリケーションプログラム130等から利用可能なデータ領域として割り当てられる。SSD19の全部をHDD18のキャッシュとして利用する場合、SSD19は、その存在自体が例えば各種アプリケーションプログラム130等には秘匿される。
また、CPU11は、BIOS−ROM17に格納されたBIOSも実行する。BIOSは、ハードウェア制御のためのプログラムである。以下では、BIOS−ROM17の格納物であるBIOS自体についてもBIOS17と表記することがある。
MCH12は、CPU11とICH14との間を接続するブリッジとして動作すると共に、主メモリ13をアクセス制御するメモリコントローラとして動作する。また、MCH12は、GPU15との通信を実行する機能を有している。
GPU15は、本情報処理装置に組み込まれ、または、外部接続される表示装置を制御する表示コントローラである。GPU15は、VRAM15Aを有し、また、各種プログラムが表示しようとする画像をCPU11に代わって描画するアクセラレータを搭載している。
ICH14は、HDD18、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/SSDドライバ120の動作原理を説明するための概念図である。
図2中、ユーザバッファ250は、例えば各種アプリケーションプログラム130がHDD18にデータを書き込み、または、HDD18からデータを読み出すためにOS110により主メモリ13上に確保される領域であり、HDD/SSDドライバ120は、このユーザバッファ250内の書き込み対象データをHDD18に書き込み、または、HDD18から読み出した読み出し対象データをユーザバッファ250内に格納する処理を実行する。即ち、ユーザバッファ250は、上位システム(ホストシステム)とHDD/SSDドライバ120との間でデータの受け渡しを行うために主メモリ13上に確保される領域である。
前述したように、本情報処理装置は、SSD19をHDD18のキャッシュとして利用することで、HDD18に対するアクセスの高速化を図る。そこで、HDD18とSSD19とを制御するHDD/SSDドライバ120は、主メモリ13上のユーザバッファ250とHDD18およびSSD19との間に介在させるL1キャッシュ領域201を主メモリ13上に確保する。なお、ここでは、HDD18のキャッシュとして利用するデータ記憶媒体としてSSD19を例示しているが、これに限定するものではなく、不揮発性キャッシュ(NVC:non-volatile chache)として他のデータ記憶媒体を適用することは当然に可能である。
HDD/SSDドライバ120は、この主メモリ13上に確保したL1キャッシュ領域201を、例えば64Kバイトといったブロック単位で管理する。また、HDD/SSDドライバ120は、ホストシステムからのHDD18へのデータの書き込み要求またはHDD18からのデータの読み出し要求を、このブロック単位に分割し、HDD18やSSD19に対して、(ブロック単位に分割後の)データの書き込み要求またはデータの読み出し要求を必要に応じて発行することによって処理する。そして、HDD/SSDドライバ120は、L1キャッシュ領域201上および(HDD18のキャッシュとして利用される)SSD19上のデータを管理するために、管理データ領域202を主メモリ13上に確保する。
(データの読み出し処理)
まず、ホストシステムからデータの読み出しを要求された場合のHDD/SSDドライバ120の基本動作を説明する。
読み出し対象データのすべてがL1キャッシュ領域201に存在する場合、HDD/SSDドライバ120は、L1キャッシュ領域201内のデータをユーザバッファ250に格納する(図2の(3))。そして、HDD/SSDドライバ120は、ホストシステムに対して、読み出し処理の完了を通知する。
読み出し対象データの一部がL1キャッシュ領域201に存在する場合、HDD/SSDドライバ120は、L1キャッシュ領域201に存在しないその他のデータをHDD18からL1キャッシュ領域201の該当箇所に読み出し(図2の(5))、要求分のデータをユーザバッファ250に格納する(図2の(3))。ここで、HDD/SSDドライバ120は、ホストシステムに対して、読み出し処理の完了を通知し、この通知後、SSD19上にスペースを確保し、このSSD19上に確保したスペースに、上記要求分のデータを蓄積する(図2の(8))。ユーザバッファ250にデータを格納した時点で、つまり当該データをSSD19に蓄積する前に、ホストシステムに対し、読み出し処理の完了を通知することで、ホストシステムは、次の処理に進むことができる。また、SSD19上にスペースを確保する場合、HDD/SSDドライバ120は、未使用、またはHDDへの未書き込みデータが存在しない最も最近アクセスされていない領域を使用する。以下、SSD19上にスペースを確保する場合も同様である。
読み出し対象データがL1キャッシュ領域201に存在しておらず、そのすべてがSSD19に存在する場合、HDD/SSDドライバ120は、SSD19上のデータを読み出してユーザバッファ250に格納し(図2の(9))、ホストシステムに対して、読み出し処理の完了を通知する。
読み出し対象データがL1キャッシュ領域201に存在しておらず、その一部がSSD19に存在する場合、HDD/SSDドライバ120は、L1キャッシュ領域上にスペースを確保し、このL1キャッシュ領域201上に確保したスペースに、SSD19上の一部のデータとHDD18上のその他のデータとを読み出す(図2の(5),(7))。L1キャッシュ領域上にスペースを確保する場合、HDD/SSDドライバ120は、未使用、またはSSDへの蓄積が完了していないHDDへの未書き込みデータが存在しない最も最近アクセスされていない領域を使用する。以下、L1キャッシュ領域201上にスペースを確保する場合も同様である。HDD/SSDドライバ120は、このL1キャッシュ領域201上に確保したスペースに読み出したデータ、つまり要求分のデータをユーザバッファ250に格納する(図2の(3))。ここで、HDD/SSDドライバ120は、ホストシステムに対して、読み出し処理の完了を通知し、この通知後、SSD19上にスペースを確保し、このSSD19上に確保したスペースに、上記要求分のデータを蓄積する(図2の(8))。
そして、読み出し対象データがL1キャッシュ領域201およびSSD19のいずれにも存在しない場合、HDD/SSDドライバ120は、L1キャッシュ領域上にスペースを確保し、このL1キャッシュ領域201上に確保したスペースに、HDD18上のデータを読み出す(図2の(5))。HDD/SSDドライバ120は、このL1キャッシュ領域201上に確保したスペースに読み出したデータ、つまり要求分のデータをユーザバッファ250に格納し(図2の(3))、ホストシステムに対して、読み出し処理の完了を通知し、この通知後、SSD19上にスペースを確保し、このSSD19上に確保したスペースに、上記要求分のデータを蓄積する(図2の(8))。
(データの書き込み処理)
次に、ホストシステムからデータの書き込みを要求された場合のHDD/SSDドライバ120の基本動作を説明する。
更新対象となるデータがL1キャッシュ領域201のみに存在する場合、つまりL1キャッシュ領域201には存在するがSSD19には存在しない場合、HDD/SSDドライバ120は、L1キャッシュ領域201のデータを書き換え(図2の(4))、ホストシステムに対して、書き込み処理の完了を通知し、この通知後、SSD19上にスペースを確保し、このSSD19上に確保したスペースに、上記書き換え後のデータを蓄積する(図2の(8))。
更新対象となるデータがL1キャッシュ領域201およびSSD19の両方に存在する場合、HDD/SSDドライバ120は、SSD19上のデータを無効化し、L1キャッシュ領域201のデータを書き換えて(図2の(4))、ホストシステムに対し、書き込み処理の完了を通知する。この通知後、HDD/SSDドライバ120は、SSD19上にスペースを確保し、このSSD19上に確保したスペースに、上記書き換え後のデータを改めて蓄積する(図2の(8))。
更新対象となるデータがSSD19のみに存在する場合、つまりL1キャッシュ領域201には存在しないがSSD19には存在する場合、HDD/SSDドライバ120は、SSD19上のデータを書き換えて(図2の(10))、ホストシステムに対し、書き込み処理の完了を通知する。
そして、更新対象となるデータがL1キャッシュ領域201およびSSD19のいずれにも存在しない場合、HDD/SSDドライバ120は、L1キャッシュ領域201上にスペースを確保し、このL1キャッシュ領域201上に確保したスペースに、書き込み対象データを格納する(図2の(4))。ここで、HDD/SSDドライバ120は、ホストシステムに対して、書き込み処理の完了を通知し、この通知後、SSD19上にスペースを確保し、このSSD19上に確保したスペースに、L1キャッシュ領域201に格納した書き込み対象データを蓄積する(図2の(8))。
(データのフラッシュ処理)
また、HDD/SSDドライバ120は、HDD18への未書き込みデータをHDDに書き出すフラッシュ動作を行う。HDD/SSDドライバ120は、L1キャッシュ領域201上の未書き込みデータをHDD18に書き込み(図2の(6))、SSD19上の未書き込みデータについては、L1キャッシュ領域201で、HDD18への書き込みを実行する(図2の(7),(6))。
このように、本情報処理装置は、SSD19をHDD18のキャッシュとして利用することで、HDD18に対するアクセスの高速化を図るにあたって、HDD18とSSD19とを制御するHDD/SSDドライバ120が、主メモリ13上のユーザバッファ250とHDD18およびSSD19との間に介在させるL1キャッシュ領域201を主メモリ13上に確保し、かつ、その管理をブロック単位で実行することにより、HDD18とSSD19との間で必要となるデータの受け渡し等に関して、さらなる高速化や効率化を図ることを実現する(図2の(3)〜(8))。
ところで、ホストシステムからは、ライトスルー方式で書き込み処理を実行することを要求するWrite FUA(Force unit access)要求が発行されることがある。このWrite FUA要求を受けた場合、HDD/SSDドライバ120は、前述した通常の書き込み処理に加えて、HDD18に対しても、当該書き込み対象データの書き込み処理をライトスルー方式で実行させるべく、Write FUA要求を発行する。そして、この場合は、HDD18から書き込み処理の完了の通知を受けた後、ホストシステムに対して書き込み処理の完了を通知するようにする。
なお、上記(データの読み出し処理)におけるHDD/SSDドライバ120の基本動作の説明では、読み出し対象データがL1キャッシュ領域201に存在しておらず、そのすべてがSSD19に存在する場合、SSD19上のデータを読み出してユーザバッファ250に格納するものとした(図2の(9))。この動作については、L1キャッシュ領域201経由とすることも可能である。即ち、HDD/SSDドライバ120は、L1キャッシュ領域上にスペースを確保し、このL1キャッシュ領域201上に確保したスペースに、SSD19上のデータを読み出し、かつ、このL1キャッシュ領域201上に読み出したデータをユーザバッファ250に格納する(図2の(7),(3))。この場合、再度同じデータの読み出しが要求された際、SSD19よりも性能の高い主メモリ13上のL1キャッシュ領域201によって対処することができる。
さらに、(読み出し対象データがL1キャッシュ領域201に存在しておらず、そのすべてがSSD19に存在する場合において)SSD19上のデータを読み出してユーザバッファ250に格納する場合、L1キャッシュ領域201経由とするか否かをパラメータ化してHDD/SSDドライバ120に与えられるようにしても良い。そうすれば、単一のドライバ、つまりHDD/SSDドライバ120のみで、L1キャッシュ領域201を経由させない方(図2の(9))が有利なシステムと、L1キャッシュ領域201を経由させる方(図2の(7),(3))が有利なシステムとの両方に対応できる。
また、上記(データの書き込み処理)におけるHDD/SSDドライバ120の基本動作の説明では、L1キャッシュ領域201やSSD19への書き込み対象データの蓄積をもってホストシステムに対して書き込み処理の完了を通知するものとした。ここでは、この動作モードをライトバック(WB)モードと称する。このWBモードに加えて、HDD/SSDドライバ120は、L1キャッシュ領域201やSSD19への書き込み対象データの蓄積と共に、当該書き込み対象データのHDD18への書き込みを実行し、この書き込みが完了したらホストシステムに対して書き込み処理の完了を通知するように動作する動作モード(ライトスルー(WT)モード)でも動作可能とし、WBモードおよびWTモードのいずれで動作するのかをパラメータ化してHDD/SSDドライバ120に与えられるようにしても良い。以下に、WTモード時における、ホストシステムからデータの書き込みを要求された場合のHDD/SSDドライバ120の基本動作を説明する。
更新対象となるデータがL1キャッシュ領域201のみに存在する場合、つまりL1キャッシュ領域201には存在するがSSD19には存在しない場合、HDD/SSDドライバ120は、L1キャッシュ領域201とHDD18とについてデータの書き換えを行い(図2の(4),(2))、これらの両方が完了したら、ホストシステムに対し、書き込み処理の完了を通知する。また、HDD/SSDドライバ120は、HDD18上のデータの書き換えが完了したら、SSD19上にスペースを確保し、このSSD19上に確保したスペースに、L1キャッシュ領域201に格納した書き込み対象データを蓄積する(図2の(8))。
更新対象となるデータがL1キャッシュ領域201およびSSD19の両方に存在する場合、HDD/SSDドライバ120は、L1キャッシュ領域201、SSD19およびHDD18のそれぞれについてデータの書き換えを行い(図2の(4),(10),(2))、これらのすべてが完了したら、ホストシステムに対し、書き込み処理の完了を通知する。SSD19上のデータの書き換えは、SSD19上のデータを無効化し、L1キャッシュ領域201のデータを書き換えた後(図2の(4))、SSD19上にスペースを確保し、このSSD19上に確保したスペースに、上記書き換え後のデータを改めて蓄積する(図2の(8))手順としても良い。
更新対象となるデータがSSD19のみに存在する場合、つまりL1キャッシュ領域201には存在しないがSSD19には存在する場合、HDD/SSDドライバ120は、SSD19とHDD18とについてデータの書き換えを行い(図2の(10),(2))、これらの両方が完了したら、ホストシステムに対し、書き込み処理の完了を通知する。
そして、更新対象となるデータがL1キャッシュ領域201およびSSD19のいずれにも存在しない場合、HDD/SSDドライバ120は、HDD18上のデータの書き換えを行い(図2の(2))、その完了後、ホストシステムに対して、書き込み処理の完了を通知する。なお、L1キャッシュ領域201およびSSD19の両方にミスヒットした場合におけるHDD18上のデータの書き換えには、既存データの書き換えのほか、新規データの書き込み(無効データを有効データに書き換える)が含まれる。
このように、HDD/SSDドライバ120を、パラメータによってWBモードとWTモードとの2つの動作モードで動作可能とすることにより、単一のドライバ、つまりHDD/SSDドライバ120のみで、WBモードが有利なシステムと、WTモードが有利なシステムとの両方に対応できる。
また、WTモード時、HDD/SSDドライバ120は、さらに、更新対象となるデータがSSD19に存在する場合、SSD19上のデータを書き換えることに代えて、SSD19上のデータを無効化するようにしても良い。例えば、この動作モードをWIモードと称することととし、これをパラメータによって選択可能とすれば、HDD18よりも書き換え性能が低いSSD19を搭載するシステムの場合に、より有利な動作をHDD/SSDドライバ120に行わせることが可能となる。
(データの管理処理)
HDD/SSDドライバ120は、主メモリ13上に確保したL1キャッシュ領域201をブロック単位で管理し、HDD18へのデータの書き込みやHDD18からのデータの読み出しを、このブロック単位で処理することを先に述べた。そこで、次に、HDD/SSDドライバ120が実行するデータの管理処理について説明する。
WBモードの場合、ホストシステムからのデータの書き込み要求は、ブロック全体とは限らない。例えば1ブロックが128セクタで構成されるとすると、この128セクタ中のどのセクタに有効なデータが存在するのか、また、どのセクタにHDD18への未書き込みデータ(Dirty)が存在するのか、を判別するための仕組みが必要になる。HDD/SSDドライバ120は、この問題に対応するために、主メモリ13上に確保した管理データ領域202で管理する管理データとして、図3に示す存在セクタビットマップおよびDirtyセクタビットマップを、主メモリ13上のL1キャッシュ領域201およびSSD19(HDD18のキャッシュとして利用される部分)のブロック毎に設ける。
存在セクタビットマップは、対応するブロック内のどのセクタが有効であるかを記憶する管理データであり、Dirtyセクタビットマップは、対応するブロック内のどのセクタがDirtyであるかを記憶する管理データである。これら2つのセクタビットマップは、図4に示すように、ブロック内の各セクタの状態を1ビットで記憶する。1ブロックが128セクタで構成されている場合、ブロック毎に設けられる各セクタビットマップは、128ビット、つまり16バイトのデータとなる。
これら2つのセクタビットマップを管理することにより、HDD/SSDドライバ120は、主メモリ13上のL1キャッシュ領域201およびSSD19を利用しつつ、HDD18へのデータの書き込みやHDD18からのデータの読み出しを適切に実行することができる。
ところで、ブロック内のどのセクタがDirtyであるかを判別するために、上記Dirtyセクタビットマップを設けると、前述したように、(L1キャッシュ領域201のブロック数+SSD19のブロック数)×16バイトという多くのメモリ容量を必要とする。そこで、HDD/SSDドライバ120は、このDirtyセクタビットマップに代えて、図5に示す、ブロック内にHDD18への未書き込みデータ(Dirty)が存在するか否かを示すDirtyフラグと、ブロック内に存在する未書き込みデータ(Dirty)が部分的なものか否かを示すPartialフラグとを、主メモリ13上に確保した管理データ領域202で管理する管理データとして、主メモリ13上のL1キャッシュ領域201およびSSD19(HDD18のキャッシュとして利用される部分)のブロック毎に設けるようにしても良い。
Dirtyフラグは、対応するブロック内にHDDへの未書き込みデータ(Dirty)が存在するときにTrue、存在しないときにFalseとなるフラグである。Partialフラグは、対応するブロック内にすべてのセクタが存在するときにFalse、一部のセクタが存在するときにTrueとなるフラグである。PartialフラグがFalseのときには、全セクタが存在するので、存在セクタビットマップを参照することも不要とすることができる。
(不揮発動作)
次に、SSD19に蓄積したデータを本情報処理装置の再起動後にも使用可能とするためのHDD/SSDドライバ120による不揮発性動作について説明する。この不揮発性動作は、ホストシステムが、HDD/SSDドライバ120に対してシャットダウン通知を送信する機能を有することを前提とする。また、シャットダウン通知後にもデータの書き込み要求や読み出し要求がホストシステムから発行されても良いが、これらすべての要求は、HDD/SSDドライバ120に対して発行され、HDD/SSDドライバ120を経由しない書き込み処理は発生しないことを前提とする。これらの前提の下、不揮発性動作を行う場合、HDD/SSDドライバ120は、主メモリ13上の管理データ領域202で管理する管理データを保存するための管理データ保存領域191をSSD19上に設ける。
HDD/SSDドライバ120は、シャットダウン通知を受けた後は、WBモードであってもWTモード時の動作を行い、フラッシュ動作を開始する。これにより、HDD/SSDドライバ120は、当該フラッシュ動作が完了した時点において、HDD18への未書き込みデータが主メモリ13上のL1キャッシュ領域201およびSSD19のいずれにも存在しないことを保証する。
フラッシュ動作が完了し、すべての書き込み/読み出しを完了したら、HDD/SSDドライバ120は、主メモリ13上の管理データ領域202内の管理データをSSD19上の管理データ保存領域191に保存する。この時、HDD/SSDドライバ120は、存在セクタビットマップは書き出す必要があるが、Dirtyなデータは存在しないため、DirtyセクタビットマップまたはDirtyフラグ・Partialフラグは書き出す必要はない。
管理データを主メモリ13上の管理データ領域202からSSD19上の管理データ保存領域191に書き出した後は、HDD/SSDドライバ120は、当該管理データの内容を変更しないよう、かつ、HDD18とSSD19との間でデータの矛盾が発生しないように動作する。即ち、SSD19に更新対象データが存在する書き込み要求は、HDD18とSSD19との両方において書き換えを行い、また、読み出し要求に対するSSD19への読み出し対象データの蓄積(学習)は行わないように動作する。
本情報処理装置の再起動後、ロードされた際、HDD/SSDドライバ120は、管理データを初期化せず、SSD19上の管理データ保存領域191に保存された管理データを主メモリ13上に確保した管理データ領域202内にロードした後、(L1キャッシュ領域201が確保される主メモリ13は揮発性であるので)L1キャッシュ領域201に関する管理データのみを初期化する。
以上の不揮発動作によって、HDD/SSDドライバ120は、SSD19に蓄積したデータを本情報処理装置の再起動後にも使用可能とし、また、シャットダウン時にHDD18への未書き込みデータが存在しないことを保証する。HDD/SSDドライバ120が動作する前に、例えばBIOS17などの(HDD18へのアクセスが可能な)他のモジュールが動作するシステムが一般的であり、HDD18への未書き込みデータが存在する可能性を残すと、BIOS17等にもキャッシュ(主メモリ13上のL1キャッシュ領域201およびSSD19)の制御機能が必要となる。これに対し、上記不揮発動作によってHDD18への未書き込みデータが存在しないことをHDD/SSDドライバ120が保証する本情報処理装置では、BIOS17等にキャッシュの制御機能を持たせることを不要とすることができる。
(不揮発動作のデータ保証)
次に、HDD/SSDドライバ120が備える、SSD19に蓄積したデータがHDD19と一貫性を有するか否かをロード時にチェックする機能について説明する。この機能によって一貫性が保証できない場合、HDD/SSDドライバ120は、SSD19に蓄積したデータを破棄する揮発動作に切り替える。
この機能を実現するために、HDD/SSDドライバ120は、SSD19上の管理データ保存領域191に、図6に示すOwnershipフラグを設ける。Ownershipフラグは、HDD/SSDドライバ120が動作中であることを示す"Driver"と、ドライバが非動作中であることを示す"None"のいずれかの値を持つ。
HDD/SSDドライバ120は、ロード時、このOwnershipフラグをチェックし、"None"であれば、データの一貫性を保証できると判断して、管理データをSSD19上の管理データ保存領域191から主メモリ13上の管理データ領域202にロードする。一方、"None"でなければ、HDD/SSDドライバ120は、データの一貫性を保証できないと判断して、管理データを初期化し、SSD19を揮発(無効化)させる。
このOwnershipフラグの更新規則を説明すると、HDD/SSDドライバ120は、キャッシュ動作を開始する前に、Ownershipフラグを"Driver"に書き換える。また、上記不揮発動作におけるフラッシュ動作完了後の管理データ保存時に、HDD/SSDドライバ120は、Ownershipフラグを"None"に書き換える。
データの一貫性を保証できない状況としては、動作中の電源断、クラッシュ、ハングアップなどが考えられる。これに対し、HDD/SSDドライバ120が、上記の通り、Ownershipフラグを使って、データの一貫性を保証できる場合のみ、SSD19に蓄積したデータを使用するように動作することによって、データの信頼性を向上させることができる。
なお、以上では、HDD/SSDドライバ120のみによって、不揮発動作のデータ保証を実現する例を説明したが、次に、HDD/SSDドライバ120が動作する前にHDD18へのアクセスが可能な他のモジュール(ここでは、BIOS17とする)にも最小限のキャッシュ制御機能を持たせ、当該他のモジュールによってHDD18への書き込みが行われても、不揮発動作を実現可能とする例を説明する。
この場合、上記Ownershipフラグの値として、BIOS17が動作中であることを示す"BIOS"を追加する。これに伴い、"None"は、BIOS17およびHDD/SSDドライバ120のいずれも非動作中であることを示すものとする。また、SSD19上の管理データ保存領域191内には、ライトトレース領域が確保される。
BIOS17は、起動時、Ownershipフラグをチェックし、"None"であれば、データの一貫性を保証できると判断して、Ownershipフラグを"BIOS"に書き換える。"None"でなければ、BIOS17は、データの一貫性を保証できないと判断して、Ownershipフラグを放置する。
データの一貫性を保証できると判断し、Ownershipフラグを"BIOS"に変更した場合、BIOS17は、HDD18への書き込みを行った際、図7に示すように、そのHDD18へのライトコマンドを、ブロック単位でSSD19上の管理データ保存領域191内のライトトレース領域に蓄積する。ブロック単位とすることで、要求長を不要にできる。つまり、ブロック単位のLBA(Logical block address)とすることで、トレースデータ量を減らすことを実現する。ライトトレース領域がオーバーフローした場合、BIOS17は、ライトコマンドの蓄積を終了し、Ownershipフラグを"None"に書き換える。
一方、HDD/SSDドライバ120は、ロード時、Ownershipフラグをチェックし、"BIOS"であれば、データの一貫性を保証できると判断し、管理データをSSD19上の管理データ保存領域191から主メモリ13上の管理データ領域202にロードする。さらに、HDD/SSDドライバ120は、SSD19上の管理データ保存領域191内のライトトレース領域を参照し、更新対象データがSSD19に存在したならば、当該データを無効化する。一方、"BIOS"でなければ、HDD/SSDドライバ120は、データの一貫性を保証できないと判断して、管理データを初期化し、SSD19を揮発(無効化)させる。
そして、HDD/SSDドライバ120は、上記不揮発動作におけるフラッシュ動作完了後の管理データ保存時に、Ownershipフラグを"None"に書き換える。
このように、例えばBIOS17など、HDD/SSDドライバ120が動作する前にHDD18へのアクセスが可能な他のモジュールに、最小限の機能を追加するだけで、当該他のモジュールによるHDD18への書き込みが発生しても、不揮発動作を実現することができる。
続いて、例えばODD20にセットされたCD−ROMからのブートによりHDD18のデータを書き換えるといった、HDD/SSDドライバ120を経由しないHDD18へのデータの書き込みが発生した場合や、HDD18またはSSD19が別のものと交換された場合、あるいは、HDD18またはSSD19が一旦本情報処理装置から取り外されて他の情報処理装置上でデータ更新が行われた後、再び本情報処理装置に取り付けられた場合など、データの一貫性を保証できない状況下において、データの一貫性を保証できないと適切に判断することを可能とするためにHDD/SSDドライバ120が備える機能について説明する。
ここでは、本情報処理装置に適用されるHDD18およびSDD19が、他の個体と区別可能な情報(以下、個体情報と称する)を保持し、要求に応じて提供する機能と、電源投入回数を保持し、要求に応じて提供する機能とを有していることを前提とする。また、HDD/SSDドライバ120を経由しないデータ書き込みの発生時には、電源投入回数が更新されることを前提とする。さらに、HDD18は複数を対象とすることができること(複数のHDD18を搭載できること)を前提とする。
この機能を実現するために、HDD/SSDドライバ120は、SSD19上の管理データ保存領域191に、図8に示す、SSD19およびHDD18の個体情報および電源投入回数を記録する領域を設ける。
HDD/SSDドライバ120は、ロード時、SSD19およびHDD18から個体情報および電源投入回数を取得し、SSD19上の管理データ保存領域191に記録されたSSD19およびHDD18の個体情報および電源投入回数と比較してチェックする。SSD19から取得した個体情報がSSD19上の管理データ保存領域191に記録された個体情報と異なるとき、または、SSD19上の管理データ保存領域191に記録された電源投入回数がSSD19から取得した(現在の)電源投入回数よりも1だけ小さい値と等しくないとき、HDD/SSDドライバ120は、データの一貫性を保証できないと判断して、管理データを初期化し、SSD19を揮発(無効化)させる。
また、HDD18から取得した個体情報がSSD19上の管理データ保存領域191に記録された個体情報と異なるとき、または、SSD19上の管理データ保存領域191に記録された電源投入回数がHDD18から取得した(現在の)電源投入回数よりも1だけ小さい値と等しくないとき、HDD/SSDドライバ120は、このHDD18については、データの一貫性を保証できないと判断して、当該HDD18に関する管理データを初期化すると共に、SSD19上の当該HDD18に関するデータを無効化する。
なお、HDD/SSDドライバ120は、上記不揮発動作におけるフラッシュ動作完了後の管理データ保存時に、SSD19およびHDD18の(現在の)電源投入回数を、SSD19上の管理データ保存領域191に書き出す。
以上により、上記データの一貫性を保証できない種々の状況下において、データの一貫性を保証できないと適切に判断することが可能となる。
(BIOSによるキャッシュ制御)
次に、HDD/SSDドライバ120に加えて、BIOS17も、SSD19上に蓄積したデータを活用する例を説明する。
BIOS17は、起動時、データの一貫性をチェックするために、上記Ownershipフラグを使ったチェックに加えて、HDD/SSDドライバ120と同様に、SSD19およびHDD18の個体情報および電源投入回数を使ったチェックを実行する。一貫性を保証できると判断した場合、HDD/SSDドライバ120は、Ownershipフラグを"BIOS"に書き換え、また、一貫性を保証できないと判断した場合には、Ownershipフラグを放置する。
データの読み出しについて、BIOS17は、一貫性を保証できると判断した場合、読み出し対象データがすべてSSD19上に存在するならば、SSD19からの読み出しを実行する。それ以外、つまり一部がSSD19上に存在するとき、または、SSD19上に存在しないとき、BIOS17は、HDD18からの読み出しを実行する。一貫性を保証できないと判断した場合には、BIOS17は、常に、HDD18からの読み出しを実行する。
データの書き込みについては、BIOS17は、常に、HDD18への書き込みを実行する。そして、一貫性を保証できると判断した場合、BIOS17は、更新対象データがSSD19上に存在するならば、当該SSD19上のデータを無効化する。
なお、BIOS17が上記の動作を実行する本ケースでは、図7に示したライトトレースをSSD19上の管理データ保存領域191内に記録することは不要となる。
このように、BIOS17に簡単な機能を追加するだけで、BIOS17においても、SSD19に蓄積したデータを活用でき、起動時間の短縮を図ることができる。なお、データの書き込み時、更新対象データがSSD19上に存在した場合、HDD18とSSD19との両方に書き込みを行うようにすることも可能である。一般的に、BIOS17では、HDD18およびSSD19への書き込みについて並列動作できないので、このようにすることは性能的には不利になるが、並列動作可能なモジュールの場合であれば、HDD18とSSD19との両方に書き込みを行うようにしても良い。
ところで、BIOS17でもSSD19上に蓄積したデータを活用する場合、読み出し対象データがすべてSSD19上に存在するか否かを判別するために、BIOS17が存在セクタビットマップを参照しなければならなくなる。BIOS17に存在セクタビットマップを参照させるのは性能的に不利になるので、続いて、BIOS17が存在セクタビットマップを参照することなく、読み出し対象データがすべてSSD19上に存在するか否かを判別することを可能とする仕組みについて説明する。
HDD/SSDドライバ120は、上記不揮発動作におけるフラッシュ動作完了後の管理データ保存時に、PartialフラグがTrue(ブロック内の一部のセクタが存在する)のSSD19のブロックを予め無効化する。これにより、シャットダウン後は、部分的に有効データが存在するブロック(Partialブロック)がSSD19上から排除された状態となり、読み出し対象データがすべてSSD19上に存在するか否かの判別を容易にすることを実現する。また、シャットダウン時にPartialブロックが排除されるので、存在セクタビットマップの書き出しを不要とすることができる。
ところで、以上のように、上記不揮発動作におけるフラッシュ動作完了後の管理データ保存時に、Partialブロックを無効化すると、当該管理データ保存後の読み出しに関するSSD19のヒット率が低下する。そこで、続いて、管理データ保存後のヒット率を低下させずに、読み出し対象データがすべてSSD19上に存在するか否かの判別をBIOS17が容易に行えるようにするための仕組みについて説明する。
HDD/SSDドライバ120は、上記不揮発動作におけるフラッシュ動作完了後の管理データ保存時、Partialフラグを意識せずに、管理データの保存を行う。BIOS17は、読み出し対象データがSSD19上に存在し、かつ、PartialフラグがFalse(ブロック内にすべてのセクタが存在する)の場合にのみ、SSD19からのデータの読み出しを実行する。そして、HDD/SSDドライバ120は、起動時に、PartialフラグがTrueのSSD19のブロックを無効化する。この手順によっても、管理データの保存時に存在セクタビットマップを書き出すことを不要にできる。
(高速ブート)
情報処理装置において、ブートに使用するデータは、毎回同じ領域から読み出されることが多い。この点に着目して、次に、本情報処理装置が備えるブートを高速化するための仕組みについて説明する。
この仕組みを実現するために、HDD/SSDドライバ120は、SSD19上の管理データ保存領域191に、図9に示すPinフラグを、主メモリ13上のL1キャッシュ領域201およびSSD19(HDD18のキャッシュとして利用される部分)のブロック毎に設ける。Pinフラグは、このデータがブートに使用されたことを示すためのフラグである。
BIOS17は、読み出し対象データがSSD19上に存在するとき、当該ブロックに対応するPinフラグを立てる。SSD19上に存在しなかった場合、BIOS17は、SSD19上の管理データ保存領域191内に確保したトレース領域に、HDD19の識別子およびブロックLBAを蓄積する。
本ケースでは、例えば各種アプリケーションプログラム130の1つとして、OS110が起動したときに動作するソフトウェアを用意する。このソフトウェアは、動作を開始すると、HDD/SSDドライバ120に対して、起動完了通知を送信するように構成されている。
HDD/SSDドライバ120は、第1に、起動時または起動完了通知受領時、BIOS17がSSD19上の管理データ保存領域191内に蓄積したトレースを参照しながらHDD18からSSD19へのデータの読み出しを実行し、(SSD19側の)ブロックに対応するPinフラグを立てる。また、HDD/SSDドライバ120は、第2に、起動完了通知を受領するまでのデータ読み出しに対して、主メモリ13上のL1キャッシュ領域201またはSSD19に読み出し対象データが存在した場合、そのブロックに対応するPinフラグを立てる。SSD19に読み出し対象データが存在しない場合、HDD/SSDドライバ120は、HDD18からSSD19へのデータの読み出しを実行し、(SSD19側の)ブロックに対応するPinフラグを立てる。
その後、HDD/SSDドライバ120は、主メモリ13上のL1キャッシュ領域201またはSSD19を活用しながら、ホストシステムから要求されるHDD18へのデータの書き込みおよびHDD18からのデータの読み出しを処理するわけであり、その際において、最近アクセスされたデータほど優先的に蓄積されるように、主メモリ13上のL1キャッシュ領域201およびSSD19上のデータの入れ替えを実行する。ここで、HDD/SSDドライバ120は、(アクセス時刻が古くても)Pinフラグの立ったSSD19上のデータを無効化しないように制御する。
つまり、前述した、ブートに使用するデータは毎回同じ領域から読み出されることが多い点に着目して、次回のブート時におけるSSD19のヒット率を高めることにより、ブートの高速化を実現する。
なお、HDD/SSDドライバ120は、シャットダウン時に管理データをSSD19の管理データ保存領域191に保存するとき、すべてのPinフラグを落として書き出しを実行する。シャットダウン時にすべてのPinフラグを落とす理由は、毎回ブート時に次回のブート時のための学習を行うためであり、これにより、ブートに利用するデータの領域が変化する場合にも適応的に対応できることとなる。
続いて、Pinフラグの立っているデータに対して書き込み要求(書き換え)が発生した場合の対処方法の一例を説明する。
Pinフラグの立っているデータは、前述したように、次回のブート時にも読み出される可能性が高い。しかしながら、当該データに対して書き込み要求が発生した場合は、その可能性は低くなる。そこで、このような場合、BIOS17およびHDD/SSDドライバ120は、当該データのPinフラグを落とすこととする。
即ち、今回のブートで使用されたデータであっても、書き込み要求が発生した場合は次回のブートに使用される可能性が低くなることに着目して、このようなデータのPinフラグを落とすことにより、このデータは必要に応じて無効化され、この領域を別のデータのために使用できるようにして、ヒット率を向上させることを実現する。
また、Pinフラグの立っているデータは、前述したように、次回のブート時にも読み出される可能性が高い。だからこそ、HDD/SSDドライバ120は、SSD19に蓄積されたこれらのデータを無効化しないように制御する。つまり、これらのデータは、SSD19上に常駐することになり、その分、キャッシュとして使用するSSD19の容量を制限することになる。そこで、HDD/SSDドライバ120は、Pinフラグの立っているデータの量を監視して、そのデータ量が予め定められた値を越えた場合、以後の(ブートに使用された)データについては、Pinフラグを立てることを止め、SSD19に常駐させる対象から除外する。これにより、キャッシュとしてのSSD19の容量が減り、キャッシュヒット率が低下することを防止する。
(Flush/Write FUA要求に対するオプション処理)
Flush/Write FUA要求は、厳密に処理すると、ライトバック動作の性能を著しく劣化させてしまう。そこで、HDD/SSDドライバ120は、Flush/Write FUA要求に対して、”オプションFlush処理"機能を設け、"Enable"または"Disable"のいずれかを設定可能として、以下の通りに動作する。
ライトスルー動作中(WTモードまたはWBモードでシャットダウン通知受領後)のときは、HDD/SSDドライバ120は、”オプションFlush処理"機能が"Enable"または"Disable"のいずれに設定させているかに関わらず、Flush/Write FUA要求を厳密に処理する。また、”オプションFlush処理"機能が"Enable"に設定されている場合も、Flush/Write FUA要求を厳密に処理する。即ち、HDD/SSDドライバ120は、Flush FUA要求に対しては、当該要求を受け付けた時点で主メモリ13上のL1キャッシュ領域201およびSSD19に存在するHDD18への未書き込みデータをすべてHDD18へ書き込んだ後、HDD18へFlush要求を発行し、その完了を待ってから、Flush FUA要求に対する処理の完了をホストシステムに通知する。Write FUA要求に対しては、前述した通りの動作を行う。
ライトバック動作中で、”オプションFlush処理"機能が"Disable"に設定されている場合、HDD/SSDドライバ120は、Flush FUA要求に対しては、何もせずに処理完了をホストシステムに返送する。また、Write FUA要求に対しては、HDD/SSDドライバ120は、(Write FUA要求ではなく)通常のWrite要求として処理し、処理完了をホストシステムの返送する。そして、この場合、HDD/SSDドライバ120は、次のいずれかまたは両方を契機としてフラッシュ動作を開始する。1つは、前回のフラッシュ動作から一定時間が経過したときであり、もう1つは、SSD19上のHDD18への未書き込みデータ(Dirty)を含むブロック(Dirtyブロック)の数が予め定められた値を越えたときである。HDD/SSDドライバ120は、フラッシュ動作を開始した時、Dirtyブロックをすべてフラッシュする。
上記”オプションFlush処理"機能を設け、"Enable"または"Disable"のいずれかを設定可能とすることで、性能を犠牲にしてデータの保全性を重視するユーザと、データの保全性を犠牲にして性能を重視するユーザとの両方に対応することが可能となる。また、HDD18への未書き込みデータ(Dirty)をまとめてフラッシュするので、HDD18の動作時間を短縮し、省電力化を図ることができる。
(データのマージ処理)
前述したように、HDD/SSDドライバ120は、主メモリ13上のユーザバッファ250とHDD18およびSSD19との間に介在させるL1キャッシュ領域201を主メモリ13上に確保し、かつ、その管理をブロック単位で実行する。そこで、次に、L1キャッシュ領域201またはSSD19のデータと、HDD19のデータとを、L1キャッシュ領域201上で効率的に組み合わせる(マージ)ためにHDD/SSDドライバ120が備える仕組みについて説明する。
HDD18のデータとマージする必要が生じるのは、読み出し対象データの一部がL1キャッシュ領域201に存在するとき、および、読み出し対象データがL1キャッシュ領域201に存在せず、その一部がSSD19に存在するときである。一般的には、HDD18の複数に分かれた領域からデータを読み出すことになり、HDD18に対して複数の読み出し要求を発行する必要がある。SSD19のデータとHDD18のデータとをマージする場合には、一般的には、SSD19に対しても、複数の読み出し要求を発行する必要がある。このように、複数の読み出し要求を発行することは、オーバヘッドの増加になってしまう。
そこで、HDD/SSDドライバ120は、まず、主メモリ13上にマージバッファ203を確保する。マージバッファ203は、ブロックサイズと等しいサイズで、1個または複数個準備して必要なときに排他制御して使用しても良いし、L1キャッシュ領域201の各ブロックごとに専用のマージバッファ203を設けても良い。
L1キャッシュ領域201のデータとHDD18のデータとをマージする場合、HDD/SSDドライバ120は、HDD18から必要最小分だけデータをマージバッファ203に読み出す。必要最小分とは、具体的には、図10に示すように、L1キャッシュ領域201の該当ブロック内の有効データが欠けている先頭のセクタから最後尾のセクタまでの範囲である。この必要最小分のデータのHDD18からマージバッファ203への読み出しを行った後、HDD/SSDドライバ120は、L1キャッシュ領域201上で欠けているデータをマージバッファ203からコピーする。
SSD19のデータとHDD18のデータとをマージする場合、HDD/SSDドライバ120は、SSD19から必要最小分だけデータをL1キャッシュ領域201に読み出すと共に、HDD18から必要最小分だけデータをマージバッファ203に読み出す。そして、この両方の読み出し完了後、HDD/SSDドライバ120は、L1キャッシュ領域201上で欠けているデータをマージバッファ203からコピーする。
また、このマージバッファ203は、フラッシュ動作時においても利用できる。フラッシュ動作時におけるHDD18へのデータ書き込みを必ずL1キャッシュ領域201から実行する方式である。L1キャッシュ領域201の有効データが分散し、そのままフラッシュする場合、複数の書き込み要求をHDD18に対して発行しなければならず、オーバヘッドの増加になってしまう。そこで、HDD/SSDドライバ120は、L1キャッシュ領域201の有効データが分散している場合、HDD18から必要最小分だけデータをマージバッファ203に読み出し、L1キャッシュ領域201にマージ後、1回の書き込み要求の発行でHDD18に対する書き込みを完了させる。
(ページ制御)
次に、SSD19への効率的な書き込みを実現するためにHDD/SSDドライバ120が備える仕組みについて説明する。
不揮発性キャッシュ(NVC)デバイスであるSSD19は、セクタ単位によるデータの読み出し/書き込みが可能であるが、内部的には、ページという単位で管理されているのが一般的である。ページに満たないデータの書き込みは、一旦ページ単位で現在のデータを読み出し、書き込み対象データとマージしてからページ単位で書き戻すことにより実施する。つまりページ単位でのデータの書き込みと比較して遅い。そこで、HDD/SSDドライバ120は、L1キャッシュ領域201からSSD19への書き込みを、ページ境界からページサイズの倍数となるように制御する。SSD19のページサイズは、HDD/SSDドライバ120がSSD19から取得する方法と、設定項目(例えばパラメータ)の1つとしてHDD/SSDドライバ120に与える方法とが考えられる。
そして、HDD/SSDドライバ120は、L1キャッシュ領域201からSSD19への書き込みを、ページ境界からページサイズの倍数とするために、SSD19の割り付けをページ境界とし、ブロックサイズはページサイズの倍数となるように設定する。
(セットアソシアティフ)
また、HDD/SSDドライバ120は、キャッシュの検索速度向上を図るために、L1キャッシュ領域201上および(HDD18のキャッシュとして利用される)SSD19上のデータを管理するための方式として、セットアソシアティブ方式を採用することができる。より具体的には、図11に示すようなテーブルを主メモリ13上の管理データ領域202内でL1キャッシュ領域201およびSSD19のそれぞれについて管理し、各ブロックを示すLBA中、テーブルのエントリ数を表現可能な下位nビットを"Index"と位置づけて、当該"Index"部分の値が一致するブロック毎に最大Way数分だけ蓄積されるように制御する。
また、セットアソシアティブ方式を採用して、HDD/SSDドライバ120は、Pinフラグの立っているデータの数を、この"Index"毎に監視して、当該"Index"毎に予め定められた値を越えないように制御することもできる。
さらに、セットアソシアティブ方式を採用して、HDD/SSDドライバ120は、上記”オプションFlush処理"機能が"Disable"に設定されている場合にフラッシュ動作を開始する契機の1つを、いずれかの"Index"のDirtyブロックの数が予め定められた値を越えたときとすることもできる。
以上のように、本情報処理装置によれば、SSD19をHDD18のキャッシュとして利用することで、HDD18に対するアクセスの高速化を図るにあたって、HDD18とSSD19とを制御するHDD/SSDドライバ120が、主メモリ13上のユーザバッファ250とHDD18およびSSD19との間に介在させるL1キャッシュ領域201を主メモリ13上に確保し、かつ、その管理をブロック単位で実行することにより、HDD18とSSD19との間で必要となるデータの受け渡し等に関して、さらなる高速化や効率化を図ることを実現する。
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に構成要素を適宜組み合わせてもよい。
11…CPU、12…MCH、13…主メモリ、14…ICH、15…GPU、15A…ビデオメモリ(VRAM)、16…サウンドコントローラ、17…BIOS−ROM、18…HDD、19…SSD、20…ODD、21…各種周辺機器、22…EEPROM、23…EC/KBC、110…オペレーティングシステム(OS)、120…HDD/SSDドライバ、130…各種アプリケーションプログラム。
実施形態によれば、情報処理装置は、バッファ領域が確保されるメインメモリと、第1の外部記憶装置と、第2の外部記憶装置と、記第1の外部記憶装置を前記第2の外部記憶装置のキャッシュとして用いて、前記第2の外部記憶装置へのデータの書き込みおよび前記第2の外部記憶装置からのデータの読み出しを所定のブロック単位で処理するドライバとを具備する。前記ドライバは、前記ドライバとデータの書き込みおよびデータの読み出しを要求するホストシステムとの間でデータの受け渡しを行うために確保される前記バッファ領域と前記第1の外部記憶装置との間および前記バッファ領域と前記第2の外部記憶装置との間に介在させるキャッシュ領域を前記メインメモリ上に確保するキャッシュ確保手段をする。
実施形態によれば、情報処理装置は、バッファ領域が確保されるメインメモリと、第1の外部記憶装置と、第2の外部記憶装置と、前記第1の外部記憶装置前記第2の外部記憶装置とを所定のブロック単位で制御するドライバとを具備する。前記ドライバは、前記ドライバとデータの書き込みおよびデータの読み出しを要求するホストシステムとの間でデータの受け渡しを行うために確保される前記バッファ領域と前記第1の外部記憶装置との間および前記バッファ領域と前記第2の外部記憶装置との間に介在させるキャッシュ領域を前記メインメモリ上に確保するキャッシュ確保手段を有し、前記キャッシュ確保手段により前記メインメモリ上に確保された前記キャッシュ領域と、前記第1の外部記憶装置の一部または全部とを、前記第2の外部記憶装置のキャッシュとして利用し、前記キャッシュ領域を前記所定のブロック単位で管理する

Claims (25)

  1. メインメモリと、
    第1の外部記憶装置と、
    第2の外部記憶装置と、
    前記第1の外部記憶装置と前記第2の外部記憶装置とを制御し、前記第1の外部記憶装置を前記第2の外部記憶装置のキャッシュとして用いて、前記第2の外部記憶装置へのデータの書き込みおよび前記第2の外部記憶装置からのデータの読み出しを所定のデータ長のブロック単位で処理するドライバと
    を具備し、
    前記ドライバは、
    データの書き込みおよびデータの読み出しを要求するホストシステムとの間でデータの受け渡しを行うために前記メインメモリ上に確保されるバッファ領域と前記第1の外部記憶装置および前記第2の外部記憶装置との間に介在させるキャッシュ領域を前記メインメモリ上に確保するキャッシュ確保手段と、
    前記ホストシステムからデータの読み出しが要求されたとき、
    (a1)読み出し対象データのすべてが前記キャッシュ領域内に存在する場合、前記キャッシュ領域内のデータを前記バッファ領域内に格納し、
    (a2)読み出し対象データの一部が前記キャッシュ領域内に存在する場合、前記キャッシュ領域内に存在しないその他のデータを前記第2の外部記憶装置から前記キャッシュ領域に読み出し、前記キャッシュ領域に存在していた一部のデータと前記キャッシュ領域に読み出したその他のデータとを前記バッファ領域に格納して、前記バッファ領域に格納したデータを前記第1の外部記憶装置に蓄積し、
    (a3)読み出し対象データが前記キャッシュ領域内に存在しておらず、そのすべてが前記第1の外部記憶装置上に存在する場合、前記第1の外部記憶装置上のデータを読み出して前記バッファ領域に格納し、
    (a4)読み出し対象データが前記キャッシュ領域内に存在しておらず、その一部が前記第1の外部記憶装置上に存在する場合、前記第1の外部記憶装置上の一部のデータと前記第2の外部記憶装置上のその他のデータとを前記キャッシュ領域内に読み出し、前記バッファ領域に格納して、前記キャッシュ領域に読み出したデータを前記第1の外部記憶装置に蓄積し、
    (a5)読み出し対象データが前記キャッシュ領域内および前記第1の外部記憶装置上のいずれにも存在しない場合、前記第2の外部記憶装置上のデータを前記キャッシュ領域内に読み出し、前記バッファ領域に格納して、前記キャッシュ領域に読み出したデータを前記第1の外部記憶装置に蓄積する
    リード制御手段と、
    前記ホストシステムからデータの書き込みが要求されたとき、
    (b1)更新対象となるデータが前記キャッシュ領域内に存在し、前記第1の外部記憶装置に存在しない場合、前記キャッシュ領域内のデータを書き込み対象データに書き換えて、前記キャッシュ領域内の書き換え後のデータを前記第1の外部記憶装置に蓄積し、
    (b2)更新対象となるデータが前記キャッシュ領域内および前記第1の外部記憶装置上の両方に存在する場合、前記第1の外部記憶装置上のデータを無効化し、前記キャッシュ領域内のデータを書き込み対象データに書き換えて、前記キャッシュ領域内の書き換え後のデータを前記第1の外部記憶装置に蓄積し、
    (b3)更新対象となるデータが前記キャッシュ領域内に存在せず、前記第1の外部記憶装置上に存在する場合、前記第1の外部記憶装置上のデータを書き込み対象データに書き換え、
    (b4)更新対象となるデータが前記キャッシュ領域内および前記第1の外部記憶装置上のいずれにも存在しない場合、書き込み対象データを前記キャッシュ領域に格納して、前記キャッシュ領域に格納したデータを前記第1の外部記憶装置に蓄積する
    ライト制御手段と、
    前記キャッシュ領域内に存在する前記第2の外部記憶装置への未書き込みデータを前記第2の外部記憶装置に格納し、前記第1の外部記憶装置上に存在する前記第2の外部記憶装置への未書き込みデータを前記キャッシュ領域経由で前記第2の外部記憶装置に格納するフラッシュ制御手段と
    を有する
    ことを特徴とする情報処理装置。
  2. 前記ライト制御手段は、ライトスルー方式で書き込み処理を実行することを要求するライトFUA(Force unit access)要求を前記ホストシステムから受けた場合、前記キャッシュ領域内へのデータの格納または前記キャッシュ領域内もしくは前記第1の外部記憶装置上のデータの書き換えを状況に応じて行うと共に、書き込み対象データの書き込み処理を前記第2の外部記憶装置にライトスルー方式で実行させるためのライトFUA要求を前記第2の外部記憶装置に対して発行することを特徴とする請求項1記載の情報処理装置。
  3. 前記リード制御手段は、読み出し対象データが前記キャッシュ領域内に存在しておらず、そのすべてが前記第1の外部記憶装置上に存在する場合(a3)における前記第1の外部記憶装置上のデータの前記バッファ領域への格納を、前記キャッシュ領域経由で実行することを特徴とする請求項1または2記載の情報処理装置。
  4. 前記リード制御手段は、読み出し対象データが前記キャッシュ領域内に存在しておらず、そのすべてが前記第1の外部記憶装置上に存在する場合(a3)における前記第1の外部記憶装置上のデータの前記バッファ領域への格納を、前記キャッシュ領域を経由させないモードと、前記キャッシュ領域を経由させることによって当該データを前記キャッシュ領域に蓄積するモードとの2つのモードで実行可能であることを特徴とする請求項3記載の情報処理装置。
  5. 前記ライト制御手段は、
    (b1’)更新対象となるデータが前記キャッシュ領域内に存在し、前記第1の外部記憶装置に存在しない場合、前記キャッシュ領域内のデータおよび前記第2の外部記憶装置上のデータを書き込み対象データに書き換えて、前記キャッシュ領域内の書き換え後のデータを前記第1の外部記憶装置に蓄積し、
    (b2’)更新対象となるデータが前記キャッシュ領域内および前記第1の外部記憶装置上の両方に存在する場合、前記キャッシュ領域内のデータ、前記第1の外部記憶装置上のデータおよび前記第2の外部記憶装置上のデータを書き込み対象データに書き換え、
    (b3’)更新対象となるデータが前記キャッシュ領域内に存在せず、前記第1の外部記憶装置上に存在する場合、前記第1の外部記憶装置上のデータおよび前記第2の外部記憶装置上のデータを書き込み対象データに書き換え、
    (b4’)更新対象となるデータが前記キャッシュ領域内および前記第1の外部記憶装置上のいずれにも存在しない場合、前記第2の外部記憶装置上のデータを書き込み対象データに書き換える
    ように動作するライトスルーモードをさらに有する
    ことを特徴とする請求項1記載の情報処理装置。
  6. 前記ライト制御手段は、前記ライトスルーモード時、前記第1の外部記憶装置上に更新対象データが存在した場合における前記第1の外部記憶装置上のデータの書き換えに代えて、前記第1の外部記憶装置上のデータの無効化を実行するモードで動作可能であることを特徴とする請求項5記載の情報処理装置。
  7. 前記ドライバは、
    ブロック内のデータが有効か無効かを所定のデータ長のセクタ単位で示す第1のセクタビットマップと、ブロック内のいずれのデータが前記第2の外部記憶装置への未書き込みデータであるのかを前記セクタ単位で示す第2のセクタビットマップとを、前記キャッシュ領域および前記第1の外部記憶装置の各ブロック毎に設け、前記メインメモリ上に確保される管理データ領域内で管理データとして管理するブロック内データ管理手段
    をさらに有することを特徴とする請求項1記載の情報処理装置。
  8. 前記ドライバは、
    ブロック内のデータが有効か無効かを所定のデータ長のセクタ単位で示すセクタビットマップと、ブロック内に前記第2の外部記憶装置への未書き込みデータが存在するか否かを示す第1のフラグと、ブロック内にすべてのデータが存在するのか一部のデータが存在するのかを示す第2のフラグとを、前記キャッシュ領域および前記第1の外部記憶装置の各ブロック毎に設け、前記メインメモリ上に確保される管理データ領域内で管理データとして管理するブロック内データ管理手段
    をさらに有することを特徴とする請求項1記載の情報処理装置。
  9. 前記ドライバは、
    前記ホストシステムからシャットダウン通知を受けたとき、
    前記キャッシュ領域内および前記第1の外部記憶装置上に存在する前記第2の外部記憶装置への未書き込みデータを前記第2の外部記憶装置に格納する動作を前記フラッシュ制御手段に行わせ、
    前記フラッシュ制御手段の動作完了後、前記メインメモリ上に確保される管理データ領域内の管理データを前記第1の外部記憶装置上に確保される管理データ保存領域に格納する動作を前記ブロック内データ管理手段に行わせ、
    起動時、前記第1の外部記憶装置上に確保される管理データ保存領域内の管理データを前記メインメモリ上に確保される管理データ領域に格納した後、前記キャッシュ領域に関する管理データを初期化する動作を前記ブロック内データ管理手段に行わせる
    データ保証手段
    をさらに有することを特徴とする請求項7または8記載の情報処理装置。
  10. 前記データ保証手段は、
    前記第1の外部記憶装置に蓄積したデータが前記第2の外部記憶装置と一貫性を有するか否かを判定するための第3のフラグであって、前記ドライバが動作中である場合に第1の値を示し、前記ドライバが非動作中である場合に第2の値を示す第3のフラグを前記第1の外部記憶装置上に確保される管理データ保存領域内に設け、
    前記キャッシュ領域内および前記第1の外部記憶装置上に存在する前記第2の外部記憶装置への未書き込みデータを前記第2の外部記憶装置に格納する動作を前記フラッシュ制御手段に開始させる際、前記第3のフラグの値を前記第2の値に更新し、
    前記ドライバの起動時、前記第3のフラグの値が前記第2の値を示している場合、前記第1の外部記憶装置上に確保される管理データ保存領域内の管理データを前記メインメモリ上に確保される管理データ領域に格納する動作を前記ブロック内データ管理手段に行わせた後、前記第3のフラグの値を前記第1の値に更新し、前記第3のフラグの値が前記第1の値を示している場合、前記第1の外部記憶装置上に確保される管理データ保存領域内の管理データを初期化すると共に、前記第1の外部記憶装置上のデータを破棄した後、前記第3のフラグの値を前記第1の値に更新する
    ことを特徴とする請求項9記載の情報処理装置。
  11. 前記ドライバが動作を開始する前、前記第2の外部記憶装置へのデータの書き込みおよび前記第2の外部記憶装置からのデータの読み出しを処理する起動手段を具備し、
    前記データ保証手段は、
    前記第1の外部記憶装置に蓄積したデータが前記第2の外部記憶装置と一貫性を有するか否かを判定するための第3のフラグであって、前記ドライバが動作中である場合に第1の値を示し、前記起動手段が動作中である場合に第2の値を示し、前記ドライバおよび前記起動手段のいずれもが非動作中である場合に第3の値を示す第3のフラグを前記第1の外部記憶装置上に確保される管理データ保存領域内に設け、
    前記起動手段は、
    起動時、前記フラグの値が前記第3の値であった場合、前記第3のフラグを前記第2の値に更新し、前記第2の外部記憶装置に対して発行したライト要求を前記第1の外部記憶装置上に確保される管理データ保存領域内にトレースデータとして蓄積し、
    前記データ保証手段は、
    前記キャッシュ領域内および前記第1の外部記憶装置上に存在する前記第2の外部記憶装置への未書き込みデータを前記第2の外部記憶装置に格納する動作を前記フラッシュ制御手段に開始させる際、前記第3のフラグの値を前記第3の値に更新し、
    前記ドライバの起動時、前記第3のフラグの値が前記第2の値を示している場合、前記第1の外部記憶装置上に確保される管理データ保存領域内の管理データを前記メインメモリ上に確保される管理データ領域に格納する動作を前記ブロック内データ管理手段に行わせ、前記トレースデータを参照して、前記第1の外部記憶装置上に存在する更新対象データを無効化した後、前記第3のフラグの値を前記第1の値に更新し、前記第3のフラグの値が前記第2の値以外の値を示している場合、前記第1の外部記憶装置上に確保される管理データ保存領域内の管理データを初期化すると共に、前記第1の外部記憶装置上のデータを破棄した後、前記第3のフラグの値を前記第1の値に更新する
    ことを特徴とする請求項9記載の情報処理装置。
  12. 前記起動手段は、前記トレースデータが所定の量を越えた場合、前記トレースデータの蓄積を終了し、前記第3のフラグを前記第3の値に更新することを特徴とする請求項11記載の情報処理装置。
  13. 前記データ保証手段は、
    前記第2の外部記憶装置の個体情報および電源投入回数を前記第1の外部記憶装置上に確保される管理データ保存領域内で管理し、
    前記ドライバの起動時、前記第2の外部記憶装置から個体情報および電源投入回数を取得し、前記取得した個体情報と前記管理データ保存領域内で管理している個体情報とが異なっていた場合、または、前記取得した電源投入回数から1を減じた値と前記管理データ保存領域内で管理している電源投入回数とが異なっていた場合、前記第1の外部記憶装置上に確保される管理データ保存領域内の前記第2の外部記憶装置に関する管理データを初期化すると共に、前記第1の外部記憶装置上の前記第2の外部記憶装置に関するデータを無効化する
    ことを特徴とする請求項9記載の情報処理装置。
  14. 前記ドライバが動作を開始する前、前記第2の外部記憶装置へのデータの書き込みおよび前記第2の外部記憶装置からのデータの読み出しを処理する起動手段を具備し、
    前記起動手段は、
    起動時、前記第2の外部記憶装置から個体情報および電源投入回数を取得し、前記取得した個体情報と前記管理データ保存領域内で管理している個体情報とが一致しており、かつ、前記取得した電源投入回数から1を減じた値と前記管理データ保存領域内で管理している電源投入回数とが一致している場合、読み出し対象データが前記第1の外部記憶装置に存在していたならば、前記第1の外部記憶装置からの読み出し処理を実行し、前記第2の外部記憶装置への書き込み処理に伴う更新対象データが前記第1の外部記憶装置に存在していたならば、前記第1の外部記憶装置上の当該更新対象データの無効化を実行する
    ことを特徴とする請求項13記載の情報処理装置。
  15. 前記データ保証手段は、前記メインメモリ上に確保される管理データ領域内の管理データを前記第1の外部記憶装置上に確保される管理データ保存領域内に格納する動作を前記ブロック内データ管理手段に行わせる際、前記第2のフラグによって一部のデータが存在する旨が示されている前記第1の外部記憶装置上のブロックのデータを無効化することを特徴とする請求項14記載の情報処理装置。
  16. 前記起動手段は、読み出し対象データが前記第1の外部記憶装置に存在する場合、前記第1の外部記憶装置上の読み出し対象データに対応する前記第2のフラグがすべてのデータが存在する旨を示しているときにのみ、前記第1の外部記憶装置からの読み出し処理を実行し、
    前記データ保証手段は、前記ドライバの起動時、前記第2のフラグによって一部のデータが存在する旨が示されている前記第1の外部記憶装置上のブロックのデータを無効化する
    ことを特徴とする請求項14記載の情報処理装置。
  17. 前記ドライバは、前記ホストシステムの起動時に読み出しが要求されたデータか否かを示すための第4のフラグを前記キャッシュ領域および前記第1の外部記憶装置の各ブロック毎に設けるブートデータ管理手段を具備し、
    前記起動手段は、読み出し対象データが前記第1の外部記憶装置に存在した場合、前記第1の外部記憶装置上のデータに対応する前記第4のフラグをオンに設定し、読み出し対象データが前記第1の外部記憶装置に存在しない場合、前記第2の外部記憶装置に対して発行したリード要求を前記第1の外部記憶装置上に確保される管理データ保存領域内にトレースデータとして蓄積し、
    前記リード制御手段は、前記ドライバの起動時または前記ホストシステムからの起動完了通知受領時、前記トレースデータとして蓄積されるリード要求の読み出し対象データを前記第2の外部記憶装置から読み出して前記第1の外部記憶装置に蓄積し、前記第1の外部記憶装置上のデータに対応する前記第4のフラグをオンに設定すると共に、前記起動完了通知を前記ホストシステムから受領するまでの間、前記ホストシステムからデータの書き込みが要求された際、読み出し対象データが前記キャッシュ領域または前記第1の外部記憶装置に存在した場合、前記第1の外部記憶装置上のデータに対応する前記第4のフラグをオンに設定し、読み出し対象データが前記第1の外部記憶装置に存在しない場合、前記第2の外部記憶装置から読み出したデータを前記第1の外部記憶装置に蓄積し、前記第1の外部記憶装置上のデータに対応する前記第4のフラグをオンに設定し、
    前記リード制御手段および前記ライト制御手段は、前記第4のフラグがオンに設定された前記第1の外部記憶装置上のデータが前記第1の外部記憶装置上で維持されるように前記第1の外部記憶装置上のデータの入れ替えを制御し、
    前記ブートデータ管理手段は、前記ホストシステムからシャットダウン通知を受けたとき、前記第4のフラグをすべてオフに初期化する
    ことを特徴とする請求項14記載の情報処理装置。
  18. 前記起動手段および前記ライト制御手段は、更新対象データが、前記第4のフラグがオンに設定されて前記第1の外部記憶装置上に存在する場合、前記第1の外部記憶装置上のデータに対応する前記第4のフラグをオフに設定することを特徴とする請求項17記載の情報処理装置。
  19. 前記リード制御手段は、前記第4のフラグがオンに設定されたデータの量が所定量に達した場合、前記起動完了通知の受領前に、前記第4のフラグをオンにする処理を終了することを特徴とする請求項17または18記載の情報処理装置。
  20. 前記フラッシュ制御手段は、キャッシング状態にある未書き込みデータの書き込みを要求するフラッシュ要求を前記ホストシステムから受けた場合に、即応的に、前記キャッシュ領域内および前記第1の外部記憶装置上に存在する未書き込みデータを前記第2の外部記憶装置に書き込むためのライト要求を前記第2の外部記憶装置に対して発行すると共に、前記ライト要求をすべて発行し終えた後、前記第2の外部記憶装置内においてキャッシング状態にある未書き込みデータを書き込ませるためのフラッシュ要求を前記第2の外部記憶装置に対して発行する第1のモードと、何もせずに書き込み完了を前記ホストシステムに通知し、前回のフラッシュ動作時から一定時間が経過した時または前記キャッシュ領域内および前記第1の外部記憶装置上に存在する未書き込みデータのデータ量が所定量に達した時に、前記キャッシュ領域内および前記第1の外部記憶装置上に存在する未書き込みデータを前記第2の外部記憶装置に書き込むためのライト要求を前記第2の外部記憶装置に対して発行すると共に、前記ライト要求をすべて発行し終えた後、前記第2の外部記憶装置内においてキャッシング状態にある未書き込みデータを書き込ませるためのフラッシュ要求を前記第2の外部記憶装置に対して発行する第2のモードとの2つのモードで動作可能であることを特徴とする請求項1記載の情報処理装置。
  21. 前記ライト制御手段は、前記ライトFUA要求を受けた場合に、前記キャッシュ領域内へのデータの格納または前記キャッシュ領域内もしくは前記第1の外部記憶装置上のデータの書き換えを行った後、書き込み対象データの書き込み処理を前記第2の外部記憶装置にライトスルー方式で実行させるためのライトFUA要求を前記第2の外部記憶装置に対して発行することなく、前記ホストシステムに対して書き込み処理の完了を通知するように動作するモードをさらに有することを特徴とする請求項2記載の情報処理装置。
  22. 前記リード制御手段は、
    前記キャッシュ領域内または前記第1の外部記憶装置上に存在する読み出し対象データの一部と前記第2の外部記憶装置上のその他のデータとを組み合わせるためのマージバッファ領域を前記メインメモリ上に確保する手段と、
    前記第2の外部記憶装置から読み出し対象データの組み合わせに十分な最小限のデータを前記マージバッファ領域内に読み出し、前記キャッシュ領域内または前記第1の外部記憶装置上において欠損しているデータを前記マージバッファ領域内から前記キャッシュ領域内に転送する手段と
    を有することを特徴とする請求項1記載の情報処理装置。
  23. 前記フラッシュ制御手段は、前記キャッシュ領域内において未書き込みデータが分散している場合、前記マージバッファ領域を用いて、前記第2の外部記憶装置上のデータと前記前記キャッシュ領域内において分散する未書き込みデータとを組み合わせた後、前記第2の外部記憶装置への格納を実行することを特徴とする請求項1記載の情報処理装置。
  24. 前記ドライバは、
    前記第1の外部記憶装置におけるデータの管理単位であるページサイズを取得し、前記ブロック単位とする前記所定のデータ長を前記ページサイズの倍数とし、かつ、前記第1の外部記憶装置のページ境界を基点に前記第1の外部記憶装置に対する各ブロックの割り付けを行う設定手段
    をさらに有することを特徴とする請求項1記載の情報処理装置。
  25. 前記キャッシュ領域および前記第1の外部記憶装置は、セットアソシアティブ方式によってデータの入れ替えが制御されることを特徴とする請求項1記載の情報処理装置。
JP2010111280A 2010-05-13 2010-05-13 情報処理装置およびドライバ Expired - Fee Related JP4988007B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2010111280A JP4988007B2 (ja) 2010-05-13 2010-05-13 情報処理装置およびドライバ
US13/079,621 US8639881B2 (en) 2010-05-13 2011-04-04 Information processing apparatus and driver
US13/756,230 US20130145094A1 (en) 2010-05-13 2013-01-31 Information Processing Apparatus and Driver
US15/009,093 USRE48127E1 (en) 2010-05-13 2016-01-28 Information processing apparatus and driver
US16/939,224 USRE49818E1 (en) 2010-05-13 2020-07-27 Information processing method in a multi-level hierarchical memory system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010111280A JP4988007B2 (ja) 2010-05-13 2010-05-13 情報処理装置およびドライバ

Publications (2)

Publication Number Publication Date
JP2011238175A true JP2011238175A (ja) 2011-11-24
JP4988007B2 JP4988007B2 (ja) 2012-08-01

Family

ID=44912752

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010111280A Expired - Fee Related JP4988007B2 (ja) 2010-05-13 2010-05-13 情報処理装置およびドライバ

Country Status (2)

Country Link
US (3) US8639881B2 (ja)
JP (1) JP4988007B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015511350A (ja) * 2012-01-26 2015-04-16 メモリー テクノロジーズ リミティド ライアビリティ カンパニー 不揮発性大容量メモリ・システムによるキャッシュ移動を提供するための装置および方法
US9412455B2 (en) 2013-09-11 2016-08-09 Kabushiki Kaisha Toshiba Data write control device and data storage device
US9983800B2 (en) 2009-06-04 2018-05-29 Memory Technologies Llc Apparatus and method to share host system RAM with mass storage memory RAM
US10042586B2 (en) 2012-04-20 2018-08-07 Memory Technologies Llc Managing operational state data in memory module
US10540094B2 (en) 2008-02-28 2020-01-21 Memory Technologies Llc Extended utilization area for a memory device

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8909850B2 (en) * 2011-03-10 2014-12-09 Deere & Company Memory life extension method and apparatus
JP5175953B2 (ja) * 2011-06-02 2013-04-03 株式会社東芝 情報処理装置およびキャッシュ制御方法
US8977799B2 (en) * 2011-09-26 2015-03-10 Lsi Corporation Storage caching/tiering acceleration through staggered asymmetric caching
US9081665B2 (en) * 2012-02-02 2015-07-14 OCZ Storage Solutions Inc. Apparatus, methods and architecture to increase write performance and endurance of non-volatile solid state memory components
US8984267B2 (en) * 2012-09-30 2015-03-17 Apple Inc. Pinning boot data for faster boot
AU2015100549B4 (en) * 2012-09-30 2015-12-17 Apple Inc. Pinning boot data for faster boot
CN104104710B (zh) * 2013-04-15 2017-05-24 同济大学 一种移动云计算环境中基于低能耗的数据缓存方法
US9009355B1 (en) * 2013-12-17 2015-04-14 Emc Corporation Processing requests to a data store during back up
CN103744624B (zh) * 2014-01-10 2017-09-22 浪潮电子信息产业股份有限公司 一种实现存储系统ssd缓存数据选择性升级的系统架构
US9658966B2 (en) * 2014-11-24 2017-05-23 Sandisk Technologies Llc Systems and methods of write cache flushing
US9891846B2 (en) * 2015-03-31 2018-02-13 Dell Products, Lp System and method for preventing solid state drive corruption after dirty shutdown power loss
TWI727203B (zh) * 2018-09-07 2021-05-11 群聯電子股份有限公司 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元
KR102605566B1 (ko) * 2018-11-22 2023-11-24 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
CN113095471B (zh) * 2020-01-09 2024-05-07 北京君正集成电路股份有限公司 一种提高检测模型效率的方法

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63247853A (ja) * 1987-03-30 1988-10-14 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン Dasdキヤツシユ管理方法
JPH04111113A (ja) * 1990-08-31 1992-04-13 Kawasaki Steel Corp ハードディスクエミュレータ
JPH0519981A (ja) * 1991-07-12 1993-01-29 Kawasaki Steel Corp 光デイスク装置のデータ書込み正常終了判定方法
JPH06139027A (ja) * 1992-10-28 1994-05-20 Hitachi Ltd ディスクドライバ,ディスクアレイ装置,データ記憶システム及びディスクアレイシステムのデータバックアップ方法
JPH07225652A (ja) * 1994-02-14 1995-08-22 Hitachi Ltd 集合型ファイル装置の制御方式
JPH09147497A (ja) * 1995-11-24 1997-06-06 Toshiba Corp 情報記憶装置および情報記憶方法
JP2006139478A (ja) * 2004-11-11 2006-06-01 Hitachi Ltd ディスクアレイシステム
JP2007528079A (ja) * 2004-03-08 2007-10-04 サンディスク コーポレイション フラッシュコントローラのキャッシュ構造
JP2008181382A (ja) * 2007-01-25 2008-08-07 Hitachi Ltd ストレージ装置及び負荷分散方法
JP2009163647A (ja) * 2008-01-10 2009-07-23 Hitachi Ltd ディスクアレイ装置
JP2010102369A (ja) * 2008-10-21 2010-05-06 Hitachi Ltd ストレージシステム

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0475639A3 (en) 1990-08-31 1992-06-03 Kawasaki Steel Corporation Hard disk emulator
JPH076093A (ja) 1993-06-15 1995-01-10 Hitachi Ltd 記憶制御装置
JPH07230411A (ja) 1994-02-18 1995-08-29 Fujitsu Ltd フラッシュメモリカード装置
JPH07253929A (ja) 1994-03-14 1995-10-03 Hitachi Ltd 半導体記憶装置
JPH10154101A (ja) 1996-11-26 1998-06-09 Toshiba Corp データ記憶システム及び同システムに適用するキャッシュ制御方法
US6567889B1 (en) * 1997-12-19 2003-05-20 Lsi Logic Corporation Apparatus and method to provide virtual solid state disk in cache memory in a storage controller
US7136883B2 (en) * 2001-09-08 2006-11-14 Siemens Medial Solutions Health Services Corporation System for managing object storage and retrieval in partitioned storage media
US7149846B2 (en) * 2002-04-17 2006-12-12 Lsi Logic Corporation RAID protected external secondary memory
US7076605B1 (en) * 2003-04-25 2006-07-11 Network Appliance, Inc. Method and apparatus for writing data to a storage device
JP4111113B2 (ja) 2003-09-25 2008-07-02 三菱電機株式会社 空気調和機
US7127549B2 (en) * 2004-02-04 2006-10-24 Sandisk Corporation Disk acceleration using first and second storage devices
US20110179219A1 (en) * 2004-04-05 2011-07-21 Super Talent Electronics, Inc. Hybrid storage device
US20110145489A1 (en) * 2004-04-05 2011-06-16 Super Talent Electronics, Inc. Hybrid storage device
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
JP2008046964A (ja) 2006-08-18 2008-02-28 Toshiba Corp 情報記録装置及びその制御方法
US20080172518A1 (en) * 2007-01-11 2008-07-17 Sandisk Il Ltd. Systems For Supporting Readydrive And Readyboost Accelerators In A Single Flash-Memory Storage Device
JP5019981B2 (ja) 2007-07-06 2012-09-05 矢崎総業株式会社 ガスメータ

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63247853A (ja) * 1987-03-30 1988-10-14 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン Dasdキヤツシユ管理方法
JPH04111113A (ja) * 1990-08-31 1992-04-13 Kawasaki Steel Corp ハードディスクエミュレータ
JPH0519981A (ja) * 1991-07-12 1993-01-29 Kawasaki Steel Corp 光デイスク装置のデータ書込み正常終了判定方法
JPH06139027A (ja) * 1992-10-28 1994-05-20 Hitachi Ltd ディスクドライバ,ディスクアレイ装置,データ記憶システム及びディスクアレイシステムのデータバックアップ方法
JPH07225652A (ja) * 1994-02-14 1995-08-22 Hitachi Ltd 集合型ファイル装置の制御方式
JPH09147497A (ja) * 1995-11-24 1997-06-06 Toshiba Corp 情報記憶装置および情報記憶方法
JP2007528079A (ja) * 2004-03-08 2007-10-04 サンディスク コーポレイション フラッシュコントローラのキャッシュ構造
JP2006139478A (ja) * 2004-11-11 2006-06-01 Hitachi Ltd ディスクアレイシステム
JP2008181382A (ja) * 2007-01-25 2008-08-07 Hitachi Ltd ストレージ装置及び負荷分散方法
JP2009163647A (ja) * 2008-01-10 2009-07-23 Hitachi Ltd ディスクアレイ装置
JP2010102369A (ja) * 2008-10-21 2010-05-06 Hitachi Ltd ストレージシステム

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11182079B2 (en) 2008-02-28 2021-11-23 Memory Technologies Llc Extended utilization area for a memory device
US11907538B2 (en) 2008-02-28 2024-02-20 Memory Technologies Llc Extended utilization area for a memory device
US11829601B2 (en) 2008-02-28 2023-11-28 Memory Technologies Llc Extended utilization area for a memory device
US11550476B2 (en) 2008-02-28 2023-01-10 Memory Technologies Llc Extended utilization area for a memory device
US10540094B2 (en) 2008-02-28 2020-01-21 Memory Technologies Llc Extended utilization area for a memory device
US11494080B2 (en) 2008-02-28 2022-11-08 Memory Technologies Llc Extended utilization area for a memory device
US11775173B2 (en) 2009-06-04 2023-10-03 Memory Technologies Llc Apparatus and method to share host system RAM with mass storage memory RAM
US10983697B2 (en) 2009-06-04 2021-04-20 Memory Technologies Llc Apparatus and method to share host system RAM with mass storage memory RAM
US11733869B2 (en) 2009-06-04 2023-08-22 Memory Technologies Llc Apparatus and method to share host system RAM with mass storage memory RAM
US9983800B2 (en) 2009-06-04 2018-05-29 Memory Technologies Llc Apparatus and method to share host system RAM with mass storage memory RAM
US10877665B2 (en) 2012-01-26 2020-12-29 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
JP2015511350A (ja) * 2012-01-26 2015-04-16 メモリー テクノロジーズ リミティド ライアビリティ カンパニー 不揮発性大容量メモリ・システムによるキャッシュ移動を提供するための装置および方法
US11797180B2 (en) 2012-01-26 2023-10-24 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US11226771B2 (en) 2012-04-20 2022-01-18 Memory Technologies Llc Managing operational state data in memory module
US10042586B2 (en) 2012-04-20 2018-08-07 Memory Technologies Llc Managing operational state data in memory module
US11782647B2 (en) 2012-04-20 2023-10-10 Memory Technologies Llc Managing operational state data in memory module
US9412455B2 (en) 2013-09-11 2016-08-09 Kabushiki Kaisha Toshiba Data write control device and data storage device

Also Published As

Publication number Publication date
US20130145094A1 (en) 2013-06-06
JP4988007B2 (ja) 2012-08-01
US8639881B2 (en) 2014-01-28
USRE48127E1 (en) 2020-07-28
US20110283066A1 (en) 2011-11-17

Similar Documents

Publication Publication Date Title
JP4988008B2 (ja) 情報処理装置およびドライバ
JP4988007B2 (ja) 情報処理装置およびドライバ
TWI438628B (zh) 資料儲存系統及資料儲存媒介
JP5117608B1 (ja) 情報処理装置、ハイブリッド記憶装置、およびキャッシュ方法
US20110179219A1 (en) Hybrid storage device
JP5492156B2 (ja) 情報処理装置およびキャッシュ方法
JP2011128998A (ja) 半導体記憶装置
US8112589B2 (en) System for caching data from a main memory with a plurality of cache states
USRE49418E1 (en) Information processing apparatus and cache control method
JP2005301591A (ja) 不揮発性メモリを備えた装置及びメモリコントロ−ラ
JP6746747B2 (ja) 記憶システム
US8433847B2 (en) Memory drive that can be operated like optical disk drive and method for virtualizing memory drive as optical disk drive
JP5290446B2 (ja) ネットワークブートシステム
JP2006099802A (ja) 記憶制御装置およびキャッシュメモリの制御方法
US20110167214A1 (en) Method And Apparatus To Manage Non-Volatile Disk Cache
JP5025670B2 (ja) 情報処理装置およびデータ記憶装置
JP7132491B2 (ja) メモリ制御装置、メモリ制御プログラムおよびメモリ制御方法
JP2012078939A (ja) 情報処理装置およびキャッシュ制御方法
JP2010191672A (ja) データ記憶システム
USRE49818E1 (en) Information processing method in a multi-level hierarchical memory system
JP2010176305A (ja) 情報処理装置およびデータ記憶装置
JP4724253B2 (ja) データ記憶システムおよびキャッシュデータの一貫性保証方法
JP2010170268A (ja) ストレージシステムの制御方法、ストレージ制御装置及びプログラム
JP2010152517A (ja) 不揮発性半導体メモリドライブ装置および不揮発性半導体メモリドライブ装置のアドレス管理方法
JP2018005371A (ja) 情報処理システム、情報処理方法、記憶制御装置、記憶制御方法および記憶制御プログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110902

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120110

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120307

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120425

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

Free format text: PAYMENT UNTIL: 20150511

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees