TW201945930A - 使用標準化資料儲存及擷取協定的用於資料編碼及解碼之方法及設備 - Google Patents

使用標準化資料儲存及擷取協定的用於資料編碼及解碼之方法及設備 Download PDF

Info

Publication number
TW201945930A
TW201945930A TW108106482A TW108106482A TW201945930A TW 201945930 A TW201945930 A TW 201945930A TW 108106482 A TW108106482 A TW 108106482A TW 108106482 A TW108106482 A TW 108106482A TW 201945930 A TW201945930 A TW 201945930A
Authority
TW
Taiwan
Prior art keywords
encoding
data
controller
command
memory
Prior art date
Application number
TW108106482A
Other languages
English (en)
Inventor
史蒂芬 舒爾
康新海
應麟 楊
Original Assignee
美商國科美國研究實驗室
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/907,101 external-priority patent/US20190266111A1/en
Application filed by 美商國科美國研究實驗室 filed Critical 美商國科美國研究實驗室
Publication of TW201945930A publication Critical patent/TW201945930A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本發明係揭示一種用於編碼及解碼資料之系統、方法以及設備。主處理機及主記憶體係耦接至區塊輸入輸出裝置。主處理機係根據高速資料儲存及擷取協定而向區塊輸入輸出裝置發出編碼及解碼命令。區塊輸入輸出裝置係對編碼命令中所指定的資料執行編碼,由此免除由主處理機執行編碼/解碼而釋放主處理機以執行其它任務。

Description

