TW202032374A - Data storage device and control method for non-volatile memory - Google Patents
Data storage device and control method for non-volatile memory Download PDFInfo
- Publication number
- TW202032374A TW202032374A TW108128179A TW108128179A TW202032374A TW 202032374 A TW202032374 A TW 202032374A TW 108128179 A TW108128179 A TW 108128179A TW 108128179 A TW108128179 A TW 108128179A TW 202032374 A TW202032374 A TW 202032374A
- Authority
- TW
- Taiwan
- Prior art keywords
- queue
- command
- mapping table
- write
- group mapping
- Prior art date
Links
Images
Landscapes
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
Description
本發明係有關於資料儲存裝置,特別有關於映射資訊之維護。The present invention relates to data storage devices, and particularly to the maintenance of mapping information.
非揮發式記憶體有多種形式─例如,快閃記憶體(flash memory)、磁阻式隨機存取記憶體(magnetoresistive RAM)、鐵電隨機存取記憶體(ferroelectric RAM)、電阻式隨機存取記憶體(resistive RAM)、自旋轉移力矩隨機存取記憶體(Spin Transfer Torque-RAM, STT-RAM)…等,用於長時間資料保存。There are many forms of non-volatile memory-for example, flash memory, magnetoresistive RAM, ferroelectric RAM, resistive random access Memory (resistive RAM), spin transfer torque random access memory (Spin Transfer Torque-RAM, STT-RAM)... etc. are used for long-term data storage.
非揮發式記憶體有其特殊之儲存特性,其操作以及管理需特殊設計。Non-volatile memory has its special storage characteristics, and its operation and management require special design.
根據本案一種實施方式實現的一資料儲存裝置包括一非揮發式記憶體、一控制器、一暫存記憶體、以及一等待佇列。根據一主機交予的一寫入指令,該控制器在該暫存記憶體上更新一群組映射表。該群組映射表對應該寫入指令所指之邏輯群組、且係載自該非揮發式記憶體。該群組映射表尚未載入該暫存記憶體時,該控制器令該寫入指令佇列於該等待佇列,以免拖累該資料儲存裝置之效能。A data storage device implemented according to an embodiment of the present case includes a non-volatile memory, a controller, a temporary memory, and a waiting queue. According to a write command from a host, the controller updates a group mapping table on the temporary memory. The group mapping table corresponds to the logical group pointed to by the write command and is loaded from the non-volatile memory. When the group mapping table has not been loaded into the temporary memory, the controller makes the write command queue in the waiting queue so as not to impair the performance of the data storage device.
一種實施方式中,該控制器係自一指令佇列取得該寫入指令。該寫入指令係由該主機佇列至該指令佇列。In one embodiment, the controller obtains the write command from a command queue. The write command is queued from the host to the command queue.
將該群組映射表完全載入該暫存記憶體之前,該控制器可將該寫入指令指示的寫入資料快取至該暫存記憶體,並回覆一完成元件填入一完成佇列。根據該完成佇列上的該完成元件,該主機將該指令佇列所佇列的一接續指令交予該控制器。Before the group mapping table is completely loaded into the temporary memory, the controller can cache the write data indicated by the write command to the temporary memory, and reply with a completion element to fill in a completion queue . According to the completion element on the completion queue, the host sends a connection command in the command queue to the controller.
將該群組映射表載入該暫存記憶體之後,該控制器可自該等待佇列取得該寫入指令,據以將快取於該暫存記憶體的上述寫入資料程式化至該非揮發式記憶體。After loading the group mapping table into the temporary memory, the controller can obtain the write command from the waiting queue, and accordingly program the write data cached in the temporary memory to the non-volatile memory. Volatile memory.
自該等待佇列取得該寫入指令之前,該控制器可執行該接續指令。Before obtaining the write instruction from the waiting queue, the controller can execute the connection instruction.
一種實施方式中,該控制器為雙核心。將該群組映射表載入該暫存記憶體時,該控制器執行該接續指令。In one embodiment, the controller is dual-core. When the group mapping table is loaded into the temporary memory, the controller executes the connection command.
將該群組映射表完全載入該暫存記憶體之前,該控制器可清理該暫存記憶體內容至該非揮發式記憶體,以騰出快取該寫入指令所指示之寫入資料的空間。該控制器快取該寫入指令所指示之寫入資料後,該控制器回覆一完成元件填入一完成佇列;且根據該完成佇列上的該完成元件,該主機將該指令佇列所佇列的一接續指令交予該控制器。將該群組映射表載入該暫存記憶體之後,該控制器自該等待佇列取得該寫入指令,據以將快取於該暫存記憶體的上述寫入資料程式化至該非揮發式記憶體;且自該等待佇列取得該寫入指令之前,該控制器執行該接續指令。Before the group mapping table is completely loaded into the temporary memory, the controller can clear the contents of the temporary memory to the non-volatile memory to free up the cache for the write data indicated by the write command space. After the controller caches the write data indicated by the write command, the controller replies with a completion component and fills in a completion queue; and according to the completion component on the completion queue, the host queues the command The queued connection command is delivered to the controller. After loading the group mapping table into the temporary memory, the controller obtains the write command from the waiting queue, and programs the write data cached in the temporary memory to the non-volatile memory accordingly. Type memory; and before obtaining the write command from the waiting queue, the controller executes the connection command.
以上控制器對非揮發式記憶體之操作也可以由其他結構實現。本案更可以前述概念實現非揮發式記憶體的控制方法,包括:根據一主機交予的一寫入指令,在一暫存記憶體上更新一群組映射表,該群組映射表對應該寫入指令所指之邏輯群組、且係載自一非揮發式記憶體;且在該群組映射表尚未載入該暫存記憶體時,令該寫入指令佇列於一等待佇列。The operation of the above controller on the non-volatile memory can also be realized by other structures. In this case, the aforementioned concept can be used to realize the control method of non-volatile memory, including: updating a group mapping table on a temporary memory according to a write command from a host, and the group mapping table should be written The logical group indicated by the input command is loaded from a non-volatile memory; and when the group mapping table has not been loaded into the temporary memory, the write command is queued in a waiting queue.
下文特舉實施例,並配合所附圖示,詳細說明本發明內容。Hereinafter, specific embodiments are given in conjunction with accompanying drawings to illustrate the content of the present invention in detail.
以下敘述列舉本發明的多種實施例。以下敘述介紹本發明的基本概念,且並非意圖限制本發明內容。實際發明範圍應依照申請專利範圍界定之。The following description lists various embodiments of the present invention. The following description introduces the basic concept of the present invention, and is not intended to limit the content of the present invention. The actual scope of invention shall be defined in accordance with the scope of patent application.
非揮發式記憶體可以是快閃記憶體(Flash Memory)、磁阻式隨機存取記憶體(Magnetoresistive RAM)、鐵電隨機存取記憶體(Ferroelectric RAM)、電阻式記憶體(Resistive RAM,RRAM)、自旋轉移力矩隨機存取記憶體(Spin Transfer Torque-RAM, STT-RAM)…等,提供長時間資料保存之儲存媒體。以下特別以快閃記憶體為例進行討論。Non-volatile memory can be flash memory (Flash Memory), magnetoresistive RAM (Magnetoresistive RAM), ferroelectric random access memory (Ferroelectric RAM), resistive RAM (RRAM) ), Spin Transfer Torque-RAM (STT-RAM), etc., provide storage media for long-term data storage. The following discussion takes the flash memory as an example.
現今資料儲存裝置常以快閃記憶體為儲存媒體,用以儲存來自於主機的使用者資料。資料儲存裝置的種類眾多,包括記憶卡(Memory Card)、通用序列匯流排閃存裝置(USB Flash Device)、固態硬碟(SSD) …等產品。有一種應用是採多晶片封裝、將快閃記憶體與其控制器包裝在一起─稱為嵌入式快閃記憶體模組(如eMMC)。Nowadays, data storage devices often use flash memory as storage media to store user data from the host. There are many types of data storage devices, including memory cards (Memory Card), universal serial bus flash devices (USB Flash Device), solid state drives (SSD)... and other products. One application is to use multi-chip packaging to package flash memory and its controller together-called embedded flash memory modules (such as eMMC).
以快閃記憶體為儲存媒體的資料儲存裝置可應用於多種電子裝置中。所述電子裝置包括智慧型手機、穿戴裝置、平板電腦、虛擬實境設備…等。電子裝置的運算模塊可視為主機(Host),操作所使用的資料儲存裝置,以存取快閃記憶體所儲存的資料。The data storage device using flash memory as the storage medium can be applied to a variety of electronic devices. The electronic devices include smart phones, wearable devices, tablet computers, virtual reality equipment, etc. The computing module of the electronic device can be regarded as a host, which operates the data storage device used to access the data stored in the flash memory.
以快閃記憶體為儲存媒體的資料儲存裝置也可用於建構數據中心。例如,伺服器可操作固態硬碟(SSD)陣列形成數據中心。伺服器即可視為主機,操作所連結之固態硬碟,以存取其中快閃記憶體。Data storage devices using flash memory as storage media can also be used to construct data centers. For example, the server may operate a solid state drive (SSD) array to form a data center. The server can be regarded as the host, operating the connected solid-state drive to access the flash memory.
快閃記憶體之物理空間是劃分為複數個區塊(Blocks)配置使用。第1圖圖解區塊BLK之結構,其中包括複數頁面(Pages),例如,頁面0…頁面255。各頁面包括複數個區段(Sectors),例如32個區段,每一區段可儲存512B長度的使用者資料。在4KB資料管理模式下,可將8個區段視為一個資料單元。16KB長度的頁面可由四個資料單元所組成。一種實施方式中,資料單元係根據頁面編號,由低至高編號(例如,頁面0至頁面255)配置來儲存使用者資料。一種實施方式中,資料儲存裝置採用多通道技術,係以跨通道的超級區塊(Super Block)、超級頁面(Super Page)管理快閃記憶體的儲存空間,可提升資料儲存裝置的數據吞吐量。The physical space of the flash memory is divided into a plurality of blocks (Blocks) for allocation. Figure 1 illustrates the structure of the block BLK, which includes multiple pages (Pages), for example, page 0...page 255. Each page includes a plurality of sectors (Sectors), such as 32 sectors, each sector can store 512B length of user data. In the 4KB data management mode, 8 sections can be regarded as one data unit. A 16KB page can be composed of four data units. In one embodiment, the data unit is configured to store user data according to the page number, from low to high number (for example, page 0 to page 255). In one embodiment, the data storage device adopts multi-channel technology, and the storage space of the flash memory is managed by cross-channel Super Block and Super Page, which can increase the data throughput of the data storage device. .
快閃記憶體有其特殊的儲存特性。舊資料更新並非同空間複寫。新版的資料需被寫入閒置空間,而舊空間內容將被標為無效。區塊中可能零星留存有效資料,可以執行垃圾回收(Garbage Collection)程序而將有效資料整併到另一區塊。當區塊中不存在任何有效資料時,此區塊在被抹除(Erase)後可以再利用。快閃記憶體的物理空間是動態地被配置使用。相較於主機端是以邏輯位址(例如,邏輯區塊位址LBA或全域主機頁編號GHP…等)區別資料,各邏輯位址究竟對應至快閃記憶體哪一個物理位址,例如,由區塊編號、頁面編號、偏移量等資訊來表示,需以邏輯-物理位址(Logical-to-Physical,L2P)映射表管理。Flash memory has its special storage characteristics. The old data update is not copied in the same space. The new version of the data needs to be written into the free space, and the old space content will be marked as invalid. Valid data may be stored sporadically in a block. Garbage Collection can be executed to merge the valid data into another block. When there is no valid data in the block, the block can be reused after being erased (Erase). The physical space of the flash memory is dynamically allocated and used. Compared with the host side using logical addresses (for example, logical block address LBA or global host page number GHP... etc.) to distinguish data, which physical address each logical address corresponds to in the flash memory, for example, It is represented by information such as block number, page number, offset, etc., and needs to be managed by a logical-to-physical address (Logical-to-Physical, L2P) mapping table.
快閃記憶體多種操作都需參考、或更改L2P映射表所記錄的映射資訊。讀取快閃記憶體中的資料(使用者資料)需要參考L2P映射表所記錄的映射資訊;寫入資料至快閃記憶體則需更新L2P映射表所記錄的映射資訊。除了因應主機(Host)的讀取、寫入要求,快閃記憶體可能還有垃圾回收程序以外其他操作,例如:空間修整(Trimming)、區塊資料搬移(Block Data Transfer)程序…等。以上操作都涉及L2P映射表所記錄的映射資訊之參考或更新。因應之,資料儲存裝置中通常會配置暫存記憶體(如DRAM)以加速L2P映射表的存取。Various operations on flash memory require reference or modification of the mapping information recorded in the L2P mapping table. Reading the data (user data) in the flash memory requires reference to the mapping information recorded in the L2P mapping table; writing data to the flash memory requires updating the mapping information recorded in the L2P mapping table. In addition to responding to the host's read and write requirements, the flash memory may also have other operations besides garbage collection procedures, such as: space trimming (Trimming), block data transfer (Block Data Transfer) procedures... etc. The above operations all involve the reference or update of the mapping information recorded in the L2P mapping table. Correspondingly, a temporary memory (such as DRAM) is usually configured in a data storage device to speed up the access of the L2P mapping table.
然而,隨著快閃記憶體尺寸提升,L2P映射表之維護變成負擔。一種實施方式中,4KB大小的資料單元的物理位址以4B大小的數值所表示,則1TB儲存空間需要1GB大小的空間來儲存L2P映射表。由於L2P映射表的尺寸龐大,因此,可將邏輯位址分為多個邏輯位址群組G#(#為編號),據以將L2P映射表劃分為複數個群組映射表L2P_G#。被呼叫到的群組映射表L2P_G#才載至DRAM以供參考或更新。相較於邏輯位址-物理空間L2P映射表,群組映射表L2P_G#的存取會容易許多。However, as the size of flash memory increases, the maintenance of the L2P mapping table becomes a burden. In one implementation, the physical address of a 4KB data unit is represented by a 4B value, and a 1TB storage space requires a 1GB space to store the L2P mapping table. Due to the huge size of the L2P mapping table, the logical address can be divided into multiple logical address groups G# (# is a number), and the L2P mapping table is divided into a plurality of group mapping tables L2P_G# accordingly. The called group mapping table L2P_G# is loaded to DRAM for reference or update. Compared with the logical address-physical space L2P mapping table, the access to the group mapping table L2P_G# is much easier.
第2圖圖解群組映射表L2P_G#之定義。一種實施方式是以定量的邏輯位址切割該邏輯位址-物理空間L2P映射表,形成對應不同邏輯位址群組G#的複數個群組映射表L2P_G#。Figure 2 illustrates the definition of the group mapping table L2P_G#. One implementation is to cut the logical address-physical space L2P mapping table with a quantitative logical address to form a plurality of group mapping tables L2P_G# corresponding to different logical address groups G#.
考量到DRAM的配置成本,資料儲存裝置可能僅配置小容量的DRAM。在此條件下,如何有效率地管理群組映射表L2G_G#的運作,包括讀取、暫存、參考或更新,成為一門重要的技術課題。Considering the cost of DRAM configuration, the data storage device may only be configured with a small capacity DRAM. Under this condition, how to efficiently manage the operation of the group mapping table L2G_G#, including reading, temporarily storing, referencing or updating, has become an important technical issue.
第3圖為方塊圖,圖解根據本案一種實施方式所實施的資料儲存裝置300,其中包括快閃記憶體302、固態硬碟(SSD)控制器304以及暫存記憶體306。主機308透過SSD控制器304來存取快閃記憶體302。資料儲存裝置300內部也可發動快閃記憶體302之最佳化操作;例如,SSD控制器304可對快閃記憶體302進行垃圾回收程序、空間修整、區塊資料搬移程序…等。SSD控制器304進行運算時是以暫存記憶體306暫存資料。暫存記憶體306可為DRAM或SRAM,暫存記憶體306較佳置於SSD控制器304之外部。FIG. 3 is a block diagram illustrating a
快閃記憶體302具有系統資訊區塊池310,例如:儲存群組映射表L2P_G#(全數)以及系統參數表。備用區塊池312供應主動區塊314,用於寫入來自於主機308的寫入資料。主動區塊314關閉後(例如,寫入區塊結尾(End Of Block,簡稱EOB)資訊後),將視為資料區塊,屬於資料區塊池316。資料區塊中不存在任何有效資料時,則將此資料區塊作為備用區塊,並屬於備用區塊池312。主動區塊314也可以作為垃圾回收程序或區塊資料搬移程序的目的地。The
資料儲存裝置300並非將來自主機308的寫入資料(使用者資料)直接寫入主動區塊314,而是先快取至暫存記憶體306,同一時間,取得寫入資料所相應的群組映射表L2P_G#。之後,將寫入資料寫入至主動區塊314,並且更新群組映射表L2P_G#的映射關係,以下詳述之。The
主機308在主機端記憶體308規劃有指令佇列(Submission Queue)320、完成佇列(Completion Queue)322,並提供空間暫存寫入資料324。資料儲存裝置300的SSD控制器304在暫存記憶體306中規劃資料快取區326以及群組映射表暫存區328,群組映射表暫存區328例如可暫存16個群組映射表L2P_G#。特別是,本案資料儲存裝置300更規劃等待佇列330。等待佇列330可以規劃在暫存記憶體306或SSD控制器304內部的靜態隨機存取記憶體(SRAM)。The
第4A圖、第4B圖、第4C圖為根據本案一種實施方式寫入指令執行方法的流程圖。步驟S402,SSD控制器304接收來自主機308的寫入指令,其中,寫入指令指示寫入資料324以及寫入資料324的LBA。當主機308欲輸出寫入指令至資料儲存裝置300時,主機308將寫入指令佇列於指令佇列320,寫入指令例如是寫入LBA#1016~#1023的使用者資料。之後,資料儲存裝置300的SSD控制器304自指令佇列320取得寫入指令,完成寫入指令的接收。Fig. 4A, Fig. 4B, and Fig. 4C are flowcharts of a write instruction execution method according to an embodiment of this case. In step S402, the
步驟S404,SSD控制器304判斷寫入資料324所對應的目標群組映射表L2P_G#是否已暫存至群組映射表暫存區328,若判斷為是則執行步驟S406,若判斷為否則執行步驟S420(第4B圖)。由於LBA#1016~#1023的映射關係乃記錄在群組映射表L2P_G#0,因此,SSD控制器304判斷目標群組映射表L2P_G#(即群組映射表L2P_G#0)是否已暫存至群組映射表暫存區328中,其中,SSD控制器304可依據管理群組映射表暫存區328內容的尋找表(Lookup Table)或鏈結串列來加速判斷的過程。In step S404, the
步驟S406,SSD控制器304判斷資料快取區326是否有足夠的資料快取空間以快取寫入資料324,若判斷為是則執行步驟S408,若判斷為否則執行步驟S414。LBA#1016~#1023的每一使用者資料的大小為512B,快取這些使用者資料共計需要4KB的資料快取空間,SSD控制器304判斷資料快取區326是否有大於等於4KB大小的資料快取空間。In step S406, the
步驟S408,SSD控制器304將寫入資料324快取至資料快取區326。SSD控制器304自主機端記憶體318下載LBA#1016~#1023的使用者資料(324),並將這些使用者資料(324)快取至資料快取區326。另外,SSD控制器304可在快取完成時,填入完成元件(Complete Element)至完成佇列322,等同完成寫入指令的執行,以增加寫入指令的執行效率。在檢查完成元件的內容後,主機308可再輸出其他寫入指令至SSD控制器304。In step S408, the
步驟S410,SSD控制器304將快取至資料快取區326的寫入資料324編程至快閃記憶體302。SSD控制器304將資料快取區326中LBA#1016~#1023的使用者資料編程至主動區塊314。然而,為了提高資料編程的效率,SSD控制器304亦可判斷快取的使用者資料的數量是否到達編程閥值,例如:32筆LBA的使用者資料,如果快取的使用者資料的數量未達到編程閥值,則SSD控制器304可繼續累積寫入資料;例如,重新步驟S402。In step S410, the
步驟S412,SSD控制器304更新目標群組映射表L2P_G#中寫入資料324的映射資訊。SSD控制器304以LBA#1016~#1023的使用者資料在主動區塊314的物理位址來更新群組映射表L2P_G#0的映射資訊。如果完成元件未在步驟S408填入至完成佇列322,SSD控制器304可在步驟S410或步驟S412完成之後,再填入完成元件至完成佇列322。群組映射表暫存區328所儲存的群組映射表L2P_G#需寫入系統資訊區塊池310,非揮發式儲存。In step S412, the
步驟S414,SSD控制器304將資料快取區326的快取資料編程至快閃記憶體302。資料快取區326的快取資料為尚未編程至快閃記憶體302的資料,當資料快取區326的資料快取空間不夠時,SSD控制器304將尚未編程的資料編程至快閃記憶體302以增加資料快取空間。In step S414, the
在上述中,如果步驟S404的判斷結果為否時,SSD控制器304進入第4B圖流程。In the above, if the judgment result of step S404 is no, the
步驟S420,SSD控制器304將寫入指令推入等待佇列330。由於群組映射表L2P_G#0(即目標群組映射表L2P_G#)並未暫存至群組映射表暫存區328,則SSD控制器304將寫入指令推入等待佇列330,並準備執行寫入指令所需的群組映射表L2P_G#0以及LBA#1016~#1023的使用者資料。In step S420, the
一種實施方式中,SSD控制器304為雙CPU架構,第一個CPU主要負責寫入指令的執行,第二個CPU主要負責快閃記憶體302的操作。由於群組映射表L2P_G#0並未暫存至群組映射表暫存區328,這表示SSD控制器304需要從快閃記憶體302中讀取群組映射表L2P_G#0,因此,由第二個CPU執行步驟S422,負責群組映射表L2P_G#0的讀取。另外,由於第二個CPU會取得群組映射表L2P_G#0,因此,第一個CPU可以繼續執行步驟S424、步驟S402、或其他程序。換句話說,SSD控制器304無需暫停以等待群組映射表L2P_G#0的讀取,SSD控制器304可繼續執行後續的步驟S424、下一個寫入指令或其他程序,如此一來,資料儲存裝置300效能可有效地提升。In one embodiment, the
步驟S422,SSD控制器304讀取目標群組映射表L2P_G#。SSD控制器304(第二個CPU)可依據群組-物理位址(Group-Physical Address,G2F)映射表以取得群組映射表L2P_G#0在快閃記憶體302中的物理位址,接著,讀取此物理位址以取得群組映射表L2P_G#0,並將群組映射表L2P_G#0上傳至群組映射表暫存區328。In step S422, the
步驟S424,如同步驟S406,SSD控制器304判斷資料快取區326是否有足夠的資料快取空間以快取寫入資料324,若判斷為是則執行步驟S426,若判斷為否則執行步驟S442(第4C圖)。In step S424, as in step S406, the
步驟S426,如同步驟S408,SSD控制器304將寫入資料324快取至資料快取區326。SSD控制器304此時可填入完成元件至完成佇列322,提早告知主機308可提供下一個指令。在檢查完成元件的內容後,主機308可再輸出其他寫入指令至SSD控制器304。或著,SSD控制器304也可在更後續程序填入完成元件至完成佇列322。只要使主機308得以早點發現該完成狀態,使接續指令得以提早被執行,即落入本案欲保護範圍。In step S426, as in step S408, the
步驟S428, SSD控制器304判斷寫入資料324所對應的目標群組映射表L2P_G#是否完成載入群組映射表暫存區328,若判斷為是則執行步驟S430,若判斷為否則持續監控。如果群組映射表L2P_G#0尚未完全上傳至群組映射表暫存區328,SSD控制器304的第一CPU仍可應付主機308要求的其他程序。In step S428, the
步驟S430,SSD控制器304將快取至資料快取區326的寫入資料324編程至快閃記憶體302。In step S430, the
步驟S432,如同步驟S412,SSD控制器304更新目標群組映射表L2P_G#中寫入資料324的映射資訊。In step S432, as in step S412, the
在接續指令插入進行的同時,等待佇列330中的寫入指令確實完成。While the instruction insertion is continuing, the write instruction in the waiting
在上述中,如果步驟S424的判斷結果為否時,SSD控制器304進入第4C圖流程。In the above, if the judgment result of step S424 is no, the
步驟S442騰出資料快取區304,如同步驟S414,SSD控制器304將資料快取區326的快取資料編程(清理)至快閃記憶體302。Step S442 frees up the
步驟S444,如同步驟S408,SSD控制器304將寫入資料324快取至資料快取區326。SSD控制器304此時可填入完成元件至完成佇列322,提早告知主機308可提供下一個指令。在檢查完成元件的內容後,主機308可再輸出其他寫入指令至SSD控制器304。或著,SSD控制器304也可在更後續程序填入完成元件至完成佇列322。只要使主機308得以早點發現該完成狀態,使接續指令得以提早被執行,即落入本案欲保護範圍。In step S444, as in step S408, the
步驟S446, SSD控制器304判斷寫入資料324所對應的目標群組映射表L2P_G#是否完成載入群組映射表暫存區328,若判斷為是則執行步驟S448,若判斷為否則重新執行步驟S446。如果群組映射表L2P_G#0尚未完全上傳至群組映射表暫存區328,SSD控制器304的第一CPU仍可應付主機308要求的其他程序。In step S446, the
步驟S448,SSD控制器304將快取至資料快取區326的寫入資料324編程至快閃記憶體302。In step S448, the
步驟S450,如同步驟S412,SSD控制器304更新目標群組映射表L2P_G#中寫入資料324的映射資訊。In step S450, as in step S412, the
在接續指令插入進行的同時,等待佇列330中的寫入指令確實完成。While the instruction insertion is continuing, the write instruction in the waiting
以上SSD控制器304對快閃記憶體302之操作設計也可以由其他結構實現。凡是利用等待佇列330的技術,都屬於本案欲保護範圍。本案更可以前述概念實現非揮發式記憶體的控制方法。The above operation design of the
雖然本發明已以較佳實施例揭露如上,然其並非用以限定本發明,任何熟悉此項技藝者,在不脫離本發明之精神和範圍內,當可做些許更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。Although the present invention has been disclosed as above in the preferred embodiment, it is not intended to limit the present invention. Anyone familiar with the art can make some changes and modifications without departing from the spirit and scope of the present invention. Therefore, the present invention The scope of protection shall be subject to the scope of the attached patent application.
300:資料儲存裝置; 302:快閃記憶體; 304:固態硬碟(SSD)控制器; 306:暫存記憶體; 308:主機; 310:系統資訊區塊池; 312:備用區塊池; 314:主動區塊; 316:資料區塊池; 318:主機端記憶體; 320:指令佇列; 322:完成佇列; 324:寫入資料; 326:資料快取區; 328:群組映射表暫存區; 330:等待佇列; BLK:區塊; L2P:邏輯位址-物理空間映射表; L2P_G0、L2P_G1、L2P_G2:群組映射表、且 S402…S450:步驟。300: Data storage device; 302: Flash memory; 304: Solid State Drive (SSD) controller; 306: Temporary storage memory; 308: host; 310: System information block pool; 312: Spare block pool; 314: Active block; 316: Data block pool; 318: host side memory; 320: Command queue; 322: Complete the queue; 324: Write data; 326: Data cache area; 328: Temporary storage area of group mapping table; 330: Waiting queue; BLK: block; L2P: logical address-physical space mapping table; L2P_G0, L2P_G1, L2P_G2: group mapping table, and S402...S450: Steps.
第1圖圖解一區塊BLK之結構;
第2圖圖解群組映射表L2P_G#之定義;
第3圖為方塊圖,圖解根據本案一種實施方式所實施的一資料儲存裝置300;且
第4A圖、第4B圖、第4C圖為流程圖,根據本案一種實施方式圖解SSD控制器304應付主機308一寫入指令的細節。Figure 1 illustrates the structure of a block BLK;
Figure 2 illustrates the definition of the group mapping table L2P_G#;
Figure 3 is a block diagram illustrating a
300:資料儲存裝置 300: Data storage device
302:快閃記憶體 302: flash memory
304:固態硬碟(SSD)控制器 304: solid state drive (SSD) controller
306:暫存記憶體 306: Temporary memory
308:主機 308: host
310:系統資訊區塊池 310: System Information Block Pool
312:備用區塊池 312: Spare Block Pool
314:主動區塊 314: active block
316:資料區塊池 316: data block pool
318:主機端記憶體 318: host-side memory
320:指令佇列 320: Command Queue
322:完成佇列 322: Complete Queue
324:寫入資料 324: write data
326:資料快取區 326: Data Cache
328:群組映射表暫存區 328: Group Mapping Table Temporary Area
330:等待佇列 330: Waiting Queue
Claims (18)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910824203.5A CN111610931B (en) | 2019-02-26 | 2019-09-02 | Data storage device and non-volatile memory control method |
US16/728,294 US11126558B2 (en) | 2019-02-26 | 2019-12-27 | Data storage device and control method for non-volatile memory |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962810422P | 2019-02-26 | 2019-02-26 | |
US62/810,422 | 2019-02-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202032374A true TW202032374A (en) | 2020-09-01 |
TWI726381B TWI726381B (en) | 2021-05-01 |
Family
ID=73643478
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108125218A TWI706250B (en) | 2019-02-26 | 2019-07-17 | Data storage device and control method for non-volatile memory |
TW108127457A TWI724483B (en) | 2019-02-26 | 2019-08-02 | Data storage device and control method for non-volatile memory |
TW108128179A TWI726381B (en) | 2019-02-26 | 2019-08-08 | Data storage device and control method for non-volatile memory |
TW108128515A TWI713032B (en) | 2019-02-26 | 2019-08-12 | Data storage device and control method for non-volatile memory |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108125218A TWI706250B (en) | 2019-02-26 | 2019-07-17 | Data storage device and control method for non-volatile memory |
TW108127457A TWI724483B (en) | 2019-02-26 | 2019-08-02 | Data storage device and control method for non-volatile memory |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108128515A TWI713032B (en) | 2019-02-26 | 2019-08-12 | Data storage device and control method for non-volatile memory |
Country Status (1)
Country | Link |
---|---|
TW (4) | TWI706250B (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8112574B2 (en) * | 2004-02-26 | 2012-02-07 | Super Talent Electronics, Inc. | Swappable sets of partial-mapping tables in a flash-memory system with a command queue for combining flash writes |
JP4420351B2 (en) * | 2005-09-30 | 2010-02-24 | 富士通株式会社 | Hierarchical storage system, control method and program |
US8266409B2 (en) * | 2009-03-03 | 2012-09-11 | Qualcomm Incorporated | Configurable cache and method to configure same |
US8386747B2 (en) * | 2009-06-11 | 2013-02-26 | Freescale Semiconductor, Inc. | Processor and method for dynamic and selective alteration of address translation |
TWI521343B (en) * | 2011-08-01 | 2016-02-11 | Toshiba Kk | An information processing device, a semiconductor memory device, and a semiconductor memory device |
US9690695B2 (en) * | 2012-09-20 | 2017-06-27 | Silicon Motion, Inc. | Data storage device and flash memory control method thereof |
US9256384B2 (en) * | 2013-02-04 | 2016-02-09 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Method and system for reducing write latency in a data storage system by using a command-push model |
US9383927B2 (en) * | 2014-05-28 | 2016-07-05 | SandDisk Technologies LLC | Method and system for creating a mapping table cache from an interleaved subset of contiguous mapping data for a storage device |
KR20160118836A (en) * | 2015-04-03 | 2016-10-12 | 에스케이하이닉스 주식회사 | Memory controller including host command queue and method of operating thereof |
TWI537728B (en) * | 2015-09-23 | 2016-06-11 | 群聯電子股份有限公司 | Buffer memory management method, memory control circuit unit and memory storage device |
US10552335B2 (en) * | 2015-09-25 | 2020-02-04 | Beijing Lenovo Software Ltd. | Method and electronic device for a mapping table in a solid-state memory |
TWI587214B (en) * | 2016-04-21 | 2017-06-11 | 慧榮科技股份有限公司 | Data storage device, control unit and task ordering method thereof |
KR102615593B1 (en) * | 2016-05-04 | 2023-12-21 | 에스케이하이닉스 주식회사 | Memory system and operating method of memory system |
US10559344B2 (en) * | 2016-09-16 | 2020-02-11 | Aspiring Sky Co. Limited | Hybrid non-volatile memory devices with static random access memory (SRAM) array and non-volatile memory (NVM) array |
TWI659307B (en) * | 2017-01-06 | 2019-05-11 | 慧榮科技股份有限公司 | Data storage device and flash memory control method |
TWI653533B (en) * | 2017-03-07 | 2019-03-11 | 慧榮科技股份有限公司 | Data storage device and method of operation thereof |
KR20180135188A (en) * | 2017-06-12 | 2018-12-20 | 에스케이하이닉스 주식회사 | Memory system and operating method of memory system |
TWI660346B (en) * | 2018-09-07 | 2019-05-21 | 大陸商深圳大心電子科技有限公司 | Memory management method and storage controller |
-
2019
- 2019-07-17 TW TW108125218A patent/TWI706250B/en active
- 2019-08-02 TW TW108127457A patent/TWI724483B/en active
- 2019-08-08 TW TW108128179A patent/TWI726381B/en active
- 2019-08-12 TW TW108128515A patent/TWI713032B/en active
Also Published As
Publication number | Publication date |
---|---|
TWI713032B (en) | 2020-12-11 |
TW202032377A (en) | 2020-09-01 |
TWI706250B (en) | 2020-10-01 |
TWI726381B (en) | 2021-05-01 |
TW202032563A (en) | 2020-09-01 |
TW202032375A (en) | 2020-09-01 |
TWI724483B (en) | 2021-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109240938B (en) | Memory system and control method for controlling nonvolatile memory | |
USRE49508E1 (en) | Memory system and method for controlling nonvolatile memory | |
CN110955384B (en) | Data storage device and non-volatile memory control method | |
JP6016137B2 (en) | Solid state drive and method of operation thereof | |
JP6076506B2 (en) | Storage device | |
CN109726138B (en) | Data storage device and non-volatile memory operation method | |
US10411024B2 (en) | Memory system and method for controlling nonvolatile memory | |
US9104554B2 (en) | Storage apparatus, storage controller and method for relocating data in solid state drive | |
JP7358594B2 (en) | memory system | |
JP2007048307A (en) | Non-volatile memory control | |
KR20120030137A (en) | Memory system having persistent garbage collection | |
TWI718710B (en) | Data storage device and non-volatile memory control method | |
JP7392080B2 (en) | memory system | |
CN111610931B (en) | Data storage device and non-volatile memory control method | |
TWI714975B (en) | Data storage device and control method for non-volatile memory | |
TWI726381B (en) | Data storage device and control method for non-volatile memory | |
US20150074335A1 (en) | Memory system, controller and control method of memory | |
TWI705328B (en) | Data storage device and control method for non-volatile memory | |
TWI724550B (en) | Data storage device and non-volatile memory control method | |
US20230236964A1 (en) | Storage controller deallocating memory block, method of operating the same, and method of operating storage device including the same | |
KR20110096829A (en) | Semiconductor storage device and control method of the same | |
CN117369715A (en) | System, method and apparatus for updating usage reclamation units based on references in storage devices | |
KR20230166803A (en) | Storage device providing high purge performance and memory block management method thereof |