以下、本発明の実施形態を詳細に参照し、その例示は添付図面に示す。以下の開示を実施するための具体的な内容では、本発明の徹底的な理解ができるようにするために、多数の特定の詳細事項を説明する。しかし、当該技術分野の通常の技術者はこのような特定の詳細事項なしに本発明を実施することができるというのが理解されなければならない。他の場合で、公知の方法、過程、コンポーネント、回路及びネットワークは実施形態の様態を不必要にあいまいにしないように詳細に説明しない。
第1、第2などの用語をここで多様な構成要素を説明するために使うことがあるが、これらの構成要素はこれらの用語によって限定されないことが理解されなければならない。このような用語は一構成要素を他の構成要素と区別するために使う。例えば、本発明の範囲を逸脱することなく第1モジュールは第2モジュールと指称することができ、同様に第2モジュールは第1モジュールと指称することができる。
ここで、本発明の説明に使用した用語は、単に、特定の実施形態を説明するためのものであり、本発明を限定しようとするものではない。本発明の説明及び添付の請求範囲に使用したような単数の形態は、文脈上明白に他に指示しない限り、複数の形態も含むものである。また、ここで使用した用語“及び/又は”は一つ以上の関連のリスト化した項目の任意の及び全ての可能な組合せを指称して含むものと理解される。本明細書で使う、“含む(comprise)”及び/又は“含む(comprising)”という用語は言及した特徴、整数、段階、動作、構成要素及び/又はコンポーネントの存在を特定するが、一つ以上の他の特徴、整数、段階、動作、構成要素、コンポーネント及び/又はこれらのグループの存在又は追加を排除しない。図面のコンポーネント及び特徴は必ずしも実際の縮尺比で示したものではない。
本発明の技術的思想の実施形態は、デバイスによってサポートされる仮想機能を使ってSSD(Solid State Drive)のようなデバイスで多数の物理機能をエミュレートする方法及びシステムを含む。SSDには多数のPCIe物理機能(PF)又はPCIe仮想機能(VF)で表現される多数のNVMeコントローラーを有することができる。それぞれのPF又はVFは、基本的にデータ記憶機能を遂行するようにホストNVMeドライバーによって使われることができるNVMeコントローラーを提供する。PFは実際の物理的資源を有するが、仮想機能は資源をPFと共有する。本発明の技術的思想の実施形態は、SSDコントローラーでVFセットを使って多数のPFをホストに露出させることができる。すなわち、多数のPFをデバイスによってエミュレートすることができ、内部的にVFを使うことができる。ホストの観点で、ホストシステムソフトウェアスタックは、多数のPCIe PF及びそれらPFの背後のNVMeコントローラーを参照する。本発明の技術的思想の実施形態は内部的に、PFへの全てのホストアクセスをVFにマッピングして変換することができる。
PCIe PFはいずれの他の機能(物理的又は仮想)とも独立である。すなわち、PFは、例えばメモリバッファーなどの、それら自身の専用の物理的資源を有する。デバイスが多数のPFをサポートすることは、根底にあるデバイスの論理領域、電力消費及び複雑度を増加させる。したがって、デバイス側での費用と複雑度を減らすために、PCIe仕様は仮想機能(VF)をサポートしている。VFはPFと物理的資源を共有し、全ての物理的側面でPFに依存する。このような物理的側面は、PCIeリンク制御、デバイス制御、電力管理などを含む。
VFは、デバイス側での費用と複雑度を低めるが、VFは、システムソフトウェア側の複雑度を増加させる。システムソフトウェアは、VFと通信することができるように、SR-IOV(Single Root Input/Output Virtualization)プロトコルをサポートすることが必要である。この追加機能は時々追加遅延の側面でI/O性能を低下させる。よって、システムソフトウェアの観点ではPFを有することが好ましい。
本発明の技術的思想の実施形態は、デバイスがSSDコントローラーでVFを使ってPFをエミュレートすることができるようにする。すなわち、ホストの観点からは、記憶デバイスSSDが多数のPFを有するように見える。しかし、デバイスの側面で、このようなPFはVFセットを使ってエミュレートすることができる。費用を減らすために、SSDコントローラーASICにPFとして多様な機能を実装する必要なくSSDのようなデバイスの機能を露出させるのに、軽量ブリッジ(Lightweight Bridge、LWB)を使うことができる。
LWBの例示的な具現で、たとえ根底にあるデバイスが一部又は大部分の機能をPFではなくVFで具現することができても、総16個の機能がまるで物理機能であるようにLWBによって露出されることができる。LWBは、ホストマシンとSSDコントローラー自体間のブリッジの役割を達成する。LWBは全体SSDデバイスの一部又は別個のコンポーネントで具現することができる。デバイスはSSDであってもよく、機能(1個のPF及び15個のVF)はSSDコントローラーのエンドポイントの一部で具現される。(また、SSDは、一般に、ホストインターフェース階層(host interface layer、HIL)、フラッシュ変換階層(flash translation layer、FTL)及びフラッシュメモリにアクセスするためのフラッシュコントローラー(flash controller、FC)を含むことができる)。
LWBは3世代PCIeバスの4個のレーン(lane)を使ってホストマシンと通信することができる反面、LWB内部通信は3世代PCIeバスの16個のレーンを使って具現することができる。しかし、本発明の技術的思想の実施形態は、任意の特定バージョンのPCIeバス(又は他のバス類型)の使用をサポートすることができ、ホストマシンとともに、かつ内部的に全て、制限なしに任意の所望速度又はレーン又は帯域幅をサポートすることができる。本説明でのPCIeレーン幅及び速度は単に例示のものであり、任意の組合せを同じ概念を用いて具現することができることが理解可能である。
SSDコントローラーがホストマシンのルートポート又はルートコンプレックスと通信する代わりに、SSDコントローラーはLWBのルートポートと通信することができる。SSDコントローラーは、この変更を認識しなくてもよく、LWBのルートポートからの通信をまるでホストマシンからの通信のように処理することができる。同様に、ホストマシンは、エンドポイントが(露出された機能を具現した)SSDコントローラーではないことを知ることなく、LWBのエンドポイントと通信することができる。SSDコントローラー又はホストマシンに係わる限り、これらが通信する当事者(本発明の技術的思想の実施形態で、LWB)はブラックボックスと見なすことができる。
LWBのエンドポイントは、SSDコントローラーのエンドポイントと同数の機能を露出させることができる。しかし、このような機能の一部をVFで露出させる代わりに、LWBのエンドポイントは全ての機能をPFで露出させることができる。また、LWBは、PAPP-EP(PCIe Application Layer for End point)及びPAPP-RP(PCIe Application Layer for Root Port)を含むことができる。PAPP-EP及びPAPP-RPはLWBのエンドポイントによって露出されたPFからSSDコントローラーのエンドポイントによって露出された機能(物理的又は仮想)へのマッピングを管理することができる。PAPP-RPは、ホストに露出されたPFのPCIe構成空間をSSDコントローラーEPのPF及び/又はVFのPCIe構成空間にマッピングすることを助ける構成変換テーブルを含むことができる。また、このテーブルはLWBエンドポイントによって露出されたどのPFがSSDコントローラーエンドポイントによって露出されたどの機能にマッピングされるかだけではなく、マッピングに係わる他の情報を示すことができる(例えば、どのSSDコントローラーのアドレスが露出された機能に対するデータを記憶することができるか)。LWBのエンドポイントによって提供されるPCIe構成機能及び性能(capability)はSSDコントローラーのエンドポイントによって提供されるものと(たびたび)違うことができ、構成変換テーブルはこのような相違点を管理するのに役に立つことができる。また、PAPP-RPは、ホストに露出されたPFのメモリBAR(base address register)アドレス及びSSDコントローラーEPのPF及び/又はVFのBARの変換を処理することができる。また、PAPP-EP及び/又はPAPP-RPは、必要によって他のテーブルを含むことができる。ホスト露出されたPF及びSSDコントローラー内部PF/VFのマッピングは根本的に融通性があり、動的であり得る。マッピングは、ホスト及び/又はBMC(Board Management Controller)のような管理エンティティによって発行された特定のイベント及び/又はポリシー変更に基づいてランタイムの間に変更されることができる。このようなイベントの例としては、VM(Virtual Machine)マイグレーション、SLA、電力/性能スロットリング、日付、時間の変更などがある。
PAPP-EP及びPAPP-RPは本発明の技術的思想の一部実施形態で別個のコンポーネントであり得るが、本発明の技術的思想の他の実施形態は単一具現でこれらのコンポーネント(及び潜在的にLWBのエンドポイント、ルートポート及び構成管理者)を具現することができる。例えば、LWBは、FPGA(Field Programmable Gate Array)又はASIC(Application-Specific Integrated Circuit)(可能な具現の二つの例示に過ぎない)を使って具現することができる。PAPP-EP及びPAPP-RPは、任意の所望メカニズムを使って通信することができる。例えば、特定の機能を呼び出し、結果をリターンするために、PAPP-EPとPAPP-RPとの間でデータを交換するのに使うことができる中間データフォーマットを定義することができる。
また、LWBは構成管理者(コンフィギュレーションマネージャ)を含むことができる。構成管理者は、SSDコントローラーのエンドポイントによって提供される機能(PF及びVFの全て)を羅列することができる。そして、構成管理者は、その情報を、LWBのエンドポイントによって露出された機能を“定義”し、PAPP-RPで構成空間変換テーブルを構成することを助けるために使うことができる。一般に、構成管理者は主に開始の際(at startup)に使われる。しかし、ホストマシンは多様な機能に関して(LWBの)エンドポイントと通信するのに使われるインタラプトのようなPFのPCIe構成空間を変更することができ、又はホストマシンは特定の機能を活性化又は非活性化することができる。構成管理者は、必要によって、このような変更を支援するのに使われることができる。また、LWBは、同様のPCIe構成空間変更がSSDコントローラーに適切に伝達されることを保障する必要があり得る。すなわち、LWBは、ホストに露出されたPFと内部SSDコントローラーEPによって露出されたPF/VFとの間でPCIe構成ミラーリングを遂行する。よって、LWBは、SSDコントローラーによって露出された機能を管理することもできる。
デバイス全体で2個のエンドポイント(LWBに一つ、SSDコントローラーに一つ)があるので、それぞれ固有の構成空間を維持する。潜在的な問題又は衝突を避けるためには、これらの構成空間が同期化しなければならない。ホストが構成記録命令を送るとき、LWBはLWBエンドポイントにおける構成空間をアップデートすることができる。また、構成記録命令は(PAPP-EP、PAPP-RP及びルートポートを介して)SSDのエンドポイントに伝達されることにより、SSDコントローラーのエンドポイントもアップデートされることができる。全てのホスト主導の構成記録命令がSSDコントローラーに反映されるのでなくてもよい。すなわち、ホスト構成空間変更の一部はバックエンドSSDコントローラーにそのまま反映されなくてもよい。例えば、ホストはLWB EPに電力管理変更を遂行することができるが、その変更又は同様の変更が、LWBによってSSDコントローラーEPに対して遂行されなくてもよい。
ホストが構成判読命令を送るとき、当該命令はLWBのエンドポイントによって満たすことができる。LWBのエンドポイントは構成判読命令をPAPP-EPに伝達して、PAPP-EPが命令を終了することができ、二つの構成空間が同期化されているので、各構成空間のデータが同一のはずである(代案として、LWBのエンドポイントが構成判読命令をPAPP-EPに伝達せず、LWBのエンドポイントが構成判読命令に応答し、該当時点で命令を終了することができる。)。
LWBがメモリ判読又は記録トランザクションを受信する場合(LWBのエンドポイントを介してホストから、又はLWBのルート地点を介してSSDコントローラーから)、LWBはトランザクションを他の相手(適切な場合、ホスト又はSSDコントローラー)に伝達することができる。LWBは、PAPP-EP及び/又はPAPP-RPにあるBARテーブルを使って適切なアドレス変換を遂行することができる。ホストから受信されたトランザクションに対するこのようなアドレス変換の一例は、PAPP-EPが受信されたアドレスからPF BARを引くことができ、PAPP-RPがSSDコントローラーの正しいアドレスに到逹するために、そのアドレスにVF BARを追加することができるというものである。
また、本発明の技術的思想の実施形態は、マッピング、帯域幅制御などに使うことができるPAPP-EPとPAPP-RPとの間の選択的中間要素(optional intermediary element)を含むことができる。また、この選択的要素は、さまざまな理由で、帯域幅を可変的に“スロットリング”するのに使うことができる。例えば、LWBのエンドポイントによって露出される他の機能ごとにQoS要求又はSLA(Service Level Agreements)が違うことができる。低帯域幅QoSを有するPFは、もっと高いQoS帯域幅要求を有するPFに対して十分な帯域幅を保障するために、スロットリングされることができる。帯域幅をスロットリングする他の理由は電力又は温度を含むことができる。LWBはPF単位で帯域幅スロットリングを行うのに使われることができるか、ホスト及び/又はBMCのような管理エンティティの構成設定又はポリシー設定に基づいて全てのPFに対する帯域幅スロットリングを行うことができる。温度又は電力スロットリングの決定は上限及び下限の両閾値によることができる。電力使用量又は温度が上限を超えれば、ポリシーに基づいて全てのPF又は選択的PFに帯域幅スロットリングを適用することができる。帯域幅スロットリングは電力又は温度がそれぞれの下限閾値の下に下がるまで適用することができる。
本発明の技術的思想の前記実施形態で、SSDコントローラーのエンドポイントは1個のPF及び15個のVFを提供するものとして説明され、これはLWBのエンドポイントで16個の相異なるPFにマッピングされることができる。このような数は任意的である。SSDコントローラーのエンドポイントは多数のPF及びVFを提供することができ、これはLWBのエンドポイントで16個のPF又はそれより多いか少ないPFにマッピングされることができる。
必要な場合、SSDコントローラーのVFは、LWB及び/又はSSDコントローラー内でなされた任意の適切な変更とともに、LWB内で適切にマイグレーションされることができる。よって、LWBのエンドポイントによって露出されたPFからSSDコントローラーによって露出された機能へのマッピングはランタイムの間に修正されることができるので、融通性がある。
LWB内部の通信は任意の所望技術を使って遂行することができる。例えば、エンドポイント、PAPP-EP、PAPP-RP及びルートポートの間で交換される情報はTLP(transaction level packet)プロトコルを使うことができる。
デバイス自体はどのフォームファクターにもなることができる。例えば、SSDは、他の可能性の中で、U.2又はFHHL(Full Height、Half Length)フォームファクターを使ってパッケージされることができる。他の類型のデバイスは任意の所望フォームファクターで同様にパッケージされることができる。
本発明の技術的思想の他の実施形態で、多数のSSDコントローラーを含むことができ、それぞれはさまざまな機能を提供する。例えば、各SSDコントローラーは、総8個の機能を提供することができる。LWBのエンドポイントとの間にマルチプレクサー/デマルチプレクサーが結合され得る。このマルチプレクサー/デマルチプレクサーは、特定の露出PFに関連したデータを、最終の実行のために適切なPAPP-EP/PAPPP-RP/RP/ルートポート/SSDコントローラーに伝送することができる。斯くして、単一LWBで、単一SSDコントローラーによって提供可能なものより多い機能を露出させることができる。
それぞれのSSDコントローラーはLWBの別々のルートポートと通信することができ、それぞれのルートコントローラーは、PAPP-EP、PAPP-RP及び構成変換テーブルを含むそれ自身のスライスを有する。斯くして、一つのSSDコントローラーに関連した作動が、LWBの内部で、他のSSDコントローラーに関連した作動に影響を与えないことができる。
このような本発明の技術的思想の実施形態は、例えば単一SSDコントローラー上のエンドポイントがホストマシンの全ての要求を満たさない場合に使うことができる。例えば、SSDコントローラーが8個のPCIeレーンのみサポートし、ホストは16個のレーンの帯域幅をサポートすることを望む場合、必要な帯域幅をサポートするために、複数のSSDコントローラーを使うことができる。もしくは、仮にSSDコントローラーが総8個の機能のみサポートし、ホストが16個の機能をサポートすることを希望する場合、必要な機能セットを提供するために複数のSSDコントローラーを使うことができる。すなわち、LWBは、単一多機能PCIe記憶デバイスとして適切な数のPAPP-EP/PAPP-RP/RPスライスを使って多くのSSDコントローラーをホストに連結するのに使うことができる。
本発明の技術的思想の他の実施形態と同様に、使用された数字は例示的なものであり、限定的なものではない。したがって、LWBのエンドポイントは任意類型のバス、該当バスの任意のバージョン及び該当バスの多くのレーンを使うことができ、LWBのエンドポイントは多くのPFを露出させることができ、それぞれのSSDコントローラーによって露出されるPFの数は変わることができ、内部バス類型、バージョン及び速度はSSDコントローラーに対する連結によって変わることができ(個別的に変わることができ)、LWBに連結されたSSDコントローラーの数は変わることができ(そして、LWBの異なる又は同じ経路地点に連結されることができ)、等々であることができる。
図1は本発明の技術的思想の一実施形態によるデバイスのVFを使ってLWB(Lightweight Bridge)によって露出されるPF(Physical Functions)をエミュレートすることができるLWBを含むマシンを示す。また、図1には、ホストと言えるマシン105が示されている。マシン105は、プロセッサ110を含むことができる。プロセッサ110は、任意の多様なプロセッサになることができる。例えば、Intel Xeon、Celeron、Itanium、又はAtomプロセッサ、AMD Opteronプロセッサ、ARMプロセッサなどであり得る。図1はマシン105の単一プロセッサ110を示し、マシン105は多数のプロセッサを含むことができ、それぞれは単一コア又は多重コアプロセッサであり得、任意の所望の組合せで作ることができる。
また、マシン105は、メモリ115を含むことができる。メモリ115は、フラッシュメモリ、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、永続的RAM、FRAM(Persistent Random Access Memory)、FRAM(Ferroelectric Random Access Memory)又はMRAM(Magnetoresistive Random Access Memory)などのNVRAM(Non-Volatile Random Access Memory)のような任意の多様なメモリであり得る。また、メモリ115は、相異なるメモリ類型の任意の所望組合せであり得る。また、マシン105は、メモリ115に対するアクセスを管理するのに使うことができるメモリコントローラー120を含むことができる。
また、マシン105は、SSD(Solid State Drive)125を含むことができる。SSD 125はデータを記憶するのに使うことができ、SSD 125の多様な性能を作動させるために、プロセッサ110(及びそこで実行されるソフトウェア)によって使われる物理機能(PF)及び仮想機能(VF)の全てを露出させることができる。図1はSSD 125を示すが、本発明の技術的思想の実施形態はPF及びVFを提供する任意の類型のデバイスを含むことができる。例えば、データ記憶以外の基本機能を提供するデバイスのように、PF及びVFを提供するハードディスクドライブのような他の類型の記憶デバイスをSSD 125の代わりに使うことができる。本文書の残りの部分で、SSD 125についての任意の言及はPF/VFを提供することができる他の類型のデバイスについての言及を含むものである。本発明の技術的思想の一部実施形態で、SSD 125はPCIe(Peripheral Component Interconnect Express)バスに連結されることができ、PCIe PF及びVFを提供することができるが、本発明の技術的思想の実施形態は他のインターフェースを使うことができる。プロセッサ110は、SSD 125に対するアクセスを支援することができるデバイスドライバー130を実行することができる。
SSD 125とマシン105の残り部分との間にはLWB 135が位置することができる。LWBはSSD 125とマシン105の残り部分との間のブリッジとして作用することができ、VFの代わりにPFとしてSSD 125の機能を露出させることができる。
図1はマシン105をサーバー(独立型又はラックサーバーであり得る)として示すが、本発明の技術的思想の実施形態は、限定なしに任意の所望類型のマシン105を含むことができる。例えば、マシン105は、デスクトップ型コンピュータ又はラップトップ型コンピュータ又は本発明の技術的思想の実施形態から利益が得られる任意の他のマシンに代替されることができる。また、マシン105は、特殊携帯用コンピュータマシン、タブレット型コンピュータ、スマートフォン及びその他のコンピュータマシンを含むことができる。また、SSD 125からのデータにアクセスすることができるアプリケーションは、マシン105から離隔されて任意の類型(有線、無線、グローバルなど)の一つ以上のネットワークを横断するネットワーク連結によってマシン105にアクセスすることができる他のマシンに位置し得る。
図2は図1のマシンの追加詳細事項を示す。図2で、一般に、マシン105は、デバイス105のコンポーネントの作動を編成するのに使うことができるメモリコントローラー120及びクロック205を含むことができる一つ以上のプロセッサ110を含む。また、プロセッサ110は、例としてRAM(random access memory)、ROM(read-only memory)、又は他の状態記憶媒体を含むことができるメモリ115に連結されることができる。また、プロセッサ110は、記憶デバイス125及び例えばイーサネットコネクタ又は無線コネクタであり得るネットワークコネクタ210に連結されることができる。また、プロセッサ110は、バス215に連結されることができ、バス215には、数あるコンポーネントの中でもとりわけ、ユーザーインターフェース220、及びI/Oエンジン225を使って管理することができるI/Oインターフェースポートが付着することができる。
図3は図1のSSDの詳細事項を示す。図3で、SSD 125は、HIL 305、SSDコントローラー310、及び多様なチャネル320-1~320-4に組み込まれることができる多様なフラッシュメモリチップ315-1~315-8(“フラッシュメモリ記憶部”ともいう)を含むことができる。HIL 305は、SSD 125と他のコンポーネント(図1のプロセッサ110及び図1のLWB 135など)との間の通信を管理することができる。また、HIL 305は、SSD 125から離れたデバイス、つまりデバイス105の一部と見なされないが、例えば一つ以上のネットワーク連結によってSSD 125と通信するデバイスとの通信を管理することができる。このような通信は、SSD 125からデータを読み出すための判読要請、SSD 125にデータを書き込むための記録要請、及びSSD 125からデータを削除するための削除要請を含むことができる。HIL 305は、単一ポートのみを介してインターフェースを管理することができるか、又は多数のポートを介してインターフェースを管理することができる。代案として、SSD 125は多数のポートを含むことができ、これらのそれぞれはそのポートにわたってインターフェースを管理するために、個別HIL 305を有することができる。また、本発明の技術的思想の実施形態は可能性を混合することができる(例えば、3個のポートを有するSSDが、一つのポートを管理するための一つのHILと、他の2個のポートを管理するための第2のHILとを有することができる)。
SSDコントローラー310は、フラッシュメモリコントローラー(図3に図示せず)を使ってフラッシュメモリチップ315-1~315-8上でガーベジコレクション及び他の動作とともに判読及び記録動作を管理することができる。SSDコントローラー310は、FTL325、フラッシュコントローラー330及びエンドポイント335を含むことができる。FTLは(図1のホスト105によって使われる)論理ブロックアドレス(logical block address、LBA)を実際にSSD310上にデータが記憶された物理ブロックアドレス(physical block address、PBA)にマッピングすることを管理することができる。FTL325を使うことにより、図1のホスト105は、SSD 125内でデータが一ブロックから他のブロックに移動するとき、報告される必要がない。
フラッシュコントローラー330は、フラッシュチップ315-1~315-8へのデータ記録及びそれからのデータ判読を管理することができる。エンドポイント335は、(図1のホスト105又は図1のLWB 135などの)さらに他のデバイス上のルートポートに連結されることができるSSD 125に対するエンドポイントとして動作することができる。
図3はSSD 125が8個のフラッシュメモリチップ315-1~315-8が4個のチャネル320-1~320-4に組み込まれたもののように示されているが、本発明の技術的思想の実施形態は、複数のフラッシュメモリチップが複数のチャネルに組み込まれたものをサポートすることができる。同様に、図3はSSDの構造を示したが、他の記憶デバイス(例えば、ハードディスクドライブ)は類似の潜在的利点を有する異なる構造を使って具現することができる。
図4a~図4cは本発明の技術的思想の多様な実施形態による図1のLWBを示す。図4aで、LWB 135は、エンドポイント405、APP-EP 410、APP-RP 415及びルートポート420を含むものとして示されている。エンドポイント405は、図1のホスト105のような他のデバイスのルートポートと通信するのに使うことができる。図4aで、エンドポイント405は、16個のPFをアップストリームデバイスに露出させ、アップストリームデバイスと通信するのに使うことができる4個のレーンを有するPCIe3世代インターフェースを使うものとして示されている。よって、図1のホスト105に対するインターフェースは、インターフェース425によって示したように、4個のレーンを有するPCIe3世代インターフェースであり得る。同様に、ルートポート420は、SSD 125のような他のデバイスのエンドポイントと通信することができる。よって、SSD 125に対するインターフェースは、インターフェース430によって示したように、4個のレーンを有するPCIe3世代インターフェースであり得る。図4aで、ルートポート420は、ダウンストリームデバイスと通信するのに使うことができる4個のレーンを有するPCIe3世代インターフェースを使うものとして示されている。図4aで、ルートポート420はSSD 125によって一つのPF及び15個のVFが羅列されたものとして示され、エンドポイント405は16個のPFを露出させるものとして示される。エンドポイント405によって露出された一つのPFはSSD 125によって露出されたそれぞれの機能(物理的又は仮想)に相応する。
エンドポイント405はAPP-EP 410と通信することができ、代わってAPP-EP 410はAPP-RP 415と通信することができる。APP-EP 410及びAPP-RP 415はエンドポイント405とルートポート420との間での情報の変換を管理することができる。図4aは、エンドポイント405がAPP-EP 410と通信する方法、APP-EP 410がAPP-RP 415と通信する方法、又はAPP-RP 415がルートポート420と通信する方法の詳細事項を示していないが、これは任意の所望通信メカニズムを使うことができるからである。例えば、エンドポイント405、APP-EP 410、APP-RP 415及びルートポート420はPCIe又は所望バージョンのインターフェースを有し、所望数のデータバス幅を含むAXI(Advanced eXtensible Interface)バスのような他のバスを使って通信することができる。もしくは、エンドポイント405、APP-EP 410、APP-RP 415及びルートポート420は、任意の所望バス/インターフェースを使う独占メッセージング方式を使って通信することができる。また、本発明の技術的思想の実施形態は、エンドポイント405、APP-EP 410、APP-RP 415及びルートポート420の間の他の通信メカニズムを含むことができる。LWB 135の内部通信方式とLWB 135から図1のホスト105又はSSD 125への通信方式との間には関係がないことができる。
APP-RP 415は、構成テーブル435を含むことができる。構成テーブル435は、LWB 135についての構成情報を記憶することができる。このような構成情報の例は、エンドポイント405によって露出されたPFとSSD 125によって提供される(及びルートポート420を介しての羅列によって決定される)PF/VFとの間のマッピングを含むことができる。また、構成テーブル435に記憶された構成情報は、エンドポイント405によって露出された特定のPFに係わり得るQoSポリシー(SLA(Service Level Agreement)とも指称することができる)についての情報を含むことができる。構成管理者440は、構成テーブル435に情報を記憶してLWB 135を構成するのに使うことができる。また、構成管理者440は、SSD 125によって露出された機能についての情報を決定するのに使うことができ、類似の(又は同じ)機能(しかし、PF及びVFよりはPFのみ使う)を提供するようにエンドポイント405をプログラミングすることができる。構成管理者440が行うものの詳細事項はSSD 125によって提供される特定の機能によることができるが(構成管理者440はSSD 125によって提供されるPF及びVFと一致するPFセットを提供するようにエンドポイント405を構成することができるからである)、原則は一般的にSSD 125によって露出された個別PF/VFの構成を決定すること、エンドポイント405によって露出される適切な数のPFを設定すること、及びSSD 125によって露出されたPF/VFの構成と一致するようにこれらのPFを構成することに要約することができる。
図4aはAPP-EP 410及びAPP-RP 415を個別コンポーネントとして示すが、本発明の技術的思想の実施形態はこれらの両コンポーネントを単一コンポーネントに結合することができる(前述したように、APP-EP 410及びAPP-RP 415の両者の機能を処理する責任がある)。実際に、LWB 135の全体は互いに通信する別個のコンポーネントではなくて単一ユニットに具現されることができる。LWB 135(だけでなく、エンドポイント405、APP-EP 410、APP-RP 415、ルートポート420及び構成管理者440)は任意の所望方式を使って具現することができる。本発明の技術的思想の実施形態は、他の可能性の中でも、適切なソフトウェアを有する汎用プロセッサ、FPGA(Field Programmable Gate Array)、ASIC(Application-Specific Integrated Circuit)、GPU(Graphics Processing Unit)及びGPGPU(General Purpose GPU)を使ってLWB 135(及び/又はそのコンポーネントを個別的に及び/又は集合的に)具現することができる。
図4a(及び以下の図4b及び図4cでも同様)で、図示した任意の特定の数はただ例示的なものであり、本発明の技術的思想の実施形態は他の数を含むことができる。例えば、ルートポート420はSSD 125から羅列された1個のPF及び15個のVFを有するものとして示されているが、SSD 125は任意の数(0以上)のPF及びVFを露出させることができる(どの露出されたVFも一部PFのハードウェアに依存するが、どの露出されたVFに対してもハードウェアを提供する少なくとも一つの露出されたPFがなければならない)。同様に、エンドポイント405は16個のPFを露出させるものとして示されているが、エンドポイント405は任意の数(0以上)のPFを図1のホスト105に露出させることができる。エンドポイント405はSSD 125と同数の総機能を露出するが、SSD 125によって露出された機能とエンドポイント405によって露出された機能との間には一対一の対応が必要ではないことに留意する。例えば、SSD 125によって露出された一部の機能はエンドポイント405によって露出された対応PFを有しないか、エンドポイント405によって露出された単一PFはSSD 125によって露出された複数の機能(物理的及び/又は仮想)にマッピングされることができる。前者の例として、記録要請は一度に一つのSSDのみに伝達されることができ、これはエンドポイント405によって露出された対応PFがない非選択SSDに対する記録要請を支援する機能を残す。後者の例として、LWB 135が多数のSSDに連結される本発明の技術的思想の実施形態で(図4cに示したように)、たとえガーベジコレクションが遂行されるように要請するために、単一PFのみエンドポイント405によって図1のホスト105に露出されることができるが、図1のホスト105による、ガーベジコレクションを遂行しろという要請はLWB 135に連結された全てのSSDに伝送されることができる。
同様な方式で、図4aに示した特定製品の任意のバージョンはただ例示的なものであり、本発明の技術的思想の実施形態は他の製品又は他のバージョンの製品を使うことができる。例えば、図4aは4個のレーンがあるPCIe3世代を使用する(インターフェース425を介して)図1のホスト105及び(インターフェース430を介して)SSD 125と通信するLWB 135を示す。本発明の技術的思想の他の実施形態は、他の世代のPCIeバス/インターフェース、又は他の数のレーン、又はAXI(Advanced eXtensible Interface)バスのような他の類型のバスを使うことができる。例えば、図4bはインターフェース425とインターフェース430が4個の代わりに8個のレーンを有するPCIe3世代を使うという点を除き、図4aと同様である。
本発明の技術的思想の一部実施形態で、単一SSD 125では、図1のホスト105のために、十分な機能を提供しないことがある。例えば、図4a及び図4bのSSD 125がただ1個のPFと7個のVFのみ提供し、それによって図1のホスト105が望む特定の機能を提供しなかったら、SSD 125を所望機能を提供する他のデバイスに交替することができる。代案として、LWB 135は、図4cに示したように、複数のデバイスに連結されることができる。
図4cで、LWB 135はそれぞれインターフェース430-1及び430-2を介してSSD 125-1及び125-2に連結されるものとして示されている。SSD 125-1及び125-2はそれぞれ1個のPF及び7個のVFを提供するので(ルートポート420-1及び420-2から分かるように)、SSD 125-1及び125-2のいずれも個別的に16個の機能を提供することができない。しかし、SSD 125-1及びSSD 125-2は一緒に16個の機能を提供する。よって、SSD 125-1及び125-2の資源(露出された機能など)を集約(aggregating)することにより、LWB 135は全ての機能を提供する単一SSDなしにも総16個のPFを提供することができる。
図4cから分かるように、LWB 135はただ一つのエンドポイント405を含み、それぞれ2個のAPP-EP 410-1及び410-2、APP-RP 415-1及び415-2及びルートポート420-1及び420-2を含む。このような方式で、LWB 135は、SSD 125-1及び125-2によって提供される機能を集約して単一エンドポイント(エンドポイント405)から16個の機能の全てを露出させることができる。しかし、エンドポイント405によって露出される様々なPFはSSD 125-1及び125-2上の機能にマッピングされ得るので、LWB 135はまたマルチプレクサー/デマルチプレクサー445を含むことができる。マルチプレクサー/デマルチプレクサー445は、エンドポイント405の特定の露出されたPFに関連した要請を、対応するPF又はVFを提供するSSD 125-1又は125-2に連結される通信経路を持つ適切なAPP-EP 410-1又は410-2にルーティングすることができる。図4a及び図4bは(LWB 135に連結されたSSD 125のみあるので)マルチプレクサー/デマルチプレクサー445を示さないが、LWB 135が一つのSSD 125のみに連結される本発明の技術的思想の実施形態でLWB 135は依然としてマルチプレクサー/デマルチプレクサー445を含むことができる。マルチプレクサー/デマルチプレクサー445は何の機能も追加しないかもしれないが、マルチプレクサー/デマルチプレクサー445を含むことに関連した実際の費用もない(しかし、LWB 135が単一デバイスのみにしか連結することができない場合、マルチプレクサー/デマルチプレクサーを含むことは何の利点もない)。
本発明の技術的思想の実施形態は、ただ露出された機能の他に、資源を集約(aggregate)することができるという点に留意する。例えば、図4cで、インターフェース430-1及び430-2はそれぞれ8個のレーンのPCIe3世代バス/インターフェースを含むことができる。しかし、SSD 125-1及び125-2を並列に使うことができるから(すなわち、SSD 125-1及び125-2の全てが同時に要請を処理することができる)、LWB 135はインターフェース425を介して図1のホスト105に16個のレーンのPCIe3世代バス/インターフェースを提供することができる。同じ方式で、SSD 125-1及び125-2のそれぞれによって提供される帯域幅を集約し、LWBがそれぞれSSD 125-1、125-2によって別に提供される帯域幅の和と同じ帯域幅を通知(advertise)することができる。また、本発明の技術的思想の実施形態は、機能、PCIeレーン又は帯域幅の他の資源を集約することができる。
図4a及び図4bのように、図4cに示した任意の数字又はバージョンはただ例として使ったものであり、本発明の技術的思想の実施形態は他の数字又はバージョンをサポートすることができる。例えば、SSD 125-1及び125-2は同数の露出された機能(物理的及び/又は仮想)を提供する必要がなく、必ずしも同じ世代又は数のPCIeバス/インターフェースレーンを使わなければならない必要もない。
図4a~図4cで、LWB 135はSSD 125と別個に示されている。しかし、本発明の技術的思想の実施形態は、これらの2個のデバイスを単一ユニットに結合することができる。すなわち、SSD 125は、図3のHIL 305の前(又は少なくとも図3のSSDコントローラー310の前)に位置するLWB 135を自分のケース内に含むことができる。本発明の技術的思想の実施形態は単一SSD内にLWB 135を含むものに制限されない。また、図4cに示した具現を達成するために、複数のSSDを含む単一ハウジングがLWB 135を含むことができる。この文書の目的上、“連結された(connected)”という用語又はこれと類似した用語は、任意のハードウェアをデバイスと物理的に共有するからであるか、又はLWB 135がSSD 125と物理的に区別されるから、どのインターフェースを介しての連結のためであるかにかわらわず、LWB 135と通信する任意のデバイスを意味するものである。
上述したように、VFを露出させるデバイスの問題点の一つは、露出されたVFにアクセスするために、図1のホスト105がSR-IOVソフトウェアを具現しなければならないことである。このSR-IOVソフトウェアは、デバイスとの通信に遅延を加える。しかし、デバイスのVFに対するアクセスを管理するのに使われるSR-IOVシーケンスは以前に知られているので、SR-IOVシーケンスは状態マシンを使って具現することができ、図1のホスト105がデバイスのVFにアクセスするためにSR-IOVを使わなければならないという負担を軽減することができる。また、状態マシンはハードウェアを使って具現することができるから、図1のホスト105内のSR-IOVソフトウェアの代わりにLWB 135内で状態マシンを使うことは要請処理の遅延を減らすことができる。SR-IOVシーケンスを具現するために、LWB 135内で状態マシンを使えば、ホストからデバイスまでSR-IOVプロトコルの全ての負担が根本的になくなり(offload)遮断される。言い替えれば、図1のホスト105は、図1のホスト105が通信するデバイス内にSR-IOVの何らかの具現が存在しても、それを知ることができなくてもよい。
図5は図4a~図4cの構成管理者440の詳細事項を示す。構成管理者440は、SR-IOV(Single Root Input/Output Virtualization)シーケンス505及び状態マシン510を含むことができる。SR-IOVシーケンス505は図1のホスト105内のSR-IOVソフトウェアで具現されるシーケンスであり得、状態マシン510を使って遂行することができる。SR-IOVシーケンス505は、構成管理者440内のROM(Read-only memory)に記憶されることができる。状態マシン510は、LWB 135自体、及び図4a~図4cに示したそのコンポーネントと一緒に、他の可能性の中で、汎用プロセッサ、FPGA、ASIC、GPU又はGPGPUを使って具現することができる。
図6は図1のLWB 135によって露出されたPFと図1のSSD 125(又は図4cのSSD 125-1及び125-2)によって露出されたPF/VFとの間のマッピングを示す。図6で、PF 605は図1のLWB 135によって露出されたPFである(より具体的に、図4a~図4cのエンドポイント405によって露出されたPF)。一方、PF/VF 610は図1のSSD 125によって露出される機能(物理的及び仮想の両方)である。そして、マッピング615は、PF 605とPF/VF 610との間のマッピングを示すことができる。図4a~図4cの構成管理者440はPF 605のどのPFがPF/VF 610のどのPF/VFにマッピングされるかを決定するために任意の所望メカニズムを使うことができるが、図6に示したマッピングは説明のためのものであり、根本的に任意的である。マッピングは、図1のホスト105(又は図1のホスト105内のBMC(BaseBoard Management Controller))又は図1のSSD 125によって設定された案内(guidance)及び/又はポリシーを考慮して具現することができる。
図7は図1のホスト105からの構成記録要請をプロセッシングする図1のLWB 135を示す。図7で、図1のLWB 135(より具体的に、エンドポイント405)は構成記録要請705を受信することができる。そして、エンドポイント405は構成記録要請705をローカルで処理し、構成記録要請705に含まれた全ての変更を遂行することができる。
構成記録要請705はSSD 125に対する変更を要求しないことができることに留意する。例えば、図1のホスト105によって設定されたQoSポリシーはエンドポイント405によって露出されたPFのみに影響を与えることができ、SSD 125内で何の変更も要求しない。しかし、一部状況で構成記録要請705はSSD 125の修正を要求することができる。例えば、構成記録要請は図1のLWB 135によってのみ管理可能なデータではなく、SSD 125の基本機能についてのデータを変更することができる。その状況で、エンドポイント705はルートポート420を介して(点線矢印710及び715で示したように)構成記録要請705をSSD 125に伝達することができる。構成記録要請705は、図4a~図4cのAPP-EP 410及び図4a~図4cのAPP-RP 415を介して、又は図4a~図4cの構成管理者440を介してルートポート420に伝達されることができる。図4a及び図4bの構成テーブル435は、構成記録要請705がSSD 125にも適用(apply)されなければならないかを決定するのに使うことができる(エンドポイント405とSSD 125の構成が互いにミラーリングされることを保障するため)。
図4a~図4cのように、エンドポイント405(及び場合によってはSSD 125)がどのように構成できるかについての詳細事項は構成記録要請705の詳細事項に大きく依存する。しかし、構成記録要請705の詳細事項が一度知られれば、エンドポイント405(及び場合によってはSSD 125)に対する変更は簡単に遂行することができる。
上述したように、エンドポイント405とSSD 125の構成は互いにミラーリングすることが好ましい。しかし、前述したように、エンドポイント405のみに適用される(又はエンドポイント405がこのような変更を処理することができるからSSD 125には重要ではない)一部の構成があり得る。構成変更がSSD 125に重要ではない場合、このような構成変更がSSD 125に伝達される必要はない。
図7で、構成記録要請705は図1のホスト105から始まるものとして説明される。しかし、本発明の技術的思想の実施形態は、図4a~図4cのエンドポイント405の構成変更をSSD 125が要請することをサポートすることができる。すなわち、図1のSSD 125は、ランタイムの間に図4a~図4cのエンドポイント405によって露出されたPFの構成、特徴又は能力に対する変更を図1のホスト105に動的に要請することができる。例えば、図1のSSD 125は、図4a~図4cのエンドポイント405によって露出されたPFに対する多数のインタラプトベクターを増加又は減少させることができる。このような変更は、NVMe(Non-Volatile Memory Express)のような上位水準の記憶通信プロトコル(storage communication protocol)を使って図1のホスト105によって(図1のLWB 135を介して)図1のSSD 125に通信されるアプリケーション要求事項の変更に起因することができる。
図8は図1のホスト105から構成判読要請をプロセッシングする図1のLWB 135を示す。図8で、エンドポイント405は、図1のホスト105から構成判読要請805を受信することができる。エンドポイント405は、要請された構成情報を読み出し、これを構成情報810として図1のホスト105にリターンすることができる。
図7の構成記録要請705のように、構成判読要請805は、SSD 125から判読されるように、SSD 125に伝達されることができる。よって、構成判読要請805は構成判読要請815及び820としてルートポート420及びSSD 125にそれぞれ伝達されることができ、構成情報825及び830として構成情報810がリターンされる。しかし、エンドポイント405の構成がSSD 125の構成をミラーリングしているはずであるので、要請された構成情報を決定するために構成判読要請805をSSD 125に伝達する必要がないことがあり得る。また、図7の構成記録要請705のように、構成判読要請805は、図4a~図4cのAPP-EP 410及び図4a~図4cのAPP-RP 415を介して、又は図4a~図4cの構成管理者440を介してルートポート420に伝達されることができる。
図9は、LWB 135内でアドレス(図中では住所と記す)変換を処理する図4a~図4cのAPP-EP(Application Layer-End point)410及び図4a~図4cのAPP-RP(Application Layer-Root Port)415を示す。図9で、アドレス905は図1のホスト105から受信されたアドレスであり得る(例えば、図1のホスト105が判読を要請するNVMeレジスター)。そして、APP-EP 410は、図1のホスト105によって適用(invoke)されるPFに対するホストBAR(Base address register)910を引くことができる。そして、APP-RP 415は、図4a~図4cのエンドポイント405の要請されたPFがマッピングされるPF/VFに対するSSD BAR 915を追加することができ、このようにしてSSDアドレス920を生成することができる。このような方式で、APP-EP 410及びAPP-RP 415はホストの観点でのアドレスを図1のSSD 125によって処理可能なアドレスに変換することができる。
SSDアドレスをホストの観点でのアドレスにさらに変換するために、このようなプロセスは反対に使うことができるという点を留意しなければならない。よって、APP-RP 415はSSDアドレス920からSSD BAR 915を引くことができ、APP-EP 410はホストBAR 910を加えることにより、ホストアドレス905を生成することができる。
図10は図1のLWB 135内で変更される図6のマッピングを示す。マッピング615が変更可能な理由はさまざまのものがある。例えば、記憶(ストレージ)パラメーター1005は、マッピング615に対する変更をトリガーすることができる。例えば、特定のSSD上の可用容量が空き空間の閾容量を下回ると、新しい記録要請は、図4cのSSD 125-2のように、図1のLWB 135に連結された他のSSDに伝送されることができる。代案として、日付1010又は日付の時間1015は、マッピング615に対する変更をトリガーすることができる。例えば、特定のホスト105で特定の要請に対するピーク時間は午前6:30と午前8:00との間、午後5:00と午後9:00との間であり得るので、このような要請を処理するPFに関連した帯域幅は該当時間の間に増加し、他の時間には減少することができる。日付1010及び日付の時間1015は、既存の又は公知の日付/時間値を使って特定しなくても、日付及び/又は時間に関連した任意のトリガーで一般化することができる。例えば、たとえそのような要請が始まる特定の時間は分からないが(スポーツイベント期間はおよそ知られているが、イベント自体によってより縮まるかより延びることができる)、スポーツ競技が終わるときに家に移動するファンはスマートフォンのGPSアプリケーションで道案内を要請することができる。帯域幅使用1020自体も、例えば、図1のLWB 135に連結されたSSDにかけたロードの均衡を維持するために、マッピング615に対する変更をトリガーすることができる。最後に、QoSポリシー(図中では政策と記す)の変更1025はマッピング615の変更をトリガーすることができる。例えば、新しいQoSポリシーの追加は機能マッピング方法の変更を要求することができる。また、本発明の技術的思想の実施形態は、マッピング615の変更のために他のトリガーを含むことができる。トリガーにかかわらず、変更の結果として、マッピング615はマッピング1030に代替されることができ、これは依然として図4a~図4cのエンドポイント405によって露出されたPFを図1のSSD 125によって露出されたPF/VFにマッピングするが、たぶん他の配列にてマッピングする。
図11は関連付けられたQoS(Quality of Service)ポリシーを有する図1のLWBによって露出されたPFを示す。図11で、(図4a~図4cのエンドポイント405によって露出された)一つのPFが、露出されたPFに関連した単一QoSポリシー1105と一緒に示されている。しかし、本発明の技術的思想の実施形態は、任意の数の関連QoSポリシーを有する露出されたPFを含むことができる。例えば、図4a~図4cのエンドポイント405によって露出された一部PFは関連QoSポリシーを有しないこともある。図4a~図4cのエンドポイント405によって露出された他のPFは二つ以上の関連QoSポリシーを有することができる。
図4a~図4cのエンドポイント405によって露出されたPFに関連したQoSポリシー1105が与えられれば、図1のLWB 135は、その仕様によって、そのQoSポリシーを施行することができる。言い換えれば、仕様が大きく違うことがあるので、図1のLWB 135がどのように特定のQoSポリシーを施行するかについての詳細事項はここで言及しないこともできる。しかし、例として、QoSポリシー1105は、特定のPFに対する最大(及び/又は最小)帯域幅を指定することができる(したがって、他のPFが帯域幅の公平な分配を受けることを特定のPFが妨げないように保障するか、特定のPFが指定の帯域幅を割り当てられるように保障する)。そして、図1のSSD 125上の対応するPF/VFを使う通信が最大帯域幅を超えることを防止することにより、又はPFに対応するPF/VF以外の図1のSSD 125上のPF/VFを使う通信が露出されたPFに対する最小帯域幅を確保することを保障することにより、図1のLWB 135はQoSポリシー1105が満たされるように保障することができる。
図1のLWB 135はQoSポリシー1105を施行することができるが、ポリシーが適切であるかを確認することは、図1のホスト105(又は図1のSSD 125がポリシーの適用を要請する場合、図1のSSD 125)による。例えば、図1のSSD 125の最大帯域幅が100Gb/秒であり、総16個の機能(PF及びVF)がサポートされると仮定する。ホストがLWB 135によって露出された各PFに最小10GB/秒の帯域幅を保障するQoSポリシーを割り当てる場合、割り当てられた総帯域幅は160GB/秒であり、これは図1のSSD 125の能力を超える。その結果、一部のPFは関連QoSポリシーを満たすことができない。よって、図1のLWB 135がQoSポリシー1105を施行するうち、LWB 135は多様なPFに割り当てられた他のQoSポリシーと組み合わせ、QoSポリシー1105が全て同時に施行できるかを検査しないことができる。
したがって、QoSポリシーを施行することとQoSポリシーをいつも施行することができるようにすることには違いがある。図1のLWB 135は前者を行い、後者を行わないことができる。しかし、ただ一連のQoSポリシーを同時に施行することができないというだけで、何の個別QoSポリシーも満たされないときが来るという意味ではない。例えば、図1のSSD 125が総10GB/秒の帯域幅を提供することを再び検討し、図1のホスト105が、図4a~図4cのエンドポイント405によって露出された2個の相異なるPFに対して、各PFに6GB/秒の最小帯域幅を保障するQoSポリシーを指定すると仮定する。それぞれのPFに図1のSSD 125の利用可能な10GB/秒の帯域幅のうち6GB/秒が“確保”されるから、集合的に、両QoSポリシーを満たすことはできない。しかし、両機能を同時に呼び出すことが論理的に(又は物理的に)不可能であることが分かっていれば(例えば、一つの機能は図1のSSD 125でデータを判読するか図1のSSD 125にデータを記録することに関連し、他の機能は図1のSSD 125が一貫性確認完了まで他の機能に応答することができないようにする内部一貫性確認を図1のSSD 125が実行することを含む場合)、図1のホスト105は両QoSポリシーを共に指定することができる。たとえ、図1のSSD 125で提供する帯域幅を累積して超えても、両ポリシーが同時に施行されることはなく、よって実際の(又はより正確に言えば潜在的な)衝突ではなくて論理的衝突があるのみである。
上述したように、図1のLWB 135は時々、例えば、図4a~図4cのエンドポイント405によって露出された特定のPFが、図1のSSD 125の他の機能が過度に制限されるほど多くの帯域幅を使うことを防止するために、帯域幅スロットリングを遂行する必要があり得る。図12a及び図12bは帯域幅スロットリング(bandwidth throttling)を行う図1のLWB 135を示す。図12aで、LWB 135は図1のホスト105から“高い”又は“大きい”帯域幅1205を受信するものとして示されている。この帯域幅がどの理由でもあまりにも大きい場合、LWB 135は“低い”又は“小さい”帯域幅1210として示したように、図1のSSD 125に対する帯域幅をスロットルすることができる。図12bには、反対の状況を示す。LWB 135は図1のSSD 125との“高い”又は“大きい”帯域幅1215を有することができるが、図1のホスト105との帯域幅1220をスロットリングすることができる。よって、図1のSSD 125の可用帯域幅がPFに対して設定されたSLAの最大帯域幅より高い場合、LWB 135は帯域幅をスロットリングすることができる。
本発明の技術的思想の実施形態は、さまざまな理由で帯域幅スロットリングを遂行することができる。(図4a~図4cのエンドポイント405によって露出された特定のPFに関連した帯域幅を、そのPFに対する帯域幅があまりにも大きい場合にスロットリングすることができる)図11のQoSポリシー1105とは別に、帯域幅スロットリングの他の理由は温度又は電力消費を含むことができる。例えば、LWB 135(又は図1のSSD 125)の温度があまりにも高くなれば(すなわち、何らかの閾値を超える)、LWB 135は温度を低下させるために帯域幅をスロットリングすることができる。そして、温度が充分に下がれば(元の閾値の下に下がるか、元の閾値より低い他の閾値の下に下がることを意味することができる)、LWB 135は帯域幅スロットリングを中止することができる。電力消費は、LWB 135(又は図1のSSD 125)の電力消費が帯域幅スロットリングをトリガーすることができ、減少した電力消費閾値が帯域幅スロットリングを解除するという点を除き、温度と同じ方式で帯域幅スロットリングをトリガーすることができる。これらの閾値はLWB 135内のどこかに記憶されることができる。帯域幅がスロットリングされることができるさらに他の理由は、図4a~図4cのエンドポイント405によって露出されたPFに対して設定された優先順位のためであり得る。互いに異なるPFが使われる場合、優先順位の高いPFに対する帯域幅に有利となるよう、優先順位の低いPFの帯域幅をスロットリングすることができる。
帯域幅をスロットリングするさらに他の理由は、QoS又はSLAを管理するためであり得る。例えば、図1のホスト105は、LWB 135が提供することができるものより低いレベルの帯域幅に対してのみ費用を支払っていることがあり得る。よって、図1のホスト105とLWB 135がもっと高い全体帯域幅を使って通信することはできるが、LWB 135は、提供されるサービスが図1のホスト105に保障されたものより大きくならないように、図1のホスト105に対する帯域幅を制限することができる。言い換えれば、LWB 135は、SLA又は価格計画に基づいてPFに対する最大記憶帯域幅を制限するか限度を決定することができる。
図12a及び図12bは帯域幅について具体的に説明するが、他の資源は図1のホスト105又は図1のSSD 125との通信のために同様にモニタリングされ、スロットリングされることができることに留意しなければならない。例えば、遅延をある程度制御して、高いターゲット遅延のPFより低いターゲット遅延のPFを有利にさせることができる。
LWB 135は、図4a~図4cのエンドポイント405によって個別的に露出されたそれぞれのPFによって消費された帯域幅(又は他の資源)を測定及びモニタリングすることができる。帯域幅は、両方向に、つまりホストからデバイスに(ホスト記録動作)及びデバイスからホストに(ホスト判読動作)測定及びモニタリングすることができる。また、帯域幅スロットリングは独立的にいずれか一方向に遂行することができる。帯域幅(又は他の資源)スロットリングは測定された帯域幅及びQoSポリシー設定の両者の結果として遂行することができる。
図13は図1のSSD 125にクレジットを発行する図1のLWB 135を示す。クレジットは、LWB 135がSSD 125によって使われる帯域幅の量を管理することができる一つの方法である。特定の要請が与えられれば、LWB 135は特定数のクレジット1305を発行することができ、それぞれのクレジット1305はSSD 125が伝送することができる特定量のデータを示す。よって、LWB 135が発行したクレジット1305の数はSSD 125の帯域幅を制御することができる。LWB 135は、データ伝送をカバーするのに十分な(又はほとんど十分な又は他の所望数の)クレジット1305を発行することができる。SSD 125がデータを伝送するとき、該当データの伝送はクレジット1305を使う。仮に、SSD 125に使用可能なクレジットがない場合、SSD 125は新しいクレジットが発行されるまでデータを伝送することができない。
クレジット1305は任意の所望方式で発行することができる。本発明の技術的思想の一部の実施形態で、LWB 135は、例えば独占メッセージであり得るメッセージを介してクレジット1305をSSD 125に伝送することができる。本発明の技術的思想の他の実施形態で、LWB 135は、クレジット1305をSSD 125上の特定アドレス、例えばNVMeアドレス空間の予約されたアドレスに記録することができる。本発明の技術的思想のさらに他の実施形態で、LWB 135は、クレジット1305をLWB 135内のアドレス(再び、たぶん予約されたアドレス)に記録することができる。そして、SSD 125は、どのクレジット1305が利用可能であるかを知るためにアドレスを判読することができる。クレジット1305の使用はSSD 125の帯域幅をスロットリングする一つの方法である。SSD 125に発行されるクレジット1305の数を制限することにより、SSD 125は与えられた時間単位内で特定の取引に必要な全てのデータをダウンロードすることを防止することができる。SSD 125の帯域幅を減少させることにより、SSD 125は減少した電力消費及び/又はもっと低い温度を受けることができる。結局、電力消費及び/又は温度が許容可能な水準に落ちれば(図12を参照して前述したように、帯域幅スロットリングが始まることができるレベルと違うことができる)、LWB 135はSSD 125の帯域幅スロットリングを中断することができる。
他の実施形態で、LWB 135は、帯域幅スロットリングを達成するために、データ伝送パケットの間に遊休期間を挿入することができる。測定された帯域幅(又は他の資源)及びQoSポリシー設定に基づいてデータパケットのパケット間隔を調整することにより、LWB 135は個別PFに対して帯域幅制限を達成するか、又は全てのPFに対して集合的に達成することができる。
図14a及び図14bは、本発明の技術的思想の一実施形態によって、図1のLWBが図1のSSD 125によって露出されたPF/VFを識別し、LWB 135からPFを露出させ、図1のLWB 135によって露出されたPFと図1のSSD 125によって露出されたPF/VFとの間のマッピングを生成する例示的な過程のフローチャートを示す。図14aのブロック1405で、図1のLWB 135は、図1のSSD 125によって露出されたPF及びVFを羅列することができる。ブロック1410で、図1のLWB 135は図1のLWB 135によって露出されるPFを生成することができる(より具体的に、図4a~4cのエンドポイント405によって露出されるPF)。図1のLWB 135によって生成されたPFの数が図1のSSD 125によって露出されたPF及びVFの数と必ずしも同一である必要はないことに留意する。図1のSSD 125によって露出された特定の機能は図1のLWB 135によって露出された対応するPFを得ることができないことがあり、図1のLWB 135によって露出された単一PFは図1のSSD 125の複数のPF/VFにマッピングされることができる。ブロック1415で、図1のLWB 135は羅列すべき他の連結されたデバイス(例えば、図4cのSSD 125-2)があるかを確認することができる。仮に、そうであれば、プロセスは次のデバイスのPF及びVFを羅列するために、ブロック1405に復帰することができる。
連結された全てのデバイスが羅列されたと仮定すれば、ブロック1420(図14a)で、図1のLWB 135は、図4a~図4cのエンドポイント405によって露出されたPFを図1のSSD 125(及び他の連結されたデバイス)によって露出されたPF及びVFにマッピングすることができる。ブロック1425で、図1のLWB 135は図1のSSD 125及びその他の連結されたデバイスの帯域幅のような他の資源を決定することができ(また、この決定は図14aのブロック1405の一部として行われることができる)、ブロック1430で、図1のLWB 135は連結された全てのデバイスの資源を集約することができる。このような方式で、図1のLWB 135はどの個別デバイスより高い全体資源を提供すると思われる。
ブロック1435で、図1のLWB 135は、図1のホスト105から羅列要請(enumeration request)を受信することができる。ブロック1440で、図1のLWB 135は、図4a~図4cのエンドポイント405のPFを露出させることにより、図1のホスト105の羅列要請に応答することができる。
図15a及び図15bは、図1のLWBが図1のホストから処理要請を受信する例示的な過程のフローチャートを示す。図15で、ブロック1505で、図1のLWB 135は、図1のホスト105から図4a~図4cのエンドポイント405によって露出された何らかのPFでの要請を受信することができる。要請がどのPFに向かい、そのPFがどの機能を示すかは分析とは関連がない。ブロック1510で、図1のLWB 135は、要請が向かうPFを図1のSSD 125のPF又はVFにマッピングすることができる(例えば、図4a~図4cの構成テーブル435を使ってマッピングを遂行することができる)。ブロック1515で、LWB 135は、図4a~図4cのエンドポイント405によって露出されたPFにマッピングされるPF又はVFを含むデバイスとして図1のSSD 125を選択することができる。ブロック1515は、図1のLWB 135が図4cに示したように複数のデバイスに連結された場合にのみ問題となることができる。仮に、複数のデバイスがあれば、図4cの複数のAPP-EP 410-1及び410-2が要請を受信することができる。ただ一つのデバイスが図1のLWB 135に連結されることができる本発明の技術的思想の実施形態で(LWB 135が図4a及び図4bの一つのAPP-EP 410のみ含むか、図1のただ一つのSSD 125が図1のLWB 135に連結されているから)、ブロック1515は点線1520で示したように省略することができる。
適切なデバイス及び適切な目的地PF/VFが識別されれば、ブロック1525で、図1のLWB 135は要請を識別されたPF/VFに対する要請に変換することができる。これは、例えば図9を参照して前述したようなアドレス変換を含むことができる(及び図16を参照して後述する)。ブロック1530(図15b)で、図1のLWB 135は変換された要請を識別されたデバイスの識別されたPF/VFに伝送することができる。
ブロック1535で、図1のLWB 135は、識別されたデバイスの識別されたPF/VFから応答を受信することができる。ブロック1540で、図1のLWB 135は、識別されたデバイスのPF/VFを図4a~図4cのエンドポイント405によって露出されたPFにマッピングすることができる(例えば、図4a~図4cの構成テーブル435を使ってマッピングを遂行することができる)。ブロック1545で、図1のLWB 135は応答を図1のホスト105に対する応答に変換することができる。最後に、ブロック1550で、図1のLWB 135は、図4a~図4cのエンドポイント405の露出されたPFからのように応答をホストにさらに伝送することができる。
図16は図4a~図4cのAPP-EP及びAPP-RPが図1のホスト105及び図1のSSD 125間でアドレスを変換する例示的な過程のフローチャートを示す。図16で、ブロック1605で、図4a~図4cのAPP-EP 410は図1のホスト105からの要請に含まれたアドレスからホストBARを引くことができ、ブロック1610で、図4a~図4cのAPP-RP 415はブロック1605で決定されたアドレスにデバイスBARを追加することができる。
逆アドレス変換、つまり図1のSSD 125から図1のホスト105への変換を省略することができることに留意する。図1のSSD 125は、いずれか任意のデバイスと同様に、図1のホスト105によって使われる全体アドレスを受信することができる。よって、図1のSSD 125によって提供されるアドレスは、変換なしに図1のホスト105内の特定アドレスにアクセスするのに使うことができる。しかし、仮に、図1のSSD 125が図1のホスト105の全体アドレスを有しなかったら、図4a~図4cのAPP-RP 415が図1のSSD 125からの要請に含まれたアドレスからデバイスBARを引き、そして、図4a~図4cのAPP-EP 410がそのアドレスにホストBARを追加することで、アドレス変換を逆に遂行することができる。
図17は図1のLWBが図1のSSD 125にクレジット1305を発行する例示的な過程のフローチャートを示す。図17で、ブロック1705で、図1のLWB 135は図4a~図4cのエンドポイント405によって露出された個別PFによって消費された帯域幅を測定又はモニタリングすることができる。ブロック1710で、図1のLWB 135は図1のSSD 125に発行するために図13のクレジット1305を決定することができる。このようなクレジットは、図4a~図4cのエンドポイント405によって露出されたPFによって消費される帯域幅及び図1のSSD 125が伝送すべきデータ量によって決定することができる。図1のSSD 125は、図1のSSD 125に又は図1のSSD 125からデータを伝送するために、このようなクレジットを使うことができる。このような点で、図1のSSD 125に図13のクレジット1305を伝達するための多数のオプションが存在する。ブロック1715で、図1のLWB 135は、図13のクレジット1305を図1のSSD 125のアドレスに記録することができる。代案として、ブロック1720で、LWB 135は図13のクレジット1305を図1のLWB 135のアドレスに記録することができ、図1のSSD 125は図1のLWB 135のそのアドレスから図13のクレジット1305を判読することができる。代案として、ブロック1725で、図1のLWB 135は、図1のSSD 125にメッセージを伝送することができる。メッセージは図13のクレジット1305を含むことができる。
図18は図1のLWB 135が構成記録要請705を処理する例示的な過程のフローチャートを示す。図18で、ブロック1805で、図1のLWB 135は図7の構成記録要請705を受信することができる。図7の構成記録要請705は図1のホスト105又は図1のSSD 125から受信されることができる。ブロック1810で、図1のLWB 135(より具体的に、図4a~図4cの構成管理者440)は、図4a~図4cのエンドポイント405によって露出されたPFを図7の構成記録要請705によって特定されるもののように構成することができる。ブロック1815で、図1のLWB 135は、この構成を遂行するために、図5の状態マシン510及び図5のSR-IOVシーケンス505を使うことができる。最後に、ブロック1820で、図1のLWB 135は、図1のSSD 125によって露出されたPF/VFの構成が図4a~図4cのエンドポイント405によって露出されたPFの構成をミラーリングすることを保障することができる。これは、点線矢印710及び715で示したように、図7の構成記録要請705を図1のSSD 125に伝送することを含むことができる。図7の構成記録要請705は図1のSSD 125に伝送される必要がないことがあるから、ブロック1820は、点線1825で示したように、選択的(optional)である。
図19は図1のLWB 135が構成判読要請805を処理する例示的な過程のフローチャートを示す。図19は図1のLWB 135が構成判読要請805を処理する例示的な過程のフローチャートを示す。図19で、ブロック1905で、図1のLWB 135は図8の構成判読要請805を受信することができる。図8の構成判読要請805は図1のホスト105又は図1のSSD 125から受信することができる(しかし、一般的に図8の構成判読要請805は図1のホスト105から受信することができる)。ここで、いくつかの代案がある。ブロック1910で、図1のLWB 135(より具体的に、図4a~図4cの構成管理者440)は図4a~図4cのエンドポイント405によって露出されたPFの構成を決定することができる。ブロック1910が使われる本発明の技術的思想の実施形態で、図1のSSD 125によって露出されたPFの構成は図4a~図4cのエンドポイント405によって露出されたPFの構成を反映しているはずであるので、露出されたPF/VF構成に対して図1のSSD 125を問い合わせる必要がないことがあり得る(図1のSSD 125にその露出されたPF/VFの構成に関して問い合わせることもできるが)。代案として、ブロック1915で、図1のLWB 135は、図8の点線矢印815、820で示したように、図1のSSD 125に図8の構成判読要請805を伝達することができ、応答として図8の構成情報810を受信することができる(図8の点線矢印825及び830で示す)。どちらにしても、ブロック1920で、図1のLWB 135は要請者(requestor)に図8の構成情報810をリターンすることができる。
図20は図1のLWB 135がQoSポリシー1105を図1のLWB 135によって露出されたPFと関連させる例示的な過程のフローチャートを示す。図20で、ブロック2005で、図1のLWB 135は図1のホスト105又は図1のSSD 125であり得るソースから図11のQoSポリシー1105を受信することができる。そして、ブロック2010で、図1のLWB 135は、ポリシーを図4a~図4cのエンドポイント405によって露出される識別されたPFと連関させることができ、適切にポリシーを具現することができる。
図21は図1のLWB 135が図1のLWB 135によって露出されたPFと図1のSSD 125によって露出されたPF/VFとの間のマッピングを動的に変更する例示的な過程のフローチャートを示す。図21で、ブロック2105で、図1のLWB 135は、図10の記憶パラメーター1005、図10の日付1010、図10の日付の時間1015、図10の帯域幅使用量1020又は図10のQoSポリシー変更1025が変更されたかを識別することができる。ブロック2110で、図1のLWB 135は、感知された変更に応答して、図6のPF 605と図6のPF/VF 610との間の図6のマッピング615を動的に変更することができる。
図22a及び図22bは図1のLWBが帯域幅スロットリングを行う例示的な過程のフローチャートを示す。図22aで、ブロック2205で、図1のLWB 135は、図11のQoSポリシー1105、図1のLWB 135、又は図1のSSD 125の温度又は電力消費によって決定することができる。ブロック2210で、図1のLWB 135は、帯域幅スロットリングが適用可能であるかを、例えば図1のLWB 135又は図1のSSD 125の温度又は電力消費を図1のLWB 135に記憶された閾値と比較することにより、決定することができる。
帯域幅スロットリングが適用可能な場合、ブロック2215で、図1のLWB 135は、図1のSSD 125の帯域幅をスロットリングすることができる。このスロットリングは図1のSSD 125に発行された図13のクレジット1305の数を制限することによって達成することができる。そして、ブロック2220(図22b)で、図1のLWB 135は、図11のQoSポリシー1105(図22aのブロック2210で帯域幅スロットリングをトリガーしたのと同じ図11のQoSポリシー1105、又は他のQoSポリシーであり得る)、又は、図1のLWB 135若しくは図1のSSD 125の温度若しくは電力消費を決定することができる。ブロック2225で、図1のLWB 135は、図11のQoSポリシー1105、図1のLWB 135若しくは図1のSSD 125の新しい温度若しくは電力消費が、帯域幅スロットリングがそれ以上必要ではない水準に到逹したかを決定することができる。仮に、帯域幅スロットリングが依然として適用可能であれば、制御は、帯域幅スロットリングを終了することができる変更が発生したかを再び点検するために、ブロック2220に復帰することができる。そうでなければ、ブロック2230で、図1のLWB 135は帯域幅スロットリングを中止することができる。
図14a~図22bには本発明の一部の実施形態が示されている。しかし、当該技術分野の通常の技術者は、ブロック順の変更、ブロックの省略又は図面に示していないリンクを含ませることにより本発明のさらに他の実施形態も可能であることを認識することができるであろう。フローチャートのこのような全ての変形は明示的に説明されたかにかかわらず、本発明の実施形態のものと見なす。
本発明の技術的思想の一実施形態は、既存の具現を超える技術的利点を含む。LWBはPFをホストマシンに露出させることができる。これは、ホストマシンがSSDのようなデバイスのVFにアクセスするためにSR-LOV(Single Root Input/Output Virtualization)ソフトウェアを実行する必要をなくす。また、LWBが別個のデバイスであり得、前記デバイスは複数のPFをサポートするための特定のハードウェアを必要としないから、前記デバイスは必ずしもハードウェアを修正しなければならないものでもない。事実上、たとえ単一ハウジングがLWBとデバイスの両者を含むとしても、そして、たとえLWBとデバイスが共有PCB上に実装されるとしても、LWBを含めることはデバイスに対して何のハードウェア変化も必要としないことができ、よって、複数のPFをサポートするためのハードウェアを含めるというよりは、VFを続けて提供するように、既存のSSDs(及び他のデバイス)がLWB及び未来のSSD(及び他のデバイス)とともに使われることを許容する(前記デバイスは、例えばデータ伝送を管理するためにクレジットの使用をサポートするために、ファームウエアアップデートを必要とし得るが、そのようなアップデートは既存のデバイス領域でも容易に遂行することができる)。追加として、LWBは複数のデバイスの資源を集めることができるから(aggregate)、LWBはどの個別デバイスが提供するものより良い全体パフォーマンスを提供することができる。
以下の論議は開示の特定様相を具現することができる適切なマシン又はマシンらについての手短で一般的な説明を提供するためのものである。マシン又はマシンらは、キーボード、マウスなどの従来の入力デバイスの入力だけではなく、他のマシンから受信された命令、バーチャルリアリティー(VR)環境との相互作用、生体測定のフィードバック、又は他の入力信号によって少なくとも部分的に制御することができる。ここで使われるとき、“マシン”という用語は、単一マシン、仮想マシン(virtual machine)、又は通信可能に連結されたマシンのシステム、仮想マシンら、又は一緒に作動するデバイスらを網羅する。例示的なマシンは、PC、ワークステーション、サーバー、携帯用コンピュータ、携帯用端末機(handheld devices)、電話機、タブレットなどだけではなく、例えば自動車、汽車、タクシーなどの個人又は大衆交通のような輸送デバイスを含む。
マシン又はマシンらは、プログラミング可能、又はプログラミング不可の論理デバイス又はアレイ、ASICs(Application Specific Integrated Circuits)、組込型コンピュータ、スマートカードなどの組込型コントローラーを含むことができる。前記マシン又はマシンらは、複数の遠隔マシンとして、例えばネットワークインターフェース、モデム、又は他の通信可能なカップリングを介しての一つ以上の接続を活用することができる。マシンは、イントラネット、インターネット、近距離通信網(local area networks)、広域通信網(wide area networks)などの物理的及び/又は論理的ネットワークの方式で互いに連結することができる。当該技術分野の通常の技術者は、ネットワーク通信が無線周波数(radio frequency)、衛星、マイクロ波、IEEE 802.11、ブルートゥース(登録商標)、可視光線、赤外線、ケーブル、レーザーなどを含む多様な有線及び/又は無線の短距離又は長距離搬送波及びプロトコルを活用することができるということを理解することができるであろう。
本発明の実施形態は、マシンによってアクセスされるとき、結果として引き起こされる機械遂行作業又は機械が定義する抽象データ類型又は低水準のハードウェアコンテクストである、ファンクション、プロシージャ、データ構造、アプリケーションプログラムなどを含む関連データを参照するか、それにつなげて説明することができる。例えば、関連データは、例えばRAM、ROMなどの揮発性及び/又は非揮発性メモリ、又はハードドライブ、フロッピーディスク(登録商標)、光記録装置、テープ、フラッシュメモリ、メモリスティック、デジタルビデオディスク、生体測定ストレージなどを含む他の記憶デバイスとそれに関連した記憶媒体に記憶されることができる。関連データは、パケット、シリアルデータ、並列データ、電波シグナルなどの形態として物理的及び/又はローカルネットワークを含む伝達環境(transmission environments)に引導されることができ、圧縮又は暗号化フォーマットで使うことができる。関連データは分散環境(distributed environment)に使うことができ、マシンアクセスに近くに及び/又は遠隔で記憶することができる。
本発明の実施形態は、一つ以上のプロセッサによって遂行可能な命令語を含む類型の非一時的(non-transitory)マシン判読可能媒体を含むことができる。前記命令語はここで説明する要素を遂行するための命令を含む。
開示の原理を敍述した実施形態を参照して説明したが、説明した実施形態はそのような原理から逸脱しない範囲内で配列及び詳細内容に対する修正が可能であり、どの所望の方法とも組合せることができることを認識することができる。そして、前述した論議は特定の実施形態に焦点を合わせたが、他の構成も考慮することができる。特に、“本発明の実施形態によって”のような表現をたとえここで使っても、このような文句は一般的に実施形態の可能性を参照するという意味であり、開示を特定の実施形態の構成に制限するためのものではない。ここで使うものように、このような用語は他の実施形態と結合することができる同一又は相異なる他の実施形態を参照することができる。
前述説明した実施形態はその開示を制限するものに解釈されてはいけない。たとえいくつかの実施形態を説明したが、当該技術分野の通常の技術者は、本発明の新しい教示と利点から実質的に逸脱しない範疇内でそのような実施形態の多くの修正が可能であるということを容易に認知することができる。よって、そのような全ての修正は請求項で定義したもののように本発明の範囲に含まれるものである。
開示の実施形態は以下の陳述まで制限なしに拡張することができる。
陳述1.本発明の技術的思想の一実施形態は軽量ブリッジ(Lightweight Bridge、LWB)回路を含み、LWB回路は、
ホストに連結され、複数の物理機能(Physical Function、PF)を露出させるエンドポイント、
デバイスに連結されるルートポートであって、前記デバイスが当該ルートポートに少なくとも一つのPF及び少なくとも一つの仮想機能(Virtual Function、VF)を露出させるルートポート、及び
前記ホストに露出された複数のPFと前記デバイスによって露出された前記少なくとも一つのPF及び少なくとも一つのVFとの間で変換するためのAPP-EP(Application Layer-End point)及びAPP-RP(Application Layer-Root Port)を含み、
前記APP-EP及びAPP-RPは、前記エンドポイントによって露出された前記複数のPFと前記デバイスによって露出された少なくとも一つのPF及び少なくとも一つのVFとの間のマッピングを具現する。
陳述2.本発明の技術的思想の一実施形態は陳述1によるLWB回路を含み、ここで、前記デバイスはSSD(Solid State Drive)を含む。
陳述3.本発明の技術的思想の一実施形態は陳述1によるLWB回路を含み、ここで、前記デバイスはLWB回路を含む。
陳述4.本発明の技術的思想の一実施形態は陳述1によるLWB回路を含み、ここで、LWB回路は前記デバイスに連結される。
陳述5.本発明の技術的思想の一実施形態は陳述1によるLWB回路を含み、ここで、前記APP-EP及びAPP-RPは単一コンポーネントに具現されることができる。
陳述6.本発明の技術的思想の一実施形態は陳述1によるLWB回路を含み、ここで、LWB回路は、FPGA(Field Programmable Gate Array)、ASIC(Application-Specific Integrated Circuit)、汎用プロセッサ、GPU(Graphics Processing Unit)及び汎用GPU(GPGPU)のうちの少なくとも一つを含む。
陳述7.本発明の技術的思想の一実施形態は陳述1によるLWB回路を含み、ここで、
前記複数のPFは複数のPeripheral Component Interconnect Express(PCIe)PFを含み、
少なくとも一つのPFは少なくとも一つのPCIe PFを含み、
少なくとも一つの仮想機能(Virtual Function;VF)は少なくとも一つのPCIe VFを含む。
陳述8.本発明の技術的思想の一実施形態は陳述7によるLWB回路を含み、ここで、
前記APP-EPはPCIe APP-EP(PAPP-EP)を含み、
前記APP-RPはPCIe APP-RP(PAPP-RP)を含む。
陳述9.本発明の技術的思想の一実施形態は陳述1によるLWB回路を含み、APP-EP及びAPP-RPを構成するための構成管理者(コンフィギュレーションマネージャ)をさらに含む。
陳述10.本発明の技術的思想の一実施形態は陳述9によるLWB回路を含み、ここで、APP-RPは構成テーブルが前記エンドポイントに露出された複数のPFと前記デバイスによって露出された少なくとも一つのPF及び少なくとも一つのVFとの間のマッピングを記憶した構成テーブルのための記憶部を含むことができる。
陳述11.本発明の技術的思想の一実施形態は陳述9によるLWB回路を含み、ここで、前記構成管理者は前記デバイスによって露出された少なくとも一つのPF及び少なくとも一つのVFを羅列することができ、デバイスによって露出された少なくとも一つのPF及び少なくとも一つのVFに少なくとも部分的に基づいて前記エンドポイントによって露出された複数のPFを生成することができる。
陳述12.本発明の技術的思想の一実施形態は陳述9によるLWB回路を含み、ここで、前記構成管理者はデバイスを構成することができる。
陳述13.本発明の技術的思想の一実施形態は陳述12によるLWB回路を含み、ここで、前記構成管理者は前記エンドポイントのホストから受信される構成記録要請(configuration write request)に少なくとも部分的に基づいて前記デバイスを構成することができる。
陳述14.本発明の技術的思想の一実施形態は陳述9によるLWB回路を含み、ここで、前記APP-EPはホストから構成判読要請(configuration read request)を遮断(intercept)し、ホストに構成情報をリターンすることができる。
陳述15.本発明の技術的思想の一実施形態は陳述9によるLWB回路を含み、ここで、前記構成管理者はデバイスの第1構成がエンドポイントの第2構成をミラーリングするように保障することができる。
陳述16.本発明の技術的思想の一実施形態は陳述9によるLWB回路を含み、ここで、構成管理者はSR-IOV(Single Root Input/Output Virtualization)シーケンスを具現するためのROM(Read Only Memory)及び状態マシン(state machine)を含む。
陳述17.本発明の技術的思想の一実施形態は陳述1によるLWB回路を含み、ここで、
前記APP-EPはホストの要請によって受信したアドレスからエンドポイントによって露出されたPFのBAR(Base address register)を引くことができ、
前記APP-RPはデバイスによって露出されたVFのBARを前記APP-EPから受信したアドレスに加えることができる。
陳述18.本発明の技術的思想の一実施形態は陳述1によるLWB回路を含み、
第2APP-EP及び第2APP-RP、
少なくとも一つの第2PF及び少なくとも一つの第2VFを露出させる第2デバイス、及び
前記エンドポイントに配列/連結され、前記APP-EP及び第2APP-EPのそれぞれに連結されたマルチプレクサー/デマルチプレクサーをさらに含み、
前記第2APP-EP及び前記第2APP-RPは前記エンドポイントによって露出された複数のPFと前記第2デバイスによって露出された少なくとも一つの第2PF及び少なくとも一つの第2VFとの間に第2マッピングを具現する。
陳述19.本発明の技術的思想の一実施形態は陳述18によるLWB回路を含み、ここで、前記LWB回路は前記デバイス及び前記第2デバイスの集合資源を提供する。
陳述20.本発明の技術的思想の一実施形態は陳述1によるLWB回路を含み、ここで、前記エンドポイントによって露出された複数のPFと前記デバイスによって露出された少なくとも一つのPF及び少なくとも一つのVFとの間のマッピングは動的に変更されることができる。
陳述21.本発明の技術的思想の一実施形態は陳述20によるLWB回路を含み、ここで、前記エンドポイントによって露出された複数のPFと前記デバイスによって露出される少なくとも一つのPF及び少なくとも一つのVFとの間のマッピングは、エンドポイントによって露出された複数のPFの少なくとも一つに対する記憶パラメーター、日付、日付の時間、帯域幅使用量、又はQoS(Quality of Service)ポリシー変更に少なくとも部分的に基づいて変わることができる。
陳述22.本発明の技術的思想の一実施形態は陳述1によるLWB回路を含み、ここで、LWB回路は帯域幅スロットリング(bandwidth throttling)を具現することができる。
陳述23.本発明の技術的思想の一実施形態は陳述22によるLWB回路を含み、ここで、LWB回路はエンドポイントによって露出された複数のPFの少なくとも一つによって使用された帯域幅を測定することができる。
陳述24.本発明の技術的思想の一実施形態は陳述22によるLWB回路を含み、ここで、LWB回路は、前記ホストに設定されたポリシー、前記デバイスによって設定されたポリシー、前記LWB回路の温度、前記LWBの電力消費、前記SSDの温度、又は前記SSDの電力消費に少なくとも部分的に基づいて帯域幅スロットリングを具現することができる。
陳述25.本発明の技術的思想の一実施形態は陳述24によるLWB回路を含み、ここで、前記LWB回路は帯域幅スロットリングをトリガーする閾値(threshold)のための記憶部をさらに含む。
陳述26.本発明の技術的思想の一実施形態は陳述25によるLWB回路を含み、ここで、前記LWB回路は帯域幅スロットリングの終了をトリガーする第2閾値(threshold)のための記憶部をさらに含む。
陳述27.本発明の技術的思想の一実施形態は陳述22によるLWB回路を含み、ここで、LWB回路はデータ伝送のためにデバイスにクレジットを発行することができる。
陳述28.本発明の技術的思想の一実施形態は陳述27によるLWB回路を含み、ここで、LWB回路は前記クレジットをデバイスのアドレスに記録することができる。
陳述29.本発明の技術的思想の一実施形態は陳述27によるLWB回路を含み、ここで、デバイスはLWB回路アドレスから前記クレジットを判読することができる。
陳述30.本発明の技術的思想の一実施形態は陳述27によるLWB回路を含み、ここで、LWB回路は前記クレジットをデバイスにメッセージにて伝送することができる。
陳述31.本発明の技術的思想の一実施形態は陳述22によるLWB回路を含み、ここで、LWB回路は第1データパケットと第2データパケットとの間のパケット間隔(inter-packetgap)を導入することにより帯域幅スロットリングを具現することができる。
陳述32.本発明の技術的思想の一実施形態は陳述1によるLWB回路を含み、ここで、LWB回路はデバイスによって露出された複数のPFのPFにQoSポリシーを具現することができる。
陳述33.本発明の技術的思想の一実施形態は陳述32によるLWB回路を含み、ここで、前記ポリシーは、ホスト、BMC、又はデバイスの一つによって設定されることができる。
陳述34.本発明の技術的思想の一実施形態は陳述1によるLWB回路を含み、ここで、LWB回路は、デバイスから受信した構成記録要請に少なくとも部分的に基づいて、エンドポイントによって露出された複数のPFの少なくとも一つの性能(capability)を構成することができる。
陳述35.本発明の技術的思想の一実施形態は方法を含む。前記方法は、
軽量ブリッジ(Lightweight Bridge、LWB)のルートポートを使ってデバイスによって露出された少なくとも一つの物理機能(Physical Function、PF)を羅列する段階、
前記LWBの前記ルートポートを使って前記デバイスによって露出された少なくとも一つの仮想機能(Virtual Function、VF)を羅列する段階、
ホストに対する露出のために前記LWBのエンドポイントで複数のPFを生成する段階、及び
前記LWBのAPP-EP(Application Layer-End point)及びAPP-RP(Application Layer-Root Port)を使用し、前記LWBのエンドポイントにある前記複数のPFを前記デバイスによって露出された前記少なくとも一つのPF及び少なくとも一つのVFにマッピングする段階を含む。
陳述36.本発明の技術的思想の一実施形態は陳述35による方法を含み、ここで、
前記LWBのルートポートを使ってデバイスによって露出された少なくとも一つのPFを羅列する段階は、前記LWBの開始の際(at startup)、前記LWBのルートポートを使ってデバイスによって露出された少なくとも一つのPFを羅列する段階を含み、
前記LWBの前記ルートポートを使って前記デバイスによって露出された少なくとも一つのVFを羅列する段階は、前記LWBの開始の際(at startup)、前記LWBの前記ルートポートを使って前記デバイスによって露出された少なくとも一つのVFを羅列する段階を含む。
陳述37.本発明の技術的思想の一実施形態は陳述35による方法を含み、ここで、
前記LWBのルートポートを使って前記デバイスによって露出された少なくとも一つのPFを羅列する段階は、デバイスがLWBに連結されるとき、前記LWBのルートポートを使ってデバイスによって露出された少なくとも一つのPFを羅列する段階を含み、
前記LWBの前記ルートポートを使って前記デバイスによって露出された少なくとも一つのVFを羅列する段階は、デバイスがLWBに連結されるとき、前記LWBの前記ルートポートを使って前記デバイスによって露出された少なくとも一つのVFを羅列する段階を含む。
陳述38.本発明の技術的思想の一実施形態は陳述35による方法を含み、ここで、前記デバイスはSSD(Solid State Drive)を含む。
陳述39.本発明の技術的思想の一実施形態は陳述35による方法を含み、ここで、
前記複数のPFは複数のPeripheral Component Interconnect Express(PCIe)PFを含み、
少なくとも一つのPFは少なくとも一つのPCIe PFを含み、
少なくとも一つのVFは少なくとも一つのPCIe VFを含む。
陳述40.本発明の技術的思想の一実施形態は陳述39による方法を含み、ここで、
前記APP-EPはPCIe APP-EP(PAPP-EP)を含み、
前記APP-RPはPCIe APP-RP(PAPP-RP)を含む。
陳述41.本発明の技術的思想の一実施形態は陳述35による方法を含み、
前記ホストから羅列を受信する段階、及び
LWBのエンドポイントにある複数のPFをホストに露出させる段階をさらに含む。
陳述42.本発明の技術的思想の一実施形態は陳述35による方法を含み、
前記LWBのルートポートを使って前記デバイスによって露出された少なくとも一つのPFを羅列する段階は、前記LWBの第2ルートポートを使って第2デバイスによって露出された少なくとも一つの第2PFを羅列する段階を含み、
前記LWBのルートポートを使って前記デバイスによって露出された少なくとも一つのVFを羅列する段階は、前記LWBの前記第2ルートポートを使って前記第2デバイスによって露出された少なくとも一つの第2VFを羅列する段階を含み、
前記複数のPFを前記少なくとも一つのPF及び少なくとも一つのVFにマッピングする段階は、前記複数のPFを前記少なくとも一つのPF、少なくとも一つのVF、少なくとも一つの第2PF、及び少なくとも一つの第2VFにマッピングする段階を含む。
陳述43.本発明の技術的思想の一実施形態は陳述42による方法を含み、
前記デバイス及び前記第2デバイスの資源を決定する段階、及び
前記デバイス及び前記第2デバイスの資源を集約(aggregating)する段階をさらに含む。
陳述44.本発明の技術的思想の一実施形態は陳述35による方法を含み、
前記エンドポイントによって露出された前記複数のPFの一つのPFでホストから要請を受信する段階、
前記LWBの前記エンドポイントによって露出された前記複数のPFの前記PFを前記デバイスによって露出された前記少なくとも一つのVFの前記一つのVFにマッピングする段階、
前記エンドポイントによって露出された前記複数のPFの前記PFからの要請を前記デバイスによって露出された前記少なくとも一つのVFの前記VFに変換する段階、及び
前記要請を前記デバイスによって露出された前記少なくとも一つのVFの前記VFに伝送する段階をさらに含む。
陳述45.本発明の技術的思想の一実施形態は陳述44による方法を含み、
前記デバイスによって露出された少なくとも一つのVFの前記VFから前記要請に対する応答を受信する段階、
前記デバイスによって露出された少なくとも一つのVFの前記VFを前記LWBの前記エンドポイントによって露出された前記複数のPFの前記PFにマッピングする段階、
前記デバイスによって露出された前記少なくとも一つのVFの前記VFからの応答を前記エンドポイントによって露出された前記複数のPFの前記PFに変換する段階、及び
前記応答を前記LWBの前記エンドポイントによって露出された前記複数のPFの前記PFを介して前記ホストに伝送する段階をさらに含む。
陳述46.本発明の技術的思想の一実施形態は陳述45による方法を含み、ここで、前記デバイスによって露出された前記少なくとも一つのVFの前記VFからの応答を前記エンドポイントによって露出された前記複数のPFの前記PFに変換する段階は、前記エンドポイントによって露出された前記複数のPFの前記PFの第1BAR(Base address register)及び前記デバイスによって露出された少なくとも一つのVFの前記VFの第2BARに基づいて前記応答のアドレスを修正する段階を含む。
陳述47.本発明の技術的思想の一実施形態は陳述45による方法を含み、ここで、前記デバイスによって露出された少なくとも一つのVFの前記VFを前記LWBの前記エンドポイントによって露出された前記複数のPFの前記PFにマッピングする段階は、前記デバイスによって露出された少なくとも一つのVFの前記VFを前記LWBのAPP-RPの構成テーブルを使って前記LWBの前記エンドポイントによって露出された前記複数のPFの前記PFにマッピングする段階を含む。
陳述48.本発明の技術的思想の一実施形態は陳述44による方法を含み、ここで、前記エンドポイントによって露出された前記複数のPFの前記PFからの要請を前記デバイスによって露出された前記少なくとも一つのVFの前記VFに変換する段階は、前記エンドポイントによって露出された前記複数のPFの前記PFの第1BAR(Base address register)及び前記デバイスによって露出された少なくとも一つのVFの前記VFの第2BARに基づいて前記要請のアドレスを修正する段階を含む。
陳述49.本発明の技術的思想の一実施形態は陳述44による方法を含み、ここで、前記LWBの前記エンドポイントによって露出された前記複数のPFの前記PFを前記デバイスによって露出された前記少なくとも一つのVFの一つのVFにマッピングする段階は、前記LWBの前記エンドポイントによって露出された前記複数のPFの前記PFを、前記LWBのAPP-RPの構成テーブルを使って前記デバイスによって露出された前記少なくとも一つのVFの一つのVFにマッピングする段階を含む。
陳述50.本発明の技術的思想の一実施形態は陳述44による方法を含み、ここで、前記要請を前記デバイスによって露出された前記少なくとも一つのVFの前記VFに伝送する段階は、
前記デバイス及び第2デバイスの中で選択する段階であって、前記第2デバイスは、前記LWBの前記エンドポイントによって露出された前記複数のPFの前記PFの前記デバイスによって露出された少なくとも一つのVFの前記VFへのマッピングの一部に基づいて少なくとも一つの第2PF及び少なくとも一つの第2VFを露出させる段階、及び
前記要請を前記デバイスに関連したAPP-EPに伝送する段階、
を含む。
陳述51.本発明の技術的思想の一実施形態は陳述44による方法を含み、
前記デバイスを含むデータ伝送のためのクレジットを決定する段階、及び
前記デバイスに前記クレジットを発行する段階、
をさらに含む。
陳述52.本発明の技術的思想の一実施形態は陳述51による方法を含み、ここで、前記デバイスに前記クレジットを発行する段階は、前記デバイスのアドレスに前記クレジットを記録する段階を含む。
陳述53.本発明の技術的思想の一実施形態は陳述51による方法を含み、ここで、前記デバイスに前記クレジットを発行する段階は、LWBのアドレスから前記クレジットを判読する段階を含む。
陳述54.本発明の技術的思想の一実施形態は陳述51による方法を含み、ここで、前記デバイスに前記クレジットを発行する段階は、LWBからデバイスに前記クレジットを含むメッセージを伝送する段階を含む。
陳述55.本発明の技術的思想の一実施形態は陳述35による方法を含み、
構成記録要請を受信する段階、及び
構成記録要請に少なくとも部分的に基づいて前記LWBの前記エンドポイントによって露出された複数のPFを構成する段階、
をさらに含む。
陳述56.本発明の技術的思想の一実施形態は陳述55による方法を含み、前記LWBの前記エンドポイントによって露出された前記複数のPFの構成をミラーリングするために、前記構成記録要請に少なくとも部分的に基づいて、前記デバイスによって露出された少なくとも一つのPF及び少なくとも一つのVFを構成する段階をさらに含む。
陳述57.本発明の技術的思想の一実施形態は陳述55による方法を含み、ここで、前記構成記録要請を受信する段階は、前記ホストから構成記録要請を受信する段階を含む。
陳述58.本発明の技術的思想の一実施形態は陳述55による方法を含み、ここで、前記構成記録要請を受信する段階は、前記デバイスから構成記録要請を受信する段階を含む。
陳述59.本発明の技術的思想の一実施形態は陳述58による方法を含み、ここで、前記構成記録要請に少なくとも部分的に基づいて前記LWBの前記エンドポイントによって露出された前記複数のPFを構成する段階は、前記デバイスから受信した構成記録要請に少なくとも部分的に基づいて、前記エンドポイントによって露出された前記複数のPFの少なくとも一つの性能(capability)を構成する段階を含む。
陳述60.本発明の技術的思想の一実施形態は陳述55による方法を含み、ここで、前記構成記録要請に少なくとも部分的に基づいて前記LWBの前記エンドポイントによって露出された前記複数のPFを構成する段階は、状態マシンを用いてSR-IOV(Single Root Input/Output Virtualization)シーケンスを実行する段階を含む。
陳述61.本発明の技術的思想の一実施形態は陳述35による方法を含み、
構成判読要請を受信する段階、
前記デバイスの少なくとも一つのPF及び少なくとも一つのVFの構成(configuration)を決定する段階、及び
前記デバイスの少なくとも一つのPF及び少なくとも一つのVFの設定によって構成判読要請に応答する段階、
をさらに含む。
陳述62.本発明の技術的思想の一実施形態は陳述61による方法を含み、ここで、前記デバイスの少なくとも一つのPF及び少なくとも一つのVFの構成(configuration)を決定する段階は、前記デバイスの前記エンドポイントによって露出された前記複数のPFの構成を決定する段階を含む。
陳述63.本発明の技術的思想の一実施形態は陳述61による方法を含み、ここで、前記デバイスの少なくとも一つのPF及び少なくとも一つのVFの構成(configuration)を決定する段階は、前記デバイスの少なくとも一つのPF及び少なくとも一つのVFの構成(configuration)に関してデバイスに問い合わせる(querying the device)段階を含む。
陳述64.本発明の技術的思想の一実施形態は陳述61による方法を含み、ここで、前記デバイスの少なくとも一つのPF及び少なくとも一つのVFの構成(configuration)を決定する段階は、前記構成判読要請を前記デバイスに伝達しない段階を含む。
陳述65.本発明の技術的思想の一実施形態は陳述35による方法を含み、前記LWBのAPP-EP及びAPP-RPを使用して、前記LWBのエンドポイントにある複数のPFの前記デバイスによって露出された少なくとも一つのPF及び少なくとも一つのVFに対するマッピングを動的に変更する段階をさらに含む。
陳述66.本発明の技術的思想の一実施形態は陳述65による方法を含み、ここで、前記LWBのAPP-EP及びAPP-RPを使って前記LWBのエンドポイントにある複数のPFの前記デバイスによって露出された少なくとも一つのPF及び少なくとも一つのVFに対するマッピングを動的に変更する段階は、LWBのエンドポイントによって露出された複数のPFの少なくとも一つに対する記憶パラメーター、日付、日付の時間、帯域幅使用量、又はQoS(Quality of Service)ポリシー変更に少なくとも部分的に基づいて、前記LWBのAPP-EP及びAPP-RPを使って前記LWBのエンドポイントにある複数のPFの前記デバイスによって露出された少なくとも一つのPF及び少なくとも一つのVFに対するマッピングを動的に変更する段階を含む。
陳述67.本発明の技術的思想の一実施形態は陳述35による方法を含み、前記デバイスに対する帯域幅をスロットリングする段階をさらに含む。
陳述68.本発明の技術的思想の一実施形態は陳述67による方法を含み、ここで、前記エンドポイントによって露出された複数のPFの少なくとも一つによって使用された帯域幅を測定する段階をさらに含む。
陳述69.本発明の技術的思想の一実施形態は陳述67による方法を含み、ここで、前記デバイスに対する帯域幅をスロットリングする段階は、第1データパケットと第2データパケットとの間のパケット間隔(inter-packetgap)を導入する段階を含む。
陳述70.本発明の技術的思想の一実施形態は陳述67による方法を含み、ここで、前記デバイスに対する帯域幅をスロットリングする段階は、前記ホストによって設定されたQoSポリシー、前記デバイスによって設定されたQoSポリシー、前記LWB回路の温度、前記LWBの電力消費、前記SSDの温度、又は前記SSDの電力消費に少なくとも部分的に基づいてデバイスに対する帯域幅をスロットリングする段階を含む。
陳述71.本発明の技術的思想の一実施形態は陳述70による方法を含み、ここで、前記ホストによって設定されたQoSポリシー、前記デバイスによって設定されたQoSポリシー、前記LWBの温度、前記LWBの電力消費、前記SSDの温度、又は前記SSDの電力消費に少なくとも部分的に基づいて前記デバイスに対する帯域幅をスロットリングする段階は、前記LWBの温度、前記LWBの電力消費、前記SSDの温度、又は前記SSDの電力消費が閾値(threshold)を超えることに少なくとも部分的に基づいて前記デバイスに対する帯域幅をスロットリングする段階を含む。
陳述72.本発明の技術的思想の一実施形態は陳述71による方法を含み、ここで、前記LWBの温度、前記LWBの電力消費、前記SSDの温度、又は前記SSDの電力消費が第2閾値(threshold)を下回ることに少なくとも部分的に基づいて前記デバイスに対する帯域幅スロットリングを終了する段階をさらに含む。
陳述73.本発明の技術的思想の一実施形態は陳述35による方法を含み、
前記LWBのエンドポイントによって露出された前記複数のPFのPFに対するQoSポリシーを受信する段階、及び
前記LWBの前記エンドポイントによって露出された前記複数のPFの前記PFに対するQoSポリシーを具現する段階、
をさらに含む。
陳述74.本発明の技術的思想の一実施形態は陳述73による方法を含み、ここで、前記LWBのエンドポイントによって露出された前記複数のPFのPFに対するQoSポリシーを受信する段階は、前記ホスト又は前記デバイスの一つから前記LWBの前記エンドポイントによって露出された前記複数のPFの前記PFに対するQoSポリシーを受信する段階を含む。
陳述75.本発明の技術的思想の一実施形態は非一時的記憶媒体(non-transitory storage medium)を含む物品(article)を含み、前記非一時的記憶媒体は、マシン(machine)によって実行されるとき、
軽量ブリッジ(Lightweight Bridge、LWB)のルートポートを使ってデバイスによって露出された少なくとも一つの物理機能(Physical Function、PF)を羅列する段階、
前記LWBの前記ルートポートを使って前記デバイスによって露出された少なくとも一つの仮想機能(Virtual Function、VF)を羅列する段階、
ホストに露出させるために前記LWBのエンドポイントで複数のPFを生成する段階、及び
APP-EP(Application Layer-End point)及びAPP-RP(Application Layer-Root Port)を使用して、前記LWBのエンドポイントにある前記複数のPFを前記デバイスによって露出された前記少なくとも一つのPF及び少なくとも一つのVFにマッピングする段階、
を引き起こす命令語を記憶している。
陳述76.本発明の技術的思想の一実施形態は陳述75による物品を含み、ここで、
前記LWBのルートポートを使ってデバイスによって露出された少なくとも一つのPFを羅列する段階は、前記LWBの開始の際(at startup)、前記LWBのルートポートを使ってデバイスによって露出された少なくとも一つのPFを羅列する段階を含み、
前記LWBの前記ルートポートを使って前記デバイスによって露出された少なくとも一つのVFを羅列する段階は、前記LWBの開始の際(at startup)、前記LWBの前記ルートポートを使って前記デバイスによって露出された少なくとも一つのVFを羅列する段階を含む
陳述77.本発明の技術的思想の一実施形態は陳述75による物品を含み、ここで、
前記LWBのルートポートを使ってデバイスによって露出された少なくとも一つのPFを羅列する段階は、前記デバイスが前記LWBに連結されるとき、前記LWBのルートポートを使って前記デバイスによって露出された少なくとも一つのPFを羅列する段階を含み、
前記LWBの前記ルートポートを使って前記デバイスによって露出された少なくとも一つのVFを羅列する段階は、前記デバイスが前記LWBに連結されるとき、前記LWBの前記ルートポートを使って前記デバイスによって露出された少なくとも一つのVFを羅列する段階を含む。
陳述78.本発明の技術的思想の一実施形態は陳述75による物品を含み、ここで、前記デバイスは、SSD(Solid State Drive)を含む。
陳述79.本発明の技術的思想の一実施形態は陳述75による物品を含み、ここで、
前記複数のPFは、複数のPeripheral Component Interconnect Express(PCIe)PFを含み、
前記少なくとも一つのPFは少なくとも一つのPCIe PFを含み、
前記少なくとも一つのVFは少なくとも一つのPCIe VFを含む。
陳述80.本発明の技術的思想の一実施形態は陳述79による物品を含み、ここで、
前記APP-EPはPCIe APP-EP(PAPP-EP)を含み、
前記APP-RPはPCIe APP-RP(PAPP-RP)を含む。
陳述81.本発明の技術的思想の一実施形態は陳述75による物品を含み、前記非一時的記憶媒体(non-transitory storage medium)は、マシン(machine)によって実行されるとき、
前記ホストから羅列を受信する段階、及び
前記LWBの前記エンドポイントにある複数のPFを前記ホストに露出させる段階、
を引き起こす命令語を記憶している。
陳述82.本発明の技術的思想の一実施形態は陳述75による物品を含み、ここで、
LWBのルートポートを使って前記デバイスによって露出された少なくとも一つのPFを羅列する段階は、前記LWBの第2ルートポートを使って第2デバイスによって露出された少なくとも一つの第2PFを羅列する段階を含み、
前記LWBのルートポートを使って前記デバイスによって露出された少なくとも一つのVFを羅列する段階は、前記LWBの前記第2ルートポートを使って前記第2デバイスによって露出された少なくとも一つの第2VFを羅列する段階を含み、
前記複数のPFを前記少なくとも一つのPF及び少なくとも一つのVFにマッピングする段階は、前記複数のPFを前記少なくとも一つのPF、前記少なくとも一つのVF、前記少なくとも一つの第2PF、及び前記少なくとも一つの第2VFにマッピングする段階を含む。
陳述83.本発明の技術的思想の一実施形態は陳述82による物品を含み、ここで、前記非一時的記憶媒体(non-transitory storage medium)は、マシン(machine)によって実行されるとき、
前記デバイス及び前記第2デバイスの資源を決定する段階、及び
前記デバイス及び前記第2デバイスの資源を集約(aggregating)する段階、
を引き起こす命令語を記憶している。
陳述84.本発明の技術的思想の一実施形態は陳述75による物品を含み、ここで、前記非一時的記憶媒体(non-transitory storage medium)は、マシン(machine)によって実行されるとき、
前記エンドポイントによって露出された前記複数のPFの一つのPFで前記ホストからの要請を受信する段階、
前記LWBの前記エンドポイントによって露出された前記複数のPFの前記PFを前記デバイスによって露出された前記少なくとも一つのVFの一つのVFにマッピングする段階、
前記エンドポイントによって露出された前記複数のPFの前記PFからの要請を前記デバイスによって露出された前記少なくとも一つのVFの前記VFに変換する段階、及び
前記要請を前記デバイスによって露出された前記少なくとも一つのVFの前記VFに伝送する段階、
を引き起こす命令語を記憶している。
陳述85.本発明の技術的思想の一実施形態は陳述84による物品を含み、ここで、前記非一時的記憶媒体(non-transitory storage medium)は、マシン(machine)によって実行されるとき、
前記デバイスによって露出された少なくとも一つのVFの前記VFから前記要請に対する応答を受信する段階、
前記デバイスによって露出された少なくとも一つのVFの前記VFを前記LWBの前記エンドポイントによって露出された前記複数のPFの前記PFにマッピングする段階、
前記デバイスによって露出された前記少なくとも一つのVFの前記VFからの応答を前記エンドポイントによって露出された前記複数のPFの前記PFに変換する段階、及び
前記応答を前記LWBの前記エンドポイントによって露出された前記複数のPFの前記PFを介して前記ホストに伝送する段階、
を引き起こす命令語を記憶している。
陳述86.本発明の技術的思想の一実施形態は陳述85による物品を含み、ここで、前記デバイスによって露出された前記少なくとも一つのVFの前記VFからの応答を前記エンドポイントによって露出された前記複数のPFの前記PFに変換する段階は、前記エンドポイントによって露出された前記複数のPFの前記PFの第1BAR(Base address register)及び前記デバイスによって露出された少なくとも一つのVFの前記VFの第2BARに基づいて前記応答のアドレスを修正する段階を含む。
陳述87.本発明の技術的思想の一実施形態は陳述85による物品を含み、ここで、前記デバイスによって露出された少なくとも一つのVFの前記VFを前記LWBの前記エンドポイントによって露出された前記複数のPFの前記PFにマッピングする段階は、前記デバイスによって露出された少なくとも一つのVFの前記VFを前記LWBの前記APP-RPの構成テーブルを使って前記LWBの前記エンドポイントによって露出された前記複数のPFの前記PFにマッピングする段階を含む。
陳述88.本発明の技術的思想の一実施形態は陳述84による物品を含み、ここで、前記エンドポイントによって露出された前記複数のPFの前記PFからの要請を前記デバイスによって露出された前記少なくとも一つのVFの前記VFに変換する段階は、前記エンドポイントによって露出された前記複数のPFの前記PFの第1BAR(Base address register)及び前記デバイスによって露出された少なくとも一つのVFの前記VFの第2BARに基づいて前記要請のアドレスを修正する段階を含む。
陳述89.本発明の技術的思想の一実施形態は陳述84による物品を含み、ここで、前記LWBの前記エンドポイントによって露出された前記複数のPFの前記PFを前記デバイスによって露出された前記少なくとも一つのVFの一つのVFにマッピングする段階は、前記LWBの前記エンドポイントによって露出された前記複数のPFの前記PFを前記LWBの前記APP-RPの構成テーブルを使って前記デバイスによって露出された前記少なくとも一つのVFの一つのVFにマッピングする段階を含む。
陳述90.本発明の技術的思想の一実施形態は陳述84による物品を含み、ここで、前記要請を前記デバイスによって露出された前記少なくとも一つのVFの前記VFに伝送する段階は、
前記デバイス及び第2デバイスの中で選択する段階であって、前記第2デバイスは、前記LWBの前記エンドポイントによって露出された前記複数のPFの前記PFの前記デバイスによって露出された少なくとも一つのVFの前記VFへのマッピングの一部に基づいて少なくとも一つの第2PF及び少なくとも一つの第2VFを露出させる段階、及び
前記要請を前記デバイスに関連したAPP-EPに伝送する段階、
を含む。
陳述91.本発明の技術的思想の一実施形態は陳述84による物品を含み、前記非一時的記憶媒体(non-transitory storage medium)は、マシン(machine)によって実行されるとき、
前記デバイスが関与するデータ伝送のためのクレジットを決定する段階、及び
前記デバイスに前記クレジットを発行する段階、
を引き起こす命令語を記憶している。
陳述92.本発明の技術的思想の一実施形態は陳述91による物品を含み、ここで、前記デバイスに前記クレジットを発行する段階は、前記デバイスのアドレスに前記クレジットを記録する段階を含む。
陳述93.本発明の技術的思想の一実施形態は陳述91による物品を含み、ここで、前記デバイスに前記クレジットを発行する段階は、前記LWBのアドレスから前記クレジットを判読する段階を含む。
陳述94.本発明の技術的思想の一実施形態は陳述91による物品を含み、ここで、前記デバイスに前記クレジットを発行する段階は、前記LWBから前記デバイスに前記クレジットを含むメッセージを伝送する段階を含む。
陳述95.本発明の技術的思想の一実施形態は陳述75による物品を含み、前記非一時的記憶媒体(non-transitory storage medium)は、マシン(machine)によって実行されるとき、
構成記録要請を受信する段階、及び
構成記録要請に少なくとも部分的に基づいて、前記LWBの前記エンドポイントによって露出された複数のPFを構成する段階、
を引き起こす命令語を記憶している。
陳述96.本発明の技術的思想の一実施形態は陳述95による物品を含み、前記非一時的記憶媒体(non-transitory storage medium)は、マシン(machine)によって実行されるとき、前記LWBの前記エンドポイントによって露出された前記複数のPFの構成をミラーリングするために、前記構成記録要請に少なくとも部分的に基づいて、前記デバイスによって露出された少なくとも一つのPF及び少なくとも一つのVFを構成する段階を引き起こす命令語を記憶している。
陳述97.本発明の技術的思想の一実施形態は陳述95による物品を含み、ここで、前記構成記録要請を受信する段階は、前記ホストから構成記録要請を受信する段階を含む。
陳述98.本発明の技術的思想の一実施形態は陳述95による物品を含み、ここで、前記構成記録要請を受信する段階は、前記デバイスから構成記録要請を受信する段階を含む。
陳述99.本発明の技術的思想の一実施形態は陳述98による物品を含み、ここで、前記構成記録要請に少なくとも部分的に基づいて前記LWBの前記エンドポイントによって露出された前記複数のPFを構成する段階は、前記デバイスから受信した構成記録要請に少なくとも部分的に基づいて、前記エンドポイントによって露出された前記複数のPFの少なくとも一つの性能(capability)を構成する段階を含む。
陳述100.本発明の技術的思想の一実施形態は陳述95による物品を含み、ここで、前記構成記録要請に少なくとも部分的に基づいて前記LWBの前記エンドポイントによって露出された前記複数のPFを構成する段階は、状態マシンを用いてSR-IOV(Single Root Input/Output Virtualization)シーケンスを実行する段階を含む。
陳述101.本発明の技術的思想の一実施形態は陳述75による物品を含み、前記非一時的記憶媒体(non-transitory storage medium)は、マシン(machine)によって実行されるとき、
構成判読要請を受信する段階、
前記デバイスの少なくとも一つのPF及び少なくとも一つのVFの構成(configuration)を決定する段階、及び
前記デバイスの少なくとも一つのPF及び少なくとも一つのVFの設定によって構成判読要請に応答する段階、
を引き起こす命令語をさらに記憶している。
陳述102.本発明の技術的思想の一実施形態は陳述101による物品を含み、ここで、前記デバイスの少なくとも一つのPF及び少なくとも一つのVFの構成(configuration)を決定する段階は、前記デバイスの前記エンドポイントによって露出された前記複数のPFの構成を決定する段階を含む。
陳述103.本発明の技術的思想の一実施形態は陳述101による物品を含み、ここで、前記デバイスの少なくとも一つのPF及び少なくとも一つのVFの構成(configuration)を決定する段階は、前記デバイスの少なくとも一つのPF及び少なくとも一つのVFの構成(configuration)についてデバイスに問い合わせる(querying the device)段階を含む。
陳述104.本発明の技術的思想の一実施形態は陳述101による物品を含み、ここで、前記デバイスの少なくとも一つのPF及び少なくとも一つのVFの構成(configuration)を決定する段階は、前記構成判読要請を前記デバイスに伝達しない段階を含む。
陳述105.本発明の技術的思想の一実施形態は陳述75による物品を含み、前記非一時的記憶媒体(non-transitory storage medium)は、マシン(machine)によって実行されるとき、前記LWBのAPP-EP及びAPP-RPを使用して、前記LWBのエンドポイントにある複数のPFの前記デバイスによって露出された少なくとも一つのPF及び少なくとも一つのVFに対するマッピングを動的に変更する段階を引き起こす命令語をさらに記憶している。
陳述106.本発明の技術的思想の一実施形態は陳述105による物品を含み、ここで、前記LWBのAPP-EP及びAPP-RPを使って前記LWBのエンドポイントにある複数のPFの前記デバイスによって露出された少なくとも一つのPF及び少なくとも一つのVFに対するマッピングを動的に変更する段階は、LWBのエンドポイントによって露出された複数のPFの少なくとも一つに対する記憶パラメーター、日付、日付の時間、帯域幅使用量、又はQoS(Quality of Service)ポリシー変更に少なくとも部分的に基づいて、前記LWBのAPP-EP及びAPP-RPを使って、前記LWBのエンドポイントにある複数のPFの前記デバイスによって露出された少なくとも一つのPF及び少なくとも一つのVFに対するマッピングを動的に変更する段階を含む。
陳述107.本発明の技術的思想の一実施形態は陳述75による物品を含み、前記非一時的記憶媒体(non-transitory storage medium)は、マシン(machine)によって実行されるとき、前記デバイスに対する帯域幅をスロットリングする段階を引き起こす命令語をさらに記憶している。
陳述108.本発明の技術的思想の一実施形態は陳述107による物品を含み、ここで、前記エンドポイントによって露出された複数のPFの少なくとも一つによって使用された帯域幅を測定する段階をさらに含む。
陳述109.本発明の技術的思想の一実施形態は陳述107による物品を含み、ここで、前記デバイスに対する帯域幅をスロットリングする段階は、第1データパケットと第2データパケットとの間のパケット間隔(inter-packetgap)を導入する段階を含む。
陳述110.本発明の技術的思想の一実施形態は陳述107による物品を含み、ここで、前記デバイスに対する帯域幅をスロットリングする段階は、前記ホストによって設定されたQoSポリシー、前記デバイスによって設定されたQoSポリシー、前記LWB回路の温度、前記LWBの電力消費、前記SSDの温度、又は前記SSDの電力消費に少なくとも部分的に基づいて前記デバイスに対する帯域幅をスロットリングする段階を含む。
陳述111.本発明の技術的思想の一実施形態は陳述110による物品を含み、ここで、前記ホストによって設定されたQoSポリシー、前記デバイスによって設定されたQoSポリシー、前記LWBの温度、前記LWBの電力消費、前記SSDの温度、又は前記SSDの電力消費に少なくとも部分的に基づいて前記デバイスに対する帯域幅をスロットリングする段階は、前記LWBの温度、前記LWBの電力消費、前記SSDの温度、又は前記SSDの電力消費が閾値(threshold)を超えることに少なくとも部分的に基づいて前記デバイスに対する帯域幅をスロットリングする段階を含む。
陳述112.本発明の技術的思想の一実施形態は陳述111による物品を含み、前記非一時的記憶媒体(non-transitory storage medium)は、マシン(machine)によって実行されるとき、前記LWBの温度、前記LWBの電力消費、前記SSDの温度、又は前記SSDの電力消費が第2閾値(threshold)を下回ることに少なくとも部分的に基づいて前記デバイスに対する帯域幅スロットリングを終了する段階を引き起こす命令語をさらに記憶している。
陳述113.本発明の技術的思想の一実施形態は陳述75による物品を含み、前記非一時的記憶媒体(non-transitory storage medium)は、マシン(machine)によって実行されるとき、
前記LWBのエンドポイントによって露出された前記複数のPFのPFに対するQoSポリシーを受信する段階、及び
前記LWBの前記エンドポイントによって露出された前記複数のPFの前記PFに対するQoSポリシーを具現する段階、
を引き起こす命令語をさらに記憶している。
陳述114.本発明の技術的思想の一実施形態は陳述75による物品を含み、ここで、前記LWBのエンドポイントによって露出された前記複数のPFのPFに対するQoSポリシーを受信する段階は、前記ホスト又は前記デバイスの一つから前記LWBの前記エンドポイントによって露出された前記複数のPFの前記PFに対するQoSポリシーを受信する段階を含む。
その結果、ここで敍述した実施形態に対する広範囲な置換(permutations)の観点で、この詳細な説明とそれに伴われる資料はただ例示であるだけであり、開示の範囲を制限するものと見なされてはいけない。したがって、本発明で主張するものは以下の請求範囲及び等価物の範囲及び思想の範囲内にある全ての修正が可能である。