使用標準化資料儲存及擷取協定的用於資料編碼及解碼之方法及設備 【相關申請案】
本申請案係於2018年2月27日申請之美國申請案第15/907,101號之部分延續案(continuation-in-part;CIP),該美國申請案在此以全文引用的方式併入本文中。
本發明係有關於數位資料儲存之領域,且更具體而言,係有關於資料編碼以保護資料免於意外的損失。
商業大量資料儲存(mass data storage)已變為現代經濟極重要的部分。成千上萬的企業仰賴安全、防故障(fault-proof)的資料儲存用以為他們的客戶服務。
在商業環境中的資料儲存通常會提供資料保護的一些形式以防護因組件及裝置故障,以及人為或天災所造成的意外之資料損失。已知最簡單的保護形式為冗餘度(或稱備用)(redundancy)。冗餘度係涉及製作相同資料的多個副本,再接著將這些副本儲存在獨立的實體硬碟(physical drive)。假設一個硬碟發生故障,資料可簡單地透過在另一個硬碟上進行存 取而被復原。但就實體儲存(physical storage)需求而言,顯然很昂貴。
更先進的恢復系統(recovery systems)係使用獨立磁碟冗餘陣列(Redundant Array of Independent Disks;RAID)。RAID系統通常利用抹除編碼(erasure encoding)以減輕資料的意外損失。抹除編碼係將資料區塊分成n個相等大小的片段並添加m個同位片段(parity segments)。由此,RAID系統係儲存n+m個片段並能夠自高達任意的m個片段故障中復原。
抹除編碼所使用的諸如雷德-所羅門碼(Reed-Solomon codes)之編碼技術(coding techniques)係需要來自主機CPU(Central Processing Unit;中央處理器)相當多的計算資源(substantial computational resources)。由此,儲存前的編碼資料係自主機占用可被用於其它計算的計算資源。此結果係降低用於其它應用(applications)的處理速度。
因此,期望在不需自主機CPU占用計算資源的情況下仍能在一資料儲存系統中提供冗餘度。
本文所描述的實施例係有關於用於編碼及解碼資料之設備、系統以及方法。在一實施例中,係描述一種區塊輸入輸出裝置(block I/O device),其包括控制器(controller)以及記憶體(memory)。控制器係被設定用以擷取(retrieve)由主處理機(host processor)發出(issued)的編碼命令(encode command),控制器藉由高速資料匯流排(high-speed data bus)耦接至主處理機以及主記憶體(host memory),根據標準化資料儲存及擷取協定(standardized data storage and retrieval protocol)所擷取的編碼命令使資料根據編碼演算法 (encoding algorithm)而被編碼,並在完成編碼時提供完成隊列條目(completion queue entry)至完成隊列(completion queue)中。記憶體係耦接至控制器,用以儲存用來編碼資料的編碼演算法。
在另一實施例中,係描述一種用於編碼資料的電腦系統(computer system),其包括一主處理機,係用以產生編碼命令並將該編碼命令儲存至提交隊列(submission queue)中,編碼命令包括由標準化資料儲存及擷取協定所定義的命令之修改版本(modified version);一主記憶體,係用於處理器可執行指令;一資料匯流排(data bus);一區塊輸入輸出裝置,係藉由資料匯流排電性耦接至主處理機以及主記憶體,區塊輸入輸出裝置包括一控制器,該控制器被設定為根據該標準化資料儲存及擷取協定而自提交隊列擷取編碼命令,使該資料根據編碼演算法而被編碼,並在完成編碼時提供完成隊列條目至完成隊列中;以及一記憶體,係耦接至控制器,用以儲存用於編碼該資料之編碼演算法(encoding algorithm used to encode the data),並用以儲存提交隊列以及完成隊列。
在又一實施例中,係描述一種用於編碼資料的方法,其包括以下步驟:透過主處理機產生編碼命令,且編碼命令包括由非揮發性記憶體主機控制器介面規範(non-volatile memory Express;NVMe)資料儲存及擷取協定所定義的供應商自定義規範命令(Vendor Specific Command)之修改版本(modified version);透過主處理機儲存編碼命令於提交隊列中;透過由資料匯流排耦接至主處理機之區塊輸入輸出裝置中的控制器,根據非揮發性記憶體主機控制器介面規範資料儲存及擷取協定而自提交隊列擷取編碼命令;透過控制器自耦接至控制器的輸入緩衝器(input buffer)的由供應商自 定義規範命令之修改版本所識別(identified)的輸入緩衝器位址(input buffer address)處擷取資料;根據編碼命令而編碼資料區塊(block of data)以產生已編碼資料(encoded data);以及透過控制器儲存編碼該資料的結果於完成隊列中。
100‧‧‧電腦系統
102‧‧‧主處理機
104‧‧‧主記憶體
106,106a~106f‧‧‧區塊輸入輸出裝置
108‧‧‧使用者介面
110‧‧‧網路介面
112‧‧‧資料匯流排
200‧‧‧控制器
202‧‧‧控制器記憶體
204‧‧‧主機介面
206‧‧‧(輸入輸出)緩衝器
208‧‧‧可程式電路
210‧‧‧大容量儲存器
214‧‧‧匯流排
本發明之特徵、優點及目的係藉由一併參考其中相似參考標號於全篇同等對應之圖式所為之下述詳細說明將更為顯見,且其中:圖1顯示使用本文所述之發明概念的電腦系統之一實施例的功能方塊圖;圖2顯示圖1所示之區塊輸入輸出裝置的功能方塊圖;圖3顯示圖1所示之電腦系統具有多個區塊輸入輸出裝置的另一實施例;以及圖4A和圖4B顯示由圖1所示之主處理機及區塊輸入輸出裝置所執行的方法之一實施例的流程圖。
本發明係提供藉由透過高速資料匯流排耦接至主處理機以及主記憶體的區塊輸入輸出裝置而用以編碼及解碼(decoding)大量資料(large amounts of data)之方法及設備。區塊輸入輸出裝置係根據使用標準化資料儲存及擷取協定由主處理機所發出的命令,而對儲存在輸入緩衝器中的資料執行編碼。此架構(architecture)係使該主處理機能夠委派(delegate)繁重的編碼及解碼至區塊輸入輸出裝置,由此釋放主處理機資源(host processor resources)以執行其它任務。此方法適合用於橫向擴展(scale-out)架 構,在其中資料可藉由單個區塊輸入輸出裝置同時(in parallel)被編碼或解碼,或藉由各自透過高速資料匯流排耦接至主處理機的多個區塊輸入輸出裝置而被編碼或解碼。
圖1顯示使用本文所述之發明概念的電腦系統100之一實施例的功能方塊圖。圖示的電腦系統100包括主處理機102、主記憶體104、區塊輸入輸出裝置106、使用者介面108以及網路介面110。主處理機102、主記憶體104以及區塊輸入輸出裝置106係透過資料匯流排112電性耦接。輸入輸出裝置106通常包括插入(plugs into)電腦系統100之主機板(motherboard)上的擴充埠(expansion port)之連接器。
電腦系統100可包括個人電腦或雲端伺服器(cloud-based server),以執行諸如文字處理、網頁瀏覽、電子郵件、網站代管(web-hosting),及大量資料儲存及擷取之各種任務。電腦系統100可包括耦接至網際網路的伺服器,且特別被設定用以在儲存及/或傳輸前處理資料,其包括資料編碼及/或解碼。在一些實施例中,區塊輸入輸出裝置106可包括大容量固態硬碟(solid-state hard drive;SSD),用以儲存大容量(1太位元組(terabyte;TB)或更多)資料。在其它實施例中,區塊輸入輸出裝置106可包括一或多個靜態隨機存取記憶體(Static Random Access Memories;SRAM)或資料方向暫存器(data direction register;DDR)記憶體,以允許主處理機102定義一或多個記憶區(memory areas)來作為高速暫存(scratchpad)/暫時(temporary)儲存緩衝區的方式劃分。「區塊」一詞係指用以將資料處理及/或儲存為可定址的固定大小之區塊(addressable fixed-sized blocks)之周邊裝置。在其它實施例中,區塊輸入輸出裝置106係一專門的編碼/解碼裝置(在整篇說明書中,應當理解「編碼」 一詞通常亦指解碼)。該專門的編碼/解碼裝置可預先設定有一或多個編碼及/或解碼演算法及相關參數。在一些實施例中,編碼演算法索引(encoding algorithm index)係用以使多個編碼演算法各自與相應的編碼演算法索引值(encoding algorithm index value)(諸如1,2,3,4...)產生關聯。以此方式,主處理機102可指定供區塊輸入輸出裝置106使用之特定的編碼演算法,而不需提供編碼演算法本身至區塊輸入輸出裝置106。
電腦系統100可用以編碼預定用於傳輸至遠程位置(remote locations)的資料,或解碼經由網路介面110而自一諸如網際網路(Internet)之廣域數據網路(wide-area data network)接收的已編碼資料。為了快速編碼或解碼大量資料,主處理機102將計算密集型編碼及解碼活動(computationally-intensive encoding and decoding activities)轉移(off-load)至區塊輸入輸出裝置106。
主處理機102被設定為藉由執行儲存於主記憶體104中的處理器可執行指令(processor-executable instructions),例如可執行電腦碼,而提供電腦系統100之一般操作(general operation)。主處理機102通常包括由加州聖克拉拉的英特爾公司(Intel Corporation)或是加州桑尼維爾的超微半導體(Advanced Micro Devices)所製造的一個一般目的微處理器或微控制器,並基於計算速度、成本以及其他因素而被選用。
主記憶體104包括一或多個非暫態(non-transitory)資訊儲存裝置,諸如RAM(Random Access Memory;隨機存取記憶體)、ROM(Read-Only Memory;唯讀記憶體)、EEPROM(Electrically-Erasable Programmable Read-Only Memory;電子可抹除可程式化唯讀記憶體)、 UVPROM(Ultraviolet Programmable Read-Only Memory;紫外線可程式唯讀記憶體)、快閃記憶體(flash memory)、SD(Secure Digital;安全數位)記憶體、XD(eXtreme Digital;極端數位)記憶體,或其它種類的電子、光學或機械型記憶體裝置。主記憶體104係用以儲存用於電腦系統100之操作的處理器可執行指令,以及預定用於編碼、已解碼資料(decoded data)、編碼演算法索引、一或多個提交隊列、一或多個完成隊列以及一或多個管理隊列(administrative queues)(此類隊列將於下文更詳細地作說明)。應被理解的是在一些實施例中,主記憶體104的一部分可被嵌入主處理機102中,再者,主記憶體104排除用以傳播(propagating)訊號的媒體。
資料匯流排112包括在主處理機102與諸如區塊輸入輸出裝置106之周邊裝置之間的高速命令(high-speed command)以及資料介面(data interface)。在一實施例中,資料匯流排112係符合已知的快捷外設互聯標準(Peripheral Component Interconnect Express)或稱PCIe標準。PCIe係一高速串列電腦擴充匯流排標準(high-speed serial computer expansion bus standard),其被設計取代較舊的PCI(Peripheral Component Interconnect;週邊組件互連)、PCI-X(Peripheral Component Interconnect eXtended;週邊組件互連延伸)及AGP(Accelerated Graphics Port;加速影像處理埠)匯流排標準。資料匯流排112被設定允許在主處理機102與區塊輸入輸出裝置106之間的高速資料傳送,諸如資料儲存及擷取,但亦可傳輸供區塊輸入輸出裝置106處理的設定資訊(configuration information)、操作指令以及相關參數(將於下文詳細敘述)。資料匯流排112可包括一多股資料電纜(multi-strand data cable)或被嵌入電腦系統100的一主機板中。
區塊輸入輸出裝置106包括經由資料匯流排112耦接至主處理機102及主記憶體104之內部或外部周邊裝置。如圖2所示,區塊輸入輸出裝置106係包括一控制器200、控制器記憶體202以及一主機介面(host interface)204。在一些實施例中,區塊輸入輸出裝置106另外包括緩衝器206、可程式電路(programmable circuitry)208及/或大容量儲存器(mass storage)210。主處理機102經由資料匯流排112以及主機介面204與控制器200通訊,主機介面204包括本領域中已知的用以在區塊輸入輸出裝置106與資料匯流排112之間提供一命令及資料介面的電路(在其它實施例中,主機介面204被併入控制器200中)。區塊輸入輸出裝置106可被設定為編碼被安排成「區塊」的資料(data arranged in“blocks”),其各個有時被稱為實體記錄(physical record),係一位元組(bytes)或位元(bits),通常包含某些整數記錄(whole number of records),且具有一最大長度、一區塊大小。在一實施例中,已知的NVMe資料儲存及擷取協定被用以提供在區塊輸入輸出裝置106與主處理機102與主記憶體104之間的通訊。該NVMe協定係定義由主處理機102所使用的暫存器層級介面(register-level interface)以及命令協定兩者,而與NVMe相容裝置(NVMe-compliant devices)通訊。在一實施例中,區塊輸入輸出裝置106係被設定為NVMe相容。
在一實施例中,區塊輸入輸出裝置106包括一高容量(high-capacity)SSD,諸如具有800 MBps NVMe介面的1 TB之16通道(channel)ONFI相容NAND SSD。在此實施例中,區塊輸入輸出裝置106包括數個NAND快閃記憶體晶片形式的數個大容量儲存器210裝置,其等係以一系列的記憶庫(banks)及通道排列,以儲存一或多TB的已編碼資料。在此實 施例中,區塊輸入輸出裝置106係根據NVMe協定而執行資料儲存及擷取,且亦根據在NVMe協定下所定義的一或多個經修改的供應商自定義規範命令而執行儲存前編碼(以及資料擷取時解碼)。本發明的實施例係基於供應商自定義規範命令而定義一或多個命令以編碼及解碼資料區塊,其如以下所述。
控制器200包括一或多個客製(custom)特定應用積體電路(Application Specific Integrated Circuits;ASICs)、PGAs(可程式閘陣列)及/或周邊電路(peripheral circuitry),以執行區塊輸入輸出裝置106的功能性。此類電路在本領域中係已知者。
控制器記憶體202包括一或多個非暫態資訊儲存裝置,諸如RAM、ROM、EEPROM、快閃記憶體、SD記憶體、XD記憶體,或其它種類之電子、光學或機械型記憶體裝置。控制器記憶體202係用以儲存用於控制器200之操作的處理器可執行指令,以及編碼演算法索引中的一或多個編碼演算法。在一些實施例中,控制器記憶體202亦用以儲存一或多個提交隊列、一或多個完成隊列及/或一或多個管理隊列。應當理解的是在一些實施例中,控制器記憶體202係被併入控制器200中,再者,控制器記憶體202排除用以傳遞訊號的媒體。
主機介面204包括電路以及韌體,以支援主處理機102及主記憶體104的實體連接(physical connection)及邏輯仿真(logical emulation)。此類電路在本領域中係已知者。
輸入輸出緩衝器206包括一或多個資料儲存裝置,用以提供等待編碼或解碼的資料及/或已被編碼/解碼的資料之暫時儲存(temporary storage)。緩衝器206通常包括用以快速存取(fast access)資料的RAM記憶體。在一實施例中,緩衝器206包括用於編碼前的未編碼資料(un-encoded data)及/或等待解碼的已編碼資料之暫時儲存的輸入緩衝器,以及用於編碼後的已編碼資料或解碼後的已解碼資料之暫時儲存的輸出緩衝器。在一實施例中,該等緩衝器的位置及大小係根據NVMe協定而決定。
可程式電路208包括一可程式積體電路(programmable integrated circuit),諸如嵌式現場可程式閘陣列(embedded field programmable gate array;FPGA)、嵌式視訊處理器、張量(tensor)處理器等,其通常包括大量的可設定邏輯閘陣列(configurable logic gate arrays)、一或多個處理器、輸入輸出邏輯,以及一或多個記憶體裝置。可程式電路208提供可設定性(configurability)以實施一或多個編碼演算法,其包含區段與迴旋(block and convolutional)編碼技術,諸如各式各樣的形式之已知的漢明碼(Hamming codes)、低密度檢查碼(low-density parity check(LDPC)codes)、渦輪碼(Turbo codes)以及雷德-所羅門碼等。可程式電路208可使用一般用於以區塊輸入輸出裝置106儲存及擷取資料的高速資料協定(high-speed data protocol),而經由資料匯流排112透過控制器200以被主處理機102所設定。可程式電路208可經由匯流排(bus)214耦接至控制器200,並連接至由控制器200所使用的相同資料及控制線(control lines),以在大容量儲存器210儲存及擷取資料,在使用此類大容量儲存器的一實施例中,可程式電路208通常包括數個雙向輸入輸出資料線,特別是允寫(write enable)及允讀(read enable)等資料線。應當理解的是在其它實施例中,可程式電路208可被併入控制器200中。在這些實施例中,可程式電路208仍可使用與被用以儲存及擷取來自大容量儲存器 210的資料相同之資料及控制線。
大容量儲存器210包括一或多個非暫態資訊儲存裝置,諸如RAM記憶體、快閃記憶體、SD記憶體、XD記憶體,或其它種類之電子、光學或機械型記憶體裝置,被用以儲存已編碼及/或已解碼資料。在一實施例中,大容量儲存器210包括數個NAND快閃記憶體晶片,其等係以一系列的記憶庫及通道排列,以提供最多可達多TB)的資料。大容量儲存器210係透過數個資料及控制線而電性耦合至控制器200,在圖2中以匯流排214表示。例如,匯流排214可包括數條雙向輸入輸出資料線,特別是一允寫及一允讀等資料線。大容量儲存器210排除用以傳播訊號的媒體。
圖3係電腦系統100的另一實施例,其顯示五個內部區塊輸入輸出裝置106a-106e,各自機械式耦接至電腦系統100的主機板(未顯示)並透過資料匯流排112電性耦接至主處理機102及主記憶體104。另外,區塊輸入輸出裝置106f係經由纜線(cable)(通常包括數個電源線、接地線及訊號線)外部耦接至資料匯流排112且在介面至該主機板的各端具有一連接器,以及具有在區塊輸入輸出裝置106f上的一外部連接器(未顯示)。在此實施例中,一或多個區塊輸入輸出裝置106可根據來自主處理機102之命令而編碼資料。主處理機102可藉由指定用於編碼該資料的並聯(in parallel)或串聯(serially)之二或多個區塊輸入輸出裝置106,以編碼一大量資料。在一實施例中,在編碼後,資料被立即儲存在主記憶體104中,在其它實施例中,區塊輸入輸出裝置106包括大容量儲存能力,該已編碼資料係分別由各個區塊輸入輸出裝置106所儲存。
圖4A和圖4B顯示由主處理機102及區塊輸入輸出裝置106所 執行之用以編碼或解碼資料的方法之一實施例的流程圖。該方法係由主處理機102及控制器200所實施,執行分別儲存在主記憶體104及控制器記憶體202中的處理器可執行指令。應當理解的是在一些實施例中,並非所有顯示於圖4A和圖4B中的步驟都被執行,且其中該等步驟進行的順序在其它實施例中可能不同。應再被理解的是,為達到簡潔明確的目的,一些次要步驟係被省略。
該方法係參考已知的NVM Express(NVMe)協定針對電腦的PCIe匯流排加以敘述,其允許主處理機102控制區塊輸入輸出裝置106以執行編碼及解碼,且在一些實施例中,係用以儲存及擷取已編碼或已解碼資料。
NVMe係用於PCIe匯流排上的固態硬碟(SSDs)之儲存介面規範。NVMe規範(NVMe specification)的最新版本可見於www.nvmexpress.org,目前為版本1.3,日期為2017年5月1日,且透過全文引用而併入本文。編碼及解碼命令係以修改的供應商自定義規範命令之形式提供,用於供應商自定義規範命令的格式係由NVMe協定所定義,且顯示如下:命令格式(Command Format)-管理及NVM供應商自定義規範命令(Admin and NVM Vendor Specific Commands)
管理之供應商自定義規範命令以及輸入輸出之供應商自定義規範命令皆可被定義。
在一實施例中,供應商自定義規範命令的修改版本被定義為使區塊輸入輸出裝置106編碼資料,稱為編碼命令。編碼命令(及同樣地,解碼命令)係顯示如下:
在一個實施例中,每一個修改的供應商自定義規範命令係64 位元組長,其包括命令Dword 0、一名稱空間標識符欄位、一保留欄位、一元資料指標(Metadata pointer)、一資料指標(Data pointer)、資料傳送欄位(Data Transfer field)中的Dword數目、元資料傳送欄位(Metadata Transfer field)中的Dword數目以及4個命令Dword。應當理解的是在其它實施例中,該等欄位的不同排列以及每一欄位的位元(bits)數目可不同於此實施例所述者。在此實例中,每一個Dword係四位元組。
此修改的供應商自定義規範命令的定義係儲存在主記憶體104中以及在控制器記憶體202中,分別供主處理機102以及控制器200使用。
於方塊400,主處理機102及控制器200相互合作以決定數個初始設定(initial settings),諸如識別一或多個編碼演算法,並就一編碼演算法索引寫成公式(formulate),以使該一或多個編碼演算法各自與一相應的編碼演算法索引值產生關聯;決定提交隊列、完成對列以及記憶體分配(memory allocations)的數目,及/或將實體記憶體(physical memory)分配(allocate)至數個名稱空間IDs。一或多個編碼演算法密鑰(encoding algorithms keys)可被識別作為一次性事件(one-time event),諸如電腦系統100的第一次電力開啟。該(等)編碼演算法係儲存在控制器記憶體202中及/或主記憶體104中,其中每一個編碼演算法係與一相應的編碼演算法索引值(諸如1,2,3,4)相關聯。
亦可藉由主處理機102及/或控制器200決定提交隊列以及完成隊列(管理及輸入輸出兩者)的數目,以定義各個隊列的數目、各個隊列的記憶體位置以及各個隊列的大小。可藉由特定的實體記憶體(即主記憶體104、控制器記憶體202及/或輸入輸出緩衝器206)定義各個隊列之位置,以 及一記憶體位址(memory address)。這些隊列的初始化(initialization)係敘述於版本1.3之NVMe規範中。
亦可藉由主處理機102及控制器200決定記憶體分配。例如,輸入緩衝器可被定義以作為位於區塊輸入輸出裝置106中的緩衝器206之一部分,供主處理機102用以暫時儲存預定用以編碼或解碼的資料。輸出緩衝器(output buffer)可被定義作為用以暫時儲存已編碼或已解碼資料之緩衝器206的一部分。亦可在此時定義相關的緩衝器大小以及記憶體位址。此類記憶體分配亦透過NVMe規範予以描述。
記憶體分配可另外包括定義數個名稱空間IDs,各個名稱空間ID係識別實體記憶體的區域(「名稱空間」),供主處理機102及控制器200用以邏輯地分離(separate)及管理(manage)使用者資料。實體記憶體可包括遠離電腦系統100且經由網路介面110存取之主記憶體104、控制器記憶體202及/或輸入輸出緩衝器206、或一些其它的資訊儲存裝置、或其一部分。
於方塊402,主處理機102接收要編碼的資料,例如來自網路介面110或來自使用者介面108的大量文字(large text)、影像或視訊檔案。主處理機102儲存資料在主記憶體104中或輸入緩衝器206中,在一實施例中,係儲存為數個邏輯區塊(logical block)。在資料係儲存在輸入緩衝器206中的一實施例中,該資料可使用各種資料傳送協定之一(諸如PCIe)而被傳送至輸入緩衝器206。主機介面204可被用以在資料傳送中進行輔助。
於方塊404,主處理機102根據修改的供應商自定義規範命令產生編碼指令,在此實施例中係包括64位元組。該編碼命令包括Dword 0,代表「操作碼(operation code)」或「運算碼(op code)」,占用(occupying)該編 碼命令的位元組0-3。在此實施例中,Dword 0包括具有A3(hex;六)的值之4位元組,其包括具有1位元的值之一通用命令欄位(generic command field)、具有010 00(位元)的值之一功能欄位以及具有11(位元)的值之一資料傳送欄位,其相似於NVMe協定之圖8中所定義的其它運算碼。作為一實例,以下表格係總結用於編碼及解碼資料的運算碼:
編碼命令另外包括一名稱空間識別(Namespace Identification)欄位或名稱空間ID欄位。在一實施例中,此欄位係4位元組長,且在該編碼命令中占用位元組4-7。該名稱空間ID欄位係用以識別可被格式化至(formatted)邏輯區塊中的非揮發性記憶體(non-volatile memory)之數量。例如,可定義16個名稱空間ID,各個名稱空間ID係由控制器200指定而供一特定的使用者使用。控制器200另外使各個名稱空間ID與實體記憶體的一部分產生關聯。由此方式,使用者們只能夠存取被分配給他們每一位的該硬碟之一個部分。然後,當主處理機102接收到編碼及解碼資料的請求時,主處理機102將編碼/解碼命令寫成公式,以將名稱空間ID插入到與提交一請求的使用者相關之該名稱空間ID欄位中。
在一實施例中,該名稱空間ID係另外用以識別編碼演算法索引值,其代表用於編碼資料之一特定的編碼演算法。二或多個編碼演算 法索引值以及它們相應的編碼演算法係一起儲存作為已預先儲存在主記憶體104及/或控制器記憶體202的編碼演算法索引中。各個編碼演算法索引值係與和由區塊輸入輸出裝置106所執行的編碼演算法連結使用之特定的編碼演算法相關聯。在操作中,主處理機102決定與要編碼的資料相關之名稱空間ID,並將名稱空間ID插入編碼/解碼命令的名稱空間ID欄位中,以表現用於編碼/解碼的編碼演算法索引值。區塊輸入輸出裝置106接著利用與編碼演算法索引值相關的一編碼演算法而編碼或解碼資料。
保留編碼命令的位元組8-15以供NVMe協定在未來使用,因此主處理機102通常不會指定任何值至這些位元組。
編碼命令的位元組16-23係用作可與儲存在主記憶體104的資料相關之元資料的一指標。主處理機102通常不會指定任何值至這些位元組。
編碼命令的位元組24-39係用作在主記憶體104或輸入輸出緩衝器206中的欲作為由編碼/解碼命令加以編碼/解碼之目標的資料之一指標。
位元組40-43係指示儲存在主記憶體104或輸入輸出緩衝器206中的預定由編碼/解碼命令所編碼/解碼之Dwords之數目(資料量)。
位元組44-47係指示從主記憶體104傳送到區塊輸入輸出裝置106之元資料的Dwords的數目。然而,在一實施例中,元資料通常不用於資料編碼程序。
位元組48-63係包括Dwords 12-15,且每個Dword為4位元組長。Dwords 12-15係被合併以形成在應儲存編碼/解碼資料的主記憶體104或 輸入輸出緩衝器206中的一16位元組位址。
於方塊406,主處理機102係將編碼命令寫入(write)由主記憶體104或控制器記憶體202所儲存的一提交隊列。該提交隊列係具有固定槽尺寸(fixed slot size)的循環緩衝器(circular buffer),且主處理機102是使用該循環緩衝器提交用於由控制器200執行的命令。NVMe係以成對的提交及完成隊列機制(Submission and Completion Queue mechanism)為基礎。該等命令係由主處理機102置於提交隊列中,且由控制器200所完成係置於相關的完成隊列中。多個提交隊列可利用相同的完成隊列。該等提交及完成隊列係由主處理機102及控制器200分配至主記憶體104及/或控制器記憶體202中,如本文先前所述。管理提交隊列(Admin Submission Queue)(以及相關的完成隊列)係可基於管理及控制的目的而存在(例如,輸入輸出提交及完成隊列的建立及刪除(creation and deletion)、或是異常中止命令(aborting commands)等)。
於方塊408,回應將編碼命令寫入提交隊列,主處理機102係將新的尾指標(tail pointer)寫入與提交隊列相關之硬體門鈴暫存器(hardware doorbell register),以警示(alert)控制器200在提交隊列中有可執行的命令。
於方塊410,控制器200係根據NVMe協定經由資料匯流排112而自提交隊列擷取編碼命令。
於方塊412,控制器200透過比較位元組0-3中的運算碼與儲存在控制器記憶體202中的運算碼列表而識別並驗證(validates)該編碼命令為用以編碼資料的命令。
於方塊414,控制器200係識別並驗證編碼演算法索引值為儲存在名稱空間ID欄位(即編碼命令之位元組4-7)中的該名稱空間ID。
於方塊416,回應識別該編碼演算法索引值,控制器200係自儲存於控制器記憶體202中的編碼演算法索引擷取與編碼演算法索引值相關的一編碼演算法。
於方塊418,控制器200係在編碼命令中識別一指標(即位元組24-39),其指向要被編碼或被解碼的資料量在主記憶體104或輸入輸出緩衝器206中的一起始位址。在一實施例中,要被編碼或被解碼的資料量係包括資料區塊的數目。
於方塊420,控制器200係識別儲存在主記憶體104或輸入輸出緩衝器206中將進行編碼/解碼(to be encoded/decoded)之Dwords的數目。
於方塊422,控制器200係自主記憶體104或輸入輸出緩衝器206擷取資料量,且起始於由指標提供的位址。主機介面204可被用以輔助資料傳送,且該資料可被暫時儲存在輸入輸出緩衝器206中。
於方塊424,控制器200係利用於方塊416所擷取的編碼演算法而編碼於方塊420所擷取的該資料。在一實施例中,控制器200係利用儲存在控制器記憶體202中的編碼演算法而執行編碼。在另一實施例中,可程式電路208係執行編碼/解碼。在此實施例中,係利用管理供應商自定義規範命令(Admin Vendor Specific Command)經由資料匯流排112透過主處理機102而程控可程式電路208。
管理供應商自定義規範命令係一管理命令(administrative command),且該管理命令係使用NVMe規範中的圖12所述之供應商自定義 規範命令的格式。在可程式電路208包括一現場可程式閘陣列(field programmable gate array;FPGA)的情況下,主處理機102係向控制器200提供設定資訊,供控制器200調處(manipulate)FPGA之內部鏈接組(internal link sets)以便執行編碼演算法。作為一實例,以下表格係定義用以識別客製管理供應商自定義規範命令的兩個運算碼,以設定可程式電路208去執行一給定之編碼演算法(given encoding algorithm):
在此實例中,90h之編碼演算法下載命令係被定義用以指示控制器200自主記憶體104擷取該等指令(instructions),以設定可程式電路208執行特定的編碼演算法,且94h之編碼演算法提交命令係使控制器200啟動特定的編碼演算法。用以設定可程式電路208之該等指令係根據該NVMe資料儲存及擷取協定經由資料匯流排112而透過控制器200擷取。接著,控制器200係利用該等指令設定可程式電路208,而使可程式電路208執行被管理編碼演算法下載命令所識別的該特定的編碼演算法。
於方塊426,在資料完成編碼後,控制器200將已編碼資料儲存在主記憶體104或輸入輸出緩衝器206中,且起始於編碼命令中所指定的位址,即編碼命令中之在位元組48-63的Dwords 12-15。在另一實施例中,控制器200將該已編碼資料儲存在大容量儲存器210中,以供主處理機102在 之後擷取。
於方塊428,控制器200將完成隊列條目寫入通常儲存在主記憶體104中之完成隊列中,以指示成功或未成功完成編碼/解碼命令及/或產生一完成中斷(completion interrupt)至主處理機102。NVMe規範係定義完成隊列為用以發布(post)該等已完成命令(completed commands)的狀態(status)之一具有固定槽尺寸的循環緩衝器。主處理機102係在處理完指示最後的空置(free)之完成隊列槽之該等完成隊列條目後,更新一完成隊列頭指標(Completion Queue Head pointer)。階段標籤(優先)位元(phase tag((P);priority)bit)被定義於完成隊列條目中,以指示是否在未諮詢(consulting)暫存器的情況下就完成一條目的新發布。此允許主處理機102決定該新條目是否發布作為前一回或現在(previous or current round)的該等完成通知(completion notifications)的一部分。具體而言,在每一次透過該等完成隊列條目完成一回的更新時,控制器200係倒轉(invert)階段標籤位元。
於方塊430,主處理機102係根據NVMe協定而接收出現有條目進入完成隊列之通知。
於方塊432,主處理機102係藉由評估完成隊列條目以決定編碼命令是否成功。主處理機102利用最高為64千位元組(Kilobyte;K(KB))的提交隊列以及最高為64千位元組的完成隊列,透過向區塊輸入輸出裝置106提供額外的編碼/解碼命令而可同時(in parallel)編碼或解碼大量資料。每一個隊列能夠儲存最高64千位元組的命令。由此,可在不過度消耗主處理機資源的情況下編碼/解碼大量資料。
於方塊434,當由編碼/解碼命令的Dwords12-15所定義之一 記憶體位址識別時,主處理機102可透過廣域網路(wide-area network)經由網路介面110而向一遠程位置提供來自主記憶體104或輸入輸出緩衝器206之該已編碼/已解碼資料。
記載於本文之與該等實施例相關的方法或演算法可直接在硬體中實施或在由一處理機所執行的處理器可讀取指令(processor-readable instructions)中實施。該等處理器可讀取指令可位於RAM記憶體、快閃記憶體、ROM記憶體、EPROM記憶體(Erasable Programmable Read-Only Memory;抹除式可複寫唯讀記憶體)、EEPROM記憶體、暫存器、硬碟、可移磁碟、CD-ROM,或任何其它本領域已知的儲存媒體之形式中。一例示性的儲存媒體係耦接至處理機,使得處理機得以自儲存媒體讀取資訊並對儲存媒體寫入資訊。或是,儲存媒體可與處理機一體成形。處理機及儲存媒體可位於ASIC(Application Specific Integrated Circuit;特定應用積體電路)中。ASIC可位於一用戶終端(user terminal)中。或是,處理機及儲存媒體可設置為分離的組件(discrete component)。
因此,本發明的一實施例可包括一電腦可讀取媒體,其體現程式碼(code)或處理器可讀取指令,以實施本文所記載之教示、方法、程序、演算法、步驟及/或功能。
應當理解的是,本文所述之解碼設備及方法亦可使用在其它通訊情景(communication situations)且並不限於RAID儲存。例如,光碟技術(compact disk technology)亦使用抹除碼(erasure codes)及錯誤校正碼(error-correcting codes)以處理被刮傷光碟之問題並可能自本文所述之技術的使用而獲益。作為另一實例,衛星系統(satellite systems)可使用抹除碼以 折衷(trade off)傳輸的電力需求,目的性地藉由降低電力而允許更多錯誤,且連鎖反應編碼(chain reaction coding)將有益於該應用。再者,抹除碼可被用於有線及無線通訊網路,諸如行動電話/數據網路、區域網路,或網際網路中。因此,本發明之實施例可證實在其它應用(諸如上述實例)中具有用處,其中這些程式碼被用以處理潛在損耗(lossy)或錯誤(erroneous)資料的問題。
雖然上述揭示內容顯示本發明之例示性實施例,應當注意的是,在不偏離本發明所附之申請專利範圍所界定之範圍的情況下,係可在在此進行各種變化及修飾。根據本文所述之本發明的實施例之方法請求項的該等功能、步驟及/或動作並不需要以任何特定順序進行。另外,雖然本發明的元件可能以單數敘述或請求,其複數的態樣亦涵蓋在本發明的範圍內,除非另外指明。

