JP2013530448A - キャッシュストレージアダプタアーキテクチャ - Google Patents

キャッシュストレージアダプタアーキテクチャ Download PDF

Info

Publication number
JP2013530448A
JP2013530448A JP2013509270A JP2013509270A JP2013530448A JP 2013530448 A JP2013530448 A JP 2013530448A JP 2013509270 A JP2013509270 A JP 2013509270A JP 2013509270 A JP2013509270 A JP 2013509270A JP 2013530448 A JP2013530448 A JP 2013530448A
Authority
JP
Japan
Prior art keywords
data
storage device
solid state
write
module
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.)
Pending
Application number
JP2013509270A
Other languages
English (en)
Inventor
プルーシ、アーヴィンド
カーマーカー、サンディープ
ラストギ、カニシュク
シワーカー、シャイレッシュ
Original Assignee
マーベル ワールド トレード リミテッド
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 マーベル ワールド トレード リミテッド filed Critical マーベル ワールド トレード リミテッド
Publication of JP2013530448A publication Critical patent/JP2013530448A/ja
Pending legal-status Critical Current

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/217Hybrid disk, e.g. using both magnetic and solid state storage devices

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

【課題】 インターフェースアダプタは、不揮発性ランダムアクセスメモリ(RAM)を有するストレージモジュールと、ルックアップモジュールとを備える。ストレージモジュールは、不揮発性RAMにメタデータを格納する。メタデータは、ソリッドステートストレージデバイスにキャッシュされている外部ストレージデバイスからのデータを特定する。ルックアップモジュールは、読出要求を受信する。ルックアップモジュールはさらに、メタデータに基づき、読出要求に応じて、ソリッドステートストレージデバイスからキャッシュされたデータを提供するか、外部ストレージデバイスから取得された第2のデータを提供するかを選択する。
【選択図】 図3A

Description

