TWI810745B - 用於為儲存裝置資料複製卸載的系統及方法 - Google Patents

用於為儲存裝置資料複製卸載的系統及方法 Download PDF

Info

Publication number
TWI810745B
TWI810745B TW110146550A TW110146550A TWI810745B TW I810745 B TWI810745 B TW I810745B TW 110146550 A TW110146550 A TW 110146550A TW 110146550 A TW110146550 A TW 110146550A TW I810745 B TWI810745 B TW I810745B
Authority
TW
Taiwan
Prior art keywords
buffer
data
source device
destination device
destination
Prior art date
Application number
TW110146550A
Other languages
English (en)
Other versions
TW202230122A (zh
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 TW202230122A publication Critical patent/TW202230122A/zh
Application granted granted Critical
Publication of TWI810745B publication Critical patent/TWI810745B/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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors

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)
  • Hardware Redundancy (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

於此所述的各種實行係關於用於從來源裝置傳送資料到目的地裝置的系統及方法,包括:由該目的地裝置接收來自主機的複製請求,由該目的地裝置與該來源裝置進行傳送以將資料從該來源裝置之緩衝器傳送到該目的地裝置之緩衝器,以及由該目的地裝置寫入該資料到該目的地裝置之非揮發性儲存器。

Description

用於為儲存裝置資料複製卸載的系統及方法
本揭露一般係關於用於在資料儲存裝置中資料複製的系統、方法及非暫態處理器可讀媒體。 對於相關專利申請案的交叉參考
本案請求於2020年十二月16日申請發明名稱為「Systems and Methods for Data Copy Offload for Storage Devices」的美國臨時申請案序號63/126,442之優先權,其之內容於此以其整體參引合併,並且出於所有目的仿佛是於此完整且完全地提出。
在於其中資料係從第一固態裝置(SSD;Solid State Device)複製到第二SSD的傳統資料複製過程中,主機發送讀取命令到第一SSD且從第一SSD傳送該資料到主機之本地/區域記憶體。其後,主機發送寫入命令到第二SSD,並且該資料係從主機之本地/區域記憶體傳送到第二SSD。這樣的過程要求來自主機之相當的資料來執行。 發明說明
在一些佈設中,用於從來源裝置傳送資料到目的地裝置的方法包括:由該目的地裝置接收來自主機的複製請求,由該目的地裝置與該來源裝置進行傳送以將該資料從該來源裝置之緩衝器傳送到該目的地裝置之緩衝器,以及由該目的地裝置寫入資料到該目的地裝置之非揮發性儲存器。
在一些佈設中,用於從來源裝置傳送資料到目的地裝置的方法包括:由該來源裝置與該目的地裝置通訊來建立填充該來源裝置之緩衝器,並且由該來源裝置進行與該目的地裝置之傳送以將該資料從該來源裝置之緩衝器傳送到該目的地裝置。
於此所揭示的佈設係關於資料複製方案,其為成本效益的解決方案而不用對較快交付商務需求來妥協需求。本揭露改善資料複制,同時創建與目前系統架構及演進改變之調和的解。在一些佈設中,本揭露係關於在二或更多儲存系統之元件之間協同地進行資料複製操作。資料複製操作直接在2或更多儲存系統之元件之間發生,而在複製料中沒有任何第三方(像是,但不限於,儲存系統控制器或主機電腦),因此緩解或「卸載」命令、控制或資料緩存任務之第三方。在非揮發性記憶體裝置於此被提呈為範例的同時,所揭示的方案能在任何儲存系統或裝置上實行,其透過對主機的介面來連接且暫時或永久儲存用於該主機的資料以為了之後檢索(retrieval)。
為了在示出本實行上的協助,圖1A繪示依據一些範例包括耦接至主機101之儲存裝置100a, 100b, ..., 100n(統稱儲存裝置100)的系統之方塊圖。主機101能為由使用者或儲存裝置之自動中央控制器操作的使用者裝置,其中主機101及儲存裝置100對應於儲存子系統或儲存電器。主機101能連接到通訊網路109(經由網路介面108),使得其它主機電腦(未繪示)可經由通訊網路109存取儲存子系統或儲存電器。這類儲存子系統或電器之範例包括全快閃陣列(AFA;All Flash Array)或網路附接儲存(NAS;Network Attached Storage)裝置。如繪示,主機101包括記憶體102、處理器104以及匯流排106。處理器104係操作地耦接至記憶體102及匯流排106。處理器104有時稱為主機101之中央處理單元(CPU),並且組態以進行主機101之處理。
記憶體102為主機101之區域記憶體。在一些範例中,記憶體102為緩衝器,有稱稱為主機緩衝器。在一些範例中,記憶體102為揮發性儲存器。在其它範例中,記憶體102為非揮發性持續儲存器。記憶體102之範例包括,但不限於,隨機存取記憶體(RAM;Random Access Memory)、動態隨機存取記憶體(DRAM;Dynamic Random Access Memory)、靜態RAM(SRAM)、磁性RAM(MRAM)、相變記憶體(PCM;Phase Change Memory)等等。
匯流排106包括軟體、韌體及硬體之一或更多者,其透過主機101能通訊的組件提供介面。組件之範例包括,但不限於,處理器104、網路卡、儲存裝置、記憶體102、圖形卡等等。此外,主機101(例如,處理器104)能使用匯流排106與儲存裝置100通訊。在一些範例中,儲存裝置100係直接附接或透過合適的介面140通訊耦接至匯流排106。匯流排106為串列、PCIe匯流排或網路、PCIe根複合體、內部PCIe交換器等等之其中一或更多者。
處理器104能在作業系統(OS;Operating System)上執行,其提供檔案系統或使用該檔案系統的應用。處理器104能經由通訊連結或網路來與儲存裝置100 (例如,儲存裝置100之各者的控制器110)通訊。在此方面,處理器104能使用對通訊連結或網路的介面140發送資料到儲存裝置100之一或更多者或從該儲存裝置100之一或更多者接收資料。介面140允許軟體(例如,檔案系統)在處理器104上運行來經由匯流排106與儲存裝置100(例如,其控制器110)通訊。儲存裝置100(例如,其控制器110)係直接經由介面140操作地耦接至匯流排106。在介面140係概念地繪示為在主機101與儲存裝置100之間的虛線的同時,介面140能包括一或更多控制器、一或更多實體連接器、一或更多資料傳送協定(其包括名稱空間(namespace)、埠、傳輸機制以及其通訊連結(connectivity))。在主機101與儲存裝置100之間的連接被繪示為直接連結的同時,在一些實行中,該連結可包含網路組構(network fabric),其可包括網路連結組件,像是橋接器和交換器。
為了發送和接收資料,處理器104(軟體或在其上運行的檔案系統)使用在介面140上運行的儲存資料傳送協定來與儲存裝置100通訊。協定的範例包括,但不限於,SAS、串列ATA(SATA)以及NVMe協定。在一些範例中,介面140包括在匯流排106上實行的或操作地耦接至匯流排106的硬體(例如,控制器)、儲存裝置100(例如,控制器110)或經由一或更多合適的網路操作地耦接至匯流排106及/或儲存裝置100的另一裝置。介面140和在其上運行的儲存協定亦包括在這類硬體上執行的軟體及/或韌體。
在一些範例中,處理器104能經由匯流排106和網路介面108來與通訊網路109通訊。附接或傳播地耦接至通訊網路109的其它主機系統(未繪示)能使用合適的網路儲存協定來與主機101通訊,其之範例包括,但不限於,通過組構的NVMe(NVMeoF)、iSCSI、光纖通道(FC;Fiber Channel)、網路檔案系統(NFS;Network File System)、伺服器訊息區塊(SMB;Server Message Block)等等。網路介面108允許在處理器104上運行的軟體(例如,儲存協定或檔案系統)來經由匯流排106與附接至通訊網路109的外部主機通訊。以此方式,網路儲存命令可由外部主機發出且由處理器104處理,其能當需要時將儲存命令發出給儲存裝置100。因此,資料能經由通訊網路109在外部主機和儲存裝置100之間交換。在此範例中,任何交換的資料在主機101之記憶體102中緩存。
在一些範例中,儲存裝置100係位於資料中心中(為了簡潔而未繪示)。資料中心可包括一或更多平台或機架單元,其之各者支援一或更多儲存裝置(像是,但不限於,儲存裝置100)。在一些實行中,隨著主機101作動為節點控制器,主機101和儲存裝飛100一起形成儲存節點。儲存節點之範例為Kioxia Kumoscale儲存節點。在平台內的一或更多儲存節點係連接至架頂(TOR;Top of Rack )交換器,各個儲存節點經由一或更多網路連接連接至TOR,網路連接像是乙太網、光纖通道或無限頻寬(InfiniBand),並且能經由TOR交換器或另外合適的平台內通訊機制來彼此通訊。在一些實行中,儲存裝置100可為網路附接儲存裝置(例如,乙太SSD),其隨著主機101亦連接至TOR交換器且能夠經由TOR交換器來與儲存裝置100通訊而連接至TOR交換器。在一些實行中,至少一路由器可促進在不同平台、機架或經由合適的連網組構的機櫃(cabinet)中的儲存節點中的儲存裝置100之間的通訊。儲存裝置100之範例包括非揮發性裝置,像是(但不限於)固態硬體(SSD;solid-state drive)、乙太網附接的SSD、非揮發性雙列直插記憶體模組(NVDIMM;Non-Volatile Dual In-line Memory Module)、通用快閃儲存器(UFS;Universal Flash Storage)、安全數位(SD;Secure Digital)裝置等等。
儲存裝置100之各者包括至少控制器110和記憶體陣列120。儲存裝置100之其它組件係為了簡潔而未繪示。記憶體陣列120包括NAND快閃記憶體裝置130a-130n。NAND快閃記憶體裝置130a-130n之各者包括一或更多個別NAND快閃晶粒,其為不用電力能夠留存資料的NVM。因此,NAND快閃記憶體裝置130a-130n指的是多個NAND快閃記憶體裝置或在快閃記憶體裝置100內的晶粒。NAND快閃記憶體裝置130a-130n之各者包括一或更多晶粒,其之各者具有一或更多平面。各個平面具有多個區塊,並且各個區塊具有多個分頁。
在NAND快閃記憶體裝置130a-130n係繪示為記憶體陣列120之範例的同時,用於實行記憶體陣列120的非揮發性記憶體技術之其它範例包括,但不限於,非揮發性(電池後備供電(battery-backed))DRAM、磁性隨機存取記憶體(MRAM)、相變記憶體(PCM)、鐵電性RAM (FeRAM;Ferro-Electric RAM)等等。於此所述的佈設同樣能使用這類記憶體技術和其它合適的記憶體技術來在記憶體系統上實行。
控制器110之範例包括,但不限於,SSD控制器(例如,客端SSD控制器、資料中心SSD控制器、企業SSD控制器等等)、UFS控制器或SD控制器等等。
控制器110能將在複數個NAND快閃記憶體裝置130a-130n中的原始資料儲存結合,使得該些NAND快閃記憶體裝置130a-130n邏輯地作用為單一儲存的單元。控制器110能包括處理器、微控制器、緩衝器(例如,緩衝器112、114、116)、錯誤校正系統、資料加密系統、快閃轉換層(FTL;Flash Translation Layer)以及快閃介面模組。這類功能能以硬體、軟體以及韌體或其任何結合來實行。在一些佈設中,控制器110之軟體/韌體能被儲存在記憶體陣列120中或在任何其它合適的電腦可讀儲存媒體中。
控制器110包括合適的處理及記憶體能力以用於執行於此所述的功能還有其它功能。如所述,控制器110管理用於NAND快閃記憶體裝置130a-130n的各種特徵,包括,但不限於,I/O處置、讀取、寫入/編程、抹除、監控、登錄、錯誤處置、廢料收集、損耗平衡(wear leveling)、邏輯對實體位址映射、資料保護(加密/解密、循環冗餘檢查(CRC;Cyclic Redundancy Check))、錯誤校正編碼(ECC;Error Correction Coding)、資料攪拌(data scrambling)及類似者。因此,控制器110對NAND快閃記憶體裝置130a-130n提供可見性(visibility)。
緩衝器記憶體111為局部以操作地耦接至控制器110的記憶體裝置。舉例而言,緩衝器記憶體111能為位於控制器110之晶片上的晶片上SRAM記憶體。在一些實行中,緩衝器記憶體111能使用外部於控制器110的儲存裝置110之記憶體裝置來實行。舉例而言,緩衝器記憶體111能為位於不是控制器110之晶片的晶片上的DRAM。在一些實行中,緩衝器111能使用內部於和外部於控制器110兩者的記憶體裝置來實行(例如,在控制器110之晶片上或晶片外兩者)。例如,緩衝器記憶體111能使用內部SRAM和外部DRAM兩者來實行,其為透明的/暴露的且經由介面140可由其它裝置存取,其它裝置像是主機101和其它儲存裝置100。在此範例中,控制器110包括使用在單一位址空間內記憶體位址的內部處理器和記憶體控制器,其控制內部SRAM和外部DRAM兩者、基於效率選擇是否將資料擺放在內部SRAM和外部DRAM上。換言之,內部SRAM和外部DRAM像單一記憶體般被定址。如所繪示,緩衝器記憶體111包括緩衝器112、寫入緩衝器114以及讀取緩衝器116。換言之,緩衝器112、寫入緩衝器114以及讀取緩衝器116能使用緩衝器記憶體111來實行。
控制器110包括緩衝器112,其有時被稱為驅動緩衝器或控制器記憶體緩衝器(CMB;Controller Memory Buffer)。除了可由控制器110存取之外,緩衝器112經由介面140可由其它裝置存取,像是主機101和儲存裝置100之其它者。以該方式,緩衝器112(例如,在緩衝器112內的記憶體位置之位址)係跨匯流排106而被暴露,並且在匯流排106上的裝置可使用對應於在緩衝器112內記憶體位置的位址或邏輯位址(例如,邏輯區塊位址(LBA;Logical Block Address))發出讀取及寫入命令,以為了讀取及寫入在緩衝器內的資料。在一些範例中,緩衝器112為揮發性儲存器。在一些範例中,緩衝器112為非揮發性持續儲存器。緩衝器112之範例包括,但不限於,RAM,DRAM、SRAM、MRAM,PCM,等等。緩衝器112可指的是多個緩衝器,各者組態以儲存於此所述的不同類型的資料。
在一些實行中,如在圖1A中所繪示,緩衝器112為控制器110之區域記憶體。舉例而言,緩衝器112能為位於控制器110之晶片上的晶片上SRAM記憶體。在一些實行中,緩衝器112能使用外部於控制器110的儲存裝置110之記憶體裝置來實行。舉例而言,緩衝器112能為位於不是控制器110之晶片的晶片上的DRAM。在一些實行中,緩衝器112能使用內部於和外部於控制器110兩者的記憶體裝置來實行(例如,在控制器110之晶片上或晶片外兩者)。例如,緩衝器112能使用內部SRAM和外部DRAM兩者來實行,其為透明的/暴露的且經由介面140可由其它裝置存取,其它裝置像是主機101和其它儲存裝置100。在此範例中,控制器110包括使用在單一位址空間內記憶體位址的內部處理器和記憶體控制器,其控制內部SRAM和外部DRAM兩者、基於效率選擇是否將資料擺放在內部SRAM和外部DRAM上。換言之,內部SRAM和外部DRAM像單一記憶體般被定址。
在論及寫入操作的一範例中,反應於從主機101接收資料(經由主機介面140),在寫入資料到寫入緩衝器114之後,控制器110對主機101確認/認可(acknowledge)寫入命令。在一些實行中,寫入緩衝器114可在與緩衝器112分開、不同的記憶體中實行,或者寫入緩衝器114可為界定區域或包含緩衝器112的記憶體之部分,其中僅該記憶體之CMB部分可由其它裝置存取,但非寫入緩衝器114。控制器110能將在寫入緩衝器114中儲存的資料寫入到記憶體陣列120(例如,NAND快閃記憶體裝置130a-130n)中。一旦完成將資料寫入到記憶體陣列120之實體位址中時,FTL將由主機101所使用的邏輯位址(例如,LBA)更新來與由控制器110所使用的資料及實體位址關聯,用以識別資料之實體位置。在論及讀取操作的另一範例中,控制器110包括不同於緩衝器112及緩衝器114的另一緩衝器116(例如,讀取緩衝器),用以儲存從記憶體陣列120讀取的資料。在一些實行中,讀取緩衝器116可在與緩衝器112分開、不同的記憶體中實行,或者讀取緩衝器116可為界定區域或包含緩衝器112的記憶體之部分,其中僅該記憶體之CMB部分可由其它裝置存取,但非讀取緩衝器116。
在非揮發性記憶體裝置(例如,NAND快閃記憶體裝置130a-130n)於此被提呈為範例的同時,所揭示的方案能在任何儲存系統或裝置上實行,其透過介面來連接至主機101,其中這類系統暫時或永久儲存用於主機101的資料以為了之後檢索(retrieval)。
在儲存裝置100被繪示且描述為分開的實體裝置的同時,於此揭示的佈設同樣可應用到虛擬化的儲存裝置100。舉例而言,儲存裝置100之各者的控制器110及記憶體陣列120能自像是處理器和記憶體的硬體組件來虛擬化。
傳統上,為了將對應於一邏輯位址(例如,一LBA)的資料,或者更通常是對應於邏輯位址的範圍(例如,LBA之範圍,其使用開始LBA和資料位元組之長度B來明定用以傳送),從第一儲存裝置(例如,儲存裝置100a)複製到第二儲存裝置(例如,儲存裝置100b),主機101需要分配在記憶體102中的緩衝器並且經由介面140及匯流排106發送I/O命令(例如,讀取命令)到第一儲存裝置以讀取對應於邏輯位址的資料,提供記憶體102之位址、來源LBA以及資料長度B作為在讀取命令中的參數。儲存裝置100a將邏輯位址轉譯成實體位址,從記憶體陣列120在該實體位址處將B資料位元組讀取到讀取緩衝器116中。讀取對應於B資料位元組的所有資料後,控制器110經由介面140及匯流排106將B位元組的資料從讀取緩衝器116傳送(典型地在匯流排106上使用直接記憶體傳送操作)到在記憶體102中分配的緩衝器。最終,控制器110對主機101指示讀取命令已完成而沒有錯誤。主機101將另一I/O命令(例如,寫入命令)經由介面140及匯流排106發送到第二裝置,其提供在記憶體102中該緩衝器之位址、目的地LBA及長度B作為命令參數。作為對於第二I/O命令的回應,控制器110將資料從在記憶體102中分配的緩衝器傳送(典型地在匯流排106上使用直接記憶體傳送操作)到寫入緩衝器114。接著,控制器110進行目的地LBA至實體位址的轉譯,並且經由介面140及匯流排106將B位元組的資料從寫入緩衝器114傳送到在第二儲存裝置之記憶體陣列120中的實體位址。能藉由使用開始LBA及長度值明定LBA之範圍(其指示資料之區塊的尺寸)來傳送資料之鄰接區塊。此外,使用像是NVMe的儲存協定,成組的資料之非鄰接區塊可使用LBA及長度對(LBAs and length pairs)的列表(例如,聚散表(SGL;Scatter-Gather List))來明定。在此情形中,針對列表之各個LBA及長度對重複前述的過程直到已複製用於所有資料之區塊的資料為止。
所有這類操作需要在主機101之處理器104上的CPU週期(cycle)、內容轉換(Context Switch)等等。此外,在處理器104和記憶體102之間進行的傳送消耗記憶體空間(資料緩衝器、提交佇列(SQ;Submission Que)/完成佇列(CQ;Completion Que))以及在處理器104和記憶體102之間的記憶體匯流排頻寬。仍進一步,在處理器104和匯流排106之間資料之通訊消耗匯流排106之頻寬,其中匯流排106之頻寬被視為珍貴資源,因為匯流排106作為在主機101之不同組件之間以及儲存裝置100a, 100b...100n他們本身之間的介面。據此,傳統資料複製方案在主機101上消耗可觀的資源(例如,頻寬、CPU週期以及緩衝器空間)。
於此揭示的一些佈設係關於基於儲存裝置100之間點對點(P2P;Peer-to-Peer )傳送達成資料複製。在使用P2P傳送的資料複製方案中,使用儲存裝置100之區域記憶體緩衝器(例如,緩衝器112)來進行從一儲存裝置(例如,儲存裝置100a)到另一者(例如,儲存裝置100b)的資料傳送。涉及多個儲存裝置100的資料複製能在儲存裝置100之間進行而沒有來自主機101的涉入,除了主機101藉由將一I/O命令發送到多於二儲存裝置100之第一者(例如,儲存裝置100a)來觸發資料複製操作之外。據此,資料不再需要被複製到主機101的記憶體102中,因此降低需要將資料傳送到記憶體102中/傳送出記憶體102的遲延及頻寬。能降低I/O操作之數目到針對包含有一範圍的邏輯位址及相當數目的儲存裝置100的複製操作的一I/O。效率增加不僅改善效能而且也降低成本、功耗以及網路利用。
為了達成這樣改善的效率,儲存裝置100之各者的緩衝器112的位址係與所有的儲存裝置100共用,使得儲存裝置100之各者認知到其餘儲存裝置100之緩衝器112的位址。例如,儲存裝置100a認知到儲存裝置100b-100n之各者的緩衝器112之位址,儲存裝置100b認知到儲存裝置100a, 100c-100n之各者的緩衝器112之位址,儲存裝置100n認知到儲存裝置100a-100n-1之各者的緩衝器112之位址等等。
儲存裝置100的緩衝器112之位址係以使用各種機制來共用。在一些實行中,儲存裝置100之各者能從指定的實體獲得其它儲存裝置100之緩衝器112的位址,或者緩衝器112之位址係儲存於共用的位址暫存器中。例如,儲存裝置100的緩衝器112之位址能跨匯流排106(例如,透過基底位址暫存器(Base Address Register))而對主機101暴露來與儲存裝置100共用。基底位址暫存器之範例為共用PCIe基底位址暫存器,其為共用位址暫存器及指定的實體。作為CMB的緩衝器112之位址能例如為NVMe控制器暫存器CMBLOC,其包括緩衝器112之開始的PCI位址位置(緩衝器112的開始)以及控制器暫存器CMBSZ(緩衝器112之尺寸)。
在另一範例中,緩衝器112之位址能由具有合適的處理及記憶體能力(例如,具有處理電路)的另一合適的實體來管理及提供,並且使用介面140或使用另一個合適的網路(例如,區域或乙太連接)可通訊地耦接至儲存裝置100。指定的實體能維護緩衝器112之位址的最新列表,給定由於一或更多儲存裝置變為連線(online)、被添加到群組、從群組移除、被切斷等等,則在群組內的儲存裝置100可能不時地改變。
又在另一範例中,緩衝器112之位址不需事先被分開共用,而相反的於複製操作中使用的命令中被個別明定。在一實行中,主機101可發出複製命令到來源裝置,其將目的地裝置之緩衝器位址112明定為參數。因此,來源裝置能從來源裝置之記憶體陣列120讀取資料且將資料傳送到在目的地裝置中的緩衝器112。來源裝置能發出寫入命令到目的地裝置,其將目的地裝置自身的緩衝器112明為要寫入的資料之位址,用以完成複製操作。在另一實行中,來源裝置從主機101接收複線命令,其將來源裝置自身的緩衝器112明定為要擺置被讀取資料的位址。來源裝置100a接著將其自身的緩衝器112明定為要在寫入命令中寫入命令到目的地裝置的資料之位址,用以完成複製操作。
在一些實行中,主機101可發出複製命令到目的地裝置,其將儲存裝置明定為來源裝置且將來源裝置的緩衝器112之位址明定為來源資料要被放置的地方。接著,目的地裝置發出讀取命令到來源裝置,其明定來源裝置自身的緩衝器112以用於讀取資料。接著,目的地裝置進行資料寫入,其將來源裝置的緩衝器112使用作為要被寫入的資料之位置。在另一實行中,主機101可發出複製命令到目的地裝置,其將儲存裝置明定為來源裝置且將來源裝置的緩衝器112之位址明定為來源資料要進行傳送的地方。接著,目的地裝置發出讀取命令到來源裝置,其明定目的地裝置自身的緩衝器112以用於讀取資料。接著,目的地裝置100b進行資料寫入,其將目的地裝置的緩衝器112使用作為要被寫入的資料之位置。
如於此所述的,共用緩衝器112之位址允許儲存裝置100以P2P的方式使用該些共用位址來彼此直接通訊且傳送資料。在一範例中,緩衝器112為與寫入緩衝器114及讀取緩衝器116分開的CMB或類似者。在另一範例中,緩衝器112能與寫入緩衝器114或讀取緩衝器116相同,其以於此所述的方式使其位址與儲存裝置100共用。又在另一範例中,與儲存裝置100之剩餘者共用的儲存裝置100之一者的CMB的位址能映射至寫入緩衝器114或讀取緩衝器116。在這方面,緩衝器112於此係使用以指的是儲存裝置的緩衝器,其使其位址在儲存裝置100之間共用以用於資料複製操作。位址之範例包括(但不限於)CMB位址、識別符、指標或識別儲存裝置之緩衝器112的另一個合適的指示符。
如於此所使用的,來源裝置指的是含有要被複製的資料之儲存裝置。例如,來源裝置儲存要在記憶體陣列120中複製的資料。來源裝置之範例包括(但不限於)PCIe NVMe裝置、NVMeoF裝置(例如,乙太SSD)等。
如於此所使用的,目的地裝置指的是資料被傳送(複製)到的儲存裝置。例如,資料能從來源裝置被傳送到目的地裝置,並且在一些情形中,在目的地裝置之記憶體陣列120中儲存的現存資料可被更新成該傳送的資料。目的地裝置之範例包括(但不限於)PCIe NVMe裝置、通過組構的NVMe(NVMeoF)裝置(例如,乙太SSD)等。
如於此所使用的,目標裝置為來源裝置或目的地裝置其一者。
如於此所使用的,名稱空間(namespace)複製係使用以參照複製在名稱空間中整體範圍的LBA。關於名稱空間複製,來源名稱空間和目的地名稱空間係連同開始LBA及LBA範圍之長度來明定。
如於此所使用的,LBA複製係使用以指的是複製使用開始LBA及LBA範圍之長度所定義之明定的LBA。關於LBA複製,明定來源名稱空間和目的地名稱空間。
如於此所使用的,網路中(in-network)複製指的是從來源裝置複製資料到目的地裝置,其中來源及目的地裝置兩者為在相同PCIe網路內的PCIe NVMe裝置,或是具有相同NVMeoF網路的NVMeoF裝置。
如於此所使用的,網路外(out-of-network)複製指的是從來源裝置複製資料到目的地裝置,其中來源及目的地裝置兩者為在由NVMeoF連接的二不同網路上的NVMeoF裝置(例如,透過乙太網路組構附接的NVMeoF裝置或實行NVMeoF協定的乙太SSD)。
如於此所使用的,一對一複製指的是在其中僅一來源裝置儲存要被複製的資料的使用情形(取代多個來源裝置),並且資料被複製到僅一目的地裝置(取代多個目的地裝置)。一對一複製之範例包括(但不限於)名稱空間複製或LBA複製。一對一複製能為網路中複製或網路外。
如於此所使用的,許多對一複製指的是在其中多個來源裝置儲存要被複製的資料的使用情形,並且資料被複製到一目的地裝置。在一些範例中,在P2P複製對描述符中明定的次序指示按來自多個來源裝置的資料要由目的地裝置複製的次序。許多對一複製之範例包括(但不限於)名稱空間複製或LBA複製。許多對一複製能為網路中複製或網路外。
圖1B繪示依據一些實行來源裝置之緩衝器及目的地裝置之緩衝器之範例的方塊圖。參照圖1A及1B,來源裝置(例如,儲存裝置100a)之緩衝器112以及目的地裝置(例如,儲存裝置100b)之緩衝器112係繪示在圖1B中。
來源裝置之緩衝器112包括P2P保留區域150以及資料區域152。P2P保留區域150及資料區域152是在來源裝置之緩衝器112之記憶體裝置中不同的、預定義區域或分割。P2P保留區域150能由其自身位址之範圍所識別、由開始位址及尺寸所定義,其在介面140上被暴露。P2P保留區域150為在來源裝置之緩衝器112內指定區域或分割,其被留出以用於P2P訊息。來源裝置及目的地裝置能直接透過介面140或是另一合適的通訊協定或網路來彼此通訊P2P訊息,因為保留區域150可藉由使用在介面140上暴露範圍的位址來從儲存裝置100讀取或寫入到儲存裝置100。另一個裝置(例如,目的地裝置)能藉由將訊息寫入到P2P保留區域150內的位址來發送P2P訊息到來源裝置。反應於來源裝置偵測P2P訊息已被寫入到P2P保留區域150,來源裝置能開始處理P2P訊息。在一些範例中,來源裝置的目前操作能被暫止或中斷來處理P2P訊息。
如於此所述的,到來源裝置的P2P訊息能觸發來源裝置以將在來源裝置之記憶體陣列120中儲存的資料讀取到在來源裝置之資料區域152中的動態分配緩衝器或來源裝置之讀取緩衝器116中。在這方面,來源裝置之控制器110能在資料區域152內動態分配一或更多緩衝器154, 156, …, 158。緩衝器154, 156, …, 158之各者具有其自身的位址。使用讀取操作能從來源裝置之記憶體陣列120讀取資料到緩衝器154, 156, …, 158中。該些緩衝器之各者可具有合適於暫時儲存或分段(staging)要被傳送到目的地裝置的整體資料塊的緩衝器尺寸。在一些範例中,來源裝置能將緩衝器154, 156, …, 158的位址藉由將該些位址寫入到目的地裝置之P2P保留區域160來提供給目的地裝置,使得目的地裝置能對該些位址進行讀取操作來將儲存於來源裝置之緩衝器154, 156, …, 158中的資料讀取到目的地裝置之緩衝器中(例如,寫入緩衝器114的寫入緩衝器)。緩衝器154, 156, …, 158能被分配在滑動窗(sliding window)中,其意味緩衝器154, 156, …, 158之一些者反應於P2P訊息被分配於第一時間窗中以將用於傳送的資料塊分段。隨著完成將該些資料塊傳送到目的地裝置,該些緩衝器被重新分配或被回收利用,並且與其關聯的記憶體容量(memory capacity)被釋放來被分配為緩衝器154, 156, …, 158之額外者。目的地裝置之寫入緩衝器114之對應的寫入緩衝器能同樣的被分配。
目的地裝置之緩衝器112包括P2P保留區域160以及資料區域162。P2P保留區域160及資料區域162是在目的地裝置之緩衝器112之記憶體裝置中不同的、預定義區域或分割。P2P保留區域160能由其自身位址之範圍所識別、由開始位址及尺寸所定義,其在介面140上被暴露。P2P保留區域160為在目的地裝置之緩衝器112之位址空間內的指定區域或分割,其被留出以用於P2P訊息。另一個裝置(例如,來源裝置)能藉由將訊息寫入到P2P保留區域160的該範圍的位址內的位址來發送P2P訊息到目的地裝置。反應於目的地裝置偵測P2P訊息已被寫入到P2P保留區域160,目的地裝置能開始處理P2P訊息。
目的地裝置之控制器110能在資料區域162內動態分配一或更多緩衝器164, 166, …, 168。緩衝器164, 166, …, 168之各者具有其自身的位址。使用寫入操作能從緩衝器164, 166, …, 168寫入資料到目的地裝置之記憶體陣列120。該些緩衝器之各者可具有合適於暫時儲存或分段要從來源裝置接收的整體資料塊的緩衝器尺寸。在一些範例中,目的地裝置能將緩衝器164, 166, …, 168的位址藉由將該些位址寫入到來源裝置之P2P保留區域150來提供給來源裝置,使得來源裝置能對該些位址進行寫入操作來將儲存於來源裝置之緩衝器(例如,讀取緩衝器116的讀取緩衝器)中的資料寫入到目的地裝置之緩衝器164, 166, …, 168。緩衝器164, 166, …, 168能被分配在滑動窗中,其意味緩衝器164, 166, …, 168之一些者被分配於第一時間窗中以從來源裝置接收第一資料塊。隨著完成將該些資料塊寫入到目的地裝置之記憶體陣列120,該些緩衝器被重新分配或被回收利用,並且與其關聯的記憶體容量被釋放來被分配為緩衝器164, 166, …, 168之額外者。來源裝置之讀取緩衝器116之對應的讀取緩衝器能同樣的被分配。
圖2為依據一些實行例示用於進行資料複製的範例方法200的方塊圖。參照圖1A-2,在方法200中,從來源裝置(例如,儲存裝置100a)複製資料到目的地裝置(例如,儲存裝置100b)。在圖2之脈絡內,儲存裝置100a和儲存裝置100n為鏡像裝置,而儲存裝置100n已失效。因此,備用驅動機(儲存裝置100b)正被促使連上線來將在儲存裝置100a上儲存的資料鏡像,使得兩個鏡像的裝置同步地連上線。在這方面,來源及目的地裝置會具有同一的名稱空間尺寸,並且LBA複製在名稱空間內留存同一LBA偏置。據此,圖2描繪在相同偏置處的一對一LBA複製操作。
如在圖2中所繪示的,儲存裝置100a之記憶體陣列120具有儲存容量201,其儲存包括對應於名稱空間210之者的資料。儲存裝置100b之記憶體陣列120具有儲存容量202,其儲存包括對應於名稱空間220之者的資料。對應於名稱空間210之LBA範圍211的資料被複製到儲存裝置100b之儲存容量202,如同對應於名稱空間220之LBA範圍221的資料。名稱空間210及220可具有相同的識別符(例如,相同號碼/索引,像是「名稱空間1」)以及同一的尺寸。LBA範圍211在開始LBA 212處開始且在結束LBA 213處結束,並且在命令中典型地由LBA範圍211之開始LBA 212及LBA之長度所定義。LBA範圍221在開始LBA 222處開始且在結束LBA 223處結束,並且在命令中典型地由LBA範圍221之開始LBA 222及LBA之長度所定義。給定偏置是相同的,開始LBA 212及222可具有相同的識別符(例如,相同的數字/索引)。
在一些佈設中,在如圖2中所繪示的一對一LBA複製操作中,主機101能將包括描述符的命令發送到目的地裝置(例如,儲存裝置100b),像是下列一或更多者(1)要被複製的LBA範圍211(由LBA範圍211之開始LBA 212及長度所定義);(2)來源裝置(例如,儲存裝置100a)之緩衝器112的位址;(3)其它資訊,像是資料複製類型(例如,一對一LBA複製操作)。
在一些佈設中,取代主機101直接在命令中發送來源裝置之緩衝器112的位址的是,緩衝器112之位址能被預共用。例如,表能包括映射至ID的儲存裝置100之各者的緩衝器的開始位址。隨著主機101或中央位址中介器(central address broker)存取儲存裝置100之各者,能由主機101或中央位址中介器(未繪示)產生且更新這樣的表。中央位址中介器係經由合適的網路可通訊地耦接至主機101及儲存裝置100。在一些範例中,能由中央位址中介器來儲存該表。在其中由主機101產生表的範例中,主機101能將表(以及其更新)發送到中央位址中介器以被儲存。在一些範例中,主機101或中央位址中介器能將表(以及其更新)發送到儲存裝置100之各者以被儲存。命令包括來源裝置之緩衝器112的ID之描述符,其取代來源裝置之緩衝器112之位址。反應於接收該ID,目的地裝置查找在中央位址中介器或目的地裝置本身中儲存且管理的表,用以判定對應該ID之緩衝器112的開始位址。
在一些範例中,一裝置(例如,目的地裝置)使用來源裝置之緩衝器112。在一些範例中,來源裝置提交緩衝器112用於另一個使用,來源裝置中斷或停止在複製操作之時距(span)期間該另一個使用。
反應於接收命令,目的地裝置啟動與來源裝置的通訊以將對應於LBA範圍211的資料從來源裝置傳送到目的地裝置。例如,目的地裝置能經由介面140發送請求到來源裝置,其中該請求包括要被複製的LBA範圍211(由開始LBA 212和LBA範圍211之長度所定義)。一旦接收請求,來源裝置將在陣列120中儲存的資料讀取到來源裝置之緩衝器112中,其對於包括目的地裝置的儲存裝置100暴露。目的地裝置能經由介面140將在來源裝置之緩衝器112中儲存的資料傳送到目的地裝置之寫入緩衝器中,而接著基於LBA範圍221傳送到陣列120。此能為到目的地裝置中的寫入操作。例如,將來源裝置之緩衝器112明定為要被寫入的資料的寫入命令被來源裝置發送到目的地裝置。
在一些範例中,由目的地裝置發送到來源裝置的命令包括目的地裝置之緩衝器112的位址或ID。反應於接收該命令,來源裝置從來源裝置之陣列120讀取資料且將該資料直接傳送到目的地裝置之緩衝器112中。
因此,其取決於當目的地裝置發出命令給來源裝置時由目的地裝置提供的位址或ID。在來源裝置自身的緩衝器112之位址或ID被提供於命令中的範例中,來源裝置之緩衝器112不需在複製操作中。
在一些範例中,來源裝置通知目的地裝置來源裝置已完成從陣列112讀取資料塊以及已擺置該資料塊。在一些範例中,塊及描述符兩者的傳送係總是以LBA的單位。因此,當來源裝置通知目的地該資料塊之傳送已完成時,來源裝置寫入目的地裝置之緩衝器112中(例如,P2P保留區域160),LBA之計數代表傳送剛完成。在一些範例中,目的地裝置認可/確認接收該傳送,使得來源裝置能重新使用相同的緩衝器以用於從陣列112擺置下一個資料塊。目的地裝置藉由寫入來源裝置之緩衝器112(例如,P2P保留區域150)來認可/確認,剩餘LBA之計數仍由來源裝置傳送以滿足該描述符傳送需要。反應於目的地裝置針對剩餘LBA寫入零,來源裝置判定已完全處理描述符傳送請求。在一些佈設中,於如圖2所繪示的一對一LBA複製操作中,主機101能發送包括描述符的命令到來源裝置(例如,儲存裝置100a),該描述符諸如一或更多的(1)要被複製的LBA範圍211(由開始LBA 212及LBA範圍211之長度所定義);(2)目的地裝置(例如,儲存裝置100b)之緩衝器112的位址或ID;(3)其它資訊,像是資料複製類型(例如,一對一LBA複製操作)。反應於接收該命令,來源裝置讀取儲存在陣列120中的資料且傳送(例如,由DMA或非DMA寫入傳送)到目的地裝置之緩衝器112中,其對包括來源裝置的儲存裝置100暴露。接著,來源裝置啟動與目的地裝置的通訊來將在目的地裝置之緩衝器112中(其對應從來源裝置讀取的LBA範圍211)的資料寫入到目的地裝置陣列120。例如,來源裝置能經由介面140發送寫入請求到目的地裝置,其中該請求包括目的地緩衝器112之位址,其已經包括對應於LBA範圍211(由開始LBA 212及LBA範圍211之長度所定義)的資料和目的地開始LBA及要被寫入的資料之長度(其可等同於來源開始LBA及長度)。目的地裝置將儲存於目的地緩衝器112中的資料進行寫入並且寫到目的地裝置之陣列120中。
在一些範例中,來源裝置從陣列120讀取資料到來源裝置之緩衝器112中,並且將明定來源裝置之緩衝器112的位址或ID的寫入請求發送到目的地裝置。接著,目的地裝置進行傳送,其從來源裝置之緩衝器112傳送資料到目的地裝置。
圖3為依據一些實行例示用於進行資料複製的範例方法300的方塊圖。請參照圖1A、1B及3,在方法300中,從來源裝置(例如,儲存裝置100a)複製資料到目的地裝置(例如,儲存裝置100b)。在圖3的脈絡內,儲存裝置100a和儲存裝置100n為虛擬化的鏡像驅動機,並且儲存裝置100n已失效。因此,備用虛擬化驅動機(儲存裝置100b)正被促使連上線來將在儲存裝置100a上儲存的資料鏡像,使得兩個鏡像虛擬化裝置同步地連上線。在這方面,雖然來源及目的地裝置會具有同一的名稱空間尺寸,而由於虛擬化,則LBA複製對應於在目的地名稱空間中不同的偏置。據此,圖3描繪在不同偏置的一對一LBA複製操作。
如在圖3中所繪示,儲存裝置100a之記憶體陣列120具有儲存容量301,其儲存包括對應於名稱空間310之者的資料。儲存裝置100b之記憶體陣列120具有儲存容量302,其儲存包括對應於名稱空間320之者的資料。對應於名稱空間310之LBA範圍311的資料被複製到儲存裝置100b之儲存容量302,如同對應於名稱空間320之LBA範圍321的資料。名稱空間310及320可具有相同的識別符(例如,相同號碼/索引,像是「名稱空間1」)以及同一的尺寸。LBA範圍311在開始LBA 312處開始且在結束LBA 313處結束,並且在命令中典型地由LBA範圍311之開始LBA 312及LBA之長度所定義。LBA範圍321在開始LBA 322處開始且在結束LBA 323處結束,並且在命令中典型地由LBA範圍321之開始LBA 322及LBA之長度所定義。給定偏置是不同的,開始LBA 312及322可具有不同的識別符(例如,不同的數字/索引)。
圖4為依據一些實行例示用於進行資料複製的範例方法400的方塊圖。請參照圖1A、1B及4,在方法400中,從來源裝置(例如,儲存裝置100a)複製資料到目的地裝置(例如,儲存裝置100b)。在圖4的脈絡內,進行實體驅動機複製,使得對應於名稱空間的所有資訊(包括分割資訊、檔案系統等等)係從來源裝置被複製到目的地裝置。在這方面,來源及目的地裝置具有同一的名稱空間尺寸,並且複製整體名稱空間。據此,圖4描繪用於在儲存裝置100a及100b上同一的名稱空間之一對一LBA複製。
如在圖4中所繪示,儲存裝置100a之記憶體陣列120具有儲存容量401,其儲存包括對應於名稱空間410之者的資料。儲存裝置100b之記憶體陣列120具有儲存容量402,其儲存包括對應於名稱空間420之者的資料。對應於整體名稱空間410的資料被複製到儲存裝置100b之儲存容量402,如同對應於名稱空間420之的資料。名稱空間210及220可具有相同的識別符(例如,相同號碼/索引,像是「名稱空間1」)以及同一的尺寸。名稱空間410在開始LBA 412處開始且在結束LBA 413處結束,並且在命令中典型地由名稱空間410之開始LBA 412及LBA之長度所定義。名稱空間420在開始LBA 422處開始且在結束LBA 423處結束,並且在命令中典型地由名稱空間420之開始LBA 422及LBA之長度所定義。開始LBA 412及422可具有相同的識別符(例如,相同的數字/索引)。
圖5為依據一些實行例示用於進行資料複製的範例方法500的方塊圖。請參照圖1A、1B及5,在方法500中,從來源裝置(例如,儲存裝置100a)複製資料到目地的裝置(例如,儲存裝置100b)。在圖5的脈絡內,儲存裝置100a和儲存裝置100n為虛擬化裝置。進行實體驅動機複製,使得對應於名稱空間的所有資訊(包括分割資訊、檔案系統等等)係從來源裝置被複製到目的地裝置。在這方面,由於虛擬化,來源及目的地裝置具有不同的名稱空間,並且複製整體名稱空間511到不同的名稱空間522。據此,圖5描繪在儲存裝置100a及100b上從一名稱空間到另一者的一對一名稱空間複製。
如在圖5中所繪示,儲存裝置100a之記憶體陣列120具有儲存容量501,其儲存包括對應於名稱空間551和名稱空間512之者的資料。儲存裝置100b之記憶體陣列120具有儲存容量502,其儲存包括對應於名稱空間521和名稱空間522之者的資料。對應於整體名稱空間511的資料被複製到儲存裝置100b之儲存容量502,如同對應於名稱空間522之的資料。名稱空間511及522可具有不同的識別符(例如,不同號碼/索引,分別像是「名稱空間1」和「名稱空間2」)和相同的尺寸。名稱空間511在開始LBA處開始且在結束LBA處結束,並且在命令中典型地由名稱空間511之開始LBA及LBA之長度所定義。名稱空間522在開始LBA處開始且在結束LBA處結束,並且在命令中典型地由名稱空間522之開始LBA及LBA之長度所定義。
圖6為依據一些實行例示用於進行資料複製的範例方法600的方塊圖。請參照圖1A、1B及6,在方法600中,從多個來源裝置(例如,儲存裝置100a及100n)複製資料到目的地裝置(例如,儲存裝置100b)。在圖6的脈絡內,目的地裝置可為高容量驅動機。如所繪示,來自儲存裝置100a之名稱空間610的LBA範圍611和來自名稱空間620的LBA範圍621正分別被複製到儲存裝置100b之名稱空間630的LBA範圍631和名稱空間640的LBA範圍641。據此,圖6描繪到不同的目的地名稱空間中且與來源名稱空間相同的偏置的許多對一的LBA複製。
如在圖6中所繪示的,儲存裝置100a之記憶體陣列120具有儲存容量601,其儲存包括對應於名稱空間610之者的資料。儲存裝置100n之記憶體陣列120具有儲存容量602,其儲存包括對應於名稱空間620之者的資料。儲存裝置100b之記憶體陣列120具有儲存容量603,其儲存包括對應於名稱空間630、名稱空間640和名稱空間650之者的資料。對應於名稱空間610之LBA範圍611的資料被複製到儲存裝置100b之儲存容量603,如同對應於名稱空間630之LBA範圍631的資料。此外,對應於名稱空間620之LBA範圍621的資料被複製到儲存裝置100b之儲存容量603,如同對應於名稱空間640之LBA範圍641的資料。
在一些範例中,名稱空間610及630可具有相同的識別符(例如,相同號碼/索引,像是「名稱空間1」)以及同一的尺寸。在其它範例中,名稱空間610及630可具有不同的識別符(例如,不同號碼/索引,分別像是「名稱空間1」和「名稱空間3」)和同一的尺寸。LBA範圍611在開始LBA 612處開始且在結束LBA 613處結束,並且在命令中典型地由LBA範圍611之開始LBA 612及LBA之長度所定義。LBA範圍631在開始LBA 632處開始且在結束LBA 633處結束,並且在命令中典型地由LBA範圍631之開始LBA 632及LBA之長度所定義。給定偏置是相同的,開始LBA 612及632可具有相同的識別符(例如,相同的數字/索引)。
名稱空間620及640可具有不同的識別符(例如,不同號碼/索引,分別像是「名稱空間1」和「名稱空間2」)和同一的尺寸。LBA範圍621在開始LBA 622處開始且在結束LBA 623處結束,並且在命令中典型地由LBA範圍621之開始LBA 622及LBA之長度所定義。LBA範圍641在開始LBA 642處開始且在結束LBA 643處結束,並且在命令中典型地由LBA範圍641之開始LBA 642及LBA之長度所定義。給定偏置是相同的,開始LBA 622及642可具有相同的識別符(例如,相同的數字/索引)。
在一些佈設中,主機101發送命令到目的地裝置(例如,儲存裝置100b),其包括指示LBA範圍611及LBA範圍621要被複製到儲存容量603所依的次序的描述符。特別是,該描述符指示,LBA範圍611係用以被複製到具有比LBA範圍621用以被複製到的名稱空間(例如,名稱空間640)較低的號碼/索引的名稱空間(例如,名稱空間630)。在一些範例中,命令包括其它描述符,像是指示儲存裝置100b能自其傳送對應於LBA範圍611的資料的儲存裝置100a之緩衝器112的位址的描述符、指示儲存裝置100b能自其傳送對應於LBA範圍621的資料的儲存裝置100n之緩衝器112的位址的描述符、指示傳送類型(例如,以與來源名稱空間相同的偏置到不同的目的地名稱空間中的許多對一LBA複製)的描述符等等的描述符。
圖7為依據一些實行例示用於進行資料複製的範例方法700的方塊圖。請參照圖1A、1B及7,在方法700中,從多個來源裝置(例如,儲存裝置100a及100n)複製資料到目的地裝置(例如,儲存裝置100b)。如所繪示,來自儲存裝置100a之名稱空間710的LBA範圍711和來自名稱空間720的LBA範圍721正分別被複製到儲存裝置100b之名稱空間730的LBA範圍731和LBA範圍741。據此,圖7描繪以不同偏置進入相同目的地名稱空間的許多對一LBA複製,其中不同的LBA範圍係取自不同的來源名稱空間且寫入到單一目的地名稱空間。
如在圖7中所繪示的,儲存裝置100a之記憶體陣列120具有儲存容量701,其儲存包括對應於名稱空間710之者的資料。儲存裝置100n之記憶體陣列120具有儲存容量702,其儲存包括對應於名稱空間720之者的資料。儲存裝置100b之記憶體陣列120具有儲存容量703,其儲存包括對應於名稱空間730之者的資料。對應於名稱空間710之LBA範圍711的資料被複製到儲存裝置100b之儲存容量703,如同對應於名稱空間730之LBA範圍741的資料。此外,對應於名稱空間720之LBA範圍721的資料被複製到儲存裝置100b之儲存容量703,如同對應於名稱空間730之LBA範圍731的資料。換言之,複製對應於LBA範圍711及721的資料到相同名稱空間730。
在一些範例中,名稱空間710,720及730可具有相同的識別符(例如,相同號碼/索引,像是「名稱空間1」)以及同一的尺寸。LBA範圍711在開始LBA 712處開始且在結束LBA 713處結束,並且在命令中典型地由LBA範圍711之開始LBA 712及LBA之長度所定義。LBA範圍721在開始LBA 722處開始且在結束LBA 723處結束,並且在命令中典型地由LBA範圍721之開始LBA 722及LBA之長度所定義。LBA範圍731在開始LBA 732處開始且在結束LBA 733處結束,並且在命令中典型地由LBA範圍731之開始LBA 732及LBA之長度所定義。LBA範圍741在開始LBA 742處開始且在結束LBA 743處結束,並且在命令中典型地由LBA範圍741之開始LBA 742及LBA之長度所定義。
如所繪示的,在複製操作之後,LBA範圍741之開始LBA 742緊接著LBA範圍731之結束LBA 733。因此,在相同的名稱空間730中,來自LBA範圍711的資料係與來自LBA範圍721的資料序連。用於開始LBA 722的偏置和用於開始LBA 742的偏置因此是不同的。
在一些佈設中,主機101發送命令到目的地裝置(例如,儲存裝置100b),其包括指示LBA範圍671及LBA範圍721要被複製到儲存容量703所依的次序的描述符。特別是,該描述符指示,LBA範圍711係用以被複製到具有接在LBA範圍721要被複製到的LBA範圍(例如,LBA範圍731)之結束LBA 733之後的開始LBA 742的LBA 範圍(例如,LBA範圍741)。在一些範例中,命令包括其它描述符,像是指示儲存裝置100b能自其傳送對應於LBA範圍711的資料的儲存裝置100a之緩衝器112的位址的描述符、指示儲存裝置100b能自其傳送對應於LBA範圍721的資料的儲存裝置100n之緩衝器112的位址的描述符、指示傳送類型(例如,以相同名稱空間和不同偏置的許多對一LBA複製)的描述符等等的描述符。
圖8為依據一些實行例示用於進行資料複製的範例方法800的方塊圖。請參照圖1A、1B及8,在方法800中,從多個來源裝置(例如,儲存裝置100a及100n)複製資料到目的地裝置(例如,儲存裝置100b)。如所繪示,儲存裝置100a之整體名稱空間810和自儲存裝置100n之名稱空間820的LBA範圍821係正分別被複製到名稱空間840和儲存裝置100b之名稱空間830之LBA範圍831。據此,圖8描繪以不同偏置的許多對一LBA複製及名稱空間複製。
如在圖8中所繪示的,儲存裝置100a之記憶體陣列120具有儲存容量801,其儲存包括對應於名稱空間810之者的資料。儲存裝置100n之記憶體陣列120具有儲存容量802,其儲存包括對應於名稱空間820之者的資料。儲存裝置100b之記憶體陣列120具有儲存容量803,其儲存包括對應於名稱空間830和名稱空間840之者的資料。對應於整體名稱空間810的資料被複製到儲存裝置100b之儲存容量803,如同對應於名稱空間840之的資料。此外,對應於名稱空間820之LBA範圍821的資料被複製到儲存裝置100b之儲存容量803,如同對應於名稱空間830之LBA範圍831的資料。
在一些範例中,名稱空間810,820及830可具有相同的識別符(例如,相同號碼/索引,像是「名稱空間1」)。在其它範例中,名稱空間810及840可具有不同的識別符(例如,不同號碼/索引,分別像是「名稱空間1」和「名稱空間2」)和相同的尺寸。名稱空間810在開始LBA 812處開始且在結束LBA 813處結束,並且在命令中典型地由名稱空間810之開始LBA 812及LBA之長度所定義。LBA範圍821在開始LBA 822處開始且在結束LBA 823處結束,並且在命令中典型地由LBA範圍821之開始LBA 822及LBA之長度所定義。LBA範圍831在開始LBA 832處開始且在結束LBA 833處結束,並且在命令中典型地由LBA範圍831之開始LBA 832及LBA之長度所定義。名稱空間840在開始LBA 842處開始且在結束LBA 843處結束,並且在命令中典型地由名稱空間840之開始LBA 842及LBA之長度所定義。給定偏置是不同的,開始LBA 822及832可具有不同的識別符(例如,不同的數字/索引)。
在一些佈設中,主機101發送命令到目的地裝置(例如,儲存裝置100b),其包括指示名稱空間810及LBA範圍821要被複製到儲存容量803所依的次序的描述符。特別是,該描述符指示,LBA範圍821係用以被複製到具有比名稱空間810用以被複製到的名稱空間(例如,名稱空間840)較低的號碼/索引的名稱空間(例如,名稱空間830)。在一些範例中,命令包括其它描述符,像是指示儲存裝置100b能自其傳送對應於名稱空間810的資料的儲存裝置100a之緩衝器112的位址的描述符、指示儲存裝置100b能自其傳送對應於LBA範圍621的資料的儲存裝置100n之緩衝器112的位址的描述符、指示傳送類型(例如,以不同名稱空間和相同偏置的許多對一LBA複製)的描述符等等的描述符。
在於此所揭示的佈設中,複線卸載機制使用緩衝器112,其能為持久(亦即,非揮發性)CMB緩衝器,用以通訊資料。在一些實行中,持久CMB緩衝器可被分配在持久記憶體區(PMR;Persistent Memory Region)中,其可以非揮發性位元組可定址記憶體來實行,像是(但不限於)相變記憶體(PCM;Phase Change Memory)、磁性隨機存取記憶體(MRAM;Magnetic Random Access memory)或電阻隨機存取記憶體(ReRAM;Resistive Random Access Memory)。緩衝器112能被主機101共用且對同級裝置(例如,其它儲存裝置100)可存取以用於於此揭示的複製操作。除了可存取性之外,於此揭示的複製卸載機制亦使用緩衝器112以像滑動窗(sliding window)來複製資料。
在這方面,圖9A為依據一些實行例示用於使用滑動窗進行資料複製的範例方法900a的方塊圖。在方法900a中,使用來源裝置之緩衝器112和目的地裝置之寫入緩衝器114。
如在圖9A中所繪示的,對應於如儲存在來源裝置(在此內文中的儲存裝置100a)上在名稱空間910中LBA範圍911的資料正以方法900a被複製到目的地裝置(在本內文中的儲存裝置100b),如在名稱空間920中的LBA範圍921。由於在來源裝置、目的地裝置及介面140上的頻寬及處理功率限制,對應於LBA範圍911的資料係用以在多個不同的傳送中(從第一傳送至第n傳送)被傳送。隨著第n傳送為最後的傳送,第一傳送係在第二傳送之前被進行。在各個傳送中,對應於緩衝器915、916、917、925、926及927之各者的緩衝器尺寸的資料塊係從來源裝置被傳送到目的地裝置。
例如,在第一傳送中,來源裝置將對應於開始LBA 912的資料從在記憶體陣列120上的實體位置讀取到持久記憶體區(PMR)緩衝器915。PMR緩衝器915為動態地分配於來源裝置之資料區域152中的緩衝器154之範例。在P2P讀取操作中,由目的地裝置進行資料傳送(例如,直接記憶體存取(DMA)傳送、非DMA傳送或等等)用以透過介面140將資料從PMR緩衝器915傳送到目的地裝置之寫入緩衝器925。寫入緩衝器925為動態地分配於目的地裝置之寫入緩衝器114中的緩衝器之範例。接著,目的地裝置將資料從寫入緩衝器925寫入到在對應於開始LBA 922的目的地裝置之記憶體陣列120上的實體位置。
在第二至第(n-1)傳送之各者中,來源裝置將對應於中間LBA 913之分別者的資料從在記憶體陣列120上的實體位置讀取到PMR緩衝器916之分別者中。PMR緩衝器916之各者為動態地分配於來源裝置之資料區域152中的緩衝器156之範例。在P2P讀取操作中,由目的地裝置進行資料傳送(例如,DMA傳送、非DMA傳送或等等)用以透過介面140將資料從PMR緩衝器916之各者傳送到目的地裝置之寫入緩衝器926的對應者中。寫入緩衝器926之各者為動態地分配於目的地裝置之寫入緩衝器114中的緩衝器之範例。接著,目的地裝置將資料從寫入緩衝器926之各者寫入到在對應於中間LBA 923之分別者的目的地裝置之記憶體陣列120上的實體位置。
在最後傳送中,來源裝置將對應於結束LBA 914的資料從在記憶體陣列120上的實體位置讀取到PMR緩衝器917中。PMR緩衝器917為動態地分配於來源裝置之資料區域152中的緩衝器158之範例。在P2P讀取操作中,由目的地裝置進行資料傳送(例如,DMA傳送、非DMA傳送或等等)用以透過介面140將資料從PMR緩衝器917傳送到目的地裝置之寫入緩衝器927中。寫入緩衝器927為動態地分配於目的地裝置之寫入緩衝器114中的緩衝器之範例。接著,目的地裝置將資料從寫入緩衝器927寫入到在對應於結束LBA 924的目的地裝置之記憶體陣列120上的實體位置。
圖9B為依據一些實行例示用於使用滑動窗機制進行資料複製的範例方法900b之方塊圖。在方法900b中,使用目的地裝置之緩衝器112和來源裝置之讀取緩衝器116。
如在圖9B中所繪示,如在來源裝置(在本文中的儲存裝置100a)上所儲存的對應於在名稱空間910中LBA範圍911的資料正以方法900b被複製到如在名稱空間920中LBA範圍921的來源裝置(在本文中的儲存裝置100b)。由於在來源裝置、目的地裝置及介面140上的頻寬及處理功率限制,對應於LBA範圍911的資料係用以在多個不同的傳送中(從第一傳送至第n傳送)被傳送。隨著第n傳送為最後的傳送,第一傳送係在第二傳送之前被進行。在各個傳送中,對應於緩衝器935、936、937、945、956及957之各者的緩衝器尺寸的資料塊係從來源裝置被傳送到目的地裝置。
例如,在第一傳送中,來源裝置將對應於開始LBA 912的資料從在記憶體陣列120上的實體位置讀取到讀取緩衝器935。讀取緩衝器935為動態地分配於來源裝置之讀取緩衝器116中的緩衝器之範例。在P2P寫入操作中,由來源裝置100a進行資料傳送(例如,DMA傳送、非DMA傳送或等等)用以透過介面140將資料從讀取緩衝器935傳送到目的地裝置之PMR緩衝器945。PMR緩衝器945為動態地分配於目的地裝置之資料區域162中的緩衝器164之範例。接著,目的地裝置將資料從PMR緩衝器945寫入到在對應於開始LBA 922的目的地裝置之記憶體陣列120上的實體位置。
在第二至第(n-1)傳送之各者中,來源裝置將對應於中間LBA 913之分別者的資料從在記憶體陣列120上的實體位置讀取到讀取緩衝器936之分別者中。讀取緩衝器936之各者為動態地分配於來源裝置之讀取緩衝器116中的緩衝器之範例。在P2P寫入操作中,由來源裝置100a進行資料傳送(例如,DMA傳送、非DMA傳送或等等)用以透過介面140將資料從讀取緩衝器936之各者傳送到目的地裝置之PMR緩衝器946之分別者。PMR緩衝器946之各者為動態地分配於目的地裝置之資料區域162中的緩衝器166之範例。接著,目的地裝置將資料從PMR緩衝器946之各者寫入到在對應於中間LBA 923之分別者的目的地裝置之記憶體陣列120上的實體位置。
在最後傳送中,來源裝置將對應於結束LBA 914的資料從在記憶體陣列120上的實體位置讀取到讀取緩衝器937中。讀取緩衝器937為動態地分配於來源裝置之讀取緩衝器116中的緩衝器之範例。在P2P寫入操作中,由來源裝置進行資料傳送(例如,DMA傳送、非DMA傳送或等等)用以透過介面140將資料從讀取緩衝器937傳送到目的地裝置之PMR緩衝器947。PMR緩衝器947為動態地分配於目的地裝置之資料區域162中的緩衝器168之範例。接著,目的地裝置將資料從PMR緩衝器947寫入到在對應於結束LBA 924的目的地裝置之記憶體陣列120上的實體位置。緩衝器915-917能被分配在滑動窗中,其意味緩衝器915-917之一些者反應於P2P訊息被分配於第一時間窗中以將用於傳送的資料塊分段。隨著完成將該些資料塊傳送到目的地裝置,該些緩衝器被重新分配或被回收利用,並且與其關聯的記憶體容量(memory capacity)被釋放來被分配為緩衝器915-917之額外者。緩衝器935-937能同樣地被分配。
類似地,緩衝器925-927能被分配在滑動窗中,其意味緩衝器925-927之一些者被分配於第一時間窗中以從來源裝置接收第一資料塊。隨著完成將該些資料塊寫入到目的地裝置之記憶體陣列120,該些緩衝器被重新分配或被回收利用,並且與其關聯的記憶體容量被釋放來被分配為緩衝器925-927之額外者。緩衝器945-947能同樣地被分配。
在範例複製操作中,資料(例如,1GB)係用以從來源裝置(例如,儲存裝置100a)被複製到目的地裝置(例如,儲存裝置100b)。在此範例中,來源裝置和目的地裝置各者使用對於各個動態分配的緩衝器(例如,緩衝器154, 156, 158, 164, 166及168之各者和PMR緩衝器915, 916, 917, 925, 926及927之各者)具有特定緩衝器尺寸(例如,128KB)的緩衝器機制(例如,緩衝器112)。因此,要被複製的總體資料被分成8192塊,用以使用8192筆傳送(例如,在圖9中n為8192)從來源裝置傳送到目的地裝置,各個塊或傳送對應於128 KB的資料。
傳統上,為了進行這類複製操作,主機101針對資料塊(128 KB)提出讀取請求(例如,NVMe讀取請求)給來源裝置(例如,用於「Sq Rd」操作)。反應於讀取請求,來源裝置進行讀取操作以將請求的資料從記憶體陣列120讀取到讀取緩衝器116(例如,在「NVM Rd」操作中)。接著,資料致從讀取緩衝器116跨介面140來傳送(例如,NVMe介面)(例如,在「PCIe Rd」操作中)。下一步,資料跨匯流排106來傳輸。例如,資料係跨根複合體(Root Complex)(例如,在「RC Rd」操作中)以及跨記憶體匯流排(例如,在「Mem Rd」操作中)來傳輸,用以被儲存在記憶體102之記憶體緩衝器中。下一步,主機101將寫入請求(例如,NVMe寫入請求)提出給目的地裝置(例如,在「Sq Wt」操作中)。反應於寫入請求,目的地裝置引起資料從記憶體102之記憶體緩衝器被讀取並且跨匯流排106來傳輸。例如,資料係跨記憶體匯流排(例如,在「Mem Wt」操作中)及跨根複合體(例如,在「RC Wt」操作中)來傳輸。接著,資料係跨介面140(例如,NVMe介面)被傳送到目的地裝置之寫入緩衝器114(例如,在「PCIe Wt」操作中)。下一步,目的地裝置進行寫入操作,用以將資料從寫入緩衝器114寫入到記憶體陣列120中(例如,在「NVM Wt」操作中)。上述過程(包括12個操作)係針對各個塊重複,直到所有的8192塊已被傳送到目的地裝置之記憶體陣列120中。據此,為了傳送1GB的資料,傳統上需總共98,304個操作。換言之,為了處理各個塊,有用於讀取操作的3個分開的交易(包括在其中讀取命令係從主機101發送到來源裝置的命令相位/交易,在其中資料係從來源裝置之記憶體陣列120讀取的讀取相位/交易,以及在其中資料係從來源裝置被傳送到主機101之記憶體102)和用於寫入操作的3個分開的交易(包括在其中寫入命令係從主機101發送到目的地裝置的命令相位/交易,在其中資料係從主機101之記憶體102被傳送到目的地裝置的資料傳送相位/交易,以及在其中資料被寫入到目的地裝置之記憶體陣列120的寫入相位/交易)。各個操作/交易消耗在系統級上的頻寬或主機101之CPU週期/循環其一者。
圖10為依據一些實行例示用於進行資料複製的範例方法1000的方塊圖。請參照圖1A-10,方法1000係由目的地裝置(例如,儲存裝置100b)和來源裝置100a所進行。方塊1010、1020、1030、1040及1050係由目的地裝置進行。方塊1025、1035、1045及1055係由來源裝置進行。在來源裝置和目的地裝置之間的通訊,例如在方塊1020/1025和方塊1030/1045處,係經由介面140來進行,或是來源裝置和目的地裝置之間的另一合適的通訊通道沒有被路由/選路到主機101。
在1010,目的地裝置(例如,控制器110)透過介面140從主機101接收複製請求。例如,主機101提出複製請求(例如,像是P2P NVMe複製請求的命令或是另一個合適的請求/命令)給目的地裝置。在一些範例中,這樣的複製請求並非標準的NVMe寫入請求,而相反的為對目的地裝置之新類型的NVMe請求,其指令目的地裝置啟動資料之P2P傳送且直接提取要從來源裝置複製的資料塊。在其它範例中,複製請求觸發類似於由寫入命令所觸發之行為的目的地裝置之行為,該寫入命令指向來源裝置之緩衝器112之緩衝器位址,而不是主機101之記憶體102。在這類的範例中,目的地裝置甚至可不區分該緩衝器位址在另一儲存裝置上而不是在主機101上。
在一些佈設中,複製請求包括定義或識別資料要被複製所用的方式之描述符或參數。例如,複製請求能包括識別來源裝置之緩衝器112之位址的一或更多描述符、在來源裝置上資料之至少一名稱空間(稱為「來源名稱空間」)、在來源裝置上資料之至少一開始邏輯位址(LBA)(稱為「來源開始LBA」)以及資料之資料位元組的長度B。在主機101指令目的地裝置從多個來源裝置複製資料(例如,在方法600、700及800之許多對一複製操作中)的範例中,複製請求能包括用於資料係用以從其被傳送到目的地裝置的各個來源裝置(例如,儲存裝置100a和100n之各者)的這類描述符。緩衝器112之位址指的是來源裝置之緩衝器112之P2P保留區150的位址。
來源名稱空間之範例包括(但不限於)名稱空間210、名稱空間310、名稱空間410、名稱空間511及512、名稱空間610、名稱空間620、名稱空間710、名稱空間720、名稱空間810、名稱空間820等等。來源開始LBA之範例包括(但不限於)開始LBA 212、開始LBA 312、開始LBA 412、用於名稱空間511的開始LBA、用於名稱空間512的開始LBA、開始LBA 612、開始LBA 622、開始LBA 712、開始LBA 722、開始LBA 812、開始LBA 822等等。
在一些佈設中,複製請求更包括一或更多描述符,其識別在目的地裝置上資料之至少一名稱空間(稱為「目的地名稱空間」)、在目的地裝置上資料之至少一開始邏輯位址(LBA)(稱為「目的地開始LBA」)。資料之資料位元組的長度B對於來源裝置和目的地裝置是相同的。目的地名稱空間之範例包括(但不限於)名稱空間220、名稱空間320、名稱空間420、名稱空間521及522、名稱空間630、名稱空間640、名稱空間730、名稱空間740、名稱空間830、名稱空間840等等。目的地開始LBA之範例包括(但不限於)開始LBA 222、開始LBA 322、開始LBA 422、用於名稱空間521的開始LBA、用於名稱空間522的開始LBA、開始LBA 632、開始LBA 642、開始LBA 732、開始LBA 742、開始LBA 832、開始LBA 842等等。
因此,複製請求包括用於來源裝置和目的地裝置兩者的邏輯位址資訊。包括在複製請求中的描述符對於各個複製操作被稱為來源-目的地對描述符。如於此所述的,對於每一個複製操作,有一目的地裝置和一或更多來源裝置。包括用於多個來源裝置的資訊允許多個複製操作對於相同目的地裝置來進行作為單一複製請求的部分。
在1020處,目的地裝置與來源裝置通訊來發起以在複製請求中識別的資料填充來源裝置之緩衝器112。在1025處,來源裝置與目的地裝置通訊來發起以在複製請求中識別的資料填充來源裝置之緩衝器112。特別是,目的地裝置能藉由將來源名稱空間、來源開始LBA和資料之長度、針對其被包括在於1010處接收的複製請求中的描述符發送到來源裝置來識別到來源裝置的資料。在多個來源裝置於複製請求中被識別的範例中,目的地裝置與各個來源裝置通訊以所述的方式來發起以在複製請求中識別的資料填充各個來源裝置之緩衝器112。
例如,反應於在1010處接收複製請求,目的地裝置發送P2P訊息給來源裝置。因此,方塊1020包括由目的地裝置發送訊息給來源裝置,並且方塊1025包括由來源裝置從目的地裝置接收訊息。經由介面140直接發送訊息給來源裝置,而不路由通過主機101。訊息包括至少來源名稱空間、來源開始LBA和剩餘資料之長度(例如,尚未被傳送到目的地裝置之剩餘數目的資料塊)。
在一些實行中,目的地裝置藉由進行寫入操作以將訊息寫入到來源裝置之緩衝器112之P2P保留區150的位址來發送P2P訊息給來源裝置。如所述,該訊息包括至少來源名稱空間、來源開始LBA和剩餘資料之長度(例如,尚未被傳送到目的地裝置之剩餘數目的資料塊)。在一些範例中,訊息更包括目的地裝置之緩衝器112之P2P保留區160的位址,使得目的地裝置能藉由進行寫入操作以將訊息寫入到目的地裝置之緩衝器112之P2P保留區160來發送訊息、回應及應答(acknowledgement)給來源裝置。
在其它實行中,P2P訊息為由目的地裝置發送到來源裝置的正規NVMe讀取命令,在其情形中目的地裝置針對來源裝置作為NVMe目標裝置而暫時切換成操作為NVMe啟動器(Initiator),直到完成NVMe讀取命令為止。
反應於接收此訊息,來源裝置將對應於來源名稱空間、來源開始LBA及剩餘資料之長度的一或更多資料塊分段到來源裝置之緩衝器中。例如,在1035處,來源裝置將一或更多資料塊從來源裝置之記憶體陣列120讀取到一或更多緩衝器中。若沒有資料塊尚未被傳送到目的地裝置,則剩餘資料之長度會是整體資料之長度。
在一些範例中,對照方法900a所述,來源裝置例如使用滑動窗機制(例如,在目前窗中)將一或更多資料塊從來源裝置之記憶體陣列120讀取到來源裝置之PMR緩衝器915-917(例如,緩衝器154-158)之一或更多者中。在各個窗內,填充PMR緩衝器915-917之一或多者。
在其它範例中,對照方法900b所述,來源裝置例如使用滑動窗機制(例如,在目前窗中)將一或更多資料塊從來源裝置之記憶體陣列120讀取到來源裝置之一或更多讀取緩衝器935-937(例如,讀取緩衝器116)中。在各個窗內,填充讀取緩衝器935-937之一或多者。
在1030處,目的地裝置與來源裝置進行傳送以將各個資料塊從來源裝置之對應的緩衝器傳送到目的地裝置之緩衝器。在1045處,來源裝置與目的地裝置進行傳送以將各個資料塊從來源裝置之對應的緩衝器傳送到目的地裝置之緩衝器。
在一些範例中,如對照方法900a所述,目的地裝置能進行P2P讀取操作以將各個資料塊從PMR緩衝器915-917(已於目前窗中填充)之對應者讀取到目的地裝置之寫入緩衝器925-927之對應者中。例如,反應於判定PMR緩衝器915-917之一或更多者在目前窗中被填充,來源裝置發送P2P回應訊息給目的地裝置(例如,藉由將P2P訊息寫入到P2P保留區160或是發送正規NVMe命令)。P2P回應訊息包括已在目前窗中填充的PMR緩衝器915-917之一或更多者的位址。P2P回應訊息更指示準備用於在目前窗傳送的塊之數目(其亦為PMR緩衝器915-917之一或更多者的數目)。接著,目的地裝置能進行P2P讀取操作以使用PMR緩衝器915-917之一或更多者之各者的位址(已於目前窗中填充)來將在PMR緩衝器915-917之一或更多者之對應者中的各個資料塊(已於目前窗中填充)讀取到目的地裝置之寫入緩衝器925-927之對應者中。在一些範例中,目的地裝置發送另一個P2P訊息給來源裝置(例如,藉由將P2P訊息寫入到P2P保留區160或藉由發送正規NVMe命令),其中這類訊息指示目的地裝置已提取資料塊且更新要被傳送的剩餘資料塊。
在一些範例中,如對照方法900b所述,目的地裝置能進行P2P寫入操作以將各個資料塊從讀取緩衝器935-937(已於目前窗中填充)之對應者寫入到目的地裝置之PMR緩衝器945-947之對應者中。例如,反應於判定讀取緩衝器935-937之一或更多者在目前窗中被填充,來源裝置發送P2P回應訊息給目的地裝置(例如,藉由將P2P訊息寫入到P2P保留區160或是發送正規NVMe命令)。P2P回應訊息包括準備用於在目前窗傳送的塊之數目(其亦為讀取緩衝器935-937之一或更多者的數目)。作為回應,目的地裝置分配與準備用於傳送的塊之數目相同的PMR緩衝器945-947之數目。進一步,目的地裝置發送另一個P2P回應訊息給來源裝置(例如,藉由將P2P訊息寫入到P2P保留區150或藉由發送正規NVMe命令),其中這類P2P回應訊息包括PMR緩衝器945-947之分配者的位址。接著,來源裝置能進行P2P寫入操作以使用PMR緩衝器945-947之一或更多者之各者的位址來將在讀取緩衝器935-937之一或更多者之對應者中的各個資料塊(已於目前窗中填充)寫入到目的地裝置之PMR緩衝器945-947之分配者之對應者中。
在1040處,反應於判定完成將在窗中各個資料塊傳送到目的地裝置之緩衝器(例如,寫入緩衝器或PMR緩衝器)中,目的地裝置進行NVM寫入操作以將資料從目的地裝置之緩衝器寫入到目的地裝置之記憶體陣列120。
方塊1035、1045及1030為由來源裝置和目的地裝置針對一窗進行的操作。因此,在1050處,反應於目的地裝置判定所有的資料塊已被傳送到目的地裝置之記憶體陣列120(1050:是),方法1000結束於目的地裝置,並且任何寫入緩衝器或PMR緩衝器由目的地裝置釋出。在另一方面,反應於目的地裝置判定所有資料塊還未被傳送到目的地裝置之記憶體陣列120(1050:否),方法1000針對目的地裝置回到方塊1030,其中用於隨後窗的一或更多資料塊以於此所述的方式來傳送。
類似地,在1055處,反應於來源裝置判定所有的資料塊已被傳送到目的地裝置(1055:是),方法1000結束於來源裝置,並且任何讀取緩衝器或PMR緩衝器由來源裝置釋出。在另一方面,反應於來源裝置判定所有資料塊還未被傳送到目的地裝置(1055:否),方法1000針對目的地裝置回到方塊1035,其中用於隨後窗的一或更多資料塊以於此所述的方式來傳送。在一範例中,反應於從來源裝置接收指示0個資料塊留存以被傳送的P2P訊息,來源裝置能判定所有的資料塊已被傳送到目的地裝置。
在一些範例中,目的地裝置輪詢(poll)來源裝置之狀態,其中該狀態指示資料準備好傳送或完成讀取請求。在一些範例中,輪詢能由基於中斷的(interrupt-based)架構所取代,其仿真SQ/CQ對模型,其中在資料準備好時中斷目的地裝置。在一些範例中,目的地裝置針對要從來源裝置傳送的資料塊而發送訊息請求給來源裝置。在處理訊息請求時,來源裝置經由對目的地裝置的訊息回應來報導狀態。若有剩餘至少一或多塊,則會持續發送訊息請求和訊息報導,直到目的地裝置判定所有塊已從來源裝置被傳送為止。來自目的地裝置的最終訊息包括零的傳送長度,其通知來源裝置沒有進一步的塊需要被傳送。
方法1000能在目的地裝置從主機101接收的複製請求中各個來源-目的地對描述符之目的地裝置和各個來源裝置之間進行。在完成處理在所有來源-目的地對描述符中識別的所有傳送時,複製請求係由目的地裝置所完成。
在方法1000中,假定各個資料塊或緩衝器尺寸為128KB並且總資料尺寸為1GB,則每塊由來源裝置及目的地裝置進行3個操作。以8,192總塊進行24,576操作加上2操作(例如,24,578總操作)。換言之,方法1000將操作之數目降低了75%。給定各個操作消耗系統頻寬、CPU週期以及其它資源,因此方法1000改善資料複製之效率,而不用添加硬體成本。
在於複製操作期間功率損失(power loss)發生的一些情形中,在於此揭示的目的地裝置驅動方法中,目的地裝置儲存指示符,其指示複製操作已行進到多遠,以為了在功率損失及後續電力開啟(power on)之後回復。因此,目的地裝置將P2P保留區160視為功率損失保護(PLP;Power Loss Protected)區域並且反應於功率損失將其內容清除或保存到記憶體120。反應於判定電力開啟,內容被複原回到P2P保留區160中並且複製操作從其最後脫離處回復。在一些範例中,來源裝置在其能失去關於複製操作的所有先前資訊的含意上是無狀態的(stateless)(例如,多少資料已被傳送)。因此,因為功率損失甚至中斷而目的地裝置還未應答由來源裝置所分段的傳送塊,則接著目的地裝置在電力開啟之後將再請求該資料塊,並且傳送操作能從該點上回復。沒有需要來源裝置去記得目的地裝置還未應答及在其自身上分段還未應答的資料塊。
在方法1000對應由目的地裝置驅動的方法的同時,其它方法能由來源裝置所驅動。換言之,其它方法包括:來源裝置接收來自主機101的複製請求並且啟動與目的地裝置的通訊來從來源裝置傳送資料到目的地裝置。
在一些實行中,主機101透過介面140發送複製請求到來源裝置。複製請求明定來源名稱空間、來源開始LBA及資料之資料位元組的長度B、目的地裝置之位址(例如,目的地裝置之緩衝器112之P2P保留區160的位址)、目的地名稱空間以及目的地開始LBA。來源裝置將對應於來源名稱空間、來源開始LBA及資料之資料位元組的長度B的資料從記憶體陣列120讀取到緩衝器152之動態分配的緩衝器154-158中,例如在於此所述的滑動窗中。接著,來源裝置發送命令給目的地裝置或發送P2P訊息給目的地裝置(例如,藉由將P2P訊息寫入到目的地裝置之緩衝器112之P2P保留區160的位址),P2P訊息明定目的地名稱空間、目的地開始LBA及緩衝器154-158之分配者的位址。接著,目的地裝置進行P2P讀取操作以將儲存於緩衝器154-158之分配者中的資料讀取到目的地裝置之寫入緩衝器中。接著,目的地裝置將資料從目的地裝置之寫入緩衝器寫入到目的地裝置之記憶體陣列120中。對於隨後的滑動窗能進行這類的操作,直到已傳送所有的資料塊為止。
在一些實行中,主機101透過介面140發送複製請求到來源裝置。複製請求明定來源名稱空間、來源開始LBA及資料之資料位元組的長度B、目的地裝置之位址(例如,目的地裝置之緩衝器112之P2P保留區160的位址)、目的地名稱空間以及目的地開始LBA。來源裝置將對應於來源名稱空間、來源開始LBA及資料之資料位元組的長度B的資料從記憶體陣列120讀取到讀取緩衝器116之動態分配的讀取緩衝器中,例如在於此所述的滑動窗中。下一步,來源裝置進行P2P寫入操作以將資料從來源裝置之讀取緩衝器之分配者之各者傳送到目的地裝置之緩衝器164-168。例如,來源裝置能發送P2P訊息給目的地裝置(例如,藉由將P2P訊息寫入到目的地裝置之緩衝器112之P2P保留區160的位址),其指示要針對滑動窗進行分配的緩衝器164-168之數目。目的地裝置能發送P2P訊息回應給來源裝置(例如,藉由將P2P訊息寫入到來源裝置之緩衝器112之P2P保留區150的位址),其指示緩衝器164-168之分配者的位址。來源裝置進行P2P寫入操作以將資料從來源裝置之讀取緩衝器之分配者之各者傳送到目的地裝置之緩衝器164-168之分配者。接著,目的地裝置將資料從目的地裝置之寫入緩衝器寫入到目的地裝置之記憶體陣列120中。在一些範例中,來源裝置能發送寫入命令到目的地裝置,其將緩衝器164-168之分配者明定為要被寫入到記憶體陣列120的資料。對於隨後的滑動窗能進行這類的操作,直到已傳送所有的資料塊為止。提供先前的說明以使本領域具有通常知識者能實踐於此所述的各種態樣。對於該些態樣的各種修改將對本領域具有通常知識的該些者是輕易明白的,並且於此所界定的一般性原則可應用到其它態樣中。因此,申請專利範圍並不打算受限於在此所繪示的態樣,但打算賦與以用語的請求項所組成的全部範圍,其中除非具體陳述,參考至以單數的元件並不打算意味是「一且僅一」,而較佳的是意味「一或更多」。除非另以具體陳述,術語「一些」指的是一或更多。對本領域具有通常知識之該些者已知或後來得知之對遍及先前的說明所述的各種態樣之元件的所有結構或功能均等係明白地於此參引合併並且打算由申請專利範圍所包含。再者,於此所揭示沒有打算專屬於公眾,無論這樣的揭露是否明顯記載於申請專利範圍中。沒有請求項元件要被理解為手段功能用語,除非該元件明白地被記載使用詞彙「用於…的手段」。
要了解的是,在所揭露的過程中步驟的特定次序或階層為例示方法的範例。基於設計偏好,要了解的是在過程中步驟之特定次序或階層可被重新安排,同時保留在先前發明說明的範圍內。附隨的方法請求項提呈在樣本次序中各種步驟的要件,而並不是意味受限於所提的特定次序或階層。
提供先前揭露實行之發明說明以使本領域具有通常知識者能作成或使用所揭露的標的。對該些實行的各種修改將對本領域中具有通常知識之該些者而言將是輕易地顯而易見,並且於此界定的一般性原則在不悖離先前發明說明之精神或範圍下可被應用到其它實行中。因此,先前的發明說明並不打算限於在此所繪示的實行,而是打算給予與於此揭露的原理及新穎特徵一致的最寬範圍。
例示且說明的各種範例僅提供作為用以例示申請專利範圍之各種特徵的範例。然而,相對任何給定範例顯示及說明的特徵並不必然受限於關聯的範例且可被使用或與所繪示及說明的其它範例結合。進一步,申請專利範圍並不打算由任何一範例所限制。
前面的方法發明說明及過程流程圖僅被提供作為例示的範圍,而不打算需求或暗示各種範例的步驟必需以所提呈的次序來進行。如由本領域具有通常知識者所理解,在前面範例中的步驟之次序可以任何次序來進行。字彙「此後」、「接著」、「下一步」等並不打算限制該些步驟的次序;該些字彙係簡單的使用來引導讀者貫通方法之發明說明。進一步,對以單數的請求項元件(例如使用「一(a)」、「一個(an)」或「該(the)」)的任何參考並不用以推斷成將元件限制為單數。
關聯於在此揭露的範例所述的各種例示的邏輯方塊、模組、電路及演算法步驟可被實行為電子硬體、電腦軟體或兩者的結合。為了明白闡述此硬體和軟體之互換性,已在上面以他們的功能特性一般地描述各種例示的組件、方塊、模組、電路及步驟。這類功能特性是否被實行為硬體或軟體取決於特定應用和施加於整體系統的設計約束。具有通常知識的技藝者可以用於各個特定應用的不同方式實行所述的功能特性,但這類實行決定不應被解譯為造成與本揭露之範圍的悖離。
使用以實行關聯於在此揭露的範例所述的各種例示邏輯、邏輯方塊、模組及電路之硬體可以設計來進行於此所述的功能之一般目的處理器、DSP、ASIC、FPGA或其它可程式化邏輯裝置、離散閘或電晶體邏輯、離散硬體組件或其任何結合來實行或進行。一般目的處理器可為微處理器,但在另一個選項中,處理器可為傳統處理器、控制器、微處理器或狀態機。處理器亦可被實行為計算裝置的結合(例如DSP和微處理器之結合)、複數個處理器、協同DSP核心的一或更多微處理器或任何其它這類組態。或者,一些步驟或方法可由特定於給定功能的電路所進行。
在一些示範性實施例中,所述的功能可以硬體、軟體或其任一結合來實行。若以軟體實行,功能可被儲存為在非暫態電腦可讀儲存媒體或非暫態處理器可讀儲存媒體上的一或更多指令或碼。於此所揭露的方法或演算法之步驟可以處理器可執行軟體模組來體現,其可駐存在非暫態電腦可讀或處理器可讀儲存媒體上。非暫態電腦可讀或處理器可讀儲存媒體可為可由電腦或處理器存取的任何儲存媒體。藉由範例但非限制的方式,這類非暫態電腦可讀或處理器可讀儲存媒體可包括RAM、ROM、EEPROM、快閃記憶體、CD-ROM或其它光學驅動儲存器、磁驅動儲存器或其它磁儲存器、或是可被使用來儲存以指令或資料結構之形式之所欲的程式碼且可由電腦存取的任何其它媒體。於此所使用的驅動器和碟片包括光碟(CD;compact disc)、雷射碟、光學碟、數位多功能碟(DVD;digital versatile disc)、軟碟驅動器以及藍光光碟,其中驅動器通常磁性地再生資料,同時光碟以雷射光學地再生資料。上面的結合亦包括在非暫態可讀及處理器可讀媒體之範圍內。此外,方法或演算法之操作可駐存作為在非暫態處理器可讀儲存媒體及/或電腦可讀儲存媒體上的碼及/或指令之一者或任何結合或集合。
提供在先的揭露範例之發明說明以使本領域具有通常知識者能作成或使用本發明。對該些範例的各種修改將對本領域中具有通常知識之該些者而言將是輕易地顯而易見,並且於此界定的一般性原則在不悖離揭露之精神或範圍下可被應用到一些範例中。因此,本發明並不打算限於在此所顯示的範例,而是打算給予與下面的申請專利範圍和於此揭露的原理及新穎特徵一致的最寬範圍。
100:儲存裝置 100a~100n:儲存裝置 101:主機 102:記憶體 104:處理器 106:匯流排 108:網路介面 109:通訊網路 110:控制器 112:緩衝器 114:緩衝器 116:緩衝器 120:記憶體陣列 130a~130n:NAND快閃記憶體裝置 140:介面 150:P2P保留區 152:資料區 154:緩衝器 156:緩衝器 158:緩衝器 160:P2P保留區 162:資料區 164:緩衝器 166:緩衝器 168:緩衝器 201:儲存容量 202:儲存容量 210:名稱空間 211:邏輯區塊位址範圍 212:開始邏輯區塊位址 220:名稱空間 221:邏輯區塊位址範圍 222:開始邏輯區塊位址 223:結束邏輯區塊位址 301:儲存容量 302:儲存容量 310:名稱空間 311:邏輯區塊位址範圍 312:開始邏輯區塊位址 313:結束邏輯區塊位址 320:名稱空間 321:邏輯區塊位址範圍 322:開始邏輯區塊位址 323:結束邏輯區塊位址 401:儲存容量 402:儲存容量 410:名稱空間 412:開始邏輯區塊位址 413:結束邏輯區塊位址 420:名稱空間 422:開始邏輯區塊位址 423:結束邏輯區塊位址 501:儲存容量 502:儲存容量 511:名稱空間 512:名稱空間 521:名稱空間 522:名稱空間 601:儲存容量 602:儲存容量 603:儲存容量 610:名稱空間 611:邏輯區塊位址範圍 612:開始邏輯區塊位址 613:結束邏輯區塊位址 620:名稱空間 621:邏輯區塊位址範圍 622:開始邏輯區塊位址 623:結束邏輯區塊位址 630:名稱空間 631:邏輯區塊位址範圍 632:開始邏輯區塊位址 633:結束邏輯區塊位址 640:名稱空間 641:邏輯區塊位址範圍 642:開始邏輯區塊位址 643:結束邏輯區塊位址 650:名稱空間 701:儲存容量 702:儲存容量 703:儲存容量 710:名稱空間 711:邏輯區塊位址範圍 712:開始邏輯區塊位址 713:結束邏輯區塊位址 720:名稱空間 721:邏輯區塊位址範圍 722:開始邏輯區塊位址 723:結束邏輯區塊位址 730:名稱空間 731:邏輯區塊位址範圍 732:開始邏輯區塊位址 733:結束邏輯區塊位址 741:邏輯區塊位址範圍 742:開始邏輯區塊位址 743:結束邏輯區塊位址 801:儲存容量 802:儲存容量 803:儲存容量 810:名稱空間 812:開始邏輯區塊位址 813:結束邏輯區塊位址 820:名稱空間 821:邏輯區塊位址範圍 822:開始邏輯區塊位址 823:結束邏輯區塊位址 830:名稱空間 831:邏輯區塊位址範圍 832:開始邏輯區塊位址 833:結束邏輯區塊位址 840:名稱空間 842:開始邏輯區塊位址 843:結束邏輯區塊位址 910:名稱空間 911:邏輯區塊位址範圍 912:開始邏輯區塊位址 913:中間邏輯區塊位址 914:結束邏輯區塊位址 915:緩衝器 916:緩衝器 917:緩衝器 920:名稱空間 921:邏輯區塊位址範圍 922:開始邏輯區塊位址 923:中間邏輯區塊位址 924:結束邏輯區塊位址 925:緩衝器 926:緩衝器 927:緩衝器 935:緩衝器 936:緩衝器 937:緩衝器 945:緩衝器 946:緩衝器 947:緩衝器
[圖1A]繪示依據一些實行包括儲存裝置及主機的系統之範例的方塊圖。
[圖1B]繪示依據一些實行的來源裝置之緩衝器和目的地裝置之緩衝器之範例的方塊圖。
[圖2]為依據一些實行示出用於進行資料複製的範例方法的方塊圖。
[圖3]為依據一些實行示出用於進行資料複製的範例方法的方塊圖。
[圖4]為依據一些實行示出用於進行資料複製的範例方法的方塊圖。
[圖5]為依據一些實行示出用於進行資料複製的範例方法的方塊圖。
[圖6]為依據一些實行示出用於進行資料複製的範例方法的方塊圖。
[圖7]為依據一些實行示出用於進行資料複製的範例方法的方塊圖。
[圖8]為依據一些實行示出用於進行資料複製的範例方法的方塊圖。
[圖9A]為依據一些實行示出用於進行資料複製的範例方法的方塊圖。
[圖9B]為依據一些實行示出用於進行資料複製的範例方法的方塊圖。
[圖10]為依據一些實行示出用於進行資料複製的範例方法的流程圖。
100:儲存裝置
100a~100n:儲存裝置
101:主機
102:記憶體
104:處理器
106:匯流排
108:網路介面
109:通訊網路
110:控制器
112:緩衝器
114:緩衝器
116:緩衝器
120:記憶體陣列
130a~130n:NAND快閃記憶體裝置
140:介面

Claims (20)

  1. 一種用於從來源裝置傳送資料到目的地裝置的方法,包含:由該目的地裝置接收來自主機的複製請求;由該目的地裝置發送讀取請求給該來源裝置;由該目的地裝置輪詢該來源裝置之狀態,該狀態指示資料準備好傳送或完成該讀取請求,由該目的地裝置進行與來源裝置的傳送以將該資料從該來源裝置之緩衝器傳送到該目的地裝置之緩衝器;以及由該目的地裝置將該資料寫入到該目的地裝置之非揮發性儲存器。
  2. 如請求項1所述的方法,其中該複製請求定義以下一或更多者:在該來源裝置上該資料之至少一個名稱空間;在該來源裝置上該資料之至少一個開始邏輯位址;該資料之長度;在該目的地裝置上該資料之至少一個名稱空間;以及在該目的地裝置上該資料之至少一個開始邏輯位址。
  3. 如請求項2所述的方法,更包含:由該目的地裝置與該來源裝置通訊以發起填充該來源裝置之該緩衝器,其中該來源裝置以資料塊填充該緩衝器,並且該資料塊之一或更多者係同時地被傳送。
  4. 如請求項3所述的方法,其中與該來源裝置通訊以發起填充該來源裝置之該緩衝器 的步驟包含:由該目的地裝置發送訊息給該來源裝置;以及該訊息包含在該來源裝置上該資料之該至少一個名稱空間、在該來源裝置上該資料之該至少一個開始邏輯位址以及該資料之該長度。
  5. 如請求項4所述的方法,其中該複製請求更定義該目的地裝置之緩衝器之保留區的位址;以及發送該訊息給該來源裝置的步驟包含:使用該保留區之該位址將該訊息寫入到該目的地裝置之該緩衝器之該保留區。
  6. 如請求項1所述的方法,其中該來源裝置之該緩衝器包含該目的地裝置可存取的緩衝器;該目的地裝置之該緩衝器包含該來源裝置不可存取的寫入緩衝器;以及進行與該來源裝置之該傳送以將該資料從該來源裝置之該緩衝器傳送到該目的地裝置之該緩衝器的步驟包含:由該目的地裝置進行讀取操作來將該目的地裝置可存取的該緩衝器之各者中的該資料塊讀取到該來源裝置不可存取的該寫入緩衝器之對應一者中。
  7. 如請求項6所述的方法,其中該目的地裝置可存取的該緩衝器為控制器記憶體緩衝器(CMB)或持久記憶體區(PMR)緩衝器;以及 該目的地裝置包含該非揮發性儲存器和操作地耦接至該非揮發性儲存器的控制器。
  8. 如請求項1所述的方法,其中該來源裝置之該緩衝器包含該目的地裝置不可存取的讀取緩衝器;該目的地裝置之該緩衝器包含該來源裝置可存取的緩衝器;以及進行與該來源裝置之該傳送以將該資料從該來源裝置之該緩衝器傳送到該目的地裝置之該緩衝器的步驟包含:經由該來源裝置進行的寫入操作由該目的地裝置從該目的地裝置不可存取的該讀取緩衝器之對應一者接收在該來源裝置可存取的該緩衝器之各者中的該資料塊。
  9. 一種目的地裝置,包含:緩衝器;非揮發性儲存器;及控制器,組態以:從主機接收複製請求;發送讀取請求給該來源裝置;輪詢該來源裝置之狀態,該狀態指示資料準備好傳送或完成該讀取請求;進行與來源裝置的傳送以將資料從來源裝置之緩衝器傳送到該目的地裝置之該緩衝器;以及將該資料寫入到該非揮發性儲存器。
  10. 一種非暫態處理器可讀媒體,其包含處 理器可讀指令,使得當由目的地裝置之控制器的至少一個處理器執行時,造成該處理器進行:從主機接收複製請求;發送讀取請求給該來源裝置;輪詢該來源裝置之狀態,該狀態指示資料準備好傳送或完成該讀取請求,進行與來源裝置的傳送以將資料從來源裝置之緩衝器傳送到該目的地裝置之緩衝器;以及將該資料寫入到該非揮發性儲存器。
  11. 一種用於從來源裝置傳送資料到目的地裝置的方法,包含:在與該傳送資料關聯的該來源裝置之記憶體陣列中識別複數個該資料之塊;由該來源裝置與該目的地裝置通訊以來自該來源裝置之該記憶體陣列的經識別的該資料之塊來發起填充該來源裝置之緩衝器;以及由該來源裝置進行與該目的地裝置的傳送以將該資料從該來源裝置之緩衝器傳送到該目的地裝置之緩衝器。
  12. 如請求項11所述的方法,其中與該目的地裝置通訊以發起填充該來源裝置之該緩衝器的步驟包含:由該來源裝置接收來自該目的地裝置的訊息;以及該訊息包含在該來源裝置上該資料之至少一個名稱空間、在該來源裝置上該資料之至少一個開始邏輯位址以及 該資料之長度。
  13. 如請求項12所述的方法,其中使用該目的地裝置之緩衝器的保留區之位址由該目的地裝置寫入該訊息到該保留區。
  14. 如請求項11所述的方法,其中該來源裝置之該緩衝器包含對目的地裝置可存取的緩衝器;該目的地裝置之該緩衝器包含該來源裝置不可存取的寫入緩衝器;以及進行與該來源裝置之該傳送以將該資料從該來源裝置之該緩衝器傳送到該目的地裝置之該緩衝器的步驟包含:經由該目的地裝置進行的讀取操作將在該目的地裝置可存取的該緩衝器之各者中的該資料塊傳送到該來源裝置不可存取的該寫入緩衝器之對應一者中。
  15. 如請求項14所述的方法,其中該目的地裝置可存取的該緩衝器為控制器記憶體緩衝器(CMB)或持久記憶體區(PMR)緩衝器。
  16. 如請求項11所述的方法,其中該來源裝置之該緩衝器包含該目的地裝置不可存取的讀取緩衝器;該目的地裝置之該緩衝器包含該來源裝置可存取的緩衝器;以及進行與該來源裝置之該傳送以將該資料從該來源裝置之該緩衝器傳送到該目的地裝置之該緩衝器的步驟包含: 由該來源裝置進行寫入操作來將該目的地裝置不可存取的該讀取緩衝器之各者中的該資料塊寫入到該來源裝置可存取的該緩衝器之對應一者中。
  17. 如請求項11所述的方法,更包含:由該來源裝置將各個該資料塊從該來源裝置之非揮發性儲存器讀取到該來源裝置之該緩衝器之一者中。
  18. 如請求項17所述的方法,其中該來源裝置之該緩衝器包含該目的地裝置可存取的緩衝器;或者該來源裝置之該緩衝器包含該目的地裝置不可存取的讀取緩衝器。
  19. 一種來源裝置,包含:緩衝器;儲存資料的非揮發性儲存器;及控制器,組態以:在與從該來源裝置到目的地裝置之資料傳送關聯的該來源裝置之該非揮發性儲存器中識別複數個該資料之塊;與該目的地裝置通訊以在該非揮發性儲存器中經識別的該資料之塊來發起填充該來源裝置之該緩衝器;以及與該目的地裝置進行傳送以將該資料從該來源裝置之該緩衝器傳送到該目的地裝置之緩衝器。
  20. 一種非暫態處理器可讀媒體,其包含處理器可讀指令,使得當由來源裝置之控制器的至少一個處理器執行時,造成該處理器進行: 在與從該來源裝置到目的地裝置的資料傳送關聯的該來源裝置之記憶體陣列中識別複數個該資料之塊;與該目的地裝置通訊以來自該來源裝置之該記憶體陣列的經識別的該資料之塊來發起填充該來源裝置之緩衝器;以及進行與該目的地裝置的傳送以將該資料從該來源裝置之該緩衝器傳送到該目的地裝置之緩衝器。
TW110146550A 2020-12-16 2021-12-13 用於為儲存裝置資料複製卸載的系統及方法 TWI810745B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063126442P 2020-12-16 2020-12-16
US63/126,442 2020-12-16
US17/169,108 2021-02-05
US17/169,108 US20220187992A1 (en) 2020-12-16 2021-02-05 Systems and methods for data copy offload for storage devices

Publications (2)

Publication Number Publication Date
TW202230122A TW202230122A (zh) 2022-08-01
TWI810745B true TWI810745B (zh) 2023-08-01

Family

ID=81941460

Family Applications (1)

Application Number Title Priority Date Filing Date
TW110146550A TWI810745B (zh) 2020-12-16 2021-12-13 用於為儲存裝置資料複製卸載的系統及方法

Country Status (3)

Country Link
US (1) US20220187992A1 (zh)
CN (1) CN114637462A (zh)
TW (1) TWI810745B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023136083A (ja) * 2022-03-16 2023-09-29 キオクシア株式会社 メモリシステムおよび制御方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6757762B1 (en) * 1999-10-29 2004-06-29 Unisys Corporation Multi-mode processor bus bridge
TW200732955A (en) * 2006-02-27 2007-09-01 An Chen Comp Co Ltd Data duplicator
US20080147923A1 (en) * 2006-10-10 2008-06-19 Atmel Corporation Supplemental Communication Interface
US20190065382A1 (en) * 2017-08-22 2019-02-28 Seagate Technology Llc Storage device initiated copy back operation

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2352145A (en) * 1999-07-16 2001-01-17 Texas Instruments Ltd Prevention of bottlenecking in data transfers
US20080008202A1 (en) * 2002-10-31 2008-01-10 Terrell William C Router with routing processors and methods for virtualization
US20070005833A1 (en) * 2005-06-30 2007-01-04 Pak-Lung Seto Transmit buffers in connection-oriented interface
US20090089515A1 (en) * 2007-10-02 2009-04-02 Qualcomm Incorporated Memory Controller for Performing Memory Block Initialization and Copy
KR101518269B1 (ko) * 2008-02-01 2015-05-08 삼성전자주식회사 상태보고를 전송하는 방법 및 시스템
US9331955B2 (en) * 2011-06-29 2016-05-03 Microsoft Technology Licensing, Llc Transporting operations of arbitrary size over remote direct memory access
US9929829B1 (en) * 2012-02-15 2018-03-27 Cisco Technology, Inc. System and method for provisioning resources for lossless operation in a network environment
US10628353B2 (en) * 2014-03-08 2020-04-21 Diamanti, Inc. Enabling use of non-volatile media-express (NVMe) over a network
US10169257B2 (en) * 2015-03-06 2019-01-01 Rambus Inc. Module based data transfer
KR102564165B1 (ko) * 2016-04-25 2023-08-04 삼성전자주식회사 비휘발성 메모리 익스프레스 컨트롤러에 의한 입출력 큐 관리 방법
JP2019008730A (ja) * 2017-06-28 2019-01-17 東芝メモリ株式会社 メモリシステム
US10223254B1 (en) * 2017-11-16 2019-03-05 Micron Technology, Inc. Namespace change propagation in non-volatile memory devices
US10725941B2 (en) * 2018-06-30 2020-07-28 Western Digital Technologies, Inc. Multi-device storage system with hosted services on peer storage devices
US11625416B1 (en) * 2019-09-13 2023-04-11 Pure Storage, Inc. Uniform model for distinct types of data replication
US11733918B2 (en) * 2020-07-28 2023-08-22 Samsung Electronics Co., Ltd. Systems and methods for processing commands for storage devices
US11366754B2 (en) * 2020-07-28 2022-06-21 Micron Technology, Inc. Adjustable buffer memory space

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6757762B1 (en) * 1999-10-29 2004-06-29 Unisys Corporation Multi-mode processor bus bridge
TW200732955A (en) * 2006-02-27 2007-09-01 An Chen Comp Co Ltd Data duplicator
US20080147923A1 (en) * 2006-10-10 2008-06-19 Atmel Corporation Supplemental Communication Interface
US20190065382A1 (en) * 2017-08-22 2019-02-28 Seagate Technology Llc Storage device initiated copy back operation

Also Published As

Publication number Publication date
US20220187992A1 (en) 2022-06-16
TW202230122A (zh) 2022-08-01
CN114637462A (zh) 2022-06-17

Similar Documents

Publication Publication Date Title
US10698818B2 (en) Storage controller caching using symmetric storage class memory devices
US9836404B2 (en) Write mirroring to storage class memory devices
US9195603B2 (en) Storage caching
US10740018B2 (en) Data migration method and apparatus applied to computer system, and computer system
US11467739B2 (en) Storage device and operation method thereof
US11636089B2 (en) Deferred reclamation of invalidated entries that are associated with a transaction log in a log-structured array
US20220350543A1 (en) Methods and systems for storing data in a distributed system using offload components
US11644978B2 (en) Read and write load sharing in a storage array via partitioned ownership of data blocks
US11240306B2 (en) Scalable storage system
US11775183B2 (en) Storage device and operation method thereof
TW202225968A (zh) 用於儲存裝置的同位為主的故障保護的系統與方法
US10365827B1 (en) Spread space tracking
US11487460B2 (en) Deferred reclamation of invalidated entries associated with replication in a log-structured array
TWI832161B (zh) 在主機與儲存裝置之間使用計算函式的資料交換
US11947419B2 (en) Storage device with data deduplication, operation method of storage device, and operation method of storage server
TWI810745B (zh) 用於為儲存裝置資料複製卸載的系統及方法
WO2019127017A1 (zh) 存储系统中存储设备的管理方法及装置
US11789917B2 (en) Data deduplication in a storage system
US11693577B2 (en) Storage operation processing during data migration using migrated indicator from source storage
EP3889778B1 (en) Distributed storage system and computer program product
US20240103731A1 (en) Non-volatile storage device offloading of host tasks
US20240103765A1 (en) Non-volatile storage device offloading of host tasks
US20240103756A1 (en) Non-volatile storage device offloading of host tasks
KR102403477B1 (ko) 스토리지 장치와 이를 포함하는 호스트-스토리지 시스템
US20230315344A1 (en) Maintaining qualiy of service of non-volatile memory devices in heterogeneous environment