Claims (20)

  1. 一種區塊輸入輸出裝置,係設定用以編碼資料,其包括:一控制器,係設定用以擷取由一主處理機發出的一編碼命令,該控制器藉由一高速資料匯流排耦接至該主處理機以及一主記憶體,並根據一標準化資料儲存及擷取協定擷取該編碼命令,使該資料根據一編碼演算法而被編碼,並在完成該編碼時提供一完成隊列條目至一完成隊列中;以及一記憶體,係耦接至該控制器,用以儲存用來編碼該資料的該編碼演算法。
  2. 如請求項1所述之區塊輸入輸出裝置,其中該高速資料匯流排包括一快捷外設互聯標準(PCIe)匯流排,且該標準化資料儲存及擷取協定包括一非揮發性記憶體主機控制器介面規範(NVMe)協定。
  3. 如請求項1所述之區塊輸入輸出裝置,其進一步包括:一輸入緩衝器,係耦接至該控制器;其中該控制器被設定為藉由自該輸入緩衝器中位於該編碼命令所指定的該輸入緩衝器中的一位址,擷取該資料的一或多個區塊,而使該資料被編碼。
  4. 如請求項1所述之區塊輸入輸出裝置,其進一步包括:一輸出緩衝器,係耦接至該控制器;其中該控制器被設定為儲存被編碼的該資料於該輸出緩衝器中起始於由該編碼命令所指定的該輸出緩衝器中之一位址。
  5. 如請求項1所述之區塊輸入輸出裝置,其中該記憶體進一步儲存一編 碼演算法索引,該編碼演算法索引係用以使儲存於該記憶體中之一或多個編碼演算法分別與一或多個編碼演算法索引值產生關聯,其中,該控制器被設定為根據由該編碼命令所指定的一第一編碼演算法索引值而利用該編碼演算法索引中所識別的一第一編碼演算法使該資料被編碼。
  6. 如請求項5所述之區塊輸入輸出裝置,其中該高速資料匯流排包括一快捷外設互聯標準(PCIe)匯流排,且該標準化資料儲存及擷取協定包括一非揮發性記憶體主機控制器介面規範(NVMe)協定,其中該第一編碼演算法索引值係由該主處理機於一供應商自定義規範命令之一名稱空間ID欄位中所提供。
  7. 如請求項1所述之區塊輸入輸出裝置,其進一步包括:可程式電路,係用以根據該編碼演算法而編碼該資料,該可程式電路由該控制器所程控,以回應該控制器根據該標準化資料儲存及擷取協定自一管理提交隊列擷取一管理命令。
  8. 如請求項7所述之區塊輸入輸出裝置,其中該可程式電路包含一嵌式現場可程式閘陣列(FPGA)。
  9. 一種用於編碼資料的電腦系統,其包括:一主處理機,係用以產生一編碼命令並將該編碼命令儲存在一提交隊列中,該編碼命令包括由一標準化資料儲存及擷取協定所定義的一命令之一修改版本;一主記憶體,係用於處理器可執行指令;一資料匯流排; 一區塊輸入輸出裝置,係藉由該資料匯流排電性耦接至該主處理機以及該主記憶體,該區塊輸入輸出裝置包括:一控制器,係被設定為根據該標準化資料儲存及擷取協定而自該提交隊列擷取該編碼命令,使該資料根據一編碼演算法而被編碼,並在完成該編碼時提供一完成隊列條目至一完成隊列中;以及一記憶體,係耦接至該控制器,用以儲存用來編碼該資料的該編碼演算法,並用以儲存該提交隊列以及該完成隊列。
  10. 如請求項9所述之用於編碼資料的電腦系統,其中該資料匯流排包括一快捷外設互聯標準(PCIe)匯流排,且該標準化資料儲存及擷取協定包括一非揮發性記憶體主機控制器介面規範(NVMe)協定。
  11. 如請求項9所述之用於編碼資料的電腦系統,其中該區塊輸入輸出裝置進一步包括:一輸入緩衝器,係耦接至該控制器;其中該控制器被設定為藉由自該輸入緩衝器擷取該編碼命令所指定之該輸入緩衝器中的一位址上之該資料的一或多個區塊,而使該資料被編碼。
  12. 如請求項9所述之用於編碼資料的電腦系統,其中該區塊輸入輸出裝置進一步包括:一輸出緩衝器,係耦接至該控制器;其中該控制器被設定為儲存已編碼資料於該輸出緩衝器中由該編碼命令所指定之該輸出緩衝器中之一位址。
  13. 如請求項9所述之用於編碼資料的電腦系統,其中該記憶體進一步儲 存一編碼演算法索引,該編碼演算法索引係用以使儲存於該記憶體中之一或多個編碼演算法分別與一或多個編碼演算法索引值產生關聯,其中,該控制器被設定為根據由該編碼命令所指定的一第一編碼演算法索引值而利用該編碼演算法索引中的一第一編碼演算法使該資料被編碼。
  14. 如請求項9所述之用於編碼資料的電腦系統,其中該區塊輸入輸出裝置進一步包括:可程式電路,係耦接至該控制器,並用以根據該編碼演算法而編碼該資料,該可程式電路由該控制器所程控,以回應該控制器根據該標準化資料儲存及擷取協定自一管理提交隊列擷取一第二命令。
  15. 如請求項14所述之用於編碼資料的電腦系統,其中該可程式電路包括一嵌式現場可程式閘陣列(FPGA)。
  16. 一種用於編碼資料的方法,其透過一區塊輸入輸出裝置所執行,包括以下步驟:透過一主處理機產生一編碼命令,且該編碼命令包括由一非揮發性記憶體主機控制器介面規範(NVMe)資料儲存及擷取協定所定義的一供應商自定義規範命令之一修改版本;透過該主處理機儲存該編碼命令於一提交隊列中;透過由一資料匯流排耦接至該主處理機之一區塊輸入輸出裝置中的一控制器,根據該非揮發性記憶體主機控制器介面規範(NVMe)資料儲存及擷取協定自該提交隊列擷取該編碼命令;透過該控制器自一耦接至該控制器的一輸入緩衝器的由該供應商 自定義規範命令之該修改版本所識別的一輸入緩衝器位址處擷取資料;根據該編碼命令而編碼一資料區塊以產生一已編碼資料區塊;以及透過該控制器儲存編碼該資料區塊的一結果於一完成隊列中。
  17. 如請求項16所述之用於編碼資料的方法,其中編碼該資料進一步包括以下步驟:透過該控制器將該已編碼資料儲存至耦接至該控制器的一輸出緩衝器中由該編碼命令所指定的該輸出緩衝器中之一位址。
  18. 如請求項16所述之用於編碼資料的方法,其中編碼該資料係包括以下步驟:自該編碼命令擷取一編碼演算法索引值;自與該編碼演算法索引值相關聯的耦接至該控制器之一記憶體擷取一第一編碼演算法;以及利用該第一編碼演算法編碼該資料區塊。
  19. 如請求項18所述之用於編碼資料的方法,其中該編碼演算法索引值係擷取自透過該供應商自定義規範命令定義作為識別一用於儲存資料的記憶體中之一區域的一欄位之一名稱空間ID欄位。
  20. 如請求項16所述之用於編碼資料的方法,其中編碼該資料係包括將該資料提供至該區塊輸入輸出裝置中的可程式電路,該可程式電路由該控制器所程控,以回應該控制器自根據該非揮發性記憶體主機控制器介面規範(NVMe)資料儲存及擷取協定所儲存之一管理提交隊列擷取一管理命令。
