【文献】
Xiang Song et al.,Architecting Flash-based Solid-State Drive for High-performance I/O Virtualization,IEEE Computer Architecture Letters,IEEE,2014年,Vol.13,No.2,p.61-64,<DOI: 10.1109/L-CA.2013.22><URL:https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6570727>
(58)【調査した分野】(Int.Cl.,DB名)
前記ホストは、前記第2名称空間に関連付けされ、前記第2仮想フラッシュ変換階層インスタンスにストレージアクセス要請を送信するように構成された第3仮想マシンを更に含むことを特徴とする請求項3に記載のシステム。
前記ホストは、前記第1仮想マシン及び前記第2仮想マシンの各々に、仮想マシンの予測される書込み動作レベルに比例する加重値を割当するように構成されたハイパバイザ(hyperviser)を更に含むことを特徴とする請求項3に記載のシステム。
前記ホストは、前記第1仮想マシン及び前記第2仮想マシンの各々に、仮想マシンのサービスの永続的ストレージ品質(persistent storage quality)に比例する加重値を割当するように構成されたハイパバイザを更に含むことを特徴とする請求項3に記載のシステム。
【発明を実施するための形態】
【0014】
添付された図面と連関される詳細な記述は、本発明に従って提供されるソリッドステートドライブ(SSD、solid state drive)のための仮想マシンを意識した(VM−aware)フラッシュ変換階層(FTL、flash translation layer)設計の例示的な実施形態の説明を意図し、本発明が構成されるか、或いは活用される唯一の形態を示すとは意図していない。詳細な記述は説明された実施形態と連関されて本発明の特徴を示す。しかし、同一又は等価な機能及び構造は、本発明の思想及び範囲内に含まれる意図を有する他の実施形態によっても達成できることは、よく理解されるべきである。本文の他の箇所にも記載されたように、類似な参照番号は類似な構成又は特徴を示す。
【0015】
図1はソリッドステートドライブ103と連結されたホスト102を示す。
図2は、SR−IOV NVMe SSD{以下、「SR−IOV」 「NVMe」 「SSD」に分割すると、「SR−IOV」(Single Root Input/Output Virtualization、シングルルート入出力仮想化)、 「NVMem」(Non Volatile Memory Express、不揮発性メモリエキスプレス)、 「SSD」(Solid State Drive、ソリッドステートドライブ)を使用する従来技術によるシステム構造(architecture)を示す。複数の仮想マシン100はホスト102上で動作(run)する。ホスト102はプロセッサ(例えば、マイクロプロセッサ)及びメモリを含む。仮想マシン100は多様な仮想機能105(virtual functions)を呼出(call)して永久ストレージ(persistent storage)と相互作用(interact)する。
仮想機能105はホスト102のゲスト装置ドライバによって提供される。本文で使用されるように、“ホスト”は1つ又はそれ以上の大容量格納装置と連結され、これを使用するコンピュータ(例えば、サーバ)である。各仮想マシンはストレージアクセス要請(例えば、永久ストレージからのデータ読出し、永久ストレージへのデータ書込み、又は永久ストレージのデータ消去に対する要請)を生成する。各ストレージアクセス要請は仮想機能としての呼出(call)を通じて生成される。永久ストレージはハードディスク、及び/又はSSD(solid state drive)、及び/又はUSBスティック或いはサムドライブ(thumb drive)、及び/又はメモリカード等のような大容量格納装置により具現される。
シングルルート入/出力仮想化(SR−IOV)は、多様なPCIe(Peripheral Component Interconnect Express)ハードウェア機能の中で、大容量格納装置に対して、その資源へのアクセスを区分可能にするために使用される。
これらの機能は、PCIe物理的機能PF(107)及び1つ又はそれ以上のPCIe仮想機能(VFs)105を含む。各物理的機能107及び仮想機能105には、入/出力メモリ管理部104(IOMMU、input/output memory management unit)が相異なるトラフィックストリーム(traffic streams)を区分可能にする一意的なPCIe RID(Requester identifier、要求者識別子)が割当てられる。斯くして、仮想機能105を相異なる仮想マシン100(VMs)に割当ててあるので、仮想マシン100及び大容量格納装置の間でデータを伝送する間において、他の仮想マシン100の入/出力ストリームと互いに干渉することを防止できる。
【0016】
ソリッドステートドライブ103のフラッシュメモリは物理ブロック110(physical blocks)(又はフラッシュブロック)及び物理ページ120(physical pages)として組織化される。物理ブロック110は1回の動作で消去される最も小さいメモリ単位であり、物理ページ120は1回の動作で書き込まれる最も小さいメモリ単位である。各物理ブロック110は複数の物理ページ120を含む。物理ページ120の大きさは具現に従って変わる。フラッシュメモリのページはNANDページ割当器130(NAND page allocator)によって割当される。
ホスト102は論理ページナンバ(logical page numbers)に向けられた(directed to)ストレージアクセス要請(例えば、論理ページナンバのページに格納されたデータを要請すること、論理ページナンバのページにデータ書込みを要請すること、又は論理ページナンバのページに格納されたデータの消去を要請すること)等を使用して大容量格納装置と相互作用(interact)する。
物理ページ120に新しいデータを書き込むことが、物理ページ120を含む物理ブロック110の全体のコンテンツを他のところに格納(セーブ)し、物理ブロック110を消去し、同一のページ位置に以前データを代替する新しいデータが格納されたコンテンツを該物理ブロックに再び書き込むことを要求するので、論理ページナンバを物理ページナンバに直接的又は静的に(directly or statically)マッピングすることは非効率的である。本文で使用されるように、“物理ページナンバ”は大容量格納装置内でページを一意的に識別する識別子(identifier)(例えば、数字)である。
【0017】
このような面倒な動作を回避するために、フラッシュ変換階層125は論理ページナンバを動的に(dynamically)物理ページナンバに変換するか、又はマッピングする。新しいデータを或る論理ページナンバのページにデータに上書き(overwrite)する場合、物理ページ120を含む物理ブロック110を消去する代わりに、フラッシュ変換階層125は現在の論理ページナンバと現在対応する物理ページ120を無効(invalid)としてマーキングする。フラッシュ変換階層125は論理ページナンバから物理ページ120へのマッピングを更新して、論理ページナンバを新しい物理ページ120にマッピングし、新しい物理ページ120に新しいデータを書き込む。
時には、フラッシュ変換階層125は“ガーベッジコレクション(garbage collection)”であると称される動作を遂行する。この動作により、物理ブロック110の有効なコンテンツが1つ又はそれ以上の他の物理ブロック110内の他の物理ページ120に移動した後に、無効としてマーキングされた物理ページ120の大きい部分(例えば、設定閾値を超過する部分)を含む物理ブロック110が消去され、この消去された物理ブロック110に新しいデータを書き込むことが可能になる。フラッシュ変換階層125はソリッドステートドライブ103のコントローラ(例えば、マイクロコントローラ)で駆動されるソフトウェア形態で具現される。
【0018】
一部の実施形態で、複数の仮想機能105は相異なる複数の仮想マシン100に割当され、各仮想機能105は大容量格納装置上に予約された名称空間(namespace)(例えば、
図2の名称空間A(NSA)及び名称空間B(NSB)として記載された名称空間)と連関される。
図2の例示的なシステムで、第1仮想機能VF1、第2仮想機能VF2のような2つの仮想機能は1つの名称空間(NSB)を共有する。相異なる仮想マシン100(例えば、第0仮想マシンVM0)からのストレージアクセス要請は相異なる仮想機能105(この場合、第0仮想機能VF0)を呼出(call)することによって処理される。これはホスト管理下の仮想マシン100と大容量格納装置のホストインタフェイス階層(HIL、host interface layer)の間において、入/出力経路が分離される結果をもたらす。
【0019】
しかし、相異なる仮想マシン100に割当された物理ページ120が物理ブロック110を共有する可能性がある。相異なる仮想マシン100からのストレージアクセス要請は大容量格納装置において論理ページナンバで識別される論理ページにマッピングされ、論理ページナンバに向けられたストレージアクセス要請のフォーマットに載せてフラッシュ変換階層125に伝達される。斯くして、フラッシュ変換階層125の入力には、該入力の起源となった仮想マシンと特定ストレージアクセス要請を連結する意味ある情報が無いことがあり得る。
結果的に、例えば、第1仮想マシン(例えば、VM1)からの書込み要請は物理ページ120の無効化をもたらし、次いで、該物理ページ120の無効化は物理ブロック110に影響を与えるガーベッジコレクションを発生させる。これは、ストレージアクセス要請、例えば、同一の物理ブロック110の物理ページ120にマッピングされた論理ページに対する、第2仮想マシン(例えば、VM2)によって伝送された読出し要請の処理を遅延させる。このように、或る仮想マシン100に提供されるサービス品質が他の仮想マシン100によって伝送されたストレージアクセス要請によって影響を受ける。即ち、サービス品質が低下し、より予測不能になる。
【0020】
シングルルート入出力仮想化(SR−IOV)が有する特徴の装置仮想化をさらに向上するために、フラッシュ変換階層(FTL)125が仮想化(virtualized)される。例えば、フラッシュ変換階層125が、複数の仮想フラッシュ変換階層(vFTL、virtual flash translation layer)インスタンス210により置換されて、入/出力経路は複数の相異なる仮想マシン100に対する複数の仮想フラッシュ変換階層インスタンス210の時点で分離される。
【0021】
図3は、本発明の実施形態に係る複数の仮想フラッシュ変換階層インスタンスを含む大容量格納装置と接続した複数の仮想マシンのブロック図である。
図3において、破線内が本発明に係る大容量格納装置に属し、破線外の仮想マシン100(VM1、VM2、VM3)がホスト(102、即ち、ユーザコンピュータ)に属する。破線内の機能ブロックのうち、複数の物理ブロック110がハードウェアであるのに対して、残りは全てコントローラ上で動くソフトウェアであり、コントローラのハードウェアは、コア部と外部入出力部(対仮想マシン(ホスト)、対物理ブロック)を含むが、全て記載を省略してある。
図3を参照すれば、一実施形態で、仮想フラッシュ変換階層(FTL)インスタンス210が各割当された仮想機能又は名称空間に対して生成される。特定の仮想機能からのストレージアクセス要請が該仮想機能の名称空間と連関され、従って、名称空間と連関された仮想フラッシュ変換階層インスタンス210に伝達される。
図2のシステムの状況と異なり、
図3の実施形態では、名称空間は論理ページナンバのセット(集合)又は範囲にマッピングされない代わりに、個別の仮想フラッシュ変換階層インスタンス210(例えば、vFTL1、vFTL2)にマッピングされる。結果的に、相異なる仮想装置100からのストレージアクセス要請は仮想フラッシュ変換階層で分離されているので、1つの仮想マシンが提出したストレージアクセス要請が、他の仮想マシンの享受するサービス品質に及ぼす悪影響を軽減できる。物理ページ120は仮想マシンを意識したNANDページ割当器(VM−aware NAND page allocator)230によって割当される。
【0022】
図4を参照すれば、一実施形態で上述されたように、各仮想フラッシュ変換階層(vFTL)インスタンス210は大容量格納装置(例えば、ソリッドステートドライブ103)のコントローラ上で駆動されるファームウェアのフラッシュ変換階層(FTL)におけるソフトウェア構成要素である。これは従来技術のフラッシュ変換階層(FTL)ソフトウェアのフル機能を有するが、そのようなフラッシュ変換階層(FTL)ソフトウェアと異なり、仮想マシン及び仮想機能名称空間(virtual function namespace)に従って、又は大容量格納装置名称空間に従って組織化され、設計される。
図4で、第1仮想マシンVM1及び第2仮想マシンVM2の2つの仮想マシン100が示される。各仮想マシンは装置名称空間管理者106によって別々の装置名称空間(separate device namespace)に割当される。第1仮想マシンVM1がストレージアクセス要請、例えば、書込み要請を発行する場合、大容量格納装置は該ストレージアクセス要請を第1仮想フラッシュ変換階層インスタンス210a(vFTL1)に伝送(route)する。書込み要請は例えば、8セクタサイズを有する論理ページ(そして対応する物理ページ)の割当を要求する。物理ページは物理ページナンバ(ppn、physical page number)によって識別される。
第1仮想フラッシュ変換階層インスタンス210aは、VMを意識したNANDページ割当器230に対する、対応するストレージアクセス要請を生成して物理ページ120のナンバ(即ち、物理ページナンバ(ppn))を提供するよう要求する。ここで物理ページ120のナンバは、書込み要請を実行するのに必要なメモリの大きさ(例えば、8セクタ)に対応する。以後、割当された物理フラッシュページに書込みデータをフラッシュ(flush、一斉書き込み)する。従ってストレージアクセス要請は割当された物理ページの物理ページナンバ(ppn)を要請することをさらに含む。
最後に、仮想フラッシュ変換階層インスタンス210aは論理から物理へのマッピング(logical to physical mappings)(例えば、仮想マシン論理ブロックアドレス(VM−LBA)又は論理ページナンバ(lpn)からNANDフラッシュページナンバなどの物理ページナンバ(ppn)へのマッピング)を更新する。他方、第2仮想マシンVM2によって生成されたストレージアクセス要請は追加処理のために第2仮想フラッシュ変換階層インスタンス210bに伝送(route)される。
情報又は要請を交換することを必要としない点で、第1及び第2仮想フラッシュ変換階層インスタンス210a、210bなどの仮想フラッシュ変換階層インスタンスは、互いに独立的であり、互いを意識しない(unaware)。このようにして、本システムは第1仮想マシンVM1によって生成されたストレージアクセス要請及び第2仮想マシンVM2によって生成されたストレージアクセス要請の間の干渉を防止できる。
【0023】
図5を参照すれば、上述されたように従来技術によるフラッシュ変換階層125及びNANDページ割当器130は、入力されるストレージアクセス要請のソース(source)に従って区分しない。例えば、3つの相異なる仮想マシン100からのデータが同一の物理ブロック110に書き込まれ得る。
図5で、第1仮想マシンVM1、第2仮想マシンVM2、及び第3仮想マシンVM3のような3つの仮想マシン100からのデータを含むページはD1、D2、及びD3の参照番号が各々付与される。図示されたように、物理ブロック110の各々で、多数の相異なる仮想マシン100からのデータが混合される。
【0024】
それに対して、
図6を参照すれば、本発明の或る実施形態では、第1仮想マシンVM1、第2仮想マシンVM2、及び第3仮想マシンVM3からなる3つの仮想マシン100からのストレージアクセス要請は、各々、3つの別々の仮想フラッシュ変換階層インスタンスvFTL1、vFTL2、vFTL3によって処理され、該仮想フラッシュ変換階層インスタンスの各々は、それらの各々の名称空間(及び仮想マシン100)と既に連関されたブロックのページに対する要請を、又は利用可能であるページがあまりにも少ない場合、現在何れの名称空間又は仮想マシンとも連関されないブロックのページに対する要請を、VMを意識したNANDページ割当器230に向けて生成する。
このようにして、VMを意識したNANDページ割当器230は結果的に、
図6で、D1、D2、及びD3の参照番号が付与された各々、第1仮想マシンVM1、第2仮想マシンVM2、及び第3仮想マシンVM3からのデータは混合されず、区分された物理ブロック110に書き込まれる。
【0025】
図7を参照すれば、一実施形態で、仮想マシンを意識したNANDページ割当器230はリストを維持する。該リストは、各仮想フラッシュ変換階層インスタンス210に対して、「自由」(free、有効データが書き込まれていない)ページを含む単数又は複数の物理ブロック110である“オープンフラッシュブロック(OFB、open flash block)”を含む。任意の仮想フラッシュ変換階層インスタンス210が新しい物理ページナンバを要請する場合、仮想マシンを意識したNANDページ割当器230は要請した仮想フラッシュ変換階層インスタンス210に対してリスティングされたオープンフラッシュブロック110の内の次に利用可能である物理ページナンバを返還(return)する。
書込み要請が仮想フラッシュ変換階層インスタンス210から受信され、要請した仮想フラッシュ変換階層インスタンス210に対してリスティングされたオープンフラッシュブロック110の空間が充分でない場合、又は書込み要請の実行が現在のオープンフラッシュブロック110を万杯に満たす場合、仮想マシンを意識したNANDページ割当器230は書込み要請を遂行するために新しい物理ブロック110を割当する。
書込み要請の完了の後に新しい物理ブロック110が部分的に空いた空間(partially empty)を維持する場合、仮想マシンを意識したNANDページ割当器230は新しい物理ブロック110のアドレスをオープンフラッシュブロック110のリストに追加する。
例えば、
図7の第2仮想フラッシュ変換階層インスタンス(vFTL2)と連関されたオープンフラッシュブロック110が書込み要請によって満杯になり全てのページが使用された場合、仮想マシンを意識したNANDページ割当器230は新しい物理ブロック110’を割当し、それを第2仮想フラッシュ変換階層インスタンスvFTL2のオープンフラッシュブロックとして認識する。
【0026】
図8を参照すれば、仮想マシンを意識したNANDページ割当器230は、相異なる仮想フラッシュ変換階層インスタンス210の物理ブロック110を、相異なるフラッシュパッケージ、ダイ、又はプレーンに優先的に分散するように新しいフラッシュブロック110を割当するように構成される。パッケージはチャンネル(例えば、図示されたように、Channel#0、Channel#1、等)に組織化される。これは、例えば、特定仮想フラッシュ変換階層インスタンス210が新しいブロックに対する要請を生成する時、仮想フラッシュ変換階層インスタンス210に割当された他の物理ブロック110を既に含むパッケージの物理ブロック110を割当することによって具現される。又はどのパッケージも「自由」物理ブロック110を含まない場合、どの物理ブロック110も未だ割当されなかったパッケージの物理ブロック110を割当することによって具現される。
斯くして、例えば、第1仮想フラッシュ変換階層インスタンスに割当された第1物理ブロック(
図8に“フラッシュブロック1(Flash block 1)”と記載される)は第1仮想フラッシュ変換階層インスタンスに割当された他の物理ブロック110と共に大容量格納装置のパッケージナンバ0(Pkg#0)に割当される。第2仮想フラッシュ変換階層インスタンスに割当された第2物理ブロック(
図8に“フラッシュブロック2(Flash block 2)”と記載される)は第2仮想フラッシュ変換階層インスタンスに割当された他の物理ブロック110と共に大容量格納装置のパッケージナンバ1(Pkg#1)に割当される。このようなパッケージは、例えば、大容量格納装置(例えば、ソリッドステートドライブ103)の印刷回路基板(又は印刷配線基板)にハンダ付けされた(soldered)集積回路である。
【0027】
図9を参照すれば、一部の実施形態で、「自由」フラッシュブロックの数が大容量格納装置のために定義された閾値(threshold)より低くなる度に、ガーベッジコレクションGCが遂行される。各仮想フラッシュ変換階層インスタンス210は自らガーベッジコレクションを管理する。各、仮想フラッシュ変換階層インスタンス210を初期化する間に、特定な数の追加提供フラッシュブロック(overprovision flash blocks)110が該、仮想フラッシュ変換階層インスタンス210に割当される。
ガーベッジコレクション動作の間において、設定された閾値を超過する無効物理ページ部分を含む物理ブロックは、該物理ブロックの有効物理ページのコンテンツが他の物理ブロック、例えば追加提供ブロック(overprovision blocks)に先ず移動された後に、消去され、新規な格納(書込み)のために使用可能になる。
このように、追加提供ブロックは、無効化された物理ページ120を含む物理ブロック110が消去され、格納のために再び使用可能になる前に、一部の格納空間を、例えば、無効化された物理ページ120の空間を使用せず放置しながら、ストレージの特定の容量を提供するために使用される。
例えば、
図10に示したように、ガーベッジコレクションを遂行して多数の無効物理ページ120を含む物理ブロック110を解除(free up、ガーベッジの無い状態にする)する場合、各仮想フラッシュ変換階層インスタンス210は先ず有効データを含む物理ページの内容(
図10では「有効」と記載)を追加提供ブロック110の「自由」ページ(
図10では、「空き」と記載)へ移動し、その後に、物理ブロック110を消去して解除(freed_up)する。
繰り返して述べると、追加提供(overprovision)は無効ページを消去する前に、ガーベッジコレクションによって無効ページを含む物理ブロック110から有効データが移動される「自由」ページを含む、追加的な「自由」フラッシュブロック110を提供できる。
【0028】
基本的に、各仮想フラッシュ変換階層インスタンス210に提供される追加提供フラッシュブロック110の数は、仮想フラッシュ変換階層インスタンス210に割当された物理ブロック110の数に比例する。しかし、一部の実施形態で、割当されたブロックの数に対する追加提供フラッシュブロック110の数の比率は各仮想フラッシュ変換階層インスタンス210に割当された加重値に従って調節(例えば、加重値に従って比例するように調節)されることができる。例えば、各仮想フラッシュ変換階層インスタンス210の加重値は使用者によって定義(user−defined)される。一部の実施形態で、各仮想マシンは加重値(例えば、使用者によって定義された加重値、又はハイパバイザによって割当された加重値(hypervisor−assigned weight))を有する。各仮想フラッシュ変換階層インスタンス210の加重値は仮想フラッシュ変換階層インスタンス210と連結された仮想マシンの加重値である。又は複数の仮想マシンが仮想フラッシュ変換階層インスタンス210を共有する場合、各仮想フラッシュ変換階層インスタンス210の加重値はこのような仮想マシンの加重値の合計(total)である。
【0029】
仮想マシンの加重値は、仮想マシンの予想される書込み動作レベル(例えば、該仮想マシンが書込み動作を要請する周期、又は該仮想マシンに予想される単位時間当たり書込みデータの総量)、又は該仮想マシンに適したサービス品質に比例する。
【0030】
大容量格納装置が第1仮想マシンVM1及び第2仮想マシンVM2に対して仮想フラッシュ変換階層インスタンス210を各々設定する場合、ホスト102は第1仮想マシンVM1及び第2仮想マシンVM2の各々の加重値を設定する。以後、第1仮想マシンVM1及び第2仮想マシンVM2に各々対応するファームウェア、例えば第1仮想フラッシュ変換階層インスタンス及び第2仮想フラッシュ変換階層インスタンスは第1仮想フラッシュ変換階層インスタンス及び第2仮想フラッシュ変換階層インスタンスに割当された物理的容量に基づいて多数の追加提供ブロックを割当する。
【0031】
一実施形態で、装置初期化(device initialization)は
図11に示したように遂行される。
600段階で、ホスト102はSR−IOV(シングルルート入出力仮想化)を活性化し、大容量格納装置に対して第1仮想機能VF0を含む仮想機能105(
図3及び関連段落の記述を参照)を設定する。
602段階で、ホスト102は仮想フラッシュ変換階層の特徴を活性化する。
604段階で、ホスト102は名称空間(namespace)を生成し、名称空間を第1仮想機能VF0に添付する。
606段階で、大容量格納装置は第1仮想機能VF0の名称空間の論理ブロックアドレス範囲に従って仮想フラッシュ変換階層インスタンスを生成する。
608段階で、ホスト102は第1仮想機能VF0を第1仮想マシンに割当し、第1仮想機能VF0を活性化する。このようなプロセスは他の仮想マシン及び名称空間に対して反複され得る。
【0032】
一実施形態で、読出し要請処理は
図12に図示されたように遂行される。
610段階で、仮想マシンは、例えば開始論理ブロックアドレス0及び8セクタサイズの読出し要請を発行する。
612段階で、ホスト102上のゲスト装置ドライバは、要請情報(request information)を含む、対応するNVMe(Non Volatile Memory Express)読出し要請を構成する。NVMe読出し要請は名称空間識別子をまた含む。
614段階で、大容量格納装置は要請した仮想マシンに添付された仮想機能を通じて読出し要請を受信する。
616段階で、大容量格納装置は読出し要請を管理し、要請した仮想マシンが付着された仮想フラッシュ変換階層インスタンスに読出し要請を伝送(pass)する。
618段階で、仮想フラッシュ変換階層インスタンスは読出し要請が要請したフラッシュページを読み出し、対応する仮想機能の完了キュー(CQ、completion queue)に完了応答を伝送する。以後にゲスト装置ドライバはサブミッションキュー(SQ、submission queue)を通知する。
620段階で、ゲスト装置ドライバはインタラプトを管理し、サブミッションキューを更新する。読出し動作の結果は仮想機能によって仮想マシンへ返還される。
【0033】
一実施形態で、書込み要請処理は
図13に示したように遂行される。
622段階で、仮想マシンは例えば、開始論理ブロックアドレス0及び8セクタサイズを有する書込み要請を発行する。
624段階で、ホスト102のゲスト装置ドライバは要請情報を含む、対応するNVMe書込み要請を構成する。NVMe書込み要請は名称空間識別子をまた含む。
626段階で、大容量格納装置は要請した仮想マシンに添付された仮想機能を通じて書込み要請を受信する。
628段階で、大容量格納装置は書込み要請を管理し、要請した仮想マシンが付着された仮想フラッシュ変換階層インスタンスに書込み要請を伝送する。
630段階で、仮想フラッシュ変換階層インスタンスはNANDページ割当器に新しい物理ページナンバを要請し、(例えば、仮想フラッシュ変換階層インスタンスはNANDページ割当器から新しい物理ページナンバを要請する)データをフラッシュページに書き込み、マッピングエントリを更新する。
632段階で、仮想フラッシュ変換階層インスタンスは対応する仮想機能の完了キュー(CQ)に書込み完了を伝送する。
634段階で、ホスト102のゲスト装置ドライバはインタラプトを管理し、サブミッションキュー(SQ)を更新する。
【0034】
このように、本実施形態は、仮想マシンを意識した仮想フラッシュ変換階層を提供し、これに従ってシステムの性能が向上される。
【0035】
ハードウェア、ファームウェア、及びソフトウェアの組合せを含む“コントローラ(controller)”の用語が本文で使用され、データ又はデジタル信号を処理するために採用される。コントローラハードウェアは、例えばASIC(application specific integrated circuit)、汎用又は特殊目的中央処理ユニット、DSP(digital signal processor)、GPU(graphics processing unit)、及びFPGA(field programmable gate arrays)のようにプログラム可能なロジック装置を含む。コントローラで、本文に記載されたように、各機能が各機能を遂行するように物理的に接続され、構成されたハードウェアによって各機能が遂行される。又はCPUのように非一時的なストレージ媒体に格納された命令語を実行するように構成されたさらに汎用のハードウェアによって各機能が遂行される。コントローラは単一印刷配線基板(PWB、printed wiring board)で製作されるか、又はPWBが多数連結された構造に分散され得る。コントローラは他のコントローラを含み得る。例えば、コントローラはPWB上に連結されたFPGA、及びCPUのように2つのコントローラを含む。
【0036】
本文に記載された本発明の実施形態に係る大容量格納装置及び/又は他の関連された装置又は構成は、適切なハードウェア、ファームウェア(例えば、ASIC)、ソフトウェア、又はそれらの組合せを活用して具現される。例えば、大容量格納装置の多様な要素は単一の集積回路(IC、integrated circuit)チップ又は別々のICチップ上に形成される。また、大容量格納装置の多様な要素は軟性印刷回路フィルム、テープキャリヤパッケージ(TCP)、印刷回路基板(PCB)上に具現されるか、又は1つの基板上に形成される。
また、大容量格納装置の多様な要素は、1つ又はそれ以上のコンピューティング装置で本文に記載された多様な機能を遂行するために他のシステム構成要素と相互作用し、コンピュータプログラム命令語を実行し、1つ又はそれ以上のプロセッサで駆動(run)する、プロセス又はスレッドである。コンピュータプログラム命令語はランダムアクセスメモリ(RAM、random access memory)などの標準メモリ装置を使用してコンピューティング装置内に具現されるメモリに格納される。コンピュータプログラム命令語はCD−ROM、フラッシュドライブ等の他の非一時的なコンピュータ読出し可能な媒体に格納される。
また、当業者は、本発明の以上の例示的な実施形態の思想から逸脱することなく、多様なコンピューティング装置の機能が1つのコンピューティング装置に組合わされるか、又は集積でき、特定のコンピューティング装置の機能が1つ又はそれ以上の他のコンピューティング装置にわたって分散できることを認知すべきである。
【0037】
たとえば、“第1”、“第2”、“第3”等の用語が、本文で、多様な要素、構成、領域、階層、及び/又はセクションを説明するために使用されるが、該要素、構成、領域、階層、及び/又はセクションはこのような用語に限定されない。このような用語は単純に1つの要素、構成、領域、階層、及び/又はセクションを他の1つの要素、構成、領域、階層、及び/又はセクションから区分するために使用される。即ち、第1の要素、構成、領域、階層、又はセクションは本発明の技術的思想及び範囲からの逸脱することなく、第2の要素、構成、領域、階層、及び/又はセクションを指し得る。
【0038】
本文で使用された用語は、単に特定の実施形態を説明するために使用されており、本発明を限定する意図はない。本文で使用されるように、“実質的に(substantially)”、“約(about)”及び類似の用語は、近似用語(terms of approximation)として使用され、程度(degree)の用語として使用されていないので、当業者ならば認識されるであろう、測定値又は演算値における固有の偏差(ズレ)を説明することと意図される。
【0039】
本文で使用されるように、文脈上そうではないと明確に指指されない限り、単数用語は複数の用語を含むと意図される。“含む”の用語が本文で使用される場合、この用語は特徴、整数、段階、動作、要素、及び/又は構成要素の存在を明示するが、追加的な1つ又はそれ以上の特徴、整数、段階、動作、要素、構成要素、及び/又はそれらのグループの存在を排除しないことはよく理解されよう。本文で使用されたように、“及び/又は”の用語は列挙された要素の1つ又はそれ以上の組合せの全体を含む。“少なくとも1つ”のような表現が列挙された要素の先に使用される場合、要素の全体リストを変形し、リストの個別的な要素を変形しない。また、“であり得る(may)”の用語は本発明の実施形態を説明している際には、“本発明の1つ又はそれ以上の実施形態”を参照する。また、“例示的な(exemplary)”の用語は例又は説明を参照するように意図される。本文で使用されるように、“使用(use)”の用語は“活用する時(utilize)”の用語と類似と看做される。
【0040】
1つの要素が他の1つの要素と連結される(connected to、coupled to)と称される場合、これは直接的な連結されるか、又は1つ又はそれ以上の中間要素が存在する。それに反して、1つの要素が他の1つの要素と直接的(directly on)又は直接的連結(directly connected to、directly coupled to)と称される場合、中間要素が存在しない。
【0041】
本文の数値的な範囲は参照された範囲内に含まれた同一の数値的精度(numerical precision)の全てのサブ範囲(sub−range)を含むと意図される。例えば、“1.0〜10.0“の範囲は1.0の最小値及び10.0の最大値の間の全てのサブ範囲、即ち、1.0より大きいか、或いは同一の最小値及び10.0より小さいか、或いは同一の最大値を有する全てのサブ範囲、例えば、2.4〜7.6の範囲を含むと意図される。本文で参照された最大数値上の制限はそれに含まれたそれより低い数値的制限を全て含むと意図される。本文で参照された最小数値上の制限はそれに含まれたそれより高い数値的制限を全て含むことと意図される。
【0042】
「SR−IOV NVMe SSD」(シングルルート−入出力仮想化 不揮発性メモリエキスプレス ソリッドステートドライブ)のための「VMを意識したFTL」(仮想マシンを意識したフラッシュ変換階層)設計の例示的な実施形態が本文で詳細に説明されたが、多様な変形及び変化は当業者によって遂行されよう。従って、本発明の理論に従って構成されたSR−IOV NVMe SSDのためのVMを意識したFTL設計は、本文で詳細に記載されたのと異なる場合を含み得るが、本発明は以下の特許請求の範囲及びそれらの均等物で定義される。