JP5492156B2 - 情報処理装置およびキャッシュ方法 - Google Patents
情報処理装置およびキャッシュ方法 Download PDFInfo
- Publication number
- JP5492156B2 JP5492156B2 JP2011171745A JP2011171745A JP5492156B2 JP 5492156 B2 JP5492156 B2 JP 5492156B2 JP 2011171745 A JP2011171745 A JP 2011171745A JP 2011171745 A JP2011171745 A JP 2011171745A JP 5492156 B2 JP5492156 B2 JP 5492156B2
- Authority
- JP
- Japan
- Prior art keywords
- cache
- data
- storage device
- controller
- command
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/30—Providing cache or TLB in specific location of a processing system
- G06F2212/304—In main memory subsystem
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/313—In storage device
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
本発明の実施形態は、一つのコントローラに第1の記憶装置および第2の記憶装置が接続され、第1の記憶装置を第2の記憶装置のキャッシュとして用いる情報処理装置、およびキャッシュ方法に関する。
SSD(Solid State Drive)をハードディスクドライブのキャッシュとして利用するS−ATAコントローラを有するチップセットが製品化されている。
USBコントローラに接続されたSSD(USB−SSD)をUSBコントローラに接続されたハードディスクドライブ(USB−HDD)のリードキャッシュとして用いることが提案されている。
USB−SSD(第1の記憶装置)をUSB−HDD(第2の記憶装置)のリードキャッシュとして用いた場合、リードキャッシュを使用しない場合に比べて性能が低下する場合があった。そのため、性能の低下を抑制することが望まれている。
本発明の目的は、コントローラに接続された第1の記憶装置をコントローラに接続された第2の記憶装置のリードキャッシュとして用いた場合に性能の低下を抑制することが可能な情報処理装置およびキャッシュ方法を提供することである。
実施形態によれば、情報処理装置は、コントローラと、キャッシュ手段とを具備する。コントローラは、第1の記憶装置および第2の記憶装置にコマンドを発行することによってデータの転送を行う。キャッシュ手段は、前記第1の記憶装置を前記第2の記憶装置のリードキャッシュとして用いる。キャッシュ手段は、前記コントローラが発行し、前記第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、HDD(Hard disk drive)18、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の配下で動作する、キャッシュドライバ120および各種アプリケーションプログラム130等が存在する。キャッシュドライバ120は、後述するSSD202をキャッシュデバイスとして利用するプログラムである。
また、CPU11は、BIOS−ROM17に格納されたBIOSも実行する。BIOSは、ハードウェア制御のためのプログラムである。以下では、BIOS−ROM17の格納物であるBIOS自体についてもBIOS17と表記することがある。
MCH12は、CPU11とICH14との間を接続するブリッジとして動作すると共に、メインメモリ13をアクセス制御するメモリコントローラとして動作する。また、MCH12は、GPU15との通信を実行する機能を有している。
GPU15は、本情報処理装置に組み込まれ、または、外部接続される表示装置を制御する表示コントローラである。GPU15は、VRAM15Aを有し、また、各種プログラムが表示しようとする画像をCPU11に代わって描画するアクセラレータを搭載している。
ICH14は、HDD18およびODD20を制御するためのATA(AT Attachment)コントローラを内蔵する。ICH14は、PCI(Peripheral component interconnect)バスに接続された各種周辺機器21の制御も行う。また、ICH14は、サウンドコントローラ16との通信機能も有している。
サウンドコントローラ16は音源デバイスであり、各種プログラムが再生対象とするオーディオデータを、本情報処理装置に組み込まれた、または、外部接続されるスピーカ等に出力する。
EEPROM22は、例えば本情報処理装置の個体情報や環境設定情報などを格納するためのメモリデバイスである。そして、EC/KBC23は、電力管理を行うためのエンベデッドコントローラと、キーボードやポインティングデバイス等の操作によるデータ入力を制御するためのキーボードコントローラとが集積された1チップMPU(Micro processing unit)である。
キャッシュドライバ120は、SSD202の少なくとも一部の領域(NVC(Non-Volatile Cache))をHDD201のキャッシュメモリとして用いる。
次に、キャッシュドライバ120の機能について図2を参照して説明する。図2は、図1に示す情報処理装置の主要部を示すブロック図である。
メインメモリ13内には、ユーザバッファ領域301、L1キャッシュ領域302、およびマージ用バッファ領域303が確保される。また、キャッシュドライバ120によって、L1管理情報304、NVC管理情報305、コマンド発行数確認用データ306がメモリ13内に作成される。
メインメモリ13内には、ユーザバッファ領域301、L1キャッシュ領域302、およびマージ用バッファ領域303が確保される。また、キャッシュドライバ120によって、L1管理情報304、NVC管理情報305、コマンド発行数確認用データ306がメモリ13内に作成される。
L1キャッシュ領域302は、データをNVC311にコピーするときに使用するバッファである。L1キャッシュ領域302は、フィルタドライバがロードされるときにメインメモリに確保される。なお、L1キャッシュ領域302の容量は16MB程度である。
また、マージ用バッファ領域303は、キャッシュの方式がライトバック(Write Back)方式の場合に使用される。マージ用バッファ領域303は、リードアクセス時に、L1キャッシュ領域302に一部のデータが格納されている場合に、HDD201から読み出されたL1キャッシュ領域302に格納されていないデータを一時的に格納するために用いられる。マージ用バッファ領域303は、L1キャッシュ領域302と同じ容量である。L1管理情報304は、L1キャッシュ領域302に格納されているキャッシュデータを管理するための情報である。NVC管理情報305は、NVC311に格納されているキャッシュデータを管理するための情報である。NVC管理情報305内には、複数のエントリが設定され、各エントリ内にはキャッシュデータの格納場所、キャッシュデータに対応するHDD201の格納場所、キャッシュデータとHDD201内のデータとが一致するかを示すデータ等が格納されている。コマンド発行数確認用データ306の値は、SSD202に対して発行中のコマンドを確認するために設けられている。SSD202に対してコマンド(ライトコマンド、リードコマンド)が発行された時にコマンド発行数確認用データ306の値がインクリメントされ、発行されたコマンドの完了通知が返ってきた時にコマンド発行数確認用データ306の値がデクリメントされる。
情報処理装置10はオペレーティングシステム(OS)110が制御し、オペレーティングシステム110からHDD201へのアクセスはすべてキャッシュドライバ120を介して行われる。キャッシュドライバ120はUSBコントローラ14Aを直接的または間接的に制御する。USBコントローラ14Aを介してHDD201が接続されている。また、キャッシュドライバ120は、メモリコントローラ12Aを介して、メインメモリ13へのデータのアクセスを行う。
キャッシュドライバ120はシステムの起動時にメインメモリ13にロードされる。キャッシュドライバ120は、キャッシュ管理情報301を格納するための領域をメインメモリ13内に確保して初期化し、キャッシュには何も記録されていない状態にした後、キャッシュ制御処理を開始する。キャッシュ管理情報301は、キャッシュディレクトリなどのキャッシュデータを管理するためのデータを有する。キャッシュドライバ120の動作時、キャッシュドライバ120は、メインメモリ13内のキャッシュ管理情報301にライトキャッシュおよびリードキャッシュの学習データを管理するためのデータを記録する。シャットダウン時、キャッシュドライバ120は、メインメモリ13内のキャッシュ管理情報301を破棄する。
なお、キャッシュドライバ120が動作を開始するまでは、BIOSプログラムがHDD201へのアクセスを制御する。USBコントローラ14Aは、ホストからライトアクセス要求またはリードアクセス要求があった場合、HDD201にアクセスする。
SSD202の一部または全部の領域がHDD201のキャッシュとして使用される。オペレーティングシステム110は、キャッシュデータの格納領域として使用されるSSD202のキャッシュに直接アクセスすることができない。
本情報処理装置は、HDD201よりアクセス速度が速いSSD(Solid State Drive)202をHDD201のキャッシュとして利用することで、HDD201に対するアクセスの高速化を図る。SSD202は、フラッシュメモリ(不揮発性メモリ)を有する。
次に図3を参照して、NVC311をキャッシュとして用いる場合の動作の概要を説明する。
リードアクセスデータがL1キャッシュおよびNVC311内のキャッシュデータにヒットしない場合、キャッシュドライバ120は、HDD201からデータを読み出し、読み出したデータをL1キャッシュ領域302に書き込む(ステップ408)。そして、キャッシュドライバ120は、L1キャッシュ領域302に書き込まれたデータをユーザバッファ領域301に書き込む(ステップ404)。また、L1キャッシュ領域302へのアクセスがビジーの場合、キャッシュドライバ120は、HDD201からデータを読み出し、読み出したデータをユーザバッファ領域301に書き込む(ステップ412)。
リードアクセスデータがL1キャッシュおよびNVC311内のキャッシュデータにヒットしない場合、キャッシュドライバ120は、HDD201からデータを読み出し、読み出したデータをL1キャッシュ領域302に書き込む(ステップ408)。そして、キャッシュドライバ120は、L1キャッシュ領域302に書き込まれたデータをユーザバッファ領域301に書き込む(ステップ404)。また、L1キャッシュ領域302へのアクセスがビジーの場合、キャッシュドライバ120は、HDD201からデータを読み出し、読み出したデータをユーザバッファ領域301に書き込む(ステップ412)。
リードアクセスデータの全てがL1キャッシュ領域302内のキャッシュデータにヒットした場合、キャッシュドライバ120は、L1キャッシュ領域302からデータを読み出して、ユーザバッファ領域301に書き込む(ステップ404)。
ライトアクセスデータの一部がL1キャッシュ領域302内のキャッシュデータにヒットした場合、キャッシュドライバ120は、ヒットしなかったデータをHDD201から読み出し、読み出されたデータをマージ用バッファ領域303に書き込む(ステップ410)。そして、キャッシュドライバ120は、L1キャッシュ領域302内で、L1キャッシュ領域302内のヒットしたデータとマージ用バッファ領域303に書き込まれたデータとをマージする(ステップ409)。キャッシュドライバ120は、マージされたデータをユーザバッファ領域301に格納する(ステップ404)。キャッシュドライバ120は、マージされたデータをNVC311に格納する(ステップ405)。
リードアクセスデータがL1キャッシュ領域302内のキャッシュデータにミスし、リードアクセスデータのすべてがNVC311内のキャッシュデータにヒットした場合、キャッシュドライバ120は、NVC311からデータを読み出し、データをユーザバッファ領域301に書き込む(ステップ402)。
リードアクセスデータがL1キャッシュ領域302内のキャッシュデータにミスし、リードアクセスデータの一部がNVC311内のキャッシュデータにヒットした場合、ヒットしなかったデータをHDD201から読み出し、読み出されたデータをマージ用バッファ領域303に書き込む(ステップ410)。そして、キャッシュドライバ120は、NVC311からヒットしたデータを読み出す(ステップ406)。キャッシュドライバ120は、L1キャッシュ領域302内で、NVC311から読みだされたデータとマージ用バッファ領域303内のデータとをマージする(ステップ409)。キャッシュドライバ120は、マージしたデータをユーザバッファ領域301に転送する(ステップ404)。また、キャッシュドライバ120は、マージしたデータをNVC311に格納する(ステップ405)。
ライトアクセスデータがL1キャッシュ領域302およびNVC311内のキャッシュデータにヒットしない場合、キャッシュドライバ120は、ライトアクセスデータをL1キャッシュ領域302に一端書き込んだ後に(ステップ403)、L1キャッシュ領域302内のライトアクセスデータをNVC311に書き込む(ステップ405)。なお、L1キャッシュ領域302へのアクセスがビジーの場合、キャッシュドライバ120は、ライトアクセスデータを直接HDD201に書き込む。
ライトアクセスデータがL1キャッシュ領域302内のキャッシュデータにヒットした場合、キャッシュドライバ120は、ライトアクセスデータをL1キャッシュ領域302に書き込み(ステップ403)、L1キャッシュ領域302内のライトアクセスデータをNVC311に格納する(ステップ405)。
ライトアクセスデータがNVC311内のキャッシュデータにヒットした場合、ライトアクセスデータをNVC311に書き込む(ステップ401)。
L1キャッシュ領域302に書き込まれたキャッシュデータがハードディスクドライブに書き込まれていない場合、キャッシュドライバ120は、L1キャッシュ領域302に書き込まれているデータをHDD201に書き込む(st407)。
L1キャッシュ領域302に書き込まれたキャッシュデータがハードディスクドライブに書き込まれていない場合、キャッシュドライバ120は、L1キャッシュ領域302に書き込まれているデータをHDD201に書き込む(st407)。
NVC311に書き込まれたキャッシュデータがハードディスクドライブに書き込まれていない場合、キャッシュドライバ120は、NVC311からデータを読み出し、読み出したデータをL1キャッシュ領域302に書き込む(ステップ406)。キャッシュドライバ120は、L1キャッシュ領域302に書き込まれたデータをHDD201に書き込む(ステップ407)。
キャッシュドライバ120は、ステップ401〜ステップ412の基本データ転送機能の組み合わせで、データの転送を行う。
キャッシュドライバ120は、ステップ401〜ステップ412の基本データ転送機能の組み合わせで、データの転送を行う。
(ライトスルーキャッシュ)
リードキャッシュはライトスルーキャッシュとも呼ばれている。一般的なリードキャッシュの動作について図4を参照して説明する。
オペレーティングシステム110からHDD201へのアクセスコマンドが発行された場合、キャッシュドライバは、コマンドがリードコマンドであるかを判定する(ステップ501)。リードコマンドであると判定した場合(ステップ501のYes)、キャッシュドライバは、NVC管理情報305を参照することによって、リードコマンドに対応するデータがNVC311内に存在するかを判定する(ステップ502)。データが存在すると判定した場合(ステップ502のYes)、NVC311からリードコマンドに対応するデータを読み出す(ステップ503)。データが存在しないと判定した場合、キャッシュドライバは、HDD201からリードコマンドに対応するデータを読み出す(ステップ504)。そして、キャッシュドライバは、HDD201から読み出されたデータをNVC311に書き込み、データを学習する(ステップ505)。
リードキャッシュはライトスルーキャッシュとも呼ばれている。一般的なリードキャッシュの動作について図4を参照して説明する。
オペレーティングシステム110からHDD201へのアクセスコマンドが発行された場合、キャッシュドライバは、コマンドがリードコマンドであるかを判定する(ステップ501)。リードコマンドであると判定した場合(ステップ501のYes)、キャッシュドライバは、NVC管理情報305を参照することによって、リードコマンドに対応するデータがNVC311内に存在するかを判定する(ステップ502)。データが存在すると判定した場合(ステップ502のYes)、NVC311からリードコマンドに対応するデータを読み出す(ステップ503)。データが存在しないと判定した場合、キャッシュドライバは、HDD201からリードコマンドに対応するデータを読み出す(ステップ504)。そして、キャッシュドライバは、HDD201から読み出されたデータをNVC311に書き込み、データを学習する(ステップ505)。
ステップ501において、リードコマンドではない(つまり、ライトコマンドである)と判定した場合(ステップ501のNo)、ライトコマンドに対応するアドレスのデータがNVC311内に存在するかを判定する(ステップ506)。データがNVC311内に存在すると判定した場合(ステップ506のYes)、NVC311内に存在するデータを書き換えると共に、ライトコマンドに対応するデータをHDD201に書き込む(ステップ507)。データがNVC311内に存在しないと判定した場合(ステップ506のNo)、ライトコマンドに対応するデータをHDD201に書き込む(ステップ508)。
以上説明したのが、シーケンシャルリードを検出した後のリードアクセスを学習する場合のキャッシュドライバの動作である。
以上説明したのが、シーケンシャルリードを検出した後のリードアクセスを学習する場合のキャッシュドライバの動作である。
実際のキャッシュ制御は、図4を参照して説明したよな直線的なフローではなく、記憶装置にコマンドを発行したら一旦制御を返し、記憶装置へのコマンドが終了したら続きの処理を行うように実装されるのが一般的である。キャッシュデバイス(SSD)へのコマンドは以下のように分類される。
(A)リードコマンドがキャッシュにヒットし、キャッシュからリード
(B)ライトコマンドがキャッシュにヒットし、キャッシュにライト
(C)リードコマンドがキャッシュにミスし、HDDからリードしたデータを学習するために、キャッシュにライト
ここで、(A)および(B)はホストからのコマンドに対応して発行されるコマンドでる。これらのコマンドが完了するまではホストの実行を継続できないため、最優先で処理すべきコマンドである。これに対し(C)は、ホストからのリードコマンドはHDDからリードした時点で終了を返しているため、ホストの実行は継続している。すなわち、(C)は優先度の低い処理である。キャッシュデバイスへのコマンドを下位モジュール(下位ドライバやデバイス)に発行するときは、(A)、(B)は高優先度で発行し、(C)は低優先度で発行するのが一般的である。
(B)ライトコマンドがキャッシュにヒットし、キャッシュにライト
(C)リードコマンドがキャッシュにミスし、HDDからリードしたデータを学習するために、キャッシュにライト
ここで、(A)および(B)はホストからのコマンドに対応して発行されるコマンドでる。これらのコマンドが完了するまではホストの実行を継続できないため、最優先で処理すべきコマンドである。これに対し(C)は、ホストからのリードコマンドはHDDからリードした時点で終了を返しているため、ホストの実行は継続している。すなわち、(C)は優先度の低い処理である。キャッシュデバイスへのコマンドを下位モジュール(下位ドライバやデバイス)に発行するときは、(A)、(B)は高優先度で発行し、(C)は低優先度で発行するのが一般的である。
しかしながら、USB規格のような下位モジュールが優先度制御をサポートしていない場合、すべてのコマンドが等しい優先度で処理される。ホスト側は同時にいくつものプロセスを実行しており、記憶装置に対しても同時に多数のコマンドが発行されるのが一般的である。ここで、多くのリードコマンドがキャッシュにミスし、大量の(C)を発行中に(A)または(B)を発行した場合、たまっている(C)の実行が完了するまでは(A)または(B)が実行されないことになり、システムの処理性能が低下してしまう。
本実施形態の場合、キャッシュドライバ120は、SSD202に対して1より大きい数のコマンドが発行されている場合、キャッシュデータをNVC311に書き込むためのライトコマンドをUSBコントローラ14Aに発行しないことで、システムの処理性能の低下を抑制する。
処理性能が低下する例について図5を参照して説明する。
オペレーティングシステム110は、キャッシュドライバにHDD201へのリードコマンドを発行する(ステップ601)。キャッシュドライバは、USBコントローラ14AにHDD201へのリードコマンドを発行する(ステップ602)。USBコントローラ14Aは、HDD201に対してリードコマンドを発行する(ステップ603)。HDD201は、データの転送が完了したら、USBコントローラ14Aに完了通知を発行する(ステップ604)。USBコントローラ14Aは、キャッシュドライバに完了通知を発行する(ステップ605)。キャッシュドライバはオペレーティングシステム110に完了通知を発行する(ステップ606)。キャッシュドライバは、読み出されたデータを学習するために、読み出されたデータをキャッシュデータとしてSSD202に書き込むためのライトコマンドをUSBコントローラ14Aに発行する(ステップ607)。オペレーティングシステム110は、HDD201にデータを書き込むためのライトコマンドをキャッシュドライバに発行する(ステップ608)。USBコントローラ14Aは、HDD201から読み出されたデータをキャッシュデータとしてSSD202に書き込むためのライトコマンドをSSD202に発行する(ステップ609)。
オペレーティングシステム110は、キャッシュドライバにHDD201へのリードコマンドを発行する(ステップ601)。キャッシュドライバは、USBコントローラ14AにHDD201へのリードコマンドを発行する(ステップ602)。USBコントローラ14Aは、HDD201に対してリードコマンドを発行する(ステップ603)。HDD201は、データの転送が完了したら、USBコントローラ14Aに完了通知を発行する(ステップ604)。USBコントローラ14Aは、キャッシュドライバに完了通知を発行する(ステップ605)。キャッシュドライバはオペレーティングシステム110に完了通知を発行する(ステップ606)。キャッシュドライバは、読み出されたデータを学習するために、読み出されたデータをキャッシュデータとしてSSD202に書き込むためのライトコマンドをUSBコントローラ14Aに発行する(ステップ607)。オペレーティングシステム110は、HDD201にデータを書き込むためのライトコマンドをキャッシュドライバに発行する(ステップ608)。USBコントローラ14Aは、HDD201から読み出されたデータをキャッシュデータとしてSSD202に書き込むためのライトコマンドをSSD202に発行する(ステップ609)。
キャッシュドライバは、USBコントローラ14AにHDD201へのライトコマンドを発行する(ステップ610)。USBコントローラ14Aは、ステップ608のライトコマンドが発行中であるため、リードコマンドをHDD201に発行することができない。
ステップ608のライトコマンドに応じた書き込みが終了すると、SSD202は、USBコントローラ14Aに完了通知を発行する(ステップ611)。USBコントローラ14Aは、キャッシュドライバに完了通知を発行する(ステップ612)。USBコントローラ14Aの発行中のコマンドが0になったので、USBコントローラ14Aは、ステップ610のライトコマンドに応じたライトコマンドをHDD201に発行する(ステップ613)。ライトコマンドに応じたデータの書き込みが終了すると、HDD201は、USBコントローラに完了通知を発行する(ステップ614)。USBコントローラ14Aは、完了通知をキャッシュドライバに発行する(ステップ615)。キャッシュドライバは、完了通知をオペレーティングシステム110に発行する。
USBコントローラ14Aは、ステップ610のHDD201へのライトコマンドを受信しても、ステップ608のライトコマンドが発行中であるため、ステップ610のライトコマンドに応じたライトコマンドをHDD201に発行することができない。そのため、処理性能が低下する。
本実施形態は、優先度制御をサポートしていないUSBの記憶装置の場合に、(C)の処理のために(A)または(B)の処理が待たされないようにして、システムの性能の低下を抑制するキャッシュドライバ120を提供する。
次に、図6のフローチャートを参照して、キャッシュドライバ120による処理の手順を説明する。
オペレーティングシステム110からHDD201へのアクセスコマンドが発行された場合、キャッシュドライバ120は、コマンドがリードコマンドであるかを判定する(ステップ701)。リードコマンドであると判定した場合(ステップ701のYes)、キャッシュドライバ120は、NVC管理情報305を参照することによって、リードコマンドに対応するデータがNVC311内に存在するかを判定する(ステップ702)。データが存在すると判定した場合(ステップ702のYes)、NVC311からリードコマンドに対応するデータを読み出す(ステップ703)。データが存在しないと判定した場合、キャッシュドライバ120は、HDD201からリードコマンドに対応するデータを読み出す(ステップ704)。
オペレーティングシステム110からHDD201へのアクセスコマンドが発行された場合、キャッシュドライバ120は、コマンドがリードコマンドであるかを判定する(ステップ701)。リードコマンドであると判定した場合(ステップ701のYes)、キャッシュドライバ120は、NVC管理情報305を参照することによって、リードコマンドに対応するデータがNVC311内に存在するかを判定する(ステップ702)。データが存在すると判定した場合(ステップ702のYes)、NVC311からリードコマンドに対応するデータを読み出す(ステップ703)。データが存在しないと判定した場合、キャッシュドライバ120は、HDD201からリードコマンドに対応するデータを読み出す(ステップ704)。
キャッシュドライバ120は、コマンド発行数確認用データ306の値を参照することによってNVC311(SSD202)へのコマンド発行数が設定数を超えているかを判定する(ステップ705)。設定数を超えていないと判定した場合(ステップ705のNo)、キャッシュドライバ120は、HDD201から読み出されたデータをNVC311に書き込み、データを学習する(ステップ706)。設定数を超えていると判定した場合(ステップ705のYes)、キャッシュドライバ120は、HDD201から読み出されたデータを学習しない。
ステップ701において、リードコマンドではない(つまり、ライトコマンドである)と判定した場合(ステップ701のNo)、ライトコマンドに対応するアドレスのデータがNVC311内に存在するかを判定する(ステップ707)。データがNVC311内に存在すると判定した場合(ステップ707のYes)、NVC311内に存在するデータを書き換えると共に、ライトコマンドに対応するデータをHDD201に書き込む(ステップ708)。データがNVC311内に存在しないと判定した場合(ステップ707のNo)、ライトコマンドに対応するデータをHDD201に書き込む(ステップ709)。
SSD202に発行されたコマンドに対応する処理が終了していない場合に、データを学習しないことで、性能の低下を抑制することが可能になる。
SSD202に発行されたコマンドに対応する処理が終了していない場合に、データを学習しないことで、性能の低下を抑制することが可能になる。
なお、本実施形態のSSD202をHDD201のキャッシュとして用いる処理はコンピュータプログラムによって実現されているので、このコンピュータプログラムをコンピュータ読み取り可能な記憶媒体を通じて通常のコンピュータにインストールするだけで、本実施形態と同様の効果を容易に実現することができる。また、このコンピュータプログラムは、パーソナルコンピュータのみならず、プロセッサを内蔵した電子機器上で実行することができる。
(変形例)
なお、上記実施形態では、HDD201とSSD202とが別の例を示したが、図7に示すように、HDD201とSSD202とが一つの筐体内に設けられたハイブリッドハードディスクドライブ800にも上記実施形態のキャッシュ制御を用いることが可能である。
なお、上記実施形態では、HDD201とSSD202とが別の例を示したが、図7に示すように、HDD201とSSD202とが一つの筐体内に設けられたハイブリッドハードディスクドライブ800にも上記実施形態のキャッシュ制御を用いることが可能である。
なお、キャッシュドライバ120は、SSD202へのアクセスコマンドの発行数が設定数より大きい場合、発行数が設定数以下になるまでコントローラへのアクセスコマンドの発行を保留しておき、保留していたアクセスコマンドを発行してもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
10…情報処理装置、11…CPU、14A…USBコントローラ、110…オペレーティングシステム、120…キャッシュドライバ、201…HDD、202…SSD、301…ユーザバッファ領域、302…キャッシュ領域、303…マージ用バッファ領域、304…管理情報、305…NVC管理情報、306…コマンド発行数確認用データ、311…NVC。
Claims (10)
- 第1の記憶装置および第2の記憶装置にコマンドを発行することによってデータの転送を行うコントローラと、
前記第1の記憶装置を前記第2の記憶装置のリードキャッシュとして用いるキャッシュ手段であって、前記コントローラが発行し、前記第1の記憶装置から完了通知が返ってきていないコマンド数が設定数より大きい数の場合、キャッシュデータを前記第1の記憶装置に書き込むためのライトコマンドを、前記コマンド数が前記設定数以下になるまで前記コントローラへの発行を保留し、前記コマンド数が前記設定数以下になった場合、前記保留されている前記ライトコマンドを前記コントローラに発行する、キャッシュ手段と、
を具備する情報処理装置。 - 前記コントローラは、USB(Universal Serial Bus)規格に対応している、
請求項1に記載の情報処理装置。 - 前記第1の記憶装置は、フラッシュメモリを有する、
請求項1に記載の情報処理装置。 - 前記第2の記憶装置は、ハードディスクドライブを有する、
請求項1に記載の情報処理装置。 - 前記第1の記憶装置は、前記コントローラから発行される複数のコマンドを等しい優先度で処理する、
請求項1に記載の情報処理装置。 - コントローラに接続された第1の記憶装置を前記コントローラに接続された第2の記憶装置のリードキャッシュとして用いるキャッシュ方法であって、
前記コントローラが発行し、前記第1の記憶装置から完了通知が返ってきていないコマンド数が設定数より大きい数の場合、キャッシュデータを前記第1の記憶装置に書き込むためのライトコマンドを、発行しているコマンド数が前記設定数以下になるまで前記コントローラへの発行を保留し、
前記コマンド数が前記設定数以下になった場合、前記保留されている前記ライトコマンドを前記コントローラに発行する
キャッシュ方法。 - 前記コントローラは、USB(Universal Serial Bus)規格に対応している、
請求項6に記載のキャッシュ方法。 - 前記第1の記憶装置は、フラッシュメモリを有する、
請求項6に記載のキャッシュ方法。 - 前記第2の記憶装置は、ハードディスクドライブを有する、
請求項6に記載のキャッシュ方法。 - 前記第1の記憶装置は、前記コントローラから発行される複数のコマンドを等しい優先度で処理する、
請求項6に記載のキャッシュ方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011171745A JP5492156B2 (ja) | 2011-08-05 | 2011-08-05 | 情報処理装置およびキャッシュ方法 |
US13/418,006 US8762628B2 (en) | 2011-08-05 | 2012-03-12 | Information processing apparatus and cache method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011171745A JP5492156B2 (ja) | 2011-08-05 | 2011-08-05 | 情報処理装置およびキャッシュ方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013065060A JP2013065060A (ja) | 2013-04-11 |
JP5492156B2 true JP5492156B2 (ja) | 2014-05-14 |
Family
ID=47627708
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011171745A Expired - Fee Related JP5492156B2 (ja) | 2011-08-05 | 2011-08-05 | 情報処理装置およびキャッシュ方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8762628B2 (ja) |
JP (1) | JP5492156B2 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6119533B2 (ja) * | 2013-09-27 | 2017-04-26 | 富士通株式会社 | ストレージ装置,ステージング制御方法及びステージング制御プログラム |
CN104951239B (zh) * | 2014-03-26 | 2018-04-10 | 国际商业机器公司 | 高速缓存驱动器、主机总线适配器及其使用的方法 |
CN105404468B (zh) * | 2014-11-17 | 2020-05-26 | 晶天电子(深圳)有限公司 | 绿能与非固态硬盘应用及其驱动器 |
JP2016207096A (ja) * | 2015-04-27 | 2016-12-08 | 富士通株式会社 | 階層ストレージ装置、階層ストレージシステム、階層ストレージ方法、および階層ストレージプログラム |
US10042648B2 (en) * | 2015-09-10 | 2018-08-07 | Toshiba Memory Corporation | Memory system, electric device, and information processing device |
KR102259868B1 (ko) * | 2015-12-17 | 2021-06-01 | 에스케이텔레콤 주식회사 | 메모리제어장치 및 메모리제어장치의 동작 방법 |
CN105892947B (zh) * | 2016-03-31 | 2019-01-22 | 华中科技大学 | 一种节能存储系统的ssd与hdd混合缓存管理方法及系统 |
US10437504B1 (en) * | 2017-04-05 | 2019-10-08 | EMC IP Holding Company LLC | Multi-tier storage system with data mover modules providing distributed multi-part data movement |
US11010326B2 (en) * | 2018-09-20 | 2021-05-18 | Western Digital Technologies, Inc. | Universal serial bus voltage reducing adaptor |
JP2020091776A (ja) | 2018-12-07 | 2020-06-11 | 富士ゼロックス株式会社 | 情報処理装置 |
CN111324282A (zh) * | 2018-12-14 | 2020-06-23 | 北京兆易创新科技股份有限公司 | 一种存储器 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62198946A (ja) * | 1986-02-27 | 1987-09-02 | Toshiba Corp | デイスクキヤツシユシステム |
JPS6439853A (en) * | 1987-08-05 | 1989-02-10 | Sumitomo Electric Industries | Data transmission equipment |
US5253351A (en) * | 1988-08-11 | 1993-10-12 | Hitachi, Ltd. | Memory controller with a cache memory and control method of cache memory including steps of determining memory access threshold values |
JPH0383530A (ja) | 1989-08-25 | 1991-04-09 | Nippon Homeosu Kk | 養豚方法 |
JP3083530B2 (ja) | 1989-09-11 | 2000-09-04 | 株式会社日立製作所 | キャッシュメモリのデータ管理方法およびキャッシュ制御装置 |
JP2834298B2 (ja) | 1990-09-19 | 1998-12-09 | 株式会社日立製作所 | データ処理装置及びデータ処理方法 |
JPH10240371A (ja) | 1997-02-27 | 1998-09-11 | Mitsubishi Electric Corp | ディジタル信号処理プロセッサのクロック速度制御装置 |
JP2001217996A (ja) * | 2000-02-04 | 2001-08-10 | Pfu Ltd | スキャナ装置およびスタートストップ制御方法 |
JP4508608B2 (ja) | 2003-11-13 | 2010-07-21 | 株式会社日立製作所 | 統合キャッシュを備えた記憶装置アダプタ |
JP4366298B2 (ja) | 2004-12-02 | 2009-11-18 | 富士通株式会社 | 記憶装置、その制御方法及びプログラム |
JP2005166073A (ja) * | 2005-02-21 | 2005-06-23 | Hitachi Ltd | 記憶装置の制御装置および制御方法 |
JP4681374B2 (ja) * | 2005-07-07 | 2011-05-11 | 株式会社日立製作所 | ストレージ管理システム |
KR100744122B1 (ko) * | 2006-01-12 | 2007-08-01 | 삼성전자주식회사 | 하이브리드 하드디스크 드라이브의 제어 방법, 이에 적합한기록 매체 그리고 이에 적합한 장치 |
US7962692B2 (en) * | 2006-10-05 | 2011-06-14 | Computer Associates Think, Inc. | Method and system for managing performance data |
JP4519151B2 (ja) * | 2007-03-20 | 2010-08-04 | 富士通株式会社 | キャッシュ制御回路 |
JP2008276646A (ja) * | 2007-05-02 | 2008-11-13 | Hitachi Ltd | ストレージ装置及びストレージ装置におけるデータの管理方法 |
US9213628B2 (en) * | 2010-07-14 | 2015-12-15 | Nimble Storage, Inc. | Methods and systems for reducing churn in flash-based cache |
US8352685B2 (en) * | 2010-08-20 | 2013-01-08 | Apple Inc. | Combining write buffer with dynamically adjustable flush metrics |
-
2011
- 2011-08-05 JP JP2011171745A patent/JP5492156B2/ja not_active Expired - Fee Related
-
2012
- 2012-03-12 US US13/418,006 patent/US8762628B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20130036260A1 (en) | 2013-02-07 |
JP2013065060A (ja) | 2013-04-11 |
US8762628B2 (en) | 2014-06-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5492156B2 (ja) | 情報処理装置およびキャッシュ方法 | |
JP4988008B2 (ja) | 情報処理装置およびドライバ | |
JP5117608B1 (ja) | 情報処理装置、ハイブリッド記憶装置、およびキャッシュ方法 | |
USRE48127E1 (en) | Information processing apparatus and driver | |
JP4829365B1 (ja) | データ記憶装置及びデータ書き込み方法 | |
US8775739B2 (en) | Memory system including first and second caches and controlling readout of data therefrom | |
JP5762930B2 (ja) | 情報処理装置および半導体記憶装置 | |
JP4788528B2 (ja) | ディスク制御装置、ディスク制御方法、ディスク制御プログラム | |
USRE49418E1 (en) | Information processing apparatus and cache control method | |
JP6746747B2 (ja) | 記憶システム | |
JP4585599B1 (ja) | データ記憶装置及びキャッシュ制御方法 | |
US10929061B2 (en) | Memory system and memory control method | |
JP4966418B1 (ja) | 情報処理装置及び書き込み制御方法 | |
KR20210008826A (ko) | 논리 블록 어드레싱 범위 충돌 크롤러 | |
JP2013134690A (ja) | 情報処理装置およびキャッシュ制御方法 | |
US10430287B2 (en) | Computer | |
JP5025670B2 (ja) | 情報処理装置およびデータ記憶装置 | |
JP4837121B1 (ja) | データ記憶装置及びデータ書き込み方法 | |
JP2017228172A (ja) | 情報処理システム | |
JP2013196646A (ja) | メモリ制御装置、データ記憶装置及びメモリ制御方法 | |
USRE49818E1 (en) | Information processing method in a multi-level hierarchical memory system | |
US20140281157A1 (en) | Memory system, memory controller and method | |
JP6027479B2 (ja) | 半導体メモリ装置 | |
JP2012216033A (ja) | 情報処理装置および情報処理装置の起動方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20121204 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140228 |
|
LAPS | Cancellation because of no payment of annual fees |