TWI832161B - 在主機與儲存裝置之間使用計算函式的資料交換 - Google Patents
在主機與儲存裝置之間使用計算函式的資料交換 Download PDFInfo
- Publication number
- TWI832161B TWI832161B TW111105980A TW111105980A TWI832161B TW I832161 B TWI832161 B TW I832161B TW 111105980 A TW111105980 A TW 111105980A TW 111105980 A TW111105980 A TW 111105980A TW I832161 B TWI832161 B TW I832161B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- buffer
- storage device
- host
- controller
- Prior art date
Links
- 230000006870 function Effects 0.000 title claims description 62
- 238000000034 method Methods 0.000 claims abstract description 233
- 230000004044 response Effects 0.000 claims abstract description 53
- 239000000872 buffer Substances 0.000 claims description 924
- 238000004364 calculation method Methods 0.000 claims description 313
- 238000012546 transfer Methods 0.000 claims description 94
- 239000000463 material Substances 0.000 claims description 7
- 239000007787 solid Substances 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 30
- 238000004891 communication Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 9
- 238000013507 mapping Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000004744 fabric Substances 0.000 description 3
- 239000000835 fiber Substances 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000012005 ligant binding assay Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本文中所述之實施例係通常有關用於儲存裝置(例如,固態硬碟(SSD))用以進行計算函式(Compute Function (CF))的系統及方法,其包含接收來自主機的命令,該命令識別CF;以及回應於接收到命令,對儲存裝置中所儲存之內部資料或轉移自主機之外部資料中的至少一者進行CF以決定計算結果。
Description
本發明通常有關用於資料儲存裝置中之資料複製的系統、方法、和非暫態性處理器可讀媒體。
從儲存裝置的發明以來,儲存裝置的主要目的一直是藉由將資料寫至儲存裝置以及從儲存裝置讀出資料來儲存及擷取資料。為了與儲存裝置相通訊,介面已經被界定了。介面典型上包含支援於主機和儲存裝置兩者上的一組命令(例如,寫資料命令、讀資料命令、等等)。寫資料命令(也被稱為「寫命令」)被用來將資料透過介面而從主機緩衝記憶體轉移至儲存裝置的緩衝記憶體內。資料然後藉由該儲存裝置而被寫入其儲存媒體內。讀資料命令(也被稱為「讀命令」)被用來將資料儲存裝置的儲存媒體讀進儲存裝置的緩衝記憶體內,以及將資料透過介面而從緩衝記憶體轉移至主機的緩衝記憶體內。
在一些配置中,本發明有關用於資料儲存裝置中之資料複製的系統、方法、和非暫態性電腦可讀媒體,包含從主機接收命令,其中,該命令識別計算函式(Compute Function(CF)),並且回應於接收該命令,對儲存裝置中所儲存的內部資料或者從主機轉移出的外部資料中的至少一者進行CF來確定計算結果。
本發明有關對透過主機與儲存裝置間之儲存介面的讀/寫資料轉移,使用CF(例如,加註的CF)而在主機與至少一個儲存裝置(例如,固態硬碟(Solid State Drive(SSD))之間有效率地交換資料的系統、方法、和非暫態性電腦可讀媒體。如同在本文中所使用者,計算轉移(或“XFER”)方法(或註記方法)係指一種方法,藉由該方法,在從儲存裝置中讀取資料或將資料寫到儲存裝置之前、之後、或者與其並行地,資料轉移被加註來呼叫要由該儲存裝置對資料進行的計算。計算轉移(computational transfer)能夠被使用在相關於資料要被寫至儲存裝置的非揮發性記憶體或揮發性記憶體(在寫操作中)以及資料要從儲存裝置的非揮發性記憶體或揮發性記憶體中被讀出(在讀操作中)。註解被用來增加現代儲存裝置的中央處理單元(CPU)及記憶體資源的利用率,以便改善主機與儲存裝置間之輸入/輸出(I/O)通訊的效率。特別是,主機與儲存裝置間之資料轉移的數量能夠被縮減,其最終改善儲存裝置之效能、可靠度、及可用性方面的效率,且同時減少儲存裝置的成本、功率耗損、及網路利用率。
在一些配置中,計算轉移方法致使儲存裝置能夠使其內部資源起槓桿作用,諸如但不限於可用處理頻寬、記憶體容量、及硬體自動化,以進行由該註解所說明的CF。CF的範例包含但不限於算術運算,諸如加法、減法、乘法、除法、伽羅瓦域(Galois field)數學運算;邏輯運算,諸如AND、OR、NAND、NOR、NOT(倒反)、XOR;布林(Boolean)(真/假結果)運算,諸如AND、OR、XOR;逐位元(bitwise)運算,諸如邏輯移位、算術移位、循環(rotate);比較運算,諸如大於、小於、不等於;成串(string)操作,像是複製、尋找、比較;資料庫查詢語言函式,諸如AVG()、FIRST()、LAST()、MAX()、MIN()、SUM(),其可以依序或組合使用來進行更多複雜的計算,諸如資料壓縮、Reed-Solomon或Erasure編碼、搜尋、取代(如果不同)、資料加密、資料庫表操縱、等等。
由註解所說明的CF結合或者回應於計算轉移命令而進行,計算轉移命令提供框架用於單向及雙向轉移至/自主機。換言之,回應於接收包含註解和資料的計算轉移命令,儲存裝置進行由該註解所引用的CF和資料。如同在本文中所進一步詳細說明者,各種類型的計算轉移方法能夠被使用來適配儲存系統的不同需求以及運行於儲存系統上的應用程式。
為了協助例舉本實作,圖1為依據一些範例,顯示包含耦接至主機101之儲存裝置100a, 100b, …, 100n(統稱儲存裝置100)之系統的方塊圖。主機101能夠是由用戶或儲存裝置之自動化中央控制器所操作的用戶裝置,其中,主機101和儲存裝置100相當於儲存子系統或儲存設備。主機101能夠被連接至通訊網路(經由網路介面卡(NIC)108),使得其他主機電腦(未顯示出)可以經由通訊網路來存取儲存子系統或儲存設備。此種儲存子系統或設備的範例包含全快閃陣列(All Flash Array(AFA))或網路附接儲存(Network Attached Storage(NAS))裝置。如所示者,主機101包含記憶體102、處理器104、匯流排105、圖形處理單元(GPU)106、NIC 108等等。處理器104、記憶體102、GPU 106、和NIC 108在操作上經由匯流排105而互相耦接。處理器104有時候被稱為主機101的中央處理單元(CPU),而且被組構成進行主機101的處理。
記憶體102為主機101的本地記憶體(local memory)。在一些範例中,記憶體102是或者包含一個或更多個緩衝區(例如,緩衝區103)。在一些範例中,記憶體102為揮發性儲存器。在其他範例中,記憶體102為非揮發性持久儲存器。記憶體102的範例包含但不限於隨機存取記憶體(RAM)、動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、磁性隨機存取記憶體(MRAM)、相變記憶體(PCM)、等等。
匯流排105包含軟體、韌體、和硬體中的一個或更多個,其提供主機101的組件能夠經由其而相通訊的介面。組件的範例包含但不限於處理器104、NIC 108、內部儲存裝置、記憶體102、GPU 106、等等。除此之外,主機101(例如,處理器104)能夠使用匯流排105與儲存裝置100相通訊。在一些範例中,儲存裝置100係透過適合的介面140而被直接附接或通訊式地耦接至匯流排105。匯流排105為序列、PCIe匯流排或網路、PCIe根複合體(root complex)、內部PCIe開關、等等中的一個或更多個。
處理器104能夠執行作業系統(OS),其提供檔案系統以及使用該檔案系統的應用程式。處理器104能夠經由通訊鏈結或網路而與儲存裝置100(例如,該等儲存裝置100之每一者的控制器110)相通訊。在那方面,處理器104能夠使用到該通訊鏈結或網路的介面140而將資料發送至該等儲存裝置100的一或更多者或者從該等儲存裝置100的一或更多者接收資料。介面140讓軟體(例如,檔案系統)能夠運行於處理器104上以便經由匯流排105而與該等儲存裝置100(例如,其控制器110)相通訊。該等儲存裝置100在操作上直接經由介面140而被耦接至匯流排105。雖然介面140在概念上被顯示為主機101與儲存裝置100之間的虛線,但是介面140能夠包含一個或更多個控制器、一個或更多個實體連接器、包含命名空間、埠、傳輸機制、及其連接性的一個或更多個資料轉移協定。雖然主機101與儲存裝置100之間的連接被顯示為直接鏈結,但在一些實作中,該鏈結可包含網路結構(network fabric),其可包含諸如橋接器及開關的網路連接(networking)組件。
為了發送和接收資料,處理器104(軟體或檔案系統運行於其上)使用運行於介面140上的儲存資料轉移協定而與儲存裝置100相通訊。協定的範例包含但不限於串列附接式SCSI(SAS)、串列式ATA(SATA)、及非揮發性記憶體儲存裝置(Non-Volatile Memory Express(NVMe))協定。在一些範例中,介面140包含施行於匯流排105上或操作上耦接至匯流排105的硬體(例如,控制器)、儲存裝置100(例如,控制器110)、或者在操作上經由一個或更多個適合的網路而被耦接至匯流排105及/或儲存裝置100的另一裝置。介面140及運行於其上的儲存協定也包含執行於此種硬體上的軟體及/或韌體。在一些實作中,儲存裝置100可以是使用非揮發性記憶體的SSD並且可以使用運行於介面140上的記憶體資料轉移協定而操作。記憶體資料轉移協定的範例包含PCIe(PCI Express)記憶體讀/寫、CXL.mem、CXL.cache和CXL.io協定。
在一些範例中,處理器104能夠經由匯流排105和NIC 108而與通訊網路相通訊。附接至或者通訊式地耦接至該通訊網路的其他主機系統(未顯示出)能夠使用適合的網路儲存協定而與主機101相通訊,其範例包含但不限於NVMe over Fabrics(NVMeoF)、iSCSI光纖通道(Fiber Channel(FC))、網路檔案系統(Network File System (NFS))、伺服器訊息塊(Server Message Block(SMB))、等等。NIC 108讓軟體(例如,儲存協定或檔案系統)能夠運行於處理器104上以經由匯流排105而與附接至該通訊網路的外部主機相通訊。以此方式,網路儲存命令可以由外部主機發出並且由處理器104處理,其能夠視需要而將儲存命令發到儲存裝置100。資料因此能夠經由通訊網路而交換於外部主機與儲存裝置100之間。在此範例中,任何交換的資料被緩衝於主機101的記憶體102中。
GPU 106包含緩衝區107。例如,緩衝區107能夠是位於和GPU 106之其他組件(例如,處理器)相同的硬體(例如,相同的晶片)上之揮發性或非揮發性記憶體。在其他範例中,緩衝區107能夠是為GPU 106緩衝資料之任意適合的記憶體。
NIC 108包含緩衝區109。例如,緩衝區109能夠是位於和NIC 108之其他組件(例如,處理器)相同的硬體(例如,相同的晶片)上之揮發性或非揮發性記憶體。在其他範例中,緩衝區109能夠是為NIC 108緩衝資料之任意適合的記憶體。
在一些範例中,緩衝區103、107、及109被稱為主機101之組件的緩衝區或者主機緩衝區。緩衝區103、107、及109各自可以包含連接至匯流排105的一個或更多個緩衝區,而且那些一個或更多個緩衝區的任一者在匯流排105皆具有一對應的位址(例如,PCIe位址)。雖然緩衝區103、107、及109被顯示為主機101的範例緩衝區,主機101的其他緩衝區能夠同樣從所揭示之配置中獲利。
在一些範例中,儲存裝置100係位於資料中心內(為簡潔起見而未顯示出)。資料中心可以包含一個或更多個平台或機架單元,其各自支撐一個或更多個儲存裝置(諸如但不限於,儲存裝置100)。在一些實作中,主機101和儲存裝置100一起構成儲存節點,連同主機101用作為節點控制器。儲存節點的範例為Kioxia Kumoscale儲存節點。平台內的一個或更多個儲存節點係連接至機架頂部(Top of Rack(TOR))開關,每一個儲存節點經由一個或更多個網路連接而被連接至TOR,諸如乙太網路(Ethernet)、光纖通道(Fiber Channel)、或無限頻寬(InfiniBand),並且能夠經由TOR開關或者另一適合的平台內(intra-platform)通訊機制而互相通訊。在一些實作中,儲存裝置100可以是連接至TOR開關之網路附接的儲存裝置(例如,Ethernet SSD),連同主機101也被連接至TOR開關並且能夠經由TOR開關而與儲存裝置100相通訊。在一些實作中,至少一個路由器可以促進經由適合的網路連接結構(networking fabric)而在不同的平台、機架、或機櫃中之儲存節點內之儲存裝置100間的通訊。儲存裝置100的範例包含非揮發性裝置,諸如但不限於固態硬碟(Solid-State Drive(SSD))、Ethernet 附接的SSD、非揮發性雙列直插式記憶體模組(Non-Volatile Dual In-line Memory Module(NVDIMM))、通用快閃儲存器(Universal Flash Storage(UFS))、安全數位(Secure Digital(SD))裝置、等等。
儲存裝置100的每一個皆包含至少一控制器110和一記憶體陣列120。記憶體陣列120包含非揮發性記憶體裝置,其在裝置的電力被去除之後保持寫入至非揮發性記憶體裝置的資料。儲存裝置100的其他組件為簡潔起見而未被顯示出。記憶體陣列120包含NAND快閃記憶體裝置130a至130n。NAND快閃記憶體裝置130a至130n的每一個皆包含一個或更多個各自的NAND快閃晶粒,其為能夠在沒有電力下保持資料的NVM。因此,NAND快閃記憶體裝置130a至130n係指快閃記憶體裝置100之內的多個NAND快閃記憶體裝置或晶粒。NAND快閃記憶體裝置130a至130n的每一個皆包含一個或更多個晶粒,其各自具有一個或更多個平面。每一個平面具有多個區塊,而且每一個區塊具有多個分頁。
雖然NAND快閃記憶體裝置130a至130n被顯示為記憶體陣列120的範例,用以施以記憶體陣列120之非揮發性記憶體技術的其他範例包含但不限於非揮發性(電池供電(battery-backed))的DRAM、磁性隨機存取記憶體(MRAM)、相變記憶體(PCM)、鐵電性RAM(FeRAM)等等。本文中所述的配置能夠使用此等記憶體技術以及其他適合的記憶體技術而同樣被施行於記憶體系統上。
控制器110的範例包含但不限於SSD控制器(例如,客戶端SSD控制器、資料中心SSD控制器、企業SSD控制器、等等)、UFS控制器、或SD控制器等等。
控制器110能夠結合複數個NAND快閃記憶體裝置130a至130n中的原始資料儲存器,使得那些NAND快閃記憶體裝置130a至130n在邏輯上用作為單一個儲存單元。控制器110能夠包含處理器、微控制器、緩衝區(例如,緩衝區112、114、116)、錯誤更正系統、資料加密系統、快閃記憶體轉換層(Flash Translation Layer(FTL))以及快閃記憶體介面模組。此等功能能夠以硬體、軟體、和韌體或其任意組合來予以施行。在一些配置中,控制器110的軟體/韌體能夠被儲存在記憶體陣列120中或者在任何其他適合的電腦可讀儲存媒體中。
除了其他功能之外,控制器110包含適合用來執行本文中所述之功能的處理及記憶能力。如所述者,控制器110管理針對NAND快閃記憶體裝置130a至130n的各式各樣特性,其包含但不限於I/O處理、讀取、寫入/編程、拭除、監控、登錄、錯誤處理、垃圾回收、耗損平均(wear leveling)、邏輯到實際位址對映(mapping)、資料保護(加密/解密、循環冗餘檢查(CRC))、錯誤更正編碼(ECC)、資料加擾(data scrambling)、等等。因此,控制器110提供對NAND快閃記憶體裝置130a至130n的存取以便進行資料的讀取及寫入。
緩衝記憶體111為在本地操作上耦接至控制器110的記憶體裝置。例如,緩衝記憶體111能夠是位於控制器110之晶片上的晶載(on-chip)SRAM記憶體。在一些實作中,緩衝記憶體111能夠使用在控制器110外部之儲存裝置110的記憶體裝置來予以施行。例如,緩衝記憶體111能夠是位於控制器110之晶片以外的晶片上之DRAM。在一些實作中,緩衝記憶體111能夠使用在控制器110的內部及外部兩者(例如,在控制器110的晶片上或晶片外兩者)之記憶體裝置來予以施行。例如,緩衝記憶體111能夠使用內部SRAM及外部DRAM兩者來予以施行,其係透明/暴露出的並且可由其他裝置經由諸如主機101的介面140和其他儲存裝置100來存取。在此範例中,控制器110包含使用單一位址空間內之記憶體位址的內部處理器以及記憶體控制器,其控制內部SRAM和外部DRAM兩者,選擇是否要根據效率而將資料放置在內部SRAM和外部DRAM上。換言之,內部SRAM和外部DRAM被定址像是單一個記憶體一般。如所示者,緩衝記憶體111包含緩衝區112、寫緩衝區114、和讀緩衝區116。換言之,緩衝區112、寫緩衝區114、和讀緩衝區116能夠使用緩衝記憶體111來予以施行。在一些實作中,緩衝記憶體111可以使用諸如MRAM或PCM之快速存取非揮發性記憶體來予以全部或部分地施行。在此等實作中,需要被持續於一個電力周期內之暫時儲存在緩衝記憶體中的資料可以被儲存在緩衝記憶體111之內的非揮發性記憶體中,因而避免在電力損失的情況下需要藉由將資料複製於記憶體陣列120內來持續該資料的需求。
控制器110包含緩衝區112,其有時被稱為驅動緩衝區(drive buffer)或控制器記憶體緩衝區(Controller Memory Buffer(CMB))。除了可由控制器110存取之外,緩衝區112可由其他裝置經由諸如主機101的介面140以及儲存裝置100的其他儲存裝置來存取。以此方式,緩衝區112(例如,緩衝區112內之記憶體位置的位址)透過匯流排105而被暴露出,而且匯流排105上的裝置可以使用對應於緩衝區112內之實際記憶體位置的位址或者邏輯位址(例如,邏輯區塊位址(Logical Block Address(LBA)))而發出讀和寫命令,以便讀取和寫入緩衝區112內的資料。在一些範例中,緩衝區112為揮發性儲存器。在一些範例中,緩衝區112為非揮發性持久儲存器。緩衝區112的範例包含但不限於RAM、DRAM、SRAM、MRAM、PCM、等等。緩衝區112可以指多個緩衝區,每一個緩衝區被組夠成儲存不同類型的資料,如同本文中所述者。
在一些實作中,如圖1所示,緩衝區112為控制器110的本地記憶體。例如,緩衝區112能夠是位於控制器110之晶片上的晶載SRAM記憶體。在一些實作中,緩衝區112能夠使用在控制器110外部之儲存裝置110的記憶體裝置來予以施行。例如,緩衝區112能夠是位於控制器110之晶片以外的晶片上之DRAM。在一些實作中,緩衝區112能夠使用在控制器110的內部及外部兩者(例如,在控制器110的晶片上或晶片外兩者)之記憶體裝置來予以施行。例如,緩衝區112能夠使用內部SRAM及外部DRAM兩者來予以施行,其係透明/暴露出的並且可由其他裝置經由諸如主機101的介面140和其他儲存裝置100來存取。在此範例中,控制器110包含使用單一位址空間內之記憶體位址的內部處理器以及記憶體控制器,其控制內部SRAM和外部DRAM兩者,選擇是否要根據效率而將資料放置在內部SRAM和外部DRAM上。換言之,內部SRAM和外部DRAM被定址像是單一個記憶體一般。
在有關寫操作(沒有CF)的一個範例中,回應於從主機101接收到資料(經由主機介面140),控制器110在將資料寫至寫緩衝區114之後確認寫命令至主機101。在一些實作中,寫緩衝區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的資料以供稍後的擷取用。
雖然儲存裝置100被顯示及敘述為分開的實體裝置,但是本文中所揭示之配置同樣可應用於被虛擬化的儲存裝置100。例如,每一個儲存裝置100的控制器110和記憶體陣列120能夠被虛擬化自諸如處理器和記憶體的硬體組件。
在一些配置中,主機101能夠透過介面140將讀命令或寫命令送到儲存裝置100中的一個(例如,儲存裝置100a),其中,此種讀命令或寫命令載明或者識別要由儲存裝置100a進行的CF。在一個範例中,此種讀命令或寫命令能夠是適合被修改成載明或者識別所要進行之CF的NVMe讀命令或寫命令。在一個範例中,此種修改之NVMe讀命令或寫命令能夠使用輸入/輸出參數,其係基於針對128-位元資料指標暫存器(Data Pointer Register (DPTR)及64-位元起始LBA(SLBA)的定義來指出用於該CF命令的記憶體運算元。DPTR為到主機101之記憶體緩衝區或者到主機101之記憶體描述符(memory descriptor)之分散聚合列表(Scatter Gather List(SGL))的指標。
針對CF運算之範例表示能夠被表示為:
其中,
StatusResult為CF運算之完成結果的狀態(例如,成功/失敗),其係不同於本文中所述之計算結果。
Operand1和
Operand2用作為到該計算的輸入參數,以及該計算的計算結果被寫至
Operand1或
Operand2,視CF的類型而定。因此,針對具有‘寫’類型的CF而言,計算結果被寫至
Operand2,使得
Operand2用作為輸入及輸出兩者的參數(亦即,輸入/輸出參數或I/O參數)。針對具有‘讀’類型的CF而言,計算結果被返回或寫至
Operand1,使得
Operand1用作為輸入及輸出兩者的參數(亦即,輸入/輸出參數或I/O參數)。在一些範例(例如,圖4A)中,OTYPE中的旗標可以指示
Operand2可被忽略作為輸入參數,使得該CF僅對
Operand1運算。在一些範例(例如,圖18A)中,OTYPE中的旗標可以指示
Operand1可被忽略作為輸入參數,使得該CF僅對
Operand2運算。
Operand1可以具有兩種位址類型,其指的是:(1)經由介面140及/或匯流排105而被連接至儲存裝置100a之裝置的一個或更多個實際記憶體緩衝區位址位置;或(2)儲存裝置100a之非揮發性記憶體(例如,記憶體陣列120)中位置的邏輯位址、等等。
Operand1的位址類型係根據OTYPE的值。OTYPE為具有一個或更多個旗標的參數,該一個或更多個旗標具有指示
Operand1之位址類型的值(不論是實際記憶體緩衝區位址、邏輯位址、等等)。在一些範例中,OTYPE也可以指示輸出參數是暫態性緩衝區。
Operand1的位址類型包含但不限於儲存裝置100之非揮發性記憶體中位置的邏輯位址、經由介面140及/或匯流排105而被連接至儲存裝置100a之裝置的緩衝區的位址、等等。經由介面140及/或匯流排105而被連接至儲存裝置100a之裝置的緩衝區的範例包含但不限於主機101中的緩衝區位置、儲存裝置100b至100n中的緩衝區位置、等等。主機101中之緩衝區位置的範例包含但不限於記憶體102之緩衝區103中的位置、GPU 106之緩衝區107中的位置、NIC 108之緩衝區109中的位置、等等。儲存裝置100b至100n中之緩衝區位置的範例包含但不限於儲存裝置100b至100n之緩衝區112中的位置。經由介面140及/或匯流排105而被連接至儲存裝置100a之裝置的緩衝區的位址能夠是匯流排105上的位址(例如,PCIe位址),如同所述者。
OpNLB1定義來自由該CF中涉及之
Operand1所指示之位置的許多邏輯區塊。
Operand2為儲存裝置100a之非揮發性記憶體(例如,記憶體陣列120)中記憶體區之第一邏輯區塊的邏輯位址。在一些情況中,
Operand1和
Operand2可以指儲存裝置100a之非揮發性記憶體(例如,記憶體陣列120)內不同的邏輯區塊位址,並且在
Operand1和
Operand2兩者為輸入參數的同時,
Operand1和
Operand2中的一個可以是輸入及輸出兩者的參數。這致使計算能夠對位於該記憶體陣列120中的兩個資料運算元進行,而該計算的計算結果被儲存回到該記憶體陣列120內並且覆寫該等輸入運算元中的一個。以此方式,計算可以對該記憶體陣列120中的資料以及儲存在該記憶體陣列120中的計算結果進行,而沒有任何資料正被要求從主機101轉移至儲存裝置100或者從儲存裝置100返回到主機101,藉以節省匯流排105上的時間及頻寬使用率。
OpNLB2定義來自由該CF中涉及之
Operand2所指示之位置的許多邏輯區塊。
ComFun為定義什麼計算函式要被使用於該CF運算的參數。例如,其可以是一與特別的計算函式相關聯的唯一識別符。該相關聯性可由公開之標準規格來予以預先定義,使得主機101和儲存裝置100a兩者皆具有什麼計算函式係與一特別之識別符相關聯的共同了解。在一些實作中,儲存裝置100a可以定義其本身的專有相關聯性,而且主機可以藉由將查詢命令發給控制器110來發現什麼計算函式係由該裝置所支援,其回應以一表列之支援的計算函式。查詢命令的範例為NVMe協定中的Identify Controller命令。
換言之,在式(1)中所示的CF運算中,於一些情況下,
Operand1和
OpNLB1被用來定義位在可定址於匯流排105上之實際記憶體緩衝區中的資料。在其他情況下,
Operand1和
OpNLB1也能夠被用來定義位在儲存裝置100a之非揮發性記憶體(例如,記憶體陣列120)中之資料的邏輯位址。在式(1)中所示的CF運算中,
Operand2和
OpNLB2被用來定義位在儲存裝置100a之非揮發性記憶體(例如,記憶體陣列120)中的資料。在一些實作中,
Operand1,
OpNLB1和
Operand2,
OpNLB2的角色可以互相交換,使得
Operand2和
OpNLB2被用來定義位在可定址於匯流排105上之實際記憶體緩衝區中的資料,以及
Operand1和
OpNLB1被用來定義位在儲存裝置100a之非揮發性記憶體(例如,記憶體陣列120)中的資料。
在一些範例中,具有CF的寫包含將該CF的計算結果寫到由
Operand2所識別之儲存裝置100a的邏輯位址,其類似於執行其中將資料寫到由SLBA參數所定義之位置的寫命令。此致使該計算的結果能夠被儲存在記憶體陣列120中,以及使用目前儲存在該位置中的資料作為到該計算的輸入運算元,由於具有CF的寫中之
Operand2用作為I/O參數。因此,
Operand1能夠表現為針對寫操作之結合的I/O參數。
在一些範例中,其中,OTYPE載明
Operand1為經由介面140及/或匯流排105而被連接至儲存裝置100a之裝置的緩衝區的位址,具有CF的讀包含將該CF的計算結果返回至經由介面140及/或匯流排105而被連接至儲存裝置100a之裝置的緩衝區。在這些範例中,具有CF的讀包含將該CF的計算結果寫至由
Operand1所指示的邏輯位址。如所述者,對應於
Operand1的位置能夠是主機101之緩衝區103、107、及109中或者儲存裝置100a至100n之緩衝區112s中的位置。因此,在具有CF的讀中,計算的計算結果能夠被寫至主機101中的緩衝區中或者進行CF運算之同一個儲存裝置的控制器緩衝記憶體中,例如用以致使後者能夠被用來暫時儲存隨後將被使用於進一步計算中之計算的計算結果,因而節省當將暫時的計算結果資料轉移回到主機101時的時間及匯流排頻寬使用率。在其他範例中,在具有CF的讀中,計算的計算結果能夠被轉移和寫至進行CF運算之不同儲存裝置100a至100n的控制器緩衝記憶體,例如用以致使計算結果能夠直接轉移至相同匯流排上的另一個儲存裝置,而不需要經由主機101而被轉移以及再次被轉移回,因而節省當將暫時的計算結果資料經由主機101而被轉移至不同的儲存裝置以及再次被轉移回時的時間及匯流排頻寬使用率。在其他範例中,其中,OTYPE載明
Operand1為邏輯位址,具有CF的讀包含將該CF的計算結果寫到儲存裝置100a之記憶體陣列120上的邏輯位址。因此,
Operand1能夠表現為針對讀操作之結合的I/O參數。
在一些範例中,單個CF運算能夠藉由包含OTYPE中載明該CF的計算結果是否要被寫至由
Operand1或
Operand2所指定之位址的旗標來進行‘具有CF的讀’操作或‘具有CF的寫’操作之函式。因此,單個CF運算能夠藉由指定指示
Operand1為輸出參數的旗標來進行‘具有CF的讀’操作的等同操作。同樣地,單個CF運算能夠藉由指定指示
Operand2為輸出參數的旗標來進行‘具有CF的寫’操作的等同操作。在一些範例中,在載明該CF要由儲存裝置100a來進行的讀或寫命令中,兩個參數(例如,
OpNLB1和
OpNLB2)能夠被用來定義邏輯區塊的數量,如同式(1)中所示。在一些配置中,針對涉及引用於
OpNLB1中和引用於
OpNLB2中相同數量之邏輯區塊的某些CF,
OpNLB1和
OpNLB2可以是相同的。
在那方面,圖2係依據一些實作,顯示涉及具有相同數量之邏輯區塊n的資料201及211之CF 230的示意圖。參照圖1及圖2,要由儲存裝置100a進行之CF 230的類型(例如,XOR、ADD、等等)、
Operand1、
Operand2、
OpNLB1、及
OpNLB2被載明於由儲存裝置100a從主機101所接收到的讀命令或寫命令中。如所示者,
Operand1載明針對第一資料201的一個或更多個記憶體緩衝區位置,而
OpNLB1定義針對第一資料201之邏輯區塊的數量(例如,n)。換言之,第一資料201包含n個邏輯區塊202a, 202b, 202c, …, 202n-1。
Operand2載明針對第二資料211之儲存裝置100a之非揮發性記憶體(例如,記憶體陣列120)中記憶體區之第一邏輯區塊的邏輯位址,而
OpNLB2定義針對第二資料211之邏輯區塊的數量(例如,n)。換言之,第二資料211包含n個邏輯區塊212a, 212b, 212c, …, 212n-1。
儲存裝置100a(例如,其控制器110)能夠對第一資料201及第二資料211進行CF 230以決定計算結果221。如所示者,第一資料201的第一邏輯區塊202a和第二資料211之對應的第一邏輯區塊212a被輸入至CF 230內以決定計算結果221的第一邏輯區塊222a。第一資料201的第二邏輯區塊202b和第二資料211之對應的第二邏輯區塊212b被輸入至CF 230內以決定計算結果221的第二邏輯區塊222b,第一資料201的第三邏輯區塊202c和第二資料211之對應的第三邏輯區塊212c被輸入至CF 230內以決定計算結果221的第三邏輯區塊222c,…以及第一資料201的最後一個邏輯區塊202n-1和第二資料211之對應的最後一個邏輯區塊212n-1被輸入至CF 230內以決定計算結果221的最後一個邏輯區塊222n-1。CF 230的類型包含但不限於XOR、ADD、等等,其中,第一資料201的每一個邏輯區塊和第二資料211之對應的邏輯區塊相加或者XORed。
因此,圖2顯示由
Operand1所識別之邏輯區塊和由
Operand2所識別之對應的邏輯區塊藉由儲存裝置100a而被加總或者XORed在一起,以及計算結果221被儲存在由
Operand1或
Operand2所識別之緩衝區中。在此情況下,
OpNLB1和
OpNLB2係相同的。在其他範例中,並非使用兩個參數
OpNLB1和
OpNLB2,而是僅其中一個參數需要由讀命令或寫命令來予以載明。在一些範例中,OTYPE中的旗標可以指示數量
OpNLB1和
OpNLB2是否相同。
在一些配置中,第二數量的邏輯區塊(例如,
OpNLB2)能夠被用於涉及引用於
OpNLB1中之邏輯區塊數量和引用於
OpNLB2中之邏輯區塊數量的差異之某個CF。在那方面,圖3係依據一些實作,顯示涉及具有不同數量之邏輯區塊的資料301和311之CF 330的示意圖。參照圖1及圖3,要由儲存裝置100a進行之CF 330的類型(例如,搜尋、XOR、等等)、
Operand1、
Operand2、
OpNLB1、及
OpNLB2被載明於由儲存裝置100a從主機101所接收到的讀命令或寫命令中。如所示者,
Operand1載明針對第一資料301的一個或更多個記憶體緩衝區位置,而
OpNLB1定義針對第一資料301之邏輯區塊的數量(例如,2)。換言之,第一資料301包含2個邏輯區塊302a和302b。
Operand2載明針對第二資料311之儲存裝置100a之非揮發性記憶體(例如,記憶體陣列120)中記憶體區之第一邏輯區塊的邏輯位址,而
OpNLB2定義針對第二資料311之邏輯區塊的數量(例如,n)。換言之,第二資料311包含n個邏輯區塊312a, 312b, 312c, …, 312n-1。
儲存裝置100a(例如,其控制器110)能夠對第一資料301及第二資料311進行CF 330以決定StatusResult 322。在一個範例中,CF 330為嘗試識別匹配第一資料301之第二資料311中之邏輯區塊的搜尋或找尋操作。特別是,邏輯區塊302a和302b與邏輯區塊312a至312n-1之每連續兩個的邏輯區塊做比較來決定匹配。StatusResult 322可以指示CF 330的結果,例如,找到或未找到,以及如果找到匹配的話,包含邏輯區塊312a至312n-1之匹配邏輯區塊302a和302b的兩個連續邏輯區塊的邏輯位址。針對搜尋或找尋操作,沒有資料被寫到計算結果324,而且
Operand1和
Operand2兩者的內容係原封不動的。在一些範例中,
Operand1可以被用來指示StatusResult 322的部分或全部。例如,
Operand1含有用以搜尋的一串文字且
Operand2含有要被搜尋的資料。
Operand1中之字串已經在
Operand2中被找到的位置能夠在‘具有CF的讀(搜尋)’操作中被寫到
Operand1。在其他範例中,該資訊可以被寫到
Operand1於當找到匹配時。在此一範例中,包含邏輯區塊324a至324n-1之計算結果324可以不被寫而使得
Operand2312a至312n-1中的原始資料不被搜尋操作所改變。
在另一範例中,CF 330為XOR運算,其中,邏輯區塊302a和302b分別與邏輯區塊312a至312n-1之每一組的兩個連續邏輯區塊相XORed。StatusResult 322指示該運算的成功/失敗,其計算結果324包含n個邏輯區塊312a至312n-1,那些邏輯區塊的每一個為該等邏輯區塊312a至312n-1之對應的一個邏輯區塊與邏輯區塊302a至302n-1中的一個邏輯區塊相XORed的結果。
視是否正在進行‘具有CF的寫’或‘具有CF的讀’操作以及CF 330之CF運算的類型(例如,搜尋或XOR)而定,計算結果324a至324n-1被儲存在由
Operand1或
Operand2所識別之緩衝區中。在此情況下,
OpNLB1(2)和
OpNLB2(n)係不同的。針對一些CF運算,例如‘搜尋’,可能沒有計算結果被寫到
Operand1或
Operand2,但是除了成功/失敗之外,StatusResult 322可以指示找到/未找到,其中,成功/失敗可以指示
Operand2中之資料的讀取以進行讀操作的成功/失敗,以及StatusResult 322可以指示成功(
Operand2資料成功讀取)和未找到,其顯示雖然在讀取該運算元中並未遭遇到錯誤,但是正被搜尋(在
Operand1中)的資料在
Operand2中未被找到。
如同本文中所述者,儲存裝置100a能夠進行由讀命令(例如,加註的讀命令)或寫命令(例如,加註的寫命令)所指示的CF。圖4A至圖25B例舉進行CF的範例方法。
圖4A係依據一些實作,例舉在寫操作中進行CF之範例方法400a的方塊圖。參照圖1及圖4A,方法400a能夠由主機101及儲存裝置100a來予以進行。緩衝區103、107、或109中的一個包含主機緩衝區(新資料)401。NVM(結果)404指的是儲存裝置100a之記憶體陣列120中的記憶體位置。驅動緩衝區(新資料)402和驅動緩衝區(結果)403各自能夠是寫緩衝區114或緩衝區112。在一些範例中,驅動緩衝區(新資料)402和驅動緩衝區(結果)403為同一個緩衝區(例如,同一個寫緩衝區114或同一個緩衝區112)以節省緩衝區資源。在方法400a中,儲存裝置100a的控制器110對從主機101所接收到的資料進行CF 410,而後將CF 410的計算結果寫到NVM(結果)404。
在方法400a中,主機101經由匯流排105並且透過介面140將加註的寫命令提交到儲存裝置100a的控制器110。加註的寫命令包含識別要對儲存在主機緩衝區(新資料)401中的新資料進行之CF 410的類型之註解或指示。
主機101將主機緩衝區(新資料)401提呈給控制器110待被寫入。作為回應,在411,控制器110進行資料轉移以經由匯流排105透過介面140而從主機緩衝區(新資料)401取得新資料,並且將新資料儲存進驅動緩衝區(新資料)402之內。
儲存裝置100a的控制器110對驅動緩衝區(新資料)402中的新資料進行CF 410。到CF 410的輸入為驅動緩衝區(新資料)402中的新資料,以及CF 410的輸出為CF 410的計算結果。在412,儲存裝置100a的控制器110將CF 410的計算結果儲存在驅動緩衝區(結果)403中。在413,儲存裝置100a的控制器110將來自驅動緩衝區(結果)403的計算結果寫入NVM(結果)404內。在一些範例中,並非將來自驅動緩衝區(結果)403的計算結果寫入NVM(結果)404內,而是儲存裝置100a的控制器110能夠將來自驅動緩衝區(結果)403的計算結果寫到儲存裝置100a的緩衝區112。依據先前所討論之CF的樣本式,方法400a相當於具有CF的寫,其中,
Operand1為主機緩衝區401的位置,
Operand2為寫入NVM(結果)404的邏輯位址以及
OTYPE指示
Operand2能夠被忽視作為輸入參數而且僅用作為輸出參數。換言之,計算函式CF 410僅對位於
Operand1的新資料進行運算而且將計算結果寫到
Operand2。
圖4B係依據一些實作,例舉在寫操作中進行CF之範例方法400b的流程圖。參照圖1、圖4A、及圖4B,方法400b對應於方法400a。方法400b能夠由儲存裝置100a的控制器110來予以進行。
在421,控制器110接收來自在操作上耦接至儲存裝置100a之主機101之加註的寫命令。加註的寫命令識別即將要進行的CF 410。在422,回應於接收到加註的寫命令,控制器110將來自主機101(例如,來自主機緩衝區(新資料)401)之新資料透過匯流排105以及經由介面140轉移到儲存裝置100a的驅動緩衝區(例如,驅動緩衝區(新資料)402)。在423,控制器110對新資料進行CF 410以決定計算結果。在422轉移來自主機101之新資料能夠基於轉移單位尺寸而被增量地進行。因而,能夠對驅動緩衝區(新資料)402中已經被接收到之新資料的部分增量地進行CF 410,且同時新資料的剩餘部分仍正被轉移到驅動緩衝區(新資料)402。因此,當新資料正被接收以及當計算結果正被儲存至驅動緩衝區(結果)403時,CF 410能夠被同時地、即時地進行。在424,儲存裝置100a的控制器110將CF 410的計算結果儲存在結果驅動緩衝區(例如,驅動緩衝區(結果)403)中。在425,儲存裝置100a的控制器110將計算結果寫到NVM(結果)404。
圖5A係依據一些實作,例舉在寫操作中進行CF之範例方法500a的方塊圖。參照圖1及圖5A,方法500a能夠由主機101及儲存裝置100a來予以進行。緩衝區103、107、或109中的一個包含主機緩衝區(新資料)501。NVM(新資料)504指的是儲存裝置100a之記憶體陣列120中的記憶體位置。驅動緩衝區(新資料)502和驅動緩衝區(結果)503各自能夠是寫緩衝區114或緩衝區112。在一些範例中,驅動緩衝區(新資料)502和驅動緩衝區(結果)503為同一個緩衝區(例如,同一個寫緩衝區114或同一個緩衝區112)以節省緩衝區資源。在方法500a中,儲存裝置100a的控制器110在對資料進行CF 510之前,先將來自主機101的新資料寫到NVM(新資料)504。在其他範例中,在對資料進行CF 510的同時(與其並行或同時)或者在對資料進行CF 510之後,控制器110將來自主機101的新資料寫到NVM(新資料)504。依據先前所討論之CF的樣本式,方法500a相當於具有CF的寫,其中,
Operand1為主機緩衝區501的位置,
Operand2為寫入NVM(新資料)504的邏輯位址以及OTYPE指示
Operand2能夠被忽視作為輸入參數而且
Operand2僅用作為輸出參數。換言之,計算函式CF 510僅對位於
Operand1的新資料進行運算而且將計算結果寫到
Operand2。
在方法500a中,主機101經由匯流排105並且透過介面140將加註的寫命令提交到儲存裝置100a的控制器110。加註的寫命令包含識別要對在主機緩衝區(新資料)501中所儲存的新資料進行之CF 510的類型之註解或指示。
主機101將主機緩衝區(新資料)501提呈給控制器110待被寫入。作為回應,在511,控制器110進行資料轉移以經由匯流排105透過介面140而從主機緩衝區(新資料)501取得新資料,並且將新資料儲存進驅動緩衝區(新資料)502之內。在513,儲存裝置100a的控制器110將來自驅動緩衝區(新資料)502的新資料寫入NVM(新資料)504之內。
儲存裝置100a的控制器110對驅動緩衝區(新資料)502中的新資料進行CF 510。到CF 510的輸入為驅動緩衝區(新資料)502中的新資料,以及CF 510的輸出為CF 510的計算結果。在一些範例中,在進行CF 510之前先進行513(例如,發起或完成)。在其他範例中,在進行CF 510的同時(與其並行或同時)進行513或者在進行CF 510之後才進行513。在512,儲存裝置100a的控制器110將CF 510的計算結果儲存在驅動緩衝區(結果)503中。
圖5B係依據一些實作,例舉在寫操作中進行CF之範例方法500b的流程圖。參照圖1、圖5A、及圖5B,方法500b對應於方法500a。方法500b能夠由儲存裝置100a的控制器110來予以進行。
在521,控制器110接收來自在操作上耦接至儲存裝置100a之主機101之加註的寫命令。加註的寫命令識別即將要進行的CF 510。在522,回應於接收到加註的寫命令,控制器110將來自主機101(例如,來自主機緩衝區(新資料)501)之新資料透過匯流排105以及經由介面140轉移到儲存裝置100a的驅動緩衝區(例如,驅動緩衝區(新資料)502)。在523,儲存裝置100a的控制器110將來自驅動緩衝區的新資料寫到NVM(結果)504。在524,控制器110對新資料進行CF 510以決定計算結果。在525,儲存裝置100a的控制器110將CF 510的計算結果儲存在結果驅動緩衝區(例如,驅動緩衝區(結果)503)中。
圖6A係依據一些實作,例舉在寫操作中進行CF之範例方法600a的方塊圖。參照圖1及圖6A,方法600a能夠由主機101及儲存裝置100a來予以進行。緩衝區103、107、或109中的一個包含主機緩衝區(新資料)601。NVM(結果)604指的是儲存裝置100a之記憶體陣列120中的第一記憶體位置。NVM(舊資料)605指的是儲存裝置100a之記憶體陣列120中的第二記憶體位置。驅動緩衝區(新資料)602和驅動緩衝區(結果)603各自能夠是寫緩衝區114或緩衝區112。在一些範例中,驅動緩衝區(新資料)502和驅動緩衝區(結果)503為同一個緩衝區(例如,同一個寫緩衝區114或同一個緩衝區112)以節省緩衝區資源。在方法600a中,儲存裝置100a的控制器110對從主機101中所接收到的新資料和在NVM(舊資料)605中所儲存的舊資料進行CF 610。新資料和舊資料具有相同的邏輯位址。然後,計算結果被寫到NVM(結果)604以取代舊資料。因此,NVM(舊資料)605的記憶體位置(例如,實際位置)和NVM(結果)604的記憶體位置(例如,實際位置)對應於相同的位址,使得在NVM(舊資料)605之邏輯位址處的舊資料被在相同之邏輯位址處的計算結果所取代。依據先前所討論之CF的樣本式,方法600a相當於具有CF的寫,其中,
Operand1為主機緩衝區601的位置,
Operand2為寫入NVM(舊資料)605的邏輯位址(其和NVM(結果)604係相同的位址)以及
OTYPE指示
Operand2中的邏輯位址用作為輸入參數和輸出參數兩者以及
Operand1用作為輸入參數。換言之,計算函式CF 610對位於
Operand1的新資料和位於
Operand2的舊資料兩者進行運算而且將計算結果寫到
Operand2。
在方法600a中,主機101經由匯流排105並且透過介面140將加註的寫命令提交到儲存裝置100a的控制器110。加註的寫命令包含識別要對在主機緩衝區(新資料)401中所儲存的新資料和在NVM(舊資料)605中所儲存的舊資料進行之CF 610的類型之註解或指示。加註的寫命令使用
Operand1(匯流排105上對應於主機緩衝區(新資料)601的位址)和
OpNLB1來識別新資料以及使用
Operand2和
OpNLB2來識別舊資料的邏輯位址。加註的寫命令能夠進一步包含載明CF 610的計算結果係要被寫到對應於
Operand2的邏輯位址。
主機101將主機緩衝區(新資料)601提呈給控制器110待被寫入。作為回應,在611,控制器110進行資料轉移以經由匯流排105透過介面140而從主機緩衝區(新資料)601取得新資料,並且將新資料儲存進驅動緩衝區(新資料)602之內。在612,儲存裝置100a的控制器110進行進入NVM(舊資料)605之內的NAND讀取。換言之,控制器110從記憶體陣列120中讀出對應於加註的寫命令中之邏輯位址(
Operand2)的舊資料和現有資料。
儲存裝置100a的控制器110對驅動緩衝區(新資料)602中的新資料和從NVM(舊資料)605中讀出的舊資料進行CF 610。到CF 610的輸入為驅動緩衝區(新資料)602中的新資料和從NVM(舊資料)605中讀出的舊資料。CF 610的輸出為CF 610的計算結果。在613,儲存裝置100a的控制器110將CF 610的計算結果儲存在驅動緩衝區(結果)603中。在614,儲存裝置100a的控制器110將計算結果從驅動緩衝區(結果)603寫入NVM(結果)604內。換言之,在614,控制器110然後藉由將計算結果從驅動緩衝區(結果)603寫入NVM(結果)604內而用計算結果來更新舊資料。控制器110(例如,FTL)更新尋址映射表(addressing mapping table)以使NVM(結果)604的實際位址與該邏輯位址(
Operand2)相對應。控制器110標記NVM(舊資料)605的實際位址用於垃圾回收。
圖6B係依據一些實作,例舉在寫操作中進行CF之範例方法600b的流程圖。參照圖1、圖6A、及圖6B,方法600b對應於方法600a。方法600b能夠由儲存裝置100a的控制器110來予以進行。
在621,控制器110接收來自在操作上耦接至儲存裝置100a之主機101之加註的寫命令。加註的寫命令識別即將要進行的CF 610。在622,回應於接收到加註的寫命令,控制器110將來自主機101(例如,來自主機緩衝區(新資料)401)之新資料透過匯流排105以及經由介面140轉移到儲存裝置100a的驅動緩衝區(例如,驅動緩衝區(新資料)602)。在623,控制器110從NVM(舊資料)605中讀出舊資料。在624,控制器110對新資料和舊資料進行CF 610以決定計算結果。在622從主機101轉移新資料及讀取舊資料能夠基於轉移單位尺寸而被增量地進行。因而,能夠對在驅動緩衝區(新資料)602中已經被接收到之新資料的部分和已經從NVM(舊資料)605中讀出之對應舊資料的部分增量地進行CF 610,且同時新資料的剩餘部分仍正被轉移到驅動緩衝區(新資料)602而且同時舊資料的剩餘部分仍正被讀取。因此,當新資料正被接收、當舊資料正被讀取、以及當計算結果正被儲存至驅動緩衝區(結果)603時,CF 610能夠被同時地、即時地進行。在625,儲存裝置100a的控制器110將CF 610的計算結果儲存在結果驅動緩衝區(例如,驅動緩衝區(結果)603)中。在626,儲存裝置100a的控制器110將計算結果寫到NVM(結果)604。
圖7A係依據一些實作,例舉在寫操作中進行CF之範例方法700a的方塊圖。參照圖1及圖7A,方法700a能夠由主機101及儲存裝置100a來予以進行。緩衝區103、107、或109中的一個包含主機緩衝區(新資料)701。NVM(新資料)704指的是儲存裝置100a之記憶體陣列120中的第一記憶體位置。NVM(舊資料)705指的是儲存裝置100a之記憶體陣列120中的第二記憶體位置。驅動緩衝區(新資料)702和驅動緩衝區(結果)703各自能夠是寫緩衝區114或緩衝區112。在一些範例中,驅動緩衝區(新資料)702和驅動緩衝區(結果)703為同一個緩衝區(例如,同一個寫緩衝區114或同一個緩衝區112)以節省緩衝區資源。在方法700a中,儲存裝置100a的控制器110對從主機101中所接收到的新資料和在NVM(舊資料)705中所儲存的舊資料進行CF 710。在進行CF 710之前,新資料被寫到NVM(新資料)704以取代舊資料。在其他範例中,控制器110將來自主機101的新資料寫到NVM(新資料)704且同時對該資料進行CF 710(與其並行或同時)或者在該資料進行CF 710之後。因此,NVM(舊資料)705的記憶體位置(例如,實際位置)和NVM(新資料)704的記憶體位置(例如,實際位置)可以是不同的但是對應於相同的邏輯位址。依據先前所討論之CF的樣本式,方法700a相當於具有CF的寫,其中,
Operand1為主機緩衝區701的位置,
Operand2為NVM(舊資料)705的邏輯位址(其和NVM(新資料)704係相同的位址),以及
OTYPE指示
Operand2中的邏輯位址用作為輸入參數和輸出參數兩者,以及
Operand1用作為輸入參數。換言之,計算函式CF 710對位於
Operand1的新資料和位於
Operand2的舊資料兩者進行運算,然後將驅動緩衝區702寫到
Operand2中的邏輯位址而且將計算結果寫到暫時的緩衝區703,其可由
OTYPE中的一個或更多個旗標來予以識別出。
在方法700a中,主機101經由匯流排105並且透過介面140將加註的寫命令提交到儲存裝置100a的控制器110。加註的寫命令包含識別要對在主機緩衝區(新資料)701中所儲存的新資料和在NVM(舊資料)705中所儲存的舊資料進行之CF 710的類型之註解或指示。加註的寫命令能夠進一步包含邏輯位址。
主機101將主機緩衝區(新資料)701提呈給控制器110待被寫入。作為回應,在711,控制器110進行資料轉移以經由匯流排105透過介面140而從主機緩衝區(新資料)701取得新資料,並且將新資料儲存進驅動緩衝區(新資料)702之內。在712,儲存裝置100a的控制器110進行進入NVM(舊資料)705之內的NAND讀取。換言之,控制器110從記憶體陣列120中讀出對應於加註的寫命令中之邏輯位址的舊資料和現有資料。
在713,儲存裝置100a的控制器110將來自驅動緩衝區(新資料)702的新資料寫到NVM(新資料)704。換言之,在713,控制器110然後藉由將來自驅動緩衝區(新資料)702的新資料寫到NVM(新資料)704內而用該新資料來更新舊資料。控制器110(例如,FTL)更新尋址映射表以使NVM(新資料)704的實際位址與該邏輯位址相對應。控制器110標記NVM(舊資料)705的實際位址用於垃圾回收。
在712之後,儲存裝置100a的控制器110對驅動緩衝區(新資料)702中的新資料和從NVM(舊資料)705中讀出的舊資料進行CF 710。到CF 710的輸入為驅動緩衝區(新資料)702中的新資料和從NVM(舊資料)705中讀出的舊資料。CF 710的輸出為CF 710的計算結果。在714,儲存裝置100a的控制器110將CF 710的計算結果儲存在驅動緩衝區(結果)703中。在其中驅動緩衝區(結果)703為緩衝區112的範例中,主機101或該等儲存裝置100中的另一個能夠從驅動緩衝區(結果)703中擷取出計算結果。
圖7B係依據一些實作,例舉在寫操作中進行CF之範例方法700b的流程圖。參照圖1、圖7A、及圖7B,方法700b對應於方法700a。方法700b能夠由儲存裝置100a的控制器110來予以進行。
在721,控制器110接收來自在操作上耦接至儲存裝置100a之主機101之加註的寫命令。加註的寫命令識別即將要進行的CF 710。在722,回應於接收到加註的寫命令,控制器110將來自主機101(例如,來自主機緩衝區(新資料)701)之新資料透過匯流排105以及經由介面140轉移到儲存裝置100a的驅動緩衝區(例如,驅動緩衝區(新資料)702)。在723,控制器110從NVM(舊資料)705中讀出舊資料。在724,儲存裝置100a的控制器110將新資料寫到NVM(新資料)704。依據先前所討論之CF的樣本式,方法700a相當於具有CF的寫,其中,
Operand1為主機緩衝區701的位置,
Operand2為NVM(舊資料)705的邏輯位址(其和NVM(新資料)704係相同的位址),以及
OTYPE指示
Operand2中的邏輯位址用作為輸入參數和輸出參數兩者,以及
Operand1用作為輸入參數。換言之,計算函式CF 710對位於
Operand1的新資料和位於
Operand2的舊資料兩者進行運算,然後將驅動緩衝區702寫到
Operand2中的邏輯位址而且將計算結果寫到暫時的緩衝區703,其可由
OTYPE中的一個或更多個旗標來予以識別出。
在725,控制器110對新資料和舊資料進行CF 710以決定計算結果。在722從主機101轉移新資料及在723讀取舊資料能夠基於一個或更多個轉移單位尺寸而被增量地進行。因而,能夠對在驅動緩衝區(新資料)702中已經被接收到之新資料的部分和已經從NVM(舊資料)705中讀出之對應舊資料的部分增量地進行CF 710,且同時新資料的剩餘部分仍正被轉移到驅動緩衝區(新資料)702而且同時舊資料的剩餘部分仍正被讀取。因此,當新資料正被接收、當舊資料正被讀取、以及當計算結果正被儲存至驅動緩衝區(結果)703時,CF 710能夠被同時地、即時地進行。在726,儲存裝置100a的控制器110將CF 710的計算結果儲存在結果驅動緩衝區(例如,驅動緩衝區(結果)703)中。
如圖6A和圖7A兩者中所示,計算結果被儲存在緩衝區中,例如驅動緩衝區(結果)603或704中。在圖7A中,CF 710可以被進行於在713的NVM寫入之後,而在圖6A中,CF 710則被進行於結果能夠在614被寫到NVM 結果604之前。在兩者情況下,控制器110使至少兩個緩衝區分配有由控制器110所選擇而且未被主機101所指定的位址。第一個緩衝區(例如,602或702)係用於接收新資料,而且第二個緩衝區(例如,603或703)係用於保持計算結果。除此之外,雖然未顯示出,但是從NVM(舊資料)605或705中讀出的舊資料在進行CF 710之前也可以先被暫時儲存在緩衝區中。此緩衝區能夠是儲存裝置100a中的第三個緩衝區,或者和第二個緩衝區相同,其中,第二個緩衝區中的新資料塊(chunk)當它們被計算時被結果的資料位元組所取代。因此,在一個範例中,當CF係正在進行中時,混合資料類型的資料坐落於第二個緩衝區中。當完成CF時,第二個緩衝區僅儲存結果資料。
控制器110能夠使緩衝區603和703分配有
OpNLB1或
OpNLB2的緩衝記憶體尺寸,或者如果CF為搜尋的話,正被搜尋之LBA內的另一尺寸(例如,位置值,8位元、16位元、32位元、等等)。在一些範例中,緩衝區603或703可以被引用於後續的CF中。在其他範例中,
OTYPE旗標中的位元能夠對應於緩衝區603或703的緩衝區編號,其中,緩衝區603和703被指示具有由
OpNLB1或
OpNLB2所指示的尺寸。
在一些配置中,
OTYPE能夠被用來識別控制器110的緩衝區。在一些配置中,控制器110能夠選擇由CF本身所隱含的緩衝區。在一範例中,三個明確的命令包含1)「開始計算,將temp結果尺寸
OpNLB2儲存在緩衝區ID1中」CF,接著是2)「繼續計算,使用緩衝區ID1來擷取
OpNLB1以及儲存temp結果, …. <repeat>,和3)「結束計算,使用緩衝區ID1來擷取
OpNLB1以及將最終結果儲存在
OpNLB2中」。關於CF的三個命令能夠被特定使用來進行鏈式計算(chained computation)以及使用內部的緩衝區,其位置能夠由控制器110挑選。該內部的緩衝區能夠用BufferID = x和
OpNLB1或
OpNLB2的尺寸來表示,例如,在
OTYPE旗標中。
圖8A係依據一些實作,例舉在寫操作中進行CF之範例方法800a的方塊圖。參照圖1及圖8A,方法800a能夠由主機101及儲存裝置100a來予以進行。緩衝區103、107、或109中的一個包含主機緩衝區(新資料)801。NVM(舊資料)805指的是儲存裝置100a之記憶體陣列120中的記憶體位置。驅動緩衝區(新資料)802和驅動緩衝區(結果)803各自能夠是寫緩衝區114或緩衝區112。在一些範例中,驅動緩衝區(新資料)802和驅動緩衝區(結果)803為同一個緩衝區(例如,同一個寫緩衝區114或同一個緩衝區112)以節省緩衝區資源。在方法800a中,儲存裝置100a的控制器110對從主機101中所接收到的新資料和在NVM(舊資料)805中所儲存的舊資料進行CF 810。對應於新資料的邏輯位址和對應於舊資料的邏輯位址係相同的。新資料和CF 810的計算結果皆未被儲存在儲存裝置100a的NVM(例如,記憶體陣列120)中。依據先前所討論之CF的樣本式,方法800a相當於具有CF的寫,其中,
Operand1為主機緩衝區801的位置,
Operand2為NVM(舊資料)805的邏輯位址以及
OTYPE指示
Operand2中的邏輯位址用作為輸入參數及
Operand1用作為輸入參數。換言之,計算函式CF 810對位於
Operand1的新資料和位於
Operand2的舊資料兩者進行運算,然後將計算結果寫到暫時的緩衝區803,其可由
OTYPE中的一個或更多個旗標來予以識別出。
在方法800a中,主機101經由匯流排105並且透過介面140將加註的寫命令提交到儲存裝置100a的控制器110。加註的寫命令包含識別要對在主機緩衝區(新資料)801中所儲存的新資料和在NVM(舊資料)805中所儲存的舊資料進行之CF 810的類型之註解或指示。加註的寫命令能夠進一步包含邏輯位址。
主機101將主機緩衝區(新資料)801提呈給控制器110待被寫入。作為回應,在811,控制器110進行資料轉移以經由匯流排105透過介面140而從主機緩衝區(新資料)801取得新資料,並且將新資料儲存進驅動緩衝區(新資料)802之內。在812,儲存裝置100a的控制器110進行進入NVM(舊資料)805之內的NAND讀取。換言之,控制器110從記憶體陣列120中讀出對應於加註的寫命令中之邏輯位址的舊資料和現有資料。
儲存裝置100a的控制器110對驅動緩衝區(新資料)802中的新資料和從NVM(舊資料)805中讀出的舊資料進行CF 810。到CF 810的輸入為驅動緩衝區(新資料)802中的新資料和從NVM(舊資料)805中讀出的舊資料。CF 810的輸出為CF 810的計算結果。在813,儲存裝置100a的控制器110將CF 810的計算結果儲存在驅動緩衝區(結果)803中。在其中驅動緩衝區(結果)803為緩衝區112的範例中,主機101或該等儲存裝置100中的另一個能夠從驅動緩衝區(結果)803中擷取出計算結果。依據先前所討論之CF的樣本式,方法800a相當於具有CF的寫,其中,
Operand1為主機緩衝區801的位置,
Operand2為NVM(舊資料)805的邏輯位址以及
OTYPE指示
Operand2中的邏輯位址用作為輸入參數及
Operand1用作為輸入參數。換言之,計算函式CF 810對位於
Operand1的新資料和位於
Operand2的舊資料兩者進行運算,然後將計算結果寫到暫時的緩衝區803,其可由
OTYPE中的一個或更多個旗標來予以識別出。
圖8B係依據一些實作,例舉在寫操作中進行CF之範例方法800b的流程圖。參照圖1、圖8A、及圖8B,方法800b對應於方法800a。方法800b能夠由儲存裝置100a的控制器110來予以進行。
在821,控制器110接收來自在操作上耦接至儲存裝置100a之主機101之加註的寫命令。加註的寫命令識別即將要進行的CF 810。在822,回應於接收到加註的寫命令,控制器110將來自主機101(例如,來自主機緩衝區(新資料)801)之新資料透過匯流排105以及經由介面140轉移到儲存裝置100a的驅動緩衝區(例如,驅動緩衝區(新資料)802)。在823,控制器110從NVM(舊資料)805中讀出舊資料。
在824,控制器110對新資料和舊資料進行CF 810以決定計算結果。在822從主機101轉移新資料及在823讀取舊資料能夠基於一個或更多個轉移單位尺寸而被增量地進行。因而,能夠對在驅動緩衝區(新資料)802中已經被接收到之新資料的部分和已經從NVM(舊資料)805中讀出之對應舊資料的部分增量地進行CF 810,且同時新資料的剩餘部分仍正被轉移到驅動緩衝區(新資料)802而且同時舊資料的剩餘部分仍正被讀取。因此,當新資料正被接收、當舊資料正被讀取、以及當計算結果正被儲存至驅動緩衝區(結果)803時,CF 810能夠被同時地、即時地進行。在825,儲存裝置100a的控制器110將CF 810的計算結果儲存在結果驅動緩衝區(例如,驅動緩衝區(結果)803)中。
圖9A係依據一些實作,例舉在寫操作中進行CF之範例方法900a的方塊圖。參照圖1及圖9A,方法900a能夠由主機101及儲存裝置100a來予以進行。緩衝區103、107、或109中的一個包含主機緩衝區(新資料)901。NVM(儲存資料)905指的是儲存裝置100a之記憶體陣列120中的記憶體位置。驅動緩衝區(新資料)902和驅動緩衝區(結果)903各自能夠是寫緩衝區114或緩衝區112。在一些範例中,驅動緩衝區(新資料)902和驅動緩衝區(結果)903為同一個緩衝區(例如,同一個寫緩衝區114或同一個緩衝區112)以節省緩衝區資源。在方法900a中,儲存裝置100a的控制器110對從主機101中所接收到的新資料和在NVM(儲存資料)905中所儲存的儲存資料進行CF 910。對應於新資料的邏輯位址和對應於儲存資料的邏輯位址係不同的。新資料和CF 910的計算結果皆未被儲存在儲存裝置100a的NVM(例如,記憶體陣列120)中。依據先前所討論之CF的樣本式,方法900a相當於具有CF的寫,其中,
Operand1為主機緩衝區901的位置,
Operand2為NVM(儲存資料)905的邏輯位址以及
OTYPE指示
Operand2中的邏輯位址用作為輸入參數及
Operand1用作為輸入參數。換言之,計算函式CF 910對位於
Operand1的新資料和位於
Operand2的舊資料兩者進行運算,然後將計算結果寫到暫時的緩衝區903,其可由
OTYPE中的一個或更多個旗標來予以識別出。
在方法900a中,主機101經由匯流排105並且透過介面140將加註的寫命令提交到儲存裝置100a的控制器110。加註的寫命令包含識別要對在主機緩衝區(新資料)901中所儲存的新資料和在NVM(儲存資料)905中所儲存的儲存資料進行之CF 910的類型之註解或指示。加註的寫命令能夠進一步包含儲存資料的邏輯位址,其係不同於主機緩衝區(新資料)901中之新資料的邏輯位址。
主機101將主機緩衝區(新資料)901提呈給控制器110待被寫入。作為回應,在911,控制器110進行資料轉移以經由匯流排105透過介面140而從主機緩衝區(新資料)901取得新資料,並且將新資料儲存進驅動緩衝區(新資料)902之內。在912,儲存裝置100a的控制器110進行進入NVM(儲存資料)905之內的NAND讀取。換言之,控制器110從記憶體陣列120中讀出對應於加註的寫命令中之邏輯位址的儲存資料。
儲存裝置100a的控制器110對驅動緩衝區(新資料)902中的新資料和從NVM(儲存資料)905中讀出的儲存資料進行CF 910。到CF 910的輸入為驅動緩衝區(新資料)902中的新資料和從NVM(儲存資料)905中讀出的儲存資料。CF 910的輸出為CF 910的計算結果。在913,儲存裝置100a的控制器110將CF 910的計算結果儲存在驅動緩衝區(結果)903中。在其中驅動緩衝區(結果)903為緩衝區112的範例中,主機101或該等儲存裝置100中的另一個能夠從驅動緩衝區(結果)903中擷取出計算結果。
圖9B係依據一些實作,例舉在寫操作中進行CF之範例方法900b的流程圖。參照圖1、圖9A、及圖9B,方法900b對應於方法900a。方法900b能夠由儲存裝置100a的控制器110來予以進行。
在921,控制器110接收來自在操作上耦接至儲存裝置100a之主機101之加註的寫命令。加註的寫命令識別即將要進行的CF 910和儲存資料的邏輯位址。在922,回應於接收到加註的寫命令,控制器110將來自主機101(例如,來自主機緩衝區(新資料)901)之新資料透過匯流排105以及經由介面140轉移到儲存裝置100a的驅動緩衝區(例如,驅動緩衝區(新資料)902)。在923,控制器110從NVM(儲存資料)905中讀出儲存資料。如所述者,儲存資料和新資料具有不同的邏輯位址。
在924,控制器110對新資料和儲存資料進行CF 910以決定計算結果。在922從主機101轉移新資料及在923讀取儲存資料能夠基於一個或更多個轉移單位尺寸而被增量地進行。因而,能夠對在驅動緩衝區(新資料)902中已經被接收到之新資料的部分和已經從NVM(儲存資料)905中讀出之對應儲存資料的部分增量地進行CF 910,且同時新資料的剩餘部分仍正被轉移到驅動緩衝區(新資料)902而且同時儲存資料的剩餘部分仍正被讀取。因此,當新資料正被接收、當儲存資料正被讀取、以及當計算結果正被儲存至驅動緩衝區(結果)903時,CF 910能夠被同時地、即時地進行。在925,儲存裝置100a的控制器110將CF 910的計算結果儲存在結果驅動緩衝區(例如,驅動緩衝區(結果)903)中。
圖10A係依據一些實作,例舉在寫操作中進行CF之範例方法1000a的方塊圖。參照圖1及圖10A,方法1000a能夠由主機101及儲存裝置100a來予以進行。緩衝區103、107、或109中的一個包含主機緩衝區(新資料)1001。NVM(儲存資料)1005指的是儲存裝置100a之記憶體陣列120中的記憶體位置。NVM(結果)1004指的是儲存裝置100a之記憶體陣列120中的另一記憶體位置。驅動緩衝區(新資料)1002和驅動緩衝區(結果)1003各自能夠是寫緩衝區114或緩衝區112。在一些範例中,驅動緩衝區(新資料)1002和驅動緩衝區(結果)1003為同一個緩衝區(例如,同一個寫緩衝區114或同一個緩衝區112)以節省緩衝區資源。在方法1000a中,儲存裝置100a的控制器110對從主機101中所接收到的新資料和在NVM(儲存資料)1005中所儲存的儲存資料進行CF 1010。對應於新資料的邏輯位址和對應於儲存資料的邏輯位址係不同的。CF 1010的計算結果被儲存在儲存裝置100a之由該加註的寫命令所指定之位址的NVM(例如,記憶體陣列120)中。
在方法1000a中,主機101經由匯流排105並且透過介面140將加註的寫命令提交到儲存裝置100a的控制器110。加註的寫命令包含識別要對在主機緩衝區(新資料)1001中所儲存的新資料和在NVM(儲存資料)1005中所儲存的儲存資料進行之CF 1010的類型之註解或指示。加註的寫命令使用
Operand1(匯流排105上對應於主機緩衝區(新資料)1001的位址)和
OpNLB1來識別新資料以及使用
Operand2和
OpNLB2來識別儲存資料的邏輯位址。加註的寫命令能夠進一步包含載明CF 1010的計算結果係要被寫到對應於
Operand1的邏輯位址、對應於
Operand2的邏輯位址、或由該加註的寫命令所指定之另一邏輯位址。
主機101將主機緩衝區(新資料)1001提呈給控制器110待被寫入。作為回應,在1011,控制器110進行資料轉移以經由匯流排105透過介面140而從主機緩衝區(新資料)1001取得新資料,並且將新資料儲存進驅動緩衝區(新資料)1002之內。在1012,儲存裝置100a的控制器110進行進入NVM(儲存資料)1005之內的NAND讀取。換言之,控制器110從記憶體陣列120中讀出對應於該加註的寫命令中之指定邏輯位址(
Operand2和
OpNLB2)的儲存資料。
儲存裝置100a的控制器110對驅動緩衝區(新資料)1002中的新資料和從NVM(儲存資料)1005中讀出的儲存資料進行CF 1010。到CF 1010的輸入為驅動緩衝區(新資料)1002中的新資料和從NVM(儲存資料)1005中讀出的儲存資料。CF 1010的輸出為CF 1010的計算結果。在1013,儲存裝置100a的控制器110將CF 1010的計算結果儲存在驅動緩衝區(結果)1003中。
在1014,儲存裝置100a的控制器110將來自驅動緩衝區(結果)1003的計算結果寫入NVM(結果)1004內。在其中該加註的寫命令載明該計算結果係要被寫到新資料之邏輯位址的範例中,在1014,控制器110(例如,FTL)更新尋址映射表以使NVM(結果)1004的實際位址與該新資料(
Operand1)的邏輯位址相對應。在其中該加註的寫命令載明該計算結果係要被寫到儲存資料之邏輯位址的範例中,在1014,控制器110(例如,FTL)更新尋址映射表以使NVM(結果)1004的實際位址與該儲存資料(
Operand2)的邏輯位址相對應。在其中該加註的寫命令載明該計算結果係要被寫到另一邏輯位址的範例中,在1014,控制器110(例如,FTL)更新尋址映射表以使NVM(結果)1004的實際位址與該邏輯位址相對應。控制器110標記任何過時的實際位址用於垃圾回收。
圖10B係依據一些實作,例舉在寫操作中進行CF之範例方法1000b的流程圖。參照圖1、圖10A、及圖10B,方法1000b對應於方法1000a。方法1000b能夠由儲存裝置100a的控制器110來予以進行。
在1021,控制器110接收來自在操作上耦接至儲存裝置100a之主機101之加註的寫命令。加註的寫命令識別即將要進行的CF 1010、儲存資料的邏輯位址、以及CF 1010之計算結果係要被儲存至其的邏輯位址。在1022,回應於接收到加註的寫命令,控制器110將來自主機101(例如,來自主機緩衝區(新資料)1001)之新資料透過匯流排105以及經由介面140轉移到儲存裝置100a的驅動緩衝區(例如,驅動緩衝區(新資料)1002)。在1023,控制器110從NVM(儲存資料)1005中讀出儲存資料。如所述者,儲存資料和新資料具有不同的邏輯位址。
在1024,控制器110對新資料和儲存資料進行CF 1010以決定計算結果。在1022從主機101轉移新資料及在1023讀取儲存資料能夠基於一個或更多個轉移單位尺寸而被增量地進行。因而,能夠對在驅動緩衝區(新資料)1002中已經被接收到之新資料的部分和已經從NVM(儲存資料)1005中讀出之對應儲存資料的部分增量地進行CF 1010,且同時新資料的剩餘部分仍正被轉移到驅動緩衝區(新資料)1002而且同時儲存資料的剩餘部分仍正被讀取。因此,當新資料正被接收、當儲存資料正被讀取、以及當計算結果正被儲存至驅動緩衝區(結果)1003時,CF 1010能夠被同時地、即時地進行。在1025,儲存裝置100a的控制器110將CF 1010的計算結果儲存在結果驅動緩衝區(例如,驅動緩衝區(結果)1003)中。在1026,儲存裝置100a的控制器110將來自結果驅動緩衝區的計算結果寫到NVM(結果)1004。
圖11A係依據一些實作,例舉在寫操作中進行CF之範例方法1100a的方塊圖。參照圖1及圖11A,方法1100a能夠由主機101及儲存裝置100a來予以進行。緩衝區103、107、或109中的一個包含主機緩衝區(新資料)1101。NVM(儲存資料)1105指的是儲存裝置100a之記憶體陣列120中的記憶體位置。驅動緩衝區(新資料)1102和驅動緩衝區(結果)1103各自能夠是寫緩衝區114或緩衝區112。在一些範例中,驅動緩衝區(新資料)1102和驅動緩衝區(結果)1103為同一個緩衝區(例如,同一個寫緩衝區114或同一個緩衝區112)以節省緩衝區資源。在方法1100a中,儲存裝置100a的控制器110對從主機101中所接收到的新資料和在NVM(儲存資料)1105中所儲存的儲存資料進行CF 1110。對應於新資料的邏輯位址和對應於儲存資料的邏輯位址係不同的。在進行CF 1110之前,新資料被寫到儲存裝置100a的NVM(例如,記憶體陣列120)。在其他範例中,在進行CF 1110的同時(與其並行或同時)或者在進行CF 1110之後,新資料被寫到NVM(新資料)1104。
在方法1100a中,主機101經由匯流排105並且透過介面140將加註的寫命令提交到儲存裝置100a的控制器110。加註的寫命令包含識別要對在主機緩衝區(新資料)1101中所儲存的新資料和在NVM(儲存資料)1105中所儲存的儲存資料進行之CF 1110的類型之註解或指示。加註的寫命令使用
Operand1(匯流排105上對應於主機緩衝區(新資料)1101的位址)和
OpNLB1來識別新資料以及使用
Operand2和
OpNLB2來識別儲存資料的邏輯位址。加註的寫命令能夠進一步載明新資料係要被寫到對應於
Operand1的邏輯位址。
主機101將主機緩衝區(新資料)1101提呈給控制器110待被寫入。作為回應,在1111,控制器110進行資料轉移以經由匯流排105透過介面140而從主機緩衝區(新資料)1101取得新資料,並且將新資料儲存進驅動緩衝區(新資料)1102之內。在1112,儲存裝置100a的控制器110進行進入NVM(儲存資料)1105之內的NAND讀取。換言之,控制器110從記憶體陣列120中讀出對應於該加註的寫命令中之指定邏輯位址(
Operand2和
OpNLB2)的儲存資料。
在1113,儲存裝置100a的控制器110將來自驅動緩衝區(新資料)1102的新資料寫入NVM(新資料)1104內。在其中該加註的寫命令載明該計算結果係要被寫到新資料之邏輯位址的範例中,在1114,控制器110(例如,FTL)更新尋址映射表以使NVM(結果)1104的實際位址與該新資料(
Operand1)的邏輯位址相對應。控制器110標記過時的實際位址用於垃圾回收。
在1113之後,儲存裝置100a的控制器110對驅動緩衝區(新資料)1102中的新資料和從NVM(儲存資料)1105中所讀出的儲存資料進行CF 1110。到CF 1110的輸入為驅動緩衝區(新資料)1102中的新資料和從NVM(儲存資料)1105中讀出的儲存資料。CF 1110的輸出為CF 1110的計算結果。在1114,儲存裝置100a的控制器110將CF 1110的計算結果儲存在驅動緩衝區(結果)1103中,用於稍後的擷取。
圖11B係依據一些實作,例舉在寫操作中進行CF之範例方法1100b的流程圖。參照圖1、圖11A、及圖11B,方法1100b對應於方法1100a。方法1100b能夠由儲存裝置100a的控制器110來予以進行。
在1121,控制器110接收來自在操作上耦接至儲存裝置100a之主機101之加註的寫命令。加註的寫命令識別即將要進行的CF 1110、儲存資料的邏輯位址、以及新資料的邏輯位址。在1122,回應於接收到加註的寫命令,控制器110將來自主機101(例如,來自主機緩衝區(新資料)1101)之新資料透過匯流排105以及經由介面140轉移到儲存裝置100a的驅動緩衝區(例如,驅動緩衝區(新資料)1102)。在1123,控制器110從NVM(儲存資料)1105中讀出儲存資料。如所述者,儲存資料和新資料具有不同的邏輯位址。在1124,儲存裝置100a的控制器110將來自新資料緩衝區的新資料寫到NVM(新資料)1104。
在1125,控制器110對新資料和儲存資料進行CF 1110以決定計算結果。在1122從主機101轉移新資料及在1123讀取儲存資料能夠基於一個或更多個轉移單位尺寸而被增量地進行。因而,能夠對在驅動緩衝區(新資料)1102中已經被接收到之新資料的部分和已經從NVM(儲存資料)1105中讀出之對應儲存資料的部分增量地進行CF 1110,且同時新資料的剩餘部分仍正被轉移到驅動緩衝區(新資料)1102而且同時儲存資料的剩餘部分仍正被讀取。因此,當新資料正被接收、當儲存資料正被讀取、以及當計算結果正被儲存至驅動緩衝區(結果)1103時,CF 1110能夠被同時地、即時地進行。在1126,儲存裝置100a的控制器110將CF 1110的計算結果儲存在結果驅動緩衝區(例如,驅動緩衝區(結果)1103)中。
圖12A係依據一些實作,例舉在寫操作中進行CF之範例方法1200a的方塊圖。參照圖1及圖12A,方法1200a能夠由主機101及儲存裝置100a來予以進行。緩衝區103、107、或109中的一個包含主機緩衝區(新資料)1201。係數表1205指的是儲存裝置100a之記憶體陣列120中或儲存裝置100a之另一適合記憶體單元中的記憶體位置。驅動緩衝區(新資料)1202和驅動緩衝區(結果)1203各自能夠是寫緩衝區114或緩衝區112。在一些範例中,驅動緩衝區(新資料)1202和驅動緩衝區(結果)1203為同一個緩衝區(例如,同一個寫緩衝區114或同一個緩衝區112)以節省緩衝區資源。在方法1200a中,儲存裝置100a的控制器110對從主機101中所接收到的新資料和在係數表1205中所儲存的資料(例如,一組係數)進行CF 1210。CF 1210的計算結果被儲存在儲存裝置100a之由該加註的寫命令所指定之位址的NVM(例如,記憶體陣列120)中。在一些範例中,該計算結果係要被儲存至其之邏輯位址和從主機101接收到之新資料的邏輯位址係相同的。
在方法1200a中,主機101經由匯流排105並且透過介面140將加註的寫命令提交到儲存裝置100a的控制器110。加註的寫命令包含識別要對在主機緩衝區(新資料)1201中所儲存的新資料和在係數表1205中所儲存的資料進行之CF 1210的類型之註解或指示。加註的寫命令使用
Operand1(匯流排105上對應於主機緩衝區(新資料)1201的位址)和
OpNLB1來識別新資料以及使用
Operand2和
OpNLB2來識別係數表1205的位址(例如,邏輯位址)。加註的寫命令能夠進一步載明CF 1210的計算結果係要被寫到對應於
Operand1的邏輯位址。
主機101將主機緩衝區(新資料)1201提呈給控制器110待被寫入。作為回應,在1211,控制器110進行資料轉移以經由匯流排105透過介面140而從主機緩衝區(新資料)1201取得新資料,並且將新資料儲存進驅動緩衝區(新資料)1202之內。在1212,儲存裝置100a的控制器110進行表提取(table fetch)以擷取係數表1205中的該組係數。換言之,控制器110從記憶體陣列120中讀出對應於該加註的寫命令中之指定邏輯位址(
Operand2和
OpNLB2)的係數資料。
儲存裝置100a的控制器110對驅動緩衝區(新資料)1202中的新資料和來自係數表1205之儲存的該組係數進行CF 1210。到CF 1210的輸入為驅動緩衝區(新資料)1202中的新資料和來自係數表1205之儲存的該組係數。CF 1210的輸出為CF 1210的計算結果。在1213,儲存裝置100a的控制器110將CF 1210的計算結果儲存在驅動緩衝區(結果)1203中。
在1214,儲存裝置100a的控制器110將來自驅動緩衝區(結果)1203的計算結果寫入NVM(結果)1004內。在其中該加註的寫命令載明該計算結果係要被寫到新資料之邏輯位址的範例中,在1214,控制器110(例如,FTL)更新尋址映射表以使NVM(結果)1204的實際位址與該新資料(
Operand1)的邏輯位址相對應。控制器110標記任何過時的實際位址用於垃圾回收。
圖12B係依據一些實作,例舉在寫操作中進行CF之範例方法1200b的流程圖。參照圖1、圖12A、及圖12B,方法1200b對應於方法1200a。方法1200b能夠由儲存裝置100a的控制器110來予以進行。
在1221,控制器110接收來自在操作上耦接至儲存裝置100a之主機101之加註的寫命令。加註的寫命令識別即將要進行的CF 1210、儲存係數的邏輯位址、以及CF 1210之計算結果係要被儲存至其的邏輯位址。在1222,回應於接收到加註的寫命令,控制器110將來自主機101(例如,來自主機緩衝區(新資料)1201)之新資料透過匯流排105以及經由介面140轉移到儲存裝置100a的驅動緩衝區(例如,驅動緩衝區(新資料)1202)。在1223,控制器110從係數表1205中讀出儲存的係數資料。如所述者,儲存的係數資料和新資料具有不同的邏輯位址。
在1224,控制器110對新資料和儲存的係數資料進行CF 1210以決定計算結果。在1222從主機101轉移新資料及在1223讀取儲存資料能夠基於一個或更多個轉移單位尺寸而被增量地進行。因而,能夠對在驅動緩衝區(新資料)1202中已經被接收到之新資料的部分和已經從係數表1205中讀出之對應係數資料的部分增量地進行CF 1210,且同時新資料的剩餘部分仍正被轉移到驅動緩衝區(新資料)1202而且同時儲存資料的剩餘部分仍正被讀取。因此,當新資料正被接收、當儲存資料正被讀取、以及當計算結果正被儲存至驅動緩衝區(結果)1203時,CF 1210能夠被同時地、即時地進行。在1225,儲存裝置100a的控制器110將CF 1210的計算結果儲存在結果驅動緩衝區(例如,驅動緩衝區(結果)1203)中。在1226,儲存裝置100a的控制器110將來自結果驅動緩衝區的計算結果寫到NVM(結果)1204。
圖13A係依據一些實作,例舉在寫操作中進行CF之範例方法1300a的方塊圖。參照圖1及圖13A,方法1300a能夠由主機101及儲存裝置100a來予以進行。緩衝區103、107、或109中的一個包含主機緩衝區(新資料)1301。係數表1305指的是儲存裝置100a之記憶體陣列120中或儲存裝置100a之另一適合記憶體單元中的記憶體位置。驅動緩衝區(新資料)1302和驅動緩衝區(結果)1303各自能夠是寫緩衝區114或緩衝區112。在一些範例中,驅動緩衝區(新資料)1302和驅動緩衝區(結果)1303為同一個緩衝區(例如,同一個寫緩衝區114或同一個緩衝區112)以節省緩衝區資源。在方法1300a中,儲存裝置100a的控制器110對從主機101中所接收到的新資料和在係數表1305中所儲存的資料(一組係數)進行CF 1310。在進行CF 1310之前,新資料被寫到儲存裝置100a之由該加註的寫命令所指定之位址的NVM(例如,記憶體陣列120)。在其他範例中,在對該資料進行CF 1310的同時(與其並行或同時)或者在對該資料進行CF 1310之後,來自主機101之新資料被寫到NVM(新資料)1304。在一些範例中,該新資料係要被儲存至其之邏輯位址和該係數資料的邏輯位址是不同的。
在方法1300a中,主機101經由匯流排105並且透過介面140將加註的寫命令提交到儲存裝置100a的控制器110。加註的寫命令包含識別要對在主機緩衝區(新資料)1301中所儲存的新資料和在係數表1305中所儲存的係數資料進行之CF 1310的類型之註解或指示。加註的寫命令使用
Operand1(匯流排105上對應於主機緩衝區(新資料)1301的位址)和
OpNLB1來識別新資料以及使用
Operand2和
OpNLB2來識別係數表1305的位址(例如,邏輯位址)。加註的寫命令能夠進一步載明該新資料係要被寫到對應於
Operand1的邏輯位址。
主機101將主機緩衝區(新資料)1301提呈給控制器110待被寫入。作為回應,在1311,控制器110進行資料轉移以經由匯流排105透過介面140而從主機緩衝區(新資料)1301取得新資料,並且將新資料儲存進驅動緩衝區(新資料)1302之內。在1312,儲存裝置100a的控制器110進行表提取以擷取係數表1305中的該組係數。換言之,控制器110從記憶體陣列120中讀出對應於該加註的寫命令中之指定邏輯位址(
Operand2和
OpNLB2)的係數資料。
在1313,儲存裝置100a的控制器110將來自驅動緩衝區(新資料)1302的新資料寫到NVM(新資料)1304。控制器110(例如,FTL)更新尋址映射表以使NVM(新資料)1304的實際位址與該新資料(
Operand1)的邏輯位址相對應。控制器110標記過時的實際位址用於垃圾回收。
在1313之後,儲存裝置100a的控制器110對驅動緩衝區(新資料)1302中的新資料和來自係數表1305之所儲存的該組係數進行CF 1310。到CF 1310的輸入為驅動緩衝區(新資料)1302中的新資料和來自該係數表1305之所儲存的該組係數。CF 1310的輸出為CF 1310的計算結果。在1314,儲存裝置100a的控制器110將CF 1310的計算結果儲存在驅動緩衝區(結果)1303中。
圖13B係依據一些實作,例舉在寫操作中進行CF之範例方法1300b的流程圖。參照圖1、圖13A、及圖13B,方法1300b對應於方法1300a。方法1300b能夠由儲存裝置100a的控制器110來予以進行。
在1321,控制器110接收來自在操作上耦接至儲存裝置100a之主機101之加註的寫命令。加註的寫命令識別即將要進行的CF 1310、儲存係數的邏輯位址、以及新資料係要被儲存至其的邏輯位址。在1322,回應於接收到加註的寫命令,控制器110將來自主機101(例如,來自主機緩衝區(新資料)1301)之新資料透過匯流排105以及經由介面140轉移到儲存裝置100a的驅動緩衝區(例如,驅動緩衝區(新資料)1302)。在1323,控制器110從係數表1305中讀出儲存的係數資料。如所述者,儲存的係數資料和新資料具有不同的邏輯位址。在1324,儲存裝置100a的控制器110將來自驅動緩衝區(新資料)1302的新資料寫到NVM(新資料)1304。
在1325,控制器110對新資料和儲存的係數資料進行CF 1310以決定計算結果。在1322從主機101轉移新資料及在1323讀取儲存資料能夠基於一個或更多個轉移單位尺寸而被增量地進行。因而,能夠對在驅動緩衝區(新資料)1302中已經被接收到之新資料的部分和已經從係數表1305中讀出之對應係數資料的部分增量地進行CF 1310,且同時新資料的剩餘部分仍正被轉移到驅動緩衝區(新資料)1302而且同時係數資料的剩餘部分仍正被讀取。因此,當新資料正被接收、當儲存資料正被讀取、以及當計算結果正被儲存至驅動緩衝區(結果)1303時,CF 1310能夠被同時地、即時地進行。在1326,儲存裝置100a的控制器110將CF 1310的計算結果儲存在結果驅動緩衝區(例如,驅動緩衝區(結果)1303)中。
圖14A係依據一些實作,例舉在寫操作中進行CF之範例方法1400a的方塊圖。參照圖1及圖14A,方法1400a能夠由主機101及儲存裝置100a來予以進行。緩衝區103、107、或109中的一個包含主機緩衝區(新資料)1401。NVM(結果)1404指的是儲存裝置100a之記憶體陣列120中的記憶體位置。驅動緩衝區(新資料)1402和驅動緩衝區(結果)1403各自能夠是寫緩衝區114或緩衝區112。在一些範例中,驅動緩衝區(新資料)1402和驅動緩衝區(結果)1403為同一個緩衝區(例如,同一個寫緩衝區114或同一個緩衝區112)以節省緩衝區資源。在一些範例中,驅動緩衝區(儲存資料)1405能夠是儲存裝置100a的緩衝區112、寫緩衝區114、或讀緩衝區116。在方法1400a中,儲存裝置100a的控制器110對從主機101中所接收到的新資料和在驅動緩衝區(儲存資料)1405中所儲存的儲存資料進行CF 1410。對應於新資料的邏輯位址和對應於儲存資料的邏輯位址係不同的。CF 1410的計算結果被儲存在儲存裝置100a之由該加註的寫命令所指定之位址的NVM(例如,記憶體陣列120)中。
在方法1400a中,主機101經由匯流排105並且透過介面140將加註的寫命令提交到儲存裝置100a的控制器110。加註的寫命令包含識別要對在主機緩衝區(新資料)1401中所儲存的新資料和在驅動緩衝區(儲存資料)1405中所儲存的儲存資料進行之CF 1410的類型之註解或指示。加註的寫命令使用匯流排105上對應於主機緩衝區(新資料)1401的位址來識別新資料。加註的寫命令也能夠識別(驅動緩衝區(儲存資料)1405中之)儲存資料的邏輯位址或緩衝區位址。加註的寫命令能夠進一步載明CF 1410的計算結果係要被寫到對應於新資料的邏輯位址。
主機101將主機緩衝區(新資料)1401提呈給控制器110待被寫入。作為回應,在1411,控制器110進行資料轉移以經由匯流排105透過介面140而從主機緩衝區(新資料)1401取得新資料,並且將新資料儲存進驅動緩衝區(新資料)1402之內。在1412,儲存裝置100a的控制器110進行緩衝區提取以擷取來自驅動緩衝區(儲存資料)1405中的儲存資料。
儲存裝置100a的控制器110對驅動緩衝區(新資料)1402中的新資料和提取自驅動緩衝區(儲存資料)1405之儲存資料進行CF 1410。到CF 1410的輸入為驅動緩衝區(新資料)1402中的新資料和提取自驅動緩衝區(儲存資料)1405之儲存資料。CF 1410的輸出為CF 1410的計算結果。在1413,儲存裝置100a的控制器110將CF 1410的計算結果儲存在驅動緩衝區(結果)1403中。
在1414,儲存裝置100a的控制器110將來自驅動緩衝區(結果)1403的計算結果寫入NVM(結果)1404內。在其中該加註的寫命令載明該計算結果係要被寫到新資料之邏輯位址的範例中,在1414,控制器110(例如,FTL)更新尋址映射表以使NVM(結果)1404的實際位址與該新資料的邏輯位址相對應。控制器110標記任何過時的實際位址用於垃圾回收。
圖14B係依據一些實作,例舉在寫操作中進行CF之範例方法1400b的流程圖。參照圖1、圖14A、及圖14B,方法1400b對應於方法1400a。方法1400b能夠由儲存裝置100a的控制器110來予以進行。
在1421,控制器110接收來自在操作上耦接至儲存裝置100a之主機101之加註的寫命令。加註的寫命令識別即將要進行的CF 1410、儲存資料的位址、以及CF 1410之計算結果係要被儲存至其的邏輯位址。在1422,回應於接收到加註的寫命令,控制器110將來自主機101(例如,來自主機緩衝區(新資料)1401)之新資料透過匯流排105以及經由介面140轉移到儲存裝置100a的驅動緩衝區(例如,驅動緩衝區(新資料)1402)。在1423,控制器110從驅動緩衝區(儲存資料)1405中提取出儲存資料。
在1424,控制器110對新資料和儲存資料進行CF 1410以決定計算結果。在1422從主機101轉移新資料及在1423提取儲存資料能夠基於一個或更多個轉移單位尺寸而被增量地進行。因而,能夠對在驅動緩衝區(新資料)1402中已經被接收到之新資料的部分和已經從驅動緩衝區(儲存資料)1405中提取出之對應儲存資料的部分增量地進行CF 1410,且同時新資料的剩餘部分仍正被轉移到驅動緩衝區(新資料)1402而且同時儲存資料的剩餘部分仍正被提取。因此,當新資料正被接收、當儲存資料正被提取、以及當計算結果正被儲存至驅動緩衝區(結果)1403時,CF 1410能夠被同時地、即時地進行。在1425,儲存裝置100a的控制器110將CF 1410的計算結果儲存在結果驅動緩衝區(例如,驅動緩衝區(結果)1403)中。在1426,儲存裝置100a的控制器110將來自結果驅動緩衝區的計算結果寫到NVM(結果)1404。
圖15A係依據一些實作,例舉在寫操作中進行CF之範例方法1500a的方塊圖。參照圖1及圖15A,方法1500a能夠由主機101及儲存裝置100a來予以進行。緩衝區103、107、或109中的一個包含主機緩衝區(新資料)1501。NVM(結果)1504指的是儲存裝置100a之記憶體陣列120中的記憶體位置。驅動緩衝區(新資料)1502和驅動緩衝區(結果)1503各自能夠是寫緩衝區114或緩衝區112。在一些範例中,驅動緩衝區(新資料)1502和驅動緩衝區(結果)1503為同一個緩衝區(例如,同一個寫緩衝區114或同一個緩衝區112)以節省緩衝區資源。在一些範例中,驅動緩衝區(儲存資料)1505能夠是儲存裝置100a的緩衝區112、寫緩衝區114、或讀緩衝區116。在方法1500a中,儲存裝置100a的控制器110對從主機101中所接收到的新資料和在驅動緩衝區(儲存資料)1505中所儲存的儲存資料進行CF 1510。對應於新資料的邏輯位址和對應於儲存資料的邏輯位址係不同的。在進行CF 1510之前,新資料被儲存在儲存裝置100a的NVM(例如,記憶體陣列120)中。在其他範例中,在對該資料進行CF 1510的同時(與其並行或同時)或者在對該資料進行CF 1510之後,來自主機101之新資料被寫到NVM(新資料)1504。
在方法1500a中,主機101經由匯流排105並且透過介面140將加註的寫命令提交到儲存裝置100a的控制器110。加註的寫命令包含識別要對在主機緩衝區(新資料)1501中所儲存的新資料和在驅動緩衝區(儲存資料)1505中所儲存的儲存資料進行之CF 1510的類型之註解或指示。加註的寫命令使用匯流排105上對應於主機緩衝區(新資料)1501的位址來識別新資料。加註的寫命令也能夠識別(驅動緩衝區(儲存資料)1505中之)儲存資料的邏輯位址或緩衝區位址。加註的寫命令能夠進一步載明CF 1510的計算結果係要被寫到對應於新資料的邏輯位址。
主機101將主機緩衝區(新資料)1501提呈給控制器110待被寫入。作為回應,在1511,控制器110進行資料轉移以經由匯流排105透過介面140而從主機緩衝區(新資料)1501取得新資料,並且將新資料儲存進驅動緩衝區(新資料)1502之內。在1512,儲存裝置100a的控制器110進行緩衝區提取以提取來自驅動緩衝區(儲存資料)1505中的儲存資料。
在1513,儲存裝置100a的控制器110將來自驅動緩衝區(新資料)1503的新資料寫到NVM(新資料)1504。控制器110(例如,FTL)更新尋址映射表以使NVM(新資料)1504的實際位址與該新資料的邏輯位址相對應。控制器110標記過時的實際位址用於垃圾回收。
在1513之後,儲存裝置100a的控制器110對驅動緩衝區(新資料)1502中的新資料和提取自驅動緩衝區(儲存資料)1505之儲存資料進行CF 1510。到CF 1510的輸入為驅動緩衝區(新資料)1502中的新資料和提取自驅動緩衝區(儲存資料)1505的儲存資料。CF 1510的輸出為CF 1510的計算結果。在1514,儲存裝置100a的控制器110將CF 1510的計算結果儲存在驅動緩衝區(結果)1503中。
圖15B係依據一些實作,例舉在寫操作中進行CF之範例方法1500b的流程圖。參照圖1、圖15A、及圖15B,方法1500b對應於方法1500a。方法1500b能夠由儲存裝置100a的控制器110來予以進行。
在1521,控制器110接收來自在操作上耦接至儲存裝置100a之主機101之加註的寫命令。加註的寫命令識別即將要進行的CF 1510、儲存資料的位址、以及CF 1510之計算結果係要被儲存至其的邏輯位址。在1522,回應於接收到加註的寫命令,控制器110將來自主機101(例如,來自主機緩衝區(新資料)1501)之新資料透過匯流排105以及經由介面140轉移到儲存裝置100a的驅動緩衝區(例如,驅動緩衝區(新資料)1502)。在1523,控制器110從驅動緩衝區(儲存資料)1505中提取出儲存資料。在1524,儲存裝置100a的控制器110將來自結果驅動緩衝區的新資料寫到NVM(新資料)1504。
在1525,控制器110對新資料和儲存的係數資料進行CF 1510以決定計算結果。在1522從主機101轉移新資料及在1523提取儲存資料能夠基於一個或更多個轉移單位尺寸而被增量地進行。因而,能夠對在驅動緩衝區(新資料)1502中已經被接收到之新資料的部分和已經從驅動緩衝區(儲存資料)1505中提取出之對應儲存資料的部分增量地進行CF 1510,且同時新資料的剩餘部分仍正被轉移到驅動緩衝區(新資料)1502而且同時儲存資料的剩餘部分仍正被提取。因此,當新資料正被接收、當儲存資料正被提取、以及當計算結果正被儲存至驅動緩衝區(結果)1503時,CF 1510能夠被同時地、即時地進行。在1525,儲存裝置100a的控制器110將CF 1510的計算結果儲存在結果驅動緩衝區(例如,驅動緩衝區(結果)1503)中。
圖16A係依據一些實作,例舉在寫操作中進行CF之範例方法1600a的方塊圖。參照圖1及圖16A,方法1600a能夠由主機101及儲存裝置100a來予以進行。緩衝區103、107、或109中的一個包含主機緩衝區(新資料)1601。係數表1605指的是儲存裝置100a之記憶體陣列120中或儲存裝置100a之另一適合單元中的記憶體位置。驅動緩衝區(新資料)1602和驅動緩衝區(結果)1603各自能夠是寫緩衝區114或緩衝區112。在一些範例中,驅動緩衝區(新資料)1602和驅動緩衝區(結果)1603為同一個緩衝區(例如,同一個寫緩衝區114或同一個緩衝區112)以節省緩衝區資源。在方法1600a中,儲存裝置100a的控制器110對從主機101中所接收到的新資料和在係數表1605中所儲存的資料(例如,一組係數)進行CF 1610。新資料和CF 1610的計算結果皆未被儲存在儲存裝置100a的NVM(例如,記憶體陣列120)中。
在方法1600a中,主機101經由匯流排105並且透過介面140將加註的寫命令提交到儲存裝置100a的控制器110。加註的寫命令包含識別要對在主機緩衝區(新資料)1601中所儲存的新資料和在係數表1605中所儲存的資料進行之CF 1610的類型之註解或指示。加註的寫命令進一步包含係數表1605的位址(例如,邏輯位址或另一適合的位址)。
主機101將主機緩衝區(新資料)1601提呈給控制器110待被寫入。作為回應,在1611,控制器110進行資料轉移以經由匯流排105透過介面140而從主機緩衝區(新資料)1601取得新資料,並且將新資料儲存進驅動緩衝區(新資料)1602之內。在1612,儲存裝置100a的控制器110進行表提取以擷取係數表1605中的該組係數。換言之,控制器110從記憶體陣列120中提取出對應於該加註的寫命令中之該位址的係數資料。
儲存裝置100a的控制器110對驅動緩衝區(新資料)1602中的新資料和來自係數表1605之儲存的該組係數進行CF 1610。到CF 1610的輸入為驅動緩衝區(新資料)1602中的新資料和提取自係數表1605中的該組係數。CF 1610的輸出為CF 1610的計算結果。在1613,儲存裝置100a的控制器110將CF 1610的計算結果儲存在驅動緩衝區(結果)1603中。在其中驅動緩衝區(結果)1603為緩衝區112的範例中,主機101或該等儲存裝置100中的另一個能夠從驅動緩衝區(結果)1603中擷取出計算結果。
圖16B係依據一些實作,例舉在寫操作中進行CF之範例方法1600b的流程圖。參照圖1、圖16A、及圖16B,方法1600b對應於方法1600a。方法1600b能夠由儲存裝置100a的控制器110來予以進行。
在1621,控制器110接收來自在操作上耦接至儲存裝置100a之主機101之加註的寫命令。加註的寫命令識別即將要進行的CF 1610。在1622,回應於接收到加註的寫命令,控制器110將來自主機101(例如,來自主機緩衝區(新資料)1601)之新資料透過匯流排105以及經由介面140轉移到儲存裝置100a的驅動緩衝區(例如,驅動緩衝區(新資料)1602)。在1623,控制器110從係數表1605中讀出儲存的係數資料。如所述者,儲存的係數資料和新資料具有不同的邏輯位址。
在1624,控制器110對新資料和舊資料進行CF 1610以決定計算結果。在1622從主機101轉移新資料及在1623提取係數資料能夠基於一個或更多個轉移單位尺寸而被增量地進行。因而,能夠對在驅動緩衝區(新資料)1602中已經被接收到之新資料的部分和已經從係數表1605中讀出之對應係數資料的部分增量地進行CF 1610,且同時新資料的剩餘部分仍正被轉移到驅動緩衝區(新資料)1602而且同時係數資料的剩餘部分仍正被讀取。因此,當新資料正被接收、當舊資料正被讀取、以及當計算結果正被儲存至驅動緩衝區(結果)1603時,CF 1610能夠被同時地、即時地進行。在1625,儲存裝置100a的控制器110將CF 1610的計算結果儲存在結果驅動緩衝區(例如,驅動緩衝區(結果)1603)中。
圖17A係依據一些實作,例舉在寫操作中進行CF之範例方法1700a的方塊圖。參照圖1及圖17A,方法1700a能夠由主機101及儲存裝置100a來予以進行。緩衝區103、107、或109中的一個包含主機緩衝區(新資料)1701。驅動緩衝區(新資料)1702和驅動緩衝區(結果)1703各自能夠是寫緩衝區114或緩衝區112。在一些範例中,驅動緩衝區(新資料)1702和驅動緩衝區(結果)1703為同一個緩衝區(例如,同一個寫緩衝區114或同一個緩衝區112)以節省緩衝區資源。在一些範例中,驅動緩衝區(儲存資料)1705能夠是儲存裝置100a的緩衝區112、寫緩衝區114、或讀緩衝區116。在方法1700a中,儲存裝置100a的控制器110對從主機101中所接收到的新資料和在驅動緩衝區(儲存資料)1705中所儲存的儲存資料進行CF 1710。對應於新資料的邏輯位址和對應於儲存資料的邏輯位址係不同的。CF 1710的計算結果和新資料皆未被儲存在儲存裝置100a的NVM(例如,記憶體陣列120)中。
在方法1700a中,主機101經由匯流排105並且透過介面140將加註的寫命令提交到儲存裝置100a的控制器110。加註的寫命令包含識別要對在主機緩衝區(新資料)1701中所儲存的新資料和在驅動緩衝區(儲存資料)1705中所儲存的儲存資料進行之CF 1710的類型之註解或指示。加註的寫命令使用匯流排105上對應於主機緩衝區(新資料)1701的位址來識別新資料。加註的寫命令也能夠識別(驅動緩衝區(儲存資料)1705中之)儲存資料的邏輯位址或緩衝區位址。
主機101將主機緩衝區(新資料)1701提呈給控制器110待被寫入。作為回應,在1711,控制器110進行資料轉移以經由匯流排105透過介面140而從主機緩衝區(新資料)1701取得新資料,並且將新資料儲存進驅動緩衝區(新資料)1702之內。在1712,儲存裝置100a的控制器110進行緩衝區提取以提取來自驅動緩衝區(儲存資料)1705中的儲存資料。
儲存裝置100a的控制器110對驅動緩衝區(新資料)1702中的新資料和提取自驅動緩衝區(儲存資料)1705之儲存資料進行CF 1710。到CF 1710的輸入為驅動緩衝區(新資料)1702中的新資料和提取自驅動緩衝區(儲存資料)1705的儲存資料。CF 1710的輸出為CF 1710的計算結果。在1713,儲存裝置100a的控制器110將CF 1710的計算結果儲存在驅動緩衝區(結果)1703中。
圖17B係依據一些實作,例舉在寫操作中進行CF之範例方法1700b的流程圖。參照圖1、圖17A、及圖17B,方法1700b對應於方法1700a。方法1700b能夠由儲存裝置100a的控制器110來予以進行。
在1721,控制器110接收來自在操作上耦接至儲存裝置100a之主機101之加註的寫命令。加註的寫命令識別即將要進行的CF 1710、儲存資料的位址。在1722,回應於接收到加註的寫命令,控制器110將來自主機101(例如,來自主機緩衝區(新資料)1701)之新資料透過匯流排105以及經由介面140轉移到儲存裝置100a的驅動緩衝區(例如,驅動緩衝區(新資料)1702)。在1723,控制器110從驅動緩衝區(儲存資料)1705中提取出儲存資料。
在1724,控制器110對新資料和儲存資料進行CF 1710以決定計算結果。在1722從主機101轉移新資料及在1723提取儲存資料能夠基於一個或更多個轉移單位尺寸而被增量地進行。因而,能夠對在驅動緩衝區(新資料)1702中已經被接收到之新資料的部分和已經從驅動緩衝區(儲存資料)1705中提取出之對應儲存資料的部分增量地進行CF 1710,且同時新資料的剩餘部分仍正被轉移到驅動緩衝區(新資料)1702而且同時儲存資料的剩餘部分仍正被提取。因此,當新資料正被接收、當儲存資料正被提取、以及當計算結果正被儲存至驅動緩衝區(結果)1703時,CF 1710能夠被同時地、即時地進行。在1725,儲存裝置100a的控制器110將CF 1710的計算結果儲存在結果驅動緩衝區(例如,驅動緩衝區(結果)1703)中。
圖18A係依據一些實作,例舉在讀操作中進行CF之範例方法1800a的方塊圖。參照圖1及圖18A,方法1800a能夠由主機101及儲存裝置100a來予以進行。緩衝區103、107、或109中的一個包含主機緩衝區(結果)1801。NVM(保存資料)1804指的是儲存裝置100a之記憶體陣列120中的記憶體位置。在一些範例中,驅動緩衝區(結果)1803為用來暫時儲存CF 1810之計算結果的讀緩衝區116,而驅動緩衝區(結果)1802為用來將計算結果轉移至主機緩衝區(結果)1801的緩衝區112。在其他範例中,驅動緩衝區(結果)1803未被使用,且計算結果係直接由為緩衝區112的驅動緩衝區(結果)1802來予以儲存。在方法1800a中,儲存裝置100a的控制器110對儲存在記憶體陣列120中的保存資料進行CF 1810,而且CF 1810的計算結果被轉移至主機101。依據先前所討論之CF的樣本式,方法1800a相當於具有CF的讀,其中,
Operand1為主機緩衝區1801的位置,
Operand2為寫入NVM(保存資料)1804的邏輯位址以及
OTYPE指示
Operand2中的邏輯位址用作為輸入參數及
Operand1中的邏輯位址用作為輸出參數。換言之,計算函式CF 1810對位於
Operand2的保存資料進行運算而且將計算結果寫到
Operand1。
在方法1800a中,主機101經由匯流排105並且透過介面140將加註的讀命令提交到儲存裝置100a的控制器110。加註的讀命令包含識別待進行之CF 1810的類型之註解或指示和識別該儲存資料的邏輯位址。作為回應,在1811,儲存裝置100a的控制器110從NVM(保存資料)1804中讀出對應於該邏輯位址的保存資料。換言之,儲存裝置100a的控制器110從記憶體陣列120(NAND快閃記憶體裝置130a至130n的一或多者)中讀出該加註的讀命令中所請求之保存資料。
儲存裝置100a的控制器110對保存資料進行CF 1810。到CF 1810的輸入為從NVM(保存資料)1804中讀出的保存資料,以及CF 1810的輸出為CF 1810的計算結果。在1812,儲存裝置100a的控制器110將CF 1810的計算結果儲存在驅動緩衝區(結果)1803中。在1813,儲存裝置100a的控制器110可以將計算結果送到驅動緩衝區(結果)1802。在1814,計算結果從驅動緩衝區(結果)1802被送到主機緩衝區(結果)1801。例如,控制器110能夠將來自驅動緩衝區(結果)1802的結果透過介面140而轉移入主機緩衝區(結果)1801之內。在一些範例中,被提供給主機101的計算結果相當於該加註的讀命令中所包含的邏輯位址。換言之,計算結果被提供回到主機101作為讀資料。
圖18B係依據一些實作,例舉在讀操作中進行CF之範例方法1800b的流程圖。參照圖1、圖18A、及圖18B,方法1800b對應於方法1800a。方法1800b能夠由儲存裝置100a的控制器110來予以進行。
在1821,控制器110接收來自在操作上耦接至儲存裝置100a之主機101之加註的讀命令。加註的讀命令識別待進行的CF 1810而且包含保存資料的邏輯位址。在1822,回應於接收到加註的讀命令,控制器110從NVM(保存資料)1804中讀出對應於該邏輯位址的保存資料。在1823,控制器110對該保存資料進行CF 1810以決定計算結果。在1824,控制器110將計算結果儲存在驅動緩衝區中。例如,控制器110能夠將計算結果儲存在驅動緩衝區(結果)1803中,而後將計算結果轉移到驅動緩衝區(結果)1802。或者,控制器110能夠直接將計算結果儲存在驅動緩衝區(結果)1802中。在1825,控制器110將計算結果轉移到主機101(例如,到主機緩衝區(結果)1801)。
在1822從NVM(保存資料)1804中讀出保存資料能夠基於轉移單位尺寸而被增量地進行。因而,能夠對已經從NVM(保存資料)1804中讀出之保存資料的部分增量地進行CF 1810,且同時保存資料的剩餘部分仍正被讀取。因此,當保存資料正被讀取以及當計算結果正被儲存至驅動緩衝區(結果)1803或1802時,CF 1810能夠被同時地、即時地進行。
圖19A係依據一些實作,例舉在讀操作中進行CF之範例方法1900a的方塊圖。參照圖1及圖19A,方法1900a能夠由主機101及儲存裝置100a來予以進行。緩衝區103、107、或109中的一個包含主機緩衝區(保存資料)1901。NVM(保存資料)1904指的是儲存裝置100a之記憶體陣列120中的記憶體位置。驅動緩衝區(結果)1903和驅動緩衝區(保存資料)1902各自是讀緩衝區116或緩衝區112。在一些實作中,驅動緩衝區(結果)1903能夠和驅動緩衝區(保存資料)1902相同以守恆緩衝區資源。在方法1900a中,在保存資料被轉移到主機101之後,儲存裝置100a的控制器110對儲存在記憶體陣列120中的保存資料進行CF 1910。依據先前所討論之CF的樣本式,方法1900a相當於具有CF的讀,其中,
Operand1為主機緩衝區1901的位置,
Operand2為NVM(保存資料)1904的邏輯位址以及
OTYPE指示
Operand2中的邏輯位址用作為輸入參數、
Operand1用作為輸出參數及計算結果被儲存在暫時的驅動緩衝區1903中。換言之,計算函式CF 1910對
Operand2的保存資料進行運算、將保存資料寫到
Operand1而且將計算結果寫到暫時的緩衝區。
在方法1900a中,主機101經由匯流排105並且透過介面140將加註的讀命令提交到儲存裝置100a的控制器110。加註的讀命令包含識別待進行之CF 1910的類型之註解或指示和識別該儲存資料的邏輯位址。作為回應,在1911,儲存裝置100a的控制器110將來自NVM(保存資料)1904中對應於該邏輯位址的保存資料讀入驅動緩衝區(保存資料)1902內。換言之,儲存裝置100a的控制器110從記憶體陣列120(NAND快閃記憶體裝置130a至130n中的一或多者)中讀出該加註的讀命令中所請求之保存資料。
在1912,保存資料從驅動緩衝區(保存資料)1902被送到主機緩衝區(保存資料)1901。例如,控制器110能夠透過介面140將來自驅動緩衝區(保存資料)1902的保存資料轉移入主機緩衝區(保存資料)1901內。被提供給主機101的保存資料相當於該加註的讀命令中所包含的邏輯位址。
在1912之後,控制器110對儲存在驅動緩衝區(保存資料)1902中的保存資料進行CF 1910。到CF 1910的輸入為保存資料,以及CF 1910的輸出為CF 1910的計算結果。在1913,儲存裝置100a的控制器110將CF 1910的計算結果儲存在驅動緩衝區(結果)1903中。在其他範例中,在進行CF 1910的同時(與其並行或同時)或者在進行CF 1910之後,保存資料從驅動緩衝區(保存資料)1902被送到主機緩衝區(保存資料)1901。
圖19B係依據一些實作,例舉在讀操作中進行CF之範例方法1900b的流程圖。參照圖1、圖19A、及圖19B,方法1900b對應於方法1900a。方法1900b能夠由儲存裝置100a的控制器110來予以進行。
在1921,控制器110接收來自在操作上耦接至儲存裝置100a之主機101之加註的讀命令。加註的讀命令識別待進行的CF 1910而且包含保存資料的邏輯位址。在1922,回應於接收到加註的讀命令,控制器110將來自NVM(保存資料)1904中對應於該邏輯位址的保存資料讀入保存資料驅動緩衝區(驅動緩衝區(保存資料)1902)內。在1923,控制器110將到主機101的保存資料從保存資料驅動緩衝區轉移到主機緩衝區(保存資料)1901。在1923之後,在1924,控制器110對該保存資料進行CF 1910以決定計算結果。在其他範例中,在進行1923之前或者在進行1923的同時,控制器110對該保存資料進行CF 1910以決定計算結果。在1925,控制器110將計算結果儲存在結果驅動緩衝區(例如,驅動緩衝區(結果)1903)中,用於稍後的擷取。
在1922從NVM(保存資料)1904中讀出保存資料以及在1923將保存資料轉移到主機101能夠基於一個或更多個轉移單位尺寸而被增量地進行。因而,能夠對已經從NVM(保存資料)1904中讀出之保存資料的部分增量地進行CF 1910,且同時保存資料的剩餘部分仍正被讀取。因此,當保存資料正被讀取並且被轉移到主機101,以及當計算結果正被儲存至驅動緩衝區(結果)1903時,CF 1910能夠被同時地、即時地進行。
圖20A係依據一些實作,例舉在讀操作中進行CF之範例方法2000a的方塊圖。參照圖1及圖20A,方法2000a能夠由主機101及儲存裝置100a來予以進行。緩衝區103、107、或109中的一個包含主機緩衝區(結果)2001。NVM(保存資料)2004指的是儲存裝置100a之記憶體陣列120中的第一記憶體位置。NVM(儲存資料)2005指的是儲存裝置100a之記憶體陣列120中的第二記憶體位置。在一些範例中,驅動緩衝區(結果)2003為用來暫時儲存CF 2010之計算結果的讀緩衝區116,而驅動緩衝區(結果)2002為用來將計算結果轉移至主機緩衝區(結果)2001的緩衝區112。在其他範例中,驅動緩衝區(結果)2003未被使用,且計算結果係直接由為緩衝區112的驅動緩衝區(結果)2002來予以儲存。在方法2000a中,儲存裝置100a的控制器110對儲存在記憶體陣列120中的保存資料進行CF 2010,而且CF 2010的計算結果被轉移至主機101。保存在NVM(保存資料)2004中的保存資料和保存在NVM(儲存資料)2005中的儲存資料具有不同的邏輯位址。
在方法2000a中,主機101經由匯流排105並且透過介面140將加註的讀命令提交到儲存裝置100a的控制器110。加註的讀命令包含識別要對保存資料和儲存資料進行之CF 2010的類型之註解或指示。加註的讀命令使用第一邏輯位址和第一數量的邏輯區塊來識別保存資料,以及使用第二邏輯位址和第二數量的邏輯區塊來識別儲存資料。加註的讀命令能夠進一步包含載明CF 2010的計算結果係要被寫到之主機緩衝區(結果)2001的位址(例如,PCIe位址)之旗標或指示。
作為回應,在2011,儲存裝置100a的控制器110從NVM(保存資料)2004中讀出對應於第一邏輯位址的保存資料。換言之,儲存裝置100a的控制器110從記憶體陣列120(NAND快閃記憶體裝置130a至130n中的一或多者)的第一實際位置讀出該加註的讀命令中所請求之保存資料。在2012,儲存裝置100a的控制器110從NVM(儲存資料)2005中讀出對應於第二邏輯位址的儲存資料。換言之,儲存裝置100a的控制器110從記憶體陣列120(NAND快閃記憶體裝置130a至130n中的一或多者)的第二實際位置讀出該加註的讀命令中所請求之儲存資料。
儲存裝置100a的控制器110對保存資料及儲存資料進行CF 2010。到CF 2010的輸入為從NVM(保存資料)2004中讀出的保存資料以及從NVM(儲存資料)2005中讀出的儲存資料。CF 2010的輸出為CF 2010的計算結果。在2013,儲存裝置100a的控制器110將CF 2010的計算結果儲存在驅動緩衝區(結果)2003中。在2014,儲存裝置100a的控制器110可以將計算結果送到驅動緩衝區(結果)2002。在2015,計算結果從驅動緩衝區(結果)2002被送到主機緩衝區(結果)2001。例如,控制器110能夠將來自驅動緩衝區(結果)2002的計算結果透過介面140而轉移入主機緩衝區(結果)2001之內。在一些範例中,被提供給主機101的計算結果相當於該加註的讀命令中所包含的第一邏輯位址。在一些範例中,被提供給主機101的計算結果相當於該加註的讀命令中所包含的第二邏輯位址或另一邏輯位址。
圖20B係依據一些實作,例舉在讀操作中進行CF之範例方法2000b的流程圖。參照圖1、圖20A、及圖20B,方法2000b對應於方法2000a。方法2000b能夠由儲存裝置100a的控制器110來予以進行。
在2021,控制器110接收來自在操作上耦接至儲存裝置100a之主機101之加註的讀命令。加註的讀命令識別待進行的CF 2010而且包含保存資料的第一邏輯位址、儲存資料的第二邏輯位址、以及載明CF 2010的計算結果係要被轉移到之主機緩衝區(結果)2001的位址(例如,PCIe位址)之旗標或指示。回應於接收到加註的讀命令,控制器110在2022從NVM(保存資料)2004中讀出對應於該第一邏輯位址的保存資料,以及在2023從NVM(儲存資料)2005中讀出對應於該第二邏輯位址的儲存資料。在2024,控制器110對該保存資料和該儲存資料進行CF 2010以決定計算結果。在2025,控制器110將計算結果儲存在驅動緩衝區中。例如,控制器110能夠將計算結果儲存在驅動緩衝區(結果)2003中,而後將計算結果轉移到驅動緩衝區(結果)2002。或者,控制器110能夠直接將計算結果儲存在驅動緩衝區(結果)2002中。在2026,控制器110將計算結果轉移到主機101(例如,到主機緩衝區(結果)2001)。
在2022及2023讀取保存資料和儲存資料能夠基於轉移單位尺寸而被增量地進行。因而,能夠對已經讀取之保存資料及對應之儲存資料的部分增量地進行CF 2010,且同時保存資料和儲存資料的剩餘部分仍正被讀取。因此,當保存資料和儲存資料正被讀取以及當計算結果正被儲存至驅動緩衝區(結果)2003或2002和轉移到主機101時,CF 2010能夠被同時地、即時地進行。
圖21A係依據一些實作,例舉在讀操作中進行CF之範例方法2100a的方塊圖。參照圖1及圖21A,方法2100a能夠由主機101及儲存裝置100a來予以進行。緩衝區103、107、或109中的一個包含主機緩衝區(保存資料)2101。NVM(保存資料)2104指的是儲存裝置100a之記憶體陣列120中的第一記憶體位置。NVM(儲存資料)2105指的是儲存裝置100a之記憶體陣列120中的第二記憶體位置。驅動緩衝區(結果)2103和驅動緩衝區(保存資料)2102各自是讀緩衝區116或緩衝區112。在一些實作中,驅動緩衝區(結果)2103能夠和驅動緩衝區(保存資料)2102相同以守恆緩衝區資源。在方法2100a中,在保存資料被提供至主機101之後,儲存裝置100a的控制器110對儲存在記憶體陣列120中不同記憶體位置中的保存資料和儲存資料進行CF 2110。保存在NVM(保存資料)2104中的保存資料和保存在NVM(儲存資料)2105中的儲存資料對應於不同的邏輯位址。
在方法2100a中,主機101經由匯流排105並且透過介面140將加註的讀命令提交到儲存裝置100a的控制器110。加註的讀命令包含識別待進行之CF 2110的類型之註解或指示。加註的讀命令使用第一邏輯位址和第一數量的邏輯區塊來識別保存資料,以及使用第二邏輯位址和第二數量的邏輯區塊來識別儲存資料。加註的讀命令能夠進一步包含載明CF 2110的計算結果係要被寫到之主機緩衝區(結果)2101的位址(例如,PCIe位址)之旗標或指示。
作為回應,在2111,儲存裝置100a的控制器110從NVM(保存資料)2104中讀出對應於第一邏輯位址的保存資料。換言之,儲存裝置100a的控制器110從記憶體陣列120(NAND快閃記憶體裝置130a至130n中的一或多者)中讀出該加註的讀命令中所請求之保存資料。
在2112,保存資料從驅動緩衝區(保存資料)2102被送到主機緩衝區(保存資料)2101。例如,控制器110能夠透過介面140將來自驅動緩衝區(保存資料)2102的保存資料轉移入主機緩衝區(保存資料)2101內。被提供給主機101的保存資料相當於該加註的讀命令中所包含的邏輯位址。
在2112之後,在2113,儲存裝置100a的控制器110從NVM(儲存資料)2105中讀出對應於第二邏輯位址的儲存資料。換言之,儲存裝置100a的控制器110從記憶體陣列120(NAND快閃記憶體裝置130a至130n中的一或多者)的第二實際位置讀出該加註的讀命令中所請求之儲存資料。在其他範例中,在進行CF 2110的同時(與其並行或同時)或者在進行CF 2110之後,保存資料從驅動緩衝區(保存資料)2102被送到主機緩衝區(保存資料)2101。
儲存裝置100a的控制器110對保存資料和儲存資料進行CF 2110。到CF 2110的輸入為從NVM(保存資料)2104中讀出的保存資料和從NVM(儲存資料)2105中讀出的儲存資料。CF 2110的輸出為CF 2110的計算結果。在2114,儲存裝置100a的控制器110將CF 2110的計算結果儲存在驅動緩衝區(結果)2103中。
圖21B係依據一些實作,例舉在讀操作中進行CF之範例方法2100b的流程圖。參照圖1、圖21A、及圖21B,方法2100b對應於方法2100a。方法2100b能夠由儲存裝置100a的控制器110來予以進行。。
在2121,控制器110接收來自在操作上耦接至儲存裝置100a之主機101之加註的讀命令。加註的讀命令識別待進行的CF 2110而且包含保存資料的第一邏輯位址、儲存資料的第二邏輯位址、以及載明CF 2010的計算結果係要被轉移到之主機緩衝區(結果)2101的位址(例如,PCIe位址)之旗標或指示。在2122,回應於接收到加註的讀命令,控制器110將來自NVM(保存資料)2104中之對應於該第一邏輯位址的保存資料讀入保存資料驅動緩衝區(驅動緩衝區(保存資料)2102)內。在2123,控制器110將到主機101的保存資料從保存資料驅動緩衝區轉移到主機緩衝區(保存資料)2101。在2124,控制器110從NVM(儲存資料)2105中讀出對應於該第二邏輯位址的儲存資料。在2125,控制器110對該保存資料和該儲存資料進行CF 2110以決定計算結果,在2123之後。在其他範例中,在轉移資料於2123之前或者在轉移資料於2123的同時(與其並行或同時),控制器110進行CF 2110。在2126,控制器110將計算結果儲存在結果驅動緩衝區(例如,驅動緩衝區(結果)2103)中,用於稍後的擷取。
在2122及2124讀取保存資料和儲存資料以及在2123將保存資料轉移到主機101能夠基於一個或更多個轉移單位尺寸而被增量地進行。因而,能夠對已經讀取之保存資料及對應之儲存資料的部分增量地進行CF 2110,且同時保存資料和儲存資料的剩餘部分仍正被讀取。因此,當保存資料和儲存資料正被讀取以及當保存資料轉移到主機緩衝區(保存資料)2101時,CF 2110能夠被同時地、即時地進行。
圖22A係依據一些實作,例舉在讀操作中進行CF之範例方法2200a的方塊圖。參照圖1及圖22A,方法2200a能夠由主機101及儲存裝置100a來予以進行。緩衝區103、107、或109中的一個包含主機緩衝區(結果)2001。NVM(保存資料)2204指的是儲存裝置100a之記憶體陣列120中的記憶體位置。係數表2205指的是儲存裝置100a之記憶體陣列120中或儲存裝置100a之另一適合記憶體單元中的記憶體位置。在一些範例中,驅動緩衝區(結果)2203為用來暫時儲存CF 2210之計算結果的讀緩衝區116,而驅動緩衝區(結果)2202為用來將計算結果轉移至主機緩衝區(結果)2201的緩衝區112。在其他範例中,驅動緩衝區(結果)2203未被使用,且計算結果係直接由為緩衝區112的驅動緩衝區(結果)2202來予以儲存。在方法2200a中,儲存裝置100a的控制器110對保存資料及儲存在係數表2205中的資料(例如,一組係數)進行CF 2210。CF 2210的計算結果被轉移至主機101,在由加註的讀命令所指定的位址處。保存資料和係數資料對應於不同的邏輯位址。在一些範例中,計算結果係要被保存至其之邏輯位址和保存資料的邏輯位址相同。
在方法2200a中,主機101經由匯流排105並且透過介面140將加註的讀命令提交到儲存裝置100a的控制器110。加註的讀命令包含識別待進行之CF 2210的類型之註解或指示。加註的讀命令使用第一邏輯位址和第一數量的邏輯區塊來識別保存資料。加註的讀命令使用第二邏輯位址和第二數量的邏輯區塊來識別係數表2205的位址(例如,邏輯位址)。加註的讀命令能夠進一步包含載明CF 2210的計算結果係要被寫到之主機緩衝區(結果)2201的位址(例如,PCIe位址)之旗標或指示。
作為回應,在2211,儲存裝置100a的控制器110從NVM(保存資料)2204中讀出對應於第一邏輯位址的保存資料。換言之,儲存裝置100a的控制器110從記憶體陣列120(NAND快閃記憶體裝置130a至130n中的一或多者)的第一實際位置讀出該加註的讀命令中所請求之保存資料。在2212,儲存裝置100a的控制器110進行表提取以擷取係數表2205中的該組係數。換言之,儲存裝置100a的控制器110從記憶體陣列120(NAND快閃記憶體裝置130a至130n中的一或多者)的第二實際位置讀出該加註的寫命令中所請求的係數資料。
儲存裝置100a的控制器110對保存資料和係數資料進行CF 2210。到CF 2210的輸入為從NVM(保存資料)2204中讀出的保存資料和從係數表2205中讀出的係數資料。CF 2210的輸出為CF 2210的計算結果。在2213,儲存裝置100a的控制器110將CF 2210的計算結果儲存在驅動緩衝區(結果)2203中。在2214,儲存裝置100a的控制器110可以將計算結果送到驅動緩衝區(結果)2202。在2215,計算結果從驅動緩衝區(結果)2202被送到主機緩衝區(結果)2201。例如,控制器110能夠透過介面140將來自驅動緩衝區(結果)2202的計算結果轉移入主機緩衝區(結果)2201之內。在一些範例中,被提供給主機101的計算結果對應於該加註的讀命令中所包含的第一邏輯位址或另一邏輯位址。
圖22B係依據一些實作,例舉在讀操作中進行CF之範例方法2200b的流程圖。參照圖1、圖22A、及圖22B,方法2200b對應於方法2200a。方法2200b能夠由儲存裝置100a的控制器110來予以進行。
在2220,控制器110接收來自在操作上耦接至儲存裝置100a之主機101之加註的讀命令。加註的讀命令識別待進行的CF 2210而且包含保存資料的第一邏輯位址、係數資料的第二邏輯位址、以及載明CF 2210的計算結果係要被轉移到之主機緩衝區(結果)2201的位址(例如,PCIe位址)之旗標或指示。回應於接收到加註的讀命令,控制器110在2222從NVM(保存資料)2204中讀出對應於該第一邏輯位址的保存資料,以及在2223從NVM(儲存資料)2205中讀出對應於該第二邏輯位址的係數資料。在2224,控制器110對該保存資料和該係數資料進行CF 2210以決定計算結果。在2225,控制器110將計算結果儲存在驅動緩衝區中。例如,控制器110能夠將計算結果儲存在驅動緩衝區(結果)2203中,而後將計算結果轉移到驅動緩衝區(結果)2202。或者,控制器110能夠直接將計算結果儲存在驅動緩衝區(結果)2202中。在2226,控制器110將計算結果轉移到主機101(例如,到主機緩衝區(結果)2201)。
在2222及2223讀取保存資料和係數資料能夠基於轉移單位尺寸而被增量地進行。因而,能夠對已經讀取之保存資料及對應之係數資料的部分增量地進行CF 2210,且同時保存資料和係數資料的剩餘部分仍正被讀取。因此,當保存資料和係數資料正被讀取以及當計算結果正被儲存至驅動緩衝區(結果)2203或2202和轉移到主機101時,CF 2210能夠被同時地、即時地進行。
圖23A係依據一些實作,例舉在讀操作中進行CF之範例方法2300a的方塊圖。參照圖1及圖23A,方法2300a能夠由主機101及儲存裝置100a來予以進行。緩衝區103、107、或109中的一個包含主機緩衝區(保存資料)2301。NVM(保存資料)2304指的是儲存裝置100a之記憶體陣列120中的記憶體位置。係數表2305指的是儲存裝置100a之記憶體陣列120中或儲存裝置100a之另一適合記憶體單元中的記憶體位置。驅動緩衝區(結果)2303和驅動緩衝區(保存資料)2302各自是讀緩衝區116或緩衝區112。在一些實作中,驅動緩衝區(結果)2303能夠和驅動緩衝區(保存資料)2302相同以守恆緩衝區資源。在方法2300a中,在保存資料被提供至主機101之後,儲存裝置100a的控制器110對保存資料和儲存在係數表2305中的資料(例如,一組係數)進行CF 2310。保存資料和係數資料對應於不同的邏輯位址。
在方法2300a中,主機101經由匯流排105並且透過介面140將加註的讀命令提交到儲存裝置100a的控制器110。加註的讀命令包含識別待進行之CF 2310的類型之註解或指示。加註的讀命令使用第一邏輯位址和第一數量的邏輯區塊來識別保存資料。加註的讀命令使用第二邏輯位址和第二數量的邏輯區塊來識別係數表2205的位址(例如,邏輯位址)。加註的讀命令能夠進一步包含載明保存資料係要被寫到之主機緩衝區(結果)2301的位址(例如,PCIe位址)之旗標或指示。
作為回應,在2311,儲存裝置100a的控制器110將來自NVM(保存資料)2304中對應於第一邏輯位址的保存資料讀入驅動緩衝區(保存資料)2302之內。換言之,儲存裝置100a的控制器110從記憶體陣列120(NAND快閃記憶體裝置130a至130n中的一或多者)讀出該加註的讀命令中所請求之保存資料。
在2312,保存資料從驅動緩衝區(保存資料)2302被送到主機緩衝區(保存資料)2301。例如,控制器110能夠透過介面140將來自驅動緩衝區(保存資料)2302的保存資料轉移入主機緩衝區(保存資料)2301之內。被提供給主機101的保存資料對應於該加註的讀命令中所包含的邏輯位址。
在2312之後,在2313,儲存裝置100a的控制器110進行表提取以擷取係數表2305中的該組係數。換言之,儲存裝置100a的控制器110從記憶體陣列120(NAND快閃記憶體裝置130a至130n中的一或多者)的第二實際位置讀出該加註的寫命令中所請求的係數資料。
儲存裝置100a的控制器110對保存資料和係數資料進行CF 2310。到CF 2310的輸入為從NVM(保存資料)2304中讀出的保存資料和從係數表2305中讀出的係數資料。CF 2310的輸出為CF 2310的計算結果。在2314,儲存裝置100a的控制器110將CF 2310的計算結果儲存在驅動緩衝區(結果)2303中。
圖23B係依據一些實作,例舉在讀操作中進行CF之範例方法2300b的流程圖。參照圖1、圖23A、及圖23B,方法2300b對應於方法2300a。方法2300b能夠由儲存裝置100a的控制器110來予以進行。
在2323,控制器110接收來自在操作上耦接至儲存裝置100a之主機101之加註的讀命令。加註的讀命令識別待進行的CF 2310而且包含保存資料的第一邏輯位址、係數資料的第二邏輯位址、以及載明保存資料係要被轉移到其之主機緩衝區(結果)2301的位址(例如,PCIe位址)之旗標或指示。在2322,回應於接收到加註的讀命令,控制器110將來自NVM(保存資料)2304中之對應於該第一邏輯位址的保存資料讀入保存資料驅動緩衝區(驅動緩衝區(保存資料)2302)內。在2323,控制器110將到主機101的保存資料從保存資料驅動緩衝區轉移到主機緩衝區(保存資料)2301。在2324,控制器110從係數表2305中讀出對應於該第二邏輯位址的係數資料。在2325,控制器110對該保存資料和該係數資料進行CF 2310以決定計算結果,在2312之後。在其他範例中,在進行CF 2310的同時(與其並行或同時)或者在進行CF 2310之前,控制器110進行CF 2310。在2326,控制器110將計算結果儲存在結果驅動緩衝區(例如,驅動緩衝區(結果)2303)中,用於稍後的擷取。
在2322及2324讀取保存資料和係數資料以及在2323將保存資料轉移到主機101能夠基於一個或更多個轉移單位尺寸而被增量地進行。因而,能夠對已經讀取之保存資料及對應之係數資料的部分增量地進行CF 2310,且同時保存資料和係數資料的剩餘部分仍正被讀取。因此,當保存資料和係數資料正被讀取以及當保存資料正被轉移到主機緩衝區(保存資料)2301時,CF 2310能夠被同時地、即時地進行。
圖24A係依據一些實作,例舉在讀操作中進行CF之範例方法2400a的方塊圖。參照圖1及圖24A,方法2400a能夠由主機101及儲存裝置100a來予以進行。緩衝區103、107、或109中的一個包含主機緩衝區(保存資料)2401。NVM(保存資料)2404指的是儲存裝置100a之記憶體陣列120中的記憶體位置。驅動緩衝區(保存資料)2405能夠是儲存裝置100a之緩衝區112、寫緩衝區114、或讀緩衝區116。在一些範例中,驅動緩衝區(結果)2403為用來暫時儲存CF 2410之計算結果的讀緩衝區116,而驅動緩衝區(結果)2402為用來將計算結果轉移至主機緩衝區(結果)2401的緩衝區112。在其他範例中,驅動緩衝區(結果)2403未被使用,且計算結果係直接由為緩衝區112的驅動緩衝區(結果)2402來予以儲存。在方法2400a中,儲存裝置100a的控制器110對記憶體陣列120中之記憶體位置中的保存資料和緩衝區中的儲存資料進行CF 2410。保存在NVM(保存資料)2404中的保存資料和保存在驅動緩衝區(儲存資料)2405中的儲存資料對應於不同的邏輯位址。
在方法2400a中,主機101經由匯流排105並且透過介面140將加註的讀命令提交到儲存裝置100a的控制器110。加註的讀命令包含識別待對保存資料和儲存資料進行之CF 2410的類型之註解或指示。加註的讀命令使用第一邏輯位址和第一數量的邏輯區塊來識別保存資料。加註的讀命令使用第二邏輯位址和第二數量的邏輯區塊來識別儲存資料。或者,加註的讀命令使用(驅動緩衝區(保存資料)2405之)儲存資料的緩衝區位址來識別儲存資料。加註的讀命令能夠進一步包含載明CF 2410的計算結果係要被寫到之主機緩衝區(結果)2401的位址(例如,PCIe位址)之旗標或指示。
作為回應,在2411,儲存裝置100a的控制器110從NVM(保存資料)2404中讀出對應於第一邏輯位址的保存資料。換言之,儲存裝置100a的控制器110從記憶體陣列120(NAND快閃記憶體裝置130a至130n中的一或多者)的第一實際位置讀出該加註的讀命令中所請求之保存資料。在2412,儲存裝置100a的控制器110進行緩衝區提取,以使用第二邏輯位址或緩衝區位址而從驅動緩衝區(保存資料)2405中提取出儲存資料。
儲存裝置100a的控制器110對保存資料和儲存資料進行CF 2410。到CF 2410的輸入為從NVM(保存資料)2404中讀出的保存資料和從驅動緩衝區(儲存資料)2405中讀出的儲存資料。CF 2410的輸出為CF 2410的計算結果。在2413,儲存裝置100a的控制器110將CF 2410的計算結果儲存在驅動緩衝區(結果)2403中。在2414,儲存裝置100a的控制器110可以將計算結果送到驅動緩衝區(結果)2402。在2415,計算結果從驅動緩衝區(結果)2402被送到主機緩衝區(結果)2401。例如,控制器110能夠透過介面140將來自驅動緩衝區(結果)2402的計算結果轉移入主機緩衝區(結果)2401之內。在一些範例中,被提供給主機101的計算結果對應於該加註的讀命令中所包含的第一邏輯位址。
圖24B係依據一些實作,例舉在讀操作中進行CF之範例方法2400b的流程圖。參照圖1、圖24A、及圖24B,方法2400b對應於方法2400a。方法2400b能夠由儲存裝置100a的控制器110來予以進行。
在2421,控制器110接收來自在操作上耦接至儲存裝置100a之主機101之加註的讀命令。加註的讀命令識別待進行的CF 2410而且包含保存資料的第一邏輯位址、儲存資料的第二邏輯位址或緩衝區位址、以及載明CF 2410的計算結果係要被轉移到其之主機緩衝區(結果)2401的位址(例如,PCIe位址)之旗標或指示。在2422,回應於接收到加註的讀命令,控制器110從NVM(保存資料)2404中讀出對應於該第一邏輯位址的保存資料。在2423,控制器110從驅動緩衝區(儲存資料)2405中提取出對應於該第二邏輯位址或緩衝區位址的儲存資料。
在2424,控制器110對該保存資料和該儲存資料進行CF 2410以決定計算結果。在2425,控制器110將計算結果儲存在驅動緩衝區中。例如,控制器110能夠將計算結果儲存在驅動緩衝區(結果)2403中,而後將計算結果轉移到驅動緩衝區(結果)2402。或者,控制器110能夠直接將計算結果儲存在驅動緩衝區(結果)2402中。在2426,控制器110將計算結果轉移到主機101(例如,到主機緩衝區(結果)2401)。
在2422及2423讀取保存資料和儲存資料能夠基於轉移單位尺寸而被增量地進行。因而,能夠對已經讀取之保存資料及對應之儲存資料的部分增量地進行CF 2410,且同時保存資料和儲存資料的剩餘部分仍正被讀取。因此,當保存資料和儲存資料正被讀取以及當計算結果正被儲存至驅動緩衝區(結果)2403或2402和轉移到主機101時,CF 2410能夠被同時地、即時地進行。
圖25A係依據一些實作,例舉在讀操作中進行CF之範例方法2500a的方塊圖。參照圖1及圖25A,方法2500a能夠由主機101及儲存裝置100a來予以進行。緩衝區103、107、或109中的一個包含主機緩衝區(保存資料)2501。NVM(保存資料)2504指的是儲存裝置100a之記憶體陣列120中的記憶體位置。驅動緩衝區(保存資料)2505能夠是儲存裝置100a之緩衝區112、寫緩衝區114、或讀緩衝區116。驅動緩衝區(結果)2503和驅動緩衝區(保存資料)2502各自是讀緩衝區116或緩衝區112。在一些實作中,驅動緩衝區(結果)2503能夠和驅動緩衝區(保存資料)2502相同以守恆緩衝區資源。在方法2500a中,在保存資料被轉移到主機101之後,儲存裝置100a的控制器110對記憶體陣列120中之記憶體位置中的保存資料和緩衝區中的儲存資料進行CF 2510。在其他範例中,在保存資料被轉移到主機101之前或者在保存資料被轉移到主機101的同時(與其並行或同時),控制器110進行CF 2510。保存在NVM(保存資料)2504中的保存資料和保存在驅動緩衝區(儲存資料)2505中的儲存資料對應於不同的邏輯位址。
在方法2500a中,主機101經由匯流排105並且透過介面140將加註的讀命令提交到儲存裝置100a的控制器110。加註的讀命令包含識別待對保存資料和儲存資料進行之CF 2510的類型之註解或指示。加註的讀命令使用第一邏輯位址和第一數量的邏輯區塊來識別保存資料。加註的讀命令使用第二邏輯位址和第二數量的邏輯區塊來識別儲存資料。或者,加註的讀命令使用(驅動緩衝區(保存資料)2505之)儲存資料的緩衝區位址來識別儲存資料。加註的讀命令能夠進一步包含載明CF 2510的計算結果係要被轉移到其之主機緩衝區(結果)2501的位址(例如,PCIe位址)之旗標或指示。
作為回應,在2511,儲存裝置100a的控制器110從NVM(保存資料)2504中讀出對應於第一邏輯位址的保存資料。換言之,儲存裝置100a的控制器110從記憶體陣列120(NAND快閃記憶體裝置130a至130n中的一或多者)中讀出該加註的讀命令中所請求之保存資料。
在2512,保存資料從驅動緩衝區(保存資料)2502被送到主機緩衝區(保存資料)2501。例如,控制器110能夠透過介面140將來自驅動緩衝區(保存資料)2502的保存資料轉移入主機緩衝區(保存資料)2501之內。被提供給主機101的保存資料對應於該加註的讀命令中所包含的邏輯位址。
在2512之後,在2513,儲存裝置100a的控制器110進行緩衝區提取,以使用記憶體陣列120的第二邏輯位址而從驅動緩衝區(保存資料)2505中提取出儲存資料。
儲存裝置100a的控制器110對保存資料和儲存資料進行CF 2510。到CF 2510的輸入為從NVM(保存資料)2504中讀出的保存資料和從驅動緩衝區(保存資料)2505中提取出的儲存資料。CF 2510的輸出為CF 2510的計算結果。在2514,儲存裝置100a的控制器110將CF 2510的計算結果儲存在驅動緩衝區(結果)2503中。
圖25B係依據一些實作,例舉在讀操作中進行CF之範例方法2500b的流程圖。參照圖1、圖25A、及圖25B,方法2500b對應於方法2500a。方法2500b能夠由儲存裝置100a的控制器110來予以進行。
在2521,控制器110接收來自在操作上耦接至儲存裝置100a之主機101之加註的讀命令。加註的讀命令識別待進行的CF 2510而且包含保存資料的第一邏輯位址、儲存資料的第二邏輯位址或緩衝區位址、以及載明保存資料係要被轉移到其之主機緩衝區(結果)2501的位址(例如,PCIe位址)之旗標或指示。在2522,回應於接收到加註的讀命令,控制器110將來自NVM(保存資料)2504中之對應於該第一邏輯位址的保存資料讀入保存資料驅動緩衝區(驅動緩衝區(保存資料)2502)內。在2523,控制器110將到主機101的保存資料從保存資料驅動緩衝區轉移到主機緩衝區(保存資料)2501。在2524,控制器110從驅動緩衝區(保存資料)2505中讀出對應於該第二邏輯位址或緩衝區位址的儲存資料。在2525,控制器110對該保存資料和該儲存資料進行CF 2510以決定計算結果,在2523之後。在其他範例中,在進行2423之前或者在進行2423的同時(與其並行或同時),控制器110進行CF 2510。在2526,控制器110將計算結果儲存在結果驅動緩衝區(例如,驅動緩衝區(結果)2503)中,用於稍後的擷取。
在2522及2524讀取保存資料和儲存資料以及在2523將保存資料轉移到主機101能夠基於一個或更多個轉移單位尺寸而被增量地進行。因而,能夠對已經讀取之保存資料及對應之儲存資料的部分增量地進行CF 2510,且同時保存資料和儲存資料的剩餘部分仍正被讀取。因此,當保存資料和儲存資料正被讀取以及當保存資料正被轉移到主機緩衝區(保存資料)2501時,CF 2510能夠被同時地、即時地進行。
圖26係依據一些實作,例舉進行CF之範例方法2600的流程圖。參照圖1至圖26,方法2600能夠由儲存裝置100a的控制器110來予以進行。
在2610,儲存裝置100a的控制器110接收來自主機101的命令。該命令識別待由儲存裝置100a進行之CF。該命令能夠是加註的寫命令、加註的讀命令、或識別待進行之CF的另一加註的命令。該CF包含加法、減法、乘法、除法、或GF的數學/算術運算;AND、OR、NAND、NOR、NOT(倒反)、或XOR的邏輯運算;AND、OR、或XOR的布林(Boolean)(真/假結果)運算;邏輯移位、算術移位、或循環的逐位元運算;大於、小於、或不等於的比較運算;複製、尋找、或比較的成串操作;AVG()、FIRST()、LAST()、MAX()、MIN()、SUM()的資料庫查詢語言函式;Reed-Solomon或Erasure編碼操作;資料加密或資料庫表操作。
在2620,回應於接收到命令,儲存裝置100a的控制器110對儲存在儲存裝置100a中之內部資料和從主機101轉移出之外部資料的至少一者進行CF以決定計算結果。
在如圖4A至17B中所示的一些範例中,命令為識別外部資料(例如,新資料)的寫命令。在此等範例中,對內部資料或外部資料的至少一者進行CF包含對外部資料進行CF。
在一些範例中,除了外部資料以外,寫命令進一步識別內部資料。在此等範例中,對內部資料或外部資料的至少一者進行CF包含對內部資料和外部資料兩者進行CF。內部資料包含儲存在儲存裝置100a之非揮發性儲存記憶體(例如,記憶體陣列120)中之資料、儲存在儲存裝置100a之驅動緩衝區中之資料、或者儲存在儲存裝置100a之係數表中之係數資料的一或多者。
在一些範例中,寫命令識別內部資料的許多邏輯區塊及邏輯位址。寫命令進一步識別外部資料的許多邏輯區塊及邏輯位址(或緩衝區位址)。內部資料之邏輯區塊的數量和外部資料之邏輯區塊的數量在一些情況下係相同的,而在其他情況下係不同的。
在一些範例中,控制器110能夠將外部資料或CF的計算結果寫到儲存裝置100a的非揮發性儲存記憶體(例如,記憶體陣列120)。在一些範例中,在對外部資料進行CF之前、的同時、或之後,控制器110能夠將外部資料寫到儲存裝置100a的非揮發性儲存記憶體。
在如圖18A至25B中所示的一些範例中,命令為識別外部資料的讀命令。在此等範例中,對內部資料或外部資料的至少一者進行CF包含對內部資料進行CF。在一些範例中,控制器110將內部資料或CF的計算結果提供給主機101。在對內部資料進行CF之前、的同時、或之後,內部資料被提供給主機101。
在一些範例中,內部資料包含第一內部資料和第二內部資料。讀命令識別第一內部資料(使用對應之邏輯位址和許多邏輯區塊)和第二內部資料(使用對應之邏輯位址(或緩衝區位址)和許多邏輯區塊)。對內部資料進行CF包含對第一內部資料和第二內部資料進行CF。
在一些範例中,第一內部資料包含儲存裝置100a之非揮發性儲存記憶體(例如,記憶體陣列120)中所儲存的資料。第二內部資料包含儲存在儲存裝置100a之非揮發性儲存記憶體中的資料、儲存在儲存裝置100a之驅動緩衝區中之資料、或儲存在儲存裝置100a之係數表中的係數資料中的一者。在一些範例中,控制器110將第一內部資料或CF的計算結果提供給主機101。在一些範例中,在對第一內部資料和第二內部資料進行CF之前,控制器110將第一內部資料提供給主機101。
在一些範例中,讀命令識別第一內部資料的許多邏輯區塊及邏輯位址。讀命令進一步識別第二內部資料的許多邏輯區塊及邏輯位址。第一內部資料之邏輯區塊的數量和第二內部資料之邏輯區塊的數量在一些情況下係相同的,而在其他情況下係不同的。
在一些配置中,儲存裝置100a使用控制器110之ASIC或電路內的一個或更多個共有處理器(該等共有處理器進行CF和控制器110的其他功能)、控制器110之ASIC或電路內的一個或更多個分開、專用處理器(該等專用處理器僅進行CF)、或附接至控制器110之ASIC或電路之分開晶片(協同處理器)的一個或更多個共有處理器來進行本文中所述之CF。在其中多個分開、專用處理器進行CF的範例中,控制器110的處理器選擇該多個分開、專用處理器中的一個或多個來進行特別的CF,例如,基於該等分開、專用處理器的可用性。
了解到所揭示之過程中特定順序或層級的步驟為例示性方法的範例。基於設計偏好,了解到該等過程中之特定順序或層級的步驟可以被重排且同時保持在先前說明的範疇之內。伴隨的方法請求項以樣本順序來展示各種步驟的要素,而且不意謂要被限定在所展示之特定的順序或層級。
所揭示之實作的先前說明被提供來致使任何習於此技藝者能夠做成或使用所揭示之專利標的。針對這些實作的各種修改對於習於此技藝者而言將會是很容易顯而易知的,而且本文中所定義的一般性原理可以被應用到其他實作而沒有違離先前說明的精神或範疇。因此,先前的說明並不想要被限定在本文中所顯示的實作,而是要被賦予與本文中所揭示之原理及新穎特徵相一致的最廣範疇。
所例舉及說明的各種範例僅被提供作為例舉申請專利範圍請求項之各種特徵的範例。然而,針對任何給定範例所顯示及說明的特徵不必然被限定在相關的範例,而且可以和被顯示出及說明之其他範例一起被使用或者相結合。此外,申請專利範圍請求項不想要被限定在任何一個範例。
前述方法說明及過程流程圖僅被提供作為例示性範例,而且不打算需要或隱含各種範例的步驟必須按照所展示的順序進行。如同將由習於此技藝者所領會的,前述範例中步驟的順序可以按照任意的順序來進行。諸如「之後」、「然後」、「其次」等字詞並不想要限定步驟的順序;這些字詞祇是被用來導引讀者通篇該等方法的說明。此外,以單數形式,例如使用冠詞「一(a)」、「一(an)」和「該(the)」對申請專利範圍請求項要素的參考並不被建構來將該要素限定為單數。
關於本文中所揭示之範例所述之各種例示的邏輯區塊、模組、電路、和演算法步驟可以被施行為電子硬體、電腦軟體、或兩者的組合。為了清楚地例舉此硬體和軟體的互換性,各種例示的組件區塊、模組、電路、和步驟已經一般性地從其功能性的觀點被說明於上。此種功能性被施行為硬體或軟體端視施加於整體系統之特殊應用及設計條件而定。習於此技藝者可以針對各個特殊的應用以不同的方式施行所述的功能性,但是此等施行決定不應被解釋為導致違離本發明的範疇。
用來施行關於本文中所揭示之範例所述之各種例示的邏輯、邏輯區塊、模組、和電路的硬體可以用通用處理器、DSP、ASIC、FPGA或其他可編程邏輯裝置、分開的邏輯閘或電晶體邏輯、分開的硬體組件、或者其被設計成進行本文中所述之功能的任意組合來予以施行或進行。通用處理器可以是微處理器,但是替換地,處理器可以是任何習知的處理器、控制器、微控制器、或狀態機器。處理器也可以被施行為計算裝置的組合,例如,DSP和一微處理器、複數個微處理器、一個或更多個微處理器結合DSP核心、或者任何其他此種配置的組合。或者,一些步驟或方法可以由特用於一給定功能之電路來進行。
在一些代表性範例中,所述之功能可以用硬體、軟體、韌體、或者其任意組合來予以施行。如果用軟體來予以施行,則功能可以在非暫態性電腦可讀儲存媒體或非暫態性處理器可讀儲存媒體上被儲存作為一個或更多個指令或代碼。本文中所揭示之方法或演算法的步驟可以被具體化於處理器可執行軟體模組中,而處理器可執行軟體模組可以位於非暫態性電腦可讀儲存媒體或非暫態性處理器可讀儲存媒體上。非暫態性電腦可讀儲存媒體或非暫態性處理器可讀儲存媒體可以是可以被電腦或處理器所存取的任何儲存媒體。舉例說明而非限制性的,此種非暫態性電腦可讀儲存媒體或非暫態性處理器可讀儲存媒體可以包含RAM、ROM、EEPROM、FLASH記憶體、CD-ROM或其他光碟機儲存器、磁碟機儲存器或其他磁性儲存器、或者可以被用來以指令或資料結構的方式儲存想要的程式碼以及可以被電腦所存取的任何其他媒體。驅動器和磁碟,如同在本文中所使用者,包含壓縮光碟(CD)、雷射光碟、光碟、數位多功能光碟(DVD)、軟碟片(floppy drive)、及藍光光碟(blu-ray disc),其中,碟片通常磁性地再生資料,而光碟則以雷射光而光學式地再生資料。上面的組合也被包含在非暫態性電腦可讀和處理器可讀媒體中。除此之外,方法或演算法的操作可以歸屬於非暫態性處理器可讀儲存媒體及/或非暫態性電腦可讀儲存媒體上一組碼及/或指令的其中一個或任意組合,其可以被併入於電腦程式產品內。
所揭示之範例先前的說明被提供來致使任何習於此技藝者能夠做出或使用本發明。對於這些範例的各種變型對習於此技藝者而言將是顯而易知的,而且本文中所定義的一般性原理可以被應用到一些範例而沒有違離本發明的精神或範疇。因此,本發明並不想要被限定在本文中所顯示的該等範例,而是要被賦予與本文中所揭示之原理及新穎特徵相一致的最廣範疇。
100,100a-100n:儲存裝置
101:主機
102:記憶體
103:緩衝區
104:處理器
105:匯流排
106:圖形處理單元(GPU)
107:緩衝區
108:網路介面卡(NIC)
109:緩衝區
110:控制器
111:緩衝記憶體
112:緩衝區
114:寫緩衝區
116:讀緩衝區
120:記憶體陣列
130a-130n:NAND快閃記憶體裝置
140:介面
201:第一資料
202a-202n-1:邏輯區塊
211:第二資料
212a-212n-1:邏輯區塊
221:計算結果
222a-222n-1:邏輯區塊
230:計算函式(CF)
301:第一資料
302a:邏輯區塊
302b:邏輯區塊
311:第二資料
312a-312n-1:邏輯區塊
322:StatusResult
324:計算結果
324a-324n-1:邏輯區塊
330:計算函式(CF)
400a:方法
401:主機緩衝區(新資料)
402:驅動緩衝區(新資料)
403:驅動緩衝區(結果)
404:NVM(結果)
410:計算函式(CF)
500a:方法
501:主機緩衝區(新資料)
502:驅動緩衝區(新資料)
503:驅動緩衝區(結果)
504:NVM(新資料)
510:計算函式(CF)
600a:方法
601:主機緩衝區(新資料)
602:驅動緩衝區(新資料)
603:驅動緩衝區(結果)
604:NVM(結果)
605:NVM(舊資料)
610:計算函式(CF)
700a:方法
701:主機緩衝區(新資料)
702:驅動緩衝區(新資料)
703:驅動緩衝區(結果)
704:NVM(新資料)
705:NVM(舊資料)
710:計算函式(CF)
800a:方法
801:主機緩衝區(新資料)
802:驅動緩衝區(新資料)
803:驅動緩衝區(結果)
805:NVM(舊資料)
810:計算函式(CF)
900a:方法
901:主機緩衝區(新資料)
902:驅動緩衝區(新資料)
903:驅動緩衝區(結果)
905:NVM(儲存資料)
910:計算函式(CF)
1000a:方法
1001:主機緩衝區(新資料)
1002:驅動緩衝區(新資料)
1003:驅動緩衝區(結果)
1004:NVM(結果)
1005:NVM(儲存資料)
1010:計算函式(CF)
1100a:方法
1101:主機緩衝區(新資料)
1102:驅動緩衝區(新資料)
1103:驅動緩衝區(結果)
1104:NVM(新資料)
1105:NVM(儲存資料)
1110:計算函式(CF)
1200a:方法
1201:主機緩衝區(新資料)
1202:驅動緩衝區(新資料)
1203:驅動緩衝區(結果)
1204:NVM(結果)
1205:係數表
1210:計算函式(CF)
1300a:方法
1301:主機緩衝區(新資料)
1302:驅動緩衝區(新資料)
1303:驅動緩衝區(結果)
1304:NVM(新資料)
1305:係數表
1310:計算函式(CF)
1400a:方法
1401:主機緩衝區(新資料)
1402:驅動緩衝區(新資料)
1403:驅動緩衝區(結果)
1404:NVM(結果)
1405:驅動緩衝區(儲存資料)
1410:計算函式(CF)
1500a:方法
1501:主機緩衝區(新資料)
1502:驅動緩衝區(新資料)
1503:驅動緩衝區(結果)
1504:NVM(新資料)
1505:驅動緩衝區(儲存資料)
1510:計算函式(CF)
1600a:方法
1601:主機緩衝區(新資料)
1602:驅動緩衝區(新資料)
1603:驅動緩衝區(結果)
1605:係數表
1610:計算函式(CF)
1700a:方法
1701:主機緩衝區(新資料)
1702:驅動緩衝區(新資料)
1703:驅動緩衝區(結果)
1705:驅動緩衝區(儲存資料)
1710:計算函式(CF)
1800a:方法
1801:主機緩衝區(結果)
1802:驅動緩衝區(結果)
1803:驅動緩衝區(結果)
1804:NVM(保存資料)
1810:計算函式(CF)
1900a:方法
1901:主機緩衝區(保存資料)
1902:驅動緩衝區(保存資料)
1903:驅動緩衝區(結果)
1904:NVM(保存資料)
1910:計算函式(CF)
2000a:方法
2001:主機緩衝區(結果)
2002:驅動緩衝區(結果)
2003:驅動緩衝區(結果)
2004:NVM(保存資料)
2005:NVM(儲存資料)
2010:計算函式(CF)
2100a:方法
2101:主機緩衝區(保存資料)
2102:驅動緩衝區(保存資料)
2103:驅動緩衝區(結果)
2104:NVM(保存資料)
2105:NVM(儲存資料)
2110:計算函式(CF)
2200a:方法
2201:主機緩衝區(結果)
2202:驅動緩衝區(結果)
2203:驅動緩衝區(結果)
2204:NVM(保存資料)
2205:係數表
2210:計算函式(CF)
2300a:方法
2301:主機緩衝區(保存資料)
2302:驅動緩衝區(保存資料)
2303:驅動緩衝區(結果)
2304:NVM(保存資料)
2305:係數表
2310:計算函式(CF)
2400a:方法
2401:主機緩衝區(結果)
2402:驅動緩衝區(結果)
2403:驅動緩衝區(結果)
2404:NVM(保存資料)
2405:驅動緩衝區(儲存資料)
2410:計算函式(CF)
2500a:方法
2501:主機緩衝區(保存資料)
2502:驅動緩衝區(保存資料)
2503:驅動緩衝區(結果)
2504:NVM(保存資料)
2505:驅動緩衝區(儲存資料)
2510:計算函式(CF)
[圖1]係依據一些實作,顯示包含儲存裝置和主機之範例系統的方塊圖。
[圖2]係依據一些實作,顯示涉及具有相同數量之邏輯區塊的資料之計算函式(CF)的示意圖。
[圖3]係依據一些實作,顯示涉及具有不同數量之邏輯區塊的資料之CF的示意圖。
[圖4A, 5A, 6A, 7A, 8A, 9A, 10A, 11A, 12A, 13A, 14A, 15A, 16A,和17A]係依據一些實作,例舉在寫操作中進行CF之範例方法的方塊圖。
[圖4B, 5B, 6B, 7B, 8B, 9B, 10B, 11B, 12B, 13B, 14B, 15B, 16B,和17B]係依據一些實作,例舉在寫操作中進行CF之範例方法的流程圖。
[圖18A, 19A, 20A, 21A, 22A, 23A, 24A,和25A]係依據一些實作,例舉在讀操作中進行CF之範例方法的方塊圖。
[圖18B, 19B, 20B, 21B, 22B, 23B, 24B,和25B]係依據一些實作,例舉在讀操作中進行CF之範例方法的流程圖。
[圖26]係依據一些實作,例舉進行CF之範例方法的流程圖。
100a:儲存裝置
101:主機
140:介面
401:主機緩衝區(新資料)
402:驅動緩衝區(新資料)
403:驅動緩衝區(結果)
404:NVM(結果)
410:計算函式(CF)
Claims (20)
- 一種非暫態性電腦可讀媒體,包括電腦可讀指令,使得當由儲存裝置的至少一個處理器執行時,致使該處理器:接收來自主機的命令,用以從該儲存裝置的非揮發性儲存記憶體中讀取資料或將資料寫至該儲存裝置的該非揮發性儲存記憶體,其中,該命令識別計算函式(Compute Function(CF));回應於接收到該命令,對該儲存裝置中所儲存之內部資料或轉移自該主機之外部資料中的至少一者進行該CF以決定計算結果;將該計算結果儲存於該儲存裝置之與該儲存裝置的該非揮發性儲存記憶體分離的驅動緩衝區中;以及依據該命令而在該儲存裝置的該驅動緩衝區與該主機之間轉移資料。
- 如請求項1之非暫態性電腦可讀媒體,其中該CF包括數學或算術運算、邏輯運算、布林(Boolean)運算、逐位元運算、比較運算、成串操作、資料庫查詢語言函式、Reed-Solomon或Erasure編碼操作、資料加密操作、或資料庫表操作中的一者;該數學或算術運算包括加法、減法、乘法、除法或伽羅瓦域(GF)中的一或多者;該邏輯運算包括AND、OR、NAND、NOR、NOT或 XOR中的一或多者;該布林(Boolean)運算包括AND、OR、或XOR中的一或多者;該逐位元運算包括邏輯移位、算術移位、或循環中的一或多者;該比較運算包括大於、小於、或不等於中的一或多者;該成串操作包括複製、尋找、或比較中的一或多者;以及該資料庫查詢語言函式包括AVG()、FIRST()、LAST()、MAX()、MIN()、和SUM()中的一或多者。
- 如請求項1之非暫態性電腦可讀媒體,其中該命令為識別該外部資料的寫命令;以及對該內部資料或外部資料中的至少一者進行該CF包括對該外部資料進行該CF。
- 如請求項1之非暫態性電腦可讀媒體,其中該命令為識別該內部資料及該外部資料的寫命令;以及對該內部資料或外部資料中的至少一者進行該CF包括對該內部資料及該外部資料進行該CF。
- 如請求項4之非暫態性電腦可讀媒體,其中,該內部資料包括該儲存裝置之係數表中所儲存的係數 資料。
- 如請求項4之非暫態性電腦可讀媒體,其中該寫命令識別該內部資料之邏輯區塊的數量和該外部資料之邏輯區塊的數量;以及該內部資料之該等邏輯區塊的該數量和該外部資料之該等邏輯區塊的該數量係相同的。
- 如請求項4之非暫態性電腦可讀媒體,其中該寫命令識別該內部資料之邏輯區塊的數量和該外部資料之邏輯區塊的數量;以及該內部資料之該等邏輯區塊的該數量和該外部資料之該等邏輯區塊的該數量係不同的。
- 如請求項1之非暫態性電腦可讀媒體,其中,該處理器被進一步致使以將該外部資料或該CF的該計算結果寫到該儲存裝置的該非揮發性儲存記憶體。
- 如請求項1之非暫態性電腦可讀媒體,其中,在對該外部資料進行該CF之前、的同時、或之後,該處理器被進一步致使以將該外部資料寫到該儲存裝置的該非揮發性儲存記憶體。
- 如請求項1之非暫態性電腦可讀媒體,其中該命令為識別該內部資料的讀命令;以及對該內部資料或外部資料中的至少一者進行該CF包括 對該內部資料進行該CF。
- 如請求項10之非暫態性電腦可讀媒體,其中,該處理器被進一步致使以將該內部資料或該CF的該計算結果提供給該主機。
- 如請求項10之非暫態性電腦可讀媒體,其中,在對該內部資料進行該CF之前、的同時、或之後,該處理器被進一步致使以將該內部資料提供給該主機。
- 如請求項10之非暫態性電腦可讀媒體,其中該內部資料包括第一內部資料及第二內部資料;該讀命令識別該第一內部資料及該第二內部資料;以及對該內部資料進行該CF包括對該第一內部資料及該第二內部資料進行該CF。
- 如請求項13之非暫態性電腦可讀媒體,其中該第一內部資料包括該儲存裝置之該非揮發性儲存記憶體中所儲存的資料;以及該第二內部資料包括下列中的一者:該儲存裝置之該非揮發性儲存記憶體中所儲存的資料;該儲存裝置之該驅動緩衝區中所儲存的資料;或者該儲存裝置之係數表中所儲存的係數資料。
- 如請求項14之非暫態性電腦可讀媒體, 其中,該處理器被進一步致使以將該第一內部資料或該CF的該計算結果提供給該主機。
- 如請求項14之非暫態性電腦可讀媒體,其中,在對該第一內部資料及該第二內部資料進行該CF之前、的同時、或之後,該處理器被進一步致使以將該第一內部資料提供給該主機。
- 如請求項13之非暫態性電腦可讀媒體,其中該讀命令識別該第一內部資料之邏輯區塊的數量和該第二內部資料之邏輯區塊的數量;以及該第一內部資料之該等邏輯區塊的該數量和該第二內部資料之該等邏輯區塊的該數量係相同的。
- 如請求項13之非暫態性電腦可讀媒體,其中該讀命令識別該第一內部資料之邏輯區塊的數量和該第二內部資料之邏輯區塊的數量;以及該第一內部資料之該等邏輯區塊的該數量和該第二內部資料之該等邏輯區塊的該數量係不同的。
- 一種儲存裝置,包括:非揮發性儲存器;以及具有與該非揮發性儲存器分離的驅動緩衝區及處理器的控制器,係組構成:接收來自主機的命令,用以從該非揮發性儲存器中讀取資料或將資料寫至該非揮發性儲存器,其中,該命令識 別計算函式(Compute Function(CF));回應於接收到該命令,對該儲存裝置中所儲存之內部資料或轉移自該主機之外部資料中的至少一者進行該CF以決定計算結果;將該計算結果儲存於該驅動緩衝區中;以及依據該命令而在該驅動緩衝區與該主機之間轉移資料。
- 一種用於儲存裝置用以進行計算函式(Compute Function(CF))的方法,包括:由該儲存裝置的控制器接收來自主機的命令,用以從該儲存裝置的非揮發性儲存器中讀取資料或將資料寫至該儲存裝置的該非揮發性儲存器,其中,該命令識別計算函式(Compute Function(CF));回應於接收到該命令,對該儲存裝置中所儲存之內部資料或轉移自該主機之外部資料中的至少一者進行該CF以決定計算結果;將該計算結果儲存於該儲存裝置之與該非揮發性儲存器分離的驅動緩衝區中;以及依據該命令而在該驅動緩衝區與該主機之間轉移資料。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/200,349 US20220291861A1 (en) | 2021-03-12 | 2021-03-12 | Data exchange between host and storage device using compute functions |
US17/200,349 | 2021-03-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202244745A TW202244745A (zh) | 2022-11-16 |
TWI832161B true TWI832161B (zh) | 2024-02-11 |
Family
ID=83193793
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111105980A TWI832161B (zh) | 2021-03-12 | 2022-02-18 | 在主機與儲存裝置之間使用計算函式的資料交換 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220291861A1 (zh) |
CN (1) | CN115079940A (zh) |
TW (1) | TWI832161B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11675540B2 (en) * | 2021-08-05 | 2023-06-13 | Seagate Technology Llc | In-line data flow for computational storage |
CN115795519B (zh) * | 2023-01-18 | 2023-05-09 | 苏州浪潮智能科技有限公司 | 数据加解密处理方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693758A (zh) * | 2011-03-22 | 2012-09-26 | 群联电子股份有限公司 | 数据读取方法、存储器储存装置及其存储器控制器 |
US9092152B1 (en) * | 2013-03-14 | 2015-07-28 | Datadirect Networks, Inc. | Data storage system employing a distributed compute engine memory controller with embedded logic and arithmetic functionality and method for data migration between high-performance computing architectures and data storage devices using the same |
US20170220410A1 (en) * | 2016-02-03 | 2017-08-03 | Samsung Electronics Co., Ltd. | Raid-6 data storage device and data processing system including the same |
CN110348249A (zh) * | 2019-05-22 | 2019-10-18 | 上海埃络科技有限公司 | 一种基于存储器内计算的处理器结构 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9542101B2 (en) * | 2013-01-22 | 2017-01-10 | Avago Technologies General Ip (Singapore) Pte. Ltd. | System and methods for performing embedded full-stripe write operations to a data volume with data elements distributed across multiple modules |
EP3268965A4 (en) * | 2015-03-12 | 2018-10-03 | Micron Technology, INC. | Apparatuses and methods for data movement |
US10153008B2 (en) * | 2016-04-20 | 2018-12-11 | Micron Technology, Inc. | Apparatuses and methods for performing corner turn operations using sensing circuitry |
KR102631351B1 (ko) * | 2016-10-07 | 2024-01-31 | 삼성전자주식회사 | 피어-투 피어 통신을 수행할 수 있는 저장 장치와 이를 포함하는 데이터 저장 시스템 |
US20190102321A1 (en) * | 2017-09-29 | 2019-04-04 | Intel Corporation | Techniques to provide access protection to shared virtual memory |
US11327713B2 (en) * | 2019-10-01 | 2022-05-10 | SambaNova Systems, Inc. | Computation units for functions based on lookup tables |
-
2021
- 2021-03-12 US US17/200,349 patent/US20220291861A1/en active Pending
-
2022
- 2022-02-18 TW TW111105980A patent/TWI832161B/zh active
- 2022-03-04 CN CN202210206921.8A patent/CN115079940A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693758A (zh) * | 2011-03-22 | 2012-09-26 | 群联电子股份有限公司 | 数据读取方法、存储器储存装置及其存储器控制器 |
US9092152B1 (en) * | 2013-03-14 | 2015-07-28 | Datadirect Networks, Inc. | Data storage system employing a distributed compute engine memory controller with embedded logic and arithmetic functionality and method for data migration between high-performance computing architectures and data storage devices using the same |
US20170220410A1 (en) * | 2016-02-03 | 2017-08-03 | Samsung Electronics Co., Ltd. | Raid-6 data storage device and data processing system including the same |
CN110348249A (zh) * | 2019-05-22 | 2019-10-18 | 上海埃络科技有限公司 | 一种基于存储器内计算的处理器结构 |
Also Published As
Publication number | Publication date |
---|---|
TW202244745A (zh) | 2022-11-16 |
CN115079940A (zh) | 2022-09-20 |
US20220291861A1 (en) | 2022-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI630622B (zh) | 註釋的原子寫入 | |
TWI832161B (zh) | 在主機與儲存裝置之間使用計算函式的資料交換 | |
US9075557B2 (en) | Virtual channel for data transfers between devices | |
US9911487B2 (en) | Method and system for storing and recovering data from flash memory | |
US10740018B2 (en) | Data migration method and apparatus applied to computer system, and computer system | |
US9342256B2 (en) | Epoch based storage management for a storage device | |
US11513891B2 (en) | Systems and methods for parity-based failure protection for storage devices | |
US20220137835A1 (en) | Systems and methods for parity-based failure protection for storage devices | |
US11467739B2 (en) | Storage device and operation method thereof | |
JP6757299B2 (ja) | メモリモジュール及びその動作方法 | |
US10296250B2 (en) | Method and apparatus for improving performance of sequential logging in a storage device | |
US11775183B2 (en) | Storage device and operation method thereof | |
US10379950B2 (en) | Updating write-in-place storage devices | |
US20220171676A1 (en) | Storage device with data deduplication, operation method of storage device, and operation method of storage server | |
TWI810745B (zh) | 用於為儲存裝置資料複製卸載的系統及方法 | |
US20240103765A1 (en) | Non-volatile storage device offloading of host tasks | |
US20240103731A1 (en) | Non-volatile storage device offloading of host tasks | |
US20240103756A1 (en) | Non-volatile storage device offloading of host tasks | |
US20230325093A1 (en) | Storage device and operating method thereof | |
US20240045597A1 (en) | Storage device and operation method thereof | |
US20230325110A1 (en) | Operation method of host device and operation method of storage device | |
EP4246330A1 (en) | Storage device and operating method thereof | |
US20230135891A1 (en) | Storage device including storage controller and operating method | |
EP4258097A1 (en) | Operation method of host device and operation method of storage device |