本開示は、キャッシュホストバスアダプタに関し、具体的には、ソリッドステートストレージおよび不揮発性メモリを利用するキャッシュホストバスアダプタに関する。
[関連技術]
本願は、米国実用特許出願第13/101,534号(出願日:2011年5月5日)に基づき優先権を主張するとともに米国仮特許出願第61/331,759号(出願日:2010年5月5日)による恩恵を主張する。上記出願の開示内容は全て、参照により本願に組み込まれる。
本明細書に記載する背景技術の説明は、本開示がどのような文脈で為されたかの概要を説明する目的で記載するものである。本願の発明者として名前を挙げているものの研究内容は、この背景技術のセクションに記載されている限りにおいて、出願時に先行技術と認められない部分と同様に、本開示に対する先行技術として明示的にも暗示的にも認めるものではない。
図1Aを参照すると、コンピュータアーキテクチャの一例を示す機能ブロック図が図示されている。プロセッサ100は、メインメモリ102およびグラフィクス処理モジュール104との間で、ノースブリッジモジュール106を介して通信する。ノースブリッジモジュール106は、周辺機器へのアクセスを可能とするサウスブリッジモジュール108と接続される。一例に過ぎないが、サウスブリッジモジュール108は、ペリフェラル・コンポーネント・インターコネクト(PCI)エクスプレス(Express)スロット110と接続される。図1Aでは、PCI Expressカード112−1および112−2がPCI Expressスロット110にインストールされる。
図1Bを参照すると、別のコンピュータアーキテクチャを図示している。プロセッサ150は、プロセッサ150が直接メインメモリ152およびグラフィクス処理モジュール154と通信できるようにする回路を備えている。プロセッサ150とグラフィクス処理モジュール154との間の通信で利用されるバスは、例えば、アクセラレーテッド・グラフィクス・ポート(AGP)またはPCI Expressであってよい。サウスブリッジモジュール156により、周辺機器はプロセッサ150にアクセスできるようになる。例えば、サウスブリッジモジュール156は、PCI Expressカード112−1および112−2がインストールされるPCI Expressスロット110と接続される。
サウスブリッジモジュール108および156は、ネットワーク化用のイーサネット(登録商標)、外部周辺機器用のユニバーサル・シリアル・バス(USB)、および、ディスクドライブ用のSATA(シリアル・アドバンスド・テクノロジ・アタッチメント)等の他のバスと接続されるとしてよい。PCI Expressカード112は、他のインターフェースを追加で実装するとしてよい。例えば、PCI Expressカード112−1は、プロセッサ100によるスモール・コンピュータ・システム・インターフェース(SCSI)、エクスターナルSATA(eSATA)、または、ファイバー・チャネル等のインターフェースへのアクセスを可能とするホストバスアダプタであってよい。
インターフェースアダプタは、不揮発性ランダムアクセスメモリ(RAM)を有するストレージモジュールと、ルックアップモジュールとを備える。ストレージモジュールは、不揮発性RAMにメタデータを格納する。メタデータは、ソリッドステートストレージデバイスにキャッシュされている外部ストレージデバイスからのデータを特定する。ルックアップモジュールは、読出要求を受信する。ルックアップモジュールはさらに、メタデータに基づき、読出要求に応じて、ソリッドステートストレージデバイスからキャッシュされたデータを提供するか、外部ストレージデバイスから取得された第2のデータを提供するかを選択する。
他の特徴を挙げると、ストレージモジュールはさらに、不揮発性RAMで書込バッファを維持する。第2のデータは、外部ストレージデバイスから取得されると書込バッファに格納される。第2のデータは、書込バッファに格納された後にソリッドステートストレージデバイスに格納される。別の特徴を挙げると、インターフェースアダプタは、書込バッファからソリッドステートストレージデバイスへと第2のデータを格納するタイミングを決定するバッファ制御モジュールを有する。バッファ制御モジュールは、ソリッドステートストレージデバイス内の互いに隣接した位置に格納される所定量のデータが、第2のデータを含め、書込バッファにあることに基づき、第2のデータをソリッドステートストレージデバイスに格納する。
さらに別の特徴を挙げると、インターフェースアダプタは、ソリッドステートストレージデバイス内にある選択データの上書きを選択的に許可するキャッシュエビクションモジュールを備える。他の特徴を挙げると、ルックアップモジュールは、読出要求に応じて、ストレージモジュールにあるデータのヒットリストを作成し、ストレージモジュール内に無いデータのミスリストを作成し、ミスリストに応じて外部ストレージデバイスにデータ要求を送信する。
ホストバスアダプタは、ソリッドステートストレージデバイスと、不揮発性ランダムアクセスメモリ(RAM)と、実行モジュールとを備える。ホストバスアダプタは、コンピュータにインストールされるように構成されている。実行モジュールは、ソリッドステートストレージデバイスに、外部ストレージデバイスからのデータをキャッシュする。実行モジュールはさらに、不揮発性RAMにメタデータを格納する。メタデータは、ソリッドステートストレージデバイスにキャッシュされているデータを示す。実行モジュールはさらに、コンピュータの中央プロセッサから読出要求を受信し、ソリッドステートストレージデバイスからキャッシュされたデータを用いて読出要求に選択的に応答する。
他の特徴を挙げると、実行モジュールは、不揮発性RAMの一部分を書込バッファとして利用する。実行モジュールはさらに、中央プロセッサから書込要求を受信する。実行モジュールはさらに、書込データをソリッドステートストレージデバイスに格納する前に、書込バッファに書込要求に対応する書込データを格納する。実行モジュールはさらに、読出要求に応じて、書込バッファからデータを選択的に提供する。実行モジュールはさらに、読出要求のうちいずれか1つに対応する第1のデータが書込バッファまたはソリッドステートストレージデバイスに格納されていないとメタデータが示す場合、外部ストレージデバイスに第1のデータを要求する。実行モジュールはさらに、第1のデータが外部ストレージデバイスから受信されると、第1のデータをソリッドステートストレージデバイスに格納する前に、書込バッファに第1のデータを格納する。
インターフェースアダプタを操作する方法は、インターフェースアダプタの不揮発性ランダムアクセスメモリ(RAM)にメタデータを格納する段階を備える。メタデータは、ソリッドステートストレージデバイスにキャッシュされている外部ストレージデバイスからのデータを特定する。当該方法は、読出要求を受信する段階を備え、メタデータに基づき、読出要求に応じて、ソリッドステートストレージデバイスからのキャッシュされたデータを提供するか、または、外部ストレージデバイスから取得された第2のデータを提供するかを選択する段階を備える。
本開示内容を適用するその他の分野については、詳細な説明、請求項および図面から明らかになるであろう。詳細な説明および具体的な例は、説明を目的として紹介されているに過ぎず、本開示の範囲を限定するものではない。
本開示は、詳細な説明および添付図面に基づき理解を深められたい。添付図面は以下の通りである。
先行技術に係るコンピュータアーキテクチャを示す機能ブロック図である。
先行技術に係るコンピュータアーキテクチャを示す機能ブロック図である。
本開示の原理に係るコンピューティングシステムの一例を示す機能ブロック図である。
本開示の原理に係るコンピューティングシステムの別の例を示す機能ブロック図である。
本開示の原理に係るキャッシュストレージアダプタの一例を示す上位の機能ブロック図である。
本開示の原理に係るキャッシュストレージアダプタの一例を示す別の上位のブロック図である。
本開示の原理に係るキャッシュストレージアダプタの実施例を示す機能ブロック図である。
本開示の原理に係るキャッシュストレージアダプタの実施例を示す機能ブロック図である。
本開示の原理に係るキャッシュストレージアダプタの動作例を示すフローチャートである。
本開示の原理に係るキャッシュストレージアダプタの動作例を示すフローチャートである。
以下に記載する説明は、本質的に説明を目的としたものに過ぎず、本開示、その適用範囲または利用方法を限定するものでは決してない。説明を分かり易くするべく、複数の図面にわたって同様の構成要素を特定する場合には同じ参照番号を利用する。本明細書で用いる場合、「A、BおよびCのうち少なくとも1つ」という表現は、(A or B or C)の非排他的論理和演算を意味するものと解釈されたい。方法を構成する段階は、本開示の原理を変更することなく、実行順序を変更し得るものと理解されたい。
本明細書で用いる場合、「モジュール」という用語は、特定用途向け集積回路(ASIC)、電子回路、組み合わせ論理回路、フィールドプログラマブルゲートアレイ(FPGA)、コードを実行するプロセッサ(共有、専用、群)、本明細書で説明する機能を実現するその他の適切な構成要素、または、上記の一部または全てを組み合わせた、例えば、システム・オン・チップの一部またはこれらを含むものを意味するとしてよい。「モジュール」という用語は、プロセッサが実行するコードを格納するメモリ(共有、専用、または、群)を含むとしてよい。
「コード」という用語は、上記で用いたように、ソフトウェア、ファームウェアおよび/またはマイクロコードを含むとしてよく、プログラム、ルーチン、関数、クラスおよび/またはオブジェクトを意味するとしてよい。「共有」という用語は、上記で用いたように、複数モジュールからのコードの一部または全てが、一の(共有)プロセッサを利用して実行されることを意味する。また、複数のモジュールからの一部または全てのコードは、一の(共有)メモリによって格納されているとしてよい。「群」という用語は、上記で用いたように、一のモジュールからのコードの一部または全てが、一群のプロセッサを利用して実行され得ることを意味する。また、一のモジュールからのコードの一部または全ては、一群のメモリを用いて格納されるとしてよい。
本明細書で説明する装置および方法は、1以上のプロセッサで実行する1以上のコンピュータプログラムで実装されるとしてよい。コンピュータプログラムは、持続性有形コンピュータ可読媒体に格納されているプロセッサで実行可能な命令を含む。コンピュータプログラムはさらに、格納データを含むとしてもよい。持続性有形コンピュータ可読媒体の例を挙げると、これらに限定されないが、不揮発性メモリ、磁気ストレージおよび光学ストレージがある。
図2Aを参照すると、本開示の原理に係るコンピューティングシステムの一例を図示している。コンピュータ202では、プロセッサ204が、ノースブリッジモジュール210を用いて、メインメモリ206およびグラフィクス処理モジュール208と接続されている。ノースブリッジモジュール210は、サウスブリッジモジュール212と接続されており、サウスブリッジモジュール212は、プロセッサ204が周辺機器にアクセスできるようにする。
サウスブリッジモジュール212は、PCI Expressスロット220と接続されている。PCI Expressカード222がPCI Expressスロットのうち1つにインストールされており、キャッシュストレージアダプタ224が、PCI Expressスロット220のうち別の1つにインストールされている。キャッシュストレージアダプタ224は、ストレージデバイス230と接続されており、プロセッサ204がストレージデバイス230に読み書きアクセスできるようにする。
プロセッサ204、メインメモリ206、グラフィクス処理モジュール208、ノースブリッジモジュール210、および、サウスブリッジモジュール212は、ホスト232と総称する場合がある。キャッシュストレージアダプタ224は、ホスト232がストレージデバイス230にアクセスできるようにする機能を持つものとも言える。ストレージデバイス230は、任意の種類の大容量ストレージを含むとしてよい。一例に過ぎないが、ストレージデバイス230は、ロジカル・ボリューム・マネジメント(LVM)デバイス、仮想ボリューム、RAID(rudundant array of inexpensive disks)、ロジカル・ユニット・ナンバー(LUN)で特定されるデバイス、インターネット・スモール・コンピュータ・システム・インターフェース(iSCSI)LUN、ファイバー・チャネル(FC)LUN、ファイバー・チャネル・オーバー・イーサネット(登録商標)(FCoE)LUN、ダイレクト・アタッチド・ストレージ(DAS)、または、ストレージ・エリア・ネットワーク(SAN)のうち1以上を含むとしてよい。
ホスト232は、キャッシュストレージアダプタ224を介して、ストレージデバイス230にコマンドを発行する。読み書き等のアクセス要求は、キャッシュストレージアダプタ224によってキャッシュされるとしてよい。制御コマンドは、キャッシュストレージアダプタ224によって解釈および実行されるとしてよく、および/または、ストレージデバイス230に渡されるとしてよい。さまざまな実施例によると、ホスト232からキャッシュストレージアダプタ224に送信されるコマンドは、SCSIコマンドであってよい。キャッシュストレージアダプタ224は、SCSIコマンドを、ストレージデバイス230に適したコマンドに変換するとしてよい。
キャッシュストレージアダプタ224はさらに、PCI Expressプロトコルと、ストレージデバイス230にアクセスするために用いられるプロトコルとの間で変換を行う。一例に過ぎないが、ストレージデバイス230は、イーサネット(登録商標)、エクスターナル・シリアル・アドバンスド・テクノロジ・アタッチメント(eSATA)、シリアル・アタッチド・SCSI(SAS)、スモール・コンピュータ・システムズ・インターフェース(SCSI)、Infiniband(インフィニバンド)、または、ファイバーチャネルを用いてアクセスされるとしてよい。キャッシュストレージアダプタ224は、PCI Expressカードとして図示されている。しかし、本開示の原理は他のインターフェースにも適用される。例えば、キャッシュストレージアダプタ224は、USB2.0またはUSB3.0等のUSB(ユニバーサル・シリアル・バス)インターフェースを用いることができる。これに代えて、キャッシュストレージアダプタ224は、PCIまたはPCI−X等のレガシーインターフェースを利用することができる。
キャッシュストレージアダプタ224は、さまざまなフォームファクターで実現することができる。例えば、キャッシュストレージアダプタ224は、ExpressCard/34またはExpressCard/54といったフォームファクターで実現可能である。ExpressCardフォームファクターは通常、ポータブルコンピュータについて利用されるものであるとしてよい。キャッシュストレージアダプタ224は、ExpressCardとして実現される場合、PCI ExpressまたはUSBを利用するように構成され得る。
図2Bを参照すると、本開示の原理に係るコンピューティングシステムの別の例が図示されている。コンピュータ250は、メインメモリ254およびグラフィクス処理モジュール256と接続されるプロセッサ252を備える。プロセッサ252は、サウスブリッジモジュール258を介して、周辺機器と接続される。例えば、サウスブリッジモジュール258は、PCI Expressスロット270へのアクセスを可能とする。PCI Expressカード222およびキャッシュストレージアダプタ224は、PCI Expressスロット270にインストールされているものとして図示されている。
プロセッサ252、メインメモリ254、グラフィクス処理モジュール256、および、サウスブリッジモジュール258は、ホスト272と総称することができる。キャッシュストレージアダプタ224は、図2Aに図示したホスト232と比較した場合に異なるホスト272のアーキテクチャを活用できるように、異なったやり方で実施または構成するとしてよい。ホスト232またはホスト272は、キャッシュストレージアダプタ224と通信するために、SCSIターゲットモードドライバ等のターゲットモードドライバ、または、イニシエータモードドライバを実装するとしてよい。
図2Bでは、キャッシュストレージアダプタ224は、ストレージエリアネットワーク280と接続されているものとして図示されている。ストレージエリアネットワーク280は、汎用のコンピュータネットワーク化コンポーネントおよび/または特定ストレージ用のネットワーク化コンポーネント等、ネットワーク化コンポーネントを利用して接続されている1以上のストレージデバイスを有している。例えば、ストレージエリアネットワーク280は、ファイバーチャネルインターコネクト、Infinibandインターコネクト、ギガビットまたは10ギガビットのイーサネット(登録商標)インターコネクト等のイーサネット(登録商標)インターコネクト、ファイバーチャネルオーバーイーサネット(登録商標)インターコネクト、iSCSIインターコネクト、および、ATAオーバーイーサネット(登録商標)インターコネクトを含むとしてよい。
ストレージエリアネットワーク280はさらに、他のコンピュータに対してストレージリソースを提供するとしてよい。一例に過ぎないが、第2のコンピュータ282および第3のコンピュータ284が、ストレージエリアネットワーク280に接続されているものとして図示されている。さまざまな実施例によると、コンピュータ250は、第2のコンピュータ282および/または第3のコンピュータ284によってアクセスされるストレージエリアネットワーク280のストレージリソースにデータを書き込むとしてよい。
このような状況において、書込データのコヒーレンシは、キャッシュストレージアダプタ224のライトスルーモードをイネーブルすることによって改善されるとしてよい。キャッシュストレージアダプタ224は、ライトスルーモードでは、遅延をできる限り短く抑えて、ストレージエリアネットワーク280に修正データを提供する。キャッシュストレージアダプタ224は、ライトバックモード等の他のモードでは、修正データをストレージエリアネットワーク280に送り返す前に、修正データをより長い期間にわたって格納するとしてよい。
図3Aを参照すると、キャッシュストレージアダプタ300の一例を示す上位のブロック図が図示されている。一例に過ぎないが、キャッシュストレージアダプタ300は、ホスト232およびストレージデバイス230と接続されているものとして図示されている。キャッシュストレージアダプタ300は、フラッシュメモリまたはリードオンリーメモリ等のファームウェア312から命令を実行するプロセッサ310を備える。プロセッサ310は、内部仮ストレージを備えるとしてよく、仮命令およびデータ情報を揮発性メモリ314に格納するとしてよい。
プロセッサ310は、不揮発性RAM(ランダムアクセスメモリ)320と接続されている。不揮発性RAM320は、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、または、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)等の揮発性RAMを含むとしてよい。不揮発性RAM320は、揮発性RAMに不揮発性RAMの特性を与えるためのコンポーネントを含む。
一例に過ぎないが、不揮発性RAM320は、電池等のバックアップ電源を含むとしてよい。これは、充電式電池であってよい。不揮発性RAM320はさらに、不揮発性RAM320の格納内容を維持するための電力を供給するスーパーキャパシタまたは任意の適切な種類の電気二重層キャパシタを含むとしてよい。不揮発性RAM320はこのため、限られた時間の間のみ、データを維持するとしてよい。このタイムフレーム内では、バックアップ電力がキャッシュストレージアダプタ300に供給され得る。例えば、中断不可能な電源またはバックアップ発電機によって、キャッシュストレージアダプタ300に電力を再供給することができる。
プロセッサ310はさらに、ソリッドステートドライブ330と接続されている。ソリッドステートドライブ330は、フラッシュメモリ等の不揮発性メモリを含む。一例に過ぎないが、フラッシュメモリは、シングルレベルセル(SLC)ストレージセル、マルチレベルセル(MLC)ストレージセル、および/または、標準的なMLCストレージセルよりもエラーレートが低くなるように設計されているエンタープライズMLCストレージセルを含むとしてよい。ストレージセルは、NANDストレージセルであってよい。
プロセッサ310は、ストレージデバイス230からのデータをソリッドステートドライブ330にキャッシュする命令を実行する。ソリッドステートドライブ330に格納されているデータに関する情報は、キャッシュメタデータと呼ばれる。キャッシュメタデータは、不揮発性RAM320に格納されている。キャッシュメタデータはさらに、ソリッドステートドライブに格納されているデータに関連する属性、例えば、最終アクセス時刻、アクセス数、および、データの修正の有無を追加で格納しているとしてよい。
ホスト232が提供する書込データは、不揮発性RAM320に格納される。不揮発性RAM320のうち書込データを格納するために用いられる一部分は、書込バッファと呼ばれている。プロセッサ310は、不揮発性RAM320の特定の一部分を書込バッファと指定するとしてよい。プロセッサ310は、この一部分の量を、書込バッファが必要とするスペースに応じて調整するとしてよい。
さまざまな実施例によると、プロセッサ310は、不揮発性RAM320内において、書込バッファを明示的に指定しない。これに代えて、プロセッサ310は、キャッシュメタデータおよび書込バッファデータの両方を不揮発性RAM320に格納する。不揮発性RAM320での空きスペースが限定されると、書込バッファデータの量を減らすとしてよい。
さまざまな実施例によると、プロセッサ310は、キャッシュメタデータを不揮発性RAM320のアドレス範囲の一端に格納して、書込バッファが不揮発性RAM320のアドレス範囲の反対側の端部で始まるように格納するとしてよい。格納されるキャッシュメタデータおよび書込バッファデータが増えるにつれて、不揮発性RAM320のそれぞれの部分が増加して互いにぶつかることとなる。プロセッサ310はこの後、書込バッファデータとキャッシュメタデータとが重複しないようにする責任を持つとしてよい。
ソリッドステートドライブ330は、ストレージコントローラと同様にストレージセルを含むとしてよい。ストレージコントローラは、ソリッドステートドライブ330の利用可能な寿命を最大限に長くするためにソリッドステートドライブ330内のさまざまな位置にデータを動的に割り当てるウェアレベリングアルゴリズムを実装するとしてよい。
ソリッドステートドライブ330は、1以上のコントローラ集積回路および1以上のストレージ集積回路によって実現されるとしてよい。こういった集積回路は、キャッシュストレージアダプタ300の主要回路基板に実装されるとしてよい。これに代えて、ソリッドステートドライブ330の集積回路は、別の回路基板上に実現され、この回路基板をドーターボードとしてキャッシュストレージアダプタ300に差し込むとしてもよい。
他の実施例によると、ソリッドステートドライブ330は、完全に筐体内に収容されているドライブであるとしてよく、ラップトップコンピュータの主要ハードドライブ用など、一般的使用を目的として小売店で入手可能なものであってよい。これらの実施例では、ソリッドステートドライブ330は、キャッシュストレージアダプタ300に実装されているとしてもよいし、または、可撓性のケーブルでキャッシュストレージアダプタ300に接続されているとしてよい。
一例に過ぎないが、ソリッドステートドライブ330は、SATAインターフェース、eSATAインターフェースまたはシリアルアタッチドSCSI(SAS)インターフェースを介して、ホスト232およびキャッシュストレージアダプタ300が共有している筐体の内部に実装されるとしてよい。キャッシュストレージアダプタ300は、ソリッドステートドライブ330がソリッドステートドライブ330のサイズを大きくするために、そして、利用可能な寿命が終わるとソリッドステートドライブを交換するために交換可能となるように構成されているとしてよい。
キャッシュストレージアダプタ300は、ソリッドステートドライブ330を含めた複数のソリッドステートドライブに対して接続され得る。さまざまな実施例によると、複数のソリッドステートドライブの容量および性能特性は、均一である必要はないとしてよい。さまざまな実施例によると、ソリッドステートドライブのうち1つ、例えば、ソリッドステートドライブ330は、キャッシュストレージアダプタ300に実装されている一方、残りのソリッドステートドライブは、ケーブルを介してキャッシュストレージアダプタ300に接続されているとしてよい。
図3Bを参照すると、キャッシュストレージアダプタ350の実施例を示す別の上位の機能ブロック図が図示されている。プロセッサ310、ファームウェア312、揮発性メモリ314、および、不揮発性RAM320は、図3Aに示したものと同様であるとしてよい。図3Bにおいて、ソリッドステートドライブ360は、キャッシュストレージアダプタ350から独立したものとして図示されている。ソリッドステートドライブ360はこのため、キャッシュストレージアダプタ350とは別個に実装されるとしてよく、キャッシュストレージアダプタ350とは同じコンピュータ筐体の中には位置しないとしてもよい。
図4を参照すると、キャッシュストレージアダプタ400の実施例を示す機能ブロック図が図示されている。キャッシュストレージアダプタ400は、実行モジュール410およびストレージモジュール420を含む。実行モジュール410は、プロセッサおよびメモリを含むとしてよく、プロセッサはさまざまな機能を実行するべくメモリから命令を実行する。
例えば、図4の実行モジュール410は、要求変換モジュール422、ルックアップモジュール424、入出力最適化モジュール426、キャッシュエビクションモジュール428、先読みモジュール430、および、キャッシュミスモジュール432を含む。要求変換モジュール422は、ホスト232からのコマンドを、実行モジュール410の残りのモジュールによって利用可能な形式に変換する。さらに、要求変換モジュール422は、ホスト232からのコマンドを、ストレージデバイス230に対応する形式に変換するとしてよい。
一例に過ぎないが、ホスト232は、SCSIコマンドを要求変換モジュール422に提供するとしてよい。要求変換モジュール422はこの後、これらのコマンドを一般的なアクセスコマンドに変換するとしてもよいし、および/または、これらのコマンドをストレージデバイス230に対応する形式、例えば、ファイバーチャネルコマンドに変換するとしてよい。さまざまな実施例によると、要求変換モジュール422は、アクセスコマンド、例えば、読出コマンドおよび書込コマンドの処理方法を制御コマンドの処理方法とは異ならせるとしてよい。例えば、制御コマンドは、変換を最小限に抑えるか、または、変換を行わないとしてよく、ストレージデバイス230に渡す。
ストレージモジュール420は、不揮発性RAM440を含む。不揮発性RAM440では、実行モジュール410は、キャッシュメタデータ442を格納しており、不揮発性RAM440の一部を書込バッファ444として利用する。実行モジュール410は、不揮発性RAM440の一部分を書込バッファ444として利用されるように割り当てるとしてよい。この割り当ては、必要に応じて調整されるとしてよい。これに代えて、実行モジュール410は、不揮発性RAM440の一部分を書込バッファ444として保留することなく、単に書込バッファデータを不揮発性RAM440に格納するとしてもよい。
ストレージモジュール420もまた、論理的観点から見ると、ソリッドステートドライブ450を備える。ソリッドステートドライブ450は、より一般的にはソリッドステートストレージデバイスと呼ばれる。ソリッドステートドライブ450は、キャッシュストレージアダプタ400の一部として図示されているが、上述したように取り外し可能にキャッシュストレージアダプタ400に実装されているとしてもよいし、または、キャッシュストレージアダプタ400とは別個に構成されておりケーブルを介して接続されているとしてもよい。ソリッドステートドライブ450は、キャッシュストレージアダプタ400と共通の筐体内に収容されているとしてもよいし、または、当該筐体の外部に配置されるとしてもよい。ソリッドステートドライブ450は、SATAまたはeSATAを用いてキャッシュストレージアダプタ400の残りの構成要素と通信を行うとしてよい。
ストレージデバイス230は、機能的にも物理的にもキャッシュストレージアダプタ400とは別個の構成要素であるので、外部ストレージデバイスと呼ぶ。多くの実施例によると、ストレージデバイス230は、キャッシュストレージアダプタ400を収容するコンピュータ筐体とは別個の筐体内に配置されている。実際には、ストレージデバイス230は、キャッシュストレージアダプタ400とは同じサーバーラックにすら配置されていないとしてもよく、または、キャッシュストレージアダプタ400と同じ部屋にすら配置されていないとしてもよい。
ストレージデバイス230が特にストレージエリアネットワーク(SAN)として実施される場合、ストレージデバイス230は一の位置に限定されるものではないとしてよい。さまざまな実施例によると、ストレージエリアネットワーク(SAN)等のストレージデバイス230の実施例では内部の複雑さが見えないようになるとしてよい。ストレージデバイス230はこのため、一のハードディスクドライブ等、一のハードウェアボリュームであるかのように、キャッシュストレージアダプタ400に対してインターフェースを提示するとしてよい。
要求変換モジュール422が読出要求を受信すると、読出要求の対象であるアドレスをルックアップモジュール424に供給する。ルックアップモジュール424は、キャッシュメタデータ442を検査して、対象となるアドレスが、書込バッファ444またはソリッドステートドライブ450のいずれかに現在キャッシュされているか否かを判断する。ルックアップモジュール424は、キャッシュされている対象アドレスのヒットリストを生成するとともに、キャッシュされていないアドレスのミスリストを生成する。
ルックアップモジュール424は、ミスリストをキャッシュミスモジュール432に供給する。キャッシュミスモジュール432は通常、ストレージデバイス230に対して対象アドレスを要求する。ルックアップモジュール424は、読出要求のサイズに基づき、読出要求を複数のルックアップ要求に分割するとしてもよい。ルックアップモジュール424は、ルックアップ要求毎に、キャッシュメタデータ442に基づきヒットリストおよびミスリストを決定する。
ストレージデバイス230へのアクセスの粒度は、ホスト232から受信するアクセス要求の粒度とは異なるとしてよい。例えば、ホスト232は、1バイトまたは1ワードを要求するとしてよいが、ストレージデバイス230はブロック単位でアクセスされるとしてもよい。言い換えると、読出または書込は、1以上のブロックとして実行される場合がある。一例に過ぎないが、各ブロックのサイズは4キロバイトであるとしてよい。キャッシュミスモジュール432はこのため、ミスリストに記載されている対象アドレスを含むブロックをいずれも、ストレージデバイス230に対して要求するとしてもよい。この場合は自動的に、ストレージデバイス230から、対象アドレスの前後のデータを含み得る1ブロックを読み出すことによって、空間局所性を利用することになる。
また、キャッシュミスモジュール432は、さらに空間局所性を利用するべく、1以上の後続ブロックおよび/または1以上の先行ブロックを同時にストレージデバイス230に対して要求するとしてよい。先読みモジュール430は、近い将来にアクセスされるであろうブロックの予想を試みるとしてよい。先読みモジュール430はこの後、これらのブロックについても読出要求をストレージデバイス230に送る。さまざまな実施例によると、先読みモジュール430は、ストレージデバイス230がキャッシュミスモジュール432からの要求への対応を終了するまで、読出要求の発行を待つとしてよい。
入出力最適化モジュール426は、ホスト232が要求するアクセスおよびストレージデバイス230に送信された読出要求の記録を取るとしてよい。入出力最適化モジュール426は、ストレージデバイス230の温度および局所情報を動的に較正するとしてよい。この較正は、領域毎に行われるとしてよい。各領域は、所定数のブロックであるか、または、入出力最適化モジュール426の決定に基づきサイズが可変であるとしてよい。
「温度」という単語は、ストレージデバイス230の所定領域での動作の量を意味する。「局所情報」は、所定のブロックがアクセスされた後に周囲のブロックへのアクセスが発生する確率を意味する。入出力最適化モジュール426は、あるブロックが近い将来にアクセスされる可能性に基づき、先読みモジュール430を呼び出すとしてよい。
ストレージデバイス230が供給する読出データは、書込バッファ444に格納する。キャッシュメタデータ442は、当該データが書込バッファ444に格納されたことを示すべく更新される。ルックアップモジュール424はこの後、ヒットリストおよびミスリストの両方から得られるデータを用いて、要求変換モジュール422を介して、読出要求に応答することができる。
要求変換モジュール422がホスト232から書込要求を受信すると、書込要求に関連するデータが書込バッファ444に格納される。この新しく格納されたデータは、ストレージデバイス230に格納されているデータとは異なるので、「汚染」データと呼ばれる。結果として、修正されたデータをストレージデバイス230に送信する。しかし、ライトスルーモードでは、書込バッファ444が受信したデータを、できる限り遅延を短くして、ストレージデバイス230に渡す。上述したように、ライトスルーモードは、他のシステムがストレージデバイス230にアクセスしている場合に利用されるので、修正されたデータにアクセスする必要があるとしてよい。
書込バッファ444のデータは、ソリッドステートドライブ450に比べると書込バッファ444の容量が制限されるので、ソリッドステートドライブ450に書き込まれる。さまざまな実施例によると、ソリッドステートドライブ450への書き込みでは、ソリッドステートドライブ450の1ブロック全体の全ての要素への書き込みが必要となる。ソリッドステートドライブ450のブロックサイズは、ストレージデバイス230のブロックサイズとは、同じであってもよいし、異なるとしてもよい。
ソリッドステートドライブは通常、書込/消去が実行される度に、性能が劣化し、最終的には利用不可能になる。このため、書込バッファ444からのデータは、1ブロック全体に対応するデータを書き込むことになってから、ソリッドステートドライブ450に書き込まれるとしてよい。これによって、新しいデータがソリッドステートドライブ450の一のブロックに追加される度に、同じブロックを書き変える必要がなくなる。また、一のデータの変更は、ソリッドステートドライブ450にデモートされる前に、複数回にわたって書込バッファに書き込まれる場合がある。このため、この一のデータについてのソリッドステートドライブ450のストレージセルは、当該データが複数回変更されているにも関わらず、書込サイクルが1回のみで済む。
キャッシュエビクションモジュール428は、ソリッドステートドライブ450内のデータのキャッシュを中止すべきタイミングを判断する。当該データは、ソリッドステートドライブ450から実際に削除されるとしてもよいし、または、他の実施例では、当該データが格納されていた領域を空き領域とマーキングするとしてもよい。このため、新しくキャッシュされるデータを、エビクションされたデータに上書きすることができる。エビクションの前に、ストレージデバイス230に未送信の汚染データがあれば、ストレージデバイス230にフラッシュする。さらに、周期的に、または、さまざまなパラメータによって決まるその他の間隔で、ソリッドステートドライブ450に格納されている汚染データをストレージデバイス230にフラッシュして、ストレージデバイス230が最も新しい修正を反映するようにする。一例に過ぎないが、ソリッドステートドライブ450は、ソリッドステートドライブ450に格納されている汚染データがしきい値を超えると、ストレージデバイス230にデータをフラッシュするとしてよい。
図5を参照すると、キャッシュストレージアダプタ500の実施例を示す機能ブロック図が図示されている。キャッシュストレージアダプタ500のうち図4に記載の要素と同様の機能を持つ要素については、同じ参照番号を付与している。図5において、図4では明確に記載していた接続関係について一部は、図示を省略している。
例えば、入出力最適化モジュール426は、要求変換モジュール422とルックアップモジュール424との間でやり取りされる要求を観察する。また、入出力最適化モジュール426は、先読みモジュール430に、ストレージデバイス230に要求すべき対象アドレスを供給する。
アービター504は、先読みモジュール430およびキャッシュミスモジュール432から要求を受信し、これらの要求をストレージデバイス230に送信する。アービター504は、先読みモジュール430からの要求よりも、キャッシュミスモジュール432からの要求を優先するとしてよい。アービター504はさらに、隣接する要求等の要求を組み合わせて、ストレージデバイス230へのアクセスを効率化するとしてよい。
バッファ制御モジュール508は、書込バッファ444からソリッドステートドライブ450へのデータの送信タイミング、または、デモートタイミングを決定する。データがソリッドステートドライブ450に送信されると、バッファ制御モジュール508はキャッシュメタデータ442を更新して新しい格納位置を反映させる。バッファ制御モジュール508およびキャッシュエビクションモジュール428は、入出力最適化モジュール426と通信して、どのデータをソリッドステートドライブ450にデモートすべきか、どのデータをソリッドステートドライブ450からエビクションすべきかを判断するとしてよい。
ストレージデバイス230から読み出されたデータが書込バッファ444に格納されているので、このデータ経路が図5に明示されている。ルックアップモジュール424が読出要求を処理すると、キャッシュメタデータ442が、要求されたデータが格納されている書込バッファ444および/またはソリッドステートドライブ450内の位置を示す。これらのアドレスは、書込みバッファ444および/またはソリッドステートドライブ450に供給される。書込バッファ444および/またはソリッドステートドライブ450はこの後、要求されたデータをルックアップモジュール424に供給する。ルックアップモジュール424はこの後、データをアセンブルして、要求変換モジュール422を介して、ホスト232からの要求に応答する。
ルックアップモジュール424が書込要求を処理すると、書込要求に関連するデータは、格納のために、書込バッファ444に供給される。キャッシュエビクションモジュール428は、キャッシュメタデータ442を更新して、ソリッドステートドライブ450に前に格納されていたデータはエビクションされたのでキャッシュされていない旨を示す。さまざまな実施例によると、キャッシュエビクションモジュール428は、書込バッファ444がエビクション直前のデータの修正後のバージョンを格納していないことを、バッファ制御モジュール508に確認するとしてよい。
図6を参照すると、本開示の原理に係るキャッシュストレージアダプタの動作例を示すフローチャートが図示されている。604で開始され、読出要求を受信している場合には608に進み、受信していない場合には612に進む。608において、読出要求を変換して616に進む。616において、読出要求の対象が書込バッファにある場合には620に進み、無い場合には624に進む。
620において、書込バッファから読出要求が要求するデータを提供し、612に進む。624において、対象となるデータがソリッドステートドライブに格納されているか否かを判断する。格納されている場合には628に進み、格納されていない場合には632に進む。628において、読出要求に応じてソリッドステートドライブからデータを提供し、612に進む。632において、ストレージデバイスにデータを要求し、636に進む。636において、ストレージデバイスからのデータを書込バッファに格納し、620に進む。
612において、書込要求を受信したか否かを判断する。受信している場合には640に進み、受信していない場合には644に進む。640において、書込要求を変換して、648に進む。648において、書込要求に対応するデータを書込バッファに書き込んで、644に進む。644において、ソリッドステートドライブ内の空きスペースがしきい値未満か否かを判断する。しきい値未満である場合には652に進み、しきい値以上である場合には656に進む。652において、ソリッドステートデバイス内の空きスペースを増やすために、どのブロックをエビクションするかを判断して、660に進む。
660において、エビクションすべきブロックのいずれかが汚染データを含む場合には664に進み、含まない場合には668に進む。664において、汚染データをストレージデバイスに書き込んで、668に進む。668において、ソリッドステートドライブ内のエビクションされたブロックを空きブロックとマーキングして、新しいデータを上書きできることを示す。さまざまな実施例によると、空きブロックとしてマーキングされているブロックに対する要求が発生すると、当該ブロックは再度利用中とされ、当該データを用いて要求に対応する。656に続く。
656において、書込バッファからブロックをデモートすべきか否かを判断する。デモートすべきである場合には672に進み、すべきでない場合には676に進む。672において、書込バッファからソリッドステートドライブへとデータを書込み、680に進む。680において、書込バッファから書き込まれたブロックを空きブロックとマーキングして、他のデータで利用できるようにして、676に進む。
676において、ストレージデバイスがアイドル状態であるか否かを判断する。アイドル状態である場合には684に進み、そうでない場合には604に戻る。例えば、ストレージデバイスは、書込要求または読出要求に対応していない場合にはアイドル状態であると見なされるとしてよい。684において、ソリッドステートドライブ内のいずれかのブロックが汚染データであるか否かを判断する。汚染データがある場合には688に進み、無い場合には692に進む。688において、汚染ブロックをストレージデバイスに書き込んで、604に戻る。692において、読出要求および書込要求を分析して、694に進む。
694において、ストレージデバイスの各領域を、動作レベルおよび所与のブロックが要求された後に隣接するブロックが要求される確率に応じて特徴付けする。696に進み、今後の読出アクセスが694での特徴付けに基づいて予測可能であるか否かを判断する。予測可能である場合には698に進み、そうでない場合には604に戻る。698において、694の特徴付けによって予測されるアドレスでストレージデバイスからデータをプリフェッチする。この後、604に戻る。
図7を参照すると、本開示の原理に係るキャッシュストレージアダプタの動作例を示すフローチャートが図示されている。具体的には、図7は、読み書き要求の処理の実施例に注目している。704で開始され、読出要求が受信されている場合には708に進み、受信されていない場合には712に進む。708において、読出要求を変換する。716に続き、読出要求を読出要求のサイズに基づいて複数のルックアップ要求にパーシングする。
720に続き、ルックアップ要求をキャッシュメタデータを用いて処理する。724に続き、キャッシュ内で利用可能なデータが書込バッファ内にあるか、または、ソリッドステートドライブ内にあるかに基づいてヒットリストを作成する。728に進み、キャッシュ内で利用可能でないデータのミスリストを作成する。732に続き、ミスリストが空の場合には736に進み、記載がある場合には740に進む。
740において、キャッシュミスハンドラを呼び出して、ミスリストをキャッシュミスハンドラに供給する。744に進み、ミスリストに応じてストレージデバイスからデータをフェッチする。748に続き、ストレージデバイスからフェッチされたデータを書込キャッシュに格納する。752へと続き、キャッシュメタデータおよびミスリストを更新して、要求されたデータが現在は書込キャッシュに格納されていることを示す。736に進み、ヒットリストおよびミスリストに対応する混合結果を含む、読出要求に対する応答を返信する。この後、712に進む。
712において、書込要求を受信したか否かを判断して、受信した場合には760に進み、受信していない場合には704に戻る。760において、書込要求を変換する。764に進み、書込要求に対応するデータを書込バッファに書き込む。768に進み、ライトスルーモードがアクティブになっている場合には772に進み、アクティブでない場合には776に進む。772において、データをストレージデバイスに書き込み、776に進む。776において、キャッシュメタデータを更新して、新しく格納された書込みデータを示し、704に戻る。
704に戻ると図示されているのは、読出要求および書込要求はそれぞれ独自のループを用いて処理される一方、デモート、エビクション、入出力最適化、および、フラッシュ等のその他の機能は他の制御ループを用いて実行されるためである。他の制御ループは、並行して動作するとしてもよく、読出要求および書込要求の処理よりも優先度が低いとしてよい。
本開示に係る広義の教示内容は、さまざまな形態で実施可能である。このため、本開示には具体例が含まれるが、本開示の真の範囲は、図面、明細書および請求項を参照することにより他にも変形例が明らかになるので、それらに限定されるべきではない。

