TWI768763B - 用於在儲存伺服器中進行儲存控制的方法、記憶裝置及其記憶體控制器、以及儲存伺服器 - Google Patents
用於在儲存伺服器中進行儲存控制的方法、記憶裝置及其記憶體控制器、以及儲存伺服器 Download PDFInfo
- Publication number
- TWI768763B TWI768763B TW110109066A TW110109066A TWI768763B TW I768763 B TWI768763 B TW I768763B TW 110109066 A TW110109066 A TW 110109066A TW 110109066 A TW110109066 A TW 110109066A TW I768763 B TWI768763 B TW I768763B
- Authority
- TW
- Taiwan
- Prior art keywords
- disk
- pages
- memory
- channels
- physical page
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
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)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
本發明提供一種用於在一儲存伺服器中進行儲存控制的方法及裝置。該方法可包含:針對設置於該儲存伺服器的複數個記憶裝置中的任一記憶裝置,分配該記憶裝置中的多個通道中的一通道以供對應於在該儲存伺服器上執行的複數個執行緒中的一執行緒之存取控制,其中該儲存伺服器組態該複數個記憶裝置以形成容錯式磁碟陣列;以及依據預定安排規則將資訊寫入該複數個記憶裝置的各組頁面以作為於一系列的邏輯存取單元中的一邏輯存取單元中的多個頁面,以藉助於分配該多個通道中的該通道給該執行緒來使得所述各組頁面分別被依序寫入該複數個記憶裝置。
Description
本發明係關於資料儲存,尤指一種用於在一儲存伺服器中進行儲存控制的方法以及裝置,例如,該儲存伺服器的一容錯式磁碟陣列(Redundant Array of Independent Disks, RAID)可被實施為一全快閃陣列(all flash array)。
當一傳統的容錯式磁碟陣列(Redundant Array of Independent Disks,簡稱為「RAID」)以多個固態硬碟(Solid State Drive, SSD)來實施時,寫入放大索引(write amplification index, WAI)相當高,特別是在一全快閃陣列(all flash array)儲存伺服器。例如,三個資料組(data set)可藉由兩個校驗碼組(parity-code set)來保護,且寫入一資料組的運作在傳統的RAID中可能需要三個讀取運作以及三個寫入運作以確保傳統的RAID能妥善地運作,其中其寫入放大索引等於三。由於在該些固態硬碟的每一者中的存取快閃記憶體的管理相當複雜,其寫入放大索引會達到二。於是,系統的整體寫入放大索引會是上述兩個寫入放大索引的乘積,諸如六(即寫入放大索引等於六)。因此,需要一種新穎的方法以及相關架構,以在沒有副作用或較不會帶來副作用的情況下解決這些問題。
因此,本發明之一目的在於提供一種用於在一儲存伺服器中進行儲存控制的方法以及裝置,以解決上述問題。
本發明之另一目的在於提供一種用於在一儲存伺服器中進行儲存控制的方法以及裝置,以在沒有副作用或較不會帶來副作用的情況下達到最佳(optimal)效能。
本發明之至少一實施例提供一種用於在一儲存伺服器中進行儲存控制的方法,其中該方法係應用於該儲存伺服器。該方法可包含:針對設置於該儲存伺服器的複數個記憶裝置中的任一記憶裝置,分配(assign)該記憶裝置中的多個通道中的一通道以供對應於在該儲存伺服器上執行的複數個執行緒(thread)中的一執行緒之存取控制,其中該儲存伺服器組態(configure)該複數個記憶裝置以形成該儲存伺服器的一容錯式磁碟陣列(Redundant Array of Independent Disks, RAID);以及於將一系列的邏輯存取單元(logical access unit, LAU)儲存至該容錯式磁碟陣列的期間,依據一預定安排規則將資訊寫入該複數個記憶裝置的各組頁面(page)以作為於該系列的邏輯存取單元中的一邏輯存取單元中的多個頁面,以藉助於分配該多個通道中的該通道給該執行緒來使得所述各組頁面分別被依序寫入該複數個記憶裝置,其中所述各組頁面中的一組頁面代表該複數個記憶裝置中的一對應的記憶裝置的多組頁面中的一組。
本發明之至少一實施例提供一種用來依據上述方法來控制該記憶裝置的運作之記憶體控制器,其中該記憶裝置可包含該記憶體控制器以及一非揮發性記憶體(non-volatile memory, NV memory),且該非揮發性記憶體可包含分別對應於該多個通道之複數組非揮發性記憶體元件。該記憶體控制器係用來分別透過該多個通道來對該複數組非揮發性記憶體元件進行存取運作。尤其是,該記憶體控制器係用來將該多個通道中之該通道分配為用於該執行緒的一專用通道。
本發明之至少一實施例提供一種依據上述方法來運作之該記憶裝置。該記憶裝置可包含一非揮發性記憶體,其中該非揮發性記憶體包含分別對應於該多個通道之複數組非揮發性記憶體元件;且該記憶裝置可另包含用來控制該記憶裝置的運作的一記憶體控制器,其中該記憶體控制器分別透過該多個通道來對該複數組非揮發性記憶體元件進行存取運作。
本發明之至少一實施例提供一種依據上述方法來運作之該儲存伺服器。該儲存伺服器可包含用來設置該複數個記憶裝置之一介面電路,且另包含用來控制該儲存伺服器的運作之一處理電路。於將該系列的邏輯存取單元儲存至該容錯式磁碟陣列的期間,該處理電路依據該預定安排規則將該資訊寫入該複數個記憶裝置的所述各組頁面以作為於該系列的邏輯存取單元中的該邏輯存取單元中的該些頁面,以藉助於分配該多個通道中的該通道給該執行緒來使得所述各組頁面分別被依序寫入該複數個記憶裝置。
本發明的方法以及相關裝置能確保該儲存伺服器在各種情況下均能妥善地運作。例如,該方法提供用於儲存控制的多個控制方案來提升該儲存伺服器的效能。相較於相關技術,依據本發明來實施的儲存伺服器能具有較佳的效能以及更小的寫入放大索引,其中其整體寫入放大索引可等於二。
本發明之實施例提供用於在一儲存伺服器中進行儲存控制的方法以及裝置,且該裝置可包含該儲存伺服器的至少一部分(例如一部分或全部)。例如,該裝置可包含該儲存伺服器的一部分(例如,執行對應於該方法之程式模組的一處理電路、該儲存伺服器中之一相關容錯式磁碟陣列(Redundant Array of Independent Disks,簡稱為「RAID」)、該RAID之一記憶裝置、及/或該記憶裝置中之一記憶體控制器)。又例如,該裝置可包含該記憶裝置。又例如,該裝置可包含該儲存伺服器的整體。
第1圖為依據本發明一實施例之一儲存伺服器100的示意圖。儲存伺服器100可包含用來控制儲存伺服器100之運作的一處理電路110(例如,至少一處理器、以及相關電路諸如隨機存取記憶體(Random Access Memory, RAM)及匯流排等)、一介面電路121諸如用於將儲存伺服器100耦接到至少一網路的一網路介面電路、以及用於將多個儲存裝置或記憶裝置(例如,一或多個硬式磁碟機(Hard Disk Drive, HDD)及/或一或多個固態硬碟(Solid State Drive, SSD))耦接至儲存伺服器100的另一介面電路122。例如,這些儲存裝置或記憶裝置可包含用來當作儲存伺服器100之一系統碟的一儲存裝置130、以及一組記憶裝置諸如N個記憶裝置Disk(0)、Disk(1)、…、及Disk(N - 1),其中符號「N」可代表大於一的正整數。依據本實施例,執行程式模組110P的處理電路110可用來依據該方法控制儲存伺服器100的運作,介面電路121諸如該網路介面電路可用來提供有線或無線網路連接,以及介面電路122可符合一特定標準(例如串行高級技術附件(Serial Advanced Technology Attachment,簡稱為「串行ATA」或「SATA」)標準、外設組件互連(Peripheral Component Interconnect, PCI)標準、快捷外設互連(Peripheral Component Interconnect Express, PCIe)標準等中之任一者),並且可依據該特定標準進行通訊。另外,執行程式模組110P的處理電路110可透過介面電路122存取儲存裝置130以及記憶裝置Disk(0)、Disk(1)、…、及Disk(N - 1),並且可組態(configure)記憶裝置Disk(0)、Disk(1)、…、及Disk(N - 1)以形成儲存伺服器100的一RAID。為便於理解,於第1圖所示之架構中的儲存伺服器100以及相關電路/模組/裝置(例如,執行程式模組110P的處理電路110、該RAID、以及記憶裝置Disk(0)、Disk(1)、…、及Disk(N - 1)中的任一者)可分別作為上述儲存伺服器及其相關電路/模組/裝置(例如,執行對應於該方法之程式模組的該處理電路、該儲存伺服器中的相關RAID以及該記憶裝置)的例子。
如第1圖所示,程式模組110P可包含各種類型的模組/子模組,諸如儲存作業(Storage Work)及其子模組、連網(Networking)、健康監控(Health Monitoring)、使用者/系統管理控制(User/Administration Control)以及故障轉移(Failover),且該儲存作業可包含卷控制(Volume Control)114(其可包含快照(Snapshot)、服務品質(Quality of Service,可簡稱QoS)、以及包含有區塊(Block)、檔案系統以及物件的資料類型服務(Data Type Service),其中上述資料類型服務可用來提供如區塊、檔案系統及物件的各種資料類型的服務)、重複數據刪除(Deduplication,可簡稱Dedupe)113、資料緩衝器112(其可包含快取(Caching)以及壓縮)、以及快閃陣列控制111,其中這些模組/子模組的名字可分別指出其相關功能。
第2圖繪示對應於運行於儲存伺服器100上的多個執行緒(thread)的RAID存取的一個例子。一執行緒能被視為能由一排程器(scheduler)獨立管理之最小的被編程指令(instruction)的序列(最小指令序列)。為便於理解,假設N = 5,且記憶裝置Disk(0)、Disk(1)、…、及Disk(N - 1)可包含記憶裝置Disk(0)、Disk(1)、…、及Disk(4),但本發明不限於此。當多個執行緒諸如執行緒{Th(0), …, Th(7)}正在運行於處理電路110以存取該RAID,執行緒{Th(0), …, Th(7)}中的每一者通常會存取Disk(0)、Disk(1)、…、及Disk(4)的全部。於是,記憶裝置Disk(0)、Disk(1)、…、及Disk(4)中之每一者可被執行緒{Th(0), …, Th(7)}的全部(也就是全體的執行緒{Th(0), …, Th(7)})存取。本發明的方法以及裝置能妥善地控制存取運作,以分別在各種狀況下達到最佳效能。更進一步的細節將於後續段落說明。
第3圖繪示分配(assign)記憶裝置300中之多個通道諸如的通道{Ch(0), …, Ch(M -1)}中之一者以供對應於一執行緒之存取控制的一個例子,其中符號「M」可代表大於一的正整數。為便於理解,假設M = 8,且通道{Ch(0), …, Ch(M -1)}可包含通道{Ch(0), …, Ch(7)},但本發明不限於此。記憶裝置300可作為記憶裝置Disk(0)、Disk(1)、…、及Disk(N - 1)中之任一記憶裝置Disk(n)的例子,其中符號「n」可代表在區間[0, N - 1]內的正整數。依據本實施例,記憶裝置300可包含一記憶體控制器310以用來控制記憶裝置300的運作,且可另包含一非揮發性記憶體(non-volatile memory, NV memory)320(例如一快閃記憶體)以用來儲存資料。例如,非揮發性記憶體320可包含一或多個非揮發性記憶體元件(例如,一或多個快閃記憶體裸晶、或一或多個快閃記憶體晶片),諸如分別對應於通道{Ch(0), …, Ch(M - 1)}(例如M = 8)的複數組非揮發性記憶體元件。記憶體控制器310可依據本發明的方法來控制記憶裝置300的運作,以分別透過通道{Ch(0), …, Ch(M - 1)}對該複數組非揮發性記憶體元件進行存取運作(例如讀取或寫入)。尤其是,記憶體控制器310可分配通道{Ch(0), …, Ch(M - 1)}中之任一通道Ch(m)以作為用於一執行緒諸如執行緒Th(m)的一專用通道(例如,符號「m」可代表在區間[0, M - 1]內的正整數)。例如,在m = 0的情況下,記憶體控制器310可將通道Ch(0)分配給執行緒Th(0),並且亦可將關聯的(尤其,分配到的)該組非揮發性記憶體元件(例如對應於通道Ch(0)的該組非揮發性記憶體元件,諸如透過通道Ch(0)之晶片啟用(Chip Enable, CE)訊號{CE0, CE1, …, CE7}來控制的該組非揮發性記憶體元件)分配給執行緒Th(0)。m的數值可予以變化,且其餘可依此類推。類似地,在m = 7的情況下,記憶體控制器310可將通道Ch(7)分配給執行緒Th(7),並且亦可將關聯的(尤其,分配到的)該組非揮發性記憶體元件(例如對應於通道Ch(7)的該組非揮發性記憶體元件,諸如透過通道Ch(7)之晶片啟用訊號{CE0, CE1, …, CE7}來控制的該組非揮發性記憶體元件)分配給執行緒Th(7)。請注意,一個通道能被分配給兩個以上的執行緒,只要該通道是分配來專用於所述兩個以上的執行緒即可。類似地,一或多個通道能被分配給一個執行緒。另外,執行緒與通道之間的映射關係能依據需求動態地設定。
第4圖為依據本發明一實施例繪示之於儲存伺服器100的該RAID中的某些邏輯存取單元(logical address unit, LAU)。為便於理解,假設N = 5(例如在RAID中有記憶裝置Disk(0)、Disk(1)、Disk(2)、Disk(3)及Disk(4)),且在記憶裝置300中之一邏輯存取單元的大小以及區塊、頁面(page)等相關的大小可分別等於某些預定值(例如,該邏輯存取單元可包含 (12 * N)個頁面,其於該邏輯存取單元中12個頁面每磁碟(page per disk),一單階細胞(Single Level Cell, SLC)區塊可包含三個頁面,且一四階細胞(Quadruple Level Cell, QLC)可包含12個頁面),但本發明不限於此。
依據本實施例,處理電路110(例如運行其上之快閃陣列控制111)可控制該RAID接續地儲存多個頁面的資料諸如資料組(例如D1、D2、D3、D4、D5、D6等資料;於第4圖中繪示為資料頁面諸如帶有資料的頁面,以便於理解)以及相關的多個頁面的校驗碼(例如P1、Q1、P2、Q2等校驗碼;於第4圖中繪示為校驗碼頁面諸如帶有校驗碼的頁面,以便於理解),並且以記憶裝置Disk(3)及Disk(4)中之兩個頁面的校驗碼(例如P1及Q1)來保護記憶裝置Disk(0)、Disk(1)及Disk(2)中之三個頁面的資料組(例如D1、D2及D3)。例如,處理電路110(例如運行其上之快閃陣列控制111)可將於如第4圖所示之這多列(row)頁面中之一特定列內的三個頁面的資料組(例如第一列頁面的D1、D2及D3)寫入該RAID並且藉由利用各自的錯誤更正碼(Error Correction Code, ECC)編碼方法來依據於該特定列中之該三個頁面的資料組產生兩個頁面的校驗碼(例如P1及Q1),並且將對應於該特定列之該兩個頁面的校驗碼(例如P1及Q1)寫入該RAID。尤其是,處理電路110(例如運行其上之快閃陣列控制111)可對多個其它列(例如下一列以及後續的列,諸如第4圖所示之該多列頁面當中的其它列)進行類似的運作以接續地將該多個其它列寫入該RAID,且因此可將一系列的邏輯存取單元{LAU(0), LAU(1), …}寫入該RAID,但本發明不限於此。
另外,當將在該系列的邏輯存取單元中的複數個頁面諸如上列這些頁面寫入該RAID時,處理電路110(例如運行其上之快閃陣列控制111)可分別為該複數個頁面記錄多個系統邏輯區塊位址(System Logic Block Address, S_LBA)與多個磁碟虛擬實體頁面位址(Disk Pseudo Physical Page Address, D_P_PPA)之間的多個關係以用於該複數個頁面的存取控制。例如,快閃陣列控制111的至少一上層(例如一或多個上層,諸如資料緩衝器112、重複數據刪除113、及/或卷控制114)可傳送該多個系統邏輯區塊位址至快閃陣列控制111以要求分別在該多個系統邏輯區塊位址存取資訊,並且快閃陣列控制111可將該多個磁碟虛擬實體頁面位址(例如{P0, 0
, P1, 0
, P2, 0
, P3, 0
, P4, 0
}、{P0, 1
, P1, 1
, P2, 1
, P3, 1
, P4, 1
}等)分配給對應的記憶裝置以供於該RAID中之該多個磁碟虛擬實體頁面位址存取該些頁面,其中快閃陣列控制111可以用寫入重定向(Redirect-On-Write, ROW)的方式進行這些運作,但本發明不限於此。請參考第4圖,為了便於理解,磁碟虛擬實體頁面位址{P0, 0
, P1, 0
, P2, 0
, P3, 0
, P4, 0
}、{P0, 1
, P1, 1
, P2, 1
, P3, 1
, P4, 1
}等在第4圖中是分別以標記「@」繪示於該些列的資料及校驗碼頁面{D1, D2, D3, P1, Q1}、{D4, D5, D6, P2, Q2}等的旁邊,以指出這些頁面是分別儲存於{P0, 0
, P1, 0
, P2, 0
, P3, 0
, P4, 0
}, {P0, 1
, P1, 1
, P2, 1
, P3, 1
, P4, 1
}等。例如,處理電路110(例如運行其上之快閃陣列控制111)可將頁面{{D1, D2, D3, P1, Q1}, {D4, D5, D6, P2, Q2}, …}的該多個系統邏輯區塊位址與磁碟虛擬實體頁面位址{{P0, 0
, P1, 0
, P2, 0
, P3, 0
, P4, 0
}, {P0, 1
, P1, 1
, P2, 1
, P3, 1
, P4, 1
}, …}之間的該些關係記錄於至少一系統邏輯區塊位址對磁碟虛擬實體頁面位址表(S_LBA-to-D_P_PPA table)(例如一或多個系統邏輯區塊位址對磁碟虛擬實體頁面位址表)。
依據某些實施例,上述至少一系統邏輯區塊位址對磁碟虛擬實體頁面位址表可包含一單一系統邏輯區塊位址對磁碟虛擬實體頁面位址表,其中該單一系統邏輯區塊位址對磁碟虛擬實體頁面位址表可用來儲存頁面{{D1, D2, D3, P1, Q1}, {D4, D5, D6, P2, Q2}, …}的該多個系統邏輯區塊位址與磁碟虛擬實體頁面位址{{P0, 0
, P1, 0
, P2, 0
, P3, 0
, P4, 0
}, {P0, 1
, P1, 1
, P2, 1
, P3, 1
, P4, 1
}, …}之間的該些關係的全部。
依據某些實施例,上述至少一系統邏輯區塊位址對磁碟虛擬實體頁面位址表可包含一主要系統邏輯區塊位址對磁碟虛擬實體頁面位址表,其包含分別對應於記憶裝置Disk(0)、Disk(1)、Disk(2)、Disk(3)及Disk(4)的一組系統邏輯區塊位址對磁碟虛擬實體頁面位址子表,其中該組系統邏輯區塊位址對磁碟虛擬實體頁面位址子表中之每一系統邏輯區塊位址對磁碟虛擬實體頁面位址子表可用來儲存頁面{{D1, D2, D3, P1, Q1}, {D4, D5, D6, P2, Q2}, …}的該多個系統邏輯區塊位址與磁碟虛擬實體頁面位址{{P0, 0
, P1, 0
, P2, 0
, P3, 0
, P4, 0
}, {P0, 1
, P1, 1
, P2, 1
, P3, 1
, P4, 1
}, …}之間的該些關係的一部分,諸如對應於記憶裝置Disk(0)、Disk(1)、Disk(2)、Disk(3)及Disk(4)中之一者的部分,但本發明不限於此。
第5圖為依據本發明一實施例繪示之關於儲存伺服器100的該RAID之不同類型的位址之間的某些映射關係。針對每一通道(例如通道Ch(m)),執行快閃陣列控制111的處理電路110可記錄頁面{D1, D2, D3, P1, Q1, D4, …}的系統邏輯區塊位址{S_LBA(D1), S_LBA(D2), S_LBA(D3), S_LBA(P1), S_LBA(Q1), S_LBA(D4), …}與磁碟虛擬實體頁面位址{P0, 0
, P1, 0
, P2, 0
, P3, 0
, P4, 0
, P0, 1
, …}之間的該些關係,並且可在系統邏輯區塊位址{S_LBA(D1), S_LBA(D2), S_LBA(D3), S_LBA(P1), S_LBA(Q1), S_LBA(D4), …}與磁碟虛擬實體頁面位址{P0, 0
, P1, 0
, P2, 0
, P3, 0
, P4, 0
, P0, 1
, …}之間進行轉譯以存取磁碟層(例如記憶裝置Disk(0)、Disk(1)、Disk(2)、Disk(3)及Disk(4))。為便於理解,第5圖的左下角附近所示之系統邏輯區塊位址對磁碟虛擬實體頁面位址表可作為上述單一系統邏輯區塊位址對磁碟虛擬實體頁面位址表的一個例子,並且第5圖右半部所示之這一系列的系統邏輯區塊位址對磁碟虛擬實體頁面位址表及其組合的整體可分別作為該組系統邏輯區塊位址對磁碟虛擬實體頁面位址子表以及上述主要系統邏輯區塊位址對磁碟虛擬實體頁面位址表的例子,但本發明不限於此。
依據某些實施例,執行快閃陣列控制111的處理電路110可自第5圖左下角附近所示之系統邏輯區塊位址對磁碟虛擬實體頁面位址表取得第5圖右半部所示之該系列的系統邏輯區塊位址對磁碟虛擬實體頁面位址表之各自的表內容,以產生對應於記憶裝置Disk(n)的系統邏輯區塊位址對磁碟虛擬實體頁面位址子表,諸如該系列的系統邏輯區塊位址對磁碟虛擬實體頁面位址表中之用於記憶裝置Disk(0)(例如n = 0)的第0個系統邏輯區塊位址對磁碟虛擬實體頁面位址表、用於記憶裝置Disk(1)(例如n = 1)的第1個系統邏輯區塊位址對磁碟虛擬實體頁面位址表等。請注意,在用於記憶裝置Disk(n)的第n個系統邏輯區塊位址對磁碟虛擬實體頁面位址表中,磁碟虛擬實體頁面位址{Pn, 0
, Pn, 1
, Pn, 2
, …}中之多個虛擬實體頁面位址(Pseudo Physical Page Addresses, P_PPAs)能被依序地安排或排列,並且這些虛擬實體頁面位址可對應於在磁碟虛擬實體頁面位址{Pn, 0
, Pn, 1
, Pn, 2
, …}的標記的下標中的次要索引(secondary index){0, 1, 2, …}。如在第5圖中以虛線描繪的矩形中所示,於{P0, 0
, P0, 1
, P0, 2
, …}(n = 0)的下標中之這一序列的次要索引{0, 1, 2, …}以及於{P1, 0
, P1, 1
, P1, 2
, …}(n = 1)的下標中之這一序列的次要索引{0, 1, 2, …}可指出磁碟虛擬實體頁面位址{Pn, 0
, Pn, 1
, Pn, 2
, …}(例如n = 0、1、…等)中之該多個虛擬實體頁面位址能被依序地安排或排列。因此,執行快閃陣列控制111的處理電路110在存取記憶裝置Disk(n)時能在該RAID中對記憶裝置Disk(n)進行依序的存取控制。
第6圖為依據本發明一實施例繪示之針對第3圖所示之記憶裝置300的內部管理的某些實施細節。如第6圖左上角附近所示,磁碟虛擬實體頁面位址{Pn, 0
, Pn, 1
, Pn, 2
, …}(例如n = 0、1、…等)中的任一磁碟虛擬實體頁面位址可包含一磁碟號碼(標示為「Disk#」)、一區塊號碼(標示為「Block#」)以及一頁面號碼(標示為「Page#」),且在該磁碟虛擬實體頁面位址中之該虛擬實體頁面位址可包含該區塊號碼(標示為「Block#」)以及該頁面號碼(標示為「Page#」)。例如,該磁碟虛擬實體頁面位址可包含複數個位元,其中該磁碟號碼(標示為「Disk#」)、該區塊號碼(標示為「Block#」)以及該頁面號碼(標示為「Page#」)可分別包含一最高位元(most significant bit, MSB)、多個次要(secondary)位元或較高位元、以及多個剩餘位元或較低位元,但本發明不限於此。依據本實施例,針對每一通道(例如通道Ch(m)),記憶體控制器310可自磁碟虛擬實體頁面位址{Pn, 0
, Pn, 1
, Pn, 2
, …}取得多個虛擬實體頁面位址區塊號碼(標示為「P_PPA Block#」)(例如,磁碟虛擬實體頁面位址{Pn, 0
, Pn, 1
, Pn, 2
, …}的該多個虛擬實體頁面位址中之該些區塊號碼(標示為「Block#」)),並且可將該多個虛擬實體頁面位址區塊號碼(標示為「P_PPA Block#」)與多個可用實體區塊位址(Usable Physical Block Addresses, U_PBAs)之間的多個關係記錄至一基於區塊的(block-based)映射表諸如第6圖所示之映射表,尤其是,亦可將所記錄的虛擬實體頁面位址區塊號碼所對應的該些區塊的每一者之相關的區塊類型記錄下來。例如,記憶體控制器310可自相對應的磁碟虛擬實體頁面位址(諸如該基於區塊的映射表中之對應列的表內容的左手邊附近所示之磁碟虛擬實體頁面位址)取得虛擬實體頁面位址區塊號碼{A1, A2, A3, A4, A5, A6, A7, A8, …},並且可記錄虛擬實體頁面位址區塊號碼{A1, A2, A3, A4, A5, A6, A7, A8, …}、區塊類型(例如符號「S」,其可代表單階細胞區塊)、以及可用實體區塊位址{U_PBA(A1), U_PBA(A2), U_PBA(A3), U_PBA(A4), U_PBA(A5), U_PBA(A6), U_PBA(A7), U_PBA(A8), …},以指出該多個虛擬實體頁面位址區塊號碼(標示為「P_PPA Block#」)與該多個可用實體區塊位址之間的該多個關係。記憶體控制器310可自單階細胞區塊將資訊收集至四階細胞區塊中,以達到較佳的存取效能。例如,自處理電路110傳送的某資料D應被儲存於該些記憶裝置中。資料D應先被儲存至一記憶體的多個單階細胞區塊中,接著記憶體控制器310可在之後將於該多個單階細胞中的資料D複製至一四階細胞區塊中。記憶體控制器310可更新該基於區塊的映射表,尤其,可記錄區塊類型(例如符號「Q」,其可代表四階細胞區塊)以及可用實體區塊位址{U_PBA(A1)’, U_PBA(A2)’, U_PBA(A3)’, U_PBA(A4)’, U_PBA(A5)’, U_PBA(A6)’, U_PBA(A7)’, U_PBA(A8)’, …},以指出該多個虛擬實體頁面位址區塊號碼(標示為「P_PPA Block#」)與該多個可用實體區塊位址之間的最新的關係。
第7圖為依據本發明一實施例繪示之第3圖所示之記憶裝置300中之某些依序的存取運作(例如寫入運作以及抹除運作)。針對每一通道(例如通道Ch(m)),記憶體控制器310可依序地將該些頁面(例如資料及校驗碼頁面諸如上述者)寫入多個單階細胞區塊,並且可藉由將資訊自該多個單階細胞區塊收集至多個四階細胞區塊來依序地進行壓縮,尤其是,可於壓縮(收集)後依序地抹除該多個單階細胞區塊,其中寫入運作(例如寫入該多個單階細胞區塊)以及抹除運作(例如抹除該多個單階細胞區塊)能在各自的循環中依序地進行。另外,記憶體控制器310可依序地將收集自該多個單階細胞區塊的該資訊寫入該多個四階細胞區塊,並且可依序地對該多個四階細胞區塊進行記憶體控制器310所觸發的壓縮運作,尤其,可於記憶體控制器310所觸發的壓縮運作之後依序地抹除該多個四階細胞區塊,其中寫入運作(例如寫入該多個四階細胞區塊)以及抹除運作(例如抹除該多個四階細胞區塊)能在各自的循環中依序地進行。由於有多個執行緒分別被分配去該些磁碟的專用的通道,對應於該些執行緒的存取運作通常使得該資料均勻地被寫入至對應於通道Ch(m)的該組非揮發性記憶體中,基於本發明的方法以及裝置,依序的控制確實是可行的(workable)。
第8圖為依據本發明一實施例繪示之多個可用實體區塊位址與多個快閃實體區塊位址(Flash Physical Block Address, F_PBA)之間的某些映射關係。由於可能有某些損壞的區塊(為便於理解,標示為「X」),記憶體控制器310可記錄該多個可用實體區塊位址與該多個快閃實體區塊位址之間的該些映射關係,並且依據該多個可用實體區塊位址來使用多個可用區塊。另外,記憶體控制器310可將該多個可用區塊安排至一資料區(data region)以及一備用區(spare region)。例如,記憶體控制器310可利用於該資料區中的該些區塊來儲存使用者資料,並且可利用於該備用區中的該些區塊來進行內部管理,但本發明不限於此。
依據某些實施例,針對一第一執行緒(例如執行緒{Th(0), …, Th(7)}中之一者),當該上層要求於一系統邏輯區塊位址寫入第一資訊,快閃陣列控制111可將該系統邏輯區塊位址轉譯為一磁碟虛擬實體頁面位址,並且將一主裝置寫入命令以及該磁碟虛擬實體頁面位址傳送至該磁碟層(例如記憶裝置Disk(0)、Disk(1)、Disk(2)、Disk(3)及Disk(4))。以記憶裝置300作為記憶裝置Disk(0)、Disk(1)、…、及Disk(N - 1)(例如N = 5)中之記憶裝置Disk(n)的一個例子,記憶體控制器310可自該磁碟虛擬實體頁面位址取得一虛擬實體頁面位址,並且將一運作命令諸如一寫入命令傳送至非揮發性記憶體320,以在非揮發性記憶體320中的且較佳在對應於該第一執行緒之一通道中的該虛擬實體頁面位址寫入該第一資訊。例如,記憶體控制器310可將該磁碟虛擬實體頁面位址轉譯為一可用實體區塊位址,並且將該可用實體區塊位址轉譯為一快閃實體區塊位址,以將該第一資訊寫入於該快閃實體區塊位址的對應頁面中,但本發明不限於此。
另外,針對一第二執行緒(例如執行緒{Th(0), …, Th(7)}中之另一者),當該上層要求在一系統邏輯區塊位址寫入第二資訊,快閃陣列控制111可將該系統邏輯區塊位址轉譯為一磁碟虛擬實體頁面位址,並且將一主裝置寫入命令以及該磁碟虛擬實體頁面位址傳送至該磁碟層(例如記憶裝置Disk(0)、Disk(1)、Disk(2)、Disk(3)及Disk(4))。以記憶裝置300作為記憶裝置Disk(0)、Disk(1)、…、及Disk(N - 1)(例如N = 5)中之記憶裝置Disk(n)的一個例子,記憶體控制器310可自該磁碟虛擬實體頁面位址取得一虛擬實體頁面位址,並且將一運作命令諸如一寫入命令傳送至非揮發性記憶體320,以在非揮發性記憶體320中的且較佳在對應於該第二執行緒之一通道中的該虛擬實體頁面位址寫入該第二資訊。例如,記憶體控制器310可將該磁碟虛擬實體頁面位址轉譯為一可用實體區塊位址,並且將該可用實體區塊位址轉譯為一快閃實體區塊位址,以將該第二資訊寫入於該快閃實體區塊位址的對應頁面中,但本發明不限於此。
依據某些實施例,當該上層要求於一系統邏輯區塊位址讀取資訊(例如該第一資訊、該第二資訊等),快閃陣列控制111以及記憶體控制器310可以用類似的方式分別進行位址轉譯運作。為簡明起見,這些實施例中類似的細節在此不贅述。
第9圖為依據本發明一實施例之用於在該儲存伺服器中進行儲存控制的上述方法的工作流程。該方法能應用於儲存伺服器100(其包含有執行對應於該方法的程式模組110P的處理電路110),其中記憶裝置Disk(0)、Disk(1)、…、及Disk(N - 1)(例如多個固態硬碟)可被設置於儲存伺服器100以形成該RAID諸如一全快閃陣列(All Flash Array, AFA),且執行對應於該方法的程式模組110P的處理電路110可依據該方法控制儲存伺服器100的運作。例如,記憶裝置Disk(0)、Disk(1)、…、及Disk(N - 1)中之每一記憶裝置,諸如上述記憶裝置Disk(n),可包含用於控制該記憶裝置之運作的一記憶體控制器以及用於儲存資料的一非揮發性記憶體(例如一快閃記憶體),諸如第3圖所示之記憶體控制器310以及非揮發性記憶體320。
在步驟S10中,儲存伺服器100(例如處理電路110)可組態設置於儲存伺服器100的複數個記憶裝置,諸如記憶裝置Disk(0)、Disk(1)、…、及Disk(N - 1),以形成儲存伺服器100的該RAID。
在步驟S20中,針對記憶裝置Disk(n)諸如記憶裝置300,記憶體控制器310可分配該記憶裝置中的多個通道中的一通道,諸如通道{Ch(0), …, Ch(M - 1)}中的通道Ch(m),以供對應於在儲存伺服器100上執行的複數個執行緒中的一執行緒(諸如Th(m))之存取控制。以記憶裝置300為記憶裝置Disk(n)的一個例子,於記憶裝置300中的非揮發性記憶體320可包含分別對應於通道{Ch(0), …, Ch(M - 1)}的該複數組非揮發性記憶體元件,其中該複數組非揮發性記憶體元件的每一組係專用於通道{Ch(0), …, Ch(M - 1)}中的一者。
在步驟S30中,於將該系列的邏輯存取單元{LAU(0), LAU(1), …}儲存至該RAID的期間,儲存伺服器100(例如處理電路110)可依據一預定安排規則(諸如第4圖所示安排之安排規則)將資訊寫入該複數個記憶裝置的各組頁面以作為於該系列的邏輯存取單元{LAU(0), LAU(1), …}中的一邏輯存取單元中的該些頁面,以藉助於分配該多個通道中的該通道給該執行緒來使得所述各組頁面分別被依序寫入該複數個記憶裝置。例如,所述各組頁面可分別代表於該邏輯存取單元中之各行(column)頁面,諸如第4圖中於多個邏輯存取單元(例如LAU(0)、LAU(1)等)中之一者中的五行頁面。依據該預定安排規則,處理電路110可將該資訊輪流(例如,如第4圖所示,重複地從記憶裝置Disk(0)至記憶裝置Disk(4)來進行)寫入至於該邏輯存取單元中之所述各行頁面。以邏輯存取單元LAU(0)為步驟S30中所述之該邏輯存取單元的一個例子,該資訊可包含多個頁面的資料(例如D1、D2、D3、D4、D5、D6等)以及相關的多個頁面的校驗碼(例如P1、Q1、P2、Q2等),以及於該邏輯存取單元中之所述各行頁面可包含一第一組的行以及一第二組的行(例如,在此邏輯存取單元中的五行頁面中之在左手邊的這一組三行頁面以及在右手邊之這一組兩行頁面)以供分別儲存該多個頁面的資料以及所述相關的多個頁面的校驗碼。
依據本實施例,於將該系列的邏輯存取單元{LAU(0), LAU(1), …}的複數個頁面寫入該RAID的期間,處理電路110(例如運行其上的快閃陣列控制111)可分別為該複數個頁面記錄該多個系統邏輯區塊位址與該多個磁碟虛擬實體頁面位址之間的關係,以供進行該系列的邏輯存取單元{LAU(0), LAU(1), …}的存取控制,並且可分配該多個磁碟虛擬實體頁面位址(例如{P0, 0
, P1, 0
, P2, 0
, P3, 0
, P4, 0
}、{P0, 1
, P1, 1
, P2, 1
, P3, 1
, P4, 1
}等)至該複數個記憶裝置中之多個對應的記憶裝置,以用來存取於該RAID中的於該多個磁碟虛擬實體頁面位址的該些頁面,尤其,可將頁面{{D1, D2, D3, P1, Q1}, {D4, D5, D6, P2, Q2}, …}之該多個系統邏輯區塊位址與磁碟虛擬實體頁面位址{{P0, 0
, P1, 0
, P2, 0
, P3, 0
, P4, 0
}, {P0, 1
, P1, 1
, P2, 1
, P3, 1
, P4, 1
}, …}之間的關係記錄於上述至少一系統邏輯區塊位址對磁碟虛擬實體頁面位址表,其中上述至少一系統邏輯區塊位址對磁碟虛擬實體頁面位址表的多個子集合可用來維護分別對應於該複數個記憶裝置的存取控制。針對記憶裝置Disk(n)諸如記憶裝置300,記憶體控制器310可進行記憶裝置300的某些內部管理運作,諸如:解析(parse)於該多個磁碟虛擬實體頁面位址之一磁碟虛擬實體頁面位址中的一虛擬實體頁面位址,諸如第6圖所示之於磁碟虛擬實體頁面位址{Pn, 0
, Pn, 1
, Pn, 2
, …}(例如n = 0、1等)之任一者中之一虛擬實體頁面位址,以從該虛擬實體頁面位址取得一區塊號碼(標示為「Block#」);以及於因應該磁碟虛擬實體頁面位址進行存取的期間,依據如第6圖所示之該區塊號碼(標示為「Block#」)更新於記憶裝置300中之該基於區塊的映射表,以用來進行對應於該磁碟虛擬實體頁面位址之存取控制。因此,因應該磁碟虛擬實體頁面位址,記憶裝置300(例如記憶體控制器310)能在不參照一基於頁的(page-based)映射表的情況下存取對應於該磁碟虛擬實體頁面位址的一頁面。
另外,記憶裝置300(例如,記憶體控制器310)可分別透過該多個通道(諸如通道{Ch(0), …, Ch(M - 1)})對該複數組非揮發性記憶體進行存取運作(例如讀取或寫入)。由於記憶裝置300(例如記憶體控制器310)分配該通道以供對應於該執行緒的存取控制之用,並且由於儲存伺服器100(例如處理電路110)依據該預定安排規則(諸如第4圖所示安排之安排規則)寫入該資訊,所述各組頁面能藉助於分配該多個通道中的該通道給該執行緒以分別被依序寫入該複數個記憶裝置,其中所述各組頁面中的一組頁面可代表該複數個記憶裝置中的一對應的記憶裝置的多組頁面中的一組。針對該多個通道中的每一通道(諸如通道Ch(m)),記憶裝置300(例如記憶體控制器310)可依序將某些資訊頁面(例如資料頁面或校驗碼頁面)寫入多個單階細胞區塊(諸如第7圖所示之多個單階細胞區塊),藉由從該多個單階細胞區塊將資訊收集至多個四階細胞區塊來依序進行壓縮,以及於壓縮(例如此收集運作)之後依序抹除該多個單階細胞區塊,尤其,可依序將從該多個單階細胞區塊收集的該資訊寫入該多個四階細胞區塊,依序對該多個四階細胞區塊進行壓縮,以及依序抹除該多個四階細胞區塊。於是,寫入該多個單階細胞區塊以及抹除該多個單階細胞區塊能依序於各自的循環中進行,如第7圖左半部中的該些循環所示,並且寫入該多個四階細胞區塊以及抹除該多個四階細胞區塊能依序於各自的循環中進行,如第7圖右半部中的該些循環所示。為了簡明起見,本實施例與前述實施例相仿的內容在此不重複贅述。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100:儲存伺服器
110:處理電路
110P:程式模組
111:快閃陣列控制
112:資料緩衝器
113:重複數據刪除
114:卷控制
121,122:介面電路
130:儲存裝置
300:記憶裝置
310:記憶體控制器
320:非揮發性記憶體
CE0,CE1~CE7:晶片啟用訊號
Ch(0)~Ch(7):通道
Disk(0),Disk(1),Dusk(2),Disk(3),Disk(4),Disk(N-1):記憶裝置
Th(0)~Th(7):執行緒
P0,0
,P0,1
,P0,2
,P0,3
,P0,4
,P0,5
~P0,12
:磁碟虛擬實體頁面位址
P1,0
,P1,1
,P1,2
,P1,3
,P1,4
,P1,5
~P1,12
:磁碟虛擬實體頁面位址
P2,0
,P2,1
,P2,2
,P2,3
,P2,4
,P2,5
~P2,12
:磁碟虛擬實體頁面位址
P3,0
,P3,1
,P3,2
,P3,3
,P3,4
,P3,5
~P3,12
:磁碟虛擬實體頁面位址
P4,0
,P4,1
,P4,2
,P4,3
,P4,4
,P4,5
~P4,12
:磁碟虛擬實體頁面位址
Pn,0
,Pn,1
,Pn,2
,Pn,3
,Pn,4
,Pn,5
,Pn,6
,Pn,7
,Pn,8
,Pn,9
,Pn,10
:磁碟虛擬實體頁面位址
Pn,11
,Pn,12
,Pn,13
,Pn,14
,Pn,15
,Pn,16
,Pn,17
,Pn,18
,Pn,19
:磁碟虛擬實體頁面位址
Pn,20
,Pn,21
,Pn,22
,Pn,23
:磁碟虛擬實體頁面位址
D1,D2,D3,D4,D5,D6,D7,D8,D9,D10:資料
D11,D12,D13,D14,D15,D16,D17,D18~D37,D38,D39:資料
P1,P2,P3,P4,P5,P6~P13:校驗碼
Q1,Q2,Q3,Q4,Q5,Q6~Q13:校驗碼
LAU(0),LAU(1):邏輯存取單元
S_LBA(D1),S_LBA(D2),S_LBA(D3),S_LBA(D4):系統邏輯區塊位址
S_LBA(D5),S_LBA(D7),S_LBA(D8):系統邏輯區塊位址
S_LBA(P1),S_LBA(Q1):系統邏輯區塊位址
A1,A2,A3,A4,A5,A6,A7,A8:可用實體區塊位址
U_PBA(A1),U_PBA(A2),U_PBA(A3),U_PBA(A4):可用實體區塊位址
U_PBA(A5),U_PBA(A6),U_PBA(A7),U_PBA(A8):可用實體區塊位址
U_PBA(A1)’,U_PBA(A2)’,U_PBA(A3)’,U_PBA(A4)’:可用實體區塊位址
U_PBA(A5)’,U_PBA(A6)’,U_PBA(A7)’,U_PBA(A8)’:可用實體區塊位址
S10,S20,S30:步驟
第1圖為依據本發明一實施例之一儲存伺服器的示意圖。
第2圖繪示對應於多個執行緒的RAID存取的一個例子。
第3圖繪示分配記憶裝置中之多個通道中之一者以供對應於一執行緒之存取控制的一個例子。
第4圖為依據本發明一實施例繪示之於該儲存伺服器的該RAID中的某些邏輯存取單元。
第5圖為依據本發明一實施例繪示之關於該儲存伺服器的該RAID之不同類型的位址之間的某些映射關係。
第6圖為依據本發明一實施例繪示之針對第3圖所示之記憶裝置的內部管理的某些實施細節。
第7圖為依據本發明一實施例繪示之第3圖所示之記憶裝置中之某些依序的(sequential)運作。
第8圖為依據本發明一實施例繪示之多個可用實體區塊位址(Usable Physical Block Addresses, U_PBAs)與多個快閃實體區塊位址(Flash Physical Block Address, F_PBA)之間的某些映射關係。
第9圖為依據本發明一實施例之一種用於在一儲存伺服器中進行儲存控制的方法的工作流程。
300:記憶裝置
310:記憶體控制器
320:非揮發性記憶體
CE0,CE1~CE7:晶片啟用訊號
Ch(0)~Ch(7):通道
Th(0)~Th(7):執行緒
Claims (20)
- 一種用於在一儲存伺服器中進行儲存控制的方法,該方法係應用於該儲存伺服器,該方法包含: 組態(configure)複數個記憶裝置以形成該儲存伺服器的一容錯式磁碟陣列(Redundant Array of Independent Disks, RAID); 針對該複數個記憶裝置中的任一記憶裝置,分配該記憶裝置中的多個通道中的一通道以供對應於在該儲存伺服器上執行的複數個執行緒(thread)中的一執行緒之存取控制;以及 依據一預定安排規則將資訊寫入該複數個記憶裝置的各組頁面(page)以作為於一系列的邏輯存取單元中的一邏輯存取單元中的多個頁面,以藉助於分配該多個通道中的該通道給該執行緒來使得所述各組頁面分別被依序寫入該複數個記憶裝置,其中所述各組頁面中的一組頁面代表該複數個記憶裝置中的一對應的記憶裝置的多組頁面中的一組。
- 如申請專利範圍第1項所述之方法,其中該記憶裝置包含一非揮發性記憶體(non-volatile memory, NV memory),以及該非揮發性記憶體包含分別對應於該多個通道之複數組非揮發性記憶體元件。
- 如申請專利範圍第2項所述之方法,其中該複數組非揮發性記憶體元件的每一組係專用於該多個通道中的一者。
- 如申請專利範圍第1項所述之方法,其中所述各組頁面分別代表於該邏輯存取單元中之各行(column)頁面;以及依據該預定安排規則將該資訊寫入該複數個記憶裝置的所述各組頁面以作為於該系列的邏輯存取單元的該邏輯存取單元中的該些頁面包含: 依據該預定安排規則,將該資訊輪流寫至於該邏輯存取單元中之所述各行頁面。
- 如申請專利範圍第4項所述之方法,其中該資訊包含多個頁面的資料以及相關的多個頁面的校驗碼,以及於該邏輯存取單元中之所述各行頁面包含一第一組的行以及一第二組的行以供分別儲存該多個頁面的資料以及所述相關的多個頁面的校驗碼。
- 如申請專利範圍第1項所述之方法,另包含: 於將該系列的邏輯存取單元的複數個頁面寫入該容錯式磁碟陣列的期間,分別為該複數個頁面記錄多個系統邏輯區塊位址(System Logic Block Address, S_LBA)與多個磁碟虛擬實體頁面位址(Disk Pseudo Physical Page Address, D_P_PPA)之間的關係,以供進行該系列的邏輯存取單元的存取控制。
- 如申請專利範圍第6項所述之方法,另包含: 分配該多個磁碟虛擬實體頁面位址至該複數個記憶裝置中之多個對應的記憶裝置,以用來存取於該容錯式磁碟陣列中的於該多個磁碟虛擬實體頁面位址的該些頁面。
- 如申請專利範圍第6項所述之方法,另包含: 將該多個系統邏輯區塊位址與該多個磁碟虛擬實體頁面位址之間的所述關係記錄於至少一系統邏輯區塊位址對磁碟虛擬實體頁面位址表(S_LBA-to-D_P_PPA table),其中該至少一系統邏輯區塊位址對磁碟虛擬實體頁面位址表的多個子集合係用來維護分別對應於該複數個記憶裝置的存取控制。
- 如申請專利範圍第6項所述之方法,另包含: 進行該記憶裝置之多個內部管理運作,其中該些內部管理運作包含: 解析於該多個磁碟虛擬實體頁面位址之一磁碟虛擬實體頁面位址中的一虛擬實體頁面位址(Pseudo Physical Page Address, P_PPA),以從該虛擬實體頁面位址取得一區塊號碼;以及 於因應該磁碟虛擬實體頁面位址進行存取的期間,依據該區塊號碼更新於該記憶裝置中之一基於區塊的(block-based)映射表,以用來進行對應於該磁碟虛擬實體頁面位址之存取控制。
- 如申請專利範圍第9項所述之方法,其中因應該磁碟虛擬實體頁面位址,該記憶裝置在不參照一基於頁面的(page-based)映射表的狀況下存取對應於該磁碟虛擬實體頁面位址的一頁面。
- 如申請專利範圍第1項所述之方法,另包含: 針對該多個通道中的每一通道,依序寫入多個單階細胞(Single Level Cell, SLC)區塊。
- 如申請專利範圍第11項所述之方法,另包含: 針對該多個通道中的所述每一通道,藉由從該多個單階細胞區塊將資訊收集至多個四階細胞(Quadruple Level Cell, QLC)區塊來依序進行壓縮。
- 如申請專利範圍第12項所述之方法,另包含: 針對該多個通道中的所述每一通道,依序將從該多個單階細胞區塊收集的該資訊寫入該多個四階細胞區塊。
- 如申請專利範圍第13項所述之方法,另包含: 針對該多個通道中的所述每一通道,依序對該多個四階細胞區塊進行壓縮。
- 如申請專利範圍第13項所述之方法,另包含: 針對該多個通道中的所述每一通道,依序抹除該多個四階細胞區塊,其中寫入該多個四階細胞區塊以及抹除該多個四階細胞區塊係依序於各自的循環中進行。
- 如申請專利範圍第11項所述之方法,另包含: 針對該多個通道中的所述每一通道,依序抹除該多個單階細胞區塊,其中寫入該多個單階細胞區塊以及抹除該多個單階細胞區塊係依序於各自的循環中進行。
- 一種用來依據如申請專利範圍第1項所述之方法來控制該記憶裝置的運作之記憶體控制器,其中該記憶裝置包含該記憶體控制器以及一非揮發性記憶體(non-volatile memory, NV memory),且該非揮發性記憶體包含分別對應於該多個通道之複數組非揮發性記憶體元件,其中: 該記憶體控制器係用來分別透過該多個通道來對該複數組非揮發性記憶體元件進行存取運作。
- 如申請專利範圍第17項所述之記憶體控制器,其中該記憶體控制器係用來分配該多個通道的該通道以作為用於該執行緒之一專用通道。
- 一種依據如申請專利範圍第1項所述之方法來運作之該記憶裝置,其中該記憶裝置包含: 一非揮發性記憶體(non-volatile memory, NV memory),包含: 分別對應於該多個通道之複數組非揮發性記憶體元件;以及 一記憶體控制器,用來控制該記憶裝置的運作,其中該記憶體控制器分別透過該多個通道來對該複數組非揮發性記憶體元件進行存取運作。
- 一種依據如申請專利範圍第1項所述之方法來運作之該儲存伺服器,其中該儲存伺服器包含: 一介面電路,用來設置該複數個記憶裝置;以及 一處理電路,用來控制該儲存伺服器的運作,其中於將該系列的邏輯存取單元儲存至該容錯式磁碟陣列的期間,該處理電路依據該預定安排規則將該資訊寫入該複數個記憶裝置的所述各組頁面以作為於該系列的邏輯存取單元中的該邏輯存取單元中的該些頁面,以藉助於分配該多個通道中的該通道給該執行緒來使得所述各組頁面分別被依序寫入該複數個記憶裝置。
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US201862715229P | 2018-08-06 | 2018-08-06 | |
| US62/715,229 | 2018-08-06 | ||
| US16/296,161 | 2019-03-07 | ||
| US16/296,161 US10884662B2 (en) | 2018-08-06 | 2019-03-07 | Method for performing storage control in a storage server, associated memory device and memory controller thereof, and associated storage server |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202131192A TW202131192A (zh) | 2021-08-16 |
| TWI768763B true TWI768763B (zh) | 2022-06-21 |
Family
ID=69228669
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW110109066A TWI768763B (zh) | 2018-08-06 | 2019-07-25 | 用於在儲存伺服器中進行儲存控制的方法、記憶裝置及其記憶體控制器、以及儲存伺服器 |
| TW108126340A TWI725490B (zh) | 2018-08-06 | 2019-07-25 | 用於在儲存伺服器中進行儲存控制的方法、記憶裝置及其記憶體控制器、以及儲存伺服器 |
Family Applications After (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW108126340A TWI725490B (zh) | 2018-08-06 | 2019-07-25 | 用於在儲存伺服器中進行儲存控制的方法、記憶裝置及其記憶體控制器、以及儲存伺服器 |
Country Status (3)
| Country | Link |
|---|---|
| US (2) | US10884662B2 (zh) |
| CN (1) | CN110806839B (zh) |
| TW (2) | TWI768763B (zh) |
Families Citing this family (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10884662B2 (en) * | 2018-08-06 | 2021-01-05 | Silicon Motion, Inc. | Method for performing storage control in a storage server, associated memory device and memory controller thereof, and associated storage server |
| TWI709042B (zh) * | 2018-11-08 | 2020-11-01 | 慧榮科技股份有限公司 | 用來進行關於容錯式磁碟陣列的映射資訊管理之方法與裝置以及儲存系統 |
| US12141460B2 (en) * | 2020-03-02 | 2024-11-12 | Silicon Motion, Inc. | Method and apparatus for performing data access management of all flash array server |
| US11216348B2 (en) * | 2020-03-02 | 2022-01-04 | Silicon Motion, Inc. | All flash array server and control method thereof |
| US20210373951A1 (en) * | 2020-05-28 | 2021-12-02 | Samsung Electronics Co., Ltd. | Systems and methods for composable coherent devices |
| CN113568567B (zh) * | 2020-04-29 | 2023-10-24 | 香港商希瑞科技股份有限公司 | 利用索引物件来进行简易存储服务无缝迁移的方法、主装置以及存储服务器 |
| US11297137B2 (en) * | 2020-04-29 | 2022-04-05 | Silicon Motion Technology (Hong Kong) Limited | Method and apparatus for performing simple storage service seamless migration using index objects |
| US20210374056A1 (en) | 2020-05-28 | 2021-12-02 | Samsung Electronics Co., Ltd. | Systems and methods for scalable and coherent memory devices |
| US20220222008A1 (en) * | 2021-01-14 | 2022-07-14 | Silicon Motion, Inc. | Method for managing flash memory module and associated flash memory controller and memory device |
| CN117135562B (zh) * | 2023-02-27 | 2024-06-04 | 荣耀终端有限公司 | 参数设置方法、终端设备及可读存储介质 |
| US12222800B2 (en) * | 2023-03-02 | 2025-02-11 | International Business Machines Corporation | Write and retire pages in QLC NAND blocks |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6886074B1 (en) * | 2001-12-05 | 2005-04-26 | Adaptec, Inc. | Method and apparatus for raid load balancing |
| US20100250826A1 (en) * | 2009-03-24 | 2010-09-30 | Micron Technology, Inc. | Memory systems with a plurality of structures and methods for operating the same |
| US20100262760A1 (en) * | 2009-04-08 | 2010-10-14 | Google Inc. | Command processor for a data storage device |
| US20120059978A1 (en) * | 2010-09-07 | 2012-03-08 | Daniel L Rosenband | Storage array controller for flash-based storage devices |
| US20140281133A1 (en) * | 2013-03-15 | 2014-09-18 | Vijay Karamcheti | Managing the write performance of an asymmetric memory system |
| TW201729068A (zh) * | 2015-11-13 | 2017-08-16 | 三星電子股份有限公司 | 分佈式儲存系統、分佈式儲存方法及分佈式設施 |
Family Cites Families (19)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6049390A (en) * | 1997-11-05 | 2000-04-11 | Barco Graphics Nv | Compressed merging of raster images for high speed digital printing |
| US6606704B1 (en) * | 1999-08-31 | 2003-08-12 | Intel Corporation | Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode |
| CN1217342C (zh) * | 2001-03-09 | 2005-08-31 | 矽统科技股份有限公司 | 多通道存储管理系统 |
| US7681014B2 (en) * | 2005-02-04 | 2010-03-16 | Mips Technologies, Inc. | Multithreading instruction scheduler employing thread group priorities |
| KR100669352B1 (ko) * | 2005-09-07 | 2007-01-16 | 삼성전자주식회사 | 카피 백 프로그램 동작 동안에 에러 검출 및 데이터 리로딩동작을 수행할 수 있는 낸드 플래시 메모리 장치 |
| US8347010B1 (en) * | 2005-12-02 | 2013-01-01 | Branislav Radovanovic | Scalable data storage architecture and methods of eliminating I/O traffic bottlenecks |
| US7769964B2 (en) * | 2006-08-21 | 2010-08-03 | Intel Corporation | Technique to perform memory reference filtering |
| US9389952B2 (en) * | 2008-06-18 | 2016-07-12 | Super Talent Technology, Corp. | Green NAND SSD application and driver |
| CN102298561B (zh) * | 2011-08-10 | 2016-04-27 | 北京百度网讯科技有限公司 | 一种对存储设备进行多通道数据处理的方法、系统和装置 |
| US8635407B2 (en) * | 2011-09-30 | 2014-01-21 | International Business Machines Corporation | Direct memory address for solid-state drives |
| WO2013140435A1 (en) * | 2012-03-19 | 2013-09-26 | Hitachi, Ltd. | Data storage system comprising non-volatile semiconductor storage device, and storage control method |
| CN104425020A (zh) * | 2013-08-23 | 2015-03-18 | 慧荣科技股份有限公司 | 存取快闪存储器中储存单元的方法以及使用该方法的装置 |
| KR20160075229A (ko) * | 2014-12-19 | 2016-06-29 | 삼성전자주식회사 | 가비지 컬렉션 동작 방법 및 이를 적용하는 레이드 스토리지 시스템 |
| US10216419B2 (en) * | 2015-11-19 | 2019-02-26 | HGST Netherlands B.V. | Direct interface between graphics processing unit and data storage unit |
| US10067706B2 (en) * | 2016-03-31 | 2018-09-04 | Qualcomm Incorporated | Providing memory bandwidth compression using compression indicator (CI) hint directories in a central processing unit (CPU)-based system |
| KR102580123B1 (ko) * | 2016-05-03 | 2023-09-20 | 삼성전자주식회사 | Raid 스토리지 장치 및 그것의 관리 방법 |
| TWI567552B (zh) * | 2016-06-08 | 2017-01-21 | 捷鼎國際股份有限公司 | 冗餘磁碟陣列系統及其資料儲存方法 |
| US20200042223A1 (en) * | 2018-08-02 | 2020-02-06 | Alibaba Group Holding Limited | System and method for facilitating a high-density storage device with improved performance and endurance |
| US10884662B2 (en) * | 2018-08-06 | 2021-01-05 | Silicon Motion, Inc. | Method for performing storage control in a storage server, associated memory device and memory controller thereof, and associated storage server |
-
2019
- 2019-03-07 US US16/296,161 patent/US10884662B2/en active Active
- 2019-07-25 TW TW110109066A patent/TWI768763B/zh active
- 2019-07-25 TW TW108126340A patent/TWI725490B/zh active
- 2019-08-06 CN CN201910723056.2A patent/CN110806839B/zh active Active
-
2020
- 2020-11-26 US US17/105,511 patent/US11366616B2/en active Active
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6886074B1 (en) * | 2001-12-05 | 2005-04-26 | Adaptec, Inc. | Method and apparatus for raid load balancing |
| US20100250826A1 (en) * | 2009-03-24 | 2010-09-30 | Micron Technology, Inc. | Memory systems with a plurality of structures and methods for operating the same |
| US20100262760A1 (en) * | 2009-04-08 | 2010-10-14 | Google Inc. | Command processor for a data storage device |
| US20120059978A1 (en) * | 2010-09-07 | 2012-03-08 | Daniel L Rosenband | Storage array controller for flash-based storage devices |
| US20140281133A1 (en) * | 2013-03-15 | 2014-09-18 | Vijay Karamcheti | Managing the write performance of an asymmetric memory system |
| TW201729068A (zh) * | 2015-11-13 | 2017-08-16 | 三星電子股份有限公司 | 分佈式儲存系統、分佈式儲存方法及分佈式設施 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN110806839B (zh) | 2023-06-20 |
| US11366616B2 (en) | 2022-06-21 |
| TW202008170A (zh) | 2020-02-16 |
| TW202131192A (zh) | 2021-08-16 |
| US20200042244A1 (en) | 2020-02-06 |
| CN110806839A (zh) | 2020-02-18 |
| TWI725490B (zh) | 2021-04-21 |
| US10884662B2 (en) | 2021-01-05 |
| US20210081147A1 (en) | 2021-03-18 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI768763B (zh) | 用於在儲存伺服器中進行儲存控制的方法、記憶裝置及其記憶體控制器、以及儲存伺服器 | |
| CN108733319B (zh) | 用于非易失性存储器中的混合推拉数据管理的系统和方法 | |
| US10204040B2 (en) | High speed flash controllers | |
| US9208018B1 (en) | Systems and methods for reclaiming memory for solid-state memory | |
| US8914670B2 (en) | Redundancy schemes for non-volatile memory using parity zones having new and old parity blocks | |
| US8341336B2 (en) | Region-based management method of non-volatile memory | |
| US9053012B1 (en) | Systems and methods for storing data for solid-state memory | |
| US9582224B2 (en) | Memory control circuit unit, memory storage apparatus and data accessing method | |
| CN109857584B (zh) | 于记忆装置进行访问控制的方法、记忆装置和其控制器 | |
| TWI591643B (zh) | 資料保護方法、記憶體控制電路單元與記憶體儲存裝置 | |
| TW201508757A (zh) | 存取快閃記憶體中儲存單元的方法以及使用該方法的裝置 | |
| US20150128010A1 (en) | Protection against word line failure in memory devices | |
| CN107807788B (zh) | 块条带构造方法、构造装置及固态存储设备 | |
| CN1922588A (zh) | 半导体存储装置 | |
| US20200042386A1 (en) | Error Correction With Scatter-Gather List Data Management | |
| TWI416331B (zh) | 用於快閃記憶體的資料寫入方法及其控制器與儲存裝置 | |
| TWI607303B (zh) | 具有虛擬區塊及磁碟陣列架構之資料儲存系統及其管理方法 | |
| JP7407230B2 (ja) | キー値データ記憶デバイスのためのeccパリティ偏り | |
| TW201506620A (zh) | 記憶體位址管理方法、記憶體控制器與記憶體儲存裝置 | |
| KR101679495B1 (ko) | 프로그램 상태들과 데이터 패턴들 사이의 매핑 | |
| CN112115065B (zh) | 存储设备的统一地址空间 | |
| KR101419335B1 (ko) | 멀티 레벨 셀 플래시 메모리의 페이지 단위 클러스터링 장치 및 방법 | |
| US9436547B2 (en) | Data storing method, memory control circuit unit and memory storage device | |
| CN107239224B (zh) | 数据保护方法、存储器控制电路单元与存储器存储装置 | |
| TW202531239A (zh) | 資料寫入方法、記憶體儲存裝置以及記憶體控制電路單元 |