情報処理装置およびキャッシュ方法
【課題】コントローラに接続された第1の記憶装置をコントローラに接続された第2の記憶装置のリードキャッシュとして用いた場合に性能の低下を抑制すること。
【解決手段】実施形態によれば、情報処理装置は、コントローラと、キャッシュ手段とを具備する。コントローラは、第1の記憶装置および第2の記憶装置にコマンドを発行することによってデータの転送を行う。キャッシュ手段は、前記第1の記憶装置を前記第2の記憶装置のリードキャッシュとして用いる。キャッシュ手段は、前記コントローラが前記第1の記憶装置に対して設定数より大きい数のコマンドを発行している場合、キャッシュデータを前記第1の記憶装置に書き込むためのライトコマンドを、発行しているコマンド数が前記設定数以下になるまで前記コントローラへの発行を保留する。
【解決手段】実施形態によれば、情報処理装置は、コントローラと、キャッシュ手段とを具備する。コントローラは、第1の記憶装置および第2の記憶装置にコマンドを発行することによってデータの転送を行う。キャッシュ手段は、前記第1の記憶装置を前記第2の記憶装置のリードキャッシュとして用いる。キャッシュ手段は、前記コントローラが前記第1の記憶装置に対して設定数より大きい数のコマンドを発行している場合、キャッシュデータを前記第1の記憶装置に書き込むためのライトコマンドを、発行しているコマンド数が前記設定数以下になるまで前記コントローラへの発行を保留する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、一つのコントローラに第1の記憶装置および第2の記憶装置が接続され、第1の記憶装置を第2の記憶装置のキャッシュとして用いる情報処理装置、およびキャッシュ方法に関する。
【背景技術】
【0002】
SSD(Solid State Drive)をハードディスクドライブのキャッシュとして利用するS−ATAコントローラを有するチップセットが製品化されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2006−163474号公報
【特許文献2】特許第3083530号公報
【特許文献3】特許第2834298号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
USBコントローラに接続されたSSD(USB−SSD)をUSBコントローラに接続されたハードディスクドライブ(USB−HDD)のリードキャッシュとして用いることが提案されている。
【0005】
USB−SSD(第1の記憶装置)をUSB−HDD(第2の記憶装置)のリードキャッシュとして用いた場合、リードキャッシュを使用しない場合に比べて性能が低下する場合があった。そのため、性能の低下を抑制することが望まれている。
【0006】
本発明の目的は、コントローラに接続された第1の記憶装置をコントローラに接続された第2の記憶装置のリードキャッシュとして用いた場合に性能の低下を抑制することが可能な情報処理装置およびキャッシュ方法を提供することである。
【課題を解決するための手段】
【0007】
実施形態によれば、情報処理装置は、コントローラと、キャッシュ手段とを具備する。コントローラは、第1の記憶装置および第2の記憶装置にコマンドを発行することによってデータの転送を行う。キャッシュ手段は、前記第1の記憶装置を前記第2の記憶装置のリードキャッシュとして用いる。キャッシュ手段は、前記コントローラが前記第1の記憶装置に対して設定数より大きい数のコマンドを発行している場合、キャッシュデータを前記第1の記憶装置に書き込むためのライトコマンドを、発行しているコマンド数が前記設定数以下になるまで前記コントローラへの発行を保留する。
【図面の簡単な説明】
【0008】
【図1】実施形態の情報処理装置の構成の一例を示すブロック図である。
【図2】実施形態の情報処理装置の主要部の一例を示すブロック図である。
【図3】図2のNVCをキャッシュとして用いる場合の動作の概要を説明するための図である。
【図4】一般的なリードキャッシュの動作の手順を示すフローチャートである。
【図5】USBコントローラに接続されたSSDをUSBコントローラに接続されたHDDのリードキャッシュとして用いた場合に性能が悪化することを説明するための図である。
【図6】実施形態のキャッシュドライバによるキャッシュ処理の手順を示すフローチャートである。
【図7】実施形態の変形例の情報処理装置の構成の一例を示すブロック図である。
【発明を実施するための形態】
【0009】
以下、実施の形態について図面を参照して説明する。
【0010】
図1は、実施形態に係る情報処理装置のシステム構成を示す図である。本実施形態の情報処理装置は、パーソナルコンピュータとして実現されている。
【0011】
図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等を備えている。
【0012】
CPU11は、本情報処理装置の動作を制御するプロセッサであり、HDD18やODD20からメインメモリ13にロードされる各種プログラムを実行する。このCPU11によって実行される各種プログラムの中には、リソース管理を司るOS110や、当該OS110の配下で動作する、キャッシュドライバ120および各種アプリケーションプログラム130等が存在する。キャッシュドライバ120は、後述するSSD202をキャッシュデバイスとして利用するプログラムである。
【0013】
また、CPU11は、BIOS−ROM17に格納されたBIOSも実行する。BIOSは、ハードウェア制御のためのプログラムである。以下では、BIOS−ROM17の格納物であるBIOS自体についてもBIOS17と表記することがある。
【0014】
MCH12は、CPU11とICH14との間を接続するブリッジとして動作すると共に、メインメモリ13をアクセス制御するメモリコントローラとして動作する。また、MCH12は、GPU15との通信を実行する機能を有している。
【0015】
GPU15は、本情報処理装置に組み込まれ、または、外部接続される表示装置を制御する表示コントローラである。GPU15は、VRAM15Aを有し、また、各種プログラムが表示しようとする画像をCPU11に代わって描画するアクセラレータを搭載している。
【0016】
ICH14は、HDD18およびODD20を制御するためのATA(AT Attachment)コントローラを内蔵する。ICH14は、PCI(Peripheral component interconnect)バスに接続された各種周辺機器21の制御も行う。また、ICH14は、サウンドコントローラ16との通信機能も有している。
【0017】
サウンドコントローラ16は音源デバイスであり、各種プログラムが再生対象とするオーディオデータを、本情報処理装置に組み込まれた、または、外部接続されるスピーカ等に出力する。
【0018】
EEPROM22は、例えば本情報処理装置の個体情報や環境設定情報などを格納するためのメモリデバイスである。そして、EC/KBC23は、電力管理を行うためのエンベデッドコントローラと、キーボードやポインティングデバイス等の操作によるデータ入力を制御するためのキーボードコントローラとが集積された1チップMPU(Micro processing unit)である。
【0019】
キャッシュドライバ120は、SSD202の少なくとも一部の領域(NVC(Non-Volatile Cache))をHDD201のキャッシュメモリとして用いる。
【0020】
次に、キャッシュドライバ120の機能について図2を参照して説明する。図2は、図1に示す情報処理装置の主要部を示すブロック図である。
メインメモリ13内には、ユーザバッファ領域301、L1キャッシュ領域302、およびマージ用バッファ領域303が確保される。また、キャッシュドライバ120によって、L1管理情報304、NVC管理情報305、コマンド発行数確認用データ306がメモリ13内に作成される。
【0021】
L1キャッシュ領域302は、データをNVC311にコピーするときに使用するバッファである。L1キャッシュ領域302は、フィルタドライバがロードされるときにメインメモリに確保される。なお、L1キャッシュ領域302の容量は16MB程度である。
【0022】
また、マージ用バッファ領域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の値がデクリメントされる。
【0023】
情報処理装置10はオペレーティングシステム(OS)110が制御し、オペレーティングシステム110からHDD201へのアクセスはすべてキャッシュドライバ120を介して行われる。キャッシュドライバ120はUSBコントローラ14Aを直接的または間接的に制御する。USBコントローラ14Aを介してHDD201が接続されている。また、キャッシュドライバ120は、メモリコントローラ12Aを介して、メインメモリ13へのデータのアクセスを行う。
【0024】
キャッシュドライバ120はシステムの起動時にメインメモリ13にロードされる。キャッシュドライバ120は、キャッシュ管理情報301を格納するための領域をメインメモリ13内に確保して初期化し、キャッシュには何も記録されていない状態にした後、キャッシュ制御処理を開始する。キャッシュ管理情報301は、キャッシュディレクトリなどのキャッシュデータを管理するためのデータを有する。キャッシュドライバ120の動作時、キャッシュドライバ120は、メインメモリ13内のキャッシュ管理情報301にライトキャッシュおよびリードキャッシュの学習データを管理するためのデータを記録する。シャットダウン時、キャッシュドライバ120は、メインメモリ13内のキャッシュ管理情報301を破棄する。
【0025】
なお、キャッシュドライバ120が動作を開始するまでは、BIOSプログラムがHDD201へのアクセスを制御する。USBコントローラ14Aは、ホストからライトアクセス要求またはリードアクセス要求があった場合、HDD201にアクセスする。
【0026】
SSD202の一部または全部の領域がHDD201のキャッシュとして使用される。オペレーティングシステム110は、キャッシュデータの格納領域として使用されるSSD202のキャッシュに直接アクセスすることができない。
【0027】
本情報処理装置は、HDD201よりアクセス速度が速いSSD(Solid State Drive)202をHDD201のキャッシュとして利用することで、HDD201に対するアクセスの高速化を図る。SSD202は、フラッシュメモリ(不揮発性メモリ)を有する。
【0028】
次に図3を参照して、NVC311をキャッシュとして用いる場合の動作の概要を説明する。
リードアクセスデータがL1キャッシュおよびNVC311内のキャッシュデータにヒットしない場合、キャッシュドライバ120は、HDD201からデータを読み出し、読み出したデータをL1キャッシュ領域302に書き込む(ステップ408)。そして、キャッシュドライバ120は、L1キャッシュ領域302に書き込まれたデータをユーザバッファ領域301に書き込む(ステップ404)。また、L1キャッシュ領域302へのアクセスがビジーの場合、キャッシュドライバ120は、HDD201からデータを読み出し、読み出したデータをユーザバッファ領域301に書き込む(ステップ412)。
【0029】
リードアクセスデータの全てがL1キャッシュ領域302内のキャッシュデータにヒットした場合、キャッシュドライバ120は、L1キャッシュ領域302からデータを読み出して、ユーザバッファ領域301に書き込む(ステップ404)。
【0030】
ライトアクセスデータの一部がL1キャッシュ領域302内のキャッシュデータにヒットした場合、キャッシュドライバ120は、ヒットしなかったデータをHDD201から読み出し、読み出されたデータをマージ用バッファ領域303に書き込む(ステップ410)。そして、キャッシュドライバ120は、L1キャッシュ領域302内で、L1キャッシュ領域302内のヒットしたデータとマージ用バッファ領域303に書き込まれたデータとをマージする(ステップ409)。キャッシュドライバ120は、マージされたデータをユーザバッファ領域301に格納する(ステップ404)。キャッシュドライバ120は、マージされたデータをNVC311に格納する(ステップ405)。
【0031】
リードアクセスデータがL1キャッシュ領域302内のキャッシュデータにミスし、リードアクセスデータのすべてがNVC311内のキャッシュデータにヒットした場合、キャッシュドライバ120は、NVC311からデータを読み出し、データをユーザバッファ領域301に書き込む(ステップ402)。
【0032】
リードアクセスデータがL1キャッシュ領域302内のキャッシュデータにミスし、リードアクセスデータの一部がNVC311内のキャッシュデータにヒットした場合、ヒットしなかったデータをHDD201から読み出し、読み出されたデータをマージ用バッファ領域303に書き込む(ステップ410)。そして、キャッシュドライバ120は、NVC311からヒットしたデータを読み出す(ステップ406)。キャッシュドライバ120は、L1キャッシュ領域302内で、NVC311から読みだされたデータとマージ用バッファ領域303内のデータとをマージする(ステップ409)。キャッシュドライバ120は、マージしたデータをユーザバッファ領域301に転送する(ステップ404)。また、キャッシュドライバ120は、マージしたデータをNVC311に格納する(ステップ405)。
【0033】
ライトアクセスデータがL1キャッシュ領域302およびNVC311内のキャッシュデータにヒットしない場合、キャッシュドライバ120は、ライトアクセスデータをL1キャッシュ領域302に一端書き込んだ後に(ステップ403)、L1キャッシュ領域302内のライトアクセスデータをNVC311に書き込む(ステップ405)。なお、L1キャッシュ領域302へのアクセスがビジーの場合、キャッシュドライバ120は、ライトアクセスデータを直接HDD201に書き込む。
【0034】
ライトアクセスデータがL1キャッシュ領域302内のキャッシュデータにヒットした場合、キャッシュドライバ120は、ライトアクセスデータをL1キャッシュ領域302に書き込み(ステップ403)、L1キャッシュ領域302内のライトアクセスデータをNVC311に格納する(ステップ405)。
【0035】
ライトアクセスデータがNVC311内のキャッシュデータにヒットした場合、ライトアクセスデータをNVC311に書き込む(ステップ401)。
L1キャッシュ領域302に書き込まれたキャッシュデータがハードディスクドライブに書き込まれていない場合、キャッシュドライバ120は、L1キャッシュ領域302に書き込まれているデータをHDD201に書き込む(st407)。
【0036】
NVC311に書き込まれたキャッシュデータがハードディスクドライブに書き込まれていない場合、キャッシュドライバ120は、NVC311からデータを読み出し、読み出したデータをL1キャッシュ領域302に書き込む(ステップ406)。キャッシュドライバ120は、L1キャッシュ領域302に書き込まれたデータをHDD201に書き込む(ステップ407)。
キャッシュドライバ120は、ステップ401〜ステップ412の基本データ転送機能の組み合わせで、データの転送を行う。
【0037】
(ライトスルーキャッシュ)
リードキャッシュはライトスルーキャッシュとも呼ばれている。一般的なリードキャッシュの動作について図4を参照して説明する。
オペレーティングシステム110からHDD201へのアクセスコマンドが発行された場合、キャッシュドライバは、コマンドがリードコマンドであるかを判定する(ステップ501)。リードコマンドであると判定した場合(ステップ501のYes)、キャッシュドライバは、NVC管理情報305を参照することによって、リードコマンドに対応するデータがNVC311内に存在するかを判定する(ステップ502)。データが存在すると判定した場合(ステップ502のYes)、NVC311からリードコマンドに対応するデータを読み出す(ステップ503)。データが存在しないと判定した場合、キャッシュドライバは、HDD201からリードコマンドに対応するデータを読み出す(ステップ504)。そして、キャッシュドライバは、HDD201から読み出されたデータをNVC311に書き込み、データを学習する(ステップ505)。
【0038】
ステップ501において、リードコマンドではない(つまり、ライトコマンドである)と判定した場合(ステップ501のNo)、ライトコマンドに対応するアドレスのデータがNVC311内に存在するかを判定する(ステップ506)。データがNVC311内に存在すると判定した場合(ステップ506のYes)、NVC311内に存在するデータを書き換えると共に、ライトコマンドに対応するデータをHDD201に書き込む(ステップ507)。データがNVC311内に存在しないと判定した場合(ステップ506のNo)、ライトコマンドに対応するデータをHDD201に書き込む(ステップ508)。
以上説明したのが、シーケンシャルリードを検出した後のリードアクセスを学習する場合のキャッシュドライバの動作である。
【0039】
実際のキャッシュ制御は、図4を参照して説明したよな直線的なフローではなく、記憶装置にコマンドを発行したら一旦制御を返し、記憶装置へのコマンドが終了したら続きの処理を行うように実装されるのが一般的である。キャッシュデバイス(SSD)へのコマンドは以下のように分類される。
【0040】
(A)リードコマンドがキャッシュにヒットし、キャッシュからリード
(B)ライトコマンドがキャッシュにヒットし、キャッシュにライト
(C)リードコマンドがキャッシュにミスし、HDDからリードしたデータを学習するために、キャッシュにライト
ここで、(A)および(B)はホストからのコマンドに対応して発行されるコマンドでる。これらのコマンドが完了するまではホストの実行を継続できないため、最優先で処理すべきコマンドである。これに対し(C)は、ホストからのリードコマンドはHDDからリードした時点で終了を返しているため、ホストの実行は継続している。すなわち、(C)は優先度の低い処理である。キャッシュデバイスへのコマンドを下位モジュール(下位ドライバやデバイス)に発行するときは、(A)、(B)は高優先度で発行し、(C)は低優先度で発行するのが一般的である。
【0041】
しかしながら、USB規格のような下位モジュールが優先度制御をサポートしていない場合、すべてのコマンドが等しい優先度で処理される。ホスト側は同時にいくつものプロセスを実行しており、記憶装置に対しても同時に多数のコマンドが発行されるのが一般的である。ここで、多くのリードコマンドがキャッシュにミスし、大量の(C)を発行中に(A)または(B)を発行した場合、たまっている(C)の実行が完了するまでは(A)または(B)が実行されないことになり、システムの処理性能が低下してしまう。
【0042】
本実施形態の場合、キャッシュドライバ120は、SSD202に対して1より大きい数のコマンドが発行されている場合、キャッシュデータをNVC311に書き込むためのライトコマンドをUSBコントローラ14Aに発行しないことで、システムの処理性能の定価を抑制する。
【0043】
処理性能が低下する例について図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に発行する(ステップ608)。
【0044】
オペレーティングシステム110は、キャッシュドライバにHDD201へのライトコマンドを発行する(ステップ609)。キャッシュドライバは、USBコントローラ14AにHDD201へのライトコマンドを発行する(ステップ610)。USBコントローラ14Aは、ステップ608のライトコマンドが発行中であるため、リードコマンドをHDD201に発行することができない。
【0045】
ステップ608のライトコマンドに応じた書き込みが終了すると、SSD202は、USBコントローラ14Aに完了通知を発行する(ステップ611)。USBコントローラ14Aは、キャッシュドライバに完了通知を発行する(ステップ612)。USBコントローラ14Aの発行中のコマンドが0になったので、USBコントローラ14Aは、ステップ610のライトコマンドに応じたライトコマンドをHDD201に発行する(ステップ613)。ライトコマンドに応じたデータの書き込みが終了すると、HDD201は、USBコントローラに完了通知を発行する(ステップ614)。USBコントローラ14Aは、完了通知をキャッシュドライバに発行する(ステップ615)。キャッシュドライバは、完了通知をオペレーティングシステム110に発行する。
【0046】
USBコントローラ14Aは、ステップ610のHDD201へのライトコマンドを受信しても、ステップd508のライトコマンドが発行中であるため、ステップ610のライトコマンドに応じたライトコマンドをHDD201に発行することができない。そのため、処理性能が低下する。
【0047】
本実施形態は、優先度制御をサポートしていないUSBの記憶装置の場合に、(C)の処理のために(A)または(B)の処理が待たされないようにして、システムの性能の低下を抑制するキャッシュドライバ120を提供する。
【0048】
次に、図6のフローチャートを参照して、キャッシュドライバ120による処理の手順を説明する。
オペレーティングシステム110からHDD201へのアクセスコマンドが発行された場合、キャッシュドライバ120は、コマンドがリードコマンドであるかを判定する(ステップ701)。リードコマンドであると判定した場合(ステップ701のYes)、キャッシュドライバ120は、NVC管理情報305を参照することによって、リードコマンドに対応するデータがNVC311内に存在するかを判定する(ステップ702)。データが存在すると判定した場合(ステップ702のYes)、NVC311からリードコマンドに対応するデータを読み出す(ステップ703)。データが存在しないと判定した場合、キャッシュドライバ120は、HDD201からリードコマンドに対応するデータを読み出す(ステップ704)。
【0049】
キャッシュドライバ120は、コマンド発行数確認用データ306の値を参照することによってNVC311(SSD202)へのコマンド発行数が設定数を超えているかを判定する(ステップ705)。設定数を超えていないと判定した場合(ステップ705のYes)、キャッシュドライバ120は、HDD201から読み出されたデータをNVC311に書き込み、データを学習する(ステップ706)。設定数を超えていると判定した場合(ステップ705のNo)、キャッシュドライバ120は、HDD201から読み出されたデータを学習しない。
【0050】
ステップ701において、リードコマンドではない(つまり、ライトコマンドである)と判定した場合(ステップ701のNo)、ライトコマンドに対応するアドレスのデータがNVC311内に存在するかを判定する(ステップ707)。データがNVC311内に存在すると判定した場合(ステップ707のYes)、NVC311内に存在するデータを書き換えると共に、ライトコマンドに対応するデータをHDD201に書き込む(ステップ708)。データがNVC311内に存在しないと判定した場合(ステップ707のNo)、ライトコマンドに対応するデータをHDD201に書き込む(ステップ709)。
SSD202に発行されたコマンドに対応する処理が終了していない場合に、データを学習しないことで、性能の低下を抑制することが可能になる。
【0051】
なお、本実施形態のSSD202をHDD201のキャッシュとして用いる処理はコンピュータプログラムによって実現されているので、このコンピュータプログラムをコンピュータ読み取り可能な記憶媒体を通じて通常のコンピュータにインストールするだけで、本実施形態と同様の効果を容易に実現することができる。また、このコンピュータプログラムは、パーソナルコンピュータのみならず、プロセッサを内蔵した電子機器上で実行することができる。
【0052】
(変形例)
なお、上記実施形態では、HDD201とSSD202とが別の例を示したが、図7に示すように、HDD201とSSD202とが一つの筐体内に設けられたハイブリッドハードディスクドライブ800にも上記実施形態のキャッシュ制御を用いることが可能である。
【0053】
なお、キャッシュドライバ120は、SSD202へのアクセスコマンドの発行数が設定数より大きい場合、発行数が設定数以下になるまでコントローラへのアクセスコマンドの発行を保留しておき、保留していたアクセスコマンドを発行してもよい。
【0054】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0055】
10…情報処理装置、11…CPU、14A…USBコントローラ、110…オペレーティングシステム、120…キャッシュドライバ、201…HDD、202…SSD、301…ユーザバッファ領域、302…キャッシュ領域、303…マージ用バッファ領域、304…管理情報、305…NVC管理情報、306…コマンド発行数確認用データ、311…NVC。
【技術分野】
【0001】
本発明の実施形態は、一つのコントローラに第1の記憶装置および第2の記憶装置が接続され、第1の記憶装置を第2の記憶装置のキャッシュとして用いる情報処理装置、およびキャッシュ方法に関する。
【背景技術】
【0002】
SSD(Solid State Drive)をハードディスクドライブのキャッシュとして利用するS−ATAコントローラを有するチップセットが製品化されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2006−163474号公報
【特許文献2】特許第3083530号公報
【特許文献3】特許第2834298号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
USBコントローラに接続されたSSD(USB−SSD)をUSBコントローラに接続されたハードディスクドライブ(USB−HDD)のリードキャッシュとして用いることが提案されている。
【0005】
USB−SSD(第1の記憶装置)をUSB−HDD(第2の記憶装置)のリードキャッシュとして用いた場合、リードキャッシュを使用しない場合に比べて性能が低下する場合があった。そのため、性能の低下を抑制することが望まれている。
【0006】
本発明の目的は、コントローラに接続された第1の記憶装置をコントローラに接続された第2の記憶装置のリードキャッシュとして用いた場合に性能の低下を抑制することが可能な情報処理装置およびキャッシュ方法を提供することである。
【課題を解決するための手段】
【0007】
実施形態によれば、情報処理装置は、コントローラと、キャッシュ手段とを具備する。コントローラは、第1の記憶装置および第2の記憶装置にコマンドを発行することによってデータの転送を行う。キャッシュ手段は、前記第1の記憶装置を前記第2の記憶装置のリードキャッシュとして用いる。キャッシュ手段は、前記コントローラが前記第1の記憶装置に対して設定数より大きい数のコマンドを発行している場合、キャッシュデータを前記第1の記憶装置に書き込むためのライトコマンドを、発行しているコマンド数が前記設定数以下になるまで前記コントローラへの発行を保留する。
【図面の簡単な説明】
【0008】
【図1】実施形態の情報処理装置の構成の一例を示すブロック図である。
【図2】実施形態の情報処理装置の主要部の一例を示すブロック図である。
【図3】図2のNVCをキャッシュとして用いる場合の動作の概要を説明するための図である。
【図4】一般的なリードキャッシュの動作の手順を示すフローチャートである。
【図5】USBコントローラに接続されたSSDをUSBコントローラに接続されたHDDのリードキャッシュとして用いた場合に性能が悪化することを説明するための図である。
【図6】実施形態のキャッシュドライバによるキャッシュ処理の手順を示すフローチャートである。
【図7】実施形態の変形例の情報処理装置の構成の一例を示すブロック図である。
【発明を実施するための形態】
【0009】
以下、実施の形態について図面を参照して説明する。
【0010】
図1は、実施形態に係る情報処理装置のシステム構成を示す図である。本実施形態の情報処理装置は、パーソナルコンピュータとして実現されている。
【0011】
図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等を備えている。
【0012】
CPU11は、本情報処理装置の動作を制御するプロセッサであり、HDD18やODD20からメインメモリ13にロードされる各種プログラムを実行する。このCPU11によって実行される各種プログラムの中には、リソース管理を司るOS110や、当該OS110の配下で動作する、キャッシュドライバ120および各種アプリケーションプログラム130等が存在する。キャッシュドライバ120は、後述するSSD202をキャッシュデバイスとして利用するプログラムである。
【0013】
また、CPU11は、BIOS−ROM17に格納されたBIOSも実行する。BIOSは、ハードウェア制御のためのプログラムである。以下では、BIOS−ROM17の格納物であるBIOS自体についてもBIOS17と表記することがある。
【0014】
MCH12は、CPU11とICH14との間を接続するブリッジとして動作すると共に、メインメモリ13をアクセス制御するメモリコントローラとして動作する。また、MCH12は、GPU15との通信を実行する機能を有している。
【0015】
GPU15は、本情報処理装置に組み込まれ、または、外部接続される表示装置を制御する表示コントローラである。GPU15は、VRAM15Aを有し、また、各種プログラムが表示しようとする画像をCPU11に代わって描画するアクセラレータを搭載している。
【0016】
ICH14は、HDD18およびODD20を制御するためのATA(AT Attachment)コントローラを内蔵する。ICH14は、PCI(Peripheral component interconnect)バスに接続された各種周辺機器21の制御も行う。また、ICH14は、サウンドコントローラ16との通信機能も有している。
【0017】
サウンドコントローラ16は音源デバイスであり、各種プログラムが再生対象とするオーディオデータを、本情報処理装置に組み込まれた、または、外部接続されるスピーカ等に出力する。
【0018】
EEPROM22は、例えば本情報処理装置の個体情報や環境設定情報などを格納するためのメモリデバイスである。そして、EC/KBC23は、電力管理を行うためのエンベデッドコントローラと、キーボードやポインティングデバイス等の操作によるデータ入力を制御するためのキーボードコントローラとが集積された1チップMPU(Micro processing unit)である。
【0019】
キャッシュドライバ120は、SSD202の少なくとも一部の領域(NVC(Non-Volatile Cache))をHDD201のキャッシュメモリとして用いる。
【0020】
次に、キャッシュドライバ120の機能について図2を参照して説明する。図2は、図1に示す情報処理装置の主要部を示すブロック図である。
メインメモリ13内には、ユーザバッファ領域301、L1キャッシュ領域302、およびマージ用バッファ領域303が確保される。また、キャッシュドライバ120によって、L1管理情報304、NVC管理情報305、コマンド発行数確認用データ306がメモリ13内に作成される。
【0021】
L1キャッシュ領域302は、データをNVC311にコピーするときに使用するバッファである。L1キャッシュ領域302は、フィルタドライバがロードされるときにメインメモリに確保される。なお、L1キャッシュ領域302の容量は16MB程度である。
【0022】
また、マージ用バッファ領域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の値がデクリメントされる。
【0023】
情報処理装置10はオペレーティングシステム(OS)110が制御し、オペレーティングシステム110からHDD201へのアクセスはすべてキャッシュドライバ120を介して行われる。キャッシュドライバ120はUSBコントローラ14Aを直接的または間接的に制御する。USBコントローラ14Aを介してHDD201が接続されている。また、キャッシュドライバ120は、メモリコントローラ12Aを介して、メインメモリ13へのデータのアクセスを行う。
【0024】
キャッシュドライバ120はシステムの起動時にメインメモリ13にロードされる。キャッシュドライバ120は、キャッシュ管理情報301を格納するための領域をメインメモリ13内に確保して初期化し、キャッシュには何も記録されていない状態にした後、キャッシュ制御処理を開始する。キャッシュ管理情報301は、キャッシュディレクトリなどのキャッシュデータを管理するためのデータを有する。キャッシュドライバ120の動作時、キャッシュドライバ120は、メインメモリ13内のキャッシュ管理情報301にライトキャッシュおよびリードキャッシュの学習データを管理するためのデータを記録する。シャットダウン時、キャッシュドライバ120は、メインメモリ13内のキャッシュ管理情報301を破棄する。
【0025】
なお、キャッシュドライバ120が動作を開始するまでは、BIOSプログラムがHDD201へのアクセスを制御する。USBコントローラ14Aは、ホストからライトアクセス要求またはリードアクセス要求があった場合、HDD201にアクセスする。
【0026】
SSD202の一部または全部の領域がHDD201のキャッシュとして使用される。オペレーティングシステム110は、キャッシュデータの格納領域として使用されるSSD202のキャッシュに直接アクセスすることができない。
【0027】
本情報処理装置は、HDD201よりアクセス速度が速いSSD(Solid State Drive)202をHDD201のキャッシュとして利用することで、HDD201に対するアクセスの高速化を図る。SSD202は、フラッシュメモリ(不揮発性メモリ)を有する。
【0028】
次に図3を参照して、NVC311をキャッシュとして用いる場合の動作の概要を説明する。
リードアクセスデータがL1キャッシュおよびNVC311内のキャッシュデータにヒットしない場合、キャッシュドライバ120は、HDD201からデータを読み出し、読み出したデータをL1キャッシュ領域302に書き込む(ステップ408)。そして、キャッシュドライバ120は、L1キャッシュ領域302に書き込まれたデータをユーザバッファ領域301に書き込む(ステップ404)。また、L1キャッシュ領域302へのアクセスがビジーの場合、キャッシュドライバ120は、HDD201からデータを読み出し、読み出したデータをユーザバッファ領域301に書き込む(ステップ412)。
【0029】
リードアクセスデータの全てがL1キャッシュ領域302内のキャッシュデータにヒットした場合、キャッシュドライバ120は、L1キャッシュ領域302からデータを読み出して、ユーザバッファ領域301に書き込む(ステップ404)。
【0030】
ライトアクセスデータの一部がL1キャッシュ領域302内のキャッシュデータにヒットした場合、キャッシュドライバ120は、ヒットしなかったデータをHDD201から読み出し、読み出されたデータをマージ用バッファ領域303に書き込む(ステップ410)。そして、キャッシュドライバ120は、L1キャッシュ領域302内で、L1キャッシュ領域302内のヒットしたデータとマージ用バッファ領域303に書き込まれたデータとをマージする(ステップ409)。キャッシュドライバ120は、マージされたデータをユーザバッファ領域301に格納する(ステップ404)。キャッシュドライバ120は、マージされたデータをNVC311に格納する(ステップ405)。
【0031】
リードアクセスデータがL1キャッシュ領域302内のキャッシュデータにミスし、リードアクセスデータのすべてがNVC311内のキャッシュデータにヒットした場合、キャッシュドライバ120は、NVC311からデータを読み出し、データをユーザバッファ領域301に書き込む(ステップ402)。
【0032】
リードアクセスデータがL1キャッシュ領域302内のキャッシュデータにミスし、リードアクセスデータの一部がNVC311内のキャッシュデータにヒットした場合、ヒットしなかったデータをHDD201から読み出し、読み出されたデータをマージ用バッファ領域303に書き込む(ステップ410)。そして、キャッシュドライバ120は、NVC311からヒットしたデータを読み出す(ステップ406)。キャッシュドライバ120は、L1キャッシュ領域302内で、NVC311から読みだされたデータとマージ用バッファ領域303内のデータとをマージする(ステップ409)。キャッシュドライバ120は、マージしたデータをユーザバッファ領域301に転送する(ステップ404)。また、キャッシュドライバ120は、マージしたデータをNVC311に格納する(ステップ405)。
【0033】
ライトアクセスデータがL1キャッシュ領域302およびNVC311内のキャッシュデータにヒットしない場合、キャッシュドライバ120は、ライトアクセスデータをL1キャッシュ領域302に一端書き込んだ後に(ステップ403)、L1キャッシュ領域302内のライトアクセスデータをNVC311に書き込む(ステップ405)。なお、L1キャッシュ領域302へのアクセスがビジーの場合、キャッシュドライバ120は、ライトアクセスデータを直接HDD201に書き込む。
【0034】
ライトアクセスデータがL1キャッシュ領域302内のキャッシュデータにヒットした場合、キャッシュドライバ120は、ライトアクセスデータをL1キャッシュ領域302に書き込み(ステップ403)、L1キャッシュ領域302内のライトアクセスデータをNVC311に格納する(ステップ405)。
【0035】
ライトアクセスデータがNVC311内のキャッシュデータにヒットした場合、ライトアクセスデータをNVC311に書き込む(ステップ401)。
L1キャッシュ領域302に書き込まれたキャッシュデータがハードディスクドライブに書き込まれていない場合、キャッシュドライバ120は、L1キャッシュ領域302に書き込まれているデータをHDD201に書き込む(st407)。
【0036】
NVC311に書き込まれたキャッシュデータがハードディスクドライブに書き込まれていない場合、キャッシュドライバ120は、NVC311からデータを読み出し、読み出したデータをL1キャッシュ領域302に書き込む(ステップ406)。キャッシュドライバ120は、L1キャッシュ領域302に書き込まれたデータをHDD201に書き込む(ステップ407)。
キャッシュドライバ120は、ステップ401〜ステップ412の基本データ転送機能の組み合わせで、データの転送を行う。
【0037】
(ライトスルーキャッシュ)
リードキャッシュはライトスルーキャッシュとも呼ばれている。一般的なリードキャッシュの動作について図4を参照して説明する。
オペレーティングシステム110からHDD201へのアクセスコマンドが発行された場合、キャッシュドライバは、コマンドがリードコマンドであるかを判定する(ステップ501)。リードコマンドであると判定した場合(ステップ501のYes)、キャッシュドライバは、NVC管理情報305を参照することによって、リードコマンドに対応するデータがNVC311内に存在するかを判定する(ステップ502)。データが存在すると判定した場合(ステップ502のYes)、NVC311からリードコマンドに対応するデータを読み出す(ステップ503)。データが存在しないと判定した場合、キャッシュドライバは、HDD201からリードコマンドに対応するデータを読み出す(ステップ504)。そして、キャッシュドライバは、HDD201から読み出されたデータをNVC311に書き込み、データを学習する(ステップ505)。
【0038】
ステップ501において、リードコマンドではない(つまり、ライトコマンドである)と判定した場合(ステップ501のNo)、ライトコマンドに対応するアドレスのデータがNVC311内に存在するかを判定する(ステップ506)。データがNVC311内に存在すると判定した場合(ステップ506のYes)、NVC311内に存在するデータを書き換えると共に、ライトコマンドに対応するデータをHDD201に書き込む(ステップ507)。データがNVC311内に存在しないと判定した場合(ステップ506のNo)、ライトコマンドに対応するデータをHDD201に書き込む(ステップ508)。
以上説明したのが、シーケンシャルリードを検出した後のリードアクセスを学習する場合のキャッシュドライバの動作である。
【0039】
実際のキャッシュ制御は、図4を参照して説明したよな直線的なフローではなく、記憶装置にコマンドを発行したら一旦制御を返し、記憶装置へのコマンドが終了したら続きの処理を行うように実装されるのが一般的である。キャッシュデバイス(SSD)へのコマンドは以下のように分類される。
【0040】
(A)リードコマンドがキャッシュにヒットし、キャッシュからリード
(B)ライトコマンドがキャッシュにヒットし、キャッシュにライト
(C)リードコマンドがキャッシュにミスし、HDDからリードしたデータを学習するために、キャッシュにライト
ここで、(A)および(B)はホストからのコマンドに対応して発行されるコマンドでる。これらのコマンドが完了するまではホストの実行を継続できないため、最優先で処理すべきコマンドである。これに対し(C)は、ホストからのリードコマンドはHDDからリードした時点で終了を返しているため、ホストの実行は継続している。すなわち、(C)は優先度の低い処理である。キャッシュデバイスへのコマンドを下位モジュール(下位ドライバやデバイス)に発行するときは、(A)、(B)は高優先度で発行し、(C)は低優先度で発行するのが一般的である。
【0041】
しかしながら、USB規格のような下位モジュールが優先度制御をサポートしていない場合、すべてのコマンドが等しい優先度で処理される。ホスト側は同時にいくつものプロセスを実行しており、記憶装置に対しても同時に多数のコマンドが発行されるのが一般的である。ここで、多くのリードコマンドがキャッシュにミスし、大量の(C)を発行中に(A)または(B)を発行した場合、たまっている(C)の実行が完了するまでは(A)または(B)が実行されないことになり、システムの処理性能が低下してしまう。
【0042】
本実施形態の場合、キャッシュドライバ120は、SSD202に対して1より大きい数のコマンドが発行されている場合、キャッシュデータをNVC311に書き込むためのライトコマンドをUSBコントローラ14Aに発行しないことで、システムの処理性能の定価を抑制する。
【0043】
処理性能が低下する例について図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に発行する(ステップ608)。
【0044】
オペレーティングシステム110は、キャッシュドライバにHDD201へのライトコマンドを発行する(ステップ609)。キャッシュドライバは、USBコントローラ14AにHDD201へのライトコマンドを発行する(ステップ610)。USBコントローラ14Aは、ステップ608のライトコマンドが発行中であるため、リードコマンドをHDD201に発行することができない。
【0045】
ステップ608のライトコマンドに応じた書き込みが終了すると、SSD202は、USBコントローラ14Aに完了通知を発行する(ステップ611)。USBコントローラ14Aは、キャッシュドライバに完了通知を発行する(ステップ612)。USBコントローラ14Aの発行中のコマンドが0になったので、USBコントローラ14Aは、ステップ610のライトコマンドに応じたライトコマンドをHDD201に発行する(ステップ613)。ライトコマンドに応じたデータの書き込みが終了すると、HDD201は、USBコントローラに完了通知を発行する(ステップ614)。USBコントローラ14Aは、完了通知をキャッシュドライバに発行する(ステップ615)。キャッシュドライバは、完了通知をオペレーティングシステム110に発行する。
【0046】
USBコントローラ14Aは、ステップ610のHDD201へのライトコマンドを受信しても、ステップd508のライトコマンドが発行中であるため、ステップ610のライトコマンドに応じたライトコマンドをHDD201に発行することができない。そのため、処理性能が低下する。
【0047】
本実施形態は、優先度制御をサポートしていないUSBの記憶装置の場合に、(C)の処理のために(A)または(B)の処理が待たされないようにして、システムの性能の低下を抑制するキャッシュドライバ120を提供する。
【0048】
次に、図6のフローチャートを参照して、キャッシュドライバ120による処理の手順を説明する。
オペレーティングシステム110からHDD201へのアクセスコマンドが発行された場合、キャッシュドライバ120は、コマンドがリードコマンドであるかを判定する(ステップ701)。リードコマンドであると判定した場合(ステップ701のYes)、キャッシュドライバ120は、NVC管理情報305を参照することによって、リードコマンドに対応するデータがNVC311内に存在するかを判定する(ステップ702)。データが存在すると判定した場合(ステップ702のYes)、NVC311からリードコマンドに対応するデータを読み出す(ステップ703)。データが存在しないと判定した場合、キャッシュドライバ120は、HDD201からリードコマンドに対応するデータを読み出す(ステップ704)。
【0049】
キャッシュドライバ120は、コマンド発行数確認用データ306の値を参照することによってNVC311(SSD202)へのコマンド発行数が設定数を超えているかを判定する(ステップ705)。設定数を超えていないと判定した場合(ステップ705のYes)、キャッシュドライバ120は、HDD201から読み出されたデータをNVC311に書き込み、データを学習する(ステップ706)。設定数を超えていると判定した場合(ステップ705のNo)、キャッシュドライバ120は、HDD201から読み出されたデータを学習しない。
【0050】
ステップ701において、リードコマンドではない(つまり、ライトコマンドである)と判定した場合(ステップ701のNo)、ライトコマンドに対応するアドレスのデータがNVC311内に存在するかを判定する(ステップ707)。データがNVC311内に存在すると判定した場合(ステップ707のYes)、NVC311内に存在するデータを書き換えると共に、ライトコマンドに対応するデータをHDD201に書き込む(ステップ708)。データがNVC311内に存在しないと判定した場合(ステップ707のNo)、ライトコマンドに対応するデータをHDD201に書き込む(ステップ709)。
SSD202に発行されたコマンドに対応する処理が終了していない場合に、データを学習しないことで、性能の低下を抑制することが可能になる。
【0051】
なお、本実施形態のSSD202をHDD201のキャッシュとして用いる処理はコンピュータプログラムによって実現されているので、このコンピュータプログラムをコンピュータ読み取り可能な記憶媒体を通じて通常のコンピュータにインストールするだけで、本実施形態と同様の効果を容易に実現することができる。また、このコンピュータプログラムは、パーソナルコンピュータのみならず、プロセッサを内蔵した電子機器上で実行することができる。
【0052】
(変形例)
なお、上記実施形態では、HDD201とSSD202とが別の例を示したが、図7に示すように、HDD201とSSD202とが一つの筐体内に設けられたハイブリッドハードディスクドライブ800にも上記実施形態のキャッシュ制御を用いることが可能である。
【0053】
なお、キャッシュドライバ120は、SSD202へのアクセスコマンドの発行数が設定数より大きい場合、発行数が設定数以下になるまでコントローラへのアクセスコマンドの発行を保留しておき、保留していたアクセスコマンドを発行してもよい。
【0054】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0055】
10…情報処理装置、11…CPU、14A…USBコントローラ、110…オペレーティングシステム、120…キャッシュドライバ、201…HDD、202…SSD、301…ユーザバッファ領域、302…キャッシュ領域、303…マージ用バッファ領域、304…管理情報、305…NVC管理情報、306…コマンド発行数確認用データ、311…NVC。
【特許請求の範囲】
【請求項1】
第1の記憶装置および第2の記憶装置にコマンドを発行することによってデータの転送を行うコントローラと、
前記第1の記憶装置を前記第2の記憶装置のリードキャッシュとして用いるキャッシュ手段であって、前記コントローラが前記第1の記憶装置に対して設定数より大きい数のコマンドを発行している場合、キャッシュデータを前記第1の記憶装置に書き込むためのライトコマンドを、発行しているコマンド数が前記設定数以下になるまで前記コントローラへの発行を保留する、キャッシュ手段と、
を具備する情報処理装置。
【請求項2】
前記コントローラは、USB(Universal Serial Bus)規格に対応している、
請求項1に記載の情報処理装置。
【請求項3】
前記第1の記憶装置は、フラッシュメモリを有する、
請求項1に記載の情報処理装置。
【請求項4】
前記第2の記憶装置は、ハードディスクドライブを有する、
請求項1に記載の情報処理装置。
【請求項5】
前記第1の記憶装置は、前記コントローラから発行される複数のコマンドを等しい優先度で処理する、
請求項1に記載の情報処理装置。
【請求項6】
コントローラに接続された第1の記憶装置を前記コントローラに接続された第2の記憶装置のリードキャッシュとして用いるキャッシュ方法であって、
前記コントローラが前記第1の記憶装置に対して設定数より大きい数のコマンドを発行している場合、キャッシュデータを前記第1の記憶装置に書き込むためのライトコマンドを、発行しているコマンド数が前記設定数以下になるまで前記コントローラへの発行を保留する、
キャッシュ方法。
【請求項7】
前記コントローラは、USB(Universal Serial Bus)規格に対応している、
請求項6に記載のキャッシュ方法。
【請求項8】
前記第1の記憶装置は、フラッシュメモリを有する、
請求項6に記載のキャッシュ方法。
【請求項9】
前記第2の記憶装置は、ハードディスクドライブを有する、
請求項6に記載のキャッシュ方法。
【請求項10】
前記第1の記憶装置は、前記コントローラから発行される複数のコマンドを等しい優先度で処理する、
請求項6に記載のキャッシュ方法。
【請求項1】
第1の記憶装置および第2の記憶装置にコマンドを発行することによってデータの転送を行うコントローラと、
前記第1の記憶装置を前記第2の記憶装置のリードキャッシュとして用いるキャッシュ手段であって、前記コントローラが前記第1の記憶装置に対して設定数より大きい数のコマンドを発行している場合、キャッシュデータを前記第1の記憶装置に書き込むためのライトコマンドを、発行しているコマンド数が前記設定数以下になるまで前記コントローラへの発行を保留する、キャッシュ手段と、
を具備する情報処理装置。
【請求項2】
前記コントローラは、USB(Universal Serial Bus)規格に対応している、
請求項1に記載の情報処理装置。
【請求項3】
前記第1の記憶装置は、フラッシュメモリを有する、
請求項1に記載の情報処理装置。
【請求項4】
前記第2の記憶装置は、ハードディスクドライブを有する、
請求項1に記載の情報処理装置。
【請求項5】
前記第1の記憶装置は、前記コントローラから発行される複数のコマンドを等しい優先度で処理する、
請求項1に記載の情報処理装置。
【請求項6】
コントローラに接続された第1の記憶装置を前記コントローラに接続された第2の記憶装置のリードキャッシュとして用いるキャッシュ方法であって、
前記コントローラが前記第1の記憶装置に対して設定数より大きい数のコマンドを発行している場合、キャッシュデータを前記第1の記憶装置に書き込むためのライトコマンドを、発行しているコマンド数が前記設定数以下になるまで前記コントローラへの発行を保留する、
キャッシュ方法。
【請求項7】
前記コントローラは、USB(Universal Serial Bus)規格に対応している、
請求項6に記載のキャッシュ方法。
【請求項8】
前記第1の記憶装置は、フラッシュメモリを有する、
請求項6に記載のキャッシュ方法。
【請求項9】
前記第2の記憶装置は、ハードディスクドライブを有する、
請求項6に記載のキャッシュ方法。
【請求項10】
前記第1の記憶装置は、前記コントローラから発行される複数のコマンドを等しい優先度で処理する、
請求項6に記載のキャッシュ方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【公開番号】特開2013−65060(P2013−65060A)
【公開日】平成25年4月11日(2013.4.11)
【国際特許分類】
【出願番号】特願2011−171745(P2011−171745)
【出願日】平成23年8月5日(2011.8.5)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成25年4月11日(2013.4.11)
【国際特許分類】
【出願日】平成23年8月5日(2011.8.5)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]