(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-09
(45)【発行日】2022-12-19
(54)【発明の名称】NVMeベースのデータ読み取り方法、装置及びシステム
(51)【国際特許分類】
G06F 3/06 20060101AFI20221212BHJP
G06F 3/08 20060101ALI20221212BHJP
G06F 12/00 20060101ALI20221212BHJP
G06F 12/06 20060101ALI20221212BHJP
G06F 13/38 20060101ALI20221212BHJP
G06F 13/42 20060101ALI20221212BHJP
【FI】
G06F3/06 302Z
G06F3/06 301K
G06F3/06 301M
G06F3/08 H
G06F12/00 597U
G06F12/06 550A
G06F13/38 350
G06F13/42 310
(21)【出願番号】P 2020545126
(86)(22)【出願日】2018-06-30
(86)【国際出願番号】 CN2018093918
(87)【国際公開番号】W WO2020000482
(87)【国際公開日】2020-01-02
【審査請求日】2020-08-27
【前置審査】
(73)【特許権者】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
【住所又は居所原語表記】Huawei Administration Building, Bantian, Longgang District, Shenzhen, Guangdong 518129, P.R. China
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ギッシン,ビクター
(72)【発明者】
【氏名】リー,ジュインイーン
(72)【発明者】
【氏名】ジョウ,グワンフオン
(72)【発明者】
【氏名】リン,ジアシュウ
【審査官】打出 義尚
(56)【参考文献】
【文献】米国特許出願公開第2015/0261434(US,A1)
【文献】米国特許出願公開第2016/0124876(US,A1)
【文献】中国特許出願公開第106210041(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06
G06F 3/08
G06F 12/00
G06F 12/06
G06F 13/38
G06F 13/42
(57)【特許請求の範囲】
【請求項1】
NVMeベースのデータ読み取りシステムであって、
当該システムは、ホストと、NVMeコントローラと、ストレージ媒体とを含み、
前記ストレージ媒体は、データを記憶するように構成され、
前記ホストは、読み取り命令をトリガするように構成され、前記読み取り命令は、指示情報を搬送し、前記指示情報は、第1のアドレスを示すために使用され、前記第1のアドレスは、前記NVMeコントローラによりアドレス指定可能なアドレスであり、前記第1のアドレスは、前記ホストにより前記NVMeコントローラに対して開放されたアドレスであり、
前記NVMeコントローラは、前記読み取り命令を取得し、前記ストレージ媒体から、前記読み取り命令に対応する読み取り対象のデータを読み取り、第1のデータパケットを前記ホストに送信するように構成され、前記第1のデータパケットは、前記第1のアドレス及び第1のペイロードデータを搬送し、前記読み取り対象のデータは、前記第1のペイロードデータを含み、
前記ホストは、前記第1のデータパケットを受信し、前記第1のアドレスに基づいて第2のアドレスを決定し、前記NVMeコントローラによりトリガされた完了キューエントリ(CQE)を受信する前に、前記第1のペイロードデータを前記第2のアドレスにより示されるストレージユニットに書き込むように更に構成され、前記第2のアドレスは、前記ホストによりアドレス指定可能なアドレスであ
り、
前記第2のアドレスにより示される前記ストレージユニットに対して書き込み操作を完了した後に、前記ホストは、前記第2のアドレスにより示される前記ストレージユニット内のデータに対して操作を実行するように更に構成され、
前記第2のアドレスにより示される前記ストレージユニットは、前記ホストのプライベートメモリユニットである、システム。
【請求項2】
前記NVMeコントローラは、前記完了キューエントリ(CQE)をトリガするように更に構成され、前記CQEは、前記NVMeコントローラが前記読み取り命令により指定された読み取り操作を完了したことを示すために使用され、
前記第2のアドレスにより示される前記ストレージユニット内の前記データに対して前記操作を実行した後に、前記ホストは、前記CQEを取得するように更に構成される、請求項
1に記載のシステム。
【請求項3】
前記第2のアドレスにより示される前記ストレージユニット内の前記データに対して前記操作を実行した後に、前記ホストは、前記第2のアドレスにより示される前記ストレージユニットを解放するように更に構成される、請求項
1又は
2に記載のシステム。
【請求項4】
前記読み取り命令をトリガする前に、前記ホストは、前記第2のアドレスにより示される前記ストレージユニットを前記読み取り命令に割り当て、前記第1のアドレスと前記第2のアドレスとの間の対応関係を記録するように更に構成される、請求項1乃至
3のうちいずれか1項に記載のシステム。
【請求項5】
前記読み取り命令の前記読み取り対象のデータは、少なくとも2つのデータパケットに対応し、前記ホストは、少なくとも2つのストレージユニットを前記読み取り命令に割り当てる、請求項1乃至
4のうちいずれか1項に記載のシステム。
【請求項6】
前記ホストは、前記第1のアドレス及び前記読み取り対象のデータ内の前記第1のペイロードデータの順序に基づいて、前記第2のアドレスを決定するように構成される、請求項1乃至
5のうちいずれか1項に記載のシステム。
【請求項7】
前記NVMeコントローラは、第2のデータパケットを前記ホストに送信するように更に構成され、前記第2のデータパケットは、前記第1のアドレス及び第2のペイロードデータを搬送し、前記読み取り対象のデータは、前記第2のペイロードデータを含み、
前記ホストは、前記第2のデータパケットを受信し、前記第1のデータパケット及び前記第2のデータパケットを受信する順序に基づいて、前記読み取り対象のデータ内の前記第1のペイロードデータ及び前記第2のペイロードデータの順序を決定するように更に構成される、請求項1乃至
6のうちいずれか1項に記載のシステム。
【請求項8】
前記第1のデータパケットは、前記読み取り対象のデータ内の前記第1のペイロードデータのオフセットを更に搬送し、前記オフセットは、前記読み取り対象のデータ内の前記第1のペイロードデータの順序を示すために使用される、請求項1乃至
6のうちいずれか1項に記載のシステム。
【請求項9】
前記第1のアドレスは、前記NVMeコントローラによりアドレス指定可能なPCIeアドレスであり、前記第1のデータパケットは、PCIeパケットであり、前記第2のアドレスにより示される前記ストレージユニットは、前記ホストのメモリ空間である、請求項1乃至
8のうちいずれか1項に記載のシステム。
【請求項10】
NVMeベースのデータ読み取り方法であって、当該方法は、
ホストにより、読み取り命令をトリガするステップであり、前記読み取り命令は、指示情報を搬送し、前記指示情報は、第1のアドレスを示すために使用され、前記第1のアドレスは、NVMeコントローラによりアドレス指定可能なアドレスであり、前記第1のアドレスは、前記ホストにより前記NVMeコントローラに対して開放されたアドレスである、ステップと、
前記ホストにより、前記NVMeコントローラにより送信された第1のデータパケットを受信するステップであり、前記第1のデータパケットは、前記第1のアドレス及び第1のペイロードデータを搬送し、前記読み取り命令に対応する読み取り対象のデータは、前記第1のペイロードデータを含む、ステップと、
前記ホストにより、前記第1のアドレスに基づいて第2のアドレスを決定するステップであり、前記第2のアドレスは、前記ホストによりアドレス指定可能なアドレスである、ステップと、
前記ホストにより、前記NVMeコントローラによりトリガされた完了キューエントリ(CQE)を受信する前に、前記第1のペイロードデータを前記第2のアドレスにより示されるストレージユニットに書き込むステップと
を含
み、
前記ホストが前記第2のアドレスにより示される前記ストレージユニットに対して書き込み操作を完了した後に、当該方法は、
前記ホストにより、前記第2のアドレスにより示される前記ストレージユニット内のデータに対して操作を実行するステップを更に含み、
前記第2のアドレスにより示される前記ストレージユニットは、前記ホストのプライベートメモリユニットである、方法。
【請求項11】
前記ホストが前記第2のアドレスにより示される前記ストレージユニット内の前記データに対して前記操作を実行した後に、当該方法は、
前記ホストにより、前記NVMeコントローラによりトリガされた前記完了キューエントリ(CQE)を取得するステップであり、前記CQEは、前記NVMeコントローラが前記読み取り命令により指定された読み取り操作を完了したことを示すために使用される、ステップを更に含む、請求項
10に記載の方法。
【請求項12】
前記ホストが前記第2のアドレスにより示される前記ストレージユニット内の前記データに対して前記操作を実行した後に、当該方法は、
前記ホストにより、前記第2のアドレスにより示される前記ストレージユニットを解放するステップを更に含む、請求項
10又は
11に記載の方法。
【請求項13】
ホストにより、読み取り命令をトリガする前に、当該方法は、
前記ホストにより、前記第2のアドレスにより示される前記ストレージユニットを前記読み取り命令に割り当て、前記第1のアドレスと前記第2のアドレスとの間の対応関係を記録するステップを更に含む、請求項
10乃至
12のうちいずれか1項に記載の方法。
【請求項14】
前記読み取り命令の前記読み取り対象のデータは、少なくとも2つのデータパケットに対応し、前記ホストは、少なくとも2つのストレージユニットを前記読み取り命令に割り当てる、請求項
10乃至
13のうちいずれか1項に記載の方法。
【請求項15】
前記ホストは、前記第1のアドレス及び前記読み取り対象のデータ内の前記第1のペイロードデータの順序に基づいて、前記第2のアドレスを決定する、請求項
10乃至
14のうちいずれか1項に記載の方法。
【請求項16】
当該方法は、
前記ホストにより、前記NVMeコントローラにより送信された第2のデータパケットを受信するステップであり、前記第2のデータパケットは、前記第1のアドレス及び第2のペイロードデータを搬送し、前記読み取り命令に対応する前記読み取り対象のデータは、前記第2のペイロードデータを含む、ステップと、
前記ホストにより、前記第1のデータパケット及び前記第2のデータパケットを受信する順序に基づいて、前記読み取り対象のデータ内の前記第1のペイロードデータ及び前記第2のペイロードデータの順序を決定するステップと
を更に含む、請求項
10乃至
15のうちいずれか1項に記載の方法。
【請求項17】
前記第1のデータパケットは、前記読み取り対象のデータ内の前記第1のペイロードデータのオフセットを更に搬送し、前記オフセットは、前記読み取り対象のデータ内の前記第1のペイロードデータの順序を示すために使用される、請求項
10乃至
15のうちいずれか1項に記載の方法。
【請求項18】
前記第1のアドレスは、前記NVMeコントローラによりアドレス指定可能なPCIeアドレスであり、前記第1のデータパケットは、PCIeパケットであり、前記第2のアドレスにより示される前記ストレージユニットは、前記ホストのメモリ空間である、請求項
10乃至
17のうちいずれか1項に記載の方法。
【請求項19】
NVMeベースのデータ読み取り装置であって、当該装置は、
読み取り命令をトリガするように構成された処理ユニットであり、前記読み取り命令は、指示情報を搬送し、前記指示情報は、第1のアドレスを示すために使用され、前記第1のアドレスは、NVMeコントローラによりアドレス指定可能なアドレスであり、前記第1のアドレスは、ホストにより前記NVMeコントローラに対して開放されたアドレスである、処理ユニットと、
前記NVMeコントローラにより送信された第1のデータパケットを受信するように構成された受信ユニットであり、前記第1のデータパケットは、前記第1のアドレス及び第1のペイロードデータを搬送し、前記読み取り命令に対応する読み取り対象のデータは、前記第1のペイロードデータを含む、受信ユニットと
を含み、
前記処理ユニットは、前記第1のアドレスに基づいて第2のアドレスを決定し、前記NVMeコントローラによりトリガされた完了キューエントリ(CQE)を受信する前に、前記第1のペイロードデータを前記第2のアドレスにより示されるストレージユニットに書き込むように更に構成され、前記第2のアドレスは、前記処理ユニットによりアドレス指定可能なアドレスであ
り、
前記第2のアドレスにより示される前記ストレージユニットに対して書き込み操作を完了した後に、前記処理ユニットは、前記第2のアドレスにより示される前記ストレージユニット内のデータに対して操作を実行するように更に構成され、
前記第2のアドレスにより示される前記ストレージユニットは、前記ホストのプライベートメモリユニットである、装置。
【請求項20】
前記第2のアドレスにより示される前記ストレージユニット内の前記データに対して前記操作を実行した後に、前記処理ユニットは、前記NVMeコントローラによりトリガされた前記完了キューエントリ(CQE)を取得するように更に構成され、前記CQEは、前記NVMeコントローラが前記読み取り命令により指定された読み取り操作を完了したことを示すために使用される、請求項
19に記載の装置。
【請求項21】
前記第2のアドレスにより示される前記ストレージユニット内の前記データに対して前記操作を実行した後に、前記処理ユニットは、前記第2のアドレスにより示される前記ストレージユニットを解放するように更に構成される、請求項
19又は
20に記載の装置。
【請求項22】
前記読み取り命令をトリガする前に、前記処理ユニットは、前記第2のアドレスにより示される前記ストレージユニットを前記読み取り命令に割り当て、前記第1のアドレスと前記第2のアドレスとの間の対応関係を記録するように更に構成される、請求項
19乃至
21のうちいずれか1項に記載の装置。
【請求項23】
前記読み取り命令の前記読み取り対象のデータは、少なくとも2つのデータパケットに対応し、前記処理ユニットは、少なくとも2つのストレージユニットを前記読み取り命令に割り当てる、請求項
19乃至
22のうちいずれか1項に記載の装置。
【請求項24】
前記処理ユニットは、前記第1のアドレス及び前記読み取り対象のデータ内の前記第1のペイロードデータの順序に基づいて、前記第2のアドレスを決定するように構成される、請求項
19乃至
23のうちいずれか1項に記載の装置。
【請求項25】
前記受信ユニットは、前記NVMeコントローラにより送信された第2のデータパケットを受信するように更に構成され、前記第2のデータパケットは、前記第1のアドレス及び第2のペイロードデータを搬送し、前記読み取り命令に対応する前記読み取り対象のデータは、前記第2のペイロードデータを含み、
前記処理ユニットは、前記第1のデータパケット及び前記第2のデータパケットを受信する順序に基づいて、前記読み取り対象のデータ内の前記第1のペイロードデータ及び前記第2のペイロードデータの順序を決定するように更に構成される、請求項
19乃至
24のうちいずれか1項に記載の装置。
【請求項26】
前記第1のデータパケットは、前記読み取り対象のデータ内の前記第1のペイロードデータのオフセットを更に搬送し、前記オフセットは、前記読み取り対象のデータ内の前記第1のペイロードデータの順序を示すために使用される、請求項
19乃至
24のうちいずれか1項に記載の装置。
【請求項27】
前記第1のアドレスは、前記NVMeコントローラによりアドレス指定可能なPCIeアドレスであり、前記第1のデータパケットは、PCIeパケットであり、前記第2のアドレスにより示される前記ストレージユニットは、当該装置のメモリ空間である、請求項
19乃至
26のうちいずれか1項に記載の装置。
【請求項28】
実行可能命令を含む読み取り可能記憶媒体であって、
計算デバイスのプロセッサが前記実行可能命令を実行するとき、前記計算デバイスは、請求項
10乃至
18のうちいずれか1項に記載の方法を実行する、読み取り可能記憶媒体。
【請求項29】
プロセッサと、メモリと、バスとを含む計算デバイスであって、
前記メモリは、実行可能命令を記憶するように構成され、前記プロセッサ及び前記メモリは、前記バスを通じて接続され、当該計算デバイスが動作するとき、前記プロセッサは、前記メモリに記憶された前記実行可能命令を実行し、前記計算デバイスは、請求項
10乃至
18のうちいずれか1項に記載の方法を実行することが可能になる、計算デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
この出願は、ストレージ分野に関し、特に、不揮発性メモリエクスプレス(non-volatile memory express, NVMe)ベースのデータ読み取り方法、装置及びシステムに関する。
【背景技術】
【0002】
特にストレージ媒体としてフラッシュ(Flash)を使用したソリッドステートドライブ(solid state drive, SSD)におけるストレージ技術の開発によって、従来の機械式ハードディスクドライブのために設計されたシリアルアドバンスドテクノロジアタッチメント(serial advanced technology attachment, SATA)インタフェース及びシリアルATAアドバンスドホストコントローラインタフェース/アドバンスドホストコントローラインタフェース(Serial ATA Advanced Host Controller Interface, AHCI)のための標準はストレージデバイスの要件を満たすことができず、ストレージデバイスの処理能力を制限するボトルネックとなっている。その結果、不揮発性メモリエクスプレス(non-volatile memory express, NVMe)が出現している。NVMeは、ホスト(Host)と不揮発性メモリ(non-volatile memory, NVM)サブシステムとの間の通信を可能にするインタフェースである。NVMサブシステム(コントローラ及びストレージ媒体を含む)の通信を可能にするインタフェースは、レジスタインタフェースとして高速ペリフェラルコンポーネントインターコネクトエクスプレス(Peripheral Component Interconnect express, PCIe)インタフェースに取り付けられ、エンタープライズグレード及びコンシューマグレードのソリッドステートストレージを最適化し、高性能及び低アクセス遅延の利点を提供する。
【0003】
NVMeは、一対の機構、すなわち、発行キュー(英文フルネーム:submission queue, 略称SQ)及び完了キュー(英文フルネーム:completion queue, 略称CQ)に基づく。ホストは、コマンドを発行キューに配置する。コントローラは、完了情報を対応する完了キューに配置する。各発行キューエントリ(submission queue entry, SQE)はコマンドである。読み取り命令では、データ送信に使用されるメモリアドレスは、メタデータポインタ(英文フルネーム:Meta-data Pointer, 略称MPTR)及びデータポインタ(英文フルネーム:Data Pointer, 略称DPTR)を使用することにより指定される。読み取り命令を取得した後に、NVMeコントローラは、PCIe書き込み操作を実行することにより、読み取り対象のデータを、データ送信に使用されるメモリアドレスにより示されるストレージ空間に書き込む。
【発明の概要】
【0004】
この出願は、NVMeベースのデータ読み取り方法、装置及びシステムを開示する。ホストは、NVMeコントローラに対して開放されたポータルアドレスを使用することにより、NVMeコントローラにより送信されたデータパケットを受信し、対応するストレージユニットを、ホストのメモリ空間内のポータルアドレスに割り当てる。データパケットを受信した後に、ホストは、データパケットで搬送されたポータルアドレスに基づいて、ポータルアドレスに対応するストレージユニットのアドレスを決定し、データパケット内のペイロードデータを決定されたストレージユニットに書き込む。このように、ストレージユニットと通信プロトコルとの間の関係が壊される。これは、柔軟なデータ操作を実現する。
【0005】
第1の態様によれば、この出願は、NVMeベースのデータ読み取りシステムを開示し、当該システムは、ホストと、NVMeコントローラと、ストレージ媒体とを含む。ストレージ媒体は、ホストのデータを記憶するように構成され、ホストは、NVMeコントローラへの読み取り命令をトリガするように構成され、読み取り命令は、第1のアドレスを示すために使用される指示情報を搬送し、第1のアドレスは、NVMeコントローラによりアドレス指定可能なアドレスであり、読み取り命令を取得した後に、NVMeコントローラは、ストレージ媒体から、読み取り命令に対応する読み取り対象のデータを読み取り、第1のデータパケットをホストに送信するように構成され、第1のデータパケットは、第1のアドレス及び第1のペイロードデータを搬送し、第1のペイロードデータは、第1のデータパケットに属し、第1のデータパケットを受信した後に、ホストは、第1のアドレスに基づいて第2のアドレスを決定し、第1のペイロードデータを第2のアドレスにより示されるストレージユニットに書き込むように更に構成され、第2のアドレスは、ホストによりアドレス指定可能なアドレスである。
【0006】
読み取り命令は、具体的にはSQEでもよい。ホストにより読み取り命令をトリガする具体的なプロセスは、以下のものでもよい。ホストは、SQEをSQに書き込み、ドアベル機構を使用することによりNVMeコントローラに通知する。第1のアドレスは、アクセスのためにホストによりNVMeコントローラに対して開放されたアドレスである。しかし、第1のアドレスは、NVMeコントローラによりホストに書き込まれるペイロードデータのポータルアドレスとしてのみ使用され、第1のアドレスにより示されるストレージ空間は、実際にはペイロードデータを記憶しない。NVMeコントローラにより送信されたデータパケットを受信した後に、ホストは、ペイロードデータを第1のアドレスにより示されるストレージ空間に書き込まず、ホストによりアドレス指定可能なストレージ空間において、第1のアドレスに対応する第2のアドレスを割り当て、ペイロードデータを第2のアドレスにより示されるストレージユニットに書き込む。したがって、第2のアドレスにより示されるストレージユニットに対するホストの操作は、もはや、ホストとNVMeコントローラとの間の通信プロトコルにより制限されない。この出願では、読み取り操作遅延が短縮でき、読み取り対象のデータによりホストにより占有されるストレージ空間が低減できる。
【0007】
第1の態様に従って、第1の態様の第1の可能な実現方式では、第2のアドレスにより示されるストレージユニットに対して書き込み操作を完了した後に、ホストは、第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行するように更に構成される。ストレージユニットに対して書き込み操作を完了することは、ストレージユニットに関連する全てのデータをストレージユニットに書き込むことであり、例えば、具体的には、ストレージユニットを完全に書き込むこと、又はストレージユニットに関連する最後のペイロードデータをストレージユニットに書き込むことでもよい。データに対して操作を実行することは、ストレージユニット内のデータを他の主体に送信することでもよい。
【0008】
第2のアドレスにより示されるストレージ空間は、ホストのプライベートメモリでもよく、もはやPCIeアドレスを使用することによりNVMeコントローラによりアクセスされず、コマンドメモリバッファ(Command memory Buffer, CMB)ではないか、或いは、CMBとして使用されない。ホストが第1のアドレスと第2のアドレスとの間のマッピング関係に基づいて、ペイロードデータを、ホストによりアドレス指定可能な第2のアドレスにより示されるストレージユニットに記憶した後に、第2のアドレスと、ホストとNVMeコントローラとの間の通信プロトコルとの間の関係が壊される。第2のアドレスにより示されるストレージユニットに対して書き込み操作を完了した後に、ホストは、第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行し、読み取り命令により示される読み取り操作が完全に完了するまで待機する必要なく、読み取りデータに対して操作を実行してもよい。
【0009】
第1の態様の第1の可能な実現方式に従って、第1の態様の第2の可能な実現方式では、NVMeコントローラは、完了キューエントリ(completion queue entry, CQE)をトリガするように更に構成され、CQEは、NVMeコントローラが読み取り命令により指定された読み取り操作を完了したことを示すために使用される。第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行した後に、ホストは、完了キューエントリCQEを取得するように更に構成される。
【0010】
NVMeコントローラがCQEをトリガすることは、具体的には以下のものでもよい。読み取り操作を完了した後に、NVMeコントローラは、CQEをCQに書き込み、割り込み機構を使用することによりホストに通知する。既存のプロトコルに基づいて、読み取り命令をトリガする前に、ホストは、PCIeアドレス空間を読み取り命令に割り当てる必要がある。PCIeアドレスにより示されるストレージ空間は、読み取り対象のデータを記憶するために使用される。読み取り命令を完了する前に、ホストは、PCIeアドレス空間の所有権を失い、言い換えると、CQEを取得する前に、ホストはPCIeアドレスにより示されるストレージ空間にアクセスできず、それにより、読み取り操作遅延及びストレージ空間の浪費を引き起こす。第2のアドレスは、データパケットで搬送された第1のアドレスではなく、ホストによりアドレス指定可能な内部アドレスであるので、ホストは、CQEを取得する前に、第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行してもよい。
【0011】
第1の態様の上記の可能な実現方式のうちいずれか1つに従って、第1の態様の第3の可能な実現方式では、第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行した後に、ホストは、第2のアドレスにより示されるストレージユニットを解放するように更に構成される。
【0012】
ホストは、ホストの内部ストレージ空間をメモリプールに編成してもよい。メモリプールは、複数のストレージユニットを含む。ストレージユニット内のデータに対して操作を完了した後に、ホストは、他の読み取り操作の使用のために、ストレージユニットをメモリプールに解放し、全体の読み取り操作が完了するまで待機する必要なく、ストレージユニットを解放してもよく、それにより、ストレージユニットの占有時間を低減し、ストレージ空間の利用率を増加させる。
【0013】
第1の態様又は第1の態様の上記の可能な実現方式のうちいずれか1つに従って、第1の態様の第4の可能な実現方式では、読み取り命令をトリガする前に、ホストは、第2のアドレスにより示されるストレージユニットを読み取り命令に割り当て、第1のアドレスと第2のアドレスとの間の対応関係を記録するように更に構成される。
【0014】
ホストが、読み取り命令をトリガする前に、対応するストレージユニットを読み取り命令に割り当てる場合、ストレージ空間のオーバーフローが効果的に回避できる。ホストは、読み取り操作を効果的に調整及び制御するために、維持されているメモリプール内のアイドルのストレージユニットの量に基づいて、読み取り命令をトリガしてもよい。
【0015】
第1の態様又は第1の態様の上記の可能な実現方式のうちいずれか1つに従って、第1の態様の第5の可能な実現方式では、読み取り命令の読み取り対象のデータは、少なくとも2つのデータパケットに対応し、ホストは、少なくとも2つのストレージユニットを読み取り命令に割り当てる。
【0016】
データパケットで搬送できるペイロードデータのサイズに対する制限のため、読み取り対象のデータを送信するとき、NVMeコントローラは、読み取り対象のデータを複数に分割し、複数のデータパケットを使用することにより読み取り対象のデータを送信してもよい。ホストは、読み取り操作の規模に基づいて、対応する量の複数のストレージユニットを割り当ててもよい。
【0017】
第1の態様又は第1の態様の上記の可能な実現方式のうちいずれか1つに従って、第1の態様の第6の可能な実現方式では、ホストは、第1のアドレス及び読み取り対象のデータ内の第1のペイロードデータの順序に基づいて、第2のアドレスを決定するように構成される。
【0018】
ホストは、複数のストレージユニットを読み取り操作に割り当て、言い換えると、第1のアドレスは、複数のストレージユニットに対応する。第1のデータパケットを受信した後に、ホストは、第1のペイロードデータのための特定のストレージユニットを決定する必要がある。ホストは、読み取り操作に割り当てられた複数のストレージユニットに対して論理アドレス指定を実行し、読み取り対象のデータを複数のストレージユニットに順次書き込んでもよい。ホストは、読み取り対象のデータ内の第1のペイロードデータの順序に基づいて、第1のペイロードデータが書き込まれる必要があるストレージユニットを具体的に決定してもよい。
【0019】
第1の態様又は第1の態様の上記の可能な実現方式のうちいずれか1つに従って、第1の態様の第7の可能な実現方式では、NVMeコントローラは、第2のデータパケットをホストに送信するように更に構成され、第2のデータパケットは、第1のアドレス及び第2のペイロードデータを搬送し、読み取り対象のデータは、第2のペイロードデータを含む。ホストは、第2のデータパケットを受信し、第1のデータパケット及び第2のデータパケットを受信する順序に基づいて、読み取り対象のデータ内の第1のペイロードデータ及び第2のペイロードデータの順序を決定するように更に構成される。
【0020】
各データパケットで搬送できるペイロードデータのサイズに対する制限のため、NVMeコントローラは、送信のために読み取り対象のデータを複数のデータパケットに分割する必要がある。データパケットを受信した後に、ホストは、データパケットで搬送されたペイロードデータを再配列する必要がある。NVMeコントローラが読み取り対象のデータ内のペイロードデータの順序でデータパケットを送信するとき、厳密な順序保存が確保される場合、ホストは、データパケットを受信する順序に基づいてペイロードデータを配列してもよい。
【0021】
第1の態様又は第1の態様の上記の可能な実現方式のうちいずれか1つに従って、第1の態様の第8の可能な実現方式では、第1のデータパケットは、読み取り対象のデータ内の第1のペイロードデータのオフセットを更に搬送し、オフセットは、読み取り対象のデータ内の第1のペイロードデータの順序を示すために使用される。
【0022】
データパケットは、読み取り対象のデータ内のペイロードデータのオフセットを搬送し、それにより、NVMeコントローラは、帯域幅リソースをより広範囲に利用するように、データパケットの順序外れの送信を実現できる。
【0023】
第1の態様又は第1の態様の上記の可能な実現方式のうちいずれか1つに従って、第1の態様の第9の可能な実現方式では、第1のアドレスは、NVMeコントローラによりアドレス指定可能なPCIeアドレスであり、第1のデータパケットは、PCIeパケットであり、第2のアドレスにより示されるストレージユニットは、ホストのメモリ空間である。
【0024】
第2の態様によれば、この出願は、NVMeベースのデータ読み取り方法を開示する。当該方法は、ホストにより、読み取り命令をトリガするステップであり、読み取り命令は、指示情報を搬送し、指示情報は、第1のアドレスを示すために使用され、第1のアドレスは、NVMeコントローラによりアドレス指定可能なアドレスである、ステップと、ホストにより、NVMeコントローラにより送信された第1のデータパケットを受信するステップであり、第1のデータパケットは、第1のアドレス及び第1のペイロードデータを搬送する、ステップと、ホストにより、第1のアドレスに基づいて第2のアドレスを決定するステップであり、第2のアドレスは、ホストによりアドレス指定可能なアドレスである、ステップと、ホストにより、第1のペイロードデータを第2のアドレスにより示されるストレージユニットに書き込むステップとを含む。
【0025】
第2の態様に従って、第2の態様の第1の可能な実現方式では、ホストが第2のアドレスにより示されるストレージユニットに対して書き込み操作を完了した後に、当該方法は、ホストにより、第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行するステップを更に含む。
【0026】
第2の態様の第1の可能な実現方式に従って、第2の態様の第2の可能な実現方式では、ホストが第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行した後に、当該方法は、ホストにより、NVMeコントローラによりトリガされた完了キューエントリCQEを取得するステップであり、CQEは、NVMeコントローラが読み取り命令により指定された読み取り操作を完了したことを示すために使用される、ステップを更に含む。
【0027】
第2の態様の上記の可能な実現方式のうちいずれか1つに従って、第2の態様の第3の可能な実現方式では、ホストが第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行した後に、当該方法は、ホストにより、第2のアドレスにより示されるストレージユニットを解放するステップを更に含む。
【0028】
第2の態様又は第2の態様の上記の可能な実現方式のうちいずれか1つに従って、第2の態様の第4の可能な実現方式では、ホストにより、読み取り命令をトリガする前に、当該方法は、ホストにより、第2のアドレスにより示されるストレージユニットを読み取り命令に割り当て、第1のアドレスと第2のアドレスとの間の対応関係を記録するステップを更に含む。
【0029】
第2の態様又は第2の態様の上記の可能な実現方式のうちいずれか1つに従って、第2の態様の第5の可能な実現方式では、読み取り命令の読み取り対象のデータは、少なくとも2つのデータパケットに対応し、ホストは、少なくとも2つのストレージユニットを読み取り命令に割り当てる。
【0030】
第2の態様又は第2の態様の上記の可能な実現方式のうちいずれか1つに従って、第2の態様の第6の可能な実現方式では、ホストは、第1のアドレス及び読み取り対象のデータ内の第1のペイロードデータの順序に基づいて、第2のアドレスを決定する。
【0031】
第2の態様又は第2の態様の上記の可能な実現方式のうちいずれか1つに従って、第2の態様の第7の可能な実現方式では、当該方法は、ホストにより、NVMeコントローラにより送信された第2のデータパケットを受信するステップであり、第2のデータパケットは、第1のアドレス及び第2のペイロードデータを搬送する、ステップと、ホストにより、第1のデータパケット及び第2のデータパケットを受信する順序に基づいて、読み取り対象のデータ内の第1のペイロードデータ及び第2のペイロードデータの順序を決定するステップとを更に含む。
【0032】
第2の態様又は第2の態様の上記の可能な実現方式のうちいずれか1つに従って、第2の態様の第8の可能な実現方式では、第1のデータパケットは、読み取り対象のデータ内の第1のペイロードデータのオフセットを更に搬送し、オフセットは、読み取り対象のデータ内の第1のペイロードデータの順序を示すために使用される。
【0033】
第2の態様又は第2の態様の上記の可能な実現方式のうちいずれか1つに従って、第2の態様の第8の可能な実現方式では、第1のアドレスは、NVMeコントローラによりアドレス指定可能なPCIeアドレスであり、第1のデータパケットは、PCIeパケットであり、第2のアドレスにより示されるストレージユニットは、ホストのメモリ空間である。
【0034】
第2の態様は、第1の態様に対応する方法の実現方式であり、第1の態様又は第1の態様の可能な実現方式のうちいずれか1つにおける説明は、第2の態様又は第2の態様の可能な実現方式のうちいずれか1つに対応して適用可能である。詳細は、ここでは再び説明しない。
【0035】
第3の態様によれば、この出願は、実行可能命令を含む読み取り可能媒体を提供する。計算デバイスのプロセッサが実行可能命令を実行するとき、計算デバイスは、第2の態様又は第2の態様の可能な実現方式のうちいずれか1つによる方法を実行する。
【0036】
第4の態様によれば、この出願は、プロセッサと、メモリと、バスとを含む計算デバイスを提供する。メモリは、実行可能命令を記憶するように構成され、プロセッサは、バスを通じてメモリに接続される。計算デバイスが動作するとき、プロセッサは、メモリに記憶された実行可能命令を実行し、計算デバイスは、第2の態様又は第2の態様の可能な実現方式のうちいずれか1つによる方法を実行することが可能になる。
【0037】
第5の態様によれば、この出願は、NVMeベースのデータ読み取り装置を開示し、当該装置は、読み取り命令をトリガするように構成された処理ユニットであり、読み取り命令は、指示情報を搬送し、指示情報は、第1のアドレスを示すために使用され、第1のアドレスは、NVMeコントローラによりアドレス指定可能なアドレスである、処理ユニットと、NVMeコントローラにより送信された第1のデータパケットを受信するように構成された受信ユニットであり、第1のデータパケットは、第1のアドレス及び第1のペイロードデータを搬送する、受信ユニットとを含む。処理ユニットは、第1のアドレスに基づいて第2のアドレスを決定し、第1のペイロードデータを第2のアドレスにより示されるストレージユニットに書き込むように更に構成され、第2のアドレスは、処理ユニットによりアドレス指定可能なアドレスである。
【0038】
第5の態様に従って、第5の態様の第1の可能な実現方式では、第2のアドレスにより示されるストレージユニットに対して書き込み操作を完了した後に、処理ユニットは、第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行するように更に構成される。
【0039】
第5の態様の第1の可能な実現方式に従って、第5の態様の第2の可能な実現方式では、第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行した後に、処理ユニットは、NVMeコントローラによりトリガされた完了キューエントリCQEを取得するように更に構成され、CQEは、NVMeコントローラが読み取り命令により指定された読み取り操作を完了したことを示すために使用される。
【0040】
第5の態様の上記の可能な実現方式のうちいずれか1つに従って、第5の態様の第3の可能な実現方式では、第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行した後に、処理ユニットは、第2のアドレスにより示されるストレージユニットを解放するように更に構成される。
【0041】
第5の態様又は第5の態様の上記の可能な実現方式のうちいずれか1つに従って、第5の態様の第4の可能な実現方式では、読み取り命令をトリガする前に、処理ユニットは、第2のアドレスにより示されるストレージユニットを読み取り命令に割り当て、第1のアドレスと第2のアドレスとの間の対応関係を記録するように更に構成される。
【0042】
第5の態様又は第5の態様の上記の可能な実現方式のうちいずれか1つに従って、第5の態様の第5の可能な実現方式では、読み取り命令の読み取り対象のデータは、少なくとも2つのデータパケットに対応し、処理ユニットは、少なくとも2つのストレージユニットを読み取り命令に割り当てる。
【0043】
第5の態様又は第5の態様の上記の可能な実現方式のうちいずれか1つに従って、第5の態様の第6の可能な実現方式では、処理ユニットは、第1のアドレス及び読み取り対象のデータ内の第1のペイロードデータの順序に基づいて、第2のアドレスを決定するように構成される。
【0044】
第5の態様又は第5の態様の上記の可能な実現方式のうちいずれか1つに従って、第5の態様の第7の可能な実現方式では、受信ユニットは、NVMeコントローラにより送信された第2のデータパケットを受信するように更に構成され、第2のデータパケットは、第1のアドレス及び第2のペイロードデータを搬送し、処理ユニットは、第1のデータパケット及び第2のデータパケットを受信する順序に基づいて、読み取り対象のデータ内の第1のペイロードデータ及び第2のペイロードデータの順序を決定するように更に構成される。
【0045】
第5の態様又は第5の態様の上記の可能な実現方式のうちいずれか1つに従って、第5の態様の第8の可能な実現方式では、第1のデータパケットは、読み取り対象のデータ内の第1のペイロードデータのオフセットを更に搬送し、オフセットは、読み取り対象のデータ内の第1のペイロードデータの順序を示すために使用される。
【0046】
第5の態様又は第5の態様の上記の可能な実現方式のうちいずれか1つに従って、第1のアドレスは、NVMeコントローラによりアドレス指定可能なPCIeアドレスであり、第1のデータパケットは、PCIeパケットであり、第2のアドレスにより示されるストレージユニットは、当該装置のメモリ空間である。
【0047】
第5の態様は、第1の態様に対応する装置の実現方式であり、第1の態様又は第1の態様の可能な実現方式のうちいずれか1つにおける説明は、第5の態様又は第5の態様の可能な実現方式のうちいずれか1つに対応して適用可能である。詳細は、ここでは再び説明しない。
【0048】
この出願において開示される技術的解決策によれば、ホストは、データポータルアドレスとしてNVMeコントローラに対して第1のアドレスを開放し、それにより、NVMeコントローラは、第1のアドレスを使用することにより、読み取り対象のデータをホストに書き込む。NVMeコントローラにより送信されたデータパケットで搬送された宛先アドレスは、第1のアドレスである。データパケットを受信した後に、ホストは、データパケット内のペイロードデータを、第1のアドレスにより示されるストレージ空間に真に書き込むのではなく、第1のアドレスを第2のアドレスにマッピングし、データパケット内のペイロードデータを、第2のアドレスにより示されるストレージ空間に書き込む。第2のアドレスにより示されるストレージ空間は、ホストのプライベートメモリ空間でもよく、それにより、ペイロードデータを記憶するためのストレージ空間と通信プロトコルとの間の関係が壊され、ホストは、通信プロトコルにより制限されることなく、第2のアドレスにアクセスする。読み取り命令が完了する前に、ホストは、第2のアドレスにより示されるストレージ空間に記憶されたデータを使用し、他の読み取り操作の使用のために、第2のアドレスにより示されるストレージ空間を早期に解放してもよい。この出願において開示される技術的解決策によれば、読み取り操作遅延が短縮でき、読み取り対象のデータを記憶するために使用されるストレージ空間が低減できる。
【図面の簡単な説明】
【0049】
【
図1】この出願の実施形態によるNVMeシステムの論理構造の概略図である。
【
図2】NVMe標準ベースのデータ読み取り方法のシグナリング図である。
【
図3】この出願の実施形態によるホストのハードウェア構造の概略図である。
【
図4】この出願の実施形態による
NVMeベースのデータ読み取り方法の概略フローチャートである。
【
図5】本発明の実施形態によるポータルの編成構造の概略図である。
【
図6】本発明の実施形態によるポータルの編成構造の概略図である。
【
図7】本発明の実施形態によるPCIeアドレス構造の概略図である。
【
図8A】本発明の実施形態によるアドレスマッピング関係の概略図である。
【
図8B】本発明の実施形態によるアドレスマッピング関係の概略図である。
【
図9A】本発明の実施形態によるデータパケット送信の概略図である。
【
図9B】本発明の実施形態によるデータパケット送信の概略図である。
【
図10】本発明の実施形態によるNVMeベースのデータ読み取り方法のシグナリング図である。
【
図11(a)】この出願の実施形態によるNVMeシステムの論理構造の概略図である。
【
図11(b)】この出願の実施形態によるNVMeシステムの論理構造の概略図である。
【
図12】この出願の実施形態による計算デバイスの論理構造の概略図である。
【発明を実施するための形態】
【0050】
以下に、添付の図面を参照して、本発明の実施形態について説明する。
【0051】
本発明の実施形態では、「第1」及び「第2」のような用語は、第1のアドレス及び第2のアドレスのようなオブジェクトの間を区別するために使用されるが、「第1」と「第2」との間には論理的又は時間順序の依存関係は存在しない。
【0052】
本発明の実施形態では、「データパケット」は、NVMeコントローラによりホストに送信され且つペイロードデータを搬送するデータパケットである。ここでのペイロードデータは、ユーザデータ又はユーザデータのメタデータでもよく、ペイロードデータのタイプは、本発明の実施形態では限定されない。以下の説明では、特に断りのない限り、本発明の実施形態では、「データ」という語又は「ペイロードデータ」という語句がデータパケットで搬送される様々なタイプのデータを表すために使用される。本発明の実施形態では、データパケットはPCIeパケットでもよい。
【0053】
本発明の実施形態では、ポータルは、ホストによりNVMeコントローラに対して開放されるアドレス空間であり、ポータルアドレスは具体的にはPCIeアドレスでもよく、データパケットはPCIe書き込みパケットでもよい。NVMeコントローラは、ポータルを通じてデータパケットをホストに送信し、データパケットはポータルアドレスを搬送する。データパケットを受信した後に、ホストは、ポータルアドレスを識別し、対応するストレージ空間をローカル内部メモリ内のポータルに割り当て、ペイロードデータをポータルアドレスにより示されるストレージ空間に書き込む代わりに、キャッシュのために、データパケットで搬送されたペイロードデータを割り当てられたストレージ空間に書き込む。内部メモリは、具体的にはホストのプライベートメモリ空間でもよい。
【0054】
本発明の実施形態では、読み取り操作は、NVMeコマンドセットにおいて、ホストによりNVMeコントローラからデータを読み取るいずれかの操作でもよい。読み取り操作を示すための命令は読み取り命令である。読み取り命令の具体的な実現方式は、発行キューエントリでもよい。
【0055】
本発明の実施形態では、コマンドイニシエータ及びデータイニシエータは、同じ主体又は分離した主体でもよい。コマンドイニシエータは、NVMeコントローラへの命令を直接トリガするシステム主体であり、また、本発明の実施形態ではコマンドソースとも呼ばれる。データイニシエータは、データを読み取ってデータを消費するシステム主体、すなわち、データアクセス要求を開始するために使用されるシステム主体であり、また、本発明の実施形態ではデータソースとも呼ばれる。コマンドソース及びデータソースが分離しているシナリオにおいて、データソースは、コマンドソースを使用することによりデータを読み取る必要がある。本発明の実施形態では、「ホスト」という語は、データソース及びコマンドソースが分離しているシナリオにおいてコマンドソースを示してもよく、或いは、データソース及びコマンドソースが分離していないシナリオにおいてNVMeコントローラと通信する計算デバイスを示してもよい。
【0056】
従来の方式では、ホストがNVMe読み取り操作を実行するとき、読み取り対象のデータを記憶するために使用されるストレージ空間のアドレス情報は、DPTR又はMPTRを使用することにより、トリガされたSQEで搬送され、NVMeコントローラは、SQEに基づいて、読み取り対象のデータを、アドレス情報により示されるストレージ空間に書き込む。ホストによりSQEを発行することから、読み取り操作が完了したことを示すためにNVMeコントローラにより使用される完了キューエントリをホストにより取得するまでの期間に、ホストは、読み取り対象のデータを記憶するために使用さるストレージ空間の所有権を失う。言い換えると、ホストは、読み取り操作が完全に完了するまで待機する必要があり、次いで、ストレージ空間に記憶されたデータにアクセスできる。
【0057】
図1は、本発明の実施形態によるNVMeシステム100のアーキテクチャ図である。
図1に示すように、システム100内のデータソース101及びコマンドソース103は、同じ主体ではなく、分離しており、ネットワーク102を通じて相互接続される。コマンドソース103は、PCIeバスを通じてNVMeコントローラ105に接続されてもよく、NVMeコントローラ105は、ストレージ媒体106に接続される。
【0058】
本発明のこの実施形態では、ストレージ媒体106はまた、通常では、外部メモリとも呼ばれ、一般的には不揮発性ストレージ媒体であり、データを永続的に記憶するように構成されてもよい。ストレージ媒体106は、磁気媒体(例えば、フロッピーディスク、ハードディスク又は磁気テープ)、光媒体(例えば、コンパクトディスク)、半導体媒体(例えば、フラッシュ(Flash)メモリ)等でもよい。ストレージ媒体106の具体的な実現方式は、本発明のこの実施形態では限定されない。いくつかの実施形態では、ストレージ媒体106は、NVMeコントローラ105から分離した遠隔メモリ、例えば、ネットワークを通じてNVMeコントローラ105に接続されたネットワークストレージ媒体を更に含んでもよい。
【0059】
本発明のこの実施形態では、ネットワーク102は、データソース101とコマンドソース103との間のいずれかの相互接続方式又は相互接続プロトコル等を示すために使用されてもよく、例えば、PCIeバス、コンピュータデバイスの内部相互接続バス、インターネット、イントラネット(英文:intranet)、ローカルエリアネットワーク(英文フルネーム:local area network, 略称LAN)、広域ネットワーク(英文フルネーム:wide area network, 略称WAN)又はストレージエリアネットワーク(英文フルネーム:storage area network, 略称SAN)又は上記のネットワークのいずれかの組み合わせでもよい。
【0060】
システム100において、データソース101は、コマンドソース103を使用することによりNVMeコントローラ105と通信する必要がある。従来の方式では、コマンドソース103によりトリガされた読み取り命令は、読み取り対象のデータを記憶するために使用されるストレージ空間のアドレス情報を搬送する必要がある。読み取り操作が実行されるとき、読み取り対象のデータは、まず、NVMeコントローラ105により制御されるストレージ媒体106からコマンドソース103に完全に転送される必要がある。読み取り操作が完了したことを示すCQEを取得した後に、コマンドソース103は、データをデータソース101に送信してもよい。
【0061】
具体的には、
図2に示すように、従来の方式に基づいて、データソースがストレージ媒体からデータを読み取る必要があるとき、データソースは、まず、読み取り要求をコマンドソースに送信する。コマンドソースは、データソースから受信した読み取り要求に基づいて、SQEを発行キュー(英文フルネーム:submission queue, 略称SQ)に書き込み、SQEのDPTRフィールド又はMPTRフィールドを使用することにより、読み取り対象のデータを受信するために使用されるアドレス情報を搬送する。次いで、コマンドソースは、ドアベル機構を使用することにより、新たなSQEが存在することをNVMeコントローラに通知する。ドアベルを受信した後に、NVMeコントローラは、SQからSQEを読み取り、SQEで搬送されたアドレス情報に基づいてPCIe書き込み命令を使用することにより、読み取り対象のデータを、アドレス情報により示されるストレージ空間に完全に書き込む。読み取り操作が完了した後に、NVMeコントローラは、CQEを完了キュー(英文フルネーム:completion queue, 略称CQ)に書き込み、割り込み機構を使用することによりコマンドソースに通知する。コマンドソースは、CQEを取得するために割り込み
信号を処理し、読み取り対象のデータをデータソースに送信する。
【0062】
読み取り命令を開始する前に、コマンドソースが読み取り対象のデータを受信するために使用されるストレージ空間を予約する必要があり、CQEを取得する前にストレージ空間のこの部分の所有権を失うことが、
図2から習得できる。言い換えると、コマンドソースは、読み取り対象のデータがストレージ空間に完全に書き込まれるまで待機する必要があり、次いで、データをデータソースに送信できる。このプロセスの遅延は、読み取り対象のデータのサイズに正比例する。さらに、コマンドソースは、読み取り対象のデータを記憶するためにNVMeコントローラによりアドレス指定可能な大量のメモリ空間を必要とし、メモリ空間のこの部分は、コマンドソースによりメモリを読み取り対象のデータに割り当てることから、NVMeコントロー
ラにより解放されたメモリをコマンドソースにより取得するまでの期間に常に占有される。
【0063】
図3は、この出願の実施形態によるホスト300の概略構造図である。
【0064】
図3に示すように、ホスト300は、プロセッサ301を含む。プロセッサ301は、システムメモリ302に接続される。プロセッサ301は、中央処理装置(CPU)、グラフィックス処理装置(英文:graphics processing unit, GPU)、フィールドプログラマブルゲートアレイ(英文フルネーム:Field Programmable Gate Array, 略称FPGA)、特定用途向け集積回路(英文フルネーム:Application
-Specific Integrated Circuit, 略称ASIC)若しくはデジタルシグナルプロセッサ(英文:digital signal processor, DSP)のような計算ロジック又は上記の計算ロジックのいずれかの組み合わせでもよい。プロセッサ301は、シングルコアプロセッサ又はマルチコアプロセッサでもよい。
【0065】
本発明のこの実施形態では、プロセッサ301は、レジスタを更に含んでもよい。レジスタのアドレス情報は、PCIeアドレスとしてNVMeコントローラに対して開放されてもよい。
【0066】
この出願の実施形態では、プロセッサ301は、読み取り操作ロジック310を更に含んでもよく、読み取り操作ロジック310は、プロセッサ301に統合された特定のハードウェア回路又はファームウェアモジュールでもよい。読み取り操作ロジック310が特定のハードウェア回路である場合、読み取り操作ロジック310は、この出願の実施形態における方法を実行する。読み取り操作ロジック310がファームウェアモジュールである場合、プロセッサ301は、この出願の実施形態における技術的解決策を実現するために、読み取り操作ロジック310内のファームウェアコードを実行する。読み取り操作ロジック310は、(1)読み取り命令をトリガするように構成されたロジック(回路/ファームウェアコード)であり、読み取り命令は、指示情報を搬送し、指示情報は、NVMeコントローラによりアドレス指定可能な第1のアドレスを示すために使用される、ロジックと、(2)NVMeコントローラにより送信されたデータパケットを受信するように構成されたロジック(回路/ファームウェアコード)であり、データパケットは、第1のアドレス及びペイロードデータを搬送する、ロジックと、(3)第1のアドレスに基づいて、ホスト300によりアドレス指定可能な第2のアドレスを決定するように構成されたロジック(回路/ファームウェアコード)と、(4)ペイロードデータを第2のアドレスにより示されるストレージユニットに書き込むように構成されたロジック(回路/ファームウェアコード)とを含む。
【0067】
バス309は、ホスト300のコンポーネントの間で情報を送信するように構成され、有線接続方式又は無線接続方式を使用してもよい。これは、この出願では限定されない。バス309は、入力/出力インタフェース305及び通信インタフェース303に更に接続される。
【0068】
入力/出力インタフェース305は、入力/出力デバイスに接続され、入力情報を受信し、操作結果を出力するように構成される。入力/出力デバイスは、マウス、キーボード、ディスプレイ、CD-ROMドライブ等でもよい。
【0069】
通信インタフェース303は、他のデバイス又はネットワークとの通信を実現するように構成され、他のデバイス又はネットワークに有線又は無線で接続されてもよい。例えば、ホスト300は、通信インタフェース303を通じてNVMeコントローラに接続されてもよい。ホスト300は、通信インタフェース303を通じてネットワークに更に接続され、ネットワークを通じてNVMeコントローラに接続されてもよい。
【0070】
この出願の実施形態のいくつかの特徴は、システムメモリ302内のソフトウェアコードを実行することにより、プロセッサ301により実現/サポートされてもよい。システムメモリ302は、いくつかのソフトウェア、例えば、オペレーティングシステム308(例えば、Darwin、RTXC、LINUX、UNIX、OS X、WINDOWS、mac OS又は組み込みオペレーティングシステム(例えば、Vxworks))、アプリケーションプログラム307及び読み取り操作モジュール306を含んでもよい。
【0071】
この出願の実施形態では、プロセッサ301は、この出願の実施形態における技術的解決策を実現するために、読み取り操作モジュール306を実行する。読み取り操作モジュール306は、(1)読み取り命令をトリガするために使用されるコードであり、読み取り命令は、指示情報を搬送し、指示情報は、NVMeコントローラによりアドレス指定可能な第1のアドレスを示すために使用される、コードと、(2)NVMeコントローラにより送信されたデータパケットを受信するために使用されるコードであり、データパケットは、第1のアドレス及びペイロードデータを搬送する、コードと、(3)第1のアドレスに基づいて、ホスト300によりアドレス指定可能な第2のアドレスを決定するために使用されるコードと、(4)ペイロードデータを第2のアドレスにより示されるストレージユニットに書き込むために使用されるコードとを含む。
【0072】
さらに、
図3は、ホスト300の単なる例を示している。ホスト300は、
図3に示すものよりも多い或いは少ないコンポーネントを含んでもよく、或いは、異なるコンポーネント構成方式を有してもよい。さらに、
図3に示す様々なコンポーネントは、ハードウェア、ソフトウェア又はハードウェアとソフトウェアとの組み合わせにより実現されてもよい。
【0073】
読み取り命令遅延を短縮し、読み取り操作により占有されるメモリ空間を低減するために、本発明の実施形態は、NVMeベースのデータ読み取り方法を提供する。
図4に示すように、当該方法400は、以下のステップを含む。
【0074】
ステップ401:ホストは、読み取り命令をトリガし、読み取り命令は、指示情報を搬送し、指示情報は、NVMeコントローラによりアドレス指定可能な第1のアドレスを示すために使用される。
【0075】
本発明のこの実施形態では、読み取り命令は、具体的にはSQEでもよい。以下の説明では、SQEが説明のために読み取り命令の例として使用される。しかし、本発明のこの実施形態では、第1の読み取り命令の具体的な実現方式は限定されないことが理解されるべきである。
【0076】
ホストによりNVMeコントローラへの読み取り命令をトリガするプロセスについては、NVMe標準を参照する。具体的には、ホストは、SQEをSQに書き込み、ドアベル機構を使用することにより新たなSQEが存在することをNVMeコントローラに通知する。NVMeコントローラは、ドアベル機構に基づいてSQからSQEを取得する。本発明のこの実施形態では、ホストは、SQEをNVMeコントローラに更に直接プッシュしてもよい。ホストによりNVMeコントローラへの読み取り命令をトリガする具体的なプロセスは、本発明のこの実施形態では限定されない。
【0077】
本発明のこの実施形態では、ホストは、ホストのストレージ空間の一部をNVMeコントローラに対して開放してもよい。より具体的には、ホストは、ホストのストレージ空間の一部をPCIeストレージ空間としてNVMeコントローラに開放してもよく、NVMeコントローラは、PCIeアドレスに基づいてストレージ空間の一部にアクセスしてもよい。ベースアドレスレジスタ(Base Address Register, BAR)が説明のために例として使用される。ホストは、PCIeストレージ空間としてBARをNVMeコントローラに開放し、BARのPCIeアドレスの一部を複数のポータル(portal)に編成する。各ポータルは、NVMeコントローラによりアドレス指定可能な特定のPCIeアドレス空間を占有し、ポータルアドレスは、ポータルの最初のPCIeアドレスでもよい。ホストによりトリガされた読み取り命令で搬送される指示情報は、特定のポータルを示すために使用されてもよく、第1のアドレスは、ポータルアドレス又はポータルアドレスのいくつかのフィールドでもよい。ポータルは、NVMeコントローラがホストに対してPCIe書き込み操作を実行するデータポータルである。以下の説明では、ポータルの機能についてより詳細に説明する。各ポータルが特定の読み取り操作に一意に対応するという条件で、PCIeアドレス空間内のポータルを編成する方式は、本発明では限定されない。
【0078】
本発明のこの実施形態では、ホストは、ホストのベースアドレスレジスタのPCIeアドレスの一部をアパーチャ(aperture)に編成してもよく、各アパーチャは複数のポータル(portal)を含む。具体的には、ポータルはアレイの形式で編成されてもよく、ポータルはアレイベースアドレスにポータルオフセットを加えたものに基づいてアドレス指定される。アレイは、アパーチャと呼ばれる。
図5は、ベースアドレスレジスタの概略構造図である。各アパーチャは、ポータルP0~PNのグループを含み、各ポータルは、特定の読み取り操作に一意に関連付けられる。「一意」は、ホストがいつでも1つの特定のポータルに関連付けられる1つのNVMe読み取り操作のみを開始できることを意味する。
【0079】
より具体的には、
図6に示すように、本発明のこの実施形態では、アパーチャは、メタデータアパーチャとデータアパーチャとに分類されてもよい。NVMeコントローラは、データアパーチャに含まれるポータルDP0~DPNを通じてPCIe書き込み操作を実行することによりデータをホストに書き込み、メタデータアパーチャに含まれるポータルMP0~MPNを通じてメタデータをホストに書き込む。説明を容易にするために、以下の説明では、特に断りのない限り、メタデータ及びデータは、本発明の実施形態においてまとめてデータと呼ばれる。
【0080】
図7は、本発明の実施形態によるPCIeデータパケット内のPCIeアドレス構造を示す。
図7に示すように、PCIeアドレス構造は、BARベースアドレスと、アパーチャオフセットと、ポータルオフセットとを含む。BAR及びアパーチャオフセットは、アパーチャを一意に決定するために使用され、ポータルオフセットは、アパーチャ内の特定のポータルを示すために使用される。
【0081】
本発明のこの実施形態では、ポータルは、PCIeアドレス空間内に更にランダムに分散してもよく、PCIe空間内にランダムに分散したポータルは、いずれかの「データポータル」及び「メタデータポータル」と呼ばれる。
【0082】
本発明のこの実施形態では、指示情報は、特定のポータルを示すために使用され、NVMeコントローラは、指示情報に基づいてポータルを一意に決定してもよい。指示情報の具体的な形式は、本発明では限定されない。
【0083】
本発明のこの実施形態では、指示情報は明示的なアドレスでもよく、指示情報は、ポータルの特定のPCIeアドレス又はポータルアドレスのいくつかのフィールドでもよく、具体的には、指示情報は、第1のアドレス又は第1のアドレスのいくつかのフィールドでもよい。例えば、ポータルがアレイに編成される場合、指示情報は、ポータルのポータルオフセットでもよく、BARベースアドレス及びアパーチャオフセットは、NVMeコントローラが取得するホストの構成情報として使用されてもよい。NVMeコントローラは、指示情報に基づいてポータルの完全なPCIeアドレスを決定してもよい。この場合、SQEのフォーマットは、NVMe標準で指定されているフォーマットと一致してもよい。
【0084】
本発明のこの実施形態では、指示情報は、代替として、暗示的なアドレスでもよい。例えば、SQ内の各SQEが一意のコマンド識別子CIDを有する場合、指示情報は「キューID+CID」を含んでもよい。NVMeコントローラにより処理される各SQEのCIDが一意である場合、指示情報は、対応するSQEで搬送されるCIDでもよい。他の実現方式では、指示情報は、代替として、CIDの一部でもよい。本発明のこの実施形態では、指示情報は、代替として、特に定義されたMPTR、PRT又はSQE内の他のフィールドを使用することにより指定されてもよい。本発明のこの実施形態では、指示情報の具体的な実現方式は限定されない。NVMeコントローラは、指示情報とポータルアドレスとの間のマッピング関係を維持し、マッピング関係及び指示情報に基づいてポータルアドレスを一意に決定してもよい。例えば、指示識別子は、SQEのCIDであり、システムCIDの符号化方式は、ポータルオフセットのアドレス指定方式と同じである。CIDは、ポータルオフセットと1対1の対応関係にある。BARベースアドレス及びアパーチャオフセットは、NVMeコントローラが取得するホストの構成情報として使用されてもよく、NVMeコントローラは、指示情報とポータルアドレスとの間のマッピング関係に基づいてデータパケットの第1のアドレスを決定してもよい。
【0085】
NVMeコントローラが指示情報に基づいて第1のアドレスを決定できるという条件で、本発明のこの実施形態では、指示情報の具体的な実現方式は限定されない。第1のアドレスは読み取り操作に対応するポータルを示すために使用され、具体的にはポータルアドレス又はポータルアドレスのいくつかのフィールドである。
【0086】
ステップ402:ホストは、NVMeコントローラにより送信された第1のデータパケットを受信し、第1のデータパケットは、第1のアドレス及び第1のペイロードデータを搬送する。
【0087】
本発明のこの実施形態では、データパケットはPCIe書き込み操作パケットでもよい。より具体的には、データパケットはトランザクションレイヤパケット(transaction layer packet, TLP)でもよく、ペイロードデータはTLPで搬送されるペイロード(payload)でもよく、第1のアドレスは、TLP内のPCIeアドレス又はTLP内のPCIeアドレスの一部でもよい。
【0088】
NVMeコントローラは、指示情報と第1のアドレスとの間のマッピング関係を維持する。第1のアドレスは、具体的には、読み取り操作に対応するポータルアドレスでもよい。読み取り命令を取得した後に、NVMeコントローラは、指示情報の具体的な実現方式に基づいて第1のアドレスを決定し、読み取り命令に基づいてストレージ媒体からデータを読み取り、第1のアドレス及び読み取られたデータに基づいてTLPをカプセル化し、TLPをホストに送信する。
【0089】
ステップ403:ホストは、第1のアドレスに基づいて、ホストによりアドレス指定可能な第2のアドレスを決定する。
【0090】
第1のアドレスは、PCIeの書き込み操作のポータルを示すために使用される。NVMeコントローラは、ポータルを通じて読み取り操作のデータをホストに書き込む。「ポータル」は、ホストのPCIeアドレス空間の範囲を表す。NVMeコントローラにより送信されたデータパケットをポータルから受信した後に、ホストは、第1のアドレスを取得するためにデータパケットを解析する。しかし、ホストは、ペイロードデータを記憶するために第1のアドレスにより示されるストレージ空間を使用しないが、第1のアドレス及び予め設定された対応関係に基づいてホストの内部メモリにおいて、ペイロードデータを実際に記憶するために使用されるストレージユニットの第2のアドレスを決定する。
【0091】
第2のアドレスにより示されるストレージユニットは、ホストの内部メモリ空間でもよく、PCIeアドレスを使用することにより提示されない。言い換えると、ペイロードデータを記憶するためにホストにより使用される内部メモリは、もはやPCIeアドレス指定方式でホストによりアクセスされなくてもよく、コマンドメモリバッファ(Command memory Buffer, CMB)ではないか、或いは、CMBとして使用されない。第2のアドレスにより示されるストレージユニットは、データのための読み取りバッファとして機能してもよい。
【0092】
第1のアドレスは、特定の「ポータル」を示すために使用される。ポータルからデータパケットを受信した後に、ホストは、第1のアドレスを第2のアドレスにマッピングする。具体的には、ホストは、メモリマッピングテーブルMTTを使用することにより、第1のアドレスを第2のアドレスにマッピングしてもよい。ホストは、各ポータルについて1つのMTTエントリを維持してもよく、各エントリは、ポータルを対応するストレージユニットに関連付けてもよい。ストレージユニットは、固定サイズのストレージ空間でもよい。以下の説明では、ストレージユニットはまた、読み取りページとも呼ばれる。読み取り命令をトリガする前に、ホストは、第2のアドレスにより示されるストレージユニットを読み取り命令に割り当て、MTTエントリを使用することにより第1のアドレスと第2のアドレスとの間の対応関係を記録する。
【0093】
本発明のこの実施形態では、ポータルは、読み取り操作と1対1の対応関係にある。1つの読み取り操作において、読み取り対象のデータのサイズに基づいて、読み取り命令の読み取り対象のデータは、少なくとも2つのデータパケットに対応してもよく、ホストはまた、少なくとも2つのストレージユニットを読み取り命令に割り当ててもよい。
【0094】
読み取りページのサイズは、本発明では限定されないが、NVMeコントローラの読み取りメモリブロックは、整数個の読み取りページを含むことが推奨される。ストレージ媒体からデータを読み取った後に、NVMeコントローラは、検査及び誤り訂正のためにデータを誤り訂正バッファに配置し、次いで、誤り訂正後に取得されたデータを「ポータル」に書き込む。誤り訂正バッファはまた、読み取りメモリブロックとも呼ばれる。
【0095】
本発明の実施形態では、ホストは、ホストのメモリを読み取りページプールに編成してもよい。読み取り操作を開始する前に、ホストは、読み取りページプールにおいて、読み取り操作により必要とされる読み取りページの量を割り当て、読み取り操作に対応するポータルのMTTエントリを初期化する。MTTエントリは、ポータルアドレスと読み取りページアドレスとの間の対応関係を記録する。
図8A及び
図8Bは、本発明の実施形態による
MTTエントリの概略図である。MTTエントリは、ポータルと読み取りページとの間の対応関係を記録する。図面に示すように、ポータルXに対応する読み取りページは、読み取りページ1、読み取りページ7及び読み取りページ4である。ポータルYに対応する読み取りページは、読み取りページ2、読み取りページ13、読み取りページ8及び読み取りページ0である。
【0096】
本発明のこの実施形態では、読み取りページは固定サイズのストレージ空間である。読み取りページのサイズは、読み取り対象のデータのサイズよりも小さくてもよい。したがって、読み取り操作は1つより多くの読み取りページを必要としてもよい。割り当て中に、ホストは、少なくとも2つの読み取りページを読み取り命令に割り当ててもよい。ホストが複数の読み取りページを読み取り操作に割り当ててもよい場合、第2のアドレスは、読み取りページのうち1つを示す。ホストは、第1のアドレス及び読み取り対象のデータ内のペイロードデータの順序に基づいて、第2のアドレスを決定してもよい。
【0097】
ホストにより読み取り対象のデータ内のペイロードデータの順序を決定する方式は、本発明のこの実施形態では限定されない。NVMeコントローラがPCIe書き込み操作を実行するときに順序保存が確保される場合、ホストは、データパケットを受信する順序に基づいて、読み取り対象のデータ内のペイロードデータの順序を決定してもよい。例えば、NVMeコントローラは、第2のデータパケットをホストに更に送信し、第2のデータパケットは、第1のアドレス及び第2のペイロードデータを搬送し、第2のペイロードデータはまた、読み取り対象のデータに属する。第2のデータパケットを受信した後に、ホストは、第1のデータパケット及び第2のデータパケットを受信する順序に基づいて、読み取り対象のデータ内の第1のペイロードデータ及び第2のペイロードデータの順序を決定してもよい。NVMeコントローラがPCIe書き込み操作を実行するときに順序保存が確保されない場合、データパケットは、読み取り対象のデータ内のペイロードデータのオフセットを更に搬送してもよく、オフセットは、読み取り対象のデータ内のペイロードデータの順序を示すために使用される。
【0098】
本発明のこの実施形態では、NVMeコントローラは、順序保存方式又は非順序保存方式でデータパケットを送信してもよい。例えば、NVMeコントローラは、以下の2つの順序モードのいずれか又は双方をサポートしてもよい。
【0099】
「厳密」モード
このモードでは、NVMeコントローラは、データオフセットの単調に増加する順序でデータパケットを送信する。ホストは、データパケットの順序に基づいてペイロードデータを受信する。このモードでは、オフセットは必要とされない。具体的には、
図7に示すポータル幅は、2bit(標準で指定される)のみでもよい。
【0100】
「緩和」モード
緩和モードでは、NVMeコントローラは、任意の順序でPCIe書き込みトランザクションを送信してもよいが、データパケットは、データオフセットを搬送する必要がある。本発明のこの実施形態では、NVMeコントローラは、読み取り操作の論理ブロックを同時に処理してもよい。具体的には、NVMeコントローラは、ストレージ媒体から異なる論理ブロックに対応するデータを読み取り、それぞれ、検査のためにデータを異なる読み取りメモリブロックに配置してもよい。異なる読み取りメモリブロックは異なる時間に検査を完了するので、読み取りメモリブロックは、厳密に論理ブロックの順序に従ってホストに書き込まれなくてもよく、第1の論理ブロックに対応する読み取りメモリブロックは、最後の論理ブロックに対応する読み取りメモリブロックよりも後にターゲットのメモリに書き込まれてもよい。NVMeコントローラは、トランザクションパケットで搬送されたデータオフセットに基づいてデータを再編成する。このモードでは、データパケットは、データオフセットを搬送する必要がある。言い換えると、
図7に示すポータル幅は、最大データ送信サイズ以上である必要がある。
【0101】
ステップ404:ホストは、第1のデータパケット内の第1のペイロードデータを第2のアドレスにより示されるストレージユニットに書き込む。
【0102】
NVMeコントローラにより送信されたデータパケットを受信した後に、ホストは、第1のアドレスに基づいて第2のアドレスを決定し、次いで、ペイロードデータを第2のアドレスにより示されるストレージユニットに書き込む。
【0103】
本発明のこの実施形態では、第2のアドレスにより示されるストレージユニットに対して書き込み操作を完了した後に、ホストは、第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行してもよく、言い換えると、ホストは、データを消費してもよく、例えば、データを他のエンティティに送信してもよい。本発明のこの実施形態では、読み取りページに関連するデータが完全に読み取りページに書き込まれた後に、ホストは、読み取りページに対して書き込み操作を完了する。言い換えると、読み取りページに関連する最後のTLP内のデータが読み取りページに書き込まれた後に、ホストは、読み取りページに対して書き込み操作を完了する。
【0104】
本発明のこの実施形態では、1つの読み取り操作は、複数の読み取りページを有してもよい。全体の読み取り操作を完了する前に、ホストは、いくつかの読み取りページに対して書き込み操作を完了してもよい。1つの読み取りページに対して書き込み操作を完了した後に、ホストは、全体の読み取り操作が完了するまで待機する必要なく、読み取りページ内のデータを使用してもよい。
【0105】
図9A及び
図9Bに示すように、読み取り対象のデータのサイズは4*P_szであり、P_szは読み取りページのサイズ、すなわち、ストレージ空間のサイズである。読み取りメモリブロック
のサイズは2*P_szである。具体的には、データに対して検査及び誤り訂正を実行するために、読み取り対象のデータは、2つの読み取りメモリブロックを必要とする。本発明のこの実施形態では、TLPが、説明のためにデータパケットの例として使用される。各TLPのペイロードデータのサイズは0.5*P_szである。具体的には、各読み取りメモリブロックのデータは、4つのTLPを使用することにより送信される必要がある。図面に示すように、NVMeコントローラは、検査のために、読み取り対象のデータをストレージ媒体から読み取りメモリブロック0及び読み取りメモリブロック1に順次読み取る。NVMeコントローラは、2つの読み取りメモリブロックのデータを同時に検査してもよい。読み取りメモリブロックの検査速度は異なるので、本発明のこの実施形態では、読み取りメモリブロック0の検査の前に、読み取りメモリブロック1の検査が完了する。NVMeコントローラは、まず、読み取りメモリブロック1内のデータをTLPに順次
カプセル化し、PCIeネットワークを通じてデータをホストに送信する。図面に示すように、TLP0及びTLP1にカプセル化されたデータは、読み取りメモリブロック1のデータであり、次いで、読み取りメモリブロック0の検査が完了する。NVMeコントローラは、データの順序で読み取りメモリブロック0のデータをTLPにカプセル化し、PCIeネットワークを通じてデータをホストに送信する。図面に示すように、TLP2、TLP4、TLP6及びTLP7にカプセル化されたデータは、読み取りメモリブロック0のデータである。図面に示すように、本発明のこの実施形態では、ホストにより受信されるデータパケットは順序外れでもよい。ホストは、受信したTLP内のデータオフセットに基づいて、読み取り対象のデータ内のペイロードデータの順序を決定し、ペイロードデータを記憶するための読み取りページのアドレスを決定するために、読み取り対象のデータ内のペイロードデータの順序及び指示情報に基づいてMTTを検索し、ペイロードデータを対応する読み取りページに書き込んでもよい。図面に示すように、TLP0及びTLP1のペイロードデータを読み取りページ8に書き込んだ後に、ホストは、読み取りページ8に対して書き込み操作を完了し、ホストは、読み取りページ8内のデータを処理してもよい。同様に、TLP2及びTLP4のペイロードデータを読み取りページ2に書き込んだ後に、ホストは、読み取りページ2に対して書き込み操作を完了し、ホストは読み取りページ2内のデータを処理してもよい。本発明のこの実施形態では、ホストが読み取りページに記憶されたデータを処理することは、具体的には、データを消費することであり、例えば、データを他の主体に送信することであり、ホストは、読み取り対象のデータが完全に書き込まれるまで待機する必要なく、読み取り対象のデータに対して操作を実行してもよい。本発明のこの実施形態では、パイプライン処理方式が実現され、それにより、読み取り操作遅延を短縮する。
【0106】
本発明のこの実施形態では、第2のアドレスにより示されるストレージユニットの処理を完了した後に、ホストは、他の読み取り操作の使用のためにストレージユニットを解放してもよい。例えば、
図9A及び
図9Bにおける実施形態では、読み取りページ8に記憶されたデータの処理を完了した後に、ホストは、全体の読み取り操作が完了して全ての読み取り対象のデータが処理されるまで待機する必要なく、他の読み取り操作の使用のために、読み取りページ8を読み取りページプールに解放し、読み取り操作により占有されたストレージ空間を解放してもよく、それにより、ストレージ空間の占有を低減する。
【0107】
読み取り操作を完了した後に、NVMeコントローラは、完了キューエントリCQEをトリガするように更に構成され、CQEは、NVMeコントローラが読み取り命令により指定された読み取り操作を完了したことを示すために使用され、ホストは、完了キューエントリCQEを取得するように更に構成される。本発明のこの実施形態では、ホストは、第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行した後にのみ、CQEを取得してもよい。
【0108】
本発明の実施形態において開示される技術的解決策によれば、ホストは、データポータルアドレスとしてNVMeコントローラに対して第1のアドレスを開放し、それにより、NVMeコントローラは、第1のアドレスを使用することにより、読み取り対象のデータをホストに書き込む。NVMeコントローラにより送信されたデータパケットで搬送された宛先アドレスは、第1のアドレスである。データパケットを受信した後に、ホストは、データパケット内のペイロードデータを、第1のアドレスにより示されるストレージ空間に真に書き込むのではなく、第1のアドレスを第2のアドレスにマッピングし、データパケット内のペイロードデータを、第2のアドレスにより示されるストレージ空間に書き込む。第2のアドレスにより示されるストレージ空間は、ホストのプライベートメモリ空間でもよく、それにより、ペイロードデータを記憶するためのストレージ空間と通信プロトコルとの間の関係が壊され、ホストは、通信プロトコルにより制限されることなく、第2のアドレスにアクセスする。読み取り命令が完了する前に、ホストは、第2のアドレスにより示されるストレージ空間に記憶されたデータを使用し、他の読み取り操作の使用のために、第2のアドレスにより示されるストレージ空間を早期に解放してもよい。本発明の実施形態において開示される技術的解決策によれば、読み取り操作遅延が短縮でき、読み取り対象のデータを記憶するために使用されるストレージ空間が低減できる。
【0109】
図10は、本発明の実施形態による、NVMeベースの読み取り方法の相互作用フローチャートである。図10に示すように、方法1000の適用シナリオにおいて、データソース及びコマンドソースは分離している。データソースは、コマンドソースを使用することにより、読み取り対象のデータをデータソースのストレージ空間に読み取る必要がある。データソース及びコマンドソースが分離している具体的なシナリオは、本発明のこの実施形態では限定されない。
【0110】
例えば、本発明のこの実施形態では、データソース及びコマンドソースが分離しているシナリオは、NOF(英文フルネーム:NVMe over fabric, 略称NOF)に基づく単なるフラッシュの束(英文フルネーム:Just a Bunch Of Flash, 略称JBOF)でもよい。
図11(a)に示すように、データソースは、ストレージ媒体にアクセスすることを必要とするホストであり、コマンドソースは、ファブリックを使用することによりホストに接続されたNOFブリッジである。より具体的には、コマンドソースは、NOFブリッジ内のNOFエンジンでもよい。NOFブリッジは、PCIeバスを通じてNVMeコントローラに接続され、NVMeコントローラは、ストレージ媒体に接続される。
【0111】
本発明のこの実施形態では、データソース及びコマンドソースが分離しているシナリオにおいて、データソース及びコマンドソースは、さらにホスト及び暗号アクセラレータでもよい。
図11(b)に示すように、データソースはホストであり、コマンドソースはホストに接続された暗号アクセラレータである。より具体的には、コマンドソースは、暗号アクセラレータのアクセラレーションエンジンである。暗号アクセラレータは、PCIeバスを通じてNVMeコントローラに接続され、NVMeコントローラは、ストレージ媒体に接続される。
【0112】
本発明のこの実施形態では、読み取り操作を実行するとき、コマンドソースは、読み取り対象のデータのポータルアドレスの指示情報をSQEに追加する。ポータルアドレスは、本質的には、
NVMeコントローラにより
アドレス指定可能なPCIeアドレスのセグメントでもよい。SQEを取得した後に、NVMeコントローラは、PCIe書き込み操作を実行することによりTLPをコマンドソースに送信し、PCIeアドレスをTLPに追加する。TLPパケットを受信した後に、コマンドソースは、PCIeアドレスを取得するためにTLPパケットを解析し、PCIeアドレスとローカルメモリとの間のマッピング関係に基づいて、PCIeアドレスに対応するローカルストレージユニットを決定し、次いで、TLP内のペイロードデータを決定されたストレージユニットに書き込む。1つのポータルは、複数のストレージユニットに対応してもよい。ストレージユニットに対して書き込み操作が完了すると、コマンドソースは、ストレージユニットに記憶されたデータに対して操作を実行してもよい。ストレージユニットに対して書き込み操作が
完了することは、ストレージユニットに対応する最後のTLPのペイロードデータをストレージユニットに書き込むことを示す。読み取り対象のデータのいくつかのデータを取得した後に、コマンドソースは、全体の読み取り操作が完了するまで待機する必要なく、取得されたデータをデータソースに送信し、読み取り対象のデータソースに送信してもよい。
図10に示すように、読み取り対象のデータは、データ1、データ2、データ3及びデータ4を含み、データ1、データ2、データ3及びデータ4のそれぞれは、1つのストレージユニットに対応してもよい。ストレージユニットのデータを受信した後に、コマンドソースは、ストレージユニットのデータをデータソースに送信してもよい。ストレージユニットのデータをデータソースに送信した後に、コマンドソースは、他の読み取り操作の使用のために、対応するストレージユニットを解放してもよい。
【0113】
本発明の実施形態において開示される技術的解決策によれば、コマンドソースは、ローカルメモリとPCIeアドレスとの間のマッピング関係を確立し、受信したTLP内のペイロードデータをコマンドソースのメモリ空間に書き込み、それにより、データに対するパイプライン操作が実現できる。具体的には、いくつかのデータを受信した後に、コマンドソースは、受信したデータをデータソースに送信してもよく、NVMeコントローラにより送信されたデータを受信することと、データをデータソースに送信することとが同時に処理でき、それにより、データをキャッシュするために使用されるストレージ空間を低減し、読み取り操作の処理速度を増加させる。
【0114】
図12は、この出願の実施形態による計算デバイス1200の論理構造の概略図である。
図12に示すように、計算デバイス1200は、
NVMeコントローラへの読み取り命令をトリガするように構成された処理ユニット1202であり、読み取り命令は、指示情報を搬送し、指示情報は、第1のアドレスを示すために使用され、第1のアドレスは、NVMeコントローラによりアドレス指定可能なアドレスである、処理ユニット1202と、
NVMeコントローラにより送信された第1のデータパケットを受信するように構成された受信ユニット1204であり、第1のデータパケットは、第1のアドレス及び第1のペイロードデータを搬送する、受信ユニット1204と
を含む。
【0115】
処理ユニット1202は、第1のアドレスに基づいて第2のアドレスを決定し、第1のペイロードデータを第2のアドレスにより示されるストレージユニットに書き込む。第2のアドレスは、処理ユニット1202によりアドレス指定可能なアドレスである。
【0116】
任意選択で、第2のアドレスにより示されるストレージユニットに対して書き込み操作を完了した後に、処理ユニット1202は、第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行するように更に構成される。
【0117】
第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行した後に、処理ユニット1202は、NVMeコントローラによりトリガされた完了キューエントリCQEを取得するように更に構成され、CQEは、NVMeコントローラが読み取り命令により指定された読み取り操作を完了したことを示すために使用される。
【0118】
第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行した後に、処理ユニット1202は、第2のアドレスにより示されるストレージユニットを解放するように更に構成される。
【0119】
読み取り命令をトリガする前に、処理ユニット1202は、第2のアドレスにより示されるストレージユニットを読み取り命令に割り当て、第1のアドレスと第2のアドレスとの間の対応関係を記録するように更に構成される。
【0120】
任意選択で、読み取り命令の読み取り対象のデータは、少なくとも2つのデータパケットに対応し、処理ユニット1202は、少なくとも2つのストレージユニットを読み取り命令に割り当てる。
【0121】
処理ユニット1202は、第1のアドレス及び読み取り対象のデータ内の第1のペイロードデータの順序に基づいて、第2のアドレスを決定してもよい。
【0122】
任意選択で、受信ユニット1204は、NVMeコントローラにより送信された第2のデータパケットを受信するように更に構成され、第2のデータパケットは、第1のアドレス及び第2のペイロードデータを搬送する。処理ユニット1202は、第1のデータパケット及び第2のデータパケットを受信する順序に基づいて、読み取り対象のデータ内の第1のペイロードデータ及び第2のペイロードデータの順序を決定するように更に構成される。
【0123】
任意選択で、第1のデータパケットは、読み取り対象のデータ内の第1のペイロードデータのオフセットを更に搬送し、オフセットは、読み取り対象のデータ内の第1のペイロードデータの順序を示すために使用される。
【0124】
本発明のこの実施形態では、第1のアドレスは、NVMeコントローラによりアドレス指定可能なPCIeアドレスでもよく、第1のデータパケットは、PCIeパケットであり、第2のアドレスにより示されるストレージユニットは、計算デバイスのメモリ空間でもよい。
【0125】
この出願のこの実施形態では、処理ユニット1202は、
図3におけるプロセッサ301内の読み取り操作ロジック310により、或いは、
図3におけるプロセッサ301及びシステムメモリ302内の読み取り操作モジュール306により具体的に実現されてもよい。受信ユニット1204は、
図3の実施形態におけるプロセッサ301及び通信インタフェース303により実現されてもよい。
【0126】
この出願のこの実施形態は、上記の実施形態に対応するホストの装置の実施形態であり、上記の実施形態における特徴の説明は、この出願のこの実施形態に適用可能である。詳細は、ここでは再び説明しない。
【0127】
上記の実施形態は、単にこの出願の技術的解決策を説明することを意図するものであり、この出願を限定することを意図するものではない。この出願について、上記の実施形態を参照して詳細に説明したが、当業者は、特許請求の範囲から逸脱することなく、依然として上記の実施形態に記載の技術的解決策に修正を行ってもよく、或いは、そのいくつかの技術的特徴に置き換えを行ってもよいことを理解するべきである。