(57)【要約】  この出願は、NVMeベースのデータ読み取り方法、装置及びシステムを開示する。当該方法は、ホストにより、読み取り命令をトリガするステップであり、読み取り命令は、第1のアドレスの指示情報を搬送し、第1のアドレスは、アドレス指定及びアクセスのためにホストによりNVMeコントローラに対して開放されたアドレスである、ステップと、ホストにより読み取り命令を取得した後に、データパケットをホストに送信するステップであり、データパケットは、第1のアドレス及びペイロードデータを搬送する、ステップと、NVMeコントローラによりデータパケットを受信した後に、第1のアドレスに基づいて第2のアドレスを決定し、ペイロードデータを第2のアドレスにより示されるストレージ空間に記憶するステップとを含む。第2のアドレスは、ホストのプライベートメモリアドレスでもよい。ホストは第1のアドレスを第2のアドレスにマッピングするので、第2のアドレスと通信プロトコルとの間の関係が壊され、ホストは、通信プロトコルにより制限されることなく、第2のアドレスにアクセスしてもよい。
2021515318.tif 000002
【特許請求の範囲】
【請求項１】
NVMeベースのデータ読み取りシステムであって、
当該システムは、ホストと、NVMeコントローラと、ストレージ媒体とを含み、
前記ストレージ媒体は、データを記憶するように構成され、
前記ホストは、読み取り命令をトリガするように構成され、前記読み取り命令は、指示情報を搬送し、前記指示情報は、第1のアドレスを示すために使用され、前記第1のアドレスは、前記NVMeコントローラによりアドレス指定可能なアドレスであり、
前記NVMeコントローラは、前記読み取り命令を取得し、前記ストレージ媒体から、前記読み取り命令に対応する読み取り対象のデータを読み取り、第1のデータパケットを前記ホストに送信するように構成され、前記第1のデータパケットは、前記第1のアドレス及び第1のペイロードデータを搬送し、前記読み取り対象のデータは、前記第1のペイロードデータを含み、
前記ホストは、前記第1のデータパケットを受信し、前記第1のアドレスに基づいて第2のアドレスを決定し、前記第1のペイロードデータを前記第2のアドレスにより示されるストレージユニットに書き込むように更に構成され、前記第2のアドレスは、前記ホストによりアドレス指定可能なアドレスである、システム。
【請求項２】
前記第2のアドレスにより示される前記ストレージユニットに対して書き込み操作を完了した後に、前記ホストは、前記第2のアドレスにより示される前記ストレージユニット内のデータに対して操作を実行するように更に構成される、請求項１に記載のシステム。
【請求項３】
前記NVMeコントローラは、完了キューエントリCQEをトリガするように更に構成され、前記CQEは、前記NVMeコントローラが前記読み取り命令により指定された読み取り操作を完了したことを示すために使用され、
前記第2のアドレスにより示される前記ストレージユニット内の前記データに対して前記操作を実行した後に、前記ホストは、前記完了キューエントリCQEを取得するように更に構成される、請求項２に記載のシステム。
【請求項４】
前記第2のアドレスにより示される前記ストレージユニット内の前記データに対して前記操作を実行した後に、前記ホストは、前記第2のアドレスにより示される前記ストレージユニットを解放するように更に構成される、請求項２又は３に記載のシステム。
【請求項５】
前記読み取り命令をトリガする前に、前記ホストは、前記第2のアドレスにより示される前記ストレージユニットを前記読み取り命令に割り当て、前記第1のアドレスと前記第2のアドレスとの間の対応関係を記録するように更に構成される、請求項１乃至４のうちいずれか１項に記載のシステム。
【請求項６】
前記読み取り命令の前記読み取り対象のデータは、少なくとも2つのデータパケットに対応し、前記ホストは、少なくとも2つのストレージユニットを前記読み取り命令に割り当てる、請求項５に記載のシステム。
【請求項７】
前記ホストは、前記第1のアドレス及び前記読み取り対象のデータ内の前記第1のペイロードデータの順序に基づいて、前記第2のアドレスを決定するように構成される、請求項１に記載のシステム。
【請求項８】
前記NVMeコントローラは、第2のデータパケットを前記ホストに送信するように更に構成され、前記第2のデータパケットは、前記第1のアドレス及び第2のペイロードデータを搬送し、前記読み取り対象のデータは、前記第2のペイロードデータを含み、
前記ホストは、前記第2のデータパケットを受信し、前記第1のデータパケット及び前記第2のデータパケットを受信する順序に基づいて、前記読み取り対象のデータ内の前記第1のペイロードデータ及び前記第2のペイロードデータの順序を決定するように更に構成される、請求項７に記載のシステム。
【請求項９】
前記第1のデータパケットは、前記読み取り対象のデータ内の前記第1のペイロードデータのオフセットを更に搬送し、前記オフセットは、前記読み取り対象のデータ内の前記第1のペイロードデータの前記順序を示すために使用される、請求項７に記載のシステム。
【請求項１０】
前記第1のアドレスは、前記NVMeコントローラによりアドレス指定可能なPCIeアドレスであり、前記第1のデータパケットは、PCIeパケットであり、前記第2のアドレスにより示される前記ストレージユニットは、前記ホストのメモリ空間である、請求項１乃至９のうちいずれか１項に記載のシステム。
【請求項１１】
NVMeベースのデータ読み取り方法であって、当該方法は、
ホストにより、読み取り命令をトリガするステップであり、前記読み取り命令は、指示情報を搬送し、前記指示情報は、第1のアドレスを示すために使用され、前記第1のアドレスは、NVMeコントローラによりアドレス指定可能なアドレスである、ステップと、
前記ホストにより、前記NVMeコントローラにより送信された第1のデータパケットを受信するステップであり、前記第1のデータパケットは、前記第1のアドレス及び第1のペイロードデータを搬送する、ステップと、
前記ホストにより、前記第1のアドレスに基づいて第2のアドレスを決定するステップであり、前記第2のアドレスは、前記ホストによりアドレス指定可能なアドレスである、ステップと、
前記ホストにより、前記第1のペイロードデータを前記第2のアドレスにより示されるストレージユニットに書き込むステップと
を含む方法。
【請求項１２】
前記ホストが前記第2のアドレスにより示される前記ストレージユニットに対して書き込み操作を完了した後に、当該方法は、
前記ホストにより、前記第2のアドレスにより示される前記ストレージユニット内のデータに対して操作を実行するステップを更に含む、請求項１１に記載の方法。
【請求項１３】
前記ホストが前記第2のアドレスにより示される前記ストレージユニット内の前記データに対して前記操作を実行した後に、当該方法は、
前記ホストにより、前記NVMeコントローラによりトリガされた完了キューエントリCQEを取得するステップであり、前記CQEは、前記NVMeコントローラが前記読み取り命令により指定された読み取り操作を完了したことを示すために使用される、ステップを更に含む、請求項１２に記載の方法。
【請求項１４】
前記ホストが前記第2のアドレスにより示される前記ストレージユニット内の前記データに対して前記操作を実行した後に、当該方法は、
前記ホストにより、前記第2のアドレスにより示される前記ストレージユニットを解放するステップを更に含む、請求項１２又は１３に記載の方法。
【請求項１５】
ホストにより、前記読み取り命令をトリガする前に、当該方法は、
前記ホストにより、前記第2のアドレスにより示される前記ストレージユニットを前記読み取り命令に割り当て、前記第1のアドレスと前記第2のアドレスとの間の対応関係を記録するステップを更に含む、請求項１１乃至１４のうちいずれか１項に記載の方法。
【請求項１６】
前記読み取り命令の読み取り対象のデータは、少なくとも2つのデータパケットに対応し、前記ホストは、少なくとも2つのストレージユニットを前記読み取り命令に割り当てる、請求項１５に記載の方法。
【請求項１７】
前記ホストは、前記第1のアドレス及び前記読み取り対象のデータ内の前記第1のペイロードデータの順序に基づいて、前記第2のアドレスを決定する、請求項１１に記載の方法。
【請求項１８】
当該方法は、
前記ホストにより、前記NVMeコントローラにより送信された第2のデータパケットを受信するステップであり、前記第2のデータパケットは、前記第1のアドレス及び第2のペイロードデータを搬送する、ステップと、
前記ホストにより、前記第1のデータパケット及び前記第2のデータパケットを受信する順序に基づいて、前記読み取り対象のデータ内の前記第1のペイロードデータ及び前記第2のペイロードデータの順序を決定するステップと
を更に含む、請求項１７に記載の方法。
【請求項１９】
前記第1のデータパケットは、前記読み取り対象のデータ内の前記第1のペイロードデータのオフセットを更に搬送し、前記オフセットは、前記読み取り対象のデータ内の前記第1のペイロードデータの前記順序を示すために使用される、請求項１７に記載の方法。
【請求項２０】
前記第1のアドレスは、前記NVMeコントローラによりアドレス指定可能なPCIeアドレスであり、前記第1のデータパケットは、PCIeパケットであり、前記第2のアドレスにより示される前記ストレージユニットは、前記ホストのメモリ空間である、請求項１１乃至１９のうちいずれか１項に記載の方法。
【請求項２１】
NVMeベースのデータ読み取り装置であって、当該装置は、
読み取り命令をトリガするように構成された処理ユニットであり、前記読み取り命令は、指示情報を搬送し、前記指示情報は、第1のアドレスを示すために使用され、前記第1のアドレスは、NVMeコントローラによりアドレス指定可能なアドレスである、処理ユニットと、
前記NVMeコントローラにより送信された第1のデータパケットを受信するように構成された受信ユニットであり、前記第1のデータパケットは、前記第1のアドレス及び第1のペイロードデータを搬送する、受信ユニットと
を含み、
前記処理ユニットは、前記第1のアドレスに基づいて第2のアドレスを決定し、前記第1のペイロードデータを前記第2のアドレスにより示されるストレージユニットに書き込むように更に構成され、前記第2のアドレスは、前記処理ユニットによりアドレス指定可能なアドレスである、装置。
【請求項２２】
前記第2のアドレスにより示される前記ストレージユニットに対して書き込み操作を完了した後に、前記処理ユニットは、前記第2のアドレスにより示される前記ストレージユニット内のデータに対して操作を実行するように更に構成される、請求項２１に記載の装置。
【請求項２３】
前記第2のアドレスにより示される前記ストレージユニット内の前記データに対して前記操作を実行した後に、前記処理ユニットは、前記NVMeコントローラによりトリガされた完了キューエントリCQEを取得するように更に構成され、前記CQEは、前記NVMeコントローラが前記読み取り命令により指定された読み取り操作を完了したことを示すために使用される、請求項２２に記載の装置。
【請求項２４】
前記第2のアドレスにより示される前記ストレージユニット内の前記データに対して前記操作を実行した後に、前記処理ユニットは、前記第2のアドレスにより示される前記ストレージユニットを解放するように更に構成される、請求項２２又は２３に記載の装置。
【請求項２５】
前記読み取り命令をトリガする前に、前記処理ユニットは、前記第2のアドレスにより示される前記ストレージユニットを前記読み取り命令に割り当て、前記第1のアドレスと前記第2のアドレスとの間の対応関係を記録するように更に構成される、請求項２１乃至２４のうちいずれか１項に記載の装置。
【請求項２６】
前記読み取り命令の読み取り対象のデータは、少なくとも2つのデータパケットに対応し、前記処理ユニットは、少なくとも2つのストレージユニットを前記読み取り命令に割り当てる、請求項２５に記載の装置。
【請求項２７】
前記処理ユニットは、前記第1のアドレス及び前記読み取り対象のデータ内の前記第1のペイロードデータの順序に基づいて、前記第2のアドレスを決定するように構成される、請求項２１に記載の装置。
【請求項２８】
前記受信ユニットは、前記NVMeコントローラにより送信された第2のデータパケットを受信するように更に構成され、前記第2のデータパケットは、前記第1のアドレス及び第2のペイロードデータを搬送し、
前記処理ユニットは、前記第1のデータパケット及び前記第2のデータパケットを受信する順序に基づいて、前記読み取り対象のデータ内の前記第1のペイロードデータ及び前記第2のペイロードデータの順序を決定するように更に構成される、請求項２７に記載の装置。
【請求項２９】
前記第1のデータパケットは、前記読み取り対象のデータ内の前記第1のペイロードデータのオフセットを更に搬送し、前記オフセットは、前記読み取り対象のデータ内の前記第1のペイロードデータの前記順序を示すために使用される、請求項２７に記載の装置。
【請求項３０】
前記第1のアドレスは、前記NVMeコントローラによりアドレス指定可能なPCIeアドレスであり、前記第1のデータパケットは、PCIeパケットであり、前記第2のアドレスにより示される前記ストレージユニットは、当該装置のメモリ空間である、請求項２１乃至２９のうちいずれか１項に記載の装置。
【請求項３１】
実行可能命令を含む読み取り可能媒体であって、
計算デバイスのプロセッサが前記実行可能命令を実行するとき、前記計算デバイスは、請求項１１乃至２０のうちいずれか１項に記載の方法を実行する、読み取り可能媒体。
【請求項３２】
プロセッサと、メモリと、バスとを含む計算デバイスであって、
前記メモリは、実行可能命令を記憶するように構成され、前記プロセッサ及び前記メモリは、前記バスを通じて接続され、当該計算デバイスが動作するとき、前記プロセッサは、前記メモリに記憶された前記実行可能命令を実行し、前記計算デバイスは、請求項１１乃至２０のうちいずれか１項に記載の方法を実行することが可能になる、計算デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
この出願は、ストレージ分野に関し、特に、不揮発性メモリエクスプレス(non-volatile  memory  express,  NVMe)ベースのデータ読み取り方法、装置及びストレージデバイスに関する。
【背景技術】
【０００２】
特にストレージ媒体としてフラッシュ(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)インタフェースに取り付けられ、エンタープライズグレード及びコンシューマグレードのソリッドステートストレージを最適化し、高性能及び低アクセス遅延の利点を提供する。
【０００３】
NVMeは、一対の機構、すなわち、発行キュー(英文フルネーム:submission  queue,  略称SQ)及び完了キュー(英文フルネーム:completion  queue,  略称CQ)に基づく。ホストは、コマンドを発行キューに配置する。コントローラは、完了情報を対応する完了キューに配置する。各発行キューエントリ(submission  queue  entry,  SQE)はコマンドである。読み取り命令では、データ送信に使用されるメモリアドレスは、メタデータポインタ(英文フルネーム:Meta-data  Pointer,  略称MPTR)及びデータポインタ(英文フルネーム:Data  Pointer,  略称DPTR)を使用することにより指定される。読み取り命令を取得した後に、NVMeコントローラは、PCIe書き込み操作を実行することにより、読み取り対象のデータを、データ送信に使用されるメモリアドレスにより示されるストレージ空間に書き込む。
【発明の概要】
【０００４】
この出願は、NVMeベースのデータ読み取り方法、装置及びシステムを開示する。ホストは、NMVeコントローラに対して開放されたポータルアドレスを使用することにより、NMVeコントローラにより送信されたデータパケットを受信し、対応するストレージユニットを、ホストのメモリ空間内のポータルアドレスに割り当てる。データパケットを受信した後に、ホストは、データパケットで搬送されたポータルアドレスに基づいて、ポータルアドレスに対応するストレージユニットのアドレスを決定し、データパケット内のペイロードデータを決定されたストレージユニットに書き込む。このように、ストレージユニットと通信プロトコルとの間の関係が壊される。これは、柔軟なデータ操作を実現する。
【０００５】
第1の態様によれば、この出願は、NVMeベースのデータ読み取りシステムを開示し、当該システムは、ホストと、NVMeコントローラと、ストレージ媒体とを含む。ストレージ媒体は、ホストのデータを記憶するように構成され、ホストは、NVMeコントローラへの読み取り命令をトリガするように構成され、読み取り命令は、第1のアドレスを示すために使用される指示情報を搬送し、第1のアドレスは、NVMeコントローラによりアドレス指定可能なアドレスであり、読み取り命令を取得した後に、NVMeコントローラは、ストレージ媒体から、読み取り命令に対応する読み取り対象のデータを読み取り、第1のデータパケットをホストに送信するように構成され、第1のデータパケットは、第1のアドレス及び第1のペイロードデータを搬送し、第1のペイロードデータは、第1のデータパケットに属し、第1のデータパケットを受信した後に、ホストは、第1のアドレスに基づいて第2のアドレスを決定し、第1のペイロードデータを第2のアドレスにより示されるストレージユニットに書き込むように更に構成され、第2のアドレスは、ホストによりアドレス指定可能なアドレスである。
【０００６】
読み取り命令は、具体的にはSQEでもよい。ホストにより読み取り命令をトリガする具体的なプロセスは、以下のものでもよい。ホストは、SQEをSQに書き込み、ドアベル機構を使用することによりNMVeコントローラに通知する。第1のアドレスは、アクセスのためにホストによりNMVeコントローラに対して開放されたアドレスである。しかし、第1のアドレスは、NVMeコントローラによりホストに書き込まれるペイロードデータのポータルアドレスとしてのみ使用され、第1のアドレスにより示されるストレージ空間は、実際にはペイロードデータを記憶しない。NVMeコントローラにより送信されたデータパケットを受信した後に、ホストは、ペイロードデータを第1のアドレスにより示されるストレージ空間に書き込まず、ホストによりアドレス指定可能なストレージ空間において、第1のアドレスに対応する第2のアドレスを割り当て、ペイロードデータを第2のアドレスにより示されるストレージユニットに書き込む。したがって、第2のアドレスにより示されるストレージユニットに対するホストの操作は、もはや、ホストとNVMeコントローラとの間の通信プロトコルにより制限されない。この出願では、読み取り操作遅延が短縮でき、読み取り対象のデータによりホストにより占有されるストレージ空間が低減できる。
【０００７】
第1の態様に従って、第1の態様の第1の可能な実現方式では、第2のアドレスにより示されるストレージユニットに対して書き込み操作を完了した後に、ホストは、第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行するように更に構成される。ストレージユニットに対して書き込み操作を完了することは、ストレージユニットに関連する全てのデータをストレージユニットに書き込むことであり、例えば、具体的には、ストレージユニットを完全に書き込むこと、又はストレージユニットに関連する最後のペイロードデータをストレージユニットに書き込むことでもよい。データに対して操作を実行することは、ストレージユニット内のデータを他の主体に送信することでもよい。
【０００８】
第2のアドレスにより示されるストレージ空間は、ホストのプライベートメモリでもよく、もはやPCIeアドレスを使用することによりNVMeコントローラによりアクセスされず、コマンドメモリバッファ(Command  memory  Buffer,  CMB)ではないか、或いは、CMBとして使用されない。ホストが第1のアドレスと第2のアドレスとの間のマッピング関係に基づいて、ペイロードデータを、ホストによりアドレス指定可能な第2のアドレスにより示されるストレージユニットに記憶した後に、第2のアドレスと、ホストとNVMeコントローラとの間の通信プロトコルとの間の関係が壊される。第2のアドレスにより示されるストレージユニットに対して書き込み操作を完了した後に、ホストは、第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行し、読み取り命令により示される読み取り操作が完全に完了するまで待機する必要なく、読み取りデータに対して操作を実行してもよい。
【０００９】
第1の態様の第1の可能な実現方式に従って、第1の態様の第2の可能な実現方式では、NVMeコントローラは、完了キューエントリ(completion  queue  entry,  CQE)をトリガするように更に構成され、CQEは、NVMeコントローラが読み取り命令により指定された読み取り操作を完了したことを示すために使用される。第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行した後に、ホストは、完了キューエントリCQEを取得するように更に構成される。
【００１０】
NVMeコントローラがCQEをトリガすることは、具体的には以下のものでもよい。読み取り操作を完了した後に、NVMeコントローラは、CQEをCQに書き込み、割り込み機構を使用することによりホストに通知する。既存のプロトコルに基づいて、読み取り命令をトリガする前に、ホストは、PCIeアドレス空間を読み取り命令に割り当てる必要がある。PCIeアドレスにより示されるストレージ空間は、読み取り対象のデータを記憶するために使用される。読み取り命令を完了する前に、ホストは、PCIeアドレス空間の所有権を失い、言い換えると、CQEを取得する前に、ホストはPCIeアドレスにより示されるストレージ空間にアクセスできず、それにより、読み取り操作遅延及びストレージ空間の浪費を引き起こす。第2のアドレスは、データパケットで搬送された第1のアドレスではなく、ホストにより選択できる内部アドレスであるので、ホストは、CQEを取得する前に、第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行してもよい。
【００１１】
第1の態様の上記の可能な実現方式のうちいずれか1つに従って、第1の態様の第3の可能な実現方式では、第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行した後に、ホストは、第2のアドレスにより示されるストレージユニットを解放するように更に構成される。
【００１２】
ホストは、ホストの内部ストレージ空間をメモリプールに編成してもよい。メモリプールは、複数のストレージユニットを含む。ストレージユニット内のデータに対して操作を完了した後に、ホストは、他の読み取り操作の使用のために、メモリユニットをメモリプールに解放し、全体の読み取り操作が解明されるまで待機する必要なく、ストレージユニットを解放してもよく、それにより、ストレージユニットの占有時間を低減し、ストレージ空間の利用率を増加させる。
【００１３】
第1の態様又は第1の態様の上記の可能な実現方式のうちいずれか1つに従って、第1の態様の第4の可能な実現方式では、読み取り命令をトリガする前に、ホストは、第2のアドレスにより示されるストレージユニットを読み取り命令に割り当て、第1のアドレスと第2のアドレスとの間の対応関係を記録するように更に構成される。
【００１４】
ホストが、書き込み命令をトリガする前に、対応するストレージユニットを読み取り命令に割り当てる場合、ストレージ空間のオーバーフローが効果的に回避できる。ホストは、読み取り操作を効果的に調整及び制御するために、維持されているメモリプール内のアイドルのストレージユニットの量に基づいて、読み取り命令をトリガしてもよい。
【００１５】
第1の態様又は第1の態様の上記の可能な実現方式のうちいずれか1つに従って、第1の態様の第5の可能な実現方式では、読み取り命令の読み取り対象のデータは、少なくとも2つのデータパケットに対応し、ホストは、少なくとも2つのストレージユニットを読み取り命令に割り当てる。
【００１６】
データパケットで搬送できるペイロードデータのサイズに対する制限のため、読み取り対象のデータを送信するとき、NVMeコントローラは、読み取り対象のデータを複数に分割し、複数のデータパケットを使用することにより読み取り対象のデータを送信してもよい。ホストは、読み取り操作の規模に基づいて、対応する量の複数のストレージユニットを割り当ててもよい。
【００１７】
第1の態様又は第1の態様の上記の可能な実現方式のうちいずれか1つに従って、第1の態様の第6の可能な実現方式では、ホストは、第1のアドレス及び読み取り対象のデータ内の第1のペイロードデータの順序に基づいて、第2のアドレスを決定するように構成される。
【００１８】
ホストは、複数のストレージユニットを読み取り操作に割り当て、言い換えると、第1のアドレスは、複数のストレージユニットに対応する。第1のデータパケットを受信した後に、ホストは、第1のペイロードデータのための特定のストレージユニットを決定する必要がある。ホストは、読み取り操作に割り当てられた複数のストレージユニットに対して論理アドレス指定を実行し、読み取り対象のデータを複数のストレージユニットに順次書き込んでもよい。ホストは、読み取り対象のデータ内の第1のペイロードデータの順序に基づいて、第1のペイロードデータが書き込まれる必要があるストレージユニットを具体的に決定してもよい。
【００１９】
第1の態様又は第1の態様の上記の可能な実現方式のうちいずれか1つに従って、第1の態様の第7の可能な実現方式では、NVMeコントローラは、第2のデータパケットをホストに送信するように更に構成され、第2のデータパケットは、第1のアドレス及び第2のペイロードデータを搬送し、読み取り対象のデータは、第2のペイロードデータを含む。ホストは、第2のデータパケットを受信し、第1のデータパケット及び第2のデータパケットを受信する順序に基づいて、読み取り対象のデータ内の第1のペイロードデータ及び第2のペイロードデータの順序を決定するように更に構成される。
【００２０】
各データパケットで搬送できるペイロードデータのサイズに対する制限のため、NVMeコントローラは、送信のために読み取り対象のデータを複数のデータパケットに分割する必要がある。データパケットを受信した後に、ホストは、データパケットで搬送されたペイロードデータを再配列する必要がある。NVMeコントローラが読み取り対象のデータ内のペイロードデータの順序でデータパケットを送信するとき、厳密な順序保存が確保される場合、ホストは、データパケットを受信する順序に基づいてペイロードデータを配列してもよい。
【００２１】
第1の態様又は第1の態様の上記の可能な実現方式のうちいずれか1つに従って、第1の態様の第8の可能な実現方式では、第1のデータパケットは、読み取り対象のデータ内の第1のペイロードデータのオフセットを更に搬送し、オフセットは、読み取り対象のデータ内の第1のペイロードデータの順序を示すために使用される。
【００２２】
データパケットは、読み取り対象のデータ内のペイロードデータのオフセットを搬送し、それにより、NVMeコントローラは、帯域幅リソースをより広範囲に利用するように、データパケットの順序外れの送信を実現できる。
【００２３】
第1の態様又は第1の態様の上記の可能な実現方式のうちいずれか1つに従って、第1の態様の第8の可能な実現方式では、第1のアドレスは、NVMeコントローラによりアドレス指定可能なPCIeアドレスであり、第1のデータパケットは、PCIeパケットであり、第2のアドレスにより示されるストレージユニットは、ホストのメモリ空間である。
【００２４】
第2の態様によれば、この出願は、NVMeベースのデータ読み取り方法を開示する。当該方法は、ホストにより、読み取り命令をトリガするステップであり、読み取り命令は、指示情報を搬送し、指示情報は、第1のアドレスを示すために使用され、第1のアドレスは、NVMeコントローラによりアドレス指定可能なアドレスである、ステップと、ホストにより、NVMeコントローラにより送信された第1のデータパケットを受信するステップであり、第1のデータパケットは、第1のアドレス及び第1のペイロードデータを搬送する、ステップと、ホストにより、第1のアドレスに基づいて第2のアドレスを決定するステップであり、第2のアドレスは、ホストによりアドレス指定可能なアドレスである、ステップと、ホストにより、第1のペイロードデータを第2のアドレスにより示されるストレージユニットに書き込むステップとを含む。
【００２５】
第2の態様に従って、第2の態様の第1の可能な実現方式では、ホストが第2のアドレスにより示されるストレージユニットに対して書き込み操作を完了した後に、当該方法は、ホストにより、第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行するステップを更に含む。
【００２６】
第2の態様の第1の可能な実現方式に従って、第2の態様の第2の可能な実現方式では、ホストが第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行した後に、当該方法は、ホストにより、NVMeコントローラによりトリガされた完了キューエントリCQEを取得するステップであり、CQEは、NVMeコントローラが読み取り命令により指定された読み取り操作を完了したことを示すために使用される、ステップを更に含む。
【００２７】
第2の態様の上記の可能な実現方式のうちいずれか1つに従って、第2の態様の第3の可能な実現方式では、ホストが第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行した後に、当該方法は、ホストにより、第2のアドレスにより示されるストレージユニットを解放するステップを更に含む。
【００２８】
第2の態様又は第2の態様の上記の可能な実現方式のうちいずれか1つに従って、第2の態様の第4の可能な実現方式では、ホストにより、読み取り命令をトリガする前に、当該方法は、ホストにより、第2のアドレスにより示されるストレージユニットを読み取り命令に割り当て、第1のアドレスと第2のアドレスとの間の対応関係を記録するステップを更に含む。
【００２９】
第2の態様又は第2の態様の上記の可能な実現方式のうちいずれか1つに従って、第2の態様の第5の可能な実現方式では、読み取り命令の読み取り対象のデータは、少なくとも2つのデータパケットに対応し、ホストは、少なくとも2つのストレージユニットを読み取り命令に割り当てる。
【００３０】
第2の態様又は第2の態様の上記の可能な実現方式のうちいずれか1つに従って、第2の態様の第6の可能な実現方式では、ホストは、第1のアドレス及び読み取り対象のデータ内の第1のペイロードデータの順序に基づいて、第2のアドレスを決定する。
【００３１】
第2の態様又は第2の態様の上記の可能な実現方式のうちいずれか1つに従って、第2の態様の第7の可能な実現方式では、当該方法は、ホストにより、NVMeコントローラにより送信された第2のデータパケットを受信するステップであり、第2のデータパケットは、第1のアドレス及び第2のペイロードデータを搬送する、ステップと、ホストにより、第1のデータパケット及び第2のデータパケットを受信する順序に基づいて、読み取り対象のデータ内の第1のペイロードデータ及び第2のペイロードデータの順序を決定するステップとを更に含む。
【００３２】
第2の態様又は第2の態様の上記の可能な実現方式のうちいずれか1つに従って、第2の態様の第8の可能な実現方式では、第1のデータパケットは、読み取り対象のデータ内の第1のペイロードデータのオフセットを更に搬送し、オフセットは、読み取り対象のデータ内の第1のペイロードデータの順序を示すために使用される。
【００３３】
第2の態様又は第2の態様の上記の可能な実現方式のうちいずれか1つに従って、第2の態様の第8の可能な実現方式では、第1のアドレスは、NVMeコントローラによりアドレス指定可能なPCIeアドレスであり、第1のデータパケットは、PCIeパケットであり、第2のアドレスにより示されるストレージユニットは、ホストのメモリ空間である。
【００３４】
第2の態様は、第1の態様に対応する方法の実現方式であり、第1の態様又は第1の態様の可能な実現方式のうちいずれか1つにおける説明は、第2の態様又は第2の態様の可能な実現方式のうちいずれか1つに対応して適用可能である。詳細は、ここでは再び説明しない。
【００３５】
第3の態様によれば、この出願は、実行可能命令を含む読み取り可能媒体を提供する。計算デバイスのプロセッサが実行可能命令を実行するとき、計算デバイスは、第2の態様又は第2の態様の可能な実現方式のうちいずれか1つによる方法を実行する。
【００３６】
第4の態様によれば、この出願は、プロセッサと、メモリと、バスとを含む計算デバイスを提供する。メモリは、実行可能命令を記憶するように構成され、プロセッサは、バスを通じてメモリに接続される。計算デバイスが動作するとき、プロセッサは、メモリに記憶された実行可能命令を実行し、計算デバイスは、第2の態様又は第2の態様の可能な実現方式のうちいずれか1つによる方法を実行することが可能になる。
【００３７】
第5の態様によれば、この出願は、NVMeベースのデータ読み取り装置を開示し、当該装置は、読み取り命令をトリガするように構成された処理ユニットであり、読み取り命令は、指示情報を搬送し、指示情報は、第1のアドレスを示すために使用され、第1のアドレスは、NVMeコントローラによりアドレス指定可能なアドレスである、処理ユニットと、NVMeコントローラにより送信された第1のデータパケットを受信するように構成された受信ユニットであり、第1のデータパケットは、第1のアドレス及び第1のペイロードデータを搬送する、受信ユニットとを含む。処理ユニットは、第1のアドレスに基づいて第2のアドレスを決定し、第1のペイロードデータを第2のアドレスにより示されるストレージユニットに書き込むように更に構成され、第2のアドレスは、処理ユニットによりアドレス指定可能なアドレスである。
【００３８】
第5の態様に従って、第5の態様の第1の可能な実現方式では、第2のアドレスにより示されるストレージユニットに対して書き込み操作を完了した後に、処理ユニットは、第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行するように更に構成される。
【００３９】
第5の態様の第1の可能な実現方式に従って、第5の態様の第2の可能な実現方式では、第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行した後に、処理ユニットは、NVMeコントローラによりトリガされた完了キューエントリCQEを取得するように更に構成され、CQEは、NVMeコントローラが読み取り命令により指定された読み取り操作を完了したことを示すために使用される。
【００４０】
第5の態様の上記の可能な実現方式のうちいずれか1つに従って、第5の態様の第3の可能な実現方式では、第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行した後に、処理ユニットは、第2のアドレスにより示されるストレージユニットを解放するように更に構成される。
【００４１】
第5の態様又は第5の態様の上記の可能な実現方式のうちいずれか1つに従って、第5の態様の第4の可能な実現方式では、読み取り命令をトリガする前に、処理ユニットは、第2のアドレスにより示されるストレージユニットを読み取り命令に割り当て、第1のアドレスと第2のアドレスとの間の対応関係を記録するように更に構成される。
【００４２】
第5の態様又は第5の態様の上記の可能な実現方式のうちいずれか1つに従って、第5の態様の第5の可能な実現方式では、読み取り命令の読み取り対象のデータは、少なくとも2つのデータパケットに対応し、処理ユニットは、少なくとも2つのストレージユニットを読み取り命令に割り当てる。
【００４３】
第5の態様又は第5の態様の上記の可能な実現方式のうちいずれか1つに従って、第5の態様の第6の可能な実現方式では、処理ユニットは、第1のアドレス及び読み取り対象のデータ内の第1のペイロードデータの順序に基づいて、第2のアドレスを決定するように構成される。
【００４４】
第5の態様又は第5の態様の上記の可能な実現方式のうちいずれか1つに従って、第5の態様の第7の可能な実現方式では、受信ユニットは、NVMeコントローラにより送信された第2のデータパケットを受信するように更に構成され、第2のデータパケットは、第1のアドレス及び第2のペイロードデータを搬送し、処理ユニットは、第1のデータパケット及び第2のデータパケットを受信する順序に基づいて、読み取り対象のデータ内の第1のペイロードデータ及び第2のペイロードデータの順序を決定するように更に構成される。
【００４５】
第5の態様又は第5の態様の上記の可能な実現方式のうちいずれか1つに従って、第5の態様の第8の可能な実現方式では、第1のデータパケットは、読み取り対象のデータ内の第1のペイロードデータのオフセットを更に搬送し、オフセットは、読み取り対象のデータ内の第1のペイロードデータの順序を示すために使用される。
【００４６】
第5の態様又は第5の態様の上記の可能な実現方式のうちいずれか1つに従って、第1のアドレスは、NVMeコントローラによりアドレス指定可能なPCIeアドレスであり、第1のデータパケットは、PCIeパケットであり、第2のアドレスにより示されるストレージユニットは、当該装置のメモリ空間である。
【００４７】
第5の態様は、第1の態様に対応する装置の実現方式であり、第1の態様又は第1の態様の可能な実現方式のうちいずれか1つにおける説明は、第5の態様又は第5の態様の可能な実現方式のうちいずれか1つに対応して適用可能である。詳細は、ここでは再び説明しない。
【００４８】
この出願において開示される技術的解決策によれば、ホストは、データポータルアドレスとしてNVMeコントローラに対して第1のアドレスを開放し、それにより、NVMeコントローラは、第1のアドレスを使用することにより、読み取り対象のデータをホストに書き込む。NVMeコントローラにより送信されたデータパケットで搬送された宛先アドレスは、第1のアドレスである。データパケットを受信した後に、ホストは、データパケット内のペイロードデータを、第1のアドレスにより示されるストレージ空間に真に書き込むのではなく、第1のアドレスを第2のアドレスにマッピングし、データパケット内のペイロードデータを、第2のアドレスにより示されるストレージ空間に書き込む。第2のアドレスにより示されるストレージ空間は、ホストのプライベートメモリ空間でもよく、それにより、ペイロードデータを記憶するためのストレージ空間と通信プロトコルとの間の関係が壊され、ホストは、通信プロトコルにより制限されることなく、第2のアドレスにアクセスする。読み取り命令が完了する前に、ホストは、第2のアドレスにより示されるストレージ空間に記憶されたデータを使用し、他の読み取り操作の使用のために、第2のアドレスにより示されるストレージ空間を早期に解放してもよい。この出願において開示される技術的解決策によれば、読み取り操作遅延が短縮でき、読み取り対象のデータを記憶するために使用されるストレージ空間が低減できる。
【図面の簡単な説明】
【００４９】
【図１】この出願の実施形態によるNVMeシステムの論理構造の概略図である。
【図２】NVMe標準ベースのデータ読み取り方法のシグナリング図である。
【図３】この出願の実施形態によるホストのハードウェア構造の概略図である。
【図４】この出願の実施形態によるNMVeベースのデータ読み取り方法の概略フローチャートである。
【図５】本発明の実施形態によるポータルの編成構造の概略図である。
【図６】本発明の実施形態によるポータルの編成構造の概略図である。
【図７】本発明の実施形態によるPCIeアドレス構造の概略図である。
【図８Ａ】本発明の実施形態によるアドレスマッピング関係の概略図である。
【図８Ｂ】本発明の実施形態によるアドレスマッピング関係の概略図である。
【図９Ａ】本発明の実施形態によるデータパケット送信の概略図である。
【図９Ｂ】本発明の実施形態によるデータパケット送信の概略図である。
【図１０】本発明の実施形態によるNVMeベースのデータ読み取り方法のシグナリング図である。
【図１１（ａ）】この出願の実施形態によるNVMeシステムの論理構造の概略図である。
【図１１（ｂ）】この出願の実施形態によるNVMeシステムの論理構造の概略図である。
【図１２】この出願の実施形態による計算デバイスの論理構造の概略図である。
【発明を実施するための形態】
【００５０】
以下に、添付の図面を参照して、本発明の実施形態について説明する。
【００５１】
本発明の実施形態では、「第1」及び「第2」のような用語は、第1のアドレス及び第2のアドレスのようなオブジェクトの間を区別するために使用されるが、「第1」と「第2」との間には論理的又は時間順序の依存関係は存在しない。
【００５２】
本発明の実施形態では、「データパケット」は、NVMeコントローラによりホストに送信され且つペイロードデータを搬送するデータパケットである。ここでのペイロードデータは、ユーザデータ又はユーザデータのメタデータでもよく、ペイロードデータのタイプは、本発明の実施形態では限定されない。以下の説明では、特に断りのない限り、本発明の実施形態では、「データ」という語又は「ペイロードデータ」という語句がデータパケットで搬送される様々なタイプのデータを表すために使用される。本発明の実施形態では、データパケットはPCIeパケットでもよい。
【００５３】
本発明の実施形態では、ポータルは、ホストによりNVMeコントローラに対して開放されるアドレス空間であり、ポータルアドレスは具体的にはPCIeアドレスでもよく、データパケットはPCIe書き込みパケットでもよい。NVMeコントローラは、ポータルを通じてデータパケットをホストに送信し、データパケットはポータルアドレスを搬送する。データパケットを受信した後に、ホストは、ポータルアドレスを識別し、対応するストレージ空間をローカル内部メモリ内のポータルに割り当て、ペイロードデータをポータルアドレスにより示されるストレージ空間に書き込む代わりに、キャッシュのために、データパケットで搬送されたペイロードデータを割り当てられたストレージ空間に書き込む。内部メモリは、具体的にはホストのプライベートメモリ空間でもよい。
【００５４】
本発明の実施形態では、読み取り操作は、NVMeコマンドセットにおいて、ホストによりNVMeコントローラからデータを読み取るいずれかの操作でもよい。読み取り操作を示すための命令は読み取り命令である。読み取り命令の具体的な実現方式は、発行キューエントリでもよい。
【００５５】
本発明の実施形態では、コマンドイニシエータ及びデータイニシエータは、同じ主体又は分離した主体でもよい。コマンドイニシエータは、NVMeコントローラへの命令を直接トリガするシステム主体であり、また、本発明の実施形態ではコマンドソースとも呼ばれる。データイニシエータは、データを読み取ってデータを消費する必要があるシステム主体、すなわち、データアクセス要求を開始するために使用されるシステム主体であり、また、本発明の実施形態ではデータソースとも呼ばれる。コマンドソース及びデータソースが分離しているシナリオにおいて、データソースは、コマンドソースを使用することによりデータを読み取る必要がある。本発明の実施形態では、「ホスト」という語は、データソース及びコマンドソースが分離しているシナリオにおいてコマンドソースを示してもよく、或いは、データソース及びコマンドソースが分離していないシナリオにおいてNMVeコントローラと通信する計算デバイスを示してもよい。
【００５６】
従来の方式では、ホストがNVMe読み取り操作を実行するとき、読み取り対象のデータを記憶するために使用されるストレージ空間のアドレス情報は、DPTR又はMPTRを使用することにより、トリガされたSQEで搬送され、NVMeコントローラは、SQEに基づいて、に基づいて、読み取り対象のデータを、アドレス情報により示されるストレージ空間に書き込む。ホストによりSQEを発行することから、読み取り操作が完了したことを示すためにNVMeコントローラにより使用される完了キューエントリをホストにより取得するまでの期間に、ホストは、読み取り対象のデータを記憶するために使用さるストレージ空間の所有権を失う。言い換えると、ホストは、読み取り操作が完全に完了するまで待機する必要があり、次いで、ストレージ空間に記憶されたデータにアクセスできる。
【００５７】
図1は、本発明の実施形態によるNVMeシステム100のアーキテクチャ図である。図１に示すように、システム100内のデータソース101及びコマンドソース103は、同じ主体ではなく、分離しており、ネットワーク102を通じて相互接続される。コマンドソース103は、PCIeバスを通じてNVMeコントローラ105に接続されてもよく、NVMeコントローラ105は、ストレージ媒体106に接続される。
【００５８】
本発明のこの実施形態では、ストレージ媒体106はまた、通常では、外部メモリとも呼ばれ、一般的には不揮発性ストレージ媒体であり、データを永続的に記憶するように構成されてもよい。ストレージ媒体106は、磁気媒体(例えば、フロッピーディスク、ハードディスク又は磁気テープ)、光媒体(例えば、コンパクトディスク)、半導体媒体(例えば、フラッシュ(Flash)メモリ)等でもよい。ストレージ媒体106の具体的な実現方式は、本発明のこの実施形態では限定されない。いくつかの実施形態では、ストレージ媒体106は、NVMeコントローラ105から分離した遠隔メモリ、例えば、ネットワークを通じてNVMeコントローラ105に接続されたネットワークストレージ媒体を更に含んでもよい。
【００５９】
本発明のこの実施形態では、ネットワーク102は、データソース101とコマンドソース103との間のいずれかの相互接続方式又は相互接続プロトコル等を示すために使用されてもよく、例えば、PCIeバス、コンピュータデバイスの内部相互接続バス、インターネット、イントラネット（英文:intranet）、ローカルエリアネットワーク(英文フルネーム:local  area  network,  略称LAN)、広域ネットワーク(英文フルネーム:wide  area  network,  略称WAN)又はストレージエリアネットワーク(英文フルネーム:storage  area  network,  略称SAN)又は上記のネットワークのいずれかの組み合わせでもよい。
【００６０】
システム100において、データソース101は、コマンドソース103を使用することによりNVMeコントローラ105と通信する必要がある。従来の方式では、コマンドソース103によりトリガされた読み取り命令は、読み取り対象のデータを記憶するために使用されるストレージ空間のアドレス情報を搬送する必要がある。読み取り操作が実行されるとき、読み取り対象のデータは、まず、NVMeコントローラ105により制御されるストレージ媒体106からコマンドソース103に完全に転送される必要がある。読み取り操作が完了したことを示すCQEを取得した後に、コマンドソース103は、データをデータソース101に送信してもよい。
【００６１】
具体的には、図２に示すように、従来の方式に基づいて、データソースがストレージ媒体からデータを読み取る必要があるとき、データソースは、まず、読み取り要求をコマンドソースに送信する。コマンドソースは、データソースから受信した読み取り要求に基づいて、SQEを発行キュー(英文フルネーム:submission  queue,  略称SQ)に書き込み、SQEのDPTRフィールド又はMPTRフィールドを使用することにより、読み取り対象のデータを受信するために使用されるアドレス情報を搬送する。次いで、コマンドソースは、ドアベル機構を使用することにより、新たなSQEが存在することをNVMeコントローラに通知する。ドアベルを受信した後に、NVMeコントローラは、SQからSQEを読み取り、SQEで搬送されたアドレス情報に基づいてPCIe書き込み命令を使用することにより、読み取り対象のデータを、アドレス情報により示されるストレージ空間に完全に書き込む。読み取り操作が完了した後に、NVMeコントローラは、CQEを完了キュー(英文フルネーム:completion  queue,  略称CQ)に書き込み、割り込み機構を使用することによりコマンドソースに通知する。コマンドソースは、CQEを取得するために割り込みを処理し、読み取り対象のデータをデータソースに送信する。
【００６２】
読み取り命令を開始する前に、コマンドソースが読み取り対象のデータを受信するために使用されるストレージ空間を予約する必要があり、CQEを取得する前にストレージ空間のこの部分の所有権を失うことが、図２から習得できる。言い換えると、コマンドソースは、読み取り対象のデータがストレージ空間に完全に書き込まれるまで待機する必要があり、次いで、データをデータソースに送信できる。このプロセスの遅延は、読み取り対象のデータのサイズに正比例する。さらに、コマンドソースは、読み取り対象のデータを記憶するためにNVMeコントローラによりアドレス指定可能な大量のメモリ空間を必要とし、メモリ空間のこの部分は、コマンドソースによりメモリを読み取り対象のデータに割り当てることから、NVMeコントローラCQEにより解放されたメモリをコマンドソースにより取得するまでの期間に常に占有される。
【００６３】
図３は、この出願の実施形態によるホスト300の概略構造図である。
【００６４】
図３に示すように、ホスト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は、シングルコアプロセッサ又はマルチコアプロセッサでもよい。
【００６５】
本発明のこの実施形態では、プロセッサ301は、レジスタを更に含んでもよい。レジスタのアドレス情報は、PCIeアドレスとしてNMVeコントローラに対して開放されてもよい。
【００６６】
この出願の実施形態では、プロセッサ301は、読み取り操作ロジック310を更に含んでもよく、読み取り操作ロジック310は、プロセッサ301に統合された特定のハードウェア回路又はファームウェアモジュールでもよい。読み取り操作ロジック310が特定のハードウェア回路である場合、読み取り操作ロジック310は、この出願の実施形態における方法を実行する。読み取り操作ロジック310がファームウェアモジュールである場合、プロセッサ310は、この出願の実施形態における技術的解決策を実現するために、読み取り操作ロジック310内のファームウェアコードを実行する。読み取り操作ロジック310は、(1)読み取り命令をトリガするように構成されたロジック(回路/ファームウェアコード)であり、読み取り命令は、指示情報を搬送し、指示情報は、NVMeコントローラによりアドレス指定可能な第1のアドレスを示すために使用される、ロジックと、(2)NVMeコントローラにより送信されたデータパケットを受信するように構成されたロジック(回路/ファームウェアコード)であり、データパケットは、第1のアドレス及びペイロードデータを搬送する、ロジックと、(3)第1のアドレスに基づいて、ホストによりアドレス指定可能な第2のアドレスを決定するように構成されたロジック(回路/ファームウェアコード)と、(4)ペイロードデータを第2のアドレスにより示されるストレージユニットに書き込むように構成されたロジック(回路/ファームウェアコード)とを含む。
【００６７】
バス309は、ホスト300のコンポーネントの間で情報を送信するように構成され、有線接続方式又は無線接続方式を使用してもよい。これは、この出願では限定されない。バス309は、入力/出力インタフェース305及び通信インタフェース303に更に接続される。
【００６８】
入力/出力インタフェース305は、入力/出力デバイスに接続され、入力情報を受信し、操作結果を出力するように構成される。入力/出力デバイスは、マウス、キーボード、ディスプレイ、CD-ROMドライブ等でもよい。
【００６９】
通信インタフェース303は、他のデバイス又はネットワークとの通信を実現するように構成され、他のデバイス又はネットワークに有線又は無線で接続されてもよい。例えば、ホスト300は、通信インタフェース303を通じてNVMeコントローラに接続されてもよい。ホスト300は、通信インタフェース303を通じてネットワークに更に接続され、ネットワークを通じてNVMeコントローラに接続されてもよい。
【００７０】
この出願の実施形態のいくつかの特徴は、システムメモリ302内のソフトウェアコードを実行することにより、プロセッサ301により実現/サポートされてもよい。システムメモリ302は、いくつかのソフトウェア、例えば、オペレーティングシステム308(例えば、Darwin、RTXC、LINUX、UNIX、OS  X、WINDOWS、mac  OS又は組み込みオペレーティングシステム(例えば、Vxworks))、アプリケーションプログラム307及び読み取り操作モジュール306を含んでもよい。
【００７１】
この出願の実施形態では、プロセッサ301は、この出願の実施形態における技術的解決策を実現するために、読み取り操作モジュール306を実行する。読み取り操作モジュール306は、(1)読み取り命令をトリガするために使用されるコードであり、読み取り命令は、指示情報を搬送し、指示情報は、NVMeコントローラによりアドレス指定可能な第1のアドレスを示すために使用される、コードと、(2)NVMeコントローラにより送信されたデータパケットを受信するために使用されるコードであり、データパケットは、第1のアドレス及びペイロードデータを搬送する、コードと、(3)第1のアドレスに基づいて、ホストによりアドレス指定可能な第2のアドレスを決定するために使用されるコードと、(4)ペイロードデータを第2のアドレスにより示されるストレージユニットに書き込むために使用されるコードとを含む。
【００７２】
さらに、図３は、ホスト300の単なる例を示している。ホスト300は、図３に示すものよりも多い或いは少ないコンポーネントを含んでもよく、或いは、異なるコンポーネント構成方式を有してもよい。さらに、図３に示す様々なコンポーネントは、ハードウェア、ソフトウェア又はハードウェアとソフトウェアとの組み合わせにより実現されてもよい。
【００７３】
読み取り命令遅延を短縮し、読み取り操作により占有されるメモリ空間を低減するために、本発明の実施形態は、NVMeベースのデータ読み取り方法を提供する。図４に示すように、当該方法400は、以下のステップを含む。
【００７４】
ステップ401:ホストは、読み取り命令をトリガし、読み取り命令は、指示情報を搬送し、指示情報は、NVMeコントローラによりアドレス指定可能な第1のアドレスを示すために使用される。
【００７５】
本発明のこの実施形態では、読み取り命令は、具体的にはSQEでもよい。以下の説明では、SQEが説明のために読み取り命令の例として使用される。しかし、本発明のこの実施形態では、第1の読み取り命令の具体的な実現方式は限定されないことが理解されるべきである。
【００７６】
ホストによりNMVeコントローラへの読み取り命令をトリガするプロセスについては、NVMe標準を参照する。具体的には、ホストは、SQEをSQに書き込み、ドアベル機構を使用することにより新たなSQEが存在することをNVMeコントローラに通知する。NVMeコントローラは、ドアベル機構に基づいてSQからSQEを取得する。本発明のこの実施形態では、ホストは、SQEをNVMeコントローラに更に直接プッシュしてもよい。ホストによりNVMeコントローラへの読み取り命令をトリガする具体的なプロセスは、本発明のこの実施形態では限定されない。
【００７７】
本発明のこの実施形態では、ホストは、ホストのストレージ空間の一部をNVMeコントローラに対して開放してもよい。より具体的には、ホストは、ホストのストレージ空間の一部をPCIeストレージ空間としてNVMeコントローラに開放してもよく、NVMeコントローラは、PCIeアドレスに基づいてストレージ空間の一部にアクセスしてもよい。ベースアドレスレジスタ(Base  Address  Register,  BAR)が説明のために例として使用される。ホストは、PCIeストレージ空間としてBARをNVMeコントローラに開放し、BARのPCIeアドレスの一部を複数のポータル(portal)に編成する。各ポータルは、NVMeコントローラによりアドレス指定可能な特定のPCIeアドレス空間を占有し、ポータルアドレスは、ポータルの最初のPCIeアドレスでもよい。ホストによりトリガされた読み取り命令で搬送される指示情報は、特定のポータルを示すために使用されてもよく、第1のアドレスは、ポータルアドレス又はポータルアドレスのいくつかのフィールドでもよい。ポータルは、NVMeコントローラがホストに対してPCIe書き込み操作を実行するデータポータルである。以下の説明では、ポータルの機能についてより詳細に説明する。各ポータルが特定の読み取り操作に一意に対応するという条件で、PCIeアドレス空間内のポータルを編成する方式は、本発明では限定されない。
【００７８】
本発明のこの実施形態では、ホストは、ホストのベースアドレスレジスタのPCIeアドレスの一部をアパーチャ(aperture)に編成してもよく、各アパーチャは複数のポータル(portal)を含む。具体的には、ポータルはアレイの形式で編成されてもよく、ポータルはアレイベースアドレスにポータルオフセットを加えたものに基づいてアドレス指定される。アレイは、アパーチャと呼ばれる。図５は、ベースアドレスレジスタの概略構造図である。各アパーチャは、ポータルP0〜PNのグループを含み、各ポータルは、特定の読み取り操作に一意に関連付けられる。「一意」は、ホストがいつでも1つの特定のポータルに関連付けられる1つのNVMe読み取り操作のみを開始できることを意味する。
【００７９】
より具体的には、図６に示すように、本発明のこの実施形態では、アパーチャは、メタデータアパーチャとデータアパーチャとに分類されてもよい。NVMeコントローラは、データアパーチャに含まれるポータルDP0〜DPNを通じてPCIe書き込み操作を実行することによりデータをホストに書き込み、メタデータアパーチャに含まれるポータルMP0〜MPNを通じてメタデータをホストに書き込む。説明を容易にするために、以下の説明では、特に断りのない限り、メタデータ及びデータは、本発明の実施形態においてまとめてデータと呼ばれる。
【００８０】
図７は、本発明の実施形態によるPCIeデータパケット内のPCIeアドレス構造を示す。図７に示すように、PCIeアドレス構造は、BARベースアドレスと、アパーチャオフセットと、ポータルオフセットとを含む。BAR及びアパーチャオフセットは、アパーチャを一意に決定するために使用され、ポータルオフセットは、アパーチャ内の特定のポータルを示すために使用される。
【００８１】
本発明のこの実施形態では、ポータルは、PCIeアドレス空間内に更にランダムに分散してもよく、PCIe空間内にランダムに分散したポータルは、いずれかの「データポータル」及び「メタデータポータル」と呼ばれる。
【００８２】
本発明のこの実施形態では、指示情報は、特定のポータルを示すために使用され、NVMeコントローラは、指示情報に基づいてポータルを一意に決定してもよい。指示情報の具体的な形式は、本発明では限定されない。
【００８３】
本発明のこの実施形態では、指示情報は明示的なアドレスでもよく、指示情報は、ポータルの特定のPCIeアドレス又はポータルアドレスのいくつかのフィールドでもよく、具体的には、指示情報は、第1のアドレス又は第1のアドレスのいくつかのフィールドでもよい。例えば、ポータルがアレイに編成される場合、指示情報は、ポータルのポータルオフセットでもよく、BARベースアドレス及びアパーチャオフセットは、NVMeコントローラが取得するホストの構成情報として使用されてもよい。NVMeコントローラは、指示情報に基づいてポータルの完全なPCIeアドレスを決定してもよい。この場合、SQEのフォーマットは、NVMe標準で指定されているフォーマットと一致してもよい。
【００８４】
本発明のこの実施形態では、指示情報は、代替として、暗示的なアドレスでもよい。例えば、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のアドレスを決定してもよい。
【００８５】
NVMeコントローラが指示情報に基づいて第1のアドレスを決定できるという条件で、本発明のこの実施形態では、指示情報の具体的な実現方式は限定されない。第1のアドレスは読み取り操作に対応するポータルを示すために使用され、具体的にはポータルアドレス又はポータルアドレスのいくつかのフィールドである。
【００８６】
ステップ402:ホストは、NVMeコントローラにより送信された第1のデータパケットを受信し、第1のデータパケットは、第1のアドレス及び第1のペイロードデータを搬送する。
【００８７】
本発明のこの実施形態では、データパケットはPCIe書き込み操作パケットでもよい。より具体的には、データパケットはトランザクションレイヤパケット(transaction  layer  packet,  TLP)でもよく、ペイロードデータはTLPで搬送されるペイロード(payload)でもよく、第1のアドレスは、TLP内のPCIeアドレス又はTLP内のPCIeアドレスの一部でもよい。
【００８８】
NVMeコントローラは、指示情報と第1のアドレスとの間のマッピング関係を維持する。第1のアドレスは、具体的には、読み取り操作に対応するポータルアドレスでもよい。読み取り命令を取得した後に、NVMeコントローラは、指示情報の具体的な実現方式に基づいて第1のアドレスを決定し、読み取り命令に基づいてストレージ媒体からデータを読み取り、第1のアドレス及び読み取られたデータに基づいてTLPをカプセル化し、TLPをホストに送信する。
【００８９】
ステップ403:ホストは、第1のアドレスに基づいて、ホストによりアドレス指定可能な第2のアドレスを決定する。
【００９０】
第1のアドレスは、PCIeの書き込み操作のポータルを示すために使用される。NVMeコントローラは、ポータルを通じて読み取り操作のデータをホストに書き込む。「ポータル」は、ホストのPCIeアドレス空間の範囲を表す。NVMeコントローラにより送信されたデータパケットをポータルから受信した後に、ホストは、第1のアドレスを取得するためにデータパケットを解析する。しかし、ホストは、ペイロードデータを記憶するために第1のアドレスにより示されるストレージ空間を使用しないが、第1のアドレス及び予め設定された対応関係に基づいてホストの内部メモリにおいて、ペイロードデータを実際に記憶するために使用されるストレージユニットの第2のアドレスを決定する。
【００９１】
第2のアドレスにより示されるストレージユニットは、ホストの内部メモリ空間でもよく、PCIeアドレスを使用することにより提示されない。言い換えると、ペイロードデータを記憶するためにホストにより使用される内部メモリは、もはやPCIeアドレス指定方式でホストによりアクセスされなくてもよく、コマンドメモリバッファ(Command  memory  Buffer,  CMB)ではないか、或いは、CMBとして使用されない。第2のアドレスにより示されるストレージユニットは、データのための読み取りバッファとして機能してもよい。
【００９２】
第1のアドレスは、特定の「ポータル」を示すために使用される。ポータルからデータパケットを受信した後に、ホストは、第1のアドレスを第2のアドレスにマッピングする。具体的には、ホストは、メモリマッピングテーブルMTTを使用することにより、第1のアドレスを第2のアドレスにマッピングしてもよい。ホストは、各ポータルについて1つのMTTエントリを維持してもよく、各エントリは、ポータルを対応するストレージユニットに関連付けてもよい。ストレージユニットは、固定サイズのストレージ空間でもよい。以下の説明では、ストレージユニットはまた、読み取りページとも呼ばれる。読み取り命令をトリガする前に、ホストは、第2のアドレスにより示されるストレージユニットを読み取り命令に割り当て、MTTエントリを使用することにより第1のアドレスと第2のアドレスとの間の対応関係を記録する。
【００９３】
本発明のこの実施形態では、ポータルは、読み取り操作と1対1の対応関係にある。1つの読み取り操作において、読み取り対象のデータのサイズに基づいて、読み取り命令の読み取り対象のデータは、少なくとも2つのデータパケットに対応してもよく、ホストはまた、少なくとも2つのストレージユニットを読み取り命令に割り当ててもよい。
【００９４】
読み取りページのサイズは、本発明では限定されないが、NVMeコントローラの読み取りメモリブロックは、整数個の読み取りページを含むことが推奨される。ストレージ媒体からデータを読み取った後に、NVMeコントローラは、検査及び誤り訂正のためにデータを誤り訂正バッファに配置し、次いで、誤り訂正後に取得されたデータを「ポータル」に書き込む。誤り訂正バッファはまた、読み取りメモリブロックとも呼ばれる。
【００９５】
本発明の実施形態では、ホストは、ホストのメモリを読み取りページプールに編成してもよい。読み取り操作を開始する前に、ホストは、読み取りページプールにおいて、読み取り操作により必要とされる読み取りページの量を割り当て、読み取り操作に対応するポータルのMTTエントリを初期化する。MTTエントリは、ポータルアドレスと読み取りページアドレスとの間の対応関係を記録する。図８Ａ及び図８Ｂは、本発明の実施形態によるMMTエントリの概略図である。MTTエントリは、ポータルと読み取りページとの間の対応関係を記録する。図面に示すように、ポータルXに対応する読み取りページは、読み取りページ1、読み取りページ7及び読み取りページ4である。ポータルYに対応する読み取りページは、読み取りページ2、読み取りページ13、読み取りページ8及び読み取りページ0である。
【００９６】
本発明のこの実施形態では、読み取りページは固定サイズのストレージ空間である。読み取りページのサイズは、読み取り対象のデータのサイズよりも小さくてもよい。したがって、読み取り操作は1つより多くの読み取りページを必要としてもよい。割り当て中に、ホストは、少なくとも2つの読み取りページを読み取り命令に割り当ててもよい。ホストが複数の読み取りページを読み取り操作に割り当ててもよい場合、第2のアドレスは、読み取りページのうち1つを示す。ホストは、第1のアドレス及び読み取り対象のデータ内のペイロードデータの順序に基づいて、第2のアドレスを決定してもよい。
【００９７】
ホストにより読み取り対象のデータ内のペイロードデータの順序を決定する方式は、本発明のこの実施形態では限定されない。NVMeコントローラがPCIe書き込み操作を実行するときに順序保存が確保される場合、ホストは、データパケットを受信する順序に基づいて、読み取り対象のデータ内のペイロードデータの順序を決定してもよい。例えば、NVMeコントローラは、第2のデータパケットをホストに更に送信し、第2のデータパケットは、第1のアドレス及び第2のペイロードデータを搬送し、第2のペイロードデータはまた、読み取り対象のデータに属する。第2のデータパケットを受信した後に、ホストは、第1のデータパケット及び第2のデータパケットを受信する順序に基づいて、読み取り対象のデータ内の第1のペイロードデータ及び第2のペイロードデータの順序を決定してもよい。NMVeコントローラがPCIe書き込み操作を実行するときに順序保存が確保されない場合、データパケットは、読み取り対象のデータ内のペイロードデータのオフセットを更に搬送してもよく、オフセットは、読み取り対象のデータ内のペイロードデータの順序を示すために使用される。
【００９８】
本発明のこの実施形態では、NVMeコントローラは、順序保存方式又は非順序保存方式でデータパケットを送信してもよい。例えば、NVMeコントローラは、以下の2つの順序モードのいずれか又は双方をサポートしてもよい。
【００９９】
「厳密」モード
このモードでは、NVMeコントローラは、データオフセットの単調に増加する順序でデータパケットを送信する。ホストは、データパケットの順序に基づいてペイロードデータを受信する。このモードでは、オフセットは必要とされない。具体的には、図７に示すポータル幅は、2bit(標準で指定される)のみでもよい。
【０１００】
「緩和」モード
緩和モードでは、NVMeコントローラは、任意の順序でPCIe書き込みトランザクションを送信してもよいが、データパケットは、データオフセットを搬送する必要がある。本発明のこの実施形態では、NVMeコントローラは、読み取り操作の論理ブロックを同時に処理してもよい。具体的には、NVMeコントローラは、ストレージ媒体から異なる論理ブロックに対応するデータを読み取り、それぞれ、検査のためにデータを異なる読み取りメモリブロックに配置してもよい。異なる読み取りメモリブロックは異なる時間に検査を完了するので、読み取りメモリブロックは、厳密に論理ブロックの順序に従ってホストに書き込まれなくてもよく、第1の論理ブロックに対応する読み取りメモリブロックは、最後の論理ブロックに対応する読み取りメモリブロックよりも後にターゲットのメモリに書き込まれてもよい。NVMeコントローラは、トランザクションパケットで搬送されたデータオフセットに基づいてデータを再編成する。このモードでは、データパケットは、データオフセットを搬送する必要がある。言い換えると、図７に示すポータル幅は、最大データ送信サイズ以上である必要がある。
【０１０１】
S404:ホストは、第1のデータパケット内の第1のペイロードデータを第2のアドレスにより示されるストレージユニットに書き込む。
【０１０２】
NVMeコントローラにより送信されたデータパケットを受信した後に、ホストは、第1のアドレスに基づいて第2のアドレスを決定し、次いで、ペイロードデータを第2のアドレスにより示されるストレージユニットに書き込む。
【０１０３】
本発明のこの実施形態では、第2のアドレスにより示されるストレージユニットに対して書き込み操作を完了した後に、ホストは、第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行してもよく、言い換えると、ホストは、データを消費してもよく、例えば、データを他のエンティティに送信してもよい。本発明のこの実施形態では、読み取りページに関連するデータが完全に読み取りページに書き込まれた後に、ホストは、読み取りページに対して書き込み操作を完了する。言い換えると、読み取りページに関連する最後のTLP内のデータが読み取りページに書き込まれた後に、ホストは、読み取りページに対して書き込み操作を完了する。
【０１０４】
本発明のこの実施形態では、1つの読み取り操作は、複数の読み取りページを有してもよい。全体の読み取り操作を完了する前に、ホストは、いくつかの読み取りページに対して書き込み操作を完了してもよい。1つの読み取りページに対して書き込み操作を完了した後に、ホストは、全体の読み取り操作が完了するまで待機する必要なく、読み取りページ内のデータを使用してもよい。
【０１０５】
図９Ａ及び図９Ｂに示すように、読み取り対象のデータのサイズは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内のデータを処理してもよい。本発明のこの実施形態では、ホストが読み取りページに記憶されたデータを処理することは、具体的には、データを消費することであり、例えば、データを他の主体に送信することであり、ホストは、読み取り対象のデータが完全に書き込まれるまで待機する必要なく、読み取り対象のデータに対して操作を実行してもよい。本発明のこの実施形態では、パイプライン処理方式が実現され、それにより、読み取り操作遅延を短縮する。
【０１０６】
本発明のこの実施形態では、第2のアドレスにより示されるストレージユニットの処理を完了した後に、ホストは、他の読み取り操作の使用のためにストレージユニットを解放してもよい。例えば、図９Ａ及び図９Ｂにおける実施形態では、読み取りページ8に記憶されたデータの処理を完了した後に、ホストは、全体の読み取り操作が完了して全ての読み取り対象のデータが処理されるまで待機する必要なく、他の読み取り操作の使用のために、読み取りページ8を読み取りページプールに解放し、読み取り操作により占有されたストレージ空間を解放してもよく、それにより、ストレージ空間の占有を低減する。
【０１０７】
読み取り操作を完了した後に、NVMeコントローラは、完了キューエントリCQEをトリガするように更に構成され、CQEは、NVMeコントローラが読み取り命令により指定された読み取り操作を完了したことを示すために使用され、ホストは、完了キューエントリCQEを取得するように更に構成される。本発明のこの実施形態では、ホストは、第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行した後にのみ、CQEを取得してもよい。
【０１０８】
本発明の実施形態において開示される技術的解決策によれば、ホストは、データポータルアドレスとしてNVMeコントローラに対して第1のアドレスを開放し、それにより、NVMeコントローラは、第1のアドレスを使用することにより、読み取り対象のデータをホストに書き込む。NVMeコントローラにより送信されたデータパケットで搬送された宛先アドレスは、第1のアドレスである。データパケットを受信した後に、ホストは、データパケット内のペイロードデータを、第1のアドレスにより示されるストレージ空間に真に書き込むのではなく、第1のアドレスを第2のアドレスにマッピングし、データパケット内のペイロードデータを、第2のアドレスにより示されるストレージ空間に書き込む。第2のアドレスにより示されるストレージ空間は、ホストのプライベートメモリ空間でもよく、それにより、ペイロードデータを記憶するためのストレージ空間と通信プロトコルとの間の関係が壊され、ホストは、通信プロトコルにより制限されることなく、第2のアドレスにアクセスする。読み取り命令が完了する前に、ホストは、第2のアドレスにより示されるストレージ空間に記憶されたデータを使用し、他の読み取り操作の使用のために、第2のアドレスにより示されるストレージ空間を早期に解放してもよい。本発明の実施形態において開示される技術的解決策によれば、読み取り操作遅延が短縮でき、読み取り対象のデータを記憶するために使用されるストレージ空間が低減できる。
【０１０９】
図１０００は、本発明の実施形態による、NVMeベースの読み取り方法の相互作用フローチャートである。図１０００に示すように、方法1000の適用シナリオにおいて、データソース及びコマンドソースは分離している。データソースは、コマンドソースを使用することにより、読み取り対象のデータをデータソースのストレージ空間に読み取る必要がある。データソース及びコマンドソースが分離している具体的なシナリオは、本発明のこの実施形態では限定されない。
【０１１０】
例えば、本発明のこの実施形態では、データソース及びコマンドソースが分離しているシナリオは、NOF(英文フルネーム:NVMe  over  fabric,  略称NOF)に基づく単なるフラッシュの束(英文フルネーム:Just  a  Bunch  Of  Flash,  略称JBOF)でもよい。図１１（ａ）に示すように、データソースは、ストレージ媒体にアクセスすることを必要とするホストであり、コマンドソースは、ファブリックを使用することによりホストに接続されたNOFブリッジである。より具体的には、コマンドソースは、NOFブリッジ内のNOFエンジンでもよい。NOFブリッジは、PCIeバスを通じてNVMeコントローラに接続され、NVMeコントローラは、ストレージ媒体に接続される。
【０１１１】
本発明のこの実施形態では、データソース及びコマンドソースが分離しているシナリオにおいて、データソース及びコマンドソースは、さらにホスト及び暗号アクセラレータでもよい。図１１（ｂ）に示すように、データソースはホストであり、コマンドソースはホストに接続された暗号アクセラレータである。より具体的には、コマンドソースは、暗号アクセラレータのアクセラレーションエンジンである。暗号アクセラレータは、PCIeバスを通じてNVMeコントローラに接続され、NVMeコントローラは、ストレージ媒体に接続される。
【０１１２】
本発明のこの実施形態では、読み取り操作を実行するとき、コマンドソースは、読み取り対象のデータのポータルアドレスの指示情報をSQEに追加する。ポータルアドレスは、本質的には、NMVeコントローラにより選択できるPCIeアドレスのセグメントでもよい。SQEを取得した後に、NVMeコントローラは、PCIe書き込み操作を実行することによりTLPをコマンドソースに送信し、PCIeアドレスをTLPに追加する。TLPパケットを受信した後に、コマンドソースは、PCIeアドレスを取得するためにTLPパケットを解析し、PCIeアドレスとローカルメモリとの間のマッピング関係に基づいて、PCIeアドレスに対応するローカルストレージユニットを決定し、次いで、TLP内のペイロードデータを決定されたストレージユニットに書き込む。1つのポータルは、複数のストレージユニットに対応してもよい。ストレージユニットに対して書き込み操作が完了すると、コマンドソースは、ストレージユニットに記憶されたデータに対して操作を実行してもよい。ストレージユニットに対して書き込み操作が競合することは、ストレージユニットに対応する最後のTLPのペイロードデータをストレージユニットに書き込むことを示す。読み取り対象のデータのいくつかのデータを取得した後に、コマンドソースは、全体の読み取り操作が完了するまで待機する必要なく、取得されたデータをデータソースに送信し、読み取り対象のデータをデータソースに送信してもよい。図１０に示すように、読み取り対象のデータは、データ1、データ2、データ3及びデータ4を含み、データ1、データ2、データ3及びデータ4のそれぞれは、1つのストレージユニットに対応してもよい。ストレージユニットのデータを受信した後に、コマンドソースは、ストレージユニットのデータをデータソースに送信してもよい。ストレージユニットのデータをデータソースに送信した後に、コマンドソースは、他の読み取り操作の使用のために、対応するストレージユニットを解放してもよい。
【０１１３】
本発明の実施形態において開示される技術的解決策によれば、コマンドソースは、ローカルメモリとPCIeアドレスとの間のマッピング関係を確立し、受信したTLP内のペイロードデータをコマンドソースのメモリ空間に書き込み、それにより、データに対するパイプライン操作が実現できる。具体的には、いくつかのデータを受信した後に、コマンドソースは、受信したデータをデータソースに送信してもよく、NVMeコントローラにより送信されたデータを受信することと、データをデータソースに送信することとが同時に処理でき、それにより、データをキャッシュするために使用されるストレージ空間を低減し、読み取り操作の処理速度を増加させる。
【０１１４】
図１２は、この出願の実施形態による計算デバイス1200の論理構造の概略図である。図１２に示すように、計算デバイス1200は、
NVMeコントローラへの読み取り命令をトリガするように構成された処理ユニット1202であり、読み取り命令は、指示情報を搬送し、指示情報は、第1のアドレスを示すために使用され、第1のアドレスは、NVMeコントローラによりアドレス指定可能なアドレスである、処理ユニット1202と、
NVMeコントローラにより送信された第1のデータパケットを受信するように構成された受信ユニット1204であり、第1のデータパケットは、第1のアドレス及び第1のペイロードデータを搬送する、受信ユニット1204と
を含む。
【０１１５】
処理ユニット1202は、第1のアドレスに基づいて第2のアドレスを決定し、第1のペイロードデータを第2のアドレスにより示されるストレージユニットに書き込む。第2のアドレスは、処理ユニット1202によりアドレス指定可能なアドレスである。
【０１１６】
任意選択で、第2のアドレスにより示されるストレージユニットに対して書き込み操作を完了した後に、処理ユニット1202は、第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行するように更に構成される。
【０１１７】
第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行した後に、処理ユニット1202は、NVMeコントローラによりトリガされた完了キューエントリCQEを取得するように更に構成され、CQEは、NVMeコントローラが読み取り命令により指定された読み取り操作を完了したことを示すために使用される。
【０１１８】
第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行した後に、処理ユニット1202は、第2のアドレスにより示されるストレージユニットを解放するように更に構成される。
【０１１９】
読み取り命令をトリガする前に、処理ユニット1202は、第2のアドレスにより示されるストレージユニットを読み取り命令に割り当て、第1のアドレスと第2のアドレスとの間の対応関係を記録するように更に構成される。
【０１２０】
任意選択で、読み取り命令の読み取り対象のデータは、少なくとも2つのデータパケットに対応し、処理ユニット1202は、少なくとも2つのストレージユニットを読み取り命令に割り当てる。
【０１２１】
処理ユニット1202は、第1のアドレス及び読み取り対象のデータ内の第1のペイロードデータの順序に基づいて、第2のアドレスを決定してもよい。
【０１２２】
任意選択で、受信ユニット1204は、NVMeコントローラにより送信された第2のデータパケットを受信するように更に構成され、第2のデータパケットは、第1のアドレス及び第2のペイロードデータを搬送する。処理ユニット1202は、第1のデータパケット及び第2のデータパケットを受信する順序に基づいて、読み取り対象のデータ内の第1のペイロードデータ及び第2のペイロードデータの順序を決定するように更に構成される。
【０１２３】
任意選択で、第1のデータパケットは、読み取り対象のデータ内の第1のペイロードデータのオフセットを更に搬送し、オフセットは、読み取り対象のデータ内の第1のペイロードデータの順序を示すために使用される。
【０１２４】
本発明のこの実施形態では、第1のアドレスは、NVMeコントローラによりアドレス指定可能なPCIeアドレスでもよく、第1のデータパケットは、PCIeパケットであり、第2のアドレスにより示されるストレージユニットは、計算デバイスのメモリ空間でもよい。
【０１２５】
この出願のこの実施形態では、処理ユニット1202は、図３におけるプロセッサ301内の読み取り操作ロジック310により、或いは、図３におけるプロセッサ301及びシステムメモリ302内の読み取り操作モジュール306により具体的に実現されてもよい。受信ユニット1204は、図３の実施形態におけるプロセッサ301及び通信インタフェース303により実現されてもよい。
【０１２６】
この出願のこの実施形態は、上記の実施形態に対応するホストの装置の実施形態であり、上記の実施形態における特徴の説明は、この出願のこの実施形態に適用可能である。詳細は、ここでは再び説明しない。
【０１２７】
上記の実施形態は、単にこの出願の技術的解決策を説明することを意図するものであり、この出願を限定することを意図するものではない。この出願について、上記の実施形態を参照して詳細に説明したが、当業者は、特許請求の範囲から逸脱することなく、依然として上記の実施形態に記載の技術的解決策に修正を行ってもよく、或いは、そのいくつかの技術的特徴に置き換えを行ってもよいことを理解するべきである。
【図１】
2021515318.tif 000003
【図２】
2021515318.tif 000004
【図３】
2021515318.tif 000005
【図４】
2021515318.tif 000006
【図５】
2021515318.tif 000007
【図６】
2021515318.tif 000008
【図７】
2021515318.tif 000009
【図８Ａ】
2021515318.tif 000010
【図８Ｂ】
2021515318.tif 000011
【図９Ａ】
2021515318.tif 000012
【図９Ｂ】
2021515318.tif 000013
【図１０】
2021515318.tif 000014
【図１１（ａ）】
2021515318.tif 000015
【図１１（ｂ）】
2021515318.tif 000016
【図１２】
2021515318.tif 000017
【手続補正書】
【提出日】令和2年8月27日(2020.8.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
NVMeベースのデータ読み取りシステムであって、
当該システムは、ホストと、NVMeコントローラと、ストレージ媒体とを含み、
前記ストレージ媒体は、データを記憶するように構成され、
前記ホストは、読み取り命令をトリガするように構成され、前記読み取り命令は、指示情報を搬送し、前記指示情報は、第1のアドレスを示すために使用され、前記第1のアドレスは、前記NVMeコントローラによりアドレス指定可能なアドレスであり、
前記NVMeコントローラは、前記読み取り命令を取得し、前記ストレージ媒体から、前記読み取り命令に対応する読み取り対象のデータを読み取り、第1のデータパケットを前記ホストに送信するように構成され、前記第1のデータパケットは、前記第1のアドレス及び第1のペイロードデータを搬送し、前記読み取り対象のデータは、前記第1のペイロードデータを含み、
前記ホストは、前記第1のデータパケットを受信し、前記第1のアドレスに基づいて第2のアドレスを決定し、前記第1のペイロードデータを前記第2のアドレスにより示されるストレージユニットに書き込むように更に構成され、前記第2のアドレスは、前記ホストによりアドレス指定可能なアドレスである、システム。
【請求項２】
前記第2のアドレスにより示される前記ストレージユニットに対して書き込み操作を完了した後に、前記ホストは、前記第2のアドレスにより示される前記ストレージユニット内のデータに対して操作を実行するように更に構成される、請求項１に記載のシステム。
【請求項３】
前記NVMeコントローラは、完了キューエントリ(CQE)をトリガするように更に構成され、前記CQEは、前記NVMeコントローラが前記読み取り命令により指定された読み取り操作を完了したことを示すために使用され、
前記第2のアドレスにより示される前記ストレージユニット内の前記データに対して前記操作を実行した後に、前記ホストは、前記CQEを取得するように更に構成される、請求項２に記載のシステム。
【請求項４】
前記第2のアドレスにより示される前記ストレージユニット内の前記データに対して前記操作を実行した後に、前記ホストは、前記第2のアドレスにより示される前記ストレージユニットを解放するように更に構成される、請求項２又は３に記載のシステム。
【請求項５】
前記読み取り命令をトリガする前に、前記ホストは、前記第2のアドレスにより示される前記ストレージユニットを前記読み取り命令に割り当て、前記第1のアドレスと前記第2のアドレスとの間の対応関係を記録するように更に構成される、請求項１乃至４のうちいずれか１項に記載のシステム。
【請求項６】
前記読み取り命令の前記読み取り対象のデータは、少なくとも2つのデータパケットに対応し、前記ホストは、少なくとも2つのストレージユニットを前記読み取り命令に割り当てる、請求項１乃至５のうちいずれか１項に記載のシステム。
【請求項７】
前記ホストは、前記第1のアドレス及び前記読み取り対象のデータ内の前記第1のペイロードデータの順序に基づいて、前記第2のアドレスを決定するように構成される、請求項１乃至６のうちいずれか１項に記載のシステム。
【請求項８】
前記NVMeコントローラは、第2のデータパケットを前記ホストに送信するように更に構成され、前記第2のデータパケットは、前記第1のアドレス及び第2のペイロードデータを搬送し、前記読み取り対象のデータは、前記第2のペイロードデータを含み、
前記ホストは、前記第2のデータパケットを受信し、前記第1のデータパケット及び前記第2のデータパケットを受信する順序に基づいて、前記読み取り対象のデータ内の前記第1のペイロードデータ及び前記第2のペイロードデータの順序を決定するように更に構成される、請求項１乃至７のうちいずれか１項に記載のシステム。
【請求項９】
前記第1のデータパケットは、前記読み取り対象のデータ内の前記第1のペイロードデータのオフセットを更に搬送し、前記オフセットは、前記読み取り対象のデータ内の前記第1のペイロードデータの前記順序を示すために使用される、請求項１乃至７のうちいずれか１項に記載のシステム。
【請求項１０】
前記第1のアドレスは、前記NVMeコントローラによりアドレス指定可能なPCIeアドレスであり、前記第1のデータパケットは、PCIeパケットであり、前記第2のアドレスにより示される前記ストレージユニットは、前記ホストのメモリ空間である、請求項１乃至９のうちいずれか１項に記載のシステム。
【請求項１１】
NVMeベースのデータ読み取り方法であって、当該方法は、
ホストにより、読み取り命令をトリガするステップであり、前記読み取り命令は、指示情報を搬送し、前記指示情報は、第1のアドレスを示すために使用され、前記第1のアドレスは、NVMeコントローラによりアドレス指定可能なアドレスである、ステップと、
前記ホストにより、前記NVMeコントローラにより送信された第1のデータパケットを受信するステップであり、前記第1のデータパケットは、前記第1のアドレス及び第1のペイロードデータを搬送する、ステップと、
前記ホストにより、前記第1のアドレスに基づいて第2のアドレスを決定するステップであり、前記第2のアドレスは、前記ホストによりアドレス指定可能なアドレスである、ステップと、
前記ホストにより、前記第1のペイロードデータを前記第2のアドレスにより示されるストレージユニットに書き込むステップと
を含む方法。
【請求項１２】
前記ホストが前記第2のアドレスにより示される前記ストレージユニットに対して書き込み操作を完了した後に、当該方法は、
前記ホストにより、前記第2のアドレスにより示される前記ストレージユニット内のデータに対して操作を実行するステップを更に含む、請求項１１に記載の方法。
【請求項１３】
前記ホストが前記第2のアドレスにより示される前記ストレージユニット内の前記データに対して前記操作を実行した後に、当該方法は、
前記ホストにより、前記NVMeコントローラによりトリガされた完了キューエントリ(CQE)を取得するステップであり、前記CQEは、前記NVMeコントローラが前記読み取り命令により指定された読み取り操作を完了したことを示すために使用される、ステップを更に含む、請求項１２に記載の方法。
【請求項１４】
前記ホストが前記第2のアドレスにより示される前記ストレージユニット内の前記データに対して前記操作を実行した後に、当該方法は、
前記ホストにより、前記第2のアドレスにより示される前記ストレージユニットを解放するステップを更に含む、請求項１２又は１３に記載の方法。
【請求項１５】
ホストにより、読み取り命令をトリガする前に、当該方法は、
前記ホストにより、前記第2のアドレスにより示される前記ストレージユニットを前記読み取り命令に割り当て、前記第1のアドレスと前記第2のアドレスとの間の対応関係を記録するステップを更に含む、請求項１１乃至１４のうちいずれか１項に記載の方法。
【請求項１６】
前記読み取り命令の読み取り対象のデータは、少なくとも2つのデータパケットに対応し、前記ホストは、少なくとも2つのストレージユニットを前記読み取り命令に割り当てる、請求項１１乃至１５のうちいずれか１項に記載の方法。
【請求項１７】
前記ホストは、前記第1のアドレス及び前記読み取り対象のデータ内の前記第1のペイロードデータの順序に基づいて、前記第2のアドレスを決定する、請求項１１乃至１６のうちいずれか１項に記載の方法。
【請求項１８】
当該方法は、
前記ホストにより、前記NVMeコントローラにより送信された第2のデータパケットを受信するステップであり、前記第2のデータパケットは、前記第1のアドレス及び第2のペイロードデータを搬送する、ステップと、
前記ホストにより、前記第1のデータパケット及び前記第2のデータパケットを受信する順序に基づいて、前記読み取り対象のデータ内の前記第1のペイロードデータ及び前記第2のペイロードデータの順序を決定するステップと
を更に含む、請求項１１乃至１７のうちいずれか１項に記載の方法。
【請求項１９】
前記第1のデータパケットは、前記読み取り対象のデータ内の前記第1のペイロードデータのオフセットを更に搬送し、前記オフセットは、前記読み取り対象のデータ内の前記第1のペイロードデータの前記順序を示すために使用される、請求項１１乃至１７のうちいずれか１項に記載の方法。
【請求項２０】
前記第1のアドレスは、前記NVMeコントローラによりアドレス指定可能なPCIeアドレスであり、前記第1のデータパケットは、PCIeパケットであり、前記第2のアドレスにより示される前記ストレージユニットは、前記ホストのメモリ空間である、請求項１１乃至１９のうちいずれか１項に記載の方法。
【請求項２１】
NVMeベースのデータ読み取り装置であって、当該装置は、
読み取り命令をトリガするように構成された処理ユニットであり、前記読み取り命令は、指示情報を搬送し、前記指示情報は、第1のアドレスを示すために使用され、前記第1のアドレスは、NVMeコントローラによりアドレス指定可能なアドレスである、処理ユニットと、
前記NVMeコントローラにより送信された第1のデータパケットを受信するように構成された受信ユニットであり、前記第1のデータパケットは、前記第1のアドレス及び第1のペイロードデータを搬送する、受信ユニットと
を含み、
前記処理ユニットは、前記第1のアドレスに基づいて第2のアドレスを決定し、前記第1のペイロードデータを前記第2のアドレスにより示されるストレージユニットに書き込むように更に構成され、前記第2のアドレスは、前記処理ユニットによりアドレス指定可能なアドレスである、装置。
【請求項２２】
前記第2のアドレスにより示される前記ストレージユニットに対して書き込み操作を完了した後に、前記処理ユニットは、前記第2のアドレスにより示される前記ストレージユニット内のデータに対して操作を実行するように更に構成される、請求項２１に記載の装置。
【請求項２３】
前記第2のアドレスにより示される前記ストレージユニット内の前記データに対して前記操作を実行した後に、前記処理ユニットは、前記NVMeコントローラによりトリガされた完了キューエントリ(CQE)を取得するように更に構成され、前記CQEは、前記NVMeコントローラが前記読み取り命令により指定された読み取り操作を完了したことを示すために使用される、請求項２２に記載の装置。
【請求項２４】
前記第2のアドレスにより示される前記ストレージユニット内の前記データに対して前記操作を実行した後に、前記処理ユニットは、前記第2のアドレスにより示される前記ストレージユニットを解放するように更に構成される、請求項２２又は２３に記載の装置。
【請求項２５】
前記読み取り命令をトリガする前に、前記処理ユニットは、前記第2のアドレスにより示される前記ストレージユニットを前記読み取り命令に割り当て、前記第1のアドレスと前記第2のアドレスとの間の対応関係を記録するように更に構成される、請求項２１乃至２４のうちいずれか１項に記載の装置。
【請求項２６】
前記読み取り命令の読み取り対象のデータは、少なくとも2つのデータパケットに対応し、前記処理ユニットは、少なくとも2つのストレージユニットを前記読み取り命令に割り当てる、請求項２１乃至２５のうちいずれか１項に記載の装置。
【請求項２７】
前記処理ユニットは、前記第1のアドレス及び前記読み取り対象のデータ内の前記第1のペイロードデータの順序に基づいて、前記第2のアドレスを決定するように構成される、請求項２１乃至２６のうちいずれか１項に記載の装置。
【請求項２８】
前記受信ユニットは、前記NVMeコントローラにより送信された第2のデータパケットを受信するように更に構成され、前記第2のデータパケットは、前記第1のアドレス及び第2のペイロードデータを搬送し、
前記処理ユニットは、前記第1のデータパケット及び前記第2のデータパケットを受信する順序に基づいて、前記読み取り対象のデータ内の前記第1のペイロードデータ及び前記第2のペイロードデータの順序を決定するように更に構成される、請求項２１乃至２７のうちいずれか１項に記載の装置。
【請求項２９】
前記第1のデータパケットは、前記読み取り対象のデータ内の前記第1のペイロードデータのオフセットを更に搬送し、前記オフセットは、前記読み取り対象のデータ内の前記第1のペイロードデータの前記順序を示すために使用される、請求項２１乃至２７のうちいずれか１項に記載の装置。
【請求項３０】
前記第1のアドレスは、前記NVMeコントローラによりアドレス指定可能なPCIeアドレスであり、前記第1のデータパケットは、PCIeパケットであり、前記第2のアドレスにより示される前記ストレージユニットは、当該装置のメモリ空間である、請求項２１乃至２９のうちいずれか１項に記載の装置。
【請求項３１】
実行可能命令を含む読み取り可能記憶媒体であって、
計算デバイスのプロセッサが前記実行可能命令を実行するとき、前記計算デバイスは、請求項１１乃至２０のうちいずれか１項に記載の方法を実行する、読み取り可能記憶媒体。
【請求項３２】
プロセッサと、メモリと、バスとを含む計算デバイスであって、
前記メモリは、実行可能命令を記憶するように構成され、前記プロセッサ及び前記メモリは、前記バスを通じて接続され、当該計算デバイスが動作するとき、前記プロセッサは、前記メモリに記憶された前記実行可能命令を実行し、前記計算デバイスは、請求項１１乃至２０のうちいずれか１項に記載の方法を実行することが可能になる、計算デバイス。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
この出願は、ストレージ分野に関し、特に、不揮発性メモリエクスプレス(non-volatile  memory  express,  NVMe)ベースのデータ読み取り方法、装置及びシステムに関する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００４
【補正方法】変更
【補正の内容】
【０００４】
この出願は、NVMeベースのデータ読み取り方法、装置及びシステムを開示する。ホストは、NVMeコントローラに対して開放されたポータルアドレスを使用することにより、NVMeコントローラにより送信されたデータパケットを受信し、対応するストレージユニットを、ホストのメモリ空間内のポータルアドレスに割り当てる。データパケットを受信した後に、ホストは、データパケットで搬送されたポータルアドレスに基づいて、ポータルアドレスに対応するストレージユニットのアドレスを決定し、データパケット内のペイロードデータを決定されたストレージユニットに書き込む。このように、ストレージユニットと通信プロトコルとの間の関係が壊される。これは、柔軟なデータ操作を実現する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】変更
【補正の内容】
【０００６】
読み取り命令は、具体的にはSQEでもよい。ホストにより読み取り命令をトリガする具体的なプロセスは、以下のものでもよい。ホストは、SQEをSQに書き込み、ドアベル機構を使用することによりNVMeコントローラに通知する。第1のアドレスは、アクセスのためにホストによりNVMeコントローラに対して開放されたアドレスである。しかし、第1のアドレスは、NVMeコントローラによりホストに書き込まれるペイロードデータのポータルアドレスとしてのみ使用され、第1のアドレスにより示されるストレージ空間は、実際にはペイロードデータを記憶しない。NVMeコントローラにより送信されたデータパケットを受信した後に、ホストは、ペイロードデータを第1のアドレスにより示されるストレージ空間に書き込まず、ホストによりアドレス指定可能なストレージ空間において、第1のアドレスに対応する第2のアドレスを割り当て、ペイロードデータを第2のアドレスにより示されるストレージユニットに書き込む。したがって、第2のアドレスにより示されるストレージユニットに対するホストの操作は、もはや、ホストとNVMeコントローラとの間の通信プロトコルにより制限されない。この出願では、読み取り操作遅延が短縮でき、読み取り対象のデータによりホストにより占有されるストレージ空間が低減できる。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
NVMeコントローラがCQEをトリガすることは、具体的には以下のものでもよい。読み取り操作を完了した後に、NVMeコントローラは、CQEをCQに書き込み、割り込み機構を使用することによりホストに通知する。既存のプロトコルに基づいて、読み取り命令をトリガする前に、ホストは、PCIeアドレス空間を読み取り命令に割り当てる必要がある。PCIeアドレスにより示されるストレージ空間は、読み取り対象のデータを記憶するために使用される。読み取り命令を完了する前に、ホストは、PCIeアドレス空間の所有権を失い、言い換えると、CQEを取得する前に、ホストはPCIeアドレスにより示されるストレージ空間にアクセスできず、それにより、読み取り操作遅延及びストレージ空間の浪費を引き起こす。第2のアドレスは、データパケットで搬送された第1のアドレスではなく、ホストによりアドレス指定可能な内部アドレスであるので、ホストは、CQEを取得する前に、第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行してもよい。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
ホストは、ホストの内部ストレージ空間をメモリプールに編成してもよい。メモリプールは、複数のストレージユニットを含む。ストレージユニット内のデータに対して操作を完了した後に、ホストは、他の読み取り操作の使用のために、ストレージユニットをメモリプールに解放し、全体の読み取り操作が完了するまで待機する必要なく、ストレージユニットを解放してもよく、それにより、ストレージユニットの占有時間を低減し、ストレージ空間の利用率を増加させる。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】変更
【補正の内容】
【００１４】
ホストが、読み取り命令をトリガする前に、対応するストレージユニットを読み取り命令に割り当てる場合、ストレージ空間のオーバーフローが効果的に回避できる。ホストは、読み取り操作を効果的に調整及び制御するために、維持されているメモリプール内のアイドルのストレージユニットの量に基づいて、読み取り命令をトリガしてもよい。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００２３
【補正方法】変更
【補正の内容】
【００２３】
第1の態様又は第1の態様の上記の可能な実現方式のうちいずれか1つに従って、第1の態様の第9の可能な実現方式では、第1のアドレスは、NVMeコントローラによりアドレス指定可能なPCIeアドレスであり、第1のデータパケットは、PCIeパケットであり、第2のアドレスにより示されるストレージユニットは、ホストのメモリ空間である。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００４９
【補正方法】変更
【補正の内容】
【００４９】
【図１】この出願の実施形態によるNVMeシステムの論理構造の概略図である。
【図２】NVMe標準ベースのデータ読み取り方法のシグナリング図である。
【図３】この出願の実施形態によるホストのハードウェア構造の概略図である。
【図４】この出願の実施形態によるNVMeベースのデータ読み取り方法の概略フローチャートである。
【図５】本発明の実施形態によるポータルの編成構造の概略図である。
【図６】本発明の実施形態によるポータルの編成構造の概略図である。
【図７】本発明の実施形態によるPCIeアドレス構造の概略図である。
【図８Ａ】本発明の実施形態によるアドレスマッピング関係の概略図である。
【図８Ｂ】本発明の実施形態によるアドレスマッピング関係の概略図である。
【図９Ａ】本発明の実施形態によるデータパケット送信の概略図である。
【図９Ｂ】本発明の実施形態によるデータパケット送信の概略図である。
【図１０】本発明の実施形態によるNVMeベースのデータ読み取り方法のシグナリング図である。
【図１１（ａ）】この出願の実施形態によるNVMeシステムの論理構造の概略図である。
【図１１（ｂ）】この出願の実施形態によるNVMeシステムの論理構造の概略図である。
【図１２】この出願の実施形態による計算デバイスの論理構造の概略図である。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００５５
【補正方法】変更
【補正の内容】
【００５５】
本発明の実施形態では、コマンドイニシエータ及びデータイニシエータは、同じ主体又は分離した主体でもよい。コマンドイニシエータは、NVMeコントローラへの命令を直接トリガするシステム主体であり、また、本発明の実施形態ではコマンドソースとも呼ばれる。データイニシエータは、データを読み取ってデータを消費するシステム主体、すなわち、データアクセス要求を開始するために使用されるシステム主体であり、また、本発明の実施形態ではデータソースとも呼ばれる。コマンドソース及びデータソースが分離しているシナリオにおいて、データソースは、コマンドソースを使用することによりデータを読み取る必要がある。本発明の実施形態では、「ホスト」という語は、データソース及びコマンドソースが分離しているシナリオにおいてコマンドソースを示してもよく、或いは、データソース及びコマンドソースが分離していないシナリオにおいてNVMeコントローラと通信する計算デバイスを示してもよい。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００５６
【補正方法】変更
【補正の内容】
【００５６】
従来の方式では、ホストがNVMe読み取り操作を実行するとき、読み取り対象のデータを記憶するために使用されるストレージ空間のアドレス情報は、DPTR又はMPTRを使用することにより、トリガされたSQEで搬送され、NVMeコントローラは、SQEに基づいて、読み取り対象のデータを、アドレス情報により示されるストレージ空間に書き込む。ホストによりSQEを発行することから、読み取り操作が完了したことを示すためにNVMeコントローラにより使用される完了キューエントリをホストにより取得するまでの期間に、ホストは、読み取り対象のデータを記憶するために使用さるストレージ空間の所有権を失う。言い換えると、ホストは、読み取り操作が完全に完了するまで待機する必要があり、次いで、ストレージ空間に記憶されたデータにアクセスできる。
【手続補正１２】
【補正対象書類名】明細書
【補正対象項目名】００６１
【補正方法】変更
【補正の内容】
【００６１】
具体的には、図２に示すように、従来の方式に基づいて、データソースがストレージ媒体からデータを読み取る必要があるとき、データソースは、まず、読み取り要求をコマンドソースに送信する。コマンドソースは、データソースから受信した読み取り要求に基づいて、SQEを発行キュー(英文フルネーム:submission  queue,  略称SQ)に書き込み、SQEのDPTRフィールド又はMPTRフィールドを使用することにより、読み取り対象のデータを受信するために使用されるアドレス情報を搬送する。次いで、コマンドソースは、ドアベル機構を使用することにより、新たなSQEが存在することをNVMeコントローラに通知する。ドアベルを受信した後に、NVMeコントローラは、SQからSQEを読み取り、SQEで搬送されたアドレス情報に基づいてPCIe書き込み命令を使用することにより、読み取り対象のデータを、アドレス情報により示されるストレージ空間に完全に書き込む。読み取り操作が完了した後に、NVMeコントローラは、CQEを完了キュー(英文フルネーム:completion  queue,  略称CQ)に書き込み、割り込み機構を使用することによりコマンドソースに通知する。コマンドソースは、CQEを取得するために割り込み信号を処理し、読み取り対象のデータをデータソースに送信する。
【手続補正１３】
【補正対象書類名】明細書
【補正対象項目名】００６２
【補正方法】変更
【補正の内容】
【００６２】
読み取り命令を開始する前に、コマンドソースが読み取り対象のデータを受信するために使用されるストレージ空間を予約する必要があり、CQEを取得する前にストレージ空間のこの部分の所有権を失うことが、図２から習得できる。言い換えると、コマンドソースは、読み取り対象のデータがストレージ空間に完全に書き込まれるまで待機する必要があり、次いで、データをデータソースに送信できる。このプロセスの遅延は、読み取り対象のデータのサイズに正比例する。さらに、コマンドソースは、読み取り対象のデータを記憶するためにNVMeコントローラによりアドレス指定可能な大量のメモリ空間を必要とし、メモリ空間のこの部分は、コマンドソースによりメモリを読み取り対象のデータに割り当てることから、NVMeコントローラにより解放されたメモリをコマンドソースにより取得するまでの期間に常に占有される。
【手続補正１４】
【補正対象書類名】明細書
【補正対象項目名】００６４
【補正方法】変更
【補正の内容】
【００６４】
図３に示すように、ホスト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は、シングルコアプロセッサ又はマルチコアプロセッサでもよい。
【手続補正１５】
【補正対象書類名】明細書
【補正対象項目名】００６５
【補正方法】変更
【補正の内容】
【００６５】
本発明のこの実施形態では、プロセッサ301は、レジスタを更に含んでもよい。レジスタのアドレス情報は、PCIeアドレスとしてNVMeコントローラに対して開放されてもよい。
【手続補正１６】
【補正対象書類名】明細書
【補正対象項目名】００６６
【補正方法】変更
【補正の内容】
【００６６】
この出願の実施形態では、プロセッサ301は、読み取り操作ロジック310を更に含んでもよく、読み取り操作ロジック310は、プロセッサ301に統合された特定のハードウェア回路又はファームウェアモジュールでもよい。読み取り操作ロジック310が特定のハードウェア回路である場合、読み取り操作ロジック310は、この出願の実施形態における方法を実行する。読み取り操作ロジック310がファームウェアモジュールである場合、プロセッサ301は、この出願の実施形態における技術的解決策を実現するために、読み取り操作ロジック310内のファームウェアコードを実行する。読み取り操作ロジック310は、(1)読み取り命令をトリガするように構成されたロジック(回路/ファームウェアコード)であり、読み取り命令は、指示情報を搬送し、指示情報は、NVMeコントローラによりアドレス指定可能な第1のアドレスを示すために使用される、ロジックと、(2)NVMeコントローラにより送信されたデータパケットを受信するように構成されたロジック(回路/ファームウェアコード)であり、データパケットは、第1のアドレス及びペイロードデータを搬送する、ロジックと、(3)第1のアドレスに基づいて、ホスト300によりアドレス指定可能な第2のアドレスを決定するように構成されたロジック(回路/ファームウェアコード)と、(4)ペイロードデータを第2のアドレスにより示されるストレージユニットに書き込むように構成されたロジック(回路/ファームウェアコード)とを含む。
【手続補正１７】
【補正対象書類名】明細書
【補正対象項目名】００７１
【補正方法】変更
【補正の内容】
【００７１】
この出願の実施形態では、プロセッサ301は、この出願の実施形態における技術的解決策を実現するために、読み取り操作モジュール306を実行する。読み取り操作モジュール306は、(1)読み取り命令をトリガするために使用されるコードであり、読み取り命令は、指示情報を搬送し、指示情報は、NVMeコントローラによりアドレス指定可能な第1のアドレスを示すために使用される、コードと、(2)NVMeコントローラにより送信されたデータパケットを受信するために使用されるコードであり、データパケットは、第1のアドレス及びペイロードデータを搬送する、コードと、(3)第1のアドレスに基づいて、ホスト300によりアドレス指定可能な第2のアドレスを決定するために使用されるコードと、(4)ペイロードデータを第2のアドレスにより示されるストレージユニットに書き込むために使用されるコードとを含む。
【手続補正１８】
【補正対象書類名】明細書
【補正対象項目名】００７６
【補正方法】変更
【補正の内容】
【００７６】
ホストによりNVMeコントローラへの読み取り命令をトリガするプロセスについては、NVMe標準を参照する。具体的には、ホストは、SQEをSQに書き込み、ドアベル機構を使用することにより新たなSQEが存在することをNVMeコントローラに通知する。NVMeコントローラは、ドアベル機構に基づいてSQからSQEを取得する。本発明のこの実施形態では、ホストは、SQEをNVMeコントローラに更に直接プッシュしてもよい。ホストによりNVMeコントローラへの読み取り命令をトリガする具体的なプロセスは、本発明のこの実施形態では限定されない。
【手続補正１９】
【補正対象書類名】明細書
【補正対象項目名】００９５
【補正方法】変更
【補正の内容】
【００９５】
本発明の実施形態では、ホストは、ホストのメモリを読み取りページプールに編成してもよい。読み取り操作を開始する前に、ホストは、読み取りページプールにおいて、読み取り操作により必要とされる読み取りページの量を割り当て、読み取り操作に対応するポータルのMTTエントリを初期化する。MTTエントリは、ポータルアドレスと読み取りページアドレスとの間の対応関係を記録する。図８Ａ及び図８Ｂは、本発明の実施形態によるMTTエントリの概略図である。MTTエントリは、ポータルと読み取りページとの間の対応関係を記録する。図面に示すように、ポータルXに対応する読み取りページは、読み取りページ1、読み取りページ7及び読み取りページ4である。ポータルYに対応する読み取りページは、読み取りページ2、読み取りページ13、読み取りページ8及び読み取りページ0である。
【手続補正２０】
【補正対象書類名】明細書
【補正対象項目名】００９７
【補正方法】変更
【補正の内容】
【００９７】
ホストにより読み取り対象のデータ内のペイロードデータの順序を決定する方式は、本発明のこの実施形態では限定されない。NVMeコントローラがPCIe書き込み操作を実行するときに順序保存が確保される場合、ホストは、データパケットを受信する順序に基づいて、読み取り対象のデータ内のペイロードデータの順序を決定してもよい。例えば、NVMeコントローラは、第2のデータパケットをホストに更に送信し、第2のデータパケットは、第1のアドレス及び第2のペイロードデータを搬送し、第2のペイロードデータはまた、読み取り対象のデータに属する。第2のデータパケットを受信した後に、ホストは、第1のデータパケット及び第2のデータパケットを受信する順序に基づいて、読み取り対象のデータ内の第1のペイロードデータ及び第2のペイロードデータの順序を決定してもよい。NVMeコントローラがPCIe書き込み操作を実行するときに順序保存が確保されない場合、データパケットは、読み取り対象のデータ内のペイロードデータのオフセットを更に搬送してもよく、オフセットは、読み取り対象のデータ内のペイロードデータの順序を示すために使用される。
【手続補正２１】
【補正対象書類名】明細書
【補正対象項目名】０１０１
【補正方法】変更
【補正の内容】
【０１０１】
ステップ404:ホストは、第1のデータパケット内の第1のペイロードデータを第2のアドレスにより示されるストレージユニットに書き込む。
【手続補正２２】
【補正対象書類名】明細書
【補正対象項目名】０１０５
【補正方法】変更
【補正の内容】
【０１０５】
図９Ａ及び図９Ｂに示すように、読み取り対象のデータのサイズは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内のデータを処理してもよい。本発明のこの実施形態では、ホストが読み取りページに記憶されたデータを処理することは、具体的には、データを消費することであり、例えば、データを他の主体に送信することであり、ホストは、読み取り対象のデータが完全に書き込まれるまで待機する必要なく、読み取り対象のデータに対して操作を実行してもよい。本発明のこの実施形態では、パイプライン処理方式が実現され、それにより、読み取り操作遅延を短縮する。
【手続補正２３】
【補正対象書類名】明細書
【補正対象項目名】０１０９
【補正方法】変更
【補正の内容】
【０１０９】
図１０は、本発明の実施形態による、NVMeベースの読み取り方法の相互作用フローチャートである。図１０に示すように、方法1000の適用シナリオにおいて、データソース及びコマンドソースは分離している。データソースは、コマンドソースを使用することにより、読み取り対象のデータをデータソースのストレージ空間に読み取る必要がある。データソース及びコマンドソースが分離している具体的なシナリオは、本発明のこの実施形態では限定されない。
【手続補正２４】
【補正対象書類名】明細書
【補正対象項目名】０１１２
【補正方法】変更
【補正の内容】
【０１１２】
本発明のこの実施形態では、読み取り操作を実行するとき、コマンドソースは、読み取り対象のデータのポータルアドレスの指示情報をSQEに追加する。ポータルアドレスは、本質的には、NVMeコントローラによりアドレス指定可能なPCIeアドレスのセグメントでもよい。SQEを取得した後に、NVMeコントローラは、PCIe書き込み操作を実行することによりTLPをコマンドソースに送信し、PCIeアドレスをTLPに追加する。TLPパケットを受信した後に、コマンドソースは、PCIeアドレスを取得するためにTLPパケットを解析し、PCIeアドレスとローカルメモリとの間のマッピング関係に基づいて、PCIeアドレスに対応するローカルストレージユニットを決定し、次いで、TLP内のペイロードデータを決定されたストレージユニットに書き込む。1つのポータルは、複数のストレージユニットに対応してもよい。ストレージユニットに対して書き込み操作が完了すると、コマンドソースは、ストレージユニットに記憶されたデータに対して操作を実行してもよい。ストレージユニットに対して書き込み操作が完了することは、ストレージユニットに対応する最後のTLPのペイロードデータをストレージユニットに書き込むことを示す。読み取り対象のデータのいくつかのデータを取得した後に、コマンドソースは、全体の読み取り操作が完了するまで待機する必要なく、取得されたデータをデータソースに送信し、読み取り対象のデータソースに送信してもよい。図１０に示すように、読み取り対象のデータは、データ1、データ2、データ3及びデータ4を含み、データ1、データ2、データ3及びデータ4のそれぞれは、1つのストレージユニットに対応してもよい。ストレージユニットのデータを受信した後に、コマンドソースは、ストレージユニットのデータをデータソースに送信してもよい。ストレージユニットのデータをデータソースに送信した後に、コマンドソースは、他の読み取り操作の使用のために、対応するストレージユニットを解放してもよい。
【国際調査報告】
2021515318.tif 000018
2021515318.tif 000019
2021515318.tif 000020
2021515318.tif 000021