Claims (20)

  1. 不揮発性ランダムアクセスメモリ(RAM)を有するストレージモジュールと、
    読出要求を受信するルックアップモジュールと
    を備え、
    前記ストレージモジュールは、前記不揮発性RAMにメタデータを格納し、前記メタデータは、ソリッドステートストレージデバイスにキャッシュされている外部ストレージデバイスからのデータを特定し、
    前記ルックアップモジュールは、前記メタデータに基づき、且つ、前記読出要求に応じて、前記ソリッドステートストレージデバイスからキャッシュされたデータを供給するか、または、前記外部ストレージデバイスから取得した第2のデータを供給するかを選択するインターフェースアダプタ。
  2. 前記ストレージモジュールはさらに、前記不揮発性RAM内に書込バッファを維持しており、
    前記第2のデータは、前記外部ストレージデバイスから取得されると、前記書込バッファに格納され、
    前記第2のデータは、前記書込バッファに格納された後、前記ソリッドステートストレージデバイスに格納される請求項1に記載のインターフェースアダプタ。
  3. 前記ルックアップモジュールは、前記ソリッドステートストレージデバイスからのデータ、または、前記書込バッファからのデータを用いて、前記読出要求に選択的に応答する請求項2に記載のインターフェースアダプタ。
  4. 前記ルックアップモジュールは、前記書込バッファからの前記第2のデータで、前記読出要求に対して応答する請求項3に記載のインターフェースアダプタ。
  5. 前記書込バッファからの前記第2のデータを前記ソリッドステートストレージデバイスに格納するタイミングを判断するバッファ制御モジュールをさらに備える請求項2に記載のインターフェースアダプタ。
  6. 前記バッファ制御モジュールは、前記第2のデータを含めて所定量のデータが、前記ソリッドステートストレージデバイス内の互いに隣接する複数の位置に格納すべく、前記書込バッファ内にあることに基づき、前記第2のデータを前記ソリッドステートストレージデバイスへと格納する請求項5に記載のインターフェースアダプタ。
  7. 前記ルックアップモジュールは、書込要求を受信し、前記書込要求に対応付けられている書込データを前記書込バッファに格納する請求項2に記載のインターフェースアダプタ。
  8. ライトスルーモードがイネーブルされると、前記書込データはさらに前記外部ストレージデバイスに供給される請求項7に記載のインターフェースアダプタ。
  9. 前記ソリッドステートストレージデバイス内の選択データの上書きを選択的に許可するキャッシュエビクションモジュールをさらに備える請求項1に記載のインターフェースアダプタ。
  10. 前記キャッシュエビクションモジュールは、前記選択データが上書きされる前に、前記外部ストレージデバイスに前記選択データのうち修正部分を送信する請求項9に記載のインターフェースアダプタ。
  11. 前記ルックアップモジュールは、前記読出要求に応じて、前記ストレージモジュールにあるデータのヒットリストを作成し、前記ストレージモジュールに無いデータのミスリストを作成し、前記ミスリストに応じて前記外部ストレージデバイスにデータ要求を送信する請求項1に記載のインターフェースアダプタ。
  12. 第1のバス要求を前記読出要求に変換し、第2のバス要求を書込要求に変換する変換モジュールをさらに備える請求項1に記載のインターフェースアダプタ。
  13. コンピュータにインストールされるホストバスアダプタであって、
    ソリッドステートストレージデバイスと、
    不揮発性ランダムアクセスメモリ(RAM)と、
    実行モジュールと
    を備え、
    前記実行モジュールは、
    外部ストレージデバイスからのデータを前記ソリッドステートストレージデバイスにキャッシュし、
    前記ソリッドステートストレージデバイス内にキャッシュされているデータを示すメタデータを、前記不揮発性RAMに格納し、
    前記コンピュータの中央プロセッサから読出要求を受信し、
    前記ソリッドステートストレージデバイスにキャッシュされた前記データを用いて、前記読出要求に選択的に応答するホストバスアダプタ。
  14. 前記実行モジュールは、
    前記不揮発性RAMの一部分を書込バッファとして利用し、
    前記中央プロセッサから書込要求を受信し、
    前記書込みデータを前記ソリッドステートストレージデバイスに格納する前に、前記書込要求に対応する書込データを前記書込バッファに格納し、
    前記読出要求に応じて、前記書込バッファから選択的にデータを供給し、
    前記メタデータが、前記読出要求のうちいずれか1つに対応する第1のデータが前記書込バッファまたは前記ソリッドステートストレージデバイスに格納されていない旨を示す場合、前記外部ストレージデバイスに前記第1のデータを要求し、
    前記第1のデータが前記外部ストレージデバイスから受信されると、前記第1のデータを前記ソリッドステートストレージデバイスに格納する前に、前記第1のデータを前記書込バッファに格納する請求項13に記載のホストバスアダプタ。
  15. インターフェースアダプタを動作させる方法であって、
    外部ストレージデバイスからのデータであってソリッドステートストレージデバイスにキャッシュされているデータを特定するメタデータを、前記インターフェースアダプタの不揮発性ランダムアクセスメモリ(RAM)に格納する段階と、
    読出要求を受信する段階と、
    前記メタデータに基づき、且つ、前記読出要求に応じて、前記ソリッドステートストレージデバイスからキャッシュされたデータを供給するか、または、前記外部ストレージデバイスから取得した第2のデータを供給するか選択する段階と
    を備える方法。
  16. 前記不揮発性RAMの内部に書込バッファを維持する段階と、
    前記外部ストレージデバイスから前記第2のデータを取得すると、前記書込バッファに前記第2のデータを格納する段階と、
    前記第2のデータを前記書込バッファに格納した後に、前記ソリッドステートストレージデバイスに前記第2のデータを格納する段階と、
    前記書込バッファから前記第2のデータで前記読出要求に選択的に応答する段階と
    をさらに備える請求項15に記載の方法。
  17. 前記第2のデータを、前記第2のデータを含めて所定量のデータが、前記ソリッドステートストレージデバイス内の互いに隣接する複数の位置に格納すべく、前記書込バッファ内にあることに基づくタイミングで、前記ソリッドステートストレージデバイスに格納する段階をさらに備える請求項16に記載の方法。
  18. 書込要求を受信する段階と、
    前記書込要求に対応付けられている書込データを前記書込バッファに格納する段階と
    をさらに備え、
    ライトスルーモードがイネーブルされると、前記書込データはさらに前記外部ストレージデバイスに供給される請求項16に記載の方法。
  19. 前記ソリッドステートストレージデバイス内の選択データの上書きを選択的に許可する段階と、
    前記選択データを上書きする前に、前記選択データのうち修正部分を前記外部ストレージデバイスに送信する段階と
    をさらに備える請求項15に記載の方法。
  20. 前記読出要求に応じて、前記ソリッドステートストレージデバイスにあるデータのヒットリストを作成する段階と、
    前記読出要求に応じて、前記ソリッドステートストレージデバイスに無いデータのミスリストを作成する段階と、
    前記ミスリストに応じて前記外部ストレージデバイスにデータ要求を送信する段階と、
    前記ヒットリストおよび前記ミスリストの組み合わせに基づき、前記読出要求に応答する段階と
    をさらに備える請求項15に記載の方法。
