JP2021515318A - NVMeベースのデータ読み取り方法、装置及びシステム - Google Patents

NVMeベースのデータ読み取り方法、装置及びシステム Download PDF

Info

Publication number
JP2021515318A
JP2021515318A JP2020545126A JP2020545126A JP2021515318A JP 2021515318 A JP2021515318 A JP 2021515318A JP 2020545126 A JP2020545126 A JP 2020545126A JP 2020545126 A JP2020545126 A JP 2020545126A JP 2021515318 A JP2021515318 A JP 2021515318A
Authority
JP
Japan
Prior art keywords
address
data
read
host
storage unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2020545126A
Other languages
English (en)
Other versions
JP7191967B2 (ja
Inventor
ギッシン,ビクター
リー,ジュインイーン
ジョウ,グワンフオン
リン,ジアシュウ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2021515318A publication Critical patent/JP2021515318A/ja
Application granted granted Critical
Publication of JP7191967B2 publication Critical patent/JP7191967B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/404Coupling between buses using bus bridges with address mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Systems (AREA)
  • Communication Control (AREA)
  • Memory System (AREA)

Abstract

この出願は、NVMeベースのデータ読み取り方法、装置及びシステムを開示する。当該方法は、ホストにより、読み取り命令をトリガするステップであり、読み取り命令は、第1のアドレスの指示情報を搬送し、第1のアドレスは、アドレス指定及びアクセスのためにホストによりNVMeコントローラに対して開放されたアドレスである、ステップと、ホストにより読み取り命令を取得した後に、データパケットをホストに送信するステップであり、データパケットは、第1のアドレス及びペイロードデータを搬送する、ステップと、NVMeコントローラによりデータパケットを受信した後に、第1のアドレスに基づいて第2のアドレスを決定し、ペイロードデータを第2のアドレスにより示されるストレージ空間に記憶するステップとを含む。第2のアドレスは、ホストのプライベートメモリアドレスでもよい。ホストは第1のアドレスを第2のアドレスにマッピングするので、第2のアドレスと通信プロトコルとの間の関係が壊され、ホストは、通信プロトコルにより制限されることなく、第2のアドレスにアクセスしてもよい。

Description

この出願は、ストレージ分野に関し、特に、不揮発性メモリエクスプレス(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のアーキテクチャ図である。図1に示すように、システム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に送信してもよい。
具体的には、図2に示すように、従来の方式に基づいて、データソースがストレージ媒体からデータを読み取る必要があるとき、データソースは、まず、読み取り要求をコマンドソースに送信する。コマンドソースは、データソースから受信した読み取り要求に基づいて、SQEを発行キュー(英文フルネーム:submission queue, 略称SQ)に書き込み、SQEのDPTRフィールド又はMPTRフィールドを使用することにより、読み取り対象のデータを受信するために使用されるアドレス情報を搬送する。次いで、コマンドソースは、ドアベル機構を使用することにより、新たなSQEが存在することをNVMeコントローラに通知する。ドアベルを受信した後に、NVMeコントローラは、SQからSQEを読み取り、SQEで搬送されたアドレス情報に基づいてPCIe書き込み命令を使用することにより、読み取り対象のデータを、アドレス情報により示されるストレージ空間に完全に書き込む。読み取り操作が完了した後に、NVMeコントローラは、CQEを完了キュー(英文フルネーム:completion queue, 略称CQ)に書き込み、割り込み機構を使用することによりコマンドソースに通知する。コマンドソースは、CQEを取得するために割り込みを処理し、読み取り対象のデータをデータソースに送信する。
読み取り命令を開始する前に、コマンドソースが読み取り対象のデータを受信するために使用されるストレージ空間を予約する必要があり、CQEを取得する前にストレージ空間のこの部分の所有権を失うことが、図2から習得できる。言い換えると、コマンドソースは、読み取り対象のデータがストレージ空間に完全に書き込まれるまで待機する必要があり、次いで、データをデータソースに送信できる。このプロセスの遅延は、読み取り対象のデータのサイズに正比例する。さらに、コマンドソースは、読み取り対象のデータを記憶するためにNVMeコントローラによりアドレス指定可能な大量のメモリ空間を必要とし、メモリ空間のこの部分は、コマンドソースによりメモリを読み取り対象のデータに割り当てることから、NVMeコントローラCQEにより解放されたメモリをコマンドソースにより取得するまでの期間に常に占有される。
図3は、この出願の実施形態によるホスト300の概略構造図である。
図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は、シングルコアプロセッサ又はマルチコアプロセッサでもよい。
本発明のこの実施形態では、プロセッサ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のアドレスにより示されるストレージユニットに書き込むために使用されるコードとを含む。
さらに、図3は、ホスト300の単なる例を示している。ホスト300は、図3に示すものよりも多い或いは少ないコンポーネントを含んでもよく、或いは、異なるコンポーネント構成方式を有してもよい。さらに、図3に示す様々なコンポーネントは、ハードウェア、ソフトウェア又はハードウェアとソフトウェアとの組み合わせにより実現されてもよい。
読み取り命令遅延を短縮し、読み取り操作により占有されるメモリ空間を低減するために、本発明の実施形態は、NVMeベースのデータ読み取り方法を提供する。図4に示すように、当該方法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)を含む。具体的には、ポータルはアレイの形式で編成されてもよく、ポータルはアレイベースアドレスにポータルオフセットを加えたものに基づいてアドレス指定される。アレイは、アパーチャと呼ばれる。図5は、ベースアドレスレジスタの概略構造図である。各アパーチャは、ポータルP0〜PNのグループを含み、各ポータルは、特定の読み取り操作に一意に関連付けられる。「一意」は、ホストがいつでも1つの特定のポータルに関連付けられる1つのNVMe読み取り操作のみを開始できることを意味する。
より具体的には、図6に示すように、本発明のこの実施形態では、アパーチャは、メタデータアパーチャとデータアパーチャとに分類されてもよい。NVMeコントローラは、データアパーチャに含まれるポータルDP0〜DPNを通じてPCIe書き込み操作を実行することによりデータをホストに書き込み、メタデータアパーチャに含まれるポータルMP0〜MPNを通じてメタデータをホストに書き込む。説明を容易にするために、以下の説明では、特に断りのない限り、メタデータ及びデータは、本発明の実施形態においてまとめてデータと呼ばれる。
図7は、本発明の実施形態によるPCIeデータパケット内のPCIeアドレス構造を示す。図7に示すように、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エントリは、ポータルアドレスと読み取りページアドレスとの間の対応関係を記録する。図8A及び図8Bは、本発明の実施形態による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コントローラは、データオフセットの単調に増加する順序でデータパケットを送信する。ホストは、データパケットの順序に基づいてペイロードデータを受信する。このモードでは、オフセットは必要とされない。具体的には、図7に示すポータル幅は、2bit(標準で指定される)のみでもよい。
「緩和」モード
緩和モードでは、NVMeコントローラは、任意の順序でPCIe書き込みトランザクションを送信してもよいが、データパケットは、データオフセットを搬送する必要がある。本発明のこの実施形態では、NVMeコントローラは、読み取り操作の論理ブロックを同時に処理してもよい。具体的には、NVMeコントローラは、ストレージ媒体から異なる論理ブロックに対応するデータを読み取り、それぞれ、検査のためにデータを異なる読み取りメモリブロックに配置してもよい。異なる読み取りメモリブロックは異なる時間に検査を完了するので、読み取りメモリブロックは、厳密に論理ブロックの順序に従ってホストに書き込まれなくてもよく、第1の論理ブロックに対応する読み取りメモリブロックは、最後の論理ブロックに対応する読み取りメモリブロックよりも後にターゲットのメモリに書き込まれてもよい。NVMeコントローラは、トランザクションパケットで搬送されたデータオフセットに基づいてデータを再編成する。このモードでは、データパケットは、データオフセットを搬送する必要がある。言い換えると、図7に示すポータル幅は、最大データ送信サイズ以上である必要がある。
S404:ホストは、第1のデータパケット内の第1のペイロードデータを第2のアドレスにより示されるストレージユニットに書き込む。
NVMeコントローラにより送信されたデータパケットを受信した後に、ホストは、第1のアドレスに基づいて第2のアドレスを決定し、次いで、ペイロードデータを第2のアドレスにより示されるストレージユニットに書き込む。
本発明のこの実施形態では、第2のアドレスにより示されるストレージユニットに対して書き込み操作を完了した後に、ホストは、第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行してもよく、言い換えると、ホストは、データを消費してもよく、例えば、データを他のエンティティに送信してもよい。本発明のこの実施形態では、読み取りページに関連するデータが完全に読み取りページに書き込まれた後に、ホストは、読み取りページに対して書き込み操作を完了する。言い換えると、読み取りページに関連する最後のTLP内のデータが読み取りページに書き込まれた後に、ホストは、読み取りページに対して書き込み操作を完了する。
本発明のこの実施形態では、1つの読み取り操作は、複数の読み取りページを有してもよい。全体の読み取り操作を完了する前に、ホストは、いくつかの読み取りページに対して書き込み操作を完了してもよい。1つの読み取りページに対して書き込み操作を完了した後に、ホストは、全体の読み取り操作が完了するまで待機する必要なく、読み取りページ内のデータを使用してもよい。
図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内のデータを処理してもよい。本発明のこの実施形態では、ホストが読み取りページに記憶されたデータを処理することは、具体的には、データを消費することであり、例えば、データを他の主体に送信することであり、ホストは、読み取り対象のデータが完全に書き込まれるまで待機する必要なく、読み取り対象のデータに対して操作を実行してもよい。本発明のこの実施形態では、パイプライン処理方式が実現され、それにより、読み取り操作遅延を短縮する。
本発明のこの実施形態では、第2のアドレスにより示されるストレージユニットの処理を完了した後に、ホストは、他の読み取り操作の使用のためにストレージユニットを解放してもよい。例えば、図9A及び図9Bにおける実施形態では、読み取りページ8に記憶されたデータの処理を完了した後に、ホストは、全体の読み取り操作が完了して全ての読み取り対象のデータが処理されるまで待機する必要なく、他の読み取り操作の使用のために、読み取りページ8を読み取りページプールに解放し、読み取り操作により占有されたストレージ空間を解放してもよく、それにより、ストレージ空間の占有を低減する。
読み取り操作を完了した後に、NVMeコントローラは、完了キューエントリCQEをトリガするように更に構成され、CQEは、NVMeコントローラが読み取り命令により指定された読み取り操作を完了したことを示すために使用され、ホストは、完了キューエントリCQEを取得するように更に構成される。本発明のこの実施形態では、ホストは、第2のアドレスにより示されるストレージユニット内のデータに対して操作を実行した後にのみ、CQEを取得してもよい。
本発明の実施形態において開示される技術的解決策によれば、ホストは、データポータルアドレスとしてNVMeコントローラに対して第1のアドレスを開放し、それにより、NVMeコントローラは、第1のアドレスを使用することにより、読み取り対象のデータをホストに書き込む。NVMeコントローラにより送信されたデータパケットで搬送された宛先アドレスは、第1のアドレスである。データパケットを受信した後に、ホストは、データパケット内のペイロードデータを、第1のアドレスにより示されるストレージ空間に真に書き込むのではなく、第1のアドレスを第2のアドレスにマッピングし、データパケット内のペイロードデータを、第2のアドレスにより示されるストレージ空間に書き込む。第2のアドレスにより示されるストレージ空間は、ホストのプライベートメモリ空間でもよく、それにより、ペイロードデータを記憶するためのストレージ空間と通信プロトコルとの間の関係が壊され、ホストは、通信プロトコルにより制限されることなく、第2のアドレスにアクセスする。読み取り命令が完了する前に、ホストは、第2のアドレスにより示されるストレージ空間に記憶されたデータを使用し、他の読み取り操作の使用のために、第2のアドレスにより示されるストレージ空間を早期に解放してもよい。本発明の実施形態において開示される技術的解決策によれば、読み取り操作遅延が短縮でき、読み取り対象のデータを記憶するために使用されるストレージ空間が低減できる。
図1000は、本発明の実施形態による、NVMeベースの読み取り方法の相互作用フローチャートである。図1000に示すように、方法1000の適用シナリオにおいて、データソース及びコマンドソースは分離している。データソースは、コマンドソースを使用することにより、読み取り対象のデータをデータソースのストレージ空間に読み取る必要がある。データソース及びコマンドソースが分離している具体的なシナリオは、本発明のこの実施形態では限定されない。
例えば、本発明のこの実施形態では、データソース及びコマンドソースが分離しているシナリオは、NOF(英文フルネーム:NVMe over fabric, 略称NOF)に基づく単なるフラッシュの束(英文フルネーム:Just a Bunch Of Flash, 略称JBOF)でもよい。図11(a)に示すように、データソースは、ストレージ媒体にアクセスすることを必要とするホストであり、コマンドソースは、ファブリックを使用することによりホストに接続されたNOFブリッジである。より具体的には、コマンドソースは、NOFブリッジ内のNOFエンジンでもよい。NOFブリッジは、PCIeバスを通じてNVMeコントローラに接続され、NVMeコントローラは、ストレージ媒体に接続される。
本発明のこの実施形態では、データソース及びコマンドソースが分離しているシナリオにおいて、データソース及びコマンドソースは、さらにホスト及び暗号アクセラレータでもよい。図11(b)に示すように、データソースはホストであり、コマンドソースはホストに接続された暗号アクセラレータである。より具体的には、コマンドソースは、暗号アクセラレータのアクセラレーションエンジンである。暗号アクセラレータは、PCIeバスを通じてNVMeコントローラに接続され、NVMeコントローラは、ストレージ媒体に接続される。
本発明のこの実施形態では、読み取り操作を実行するとき、コマンドソースは、読み取り対象のデータのポータルアドレスの指示情報をSQEに追加する。ポータルアドレスは、本質的には、NMVeコントローラにより選択できる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つのストレージユニットに対応してもよい。ストレージユニットのデータを受信した後に、コマンドソースは、ストレージユニットのデータをデータソースに送信してもよい。ストレージユニットのデータをデータソースに送信した後に、コマンドソースは、他の読み取り操作の使用のために、対応するストレージユニットを解放してもよい。
本発明の実施形態において開示される技術的解決策によれば、コマンドソースは、ローカルメモリとPCIeアドレスとの間のマッピング関係を確立し、受信したTLP内のペイロードデータをコマンドソースのメモリ空間に書き込み、それにより、データに対するパイプライン操作が実現できる。具体的には、いくつかのデータを受信した後に、コマンドソースは、受信したデータをデータソースに送信してもよく、NVMeコントローラにより送信されたデータを受信することと、データをデータソースに送信することとが同時に処理でき、それにより、データをキャッシュするために使用されるストレージ空間を低減し、読み取り操作の処理速度を増加させる。
図12は、この出願の実施形態による計算デバイス1200の論理構造の概略図である。図12に示すように、計算デバイス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は、図3におけるプロセッサ301内の読み取り操作ロジック310により、或いは、図3におけるプロセッサ301及びシステムメモリ302内の読み取り操作モジュール306により具体的に実現されてもよい。受信ユニット1204は、図3の実施形態におけるプロセッサ301及び通信インタフェース303により実現されてもよい。
この出願のこの実施形態は、上記の実施形態に対応するホストの装置の実施形態であり、上記の実施形態における特徴の説明は、この出願のこの実施形態に適用可能である。詳細は、ここでは再び説明しない。
上記の実施形態は、単にこの出願の技術的解決策を説明することを意図するものであり、この出願を限定することを意図するものではない。この出願について、上記の実施形態を参照して詳細に説明したが、当業者は、特許請求の範囲から逸脱することなく、依然として上記の実施形態に記載の技術的解決策に修正を行ってもよく、或いは、そのいくつかの技術的特徴に置き換えを行ってもよいことを理解するべきである。
この出願は、ストレージ分野に関し、特に、不揮発性メモリエクスプレス(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コントローラにより使用される完了キューエントリをホストにより取得するまでの期間に、ホストは、読み取り対象のデータを記憶するために使用さるストレージ空間の所有権を失う。言い換えると、ホストは、読み取り操作が完全に完了するまで待機する必要があり、次いで、ストレージ空間に記憶されたデータにアクセスできる。
具体的には、図2に示すように、従来の方式に基づいて、データソースがストレージ媒体からデータを読み取る必要があるとき、データソースは、まず、読み取り要求をコマンドソースに送信する。コマンドソースは、データソースから受信した読み取り要求に基づいて、SQEを発行キュー(英文フルネーム:submission queue, 略称SQ)に書き込み、SQEのDPTRフィールド又はMPTRフィールドを使用することにより、読み取り対象のデータを受信するために使用されるアドレス情報を搬送する。次いで、コマンドソースは、ドアベル機構を使用することにより、新たなSQEが存在することをNVMeコントローラに通知する。ドアベルを受信した後に、NVMeコントローラは、SQからSQEを読み取り、SQEで搬送されたアドレス情報に基づいてPCIe書き込み命令を使用することにより、読み取り対象のデータを、アドレス情報により示されるストレージ空間に完全に書き込む。読み取り操作が完了した後に、NVMeコントローラは、CQEを完了キュー(英文フルネーム:completion queue, 略称CQ)に書き込み、割り込み機構を使用することによりコマンドソースに通知する。コマンドソースは、CQEを取得するために割り込み信号を処理し、読み取り対象のデータをデータソースに送信する。
読み取り命令を開始する前に、コマンドソースが読み取り対象のデータを受信するために使用されるストレージ空間を予約する必要があり、CQEを取得する前にストレージ空間のこの部分の所有権を失うことが、図2から習得できる。言い換えると、コマンドソースは、読み取り対象のデータがストレージ空間に完全に書き込まれるまで待機する必要があり、次いで、データをデータソースに送信できる。このプロセスの遅延は、読み取り対象のデータのサイズに正比例する。さらに、コマンドソースは、読み取り対象のデータを記憶するためにNVMeコントローラによりアドレス指定可能な大量のメモリ空間を必要とし、メモリ空間のこの部分は、コマンドソースによりメモリを読み取り対象のデータに割り当てることから、NVMeコントローラにより解放されたメモリをコマンドソースにより取得するまでの期間に常に占有される。
図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は、シングルコアプロセッサ又はマルチコアプロセッサでもよい。
本発明のこの実施形態では、プロセッサ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エントリは、ポータルアドレスと読み取りページアドレスとの間の対応関係を記録する。図8A及び図8Bは、本発明の実施形態による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のアドレスにより示されるストレージユニットに書き込む。
図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内のデータを処理してもよい。本発明のこの実施形態では、ホストが読み取りページに記憶されたデータを処理することは、具体的には、データを消費することであり、例えば、データを他の主体に送信することであり、ホストは、読み取り対象のデータが完全に書き込まれるまで待機する必要なく、読み取り対象のデータに対して操作を実行してもよい。本発明のこの実施形態では、パイプライン処理方式が実現され、それにより、読み取り操作遅延を短縮する。
10は、本発明の実施形態による、NVMeベースの読み取り方法の相互作用フローチャートである。図10に示すように、方法1000の適用シナリオにおいて、データソース及びコマンドソースは分離している。データソースは、コマンドソースを使用することにより、読み取り対象のデータをデータソースのストレージ空間に読み取る必要がある。データソース及びコマンドソースが分離している具体的なシナリオは、本発明のこの実施形態では限定されない。
本発明のこの実施形態では、読み取り操作を実行するとき、コマンドソースは、読み取り対象のデータのポータルアドレスの指示情報を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つのストレージユニットに対応してもよい。ストレージユニットのデータを受信した後に、コマンドソースは、ストレージユニットのデータをデータソースに送信してもよい。ストレージユニットのデータをデータソースに送信した後に、コマンドソースは、他の読み取り操作の使用のために、対応するストレージユニットを解放してもよい。

Claims (32)

  1. NVMeベースのデータ読み取りシステムであって、
    当該システムは、ホストと、NVMeコントローラと、ストレージ媒体とを含み、
    前記ストレージ媒体は、データを記憶するように構成され、
    前記ホストは、読み取り命令をトリガするように構成され、前記読み取り命令は、指示情報を搬送し、前記指示情報は、第1のアドレスを示すために使用され、前記第1のアドレスは、前記NVMeコントローラによりアドレス指定可能なアドレスであり、
    前記NVMeコントローラは、前記読み取り命令を取得し、前記ストレージ媒体から、前記読み取り命令に対応する読み取り対象のデータを読み取り、第1のデータパケットを前記ホストに送信するように構成され、前記第1のデータパケットは、前記第1のアドレス及び第1のペイロードデータを搬送し、前記読み取り対象のデータは、前記第1のペイロードデータを含み、
    前記ホストは、前記第1のデータパケットを受信し、前記第1のアドレスに基づいて第2のアドレスを決定し、前記第1のペイロードデータを前記第2のアドレスにより示されるストレージユニットに書き込むように更に構成され、前記第2のアドレスは、前記ホストによりアドレス指定可能なアドレスである、システム。
  2. 前記第2のアドレスにより示される前記ストレージユニットに対して書き込み操作を完了した後に、前記ホストは、前記第2のアドレスにより示される前記ストレージユニット内のデータに対して操作を実行するように更に構成される、請求項1に記載のシステム。
  3. 前記NVMeコントローラは、完了キューエントリCQEをトリガするように更に構成され、前記CQEは、前記NVMeコントローラが前記読み取り命令により指定された読み取り操作を完了したことを示すために使用され、
    前記第2のアドレスにより示される前記ストレージユニット内の前記データに対して前記操作を実行した後に、前記ホストは、前記完了キューエントリCQEを取得するように更に構成される、請求項2に記載のシステム。
  4. 前記第2のアドレスにより示される前記ストレージユニット内の前記データに対して前記操作を実行した後に、前記ホストは、前記第2のアドレスにより示される前記ストレージユニットを解放するように更に構成される、請求項2又は3に記載のシステム。
  5. 前記読み取り命令をトリガする前に、前記ホストは、前記第2のアドレスにより示される前記ストレージユニットを前記読み取り命令に割り当て、前記第1のアドレスと前記第2のアドレスとの間の対応関係を記録するように更に構成される、請求項1乃至4のうちいずれか1項に記載のシステム。
  6. 前記読み取り命令の前記読み取り対象のデータは、少なくとも2つのデータパケットに対応し、前記ホストは、少なくとも2つのストレージユニットを前記読み取り命令に割り当てる、請求項5に記載のシステム。
  7. 前記ホストは、前記第1のアドレス及び前記読み取り対象のデータ内の前記第1のペイロードデータの順序に基づいて、前記第2のアドレスを決定するように構成される、請求項1に記載のシステム。
  8. 前記NVMeコントローラは、第2のデータパケットを前記ホストに送信するように更に構成され、前記第2のデータパケットは、前記第1のアドレス及び第2のペイロードデータを搬送し、前記読み取り対象のデータは、前記第2のペイロードデータを含み、
    前記ホストは、前記第2のデータパケットを受信し、前記第1のデータパケット及び前記第2のデータパケットを受信する順序に基づいて、前記読み取り対象のデータ内の前記第1のペイロードデータ及び前記第2のペイロードデータの順序を決定するように更に構成される、請求項7に記載のシステム。
  9. 前記第1のデータパケットは、前記読み取り対象のデータ内の前記第1のペイロードデータのオフセットを更に搬送し、前記オフセットは、前記読み取り対象のデータ内の前記第1のペイロードデータの前記順序を示すために使用される、請求項7に記載のシステム。
  10. 前記第1のアドレスは、前記NVMeコントローラによりアドレス指定可能なPCIeアドレスであり、前記第1のデータパケットは、PCIeパケットであり、前記第2のアドレスにより示される前記ストレージユニットは、前記ホストのメモリ空間である、請求項1乃至9のうちいずれか1項に記載のシステム。
  11. NVMeベースのデータ読み取り方法であって、当該方法は、
    ホストにより、読み取り命令をトリガするステップであり、前記読み取り命令は、指示情報を搬送し、前記指示情報は、第1のアドレスを示すために使用され、前記第1のアドレスは、NVMeコントローラによりアドレス指定可能なアドレスである、ステップと、
    前記ホストにより、前記NVMeコントローラにより送信された第1のデータパケットを受信するステップであり、前記第1のデータパケットは、前記第1のアドレス及び第1のペイロードデータを搬送する、ステップと、
    前記ホストにより、前記第1のアドレスに基づいて第2のアドレスを決定するステップであり、前記第2のアドレスは、前記ホストによりアドレス指定可能なアドレスである、ステップと、
    前記ホストにより、前記第1のペイロードデータを前記第2のアドレスにより示されるストレージユニットに書き込むステップと
    を含む方法。
  12. 前記ホストが前記第2のアドレスにより示される前記ストレージユニットに対して書き込み操作を完了した後に、当該方法は、
    前記ホストにより、前記第2のアドレスにより示される前記ストレージユニット内のデータに対して操作を実行するステップを更に含む、請求項11に記載の方法。
  13. 前記ホストが前記第2のアドレスにより示される前記ストレージユニット内の前記データに対して前記操作を実行した後に、当該方法は、
    前記ホストにより、前記NVMeコントローラによりトリガされた完了キューエントリCQEを取得するステップであり、前記CQEは、前記NVMeコントローラが前記読み取り命令により指定された読み取り操作を完了したことを示すために使用される、ステップを更に含む、請求項12に記載の方法。
  14. 前記ホストが前記第2のアドレスにより示される前記ストレージユニット内の前記データに対して前記操作を実行した後に、当該方法は、
    前記ホストにより、前記第2のアドレスにより示される前記ストレージユニットを解放するステップを更に含む、請求項12又は13に記載の方法。
  15. ホストにより、前記読み取り命令をトリガする前に、当該方法は、
    前記ホストにより、前記第2のアドレスにより示される前記ストレージユニットを前記読み取り命令に割り当て、前記第1のアドレスと前記第2のアドレスとの間の対応関係を記録するステップを更に含む、請求項11乃至14のうちいずれか1項に記載の方法。
  16. 前記読み取り命令の読み取り対象のデータは、少なくとも2つのデータパケットに対応し、前記ホストは、少なくとも2つのストレージユニットを前記読み取り命令に割り当てる、請求項15に記載の方法。
  17. 前記ホストは、前記第1のアドレス及び前記読み取り対象のデータ内の前記第1のペイロードデータの順序に基づいて、前記第2のアドレスを決定する、請求項11に記載の方法。
  18. 当該方法は、
    前記ホストにより、前記NVMeコントローラにより送信された第2のデータパケットを受信するステップであり、前記第2のデータパケットは、前記第1のアドレス及び第2のペイロードデータを搬送する、ステップと、
    前記ホストにより、前記第1のデータパケット及び前記第2のデータパケットを受信する順序に基づいて、前記読み取り対象のデータ内の前記第1のペイロードデータ及び前記第2のペイロードデータの順序を決定するステップと
    を更に含む、請求項17に記載の方法。
  19. 前記第1のデータパケットは、前記読み取り対象のデータ内の前記第1のペイロードデータのオフセットを更に搬送し、前記オフセットは、前記読み取り対象のデータ内の前記第1のペイロードデータの前記順序を示すために使用される、請求項17に記載の方法。
  20. 前記第1のアドレスは、前記NVMeコントローラによりアドレス指定可能なPCIeアドレスであり、前記第1のデータパケットは、PCIeパケットであり、前記第2のアドレスにより示される前記ストレージユニットは、前記ホストのメモリ空間である、請求項11乃至19のうちいずれか1項に記載の方法。
  21. NVMeベースのデータ読み取り装置であって、当該装置は、
    読み取り命令をトリガするように構成された処理ユニットであり、前記読み取り命令は、指示情報を搬送し、前記指示情報は、第1のアドレスを示すために使用され、前記第1のアドレスは、NVMeコントローラによりアドレス指定可能なアドレスである、処理ユニットと、
    前記NVMeコントローラにより送信された第1のデータパケットを受信するように構成された受信ユニットであり、前記第1のデータパケットは、前記第1のアドレス及び第1のペイロードデータを搬送する、受信ユニットと
    を含み、
    前記処理ユニットは、前記第1のアドレスに基づいて第2のアドレスを決定し、前記第1のペイロードデータを前記第2のアドレスにより示されるストレージユニットに書き込むように更に構成され、前記第2のアドレスは、前記処理ユニットによりアドレス指定可能なアドレスである、装置。
  22. 前記第2のアドレスにより示される前記ストレージユニットに対して書き込み操作を完了した後に、前記処理ユニットは、前記第2のアドレスにより示される前記ストレージユニット内のデータに対して操作を実行するように更に構成される、請求項21に記載の装置。
  23. 前記第2のアドレスにより示される前記ストレージユニット内の前記データに対して前記操作を実行した後に、前記処理ユニットは、前記NVMeコントローラによりトリガされた完了キューエントリCQEを取得するように更に構成され、前記CQEは、前記NVMeコントローラが前記読み取り命令により指定された読み取り操作を完了したことを示すために使用される、請求項22に記載の装置。
  24. 前記第2のアドレスにより示される前記ストレージユニット内の前記データに対して前記操作を実行した後に、前記処理ユニットは、前記第2のアドレスにより示される前記ストレージユニットを解放するように更に構成される、請求項22又は23に記載の装置。
  25. 前記読み取り命令をトリガする前に、前記処理ユニットは、前記第2のアドレスにより示される前記ストレージユニットを前記読み取り命令に割り当て、前記第1のアドレスと前記第2のアドレスとの間の対応関係を記録するように更に構成される、請求項21乃至24のうちいずれか1項に記載の装置。
  26. 前記読み取り命令の読み取り対象のデータは、少なくとも2つのデータパケットに対応し、前記処理ユニットは、少なくとも2つのストレージユニットを前記読み取り命令に割り当てる、請求項25に記載の装置。
  27. 前記処理ユニットは、前記第1のアドレス及び前記読み取り対象のデータ内の前記第1のペイロードデータの順序に基づいて、前記第2のアドレスを決定するように構成される、請求項21に記載の装置。
  28. 前記受信ユニットは、前記NVMeコントローラにより送信された第2のデータパケットを受信するように更に構成され、前記第2のデータパケットは、前記第1のアドレス及び第2のペイロードデータを搬送し、
    前記処理ユニットは、前記第1のデータパケット及び前記第2のデータパケットを受信する順序に基づいて、前記読み取り対象のデータ内の前記第1のペイロードデータ及び前記第2のペイロードデータの順序を決定するように更に構成される、請求項27に記載の装置。
  29. 前記第1のデータパケットは、前記読み取り対象のデータ内の前記第1のペイロードデータのオフセットを更に搬送し、前記オフセットは、前記読み取り対象のデータ内の前記第1のペイロードデータの前記順序を示すために使用される、請求項27に記載の装置。
  30. 前記第1のアドレスは、前記NVMeコントローラによりアドレス指定可能なPCIeアドレスであり、前記第1のデータパケットは、PCIeパケットであり、前記第2のアドレスにより示される前記ストレージユニットは、当該装置のメモリ空間である、請求項21乃至29のうちいずれか1項に記載の装置。
  31. 実行可能命令を含む読み取り可能媒体であって、
    計算デバイスのプロセッサが前記実行可能命令を実行するとき、前記計算デバイスは、請求項11乃至20のうちいずれか1項に記載の方法を実行する、読み取り可能媒体。
  32. プロセッサと、メモリと、バスとを含む計算デバイスであって、
    前記メモリは、実行可能命令を記憶するように構成され、前記プロセッサ及び前記メモリは、前記バスを通じて接続され、当該計算デバイスが動作するとき、前記プロセッサは、前記メモリに記憶された前記実行可能命令を実行し、前記計算デバイスは、請求項11乃至20のうちいずれか1項に記載の方法を実行することが可能になる、計算デバイス。
JP2020545126A 2018-06-30 2018-06-30 NVMeベースのデータ読み取り方法、装置及びシステム Active JP7191967B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/093918 WO2020000482A1 (zh) 2018-06-30 2018-06-30 一种基于NVMe的数据读取方法、装置及系统

Publications (2)

Publication Number Publication Date
JP2021515318A true JP2021515318A (ja) 2021-06-17
JP7191967B2 JP7191967B2 (ja) 2022-12-19

Family

ID=68984388

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020545126A Active JP7191967B2 (ja) 2018-06-30 2018-06-30 NVMeベースのデータ読み取り方法、装置及びシステム

Country Status (6)

Country Link
US (1) US11467764B2 (ja)
EP (1) EP3792776B1 (ja)
JP (1) JP7191967B2 (ja)
KR (1) KR102471219B1 (ja)
CN (1) CN111095231B (ja)
WO (1) WO2020000482A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111752484B (zh) * 2020-06-08 2024-04-12 深圳大普微电子科技有限公司 一种ssd控制器、固态硬盘及数据写入方法
CN111831226B (zh) * 2020-07-07 2023-09-29 山东华芯半导体有限公司 一种自主输出nvme协议命令加速处理方法
CN113296691B (zh) * 2020-07-27 2024-05-03 阿里巴巴集团控股有限公司 数据处理系统、方法、装置以及电子设备
CN112527705B (zh) * 2020-11-05 2023-02-28 山东云海国创云计算装备产业创新中心有限公司 一种PCIe DMA数据通路的验证方法、装置及设备
CN113031862B (zh) * 2021-03-18 2024-03-22 中国电子科技集团公司第五十二研究所 一种基于nvme协议控制sata盘的存储系统
CN114996172B (zh) * 2022-08-01 2022-11-01 北京得瑞领新科技有限公司 基于ssd访问主机内存的方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150261434A1 (en) * 2014-03-17 2015-09-17 Mellanox Technologies Ltd. Storage system and server
US20160124876A1 (en) * 2014-08-22 2016-05-05 HGST Netherlands B.V. Methods and systems for noticing completion of read requests in solid state drives
CN106210041A (zh) * 2016-07-05 2016-12-07 杭州华为数字技术有限公司 一种数据写入方法及服务器端网卡

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130086311A1 (en) 2007-12-10 2013-04-04 Ming Huang METHOD OF DIRECT CONNECTING AHCI OR NVMe BASED SSD SYSTEM TO COMPUTER SYSTEM MEMORY BUS
JP5957647B2 (ja) * 2010-06-18 2016-07-27 シーゲイト テクノロジー エルエルシーSeagate Technology LLC スケーラブルな記憶装置
US8966172B2 (en) * 2011-11-15 2015-02-24 Pavilion Data Systems, Inc. Processor agnostic data storage in a PCIE based shared storage enviroment
US9467512B2 (en) * 2012-01-17 2016-10-11 Intel Corporation Techniques for remote client access to a storage medium coupled with a server
US20140195634A1 (en) * 2013-01-10 2014-07-10 Broadcom Corporation System and Method for Multiservice Input/Output
US9256384B2 (en) * 2013-02-04 2016-02-09 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for reducing write latency in a data storage system by using a command-push model
US9424219B2 (en) * 2013-03-12 2016-08-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Direct routing between address spaces through a nontransparent peripheral component interconnect express bridge
US9565269B2 (en) * 2014-11-04 2017-02-07 Pavilion Data Systems, Inc. Non-volatile memory express over ethernet
US9712619B2 (en) * 2014-11-04 2017-07-18 Pavilion Data Systems, Inc. Virtual non-volatile memory express drive
US9575853B2 (en) 2014-12-12 2017-02-21 Intel Corporation Accelerated data recovery in a storage system
CN106484549B (zh) 2015-08-31 2019-05-10 华为技术有限公司 一种交互方法、NVMe设备、HOST及物理机系统
EP3916536A1 (en) 2015-12-28 2021-12-01 Huawei Technologies Co., Ltd. Data processing method and nvme storage device
US9921756B2 (en) * 2015-12-29 2018-03-20 EMC IP Holding Company LLC Method and system for synchronizing an index of data blocks stored in a storage system using a shared storage module
EP3440553A1 (en) * 2016-04-04 2019-02-13 Marvell World Trade, Ltd. Methods and systems for accessing host memory through non-volatile memory over fabric bridging with direct target access
US10445018B2 (en) * 2016-09-09 2019-10-15 Toshiba Memory Corporation Switch and memory device
CN107832086B (zh) * 2016-09-14 2020-03-20 华为技术有限公司 计算机设备、程序写入方法及程序读取方法
CN107992436B (zh) * 2016-10-26 2021-04-09 华为技术有限公司 一种NVMe数据读写方法及NVMe设备
EP3352086B1 (en) 2016-12-05 2020-11-11 Huawei Technologies Co., Ltd. Control method, device and system for data reading-writing command in nvme over fabric architecture
US11451647B2 (en) * 2016-12-27 2022-09-20 Chicago Mercantile Exchange Inc. Message processing protocol which mitigates optimistic messaging behavior
US10387081B2 (en) * 2017-03-24 2019-08-20 Western Digital Technologies, Inc. System and method for processing and arbitrating submission and completion queues
US10503434B2 (en) 2017-04-12 2019-12-10 Micron Technology, Inc. Scalable low-latency storage interface
CN107608909A (zh) 2017-09-19 2018-01-19 记忆科技(深圳)有限公司 一种NVMe固态硬盘写加速的方法
JP6901427B2 (ja) * 2018-03-27 2021-07-14 キオクシア株式会社 ストレージ装置、コンピュータシステムおよびストレージ装置の動作方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150261434A1 (en) * 2014-03-17 2015-09-17 Mellanox Technologies Ltd. Storage system and server
US20160124876A1 (en) * 2014-08-22 2016-05-05 HGST Netherlands B.V. Methods and systems for noticing completion of read requests in solid state drives
CN106210041A (zh) * 2016-07-05 2016-12-07 杭州华为数字技术有限公司 一种数据写入方法及服务器端网卡

Also Published As

Publication number Publication date
US11467764B2 (en) 2022-10-11
KR20200101982A (ko) 2020-08-28
EP3792776A1 (en) 2021-03-17
CN111095231A (zh) 2020-05-01
US20210034284A1 (en) 2021-02-04
KR102471219B1 (ko) 2022-11-25
JP7191967B2 (ja) 2022-12-19
EP3792776A4 (en) 2021-06-09
CN111095231B (zh) 2021-08-03
EP3792776B1 (en) 2022-10-26
WO2020000482A1 (zh) 2020-01-02

Similar Documents

Publication Publication Date Title
TWI772611B (zh) 主機系統及其方法和加速模組
US9734085B2 (en) DMA transmission method and system thereof
JP7191967B2 (ja) NVMeベースのデータ読み取り方法、装置及びシステム
US9395921B2 (en) Writing data using DMA by specifying a buffer address and a flash memory address
US9672143B2 (en) Remote memory ring buffers in a cluster of data processing nodes
CN107430493B (zh) 顺序写入流管理
US10339079B2 (en) System and method of interleaving data retrieved from first and second buffers
TW200406680A (en) Method, system, and program for handling input/output commands
EP3647932A1 (en) Storage device processing stream data, system including the same, and operation method thereof
US10152275B1 (en) Reverse order submission for pointer rings
WO2020000485A1 (zh) 一种基于NVMe的数据写入方法、装置及系统
US9727521B2 (en) Efficient CPU mailbox read access to GPU memory
US11995351B2 (en) DMA engines configured to perform first portion data transfer commands with a first DMA engine and second portion data transfer commands with second DMA engine
CN109614264B (zh) 一种数据备份方法、装置及系统
US10802828B1 (en) Instruction memory
CN113031849A (zh) 直接内存存取单元及控制部件

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200827

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200827

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211102

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211227

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220517

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220914

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20220914

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20220927

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20221004

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20221122

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221207

R150 Certificate of patent or registration of utility model

Ref document number: 7191967

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150