TW108106482A 2018-02-27 2019-02-26 使用標準化資料儲存及擷取協定的用於資料編碼及解碼之方法及設備 TW201945930A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US15/907,101 US20190266111A1 (en) 2018-02-27 2018-02-27 Method and apparatus for high speed data processing
US15/907,101 2018-02-27
US15/973,373 2018-05-07
US15/973,373 US10509698B2 (en) 2018-02-27 2018-05-07 Method and apparatus for data encoding and decoding using a standardized data storage and retrieval protocol

Publications (1)

Publication Number Publication Date
TW201945930A true TW201945930A (zh) 2019-12-01

Family

ID=67685183

Family Applications (1)

Application Number Title Priority Date Filing Date
TW108106482A TW201945930A (zh) 2018-02-27 2019-02-26 使用標準化資料儲存及擷取協定的用於資料編碼及解碼之方法及設備

Country Status (3)

Country Link
US (1) US10509698B2 (zh)
TW (1) TW201945930A (zh)
WO (1) WO2019168880A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112214435A (zh) * 2020-09-18 2021-01-12 广东电网有限责任公司广州供电局 一种使用标准化数据存储和检索协议的数据编码和解码的方法和装置
TWI809860B (zh) * 2021-05-11 2023-07-21 聯發科技股份有限公司 執行主機控制器對儲存設備的中止處理的方法與系統

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111629279B (zh) * 2020-04-13 2021-04-16 北京创享苑科技文化有限公司 一种基于定长格式的视频数据传输方法
US20230280941A1 (en) * 2022-02-02 2023-09-07 Samsung Electronics Co., Ltd. Systems, methods, and devices for queue entry monitoring
CN114415974B (zh) * 2022-03-28 2022-06-03 北京得瑞领新科技有限公司 Ssd操作逻辑空间的方法、装置、存储介质及ssd设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9311230B2 (en) 2013-04-23 2016-04-12 Globalfoundries Inc. Local direct storage class memory access
US20150058529A1 (en) 2013-08-21 2015-02-26 Sandisk Technologies Inc. Systems and methods of processing access requests at a data storage device
US20160094619A1 (en) * 2014-09-26 2016-03-31 Jawad B. Khan Technologies for accelerating compute intensive operations using solid state drives
CN107241913B (zh) 2015-02-25 2020-06-19 株式会社日立制作所 信息处理装置
US9747546B2 (en) 2015-05-21 2017-08-29 Google Inc. Neural network processor
US10359953B2 (en) * 2016-12-16 2019-07-23 Western Digital Technologies, Inc. Method and apparatus for offloading data processing to hybrid storage devices
US10725835B2 (en) * 2017-05-03 2020-07-28 Western Digital Technologies, Inc. System and method for speculative execution of commands using a controller memory buffer
US10114586B1 (en) * 2017-06-22 2018-10-30 Western Digital Technologies, Inc. System and method for using host command data buffers as extended memory device volatile memory

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112214435A (zh) * 2020-09-18 2021-01-12 广东电网有限责任公司广州供电局 一种使用标准化数据存储和检索协议的数据编码和解码的方法和装置
TWI809860B (zh) * 2021-05-11 2023-07-21 聯發科技股份有限公司 執行主機控制器對儲存設備的中止處理的方法與系統

