(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-19
(45)【発行日】2024-09-30
(54)【発明の名称】パケットネットワーク内のフラッシュ要求を処理するための装置および方法
(51)【国際特許分類】
G06F 13/36 20060101AFI20240920BHJP
G06F 13/42 20060101ALI20240920BHJP
G06F 13/38 20060101ALI20240920BHJP
【FI】
G06F13/36 320A
G06F13/36 310E
G06F13/42 310
G06F13/38 350
(21)【出願番号】P 2022503502
(86)(22)【出願日】2020-05-19
(86)【国際出願番号】 GB2020051214
(87)【国際公開番号】W WO2021014114
(87)【国際公開日】2021-01-28
【審査請求日】2023-05-12
(32)【優先日】2019-07-19
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】トーマス、テシル
(72)【発明者】
【氏名】ラッシング、アンドリュー ジョセフ
【審査官】松平 英
(56)【参考文献】
【文献】米国特許出願公開第2017/0255559(US,A1)
【文献】特開2018-206415(JP,A)
【文献】米国特許出願公開第2019/0034381(US,A1)
【文献】米国特許出願公開第2018/0285288(US,A1)
【文献】米国特許第09509604(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06-3/08
12/00-12/128
13/10-13/42
H04L12/00-12/22
12/50-13/18
45/00-101/695
(57)【特許請求の範囲】
【請求項1】
装置であって、前記装置が、
パケットネットワーク内のリクエスタデバイスであって、1つ以上のデータアイテムを永続性ポイントにフラッシュすることを要求するリモートエージェントによって生成されたフラッシュ要求を受信し、前記フラッシュ要求を、前記パケットネットワークのパケットプロトコルに準拠するパケット式フラッシュコマンドに変換する、リクエスタデバイスと、
前記永続性ポイントを組み込んだ永続性ドメインに結合される前記パケットネットワーク内のコンプリータデバイスであって、前記パケット式フラッシュコマンドの受信を検出し、前記1つ以上のデータアイテムを前記永続性ポイントにフラッシュするために前記永続性ドメイン内のフラッシュ操作を作動させるように構成される、コンプリータデバイスと
を備え
、
前記パケット式フラッシュコマンドが、フラッシュタイプを識別するように構成され、
前記フラッシュタイプが、アドレス式フラッシュタイプと、フロー識別子フラッシュタイプとを区別するために使用され、
前記アドレス式フラッシュタイプは、フラッシュされる前記1つ以上のデータアイテムが、前記パケット式フラッシュコマンドによって提供されたアドレス情報から前記コンプリータデバイスによって決定されたアドレス範囲によって識別され、
前記フロー識別子フラッシュタイプは、フロー識別子が、前記パケット式フラッシュコマンド内に提供され、フラッシュされる前記1つ以上のデータアイテムが、前記永続性ポイントにまだ到達しておらず、それに関連付けられた前記フロー識別子を有する、前記永続性ドメイン内のデータアイテムである、装置。
【請求項2】
前記パケット式フラッシュコマンドが、前記パケットネットワークのデバイスによって、前記パケットネットワークを通じてルーティングされる他のネイティブコマンドと区別される前記パケットネットワークのネイティブコマンドを形成する、請求項1に記載の装置。
【請求項3】
前記パケットプロトコルが、Peripheral Component Interconnect Express(PCIe)プロトコルであり、前記パケット式フラッシュコマンドが、トランザクション層コマンドを形成する、請求項1または2に記載の装置。
【請求項4】
前記パケットネットワーク内の1つ以上のデバイスが、前記パケットネットワークを介して前記コンプリータデバイスに転送するための書込みデータコマンドを生成するように構成され、前記フロー識別子フラッシュタイプをサポートするために
、フロー識別子プレフィックスおよび少なくとも1つの関連付けられた書込みデータパケットによって形成された書込みデータコマンドを生成するように構成され、前記フロー識別子プレフィックスが、前記少なくとも1つの関連付けられた書込みデータパケットに含まれる書込みデータの各アイテムに関連付けられたフロー識別子の指示を含む、請求項
1から3のいずれか一項に記載の装置。
【請求項5】
前記パケット式フラッシュコマンド内に提供された前記フロー識別子が所定の値を有する場合、前記コンプリータデバイスが、前記パケット式フラッシュコマンドを、前記永続性ポイントにまだ到達しておらず、それに関連付けられた任意の値のフロー識別子を有する、前記永続性ドメイン内の全てのデータアイテムに関係すると解釈するように構成される、請求項
1から4のいずれか一項に記載の装置。
【請求項6】
前記フロー識別子プレフィックスが、前記関連付けられた書込みデータパケットと共に、前記パケットネットワークの任意の介在するデバイスを介して前記パケットネットワークを通じて前記コンプリータデバイスにルーティングされるエンドツーエンドプレフィックスである、請求項
4に記載の装置。
【請求項7】
前記パケット式フラッシュコマンドが、前記1つ以上のデータアイテムがフラッシュされる永続性ポイントのレベルを識別するために使用されるフラッシュポイント指示を提供するように構成される、請求項1~
6のいずれか一項に記載の装置。
【請求項8】
前記フラッシュポイントが、第1の永続性ポイントへの浅いフラッシュと、前記第1の永続性ポイントよりもハードウェア故障に対する
レジリエンスがある第2の永続性ポイントへの深いフラッシュとを区別するために使用される、請求項
7に記載の装置。
【請求項9】
前記リクエスタデバイスが、前記パケット式フラッシュコマンドが前記パケットネットワークを通じて前記コンプリータデバイスに送信される少なくともパケットを含むように、前記フラッシュ要求を前記パケット式フラッシュコマンドに変換するための変換回路を備える、請求項1~
8のいずれか一項に記載の装置。
【請求項10】
前記変換回路が、フラッシュプレフィックスおよび少なくとも1つの関連付けられたパケットを生成して、前記パケット式フラッシュコマンドを形成するように構成され、前記関連付けられたパケットが、前記パケットネットワーク内の別の形態のコマンドにも使用されるタイプのものであり、前記フラッシュプレフィックスが、前記フラッシュプレフィックスおよび前記関連付けられたパケットを、前記パケット式フラッシュコマンドを集合的に形成していると前記コンプリータデバイスに解釈させるために使用される、請求項
9に記載の装置。
【請求項11】
前記関連付けられたパケットが、前記パケットネットワーク内の読出しコマンドにも使用されるタイプのものである、請求項
10に記載の装置。
【請求項12】
前記フラッシュプレフィックスが、前記関連付けられたパケットと共に、前記リクエスタデバイスから前記パケットネットワークの
1つ以上の介在するデバイスを介して前記パケットネットワークを通じて前記コンプリータデバイスにルーティングされるエンドツーエンドプレフィックスである、請求項
10または
11に記載の装置。
【請求項13】
前記フラッシュプレフィックスが、アドレス式フラッシュタイプと代替的なフラッシュタイプとを区別するために使用されるフラッシュタイプを識別するためのタイプフィールドを含み、前記アドレス式フラッシュタイプでは、フラッシュされる前記1つ以上のデータアイテムが、前記パケット式フラッシュコマンドによって提供されたアドレス情報から前記コンプリータデバイスによって決定されたアドレス範囲によって識別される、請求項
10~
12のいずれか一項に記載の装置。
【請求項14】
前記フラッシュプレフィックスが、属性フィールドを含み、前記コンプリータデバイスが、前記パケット式フラッシュコマンドに応じてアドレス式フラッシュを実行するときに、前記フラッシュプレフィックスの前記属性フィールド内に提供されたアドレス情報を、前記関連付けられたパケット内に提供された更なるアドレス情報と一緒に使用して、フラッシュされる前記データアイテムを識別するために使用されるアドレス範囲を決定するように構成される、請求項
10~
13のいずれか一項に記載の装置。
【請求項15】
前記関連付けられたパケット内に提供された前記更なるアドレス情報が、少なくとも開始アドレスの指示を含み、前記フラッシュプレフィックスの前記属性フィールドからの前記アドレス情報が、前記開始アドレスから始まるアドレス範囲を識別するために使用される、請求項
14に記載の装置。
【請求項16】
前記関連付けられたパケット内に提供された前記更なるアドレス情報が、前記アドレス範囲を決定するために前記フラッシュプレフィックスの前記属性フィールドからの前記アドレス情報と一緒に使用される値を提供する長さフィールドを含む、請求項
15に記載の装置。
【請求項17】
前記フラッシュプレフィックスが、前記1つ以上のデータアイテムがフラッシュされる前記永続性ポイントのレベルを識別するために使用されるフラッシュポイントフィールドを含む、請求項
10~
16のいずれか一項に記載の装置。
【請求項18】
前記変換回路が、少なくとも1つの専用パケットタイプを用いて、前記パケット式フラッシュコマンドを形成するように構成される、請求項
9に記載の装置。
【請求項19】
第1の専用パケットタイプが、アドレス式フラッシュタイプのパケット式フラッシュコマンドを識別するために使用され、第2の専用パケットタイプが、フロー識別子フラッシュタイプのパケット式フラッシュコマンドを識別するために使用される、請求項
18に記載の装置。
【請求項20】
前記第1の専用パケットタイプが、フラッシュされる前記1つ以上のデータアイテムを識別するアドレス範囲を決定する
ためのアドレス情報を含む、請求項
19に記載の装置。
【請求項21】
前記第2の専用パケットタイプが、フロー識別子を提供するためのフロー識別子フィールドを含み、フラッシュされる前記1つ以上のデータアイテムが、前記永続性ポイントにまだ到達しておらず、それに関連付けられた前記フロー識別子を有する、前記永続性ドメイン内のデータアイテムである、請求項
19または
20に記載の装置。
【請求項22】
前記少なくとも1つの専用パケットタイプが、前記1つ以上のデータアイテムがフラッシュされる前記永続性ポイントのレベルを識別するために使用されるフラッシュポイントフィールドを含む、請求項
18~
21のいずれか一項に記載の装置。
【請求項23】
前記コンプリータデバイスが、前記永続性ドメイン内の前記フラッシュ操作の完了を検出すると、前記パケットネットワークを通じて前記リクエスタデバイスに完了確認パケットを送信するように構成される、請求項1~
22のいずれか一項に記載の装置。
【請求項24】
前記リクエスタデバイスおよび前記コンプリータデバイスがそれぞれ、それらのデバイスが前記パケット式フラッシュコマンドに対処することが可能であるかどうかを識別するために構成情報が格納される1つ以上の構成レジスタを備える、請求項1~
23のいずれか一項に記載の装置。
【請求項25】
パケットネットワーク内で使用するためのリクエスタデバイスであって、1つ以上のデータアイテムを永続性ポイントにフラッシュすることを要求するリモートエージェントによって生成されたフラッシュ要求を受信し、前記リクエスタデバイスが、前記永続性ポイントを組み込んだ永続性ドメイン内のフラッシュ操作を作動させるために使用されるコンプリータデバイスに前記パケットネットワークを通じて前方に送信するために、前記フラッシュ要求を、前記パケットネットワークのパケットプロトコルに準拠するパケット式フラッシュコマンドに変換する変換回路を備え
、
前記パケット式フラッシュコマンドが、フラッシュタイプを識別するように構成され、
前記フラッシュタイプが、アドレス式フラッシュタイプと、フロー識別子フラッシュタイプとを区別するために使用され、
前記アドレス式フラッシュタイプは、フラッシュされる前記1つ以上のデータアイテムが、前記パケット式フラッシュコマンドによって提供されたアドレス情報から前記コンプリータデバイスによって決定されたアドレス範囲によって識別され、
前記フロー識別子フラッシュタイプは、フロー識別子が、前記パケット式フラッシュコマンド内に提供され、フラッシュされる前記1つ以上のデータアイテムが、前記永続性ポイントにまだ到達しておらず、それに関連付けられた前記フロー識別子を有する、前記永続性ドメイン内のデータアイテムである、リクエスタデバイス。
【請求項26】
パケットネットワーク内で使用するためのコンプリータデバイスであって、前記パケットネットワークのパケットプロトコルに準拠するパケット式フラッシュコマンドの前記コンプリータデバイスによる受信に応じて、前記パケット式フラッシュコマンドによって識別される1つ以上のデータアイテムを永続性ドメイン内の永続性ポイントにフラッシュするために、前記永続性ドメイン内のフラッシュ操作を作動させるフラッシュ操作作動回路を有
し、
前記パケット式フラッシュコマンドが、フラッシュタイプを識別するように構成され、
前記フラッシュタイプが、アドレス式フラッシュタイプと、フロー識別子フラッシュタイプとを区別するために使用され、
前記アドレス式フラッシュタイプは、フラッシュされる前記1つ以上のデータアイテムが、前記パケット式フラッシュコマンドによって提供されたアドレス情報から前記コンプリータデバイスによって決定されたアドレス範囲によって識別され、
前記フロー識別子フラッシュタイプは、フロー識別子が、前記パケット式フラッシュコマンド内に提供され、フラッシュされる前記1つ以上のデータアイテムが、前記永続性ポイントにまだ到達しておらず、それに関連付けられた前記フロー識別子を有する、前記永続性ドメイン内のデータアイテムである、コンプリータデバイス。
【請求項27】
パケットネットワークを動作させてフラッシュ要求を処理する方法であって
前記パケットネットワーク内のリクエスタデバイスで、1つ以上のデータアイテムを永続性ポイントにフラッシュすることを要求するリモートエージェントによって生成されたフラッシュ要求を受信するステップと、
前記リクエスタデバイスで、前記フラッシュ要求を、前記パケットネットワークのパケットプロトコルに準拠するパケット式フラッシュコマンドに変換するステップと、
前記パケット式フラッシュコマンドを、前記永続性ポイントを組み込んだ永続性ドメインに結合されるコンプリータデバイスに前記パケットネットワークを通じて伝達するステップと、
前記パケット式フラッシュコマンドの受信を検出することに応じて、前記1つ以上のデータアイテムを前記永続性ポイントにフラッシュするために前記永続性ドメイン内のフラッシュ操作を作動させるように前記コンプリータデバイスを構成するステップと、を含
み、
前記パケット式フラッシュコマンドが、フラッシュタイプを識別するように構成され、
前記フラッシュタイプが、アドレス式フラッシュタイプと、フロー識別子フラッシュタイプとを区別するために使用され、
前記アドレス式フラッシュタイプは、フラッシュされる前記1つ以上のデータアイテムが、前記パケット式フラッシュコマンドによって提供されたアドレス情報から前記コンプリータデバイスによって決定されたアドレス範囲によって識別され、
前記フロー識別子フラッシュタイプは、フロー識別子が、前記パケット式フラッシュコマンド内に提供され、フラッシュされる前記1つ以上のデータアイテムが、前記永続性ポイントにまだ到達しておらず、それに関連付けられた前記フロー識別子を有する、前記永続性ドメイン内のデータアイテムである、方法。
【発明の詳細な説明】
【背景技術】
【0001】
本技術は、パケットネットワーク内のフラッシュ要求を処理するための装置および方法に関する。
【0002】
エージェント、例えば、コンピュータ上で実行されるソフトウェアは、データをメモリに書き込もうとして一連の書込み要求を発行し得る。エージェントは、いくつかの時点で、そのような書込みデータがメモリシステム内の永続性ポイント(point of persistence)に到達したことを確実にすることを欲し得る。永続性ポイントは、様々な形態をとることができる。例えば、メモリデバイスから電力が奪われた後でも内容を保持するメモリデバイス(その例が不揮発性メモリであろう)は、永続性ポイントになる。しかし、そのようなメモリデバイスに加えて、システム内の他の構造も永続性ポイントになることができる。例えば、特定のキュー構造または特定のキャッシュ構造は、主電源の中断に際して内部の書込み日付を適切な永続性のメモリデバイスに移動できることを確実にするための十分なバックアップ電力を提供される場合、永続性ポイントと見なすことができる。
【0003】
例えば、エージェントと永続性ポイントとの間の経路に沿った特定のキューに書込みデータを保持することにより、書込み要求の発行から、関連付けられた書込みデータがそのような永続性ポイントに実際に到達するまでにいくらかの遅延が存在し得るので、関連する書込みデータを永続性ポイントにフラッシュさせるフラッシュ要求をエージェントが発行できることが望ましい場合がある。
【0004】
発生し得る問題は、永続性ポイントを含むエンティティからエージェントが離れている場合があることであり、そのようなエンティティは、本明細書では永続性ドメインと呼ばれる。特に、リモートエージェントと永続性ドメインとの間に介在するネットワークが存在し得る。そのようなネットワークの例は、供給者から受信者にネットワーク上でパケットを送信するためにパケットプロトコルを使用するパケットネットワークである。典型的に、そのようなパケットネットワークは、フラッシュ要求を他の要求と区別することができず、代わりに、そのようなパケットネットワークにリモートエージェントによって発行されたフラッシュ要求は、パケットネットワークによって書込み要求として扱われ、永続性ドメイン内のキュー/ソフトウェアスタックに出力するためにパケットネットワークを通じて書込みコマンドを伝達させ、キューへのその書込みは、必要とされる永続性ポイントへのフラッシュ操作を実行するために永続性ドメイン内のソフトウェアを起動させる。しかし、このプロセスは、永続性ポイント内のキュー構造内に書き込んだ後に、フラッシュ操作を実行するためにソフトウェアを起動する必要があるので、非常に遅いことが知られている。
【0005】
したがって、永続性ドメインから離れたエージェントによって生成されたフラッシュ要求を処理するための改善されたメカニズムを提供することが望ましいであろう。
【発明の概要】
【0006】
例示的な第1の構成では、装置であって、装置が、パケットネットワーク内のリクエスタデバイスであって、1つ以上のデータアイテムを永続性ポイントにフラッシュすることを要求するリモートエージェントによって生成されたフラッシュ要求を受信し、フラッシュ要求を、パケットネットワークのパケットプロトコルに準拠するパケット式フラッシュコマンドに変換する、リクエスタデバイスと、永続性ポイントを組み込んだ永続性ドメインに結合されるパケットネットワーク内のコンプリータデバイスであって、パケット式フラッシュコマンドの受信を検出し、上記1つ以上のデータアイテムを永続性ポイントにフラッシュするために永続性ドメイン内のフラッシュ操作を作動させるように構成される、コンプリータデバイスとを備える装置が提供される。
【0007】
例示的な第2の構成では、パケットネットワーク内で使用するためのリクエスタデバイスであって、1つ以上のデータアイテムを永続性ポイントにフラッシュすることを要求するリモートエージェントによって生成されたフラッシュ要求を受信し、リクエスタデバイスが、永続性ポイントを組み込んだ永続性ドメイン内のフラッシュ操作を作動させるために使用されるコンプリータデバイスにパケットネットワークを通じて前方に送信するために、フラッシュ要求を、パケットネットワークのパケットプロトコルに準拠するパケット式フラッシュコマンドに変換する変換回路を備える、リクエスタデバイスが提供される。
【0008】
例示的なまた更なる構成では、パケットネットワーク内で使用するためのコンプリータデバイスであって、パケットネットワークのパケットプロトコルに準拠するパケット式フラッシュコマンドのコンプリータデバイスによる受信に応じて、パケット式フラッシュコマンドによって識別される1つ以上のデータアイテムを永続性ドメイン内の永続性ポイントにフラッシュするために、永続性ドメイン内のフラッシュ操作を作動させるフラッシュ操作作動回路を有する、コンプリータデバイスが提供される。
【0009】
例示的な別の更なる構成では、パケットネットワークを動作させてフラッシュ要求を処理する方法であって、
パケットネットワーク内のリクエスタデバイスで、1つ以上のデータアイテムを永続性ポイントにフラッシュすることを要求するリモートエージェントによって生成されたフラッシュ要求を受信するステップと、リクエスタデバイスで、フラッシュ要求を、パケットネットワークのパケットプロトコルに準拠するパケット式フラッシュコマンドに変換するステップと、パケット式フラッシュコマンドを、永続性ポイントを組み込んだ永続性ドメインに結合されるコンプリータデバイスにパケットネットワークを通じて伝達するステップと、
パケット式フラッシュコマンドの受信を検出することに応じて、上記1つ以上のデータアイテムを永続性ポイントにフラッシュするために永続性ドメイン内のフラッシュ操作を作動させるようにコンプリータデバイスを構成するステップとを含む、方法が提供される。
【0010】
例示的な別の構成では、装置であって、装置が、パケットネットワーク内のリクエスタ手段であって、1つ以上のデータアイテムを永続性ポイントにフラッシュすることを要求するリモートエージェントによって生成されたフラッシュ要求を受信し、フラッシュ要求を、パケットネットワークのパケットプロトコルに準拠するパケット式フラッシュコマンドに変換するための、リクエスタ手段と、永続性ポイントを組み込んだ永続性ドメインに結合されるパケットネットワーク内のコンプリータ手段であって、パケット式フラッシュコマンドの受信を検出し、上記1つ以上のデータアイテムを永続性ポイントにフラッシュするために永続性ドメイン内のフラッシュ操作を作動させるための、コンプリータ手段とを備える装置が提供される。
【図面の簡単な説明】
【0011】
本技術について、添付図面に示すそれらの例を例示としてのみ参照して、さらに説明する。
【
図1】例示的な一実装形態による装置の概略図を提供する。
【
図2A】本明細書に記載される技術を利用する装置を組み込むように構成された例示的な具体的な2つのシステムを示す。
【
図2B】本明細書に記載される技術を利用する装置を組み込むように構成された例示的な具体的な2つのシステムを示す。
【
図3】例示的な一構成による、パケットネットワークのリクエスタデバイス内に設けられたコンポーネントを示すブロック図である。
【
図4】例示的な一構成による、パケットネットワークのコンプリータデバイス内に設けられたコンポーネントを示すブロック図である。
【
図5】例示的な実装形態で使用し得るパケット式フラッシュコマンドの一形式を示す。
【
図6】例示的な一構成による、フロー識別子情報を組み込むように書込みコマンドをどのように構成し得るかを示す。
【
図7】例示的な一構成による、リモートエージェントからのフラッシュ要求の受信に応じて、パケットネットワークのリクエスタデバイスで実行されるプロセスを示すフロー図である。
【
図8】例示的な一構成による、パケット式フラッシュコマンドを処理するために、パケットネットワークのコンプリータデバイスで実行されるプロセスを示すフロー図である。
【
図9】例示的な一構成で
図8のステップ465をどのように実施し得るかを示すフロー図である。
【
図10A】例示的な一構成による、フロー識別子情報を組み込んだ書込みデータコマンドをどのように生成し、その後にパケットネットワーク内でどのように処理し得るかを示すフロー図である。
【
図10B】例示的な一構成による、フロー識別子情報を組み込んだ書込みデータコマンドをどのように生成し、その後にパケットネットワーク内でどのように処理し得るかを示すフロー図である。
【
図11A】例示的な一構成による、パケットネットワーク内のコンプリータデバイスが、フラッシュ操作の完了に際して完了パケットをどのように生成し得るかを示すフロー図である。
【
図11B】例示的な一構成における完了パケットの形式を示す図である。
【
図12A】代替的な実装形態による、フラッシュコマンドに使用し得る異なる専用パケットタイプを示す。
【
図12B】代替的な実装形態による、フラッシュコマンドに使用し得る異なる専用パケットタイプを示す。
【発明を実施するための形態】
【0012】
例示的な一構成によれば、パケットネットワーク内のリクエスタデバイスを有する装置であって、リクエスタデバイスが、1つ以上のデータアイテムを永続性ポイントにフラッシュすることを要求するリモートエージェントによって生成されたフラッシュ要求を受信する、装置が提供される。1つ以上のデータアイテムは、様々な方法で識別することができるが、典型的に、先行する書込み操作の対象であったデータに関係し、フラッシュ要求は、それらのデータアイテムが永続性ポイントにプッシュされることを確実にしようとしてリモートエージェントによって発行され、その後に電力が中断した場合に、それらのデータアイテムが永続することを確実にすることができる。本明細書に記載される技術によれば、リクエスタデバイスは、フラッシュ要求を認識し、フラッシュ要求を、パケットネットワークのパケットプロトコルに準拠するパケット式フラッシュコマンドに変換するように構成されるのに対して、従前の技術によれば、リクエスタデバイスは、そのようなフラッシュ要求を任意の他のタイプの書込み要求と区別しないであろうし、永続性ポイントを含むドメイン内のソフトウェアスタックなどのキュー構造への更新を行わせるために、パケットネットワークを通じて書込みコマンドを単にプッシュするであろう。
【0013】
装置は、永続性ポイントを組み込んだ永続性ドメインに結合され、それゆえにパケットネットワークと永続性ドメインとの間のインターフェースとして機能する、パケットネットワーク内のコンプリータデバイスをさらに含む。フラッシュ要求をリクエスタデバイスによってパケット式フラッシュコマンドに変換したので、コンプリータデバイスは、パケット式フラッシュコマンドを受信した場合を検出することができ、そのパケット式フラッシュコマンドの受信に応じて、1つ以上のデータアイテムを永続性ポイントにフラッシュするために永続性ドメイン内のフラッシュ操作を作動させることができる。
【0014】
それゆえに、上述した技術の使用によって、フラッシュ操作を実行するために、永続性ドメインを有するシステム内のソフトウェアスタックを起動することに依存するのでなく、パケットネットワーク内のパケットプロトコルに準拠する具体的なパケット式フラッシュコマンドをサポートし、よって、パケットネットワーク内のコンプリータデバイスによってフラッシュ操作を直接作動させることを可能にすることにより、フラッシュ操作を起動するためのより高速なハードウェア方法が提供される。これは、リモートエージェントからのフラッシュ要求に対処する性能を大幅に高めることができ(例えば、桁違いの改善をもたらし得る)、それゆえに、フラッシュ要求の発行から、そのフラッシュ要求を実施するために必要とされるフラッシュ操作の実行までの時間遅延を低減する。それゆえに、これは、信頼性を大幅に向上させ、データアイテムを永続性ポイントにタイムリーにフラッシュして、そのデータが電力の中断に際して失われることを回避する可能性を高める。これはまた、ソフトウェアアプリケーションの、より高いスループット、およびより短い待ち時間をもたらす。
【0015】
例示的な一構成では、パケット式フラッシュコマンドは、パケットネットワークのデバイスによって、パケットネットワークを通じてルーティングされる他のネイティブコマンドと区別されるパケットネットワークのネイティブコマンドを形成する。したがって、パケット式フラッシュコマンドを、フラッシュ操作の要求に関係するものとしてパケットネットワーク内のハードウェアコンポーネントによって認識することができるのに対して、従前には、パケットネットワーク内のコンポーネントは、フラッシュ要求の知識を有していないであろうし、フラッシュ要求は単に、パケットネットワークを通じたメモリアドレスへの書込みコマンドの伝達によって対処されるであろう。
【0016】
パケットネットワークは、パケットネットワーク内で使用されるパケットプロトコルができるのと同様に、様々な形態をとることができる。しかし、例示的な一構成では、パケットプロトコルは、Peripheral Component Interconnect Express(PCIe)プロトコルであり、パケット式フラッシュコマンドは、トランザクション層コマンドを形成する。それゆえに、そのような実装形態によれば、上述した技術は、PCIeネットワークのトランザクション層内のトランザクション層パケット(TLP)を使用して、パケットネットワークのコンポーネントによって認識可能である、特に、パケットネットワークを通じてルーティングされる他のネイティブコマンドと区別可能である、パケット式フラッシュコマンドを実装することを可能にする。結果として、コンプリータデバイスは、そのようなパケット式フラッシュコマンドの受信を検出し、前述したようなフラッシュ操作を作動させることができる。
【0017】
例示的な一実装形態では、パケット式フラッシュコマンドは、フラッシュタイプを識別するように構成される。結果として、上述したメカニズムを使用して、様々な異なるタイプのフラッシュ操作を実施することが可能になる。例示的な一実装形態では、フラッシュタイプは、アドレス式フラッシュタイプと、代替的なフラッシュタイプとを区別するために使用され、アドレス式フラッシュタイプでは、フラッシュされる1つ以上のデータアイテムが、パケット式フラッシュコマンドによって提供されたアドレス情報からコンプリータデバイスによって決定されたアドレス範囲によって識別される。それゆえに、これは、フラッシュ操作を実施するときの大きな柔軟性をもたらす。特に、アドレスのシーケンスを識別し、それにより、それらのアドレスに書き込まれる任意のデータアイテムを永続性ポイントにフラッシュすることを可能にするが、少なくとも1つの代替的な形態のフラッシングの実施もサポートすることも可能にする。
【0018】
代替的な形態のフラッシングは、様々な形態をとることができる。しかし、例示的な一実装形態では、代替的なフラッシュタイプは、フロー識別子フラッシュタイプであり、フロー識別子フラッシュタイプでは、フロー識別子が、パケット式フラッシュコマンド内に提供され、フラッシュされる1つ以上のデータアイテムは、永続性ポイントにまだ到達しておらず、それに関連付けられたフロー識別子を有する、永続性ドメイン内のデータアイテムである。それゆえに、個々のデータアイテムをメモリへの書込みのために出力するときに、それらのデータアイテムにフロー識別子値を関連付けることができ、その後に、フラッシュ要求が、そのフロー識別子を指定し、それにより、永続性ポイントにフラッシュする必要があるデータアイテムを識別するためのメカニズムとしてフロー識別子を使用することができる。そして、フロー識別子の使用は、リモートエージェントによって管理することができ、任意の特定のフラッシュ要求に供すべきデータアイテムを決定するための特に柔軟なメカニズムを提供する。
【0019】
フロー識別子の使用をサポートするために、データを書き込むために使用される書込みデータコマンドは、フロー識別子の使用をサポートするように機能拡張することができる。特に、例示的な一構成では、パケットネットワーク内の1つ以上のデバイスは、パケットネットワークを介してコンプリータデバイスに転送するための書込みデータコマンドを生成するように構成され、フロー識別子フラッシュタイプをサポートするために、フロー識別子プレフィックスおよび少なくとも1つの関連付けられた書込みデータパケットによって形成された書込みデータコマンドを生成するように構成され、フロー識別子プレフィックスは、少なくとも1つの関連付けられた書込みデータパケットに含まれる書込みデータの各アイテムに関連付けられたフロー識別子の指示を含む。そのような手法により、書込みデータパケットの形態を「そのまま」にすることができ、それゆえに、フロー識別子を使用するか否かに応じて、異なる形態の書込みデータパケットが必要とされない。代わりに、関連付けられた書込みデータパケットの前に出現するときに、その書込みデータパケットの対象である書込みデータに関連して使用されるフロー識別子を識別する、別個のフロー識別子プレフィックスを使用することができる。そして、このフロー識別子情報は、永続性ドメインに伝達することができるので、その書込みデータが永続性ドメイン内の様々な構造を通過するときに書込みデータに関連して提供される。
【0020】
例示的な一構成では、フロー識別子プレフィックスは、直後の書込みデータパケットにのみ適用される。しかし、必要であれば、フロー識別子プレフィックスは、そのフロー識別子プレフィックスに後続する1つ以上の書込みデータパケットに関連付けられるように構成されてもよく、これにより、フロー識別子が関連付けられる全ての書込みデータパケットの前にフロー識別子プレフィックスを繰り返す必要性を回避することにより、フロー識別子のより効率的な符号化が可能になる。
【0021】
複数の異なるフロー識別子値を同時に使用し、所与のフラッシュ要求を具体的なフロー識別子値に関係させることが可能であるので、その具体的なフロー識別子値に関連付けられた書込みデータアイテムのみをフラッシュ操作に供する。しかし、例示的な一実装形態では、データアイテムのより大域的なフラッシュを引き起こすために使用できるように、特定の所定の値のフロー識別子を予約することを可能にすることができる。特に、例示的な一実装形態では、パケット式フラッシュコマンド内に提供されたフロー識別子が所定の値を有する場合、コンプリータデバイスは、パケット式フラッシュコマンドを、永続性ポイントにまだ到達しておらず、関連付けられた任意の値のフロー識別子を有する、永続性ドメイン内の全てのデータアイテムに関係すると解釈するように構成される。それゆえに、単一のフラッシュ要求の使用により、その場合に、それらのデータアイテムのいずれかに関連付けられた特定のフロー識別子値にかかわらず、関連付けられたフロー識別子を有するデータアイテムを全て永続性ポイントにフラッシュすることが可能である。これは、フラッシュ要求が特定のフロー識別子を目標にすること、または単一のフラッシュ要求が全てのフロー識別子を目標にすることを可能にすることにより、フラッシュ要求の使用における柔軟性を向上させることができる。
【0022】
フロー識別子プレフィックスは、様々な形態をとることができるが、例示的な一実装形態では、関連付けられた書込みデータパケットと共に、パケットネットワークの任意の介在するデバイスを介してパケットネットワークを通じてコンプリータデバイスにルーティングされるエンドツーエンドプレフィックスである。そのようなエンドツーエンドプレフィックスの使用により、プレフィックスは、リクエスタデバイスによって生成された元の形態で、コンプリータデバイスで受信することができるように、修正されていないパケットネットワークを通じてルーティングすることができる。
【0023】
例示的な一実装形態では、パケット式フラッシュコマンドは、1つ以上のデータアイテムがフラッシュされる永続性ポイントのレベルを識別するために使用されるフラッシュポイント指示を提供するように構成することができる。特に、いくつかのシステムでは、全てが永続性ポイントと見なされる複数の異なるレベルが存在し得る。例えば、フラッシュポイントは、第1の永続性ポイントへの浅いフラッシュと、第1の永続性ポイントよりもハードウェア故障に対するレジリエンス(resilience)がある第2の永続性ポイントへの深いフラッシュとを区別するために使用することができる。第2の永続性ポイントは、電力の中断に対するレジリエンスに関して、かつ/またはその信頼性に関してよりレジリエンスがある。単なる例として、不揮発性メモリデバイスは、非常に信頼性の高い永続性ポイントを提供する点で、深い永続性ポイントとして使用することができる。しかし、不揮発性メモリの前の他の介在する構造も、例えば、追加のバックアップ電源コンポーネントを補って、それらの永続性レベルにある任意のデータを電力の中断に際して不揮発性メモリに書き込み得ることを確実にすることにより、永続性ポイントを提供することができる。単なる具体例として、特定のシステムキャッシュは、それらの記憶構造に関連して、内部に格納されている内容を電力の中断に際して不揮発性メモリに書き込み得ることを確実にする好適なコンポーネントが設けられることを前提に、例えば、メモリコントローラ内のキュー構造のいくつかと同様に、永続性ポイントを提供すると見なすことができる。
【0024】
例示的な一実装形態では、リクエスタデバイスは、パケット式フラッシュコマンドがパケットネットワークを通じてコンプリータデバイスに送信される少なくともパケットを含むように、フラッシュ要求をパケット式フラッシュコマンドに変換するための変換回路を備える。
【0025】
変換回路がパケット式フラッシュコマンドを生成する方法は、実装形態に応じて変えることができる。例示的な一実装形態では、変換回路は、フラッシュプレフィックスおよび少なくとも1つの関連付けられたパケットを生成して、パケット式フラッシュコマンドを形成するように構成され、関連付けられたパケットは、パケットネットワーク内の別の形態のコマンドにも使用されるタイプのものであり、フラッシュプレフィックスは、フラッシュプレフィックスおよび関連付けられたパケットを、パケット式フラッシュコマンドを集合的に形成しているとコンプリータデバイスに解釈させるために使用される。それゆえに、そのような実装形態によれば、別の形態のパケットが必要とされず、既存のパケットタイプを使用することができるが、フラッシュプレフィックスが、そのパケットに関連付けられて、その関連付けられたパケットを異なるようにコンプリータデバイスに解釈させる。
【0026】
パケット式フラッシュコマンドを形成するために、そのような方法でフラッシュプレフィックスと一緒に再使用されるパケットの形態は、実装形態に応じて変えることができるが、一例では、関連付けられたパケットは、パケットネットワーク内の読出しコマンドにも使用されるタイプのものである。それゆえに、関連付けられたフラッシュプレフィックスがない場合、パケットは、読出しパケットと見なされるが、そのパケットは、フラッシュプレフィックスと一緒にパケット式フラッシュコマンドを形成していると見なされる。
【0027】
例示的な一構成では、フラッシュプレフィックスは、直後のパケットにのみ適用される。しかし、代替的な実施形態では、単一のフラッシュプレフィックスを、後続する2つ以上のパケットに関連付けるように構成し、それらのパケットをそれぞれ、フラッシュプレフィックスの内容と一緒にパケット式フラッシュコマンドを形成していると見なすことができる。
【0028】
前述したフロー識別子プレフィックスと同様に、例示的な一構成では、フラッシュプレフィックスは、関連付けられたパケットと共に、リクエスタデバイスからパケットネットワークの任意の介在するデバイスを介してパケットネットワークを通じてコンプリータデバイスにルーティングされるエンドツーエンドプレフィックスであることができる。
【0029】
フラッシュプレフィックス内に維持される情報は、実装形態に応じて変えることができるが、一般に、関連付けられたパケットがパケットネットワーク内で別の形態のコマンドにも使用されるタイプのものであるため、関連付けられたパケット内に直接提供することができない、フラッシュ操作を制御するために必要とされる追加情報を提供するために使用される。
【0030】
例示的な一実装形態では、フラッシュプレフィックスは、アドレス式フラッシュタイプと代替的なフラッシュタイプとを区別するために使用されるフラッシュタイプを識別するためのタイプフィールドを含み、アドレス式フラッシュタイプでは、フラッシュされる1つ以上のデータアイテムが、パケット式フラッシュコマンドによって提供されたアドレス情報からコンプリータデバイスによって決定されたアドレス範囲によって識別される。前述したように、代替的なフラッシュタイプは、様々な形態をとることができるが、具体的な一例では、フロー識別子フラッシュタイプである。
【0031】
例示的な一実装形態では、フラッシュプレフィックスは、属性フィールドを含むことができ、その属性フィールドに維持される情報は、フラッシュプレフィックス内で識別されるフラッシュタイプに応じて変えることができる。例えば、コンプリータデバイスは、パケット式フラッシュコマンドに応じてアドレス式フラッシュを実行するときに(すなわち、ここでは、フラッシュタイプはアドレス式フラッシュタイプである)、フラッシュプレフィックスの属性フィールド内に提供されたアドレス情報を、関連付けられたパケット内に提供された更なるアドレス情報と一緒に使用して、フラッシュされるデータアイテムを識別するために使用されるアドレス範囲を決定するように構成することができる。代わりに、フラッシュタイプがフロー識別子フラッシュタイプであることをフラッシュプレフィックス内のタイプフィールドが示した場合、アドレス情報を提供するのではなく、フロー識別子を取り込むために、属性フィールドを使用することができる。
【0032】
属性フィールドがアドレス情報を提供する実装形態では、例示的な特定の一構成では、関連付けられたパケット内に提供された更なるアドレス情報は、少なくとも開始アドレスの指示を含み、フラッシュプレフィックスの属性フィールドからのアドレス情報は、開始アドレスから始まるアドレス範囲を識別するために使用される。それゆえに、開始アドレスは、(前述したように、標準的な読出しパケットであり得る)パケット内の情報から決定することができる一方で、範囲情報は、フラッシュプレフィックスによって提供される追加のアドレス情報から決定することができる。
【0033】
例示的な更なる構成では、パケット式フラッシュコマンド内に符号化され得る可能な範囲を拡張するために、関連付けられたパケット内に提供された更なるアドレス情報は、範囲も示す値を提供するために使用され得る長さフィールドを含むことができる。特に、長さフィールド内に提供される値は、アドレス範囲を決定するために、フラッシュプレフィックスの属性フィールドからのアドレス情報と一緒に使用することができる。長さフィールド内に提供され得る追加情報により、これは、より大きな範囲のアドレスをパケット式フラッシュコマンド内に取り込むことを可能にすることができる。
【0034】
例示的な一実装形態では、フラッシュプレフィックスは、1つ以上のデータアイテムがフラッシュされる永続性ポイントのレベルを識別するために使用されるフラッシュポイントフィールドも提供することができ、それゆえに、例えば、フラッシュプレフィックスは、フラッシュ操作を浅い永続性ポイントに実行するか、深い永続性ポイントに実行するかを識別することができる。
【0035】
フラッシュプレフィックスおよび別の目的で既にサポートされている既存のタイプのパケット(例えば、前述したような読出しパケット)を使用して、パケット式フラッシュコマンドを形成する代わりに、少なくとも1つの専用パケットタイプを用いて、パケット式フラッシュコマンドを形成するように、変換を代替的に構成することができる。そのような構成では、フラッシュプレフィックスを必要としないが、異なるタイプのパケットをパケットネットワーク内でサポートする必要がある。
【0036】
例示的な一構成では、アドレス式フラッシュタイプのパケット式フラッシュコマンドを識別するために第1の専用パケットタイプを使用することができ、フロー識別子フラッシュタイプのパケット式フラッシュコマンドを識別するために第2の専用パケットタイプを使用することができる。それゆえに、アドレス式フラッシュを実行するか、フロー識別子式フラッシュを実行するかに応じて、異なるパケットタイプを使用することができる。
【0037】
第1の専用パケットタイプを使用する場合、そのパケットは、フラッシュされる1つ以上のデータアイテムを識別するアドレス範囲を決定するのに十分なアドレス情報を含むことができる。それゆえに、具体的な実装形態では、そのアドレス情報は、開始アドレスと、その開始アドレスから始まるアドレス範囲を識別するために使用される更なるアドレス情報とを識別することができる。
【0038】
第2の専用パケットタイプを使用する場合、そのパケットは、フロー識別子を提供するためのフロー識別子フィールドを含むことができ、フラッシュされる1つ以上のデータアイテムは、永続性ポイントにまだ到達しておらず、それに関連付けられたフロー識別子を有する、永続性ドメイン内のデータアイテムである。
【0039】
第1の専用パケットタイプまたは第2の専用パケットタイプのいずれかを使用する場合、1つ以上のデータアイテムがフラッシュされる永続性ポイントのレベルを識別するために、そのようなパケット内にフラッシュポイントフィールドを設けることができる。
【0040】
例示的な一構成では、そのフラッシュ要求に応じたフラッシュ操作の完了をリモートエージェントに通知することが有用である。それゆえに、例示的な一構成では、コンプリータデバイスは、永続性ドメイン内のフラッシュ操作の完了を検出すると、パケットネットワークを通じてリクエスタデバイスに完了確認パケットを送信するように構成される。完了確認パケットは、様々な形態をとることができる一方で、特定の一実装形態では、この目的のために完了情報のための既存のパケット形式が再使用され、それゆえに、完了情報をリクエスタデバイスに戻すために新しい形態のパケットを開発する必要がない。
【0041】
例示的な一構成では、前述したフラッシュコマンドを管理するリクエスタデバイスおよびコンプリータデバイスの能力を、ソフトウェアによって構成可能にすることができる。特に、リクエスタデバイスおよびコンプリータデバイスそれぞれに、それらのデバイスがパケット式フラッシュコマンドに対処することが可能であるかどうかを識別するために、構成情報を格納し得る1つ以上の構成レジスタを設けることができる。これにより、この追加の機能性を必要に応じて有効または無効にすることを可能にすることにより、構成可能性が与えられる。特定の要素の構成に互換性がない場合、例えば、リクエスタデバイスが、パケット式フラッシュコマンドを生成することが可能であるが、目標になるコンプリータデバイスが、そのようなコマンドを処理することが可能でない場合、例えば、コンプリータデバイスが処理できないパケット式フラッシュコマンドを受信した場合に、エラーが通知される。
【0042】
構成情報を構成レジスタに格納する方法は、実装形態に応じて変えることができる。例えば、特定の一実装形態では、パケットネットワーク内のデバイスを発見および構成するために、エニュメレーションプロセスを実行するためにソフトウェアを使用することができ、このエニュメレーションプロセス中に、パケット式フラッシュコマンドの対処に関する様々なデバイスの機能を識別するために、構成情報を構成レジスタ内に格納することができる。それゆえに、構成レジスタを設けることにより、パケットネットワークのフラッシュ機能を制御および構成する能力をソフトウェアに与えることができる。
【0043】
ここで、特定の例を、図面を参照して説明する。
【0044】
図1は、本明細書に記載される技術を用い得るシステムのブロック図である。特に、例えば、パーソナルコンピュータ上またはサーバ上で実行されるソフトウェアの形態をとり得る、リモートエージェント10が、パケットネットワーク15を介して永続性ドメイン20と通信する。パケットネットワークは、様々な形態をとることができるが、本明細書に記載される例の目的では、パケットネットワークはPCIeネットワークであると仮定される。
【0045】
永続性ドメイン20は、少なくとも1つの永続性ポイント25を含み、永続性ポイントは、記憶デバイスであって、その記憶デバイスにデータが到達すると、そのデータが電源の中断に際してしかるべく永続するように構成された記憶デバイスである。永続性ポイント25は、様々な形態をとることができ、例えば、メモリデバイスから電力が奪われた状態でデータを保持するメモリデバイス、例えば、不揮発性(NV)メモリであってもよい。代替的に、永続性ポイントは、不揮発性メモリデバイスよりも高いレベルであることができ、特に、本質的に永続性を有しないが、そのポイントにデータが到達すると、そのポイントにあるデータを電源の中断に際して不揮発性メモリに移動できることを確実にする追加メカニズムを備えた記憶デバイスであることができる。それゆえに、例として、場合によっては、キャッシュ階層内の特定のレベルに、例えばシステムキャッシュに、バックアップ電力を提供することができ、それにより、システムキャッシュを含むデバイスへの電源の中断に際して、システムキャッシュは、そのデータを不揮発性メモリなどの恒久的な永続性ポイントに移動させることを可能にするのに十分な電源へのアクセスを依然として有する。同様に、メモリコントローラ内のキュー構造の1つ以上を、それらのキューが永続性ポイントになるように、このように構成することができる。
【0046】
リモートエージェント10は、パケットネットワーク15を介して永続性ドメイン20内のメモリにデータを書き込むように構成することができ、いくつかのポイントで、その書込みデータが永続性ポイント25に到達していることを確実にすることを欲することができる。特に、永続性ポイントへの経路に沿っていくつかのバッファ段が存在する場合があり、それゆえに、書込み要求の発行から、そのデータが永続性ポイントに実際に到達するまでにいくらかの有意な遅延が存在し得る可能性があることが理解されよう。例えば、場合によっては、そのデータをキャッシュ階層内のより高いレベルにキャッシュする可能性があり、それゆえに、そのデータがキャッシュから退避されるまで永続性ポイントに到達しない場合がある。同様に、キュー構造は、ドレインに相当な時間を要する場合があり、したがって、そのようなキュー構造内に書込みデータを長期間にわたって保持する場合がある。
【0047】
永続性ポイント25への1つ以上のデータアイテムのフラッシュを開始しようとするために、リモートエージェント10は、フラッシュ要求を発行することができる。そのようなフラッシュ要求には、いくつかの既存の技術を使用することができ、例として、リモートデータメモリアクセス(RDMA)フラッシュ要求をリモートエージェントによって発行してもよい。
【0048】
PCIeネットワークなどの典型的なパケットネットワークでは、そのようなフラッシュ要求は、単にメモリへの書込み要求として扱われ、書込み要求としてPCIeネットワークを通じて伝達され、永続性ドメイン内のキュー構造に要求が書き込まれることになる。キュー構造は、例えば、ソフトウェアスタックであってもよく、そのソフトウェアスタックへの書込みの結果として、必要とされるフラッシュ操作を行うために、永続性ドメイン内のソフトウェアを起動することができる。しかし、このソフトウェアベースのメカニズムは遅いことが知られており、それゆえに、フラッシュ要求の発行から、フラッシュ操作が実行されるまでに有意な遅延が存在し得る。本明細書に記載される技術によれば、リモートエージェントによって発行されたフラッシュ要求に応じたフラッシュ操作のより迅速な実行を可能にする代替的なメカニズムが実装される。
【0049】
なお、
図1では、エージェント10が、永続性ポイント25を含む永続性ドメイン20から離れており、特に、少なくともパケットネットワーク15によって永続性ドメイン20から分離されているため、リモートエージェントと呼ばれる。
【0050】
本明細書に記載される技術によれば、リモートエージェント10は、パケットネットワーク15にフラッシュ要求を発行することができ、そこで、フラッシュ要求がパケットネットワーク内のコンポーネント30によって受信される。このコンポーネントは、様々な形態をとることができるが、一例では、ネットワークインターフェースカード(NIC)であってもよい。フラッシュ要求が、単にメモリへの書込み要求としてPCIeネットワークを通じて伝達されるのでなく、代わりに、デバイス30は、要求がフラッシュ要求であることを検出することができ、パケットネットワークのパケットプロトコル、この場合にはPCIeプロトコルに準拠するパケット式フラッシュコマンドを作成するためのメカニズムを備える。特に、フラッシュコマンドを表していると識別される新しいネイティブコマンドを含むようにPCIeネットワーク内で利用可能なネイティブコマンドを拡張することが提案され、このパケット式フラッシュコマンドを、1つ以上の介在するコンポーネントを介するパケットネットワーク15を通じて、永続性ドメイン20に対するインターフェースを提供するコンポーネント40にルーティングすることができる。簡単にするために、デバイス30とデバイス40との間にスイッチ35を示しているが、典型的なPCIeネットワークでは、デバイス30とデバイス40との間の経路により多くのデバイスが存在するか、代替的にデバイス30とデバイス40との間に直接経路が存在し得ることが理解されよう。
【0051】
以下の説明では、フラッシュ要求の受信に応じてパケット式フラッシュコマンドを生成したデバイス30が、リクエスタデバイスと呼ばれ、永続性ドメイン20にインターフェースするデバイス40が、パケット式フラッシュコマンドに応答する役割を果たすので、コンプリータデバイスと呼ばれる。
【0052】
特に、コンプリータデバイス40は、前述したように、パケット式フラッシュコマンドがPCIeネットワークによってサポートされるネイティブコマンドであり、それゆえに、コンプリータデバイス40などのコンポーネントによって、PCIeネットワークを通じてルーティングされ得る他の形態のネイティブコマンドと区別可能であるので、パケット式フラッシュコマンドを検出する。そのようなネイティブコマンドは、パケットネットワーク15内のハードウェアコンポーネントによって認識されるコマンドであるので、本明細書ではハードウェアコマンドと呼ぶ場合もある。
【0053】
コンプリータデバイス40は、パケット式フラッシュコマンドによって識別された1つ以上のデータアイテムを永続性ポイント25にフラッシュするために、パケット式フラッシュコマンドの受信の検出に応じて、永続性ドメイン20内のフラッシュ操作を作動させる。フラッシュされるデータアイテムをパケット式フラッシュコマンド内で識別し得るいくつかの方法がある。本明細書でより詳細に述べるように、一例では、一連のアドレスをパケット式フラッシュコマンド内に提供された情報を参照して決定することができ、それにより、永続性ポイント25にまだ到達していない、それらのアドレスに書き込まれる任意のデータアイテムを、それらのデータアイテムをその永続性ポイント25にフラッシュさせるために、永続性ドメイン内のフラッシュ操作に供することができる。代替的な構成では、書込みデータの個々のアイテムにフロー識別子を関連付けることができ、パケット式フラッシュコマンドは、フロー識別子を指定することができ、それにより、コンプリータデバイス40が、永続性ドメイン20内の永続性ポイント25にまだ到達していない、関連付けられたフロー識別子を有する書込みデータの全てのアイテムに関して、フラッシュ操作を起動する。
【0054】
コンプリータデバイスは、パケットネットワークを通じてルーティングされ得る他のネイティブコマンドとパケット式フラッシュコマンドとを区別することができ、それゆえに、必要とされるフラッシュ操作を永続性ドメイン20内で直接起動するためにパケット式フラッシュコマンドを分析することができ、永続性ポイント25へのフラッシュに対処するために永続性ドメイン内のソフトウェアを作動させる必要をなくすことができ、したがって、このメカニズムの使用により、フラッシュ操作の実行の大幅な改善を達成することができ、リモートエージェント10がフラッシュ要求を発行してから、必要とされるフラッシュ操作が永続性ドメイン20内で実行されるまでの遅延を大幅に低減する。
【0055】
図1がシステムの概略図を提供しており、システム内のコンポーネントの実際の構成が、実装形態に大きく依存して変わり得ることが理解されよう。例示的な具体的な2つのシステムを
図2Aおよび
図2Bに示す。
図2Aの例では、システムオンチップ(SoC)50が、PCIeネットワーク55を介して永続性ドメイン60に結合される。特に、SoC50は、PCIeネットワーク55のルートポート80に接続され、ルートポート80は、SoCの処理機能およびメモリサブシステムをPCIeネットワーク55に接続するルート複合デバイスを形成する。簡単にするために、SoC内の詳細なコンポーネントを省略するが、プロセッサコア70が、インターコネクト75を介してルートポート80に接続されて示されており、プロセッサコア70(または少なくともそのプロセッサコア上で実行されるソフトウェア)は、永続性ドメイン60内の不揮発性メモリ65への一連の書込み要求を発行し、その後に、それらの書込みデータのアイテムが不揮発性(NV)メモリ65にフラッシュされたことを確実にするフラッシュ要求を発行することを欲する場合がある、リモートエージェントと見なすことができ、この例では、不揮発性メモリ65が永続性ポイントと見なされる。
【0056】
この例では、不揮発性メモリ65へのアクセスを制御するために使用されるメモリコントローラは、PCIeネットワーク55内のエンドポイントデバイス90によって提供され、1つ以上の介在するコンポーネントを介してルートポート80に結合されると仮定され、
図2Aの特定の図では、介在するスイッチ85が設けられる。
【0057】
図2Aに示す比較的単純な実装形態でも、不揮発性メモリ65の前にいくつかの介在するキュー構造が存在し得ることが理解されよう。例えば、メモリコントローラ90は、異なるレベルのいくつかのキュー構造、例えば、コマンドを最初に受信する受信キュー、およびデータがNVメモリ65に、実際に伝達される前の1つ以上の介在するキューを含んでもよい。実装形態に応じて、エンドポイントデバイス90内のコンポーネントの1つ以上を、
図2Aの概略図によれば、永続性ドメイン60内にあると見なすことができ、代替的に、エンドポイントデバイス90を、永続性ドメインの完全に外側にあると見なすことができ、エンドポイントデバイスは、必要とされるデータアイテムをNVメモリ65にフラッシュすることを確実にするために永続性ドメインと通信する。
【0058】
前述したように、NVメモリ65は、永続性ポイントであるが、システム内の唯一の永続性ポイントでなくてもよい。例えば、バックアップ電力機能を備えた少なくとも最終レベルのキューが、メモリコントローラ90内に存在し、そのデータがそのポイントに到達すると、そのデータを停電に際してNVメモリ65に移動させることが可能であることが知られている点で、そのキュー構造を永続性ポイントと見なすことを可能にすることができるはずである。
【0059】
それゆえに、
図2Aの例では、プロセッサコア70は、インターコネクト75を介してルートポート80にルーティングされるフラッシュ要求を発行することができる。そして、ルートポートは、フラッシュ要求の受信を認識し、そのフラッシュ要求を、PCIeネットワーク55のPCIeプロトコルに準拠するパケット式フラッシュコマンドに変換する。そして、そのネイティブコマンドは、PCIeネットワークのインフラストラクチャを通じてルーティングされ、そこで、それがエンドポイント90によって受信される。そして、エンドポイント90は、コマンドをフラッシュコマンドであると認識し、必要とされるデータアイテムを永続性ポイントにフラッシュさせる適切な制御信号を永続性ドメイン内に発行するために、フラッシュコマンドの内容を分析する。永続性ドメイン内に2つ以上の永続性ポイントが存在する場合、元のフラッシュ要求は、どの永続性ポイントを目標にするかを識別することができ、その情報を、PCIeネットワークを通じてルーティングされるパケット式フラッシュコマンド内に取り込むことができるので、エンドポイントは、適切な永続性ポイントに、例えば、NVメモリ65に、または永続性ポイントとして動作できるように構成されたメモリコントローラ内のキュー構造に、データをフラッシュすることを確実にする適切な制御信号を発行することができる。
【0060】
図2Aの例では、ルートポート80がリクエスタデバイスになり、エンドポイント90がコンプリータデバイスの動作を実行することが理解されよう。
図2Bは、例示的な代替的な実装形態を示し、ここでは、ルートポートがコンプリータデバイスを形成し、永続性ドメインが、ルートポートが提供されるSoC115に関連付けられる。
【0061】
図2Bの例では、リモートエージェント100が、介在するPCIeネットワーク110を介して、永続性ドメインに向けたフラッシュ要求を発行するように構成される。
図2Bに示す例では、リモートエージェントは、PCIeネットワークに直接接続されていないが、代わりに、介在する機構105を介してPCIeネットワークに結合される。機構105は、様々な形態をとることができるが、例えば、インターネットであることができる。それゆえに、フラッシュ要求は、インターネットを介してPCIeネットワーク110のインターフェースデバイスに、この例ではNICカード125に、ルーティングされる。NICカード125は、この実装形態ではリクエスタデバイスとして機能し、フラッシュ、すなわち、前述したパケット式フラッシュコマンドを表す、ここではPCIeネットワークによって提供される前述したネイティブコマンドにフラッシュ要求をマッピングする。そして、そのコマンドは、スイッチ130を介して、フラッシュ要求によって目標にされる永続性ドメインに関連付けられたルートポート135にルーティングされる。
【0062】
不揮発性メモリ120に到達する前に書込みデータがバッファされ得る様々な場所を示すために、
図2BのSoC115内に様々な記憶構造を示す。特に、PCIeネットワーク110を介してSoC115に結合される1つ以上のリモートエージェントによって発行された書込み要求の従前の対象であった書込みデータを、インターコネクト167の入力キュー構造140を通じてルーティングすることができ、そこからシステムキャッシュ145を介してインターコネクトの1つ以上の出力キュー構造150に伝達することができ、最終的にデータが不揮発性メモリに書き込まれる前に、そこから、それ自体がいくつかの内部キュー構造160を含み得るメモリコントローラ155に伝達することができる。
【0063】
ルートポート135は、パケット式フラッシュコマンドを受信すると、コマンドをフラッシュコマンドであると認識し、SoC115内のフラッシュ制御回路170に送信される制御信号を生成するためにフラッシュコマンドの内容を分析することができる。フラッシュ制御回路の正確な位置は、実装形態に応じて変えてもよく、実際には、単一のフラッシュ集中制御回路でなく、SoC内の様々な位置に分散してもよい。別の例示的な実装形態では、フラッシュ制御回路170は、ルートポート135内に実装することができる。フラッシュ制御回路170が実装されるが、それは、SoC115内のフラッシュ操作の実行を制御するために設けられ、SoCの様々なキュー/記憶構造内の内容を永続性ポイントにフラッシュすることを可能にする。NVメモリ120のみが、永続性ドメイン内の永続性ポイントである場合があり、または他の記憶構造の1つ以上も、永続性ポイントを提供できる場合がある。例えば、メモリコントローラ内のキュー構造160は、適切なバックアップ電力が提供される場合に永続性ポイントとなってもよい。同様に、いくつかの実装形態では、システムキャッシュを、電源の中断に際してシステムキャッシュの内容をNVメモリ120に書き出すことを可能にする適切なバックアップ電力を提供され得るので、永続性ポイントと見なすこともできる。
【0064】
ルートポート135は、PCIeネットワークを介してルーティングされたパケット式フラッシュコマンドを認識できるという事実により、そのパケット式フラッシュコマンドの内容を分析し、必要とされるフラッシュ操作を実施するためにフラッシュ制御回路170と直接通信することができる。それゆえに、既知の先行技術の技術とは対照的に、PCIeネットワーク自体が、PCIeプロトコルに準拠するパケット式フラッシュコマンドを生成し、PCIeネットワークを通じて伝達する能力により「フラッシュに気付く」ので、必要なフラッシュ操作を実行するためにSoC内のプロセッサコア165上でソフトウェアを起動する必要がない。
【0065】
前述したように、フラッシュ要求は、特定のデータアイテムを目標にすることができる。それゆえに、リモートエージェント100が、メモリアドレス範囲内の特定のメモリアドレスへの一連の書込み要求を発行し、その後のフラッシュ要求が、それらのメモリアドレスを識別するアドレス範囲情報を提供できる場合がある。そのアドレス情報は、PCIeネットワーク110を通じてルーティングされる内部パケット式フラッシュコマンド内に取り込むことができ、それにより、ルートポート135は、フラッシュに供する必要がある必要とされるアドレスを指定するフラッシュ制御信号をフラッシュ制御回路170に発行することができる。そして、PCIeネットワーク110と関連する永続性ポイントとの間の様々な介在する記憶構造を調査し、関連する書込みデータアイテムのいずれかがそれらの構造内に依然として存在するかどうかを判定することができ、その場合に、それらのデータアイテムを永続性ポイントにフラッシュすることができる。単なる例として、メモリコントローラ内のキュー構造160が永続性ポイントとして機能することができ、それらのキュー構造が、フラッシュ要求が関係する永続性ポイントと識別される状況では、パケット式フラッシュコマンドの分析に基づいてルートポート135によって発行された制御信号に応じて、キュー構造140、150内またはシステムキャッシュ145内に保持された任意の関連データアイテムを、フラッシュ制御回路170を介してキュー構造160にフラッシュすることができる。
【0066】
図3は、上述した機能性を実装するために、PCIeネットワークのリクエスタデバイス内に設けられ得るコンポーネントを示すブロック図である。リクエスタデバイス200は、リモートエージェントまたは介在する機構に対するインターフェース205を有し、それを介して、リモートエージェントから要求を受信することができる。インターフェース205で受信した要求は、トランザクション層として設けられる、本明細書では変換回路とも呼ばれるパケット生成回路210に伝達される。トランザクション層は、アウトバウンドトランザクション層パケット(TLP)の組立の開始点であり、インバウンドTLPの分解の終了点である。
図3に示す目的では、リクエスタデバイスからPCIeネットワーク内への送信経路のみが示され、受信経路が省略されているが、情報がPCIeネットワーク内からリクエスタデバイス200を介してリモートエージェントまたは介在する機構に流れ得ることが理解されよう。
【0067】
パケット式フラッシュコマンドに関する上述した機能性をサポートするために、フラッシュコマンド生成器220がパケット生成回路210内に設けられる。受信要求をフラッシュ要求と識別すると、フラッシュコマンド生成器220は、そのフラッシュ要求を表すためにPCIeネットワークを介してルーティングされる内部パケット式フラッシュコマンドを生成するように構成される。パケット式フラッシュコマンドの正確な形態は、実装形態に応じて変えることができ、2つの異なる形式が本明細書に記載される。最初のものは、フラッシュプレフィックスを既存のパケット形式に追加することを含み、それにより、フラッシュプレフィックスは、その関連付けられたパケットと一緒にパケット式フラッシュコマンドを表していると見なされる。フラッシュプレフィックスがない場合、パケットはその標準的な方法で解釈される。後述する特定の例では、パケット式フラッシュコマンドを形成するために再使用され得るパケットは、読出しパケットであり、それゆえに、読出しパケットにフラッシュプレフィックスが先行する場合、フラッシュプレフィックスと読出しパケットとの組み合わせは、パケット式フラッシュコマンドと見なされる。しかし、代替的な実装形態では、そのようなフラッシュプレフィックスは使用されず、代わりに、PCIeネットワークを通じてルーティングされ得る、例えば、読出しパケットおよび書込みパケットなどの代替的なパケットとフラッシュパケットとを区別することを可能にする専用のフラッシュパケット形式が提供される。
【0068】
送信回路215は、生成されたパケットをリクエスタデバイス200のPCIeリンクに出力するために、パケット生成回路210に接続される。送信回路は、様々な形態をとることができるが、例示的な一実装形態では、PCIeプロトコルによって提供されるデータリンク層および物理層を含む。
【0069】
図3にも示すように、送信回路を介してPCIeリンクにルーティングされるパケットの1つ以上に関連してフロー識別子情報を提供するために、フローID生成器225を設けることができる。フロー識別子は、1つ以上の書込みコマンドに関連付けるために、またフラッシュに供する必要があるデータアイテムを識別するようにフラッシュコマンドに含めるために、リモートエージェントによって識別することができる。フローID生成器225は、送信回路を介してPCIeリンクに発行される書込みパケットにフローIDプレフィックスを追加することができ、それらのフローIDプレフィックスを書込みパケットに関連してPCIeネットワークを通過させ、それにより、それらのフロー識別子を書込みデータと共に永続性ドメインに伝達することもできる。そして、その後のフラッシュ要求は、そのフラッシュ要求が関係するフロー識別子を識別することができ、フラッシュコマンド生成器220は、そのフラッシュ識別子を含むパケット式フラッシュコマンドを生成することができる。そして、コンプリータデバイスでは、そのフラッシュ識別子を使用して、フラッシュ操作に供する必要がある書込みデータアイテムを識別することができる。
【0070】
図3に示す例では、リクエスタデバイス200内で有効にされている機能を識別する構成情報を格納するために、1つ以上の構成レジスタ230をリクエスタデバイス内に設けることもできる。特に、リクエスタデバイスが上述した方法でフラッシュ要求に対処し、フロー識別子を使用する能力を、構成レジスタ230の使用によって構成可能にすることができる。構成レジスタの内容は、様々な方法で設定することができるが、例示的な一実装形態では、PCIeネットワークがブートされたときにエニュメレーションプロセスを実行するために使用されるソフトウェアを、パケットネットワーク内のデバイスを発見および構成し、様々なデバイスのフラッシュ機能を識別するように構成レジスタ内の適切な構成情報を設定するために使用することができる。
【0071】
図4は、例示的な一構成でコンプリータデバイス250内に設けられ得るコンポーネントを示す図である。PCIeネットワークからコマンドを受信し、永続性ドメイン内に発行される制御信号を生成するための受信経路に関連するコンポーネントのみを示す。受信回路255が、PCIeリンクからコマンドを受信するために設けられ、
図3に示した送信回路215と同様に、受信回路255は、物理層およびデータ層を含むことができる。
【0072】
そして、パケット分解回路260が、受信したコマンドを逆パケット化(depacketise)するためにトランザクション層に設けられる。パケット式フラッシュコマンドの処理をサポートするために、受信したコマンドがそのようなフラッシュコマンドである場合を検出することができ、その場合に、インターフェース265を介して永続性ドメインに発行する適切な制御信号を生成するためにフラッシュコマンド内の情報を分析することができる、フラッシュ操作作動回路270が設けられる。書込みコマンドに関連してフロー識別子プレフィックスの存在を検出するために使用することができ、その場合に、フロー識別子を抽出し、そのフロー識別子を書込みデータおよび関連付けられた書込みアドレスと共にインターフェース265を介して永続性ドメインに出力させる、フロー識別子検出器/ハンドラ275も提供される。
【0073】
図3を参照して述べたリクエスタデバイス200と同様に、コンプリータデバイス250は、コンプリータデバイスの機能を識別する、特に、フラッシュコマンドに対処する能力を識別する、構成情報を格納するための構成レジスタ280を含むことができる。
【0074】
図3の構成レジスタ230および
図4の構成レジスタ280は、様々な形態をとることができるが、一具体例では、関連するデバイスの拡張された機能を識別する、この場合に、フラッシュ要求の処理および対処を行う能力ならびに任意選択でフロー識別子を識別する、拡張機能構造として形成される。なお、前述したように、フラッシュ要求は、アドレス式フラッシュを代わりに使用でき、フロー識別子を使用する必要がないため、フラッシュ操作に対処できるデバイスが、フロー識別子も取り扱い可能である必要はない。それゆえに、フロー識別子の使用は、フラッシュ操作に対処するデバイスの能力の上に階層化できる任意選択的な追加機能である。
【0075】
図5は、例示的な第1の実装形態によるパケット式フラッシュコマンドの形式を示す図であり、ここでは、フラッシュプレフィックス300が、既存のパケット形式330に関連して使用される。既存のパケット形式は、フラッシュプレフィックス300が先行すると異なる意味を与えられ、例示的な一実装形態では、既存のパケット形式330は、読出しパック形式である。それゆえに、先行するフラッシュプレフィックスがない場合、パケット330は、読出しコマンドを識別する読出しパケットと決定される。しかし、フラッシュプレフィックス300がパケット330に先行する場合、フラッシュプレフィックスとパケットとの組み合わせは、パケット式フラッシュコマンドと解釈される。
【0076】
フラッシュプレフィックスは、
図5に示すような、いくつかのフィールドを含む。フィールド305は、プレフィックスがフラッシュプレフィックスであると識別する。そして、フラッシュポイントフィールド310は、フラッシュ要求が浅いフラッシュに関係するか、深いフラッシュに関係するかを識別する。フィールド315は、アドレス式フラッシュを実行するか、フロー識別子式フラッシュを実行するかを識別するフラッシュタイプフィールドである。最後に、属性フィールド320は、フラッシュタイプがアドレス式フラッシュであるか、フロー識別子式フラッシュであるかに応じて異なるように使用される。アドレス式フラッシュの場合、属性フィールド320は、フラッシュ要求が関係するアドレス範囲を決定するために用いられるアドレス情報を提供するために使用される。しかし、フロー識別子式フラッシュの場合、属性フィールド320は、フラッシュ要求が関係するフロー識別子を示すフロー識別子値を格納するために使用される。
【0077】
前述したように、パケット330は、一実装形態では、読出しパケット(読出しヘッダパケットとも呼ばれる)であり、それゆえに、様々なバイト内の様々なビットフィールドは、Peripheral Component Interconnect Special Interest Group(PCI-SIG)によって制作されたPCIe仕様書で定義された読出しパケットに関連付けられた標準的な意味を有する。それゆえに、Fmtおよびタイプフィールドは、パケットを読出しパケットであると集合的に識別するために使用される。なお、長さフィールドは、長さフィールドが通常、パケット内に提供されたデータの量を識別するために用いられ、また読出しパケットの場合に付随するデータがないので、読出しパケット形式で使用されない(代わりに、予約フィールドとして識別される)。しかし、フラッシュコマンドを実行するために、読出しパケットに関連してフラッシュプレフィックスを使用する場合、任意選択で、アドレス式フラッシュのためのアドレス範囲を識別するためにフラッシュプレフィックスの属性フィールド320内のアドレス情報に関連して使用され得る追加のアドレス情報を取り込むために、長さフィールドを用いることができる。
【0078】
図5に示すように、アドレス情報を読出しパケット330内に提供することができ、提供されるアドレス情報の量は、32ビットのアドレスを使用するか、64ビットのアドレスを使用するかに依存する。
図5にも示すように、パケットのバイト4~7は、PCIe仕様書によって定義された特定のバイトイネーブル情報を提供し、パケットを生成したリクエスタデバイスを識別するリクエスタIDと、そのリクエスタデバイスによって使用されるタグ値を格納するタグフィールドとを提供する。そして、このリクエスタIDおよびタグ情報は、その応答が提供されるべきリクエスタデバイスを識別するために、コンプリータデバイスからの任意の応答パケットで返すことができる。そして、タグ情報は、従前に発行されたコマンドと応答を一致させるために、リクエスタデバイスによって使用することができる。
【0079】
前述したように、使用され得るフラッシュコマンドの一タイプが、フロー識別子式フラッシュコマンドである。フロー識別子フラッシュの使用をサポートするために、メモリにデータを書き込むために発行された先行する書込みコマンドは、それらに関連付けられたフロー識別子情報を有する。例示的な一実装形態では、これは、
図6に示すようなフロー識別子プレフィックスを使用して達成される。特に、PCIe仕様書に定義されたような標準的な書込みヘッダパケット370(ヘッダには典型的に、
図6に示していない数バイトのデータペイロードが後続し、データペイロードの量は、長さフィールドの値によって示される)を、書込みコマンドを送信するために依然として使用することができるが、書込みヘッダパケットには、フロー識別子プレフィックス350が先行する。フロー識別子プレフィックスは、プレフィックスがフロー識別子プレフィックスであると識別する第1のフィールド355を有する。
図6に示す例では、バイト1の上位4ビットが予約されるが、バイト1の残りのビット、ならびにバイト2および3が、フラッシュ識別子値を格納できるフラッシュ識別子フィールド365を形成する。書込みパケット内に示されるアドレスに格納するために書込みデータを永続性ドメインに出力するために使用されるコンプリータデバイスでは、フロー識別子プレフィックスの存在が識別され、フロー識別子は、フィールド365から抽出されるので、書込みデータおよび関連付けられた書込みアドレスと共に永続性ドメイン内に伝達することができる。例えば、特定のフロー識別子を指定するフラッシュコマンドを後で発行する場合、フロー識別子情報を、コンプリータデバイスによってフラッシュ要求から抽出し、フラッシュ要求に供する書込みデータを識別する際に使用するために永続性ドメイン内に伝達することができる。
【0080】
図7は、リモートエージェントから受信したフラッシュ要求を処理するときにリクエスタデバイスで取られるステップを示すフロー図である。ステップ400で、フラッシュ要求の受信を待ち、フラッシュ要求を受信すると、ステップ405で、アドレス式フラッシュ要求が発行されたかどうかを判定する。そうであれば、プロセスはステップ410に進み、そこで、
図5を参照して前述したようにフラッシュプレフィックスが生成される。フラッシュタイプフィールドは、アドレス式フラッシュを識別するように設定され、フラッシュポイントフィールドは、元のフラッシュ要求で提供された情報に応じて、深いフラッシュまたは浅いフラッシュのいずれであるかを識別するように設定される。さらに、属性フィールドは、アドレス範囲情報を識別するように設定される。
【0081】
しかし、アドレス式フラッシュが要求されていないとステップ405で判定されれば、これは、フロー識別子フラッシュ要求が発行されていることを意味し、ステップ415で、フラッシュプレフィックスがしかるべく生成される。それゆえに、フラッシュタイプは、フロー識別子フラッシュタイプを識別するように設定され、フラッシュポイントフィールドは、ステップ410を参照して前述したように設定され、属性フィールドは、フロー識別子を識別するように設定される。フロー識別子は、リモートエージェントから受信されるフラッシュ要求によって提供することができる。
【0082】
ステップ410またはステップ415のいずれかに続いて、プロセスはステップ420に進み、そこで、開始アドレスを識別するために使用されるアドレスビットを伴う読出しパケットが生成される。この開始アドレス情報は、読出し要求がルーティングされるべきコンプリータデバイスを識別するために使用される。フロー識別子式フラッシュの場合、その開始アドレス情報は、その目的のみに使用されるが、アドレス式フラッシュ要求の場合、その情報は、アドレス式フラッシュが関係する範囲を計算するときにも使用される。これは、フラッシュプレフィックス(および任意選択で、読出しパケットの長さフィールド)内に提供される追加情報が、その開始アドレスに関するアドレス範囲を識別するために使用されるためである。
【0083】
図8は、パケット式フラッシュコマンドを受信するとコンプリータデバイスで取られるステップを示すフロー図である。ステップ450でそのような受信を検出すると、ステップ455で、フラッシュプレフィックスを分析して、フラッシュタイプおよびフラッシュポイントを決定する。そして、ステップ460で、フラッシュタイプがアドレス式フラッシュであるかどうかを判定し、そうであれば、プロセスはステップ465に進み、そこで、フラッシュプレフィックス内および関連付けられたパケット内の両方のアドレス情報を使用してアドレス範囲が計算される。特定の一実装形態で実行される計算のより詳細については、
図9を参照して後述する。
【0084】
そして、ステップ465に続いて、ステップ470で、決定されたアドレス範囲内のアドレスへの全ての書込みデータについて、永続性ドメインで特定された永続性ポイントへの(すなわち、フラッシュプレフィックス内のフラッシュポイント情報によって識別された永続性ポイントへの)フラッシュ操作を開始する。結果として、特定された抵抗ポイントにまだ到達していない、それらのアドレスのいずれかに向けた書込みデータの任意のアイテムがあると永続性ドメインで判定されれば、それらのデータアイテムは、関連する介在する記憶構造から永続性ポイントにフラッシュされる。
【0085】
ステップ460で、フラッシュタイプが代わりにフロー識別子フラッシュタイプであると判定されれば、プロセスはステップ475に進み、そこで、フロー識別子がフラッシュプレフィックスから抽出される。
図8に示す例では、フロー識別子の所定の値が、フロー識別子の特別な値として予約され、それゆえに、ステップ480で、その特別な所定の値をフロー識別子が有するかどうかが判定される。それがないことを仮定すると、プロセスはステップ485に進み、そこで、抽出されたフロー識別子を有する全ての書込みデータについて、特定された永続性ポイントへのフラッシュ操作が永続性ドメイン内で開始される。
【0086】
しかし、ステップ480で、フロー識別子が所定の値を有すると判定されれば、プロセスはステップ490に進み、そこで、関連付けられたフロー識別子を有する全ての書込みデータについて、その書込みデータにフロー識別子値が関連付けられているか否かにかかわらず、識別された永続性ポイントへのフラッシュ操作が永続性ドメイン内で開始される。それゆえに、フロー識別子の所定の値は、それに関連付けられたフロー識別子値を有し、まだ永続性ポイントに到達していない全てのデータアイテムをフラッシュするために、使用することができる。
【0087】
図9は、フラッシュプレフィックス内および関連付けられた読出しパケット内に提供された情報からアドレス範囲をどのように決定し得るかをより詳細に示すフロー図である。ステップ500で、開始アドレスは、読出しパケットから決定され、これは、読出しパケットのアドレスフィールド内の情報によって提供される。ステップ505で、フラッシュプレフィックスのバイト1のビット3~0を使用して、アドレス範囲限界の細分性「G」を決定する。これにより、アドレス範囲限界フィールドを解釈するための細分性値が得られる。このフィールドの符号化は、例示的な一実装形態では以下のとおりである。
0000b=細分性は1バイトである
0001b=細分性は2バイトである
0010b=細分性は4バイトである
0011b=細分性は8バイトである
0100b=細分性は16バイトである
0101b=細分性は32バイトである
0110b=細分性は64バイトである
0111b=細分性は128バイトである
1000b=細分性は256バイトである
1001b=細分性は512バイトである
1010b=細分性は1024バイトである
1011b=細分性は2048バイトである
1100b=細分性は4096バイトである
1101b=細分性は8192バイトである
1110b=細分性は16384バイトである
1111b=細分性は32768バイトである
【0088】
それゆえに、この例では、細分性は、1バイト~32Kバイトで変わり得ることが分かるであろう。
【0089】
ステップ510で、追加の範囲情報を提供するために読出しパケット内の長さフィールドの使用が有効にされているかどうかが判定される。そうでなければ、プロセスはステップ515に進み、そこで、限界アドレスは、フラッシュプレフィックスのバイト2および3に細分性を乗じて、その結果を開始アドレスに追加することによって分かる。これにより、細分性が32Kバイトに設定される状況で、2ギガバイトの最大範囲が得られる。
【0090】
ステップ510で、長さフィールドが有効にされていると判定されれば、プロセスはステップ520に進む。限界アドレスは、ステップ515と本質的に同じ方法で計算されるが、フラッシュプレフィックスのバイト2および3を単に使用するだけでなく、それらのバイトは、長さフィールド内の追加のアドレス情報に連結されて、16ビットでなく26ビットの値を与え、その連結された値に細分性を乗じ、その計算の結果が開始アドレスに追加される。これにより、細分性が32Kバイトに設定されると、2Pバイトの最大範囲が得られる。
【0091】
図10Aは、書込みデータコマンドを生成デバイスでどのように生成するかを示す。PCIeネットワーク内のコマンド生成デバイスによって書込み要求を受信すると、ステップ550で、フロー識別子が書込みのために有効にされているかどうかが判定される。そうでなければ、ステップ555で、書込みパケットは、標準的な方法で生成される。しかし、フロー識別子が有効にされていれば、ステップ560で、
図6を参照して前述した形態のフロー識別子プレフィックスが生成され、書込みデータコマンドを識別するために書込みパケットに関連して出力される。前述したように、書込みデータパケットは、標準的な形態のものであることができ、フロー識別子プレフィックスは、書込みデータに関連付けられるフロー識別子値を提供する。
【0092】
図10Bは、書込みデータコマンドをコンプリータデバイスでどのように分析するかを示すフロー図である。ステップ570で、フロー識別子プレフィックスが書込みパケットを備えているかどうかが判定される。そうでなければ、ステップ575で、書込みアドレスおよび書込みデータは、書込みパケットから抽出され、標準的な方法で永続性ドメインに出力される。しかし、フロー識別子プレフィックスが書込みパケットを備えていれば、プロセスはステップ580に進み、そこで、書込みアドレスおよび書込みデータは、永続性ドメインに出力されるが、この場合に、フロー識別子プレフィックスから抽出されたフロー識別子を伴う。
【0093】
例示的な一実装形態では、パケット式フラッシュコマンドは、フラッシュ操作が実行されると後で応答が提供されるコマンドである。この目的のために、標準形式の完了パケットを使用することができ、特に、データを有していない完了パケット形式を使用することができる。これは、(読出しデータを応答で提供する必要がある読出しコマンドとは対照的に)フラッシュコマンドに応答してデータを返す必要がなく、フラッシュ操作のステータス、すなわち、それが正常に完了したかどうかを提供する応答だけが必要であるためである。
【0094】
図11Aは、そのような完了パケットを発行するためにコンプリータデバイスで取られるステップを示すフロー図である。ステップ600で、フラッシュ操作の完了が待たれ、ステップ605で、フラッシュ要求が成功したか否かを示すためにリクエスタデバイスに送信されるデータなしに、完了パケットが生成される。
【0095】
図11Bは、使用され得る完了パケットの例を示す。Fmtフィールドはタイプフィールドと一緒に、完了パケットがデータなしの完了パケットであると識別する。したがって、パケットによって提供されるデータがないので、長さフィールドは全てゼロに設定され、それゆえに、長さフィールドは、このタイプの完了パケットでは予約フィールドと見なすことができる。完了パケットを発行するコンプリータデバイスを識別するために、コンプリータIDフィールドを使用する。また図示するように、フラッシュ操作が正しく完了したか否かを識別するために、ステータスフィールドを使用する。完了パケットを向けるリクエスタデバイスを識別するために、リクエスタIDフィールドも設けられ、前述したように、完了パケットを受信すると、従前に発行した対応するコマンドに完了パケットを結合するために、そのリクエスタデバイスによって後で使用されるタグ値を提供するために、タグフィールドを使用することができる。
【0096】
上述した例示的な実装形態では、パケット式フラッシュコマンドは、フラッシュプレフィックスが先行する既存のパケットタイプを使用することによって表される。しかし、代替的な実装形態では、フラッシュコマンドに専用のパケットタイプを提供することができ、その結果として、フラッシュプレフィックスが必要とされない。例示的な2つの形式を
図12Aおよび
図12Bに示す。特に、第1の専用パケットタイプ650を、アドレス式フラッシュコマンドを実行するために使用することができる。Fmtおよびタイプフィールドを使用して、パケットがフラッシュコマンドに関係すると識別することができる。分かるように、このパケットは、フラッシュプレフィックス式の実装形態を参照して前述した情報フィールドの全てを組み込み、それゆえに、開始アドレスおよびアドレス範囲限界を識別するのに十分なアドレス情報を与える。また、フラッシュポイントおよびフラッシュタイプフィールドは、深いフラッシュが必要であるか、浅いフラッシュが必要であるかを識別するために設けられ、この場合、フラッシュタイプフィールドは、アドレス式フラッシュが実行されると識別する。開始アドレスは、フラッシュアドレスフィールドによって与えられ、アドレス指定モードに応じて64ビット値または32ビット値のいずれかとなる。なお、開始アドレスビット1および0は、この特定の形式のフラッシュコマンドではバイト20のビット1および0によって与えられる。そして、終了アドレスは、開始アドレス+アドレス範囲限界情報である。アドレス範囲限界ビット47~0が、64ビットのアドレス指定を実行するときに使用されるのに対して、32ビットのアドレス指定の場合、アドレス範囲限界ビット31~0が使用される。
【0097】
図12Bは、フローID式フラッシュを用いるときに使用し得る第2の専用パケットタイプ670を示す。開始アドレスは、
図12Aを参照して上述したのと同じ方法で計算される。この場合も、フラッシュポイントフィールドは、深いフラッシュを実行するか、浅いフラッシュを実行するかを識別することができ、フラッシュタイプフィールドは、この場合に、フローID式のフラッシュを実行すると識別する。
図12Bに示すように、フロー識別子フィールドは、20ビットのフロー識別子値を提供することを可能にする。フロー識別子式フラッシュコマンドについて述べたときに前述したように、フラッシュアドレスは、適切なコンプリータデバイスにコマンドをルーティングするためにのみ使用され、フラッシュ処理を実行する際にコンプリータによって使用されない。これは、この後者の場合、永続性ポイントにフラッシュする必要があるデータアイテムを識別するために使用されるのが、フロー識別子であるためである。
【0098】
なお、
図12Aおよび
図12Bに示す専用パケットタイプは、前述したパケットよりもサイズが大きいものである。長さフィールドを使用して、64ビットまたは32ビットのアドレス指定のいずれかに適用可能な通常のデータワード数を超えて使用されるペイロードの追加のデータワード数を識別する、パケットの合計サイズを符号化することができる。
【0099】
コンプリータデバイスがこれらの新しいタイプの要求コマンドをサポートしなければ、それは、未サポート要求応答をリクエスタデバイスに返信するように構成される。
【0100】
PCIeネットワーク内で上述した技術を用いる場合、フラッシュ要求をエンドポイントまたはルートポートのいずれかによって生成できることが想定される。フローIDプレフィックスによる書込みも、エンドポイントまたはルートポートによって生成することができる。Memory Space BarおよびルートポートによるPCIe機能(これらはソフトウェアによって発見可能な最小のエンティティであり、それゆえに、例えば、エンドポイントは、異なるIDを内部に有する複数の機能を有することができる)を、フラッシュ要求およびフローIDプレフィックスによる書込みのためのコンプリータにすることができる。
【0101】
上述した技術を採用することにより、リモートエージェントからのフラッシュ要求の対処を、既知の技術を使用するよりも著しく高速に実行し、それにより、電力の中断前に永続性ポイントにデータが書き込まれないリスクを低減できることが分かった。
【0102】
本出願において、「~ように構成された(configured to...)」という用語は、装置の要素が、定義された動作を実行することができる構成を有することを意味するために使用される。この文脈において、「構成」とは、ハードウェアまたはソフトウェアの構成または相互接続の方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有してもよく、またはプロセッサ若しくは他の処理デバイスが機能を実行するようにプログラムされてもよい。「構成されている」は、定義された動作を提供するために装置要素を何らかの方法で変更する必要があることを意味しない。
【0103】
本発明の例示的な実施形態が添付の図面を参照して本明細書で詳細に説明されてきたが、本発明はそれらの正確な実施形態に限定されないこと、および添付の特許請求の範囲によって規定される本発明の範囲および趣旨から逸脱することなく、当業者によって様々な変更、追加、および修正が当業者によって実施され得ることが理解されるであろう。例えば、本発明の範囲から逸脱することなく、従属請求項の特徴と独立請求項の特徴との様々な組み合わせを行うことができる。