TWI737031B - Method and computer program product for reading data fragments of a page on multiple planes - Google Patents
Method and computer program product for reading data fragments of a page on multiple planes Download PDFInfo
- Publication number
- TWI737031B TWI737031B TW108140180A TW108140180A TWI737031B TW I737031 B TWI737031 B TW I737031B TW 108140180 A TW108140180 A TW 108140180A TW 108140180 A TW108140180 A TW 108140180A TW I737031 B TWI737031 B TW I737031B
- Authority
- TW
- Taiwan
- Prior art keywords
- read
- data
- command
- page
- plane
- Prior art date
Links
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/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
-
- 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/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Abstract
Description
本發明涉及快閃記憶裝置,特別指一種多平面上頁面的片段資料讀取方法及電腦程式產品。 The invention relates to a flash memory device, in particular to a method for reading fragment data of pages on multiple planes and a computer program product.
快閃記憶裝置通常分為NOR快閃記憶裝置與NAND快閃記憶裝置。NOR快閃記憶裝置為隨機存取裝置,主機(Host)可於位址腳位上提供任何存取NOR快閃記憶裝置的位址,並及時地從NOR快閃記憶裝置的資料腳位上獲得儲存於該位址上的資料。相反地,NAND快閃記憶裝置並非隨機存取,而是序列存取。NAND快閃記憶裝置無法像NOR快閃記憶裝置一樣,可以存取任何隨機位址,主機反而需要寫入序列的位元組(Bytes)的值到NAND快閃記憶裝置中,用以定義請求命令(Command)的類型(如,讀取、寫入、抹除等),以及用在此命令上的位址。位址可指向一個頁面(快閃記憶裝置中寫入作業的最小資料塊)或一個區塊(快閃記憶裝置中抹除作業的最小資料塊)。 Flash memory devices are generally divided into NOR flash memory devices and NAND flash memory devices. The NOR flash memory device is a random access device. The host can provide any address for accessing the NOR flash memory device on the address pin, and obtain it from the data pin of the NOR flash memory device in time Data stored at that address. On the contrary, NAND flash memory devices are not random access, but serial access. NAND flash memory devices cannot access any random address like NOR flash memory devices. Instead, the host needs to write serial bytes (Bytes) into the NAND flash memory device to define the request command (Command) type (for example, read, write, erase, etc.), and the address used for this command. The address can point to a page (the smallest data block for writing in a flash memory device) or a block (the smallest data block for erasing in a flash memory device).
傳統的NAND快閃記憶體(NAND flash memory)提供的讀取命令,通常讓控制器能夠讀取一整個跨平面頁面的資料。然而,隨著NAND快閃記憶裝置中的跨平面頁面的長度(如16KB)已經超過主機執行的作業系統所管理的邏輯區塊位址(Logical Block Address LBA)的資料長度(如4KB),傳統每次都要讀取一整個跨平面頁面資料的讀取操作於處理主機的短資料讀取命令時可能降低NAND 快閃記憶體的整體效能。因此,本發明提出一種多平面上頁面的片段資料讀取方法及電腦程式產品,針對擁有較長跨平面頁面的NAND快閃記憶體進行最佳化的資料讀取操作。 The read command provided by the traditional NAND flash memory usually allows the controller to read an entire cross-plane page data. However, as the length of the cross-plane page in the NAND flash memory device (such as 16KB) has exceeded the data length (such as 4KB) of the logical block address (Logical Block Address LBA) managed by the operating system executed by the host, the traditional A read operation that reads an entire cross-plane page data every time may reduce NAND when processing short data read commands from the host. The overall performance of flash memory. Therefore, the present invention provides a method and computer program product for reading fragment data of pages on multiple planes to perform optimized data reading operations for NAND flash memory with longer span pages.
有鑑於此,如何減輕或消除上述相關領域的缺失,實為有待解決的問題。 In view of this, how to reduce or eliminate the deficiencies in the above-mentioned related fields is indeed a problem to be solved.
本發明提出一種多平面上頁面的片段資料讀取方法,該方法由處理單元於載入並執行韌體或軟體的程式碼時實施,包含:提供排程資料表;將命令佇列中的每一記憶體操作命令依據其實體位址資訊安排到排程資料表中的儲存格;依據排程資料表的內容為一個邏輯單元號挑選二個或以上的記憶體操作命令;驅動閃存介面來完成多頁面讀取精簡操作,從該邏輯單元號讀取該挑選的記憶體操作命令請求的資料;以及回覆讀取的資料給主機。 The present invention provides a method for reading fragment data of pages on multiple planes. The method is implemented by a processing unit when loading and executing firmware or software code, including: providing a schedule data table; A memory operation command is arranged into a cell in the scheduling table according to its physical address information; two or more memory operation commands are selected for a logical unit number according to the content of the scheduling table; the flash memory interface is driven to complete multiple operations. Page read simplified operation, read the data requested by the selected memory operation command from the logical unit number; and reply the read data to the host.
本發明提出一種多平面上頁面的片段資料讀取的電腦程式產品,包含用於實施如上步驟的程式碼。 The present invention provides a computer program product for reading fragment data of pages on multiple planes, including program codes for implementing the above steps.
上述實施例的優點之一,通過使用排程資料表將兩個或兩個以上的片段讀取操作搜集成為一個MPR-lite操作,可以提升短資料讀取的效能。 One of the advantages of the above embodiment is that by using the scheduling data table to collect two or more fragment reading operations into one MPR-lite operation, the performance of short data reading can be improved.
本發明的其他優點將搭配以下的說明和圖式進行更詳細的解說。 Other advantages of the present invention will be explained in more detail with the following description and drawings.
100:快閃儲存系統架構 100: Flash storage system architecture
110:主機 110: host
130:控制器 130: Controller
131:主機介面 131: Host Interface
133-0、133-1:處理器核心 133-0, 133-1: processor core
135:命令佇列 135: Command Queue
136:資料快取 136: data cache
137:閃存介面 137: Flash memory interface
138:DMA控制器 138: DMA controller
139:資料緩存器 139: data buffer
150:LUNs 150: LUNs
150#0~150#11:LUN 150#0~150#11:LUN
CH#0~CH#3:通道CH
CE#0~CE#2:晶片致能訊號
CQT、CQH:指標 CQT, CQH: indicators
139#0:存取子介面 139#0: Access sub-interface
410#0~470#m:平面 410#0~470#m: plane
P#0~P#(n):頁面
490#1~490#n:超頁面 490#1~490#n: Super page
tWB、tRSNAP、tDBSY、tPR:時間區間 t WB , t RSNAP , t DBSY , t PR : time interval
900:排程資料表 900: Schedule data table
S1010~S1090:方法步驟 S1010~S1090: method steps
1100、1200:MPR-Lite排程資料表 1100, 1200: MPR-Lite scheduling data table
圖1為依據本發明實施例的快閃儲存系統架構圖。 FIG. 1 is an architecture diagram of a flash storage system according to an embodiment of the present invention.
圖2為閃存介面與邏輯單元號(Logical Unit Number LUN)的連接示意圖。 Figure 2 is a schematic diagram of the connection between a flash memory interface and a logical unit number (Logical Unit Number LUN).
圖3為命令佇列示意圖。 Figure 3 is a schematic diagram of the command queue.
圖4為LUN的資料組織示意圖。 Figure 4 is a schematic diagram of LUN data organization.
圖5為閃存介面操作的片段讀取的時序圖。 FIG. 5 is a timing diagram of segment reading of the flash interface operation.
圖6為頁面中的區段示意圖。 Figure 6 is a schematic diagram of the sections on the page.
圖7為閃存介面操作的多頁面讀取精簡的時序圖。 FIG. 7 is a simplified timing diagram of multi-page reading of flash memory interface operation.
圖8為LUN中的平面及跨平面頁面的組織示意圖。 Figure 8 is a schematic diagram of the organization of the plane and cross-plane pages in the LUN.
圖9為依據一些實施方式的記憶體操作命令排程示意圖。 FIG. 9 is a schematic diagram of memory operation command scheduling according to some embodiments.
圖10為依據本發明實施例的記憶體操作命令排程方法的流程圖。 FIG. 10 is a flowchart of a method for scheduling memory operation commands according to an embodiment of the present invention.
圖11及圖12為依據本發明實施例的記憶體操作命令排程示意圖。 11 and 12 are schematic diagrams of memory operation command scheduling according to an embodiment of the present invention.
圖13及圖14為依據本發明實施例的記憶體操作命令挑選示意圖。 13 and 14 are schematic diagrams of selecting memory operation commands according to an embodiment of the present invention.
以下說明為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。 The following descriptions are preferred implementations for completing the invention, and their purpose is to describe the basic spirit of the invention, but not to limit the invention. The actual content of the invention must refer to the scope of the claims that follow.
必須了解的是,使用於本說明書中的”包含”、”包括”等詞,用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。 It must be understood that the words "including" and "including" used in this specification are used to indicate the existence of specific technical features, values, method steps, operations, elements, and/or components, but they do not exclude the possibility of adding More technical features, values, method steps, job processing, components, components, or any combination of the above.
於權利要求中使用如”第一”、”第二”、”第三”等詞是用來修飾權利要求中的元件,並非用來表示之間具有優先順序,前置關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。 Words such as "first", "second", and "third" used in the claims are used to modify the elements in the claims, and are not used to indicate that there is a precedence, prerequisite relationship, or an element. Prior to another element, or the chronological order of execution of method steps, is only used to distinguish elements with the same name.
必須了解的是,當元件描述為”連接”或”耦接"至另一元件時,可以是直接連結、或耦接至其他元件,可能出現中間元件。相反地,當元件描述為”直接連接”或”直接耦接”至另一元件時,其中不存在任何中間元件。使用來描述元件之間關係的其他語詞也可類似方式解讀,例如”介於”相對於”直接介於”,或者是”鄰接”相對於”直接鄰接”等等。 It must be understood that when an element is described as being “connected” or “coupled” to another element, it can be directly connected or coupled to other elements, and intermediate elements may appear. Conversely, when an element is described as being "directly connected" or "directly coupled" to another element, there are no intervening elements. Other terms used to describe the relationship between elements can also be interpreted in a similar manner, such as "between" and "directly between", or "adjacent" as opposed to "directly abutting" and so on.
參考圖1,快閃儲存系統架構100包含主機(Host)110、控制器(Controller,或稱裝置端Device)130及邏輯單元號(Logical Block Number,LUN)150。此系統架構可實施於個人電腦、筆記型電腦
(Laptop PC)、平板電腦、手機、數位相機、數位攝影機等電子產品。控制器130可包含多核處理器133,為單一運算元件,搭配兩個用於載入韌體或軟體模組的程式碼的獨立處理器核心133-0及133-1。處理器核心133-0可通過主機介面131使用通用快閃記憶儲存(Universal Flash Storage,UFS)、快速非揮發記憶體(Non-Volatile Memory Express,Nvme)、通用序列匯流排(Universal Serial Bus,USB)、先進技術附著(Advanced Technology Attachment,ATA)、序列先進技術附著(Serial Advanced Technology Attachment,SATA)、快速周邊元件互聯(Peripheral Component Interconnect Express,PCI-E)或其他介面協定,與主機110彼此通信。處理器核心133-1可通過閃存介面137使用雙倍資料率(Double Data Rate,DDR)通訊協定,例如,開放NAND快閃(Open NAND Flash Interface,ONFI)、雙倍資料率開關(DDR Toggle)或其他介面協定,與LUN 110彼此通信。
1, the flash
邏輯單元號(Logical Unit Number,LUN)150提供大量的儲存空間,通常是數百Gigabytes,甚至是Terabytes,可用於儲存大量的使用者資料,例如高解析度圖片、影片等。LUN 150中包含控制電路以及記憶體陣列,記憶體陣列中的記憶單元可為三層式單元(Triple Level Cells,TLCs)或四層式單元(Quad-Level Cells,QLCs)。資料緩存器(Data Buffer)139可用於緩存從LUN 150讀取並即將敲出給主機110的使用者資料。參考圖2,閃存介面137可包含四個輸出入通道(I/O Channels,以下簡稱通道CH),包括通道CH#0至CH#3,每一個通道CH連接三個LUN,例如,通道CH#0連接LUN150#0、150#4及150#8。處理器核心133-1可驅動閃存介面137發出致能訊號CE#0至CE#2中的一個來致能LUN 150#0至150#3、LUN 150#4至150#7、或LUN 150#8至150#11,接著以並行的方式從致能的LUN讀取使用者資料。為了簡化說明,在下述僅以通道
CH#0至CH#1以及CE#0至CE#1來致能LUN 150#0~1以及LUN 150#4~5為例進行說明,但不以此為限。
The Logical Unit Number (LUN) 150 provides a large amount of storage space, usually hundreds of Gigabytes, or even Terabytes, which can be used to store a large amount of user data, such as high-resolution pictures, videos, and so on. The
控制器130可配置命令佇列135,用於儲存多個快閃記憶體操作命令,快閃記憶體操作命令例如是讀取頁面(Read Page)命令、頁面編程(Program Page)命令、抹寫區塊(Erase Block)命令等等。快閃記憶體操作命令可以關聯於主機110發出的但尚未處理的主機命令(Host Commands),例如是主機讀取命令、主機寫入命令等等,亦可以是控制器130所自主發出的命令。
The
命令佇列135可實施於靜態隨機存取記憶體(Static Random Access Memory,SRAM),包含多筆項目(Entry)的集合。命令佇列135中的每一筆項目可儲存一個快閃記憶體操作命令及相關資訊。集合中的快閃記憶體操作命令可依據到達時間依序存放。集合的操作基本原則是由處理器核心133-0從結束位置(如指標CQT所指的位置)新增快閃記憶體操作命令(可稱為入列),並且由處理器核心133-1從開始位置(如指標CQH所指的位置)移除快閃記憶體操作命令(可稱為出列)。然而,為了最佳化資料讀取操作,第一個新增至命令佇列135的快閃記憶體操作命令,不一定會是第一個被移出的。另外,控制器130亦可使用堆疊(Stack)以儲存上述的快閃記憶體操作命令,並不以此為限。
The
LUN 150包含多個平面(Planes),參考圖4,以LUN 150#0為例,其包含4個平面(Planes),包括:平面410至470。每一平面包含多個物理區塊(Physical Blocks,簡稱為區塊),以平面410為例,其包含區塊410#0~m,m為正整數。每個區塊包含多個頁面(Pages),以區塊410#0為例,其包含頁面P#0至P#n,n為正整數。每個頁面P包含多個NAND記憶體單元(Memory Cells),並且NAND記憶體單元可為三層式單元或四層式單元。於一些實施例中,當每一個NAND記憶體單元為三層式單元而可記錄8個狀態時,一個字元線
可包含頁面P#0(可稱為最低位元頁面,MSB page)、頁面P#1(可稱為中間位元頁面,CSB,Center Significant Bit page)及頁面P#2(可稱為最高位元頁面,LSB page)。當每一個NAND記憶體單元為四層式單元而可記錄16個狀態時,除了MSB、CSB以及LSB頁面之外,更包括TSB(可稱為頂部位元,TSB,Top Significant Bit)頁面。同一LUN 150中的不同平面中一個的區塊可虛擬形成大區塊(Big Block),不同LUN 150中的大區塊(Big Block)可虛擬形成超級區塊(Super Block)。
資料快取136以及/或資料緩存器(Data Buffer)139可儲存資料讀取時所需查找的邏輯-物理映射表(Logical-Physical Mapping Table,L2P映射表),L2P映射表記錄每一筆資料的邏輯位址與物理位址的映射資訊。資料快取136可實施於SRAM,資料緩存器139可實施於動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)中的預先分配區域。
The
雖然每個區塊或頁面中的記憶體單元為TLCs或QLCs,但是,控制器130可採用單層式單元(Single Logical Cells,SLCs)模式以將資料編程至區塊或頁面中,用以提升資料讀取及資料編程的速度。為了方便區塊編程模式的管理,控制器130較佳建立並維護實體組態資料表(Physical Configuration Table)以記錄每一區塊的編程模式,即預設模式(TLC或QLC)或SLC模式,並將實體組態資料表儲存至資料快取136中。於資料讀取操作中,控制器130可通過搜索實體組態資料表來辨認每個區塊或頁面的編程模式,如此一來,再以適當的讀取方式來讀取區塊或頁面的資料。
Although the memory cells in each block or page are TLCs or QLCs, the
控制器130可輸出讀取頁面命令,用以讀取LUN 150中一個平面中的一個區塊的一個頁面,亦可輸出讀取頁面多平面(Read Page Multi-plane)命令以讀取不同平面的一個區塊的一個頁面的資料。然而,有時候主機110並不需要一整個頁面資料,而是僅需要一個頁面中
的4KB資料。此時,控制器130可利用片段讀取(Snap Read)命令以讀取一個頁面中的部分資料。關於片段讀取操作,參考圖5。波型510顯示耦接於LUN 150及閃存介面137間的資料線DQ[7:0]的時脈類型,以1個”CMD”時脈指出從閃存介面137傳送的主要命令,5個”Addr”時脈指出從閃存介面137傳送想要讀取的LUN 137的實體位址,再以1個”CMD”時脈指出從閃存介面137傳送的確認(Confirm)命令,最後,”DOUT”表示從LUN 150所輸出的資料。波型520為波型510的示範片段讀取命令,主要命令為00h,確認命令為20h,因此,LUN 150判斷此操作命令為片段讀取命令,為讀取指定頁面(實體位址)的部分頁面資料。
The
部分頁面資料例如為16KB頁面資料中的8KB資料,參考圖6,其中,8KB資料可選自頁面中的三種不同的區段:前8KB區段625,中間8KB區段645,及後8KB區段665,每一8KB區段的長度較佳大於等於8KB。另外,部分頁面資料也可例如為16KB頁面資料中的4KB資料,即將16KB頁面區分成第一4KB區段、第二4KB區段、第三4KB區段以及第四4KB區段,每一4KB區段的長度較佳大於等於4KB。
Part of the page data is, for example, 8KB data in a 16KB page data. Refer to Figure 6, where the 8KB data can be selected from three different sections in the page: the
另外,由於LUN 150包含多個平面(Planes),因此,控制器130可輸出多頁面讀取精簡(Multi-Page Read Lite,MPR-Lite)命令,用以讀取LUN 150中多個平面中的頁面上的片段資料,參考圖6,例如:平面810及830的頁面P#0中的前8KB區段625,平面830及850的頁面P#1的後8KB區段665。MPR-Lite命令可提升片段資料的讀取效能。
In addition, because the
參考圖1,以資料讀取為例,處理器核心133-0可通過主機介面131取得來自主機110的資料讀取命令,其中,資料讀取命令提供目標資料的邏輯位址。處理器核心133-0藉由查找L2P映射表以及邏輯位址可取得目標資料在LUN 150中的頁面位置(實體位址),並藉由實體組態資料表可得知目標資料的編程模式。接著,處理器核心133-0產生快閃記憶體操作命令至命令佇列135,其中,快閃記憶體操作
命令包括目標資料的實體位址。
1, taking data reading as an example, the processor core 133-0 can obtain a data reading command from the
控制器130可利用命令佇列135以儲存多個快閃記憶體操作命令,例如:64個快閃記憶體操作命令。處理器核心133-1可在資料快取136中建立並維護排程表(Scheduling Table)900以及/或待命表(Standby Table)910,用以排序命令佇列135中快閃記憶體操作命令,使得快閃記憶體操作命令的執行更具效率。參考圖9,例如,命令佇列135目前儲存13個讀取頁面命令,標號分別為”a”~”m”。處理器核心133-1將讀取特定LUN 150的讀取頁面命令記錄至排程表900中的特定欄位,例如,將讀取頁面命令”b”、”a”、”d”排入排程表900中,以分別讀取LUN 150#0、LUN 150#4以及LUN 150#1的頁面,如此一來,處理器核心133-1可以同步以及交錯(Interleaving)的操作方式將讀取頁面命令”b”、”a”、”d”輸出至LUN 150#0、LUN 150#4以及LUN 150#1。處理器核心133-1將讀取頁面命令”c”、”e”~”m”排入待命表,當排程表900中的讀取頁面命令”b”、”a”、”d”執行完畢之後,再將待命表中的讀取頁面命令”e”、”c”、”g”排入至排程表900。之後,再將待命表中的讀取頁面命令”j”、”f”、”k”排入至排程表900,最後,將待命表中的讀取頁面命令”i”、”m”排入至排程表900。因此,13個讀取頁面命令需要4個週期才能執行完畢。於一些實施方式,處理器核心133-1僅建立並維護排程表900,並將快閃記憶體操作命令依序儲存至排程表900,處理器核心133-1執行完第一列快閃記憶體操作命令後,繼續執行下一列快閃記憶體操作命令,以此類推。
The
如果目標資料為一個頁面中的4KB或8KB資料時,則控制器130可利用命令佇列135以儲存片段讀取命令而非讀取頁面命令。或是,以MPR-Lite命令來執行命令佇列135中的片段讀取命令,即將多個片段讀取命令整合成一個MPR-Lite命令。當多個片段讀取命令整合成一個MPR-Lite命令時,控制器130需將多個片段讀取命令變更成多
個讀取頁面多平面命令,確認命令為32h,而最後一個片段讀取命令不變更,確認命令為20h,如此一來,控制器130不但可以同步以及交錯的操作方式來執行片段讀取命令,更可以增加片段讀取命令的執行效率。參考圖11,片段讀取命令”b”為讀取LUN 150#0中目標資料,片段讀取命令”a”和”h”為讀取LUN 150#4中不同平面的目標資料,片段讀取命令”d”和”g”為讀取LUN 150#1中不同平面的目標資料,因此,控制器130可將片段讀取命令”a”、”b”、”d”、”h”以及”g”以MPR-Lite命令來執行,因此,控制器130可一併執行5個片段讀取命令,而非3個片段讀取命令,換句話說,MPR-Lite命令可將片段讀取命令的執行效率提升了66%。
If the target data is 4KB or 8KB data in a page, the
於一些實施例中,為因應如上所述的MPR Lite命令,處理器核心133-1可於載入並執行特定軟體或韌體命令時實施如圖10所示的快閃記憶體操作命令排序功能。 In some embodiments, in response to the MPR Lite command as described above, the processor core 133-1 can implement the flash memory operation command sequence function as shown in FIG. 10 when loading and executing specific software or firmware commands. .
步驟S1010:處理器核心133-1於資料快取136中提供MPR-Lite排程資料表。相較於圖9所示的排程表900及待命表910,MPR-Lite排程資料表針對每個LUN提供更細緻的區分,有利於將兩個或以上的片段讀取命令整合成一個MPR-lite操作。
Step S1010: The processor core 133-1 provides the MPR-Lite scheduling data table in the
參考圖11所示的MPR-Lite排程資料表1100,針對每個LUN,可包含兩欄”Plane0/1”及”Plane2/3”,用於將片段讀取命令依據其欲讀取的實體位址區分到其中一欄的儲存格中。例如,MPR-Lite排程資料表1100中第三欄的儲存格用來紀錄讀取平面810以及/或平面830上資料的片段讀取命令;而其中第四欄的儲存格用來紀錄讀取平面850以及/或平面870上資料的片段讀取命令。
Refer to the MPR-Lite scheduling data table 1100 shown in Figure 11. For each LUN, two columns "Plane0/1" and "Plane2/3" can be included, which are used to read the fragments according to the entity to be read The address is divided into cells in one of the columns. For example, the cell in the third column of the MPR-Lite schedule table 1100 is used to record read commands for reading data on the
此外,由於資料編程至區塊時,可能是採用預設編程模式,例如:TLC或QLC模式,亦可能是採用SLC模式。不同的編程模式需使用不同的資料讀取方式方能正確地讀取資料,因此,將多個片段讀取命令整合成一個MPR-Lite命令時,為了正確地讀取資料,多個片段
讀取命令所欲讀取的目標資料必需採用相同編程模式,因此,MPR-Lite排程資料表1100可略作調整而成為MPR-Lite排程資料表1200,參考圖12所示,針對每個LUN,可包含三欄”Main P0/1”、”SLC P2/3”及”QLC P2/3”,用於將每個快閃記憶體操作命令依據其欲讀取的實體位址及使用的模式區分到其中一欄的儲存格中。例如,MPR-lite排程資料表1200中第四欄的儲存格用來紀錄讀取平面810以及/或平面830上資料的快閃記憶體操作命令,而不管使用的讀取模式為何;其中第五欄的儲存格用來紀錄使用SLC模式讀取平面850以及/或平面870上資料的快閃記憶體操作命令;而其中第六欄的儲存格用來紀錄使用QLC模式讀取平面850以及/或平面870上資料的快閃記憶體操作命令。
In addition, when the data is programmed into the block, the preset programming mode may be used, such as the TLC or QLC mode, or the SLC mode may be used. Different programming modes require different data reading methods to read data correctly. Therefore, when multiple fragment read commands are integrated into one MPR-Lite command, in order to read data correctly, multiple fragments
The target data to be read by the read command must use the same programming mode. Therefore, the MPR-Lite scheduling data table 1100 can be slightly adjusted to become the MPR-Lite scheduling data table 1200. Refer to Figure 12 for each LUN, can include three columns "Main P0/1", "SLC P2/3" and "QLC P2/3", which are used to assign each flash memory operation command according to the physical address to be read and the used The mode is divided into cells in one of the columns. For example, the cell in the fourth column of the MPR-lite schedule table 1200 is used to record flash memory operation commands for reading data on the
接著,參考圖10,處理器核心133-1反覆執行一個迴圈(步驟S1030至S1090),用於將命令佇列135中的每個快閃快閃記憶體操作命令安排到MPR-Lite排程資料表中的適當儲存格。於每個回合,詳細說明如下:
Next, referring to FIG. 10, the processor core 133-1 repeatedly executes a loop (steps S1030 to S1090) for arranging each flash memory operation command in the
步驟S1030:處理器核心133-1從命令佇列135中取得一個或多個尚未排序的快閃記憶體操作命令的實體位址資訊。如果一個快閃記憶體操作命令指示讀取平面830以及平面850上的資料,處理器核心133-1可將此快閃記憶體操作命令安排到關聯於平面830的欄位中的儲存格,例如圖11中的欄”Plane0/1”或圖12中的欄”Main P0/1”。
Step S1030: The processor core 133-1 obtains the physical address information of one or more unsorted flash memory operation commands from the
步驟S1050:依據實體位址及其他相關資訊將每一個快閃記憶體操作命令安排到MPR-Lite排程資料表中的適當儲存格。參考圖11的使用案例,MPR-Lite排程資料表1100中第三欄的儲存格用來紀錄讀取平面810以及/或平面830上資料的片段讀取命令”a”、”c”及”f”;而其中第四欄的儲存格用來紀錄讀取平面850以及/或平面870上資料的片段讀取命令”h”及”i”。
Step S1050: Arrange each flash memory operation command to an appropriate cell in the MPR-Lite scheduling table according to the physical address and other related information. Referring to the use case of FIG. 11, the cell in the third column of the MPR-Lite schedule data table 1100 is used to record the read command "a", "c" and "segment reading of data on the
於步驟S1050的另一些實施例,記憶體操作命令的其他相關資訊可
包含此快閃記憶體操作命令使用何種模式進行讀取。處理器核心133-1可搜索資料快取136中實體組態資料表的內容,依據實體位址對應到的區塊的編程模式,得知此快閃記憶體操作命令需要使用何種模式進行讀取。參考圖12的使用案例,MPR-Lite排程資料表1200中第四欄的儲存格用來紀錄讀取平面810以及/或平面830上資料的片段讀取命令”a”及”f”;其中第五欄的儲存格用來紀錄使用SLC模式讀取平面850以及/或平面870上資料的片段讀取命令”h”及”i”;而其中第六欄的儲存格用來紀錄使用QLC模式讀取平面850以及/或平面870上資料的片段讀取命令”c”。
In other embodiments of step S1050, other related information of the memory operation command may be
Contains which mode the flash memory operation command uses to read. The processor core 133-1 can search the content of the physical configuration data table in the
接續圖11所述的排序結果,圖13顯示挑選快閃記憶體操作命令的使用案例。例如,於一個批次中,處理器核心133-1驅動閃存介面137發送讀取頁面命令給LUN 150#0,用於讀取片段讀取命令”b”指定的實體位址的資料;發送讀取頁面多平面命令給LUN 150#4,用於讀取片段讀取命令”a”及”h”指定的實體位址的資料,發送讀取頁面多平面命令給LUN 150#1,用於讀取片段讀取命令”d”指定的實體位址的資料,以及發送片段讀取命令給LUN 150#1,用於讀取記憶體操作命令”g”指定的實體位址的資料,以形成一個MPR-lite操作。
Following the sorting result described in FIG. 11, FIG. 13 shows a use case of selecting flash memory operation commands. For example, in a batch, the processor core 133-1 drives the
接續圖12所述的排序結果,圖14顯示挑選記憶體操作命令的使用案例。例如,於一個批次中,處理器核心133-1判斷目標資料的編程為SLC模式,因此,驅動閃存介面137發送讀取頁面多平面命令給LUN 150#0,用於讀取片段讀取命令”b”指定的實體位址的資料;發送讀取頁面多平面命令給LUN 150#4,用於片段讀取命令”a”及”h”指定的實體位址的資料,發送片段讀取命令給LUN 150#1,用於讀取片段讀取命令”d”指定的實體位址的資料,以形成一個MPR-lite操作。
Following the sorting result described in FIG. 12, FIG. 14 shows a use case of selecting memory operation commands. For example, in a batch, the processor core 133-1 judges that the programming of the target data is SLC mode, therefore, it drives the
藉由參考MPR-Lite排程資料表的排序結果,處理器核心133-1可逐批次執行如上所述的片段讀取命令,但是,當處理器核心133-1改以
MPR-Lite命令來讀取多平面上頁面的片段資料,不但可提升資料讀取的效率,更提升片段讀取操作的效率。於4K隨機讀取Q64/T4測試中,相較於片段讀取命令,MPR-Lite命令可提升將近30~50%的平均讀取資料命中率。一次讀取的命中率定義為通過閃存介面137從LUN 150中讀取資料被保留下來以回覆給主機110的比例。例如,當片段讀取命令讀取的8K資料全部都保留下來以回覆給主機110時,則這次讀取的命中率為100%。當片段讀取命令讀取的8K資料只保留一半以回覆給主機110時,則這次讀取的命中率為50%。
By referring to the sorting results of the MPR-Lite scheduling table, the processor core 133-1 can execute the fragment read command as described above in batches, but when the processor core 133-1 changes to
The MPR-Lite command to read fragment data of pages on multiple planes not only improves the efficiency of data reading, but also improves the efficiency of fragment reading operations. In the 4K random read Q64/T4 test, compared to the fragment read command, the MPR-Lite command can increase the average read data hit rate by nearly 30-50%. The hit rate of a read is defined as the ratio of the data read from the
本發明所述的方法中的全部或部分步驟可以電腦程式實現,例如電腦的作業系統、電腦中特定硬體的驅動程式、或軟體應用程式。此外,也可實現於如上所示的其他類型程式。所屬技術領域具有通常知識者可將本發明實施例的方法撰寫成電腦程式,為求簡潔不再加以描述。依據本發明實施例方法實施的電腦程式.可儲存於適當的電腦可讀取資料載具,例如DVD、CD-ROM、USB碟、硬碟,亦可置於可通過網路(例如,網際網路,或其他適當載具)存取的網路伺服器。 All or part of the steps in the method of the present invention can be implemented by a computer program, such as a computer operating system, a specific hardware driver in the computer, or a software application program. In addition, it can also be implemented in other types of programs as shown above. Those with ordinary knowledge in the technical field can write the method of the embodiment of the present invention into a computer program, which will not be described for the sake of brevity. The computer program implemented according to the method of the embodiment of the present invention can be stored in an appropriate computer readable data carrier, such as DVD, CD-ROM, USB disk, hard disk, and can also be placed on a network (for example, the Internet) Or other appropriate vehicle).
雖然圖1中包含了以上描述的元件,但不排除在不違反發明的精神下,使用更多其他的附加元件,已達成更佳的技術效果。此外,雖然圖10的流程圖採用指定的順序來執行,但是在不違反發明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。 此外,熟習此技藝人士亦可以將若干步驟整合為一個步驟,或者是除了這些步驟外,循序或平行地執行更多步驟,本發明亦不因此而侷限。 Although FIG. 1 includes the above-described elements, it is not excluded that, without violating the spirit of the invention, more other additional elements can be used to achieve better technical effects. In addition, although the flowchart in FIG. 10 is executed in a specified order, those skilled in the art can modify the sequence of these steps on the premise of achieving the same effect without violating the spirit of the invention. Therefore, the present invention does not It is not limited to using only the sequence described above. In addition, those skilled in the art can also integrate several steps into one step, or in addition to these steps, perform more steps sequentially or in parallel, and the present invention is not limited thereby.
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方 式解釋來包含所有顯而易見的修改與相似設置。 Although the present invention is described using the above embodiments, it should be noted that these descriptions are not intended to limit the present invention. On the contrary, this invention covers modifications and similar arrangements that are obvious to those skilled in the art. Therefore, the scope of the claims applied for must be in the broadest way The formula is explained to include all obvious modifications and similar settings.
S1010~S1090:方法步驟 S1010~S1090: method steps
Claims (10)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962827317P | 2019-04-01 | 2019-04-01 | |
US62/827,317 | 2019-04-01 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202038097A TW202038097A (en) | 2020-10-16 |
TWI737031B true TWI737031B (en) | 2021-08-21 |
Family
ID=72805449
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108140180A TWI737031B (en) | 2019-04-01 | 2019-11-06 | Method and computer program product for reading data fragments of a page on multiple planes |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111796759B (en) |
TW (1) | TWI737031B (en) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112513988A (en) * | 2020-11-06 | 2021-03-16 | 长江存储科技有限责任公司 | Pseudo-asynchronous multiplanar independent read |
US11756644B2 (en) | 2021-06-23 | 2023-09-12 | International Business Machines Corporation | Triage of multi-plane read requests |
CN114546289B (en) * | 2022-02-27 | 2023-06-02 | 苏州浪潮智能科技有限公司 | Method, system, equipment and medium for reading data |
CN114546294B (en) * | 2022-04-22 | 2022-07-22 | 苏州浪潮智能科技有限公司 | Solid state disk reading method, system and related components |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040010612A1 (en) * | 2002-06-11 | 2004-01-15 | Pandya Ashish A. | High performance IP processor using RDMA |
US20140149665A1 (en) * | 2012-11-29 | 2014-05-29 | Infinidat Ltd. | Storage System Capable of Managing a Plurality of Snapshot Families and Method of Operating Thereof |
US8924675B1 (en) * | 2010-09-24 | 2014-12-30 | Emc Corporation | Selective migration of physical data |
TWI506549B (en) * | 2011-12-20 | 2015-11-01 | Intel Corp | System and method for out-of-order prefetch instructions in an in-order pipeline |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI475385B (en) * | 2012-03-14 | 2015-03-01 | Phison Electronics Corp | Method of programming memory cells and reading data, memory controller and memory storage device using the same |
US9229854B1 (en) * | 2013-01-28 | 2016-01-05 | Radian Memory Systems, LLC | Multi-array operation support and related devices, systems and software |
KR102615659B1 (en) * | 2016-07-08 | 2023-12-20 | 에스케이하이닉스 주식회사 | Memory system and operating method thereof |
-
2019
- 2019-11-06 TW TW108140180A patent/TWI737031B/en active
- 2019-11-06 CN CN201911076916.4A patent/CN111796759B/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040010612A1 (en) * | 2002-06-11 | 2004-01-15 | Pandya Ashish A. | High performance IP processor using RDMA |
US8924675B1 (en) * | 2010-09-24 | 2014-12-30 | Emc Corporation | Selective migration of physical data |
TWI506549B (en) * | 2011-12-20 | 2015-11-01 | Intel Corp | System and method for out-of-order prefetch instructions in an in-order pipeline |
US20140149665A1 (en) * | 2012-11-29 | 2014-05-29 | Infinidat Ltd. | Storage System Capable of Managing a Plurality of Snapshot Families and Method of Operating Thereof |
US9383942B2 (en) * | 2012-11-29 | 2016-07-05 | Infinidat Ltd. | Storage system capable of managing a plurality of snapshot families and method of operating thereof |
Also Published As
Publication number | Publication date |
---|---|
TW202038097A (en) | 2020-10-16 |
CN111796759A (en) | 2020-10-20 |
CN111796759B (en) | 2023-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11954370B2 (en) | Command queuing | |
TWI737031B (en) | Method and computer program product for reading data fragments of a page on multiple planes | |
US8429358B2 (en) | Method and data storage device for processing commands | |
US11216189B2 (en) | Method and computer program product for reading partial data of a page on multiple planes | |
US8626996B2 (en) | Solid state memory (SSM), computer system including an SSM, and method of operating an SSM | |
US9342371B2 (en) | Boot partitions in memory devices and systems | |
US7864572B2 (en) | Flash memory storage apparatus, flash memory controller, and switching method thereof | |
US20100287333A1 (en) | Data storage device and related method of operation | |
US20120117314A1 (en) | Memory devices operated within a communication protocol standard timeout requirement | |
KR102595233B1 (en) | Data processing system and operating method thereof | |
KR20140032789A (en) | Controller of nonvolatile memory device and command scheduling method thereof | |
US11210226B2 (en) | Data storage device and method for first processing core to determine that second processing core has completed loading portion of logical-to-physical mapping table thereof | |
CN111813703A (en) | Data storage device and method for updating logical-to-physical address mapping table | |
US20230273878A1 (en) | Storage device for classifying data based on stream class number, storage system, and operating method thereof | |
TWI781846B (en) | Unbalanced plane management method, associated data storage device and controller thereof | |
KR102549540B1 (en) | Storage device and method of operating the same | |
TWI740446B (en) | Computer program product and method and apparatus for managing garbage collection (gc) processes | |
TWI820473B (en) | Method and apparatuse and computer program product for handling sudden power off recovery | |
TW202340939A (en) | Method and computer program product and apparatus for data access in response to host discard commands | |
TWI430098B (en) | Hard disk acceleration access device and access method thereof |