Also Published As

Publication number Publication date
WO2019168880A1 (en) 2019-09-06
US20190266048A1 (en) 2019-08-29
US10509698B2 (en) 2019-12-17

Similar Documents

Publication Publication Date Title
TW201945930A (zh) 使用標準化資料儲存及擷取協定的用於資料編碼及解碼之方法及設備
US10635530B2 (en) Memory system performing error correction of address mapping table
CN107402837B (zh) 非易失性存储器装置及其读取方法
US9703816B2 (en) Method and system for forward reference logging in a persistent datastore
US10452871B2 (en) Method and apparatus for data encryption using a standardized data storage and retrieval protocol
US9146691B2 (en) Method for managing commands in command queue, memory control circuit unit and memory storage apparatus
US10102060B2 (en) Storage apparatus and data control method of storing data with an error correction code
TW201518968A (zh) 用於自主記憶體搜尋之方法及系統
US20160239207A1 (en) Storage control apparatus and storage control method
TWI556249B (zh) 資料讀取方法、記憶體儲存裝置及記憶體控制電路單元
KR20220001222A (ko) 베드 블록을 처리하는 메모리 시스템 및 동작 방법
US20190114220A1 (en) Method and apparatus for enhancing data integrity using dual error detection and repair protection for ssd
TW201913382A (zh) 解碼方法、記憶體儲存裝置及記憶體控制電路單元
TW201913372A (zh) 用以檢測資料儲存裝置之資料儲存方法及其資料儲存裝置
US10394479B2 (en) Solid state storage device with quick boot from NAND media
US7921265B2 (en) Data access method, channel adapter, and data access control device
US20190095274A1 (en) Methods and apparatuses for proactive ecc failure handling
TW201944737A (zh) 使用標準化資料儲存及擷取協定的用於資料壓縮及解壓縮之方法及設備
US20200257463A1 (en) Data Storage Systems and Methods for Self Adaptive Chip-Enable Setup Time
US10642758B2 (en) Storage drive and method of executing a compare command
US20200117722A1 (en) Efficient file storage and retrieval system, method and apparatus
US20190073134A1 (en) Methods for resetting a flash memory device and apparatuses using the same
KR20220049230A (ko) 메모리 시스템에서 비휘발성 메모리 장치 내 오류를 확인하는 장치 및 방법
CN112579329A (zh) 快速处理uecc的方法及其存储设备
US9639417B2 (en) Storage control apparatus and control method