JP2013509270A 2010-05-05 2011-05-05 キャッシュストレージアダプタアーキテクチャ Pending JP2013530448A (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US33175910P 2010-05-05 2010-05-05
US61/331,759 2010-05-05
US13/101,534 2011-05-05
US13/101,534 US20110276746A1 (en) 2010-05-05 2011-05-05 Caching storage adapter architecture
PCT/US2011/035370 WO2011140349A1 (en) 2010-05-05 2011-05-05 Caching storage adapter architecture

Publications (1)

Publication Number Publication Date
JP2013530448A true JP2013530448A (ja) 2013-07-25

Family

ID=44902717

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013509270A Pending JP2013530448A (ja) 2010-05-05 2011-05-05 キャッシュストレージアダプタアーキテクチャ

Country Status (5)

Country Link
US (1) US20110276746A1 (ja)
EP (1) EP2567323A1 (ja)
JP (1) JP2013530448A (ja)
CN (1) CN102906714A (ja)
WO (1) WO2011140349A1 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9053010B2 (en) 2012-01-20 2015-06-09 Marvell World Trade Ltd. Cache system using solid state drive
US9507524B1 (en) 2012-06-15 2016-11-29 Qlogic, Corporation In-band management using an intelligent adapter and methods thereof
US20140219021A1 (en) * 2013-02-07 2014-08-07 Seagate Technology Llc Data protection for unexpected power loss
US9146684B2 (en) 2012-09-28 2015-09-29 Netapp, Inc. Storage architecture for server flash and storage array operation
US9116819B2 (en) * 2012-10-17 2015-08-25 Datadirect Networks, Inc. Reducing metadata in a write-anywhere storage system
US9454305B1 (en) 2014-01-27 2016-09-27 Qlogic, Corporation Method and system for managing storage reservation
US10838862B2 (en) 2014-05-21 2020-11-17 Qualcomm Incorporated Memory controllers employing memory capacity compression, and related processor-based systems and methods
US10503661B2 (en) * 2014-05-21 2019-12-10 Qualcomm Incorporated Providing memory bandwidth compression using compressed memory controllers (CMCs) in a central processing unit (CPU)-based system
US9423980B1 (en) 2014-06-12 2016-08-23 Qlogic, Corporation Methods and systems for automatically adding intelligent storage adapters to a cluster
US9436654B1 (en) 2014-06-23 2016-09-06 Qlogic, Corporation Methods and systems for processing task management functions in a cluster having an intelligent storage adapter
US9940241B1 (en) * 2014-07-03 2018-04-10 Sanmina Corporation Network system with cache offload service for flash storage
US9477424B1 (en) 2014-07-23 2016-10-25 Qlogic, Corporation Methods and systems for using an intelligent storage adapter for replication in a clustered environment
US9460017B1 (en) 2014-09-26 2016-10-04 Qlogic, Corporation Methods and systems for efficient cache mirroring
US9934177B2 (en) 2014-11-04 2018-04-03 Cavium, Inc. Methods and systems for accessing storage using a network interface card
US9483207B1 (en) 2015-01-09 2016-11-01 Qlogic, Corporation Methods and systems for efficient caching using an intelligent storage adapter
KR102295223B1 (ko) * 2015-01-13 2021-09-01 삼성전자주식회사 속도 모드 관리자를 포함하는 저장 장치 및 사용자 장치
TWI536166B (zh) * 2015-01-27 2016-06-01 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元以及記憶體儲存裝置
CN105988950B (zh) * 2015-02-03 2019-05-21 群联电子股份有限公司 存储器管理方法、存储器控制电路单元与存储器存储装置
US9891833B2 (en) * 2015-10-22 2018-02-13 HoneycombData Inc. Eliminating garbage collection in nand flash devices
US10956322B2 (en) * 2016-06-02 2021-03-23 International Business Machines Corporation Storage drive dependent track removal in a cache for storage
JP2021033845A (ja) 2019-08-28 2021-03-01 キオクシア株式会社 メモリシステムおよび制御方法
US11099785B2 (en) * 2019-12-23 2021-08-24 Micron Technology, Inc. Linking access commands for a memory sub-system
US11977778B2 (en) * 2022-03-09 2024-05-07 Micron Technology, Inc. Workload-based scan optimization

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0981527A (ja) * 1995-09-19 1997-03-28 Internatl Business Mach Corp <Ibm> 複数のホスト・コンピュータ・システムにより複数の記憶装置アレイを共有するシステム及び方法
JPH11327797A (ja) * 1998-05-19 1999-11-30 Nec Corp 磁気ディスク装置の制御方法と制御装置
JP2005190385A (ja) * 2003-12-26 2005-07-14 Fujitsu Ltd ディスクキャッシュ装置
JP2008158724A (ja) * 2006-12-22 2008-07-10 Fujitsu Ltd ディスクアレイ装置のステージング方法
JP2008225558A (ja) * 2007-03-08 2008-09-25 Fujitsu Ltd データ中継集積回路、データ中継装置およびデータ中継方法
JP2010512568A (ja) * 2006-12-06 2010-04-22 フリン,デイビッド 高容量不揮発性ストレージ用のキャッシュとしてのソリッドステートストレージのための装置、システム、及び方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4110794A (en) * 1977-02-03 1978-08-29 Static Systems Corporation Electronic typewriter using a solid state display to print
US6490652B1 (en) * 1999-02-03 2002-12-03 Ati Technologies Inc. Method and apparatus for decoupled retrieval of cache miss data
GB2403834B (en) * 2000-06-23 2005-04-13 Intel Corp Non-volatile cache
US6839812B2 (en) * 2001-12-21 2005-01-04 Intel Corporation Method and system to cache metadata
US7143234B2 (en) * 2002-11-26 2006-11-28 Intel Corporation Bios storage array
US7609303B1 (en) * 2004-10-12 2009-10-27 Melexis Tessenderlo Nv Low noise active pixel image sensor using a modified reset value
US20070094445A1 (en) * 2005-10-20 2007-04-26 Trika Sanjeev N Method to enable fast disk caching and efficient operations on solid state disks
US20070136523A1 (en) * 2005-12-08 2007-06-14 Bonella Randy M Advanced dynamic disk memory module special operations
US20080059726A1 (en) * 2006-08-31 2008-03-06 Carlos Rozas Dynamic measurement of an operating system in a virtualized system
KR101563647B1 (ko) * 2009-02-24 2015-10-28 삼성전자주식회사 메모리 시스템 및 그것의 데이터 처리 방법
US8468370B2 (en) * 2009-09-16 2013-06-18 Seagate Technology Llc Systems, methods and devices for control of the operation of data storage devices using solid-state memory and monitoring energy used therein
US8838903B2 (en) * 2010-02-04 2014-09-16 Dataram, Inc. Priority ordered multi-medium solid-state storage system and methods for use
US9859480B2 (en) 2015-08-20 2018-01-02 Nichia Corporation Light emitting device and method of manufacturing light emitting device

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0981527A (ja) * 1995-09-19 1997-03-28 Internatl Business Mach Corp <Ibm> 複数のホスト・コンピュータ・システムにより複数の記憶装置アレイを共有するシステム及び方法
JPH11327797A (ja) * 1998-05-19 1999-11-30 Nec Corp 磁気ディスク装置の制御方法と制御装置
JP2005190385A (ja) * 2003-12-26 2005-07-14 Fujitsu Ltd ディスクキャッシュ装置
JP2010512568A (ja) * 2006-12-06 2010-04-22 フリン,デイビッド 高容量不揮発性ストレージ用のキャッシュとしてのソリッドステートストレージのための装置、システム、及び方法
JP2008158724A (ja) * 2006-12-22 2008-07-10 Fujitsu Ltd ディスクアレイ装置のステージング方法
JP2008225558A (ja) * 2007-03-08 2008-09-25 Fujitsu Ltd データ中継集積回路、データ中継装置およびデータ中継方法

Also Published As

Publication number Publication date
US20110276746A1 (en) 2011-11-10
WO2011140349A1 (en) 2011-11-10
CN102906714A (zh) 2013-01-30
EP2567323A1 (en) 2013-03-13

Similar Documents

Publication Publication Date Title
JP2013530448A (ja) キャッシュストレージアダプタアーキテクチャ
US9158687B2 (en) Method and apparatus for processing fast asynchronous streams
US10489295B2 (en) Systems and methods for managing cache pre-fetch
US8443144B2 (en) Storage device reducing a memory management load and computing system using the storage device
US7613876B2 (en) Hybrid multi-tiered caching storage system
JP6224253B2 (ja) フラッシュメモリ内に記憶されたデータの推測的プリフェッチ
US20120246392A1 (en) Storage device with buffer memory including non-volatile ram and volatile ram
CN113448504A (zh) 具有用于实现内部固态驱动器操作的外部软件执行的固态驱动器
US9152563B2 (en) Method and apparatus for processing slow infrequent streams
KR102649131B1 (ko) 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치
KR20220060548A (ko) 데이터가 저장된 메모리 디바이스를 식별하기 위해 저장된 메타데이터 액세싱
US11200178B2 (en) Apparatus and method for transmitting map data in memory system
CN113614702B (zh) 基于检测到的读取命令活跃流的自适应预读高速缓存管理器
EP4170506A1 (en) Systems, methods, and devices for ordered access of data in block modified memory
WO2007146845A2 (en) Configurable and scalable hybrid multi-tiered caching storage system
CN115617503A (zh) 用于异构存储器系统中的负载均衡的系统和方法
KR102596964B1 (ko) 맵 캐시 버퍼 크기를 가변시킬 수 있는 데이터 저장 장치
CN112835815B (zh) 具有高速缓冲存储器的存储器子系统的预提取
Ware et al. Architecting a hardware-managed hybrid DIMM optimized for cost/performance
CN112835814A (zh) 基于高速缓存的存储器读取命令
US11893269B2 (en) Apparatus and method for improving read performance in a system
US20240143512A1 (en) Write buffer linking for easy cache reads
US20230384960A1 (en) Storage system and operation method therefor
EP4220414A1 (en) Storage controller managing different types of blocks, operating method thereof, and operating method of storage device including the same
US9304918B2 (en) Computer system and cache control method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140409

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141216

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20150901

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20200407