TW202334804A - 用於設備中複製目標原子性的系統、方法和裝置 - Google Patents

用於設備中複製目標原子性的系統、方法和裝置 Download PDF

Info

Publication number
TW202334804A
TW202334804A TW112103261A TW112103261A TW202334804A TW 202334804 A TW202334804 A TW 202334804A TW 112103261 A TW112103261 A TW 112103261A TW 112103261 A TW112103261 A TW 112103261A TW 202334804 A TW202334804 A TW 202334804A
Authority
TW
Taiwan
Prior art keywords
amount
indication
target
space
copy
Prior art date
Application number
TW112103261A
Other languages
English (en)
Inventor
丹尼爾 李 赫爾米克
拉傑希 高爾
羅伯特 莫斯
文卡塔 蘇曼斯 詹妮弗拉
金英德
Original Assignee
南韓商三星電子股份有限公司
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 南韓商三星電子股份有限公司 filed Critical 南韓商三星電子股份有限公司
Publication of TW202334804A publication Critical patent/TW202334804A/zh

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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/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/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0653Monitoring storage devices or systems
    • 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/0658Controller construction arrangements
    • 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
    • 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
    • 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/068Hybrid storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stabilization Of Oscillater, Synchronisation, Frequency Synthesizers (AREA)
  • Accessory Devices And Overall Control Thereof (AREA)

Abstract

一種方法可包括:在裝置處接收複製命令,其中複製命令包括對第一源資料量的第一指示及對第二源資料量的第二指示;至少部分地基於第一指示來確定目標空間量;以及分塊目標空間量的至少一部分。所述方法可更包括:讀取第一指示;以及讀取第二指示,其中目標空間量可包括第一量的至少第一部分及第二量的至少第二部分。分塊可包括分塊第一量的所述至少第一部分及第二量的所述至少第二部分。所述方法可更包括儲存第一指示以產生已儲存第一指示。

Description

