TW202347118A - 固態儲存驅動器中的硬體加速資料庫排序 - Google Patents
固態儲存驅動器中的硬體加速資料庫排序 Download PDFInfo
- Publication number
- TW202347118A TW202347118A TW111123800A TW111123800A TW202347118A TW 202347118 A TW202347118 A TW 202347118A TW 111123800 A TW111123800 A TW 111123800A TW 111123800 A TW111123800 A TW 111123800A TW 202347118 A TW202347118 A TW 202347118A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- memory
- sorted
- sorting
- storage device
- Prior art date
Links
- 239000007787 solid Substances 0.000 title claims description 15
- 230000015654 memory Effects 0.000 claims abstract description 239
- 238000000034 method Methods 0.000 claims abstract description 81
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 68
- 230000004044 response Effects 0.000 claims abstract description 12
- 239000000872 buffer Substances 0.000 claims description 34
- 230000008569 process Effects 0.000 claims description 22
- 238000012163 sequencing technique Methods 0.000 claims description 19
- 238000004891 communication Methods 0.000 claims description 9
- 239000000463 material Substances 0.000 claims description 6
- 238000012546 transfer Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 description 24
- 238000010586 diagram Methods 0.000 description 14
- 239000004065 semiconductor Substances 0.000 description 14
- 238000004590 computer program Methods 0.000 description 11
- 238000013507 mapping Methods 0.000 description 10
- 238000012937 correction Methods 0.000 description 6
- 239000010410 layer Substances 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 239000003999 initiator Substances 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000013515 script Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 239000004557 technical material Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000003936 working memory 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- 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]
-
- 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/061—Improving I/O performance
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/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/0658—Controller construction 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/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/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本發明係關於一種儲存裝置的系統和相關方法。該系統和方法中,接收來自主機的排序命令。回應於接收到排序命令,儲存裝置被配置為透過至少基於a)待排序的資料量和b)儲存裝置的記憶體中的可用儲存空間分配至少一個儲存位置來進行排序。在該系統和方法中,利用可升級排序演算法來生成排序的資料子集,並且基於指示待儲存待排序的資料的至少一個儲存位置來儲存排序的序列化資料子集。向主機提供排序的資料子集的頁面識別符(ID)。
Description
本發明的實施例係關於一種用於對固態儲存驅動器(SSD)中的資料進行排序的平臺。
計算機環境範例已經轉變為可以隨時隨地使用的普適計算系統。因此,諸如行動電話、數位相機和筆記型電腦的便攜式電子裝置的使用已經迅速增加。這些便攜式電子裝置通常使用具有記憶體裝置的記憶體系統,即資料儲存裝置。資料儲存裝置用作便攜式電子裝置的主記憶體裝置或輔助記憶體裝置。
由於記憶體裝置沒有移動部件,因此使用記憶體裝置的記憶體系統具有優異的穩定性、耐久性、高資訊存取速度和低功耗。具有這些優點的記憶體系統的示例包括通用序列匯流排(USB)記憶體裝置、諸如通用閃存(UFS)的具有各種介面的記憶卡以及固態驅動器(SSD)。
如第9,727,308號的美國專利(其全部內容透過引用併入本文)中所描述的那樣,當需要在設定的時間段內在記憶區塊內處理數百萬個記錄時,批量資料處理的性能成為一個問題。此外,當資料庫處理中隨機發生讀取操作時,一次讀取操作需要更多時間,這可能會影響性能。
對於篩選(filtering)和排序,資料庫儲存引擎很大程度上依賴排序演算法和技術。中央資料庫功能之一,即,將資料集記錄編入索引,其背後是排序操作。為了執行排序、篩選或索引操作,資料庫儲存引擎通常a)從底層儲存介質讀取原始資料庫記錄,並且b)單獨處理每個記錄以確定相對於其他記錄的記錄關係。
對於輸入/輸出(I/O)性能優化,資料庫記錄通常以映射到SSD頁面的特殊資料結構來組織。資料庫表記錄字段與單個SSD頁面的對齊允許存取位於該頁面內的所有記錄字段,消除了為了重建單個資料庫記錄而讀取多個NAND頁面的需要。
在本發明的一個方面,提供了一種用於操作儲存裝置的方法。該方法從主機接收排序命令。該方法回應於已經接收到排序命令,透過至少基於a)待排序的資料量和b)儲存裝置的記憶體中的可用儲存空間分配至少一個儲存位置來配置儲存裝置以進行最佳排序。該方法利用可升級排序演算法來生成排序的資料子集,並且基於指示待儲存待排序的資料的至少一個儲存位置來儲存排序的資料子集。該方法向主機提供排序的資料子集的頁面識別符(ID)。
在本發明的另一方面,提供了一種用於對來自儲存裝置的資料進行加速排序的系統。該系統具有:主機介面,用於主機和儲存裝置的通信;儲存裝置中的記憶體,用於儲存資料;以及儲存裝置中的可重新配置SSD硬體加速器處理器,與記憶體和主機介面通信。可重新配置SSD硬體加速器處理器被配置為a)透過分配用於儲存待排序的資料的至少一個儲存位置來配置儲存裝置以進行最佳排序,b)利用可升級排序演算法生成從記憶體中檢索到的資料的排序的資料子集,c)基於指示待儲存待排序的資料的至少一個儲存位置來儲存排序的資料子集,並且d)向主機提供排序的資料子集的頁面識別符(ID)。
在本發明的另一方面,提供了一種用於操作儲存裝置的方法。在該方法中,主機可以重新配置SSD硬體加速器處理器排序演算法。該方法回應於接收到排序演算法更新命令,利用作為命令的寫入資料而提供的排序/排列演算法來更新待用於資料排序的排序演算法。在該方法中,資料庫記錄可以按照主機在排序演算法更新命令中指定的資料庫儲存引擎頁面格式進行儲存。在該方法中,在開始排序/排列操作之前,可以為資料排序加速器配置資料庫儲存引擎頁面格式。
透過以下描述,本發明的其他方面將變得顯而易見。
以下參照圖式更詳細地描述本發明的各種實施例。然而,本發明可以以不同的形式實現,因此不應被解釋為限於本文闡述的實施例。相反,提供這些實施例是為了將本發明的範圍充分地傳達給本發明所屬技術領域中具有通常知識者。此外,本文中對“實施例”、“另一實施例”等的引用不一定僅針對一個實施例,並且對任何這種短語的不同引用不一定針對相同的實施例。本文所使用的術語“實施例”不一定指所有實施例。在整個公開內容中,相同元件符號在本發明的圖式和實施例中指代相同的部分。
本發明可以以多種方式來實施,包括作為:過程;設備;系統;在計算機可讀儲存介質上實現的計算機程序產品;和/或處理器,例如適於運行聯接到處理器的記憶體上儲存的和/或由其提供的指令的處理器。在本說明書中,這些實施方案或本發明可以採用的任何其他形式可以被稱為技術。通常,所公開過程的操作順序可以在本發明的範圍內進行改變。除非另有說明,否則被描述為適合於執行任務的、諸如處理器或記憶體的組件可以被實施為被配置或以其他方式被編程為在給定時間執行任務的通用裝置或電路組件,或者被實施為被製造以執行該任務的特定裝置或電路組件。如本文所使用的,術語“處理器”等是指適於處理資料(例如,計算機程序指令)的一個或多個裝置、電路和/或處理內核。
本文描述的方法、過程和/或操作可以透過待由計算機、處理器、控制器或其他信號處理裝置運行的代碼或指令來執行。計算機、處理器、控制器或其他信號處理裝置可以是本文描述的那些或者本文描述的元件之外的元件。由於本文對形成方法(或計算機、處理器、控制器或其他信號處理裝置的操作)的基礎的演算法進行了描述,因此用於實施方法實施例的操作的代碼或指令可以將計算機、處理器、控制器或其他信號處理裝置轉換為用於執行本文的方法的專用處理器。
如果至少部分地以軟體實施,則控制器、處理器、裝置、模組、單元、多工器、生成器、邏輯、介面、解碼器、驅動器、發生器以及其他信號生成和信號處理特徵可以包括,例如,用於儲存待由例如計算機、處理器、微處理器、控制器或其他信號處理裝置運行的代碼或指令的記憶體或其他儲存裝置。
以下提供了本發明實施例的詳細描述以及示出了本發明的方面的圖式。結合這些實施例描述了本發明,但是本發明不限於任何特定實施例。本發明包括許多替代、修改和等效方案。下面的描述中闡述了許多具體細節,以便提供對本發明的透徹理解。提供這些細節僅出於示例的目的;可以根據申請專利範圍實踐本發明,而無需這些具體細節中的一些或全部。為了清楚起見,並未詳細描述與本發明有關的技術領域中已知的技術材料,以便不會不必要地使本發明不清楚。
硬體與韌體
圖1是示出根據本發明的一個實施例的系統2的方塊圖。參照圖1,系統2可以包括主機裝置5、記憶體系統10和嵌入式可重新配置SSD資料排序加速器15。
本發明是基於以下認識而實現的:為了將資料從現代高性能SSD及時傳遞到CPU,排序演算法的性能可能經常受到CPU中的計算資源和RAM不足的限制。例如,資料庫儲存引擎通常在可能未針對處理大量資料進行優化的通用CPU上運行。另外,資料庫儲存系統計算資源在用戶和系統任務之間共享。
作為示例,為了檢索單個資料集記錄,至少從底層儲存讀取單個資料庫系統頁面。下一步,資料庫系統從原始頁面資料重建記錄。資料庫記錄重建通常在主機裝置5中的通用CPU上執行,該通用CPU未針對此類操作進行優化。
當執行排序操作的資料集(例如,資料庫頁面)無法完全容納到資料庫儲存引擎裝置記憶體(例如,記憶體508)中時,通常將外部排序技術應用於資料集。外部排序通常利用計算裝置主記憶體(RAM)和底層儲存記憶體之間的週期性資料交換,計算裝置主記憶體(RAM)和底層儲存記憶體都在主機裝置5的CPU中。現代SSD提供較高的IO資料帶寬和相對較低的隨機讀取/寫入延遲,這使SSD成為利用外部排序演算法的資料庫系統的首選。現代高性能SSD能夠保證資料及時傳遞到運行排序演算法的CPU。在這點上,在運行外部排序演算法時的性能限制可能是如上所述由CPU中缺乏計算資源和RAM而導致的。
此外,在外部排序期間,可以在計算裝置主記憶體和SSD儲存裝置之間不斷地傳送處理後的資料。這種持續的資料傳送會增加功耗,增加通信介面通道利用率。
因此,在本發明的一個實施例中,提供了一種嵌入式可重新配置SSD硬體加速器,其被編程為執行內置SSD資料庫記錄排序。在本發明的一個實施例中,嵌入式可重新配置SSD硬體加速器從主機RAM和CPU卸載資源,從而降低功耗和主機介面利用率,從而加快整個資料檢索過程。
返回參照圖1,記憶體系統10可以接收來自主機裝置5的請求並且回應於接收到的請求而操作。例如,記憶體系統10可以儲存待由主機裝置5存取的資料。主機裝置5可以利用各種類型的電子裝置中的任意一種來實施。
在多種實施例中,例如,主機裝置5可以是電子裝置,例如桌上型電腦、工作站、三維(3D)電視、智能電視、數位音頻記錄器、數位音頻播放器、數位圖片記錄器、數位圖片播放器和/或數位視頻記錄器和/或數位視頻播放器。在多種實施例中,例如,主機裝置5可以是便攜式電子裝置,例如行動電話、智慧型手機、電子書、MP3播放器、便攜式多媒體播放器(PMP)和/或便攜式遊戲機。
記憶體系統10可以利用諸如固態驅動器(SSD)和記憶卡的各種類型的儲存裝置中的任意一種來實施。在多種實施例中,例如,記憶體系統10可以是諸如以下的電子裝置中的各種組件中的一種:計算機、超移動個人計算機(UMPC)、工作站、上網本、個人數位助理(PDA)、便攜式計算機、網絡平板電腦、無線電話、行動電話、智慧型手機、電子書閱讀器、便攜式多媒體播放器(PMP)、便攜式遊戲裝置、導航裝置、黑盒子、數位相機、數位多媒體廣播(DMB)播放器、三維電視、智能電視、數位音頻記錄器、數位音頻播放器、數位圖片記錄器、數位圖片播放器、數位視頻記錄器、數位視頻播放器、資料中心的儲存裝置、能夠在無線環境下接收和發送資訊的裝置、射頻識別(RFID)裝置、以及家庭網絡的各種電子裝置之一、計算機網絡的各種電子裝置之一、遠程資訊處理網絡的各種電子裝置之一,或者計算系統的各種組件之一。
記憶體系統10可以包括記憶體控制器100和半導體記憶體裝置200。記憶體控制器100可以控制半導體記憶體裝置200的全部操作。
半導體記憶體裝置200可以在記憶體控制器100的控制下執行一項或多項擦除操作、編程操作和讀取操作。半導體記憶體裝置200可以透過輸入/輸出線接收命令CMD、位址ADDR和資料DATA。半導體記憶體裝置200可以透過電源線接收電力PWR,並且透過控制線接收控制信號CTRL。根據記憶體系統10的設計和配置,控制信號CTRL可以包括例如命令鎖存致能信號、位址鎖存致能信號、晶片致能信號、寫入致能信號、讀取致能信號以及其他操作信號。
記憶體控制器100和半導體記憶體裝置200可以是諸如上述固態驅動器(SSD)的單個半導體裝置。SSD可以包括用於儲存資料的儲存裝置。當記憶體系統10用於SSD中時,可以提高聯接到記憶體系統10的主機裝置(例如,圖1的主機裝置5)的操作速度。
記憶體控制器100和半導體記憶體裝置200也可以是諸如記憶卡的單個半導體裝置。例如,記憶體控制器100和半導體記憶體裝置200可以是個人計算機記憶卡國際協會(PCMCIA)的個人計算機(PC)卡、緊湊型閃存(CF)卡、智能媒體(SM)卡、記憶棒、多媒體卡(MMC)、尺寸減小的多媒體卡(RS-MMC)、微型版本的MMC(微型MMC)、安全數位(SD)卡、迷你安全數位(迷你SD)卡、微型安全數位(微型SD)卡、高容量安全數位(SDHC)和通用閃存(UFS)。
圖2是示出根據本發明的另一實施例的記憶體系統的方塊圖。例如,圖2的記憶體系統可以描繪圖1所示的記憶體系統10。
參照圖2,記憶體系統10可以包括控制器100和記憶體裝置200。記憶體系統10可以回應於來自主機裝置的請求(例如,來自圖1的主機裝置5的請求)而操作,特別是儲存待由主機裝置存取的資料。
記憶體裝置200可以儲存待由主機裝置存取的資料。例如,記憶體裝置200可以是諸如動態隨機存取記憶體(DRAM)和/或靜態隨機存取記憶體(SRAM)的揮發性記憶體裝置,或者諸如只讀記憶體(ROM)、遮罩ROM(MROM)、可編程ROM(PROM)、可擦除可編程ROM(EPROM)、電可擦除可編程ROM(EEPROM)、鐵電隨機存取記憶體(FRAM)、相變RAM(PRAM)、磁阻式RAM(MRAM)和/或電阻式RAM(RRAM)的非揮發性記憶體裝置。
控制器100可以控制記憶體裝置200中資料的儲存。例如,控制器100可以回應於來自主機裝置的請求而控制記憶體裝置200。控制器100可以將從記憶體裝置200讀取的資料提供到主機裝置,並且可以將從主機裝置提供的資料儲存到記憶體裝置200中。
控制器100可以包括透過匯流排160聯接的儲存裝置110、控制組件120、錯誤校正碼(ECC)組件130、主機介面(I/F)140和記憶體介面(I/F)150,例如,控制組件120可以被實施為諸如中央處理單元(CPU)的處理器。為了簡潔起見,控制器100可以被視為是主機介面層(HIL)。
儲存裝置110可以用作記憶體系統10和控制器100的工作記憶體,並且儲存裝置110可以儲存用於驅動記憶體系統10和控制器100的資料。當控制器100控制記憶體裝置200的操作時,儲存裝置110可以儲存控制器100和記憶體裝置200用於諸如讀取操作、寫入操作、編程操作和擦除操作的這些操作的資料。
儲存裝置110可以是揮發性記憶體,例如靜態隨機存取記憶體(SRAM)或動態隨機存取記憶體(DRAM)。如上所述,儲存裝置110可以將主機裝置用於讀取操作和寫入操作的資料儲存在記憶體裝置200中。為了儲存資料,儲存裝置110可以包括程序記憶體、資料記憶體、寫入緩衝器、讀取緩衝器、映射緩衝器等。
控制組件120可以控制記憶體系統10的一般操作,並且回應於來自主機裝置的寫入請求或讀取請求而控制記憶體裝置200的寫入操作或讀取操作。為了簡潔起見,控制組件120(可以驅動韌體或其他程序指令)可以被稱為閃存轉換層(FTL),並且控制記憶體系統10的操作。例如,FTL可以執行諸如邏輯到實體(L2P)映射、損耗均衡、垃圾收集和/或壞塊處置的操作。L2P映射被稱為邏輯塊尋址(LBA)。
ECC組件130可以在讀取操作期間對從記憶體裝置200讀取的資料中的錯誤進行檢測和校正。在一個實施例中,當錯誤位的數量大於或等於可校正錯誤位的閾值數量時,ECC組件130可以不校正錯誤位,而是可以輸出指示校正錯誤位失敗的錯誤校正失敗信號。
在多種實施例中,例如,ECC組件130可以基於諸如以下的編碼調製來執行錯誤校正操作:低密度奇偶校驗(LDPC)碼、博斯-查德胡裡-霍坤格姆(Bose-Chaudhuri-Hocquenghem,BCH)碼、turbo碼、turbo乘積碼(TPC)、裡德-所羅門(RS)碼、卷積碼、遞歸系統碼(RSC)、網格編碼調製(TCM)或塊編碼調製(BCM)。然而,錯誤校正不限於這些技術。因此,ECC組件130可以包括適用於錯誤校正操作的任何和所有電路、系統或裝置。
例如,主機介面140可以透過諸如以下的各種通信標準或介面中的一種或多種與主機裝置通信:通用序列匯流排(USB)、多媒體卡(MMC)、高速外圍組件互連(PCI-e或PCIe)、小型計算機系統介面(SCSI)、串列SCSI(SAS)、串行高級技術附件(SATA)、並行高級技術附件(PATA)、增強型小磁盤介面(ESDI)和電子集成驅動器(IDE)。
記憶體介面150可以提供控制器100和記憶體裝置200之間的介面,以允許控制器100回應於來自主機裝置的請求而控制記憶體裝置200。記憶體介面150可以在控制組件120的控制下生成針對記憶體裝置200的控制信號並處理資料。在一個實施例中,其中記憶體裝置200是閃速記憶體,例如NAND閃速記憶體,記憶體介面150可以在控制組件120的控制下生成針對記憶體的控制信號並處理資料。
例如圖2所示的記憶體裝置200可以包括記憶體單元陣列210、控制電路220、電壓生成電路230、行解碼器240、頁面緩衝器陣列形式的頁面緩衝器陣列250、列解碼器260以及輸入和輸出(輸入/輸出)電路270(或這些元件的SE)。記憶體單元陣列210可以包括可以儲存資料的多個記憶區塊211。電壓生成電路230、行解碼器240、頁面緩衝器陣列250、列解碼器260和輸入/輸出電路270可以形成記憶體單元陣列210的外圍電路。外圍電路可以執行記憶體單元陣列210的編程操作、讀取操作或擦除操作。控制電路220可以控制外圍電路。
電壓生成電路230可以生成各種位準的操作電壓。例如,在擦除操作中,電壓生成電路230可以生成各種位準的操作電壓,例如擦除電壓和通過電壓。
行解碼器240可以與電壓生成電路230和多個記憶區塊211電通信。行解碼器240可以回應於控制電路220生成的行位址,在多個記憶區塊211之中選擇至少一個記憶區塊,並且將從電壓生成電路230供應的操作電壓傳輸到所選擇的記憶區塊。
頁面緩衝器陣列250可以透過位元線BL(圖3所示)與記憶體單元陣列210聯接。頁面緩衝器陣列250可以在編程和讀取操作中利用正電壓對位元線BL進行預充電、將資料傳輸到所選擇的記憶區塊以及從所選擇的記憶區塊接收資料,或者回應於控制電路220生成的頁面緩衝器控制信號臨時儲存所傳輸的資料。
列解碼器260可以向頁面緩衝器陣列250傳輸資料以及從頁面緩衝器陣列250接收資料,或者可以向輸入/輸出電路270傳輸資料以及從輸入/輸出電路270接收資料。
輸入/輸出電路270可以將從外部裝置(例如,圖1的記憶體控制器100)接收的命令和位址傳輸到控制電路220,將資料從外部裝置傳輸到列解碼器260,或者透過輸入/輸出電路270將資料從列解碼器260輸出到外部裝置。控制電路220可以回應於命令和位址而控制外圍電路。
圖3是示出根據本發明的又一實施例的半導體記憶體裝置的記憶區塊的電路圖。例如,圖3的記憶區塊可以是圖2所示的記憶體單元陣列210的記憶區塊211中的任意一個。
參照圖3,記憶區塊211可以包括聯接到行解碼器240的多個字元線WL0至WLn-1、汲極選擇線DSL和源極選擇線SSL。這些線可以平行地佈置,並且在DSL和SSL之間具有多個字元線。
記憶區塊211可以進一步包括分別聯接到位元線BL0至BLm-1的多個單元串221。每一列的單元串可以包括一個或多個汲極選擇電晶體DST以及一個或多個源極選擇電晶體SST。在所示的實施例中,每個單元串具有一個DST和一個SST。在單元串中,多個記憶體單元或記憶體單元電晶體MC0至MCn-1可以在選擇電晶體DST和SST之間串聯聯接。記憶體單元中的每一個可以形成為多層單元。例如,記憶體單元中的每一個可以形成為儲存1位資料的單層單元(SLC)。記憶體單元中的每一個可以形成為儲存2位資料的多層單元(MLC)。記憶體單元中的每一個可以形成為儲存3位資料的三層單元(TLC)。記憶體單元中的每一個可以形成為儲存4位資料的四層單元(QLC)。
每個單元串中的SST的源極可以聯接到公共源極線CSL,每個DST的汲極可以聯接到相應的位元線。單元串中的SST的閘極可以聯接到SSL,單元串中的DST的閘極可以聯接到DSL。不同單元串的記憶體單元的閘極可以聯接到各自的字元線。也就是說,記憶體單元MC0的閘極聯接到相應的字元線WL0,記憶體單元MC1的閘極聯接到相應的字元線WL1,以此類推。聯接到特定字元線的一組記憶體單元可以被稱為一個實體頁面。因此,記憶區塊211中的實體頁面的數量可以對應於字元線的數量。
頁面緩衝器陣列250可以包括聯接到位元線BL0至BLm-1的多個頁面緩衝器251。頁面緩衝器251可以回應於頁面緩衝器控制信號而操作。例如,頁面緩衝器251可以在讀取或驗證操作期間臨時儲存透過位元線BL0至BLm-1接收的資料或感測位元線的電壓或電流。
在本發明的多種實施例中,記憶區塊211可以是NAND型閃速記憶體單元。然而,記憶區塊211不限於這種單元類型,而是可以包括NOR型閃速記憶體單元。記憶體單元陣列210可以被實施為兩種或更多種類型的記憶體單元組合的混合閃速記憶體,或者被實施為控制器嵌入在記憶體晶片內部的1-NAND(one-NAND)閃速記憶體。
圖4是示出根據本發明的一個實施例的記憶體裝置的不同類型單元的狀態或編程電壓(PV)位準分佈的示圖。
參照圖4,記憶體單元中的每一個可以利用特定類型的單元來實施,例如,儲存1位資料的單層單元(SLC)、儲存2位資料的多層單元(MLC)、儲存3位資料的三層單元(TLC)或儲存4位資料的四層單元(QLC)。通常,特定記憶體裝置中的所有記憶體單元屬同一類型,但這不是必需的。
SLC可以包括兩種狀態P0和P1。P0可以表示擦除狀態,P1可以表示編程狀態。由於SLC可以被設置為兩種不同狀態中的一種,因此每個SLC可以根據所設置的編碼方法編程或儲存1位。MLC可以包括四種狀態P0、P1、P2和P3。在這些狀態之中,P0可以表示擦除狀態,P1至P3可以表示編程狀態。由於MLC可以被設置為四種不同狀態中的一種,因此每個MLC可以根據所設置的編碼方法編程或儲存2位。TLC可以包括八種狀態P0至P7。在這些狀態之中,P0可以表示擦除狀態,P1至P7可以表示編程狀態。由於TLC可以被設置為八種不同狀態中的一種,因此每個TLC可以根據所設置的編碼方法編程或儲存3位。QLC可以包括十六種狀態P0至P15。在這些狀態之中,P0可以表示擦除狀態,P1至P15可以表示編程狀態。由於QLC可以被設置為十六種不同狀態中的一種,因此每個QLC可以根據所設置的編碼方法編程或儲存4位。
返回參照圖2和圖3,記憶體裝置200可以包括多個記憶體單元(例如,NAND閃速記憶體單元)。記憶體單元以行和列的陣列形式佈置,如圖3所示。每一行中的單元連接到字元線(例如,WL0),每列中的單元聯接到位元線(例如,BL0)。這些字元線和位元線用於讀取操作和寫入操作。在寫入操作期間,在字元線被指定(assert)時,在位元線處提供待寫入的資料(“1”或“0”)。在讀取操作期間,字元線再次被指定,然後可以從位元線獲取每個單元的閾值電壓。多個頁面可以共享屬(即,聯接到)同一字元線的記憶體單元。當記憶體單元利用MLC實施時,多個頁面包括最高有效位(MSB)頁面和最低有效位(LSB)頁面。當記憶體單元利用TLC實施時,多個頁面包括MSB頁面、中央有效位(CSB)頁面和LSB頁面。當記憶體單元利用QLC實施時,多個頁面包括MSB頁面、中央最高有效位(CMSB)頁面、中央最低有效位(CLSB)頁面和LSB頁面。例如,可以使用編碼方案(例如,格雷編碼)對記憶體單元進行編程,以增加諸如SSD的記憶體系統10的容量。
在本發明的一個實施例中,提供了一種用於儲存裝置加速的系統。此處,如圖1和圖2所示,SSD資料排序加速器15嵌入在記憶體系統10中。SSD資料排序加速器15可以與控制組件120通信或與控制電路220通信。在一個實施例中,SSD資料排序加速器15可以結合到控制組件120和/或控制電路220中。
通常,資料庫索引是一種以額外的寫入和儲存空間為代價來維護索引資料結構以提高對資料庫表的資料檢索操作的速度的資料結構。將所有資料庫列編入索引並不總是可行或必要的。在檢索到的資料庫查詢結果集應按一列排序的情況下,資料庫儲存引擎可以在將排序的資料返回給查詢發起者(例如,主機)之前對結果集進行排序。資料排序過程的第一步是將中間查詢結果儲存到時態表中。在第二步中,資料庫儲存引擎透過查詢“order by”參數對時態表記錄進行排序。資料庫查詢“order by”參數指定結果集在返回給用戶之前排序所應該依據的資料庫表列。資料庫儲存引擎向查詢發起者返回按“order by”參數指定的列所排序的排序資料集。
通常,資料庫系統應用外部排序演算法來對未容納到主記憶體中的查詢結果進行排序。外部排序係關於將資料庫表條目的子集從SSD讀取到本地高速緩存記憶體、對子集進行排序並將排序的資料寫入儲存介質的交互過程。當所有排序的資料子集合併到表示返回給用戶的最終查詢結果的單個排序集中時,外部排序演算法完成。
資料庫儲存引擎透過將頁面從NAND加載到記憶體中來處理它們。頁面處理是一種計算資源密集型任務,其通常由通用CPU執行。
圖5是示出根據本發明的一個實施例的特定加速排序系統的方塊圖。
參照圖5,在本發明的一個實施例中,SSD控制器510從主機505接收排序命令,以根據資料庫儲存引擎頁面格式對儲存在NAND頁面中的資料庫記錄執行硬體加速排序。在一個實施例中,從NAND檢索到的資料可以按排序命令中指定的列進行排序。在開始排序/排列操作之前,主機505利用資料庫引擎儲存頁面格式佈局和其他資料庫特定配置來配置SSD資料排序加速器15。
在發出SSD排序命令之後,主機505中的資料庫儲存引擎507可以將排序操作委託給SSD資料排序加速器15,然後資料庫儲存引擎507可以繼續進行其他操作。在排序操作完成時,SSD資料排序加速器15通知資料庫儲存引擎507資料集已排序並且可以被檢索。
在本發明的一個實施例中,SSD控制器510包括單個SSD資料排序加速器15。在本發明的另一個實施例中,SSD控制器510可以包括大量獨立的資料排序單元(SSD資料排序加速器15),這允許並行處理,使得比通用中央處理單元(CPU)更高效,特別是對於並行處理大塊資料的演算法。
如圖5所示,SSD資料排序加速器15可以包括:a)一個或多個資料排序加速器處理器515,被配置為對反序列化(de-serialized)的資料進行排序;b)一個或多個資料庫頁面序列化反序列化DBPSDU處理器517(每個包括DBPSDU內部高速緩存記憶體517a),被配置為從儲存裝置的記憶體裝置檢索資料庫頁面並將檢索到的資料庫頁面反序列化為包含定義排序順序的屬性以及元資料的資料結構;c)一個或多個資料庫排序管理器(DSM)處理器519,被配置為利用可升級排序演算法,基於反序列化的資料庫表列對檢索到的資料庫頁面進行排序;d)一個或多個排序演算法記憶體(SAM)530,用於儲存DSA和DMRA使用的可升級排序演算法;以及e)一個或多個資料合併加速器(DMRA)處理器521,被配置為將排序的資料子集合併在一起以形成排序的資料子集的頁面識別符。
SSD主機介面協議層(HIL)523被擴展以支持排序邏輯配置、排序演算法更新以及支持自定義SSD排序命令(SSDSC)。在本發明的一個實施例中,SSD排序邏輯透過SSD主機介面配置以適應供應商特定的命令。例如,輸入資料分佈可能會影響排序演算法的性能。關於輸入資料分佈的先驗知識(例如,來自供應商特定的知識)以及與供應商特定的輸入資料分佈相關聯的相應排序演算法可以顯著加快資料排序。在本發明的一個實施例中,這種用於排序演算法更新的能力透過採用對輸入資料進行優化的排序演算法,為排序性能增益的提高提供了可能。
在SSD初始配置完成之後,可以提交表排序任務以從NAND檢索待排序的資料。例如,在SSD排序命令請求發出之後,SSD控制器的DSM可以保留專用的計算資源並開始SSD資料排序。SSD資料排序加速器15能夠在SSD內部排序方法之間智能選擇:內置記憶體資料排序、外部NAND記憶體排序或上述方法的加權組合。排序方法的選擇可以由臨時儲存排序資料的可用控制器揮發性記憶體的容量來調節。例如,可用於內部排序的控制器揮發性記憶體的容量取決於其他當前運行的SSD控制器任務所佔用的內存。當排序的資料完全容納到可用的控制器揮發性記憶體中時,可以應用記憶體排序演算法。這意味著所有資料都是一次性完成排序的。由於在所有資料可以保存在揮發性記憶體中時在內部(內置記憶體)進行排序,排序演算法的性能相比於外部排序快得多。對無法完全容納到可用控制器揮發性記憶體中的大型資料集進行排序,可能需要在控制器揮發性記憶體中僅保存一部分資料以進行排序。在完成對內存資料的排序之後,排序的資料會被持久化到NAND中,並且可以將後面的資料塊加載到內存中進行排序。重複這些描述的步驟,直到所有資料集部分或完全排序為止。可用於保存資料以進行排序的內存量可能會隨時間變化,並且在某個時間點,控制器記憶體中可能有足夠的內存來容納所有未排序的資料。
在本發明的一個實施例中,SSD內部邏輯(例如,在資料庫排序管理器DSM 519中)評估待排序的資料量以及用於排序任務的可用SSD控制器揮發性記憶體的容量。根據可用的內存量,DSM 519可以針對當前的排序任務選擇最佳排序方法。當使用由主機配置的正確使用的排序演算法時,在可用的SSD排序加速器計算資源和SSD控制器記憶體利用率下,最佳排序方法可以更快地完成資料集排序。以上對最佳排序方法選擇進行了詳細描述。
另外,在一個實施例中,本發明透過將鏡像硬體加速的資料庫排序SSD加速器(並行)連接到資料庫儲存引擎系統來提供吞吐量增益的水平可擴展解決方案。將硬體加速的資料庫排序SSD加速器分組到儲存集群中,允許終端用戶可以透過將排序任務重新引導至不同的SSD來提高資料庫儲存引擎的排序性能。無論如何,可以經由向主機505傳輸SSD排序命令完成狀態來表明排序任務完成。
如圖5所示,存在具有內置SSD資料排序加速器15的SSD記憶體裝置。如圖5所示,內置SSD資料排序加速器15可以具有集成到HIL 523和FTL 525之間的資料路徑中的資料排序加速器(DSA)515、排序演算法記憶體(SAM)530、SSD資料庫頁面序列化/反序列化單元(DBPSDU)517、資料庫排序管理器(DSM)519、資料合併加速器(DMRA)521。排序演算法可以作為微碼嵌入到排序演算法記憶體(SAM)530中並由資料排序加速器(DSA)515運行。
中央記憶體管理器(CMM)529是協調存取共享記憶體空間的SSD控制器組件之一。DSM 519協調排序任務並決定應用的排序方法。DSA 515對反序列化的資料庫頁面執行排序。DBPSDU 517對資料庫儲存引擎頁面進行反序列化,DSA排序演算法將在這些頁面上進行排序。另外,DBPSDU 517支持將資料序列化為資料庫儲存引擎頁面儲存格式。
圖6是虛擬到實體資料庫表儲存映射方案的描述。資料庫系統將記錄儲存到被分割成固定大小的單元的文件中,單元被稱為頁面,在圖6中示出為頁面0、頁面1、……、頁面n。資料庫系統頁面在NAND頁面中對齊,單個資料庫頁面可以由一個或多個NAND頁面組成。在圖6所示的情況下,資料庫頁面完全容納到實體NAND頁面中,即資料庫虛擬頁面大小等於NAND頁面大小。在圖6中,資料庫頁面m 700透過虛擬到實體資料庫頁面映射表701映射到NAND頁面`ε 700a,頁面m 700的大小等於NAND頁面`ε 700a的大小。在本發明的一個實施例中,頁面以使每個儲存的資料記錄的儲存開銷(操作和儲存空間)最小化的方式來組織。
這種頁面組織的兩個示例是N元儲存模型(NSM)和跨分區屬性(PAX)。第9,798,674號的美國專利(其全部內容以引用方式併入本文)描述了用於映射虛擬記憶體空間的N叉樹。在'674專利中,N叉樹(其中N是2的冪(例如,2、4、8、16等)包括多個級別,每個級別對應於不同的頁面表大小。'674 N叉樹可以在本發明中用作N元儲存模型。公開號為2015/0347426(其全部內容透過引用併入本文)的美國專利申請描述了PAX資料儲存,其中每個頁面表示一組行並且在一個塊內,首先儲存第一列並且將相應的資料點儲存為字段。'426 PAX資料儲存可以用於本發明。DBPSDU 517根據頁面格式解析NAND頁面布局,反序列化記錄字段,並且提取定義排序順序的字段。圖7是伴隨資料庫記錄字段的輔助元資料的描述。如圖7所示,反序列化的資料庫記錄字段伴隨著輔助元資料,輔助元資料唯一地標識資料庫儲存頁面內的資料庫記錄位置。
更具體地,輔助元資料唯一地標識資料庫儲存頁面內的資料庫記錄。為了識別資料庫儲存頁面內的資料庫記錄,只要知道頁面內的記錄偏移量及其相應的頁面ID就可以了。圖7描繪了資料集記錄排序的資料庫表列,以及指向NAND頁面內的完整資料集記錄的輔助元資料。定義排序順序的資料庫表列是所有資料庫表列的子集。對於表記錄的排序,足以對定義資料集順序的列(屬性/字段)進行反序列化並對反序列化的列字段執行排序,這些字段伴隨著完整表記錄的輔助指針。將表約簡(reduction)為定義資料集排序的列以及指向NAND頁面內的記錄位置的輔助元資料的過程在本文中稱為表約簡。最後,透過按排序順序遍歷排序的約簡表,可以從約簡排序表的輔助元資料中重建出表排序順序。在圖7中,列0、1、……ε是定義排序順序的列。列0、1、……ε是資料庫表列的子集。每個反序列化的記錄伴隨著元資料,該元資料包含頁面內的偏移,即頁面內記錄的偏移(例如,具有諸如上述NSM或PAX的資料庫儲存系統頁面布局中的一種)。NAND頁面ID(記錄n所在的位置)是元資料識別符,其在所有NAND頁面中唯一地標識NAND頁面。
在本發明的一個實施例中,排序的資料庫表被約簡為列,透過這些列使用包含指針的輔助元資料來執行資料集排序,以完成NAND頁面內的記錄位置。這種方法透過在應用於整個表記錄的外部排序過程中使NAND編程循環最少化來減少NAND損耗均衡。在本發明的一個實施例中,排序的資料在整個排序過程中被保留在同一位置,並且它是指向實際排序的資料庫記錄的指針。另外,由於並非在內存中對所有排序的資料庫表記錄屬性進行排序,而是僅對所選擇的屬性(例如,定義排序順序的屬性)進行排序,因此可以將更多記錄容納到SSD記憶體(SRAM或DRAM)中以進行內置記憶體排序,從而透過不必將所有排序的記錄字段儲存在NAND 527中來減少總排序時間。
在本發明的一個實施例中,SSD主機介面協議層被擴展以透過主機介面協議支持SSD排序邏輯配置、排序演算法更新和資料排序命令。SSD主機協議擴展可以透過添加廠商特定SSD排序命令來實現,SSD排序邏輯配置命令可以被設置為SSD操作所需的已經支持的命令集。SSD排序命令集可以擴展SSD主機協議功能,以提供對所應用的排序演算法、資料庫頁面儲存格式的配置、排序任務優先級、SSD排序邏輯配置和/或SSD排序任務提交的完全控制。這些命令可以寫入和讀取配置DSM和DBPSDU位址空間。
圖12是DBPSDU記憶體位址映射的描述。DBPSDU記憶體映射包括資料庫頁面儲存格式配置位址空間1200,資料庫頁面儲存格式配置位址空間1200是用於資料庫頁面儲存格式配置,例如,頁面頭佈局、資料庫頁面大小、支持的資料庫資料類型描述、每個頁面最大記錄數,以及DBPSDU的頁面序列化/反序列化的其他資料庫頁面布局配置的位址空間。DBPSDU狀態位址空間1201可以包含關於當前活動的序列化/反序列化線程的數量的序列化/反序列化邏輯操作狀態資訊、關於序列化/反序列化線程的內存消耗的統計、處理的頁面的數量以及可校正的/不可校正的錯誤狀態。
圖13是DSM記憶體映射的描繪。排序演算法微碼位址空間1300可以用作對演算法微碼進行排序的儲存記憶體,由DSA邏輯使用並用於反序列化資料排序的SAM 530。排序演算法更新為透過應用適當(更適合)的演算法對資料進行排序來提高排序速度提供了可能性。例如,DSM狀態頁面位址空間1301可以包含關於SSD排序加速器操作的狀態資訊:例如待處理的NAND頁面的數量、排序的頁面的數量、待合併的頁面的數量以及合併頁面的數量。DSM控制位址空間1302可以儲存關於為排序和合併操作而保留的SRAM和DRAM最大的容量以及在DSA和DMRA之間分配保留的SRAM/DRAM內存的配置。DSM的資料庫頁面儲存格式配置空間1200可以根據所需的資料庫頁面布局針對SSD排序邏輯進行配置。頁面儲存佈局可以在整個資料庫儲存系統中統一;因此,DSM和DBPSDU的配置空間可以針對頁面布局僅進行一次配置。在本發明的實施例中,在完成初始DSM和DBPSDU配置之後,可以提交資料庫排序任務而無需額外的DSM和DBPSDU配置開銷。
資料庫表排序任務可以透過上述供應商特定的排序命令提交給SSD資料排序加速器15,以下將上述供應商特定的排序命令稱為SSD排序命令(SSDSC)。SSDSC包含以下輸入參數:a)對資料集進行排序的列,b)待執行排序的一組頁面ID,以及c)排序的資料庫的寫入頁面ID記錄的目標主機記憶體位址。在完成排序命令之後,SSD控制器的DSM透過發送相應的完成狀態命令通知主機。
圖9A和圖9B是根據本發明又一實施例的流程圖,它們共同描繪了SSD排序命令運行流程的一個示例。以下參照圖5、圖8、圖9A、圖9B、圖12與圖13描述運行流程:
1. 如圖9A和圖9B所示,HIL 523識別內部SSD排序命令並將其添加到等待運行隊列601,之後開始執行命令。
2. HIL從等待運行隊列601中取出SSD排序命令。
3. HIL通知DSM 519關於傳入的SSD排序命令。
4. DSM 519從HIL 523中取出待排序的NAND頁面ID。基於所提交的排序命令參數、DSM配置以及可用的計算和內存資源,DSM 519確定用於排序操作的最佳排序方法。
5. DSM 519使用例如圖12的DBPSDU記憶體映射和圖13的DSM記憶體映射為即將到來的排序任務執行保留記憶體、DBPSDU、DMRA和DSA計算資源(或處理器515、517、521)。用於保存原始NAND頁面的分配的內存量和計算資源的數量與以下兩者相關:可獨立運行的並行排序線程數量和總資料集排序時間。
6. 在資源保留之後,DSM 519通知FTL 525開始從NAND 527獲取資料庫頁面。
7. 如下所述,可以利用並行處理“a”和“b”(分別對應於圖9A和圖9B):
a. 雖然在圖9A中透過附加細節進行了描述,但是當頁面開始到達控制器記憶體(SRAM或DRAM)時,也會通知DSA 515關於應該對哪些NAND頁面進行排序。
i. DSA 515通知DBPSDU 517讀取所需的原始資料庫頁面並將它們反序列化並儲存到DBPSDU內部高速緩存517a中。記錄被反序列化為包含定義排序順序的屬性以及元資料的資料結構,如圖7和圖8所示。
ii. 反序列化的記錄由DSA 515在DBPSDU內部高速緩存517a中進行初步排序。
iii. 在初步排序完成之後,排序的資料庫記錄被序列化並從內部高速緩存517a移動到SSD揮發性記憶體,例如SRAM/DRAM。從該步驟得到的排序資料將隨後用於排序演算法的合併步驟。
iv. 如圖9A中的分支602所示,重複過程“a”(資料排序)中的步驟,直到所有的頁面都被排序為止。
b. 雖然在圖9B中透過附加細節進行了描述。DMRA 521將排序的資料子集合併到臨時揮發性記憶體中。
i. DSM 519提供準備好合併到DMRA 521的緩衝區ID。
ii. DMRA 521讀取資料以進行合併。當合併後的資料無法容納到SSD記憶體(例如SRAM/DRAM)中針對排序任務所分配的內存空間時,合併後的輸出將重新引導至DBPSDU 517進行序列化並進一步儲存到NAND 527。在頁面序列化完成之後,DBPSDU 517通知DSM 519並隨後通知FIL 525。
(1) DSM 519請求FIL 523將輔助元資料所伴隨的序列化排序資料持久化到NAND中。
iii. 如圖9A中的分支603所示,可能發生以下情況:資料合併步驟對從NAND 527加載的排序資料集運行,並且該排序資料集僅部分容納到針對排序任務所分配的內存中。在這種情況下,資料逐漸從NAND 527傳送到SSD揮發性記憶體SRAM/DRAM。在一個實施例中,僅傳送容納到針對合併操作所分配的內存中的資料量。
8. 重複上述步驟“a”和“b”,直到未排序的資料(或未合併的資料)可用為止。
9. 如圖9A和圖9B所示,在合併步驟完成之後,從NAND中讀取排序的輔助元資料。借助排序的輔助元資料,重現了發送到內部SSD排序的資料的排序順序。
10. 在605,HIL 523向主機返回排序資料的NAND頁面ID。頁面ID以正確的順序返回以保留排序的資料順序。
11. 如圖9A和圖9B所示,在605,在排序命令完成之後,當SSD控制器510已經處理了所有頁面時,HIL 523向SSD排序命令發起者(例如,資料庫儲存引擎507)發送命令完成通知和命令完成狀態。
如上所述,硬體加速資料庫排序SSD支持透過廠商特定命令、排序演算法更新命令進行排序演算法更新。SSD終端用戶在選擇排序演算法時可以有不同的標準。例如,優先考慮一種演算法而不是另一種演算法可能會受到演算法簡單性、運行時間、內存消耗、並行處理能力、穩定性以及關於輸入資料的假設的影響。將適當選擇的演算法應用於用於排序的輸入資料可以顯著改善排序時間。
因此,如上所述的本發明可以卸載主機RAM和CPU資源,可以降低功耗和主機介面利用率,並加快整個資料檢索過程。
以下提供了利用硬體加速資料庫排序的系統的一個示例。在該示例中,系統組件和屬性包括:
﹣具有PCIe介面的NVMe的資料庫搜索加速SSD。高速NVM(NVMe)是一種用於存取通常經由高速PCI(PCIe)匯流排附接的非揮發性儲存介質的邏輯裝置介面協議。
﹣在主機側,資料庫儲存系統透過由PCIe介面的NVMe與SSD控制器(例如,SSD控制器510中的CMM 529)聯接。資料庫儲存引擎(例如,主機505中的資料庫儲存引擎507)可以向SSD控制器510發出NVMe命令。
﹣SSD支持供應商特定的命令:設置/獲取DBPASDU 517、DSM 519、DMRA 521和DSA 515的配置屬性。
﹣SSD支持供應商特定的命令:更新DSA微碼,以更新儲存在SAM 530中的DSA排序演算法。
﹣SSD支持供應商特定的命令:SSD排序命令。
﹣資料庫儲存系統知道映射到底層SSD頁面的資料庫文件。
在發出第一SSD排序命令之前,資料庫系統將DBPASDU 517和DSM 519配置為待使用的資料庫頁面布局格式。該示例中的資料庫系統使用PAX頁面格式。圖10是PAX頁面格式的一個示例的描繪。圖10中的表1004示出了在該示例中被映射到PAX頁面的雇主ID、姓名和服務期限的資料。
在該PAX格式佈局示例中:
﹣固定長度的屬性值儲存在“F最小”頁面中。在每個F最小頁面的末尾,有一個存在位向量,其中每個記錄有一個條目,其表示可空屬性(nullable attribute)的空值。可空屬性可以包含NULL值(沒有值)。存在位(present bit)設置為“0”表示屬性包含空值。存在位設置為“1”表示屬性包含根據其類型的值。
﹣可變長度屬性值儲存在“V-最小”頁面中。V-最小頁面透過指向每個值末尾的指針進行劃分(slot)。在圖10中,V最小頁面1002被偏移指針1000和1001劃分為兩個可變長度屬性。第一屬性,包含字符串值“Mike”,其從V最小頁面1002的開頭開始,從V最小頁面1002的開頭零偏移1005,並在偏移1000a處結束,即偏移指針1000指向偏移1000a。換言之,第一屬性由偏移位址1005和1000a劃分。第二屬性,包含字符串值“Isabella”,其從V最小頁面1002的偏移1000a開始,在偏移1001a處結束,即偏移量指針1001指向偏移1001a。第二屬性由偏移位址1000a和1001a劃分。空值由空指針表示。
每個新分配的頁面包含頁面頭1006,並且最小頁面的數量等於相關度。頁面頭包含屬性的數量、屬性大小(對於固定長度的屬性)、到最小頁面開頭的偏移、頁面上的當前記錄數以及仍然可用的總空間。在該示例中,有兩個F最小頁面,一個用於雇員ID屬性,一個用於雇用屬性的長度。姓名屬性(“Mike”或“Isabella”)是可變長度的字符串,因此它儲存在V最小頁面中。在每個V最小頁面的末尾到可變長度值的末尾有偏移。在圖10中,所描繪的表1004將被映射到NAND頁面1006中。
如前所述,DBPASDU 517和DSM 519被配置為對PAX頁面進行反序列化。在DBPASDU 517和DSM 519初始化之後,本發明的資料庫排序硬體加速SSD接收並執行排序任務。作為示例,假設資料庫儲存系統處理向/來自大型社交網絡資料庫的請求。在該示例中,硬體加速資料庫排序SSD的集群用作資料庫儲存引擎的儲存裝置,即接收和保留電子資料的實體裝置。該示例中的資料庫包含關於社交網絡帖子從1到10不等的流行度的資訊以及發佈日期。該示例中的資料庫儲存引擎將經常處置可以匯總給定日期間隔、地理位置的用戶帖子的查詢,並可以按受歡迎程度對過濾帖子進行排序。對於此類查詢,該示例中的資料庫儲存系統受益於將排序操作委託給硬體加速排序SSD,而不是在社交網絡資料庫儲存引擎的CPU中處理該操作。在該示例中,查詢結果集可能包含大約7億個滿足查詢搜索條件的條目。在查詢運行步驟的下一步中,將透過本發明的硬體加速資料庫排序SSD對結果集進行排序。
此外,在該示例中,可以在示例性排序期間進行以下運行步驟:
﹣由於用戶發佈的受歡迎程度,按字段排序,值在一個區間[1...10]內變化,因此如果應用非比較基礎排序演算法,則排序時間將得到明顯改善。因此,資料庫儲存引擎(例如,主機525中的資料庫引擎507)發出NVMe供應商特定的命令,更新SAM 530中的排序演算法微碼,並透過桶排序演算法微碼更新SAM排序演算法微碼。
﹣在下一步中,資料庫儲存引擎發出帶有所有必需參數的SSD排序命令。經由命令參數,SSD排序邏輯提供給NAND頁面ID,其包含用於排序的資料、按列索引排序、定義排序順序和其他輔助配置。
﹣在下一步中,SSD資料排序加速器15如以上討論的SSD排序命令運行流程中描述的那樣進行操作。
﹣在完成排序命令運行之後,主機中的資料庫儲存引擎507被給予作為排序查詢結果集的NAND頁面ID,使得該資料可以返回給資料庫查詢發起者。
圖11是示出根據本發明另一實施例的排序操作的示圖。如圖11所描繪的,該方法在1101接收來自主機的排序命令。在1103,回應於接收到排序命令,該方法透過確定用於儲存待排序的資料的至少一個儲存位置來配置儲存裝置以進行最佳排序。在1105,該方法利用可升級排序演算法來生成排序的資料子集,並基於指示待儲存待排序的資料的至少一個儲存位置來儲存排序的資料子集。在1107,該方法向主機提供排序的資料子集的頁面識別符(ID)。
透過該方法,確定至少一個儲存位置可以至少基於a)待排序的資料量和b)儲存裝置的記憶體中的可用儲存空間。該方法可以進一步從儲存裝置的記憶體中檢索資料庫頁面,將檢索到的資料庫頁面反序列化為包含定義排序順序的屬性以及元資料的資料結構,基於定義排序順序的屬性對反序列化的資料庫頁面進行排序,將未容納到控制器記憶體中的序列化的資料子集保存到NAND中,並且將排序的資料子集合併在一起以形成排序的資料子集的頁面識別符。該方法回應於接收到排序演算法更新命令,可以利用作為排序演算法更新命令的寫入資料而提供的排序/排列演算法來更新待用於資料排序的可升級排序演算法。該方法可以進一步將檢索到的資料庫頁面儲存在臨時儲存裝置中,對反序列化的資料庫頁面進行排序,對排序的資料庫頁面進行序列化,並將排序的資料庫頁面的序列化條目儲存在臨時儲存裝置中。該方法可以進一步配置多個儲存裝置以實現最佳排序,並將不同的排序任務引導至不同的多個儲存裝置。該方法可以進一步從儲存裝置讀取包括元資料的資料庫記錄,單獨處理包括元資料的每個資料庫記錄以確定彼此之間的記錄關係,並對排序的資料子集進行排列。該方法可以進一步保留用於生成排序的資料子集以及用於儲存來自先前步驟的排序的資料子集的內存。該方法可以更新用於對反序列化資料庫頁面進行排序的排序演算法。
該方法可以在具有儲存裝置的固態驅動器記憶體緩衝器、儲存裝置的NAND記憶體和儲存裝置的記憶體控制器的儲存裝置上運行,並且可以在固態驅動器記憶體緩衝器、NAND記憶體或控制器記憶體中的至少一個中保留內存。該方法在固態驅動器記憶體緩衝器沒有針對所有待排序資料的可用空間時,可以將用於排序的資料中的一些儲存到NAND記憶體中,並且該方法可以將來自固態驅動器記憶體緩衝器的資料合併到NAND記憶體中。
在本發明的一個實施例中,如上圖所示,一種用於對來自儲存裝置的資料進行加速排序的系統具有:a)用於主機和儲存裝置之間通信的主機介面,b)儲存裝置中用於儲存資料的記憶體;以及c)可重新配置SSD硬體加速器,包括儲存裝置中的處理器,與記憶體和主機介面通信,並被配置為a)透過分配用於儲存待排序的資料的至少一個儲存位置來配置儲存裝置以進行最佳排序,b)利用可升級排序演算法生成從記憶體中檢索到的資料的排序資料子集,c)基於指示待儲存待排序的資料的至少一個儲存位置來儲存排序的資料子集,以及d)向主機提供排序的資料子集的頁面識別符(ID)。
在資料加速排序的系統中,可重新配置SSD硬體加速器可以被配置為至少基於a)待排序的資料量和b)儲存裝置的記憶體中的可用儲存空間來分配至少一個儲存位置。在資料加速排序的系統中,可重新配置SSD硬體加速器包括以下的一個或多個:a)資料庫頁面序列化處理器,被配置為從儲存裝置的記憶體裝置中檢索資料庫頁面並將檢索到的資料庫頁面反序列化為包含定義排序順序的屬性以及元資料的資料結構;b)資料庫排序管理器處理器,被配置為基於定義排序順序的屬性,對反序列化的資料庫頁面進行排序;c)資料排序加速器處理器;以及d)資料合併加速器處理器,被配置為將排序的資料子集合併在一起以形成排序的資料子集的頁面識別符。
在資料加速排序的系統中,資料排序加速器處理器和資料合併加速器處理器被配置為利用演算法排序內存中配置的可升級排序演算法執行資料排序。
在資料加速排序的系統中,可重新配置SSD硬體加速器可以被配置為將檢索到的資料庫頁面儲存在臨時儲存裝置中,對反序列化的資料庫頁面進行排序,對排序的資料庫頁面進行序列化,並將排序的資料庫頁面的序列化條目儲存在臨時儲存裝置中。可重新配置SSD硬體加速器可以被配置為將不同的排序任務引導至不同的多個儲存裝置。此外,可重新配置SSD硬體加速器可以被配置為:從儲存裝置讀取包括元資料的資料庫記錄,單獨處理包括元資料的每個資料庫記錄以確定彼此之間的記錄關係,並對排序的資料子集進行排列。
在資料加速排序的系統中,可重新配置SSD硬體加速器可以被配置為保留用於生成排序的資料子集以及用於儲存排序的資料子集的內存。在資料加速排序的系統中,儲存裝置可以是儲存裝置的固態驅動器記憶體緩衝器、儲存裝置的NAND記憶體和儲存裝置的控制器記憶體,可重新配置SSD硬體加速器可以被配置為在固態驅動器記憶體緩衝器、NAND記憶體或控制器記憶體中的至少一個中保留內存。
在資料加速排序的系統中,可重新配置SSD硬體加速器可以被配置為當固態驅動器記憶體緩衝器沒有用於所有待排序資料的可用空間時,將資料中的一些傳輸到NAND記憶體。此外,可重新配置SSD硬體加速器可以被配置為將來自固態驅動器記憶體緩衝器的資料合併到NAND記憶體中。
儘管為了清楚和理解的目的已經詳細地示出和描述了前述實施例,但是本發明不限於所提供的細節。如本發明所屬技術領域中具有通常知識者根據前述公開內容將理解的,存在許多實施本發明的替代方式。因此,所公開的實施例是示例性的,而非限制性的。本發明旨在涵蓋所公開實施例的所有修改和替代。此外,所公開的實施例可以組合以形成另外的實施例。
實際上,本專利文件中描述的主題的實施方案和功能操作可以以包括本說明書中公開的結構及它們的等效結構或者它們中的一個或多個的組合的各種系統、數位電子電路實施,或者以計算機軟體、韌體或硬體實施。本說明書中描述的主題的實施方案可以被實施為一個或多個計算機程序產品(即,在有形和非暫時性計算機可讀介質上編碼的計算機程序指令的一個或多個模組),以由資料處理設備運行或控制資料處理設備的操作。計算機可讀介質可以是機器可讀儲存裝置、機器可讀儲存基底、記憶體裝置、影響機器可讀傳播信號的物質組成或者它們中的一個或多個的組合。術語“資料處理單元”或“資料處理設備”涵蓋用於處理資料的所有設備、裝置和機器(例如,包括可編程處理器、計算機或者多個處理器或計算機)。除了硬體之外,設備還可以包括為所討論的計算機程序創建運行環境的代碼,例如,構成處理器韌體、協議棧、資料庫管理系統、操作系統或者它們中的一個或多個的組合的代碼。
計算機程序(也稱為程序、軟體、軟體應用程序、腳本或代碼)可以以任何形式的編程語言(包括編譯或解釋語言)寫入,並且可以以任何形式進行部署,包括被部署為適用於在計算環境中使用的獨立程序,或者模組、組件、子例程或其他單元。計算機程序不必與文件系統中的文件相對應。程序可以儲存在保存其他程序或資料的文件的一部分(例如,標記語言文檔中儲存的一個或多個腳本)、專用於所討論的程序的單個文件或者多個協調文件(例如,儲存一個或多個模組、子程序或代碼的一部分的文件)中。計算機程序可以被部署為在一台計算機或者在位於一個站點或跨多站點分佈並透過通信網絡互連的多台計算機上運行。
本說明書中描述的過程和邏輯流程可以由一個或多個可編程處理器執行,該一個或多個可編程處理器運行一個或多個計算機程序,透過對輸入資料進行操作並生成資料來執行功能。過程和邏輯流程也可以由專用邏輯電路(例如,FPGA(現場可編程門陣列)或ASIC(專用積體電路))執行,並且設備也可以被實施為專用邏輯電路。
適用於運行計算機程序的處理器例如包括通用微處理器和專用微處理器兩者以及任何種類的數位計算機的任何一個或多個處理器。通常,處理器將從只讀取記憶體或隨機存取記憶體或這兩者接收指令和資料。計算機的基本元件是用於執行指令的處理器以及用於儲存指令和資料的一個或多個記憶體裝置。通常,計算機還將包括用於儲存資料的一個或多個大容量儲存裝置(例如,磁、磁光盤或光盤),或者可操作地聯接以從用於儲存資料的一個或多個大容量儲存裝置(例如,磁、磁光盤或光盤)接收資料或向其傳送資料。然而,計算機不必具有這種裝置。適用於儲存計算機程序指令和資料的計算機可讀介質包括所有形式的非揮發性記憶體、介質和記憶體裝置,例如,包括半導體記憶體裝置(例如,EPROM、EEPROM和閃速記憶體裝置)。處理器和記憶體可以由專用邏輯電路補充或併入專用邏輯電路。
雖然本專利文件包含許多細節,但是這些細節不應被解釋為對任何發明或可以要求保護的任何發明的範圍的限制,而應被解釋為對特定發明的特定實施例可以進行的特定的特徵描述。本專利文件中單獨的實施例的上下文中描述的某些特徵也可以以單個實施例的組合來實施。相反,在單個實施例的上下文中描述的各種特徵也可以單獨地在多個實施例中實施,或者以任何適用的子組合來實施。此外,儘管以上可以將特徵描述為以某些組合而起作用,但是在一些情況下,可以從組合中排除組合的一個或多個特徵,並且組合可以關於子組合或子組合的變體。
類似地,雖然在圖式中以特定順序描繪了操作,但是這不應被理解為為了實現理想的效果需要以所示的特定順序或以連續的順序執行這些操作,或者需要執行所有示出的操作。此外,本專利文件中描述的實施例中的各種系統組件的分開不應被理解為在所有實施例中都需要這種分開。
本專利文件只描述了少量的實施方案和示例,並且可以基於本專利文件中描述和示出的內容得到其他實施方案、改進和變型。
2:系統
5:主機裝置
10:記憶體系統
15:SSD資料排序加速器
100:記憶體控制器
110:儲存裝置
120:控制組件
130:錯誤校正碼組件
140:主機介面
150:記憶體介面
160:匯流排
200:半導體記憶體裝置
210:記憶體單元陣列
211:儲存塊
220:控制電路
221:單元串
230:電壓生成電路
240:行解碼器
250:頁面緩衝器陣列
251:頁面緩衝器
260:列解碼器
270:輸入/輸出電路
505:主機
507:資料庫儲存引擎
508:記憶體
510:SSD控制器
515:DSA
517:DBPSDU
517a:高速緩存
519:DSM
521:DMRA
523:FIL
525:FTL
527:NAND
529:CMM
530:SAM
700:頁面m
700a:NAND頁面`ε
701:實體資料庫頁面映射表
1000:偏移指針
1000a:偏移
1001:偏移量指針
1001a:偏移
1002:V最小頁面
1003:NAND頁面
1004:表
1005:偏移
1006:NAND頁面
1200:資料庫頁面儲存格式配置空間
1201:DBPSDU狀態位址空間
1300:排序演算法微碼位址空間
1301:DSM狀態頁面位址空間
1302:DSM控制位址空間
ADDR:位址
BL0~BLm-1:位元線
CMD:命令
CSL:公共源極線
CTRL:控制信號
DATA:資料
DRAM:動態隨機存取記憶體
DSL:汲極選擇線
DST:汲極選擇電晶體
MC0~MCn-1:記憶體單元電晶體
MLC:多層單元
PWR:電力
QLC:四層單元
SLC:單層單元
SRAM:靜態隨機存取記憶體
SSL:源極選擇線
SST:源極選擇電晶體
TLC:三層單元
WL0~WLn-1:字元線
圖1是示出根據本發明的一個實施例的排序系統的方塊圖。
圖2是示出根據本發明的另一實施例的記憶體系統的方塊圖。
圖3是示出根據本發明的又一實施例的記憶體裝置的記憶區塊的電路圖。
圖4是示出根據本發明的一個實施例的記憶體裝置的不同類型單元的狀態分佈的示圖。
圖5是示出根據本發明的一個實施例的特定加速排序系統的方塊圖。
圖6是虛擬到實體資料庫表儲存映射方案的描述。
圖7是伴隨資料庫記錄字段的輔助元資料的描述。
圖8是資料庫表壓縮(約簡)為由儲存排序的表和輔助元資料的列形成的資料集的描述。
圖9A和圖9B是根據本發明的又一實施例的流程圖。
圖10是跨分區屬性(partition attributes across,PAX)頁面的描述。
圖11是示出根據本發明的另一實施例的排序操作的示圖。
圖12是示出根據本發明的又一實施例的DBPSDU記憶體映射的示圖。
圖13是示出根據本發明的又一實施例的DSM記憶體映射的示圖。
2:系統
5:主機裝置
10:記憶體系統
15:SSD資料排序加速器
100:記憶體控制器
200:半導體記憶體裝置
ADDR:位址
CMD:命令
CTRL:控制信號
DATA:資料
PWR:電力
Claims (21)
- 一種操作儲存裝置的方法,包括: 從主機接收排序命令; 回應於接收到所述排序命令,透過確定儲存待排序的資料的至少一個儲存位置來配置所述儲存裝置以進行最佳排序; 利用可升級排序演算法來生成排序的資料子集,並且基於指示待儲存所述待排序的資料的所述至少一個儲存位置來儲存所述排序的資料子集;並且 向所述主機提供所述排序的資料子集的頁面識別符,即所述排序的資料子集的頁面ID。
- 如請求項1所述的方法,其中確定所述至少一個儲存位置至少基於a)待排序的資料量和b)所述儲存裝置的記憶體中的可用儲存空間。
- 如請求項1所述的方法,其中利用所述可升級排序演算法包括: 從所述儲存裝置的記憶體中檢索資料庫頁面; 將檢索到的資料庫頁面反序列化為包含定義排序順序的屬性以及元資料的資料結構; 基於定義排序順序的屬性,利用所述可升級排序演算法對反序列化的資料庫頁面進行排序;以及 將所述排序的資料子集合併在一起以形成所述排序的資料子集的頁面識別符。
- 如請求項3所述的方法,進一步包括: 回應於接收到排序演算法更新命令, 利用作為所述排序演算法更新命令的寫入資料而提供的排序/排列演算法來更新待用於資料排序的所述可升級排序演算法。
- 如請求項3所述的方法,進一步包括: 將所述檢索到的資料庫頁面儲存在臨時儲存裝置中,並且 對所述反序列化的資料庫頁面進行排序, 對排序的資料庫頁面進行序列化,以及 將所述排序的資料庫頁面的序列化條目儲存在所述臨時儲存裝置中。
- 如請求項1所述的方法,其中配置所述儲存裝置包括: 配置多個儲存裝置以實現最佳排序;並且 將不同的排序任務引導至不同的多個儲存裝置。
- 如請求項1所述的方法,其中生成所述排序的資料子集包括: 從所述儲存裝置讀取包括元資料的資料庫記錄; 單獨處理包括所述元資料的每個資料庫記錄以確定彼此之間的記錄關係;並且 對所述排序的資料子集進行排列。
- 如請求項1所述的方法,進一步包括:保留生成所述排序的資料子集以及儲存所述排序的資料子集的內存。
- 如請求項1所述的方法,其中 所述儲存裝置包括所述儲存裝置的固態驅動器記憶體緩衝器、所述儲存裝置的NAND記憶體和所述儲存裝置的記憶體控制器,並且 保留所述內存包括在所述固態驅動器記憶體緩衝器、所述儲存裝置的所述NAND記憶體和所述儲存裝置的所述控制器記憶體中的至少一個中保留所述內存。
- 如請求項9所述的方法,進一步包括:當所述固態驅動器記憶體緩衝器沒有針對所有所述待排序的資料的可用空間時,將所述資料中的一些傳輸到所述NAND記憶體。
- 如請求項10所述的方法,進一步包括:將來自所述固態驅動器記憶體緩衝器的資料合併到所述NAND記憶體中。
- 一種對來自儲存裝置的資料進行加速排序之系統,所述系統包括: 主機介面,針對主機和儲存裝置之間通信; 所述儲存裝置中的記憶體,儲存資料;以及 可重新配置SSD硬體加速器,包括所述儲存裝置中的處理器,與所述記憶體和所述主機介面通信,並且a)透過分配儲存待排序的資料的至少一個儲存位置來配置所述儲存裝置以進行最佳排序,b)利用可升級排序演算法生成從所述記憶體中檢索到的資料的排序的資料子集,c)基於指示儲存待排序的資料的所述至少一個儲存位置來儲存所述排序的資料子集,並且d)向所述主機提供所述排序的資料子集的頁面識別符,即所述排序的資料子集的頁面ID。
- 如請求項12所述的系統,其中所述可重新配置SSD硬體加速器至少基於a)待排序的資料量和b)所述儲存裝置的記憶體中的可用儲存空間來分配所述至少一個儲存位置。
- 如請求項12所述的系統,其中所述可重新配置SSD硬體加速器包括以下的一個或多個:a)資料庫頁面序列化處理器,從所述儲存裝置的記憶體裝置中檢索資料庫頁面並且將檢索到的資料庫頁面反序列化為包含定義排序順序的屬性以及元資料的資料結構;b)資料庫排序管理器處理器,基於定義排序順序的屬性,利用所述可升級排序演算法對反序列化的資料庫頁面進行排序;c)資料排序加速器處理器;以及d)資料合併加速器處理器,將所述排序的資料子集合併在一起以形成所述排序的資料子集的頁面識別符。
- 如請求項12所述的系統,其中所述可重新配置SSD硬體加速器將所述檢索到的資料庫頁面儲存在臨時儲存裝置中,對反序列化的資料庫頁面進行排序,對排序的資料庫頁面進行序列化,並且將所述排序的資料庫頁面的序列化條目儲存在所述臨時儲存裝置中。
- 如請求項12所述的系統,其中所述可重新配置SSD硬體加速器將不同的排序任務引導至不同的多個儲存裝置。
- 如請求項12所述的系統,其中所述可重新配置SSD硬體加速器: 從所述儲存裝置讀取包括元資料的資料庫記錄; 單獨處理包括所述元資料的每個資料庫記錄以確定彼此之間的記錄關係;並且 對所述排序的資料子集進行排列。
- 如請求項12所述的系統,其中所述可重新配置SSD硬體加速器保留生成所述排序的資料子集以及儲存所述排序的資料子集的內存。
- 如請求項12所述的系統,其中所述儲存裝置包括所述儲存裝置的固態驅動器記憶體緩衝器、所述儲存裝置的NAND記憶體和所述儲存裝置的記憶體控制器,並且 其中所述可重新配置SSD硬體加速器在所述固態驅動器記憶體緩衝器、所述儲存裝置的所述NAND記憶體和所述控制器記憶體中的至少一個中保留內存。
- 如請求項19所述的系統,其中所述可重新配置SSD硬體加速器在所述固態驅動器記憶體緩衝器沒有針對所有所述待排序的資料的可用空間時,將所述資料中的一些傳輸到所述NAND記憶體。
- 如請求項20所述的系統,其中所述可重新配置SSD硬體加速器將來自所述固態驅動器記憶體緩衝器的資料合併到所述NAND記憶體中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/744,947 US20230367476A1 (en) | 2022-05-16 | 2022-05-16 | Hardware accelerated database sorting in solid state storage drives |
US17/744,947 | 2022-05-16 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202347118A true TW202347118A (zh) | 2023-12-01 |
Family
ID=88698800
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111123800A TW202347118A (zh) | 2022-05-16 | 2022-06-27 | 固態儲存驅動器中的硬體加速資料庫排序 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230367476A1 (zh) |
CN (1) | CN117111828A (zh) |
TW (1) | TW202347118A (zh) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9619155B2 (en) * | 2014-02-07 | 2017-04-11 | Coho Data Inc. | Methods, systems and devices relating to data storage interfaces for managing data address spaces in data storage devices |
US11604590B2 (en) * | 2018-09-06 | 2023-03-14 | International Business Machines Corporation | Metadata track entry sorting in a data storage system |
-
2022
- 2022-05-16 US US17/744,947 patent/US20230367476A1/en active Pending
- 2022-06-27 TW TW111123800A patent/TW202347118A/zh unknown
- 2022-08-01 CN CN202210914007.9A patent/CN117111828A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN117111828A (zh) | 2023-11-24 |
US20230367476A1 (en) | 2023-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11086537B2 (en) | Method and system to perform urgency level garbage collection based on write history of memory blocks | |
US11573742B2 (en) | Dynamic data placement for collision avoidance among concurrent write streams | |
US11966329B2 (en) | Address map caching for a memory system | |
US10860231B2 (en) | Memory system for adjusting map segment based on pattern and operating method thereof | |
US11989125B2 (en) | Storage device and operating method of memory controller | |
US11640354B2 (en) | Logical-to-physical mapping of data groups with data locality | |
US11676679B2 (en) | Two-layer code with low parity cost for memory sub-systems | |
US11756619B2 (en) | Key storage for sorted string tables using content addressable memory | |
CN113360089A (zh) | 用于存储器子系统的命令批处理 | |
US11675537B2 (en) | Controller for performing data input/output operation and memory management operation at the same time and operation method thereof | |
US11681706B2 (en) | System and method for accelerated data search of database storage system | |
CN116204112A (zh) | 存储器控制器及其操作方法 | |
CN116126748A (zh) | 解聚存储器系统和操作解聚存储器系统的方法 | |
CN115543860A (zh) | 数据处理系统及其操作方法 | |
TW202347118A (zh) | 固態儲存驅動器中的硬體加速資料庫排序 | |
CN115145479A (zh) | 区条带化的区名字空间存储器 | |
CN115048043A (zh) | 基于整合存储器区描述数据的操作 | |
CN111857565A (zh) | 存储器系统、数据处理系统及其操作方法 | |
US11562776B2 (en) | Performing read operations on grouped memory cells | |
US11657000B2 (en) | Controller and memory system including the same | |
CN110069428B (zh) | 系统数据压缩和重建方法及系统 | |
US20240193159A1 (en) | System and method for lsm compaction | |
US20240078048A1 (en) | Dynamic partition command queues for a memory device | |
KR20240087505A (ko) | Lsm 압축을 위한 시스템 및 방법 | |
KR20220159270A (ko) | 스토리지 장치 및 그 동작 방법 |