用於設備中複製目標原子性的系統、方法和裝置
本揭露大體而言是有關於儲存裝置,且更具體而言,是有關於用於設備中複製目標原子性的系統、方法和裝置。 [相關申請案的參考] 本申請案主張於2022年2月11日提出申請的序列號為63/309,508的美國臨時專利申請案的優先權及權益,所述美國臨時專利申請案併入本案供參考。
儲存裝置可實施其中可將來自一或多個源位址範圍的資料複製至目標位址範圍的複製操作。複製操作可用於例如其中可將來自多個源位址範圍的資料移動至目標位址範圍的主機引導的垃圾收集操作(host directed garbage collection operation)。
背景技術部分中揭露的上述資訊僅用於增強對發明原理的背景的理解,且因此它可能包含不構成先前技術的資訊。
一種方法可包括:在裝置處接收複製命令,其中複製命令包括對第一源資料量的第一指示及對第二源資料量的第二指示;至少部分地基於第一指示來確定目標空間量;以及分塊目標空間量的至少一部分。所述方法可更包括:讀取第一指示;以及讀取第二指示,其中目標空間量可包括第一量的至少第一部分及第二量的至少第二部分。分塊可包括分塊第一量的所述至少第一部分及第二量的所述至少第二部分。所述方法可更包括儲存第一指示以產生已儲存第一指示。所述方法可更包括:讀取已儲存第一指示;以及基於讀取已儲存第一指示而將第一源資料量的至少一部分寫入目標空間量的所述至少一部分中。已儲存第一指示可儲存於第一記憶體位置中,所述方法可更包括基於寫入第一源資料量的所述至少一部分來修改第一記憶體位置。讀取第一指示可包括實行對第一指示的第一讀取操作,所述方法可更包括:實行對第一指示的第二讀取操作;以及基於第二讀取操作而將第一源資料量的至少一部分寫入目標空間量的所述至少一部分中。所述方法可更包括:儲存第二指示以產生已儲存第二指示;讀取已儲存第二指示;以及基於讀取已儲存第二指示而將第二源資料量的至少一部分寫入目標空間量的所述至少一部分中。目標空間量可為第一目標空間量,所述方法可更包括基於接收複製命令而分塊第二目標空間量。第二目標空間量可基於複製命令的複製長度。確定第一目標空間量可包括至少部分地基於第一指示來修改第二目標空間量。複製命令可包括指示計數,且確定第一目標空間量可基於指示計數。目標空間量可為第一目標空間量,所述方法可更包括:至少部分地基於第二指示來確定第二目標空間量;以及分塊第二目標空間量的至少一部分。
一種系統可包括:主機,用以發送複製命令,其中複製命令可包括對第一源資料量的第一指示及對第二源資料量的第二指示;以及裝置,用以:接收複製命令;至少部分地基於第一指示來確定目標空間量;以及分塊目標空間量的至少一部分。裝置可更用以自主機讀取第一指示;以及自主機讀取第二指示;其中目標空間量可包括第一量的至少第一部分及第二量的至少第二部分。裝置可更用以:在裝置處儲存第一指示,以產生已儲存第一指示;實行對已儲存第一指示的讀取操作;以及基於讀取操作而將第一源資料量的至少一部分寫入目標空間量的所述至少一部分中。
一種裝置可包括:通訊介面;儲存媒體;以及裝置控制器,用以:使用通訊介面接收複製命令,其中複製命令可包括儲存媒體中的對第一源資料量的第一指示及儲存媒體中的對第二源資料量的第二指示;至少部分地基於第一指示來確定儲存媒體中的目標空間量;以及分塊目標空間量的至少一部分。所述裝置控制器可用以:使用通訊介面實行對第一指示的第一讀取操作;以及使用通訊介面實行對第二指示的第二讀取操作,其中目標空間量可包括第一量的至少第一部分及第二量的至少第二部分。裝置控制器可用以:儲存第一指示以產生已儲存第一指示;實行對已儲存第一指示的讀取操作;以及基於讀取操作而將第一源資料量的至少一部分寫入目標空間量的所述至少一部分中。裝置控制器可用以:使用通訊介面實行對第一指示的第三讀取操作;以及基於第三讀取操作而將第一源資料量的至少一部分寫入目標空間量的所述至少一部分中。
裝置可實施複製命令,所述複製命令可能是有關於實行一或多個讀取操作以自一或多個源位址範圍讀取資料、以及實行一或多個寫入操作以將資料中的一些或全部寫入一或多個目標位址範圍。舉例而言,複製命令可使得使用者能夠指示可自其中讀取資料的多個源位址範圍(例如,在儲存裝置中的儲存媒體中)、以及可向其中寫入資料中的一些或全部的連續目標位址範圍。
一些複製命令可使得一或多個目標位址範圍中的一些或全部被分塊,例如,使得複製命令能夠對所述一或多個目標位址範圍實行一或多個原子寫入操作。然而,在一些情形中(例如,若複製命令指示多於一個源位址範圍),裝置可能不知道要分塊(block)所述一或多個目標位址範圍中的多少。
本揭露的發明原理中的一些是有關於用於確定欲針對複製命令的寫入操作而分塊的一或多個目標空間量的各種技術。舉例而言,在一些實施例中,複製命令可包括對第一源資料量的第一指示及對第二源資料量的第二指示。裝置可對第一源資料量與第二源資料量進行組合,以確定欲針對複製命令而分塊的總目標空間量。作為另一實例,裝置可基於複製命令的最大複製長度而至少初始地分塊目標空間量。
此揭露的一些附加發明原理是有關於用於執行複製命令的各種技術,所述複製命令可能是有關於對一或多個目標位址範圍的至少一些部分進行分塊。舉例而言,在一些實施例中,裝置可讀取對一或多個源資料量的一或多個指示,以確定欲針對複製命令而分塊的總目標空間量。裝置可在裝置處儲存指示中的至少一者,以例如用於作為複製命令執行的一部分來實行一或多個讀取操作及/或寫入操作。
作為另一實例,在一些實施例中,裝置可實行對一或多個源資料量的一或多個指示的一或多個第一讀取操作,以確定欲針對複製命令而分塊的總目標空間量。裝置可實行對一或多個源資料量的所述一或多個指示的一或多個第二讀取操作,以用於作為複製命令執行的一部分來實行一或多個讀取操作及/或寫入操作。
作為又一實例,裝置可基於複製命令的最大複製長度來初始地分塊目標空間量。基於針對複製命令實行一或多個讀取操作及/或寫入操作,裝置可例如基於針對複製命令的其餘讀取操作及/或寫入操作的數目來修改被分塊的目標空間量。
本揭露包含與針對複製命令而確定及/或分塊目標空間相關的許多發明原理。本文中揭露的原理可具有獨立的效用且可個別地實施,且非每個實施例皆可利用每個原理。此外,所述原理亦可以各種組合來實施,其中一些組合可以協同的方式放大個別原理的一些益處。舉例而言,一些實施例可針對第一複製命令數目而儲存對一或多個源資料量的一或多個指示,且可針對後續的複製命令而實行對一或多個源資料量的一或多個指示的第一讀取操作及第二讀取操作。
出於例示的目的,可在一些實例性實施方式細節(例如可實施使用例如快速非揮發性記憶體(Nonvolatile Memory Express,NVMe)等儲存協定接收的複製命令(例如,簡單複製命令)且在可由邏輯區塊位址(logical block address,LBA)存取的儲存媒體上進行操作的儲存裝置)的上下文中闡述一些實例性實施例。然而,發明原理並不限於該些實例性實施方式細節且可應用於任何類型的裝置(例如,加速器、圖形處理單元(graphics processing unit,GPU)、神經處理單元(neural processing unit,NPU)及/或類似裝置,其使用任何類型的協定及/或介面(例如,串列先進技術附件(Advanced Technology Attachment,ATA)(Serial ATA,SATA)、小型電腦系統介面(Small Computer Systems Interface,SCSI)、串列附接SCSI(Serial Attached SCSI,SAS))、以任何方式佈置的任何類型的可尋址資料(例如,暫存器、記憶體、儲存媒體及/或類似裝置)及/或類似項實施任何類型的複製命令。在一些實施例中,可使用儲存協定來實施發明原理,所述儲存協定可達成重疊命令執行,所述重疊命令執行能夠達成重疊命令的平行化(例如,最大平行化),其中NVMe是實例。在一些實施例中,在一些情形中,一或多個原子操作的使用可使得重疊命令能夠被排序及/或定義。
圖1示出根據本揭露實例性實施例的複製操作的第一實施例。在圖1中例示的實施例中,複製命令可提供對四個源資料量的四個源指示102a、…、102d,但可使用任何數目的指示及/或任何數目的源資料量。在此實例中,源指示102a、…、102d可藉由儲存裝置(例如,固態驅動機(solid state drive,SSD))中的LBA的源範圍的形式來提供,其可基於LBA大小來指示源資料量。(舉例而言,系統可使用512個位元組或任何其他大小的LBA大小)。作為另外一種選擇或附加地,對源資料量的指示可使用任何一或多個標記(例如邏輯區塊數目(number of logic block,NLB)、緩衝器的數目及/或大小、位元組的數目、頁面的數目及/或類似項)來實施。
第一指示102a可規定第一源LBA範圍(範圍0),在此實例中,第一源LBA範圍(範圍0)可為LBA範圍101至150(例如,50個LBA)。可以任何合適的方式來規定源LBA範圍,例如,藉由規定如圖1中例示的起始源LBA(starting source LBA,SSLBA)及結束源LBA(ending source LBA,ESLBA),藉由規定起始源LBA及LBA數目(例如,NLB),及/或以任何其他方式。
第二指示102b可規定第二源LBA範圍(範圍1),在此實例中,第二源LBA範圍(範圍1)可為LBA範圍2300至2399(例如,100個LBA)。第三指示102c可規定第三源LBA範圍(範圍2),在此實例中,第三源LBA(範圍2)可為LBA範圍331至340(例如,10個LBA)。第四指示102d可規定第四源LBA範圍(範圍3),在此實例中,第四源LBA範圍(範圍3)可為LBA範圍215至224(例如,10個LBA)。
複製命令可更包括指示104,指示104可規定連續的目標LBA範圍,在此實例中,連續的目標LBA範圍可為LBA範圍10001至10170(例如,170個LBA)。可以任何合適的方式來規定目標LBA範圍,例如,藉由規定如圖1中例示的起始目標LBA(starting destination LBA,SDLBA)及終止目標LBA(ending destination LBA,EDLBA),藉由規定起始目標LBA及總目標LBA數目,及/或以任何其他方式。在一些實施例中,可確定總目標LBA數目,例如,藉由對所述四個源LBA範圍(例如,範圍0至範圍3)中的一些或全部(例如,每一者)的LBA數目(NLB)進行求和。
在圖1中例示的實例性實施例中,可基於複製命令的第一態樣(例如,特性、參數、事件、動作、條件、指示、確定及/或類似項)來分塊目標LBA範圍10001至10170中的一些或全部,且可基於複製命令的第二態樣來釋放所述分塊中的一些或全部。舉例而言,在一些實施例中,整個目標LBA範圍10001至10170可在複製命令的執行中的一些或全部期間被分塊,例如,以保持整個目標LBA範圍之上的原子性。在一些實施例中,分塊可指在複製操作中的一些或全部(例如,複製命令的執行)期間強制進行對命令(例如,其他讀取、其他寫入、其他複製命令及/或類似項)、子命令(例如,執行複製命令及/或寫入操作的一或多個部分,例如對儲存裝置控制器中所緩衝的資料進行管理)、源範圍操作、目標範圍操作及/或類似操作的排序。
因此,例如,在自範圍0讀取第一源資料的第一讀取操作、將第一源資料寫入目標LBA範圍10001至10050的第一寫入操作、自範圍1讀取第二源資料的第二讀取操作、將第二源資料寫入目標LBA範圍10051至10150的第二寫入操作、自範圍2讀取第三源資料的第三讀取操作、將第三源資料寫入目標LBA範圍10151至10160的第三寫入操作、自範圍3讀取第四源資料的第四讀取操作、以及將第四源資料寫入目標LBA範圍10161至10170的第四寫入操作的期間,可對目標LBA範圍10001至10170及/或源LBA範圍(範圍0至範圍3)強制進行分塊。附加地或作為另外一種選擇,可以部分來讀取如下所述的一或多個源範圍表項(source range entry,SRE)。舉例而言,在電源故障的事件中,一些實施例可嘗試以原子寫入電源故障參數(例如,原子寫入單元電源故障(Atomic Write Unit Power Fail,AWUPF)參數)的倍數為單位對資料執行一或多個複製命令及/或寫入操作。在此種實施例中,複製命令及/或寫入操作可在原子寫入電源故障參數的邊界處停止。因此,在此種實施例中,可以一或多個部分來執行SRE。附加地或作為另外一種選擇,在一些實施例中,第一SRE的結束段可與第二SRE的開始段同時、併發、重疊及/或以類似方式執行。在一些實施例中,且端視實施方式細節而定,第一SRE與第二SRE可為連續的SRE及/或非連續的SRE。
圖2示出根據本揭露實例性實施例的複製操作的第二實施例。在一些態樣中,圖2中例示的實施例可與圖1中例示的實施例類似,且圖2中與圖1中的元件類似元件可由以相同數位結尾的參考編號來指示。然而,在圖2中例示的實施例中,可基於對個別源LBA範圍及/或目標LBA範圍的個別讀取操作及/或寫入操作來強制進行分塊。
因此,例如,在自範圍0讀取第一源資料的第一讀取操作及/或將第一源資料寫入目標LBA範圍10001至10050的第一寫入操作期間,可對第一目標LBA範圍10001至10050的分塊(分塊0)及/或對第一源LBA範圍(可被稱為範圍0)強制進行分塊。在自範圍1讀取第二源資料的第二讀取操作及/或將第二源資料寫入目標LBA範圍10051至10150的第二寫入操作期間,可對第二目標LBA範圍10051至10150的分塊(分塊1)及/或對第二源LBA範圍(可被稱為範圍1)強制進行分塊。在自範圍2讀取第三源資料的第三讀取操作及/或將第三源資料寫入目標LBA範圍10151至10160的第三寫入操作期間,可對第三目標LBA範圍10151至10160的分塊(分塊2)及/或對第三源LBA範圍(可被稱為範圍2)強制進行分塊。在自範圍3讀取第四源資料的第四讀取操作及/或將第四源資料寫入目標LBA範圍10161至10170的第四寫入操作期間強制進行,可對第四目標LBA範圍10161至10170的分塊(分塊3)及/或對第四源LBA範圍(可被稱為範圍3)強制進行分塊。作為另外一種選擇或附加地,在一些實施例中,可初始地對多個目標LBA範圍(例如,範圍0、範圍1、範圍2及/或範圍3中的二或更多者)進行分塊,且可釋放一或多個目標LBA上的分塊,例如,當對應的LBA範圍的寫入操作完成時一次釋放一個。
圖3示出根據本揭露實例性實施例的複製命令結果的實例性實施例的表格。圖3中例示的實施例可展示例如可使用圖1及/或圖2中例示的不同分塊技術獲得的結果。在圖3中例示的實施例中,第一命令(可被稱為複製命令A)及第二複製命令(可被稱為複製命令B)可存在於儲存裝置中(例如,存在於儲存裝置的控制器中)。在一些實施例中,可能已自提交佇列(submission queue,SQ)讀取複製命令A及複製命令B,如以下關於圖12所述。在此種實施例中,對於圖3中例示的實例,複製命令A及複製命令B可能尚未返回對應的完成佇列(completion queue,CQ)表項,如以下關於圖6至圖11所述。
在一些實施例中,與原子性相關的分塊可能影響一或多個其他輸入及/或輸出操作及/或命令(I/O操作、I/O命令或I/O),例如寫入及/或讀取命令。舉例而言,在一些實施例中,且端視實施方式細節而定,對於一或多個重疊的LBA範圍,與一或多個複製命令、寫入命令、讀取命令、寫入操作、讀取操作及/或類似命令或操作相關的分塊可能導致另一複製命令、寫入命令、讀取命令、寫入操作、讀取操作及/或類似命令或操作的一或多個部分中的延遲。
在圖3中例示的表格306中,第一複製命令(命令A)可將資料自一或多個源LBA範圍寫入四個連續的目標LBA(LBA 0至LBA 3),且第二複製命令(命令B)可將資料自一或多個源LBA範圍寫入四個連續的目標LBA(LBA 1至LBA 4)。然而,端視命令A及命令B的執行次序及/或所實施的分塊類型而定,可能獲得不同的結果。
參照圖3,分別例示實例1及實例2的列308及310示出當命令A及命令B二者均在整個組合目標LBA範圍(例如在圖1中例示的實施例中所實施)或單個目標LBA範圍(例如在圖2中例示的實施例中所實施)之上實施分塊時可獲得的結果。
在列308中例示的實例1中,可首先執行命令B,隨後執行命令A。由於可在命令B的整個目標LBA範圍之上強制進行分塊,直至命令B完成,因此命令A可不進行重寫對命令B的結果,直至命令B完成。因此,可獲得命令A的有效結果(由LBA 0至LBA 3中例示的資料「A」指示)。
在列310中例示的實例2中,可首先執行命令A,隨後執行命令B。由於可在命令A的整個目標LBA範圍之上強制進行分塊,直至命令A完成,因此命令B可不進行重寫對命令A的結果,直至命令A完成。因此,可獲得命令B的有效結果(由LBA 1至LBA 4中示出的資料「B」指示)。
相比之下,分別例示實例3及實例4的列312及314示出當命令A及命令B不在組合的目標LBA範圍或在個別的目標LBA範圍之上實施分塊時可獲得的結果。不論命令A及命令B的執行次序如何,由於可能僅在個別目標LBA範圍(例如,與個別源LBA範圍相關聯)之上強制進行分塊,因此可能獲得無效結果(例如,由對於實例3而言的位於列312中的LBA 2及LBA 3中的命令B的資料「B」的實例、以及對於實例4而言的位於列314中的LBA 2及LBA 3中的命令A的資料「A」的實例來指示)。
為了例示發明原理,圖1、圖2及圖3中例示的實施例是在可實施目標範圍(destination range,DR)原子性的系統的上下文中闡述。然而,所述原理可應用於可實施任何其他類型的原子性的系統。舉例而言,一些實施例可實施源範圍表項(SRE)原子性、或者DR原子性與SRE原子性的組合。
在一些實施例中,將資料寫入一或多個目標LBA可指將資料程式化至例如反及(Not-AND,NAND)快閃記憶體等儲存媒體中。作為另外一種選擇或附加地,將資料寫入一或多個目標LBA可指使用寫入資料對寫入緩衝器進行更新,此亦可能有關於對與寫入資料相關聯的一些或全部追蹤資訊進行更新(例如,在儲存裝置的控制器中及/或在儲存裝置的儲存媒體中)。在一些實施例中,寫入資料可指以下的寫入操作:在所述寫入操作中,緩衝器中的資料可能未被完全程式化至儲存媒體中,但可存取與寫入操作相關聯的一或多個LBA的一或多個讀取命令可返回如圖3中例示的表格中所示的資料,例如,藉由自寫入緩衝器返回資料的一部分及/或自經程式化儲存媒體返回資料的一部分。端視實施方式細節而定,此可使得在寫入緩衝器中的資料被程式化至儲存媒體中之前,與寫入緩衝器中的資料相關聯的一或多個LBA的分塊或排序約束能夠被釋放。
圖4例示根據本揭露實例性實施例的複製命令的命令格式的實例性實施例。圖4中例示的複製命令416可包括具有操作碼418的第一字組(字組0)(用於指示所述命令是複製命令)、以及具有資料指標420的第二字組(字組1),資料指標420可指向可包含與複製命令416一起使用的資料(例如,例如圖5中例示的源範圍表項(SRE)等資料)的資料(例如,記憶體)位置。複製命令416可更包括具有SDLBA的第三字組(字組2),SDLBA可指示第一LBA將被用作使用自一或多個源LBA讀取的資料的一或多個寫入操作的目標。複製命令416可更包括具有範圍數目(number of range,NR)的第四字組(字組3),所述範圍數目可指示可提供關於資料的位置、量及/或類似項的資訊,以用於複製命令的一或多個讀取操作的SRE數目。
在一些實施例中,圖4中例示的複製命令416可被稱為提交佇列表項(Submission Queue Entry,SQE)且可包括與例如重試、保護資訊、指令類型(directive type)、引用標籤、與複製命令416一起使用的資料的一或多種格式(例如,例如圖5中例示的SRE等SRE的一或多種格式)及/或類似項等特徵相關的一或多個附加字組、欄位及/或類似項。
圖5例示根據本揭露實例性實施例的可與複製命令一起使用的資料的資料格式的實例性實施例。圖5中例示的資料結構可與例如圖4中例示的複製命令的實施例一起使用。
參照圖5,資料結構可包括一或多個SRE 526-0、526-1、…、526-N。一或多個SRE 526-0、526-1、…、526-N可包括對應的起始源LBA(starting source LBA,SSLBA)528-0、528-1、…、528-N及/或一或多個對應的邏輯區塊數目(number of logical blocks,NLB)530-0、530-1、…、530-N。因此,在圖5中例示的實例性實施例中,可以NLB的形式提供對源資料量的指示。
在一些實施例中,圖4中例示的複製命令416及/或圖5中例示的所述一或多個SRE 526-0、526-1、…、526-N中提供的資訊可向接收複製命令416的裝置提供足夠的資訊來實施複製命令416。
然而,在可實施對一或多個目標空間的分塊(例如,對一或多個目標LBA的一或多個部分進行分塊以實施原子操作)的實施例中,可能難以確定要在上面實施分塊的一或多個目標空間。舉例而言,分塊整個目標LBA範圍(如例如在圖1中例示的實施例中所實施)可能是有關於讀取圖5中例示的多個(例如,全部)SRE 526-0、526-1、…、526-N且添加一些(例如,全部)NLB 530-0、530-1、…、530-N,以確定複製命令的總NLB。在一些實施例中,此分塊操作可使用圖4中例示的SDLBA及/或它可使用自個別SRE計算的複製命令的總NLB。
圖6示出根據本揭露實例性實施例的用於具有對源範圍表項的儲存的複製操作的方法的實施例。為了例示的目的,圖6中例示的實施例可在例如儲存裝置(可使用例如NVMe等儲存協定接收複製命令)等裝置的上下文中闡述,但發明原理並不限於該些實例性實施方式細節。舉例而言,一些實施例可對任何類型的裝置使用串列ATA(SATA)、小型電腦系統介面(SCSI)、串列附接SCSI(SAS)及/或任何其他類型的介面、協定及/或類似項。
參照圖6,所述方法可開始於操作632-1,其中裝置可使用複製命令提取提交佇列(SQ)表項。在一些實施例中,提交佇列(SQ)可駐留於主機處、裝置處或任何其他位置處。在操作632-2中,方法可對複製命令進行解析(例如,藉由檢查如圖4中例示的字組3中的範圍數目(NR))以對一或多個源範圍表項(SRE)進行定位,例如,如圖5中所示對SDLBA欄位及/或類似項進行定位。同樣在操作632-2中,所述方法可將總邏輯區塊數目(總NLB)初始化為零。在一些實施例中,可將SRE定位於例如主機處的記憶體中、裝置處或任何其他位置處。
在操作632-3中,方法可自資料區(例如,由例如圖4中例示的字組0 1等資料指標指向的資料區)讀取SRE,在此實例中,SRE可位於主機處。在操作632-4中,方法可將SRE中的NLB添加至總NLB。在操作632-5中,方法可將SRE儲存於例如裝置的本地記憶體中。在操作632-6中,方法可判斷是否存在任何附加的SRE要讀取(例如,基於NR)。若存在附加的SRE要讀取,則方法可繼續循環經過操作632-3、632-4及/或632-5,直至所有的SRE(例如,由字組3中的範圍數目所指示)已被讀取且對應的NLB已被添加至總NLB。因此,在一些實施例中,且端視實施方式細節而定,總NLB可指示由複製命令所指示的個別SRE之和指示的總LBA數目。
在操作632-7中,所述方法可分塊目標LBA的至少一部分(例如,全部)(例如,在SDLBA 422處開始並持續達由總NLB確定的目標LBA量),例如,以針對複製命令的一或多個原子性規範強制進行命令及/或SRE排序。
一旦目標LBA中的一些或全部已被分塊,方法便可開始實行一或多個讀取操作及/或一或多個寫入操作,以將由一或多個SRE指示的資料複製至一或多個目標LBA。舉例而言,在操作632-8中,方法可擷取SRE(SRE可能已儲存於本地記憶體中,例如,在操作632-5中)。在操作632-9中,方法可對由所擷取的SRE的對應起始源LBA及NLB指示的源資料實行讀取操作。在操作632-10中,方法可藉由將在操作632-9中讀取的資料寫入一或多個對應的目標LBA來實行寫入操作。
在操作632-11中,方法可判斷由總NLB指示的總源資料量是否已自對應的源LBA被讀取並被寫入由SDLBA及總NLB指示的目標LBA。若與一或多個SRE相關聯的源資料仍然要被讀取及/或寫入,則方法可循環經過操作632-8、632-9、632-10及/或632-11,直至與SRE相關聯的源資料已被讀取及寫入對應的目標LBA。在操作632-12中,方法可自可能已在操作632-7中被分塊的目標LBA中的一些或全部釋放分塊。在操作632-13處,方法例如可藉由向主機發送完成佇列(CQ)表項來指示複製命令已完成而完成複製命令。在一些實施例中,分塊的釋放可為完全的或部分的。舉例而言,可在已完成讀取或寫入的一些進程的複製操作的一部分上釋放分塊。
儘管操作632-8、632-9及/或632-10可示出複製命令在SRE中依序進行,但在一些實施例中,例如,用於實施複製命令的一或多個讀取及/或寫入操作可平行實行,同時仍然維持整個複製命令的原子性。
在一些實施例中,且端視實施方式細節而定,如圖6中例示的複製操作的實施例可出於任何目的及/或以任何次序存取SRE(例如,在儲存裝置的本地記憶體中),例如,在存取時間、功耗、等待時間及/或類似方面具有很少損失或沒有損失。
圖7示出根據本揭露實例性實施例的用於具有對源範圍表項的儲存的複製操作的方法的另一實施例。在一些態樣中,圖7中例示的實施例可與圖6中例示的實施例類似,且圖7中的元件與圖6中的元件類似,可以相同數字結尾的參考編號來指示。然而,圖7中例示的實施例可包括操作732-14,在操作732-14中,方法可丟棄一或多個SRE,例如,在由SRE指示的源資料自一或多個對應的源LBA被讀取及/或被寫入一或多個對應的目標LBA之後。舉例而言,在一些實施例中,可藉由放開(free)SRE在本地記憶體中可能佔據的空間供一或多個其他過程使用來丟棄SRE。端視實施方式細節而定,此可對圖7中例示的方法進行改善及/或最佳化。
圖8示出根據本揭露實例性實施例的用於具有對源範圍表項的第一讀取及第二讀取的複製操作的方法的實施例。為了例示的目的,圖8中例示的實施例可在例如儲存裝置(可使用例如NVMe等儲存協定接收複製命令)等裝置的上下文中闡述,但發明原理並不限於該些實例性實施方式細節。舉例而言,一些實施例可對任何類型的裝置使用SATA、SAS及/或任何其他類型的介面、協定及/或類似項。
參照圖8,方法可開始於操作834-1,其中裝置可使用複製命令提取提交佇列表項。在一些實施例中,提交佇列可駐留於主機處、裝置處或任何其他位置處。在操作834-2中,方法可對複製命令進行解析(例如,藉由檢查如圖4中例示的字組3中的範圍數目)以對一或多個SRE進行定位,例如,如圖5中所示對SDLBA欄位及/或類似項進行定位。同樣在操作834-2中,方法可將複製命令的總NLB初始化為零。在一些實施例中,可將SRE定位於例如主機處的記憶體中、裝置處或任何其他位置處。
在操作834-3中,方法可自資料區(例如,由例如圖4中例示的字組01等資料指標指向的資料區)讀取SRE,在此實例中,SRE可位於主機處。在操作834-4中,方法可將SRE中的NLB添加至總NLB。
在操作834-5中,方法可判斷是否存在任何附加的SRE要讀取。若有附加的SRE要讀取,則方法可繼續循環經過操作834-2、834-3及834-4,直至全部SRE(例如,由字組3中的範圍數目所指示)已被讀取且對應的NLB已被添加至總NLB。因此,在一些實施例中,且端視實施方式細節而定,總NLB可指示由複製命令所指示的SRE指示的總LBA數目。
在圖8中例示的實施例中,方法可不在裝置處本地儲存SRE中的一或多者。因此,端視實施方式細節而定,圖8中例示的實施例可減少裝置所使用的本地記憶體量。舉例而言,在一些實施例中,SRE可使用32個位元組的記憶體,且複製命令可包括多達256個SRE。因此,端視實施方式細節而定,圖8中例示的實施例可將每個複製命令的本地記憶體使用減少約8千二進制位元(kilo binary bit,KiB)。
在操作834-6中,方法可分塊目標LBA的至少一部分(例如,全部)(例如,在SDLBA處開始並持續由總NLB確定的目標LBA量),例如,以針對複製命令的一或多個原子性規範來強制進行命令及/或SRE排序。
一旦目標LBA中的一些或全部已被分塊,方法便可開始第二次讀取一或多個SRE,以實行一或多個讀取操作及/或一或多個寫入操作來實施複製命令。舉例而言,在操作834-7中,方法可第二次讀取SRE(在此實例中,SRE可位於主機處)。在操作834-8中,方法可對已自主機第二次讀取的SRE的對應起始源LBA及NLB所指示的源資料實行讀取操作。在操作834-9中,方法可藉由將在操作834-8中讀取的資料寫入一或多個對應的目標LBA來實行寫入操作。
在操作834-10中,方法可判斷由總NLB指示的總源資料量是否已自對應的源LBA被讀取並被寫入由SDLBA及總NLB指示的目標LBA。若與一或多個SRE相關聯的源資料仍然要被讀取及/或寫入,則方法可循環經過操作834-7、834-8、834-9及/或834-10,直至與SRE相關聯的源資料已被讀取及寫入對應的目標LBA。在操作834-11中,方法可自可能已在操作834-6中被分塊的目標LBA中的一些或全部釋放分塊。在操作834-12中,方法例如藉由向主機發送完成佇列表項來指示複製命令已完成而完成複製命令。在一些實施例中,分塊的釋放可為完全的或部分的。舉例而言,可在已完成讀取或寫入的一些進程的複製操作的一部分上釋放分塊。
儘管操作834-7、834-8及/或834-9可示出複製命令在SRE中依序進行,但在一些實施例中,用於實施複製命令的一或多個讀取及/或寫入操作可平行實行(例如,同時仍然維持整個複製命令的原子性)或者端視實施方式細節而可能需要在SRE中的每一者之上實行。
圖9示出根據本揭露實例性實施例的用於具有對源範圍表項的第一讀取及第二讀取的複製操作的方法的另一實施例。在一些態樣中,圖9中例示的實施例可與圖8中例示的實施例類似,且圖9中的元件與圖8中的元件類似,可以相同數字結尾的參考編號來指示。然而,圖9中例示的實施例可包括操作934-13,在操作934-13中,方法可在裝置處的本地記憶體中儲存一或多個SRE,例如自主機讀取的前幾個SRE。圖9中例示的實施例亦可包括操作934-14,在操作934-14中,方法可擷取SRE(SRE可能已儲存於本地記憶體中,例如,在操作934-13處)。在操作934-15中,方法可對由已在操作934-13處被本地儲存於裝置處的SRE的對應起始源LBA及NLB指示的源資料實行讀取操作。在操作934-16中,方法可使用在操作934-15中讀取的資料向一或多個對應的目標LBA中實行寫入操作。因此,圖9中例示的實施例可開始對本地儲存的SRE進行處理(例如,無需等待第二次自主機讀取SRE)。在一些實施例中,原子複製命令可針對與寫入緩衝器中的資料相關聯的一或多個LBA保護(例如,實施分塊),使得所述分塊可在寫入緩衝器中的資料被傳送至(例如,被程式化至)儲存媒體之前被釋放。因此,在一些實施例中,儲存裝置控制器可能處於將來自緩衝器的寫入資料程式化至儲存媒體中的過程中(例如,在儲存裝置控制器已將完成發送至完成佇列以向主機指示複製命令已完成之後),但稍後可將對此資料的引用解析至緩衝器及/或儲存媒體以保護原子性。
在操作934-17中,方法可判斷是否存在更多的SRE被本地儲存於裝置處。若一或多個本地儲存的SRE仍然可用,則方法可循環經過操作934-14、934-15、934-16及/或934-17,直至不再存在本地儲存的SRE可用。方法然後可進行至操作934-7,在操作934-7中,它可開始第二次自主機讀取SRE。
圖10出根據本揭露實例性實施例的用於具有對預定的目標空間量的分塊的複製操作的方法的實施例。為了例示的目的,圖10中例示的實施例可在例如儲存裝置(可使用例如NVMe等儲存協定接收複製命令)等裝置的上下文中闡述,但發明原理並不限於該些實例性實施方式細節。舉例而言,一些實施例可對任何類型的裝置使用SATA、SAS及/或任何其他類型的介面、協定及/或類似項。
參照圖10,方法可開始於操作1036-1,其中裝置可使用複製命令提取提交佇列表項。在一些實施例中,提交佇列可駐留於主機處、裝置處或任何其他位置處。在操作1036-2中,方法可對複製命令進行解析(例如,藉由檢查如圖4中例示的字組3中的範圍數目(NR)),以對一或多個SRE進行定位,例如,如圖5中所示,對SDLBA欄位及/或類似項進行定位。
在操作1036-3中,方法可分塊目標LBA的至少一部分(例如,全部),例如,在SDLBA處開始並持續足以分塊複製命令的預期總大小的空間量。舉例而言,在一些實施例中,方法可分塊由複製命令的最大複製長度(maximum copy length,MCL)或裝置所支援的(最大SRE NLB *最大SRE數目)確定的保守LBA數目。在一些實施例中,且端視實施方式細節而定,所述兩個值可能加起來不是相同的數,但它們可能在邏輯上類似。在一些實施例中,MCL可由表達式Min{MCL, MSRC*MSRRL}來確定。
一旦目標LBA中的一些或全部已被分塊,方法便可開始讀取一或多個SRE以實行一或多個讀取操作及/或一或多個寫入操作來實施複製命令。舉例而言,在操作1036-4中,方法可讀取SRE(在此實例中,SRE可位於主機處)。在操作1036-5中,方法可對由已自主機讀取的SRE的對應起始源LBA及NLB指示的源資料實行讀取操作。在操作1036-6中,方法可使用在操作1036-5中讀取的資料向一或多個對應的目標LBA中實行寫入操作。
在操作1036-7中,方法可判斷由範圍數目(NR)指示的總SRE數目是否已被讀取且它們對應的NLB是否被複製。若與一或多個SRE相關聯的源資料仍然要被讀取及/或寫入,則方法可循環經過操作1036-4、1036-5、1036-6及/或1036-7,直至與SRE相關聯的源資料已被讀取及寫入對應的目標LBA。在一些實施例中,藉由基於MCL或(最大SRE NLB * SRE最大數目)來分塊目標空間量,方法可能夠複製複製命令的整個資料大小,而無需對欲複製的資料量及/或欲複製的其餘資料量實行任何檢查。在一些實施例中,此可在相對大的LBA範圍上實施分塊,且儘管它可提供正確的結果,但它可阻留對受保護的整個LBA範圍中的一些或全部的一或多個讀取。因此,一或多個讀取可能會變慢,但其中一些讀取不一定會發生複製活動。
在操作1036-8中,方法可自可能已在操作1036-3中被分塊的目標LBA中的一些或全部釋放分塊。在操作1036-9中,方法例如藉由向主機發送完成佇列表項以指示複製命令已完成而完成複製命令。在一些實施例中,隨著自SRE讀取更多的位址,釋放被分塊的位址範圍中的一些或全部可自末尾開始,及/或隨著複製操作的一部分已進行,釋放被分塊的LBA範圍亦可自LBA範圍的開始或LBA範圍的中間開始。
儘管操作1036-4、1036-5、1036-6及/或1036-7可示出複製命令在SRE中依序進行,但在一些實施例中,用於實施複製命令的一或多個讀取及/或寫入操作可平行實行,例如,同時仍然維持整個複製命令的原子性。
圖11示出根據本揭露實例性實施例的具有對預定的目標空間量的分塊的複製操作的另一實施例。在一些態樣中,圖11中例示的實施例可與圖10中例示的實施例類似,且圖11中的元件與圖10中的元件類似,可以相同數字結尾的參考編號來指示。然而,圖11中例示的實施例可基於已寫入的目標空間量來確定欲分塊的不同目標空間量。圖11中例示的實施例可包括操作1136-10,在操作1136-10中,方法可將計數器(例如,Remaining_SRE_Count)設定為NR。每次通過循環時,在操作1136-11中,方法可使計數器遞減,且在操作1136-12中,方法可基於已寫入的目標空間量來確定欲分塊的不同目標空間量。舉例而言,在一些實施例中,在操作1136-12中,方法可將欲分塊的目標空間量確定 ,其中MSSRL可指示裝置所支援的最大單源範圍長度。在一些實施例中,可減少欲分塊的目標空間量,例如,由於不是每個SRE皆可使用完整的MSSRL。在一些實施例中,操作1136-11及/或操作1136-12可在操作1136-4至操作1136-6之前及/或與之平行實行,或者在任何其他時間或以任何其他次序實行。
作為另一實例,在其中NR可能未知的一些實施例中,方法可將欲分塊的目標空間量確定為 ,其中MSRC可指示最大SRE計數。
一些實施例可結合本文中闡述的一或多種技術來實施一或多種混合技術。在一些實施例中,混合技術的一或多個參數可基於裝置行為、記憶體局限、當前裝置活動及/或類似項而變化。
舉例而言,在一些實施例中,特定的複製命令數目(例如,提交給SQ的前10個複製命令)可使用圖6中例示的方法,其中SRE中的一些或全部可被儲存(例如,在裝置記憶體中),而一或多個附加的複製命令可使用圖8中例示的方法,其中沒有或更少的SRE可被儲存(例如,在裝置記憶體中)。在一些實施例中,且端視實施方式細節而定,此種混合技術可使得裝置能夠對相對大數目的重疊複製命令進行處置,同時限制用於儲存SRE的本地記憶體量。
作為另一實例,在一些實施例中,系統、裝置及/或類似裝置可產生活動指示符(例如,重疊複製命令數目(例如,在一或多個SQ中)),以估計主機、裝置及/或類似裝置的活動水準。在一些實施例中,若活動指示符低於臨限值(例如,相對空閒),則圖8中例示的方法可用於對複製命令進行處理。然而,若活動指示符處於或超過臨限值(例如,相對繁忙),則圖10中例示的方法可用於對複製命令進行處理,例如,由於它可能是有關於較少的讀取及/或計算。
圖12示出根據本揭露實例性實施例的用於實施原子保護的複製命令的系統的實例性實施例。圖12中例示的系統可用於實施本文中揭露的系統、裝置、方法、技術及/或類似項的任何實施例及/或可使用本文中揭露的系統、裝置、方法、技術及/或類似項的任何實施例來實施。圖12中例示的系統可包括可藉由通訊連接件1244進行通訊的主機1240與裝置1242。
在一些實施例中,主機1240可包括命令提交佇列(SQ)1246、完成佇列(CQ)1248、主機記憶體1250及/或主機通訊介面1252。SQ 1246可被實施為例如NVMe提交佇列,NVMe提交佇列可保存欲由裝置1242執行的命令(例如,複製命令)。完成佇列1248可被實施為例如NVMe完成佇列,NVMe完成佇列可保存可由裝置1242發送的完成,以指示裝置1242的命令(例如,複製命令)的完成。主機記憶體1250可用於例如儲存命令資料,例如主機1240使用提交佇列1246提交的複製命令的SRE。
在一些實施例中,裝置1242可包括裝置通訊介面1254、裝置控制器1256及/或儲存媒體1258。在一些實施例中,裝置控制器1256可包括命令處理器1260,命令處理器1260可自提交佇列1246提取及/或對命令(例如,複製命令)進行解析。在一些實施例中,裝置控制器1256可包括複製邏輯1261,複製邏輯1261可實施一或多個複製命令(包括與其相關聯的一或多個讀取操作及/或寫入操作,如本文中所述)。
在一些實施例中,裝置控制器1256可包括例如可用於強制進行一或多個複製命令的原子性的危險管理器1262。舉例而言,在一些實施例中,一或多個(例如,全部)寫入操作的一或多個(例如,全部)目標空間(例如,目標LBA範圍)可由複製邏輯1261提交給危險管理器1262,以確保目標空間的任何原子性得以強制進行。在一些實施例中,在完成一或多個(例如,全部)原子保護的寫入操作時,可自危險管理器1262清除相關聯的目標空間(例如,目標LBA範圍),以放開空間供其他過程使用。
在一些實施例中,裝置控制器1256可包括本地記憶體1264及/或危險管理器1262,本地記憶體1264可用於例如儲存一或多個複製命令的一或多個SRE,所述一或多個複製命令可由命令處理器1260解析並由複製邏輯1261執行。在一些實施例中,裝置控制器1256可包括寫入緩衝器1266,寫入緩衝器1266可用於例如儲存自儲存媒體1258中的一或多個源LBA讀取的源資料,以將其寫入儲存媒體1258中的一或多個目標LBA。在複製命令完成時,命令處理器1260可向完成佇列1248發送完成。
在一些實施例中,主機1240可使用例如以下一或多個任何類型的設備來實施:伺服器,例如計算伺服器、儲存伺服器、網路伺服器、雲端伺服器及/或類似伺服器;電腦,例如工作站、個人電腦、平板電腦、智慧型電話及/或類似裝置;或者它們的多個及/或組合。在一些實施例中,裝置1242可使用例如以下任何類型的裝置中的一或多者來實施:加速器裝置、儲存裝置、網路裝置(例如,網路介面卡(NIC))、記憶體擴展及/或緩衝裝置、圖形處理單元(GPU)、神經處理單元(neural processing unit,NPU)、張量處理單元(tensor processing unit,TPU)及/或類似裝置、或者它們的多個及/或組合。在一些實施例中,主機1240亦可被實施為裝置。在一些實施例中,主機1240及/或裝置1242中的任一者或兩者可被配置為主機、客戶端、及/或類似裝置或其任意組合。
在一些實施例中,通訊連接件1244可使用任何類型的有線及/或無線通訊媒體、介面、協定及/或包括以下的類似裝置來實施:快速周邊組件互連(Peripheral Component Interconnect Express,PCIe)、快速非揮發性記憶體(NVMe)、組構上NVMe(NVMe-over-fabric,NVMe-oF)、計算快速鏈路(Compute Express Link,CXL)、及/或例如CXL.mem、CXL.cache、CXL.IO及/或類似協定等相干協定、Gen-Z、開放相干加速器處理器介面(Open Coherent Accelerator Processor Interface,OpenCAPI)、用於加速器的快取相干互連(Cache Coherent Interconnect for Accelerator,CCIX)及/或類似物、高級可擴展介面(Advanced Extensible Interface,AXI)、直接記憶體存取(Direct Memory Access,DMA)、遠程DMA(Remote DMA,RDMA)、融合乙太網路上RDMA(RDMA over Converged Ethernet,ROCE)、高級訊息隊列協定(Advanced Message Queuing Protocol,AMQP)、乙太網路、傳輸控制協定/網際網路協定((Transmission Control Protocol,TCP)/(Internet Protocol,IP))、光纖通道、無限頻寬(InfiniBand)、串列ATA(SATA)、小型電腦系統介面(SCSI)、串列附接SCSI(SAS)、網際網路廣域RDMA協定(Internet Wide Area RDMA Protocol,iWARP)、包括第二代(second generation,2D)、3G、4G、5G及/或類似代的任意無線網路代、任意代的Wi-Fi、藍芽、近場通訊(near-field communication,NFC)及/或類似項、或其任意組合。在一些實施例中,通訊連接件1244可包括通訊組構,通訊組構包括一或多個鏈路、匯流排、交換機、集線器、節點、路由器、轉換器、中繼器及/或類似裝置。
在其中裝置1242可至少部分地被實施為儲存裝置的實施例中,儲存裝置可包括任何類型的非揮發性儲存媒體,所述非揮發性儲存媒體例如基於固態媒體(例如,固態驅動機(SSD))、磁性媒體(例如,硬碟驅動機(hard disk drive,HDD))、光學媒體及/或類似媒體、或者其任意組合。舉例而言,在一些實施例中,儲存裝置可被實施為基於反及(NAND)快閃記憶體的SSD、例如交叉網格非揮發性記憶體等持續性記憶體、具有體電阻改變的記憶體、相變記憶體(phase change memory,PCM)、及/或類似裝置、或其任意組合。任何此種儲存裝置可使用任何連接件配置(例如SATA、SCSI、SAS、U.2、M.2、及/或類似配置)以任何形狀因數(例如3.5英吋、2.5英吋、1.8英吋、M.2、企業及資料中心SSD形狀因數(Enterprise and Data Center SSD Form Factor,EDSFF)、NF1及/或類似形狀因數)來實施。任何此種儲存裝置可全部或局部地與伺服器機箱、伺服器機架、資料室、資料中心、邊緣資料中心、行動邊緣資料中心及/或其任何組合一起實施及/或結合伺服器機箱、伺服器機架、資料室、資料中心、邊緣資料中心、行動邊緣資料中心及/或其任何組合使用。
本文中闡述的任何功能(包括任何主機功能、裝置功能及/或類似功能(例如,命令處理器1260、複製邏輯1261、危險管理器1262,以及針對圖1至圖13中示出的實施例闡述的任何功能))可以包括例如以下的硬體、軟體、韌體或者其任意組合來實施:硬體及/或軟體組合邏輯、序列邏輯、定時器、計數器、暫存器、狀態機、例如動態隨機存取記憶體(dynamic random access memory,DRAM)及/或靜態隨機存取記憶體(static random access memory,SRAM)等揮發性記憶體、包括快閃記憶體的非揮發性記憶體、例如交叉網格非揮發性記憶體等持續性記憶體、具有體電阻改變的記憶體、相變記憶體(PCM)及/或類似記憶體、及/或其任意組合、複雜可程式化邏輯裝置(complex programmable logic device,CPLD)、現場可程式化閘陣列(field programmable gate array,FPGA)、應用專用積體電路(application specific integrated circuit,ASIC)CPU(包括複雜指令集電腦(CISC)處理器(例如x86處理器)及/或精簡指令集電腦(RISC)處理器(例如ARM處理器))、圖形處理單元(GPU)、神經處理單元(NPU)、張量處理單元(TPU)及/或類似裝置,其執行儲存於任何類型的記憶體中的指令。在一些實施例中,一或多個組件可被實施為系統晶片(system-on-chip,SOC)。
圖13示出根據本揭露實例性實施例的裝置的實例性實施例。圖13中例示的實施例1300可用於例如實施本文中揭露的任何裝置。裝置1300可包括裝置控制器1302、複製邏輯1308、裝置功能電路1306及/或通訊介面1310。圖13中例示的組件可藉由一或多個裝置匯流排1312進行通訊。複製邏輯1308可用於例如實施本文中揭露的任何複製命令功能。
裝置功能電路1306可包括實施裝置1300的主要功能的任何硬體。舉例而言,若裝置1300被實施為儲存裝置,則裝置功能電路1306可包括儲存媒體,例如一或多個快閃記憶體裝置、FTL及/或類似裝置。作為另一實例,若裝置1300被實施為網路介面卡(network interface card,NIC),則裝置功能電路1306可包括一或多個數據機、網路介面、實體層(physical layer,PHY)、媒體存取控制層(medium access control layer,MAC)及/或類似裝置。作為另一實例,若裝置1300被實施為加速器,則裝置功能電路1306可包括一或多個加速器電路、記憶體電路及/或類似電路。
圖14示出根據本揭露實例性實施例的用於通訊的方法的實施例。方法可開始於操作1402。在操作1404中,方法可為於裝置接收複製命令,其中複製命令可包括對第一源資料量的第一指示及對第二源資料量的第二指示。在操作1406中,方法可為至少部分地基於第一指示來確定寫入操作的目標空間量。在操作1408中,對於寫入操作的至少一部分,方法可分塊目標空間量的至少一部分。方法可在操作1410結束。
圖14中例示的實施例以及本文中闡述的所有其他實施例是實例性操作及/或組件。在一些實施例中,可省略一些操作及/或組件,及/或可包括其他操作及/或組件。此外,在一些實施例中,可使操作及/或組件的時間及/或空間次序發生變化。儘管一些組件及/或操作可被例示為個別組件,但在一些實施例中,可將單獨示出的一些組件及/或操作整合成單個組件及/或操作,及/或可使用多個組件及/或操作來實施被示出為單個組件及/或操作的一些組件及/或操作。
以上所揭露的一些實施例已在各種實施方式細節的上下文中進行闡述,但本揭露的原理並不限於該些或任何其他具體細節。舉例而言,一些功能已被闡述為由某些組件實施,但在其他實施例中,所述功能可分佈於位於不同位置中且具有各種使用者介面的不同系統及組件之間。某些實施例已被闡述為具有特定的過程、操作等,但該些用語亦囊括其中可利用多個過程、操作等來實施特定過程、操作等的實施例或者其中可將多個過程、操作等整合成單一過程、步驟等的實施例。對組件或元件的引用可僅指所述組件或元件的一部分。舉例而言,對區塊的引用可指整個區塊或者一或多個子區塊。除非上下文中以其他方式顯而易見,否則在本揭露及申請專利範圍中使用例如「第一」及「第二」等用語可僅為了區分所述用語所修飾的元件且可能並不指示任何空間次序或時間次序。在一些實施例中,對元件的引用可指所述元件的至少一部分,例如「基於」可指「至少部分地基於」及/或類似情況。對第一元件的引用可能並不暗示第二元件的存在。在本文中所揭露的原理具有獨立的效用且可個別地實施,且並非每個實施例皆可利用每個原理。然而,所述原理亦可以各種組合來實施,其中一些組合可以協同的方式對個別原理的益處進行放大。
根據本專利揭露的發明原理,可對上述各種細節及實施例進行組合以生成附加的實施例。由於可在不背離本發明概念的條件下對本專利揭露的發明原理進行佈置及細節上的修改,因此此種改變及修改被認為落於以下申請專利範圍的範圍內。
1、2、3、4:實例 101~150、215~224、331~340、2300~2399、10001~10050、10051~10150、10151~10160、10161~10170:LBA範圍 102a、102b、102c、102d:源指示 104:指示 306:表格 308、310、312、314:列 416:複製命令 418:操作碼 420:資料指標 422:起始目標LBA(SDLBA) 526-0、526-1~526-N:源範圍表項(SRE) 528-0、528-1~528-N:起始源LBA(SSLBA) 530-0、530-1~530-N:邏輯區塊數目(NLB) 632-1、632-2、632-3、632-4、632-5、632-6、632-7、632-8、632-9、632-10、632-11、632-12、632-13、732-14、834-1、834-2、834-3、834-4、834-5、834-6、834-7、834-8、834-9、834-10、834-11、834-12、934-7、934-13、934-14、934-15、934-16、934-17、1036-1、1036-2、1036-3、1036-4、1036-5、1036-6、1036-7、1036-8、1036-9、1136-4、1136-5、1136-6、1136-10、1136-11、1136-12、1402、1404、1406、1408、1410:操作 1240:主機 1242:裝置 1244:通訊連接件 1246:提交佇列(SQ) 1248:完成佇列 1250:主機記憶體 1252:主機通訊介面 1254:裝置通訊介面 1256、1302:裝置控制器 1258:儲存媒體 1260:命令處理器 1261、1308:複製邏輯 1262:危險管理器 1264:本地記憶體 1266:寫入緩衝器 1300:裝置 1306:裝置功能電路 1310:通訊介面 1312:裝置匯流排 A、B:複製命令
各圖未必按比例繪製,且出於例示目的,在所有圖中具有類似的結構或功能的元件可一般由相同的參考編號或其部分表示。各圖僅旨在有利於對本文中闡述的各種實施例的說明。各圖並未闡述本文中所揭露的教示內容的每個態樣,且不對申請專利範圍的範圍進行限制。為避免圖式變得模糊,可能並未示出所有的組件、連接件及類似部件,且並非所有的組件皆可具有參考編號。然而,組件配置的圖案在圖式中可容易地顯而易見。附圖與說明書一同例示出本揭露的實例性實施例,且與說明一同用於闡釋本揭露的原理。 圖1示出根據本揭露實例性實施例的複製操作的第一實施例。 圖2示出根據本揭露實例性實施例的複製操作的第二實施例。 圖3示出根據本揭露實例性實施例的複製命令結果的實例性實施例的表格。 圖4示出根據本揭露實例性實施例的複製命令的命令格式的實例性實施例。 圖5示出根據本揭露實例性實施例的可與複製命令一起使用的資料的資料格式的實例性實施例。 圖6示出根據本揭露實例性實施例的用於具有對源範圍表項的儲存的複製操作的方法的實施例。 圖7示出根據本揭露實例性實施例的用於具有對源範圍表項的儲存的複製操作的方法的另一實施例。 圖8示出根據本揭露實例性實施例的用於具有對源範圍表項的第一讀取及第二讀取的複製操作的方法的實施例。 圖9示出根據本揭露實例性實施例的用於具有對源範圍表項的第一讀取及第二讀取的複製操作的方法的另一實施例。 圖10示出根據本揭露實例性實施例的用於具有對預定目標空間量的分塊的複製操作的方法的實施例。 圖11示出根據本揭露實例性實施例的具有對預定目標空間量的分塊的複製操作的另一實施例。 圖12示出根據本揭露實例性實施例的用於實施原子性保護的複製命令的系統的實例性實施例。 圖13示出根據本揭露實例性實施例的裝置的實例性實施例。 圖14示出根據本揭露實例性實施例的複製命令的實施例。
1402、1404、1406、1408、1410:操作

Claims (20)

  1. 一種方法,包括: 在裝置處接收複製命令,其中所述複製命令包括對第一源資料量的第一指示及對第二源資料量的第二指示; 至少部分地基於所述第一指示來確定目標空間量;以及 分塊所述目標空間量的至少一部分。
  2. 如請求項1所述的方法,更包括: 讀取所述第一指示;以及 讀取所述第二指示; 其中所述目標空間量包括所述第一量的至少第一部分及所述第二量的至少第二部分。
  3. 如請求項2所述的方法,其中所述分塊包括分塊所述第一量的所述至少第一部分及所述第二量的所述至少第二部分。
  4. 如請求項1所述的方法,更包括儲存所述第一指示以產生已儲存第一指示。
  5. 如請求項4所述的方法,更包括: 讀取所述已儲存第一指示;以及 基於所述讀取所述已儲存第一指示而將所述第一源資料量的至少一部分寫入所述目標空間量的所述至少一部分中。
  6. 如請求項5所述的方法,其中所述已儲存第一指示儲存於第一記憶體位置中,所述方法更包括基於所述寫入所述第一源資料量的所述至少一部分來修改所述第一記憶體位置。
  7. 如請求項2所述的方法,其中所述讀取所述第一指示包括實行對所述第一指示的第一讀取操作;所述方法更包括: 實行對所述第一指示的第二讀取操作;以及 基於所述第二讀取操作而將所述第一源資料量的至少一部分寫入所述目標空間量的所述至少一部分中。
  8. 如請求項7所述的方法,更包括: 儲存所述第二指示以產生已儲存第二指示; 讀取所述已儲存第二指示;以及 基於所述讀取所述已儲存第二指示而將所述第二源資料量的至少一部分寫入所述目標空間量的所述至少一部分中。
  9. 如請求項1所述的方法,其中所述目標空間量是第一目標空間量,所述方法更包括基於所述接收所述複製命令而分塊第二目標空間量。
  10. 如請求項9所述的方法,其中所述第二目標空間量是基於所述複製命令的複製長度。
  11. 如請求項9所述的方法,其中所述確定所述第一目標空間量包括至少部分地基於所述第一指示來修改所述第二目標空間量。
  12. 如請求項9所述的方法,其中: 所述複製命令包括指示計數;且 其中所述確定所述第一目標空間量是基於所述指示計數。
  13. 如請求項1所述的方法,其中,所述目標空間量是第一目標空間量,所述方法更包括: 至少部分地基於所述第二指示來確定第二目標空間量;以及 分塊所述第二目標空間量的至少一部分。
  14. 一種系統,包括: 主機,用以發送複製命令,其中所述複製命令包括對第一源資料量的第一指示及對第二源資料量的第二指示;以及 裝置,用以: 接收所述複製命令; 至少部分地基於所述第一指示來確定目標空間量;以及 分塊所述目標空間量的至少一部分。
  15. 如請求項14所述的系統,其中所述裝置更用以: 自所述主機讀取所述第一指示;以及 自所述主機讀取所述第二指示; 其中所述目標空間量包括所述第一量的至少第一部分及所述第二量的至少第二部分。
  16. 如請求項15所述的系統,其中所述裝置更用以: 在所述裝置處儲存所述第一指示,以產生已儲存第一指示; 實行對所述已儲存第一指示的讀取操作;以及 基於所述讀取操作而將所述第一源資料量的至少一部分寫入所述目標空間量的所述至少一部分中。
  17. 一種裝置,包括: 通訊介面; 儲存媒體;以及 裝置控制器,用以: 使用所述通訊介面接收複製命令,其中所述複製命令包括所述儲存媒體中的對第一源資料量的第一指示及所述儲存媒體中的對第二源資料量的第二指示; 至少部分地基於所述第一指示來確定所述儲存媒體中的目標空間量;以及 分塊所述目標空間量的至少一部分。
  18. 如請求項17所述的裝置,其中所述裝置控制器用以: 使用所述通訊介面實行對所述第一指示的第一讀取操作;以及 使用所述通訊介面實行對所述第二指示的第二讀取操作; 其中所述目標空間量包括所述第一量的至少第一部分及所述第二量的至少第二部分。
  19. 如請求項18所述的裝置,其中所述裝置控制器用以: 儲存所述第一指示以產生已儲存第一指示; 實行對所述已儲存第一指示的讀取操作;以及 基於所述讀取操作而將所述第一源資料量的至少一部分寫入所述目標空間量的所述至少一部分中。
  20. 如請求項18所述的裝置,其中所述裝置控制器用以: 使用所述通訊介面實行對所述第一指示的第三讀取操作;以及 基於所述第三讀取操作而將所述第一源資料量的至少一部分寫入所述目標空間量的所述至少一部分中。
TW112103261A 2022-02-11 2023-01-31 用於設備中複製目標原子性的系統、方法和裝置 TW202334804A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202263309508P 2022-02-11 2022-02-11
US63/309,508 2022-02-11
US17/866,466 2022-07-15
US17/866,466 US20230259294A1 (en) 2022-02-11 2022-07-15 Systems, methods, and apparatus for copy destination atomicity in devices

Publications (1)

Publication Number Publication Date
TW202334804A true TW202334804A (zh) 2023-09-01

Family

ID=84901350

Family Applications (1)

Application Number Title Priority Date Filing Date
TW112103261A TW202334804A (zh) 2022-02-11 2023-01-31 用於設備中複製目標原子性的系統、方法和裝置

Country Status (4)

Country Link
US (1) US20230259294A1 (zh)
EP (1) EP4227790B1 (zh)
KR (1) KR20230121547A (zh)
TW (1) TW202334804A (zh)

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7506116B2 (en) * 2005-07-19 2009-03-17 International Business Machines Corporation Maintaining and using information on updates to a data group after a logical copy is made of the data group
US7870353B2 (en) * 2005-08-15 2011-01-11 International Business Machines Corporation Copying storage units and related metadata to storage
US7617373B2 (en) * 2006-05-23 2009-11-10 International Business Machines Corporation Apparatus, system, and method for presenting a storage volume as a virtual volume
US8095827B2 (en) * 2007-11-16 2012-01-10 International Business Machines Corporation Replication management with undo and redo capabilities
US9563555B2 (en) * 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
US9298507B2 (en) * 2013-09-26 2016-03-29 International Business Machines Corporation Data processing resource management
US10564847B1 (en) * 2014-09-30 2020-02-18 EMC IP Holding Company LLC Data movement bulk copy operation
CN107526535B (zh) * 2016-06-22 2020-07-10 伊姆西Ip控股有限责任公司 用于管理存储系统的方法和系统
CN108984312B (zh) * 2017-06-02 2022-03-25 伊姆西Ip控股有限责任公司 数据读写的方法和设备
US10620870B2 (en) * 2017-12-08 2020-04-14 Intel Corporation Data storage device with bytewise copy

Also Published As

Publication number Publication date
KR20230121547A (ko) 2023-08-18
EP4227790B1 (en) 2024-05-01
US20230259294A1 (en) 2023-08-17
EP4227790A1 (en) 2023-08-16

Similar Documents

Publication Publication Date Title
US20190243558A1 (en) Two-level system main memory
US9075557B2 (en) Virtual channel for data transfers between devices
US9256384B2 (en) Method and system for reducing write latency in a data storage system by using a command-push model
JP5960517B2 (ja) フラッシュメディアコントローラの内部のメタデータハンドリング
US9910777B2 (en) Enhanced integrity through atomic writes in cache
JP6385995B2 (ja) テーブル・オブ・コンテンツエントリを使用してデータを格納するためのシステムおよび方法
US20180095996A1 (en) Database system utilizing forced memory aligned access
US20130019053A1 (en) Flash controller hardware architecture for flash devices
US10528424B2 (en) Selectively de-straddling data pages in non-volatile memory
TWI696188B (zh) 混合式記憶體系統
JP2013156977A (ja) 冗長キャッシュデータのエラスティックキャッシュ
CN112416250B (zh) 基于NVMe的固态硬盘的命令处理方法及相关设备
US11240306B2 (en) Scalable storage system
EP2979187B1 (en) Data flush of group table
TW201729098A (zh) 用於減少儲存資料的複製之技術
US11010091B2 (en) Multi-tier storage
TW202334804A (zh) 用於設備中複製目標原子性的系統、方法和裝置
US20220187992A1 (en) Systems and methods for data copy offload for storage devices
JP2020013318A (ja) データベース管理システム、メモリ管理装置、データベース管理方法およびプログラム
CN116594805A (zh) 用于设备中复制目的地原子性的系统、方法和装置