TW201426305A - Virtual memory device (VMD) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of TEMP files to ramdisks for enhanced flash endurance - Google Patents

Virtual memory device (VMD) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of TEMP files to ramdisks for enhanced flash endurance Download PDF

Info

Publication number
TW201426305A
TW201426305A TW102133328A TW102133328A TW201426305A TW 201426305 A TW201426305 A TW 201426305A TW 102133328 A TW102133328 A TW 102133328A TW 102133328 A TW102133328 A TW 102133328A TW 201426305 A TW201426305 A TW 201426305A
Authority
TW
Taiwan
Prior art keywords
data
flash memory
host
page
memory
Prior art date
Application number
TW102133328A
Other languages
Chinese (zh)
Other versions
TWI506431B (en
Inventor
Frank Yu
Yi-Syu Yan
Original Assignee
Infomicro Electronics Shenzhen Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/730,797 external-priority patent/US8954654B2/en
Application filed by Infomicro Electronics Shenzhen Ltd filed Critical Infomicro Electronics Shenzhen Ltd
Publication of TW201426305A publication Critical patent/TW201426305A/en
Application granted granted Critical
Publication of TWI506431B publication Critical patent/TWI506431B/en

Links

Abstract

A Virtual-Memory Device (VMD) driver and application execute on a host to increase endurance of flash memory attached to a Super Enhanced Endurance Device (SEED) or Solid-State Drive (SSD). Host accesses to flash are intercepted by the VMD driver using upper and lower-level filter drivers and categorized as data types of paging files, temporary files, meta-data, and user data files, using address ranges and file extensions read from meta-data tables. Paging files and temporary files are optionally written to flash. Full-page and partial-page data are grouped into multi-page meta-pages by data type before storage by the SSD. ramdisks and caches for storing each data type in the host DRAM are managed and flushed to the SSD by the VMD driver. Write dates are stored for pages or blocks for management functions. A spare/swap area in DRAM reduces flash wear. Reference voltages are adjusted when error correction fails.

Description

虛擬記憶體設備驅動器、用於在主機上執行之虛擬記憶體設備驅動器、刷新快閃記憶體的方法、快閃記憶體刷新的方法、超級增強耐力設備硬碟固體狀態驅動機耐用轉換層之方法、超級增強耐力設備及耐力快閃記憶體檔案系統Virtual memory device driver, virtual memory device driver for executing on host, method for flashing flash memory, method for flash memory refresh, method for super-enhanced endurance device hard disk solid state driver durable conversion layer , super enhanced endurance equipment and endurance flash memory file system

本申請是美國專利號為13/540,569,遞交日為2012年7月2日的申請「具有耐用轉換層ETL和用於減少快閃記憶體磨損的暫時檔案轉移的超級耐力硬碟固體狀態驅動機」的部分連續案(continuation-in-part,CIP)。This application is a U.S. Patent No. 13/540,569, filed on July 2, 2012, "Ultra-Endurance Hard Disk Solid State Drive with Durable Conversion Layer ETL and Temporary File Transfer for Reducing Flash Memory Wear" Continuation-in-part (CIP).

本申請是美國專利號為12/475,457,遞交日為2009年5月29日的申請「多層次條帶化和快閃記憶體系統的截斷頻道均衡」的部分連續案(continuation-in-part,CIP)。This application is a continuation-in-part of the application "Multi-level striping and truncated channel equalization of flash memory systems" with the US patent number 12/475,457 and the submission date of May 29, 2009. CIP).

本申請是專利號為12/347,306,遞交日為2008年12月31日,現在美國申請號為8,112,574的申請「在具有組合快閃記憶體寫的命令序列的快閃記憶體系統中局部映射表的可交換集」的部分連續案(continuation-in-part,CIP)。This application is a patent number 12/347,306, the filing date is December 31, 2008, and the current application number is 8,112,574. "Local mapping table in a flash memory system with a command sequence for combined flash memory writing. The continuation-in-part (CIP) of the exchangeable set.

本申請是美國專利號為12/141,879,遞交日為2008年6月18日的申請「基於儲存系統的高性能和耐力的非易失儲存器」的部分連續案(continuation-in-part,CIP)。This application is a continuation-in-part (CIP) application for the "non-volatile storage based on high performance and endurance of storage systems" with US Patent No. 12/141,879 and submission dated June 18, 2008. ).

本申請與美國專利號為7,953,931,遞交日為2008年2月21日的申請「高耐力非易失性快閃記憶體設備」相關。This application is related to the application of "High Endurance Non-Volatile Flash Memory Device" to US Patent No. 7,953,931, filed on February 21, 2008.

本申請與美國專利號為7,333,364,遞交日為2007年4月19日的申請「對多位單元快閃記憶體的單元降級及參考電壓調整」相關。This application is related to U.S. Patent No. 7,333,364, filed on Apr. 19, 2007, entitled "Degradation of Units for Multi-Bit Flash Memory and Reference Voltage Adjustment".

本發明有關於快閃記憶體系統,尤其係有關於一種具有增強耐力和壽命的快閃記憶體驅動。

The present invention relates to flash memory systems, and more particularly to a flash memory drive having enhanced endurance and longevity.

快閃記憶體被廣泛的用於電腦系統中的外圍儲存和可攜式裝置的主要儲存裝置。NAND快閃記憶體是由東芝公司的舛岡富士雄博士在1987年發明的,採用電子可抹除可程式化唯讀記憶體(Electrically Erasable Programmable Read-Only Memory,EEPROM)單元,EEPROM單元在浮動閘極儲存電荷。單元通常藉由雪崩電流編程,並採用量子力學隧道穿過薄氧化物方式抹除。不幸的是,在寫程式或抹除程式過程中,一些電子可能會被薄氧化層捕獲。假設一個恒定的編程電壓,這些被捕獲的電子將減少後續編程循環過程中儲存單元儲存的電荷。通常情況下,藉由提高編程電壓以補償被捕獲的電子。Flash memory is widely used as a primary storage device for peripheral storage and portable devices in computer systems. NAND flash memory was invented in 1987 by Toshiba Corporation's Dr. Fujioka Hiroshi, using an electrically erasable Programmable Read-Only Memory (EEPROM) unit with EEPROM cells at floating gates. Store the charge. The cells are typically programmed by avalanche current and are wiped out through thin oxides using quantum mechanical tunneling. Unfortunately, some electrons may be captured by a thin oxide layer during writing or erasing. Assuming a constant programming voltage, these captured electrons will reduce the charge stored by the memory cells during subsequent programming cycles. Typically, the trapped electrons are compensated by increasing the programming voltage.

由於快閃記憶體的密度和大小的增加,單元的大小也變小。氧化物的厚度,包括隧道氧化物的厚度也變薄。氧化物稀釋劑則更容易捕獲電子,且捕獲也更容易失敗。NAND快閃記憶體的浮動閘極用於捕獲電子。浮動閘極中的電子的數量可能會影響輸出電壓位準。藉由控制寫過程中耗乏層(depletion layer)捕獲的電子的數目,獲取不同的電壓位準。之前較小的浮動閘極面積限制了可以捕獲電子的最大數目(現在只是幾百個電子)。由於編程或讀取可能引起電子洩漏或被浮動閘極捕獲。這種電子數目的變化會影響電壓輸出位準的變化以及讀取結果。As the density and size of the flash memory increase, the size of the unit also becomes smaller. The thickness of the oxide, including the thickness of the tunnel oxide, is also thinned. Oxide thinners make it easier to capture electrons and capture is more likely to fail. The floating gate of the NAND flash memory is used to capture electrons. The amount of electrons in the floating gate can affect the output voltage level. Different voltage levels are obtained by controlling the number of electrons captured by the depletion layer during the writing process. Previously smaller floating gate areas limited the maximum number of electrons that could be captured (now just a few hundred electrons). Electronic leakage or trapping by floating gates due to programming or reading. This change in the number of electrons affects the change in the voltage output level and the result of the reading.

快閃記憶體能夠承受的程式抹除次數大約是10萬次,這使得快閃記憶體在正常讀寫的情況下有很長的壽命。然而,較小的快閃記憶體單元已經有了較高的耐磨性,對二層單元而言,較新的快閃記憶體可能到達不少於1萬次程式抹除週期,而三層單元(Triple-Level Cells,TLC)大約為600次。如果按目前的趨勢發展下去,未來快閃記憶體可能只允許300次的程式抹除循環。如此低的耐力可能會嚴重限制快閃記憶體的應用,同時嚴重影響硬碟固體狀態驅動機(SSD)的應用。Flash memory can withstand about 100,000 program erases, which makes flash memory have a long life in normal reading and writing. However, smaller flash memory cells already have higher wear resistance. For the two-layer unit, newer flash memory may reach no less than 10,000 program erase cycles, while the third layer The Triple-Level Cells (TLC) is approximately 600 times. If the current trend continues, future flash memory may only allow 300 program erase cycles. Such low endurance can severely limit the application of flash memory, while seriously affecting the application of hard disk solid state drive (SSD).

提高快閃記憶體的密度的一種方法是每個儲存單元內部儲存儲存多於1位元的訊息。儲存單元的不同電壓位準被分配不同的多位元值,例如,4伏特電壓可以覆蓋2位元儲存單元。然而,多層單元(MLC)和三層單元(TLC)的雜訊餘量減少了,耐力問題加劇了。One way to increase the density of flash memory is to store more than one bit of information stored in each storage unit. Different voltage levels of the storage unit are assigned different multi-bit values, for example, a 4 volt voltage can cover a 2-bit storage unit. However, the noise margin of the multi-level cell (MLC) and the three-layer cell (TLC) is reduced, and the endurance problem is exacerbated.

很有可能,未來潛在的快閃記憶體耐力將降低。快閃記憶體驅動器可能藉由各種技術彌補潛在快閃記憶體低耐力。例如,快閃記憶體驅動上的DRAM緩衝區驅動可以作為一個回寫緩衝記憶體,當主機在相同資料位置執行寫時,減少向底層快閃記憶體的寫次數。It is very likely that the potential flash memory endurance will decrease in the future. Flash memory drivers may compensate for the potential for low flash memory potential by various techniques. For example, the DRAM buffer driver on the flash memory driver can be used as a write-back buffer memory to reduce the number of writes to the underlying flash memory when the host performs a write at the same data location.

期望的情形是,快閃記憶體驅動的主機軟體驅動器和控制器補償底層快閃記憶體設備的低耐用性。期望藉由主機的虛擬記憶體設備(Virtual-Memory Device,VMD)應用程式和驅動器連接到標準的硬碟固體狀態驅動機(Solid-State Drive,SSD)或超級耐力快閃記憶體驅動,以使用一系列先進的管理技術以減少對快閃記憶體寫的數量,進而減少對底層快閃記憶體的程式抹除週期。期望藉由主機的VMD應用程式和驅動器管理超級耐力快閃記憶體驅動以構建形成低耐力快閃記憶體。

It is desirable that the flash memory driven host software driver and controller compensate for the low endurance of the underlying flash memory device. It is expected to be connected to a standard hard disk solid state drive (SSD) or super endurance flash memory drive by the host's Virtual-Memory Device (VMD) application and driver. A series of advanced management techniques to reduce the amount of writes to flash memory, thereby reducing the program erase cycle for the underlying flash memory. It is desirable to manage the super endurance flash memory drive by the host's VMD application and driver to build a low endurance flash memory.

本發明第一方面提供了虛擬記憶體設備(VMD)驅動器,驅動器在主機上執行,包括:A first aspect of the present invention provides a virtual memory device (VMD) driver, the driver being executed on a host, comprising:

檔案類型識別器,用於為VMD驅動器接收的主機寫產生一個資料類型;a file type identifier for generating a data type for a host write received by the VMD driver;

資料拆分管理器,用於根據資料類型識別器識別的資料類型,對主機寫入資料進行分類;a data splitting manager for classifying data written by the host according to the type of data identified by the data type identifier;

資料寫入緩衝記憶體,用於儲存用戶資料類型的主機寫資料;The data is written into the buffer memory for storing the data of the user data type;

元資料(metadata)緩衝記憶體,用於儲存元資料類型的主機寫資料;Metadata buffer memory for storing metadata written by the host of the metadata type;

分頁緩衝記憶體,用於儲存分頁檔案資料類型的主機寫資料;a page buffer memory for storing a host write data of a paging file data type;

暫時緩衝記憶體,用於儲存暫時資料類型的主機寫資料;Temporary buffer memory for storing data of a temporary data type host;

用戶分組引擎,用於將儲存在資料寫緩衝記憶體中的用戶資料分類成用戶元頁;a user grouping engine for classifying user data stored in the data write buffer memory into a user metapage;

元資料分組引擎,用於將儲存在資料寫緩衝記憶體中的元資料分類成元資料的元頁;a metadata packet engine for classifying metadata stored in the data write buffer memory into a meta page of the metadata;

輸出緩衝區,用於將分組的元頁和資料類型訊息發送到快閃記憶體驅動系統進行儲存。An output buffer for sending the grouped meta page and data type messages to the flash memory drive system for storage.

本發明第二方面提供了一種用於在主機上執行的虛擬記憶體設備(VMD)驅動器,包括:A second aspect of the present invention provides a virtual memory device (VMD) driver for execution on a host, comprising:

資料類型分配器,用於為藉由VMD驅動器接收的主機寫產生資料類型;a data type allocator for generating a data type for a host write received by the VMD driver;

任務優先級分配器,用於為任務分配優先級,包括根據資料類型寫主機寫資料,優先級是來自於資料類型分配器的資料類型的函數;a task priority allocator for assigning priorities to tasks, including writing a host write data according to a data type, and the priority is a function from a data type of the data type allocator;

目標分配器,用於根據資料類型分配器產生的資料類型,對主機寫資料進行分類;a target allocator for classifying the data written by the host according to the type of data generated by the data type allocator;

資料寫緩衝記憶體,用於儲存具有用戶資料類型的主機寫資料;Data write buffer memory for storing host write data with user data type;

虛擬磁碟驅動器,用於將具有暫時資料類型的主機寫資料儲存到主機DRAM中;a virtual disk drive for storing host write data having a temporary data type into a host DRAM;

資料讀緩衝記憶體,用於儲存主機讀資料;Data read buffer memory for storing host read data;

分組引擎,用於將儲存在資料寫緩衝記憶體中的資料分組為元頁;a packet engine for grouping data stored in the data write buffer memory into a meta page;

取消分組引擎,用於將儲存在元頁中的資料取消分組為儲存在資料讀緩衝記憶體中儲存的取消分組資料;The grouping engine is cancelled, and the data stored in the metapage is ungrouped into the ungrouped data stored in the data read buffer memory;

元資料被從分組引擎發送到卷管理器(Volume Manager),以傳輸到快閃記憶體,並藉由取消分組引擎接收儲存在快閃記憶體中的元頁;The metadata is sent from the packet engine to the Volume Manager for transmission to the flash memory, and the meta-page stored in the flash memory is received by canceling the packet engine;

電源監測器,用於檢測電源故障;Power monitor for detecting power failures;

刷新管理器,用於當電源損失時,將主機DRAM儲存的資料刷新到SSD DRAM中,然後刷新到快閃記憶體驅動系統的快閃記憶體中;The refresh manager is configured to refresh the data stored in the host DRAM into the SSD DRAM when the power is lost, and then refresh into the flash memory of the flash memory drive system;

恢復管理器,用於當電源恢復時,加載從快閃記憶體驅動系統的快閃記憶體獲取的刷新資料,然後刷新到主機DRAM。The recovery manager is configured to load the refresh data acquired from the flash memory of the flash memory drive system when the power is restored, and then refresh to the host DRAM.

本發明第三方面提供了一種刷新快閃記憶體的方法,包括:A third aspect of the present invention provides a method for refreshing a flash memory, including:

獲得當前日期;Get the current date;

在快閃記憶體的塊列表中的現行塊:The current block in the block list of the flash memory:

(a)讀塊狀態(block state)表,塊狀態表用於現行塊的抹除計數和對現行塊的寫日期,日期表示現行塊上次被寫入的日期;(a) reading a block state table for erasing the current block and writing the date to the current block, the date indicating the date the current block was last written;

計算第一時間延遲作為寫日期與當前日期的差;Calculating the first time delay as the difference between the write date and the current date;

將第一時間延遲作為保留時間;The first time delay is taken as the retention time;

當第一時間延遲超過保留時間時,將現行塊中的所有有效頁移動至在動態隨機存取記憶體DRAM的備用塊中的空白頁中;When the first time delay exceeds the retention time, all valid pages in the current block are moved to blank pages in the spare block of the DRAM (DRAM);

當DRAM中的備用塊是滿的時,將來自DRAM的備用塊中的資料移動至快閃記憶體中的備用塊;When the spare block in the DRAM is full, the data in the spare block from the DRAM is moved to the spare block in the flash memory;

抹除現行塊;Erase the current block;

在快閃記憶體的塊列表中選擇另一個塊作為現行塊,並從(a)重複,直至處理完塊列表中的所有塊,至此,快閃記憶體塊被刷新。Another block is selected as the current block in the block list of the flash memory, and is repeated from (a) until all the blocks in the block list are processed, and thus the flash memory block is refreshed.

本發明第四方面提供了一種快閃記憶體刷新的方法,包括:A fourth aspect of the present invention provides a method for flash memory refresh, including:

獲得當前的日期;Get the current date;

對於在快閃記憶體的塊列表中的現行塊中的當前頁:For the current page in the current block in the block list of the flash memory:

(a)讀塊狀態表,塊狀態表用於現行塊的抹除計數;(a) reading the block status table, the block status table is used for the erase count of the current block;

(b)讀頁狀態表,頁狀態表用於當前頁的寫日期,日期表示當前頁上次寫的日期;(b) Read the page status table, the page status table is used for the current page's write date, and the date indicates the date the current page was last written;

計算第一時間延遲作為寫日期與當前日期的差;Calculating the first time delay as the difference between the write date and the current date;

將第一時間延遲作為保留時間;The first time delay is taken as the retention time;

當第一時間延遲超過保留時間時,將現行塊中的當前頁移動至在動態隨機存取記憶體DRAM的備用塊中的空白頁中;When the first time delay exceeds the retention time, moving the current page in the current block to a blank page in the spare block of the DRAM (DRAM);

當DRAM中的備用塊是滿的時,將來自DRAM的備用塊中的資料移動至快閃記憶體中的備用塊;When the spare block in the DRAM is full, the data in the spare block from the DRAM is moved to the spare block in the flash memory;

在現行塊中選擇另一個頁,並從(b)重複,直至處理完現行塊中的所有頁;Select another page in the current block and repeat from (b) until all pages in the current block have been processed;

在快閃記憶體的塊列表中選擇另一個塊作為現行塊,並從(a)重複,直至處理完塊列表中的所有塊,至此,快閃記憶體頁被刷新。Select another block as the current block in the block list of the flash memory, and repeat from (a) until all the blocks in the block list are processed, and the flash memory page is refreshed.

本發明第五方面提供了一種超級增強耐力設備(SEED)硬碟固體狀態驅動機(SSD)耐用轉換層(Endurance Transaction Layer,ETL)方法,方法用來增強具有低指定抹除循環壽命的快閃記憶體的耐力,包括:A fifth aspect of the present invention provides a super hard endurance equipment (SEED) hard disk solid state drive (SSD) Endurance Transaction Layer (ETL) method for enhancing flash with a low specified erase cycle life Memory endurance, including:

在由控制器控制的動態隨機存取記憶體(DRAM)緩衝區中創建ETL和使用ETL層,以提供暫時的儲存空間,以減少對快閃記憶體的磨損;ETL is created in the Dynamic Random Access Memory (DRAM) buffer controlled by the controller and the ETL layer is used to provide temporary storage space to reduce wear on the flash memory;

在DRAM緩衝區中創建備用交換區域;Create an alternate swap area in the DRAM buffer;

使用DRAM緩衝區中的備用交換區域操作控制器,以合併具有新資料的快閃記憶體中的有效資料,以產生組合資料;Using a spare swap area in the DRAM buffer to operate the controller to merge valid data in flash memory with new data to produce combined data;

當覆蓋寫快閃記憶體中現有塊中的全部頁或者局部頁時,將新資料寫到與快閃記憶體中現有塊相關的DRAM緩衝區的備用塊中,對快閃記憶體中的不同塊,當額外的新資料需要備用塊時,將具有新資料和來自快閃記憶體的現有塊的資料的備用塊的組合寫入快閃記憶體中的備用塊中,將快閃記憶體中現有塊中的所有頁,標記頁狀態作為垃圾頁;When overwriting all pages or partial pages in an existing block in the flash memory, writing new data to the spare block of the DRAM buffer associated with the existing block in the flash memory, the difference in the flash memory Block, when additional new data requires a spare block, a combination of spare blocks with new data and data from existing blocks of flash memory is written into the spare block in the flash memory, which will be in the flash memory All pages in an existing block, marking the page status as a junk page;

當電源損失時,使用備用電源為DRAM緩衝區和快閃記憶體和控制器提供電能,備用電源具有足夠的容量,以使控制器將ETL層所需的資料備份到快閃記憶體,由此,由控制器使用DRAM緩衝區,而不是快閃記憶體,執行備用交換功能。When the power supply is lost, the backup power supply is used to supply power to the DRAM buffer and the flash memory and the controller. The backup power supply has sufficient capacity to enable the controller to back up the data required by the ETL layer to the flash memory. The controller uses the DRAM buffer instead of the flash memory to perform the alternate swap function.

本發明第六方面提供了一種超級增強耐力設備(SEED),包括:A sixth aspect of the invention provides a super enhanced endurance device (SEED) comprising:

主機界面,用於接收來自於主機的主機讀和主機寫;a host interface for receiving host read and host writes from the host;

SEED動態隨機存取記憶體(DRAM)緩衝區,用於儲存資料;SEED dynamic random access memory (DRAM) buffer for storing data;

控制器,用於控制對快閃記憶體和DRAM緩衝區的存取,以響應主機界面接收的主機讀和主機寫,控制器將主機資料寫入到DRAM緩衝區中;a controller for controlling access to the flash memory and the DRAM buffer to respond to host read and host write received by the host interface, and the controller writes the host data into the DRAM buffer;

SEED硬碟固體狀態驅動機(SSD)耐用轉換層(ETL),在DRAM緩衝區中執行,且由使用ETL的控制器控制,以提供暫時儲存以減少對快閃記憶體的磨損;SEED Hard Disk Solid State Drive (SSD) Durable Translation Layer (ETL), implemented in DRAM buffers and controlled by controllers using ETL to provide temporary storage to reduce wear on flash memory;

資料寫緩衝記憶體,資料寫緩衝記憶體儲存在DRAM緩衝區中,且藉由控制器進行管理;Data write buffer memory, data write buffer memory is stored in the DRAM buffer and managed by the controller;

快閃記憶體界面,用於抹除塊和對快閃記憶體頁進行寫,其中,塊是頁大小的倍數;Flash memory interface for erasing blocks and writing to flash memory pages, where the block is a multiple of the page size;

快閃記憶體,用於儲存來自於SSD DRAM緩衝區的分組的元資料;Flash memory for storing metadata from packets of the SSD DRAM buffer;

當電源損失時,使用備用電源為DRAM緩衝區、快閃記憶體和控制器提供電源,備用電源具有足夠的容量,使控制器將在ETL中所需要的資料備份到快閃記憶體中。When power is lost, the backup power supply is used to power the DRAM buffer, flash memory, and controller. The backup power supply has sufficient capacity to allow the controller to back up the data needed in the ETL to the flash memory.

本發明第七方面提供了一種用於在主機上執行的虛擬記憶體設備驅動器(VMD),包括:A seventh aspect of the present invention provides a virtual memory device driver (VMD) for execution on a host, comprising:

主機耐用轉換層(ETL),用於在主機上執行,增加快閃記憶體耐力,快閃記憶體具有低抹除週期壽命;Host Durable Translation Layer (ETL) for execution on the host, increasing flash memory endurance, and flash memory with low erase cycle life;

主機動態隨機存取記憶體(DRAM)緩衝區,位於主機上,藉由主機控制器控制,使用主機ETL層在主機上提供暫時儲存以減少對快閃記憶體的磨損;a host dynamic random access memory (DRAM) buffer, located on the host, controlled by the host controller, using the host ETL layer to provide temporary storage on the host to reduce wear on the flash memory;

在硬碟固體狀態驅動機(SSD)上的超級增強耐力設備(SEED),SEED用於增加具有低抹除循環壽命的快閃記憶體的耐力;Super Enhanced Endurance Equipment (SEED) on a hard disk solid state drive (SSD), SEED is used to increase the endurance of flash memory with low erase cycle life;

在SEED DRAM緩衝區中的SEED耐用轉換層(ETL),藉由SEED控制器控制,SEED ETL提供暫時儲存以減少快閃記憶體磨損。The SEED Durable Translation Layer (ETL) in the SEED DRAM buffer, controlled by the SEED controller, provides temporary storage to reduce flash memory wear.

本發明第八方面提供了一種在主機上執行的虛擬記憶體設備(VMD)驅動器,包括:An eighth aspect of the present invention provides a virtual memory device (VMD) driver for execution on a host, comprising:

加密引擎,用於耦合接收截獲的高級別主機寫,並產生加密資料;An encryption engine for coupling to receive intercepted high-level host writes and generating encrypted data;

壓縮引擎,用於耦合接收截獲的高級別次主機寫資料,並產生壓縮資料;a compression engine for coupling to receive the intercepted high-level secondary host to write data and generate compressed data;

資料寫緩衝記憶體,用於儲存主機寫資料;Data write buffer memory for storing data written by the host;

資料讀緩衝記憶體,用於儲存主機讀資料;Data read buffer memory for storing host read data;

分組引擎,用於將儲存在資料寫緩衝記憶體中的資料分成元頁;a grouping engine for dividing the data stored in the data write buffer memory into metapage pages;

取消分組引擎,用於將儲存在元頁中的資料取消分組為可以儲存在資料讀緩衝記憶體中的儲存的資料;Ungrouping the data for ungrouping the data stored in the metapage into stored data that can be stored in the data read buffer memory;

將元頁從分組引擎發送到卷管理器以轉移到快閃記憶體,同時,藉由取消分組引擎接收儲存在快閃記憶體中的元頁;Sending the meta page from the packet engine to the volume manager for transfer to the flash memory, and simultaneously receiving the meta page stored in the flash memory by canceling the packet engine;

電源監測器,用於檢測電源故障;Power monitor for detecting power failures;

主機動態隨機存取記憶體(DRAM)緩衝區,用於儲存主機耐用轉換層(ETL);a host dynamic random access memory (DRAM) buffer for storing a host durable conversion layer (ETL);

刷新管理器,用於當電源損失時,將儲存在主機DRAM緩衝區中的主機ETL層中的資料刷新到硬碟固體狀態驅動機(SSD) ETL DRAM中,然後儲存到硬碟固體狀態驅動機(SSD)系統的快閃記憶體中;The refresh manager is used to flush the data in the host ETL layer stored in the host DRAM buffer to the hard disk solid state drive (SSD) ETL DRAM when the power is lost, and then store it in the hard disk solid state drive machine. (SSD) system in flash memory;

恢復管理器,用於當電源恢復時,加載(Load)從SSD系統的快閃記憶體獲取的刷新資料,然後刷新到主機DRAM緩衝區的主機ETL層中。The recovery manager is configured to load the refresh data acquired from the flash memory of the SSD system when the power is restored, and then refresh to the host ETL layer of the host DRAM buffer.

本發明第九方面提供了一種耐力快閃記憶體檔案系統,包括:A ninth aspect of the present invention provides an endurance flash memory file system, comprising:

高級別檔案過濾驅動器,用於在主機上執行,並攔截向快閃記憶體驅動器的高級別主機寫;A high-level file filter driver that is executed on the host and intercepts high-level host writes to the flash memory drive;

加密解密引擎,用於耦合接收由高級別檔案過濾驅動器截獲的高級別主機寫資料,並產生加密資料和解密資料;An encryption and decryption engine for coupling to receive high-level host write data intercepted by a high-level file filter driver, and generating encrypted data and decrypted data;

壓縮解壓引擎,用於耦合接收由高級別檔案過濾驅動器截獲的高級別次主機寫資料,並產生壓縮資料和解壓縮資料;a compression and decompression engine for coupling to receive high-level secondary host write data intercepted by a high-level file filter driver, and generating compressed data and decompressing data;

其中,壓縮的資料和加密的資料被發送到一個在主機上執行的檔案系統驅動器(FSD)上;The compressed data and the encrypted data are sent to a file system driver (FSD) executed on the host;

低級別檔案過濾驅動器,用於在主機上執行,並攔截向快閃記憶體驅動器的低級別檔案系統主機寫;a low-level file filter driver for execution on the host and intercepting writes to low-level file system hosts of the flash memory drive;

資料寫緩衝記憶體,用於儲存主機寫資料;Data write buffer memory for storing data written by the host;

資料讀緩衝記憶體,用於儲存主機讀資料;Data read buffer memory for storing host read data;

分組引擎,用於將儲存在資料寫緩衝記憶體中的資料分成元頁;a grouping engine for dividing the data stored in the data write buffer memory into metapage pages;

取消分組引擎,用於將儲存在元頁中的資料取消分組為可以儲存在資料讀緩衝記憶體中的儲存的資料;Ungrouping the data for ungrouping the data stored in the metapage into stored data that can be stored in the data read buffer memory;

將元頁從分組引擎發送到卷管理器以轉移到快閃記憶體,同時,藉由取消分組引擎接收儲存在快閃記憶體中的元頁;Sending the meta page from the packet engine to the volume manager for transfer to the flash memory, and simultaneously receiving the meta page stored in the flash memory by canceling the packet engine;

檔案優先級標籤分類器,用於為主機寫產生資料類型;a file priority label classifier for generating a data type for a host;

任務策略分配器,用於為任務分配優先級,包括根據資料類型向主機寫入資料,優先級是來自於檔案優先級標籤分類器的資料類型的函數;a task policy allocator for assigning priorities to tasks, including writing data to the host according to the data type, the priority being a function of the data type from the file priority label classifier;

性能調節器,用於調整任務的優先級;a performance adjuster that adjusts the priority of the task;

目標分類器,用於根據檔案優先級標籤分類器產生的資料類型,對主機寫資料進行分類;a target classifier for classifying the data written by the host according to the data type generated by the file priority label classifier;

業務系統,用於記錄向快閃記憶體資料寫開始和完成的事件;a business system for recording events that start and complete writing to flash memory data;

刷新管理器,用於當電源損失時,將儲存在主機DRAM中的資料刷新到SSD DRAM,然後到快閃記憶體驅動系統中的快閃記憶體;a refresh manager for refreshing data stored in the host DRAM to the SSD DRAM and then to the flash memory in the flash memory drive system when power is lost;

恢復管理器,用於從快閃記憶體驅動系統中的快閃記憶體獲取刷新的資料,然後當電源恢復時,刷新到主機DRAM中;a recovery manager for acquiring the refreshed data from the flash memory in the flash memory drive system, and then refreshing to the host DRAM when the power is restored;

磁碟微型端口驅動器,用於管理快閃記憶體驅動系統的特定協議功能。A disk miniport driver that manages the specific protocol functions of the flash memory drive system.

本發明第十方面提供了一種超級增強耐力設備(SEED),包括:A tenth aspect of the present invention provides a super enhanced endurance device (SEED) comprising:

主機界面,用於接收來自主機的主機讀和主機寫;a host interface for receiving host read and host writes from the host;

動態隨機存取記憶體(DRAM)緩衝區,用於儲存資料;Dynamic Random Access Memory (DRAM) buffer for storing data;

控制器,用於控制對快閃記憶體和DRAM緩衝區的存取,以響應主機界面接收的主機讀和主機寫,控制器將主機資料寫入到DRAM緩衝區中;a controller for controlling access to the flash memory and the DRAM buffer to respond to host read and host write received by the host interface, and the controller writes the host data into the DRAM buffer;

儲存在DRAM緩衝區中的資料寫緩衝記憶體,用於管理控制器,控制器管理非暫時資料;a data write buffer memory stored in a DRAM buffer for managing a controller that manages non-transitory data;

快閃記憶體的增強快閃記憶體部分,用於配置為強健頁使用,其中,快閃記憶體的保留部分被配置為弱頁;An enhanced flash memory portion of the flash memory for configuring for use as a robust page, wherein the reserved portion of the flash memory is configured as a weak page;

編程抹除管理器,用於控制快閃記憶體的頁寫或塊抹除時間,以增強耐力和減少保留時間;Programmable erase manager for controlling page write or block erase time of flash memory to enhance endurance and reduce retention time;

刷新管理器,用於控制保留在增強快閃記憶體部分的刷新時間。

A refresh manager that controls the refresh time that remains in the enhanced flash memory portion.

100...VMD驅動器100. . . VMD drive

104...觸發選擇器104. . . Trigger selector

106...壓縮加密引擎106. . . Compressed encryption engine

108...資料拆分管理器108. . . Data split manager

110...輸出緩衝區110. . . Output buffer

113...元資料用戶檔案分組處理器113. . . Metadata user profile packet processor

114...FDB元頁分組處理器114. . . FDB metapage grouping processor

116...頁檔案分組處理器116. . . Page file grouping processor

118...選擇器118. . . Selector

12...DRAM界面12. . . DRAM interface

120...元資料緩衝記憶體120. . . Metadata buffer memory

121...虛擬磁碟資料121. . . Virtual disk data

122...分頁檔案由選擇器122. . . Paging file by selector

123...虛擬磁碟上電刷新器123. . . Virtual disk power-on refresher

124...暫時檔案區124. . . Temporary file area

125...虛擬磁碟電源關閉刷新器125. . . Virtual disk power off refresher

126...磁碟刷新恢復管理器126. . . Disk refresh recovery manager

128、133’...頁128, 133’. . . page

132...資料讀緩衝記憶體132. . . Data read buffer memory

133...主機讀頁133. . . Host read page

134...分組器134. . . Grouper

136...分組取消器136. . . Packet canceller

138...磁碟微型端口驅動器138. . . Disk miniport driver

1394...韌體1394. . . firmware

14...快閃記憶體界面14. . . Flash memory interface

140...元資料緩衝記憶體140. . . Metadata buffer memory

142...暫時檔案緩衝記憶體142. . . Temporary file buffer memory

144...分頁檔案的緩衝記憶體144. . . Buffer memory for paging files

145...刷新資料145. . . Refresh data

146...日誌檔案頁分組146. . . Log file page grouping

148...分頁檔案和映射表148. . . Paging archives and mapping tables

150...系統使用區域150. . . System usage area

151...讀緩衝記憶體和映射表151. . . Read buffer memory and mapping table

152...緩衝器資料152. . . Buffer data

154...資料寫緩衝記憶體154. . . Data write buffer memory

156...備件和交換塊156. . . Spare parts and exchange blocks

16...主機界面16. . . Host interface

162...表162. . . table

164...抹除計數表164. . . Erase count table

170...S.M.A.R.T.資料採集器170. . . S.M.A.R.T. data collector

172...分區管理器172. . . Partition manager

174...磁碟分類驅動器174. . . Disk sort drive

176...備用電源176. . . backup power

178...操作系統核心178. . . Operating system core

18...安全抹除管理器18. . . Secure erase manager

180...VMD應用程式180. . . VMD application

181...SSD內部清理181. . . SSD internal cleanup

182...用戶應用程式182. . . User application

184...操作系統設置184. . . Operating system settings

186...配置設置186. . . Configuration settings

188...虛擬磁碟188. . . Virtual disk

190...高級別檔案過濾驅動器190. . . High-level file filter driver

192...SEED控制器192. . . SEED controller

194...SSD DRAM緩衝區194. . . SSD DRAM buffer

195...電源備份195. . . Power backup

196...NAND快閃記憶體196. . . NAND flash memory

20...資料寫緩衝記憶體20. . . Data write buffer memory

200...超級強耐力裝置200. . . Super strong endurance device

200'...SEED200'. . . SEED

202...刷新管理器202. . . Refresh manager

204...資料拆分管理器204. . . Data split manager

206...壞頁管理器206. . . Bad page manager

208...過度配置208. . . Over-provisioning

210...LBA表210. . . LBA table

211...業務管理器211. . . Business manager

212...壓縮LBA表212. . . Compressed LBA table

214...壓縮資料214. . . Compressed data

215...安全管理器215. . . Security manager

216...恢復管理器216. . . Recovery manager

217...NVRAM217. . . NVRAM

218...調度管理器218. . . Schedule manager

22、24、26、28、232、234...緩衝記憶體22, 24, 26, 28, 232, 234. . . Buffer memory

236...虛擬磁碟_02236. . . Virtual disk _02

238...虛擬磁碟_03238. . . Virtual disk _03

240...加密解密引擎240. . . Encryption and decryption engine

242...壓縮解壓縮引擎242. . . Compression decompression engine

244...安全管理器244. . . Security manager

246...智慧型資料監控器246. . . Smart data monitor

248...電源監測器248. . . Power monitor

250...虛擬磁碟驅動器250. . . Virtual disk drive

254...目標分配器254. . . Target distributor

256...性能調節器256. . . Performance regulator

260...任務優先級分配器260. . . Task priority allocator

262...業務系統262. . . business system

264...檔案優先級分類264. . . File priority classification

266...檔案系統驅動器266. . . File system driver

268...低級別檔案過濾驅動器268. . . Low-level file filter driver

270...卷管理270. . . Volume management

272...環境參數272. . . Environmental parameters

274...IO驅動器274. . . IO drive

276...用戶應用276. . . User application

277...刷新管理器277. . . Refresh manager

278...VMD驅動器278. . . VMD drive

280...VMD應用280. . . VMD application

282...操作系統功能282. . . Operating system function

284...虛擬磁碟_00284. . . Virtual disk_00

286...緩衝記憶體286. . . Buffer memory

288...虛擬磁碟_01288. . . Virtual disk_01

289...內部儲存空間289. . . Internal storage space

290、291、292、293...讀緩衝記憶體290, 291, 292, 293. . . Read buffer memory

300...主機300. . . Host

30...NFA/FA拆分管理器30. . . NFA/FA split manager

301...緩衝記憶體控制器301. . . Buffer memory controller

302...分區_01302. . . Partition _01

303...SEED SSD303. . . SEED SSD

304...分區_02304. . . Partition _02

305...電源管理305. . . Power management

306...系統啟動映像306. . . System boot image

307...電源備份307. . . Power backup

308...備份啟動映像308. . . Backup boot image

309...內部儲存控制器309. . . Internal storage controller

310...VMD應用程式310. . . VMD application

311...開關311. . . switch

312、314...資料銀行312, 314. . . Data bank

316...分組映射表316. . . Group mapping table

318...分組元頁318. . . Group meta page

32...NFA/FA拆分管理器32. . . NFA/FA split manager

320...局部分組元頁320. . . Local grouping metapage

322、324...部分322, 324. . . section

326...高位部分326. . . High part

328...低位部分328. . . Low part

336...低級別DRAM界面336. . . Low-level DRAM interface

338...ECC管理器338. . . ECC Manager

34...NRA/RA拆分管理器34. . . NRA/RA split manager

340...低級別SSD DRAM340. . . Low-level SSD DRAM

342...快閃記憶體342. . . Flash memory

346...安全管理器346. . . Security manager

348...暫時管理器348. . . Temporary manager

350...SSD350. . . SSD

352...壓縮映射管理器352. . . Compressed map manager

358...耐力控制器DRAM358. . . Endurance controller DRAM

36...元頁取消組合引擎36. . . Metapage ungrouping engine

360...耐力控制器360. . . Endurance controller

372...資料恢復分析器372. . . Data recovery analyzer

374...疊代故障資料緩衝區374. . . Overlay fault data buffer

376...編碼LDPC_2校驗376. . . Coded LDPC_2 check

378...LDPC_2發生器378. . . LDPC_2 generator

38...分頁區38. . . Paging area

382...RAID緩衝區382. . . RAID buffer

384...電壓調整控制器384. . . Voltage adjustment controller

386...觸發疊代控制器386. . . Triggering iterative controller

388...RAID奇偶校驗發生器388. . . RAID parity generator

39...S.M.A.R.T.函數39. . . S.M.A.R.T. function

390...RAI奇偶校驗390. . . RAI parity

392...讀緩衝區392. . . Read buffer

394...奇偶解碼器394. . . Parity decoder

396...讀緩衝記憶體396. . . Read buffer memory

398...編碼器398. . . Encoder

40...磨損均衡器40. . . Wear equalizer

400...快閃記憶體陣列400. . . Flash memory array

402...快閃記憶體存取控制器402. . . Flash memory access controller

404、406...內部總線404, 406. . . Internal bus

41...編碼抹除管理器41. . . Code erase manager

42...TRIM管理器42. . . TRIM Manager

43...刷新恢復管理器43. . . Refresh recovery manager

44...ECC管理器44. . . ECC Manager

46...加密引擎46. . . Cryptographic engine

471...壞塊抹除計數表471. . . Bad block erase count table

473...頁狀態表473. . . Page status table

48...表管理器48. . . Table manager

50...RAID控制器50. . . RAID controller

52...命令隊列管理器52. . . Command queue manager

T1...第一門檻值T1. . . First threshold

T2...第二門檻值T2. . . Second threshold

T3...門檻值T3. . . Threshold value

TP...門檻值TP. . . Threshold value

TE...門檻值TE. . . Threshold value

1002~1008、1102~1112、1122~1132、1142~1152、1162~1172、1012~1018、1120~1128、1130、1160、1062、1032~1038、1140、1042~1048、1150、1052~1058、1202~1218、1226、1220、1228、1236、1238、510、524、530~538、540、548、556、558~570、572、576、582、584、586、592、594...步驟1002~1008, 1102~1112, 1122~1132, 1142~1152, 1162~1172, 1012~1018, 1120~1128, 1130, 1160, 1062, 1032~1038, 1140, 1042~1048, 1150, 1052~1058, 1202~1218, 1226, 1220, 1228, 1236, 1238, 510, 524, 530~538, 540, 548, 556, 558~570, 572, 576, 582, 584, 586, 592, 594. . . step

第1圖是一個主機上的VMD應用程式和驅動器之方框圖,應用程式和驅動器創建和管理多個緩衝記憶體和虛擬磁碟,應用程式和驅動器在主機和具有低耐力快閃記憶體的超耐力快閃記憶體驅動上;Figure 1 is a block diagram of a VMD application and drive on a host, applications and drives to create and manage multiple buffer memories and virtual disks, applications and drives on the host and ultra-endurance with low-endurance flash memory Flash memory drive;

第2圖是更詳細的突出主機上的VMD之流程圖;
第3圖是一個SEED之方框圖;
第4圖是表示藉由VMD驅動器對寫資料進行拆分和分組之流程圖;
第5A至5B圖表示資料分類和藉由VMD驅動器取消讀分組之流程圖;
第6圖表示主機DRAM中耐用轉換層(Endurance Transaction Layer,ETL)之內部儲存映射圖;
第7圖表示SEED SSD DRAM中耐用轉換層(Endurance Transaction Layer, ETL)之儲存映射示意圖;
第8圖是一個快閃記憶體之儲存器映射圖;
第9圖表示根據資料類型將頁的全部或者部分映射或者分組成元資料;
第10圖表示壓縮頁之映射圖;
第11A至11B圖中表示了備用和交換操作;
第12圖表示多層次錯誤校驗;
第13A至13B圖表示出壞塊抹除計數表和頁狀態表;
第14圖是一個具有耐力控制器的超級增強耐力設備(Super Enhanced Endurance Device,SEED)之方框圖;
第15A至15E圖表示主機上VMD驅動器處理主機寫指令;
第16A至16E圖顯示了主機VMD驅動器處理主機讀指令;
第17A至17B圖表示元頁組成過程;
第18圖表示由VMD驅動器加密和壓縮處理過程;
第19A至19B圖表示出了在SEED中進行備份交換處理過程;
第20A至20D圖表示出了壞頁和壞塊的檢測和處理過程;
第21A至21B圖表示使用第13A圖中的表進行快閃記憶體塊刷新操作;
第22圖表示在主機上執行的內部清理操作;
第23圖表示在SEED上接收日誌檔案;
第24圖是記錄了向DRAM緩衝記憶體的主機寫之流程圖;
第25圖表示記錄從SEED中DRAM緩衝記憶體向快閃記憶體寫之流程圖;
第26圖表示主機上電源斷電順序之流程圖;
第27圖表示SEED電源斷電處理之流程圖;
第28圖是SEED電源故障處理之流程圖;
第29A至29B圖表示使用第13B圖中的表進行快閃記憶體頁刷新操作之流程圖;
第30A至30B圖表示第30A圖中頁寫過程中的壞頁管理過程;
第31A至31B圖表示後端垃圾收集過程;
第32圖表示主機VMD初始化之流程圖;
第33A至33B圖是SSD初始化之流程圖;
第34圖是一個清理日誌區之流程圖;
第35圖表示在SSD上執行的異常電源關閉檢查;
第36圖表示在主機上執行的異常電源關閉檢查。
Figure 2 is a more detailed flow chart highlighting the VMD on the host;
Figure 3 is a block diagram of a SEED;
Figure 4 is a flow chart showing the splitting and grouping of the written data by the VMD driver;
Figures 5A through 5B show a flow chart of the data classification and cancellation of the read packet by the VMD driver;
Figure 6 shows the internal storage map of the Endurance Transaction Layer (ETL) in the host DRAM;
Figure 7 is a schematic diagram showing the storage mapping of the Endurance Transaction Layer (ETL) in the SEED SSD DRAM;
Figure 8 is a memory map of a flash memory;
Figure 9 shows that all or part of the page is mapped or grouped into metadata according to the type of data;
Figure 10 shows a map of compressed pages;
The standby and exchange operations are shown in Figures 11A through 11B;
Figure 12 shows a multi-level error check;
13A to 13B are diagrams showing a bad block erase count table and a page status table;
Figure 14 is a block diagram of a Super Enhanced Endurance Device (SEED) with an endurance controller;
15A to 15E are diagrams showing that the VMD driver on the host processes the host write command;
Figures 16A through 16E show the host VMD driver processing host read instructions;
Figures 17A to 17B show the metapage composition process;
Figure 18 shows the encryption and compression process by the VMD driver;
19A to 19B are diagrams showing a backup exchange process in the SEED;
The 20A to 20D diagrams show the detection and processing of bad pages and bad blocks;
21A to 21B are diagrams showing a flash memory block refresh operation using the table in FIG. 13A;
Figure 22 shows the internal cleanup operation performed on the host;
Figure 23 shows the receipt of a log file on the SEED;
Figure 24 is a flow chart recording the host write to the DRAM buffer memory;
Figure 25 is a flow chart showing the recording from the DRAM buffer memory in the SEED to the flash memory;
Figure 26 is a flow chart showing the sequence of power failures on the host;
Figure 27 is a flow chart showing the SEED power supply power-off processing;
Figure 28 is a flow chart of SEED power failure handling;
29A to 29B are flowcharts showing a flash memory page refresh operation using the table in FIG. 13B;
Figures 30A to 30B show the bad page management process in the page writing process in Fig. 30A;
Figures 31A to 31B show the backend garbage collection process;
Figure 32 is a flow chart showing the initialization of the host VMD;
33A to 33B are flowcharts of SSD initialization;
Figure 34 is a flow chart of cleaning the log area;
Figure 35 shows the abnormal power shutdown check performed on the SSD;
Figure 36 shows the abnormal power shutdown check performed on the host.

本發明關於對高耐力快閃記憶體驅動器的改進。提出下面的描述以使本領域中具有通常知識者根據上下文提供的應用和要求,能夠製造和使用本發明。對較佳實施例的各種修改對本領域中具有通常知識者是顯而易見的,本文中定義的一般原則可以被應用於其它的實施例中。因此,本發明並不限制所表示和描述的實施例,而是與此處公開的最寬範圍的基本原則和新穎性一致。The present invention is directed to improvements in high endurance flash memory drives. The following description is presented to enable a person of ordinary skill in the art to make and use the invention. Various modifications to the preferred embodiment will be apparent to those of ordinary skill in the art, and the general principles defined herein may be applied to other embodiments. Thus, the present invention is not intended to be limited to the embodiments shown and described.

藉由禁止快閃記憶體不必要的寫,可能減少對底層快閃記憶體設備磨損。在主機上執行的虛擬記憶體設備(Virtual-Memory Device,VMD)的應用程式和驅動器在達到快閃記憶體前,可以禁止寫或者結合寫,這樣就可以減少對快閃記憶體的寫頻率。VMD把向主機的寫轉移到對主機的DRAM或SSD DRAM中的緩衝記憶體和虛擬磁碟的寫。By inhibiting unnecessary writing of flash memory, it is possible to reduce wear on the underlying flash memory device. The application and driver of the Virtual-Memory Device (VMD) executed on the host can prohibit writing or combining before the flash memory is reached, thus reducing the writing frequency to the flash memory. The VMD transfers writes to the host to writes to the buffer memory and virtual disk in the host's DRAM or SSD DRAM.

主機或者快閃記憶體驅動SSD設備上的DRAM緩衝器可以儲存資料,這些資料並不需要永久的保存,因此沒必要寫到快閃記憶體中。DRAM不僅速度快,而且具有很強的耐用性,因為它可以寫100萬次以上。DRAM是由IBM公司的Robert Dennard博士在1966年發明的可靠的動態儲存技術。The DRAM buffer on the host or flash memory drive SSD device can store data. This data does not need to be saved permanently, so there is no need to write to the flash memory. DRAM is not only fast, but also very durable, because it can write more than 1 million times. DRAM was a reliable dynamic storage technology invented in 1966 by Dr. Robert Dennard of IBM.

一個典型的主機會創建許多暫時檔案,比如,在上網瀏覽網頁,或者運行某些不重要的冗餘的應用程式時。本發明實現使得這些檔案無需寫入快閃記憶體,從而減少快閃記憶體的磨損。A typical host creates a number of temporary files, such as when browsing the web or when running some unimportant redundant applications. The invention realizes that these files do not need to be written into the flash memory, thereby reducing the wear of the flash memory.

典型系統更頻繁對某類資料覆蓋寫,這些頻繁覆蓋寫的資料最好儲存在主機或者快閃記憶體驅動的DRAM緩衝區中,且藉由一種策略(如基於時間消耗,容量分配等)或者當電源斷電或者電源故障時,將這些頻繁覆蓋寫的資料拷貝到快閃記憶體中。僅在電源斷電時,將這些頻繁覆覆蓋寫的資料儲存到快閃記憶體中會顯著降低對快閃記憶體設備的磨損。大多數的元資料長度較小,可以被集中儲存,例如可以集中儲存在FAT表中。每次更新只涉及對非常小部分的快閃記憶體頁進行寫。在DRAM中儲存元資料能夠減少對快閃記憶體的不必要寫。Typical systems write more frequently on certain types of data. These frequently overwritten data are preferably stored in the DRAM buffer driven by the host or flash memory, and by a strategy (such as time consumption, capacity allocation, etc.) or When the power is cut off or the power fails, these frequently overwritten data are copied to the flash memory. Storing these frequently overwritten data in flash memory can significantly reduce the wear on flash memory devices only when the power is off. Most metadata are small in length and can be stored centrally, for example, they can be stored centrally in the FAT table. Each update involves only writing to a very small portion of the flash memory page. Storing metadata in DRAM can reduce unnecessary writes to flash memory.

如此頻繁覆蓋寫的資料包含日誌檔案,這些日誌檔案隨著新事件的發生頻繁的更新。通常在系統崩潰後,會檢測最新檔案副本。檔案配置表(File Allocation Table,FAT)是另一個頻繁覆蓋寫的位置,當創建或擴展檔案時,檔案配置表就會進行更新。FAT表是內部儲存中相對較小的部分,但如果每次對FAT表的更新都被複製到快閃記憶體中,這種頻繁的存取將顯著的增加快閃記憶體的磨損。檔案描述塊(File Descriptor Block,FDB)具有類似的頻繁的覆蓋寫的結構,當僅在Windows瀏覽器中存取和顯示檔案列表時,就會頻繁的覆蓋寫檔案存取日期。FDB、FAT擁有來自主機檔案系統的元資料。與DRAM緩衝器一起使用的各類表擁有元資料,這些元資料創建的目的是將檔案系統儲存到DRAM 和快閃記憶體中。The data that is so frequently overwritten includes log files that are frequently updated as new events occur. The latest archive copy is usually detected after a system crash. The File Allocation Table (FAT) is another location that frequently overwrites the file. When the file is created or expanded, the file configuration table is updated. The FAT table is a relatively small part of the internal storage, but if every update to the FAT table is copied to the flash memory, this frequent access will significantly increase the wear of the flash memory. The File Descriptor Block (FDB) has a similar structure of frequent overwrite writing. When the file list is accessed and displayed only in the Windows browser, the file access date is frequently overwritten. FDB and FAT have metadata from the host file system. The various types of tables used with DRAM buffers have metadata that was created to store the file system in DRAM and flash memory.

根據某種策略或者電源斷電或者電源故障時,快閃記憶體驅動創建的壞塊表,抹除計數器,垃圾收集,備件和交換塊映射表以及其他檔案需要儲存到快閃記憶體中。同樣,為了減少快閃記憶體損耗,根據某種策略或者電源斷電或者電源故障,快閃記憶體系統的元檔案也可以儲存到DRAM緩衝區並且拷貝到快閃記憶體中。上述表和元檔案在上電時可以儲存在快閃記憶體中。並且在設備初始化時被安裝到一個DRAM緩衝區中。接著,主機資料讀寫操作改變資料內容。當電源斷電或電源故障出現時,髒表和元檔案需要寫入或備份到快閃記憶體。當電源故障時,考慮到系統恢復,如果為了特定的應用程式,需要一個準確的恢復點,主機緩衝記憶體、FIFO緩衝、緩衝區資料、永久備用和交換塊以及快閃記憶體驅動中的其它緩衝區中的資料可以拷貝到快閃記憶體上。The bad block table created by the flash memory driver, the erase counter, the garbage collection, the spare and exchange block mapping table, and other files need to be stored in the flash memory according to a certain strategy or power failure or power failure. Similarly, to reduce flash memory loss, the metafile of the flash memory system can also be stored in the DRAM buffer and copied to the flash memory according to a certain strategy or power outage or power failure. The above table and metafile can be stored in the flash memory at power-on. It is installed into a DRAM buffer when the device is initialized. Then, the host data read and write operation changes the data content. When the power is off or a power failure occurs, the dirty table and metafile need to be written or backed up to the flash memory. In the event of a power failure, considering system recovery, if a specific recovery point is required for a particular application, host buffer memory, FIFO buffer, buffer data, permanent spare and swap blocks, and other flash drive drivers The data in the buffer can be copied to the flash memory.

當主機主DRAM內部儲存的圖像移動到了硬碟或者快閃記憶體驅動時,系統使用分頁檔案進行內部儲存管理。因為系統需要重啟,內部儲存管理和分頁系統重新初始化,以清除所有儲存的分頁檔案,所以當電源故障發生時,分頁交換檔案損失並不重要。這些分頁檔案可以儲存在DRAM緩衝區中,當電源斷電或者電源故障時,沒有必要拷貝到快閃記憶體上,從而有效減少快閃記憶體的磨損。When the image stored in the main DRAM of the host is moved to a hard disk or a flash memory drive, the system uses the paging file for internal storage management. Because the system needs to be restarted, the internal storage management and paging system is reinitialized to clear all stored paging files, so when a power failure occurs, the loss of page swap file is not important. These paging files can be stored in the DRAM buffer. When the power is off or the power is faulty, it is not necessary to copy to the flash memory, thus effectively reducing the wear of the flash memory.

快閃記憶體驅動的主機請求往往遵循資料類型的規則序列。例如,一台主機可先存取FAT表,然後存取FDB塊,進而對資料檔案進行讀寫。這種重複序列可能有助於超耐力快閃記憶體驅動對資料類型進行分類。根據操作系統的類型不同(Windows、Linux、Apple OS、Android等),FAT總是位於預先確定的內部儲存位置。因此,對該內部儲存位置的位址範圍內的存取是FAT類型的存取。FAT存取之後的存取必然是FDB存取。然後,下一次存取是用戶資料存取。因此,用戶資料可以被確定為之後的FAT存取和FDB存取。為了找到擴展檔案,可以藉由超耐力快閃記憶體驅動檢查FDB,從而,可以採用不同於用戶資料檔案的方式,檢測和處理.tmp檔案。Flash memory driven host requests often follow a regular sequence of data types. For example, a host can access the FAT table and then access the FDB block to read and write data files. This repeat sequence may help the super-endurance flash memory drive to classify data types. Depending on the type of operating system (Windows, Linux, Apple OS, Android, etc.), FAT is always located in a predetermined internal storage location. Therefore, accesses within the address range of the internal storage location are FAT type accesses. The access after FAT access must be an FDB access. Then, the next access is user data access. Therefore, the user profile can be determined as a subsequent FAT access and FDB access. In order to find the extended file, the FDB can be checked by the ultra-endurance flash memory, so that the .tmp file can be detected and processed in a different way from the user profile.

在典型的不區分資料類型的快閃記憶體驅動中,每種類型的檔案都會使快閃記憶體磨損。這種不可知的系統平等處理所有資料。所有資料都寫入到快閃記憶體中,至少當資料條目在DRAM緩衝區時,如果有的話,資料將藉由另一個來自具有相同的緩衝記憶體索引的主機的資料投到DRAM緩衝區。藉由識別資料類型和資料的目的主機,且在正常操作過程中,只向快閃記憶體寫實際的用戶資料,只向快閃記憶體寫重要的資料,以及當電源故障時,根據策略,可以顯著減少快閃記憶體寫。In a typical flash memory drive that does not distinguish between data types, each type of file will cause the flash memory to wear out. This unknowable system processes all information equally. All data is written to the flash memory, at least when the data entry is in the DRAM buffer, if any, the data will be sent to the DRAM buffer by another data from the host with the same buffer memory index. . By identifying the data type and the destination host of the data, and during normal operation, only the actual user data is written to the flash memory, only the important data is written to the flash memory, and when the power fails, according to the strategy, Can significantly reduce flash memory writes.

藉由包裝資料,可以實現進一步減少快閃記憶體磨損。例如,快閃記憶體中小於一個整頁的資料(局部頁資料)可以與其它的局部頁資料一起儲存在快閃記憶體的一個頁中,而不是儲存在許多單獨的頁中。多通道的系統可能有較大的單元,例如元頁,每一個通道有一個頁,或通道數量是頁大小的幾倍。藉由將資料包裝成元頁,而不是較小的頁,可進一步減少快閃記憶體磨損。Further reduction in flash memory wear can be achieved by packaging the material. For example, less than one full page of data (partial page data) in flash memory can be stored in one page of flash memory along with other partial page data, rather than being stored in many separate pages. Multi-channel systems may have larger units, such as meta pages, each page has one page, or the number of channels is several times the page size. Flash memory wear can be further reduced by packaging the data into meta pages instead of smaller pages.

在一個不利的環境中,DRAM的緩衝區可能有軟體錯誤。額外的對DRAM的過量配置可用於錯誤修正碼(Error Correction Code,ECC)奇偶校驗,以提高快閃記憶體可靠性。In an unfavorable environment, DRAM buffers may have software errors. Additional DRAM over-provisioning can be used for Error Correction Code (ECC) parity to improve flash memory reliability.

從每個技術角度,快閃記憶體的磨損節約可以提供各種改進,當這些技術一起使用時,可能會顯著增加快閃記憶體的耐力。VMD應用程式和驅動器可以為使用這些技術的快閃記憶體驅動提供更高的耐力。From every technical point of view, the wear savings of flash memory can provide various improvements that, when used together, can significantly increase the endurance of flash memory. VMD applications and drives can provide higher endurance for flash memory drives that use these technologies.

第1圖是一個主機上VMD應用程式和驅動之方框圖,應用程式和驅動創建和管理多個緩衝記憶體和虛擬磁碟,應用程式和驅動在主機和具有低耐力快閃記憶體的超耐力快閃記憶體驅動上。主機300有一個處理器,處理器執行程式的指令,例如,用戶應用程式182和操作系統(OS)核心178的指令,例如,Windows、Linux和蘋果OS或Android等。當主電源發生故障時,備用電源176為主機300提供電源,使當電源故障時,主機300從虛擬磁碟188向超級強耐力裝置(SEED)200發送重要資料,超強耐力裝置200位於NAND快閃記憶體196中。備用電源176可以使用電池,或不間斷電源(Uninterruptible Power Supply,UPS)等。這使得主機處理器有時間來關閉應用程式並且正確的關閉相關的裝置。SEED 200有自己的電源備份195,當主電源出現故障時,以允許SEED 200將重要的資料寫到NAND快閃記憶體196。電源備份195可以使用電容器,超級電容器或電池。可選地,如果有備用電源176有足夠的電能來正常關閉系統,SEED 200中的電源備份195就不需要了,例如,主機300是筆記本電腦或智慧型手機。Figure 1 is a block diagram of a VMD application and driver on a host. Applications and drivers create and manage multiple buffer memories and virtual disks, applications and drivers on the host and have ultra-endurance with low endurance flash memory. Flash memory drive. The host 300 has a processor that executes program instructions, such as user application 182 and operating system (OS) core 178 instructions, such as Windows, Linux, and Apple OS or Android. When the main power source fails, the backup power source 176 provides power to the host 300, so that when the power source fails, the host 300 transmits important data from the virtual disk 188 to the super strong endurance device (SEED) 200, and the super endurance device 200 is located at the NAND fast. Flash memory 196. The backup power source 176 can use a battery, or an uninterruptible power supply (UPS) or the like. This gives the host processor time to shut down the application and properly shut down the associated device. The SEED 200 has its own power backup 195 to allow the SEED 200 to write important data to the NAND flash memory 196 when the primary power supply fails. Power backup 195 can use capacitors, supercapacitors or batteries. Alternatively, the power backup 195 in the SEED 200 is not required if the backup power supply 176 has sufficient power to shut down the system normally. For example, the host 300 is a laptop or a smart phone.

VMD應用程式180是在主機300上執行的應用程式。VMD應用程式180和VMD驅動器100可用於減輕SEED 200的負擔。VMD應用程式180和VMD驅動器100可以拆分或儲存資料,例如,暫時檔案,分頁檔案等,但並不意味著永久地儲存到快閃記憶體。VMD驅動器100可以使虛擬磁碟188儲存這類暫時資料。虛擬磁碟188可以是主機的DRAM一部分。The VMD application 180 is an application executed on the host 300. VMD application 180 and VMD driver 100 can be used to relieve the burden on SEED 200. The VMD application 180 and the VMD driver 100 can split or store data, such as temporary files, paging files, etc., but do not imply permanent storage to flash memory. The VMD driver 100 can cause the virtual disk 188 to store such temporary data. Virtual disk 188 can be part of the DRAM of the host.

VMD驅動器100可以使用主機CPU執行任務,例如,壓縮解壓縮引擎242,加密解密引擎240。由操作系統核心178寫入的用戶應用程式182的資料,被高級別檔案過濾驅動器190截獲,並在發送到檔案系統驅動器266前,傳遞到VMD驅動器100進行壓縮或加密。然後低級別檔案過濾驅動器268再次攔截這些資料,以藉由VMD驅動器 100進行進一步的處理,例如,用於儲存在虛擬磁碟188中。The VMD driver 100 can perform tasks using a host CPU, such as a compression decompression engine 242, and an encryption decryption engine 240. The data of the user application 182 written by the operating system kernel 178 is intercepted by the high level archive filter driver 190 and passed to the VMD driver 100 for compression or encryption before being sent to the archive system driver 266. The low level file filter driver 268 then intercepts the data again for further processing by the VMD driver 100, for example, for storage in the virtual disk 188.

將最終準備寫到SEED 200中的資料從VMD驅動器100發送到卷管理270,恢復管理器卷管理270管理儲存卷,例如,SEED 200。在SEDD 200中的SEED控制器192可以在SSD DRAM緩衝區194中儲存資料,且當電源斷電或者當SSD DRAM緩衝區194儲存滿了的時候,將資料儲存到NAND快閃記憶體196中。The material that is ultimately ready to be written to the SEED 200 is sent from the VMD driver 100 to the volume management 270, which manages the storage volume, for example, the SEED 200. The SEED controller 192 in the SEDD 200 can store data in the SSD DRAM buffer 194 and store the data in the NAND flash memory 196 when the power is turned off or when the SSD DRAM buffer 194 is full.

位於VMD應用程式180中的SSD內部清理181執行各種高級別功能,如垃圾收集,去除舊的未使用的檔案。SSD內部清理181可以定期地進行,如每天,每週,或當VMD驅動器100管理虛擬磁碟188時。配置設置186和註冊表及操作系統設置184可以由OS核心178設置,或者由其它程式定義虛擬磁碟188的大小或者其它系統變量,並管理VMD應用程式180和VMD驅動器100的較佳功能。The SSD internal cleanup 181 located in the VMD application 180 performs various high level functions, such as garbage collection, to remove old unused files. The SSD internal cleanup 181 can be performed periodically, such as daily, weekly, or when the VMD driver 100 manages the virtual disk 188. Configuration settings 186 and registry and operating system settings 184 may be set by OS core 178, or other programs may define the size of virtual disk 188 or other system variables, and manage the preferred functions of VMD application 180 and VMD driver 100.

配置設置186和註冊表及OS設置184可能有各種不同提高快閃記憶體耐用性和性能的設置,例如,設置可以使能或禁用寫緩衝記憶體、驅動器索引、搜索索引、磁碟碎片整理、主機休眠、預取資料、超級取資料和窗口寫緩衝記憶體緩衝刷新。預取資料,索引,休眠,和碎片整理可能會引起快閃記憶體的額外寫,因此減少快閃記憶體的耐力。既然VMD驅動器有自己的寫緩衝記憶體和刷新功能,則寫緩衝記憶體和寫緩衝記憶體緩衝刷新可以被禁用。因此,藉由禁用這些特性,可以改善快閃記憶體的耐力。Configuration settings 186 and registry and OS settings 184 may have various settings that improve the durability and performance of flash memory, for example, settings can enable or disable write buffer memory, drive indexing, search indexing, disk defragmentation, Host sleep, prefetch data, super fetch data, and window write buffer memory buffer refresh. Prefetching data, indexing, hibernation, and defragmentation can cause extra writes to the flash memory, thus reducing the endurance of the flash memory. Since the VMD driver has its own write buffer memory and refresh function, the write buffer memory and the write buffer memory buffer refresh can be disabled. Therefore, by disabling these characteristics, the endurance of the flash memory can be improved.

第1圖中表示了一些對於電源異常斷電的情況有用的可選部分。當電源接通時,電源管理305和電源備份307(在某些系統環境中,如果不存在備用電源176)儲存能量,當電源故障時,電源管理305和電源備份307向主機300提供電源。當電源故障時,CPU暫存器(Register)和緩衝記憶體控制器301將寫CPU暫存器和緩衝記憶體到主機DRAM,然後到SEED 200。在另一個實施例中,SEED SSD 303是連接到主機300另一個SSD,例如,可以藉由PCIe端口、USB端口、NVMe端口等進行連接。在另一個實施例中,SEED SSD 303可以內置於DRAM模組中,並藉由內部儲存控制器309進行控制。可選地,當電源故障時,CPU暫存器和緩衝記憶體控制器301將寫CPU暫存器和緩衝記憶體到寫主機DRAM,然後到SEED 200或者SEED 303。預設開關311隔離主機300上的不必要的部分,以使這些部分無法接收備用電源,因此,延長傳輸重要檔案使用的備用電源的使用時間。在異常斷電和電源恢復期間,內部儲存控制器309將阻止主機DRAM和SEED SSD 303之間的資料傳輸。Figure 1 shows some of the optional parts that are useful for situations where the power supply is abnormally powered down. When the power is turned on, the power management 305 and the power backup 307 (in some system environments, if there is no backup power 176) store energy, and when the power fails, the power management 305 and the power backup 307 provide power to the host 300. When the power fails, the CPU register and buffer memory controller 301 will write the CPU scratchpad and buffer memory to the host DRAM and then to the SEED 200. In another embodiment, the SEED SSD 303 is connected to the host 300 and another SSD, for example, may be connected by a PCIe port, a USB port, an NVMe port, or the like. In another embodiment, the SEED SSD 303 can be built into the DRAM module and controlled by the internal storage controller 309. Alternatively, when a power failure occurs, the CPU scratchpad and buffer memory controller 301 will write the CPU scratchpad and buffer memory to the write host DRAM and then to the SEED 200 or SEED 303. The preset switch 311 isolates unnecessary portions of the host 300 so that these portions cannot receive backup power, thereby prolonging the use time of the backup power source for transmitting important files. The internal storage controller 309 will block the transfer of data between the host DRAM and the SEED SSD 303 during abnormal power down and power recovery.

第2圖是更詳細的突出主機上的VMD之流程圖,在主機數發送到檔案系統驅動器266之前,主機資料傳輸到VMD驅動器100,以藉由壓縮引擎242進行壓縮或藉由加密引擎240進行加密,主機資料藉由OS核心寫入,並藉由高級別檔案過濾驅動器190截獲。然後低級別檔案過濾器驅動器268再次攔截資料,以藉由VMD驅動器100進行進一步處理。2 is a more detailed flow chart highlighting the VMD on the host. Before the number of hosts is sent to the file system driver 266, the host data is transferred to the VMD driver 100 for compression by the compression engine 242 or by the encryption engine 240. Encrypted, host data is written by the OS core and intercepted by the high level file filter driver 190. The low level archive filter driver 268 then intercepts the data again for further processing by the VMD driver 100.

檔案優先級分類264根據資料類型對資料進行分類,資料類型由低級別檔案過濾驅動器268分配,或者由LBA指示,例如,資料類型可以是元資料(FAT,FDB)暫時檔案,分頁檔案,或用戶資料。暫時檔案包括:Windows的暫時檔案,網際網路(Internet)瀏覽器的暫時檔案等等,另外,對於特定的使用時,此功能可以選擇性地禁用,例如,伺服器。所有操作都具有任務優先級分配器260分配的優先權,以使高優先級的任務可以優先於低優先級任務執行。性能調節器256可以定期調整這些資料的優先權,以改善系統性能。根據資料類型,目標分配器254發送資料到虛擬磁碟188中的虛擬磁碟驅動器250進行儲存,或者資料寫緩衝記憶體20。The file priority classification 264 classifies the data according to the data type. The data type is assigned by the low-level file filter driver 268 or by the LBA. For example, the data type can be a metadata (FAT, FDB) temporary file, a paging file, or a user. data. Temporary files include: temporary files for Windows, temporary files for Internet browsers, etc. In addition, this feature can be selectively disabled for specific use, for example, a server. All operations have priority assigned by task priority allocator 260 so that high priority tasks can take precedence over low priority tasks. Performance adjuster 256 can periodically adjust the priority of these materials to improve system performance. Depending on the type of data, the target allocator 254 sends the data to the virtual disk drive 250 in the virtual disk 188 for storage, or the data write buffer memory 20.

在發送到恢復管理器卷管理270和SEED 200之前,寫入到SSD的資料可能藉由分組器134進行分組。分區管理器172和磁碟分類驅動器174可以將複數個資料發送到已選定分區或磁碟。磁碟微型端口驅動器138管理連接到SSD的具體協議功能。分組取消器136在資料傳送到資料讀緩衝記憶體132之前取消從SEED 200獲取的資料的分組。The data written to the SSD may be grouped by the packetizer 134 before being sent to the Recovery Manager Volume Management 270 and the SEED 200. Partition manager 172 and disk sort drive 174 can send a plurality of data to a selected partition or disk. The disk miniport driver 138 manages the specific protocol functions that are connected to the SSD. The packet canceller 136 cancels the packet of the material acquired from the SEED 200 before the data is transferred to the material read buffer memory 132.

業務系統262確保資料完全寫入SEED 200。恢復管理器216判斷哪個寫業務由於異常斷電而未完成,並且幫助應用程式做必要的重做或撤消以保證資料持久性。調度管理器218管理業務系統262以管理和記錄對SSD業務的寫,例如,啟動,中止和提交。The business system 262 ensures that the data is completely written to the SEED 200. The recovery manager 216 determines which write service was not completed due to an abnormal power outage and helps the application to do the necessary redo or undo to ensure data persistence. The schedule manager 218 manages the business system 262 to manage and record writes to the SSD service, such as launch, suspend, and commit.

當電源監測器248檢測到電源斷電或出現故障時,觸發虛擬磁碟刷新恢復管理器126,以將資料從資料寫緩衝記憶體20和虛擬磁碟188轉移到快閃記憶體中的SEED 200進行儲存。當刷新完成時,磁碟刷新恢復管理器126將會向SEED 200和備用電源176或者電源管理器305發佈協議命令。如果存在備用電源的話,將切斷向系統供電,而僅向SEED 200供電。在使用電源管理305的情況下,電源管理305將繼續向DRAM、SEED SSD 303、開關311和內部儲存控制器309電能。在電源關損失前,刷新恢復管理器126定期將資料寫緩衝記憶體20和虛擬磁碟188的內容刷新到SEED 200。在允許藉由VMD驅動器100存取SEED 200或資料緩衝記憶體之前,安全管理器244可執行密碼驗證過程。智慧型資料監控器246從SEED 200向VMD驅動器180發送S.M.A.R.T.監控訊息。耐力快閃記憶體檔案系統具有在主機上執行的,並攔截向快閃記憶體驅動器高級別主機寫的高級別檔案過濾驅動器。加密解密引擎接收由高級別的檔案過濾驅動截獲的高級別主機寫,並加密資料和解密資料。壓縮解壓縮引擎也接收來自於高級別檔案過濾驅動器的高級別主機寫,並產生壓縮資料以及解壓縮資料。壓縮資料和加密資料被發送到在主機上執行的檔案系統驅動器(File System Driver,FSD)。When the power monitor 248 detects a power outage or a failure, the virtual disk refresh recovery manager 126 is triggered to transfer data from the data write buffer memory 20 and the virtual disk 188 to the SEED 200 in the flash memory. Save it. When the refresh is complete, the disk refresh recovery manager 126 will issue protocol commands to the SEED 200 and the backup power source 176 or the power manager 305. If there is a backup power supply, the system will be powered off and only the SEED 200 will be powered. In the case of power management 305, power management 305 will continue to power the DRAM, SEED SSD 303, switch 311, and internal storage controller 309. The refresh recovery manager 126 periodically flushes the contents of the data write buffer memory 20 and the virtual disk 188 to the SEED 200 before the power-off loss. The security manager 244 can perform a password verification process before allowing the SEED 200 or data buffer memory to be accessed by the VMD driver 100. The smart data monitor 246 sends a S.M.A.R.T. monitoring message from the SEED 200 to the VMD driver 180. The Endurance Flash Memory File System has a high-level file filter driver that is executed on the host and intercepts writes to the high-level host of the flash memory drive. The encryption and decryption engine receives high-level host writes intercepted by a high-level file filter driver and encrypts the data and decrypts the data. The compression and decompression engine also receives high-level host writes from high-level file filter drives and generates compressed data and decompressed data. The compressed data and the encrypted data are sent to a File System Driver (FSD) that is executed on the host.

低級別檔案過濾驅動器也可以在主機上執行以及攔截向快閃記憶體驅動系統的低級別檔案系統主機寫。資料寫緩衝記憶體儲存主機寫資料,而資料讀緩衝記憶體儲存由主機讀取的資料。分組引擎將儲存在資料寫緩衝記憶體中的資料分成元資料。取消分組引擎將儲存在元頁中的資料取消分組為可以儲存在資料讀緩衝記憶體中的儲存的資料。將元頁從分組引擎發送到恢復管理器以將其轉移到快閃記憶體,同時,藉由取消分組引擎接收儲存在快閃記憶體中的元頁。The low-level file filter driver can also execute on the host and intercept writes to the low-level file system host of the flash memory drive system. The data write buffer memory stores the host write data, and the data read buffer memory stores the data read by the host. The packet engine divides the data stored in the data write buffer memory into metadata. The ungrouping engine ungroups the data stored in the metapage into stored data that can be stored in the data read buffer memory. The meta page is sent from the packet engine to the recovery manager to transfer it to the flash memory, while the meta page stored in the flash memory is received by the cancellation packet engine.

檔案優先級標籤分類器為主機寫和接收的資料產生資料類型。任務策略分配器為任務分配優先級,包括根據資料類型向主機寫入資料。優先級是來自於檔案優先級標籤分類器的資料類型的函數。性能調節器調整任務的優先級。目標分類器根據檔案優先級標籤分類器產生的資料類型,對主機寫資料進行分類。The file priority tag classifier generates data types for data written and received by the host. The task policy allocator assigns priorities to tasks, including writing data to the host based on the data type. The priority is a function from the data type of the file priority tag classifier. The performance adjuster adjusts the priority of the task. The target classifier classifies the host write data according to the data type generated by the file priority label classifier.

業務系統記錄事件,事件指示快閃記憶體資料寫的開始和完成。當電源損失時,刷新管理器將儲存在主機DRAM中的資料刷新到SSD DRAM,然後刷新至快閃記憶體驅動系統的快閃記憶體中。恢復管理器從快閃記憶體驅動器系統的快閃記憶體重新獲取刷新資料,然後當電源恢復時,發送到主機DRAM。磁碟微型端口驅動器管理快閃記憶體驅動系統的具體協議函數。智慧型資料監控器246,電源CPU檢測器248,安全管理器244,和虛擬磁碟驅動器250是可選的。The business system logs events, which indicate the start and completion of flash data writes. When power is lost, the refresh manager flushes the data stored in the host DRAM to the SSD DRAM and then flushes it to the flash memory of the flash memory drive system. The recovery manager reacquires the refresh data from the flash memory of the flash memory drive system and then sends it to the host DRAM when the power is restored. The disk miniport driver manages the specific protocol functions of the flash memory drive system. Smart data monitor 246, power CPU detector 248, security manager 244, and virtual disk drive 250 are optional.

第3圖是一個SEED之方框圖。SEED 200有主機界面16,SEED 200藉由總線與主機300(如第1圖)通信,例如,PCIe,SATA,或通用序列匯流排(Universal-Serial-Bus,USB),NVMe,雷電界面,eMMC,iSSD等。從主機界面16獲取的主機資料被發送到SEED控制器192,SEED 192執行各種功能,以減少NAND快閃記憶體196的磨損,例如,將來自於主機300上的VMD驅動器100的檔案刷新到SSD DRAM緩衝區194,而不是在NAND快閃記憶體196。Figure 3 is a block diagram of a SEED. The SEED 200 has a host interface 16, and the SEED 200 communicates with the host 300 (as shown in FIG. 1) via a bus, for example, PCIe, SATA, or Universal-Serial-Bus (USB), NVMe, lightning interface, eMMC. , iSSD, etc. Host data retrieved from host interface 16 is sent to SEED controller 192, which performs various functions to reduce wear on NAND flash memory 196, for example, flushing files from VMD driver 100 on host 300 to SSD The DRAM buffer 194 is instead of the NAND flash memory 196.

SSD DRAM緩衝區194可以儲存主機虛擬磁碟188的備件檔案,以及從VMD 100刷新獲取其它的資料和表格。可以儲存其它資料,包括元資料,備用和交換塊,壞頁管理表,以及其它的緩衝區和資料表。The SSD DRAM buffer 194 can store the spare file of the host virtual disk 188 and refresh other data and tables from the VMD 100. Other data can be stored, including metadata, spare and exchange blocks, bad page management tables, and other buffers and data sheets.

NAND快閃記憶體196可以儲存安全訊息,表格,SSD檔案系統,和各種其它的表和緩衝區,還包括用戶資料和刷新的虛擬磁碟188中的資料。NAND快閃記憶體196的一些區域可以保留作為壞塊或者過度配置。The NAND flash memory 196 can store security messages, forms, SSD file systems, and various other tables and buffers, as well as user profiles and data in the refreshed virtual disk 188. Some areas of NAND flash memory 196 may remain as bad blocks or over-provisioned.

DRAM界面12讀寫SSD DRAM緩衝區194,而多通道快閃記憶體界面14讀取頁,程式資料頁和抹除NAND快閃記憶體196中的塊,可以組織成多個通道。The DRAM interface 12 reads and writes the SSD DRAM buffer 194, and the multi-channel flash memory interface 14 reads the page, the program data page, and the blocks in the NAND flash memory 196 can be organized into multiple channels.

命令隊列(Native Command Queue,NCQ)管理器52可以重新排列從主機300獲取的主機命令,以及管理從主機界面16接收的主機命令序列。管理器加載主機命令為命令隊列,寫資料會被重新排序,以減少快閃記憶體寫。The Native Command Queue (NCQ) manager 52 can rearrange the host commands retrieved from the host 300 and manage the sequence of host commands received from the host interface 16. The manager loads the host command as a command queue, and the write data is reordered to reduce flash memory writes.

RAID控制器50藉由NAND快閃記憶體196的多個通道寫新資料,並可能會複製資料,以提供冗餘和資料恢復。ECC管理器44產生附加在寫資料中的錯誤校正碼(Error-Correction Code,ECC),並比較儲存的ECC以重新產生ECC,從而檢測和糾正在讀書的錯誤。ECC管理器44更管理需要額外的ECC保護快閃記憶體頁,為這些頁產生ECC,並當需要的時候,管理ECC資料的儲存和回收。代替執行EC,ECC管理器44可用於低密度同位元檢查(Low Density Parity Check,LDPC)碼。壞頁管理器206跟蹤所有NAND快閃記憶體196中的頁狀態的位置。這可以延長每個塊的壽命,既然只有一個頁可能是壞塊,因此其他的頁可以繼續使用。更複雜的壞塊管理可能會降低快閃記憶體驅動的整體磨損。The RAID controller 50 writes new data through multiple channels of the NAND flash memory 196 and may copy data to provide redundancy and data recovery. The ECC manager 44 generates an Error-Correction Code (ECC) attached to the written material and compares the stored ECC to regenerate the ECC, thereby detecting and correcting errors in reading. The ECC Manager 44 further manages the need for additional ECC to protect flash memory pages, generate ECC for these pages, and manage the storage and recycling of ECC data when needed. Instead of executing the EC, the ECC manager 44 can be used for Low Density Parity Check (LDPC) codes. Bad page manager 206 tracks the location of page states in all NAND flash memory 196. This can extend the life of each block, since only one page may be a bad block, so other pages can continue to be used. More complex bad block management may reduce the overall wear of the flash memory drive.

磨損均衡器40可提供兩種磨損均衡的方法。一種方法是從可用空塊中動態選擇最低磨損均衡計數塊寫資料。另一種方法是基於耗損均衡計數門檻值。一旦達到這個門檻值,快閃記憶體資料塊將從NAND快閃記憶體196中的一個物理塊(具有低損耗均衡計數)移動到另一個空物理塊(具有高損耗均衡計數)。表管理器48所管理的邏輯物理映射表將被更新。表管理器48也跟蹤儲存在每個邏輯塊或者頁中的資料類型,以使當資料拆分管理器204識別和分類資料時,跟蹤暫時檔案,分頁檔案,FAT,FDB,和用戶資料檔案。可選地,主機可以藉由協議命令傳遞資料類型訊息到SEED SSD,因此,資料拆分管理器204不用重複VMD驅動器100所做的工作。可選的,在某些特定的情況下,該功能可以是選擇禁用。Wear equalizer 40 provides two methods of wear leveling. One method is to dynamically select the lowest wear leveling block write data from the available empty blocks. Another method is to count the threshold based on the wear leveling. Once this threshold is reached, the flash memory block will move from one physical block (with low loss equalization count) in NAND flash memory 196 to another empty physical block (with high loss equalization count). The logical physical mapping table managed by table manager 48 will be updated. The table manager 48 also tracks the type of material stored in each logical block or page to track temporary files, paging files, FAT, FDB, and user profile when the data splitting manager 204 identifies and categorizes the data. Alternatively, the host can pass the data type message to the SEED SSD by a protocol command, so the data splitting manager 204 does not have to repeat the work done by the VMD driver 100. Optionally, in some specific cases, the function can be selected to be disabled.

如果功能不是由VMD驅動器100完成,加密引擎46執行寫入資料加密和讀取資料解密。TRIM管理器42處理來自於檔案系統或者主機300上的操作系統的TRIM命令。TRIM命令表明主機不再需要某部分,且可以擦拭或抹除。修整後的頁在頁狀態表中標記為垃圾頁,例如'100b'或'101b'。在做後端垃圾回收時,如果某塊被識別作為可抹除塊,此頁將不會被複製到一個新塊。此時,TRIM命令完成。TRIM管理器42執行系統開銷,例如,不再需要對一個塊中的分區或者頁進行跟蹤。垃圾收集器也可以用來跟蹤準備抹除的塊。一旦某完整的塊不再需要,TRIM管理器42將觸發垃圾收集器或其他抹除機制抹除塊,以使塊可以重新使用。If the function is not completed by the VMD driver 100, the encryption engine 46 performs write data encryption and read data decryption. The TRIM Manager 42 processes TRIM commands from the file system or the operating system on the host 300. The TRIM command indicates that the host no longer needs a part and can be wiped or erased. The trimmed page is marked as a junk page in the page status table, such as '100b' or '101b'. When doing back-end garbage collection, if a block is identified as a erasable block, the page will not be copied to a new block. At this point, the TRIM command is complete. The TRIM manager 42 performs system overhead, for example, it is no longer necessary to track partitions or pages in a block. The garbage collector can also be used to track blocks that are ready to be erased. Once a complete block is no longer needed, the TRIM manager 42 will trigger a garbage collector or other erase mechanism to erase the block so that the block can be reused.

S.M.A.R.T.函數39處理來自於主機的S.M.A.R.T.命令或者協議命令,例如,監測或者控制誤差校正,磨損,壞塊,和其它的快閃記憶體管理等。S.M.A.R.T.代表自我監測、分析及報告技術。主機可以使用S.M.A.R.T.的命令集監控一些來自於從SSD設備的重要資料,例如,關機時間,磨損均衡計數等。主機可以使用這些資料來診斷和識別SSD的使用壽命。基於使用情況,主機可以使用這些訊息來確定保修範圍。主機可以在SSD驅動器損壞之前,更換SSD驅動器。在RAID中,主機可以使用S.M.A.R.T.命令以避免更昂貴的RAID 5配置。The S.M.A.R.T. function 39 processes S.M.A.R.T. commands or protocol commands from the host, such as monitoring or controlling error correction, wear, bad blocks, and other flash memory management. S.M.A.R.T. represents self-monitoring, analysis and reporting techniques. The host can use S.M.A.R.T.'s command set to monitor some important information from the SSD device, such as shutdown time, wear leveling, and so on. The host can use this information to diagnose and identify the useful life of the SSD. Based on usage, the host can use these messages to determine the warranty coverage. The host can replace the SSD drive before the SSD drive is damaged. In RAID, hosts can use the S.M.A.R.T. command to avoid more expensive RAID 5 configurations.

業務管理器211可以確保資料完全寫入或轉移到NAND快閃記憶體中。過度配置208在NAND快閃記憶體196中設置和管理備用塊。直到安全管理器215安可以執行密碼驗證過程,才允許存取NAND快閃記憶體196的安全分區。分區可以是整個驅動器或驅動器的一部分。刷新管理器202可定期(如每天或每週)刷新NAND快閃記憶體196中的資料。安全抹除管理器18可以執行安全性更高的抹除操作,例如,當需要時,可以向一個塊寫入全1或者全0以刪除塊中的資料。The service manager 211 can ensure that the data is completely written or transferred to the NAND flash memory. Over-provisioning 208 sets and manages spare blocks in NAND flash memory 196. The secure partition of the NAND flash memory 196 is not allowed until the security manager 215 can perform the password verification process. A partition can be part of an entire drive or drive. The refresh manager 202 can refresh the data in the NAND flash memory 196 periodically (e.g., daily or weekly). The secure erase manager 18 can perform a more secure erase operation, for example, when needed, all 1s or all 0s can be written to a block to delete data in the block.

電源備份195提供備用電源,因此,當電源故障時,SEED 200可以從SSD DRAM緩衝區194向NAND快閃記憶體196寫資料。NVRAM 217為重要的元資料訊息提供更多的非易失性儲存,例如業務日誌,元資料和配置訊息。The power backup 195 provides backup power so that when a power failure occurs, the SEED 200 can write data from the SSD DRAM buffer 194 to the NAND flash memory 196. NVRAM 217 provides more non-volatile storage for important metadata messages, such as business logs, metadata, and configuration messages.

第4圖表示了藉由VMD驅動器對寫資料拆分和分組之流程圖。主機發送寫命令到資料拆分管理器108,且如果壓縮加密引擎106啟用,則在壓縮加密引擎106將寫資料壓縮或加密後,接收主機寫資料。用於加密或壓縮檔案的壓縮表項可以在元資料緩衝記憶體120中被修改。Figure 4 shows a flow chart for splitting and grouping write data by a VMD driver. The host sends a write command to the data split manager 108, and if the compressed encryption engine 106 is enabled, the host writes the data after the compressed encryption engine 106 compresses or encrypts the write data. The compressed entry for encrypting or compressing the archive can be modified in the metadata buffer memory 120.

VMD驅動器100(如第2圖)內部的資料拆分管理器108根據資料類型對主機寫資料分類,例如,藉由檢查檔案的副檔名或解析FAT和FDB。暫時檔案儲存在虛擬磁碟_01的暫時檔案區124,且具有一個表,表在元資料緩衝記憶體120中被完全修改。當電源關閉和故障時,暫時檔案不儲存到快閃記憶體。可選地,暫時檔案區可以溢出和分組到SSD。可選地,對於特定操作,該功能可以被禁用,例如,伺服器。The data splitting manager 108 inside the VMD driver 100 (as shown in FIG. 2) classifies the host data according to the data type, for example, by checking the file's file name or parsing the FAT and FDB. The temporary file is stored in the temporary file area 124 of the virtual disk_01 and has a table which is completely modified in the metadata buffer memory 120. When the power is turned off and the fault occurs, the temporary file is not stored in the flash memory. Alternatively, the temporary file area can be overflowed and grouped into the SSD. Alternatively, for a particular operation, the function can be disabled, for example, a server.

分頁檔案儲存在緩衝記憶體中的分頁區38,且藉由頁檔案分組處理器116,與其它的包含相同分頁檔案資料類型的分頁檔案一起分組成元頁。然後,藉由輸出緩衝區110,將分組後的頁被發送到SEED 200,並且可以儲存在DRAM中,然後儲存到快閃記憶體中。輸出緩衝區110產生ECC代碼。分組檔案的表項可以在元資料緩衝記憶體120中被修改。The paging file is stored in the paging area 38 in the buffer memory, and is grouped into the meta page by the page file grouping processor 116 together with other paging files containing the same paging file data type. The grouped pages are then sent to the SEED 200 by the output buffer 110 and can be stored in the DRAM and then stored in the flash memory. Output buffer 110 generates an ECC code. The entries of the group archive can be modified in the metadata buffer memory 120.

元資料檔案,例如,如FAT和FDB全部儲存在元資料緩衝記憶體120中。藉由FDB元頁分組處理器114,FDB可以被分成的元頁。分組的頁然後藉由輸出緩衝區110發送到SEED 200,可以是儲存在DRAM中。ECC碼可能由輸出緩衝區110產生並攜帶。分組後的元資料檔案表項可以在元資料緩衝記憶體120中被修改。The metadata files, for example, FAT and FDB are all stored in the metadata buffer memory 120. With the FDB metapage grouping processor 114, the FDB can be divided into metapages. The grouped pages are then sent to the SEED 200 by the output buffer 110, which may be stored in the DRAM. The ECC code may be generated and carried by the output buffer 110. The grouped metadata archive entries can be modified in the metadata buffer memory 120.

用戶檔案儲存在資料寫緩衝記憶體20中,且由元資料用戶檔案分組處理器113,將用戶檔案與其它的含有相同的用戶或非暫時性檔案資料類型的用戶檔案一起分成元頁。分組的頁藉由輸出緩衝區110發送到SEED 200,並且可以儲存在DRAM中,之後是快閃記憶體中。ECC碼可能由輸出緩衝區110產生並攜帶。分組後檔案的分組表表項可以在元資料緩衝記憶體120中被修改。The user profile is stored in the data write buffer memory 20, and the metafile user profile packet processor 113 divides the user profile into other metafiles along with other user profiles containing the same user or non-transitory profile type. The grouped pages are sent to the SEED 200 by the output buffer 110 and can be stored in the DRAM, followed by the flash memory. The ECC code may be generated and carried by the output buffer 110. The group table entry of the grouped file can be modified in the metadata buffer memory 120.

當刷新恢復管理器126檢測到電源故障時,虛擬磁碟188由虛擬磁碟電源關閉刷新器125刷新。虛擬磁碟188的資料由SEED 200發送到輸出緩衝區110儲存。另外,緩衝記憶體中的資料寫緩衝記憶體20,元資料緩衝記憶體120,分頁區38可以在虛擬磁碟中。虛擬磁碟_01的暫時檔案區124可以在緩衝記憶體中。When the refresh recovery manager 126 detects a power failure, the virtual disk 188 is refreshed by the virtual disk power off refresher 125. The data of the virtual disk 188 is sent by the SEED 200 to the output buffer 110 for storage. In addition, the data write buffer memory 20, the metadata buffer memory 120, and the page break area 38 in the buffer memory can be in the virtual disk. The temporary file area 124 of the virtual disk_01 can be in the buffer memory.

第5A至5B圖表示了資料分類和藉由VMD驅動器取消讀分組之流程圖。主機發送一個讀取命令到資料拆分管理器108,資料拆分管理器108更用於分發主機讀資料,在資料壓縮加密引擎106將主機讀資料解壓縮或解密後。內置於VMD驅動器100(如第2圖)的資料拆分管理器108根據資料類型分類主機寫資料,且觸發選擇器104根據資料類型選擇資料。Figures 5A through 5B show a flow chart of data classification and cancellation of read packets by the VMD driver. The host sends a read command to the data split manager 108. The data split manager 108 is further used to distribute the host read data, after the data compression and encryption engine 106 decompresses or decrypts the host read data. The data splitting manager 108 built into the VMD driver 100 (as shown in FIG. 2) classifies the host write data according to the material type, and the trigger selector 104 selects the material according to the data type.

在第5A圖中,用戶資料可能是最近寫入,且仍然是可以從資料寫緩衝記憶體20中獲得的。資料可被儲存在SEED 200,且必須首先由緩衝區110接收,元頁取消組合引擎36取消分組,然後被選擇器104選擇。取消分組元頁的資料儲存在四個讀緩衝記憶體中的一個之中。NRA/RA拆分管理器34將最近存取資料和非最近存取(Non-Recently-Accessed,NRA)資料分開。NFA/FA拆分管理器30、32將經常存取的資料與非經常存取的資料(Non-Frequently-Accessed,NFA)分開。根據資料是否被識別為最近存取或經常存取,選擇器104選擇四個讀緩衝記憶體22、24、26、28中的一個。In Figure 5A, the user profile may be recently written and still available from the data write buffer memory 20. The data can be stored in SEED 200 and must first be received by buffer 110, which is ungrouped by metapage ungrouping engine 36 and then selected by selector 104. The data for canceling the group meta page is stored in one of the four read buffer memories. The NRA/RA split manager 34 separates recent access data from Non-Recently-Accessed (NRA) data. The NFA/FA split manager 30, 32 separates frequently accessed data from Non-Frequently-Accessed (NFA). The selector 104 selects one of the four read buffer memories 22, 24, 26, 28 depending on whether the material is identified as recent access or frequent access.

在第5B圖中,暫時檔案不儲存在快閃記憶體中,只能藉由響應主機讀的資料拆分管理器108從虛擬磁碟_01的暫時檔案區124讀取。分頁檔案由選擇器122從緩衝記憶體中的分頁區38選擇或者從分頁檔案元頁取消分組處理器116取消分組後的快閃記憶體中選擇。元資料,例如,FAT和FDB項是由選擇器118從元資料緩衝記憶體120選擇,或者從輸出緩衝區110讀取且FAT/FDB元頁取消分組引擎114取消分組之後的快閃記憶體選擇。當電源恢復時,虛擬磁碟上電刷新器123被觸發,以從SSD或快閃記憶體20讀取刷新的虛擬磁碟資料121。In FIG. 5B, the temporary file is not stored in the flash memory and can only be read from the temporary file area 124 of the virtual disk_01 by the data splitting manager 108 in response to the host read. The paging file is selected by the selector 122 from the paging area 38 in the buffer memory or from the paging file element page cancellation packet processor 116 to unselect the selected flash memory. The metadata, for example, the FAT and FDB entries are selected by the selector 118 from the metadata buffer memory 120, or read from the output buffer 110 and the FAT/FDB metapage cancels the flash memory selection after the packet engine 114 cancels the packet. . When the power is restored, the virtual disk power-on refresher 123 is triggered to read the refreshed virtual disk material 121 from the SSD or flash memory 20.

第6圖表示了主機DRAM中耐用轉換層(Endurance Transaction Layer,ETL)之內部儲存映射圖。內部儲存空間289包含幾個虛擬磁碟,虛擬磁碟可以被獨立定義為用於直接儲存器存取或者用於基於檔案系統存取。虛擬磁碟_00 284儲存OS啟動映像和備用OS啟動映像。虛擬磁碟_01 288儲存暫時檔案。虛擬磁碟_02 236儲存瀏覽器檔案,在電源關閉時,瀏覽器檔案可以丟棄。虛擬磁碟_03 238儲存應用程式使用的暫時檔案,在電源損失時,暫時檔案可以被丟棄。可選地,在虛擬磁碟_02 236和虛擬磁碟_03 238中的資料可以被分組,並寫到SEED 200。Figure 6 shows the internal storage map of the Endurance Transaction Layer (ETL) in the host DRAM. The internal storage space 289 contains several virtual disks, which can be independently defined for direct storage access or for file system based access. The virtual disk_00 284 stores the OS boot image and the alternate OS boot image. Virtual Disk_01 288 stores temporary files. The virtual disk _02 236 stores the browser file, and the browser file can be discarded when the power is turned off. The virtual disk _03 238 stores the temporary file used by the application, and the temporary file can be discarded when the power is lost. Alternatively, the data in virtual disk_02 236 and virtual disk_03 238 can be grouped and written to SEED 200.

緩衝記憶體286儲存元資料和表,如FAT,FDB,壓縮表,分組表和緩衝記憶體映射表。緩衝記憶體232儲存分頁檔案。緩衝記憶體234儲存資料寫。當電源出現故障時,這些緩衝記憶體將進行備份。讀緩衝記憶體290、291、292、293儲存FA,NFA,RA,和NRA的資料,且在電源故障時,可能被丟棄。Buffer memory 286 stores metadata and tables such as FAT, FDB, compressed tables, grouped tables, and buffered memory maps. The buffer memory 232 stores the paging file. Buffer memory 234 stores data writes. These buffer memories will be backed up in the event of a power failure. The read buffer memories 290, 291, 292, 293 store data for FA, NFA, RA, and NRA, and may be discarded in the event of a power failure.

VMD驅動器278和VMD應用280也與操作系統功能282、刷新管理器277、用戶應用276、專有的IO驅動器274,以及設置和環境參數272一同被儲存。VMD driver 278 and VMD application 280 are also stored with operating system function 282, refresh manager 277, user application 276, proprietary IO driver 274, and setup and environment parameters 272.

第7圖表示了SEED SSD DRAM中耐用轉換層(Endurance Transaction Layer,ETL)儲存映射示意圖。SSD DRAM緩衝區194的內部儲存空間包含元資料緩衝記憶體140、暫時檔案緩衝記憶體142、分頁檔案的緩衝記憶體144、刷新資料145、讀緩衝記憶體和映射表151、緩衝器資料152和資料寫緩衝記憶體154。這些緩衝記憶體可以儲存來自於位於主機DRAM的內部儲存空間289的緩衝記憶體的資料。分頁檔案和映射表148和日誌檔案頁分組146也被分配了內部儲存空間。系統使用區域150被保留。備件和交換塊156提供備用和交換操作塊。表162儲存快閃記憶體頁的狀態和壞塊訊息。塊和抹除計數表164根據塊的基本內容,儲存抹除計數和塊訊息。S.M.A.R.T.資料採集器170收集和儲存較低級別的快閃記憶體模組和可能被主機軟體讀取的控制器的的狀態訊息。Figure 7 shows a schematic diagram of the Endurance Transaction Layer (ETL) storage map in SEED SSD DRAM. The internal storage space of the SSD DRAM buffer 194 includes the metadata buffer memory 140, the temporary file buffer memory 142, the buffer memory 144 of the paging file, the refresh data 145, the read buffer memory and mapping table 151, the buffer data 152, and The data is written to the buffer memory 154. These buffer memories can store data from buffer memory located in the internal storage space 289 of the host DRAM. The paging archive and mapping table 148 and log archive page grouping 146 are also assigned internal storage space. The system usage area 150 is reserved. The spare and exchange block 156 provides spare and exchange operational blocks. Table 162 stores the status of the flash memory page and the bad block message. The block and erase count table 164 stores the erase count and the block information based on the basic contents of the block. The S.M.A.R.T. data collector 170 collects and stores status messages of lower level flash memory modules and controllers that may be read by the host software.

第8圖是一個快閃記憶體之儲存器映射圖。NAND快閃記憶體196中的快閃記憶體儲存空間包括分區_01 302,分區包括具有簡化VMD程式和加密解密函數的啟動用法0x80,分區_02 304,分區_02 304具有其它的映像,例如,操作系統啟動映像306,備份啟動映像308,以及啟動用法0x00。VMD應用程式310儲存在快閃記憶體中,並作為虛擬磁碟管理器。資料銀行312儲存頻繁使用的映像,而資料銀行314儲存不頻繁使用的映像。Figure 8 is a memory map of a flash memory. The flash memory storage space in the NAND flash memory 196 includes a partition_01 302, the partition includes a boot usage 0x80 with a simplified VMD program and an encryption/decryption function, partition_02 304, and partition_02 304 has other images, such as The operating system boot image 306, the backup boot image 308, and the boot usage 0x00. The VMD application 310 is stored in the flash memory and acts as a virtual disk manager. The data bank 312 stores frequently used images, while the data bank 314 stores images that are infrequently used.

第9圖表示了根據資料類型將頁的全部或者部分映射或者分組成元資料。每種資料類型都有它自己的分組映射表316,例如,分頁檔案,暫時檔案,元資料,和普通用戶資料。在本實施例中,只有的用戶資料被映射到快閃記憶體中,雖然在其它的實施例中,存取儲存器可能映射額外資料到快閃記憶體。Figure 9 shows the mapping or grouping of all or part of a page into metadata based on the type of material. Each data type has its own group mapping table 316, such as paging files, temporary files, metadata, and general user data. In this embodiment, only the user profile is mapped into the flash memory, although in other embodiments, the access memory may map additional data to the flash memory.

元頁是一個較大的儲存器單元,而不是快閃記憶體頁。快閃記憶體被組織成多通道和多芯片或者或每個通道包括複數個核心和每個核心有多個層。元頁的大小是通道數乘以層的數量乘以快閃記憶體層的數量。例如,四個通道和兩個平面的元頁大小是8個頁。The metapage is a larger storage unit than a flash memory page. Flash memory is organized into multiple channels and multiple chips or each channel includes a plurality of cores and each core has multiple layers. The size of the metapage is the number of channels multiplied by the number of layers multiplied by the number of flash memory layers. For example, the meta page size for four channels and two planes is 8 pages.

當一個完整的頁(full page,FP)被分組成元頁318時,該頁的頁寫的位置X儲存主機LBA的分組映射表316中的條目,且具有一個指向分組元頁318的指針,YY-DRAM-MP。When a full page (FP) is grouped into metapages 318, the location X of the page write of the page stores entries in the packet mapping table 316 of the host LBA and has a pointer to the packet metapage 318. YY-DRAM-MP.

當局部頁(partial page,PP)被分組為局部分組元頁320,局部頁的起始位置A(N),以及局部頁的長度LEN(N)部分頁主機LBA分組映射表316中儲存成一條記錄,並且具有一個指向該局部頁分組頁320的指針,YY-DRAM-MP。主機LBA和長度附帶在資料之後,將資料儲存到PP分組元頁320頁中。When a partial page (PP) is grouped into a local packet metapage 320, a local page start position A(N), and a partial page length LEN(N) partial page host LBA group mapping table 316 are stored as one Recorded and has a pointer to the partial page grouping page 320, YY-DRAM-MP. After the host LBA and length are attached to the data, the data is stored in page 320 of the PP packet page.

第10圖表示壓縮頁之映射圖。藉由在快閃記憶體頁儲存壓縮資料,而不是常規的資料,快閃記憶體耐用性可能增加,因為壓縮減少了資料的大小,而這在快閃記憶體儲存資料的要求。壓縮資料可能會緩衝記憶體在主機DRAM或SSD DRAM緩衝區194中,並當緩衝記憶體儲存滿時,將壓縮資料備份到NAND快閃記憶體196中。Figure 10 shows a map of compressed pages. By storing compressed data on flash memory pages instead of conventional data, flash memory durability may increase because compression reduces the size of the data, which is required to store data in flash memory. The compressed data may buffer the memory in the host DRAM or SSD DRAM buffer 194 and back up the compressed data to the NAND flash memory 196 when the buffer memory is full.

在將資料儲存到虛擬磁碟188中或資料寫緩衝記憶體20中之前,VMD驅動器100可能壓縮一些資料。主機以正常方式寫幾頁資料,指示邏輯位址(logical address,LBA),頁號,用於統計資料長度的扇區計數總。例如,主機可以向LBA 2048寫入DATA1,SC=128,8頁,每頁16個扇區。壓縮引擎,例如,VMD驅動器100中的加密解密引擎240,將128個扇區的資料壓縮到48個扇區的壓縮資料。48個扇區的壓縮資料包括資料頭,一些壓縮後的資料儲存在第一頁壓縮頁,兩頁以上的壓縮資料儲存一共可以儲存3個壓縮頁。相對未壓縮的8頁,這是一個顯著的減少。The VMD driver 100 may compress some of the data before storing the data in the virtual disk 188 or in the data write buffer memory 20. The host writes a few pages of data in the normal way, indicating the logical address (LBA), the page number, and the total sector count for the length of the statistics. For example, the host can write DATA1 to the LBA 2048, SC = 128, 8 pages, 16 sectors per page. The compression engine, for example, the encryption decryption engine 240 in the VMD driver 100, compresses 128 sectors of data into 48 sectors of compressed data. The compressed data of 48 sectors includes the data header, some compressed data is stored in the first page compressed page, and the compressed data storage of more than two pages can store 3 compressed pages. This is a significant reduction over the uncompressed 8 pages.

VMD驅動器100將3個頁的壓縮資料儲存在虛擬磁碟188中,或者資料寫緩衝記憶體20中,當藉由儲存在壓縮LBA表212中的指針MAP_PAGE_PTR指向壓縮資料214的一個頁時。The VMD driver 100 stores the compressed data of 3 pages in the virtual disk 188, or in the material write buffer memory 20, when pointing to a page of the compressed material 214 by the pointer MAP_PAGE_PTR stored in the compressed LBA table 212.

VMD驅動器100更創建條目LBA表210,條目可以是統一映射表的一部分或者是元資料緩衝記憶體120的一部分。然而,在LBA表210中的條目是特殊映射編碼,以壓縮資料。The VMD driver 100 further creates an entry LBA table 210, which may be part of a unified mapping table or part of the metadata buffer memory 120. However, the entries in the LBA table 210 are special mapping codes to compress the data.

LBA表210中的映射條目包括前兩位壓縮狀態位。第一壓縮狀態位1表示壓縮存取,0表示對未壓縮資料規則的主機存取。例如,第127頁映射到使用PTR1的未壓縮資料。The mapping entries in LBA table 210 include the first two bits of compression status bits. The first compressed state bit 1 represents a compressed access and 0 represents a host access to an uncompressed data rule. For example, page 127 maps to uncompressed data using PTR1.

當第一壓縮狀態位為1並且第二壓縮狀態位為0時,在LBA表210的條目中包含未壓縮的資料段的全部大小(頁數)。當第一壓縮狀態位是1並且第二壓縮狀態位為1時,則在LBA表210的條目中包含偏移量。偏移量是該壓縮資料段的第一條目,條目包含段的大小。When the first compression status bit is 1 and the second compression status bit is 0, the entire size (page number) of the uncompressed data segments is included in the entry of the LBA table 210. When the first compression status bit is 1 and the second compression status bit is 1, an offset is included in the entry of the LBA table 210. The offset is the first entry of the compressed data segment, and the entry contains the size of the segment.

在主機向LBA 2048寫DATA1,SC=128,8頁的例子中,DATA1段中的LBA表210中有8頁條目。2048的LB A選擇LBA表210中的128頁。在LBA表210共8頁條目被使用。第一個條目表示總資料大小,接下來的7個條目包含指回的第一個條目的偏移量。In the example where the host writes DATA1, SC=128, 8 pages to the LBA 2048, there are 8 page entries in the LBA table 210 in the DATA1 segment. LB A of 2048 selects 128 pages in LBA table 210. A total of 8 pages of entries in the LBA table 210 are used. The first entry represents the total data size, and the next seven entries contain the offset of the first entry back.

當主機讀頁133(LBA =2128,SC=16)時,則讀取頁133的LBA表210中的條目。儲存在頁133’的條目的偏移量是5,它向後指向頁128的條目,其中包含3頁全部的壓縮資料。從壓縮的LBA表212和下面兩個壓縮LBA表212的條目中讀取頁128的條目,共3頁條目,這是壓縮的資料的大小。每個條目指向虛擬磁碟188,SSD DRAM緩衝區194或者NAND 快閃記憶體196中的壓縮資料頁。讀取這三個壓縮頁並且解壓縮以恢復原始的8頁未壓縮資料塊。然後,從未壓縮資料中提取主機正在讀取的資料。其中,可以使用硬體電路或者韌體控制算法或者軟體進行聯機壓縮。When the host reads page 133 (LBA = 2128, SC = 16), then the entry in the LBA table 210 of page 133 is read. The offset stored in page 133' is 5, which points backwards to the entry of page 128, which contains 3 pages of all compressed material. The entry of page 128 is read from the compressed LBA table 212 and the entries of the two compressed LBA tables 212 below, for a total of 3 pages of entries, which is the size of the compressed material. Each entry points to a virtual disk 188, SSD DRAM buffer 194 or a compressed data page in NAND flash memory 196. These three compressed pages are read and decompressed to recover the original 8 pages of uncompressed data blocks. Then, extract the data that the host is reading from the uncompressed data. Among them, online compression can be performed using hardware circuits or firmware control algorithms or software.

第11A至11B圖中表示了備用和交換操作。如第11A圖所示,備用塊是在Flash中,例如,在NAND快閃記憶體196中。資料已經寫入到快閃記憶體塊X,佔用部分322包括幾個整頁和一個局部頁。資料也將被寫入部分324的備用快閃記憶體塊Y中,部分324也包括幾個整頁和局部分頁。塊X和Y中的資料將被組合為自空閒備用塊Y。The standby and swap operations are shown in Figures 11A through 11B. As shown in FIG. 11A, the spare block is in Flash, for example, in NAND flash memory 196. The data has been written to the flash memory block X, and the occupied portion 322 includes several full pages and one partial page. The data will also be written to the spare flash block Y of portion 324, which also includes several full pages and partial partial pages. The data in blocks X and Y will be combined from the free spare block Y.

將來自部分322的整頁寫入交換塊Z的高位部分326。然後,將來自塊X和Y的局部頁寫入DRAM頁緩衝區330中,且被結合起來,然後一起寫入交換塊Z中的一個中頁。將來自部分324的下一個整頁寫入交換塊Z的低位部分328。最終,塊X和Y被抹除。The entire page from portion 322 is written to the upper portion 326 of swap block Z. The partial pages from blocks X and Y are then written into DRAM page buffer 330 and combined and then written together into one of the swap blocks Z. The next full page from portion 324 is written to lower portion 328 of swap block Z. Finally, blocks X and Y are erased.

如第11B圖所示,備用塊Y在DRAM中,比如在SSD DRAM緩衝區194中。將資料寫入快閃記憶體塊X中,佔用含有幾塊整頁和一個局部頁的部分322。將這個資料拷貝到DRAM中的備用塊Y中,佔用高位部分332。將資料寫入低部分324中的備用快閃記憶體塊Y,低部分324為幾個整頁和一個部分頁。塊X和Y中的資料組合到空閒備用塊Y中。因為備用塊在DRAM中,來自塊X和Y的局部頁可以直接組合。然後將整個備用塊Y複製到交換塊Z,包括高位部分326和低位部分328。最終,因為塊Y在DRAM中並且無需抹除操作,所以抹除唯一塊。根據抹除操作所需的時間,在DRAM中具有備用塊Y能夠提高性能以及降低快閃記憶體塊的損耗。As shown in FIG. 11B, the spare block Y is in the DRAM, such as in the SSD DRAM buffer 194. The data is written into the flash memory block X, occupying a portion 322 containing a few full pages and one partial page. This material is copied into the spare block Y in the DRAM, occupying the upper portion 332. The data is written to the spare flash block Y in the lower portion 324, which is a few full pages and one partial page. The data in blocks X and Y are combined into an idle spare block Y. Since the spare blocks are in DRAM, the partial pages from blocks X and Y can be directly combined. The entire spare block Y is then copied to the swap block Z, including the upper portion 326 and the lower portion 328. Finally, because block Y is in DRAM and no erase operation is required, the unique block is erased. Having a spare block Y in the DRAM can improve performance and reduce the loss of the flash memory block, depending on the time required for the erase operation.

第12圖表示了多層次錯誤校驗。快閃記憶體陣列400可使用多層次單元,當內部總線404上的快閃記憶體存取控制器402讀取時,多層次單元更易出現位錯誤。編碼器398能夠產生低密度奇偶校驗碼(parity check code),並且在寫入快閃記憶體陣列400前,附加到來自讀緩衝記憶體396的資料作為備用字節。當資料讀入到快閃記憶體陣列400的讀緩衝區392時,奇偶解碼器394將儲存的奇偶校驗與產生的奇偶校驗進行核對,以檢測和糾正讀錯誤。當不可能使用LDPC_1編碼糾錯時,為快閃記憶體資料的頁和塊,使能更長,更複雜的編碼LDPC_2校驗376。Figure 12 shows the multi-level error check. The flash memory array 400 can use multi-level cells, which are more susceptible to bit errors when the flash memory access controller 402 on the internal bus 404 reads. Encoder 398 is capable of generating a low density parity check code and is appended to the data from read buffer memory 396 as a spare byte before being written to flash memory array 400. When data is read into the read buffer 392 of the flash memory array 400, the parity decoder 394 checks the stored parity against the generated parity to detect and correct the read error. When it is not possible to use LDPC_1 encoding error correction, a longer, more complex encoding LDPC_2 check 376 is enabled for pages and blocks of flash memory data.

LDPC_2發生器378產生較長的奇偶校驗碼LDPC_2,並且由LDPC_2寫緩衝區380緩衝至總線404。由於所選擇的快閃記憶體頁中的物理單元的退化,因此需要更多的保護,進而產生LDPC_2。LDPC_2產生並附加在即將寫入到快閃記憶體陣列400塊中的使能頁或塊中的數據中。The LDPC_2 generator 378 generates a longer parity code LDPC_2 and is buffered to the bus 404 by the LDPC_2 write buffer 380. Due to the degradation of the physical cells in the selected flash memory page, more protection is required, resulting in LDPC_2. LDPC_2 is generated and appended to the data to be written to the enabled page or block in the block of flash memory array 400.

當LDPC_2碼無法糾正讀錯誤時,使能RAID奇偶校驗390。RAID校驗可能跨越快閃記憶體陣列的多個物理設備。RAID奇偶校驗碼是由RAID奇偶校驗發生器388產生,並在將RAID奇偶校驗碼和寫資料一起被寫入總線404前,由RAID緩衝區382緩衝。它的產生是由於物理單元的退化導致的所選擇的快閃記憶體頁需要更多地保護。RAID parity 390 is enabled when the LDPC_2 code cannot correct the read error. RAID verification can span multiple physical devices in a flash memory array. The RAID parity code is generated by the RAID parity generator 388 and buffered by the RAID buffer 382 before the RAID parity code is written to the bus 404 along with the write data. It occurs because the selected flash memory page requires more protection due to degradation of the physical unit.

當RAID奇偶校驗碼未能糾正讀取錯誤,觸發疊代控制器386以測試調整電壓。讀取的資料儲存在疊代故障資料緩衝區374中。電壓調整控制器384被快閃記憶體控制器控制,快閃記憶體控制器將特定值寫入快閃記憶體中,以為快閃記憶體陣列400讀取資料調整參考電壓。資料回讀以測試是否新設置的參考電壓能夠減少錯誤。因此,將進行另一輪LDPC_1/LDPC_2/RAID校驗。如果仍然無法讀取,讀取的資料被儲存在疊代故障資料緩衝區374中,並選擇另一個電壓以執行另一輪的回讀測試。當所有的電壓疊代都進行了測試並且失敗,疊代故障資料緩衝區374加載測試結果,以使資料恢復分析器372確定內部總線406上的資料是否可以使用,或者是否出現了致命錯誤。錯誤校正碼和奇偶校驗的多層次性,可提高快閃記憶體的壽命和耐力。When the RAID parity code fails to correct the read error, iterative controller 386 is triggered to test the adjustment voltage. The read data is stored in the iteration fault data buffer 374. The voltage adjustment controller 384 is controlled by the flash memory controller, and the flash memory controller writes a specific value into the flash memory to read the data adjustment reference voltage for the flash memory array 400. Data readback to test if the newly set reference voltage can reduce errors. Therefore, another round of LDPC_1/LDPC_2/RAID verification will be performed. If still unreadable, the read data is stored in the iteration fault data buffer 374 and another voltage is selected to perform another round of readback testing. When all of the voltage iterations have been tested and failed, the iteration fault data buffer 374 loads the test results to cause the data recovery analyzer 372 to determine if the data on the internal bus 406 is usable or if a fatal error has occurred. The multi-level of error correction code and parity improves the life and endurance of the flash memory.

第13A至13B圖表示了壞塊抹除計數表和頁狀態表。如第13A圖所示,一個寫日期被儲存在塊開始處。壞塊抹除計數表471儲存快閃記憶體塊的條目。每個條目包含一個塊的狀態字段,使用3位表明是否塊是空的(抹除),使用的,有一些垃圾頁的塊,全部是壞塊,或者有一壞頁和一些好頁的局部壞塊。Figures 13A through 13B show the bad block erase count table and the page status table. As shown in Fig. 13A, a write date is stored at the beginning of the block. The bad block erase count table 471 stores entries of the flash memory block. Each entry contains a block status field, using 3 bits to indicate if the block is empty (erased), used, blocks with some junk pages, all bad blocks, or a bad page with some bad pages and some bad pages Piece.

每個塊的條目更具有一個13位抹除計數和一個16位寫日期。當設備生產出來時,13位抹除計數開始計數0。塊每抹除一次,計數增加一次。此抹除計數可用於磨損均衡控制,並且可以用於S.M.A.R.T.檢查設備的健康狀況。寫的日期是最後一次寫入塊的日期。它是用於刷新功能。對於TLC設備,可以保留一年以內的時間,寫日期可以是一個編碼資料(MM-DD-YY),或者是一個數值,例如,可以是生產時初始化的設備製造日期。Each block entry has a 13-bit erase count and a 16-bit write date. When the device is produced, the 13-bit erase count starts counting 0. Each time the block is erased, the count is incremented once. This erase count can be used for wear leveling control and can be used to check the health of the device at S.M.A.R.T. The date written is the date the block was last written. It is used for refresh functions. For TLC devices, the time within one year can be reserved. The date of writing can be a coded material (MM-DD-YY) or a value, for example, it can be the date of manufacture of the device that was initialized at the time of production.

頁狀態表473塊中有所有頁的條目。每一頁都有一個3位的頁狀態字段。由於每個頁條目只有3位長,許多頁條目可能被打包在一起。頁狀態表示一個空的,使用的,垃圾頁,壞頁,又或者是一個較高層次糾錯保護的頁。比如,一個更長的ECC碼。There are entries for all pages in the page status table 473 block. Each page has a 3-bit page status field. Since each page entry is only 3 bits long, many page entries may be packaged together. The page status indicates an empty, used, junk page, bad page, or a higher level error correction page. For example, a longer ECC code.

如第13B圖所示,寫日期被儲存在一個基礎頁上,而不是儲存在一個基礎塊上。壞塊抹除計數表471記錄快閃記憶體塊的條目。每個條目包含一個13位抹除計數器和塊狀態字段,用3位表示是否塊是空的(抹除),使用的,有一些垃圾頁的塊,全部是壞塊,或者有一些壞頁和一些好頁的局部壞塊。As shown in Fig. 13B, the write date is stored on a base page instead of being stored on a base block. The bad block erase count table 471 records the entries of the flash memory block. Each entry contains a 13-bit erase counter and block status field, with 3 bits indicating whether the block is empty (erased), used, some blocks of junk pages, all bad blocks, or some bad pages and Some bad blocks of good pages.

在壞塊抹除計數表471不儲存寫日期。相反,頁狀態表473儲存寫日期。對第13B圖來說,寫日期是頁的寫日期。而對第13A圖來說,是塊的寫日期。因為每個塊都有很多頁,儲存頁的寫資料而不是塊的資料需要更多的儲存表,然而,卻可增加耐力。刷新是針對頁而不是針對整塊。The bad block erase count table 471 does not store the write date. Instead, the page status table 473 stores the write date. For the 13B picture, the write date is the date the page was written. For Figure 13A, it is the date the block was written. Because each block has a lot of pages, storing data for pages instead of blocks requires more storage tables, however, it increases endurance. The refresh is for the page and not for the entire block.

第14圖是一個具有耐力控制器的超級增強耐力設備(Super Enhanced Endurance Device,SEED)之方框圖。如第1和3圖所示,可選地,SEED 200'與SSD 350對接,然後連接到快閃記憶體342,而不是直連接到NAND快閃記憶體196。SSD 350可以與SEED 200'整合。SEED 200'能夠不使用主機VMD驅動器而獨立工作。一些駐留在主機VMD驅動器的一些功能可能被實施。Figure 14 is a block diagram of a Super Enhanced Endurance Device (SEED) with an endurance controller. As shown in Figures 1 and 3, optionally, the SEED 200' is docked with the SSD 350 and then connected to the flash memory 342 instead of being directly connected to the NAND flash memory 196. The SSD 350 can be integrated with the SEED 200'. The SEED 200' can work independently without using a host VMD drive. Some of the features that reside on the host VMD drive may be implemented.

SEED 200’具有主機界面16,SEED 200’使用總線,如PCIe,SATA,或者通用序列匯流排(Universal-Serial-Bus,USB),NVMe,雷電界面,eMMC,iSSD等與主機300(如第1圖)通訊。從主機界面16來的資料被發送到耐力控制器360。耐力控制器360取代第3圖中的SEED控制器192,並且許多部分具有與第3圖中已經描述的相同的標號。SEED 200' has a host interface 16, SEED 200' uses a bus, such as PCIe, SATA, or Universal-Serial-Bus (USB), NVMe, lightning interface, eMMC, iSSD, etc. with host 300 (such as the first Figure) Communication. The data from the host interface 16 is sent to the endurance controller 360. The endurance controller 360 replaces the SEED controller 192 in Fig. 3, and many portions have the same reference numerals as already described in Fig. 3.

耐力控制器DRAM 358可儲存一個或多個虛擬磁碟,緩衝記憶體,S.M.A.R.T.訊息,韌體(firmware)和其它緩衝區和表。低級別SSD DRAM 340可以儲存安全訊息,壞頁管理表,映射表,抹除計數表,備件和交換塊,其它緩衝區和表。低級別DRAM界面336從耐力DRAM控制器358讀取和寫入。刷新管理器202可以週期性的刷新低級別SSD快閃記憶體342中的資料。刷新恢復管理器43使用刷新資料管理恢復操作。暫時管理器348控制暫時資料,而壓縮映射管理器352管理壓縮表。安全管理器346管理安全功能。The endurance controller DRAM 358 can store one or more virtual disks, buffer memory, S.M.A.R.T. messages, firmware and other buffers and tables. The low-level SSD DRAM 340 can store security messages, bad page management tables, mapping tables, erase counter tables, spare and swap blocks, other buffers and tables. The low level DRAM interface 336 is read and written from the endurance DRAM controller 358. The refresh manager 202 can periodically refresh the data in the low level SSD flash memory 342. The refresh recovery manager 43 manages the recovery operation using the refresh data. The temporary manager 348 controls the temporary data, and the compression map manager 352 manages the compressed table. The security manager 346 manages security functions.

多通道快閃記憶體界面14編程資料頁並且抹除快閃記憶體342中的塊,且可能會被組織成幾個通道。ECC管理器338產生低層次錯誤校正碼(ECC)以加人寫資料,並比較儲存的ECC與重新產生ECC,以檢測和糾正讀取錯誤。它也管理需要額外保護的快閃記憶體頁,為這些頁產生ECC,並且在需要的時候ECC的儲存和回收。壞頁管理器206跟蹤快閃記憶體342中的壞頁位置。這樣能夠延長單個塊的壽命,因為在塊中僅有一頁可能是壞的,而其它的頁還能連續使用。更複雜的壞塊管理可能會降低整體的快閃記憶體驅動器的磨損。The multi-channel flash memory interface 14 programs the data pages and erases the blocks in the flash memory 342 and may be organized into several channels. The ECC manager 338 generates a low level error correction code (ECC) to add data to the person and compares the stored ECC with the regenerated ECC to detect and correct read errors. It also manages flash memory pages that require additional protection, generates ECC for these pages, and stores and recycles ECC when needed. The bad page manager 206 tracks the bad page locations in the flash memory 342. This can extend the life of a single block because only one page in the block can be bad, while other pages can be used continuously. More complex bad block management may reduce the overall wear of the flash memory drive.

磨損均衡器40可提供兩種磨損均衡方法。一種方法是從可用空塊中動態選擇最低磨損均衡計數塊寫資料。另一種方法是基於耗損均衡計數門檻值。一旦達到這個門檻值,快閃記憶體資料塊將從快閃記憶體342中的一個物理塊(具有低損耗均衡計數)移動到另一個空物理塊(具有高損耗均衡計數)。耐力控制器360和SSD 350控制器可以功能性的整合在一起或者分開。Wear equalizer 40 provides two methods of wear leveling. One method is to dynamically select the lowest wear leveling block write data from the available empty blocks. Another method is to count the threshold based on the wear leveling. Once this threshold is reached, the flash memory block will move from one physical block (with low loss equalization count) in flash memory 342 to another empty physical block (with high loss equalization count). The endurance controller 360 and the SSD 350 controller can be functionally integrated or separated.

第15A至15E圖表示了主機上VMD驅動器處理主機寫指令。步驟1002,主機請求中包含邏輯位址,如用於統一映射表的索引的LBA。讀取統一映射表匹配條目,或解析檔案FAT和FDB的條目,以確定檔案副檔名(File Extension)和資料類型。在匹配條目的前幾位是資料類型位,以指示什麼類型的資料被儲存在該邏輯位址。取決於資料類型位,調度不同的進程。Figures 15A through 15E show the VMD driver processing host write instructions on the host. In step 1002, the host request includes a logical address, such as an LBA for unifying the index of the mapping table. Read the unified mapping table matching entries, or parse the entries of the files FAT and FDB to determine the file extension (File Extension) and data type. The first few bits in the matching entry are data type bits to indicate what type of data is stored in the logical address. Different processes are scheduled depending on the data type bit.

步驟1004,當匹配條目的資料類型位是10,資料是FAT或FDB條目。元資料寫過程被調用,這在第15B圖詳細描述。In step 1004, when the data type bit of the matching entry is 10, the data is a FAT or FDB entry. The metadata writing process is called, which is described in detail in Figure 15B.

步驟1006,當資料類型位元是11,用戶資料檔案進程檔案被調用。用戶資料寫過程在第15C圖中詳細描述。用戶資料檔案是應先儲存在DRAM中,然後再刷新到快閃記憶體中的用戶和應用程式資料。In step 1006, when the data type bit is 11, the user profile file process file is called. The user data writing process is described in detail in Fig. 15C. The user profile is the user and application data that should be stored in DRAM and then flushed to the flash memory.

步驟1008,當匹配條目的資料類型位元是001,分頁檔案的資料用於交換主儲存器的外圍儲存。這些交換藉由主機上的儲存管理器執行。這些檔案不需要被儲存在快閃記憶體中,以減少損耗。分頁資料寫入過程被調用,第15D圖中詳細描述。In step 1008, when the data type bit of the matching entry is 001, the data of the paging file is used to exchange the peripheral storage of the main storage. These exchanges are performed by the storage manager on the host. These files do not need to be stored in flash memory to reduce losses. The paging data writing process is called, which is described in detail in Fig. 15D.

當匹配條目的資料類型位元是01(非習知類型)時,在步驟1008中,暫時檔案資料無需儲存在快閃記憶體中。暫時資料寫過程被調用,已在第15E圖中進行詳細描述。When the data type bit of the matching entry is 01 (non-practical type), in step 1008, the temporary profile data need not be stored in the flash memory. The temporary data writing process is called and has been described in detail in Figure 15E.

第15B圖顯示了元資料寫入過程,步驟1102,主機資料被寫入主機的DRAM中的元資料檔案區域緩衝記憶體(第6圖中的286),步驟1104,當緩衝記憶體滿了,步驟1106,緩衝記憶體的元資料被移動到DRAM中元資料分組緩衝區。步驟1108,當達到標準大小或者收到資料之後,對分組緩衝區的元資料,執行分組過程。Figure 15B shows the metadata writing process. In step 1102, the host data is written into the metadata file area buffer memory in the DRAM of the host (286 in Fig. 6). In step 1104, when the buffer memory is full, In step 1106, the metadata of the buffer memory is moved to the metadata packet buffer in the DRAM. Step 1108, after the standard size is reached or the data is received, the grouping process is performed on the metadata of the packet buffer.

分組處理過程將元資料分成元頁。步驟1110,當在元頁滿了時,步驟1112,滿了的資料的頁被寫入到SEED、SSD或者快閃記憶體中。The grouping process divides the metadata into metapages. Step 1110, when the metapage is full, in step 1112, the page of the full material is written to the SEED, SSD or flash memory.

第15C圖顯示了用戶資料的寫過程。步驟1122,主機資料被寫入主機的DRAM中(在第6圖中的234)的用戶資料檔案區緩衝記憶體。步驟1124,當緩衝記憶體滿了,步驟1126,緩衝記憶體中的用戶資料被轉移到DRAM中用戶資料分組緩衝區。步驟1128,當滿足標準大小時,根據分組緩衝區用戶資料,執行分組進程。Figure 15C shows the process of writing user data. In step 1122, the host data is written to the user profile area of the host DRAM (234 in Figure 6) to buffer the memory. Step 1124, when the buffer memory is full, in step 1126, the user data in the buffer memory is transferred to the user data packet buffer in the DRAM. In step 1128, when the standard size is met, the grouping process is performed according to the packet buffer user profile.

分組進程將用戶資料分為元頁。步驟1130,當元頁滿了,步驟1132,滿了的用戶資料元頁將被寫入SEED、SSD,或者快閃記憶體中。The grouping process divides the user data into meta pages. Step 1130, when the metapage is full, in step 1132, the full user data metapage will be written to the SEED, SSD, or flash memory.

第15D圖顯示分頁資料寫過程。步驟1142,主機資料被寫入主機的DRAM(第6圖中的232)中的分頁資料檔案區緩衝記憶體中。步驟1144,當緩衝記憶體滿了,步驟1146,緩衝記憶體中的分頁資料被移動至DRAM中的分頁資料分組緩衝區中。步驟1148,當滿足標準大小時,根據分組緩衝區分頁資料,執行分組進程。Figure 15D shows the paging data writing process. In step 1142, the host data is written into the paging data file area buffer memory in the host's DRAM (232 in FIG. 6). Step 1144, when the buffer memory is full, in step 1146, the page data in the buffer memory is moved to the page data packet buffer in the DRAM. Step 1148, when the standard size is satisfied, the grouping process is performed according to the packet buffer paging data.

分組進程將分頁資料分成元頁。步驟1150,當元頁滿了,步驟1152,滿了的分頁資料的元頁被寫入SEED、SSD,或者快閃記憶體中。The grouping process divides the paging data into metapages. In step 1150, when the metapage is full, in step 1152, the metapage of the full paged material is written to the SEED, SSD, or flash memory.

第15E圖顯示暫時檔案寫過程。步驟1162,主機資料被寫入主機的DRAM虛擬磁碟_01(第6圖中的288)的暫時檔案區中。步驟1164,當虛擬磁碟滿了,步驟1166,虛擬磁碟中的暫時檔案被移動到DRAM中暫時資料分組緩衝區中。步驟1168,當滿足標準大小,根據分組緩衝區中的暫時資料,執行分組進程。Figure 15E shows the temporary file writing process. In step 1162, the host data is written into the temporary file area of the host's DRAM virtual disk_01 (288 in Figure 6). Step 1164, when the virtual disk is full, in step 1166, the temporary file in the virtual disk is moved to the temporary data packet buffer in the DRAM. Step 1168, when the standard size is met, the grouping process is performed according to the temporary data in the packet buffer.

分組進程將暫時資料組成元頁。步驟1170,當元頁滿了,步驟1172,滿了的暫時資料的元頁被寫入SEED或者SSD中,而不是快閃記憶體中。The grouping process groups the temporary data into a metapage. In step 1170, when the metapage is full, in step 1172, the metapage of the full temporary data is written to the SEED or SSD instead of the flash memory.

第16A至16E圖顯示了主機VMD驅動器處理主機讀指令。主機請求中包含邏輯位址,如用於統一映射表的索引的LBA,步驟1012。讀取統一映射表匹配條目,或解析檔案FAT和FDB的條目,以確定檔案檔案副檔名和資料類型。在匹配條目的前幾位是資料類型位,以指示什麼類型的資料被儲存在該邏輯位址。取決於資料類型位,調度不同的進程。Figures 16A through 16E show the host VMD driver processing host read instructions. The host request contains a logical address, such as an LBA for unifying the index of the mapping table, step 1012. Read the unified mapping table matching entries, or parse the entries of the files FAT and FDB to determine the archive file extension and data type. The first few bits in the matching entry are data type bits to indicate what type of data is stored in the logical address. Different processes are scheduled depending on the data type bit.

步驟1014,當匹配條目的資料類型位元是10,資料是FAT或FDB條目。元資料讀過程中被調用,這在第16B圖詳細描述。In step 1014, when the data type bit of the matching entry is 10, the data is a FAT or FDB entry. It is called during the metadata reading process, which is described in detail in Figure 16B.

步驟1016,當資料類型位元是11,用戶資料檔案讀進程被調用。用戶資料讀進程在第16C圖中詳述。In step 1016, when the data type bit is 11, the user profile read process is called. The user profile read process is detailed in Figure 16C.

步驟1018,當匹配條目的資料類型位元是001,資料是分頁檔案。些檔案不需要被儲存在快閃記憶體中,以減少損耗。分頁資料讀進程被調用,調用過程在第16D圖中詳述。In step 1018, when the data type bit of the matching entry is 001, the data is a paging file. These files do not need to be stored in flash memory to reduce losses. The paging data read process is called, and the calling process is detailed in Figure 16D.

步驟1018,當匹配項的資料類型位元是01(非現有類型),暫時檔案的資料不是儲存在快閃記憶體中。暫時資料讀進程被調用,調用過程在第16E圖中詳述。In step 1018, when the data type bit of the matching item is 01 (non-existing type), the data of the temporary file is not stored in the flash memory. The temporary data read process is called, and the calling process is detailed in Figure 16E.

圖第16B顯示了元資料讀過程。步驟1120,當請求的元資料在主機的DRAM(在第6圖的286)的元資料檔案區緩衝記憶體中被發現時,步驟1022,從這個緩衝記憶體中讀取請求的元資料,且被傳送至主機。Figure 16B shows the metadata reading process. Step 1120, when the requested metadata is found in the metadata file buffer memory of the host DRAM (in 286 of FIG. 6), step 1022, the requested metadata is read from the buffer memory, and Transferred to the host.

步驟1120,當所請求的元資料不在緩衝記憶體中時,步驟1024,從SSD中提取元資料,並寫入到主機DRAM中的元資料取消分組緩衝區中。步驟1026,如果元資料被分組,對分組元資料執行取消分組進程。步驟1028,從元資料取消分組緩衝區讀取取消分組元資料,並傳送到主機。Step 1120: When the requested metadata is not in the buffer memory, in step 1024, the metadata is extracted from the SSD and written into the metadata cancellation packet buffer in the host DRAM. Step 1026, if the metadata is grouped, the ungrouping process is performed on the packet metadata. In step 1028, the unpacking metadata is read from the metadata cancellation packet buffer and transmitted to the host.

第16C圖表示了用戶資料讀過程。步驟1130,當請求的用戶資料在主機DRAM(第6圖中286)的用戶資料檔案區寫緩衝記憶體中發現時,步驟1032,然後,從寫緩衝記憶體中讀取請求用戶資料,並被傳送到主機。寫緩衝記憶體保留最近主機寫的資料。請求的用戶資料也可能是為四種資料結合的四個讀緩衝記憶體中的一個,即RA/FA,RA/NFA,NRA/FA,和NRA/NFA,根據讀存取,加載用戶資料,不一定是在主機寫資料時。Figure 16C shows the user data reading process. Step 1130, when the requested user profile is found in the user profile area write buffer memory of the host DRAM (286 in FIG. 6), step 1032, and then, the request user data is read from the write buffer memory, and is Transfer to the host. The write buffer memory retains the data written by the most recent host. The requested user profile may also be one of four read buffer memories combined for four types of data, namely RA/FA, RA/NFA, NRA/FA, and NRA/NFA, loading user data according to read access, Not necessarily when the host writes data.

步驟1160,當在主機DRAM的四個讀緩衝記憶體之一(第6圖中290、291、292、293)中發現請求的用戶資料,步驟1062,從讀緩衝記憶體中讀取請求用戶資料,並且傳送到主機。Step 1160, when the requested user profile is found in one of the four read buffer memories (290, 291, 292, 293 in FIG. 6) of the host DRAM, step 1062, reading the requested user profile from the read buffer memory. And transferred to the host.

步驟1130、1160,當請求的用戶資料不在五個緩衝記憶體的任何一個中時,步驟1034,從SSD中獲取用戶資料,然後寫入主機DRAM中的用戶資料取消分組緩衝區中。步驟1036,如果用戶資料被分組,執行取消分組進程以使用戶資料取消分組。步驟1038,從用戶資料取消分組緩衝區中讀取未分組用戶資料,並且傳送至主機。取消分組資料被存到四個讀緩衝記憶體中的一個。Steps 1130 and 1160, when the requested user profile is not in any of the five buffer memories, in step 1034, the user profile is obtained from the SSD, and then written into the user profile cancellation packet buffer in the host DRAM. In step 1036, if the user profile is grouped, the ungroup process is performed to ungroup the user profile. Step 1038: Unpacked user data is read from the user data cancellation packet buffer and transmitted to the host. The ungrouped data is stored in one of the four read buffer memories.

第16D圖顯示分頁資料讀過程。步驟1140,當在主機的DRAM(第6圖中232)分頁資料檔案區緩衝記憶體中發現請求的分頁資料時,步驟1042,從緩衝記憶體中讀取請求的分頁資料,並傳送到主機。Figure 16D shows the paging data reading process. Step 1140, when the requested paging data is found in the DRAM (Fig. 6 232) paging data file area buffer memory of the host, in step 1042, the requested paging data is read from the buffer memory and transmitted to the host.

步驟1140,當請求的分頁資料不在緩衝記憶體中,步驟1044,從SSD中獲取分頁資料,並寫入主機DRAM中分頁資料取消分組緩衝區中。步驟1046,如果分頁資料被分組,執行取消分組進程以使分頁資料取消分組。步驟1048,從分頁資料取消分組緩衝區讀取取消分組分頁資料,並傳送到主機。Step 1140: When the requested paging data is not in the buffer memory, in step 1044, the paging data is obtained from the SSD and written into the paging data cancellation packet buffer in the host DRAM. In step 1046, if the paging data is grouped, the ungrouping process is performed to ungroup the paging data. In step 1048, the unpacking page data is canceled from the paging data cancellation packet buffer and transmitted to the host.

第16E圖顯示暫時資料讀過程。步驟1150,當在主機的DRAM(第6圖中288)中虛擬磁碟_01中的暫時資料檔案區緩衝記憶體中發現暫時資料時,步驟1052,從緩衝記憶體中讀取請求的暫時資料,並傳送到主機。Figure 16E shows the temporary data reading process. Step 1150, when temporary data is found in the temporary data file area buffer memory in the virtual disk_01 in the DRAM of the host (280 in FIG. 6), in step 1052, the requested temporary data is read from the buffer memory. And transferred to the host.

步驟1150,當請求的暫時資料不在緩衝記憶體中,步驟1054,從SSD中取出暫時資料,並寫入主機DRAM中的暫時檔案取消分組緩衝區中。步驟1056,如果暫時資料被分組,執行取消分組進程以使暫時資料取消分組。步驟1058,從暫時資料取消分組緩衝區讀取取消分組暫時資料,並傳送到主機。In step 1150, when the requested temporary data is not in the buffer memory, in step 1054, the temporary data is retrieved from the SSD and written into the temporary file cancellation packet buffer in the host DRAM. Step 1056, if the temporary data is grouped, the ungrouping process is performed to ungroup the temporary data. In step 1058, the unpacked temporary data is read from the temporary data cancellation packet buffer and transmitted to the host.

第17A至17B圖表示了元頁組成過程。元頁是一個頁大小的倍數。兩個單獨的元頁用於組成每個資料類型組,一個元頁組成整個頁和第二個元頁組成局部頁。Figures 17A through 17B show the metapage composition process. A metapage is a multiple of a page size. Two separate meta pages are used to form each data type group, and one meta page constitutes the entire page and the second meta page constitutes a partial page.

步驟1202,確定添加到分組資料的新的未分組資料的大小。步驟1204,當新的資料的大小在完整頁大小的512字節之內時,新的資料被認為是一個完整頁。如果新的資料超過一個頁的大小,每一頁都可以單獨處理。In step 1202, the size of the new ungrouped material added to the packet data is determined. In step 1204, when the size of the new material is within 512 bytes of the full page size, the new material is considered to be a complete page. If the new data exceeds the size of one page, each page can be processed separately.

步驟1204,當新資料是一個完整的頁,步驟1206,在當前元頁Z中,可以找到下一個可用的頁位置X,當前元頁Z組成完整頁。步驟1210,新的完整頁被移動到元頁Z內的位置X。步驟1212,相應的組成映射表條目被更新為新添加的資料。主機的資料的LBA,HOST-LBA,資料類型YY00,元頁數目Z,以及元頁Z內的頁位置X被記錄在該條目中。In step 1204, when the new material is a complete page, in step 1206, in the current meta page Z, the next available page position X can be found, and the current meta page Z constitutes a complete page. At step 1210, the new full page is moved to location X within metapage Z. In step 1212, the corresponding composition map entry is updated to the newly added material. The LBA of the host data, the HOST-LBA, the material type YY00, the number of metapages Z, and the page position X in the metapage Z are recorded in the entry.

步驟1208,當元頁Z是滿頁時,步驟1216,元頁Z被寫入到SEED或SSD。步驟1218,主機LBA的組映射表條目,藉由指針SSD-LBA-MF被修改指向SSD中的完整元頁,但是仍表示頁的位置X。最後資料類型位被修改為1以表明是SSD儲存,而不是DRAM儲存,YY01。Step 1208, when the meta page Z is full, in step 1216, the meta page Z is written to the SEED or SSD. In step 1218, the group mapping table entry of the host LBA is modified to point to the complete metapage in the SSD by the pointer SSD-LBA-MF, but still represents the location X of the page. The last data type bit is modified to 1 to indicate SSD storage, not DRAM storage, YY01.

第17B圖表示了將一個新的局部頁分成用於分組局部頁的元頁M。步驟1226,下一個可用的元頁M內用於局部頁資料的位置A(N)是固定的。步驟1220,新的局部頁資料被移動到元頁M開始,即位置A(N)。開銷也隨著新的資料被移動,例如,資料頭。Figure 17B shows the division of a new partial page into a metapage M for grouping partial pages. In step 1226, the location A(N) for the partial page material in the next available metapage M is fixed. In step 1220, the new partial page data is moved to the beginning of the metapage M, position A(N). The overhead is also moved with new data, for example, headers.

步驟1222,組成映射表中的對應條目被更新為最新增加資料。主機中用於新資料的LBA時,HOST-LBA,資料類型YY10,元頁數目M,元頁M內的起始位置A(N),資料長度和開銷被記錄在條目中。第三個資料類型位設置為1以表明是局部頁,而不是一個完整頁。In step 1222, the corresponding entry in the composition mapping table is updated to the latest added data. When the host uses LBA for new data, HOST-LBA, data type YY10, number of metapages M, starting position A(N) in metapage M, data length and overhead are recorded in the entry. The third data type bit is set to 1 to indicate a partial page, not a full page.

步驟1228,當元頁M是滿的,步驟1236,元頁M寫入到SEED或SSD。步驟1238頁主機LBA的組映射表條目,藉由指針SSD-LBA-MP,修改為指向SSD中的局部元頁,且仍然表示起始位置A(N)和長度。最後一個資料類型位改為1,以表明是SSD儲存,YY11。In step 1228, when the metapage M is full, in step 1236, the metapage M is written to the SEED or SSD. Step 1238 shows the group mapping table entry of the host LBA, modified by the pointer SSD-LBA-MP to point to the local metapage in the SSD, and still represents the starting position A(N) and length. Change the last data type bit to 1 to indicate SSD storage, YY11.

第18圖表示了由VMD驅動器加密和壓縮處理過程。第1圖和第2圖中的壓縮解壓縮引擎242,以及加密解密引擎240中可以執行這些功能。當主機寫資料被VMD驅動器100截獲時,檢查檔案的副檔名。音頻、視頻、圖形、資料庫和其他檔案副檔名可能表示資料已經被壓縮,例如,藉由一個用戶程式。步驟510,禁止對檔案檔案副檔名進行壓縮。Figure 18 shows the encryption and compression process by the VMD driver. These functions can be performed in the compression decompression engine 242 in FIGS. 1 and 2, and in the encryption decryption engine 240. When the host write data is intercepted by the VMD driver 100, the file extension is checked. Audio, video, graphics, libraries, and other file extensions may indicate that the data has been compressed, for example, by a user program. In step 510, the file file extension file name is prohibited from being compressed.

步驟512,啟用加密時,步驟514,使用加密密鑰對檔案進行加密。步驟516,在檔案系統中,為這個檔案設置一個加密標誌位。可選地,暫時和分頁資料類型可以不進行加密或解密。Step 512, when encryption is enabled, in step 514, the file is encrypted using an encryption key. In step 516, in the file system, an encryption flag is set for the file. Alternatively, the temporary and paged material types may not be encrypted or decrypted.

步驟518,如果啟用了壓縮,步驟520,檔案被壓縮。步驟522,增加頭檔案(header file),頭檔案具有使用壓縮算法的標識符(identifier)和新資料大小。步驟524,在檔案系統中,為檔案設置壓縮標誌。可選地,暫時和分頁資料類型可以不進行壓縮或解壓縮。Step 518, if compression is enabled, step 520, the file is compressed. In step 522, a header file is added, the header file having an identifier using a compression algorithm and a new data size. Step 524, in the file system, set a compression flag for the file. Alternatively, the temporary and paged material types may not be compressed or decompressed.

第19A至19B圖表示了在SEED中進行備份或交換處理過程。步驟530,當快閃記憶體塊中的已有頁有新資料到達時,步驟532,當快閃記憶體頁可寫時,步驟534,將新的資料寫入到快閃記憶體頁。Figures 19A through 19B show the process of performing backup or exchange in SEED. Step 530, when new data arrives in the existing page in the flash memory block, in step 532, when the flash memory page is writable, in step 534, the new data is written to the flash memory page.

步驟532,當快閃記憶體頁不能被寫時,例如,在塊中,頁在其它的頁之前已經被寫,而快閃記憶體只頁以正向序列方式寫,步驟536,但備用塊可用於塊,步驟538,然後新的資料寫入到SSD DRAM緩衝區194備用塊中的相同頁中。Step 532, when the flash memory page cannot be written, for example, in the block, the page has been written before the other pages, and the flash memory only pages are written in the forward sequence, step 536, but the spare block Available for block, step 538, then new data is written to the same page in the spare block of the SSD DRAM buffer 194.

步驟528,當快閃記憶體頁不能寫,或者沒有可用的備用塊時,新的資料被寫入SSD DRAM緩衝區194中的空備用塊中。處理過程在第19B圖中繼續。步驟540,當其它的空備用塊可用時,處理過程結束。In step 528, when the flash memory page cannot be written, or there is no spare block available, the new data is written to the empty spare block in the SSD DRAM buffer 194. The process continues in Figure 19B. In step 540, when other empty spare blocks are available, the process ends.

步驟540,當沒有更多備用塊可以用時,步驟542,選擇寫的最多,或不經常存取的備用塊。步驟543,所選擇的備用塊中的髒頁結合舊塊中的有效頁被寫入所選擇的備用塊中。步驟546,選擇備用塊中的結合頁被寫入快閃記憶體的空塊中,交換塊。步驟548,所選擇的舊塊被抹除。Step 540, when no more spare blocks are available, step 542, selecting the spare block that is written the most, or not frequently accessed. In step 543, the dirty page in the selected spare block is combined with the valid page in the old block to be written into the selected spare block. In step 546, the combined page in the selected spare block is written into the empty block of the flash memory, and the block is exchanged. At step 548, the selected old block is erased.

第20A至20D圖表示了壞頁和壞塊的檢測和處理過程。在第20A圖中,步驟554,一旦快閃記憶體中的塊被抹除,該物理塊的抹除計數器遞增,根據之前的塊狀態和當前頁狀態,塊的狀態被改變為空塊(000)或帶有壞頁的空塊(100)。壞塊抹除計數表儲存在SSD DRAM緩衝區194,且當DRAM中沒有足夠的空間時,將該表備份到NAND快閃記憶體儲存器196中。壞塊抹除計數表包括每個物理塊的抹除次數,以及塊的狀態。塊狀態可以是一個3位的值,000表示好的空塊,011和111表示壞塊,而100表示有一些壞頁和一些好頁的局部壞塊。Figures 20A through 20D show the detection and processing of bad and bad blocks. In Fig. 20A, in step 554, once the block in the flash memory is erased, the erase counter of the physical block is incremented, and the state of the block is changed to an empty block according to the previous block state and the current page state (000). ) or an empty block with a bad page (100). The bad block erase count table is stored in the SSD DRAM buffer 194, and when there is not enough space in the DRAM, the table is backed up to the NAND flash memory 196. The bad block erase count table includes the number of erases for each physical block and the state of the block. The block state can be a 3-bit value, 000 for good empty blocks, 011 and 111 for bad blocks, and 100 for some bad pages and some good pages for bad blocks.

壞塊抹除計數表更包括跟蹤一個塊內的壞塊的頁狀態表。頁狀態值為000表示好頁,001表示受保護的頁,頁使用100位的二級ECC,而不是一個25位的一級ECC,010表示頁被使用,110表示頁內有垃圾或修剪資料,11X表示壞頁。The bad block erase count table further includes a page status table that tracks bad blocks within a block. The page status value of 000 indicates a good page, 001 indicates a protected page, the page uses a 100-bit secondary ECC, rather than a 25-bit first-level ECC, 010 indicates that the page is used, and 110 indicates that the page has garbage or trim data. 11X indicates a bad page.

在塊被抹除後,檢查塊中每個頁的狀態。步驟556,讀取物理塊的頁狀態表,且當前頁被初始化為0頁。步驟562,當當前頁的狀態是11X時,當前頁已經標記為一個壞頁。此頁不需要進一步處理。步驟560,當當前也沒有超出塊中的最後一頁時,步驟558,當前頁會被遞增到塊中下一頁,且對下一個頁的處理重複步驟562。After the block is erased, check the status of each page in the block. Step 556, reading the page status table of the physical block, and the current page is initialized to 0 pages. Step 562, when the current page status is 11X, the current page has been marked as a bad page. This page does not require further processing. Step 560, when the last page in the block is not currently exceeded, in step 558, the current page is incremented to the next page in the block, and step 562 is repeated for the processing of the next page.

在第20B圖中,塊中的所有物理塊已經處理。步驟564,確定塊中壞頁的數量。步驟566,當塊中壞頁的數量超過門檻值T3時,塊被認為是壞塊。步驟568,在塊壞抹除計數表中,物理塊的塊狀態被修改為011。物理塊將不再使用。步驟570,局部壞塊計數器(BAD_BP_CNT)計數減少,而壞塊計數器計數增加。In Figure 20B, all of the physical blocks in the block have been processed. In step 564, the number of bad pages in the block is determined. Step 566, when the number of bad pages in the block exceeds the threshold value T3, the block is considered to be a bad block. In step 568, in the block bad erase count table, the block state of the physical block is modified to 011. The physical block will no longer be used. At step 570, the local bad block counter (BAD_BP_CNT) count is decreased and the bad block counter count is incremented.

在第20C圖中,步驟562(第20A圖),當前頁之前沒有被標記為壞頁。抹除操作將抹除頁中所有位的值抹除為抹除值,例如1。讀取當前頁中的位元以確定是否所有位元都被抹除。步驟574,獲得一個計數值,計數值為處於未抹除狀態的頁中的位元的數目,如0位元。這些都是錯誤的位元。然而,ECC可以校正這些錯誤,所以如果錯誤位的數目比較小,頁可能仍然是可用的。In Fig. 20C, step 562 (Fig. 20A), the current page is not marked as a bad page before. The erase operation erases the value of all bits in the erased page to an erase value, such as 1. Reads the bits in the current page to determine if all bits have been erased. In step 574, a count value is obtained, the count value being the number of bits in the page in the unerased state, such as 0 bits. These are the wrong bits. However, ECC can correct these errors, so if the number of error bits is small, the page may still be available.

步驟572,當未抹除的位計數小於第一門檻值T1(表示太多錯誤位元,增加了使用這些頁的風險,即使有額外的ECC軟體保護),步驟576,而當前頁狀態需要保護(XX1),然後,頁已經標記為需要ECC二級保護。步驟582,頁狀態修改為需要保護的空白頁(001)。返回第20A圖,處理下一個當前頁。Step 572, when the unerased bit count is less than the first threshold T1 (indicating too many error bits, increasing the risk of using these pages, even if there is additional ECC software protection), step 576, and the current page state needs protection (XX1), then, the page has been marked as requiring ECC secondary protection. At step 582, the page status is modified to a blank page (001) that needs to be protected. Return to Figure 20A to process the next current page.

步驟572,當未抹除的位計數小於第一門檻值T1,步驟576,而當前頁狀態不是一個需要保護的頁(XX1),且頁尚未由二級ECC進行保護。步驟578,當未抹除位元計數大於第二門檻值T2時(表示錯誤位的級別為可能會導致致命錯誤,並需要額外的ECC軟體幫助糾正的錯誤),步驟584,二級ECC計數器計數值增加,步驟582,頁狀態被改為001,當主機資料被儲存在物理頁中時,二級ECC將被用使用。返回第20A圖,處理下一個當前頁。Step 572, when the unerased bit count is less than the first threshold T1, step 576, and the current page state is not a page to be protected (XX1), and the page has not been protected by the secondary ECC. Step 578, when the unerased bit count is greater than the second threshold T2 (indicating that the level of the error bit is an error that may result in a fatal error and requiring additional ECC software to help correct), step 584, secondary ECC counter The value is incremented. In step 582, the page status is changed to 001. When the host data is stored in the physical page, the secondary ECC will be used. Return to Figure 20A to process the next current page.

步驟576,當頁被尚未由二級ECC保護,步驟578,未抹除保護位計數不大於第二門檻值T2,該頁的狀態為好頁。第一級ECC是足以校正當前頁中可能產生的錯誤的。步驟580,如果它尚未被標記為一個好頁,頁的狀態被改變為000。返回第20A圖,處理下一個當前頁。In step 576, when the page has not been protected by the secondary ECC, step 578, the unerased protection bit count is not greater than the second threshold T2, and the status of the page is a good page. The first level of ECC is sufficient to correct errors that may occur in the current page. Step 580, if it has not been marked as a good page, the state of the page is changed to 000. Return to Figure 20A to process the next current page.

在第20D圖中,步驟572(第20C圖),當前頁有超過第一門檻值T1的未抹除位元。超過T1門檻值表示該頁中為未抹除位超過第二級別的ECC可以校正的數目。頁是壞的,不能夠安全地使用。In Fig. 20D, step 572 (Fig. 20C), the current page has unerased bits that exceed the first threshold T1. Exceeding the T1 threshold indicates the number of ECCs that can be corrected for the unerased bits in the page that exceed the second level. The page is bad and cannot be used safely.

步驟586,當塊(1XX)中的物理塊的狀態是壞頁,在壞塊抹除計數表中,塊已被標記為壞頁塊。在塊中還有其它的壞頁,並沒有塊狀態需要改變。然而,步驟592,藉由在頁狀態表中改變頁狀態為11X,當前頁被標記為一個壞頁。步驟594,壞頁計數器增加,返回第20A圖,處理下一個當前頁。In step 586, when the state of the physical block in the block (1XX) is a bad page, in the bad block erase count table, the block has been marked as a bad page block. There are other bad pages in the block, and no block state needs to be changed. However, in step 592, the current page is marked as a bad page by changing the page state to 11X in the page status table. In step 594, the bad page counter is incremented, returning to Figure 20A to process the next current page.

步驟586,當物理的狀態塊不是1XX時,在壞塊擦抹除計數表中,塊還沒有被標記為局部壞塊。在這個塊中已經沒有其它的壞塊。步驟588,在塊抹除計數表164,塊的狀態被改為具有壞塊(100)的空塊。步驟590,局部壞塊計數器(BAD_BP_CNT)增加。此外,步驟592,藉由在頁狀態表中更改頁狀態為11X,將前頁標記為壞頁。步驟594,壞頁計數器增加,返回第20A圖,處理下一個當前頁。In step 586, when the physical status block is not 1XX, the block has not been marked as a local bad block in the bad block erasure count table. There are no other bad blocks in this block. In step 588, at the block erase count table 164, the state of the block is changed to an empty block having a bad block (100). In step 590, the local bad block counter (BAD_BP_CNT) is incremented. Further, in step 592, the previous page is marked as a bad page by changing the page state to 11X in the page status table. In step 594, the bad page counter is incremented, returning to Figure 20A to process the next current page.

SSD可能包含許多快閃記憶體芯片(例如,16快閃記憶體芯片)。可能會遇到某些特殊情況,例如,當快閃記憶體芯片的一個層是壞的或整個芯片都是壞的。如果是過度配置,SSD的快閃記憶體容量可以吸收一個完整層的容量損失或整個快閃記憶體芯片的容量損失。設備控制器的特別算法可以被用來忽略損失,例如,以恢復資料,然後調整快閃記憶體設備的元頁單元的大小以避免層錯誤或芯片錯誤。過度配置也可以藉由使用空閒芯片代替故障芯片實現。SSDs may contain many flash memory chips (eg, 16 flash memory chips). Some special cases may be encountered, for example, when one layer of the flash memory chip is bad or the entire chip is bad. In the case of over-provisioning, the SSD's flash memory capacity can absorb a full layer of capacity loss or loss of capacity of the entire flash memory chip. The special algorithm of the device controller can be used to ignore the loss, for example, to recover the data, and then adjust the size of the metapage unit of the flash memory device to avoid layer errors or chip errors. Over-provisioning can also be achieved by using a free chip instead of a faulty chip.

第21A至21B圖表示了快閃記憶體塊使用第13A圖中的表進行刷新操作。當刷新啟動,例如,定期(每週一次等),步驟602,獲得當前日期。步驟604,現行塊被設置成第一個塊,步驟608,如果塊不是壞塊,然後,步驟610,從壞塊抹除計數表讀取塊抹除計數和塊寫入日期。步驟612,計算從上次寫到當前日期的天數,例如,從當前日期減去上次寫日期。步驟614,當上次寫到當前日期的天數超過保留時間時,然後,在步驟618中,塊中的所有有效頁被移動到備用塊中的空白頁,並與其它之前刷新的塊中的頁一起打包。Figures 21A through 21B show the flash memory block using the table in Figure 13A for the refresh operation. When the refresh is initiated, for example, periodically (once a week, etc.), step 602, the current date is obtained. In step 604, the current block is set to the first block, and in step 608, if the block is not a bad block, then, in step 610, the block erase count and the block write date are read from the bad block erase count table. Step 612, calculating the number of days from the last write to the current date, for example, subtracting the last written date from the current date. Step 614, when the number of days of the last write to the current date exceeds the retention time, then, in step 618, all valid pages in the block are moved to the blank page in the spare block, and to pages in other previously refreshed blocks. Packed together.

在第21B圖中,步驟620,當DRAM中的備用塊填滿時,DRAM中的備用塊的資料被移動到快閃記憶體中具有最低的抹除計數的備用塊中。步驟624,舊的快閃記憶體塊被抹除。步驟628,當有更多的塊需要處理時,步驟630,現行塊推進到下一個塊。In Fig. 21B, in step 620, when the spare block in the DRAM fills up, the data of the spare block in the DRAM is moved to the spare block in the flash memory having the lowest erase count. In step 624, the old flash memory block is erased. In step 628, when there are more blocks to process, in step 630, the current block advances to the next block.

第22圖表示了在主機上執行的內部清理操作。內部清理操作可以在主機的一些檔案或者全部檔案上執行。選擇一個檔案,步驟650,獲得檔案的最後存取日期。步驟652,使用當前日期計算該檔案上次存取以來的天數。步驟654,當天數少於清潔門檻值,步驟656,該檔案將被跳過,而選擇下一個檔案。步驟654,當檔案的上次存取以來的天數超過清潔門檻值時,步驟658,如果檔案類型是暫時檔案,日誌或分頁,該檔案將被刪除,且配置了自動清理。步驟670,可以提示以及詢問用戶是否刪除檔案,如果用戶響應是,則刪除該檔案。步驟672,如果用戶沒有選擇刪除檔案,重複檔案搜索和檔案刪除,直到選擇下一個內部清除檔案。Figure 22 shows the internal cleanup operations performed on the host. Internal cleanup operations can be performed on some or all of the host's files. Select an archive, step 650, to obtain the last access date of the archive. Step 652, using the current date to calculate the number of days since the file was last accessed. In step 654, the number of days is less than the cleaning threshold. In step 656, the file will be skipped and the next file selected. Step 654, when the number of days since the last access of the file exceeds the cleaning threshold, step 658, if the file type is a temporary file, log or page, the file will be deleted and automatic cleaning is configured. In step 670, the user can be prompted and asked whether to delete the file. If the user responds, the file is deleted. Step 672, if the user does not choose to delete the file, repeat the file search and file deletion until the next internal clear file is selected.

第23圖表示了SEED SSD從主機接收的日誌檔案。步驟674,當SEED從主機接收到一個日誌檔案,SEED將日誌檔案移動到日誌分組表中。步驟676,任何元資料相關的日誌檔案被轉移到元資料緩衝記憶體。步驟678,完成標誌從SEED發送回主機以表明日誌檔案已經成功寫入。Figure 23 shows the log file that the SEED SSD receives from the host. Step 674, when the SEED receives a log file from the host, the SEED moves the log file into the log grouping table. In step 676, any metadata related log files are transferred to the metadata buffer memory. In step 678, the completion flag is sent back from the SEED to the host to indicate that the log file has been successfully written.

步驟680,當日誌表已滿,步驟682,將日誌分組表寫入快閃記憶體。Step 680, when the log table is full, in step 682, the log grouping table is written to the flash memory.

第24圖是主機向SEED SSD DRAM緩衝記憶體寫資料之流程圖。當主機資料寫入到SSD DRAM緩衝區194時,步驟684,啟動1鍵或標誌位連同它的LBA位址,序列號,和資料校驗和被寫入到日誌分組表中。步驟681,產生寫資料校驗和。在寫資料實際移動之前,日誌先寫入。步驟686,主機寫資料是元頁形式,且元頁資料被轉移到相關的緩衝記憶體。步驟688,各種元資料表,如FAT,FDB,分組表,壓縮表,和其他元資料表被轉移到SSD DRAM緩衝區194中相關的ETL表區域。步驟685,如果發現同一LBA具有舊的序列號,但LBA沒有發現具有commit2標誌的日誌,記錄abort1標識。新的資料將覆蓋同一個LBA位址的舊資料。舊資料不寫入快閃記憶體。步驟690,當日誌表滿了,步驟692,將日誌分組表寫到快閃記憶體。Figure 24 is a flow chart of the host writing data to the SEED SSD DRAM buffer memory. When the host data is written to the SSD DRAM buffer 194, in step 684, the enable 1 key or flag bit along with its LBA address, serial number, and data checksum are written to the log packet table. In step 681, a write data checksum is generated. The log is written first before the actual data movement is written. In step 686, the host writes the data in the form of a metapage, and the metapage data is transferred to the associated buffer memory. In step 688, various metadata tables, such as FAT, FDB, grouping table, compressed table, and other metadata tables are transferred to the associated ETL table area in the SSD DRAM buffer 194. In step 685, if the same LBA is found to have the old serial number, but the LBA does not find the log with the commit2 flag, the abort1 identifier is recorded. The new data will cover the old data of the same LBA address. Old data is not written to flash memory. Step 690, when the log table is full, in step 692, the log grouping table is written to the flash memory.

第25圖表示了從SEED 中DRAM緩衝記憶體向快閃記憶體寫之流程圖。當SEED從SSD DRAM緩衝194向NAND快閃記憶體196傳輸資料時,步驟694,START2鍵或標誌被寫入到日誌分組表。步驟696,寫入快閃記憶體的資料以元頁形式表示。步驟698,各種元資料表,例如,如分組表,壓縮表和其它元資料表,將從SSD DRAM緩衝194相關的ETL表區域轉移到快閃記憶體。步驟695,commit2標誌被記錄到日誌分組表。步驟699,當日誌表已滿時,步驟697,日誌分組表被寫入到快閃記憶體中。「START1」標誌記錄開始向DRAM資料移動,而「START2」記錄開始將資料寫入到快閃記憶體,「commit2」記錄完成向DRAM資料移動,「abort1」記錄同一LBA位置的資料被新的資料覆蓋。Figure 25 shows a flow chart for writing from DRAM buffer memory to flash memory in SEED. When the SEED transfers data from the SSD DRAM buffer 194 to the NAND flash memory 196, in step 694, the START2 key or flag is written to the log packet table. In step 696, the data written to the flash memory is represented in the form of a metapage. Step 698, various metadata tables, such as grouping tables, compression tables, and other metadata tables, are transferred from the ETL table area associated with the SSD DRAM buffer 194 to the flash memory. In step 695, the commit2 flag is recorded to the log grouping table. Step 699, when the log table is full, in step 697, the log grouping table is written into the flash memory. The "START1" mark record starts to move to the DRAM data, and the "START2" record starts to write data to the flash memory, the "commit2" record completes the movement to the DRAM data, and the "abort1" record the same LBA position data is added to the new data. cover.

第26圖表示了主機上電源斷電順序之流程圖。步驟1302,當主機電源掉電後,而且主機沒有備用電源的主機時,步驟1306,協議命令用來通知SEED或SSD檢測到電源故障。步驟1308,主機刷新暫存器和CPU緩衝記憶體,緩衝記憶體,SEED SSD虛擬磁碟。系統提供電源以幫助完成向SEED SSD的資料刷新。Figure 26 shows a flow chart of the power down sequence on the host. Step 1302: When the host power supply is powered off, and the host does not have a standby power host, in step 1306, the protocol command is used to notify the SEED or the SSD that the power failure is detected. Step 1308, the host refreshes the scratchpad and the CPU buffer memory, the buffer memory, and the SEED SSD virtual disk. The system provides power to help complete the data refresh to the SEED SSD.

步驟1302,當可以獲取備用電源時,步驟1304,協議命令用來通知SEED或SSD檢測到電源斷電。步驟1308,主機將元資料緩衝記憶體和資料寫緩衝記憶體刷新到SSD。由於發生可控制的電源斷電,CPU暫存器,其它的緩衝記憶體和虛擬磁碟將不被刷新,主機將保留重要資料。步驟1310,主機向SSD發送協議命令以表示資料被刷新。Step 1302: When the backup power source can be obtained, in step 1304, the protocol command is used to notify the SEED or the SSD that the power supply is powered off. Step 1308, the host refreshes the metadata buffer memory and the data write buffer memory to the SSD. Due to the controllable power outage, the CPU scratchpad, other buffer memory and virtual disk will not be refreshed, and the host will retain important data. In step 1310, the host sends a protocol command to the SSD to indicate that the data is refreshed.

第27圖表示了SEED電源斷電處理之流程圖。步驟1312,當主機向SEED發送協議命令,SEED退出垃圾收集,步驟1314,繼續接收來自主機的資料,並且同時開始將資料備用或交換DRAM塊中的資料、元資料緩衝記憶體中的資料以及向資料寫緩衝記憶體的資料刷新到快閃記憶體。步驟1316,一旦主機資料刷新完成,步驟1318,SEED不再刷新DRAM中的任何暫時檔案或分頁檔案資料,標記任何FDB條目為廢棄的,清除任何FAT條目,以及標記將壞頁表中的頁標記為垃圾。步驟1320步,將ETL表和資料被刷新到快閃記憶體。步驟1322,記錄S.M.A.R.T.監控訊息以及正常斷電狀態。Figure 27 shows the flow chart of the SEED power supply shutdown process. Step 1312: When the host sends a protocol command to the SEED, the SEED exits the garbage collection. In step 1314, the data from the host continues to be received, and at the same time, the data in the DRAM block is exchanged or exchanged, and the data in the metadata buffer memory and the direction are started. The data of the data write buffer memory is refreshed to the flash memory. Step 1316, once the host data refresh is complete, in step 1318, the SEED no longer refreshes any temporary files or paging archives in the DRAM, marks any FDB entries as obsolete, clears any FAT entries, and marks the page markers in the bad page table. For garbage. In step 1320, the ETL table and data are flushed to the flash memory. At step 1322, the S.M.A.R.T. monitoring message and the normal power down state are recorded.

第28圖是SEED電源故障處理之流程圖。當主機向SEED發送電源故障協議命令時,步驟1332,SEED退出垃圾收集,並接收各種主機寫入預設快閃記憶體區域的刷新資料。Figure 28 is a flow chart of SEED power failure handling. When the host sends a power failure protocol command to the SEED, in step 1332, the SEED exits the garbage collection and receives the refresh data written by the various hosts to the preset flash memory area.

步驟1334,SSD DRAM緩衝區194的刷新資料區接收從主機刷新的CPU的暫存器和緩衝記憶體的資料,然後寫入到預定的快閃記憶體區域。步驟1336,刷新資料區域接收從主機的緩衝記憶體刷新資料,然後將資料寫入到預定的快閃記憶體區域。步驟1338,刷新資料區域接收從主機接收的虛擬磁碟刷新資料,然後將資料寫入預定的快閃記憶體區域。Step 1334, the refresh data area of the SSD DRAM buffer 194 receives the data of the scratchpad and buffer memory of the CPU refreshed from the host, and then writes to the predetermined flash memory area. In step 1336, the refresh data area receives the refresh data from the buffer memory of the host, and then writes the data to the predetermined flash memory area. In step 1338, the refresh data area receives the virtual disk refresh data received from the host, and then writes the data into the predetermined flash memory area.

步驟1339,來自SSD DRAM緩衝區194用於備用或交換DRAM塊,用戶資料,壞頁狀態表,ETL資料和ETL表的資料被寫入快閃記憶體中的預設區域。步驟1324,記錄S.M.A.R.T.監控訊息以及非正常斷電狀態。In step 1339, the data from the SSD DRAM buffer 194 for the spare or swap DRAM block, the user data, the bad page status table, the ETL data, and the ETL table are written to the preset area in the flash memory. At step 1324, the S.M.A.R.T. monitoring message and the abnormal power down state are recorded.

第29A至29B圖表示了使用第13B圖中的表進行快閃記憶體頁刷新操作之流程圖。當刷新啟動,例如定期(每週一次等),步驟603,獲得當前日期。現行塊和頁被設置為第一塊,第一頁。步驟605,現行塊的保留時間被計算為現行塊的抹除次數的函數。例如,具有低抹除計數的塊可能有一個更長的保留時間。Figures 29A through 29B show a flow chart for performing a flash memory page refresh operation using the table in Figure 13B. When the refresh is initiated, for example, periodically (once a week, etc.), step 603, the current date is obtained. The current block and page are set to the first block, the first page. In step 605, the retention time of the current block is calculated as a function of the number of erasures of the current block. For example, a block with a low erase count may have a longer retention time.

步驟609,當當前頁是一個有效的使用頁時,步驟611,讀頁狀態表以獲取頁寫日期。在步驟613中,計算上次寫以來的天數,例如,當前的日期減去頁的寫日期。步驟615,當天數超過了保留時間,步驟619,當前頁的內容被移動到備用塊中的空頁中,並與其它的需要刷新的頁一起打包。Step 609, when the current page is a valid use page, in step 611, the page status table is read to obtain the page write date. In step 613, the number of days since the last write is calculated, for example, the current date minus the date written by the page. In step 615, the number of days exceeds the retention time. In step 619, the content of the current page is moved to an empty page in the spare block and packaged with other pages that need to be refreshed.

在第29B圖中,步驟621,當DRAM中的備用塊是滿的時,DRAM備用塊中的資料塊被移動到快閃記憶體中具有最低的抹除計數的備用塊中。步驟625,舊的快閃記憶體塊被抹除。步驟617,當現行塊中有更多的頁需要處理時,步驟623,當前頁被推進到下一個頁。在步驟629,當現行塊中有更多的塊需要處理時,步驟631,當前頁被推進到下一個塊。In Fig. 29B, in step 621, when the spare block in the DRAM is full, the data block in the DRAM spare block is moved to the spare block in the flash memory having the lowest erase count. At step 625, the old flash memory block is erased. In step 617, when there are more pages in the current block to process, in step 623, the current page is advanced to the next page. At step 629, when there are more blocks in the current block to process, in step 631, the current page is advanced to the next block.

第30A至30B圖表示了第30A圖中頁寫過程中的壞頁管理過程。當一個頁被寫入到快閃記憶體儲存器時,步驟1440,讀取頁狀態表,頁不是一個壞頁,而是一個空頁。步驟1442,當頁狀態是受保護的XX1,步驟1452,為頁產生第二級別的錯誤校正碼,ECC2。步驟1454,驗證寫資料,步驟1456,當資料小於錯誤發生門檻值T1,步驟1458,在頁狀態表中將頁狀態寫成011,即一個使用狀態的受保護的頁。Figures 30A to 30B show the bad page management process in the page writing process in Fig. 30A. When a page is written to the flash memory, step 1440, the page status table is read, the page is not a bad page, but an empty page. Step 1442, when the page state is protected XX1, step 1452, generates a second level of error correction code, ECC2, for the page. Step 1454, verifying the write data, step 1456, when the data is smaller than the error occurrence threshold T1, step 1458, the page status is written as 011 in the page status table, that is, a protected page of the use status.

步驟1442,當頁狀態不是受保護狀態XX1,步驟1444,驗證寫資料,步驟1446,當小於錯誤發生門檻值T1時,步驟1448,且當小於錯誤發生門檻值T2時,步驟1450,在頁狀態表中將頁狀態寫成010,即一個使用狀態的頁。在步驟1448中,當檢測到超過T2個錯誤時,步驟1452,產生第二級ECC2,而所述頁成為一個受保護的頁。Step 1442, when the page state is not protected state XX1, step 1444, verify write data, step 1446, when less than the error occurrence threshold T1, step 1448, and when less than the error occurrence threshold T2, step 1450, in page state The page state is written as 010, a page that uses the state. In step 1448, when more than T2 errors are detected, in step 1452, a second level of ECC2 is generated and the page becomes a protected page.

當超過T1個錯誤發生在步驟1446或1456中時,第30B圖中的處理過程繼續。步驟587,當塊狀態讀為1XX,塊是具有壞頁的塊,步驟593,而在頁表中,頁狀態被寫為11X,所述頁為壞頁。步驟595,壞頁計數增加,步驟599,且定位一個新的空頁用於接收位於主機寫入資料。When more than T1 errors occur in step 1446 or 1456, the processing in FIG. 30B continues. In step 587, when the block status is read as 1XX, the block is a block with a bad page, step 593, and in the page table, the page status is written as 11X, which is a bad page. In step 595, the bad page count is incremented, step 599, and a new empty page is located for receiving data written at the host.

在步驟587,當資料塊狀態讀不是1XX,步驟589,則在壞塊抹除計數表中,將該塊的狀態修改1XX。步驟591,具有壞頁的塊(BP)的計數器增加,步驟593,所述頁狀態修改為11X。At step 587, when the chunk status read is not 1XX, step 589, the state of the block is modified 1XX in the bad block erase count table. In step 591, the counter of the block (BP) with the bad page is incremented, and in step 593, the page state is modified to 11X.

第31A至30B圖表示了後端垃圾收集過程。當後端垃圾收集過程週期性地觸發時,步驟1460,檢查壞塊抹除計數表中的每個塊條目,以定位垃圾頁,所述頁包含丟棄的修剪過或過時的資料。步驟1462,當塊狀態是X10,塊具有垃圾頁,步驟1464,為塊讀取頁狀態表並計算垃圾頁的數量。步驟1466,當垃圾頁的數量超過門檻值TP時,步驟1468,塊中使用過(不是垃圾,010和011)的頁被移動到從空塊池中選擇的空塊中,空塊最有最低抹除計數次數。步驟1470,具有垃圾頁的塊被抹除,壞塊抹除計數表和頁狀態表被更新以顯示抹除狀態。Figures 31A through 30B illustrate the backend garbage collection process. When the backend garbage collection process is triggered periodically, step 1460, each block entry in the bad block erase count table is checked to locate a junk page that contains discarded pruned or outdated material. Step 1462, when the block status is X10, the block has a junk page, step 1464, the page status table is read for the block and the number of junk pages is calculated. Step 1466, when the number of garbage pages exceeds the threshold TP, in step 1468, the pages used in the block (not garbage, 010 and 011) are moved to the empty blocks selected from the empty block pool, and the empty block has the lowest Erase the number of counts. At step 1470, the block with the junk page is erased, and the bad block erase count table and the page status table are updated to display the erase status.

在第31B圖中,步驟1472,為最低抹除計數塊創建來自空塊池的塊列表。步驟1474,讀取每個塊的抹除計數,步驟1480,當一個非空的塊的抹除計數小於門檻值TE時,將資料從低抹除計數塊移動到最高抹除計數塊。步驟1482,門檻值可以增加。將很長時間沒有更新的舊資料移動到更耐磨損的塊,所以更耐磨損的塊可以接收更少的更新,為以後的寫/抹除週期釋放一個低抹除計數塊。In Figure 31B, step 1472, a list of blocks from the empty block pool is created for the lowest erase count block. Step 1474, reading the erase count for each block, step 1480, when the erase count of a non-empty block is less than the threshold TE, moving the data from the low erase count block to the highest erase count block. At step 1482, the threshold value can be increased. Moving old data that has not been updated for a long time to a more wear-resistant block, so more wear-resistant blocks can receive fewer updates, releasing a low erase count block for future write/erase cycles.

第32圖表示了主機VMD初始化之流程圖。當主機操作系統啟動過程完成後,步驟1500,主機進行檢查,看是否啟用VMD。步驟1502如果啟用,主機加載和執行VMD應用程式180。在步驟1504,VMD應用程式設置緩衝記憶體的元資料和表,步驟1506,為暫時資料設置虛擬磁碟_01。步驟1508,為分頁資料設置緩衝記憶體,步驟1510,為寫資料建立緩衝記憶體。Figure 32 shows a flow chart of host VMD initialization. After the host operating system startup process is completed, in step 1500, the host checks to see if the VMD is enabled. Step 1502, if enabled, the host loads and executes the VMD application 180. In step 1504, the VMD application sets the metadata and table of the buffer memory, and in step 1506, sets the virtual disk_01 for the temporary data. Step 1508, setting a buffer memory for the paging data, and in step 1510, creating a buffer memory for writing the data.

步驟1518,設立瀏覽器資料的虛擬磁碟_02,步驟1516,設立用戶應用程式的虛擬磁碟_03。步驟1514,將刷新到SEED DRAM的刷新資料區域或者快閃記憶體中的資料加載到這些緩衝記憶體和虛擬磁碟。步驟1512,為FA,RA組合建立四個讀資料緩衝記憶體。In step 1518, the virtual disk _02 of the browser data is set up, and in step 1516, the virtual disk _03 of the user application is set up. In step 1514, the data refreshed into the refresh data area of the SEED DRAM or the flash memory is loaded into the buffer memory and the virtual disk. In step 1512, four read data buffer memories are created for the FA, RA combination.

第33A至33B圖是SSD初始化之流程圖。步驟1522,從快閃記憶體加載SSD韌體和並執行SSD韌體。步驟1524,韌體為元資料和表格建立緩衝記憶體,步驟1526,為暫時資料建立緩衝記憶體,步驟1528,為分頁資料建立緩衝記憶體,步驟1530,為寫入資料建立緩衝記憶體。步驟1532,當發生異常斷電前,執行額外的步驟,如第33B圖。Figures 33A through 33B are flow diagrams of SSD initialization. In step 1522, the SSD firmware is loaded from the flash memory and the SSD firmware is executed. In step 1524, the firmware creates a buffer memory for the metadata and the table. In step 1526, a buffer memory is created for the temporary data. In step 1528, a buffer memory is created for the paging data. In step 1530, a buffer memory is created for writing the data. In step 1532, additional steps are performed, such as Figure 33B, before an abnormal power outage occurs.

步驟1534,讀快閃記憶體預設區域,將資料寫入SSD DRAM緩衝194的備用或交換,用戶資料,壞頁和狀態表,ETL資料和ETL表。步驟1535,緩衝記憶體和虛擬磁碟加載從快閃記憶體的刷新資料區域獲取的刷新資料。步驟1533,抹除快閃記憶體的預設區域,以為另一個異常斷電的發生提供空間。Step 1534, reading the flash memory preset area, writing data to the SSD DRAM buffer 194 for backup or exchange, user data, bad page and status table, ETL data and ETL table. In step 1535, the buffer memory and the virtual disk load the refresh data obtained from the refresh data area of the flash memory. In step 1533, the preset area of the flash memory is erased to provide space for another abnormal power outage.

第34圖是一個清理日誌區之流程圖。流程在插入檢查點日誌之後執行。步驟1536,選擇一個檢查序列號,步驟1538,將序列號與用於清理目的插入的檢查點序列號相比。步驟1538,當序列號在檢查點之前,步驟1540,對這個序列記錄Commit2標誌,步驟1544,由於序列的資料被成功提交到快閃記憶體,與該序列號相關的所有日誌記錄被刪除。步驟1542,當序列具有abort1標誌記錄時,步驟1544,刪除所有與該序列號相關的的日誌,因為原來的LBA資料被在DRAM中較大的序列號的資料覆蓋,且不再需要移動到快閃記憶體。步驟1546,當在檢查點之前,沒有更多的序列號檢查時,步驟1548,檢查點的日誌被刪除。Figure 34 is a flow chart of the cleanup log area. The process is executed after the checkpoint log is inserted. In step 1536, a check serial number is selected, step 1538, and the serial number is compared to the checkpoint serial number used for the cleaning purpose insertion. Step 1538, when the serial number is before the checkpoint, step 1540, the Commit2 flag is recorded for the sequence, step 1544, since the sequence data is successfully submitted to the flash memory, all log records associated with the serial number are deleted. Step 1542, when the sequence has an abort1 flag record, step 1544, delete all logs related to the sequence number, because the original LBA data is covered by the larger serial number data in the DRAM, and no longer needs to be moved to fast. Flash memory. In step 1546, when there are no more serial number checks before the checkpoint, in step 1548, the log of the checkpoint is deleted.

第35圖顯示了在下次上電時,SSD上執行的一個異常電源關閉檢查。步驟1550,掃描選定的序列號的日誌。步驟1556,當發現commit2標誌時,或者,步驟1558,發現abort1的標誌位時,步驟1569,該序列號相關的日誌被刪除。如果保留了額外的序列號,步驟1552,選擇另一個序列號,重複該處理過程。Figure 35 shows an abnormal power-off check performed on the SSD at the next power-up. At step 1550, the log of the selected serial number is scanned. Step 1556, when the commit2 flag is found, or, in step 1558, when the flag of abort1 is found, in step 1569, the log associated with the serial number is deleted. If an additional serial number is reserved, step 1552, another serial number is selected and the process is repeated.

步驟1556、1558,當既不是commit2,也不是abort1標誌被發現,步驟1560,而是start2標誌被發現,步驟1564,那麼讀取LBA資料,產生一個校驗和並且與儲存的日誌校驗和比較。步驟1568,當校驗和匹配時,與此序列號相關的日誌被刪除,步驟1569,儘管電源異常關閉,資料卻被正確地寫入。Steps 1556, 1558, when neither the commit2 nor the abort1 flag is found, step 1560, but the start2 flag is found, step 1564, then the LBA data is read, a checksum is generated and compared to the stored log checksum. . In step 1568, when the checksum matches, the log associated with the serial number is deleted. In step 1569, although the power is abnormally turned off, the data is correctly written.

步驟1568,沒有匹配的校驗和出現時,或者,步驟1560,START2標誌沒有發現,步驟1562,那麼在異常斷電期間,與這個序列相關的LBA被報告給主機作為一個失敗的寫資料。步驟1569,此序列號相關的日誌將被刪除,在步驟1552,如果額外的序列號被保留,那麼選擇另一個序列號,並重複該處理。Step 1568, when no matching checksum occurs, or, at step 1560, the START2 flag is not found, step 1562, then during the abnormal power down, the LBA associated with the sequence is reported to the host as a failed write. In step 1569, the log associated with the serial number will be deleted. In step 1552, if the additional serial number is retained, another serial number is selected and the process is repeated.

第36圖顯示了在下次上電時,主機上執行的異常電源關閉檢查。步驟1580,從SSD中接收並讀取失敗的資料寫列表以及他們的LBA位置(步驟1562),步驟1582,並且選擇列表中失敗的LBA。步驟1584,將日誌表中的業務號碼與LBA相比,以確定他們是否是相關的。步驟1586,當LBA是無關的,列表中的另一個LBA,步驟1582,可能會被選中。步驟1586,當LBA是相關的,步驟1588,並且發現commit標誌,那麼重做該業務。步驟1592,檢查寫業務日誌中的每個LBA,並與日誌中新資料記錄一起並更新。步驟1588,沒有發現commit標誌時,則撤銷該業務。步驟1590,寫業務日誌中,檢查每個LBA,並且與日誌中記錄的舊資料一起被更新,步驟1594,當更多的失敗LBA留在列表中時,步驟1582,然後列表中的另一個LBA可能被選中。Figure 36 shows the abnormal power-off check performed on the host at the next power-up. Step 1580, receiving and reading the failed data write list and their LBA location from the SSD (step 1562), step 1582, and selecting the failed LBA in the list. In step 1584, the service numbers in the log table are compared to the LBA to determine if they are relevant. Step 1586, when the LBA is irrelevant, another LBA in the list, step 1582, may be selected. Step 1586, when the LBA is related, step 1588, and the commit flag is found, then the service is redone. In step 1592, each LBA in the write service log is checked and updated along with the new data record in the log. In step 1588, when the commit flag is not found, the service is revoked. Step 1590, in the write service log, checks each LBA and is updated along with the old data recorded in the log, step 1594, when more failed LBAs remain in the list, step 1582, then another LBA in the list May be selected.

可選實施方式Optional implementation

本發明所考慮的其它幾個實施例。已經描述了移動一個完整的元頁到SEED、SSD,或快閃記憶體,在完全被填滿前,一個幾乎滿的元頁可以移動。因此,滿可以是參考一些門檻值的滿,例如,可以是元頁大小減去512個字節。Several other embodiments contemplated by the present invention. It has been described to move a full meta page to SEED, SSD, or flash memory, and an almost full meta page can be moved before it is completely filled. Therefore, full can refer to the fullness of some threshold values, for example, it can be the metapage size minus 512 bytes.

資料類型位元和其它狀態字段的多種編碼,指針等是可能的。資料類型狀態位元不需要在條目的第一位元。條目可以與其它表中的條目鏈接,如一個用於標籤或者有效位的單獨的表。暫時檔案可以有多種副檔名,並且新的副檔名可以被添加到列表中以進行搜索。由知名的程式創建的暫時檔案有知名的檔案副檔名,例如,字處理軟體和網際網路瀏覽器,而且,可以隨時添加額外的副檔名。這些額外的檔案檔案副檔名,可以藉由韌體更新添加到SEED和SSD控制器的控制軟體,或藉由軟體更新到VMD應用180和VMD驅動器100。Multiple encodings, pointers, etc. of data type bits and other status fields are possible. The data type status bit does not need to be in the first bit of the entry. Entries can be linked to entries in other tables, such as a separate table for tags or valid bits. Temporary files can have multiple extensions, and new extensions can be added to the list for searching. Temporary files created by well-known programs have well-known file extensions, such as word processing software and Internet browsers, and you can add additional extensions at any time. These additional archive file extensions can be added to the SEED and SSD controller's control software via firmware updates, or updated to the VMD application 180 and VMD driver 100 via software.

ETL的每一部分所使用的DRAM緩衝器的大小可以被SSD控制器的韌體固定。基於用戶的使用或偏好,每一部分的ETL更可以由控制器韌體自動或手動的動態調整。由於DRAM緩衝區大小的限制,並非所有的ETL功能在同一時間被DRAM緩衝區容納。各種ETL功能可以適應實際工作環境。控制器可以被每個ETL調整大小以優化DRAM緩衝區。基於設備的使用模式,可以定期進行自適應調整。The size of the DRAM buffer used by each part of the ETL can be fixed by the firmware of the SSD controller. Based on the user's usage or preferences, each part of the ETL can be dynamically adjusted automatically or manually by the controller firmware. Due to the limitation of the DRAM buffer size, not all ETL functions are accommodated by the DRAM buffer at the same time. Various ETL functions can be adapted to the actual working environment. The controller can be resized by each ETL to optimize the DRAM buffer. Adaptive adjustments can be made periodically based on the device usage pattern.

對於TLC快閃記憶體設備,DRAM緩衝區可以使用NVRAM取代,例如,相位變化記憶體(phase-change memory,PCM),鐵電隨機存取記憶體(ferroelectric random-access memory,FRAM),磁阻記憶體(Magnetoresistive RAM,MRAM),憶阻器(memristor),PRAM,電阻記憶體(Resistive RAM,RRAM),賽道記憶體和奈米記憶體(nano RAM,NRAM)等。NVRAM的優勢是所有的ETL支持表等可以保留在NVRAM中(沒有必要放在快閃記憶體中),且其它的快閃記憶體目標資料(如資料寫緩衝記憶體等)頁可以保留,即使電源關閉,因為即使電源突然關閉時,也不需要備用電源電路。暫時映射表,讀取緩衝記憶體映射表可以選擇在電源關閉時或在下次上電初始化時丟棄。除MLC以外,NVRAM缺點是成本。對於MLC,缺點是速度慢,且受寫入或抹除次數的限制。藉由分配部分只具有很強的編程頁的TLC,可以從TLC中獲取MLC。在SEED 200中,ETL的一些功能可以在一個SRAM中被實現。For TLC flash memory devices, DRAM buffers can be replaced with NVRAM, for example, phase-change memory (PCM), ferroelectric random-access memory (FRAM), and magnetoresistance. Memory (Magnetoresistive RAM, MRAM), memristor, PRAM, Resistive RAM (RRAM), track memory and nano memory (NRAM). The advantage of NVRAM is that all ETL support tables can be kept in NVRAM (not necessary in flash memory), and other flash memory target data (such as data write buffer memory) pages can be retained even if The power is turned off because there is no need for a backup power circuit even when the power is suddenly turned off. Temporary mapping table, read buffer memory mapping table can choose to discard when the power is off or during the next power-on initialization. In addition to MLC, the disadvantage of NVRAM is cost. For MLC, the disadvantage is that it is slow and limited by the number of writes or erases. The MLC can be obtained from the TLC by allocating a TLC with only a strong programming page. In SEED 200, some of the features of ETL can be implemented in an SRAM.

在TLC快閃記憶體設備中,DRAM的緩衝區也可以被組合取代,如DRAM+SRAM,DRAM+MLC,DRAM+PCRAM或DRAM+MRAM。當使用DRAM緩衝記憶體的組合,如DRAM+MLC,ETL支持的功能在DRAM中被管理,但他們中的一些儲存在MLC中。最終DRAM的緩衝區中的一些資料可以被丟棄,如暫時資料和映射表,讀緩衝記憶體和映射表,當電源斷電時,資料不會移動到MLC。當電源突然關閉時,需要保持的表和資料,如塊抹除計數表,頁狀態表,SMART資料採集控制器等不需要儲存在MLC中。複製到MLC比複製到TLC快閃記憶體快。在伺服器應用的情況下,暫時資料和映射表,讀緩衝記憶體和映射表不能被丟棄;當電源突然被關閉時,使用備用電源,這些區域將被儲存到MLC。另一種方法是為了確保DRAM的ETL中的資料的利益,將這些區域複製到MLC。在電源關閉時,一個有效的ETL中的資料副本可以保持在MLC中。在電源上電時,ETL中的資料可以從MLC加載至DRAM中。複製方法可以藉由記錄細微的差別進行修改,這將減少複製資料的量,因此減少對MLC的寫。In TLC flash memory devices, DRAM buffers can also be combined in combination, such as DRAM+SRAM, DRAM+MLC, DRAM+PCRAM or DRAM+MRAM. When using a combination of DRAM buffer memory, such as DRAM+MLC, the functions supported by ETL are managed in DRAM, but some of them are stored in the MLC. Some data in the final DRAM buffer can be discarded, such as temporary data and mapping tables, read buffer memory and mapping table, when the power is off, the data will not move to the MLC. When the power is suddenly turned off, the tables and data that need to be maintained, such as the block erase counter, the page status table, the SMART data acquisition controller, etc., do not need to be stored in the MLC. Copying to MLC is faster than copying to TLC flash memory. In the case of server applications, the temporary data and mapping tables, read buffer memory and mapping tables cannot be discarded; when the power is suddenly turned off, the backup power is used and these areas are stored in the MLC. Another method is to copy these areas to the MLC in order to ensure the benefit of the data in the ETL of the DRAM. A copy of the data in a valid ETL can remain in the MLC when the power is turned off. When the power is turned on, the data in the ETL can be loaded from the MLC into the DRAM. The copy method can be modified by recording subtle differences, which will reduce the amount of copy data, thus reducing the write to the MLC.

DRAM和MLC,或DRAM和SLC沒有必要使用不同類型的快閃記憶體196、342,如SLC、MLC、TLC、QLC、PLC、3D NAND等。相反,藉由分配部分只具有很強的頁編程的TLC,可以從TLC中獲取MLC。藉由分配只具有較強的頁編程的部分MLC,TLC,QLC,PLC等,可以從MLC、TLC、QLC、PLC、etc.等獲取SLC。例如,一個增強型TLC快閃記憶體可以藉由將TLC的一部分配置SLC(健壯頁)使用的方式實現,如將四分之一的TLC作為SLC(健壯頁)和提示TLC作為TLC(弱頁)。或者配置的一部分TLC作為MLC(健壯頁)和提示TLC作為TLC(弱頁)。此外,編碼抹除管理器41(第14圖)可能會減慢頁寫入和塊抹除時間,以延長快閃記憶體單元氧化層的壽命。降低頁寫或塊抹除時間可以應用到增強型TLC快閃記憶體以增加耐力以降低保留時間為代價。藉由使用刷新管理器202,保留時間可以增加。由於加強TLC快閃記憶體包括快閃記憶體SLC(健壯頁)和TLC(弱頁),並具有不同的保留時間,刷新管理器202能夠追蹤作為SLC(健壯頁)或者TLC(弱頁)塊的使用,然後調整相應的刷新時間。同樣,MLC可以作為SLC(健壯頁)/MLC(弱頁)的結合使用,並且QLC可作為組合使用,例如,SLC(健壯頁)/QLC(弱頁),或者SLC/MLC/TLC/QLC的任意組合。以上功能也可以在SEED 200中實現。It is not necessary for DRAM and MLC, or DRAM and SLC, to use different types of flash memory 196, 342, such as SLC, MLC, TLC, QLC, PLC, 3D NAND, and the like. Conversely, the MLC can be obtained from the TLC by allocating a TLC with only a strong page programming. The SLC can be obtained from MLC, TLC, QLC, PLC, etc. by allocating a part of MLC, TLC, QLC, PLC, etc., which has only strong page programming. For example, an enhanced TLC flash memory can be implemented by using a part of the TLC configuration SLC (robust page), such as using one quarter of the TLC as the SLC (robust page) and prompting the TLC as the TLC (weak page) ). Or configure a part of the TLC as an MLC (robust page) and prompt TLC as a TLC (weak page). In addition, the code erase manager 41 (Fig. 14) may slow page write and block erase time to extend the life of the flash memory cell oxide layer. Reducing page write or block erase time can be applied to enhanced TLC flash memory at the expense of increased endurance to reduce retention time. By using the refresh manager 202, the retention time can be increased. Since the enhanced TLC flash memory includes flash memory SLC (robust page) and TLC (weak page) with different retention times, the refresh manager 202 can track as an SLC (robust page) or TLC (weak page) block. Use and then adjust the corresponding refresh time. Also, MLC can be used as a combination of SLC (robust page) / MLC (weak page), and QLC can be used in combination, for example, SLC (robust page) / QLC (weak page), or SLC / MLC / TLC / QLC random combination. The above functions can also be implemented in SEED 200.

本文所述的耐力技術試圖解決的NAND快閃記憶體的耐力問題。有一些非易失性儲存器,如MRAM,PCM,RRAM,憶阻器,NRAM等,這些儲存器正使用競爭性技術以取代NAND快閃記憶體。The endurance technique described herein attempts to address the endurance problem of NAND flash memory. There are some non-volatile memory such as MRAM, PCM, RRAM, memristor, NRAM, etc. These memories are using competitive technology to replace NAND flash memory.

超耐力快閃記憶體驅動可以結合一個硬碟驅動(HDD),該超強耐力的快閃記憶體驅動器可以作為緩衝記憶體,該HDD用於儲存。超耐力快閃記憶體驅動具有高耐力,更適合作為緩衝記憶體。這種混合設備的整體性能可能會提高。另一種方式確保DRAM的ETL中的資料是複製到HHD中。在斷電的情況下,ETL中的資料有效副本可以保存在HDD中。在上電的情況下,這些資料可以從HDD中加載到DRAM。複製方法可以藉由記錄細微的差別進行修改,這將減少複製資料的量,因此減少對HDD的寫。The ultra-endurance flash memory drive can be combined with a hard disk drive (HDD) that can be used as a buffer memory for storage. The ultra-endurance flash memory drive has high endurance and is more suitable as a buffer memory. The overall performance of this hybrid device may increase. Another way to ensure that the data in the ET's ETL is copied to the HHD. In the event of a power outage, a valid copy of the data in the ETL can be saved in the HDD. In the case of power-up, these data can be loaded from the HDD into the DRAM. The copy method can be modified by recording subtle differences, which will reduce the amount of copy data, thus reducing the write to the HDD.

操作系統的引導映像可以預裝到DRAM的緩衝區,以加快主機開機。一旦啟動過程結束,為了後續的正常操作,釋放DRAM的緩衝區。The boot image of the operating system can be preloaded into the DRAM buffer to speed up the host boot. Once the boot process is complete, the DRAM buffer is released for subsequent normal operation.

當主機處於睡眠或待機模式時,髒DRAM緩衝區必須被寫入到快閃記憶體中。當用戶的主機註銷時,髒DRAM緩衝區可以寫入到快閃記憶體中。When the host is in sleep or standby mode, the dirty DRAM buffer must be written to the flash memory. When the user's host logs out, the dirty DRAM buffer can be written to the flash memory.

寫入資料的分組並不限於一個作為一個單元的頁。分組資料可以放在更大的單元,如多頁(元頁)和整個塊,等等。The grouping of data to be written is not limited to one page as a unit. Grouped data can be placed in larger units, such as multiple pages (meta pages) and entire blocks, and so on.

已經描述了主機存取的資料類型的分類,且比較了從主機到一個或多個位址範圍的邏輯位址,這種比較可能只能比較代表表示位址範圍的一部分邏輯位址的範圍。藉由解析為特定格式的主機寫資料,如一個FAT格式或FDB格式,可以識別資料類型。在一個序列中,更早的主機寫能也能夠檢查其資料格式。FAT檔案系統可以作為一個例子。FDB/FAT是FAT檔案系統的元資料。其他的檔案系統,如LINUX,Apple OS和Android等等,都有自己的不同名字的元資料,但是其作用是等價的。The classification of the data types accessed by the host has been described, and the logical addresses from the host to one or more address ranges have been compared. This comparison may only compare ranges representing a portion of the logical addresses representing the range of addresses. The data type can be identified by parsing the data into a host of a specific format, such as a FAT format or an FDB format. In a sequence, earlier host writes can also check their data format. The FAT file system can be used as an example. FDB/FAT is the metadata of the FAT file system. Other file systems, such as LINUX, Apple OS, and Android, have their own meta-data of different names, but their role is equivalent.

每個塊可以被分成多頁區域。例如,一個塊可以具有16頁,4個區域,每個區域有4頁。在可選的實施例中,一些映射可能為區,而不是單獨的頁或塊。可選地,在特殊情況下,每個區域有一個頁。比起頁模式,區域模式需要較少的映射條目,因為每個區是多頁的。Each block can be divided into multiple page areas. For example, a block can have 16 pages, 4 regions, and 4 regions per region. In alternative embodiments, some of the mappings may be regions rather than separate pages or blocks. Optionally, in a special case, there is one page per area. The zone mode requires fewer map entries than the page mode because each zone is multi-page.

從主機的邏輯扇區位址(logical-sector address,LSA)的高位可以選擇一個群集或區。映射表中所有的條目可以是同一區的。當來自LSA的區號碼匹配映射表中所有條目的區號碼時,來自LSA的LBA選擇映射表中的條目。混合或多個位準的映射表也可以使用。由於FAT1/2的LBA範圍是已知,表中的內容資料類型位「100」可被刪去。映射表能夠具有一個塊或頁的粒度。A cluster or zone can be selected from the upper bits of the host's logical-sector address (LSA). All entries in the mapping table can be in the same zone. When the zone number from the LSA matches the zone number of all entries in the mapping table, the LBA from the LSA selects the entry in the mapping table. Mixed or multiple level mapping tables can also be used. Since the LBA range of FAT1/2 is known, the content data type bit "100" in the table can be deleted. A mapping table can have a granularity of one block or page.

對於頁映射,為了重新定位進行塊複製是較不頻繁的,因為比起塊模式下,在頁模式內,非SLC快閃記憶體的寫順序規則較少違反。這增加了快閃記憶體系統的耐力,並提高了性能。For page mapping, block copying for relocation is less frequent because the write order rules for non-SLC flash memory are less violated in page mode than in block mode. This increases the endurance of the flash memory system and improves performance.

映射表可以位於一個擴展的位址空間中,並且可以使用虛擬位址或大於在用戶位址空間的最大位址的非法位址。頁可以保留在主機頁順序中,或者可能被重新映射到任何頁的位置。另一個實施例中,如對於資料中心應用,分頁和暫時檔案可以被視為正常的用戶資料以簡化控制器的操作,但犧牲了快閃記憶體的耐力。藉由使用DRAM緩衝區作為耐力備用交換緩衝區,而不是採用快閃記憶體,耐力備用交換區可以提供擴展過度配置。在主機已經提供的壓縮函數的情況下,壓縮函數可以選擇關斷。在其它實施例中,控制器可以把分頁檔案作為用戶資料以簡化了控制器的功能。The mapping table can be located in an extended address space and can use a virtual address or an illegal address that is larger than the largest address in the user address space. Pages can remain in the host page order or may be remapped to any page location. In another embodiment, such as for data center applications, pagination and temporary files can be considered normal user profiles to simplify controller operation, but at the expense of flash memory endurance. By using a DRAM buffer as an endurance spare swap buffer instead of flash memory, the endurance spare swap area can provide extended over-provisioning. In the case of a compression function already provided by the host, the compression function may choose to turn off. In other embodiments, the controller can use the paging file as user profile to simplify the functionality of the controller.

框圖的許多變化是可能的。一個ROM,例如,EEPROM,可以連接到控制器的一部分和專用於虛擬記憶體處理器儲存韌體。此韌體也可以儲存在主快閃記憶體模組中。主機界面總線可以是串行硬體驅動器界面(Serial AT-Attachment,SATA)總線,快速外設組件互連(Peripheral Components Interconnect Express ,PCIE)總線,緊湊型快閃記憶體(compact flash,CF)總線,或者通用序列匯流排(Universal-Serial-Bus ,USB),NVME,韌體1394總線,光纖波道(Fibre Channel,FC)總線,雷電總線等。內部總線可以使用標準,如SATA總線,整合設備電路(integrated device electronics,IDE)總線,快速外設組件互連(Peripheral Components Interconnect Express,PCIE)總線,CF總線,USB總線,安全數字(Secure Digital,SD)總線,多媒體卡(Secure Digital,MMC)總線,韌體1394總線,FC總線,各種乙太網路總線等。SCFD可以包括只SLC或MLC快閃記憶體,也可以是SLC/MLC快閃記憶體的結合。Many variations of the block diagram are possible. A ROM, such as an EEPROM, can be connected to a portion of the controller and dedicated to the virtual memory processor to store the firmware. This firmware can also be stored in the main flash memory module. The host interface bus can be a Serial Hardware-Interface (SATA) bus, a Peripheral Components Interconnect Express (PCIE) bus, and a compact flash (CF) bus. , or Universal-Serial-Bus (USB), NVME, firmware 1394 bus, Fibre Channel (FC) bus, lightning bus, etc. The internal bus can use standards such as SATA bus, integrated device electronics (IDE) bus, Peripheral Components Interconnect Express (PCIE) bus, CF bus, USB bus, Secure Digital (Secure Digital, SD) bus, Secure Digital (MMC) bus, firmware 1394 bus, FC bus, various Ethernet buses, etc. SCFD can include only SLC or MLC flash memory, or a combination of SLC/MLC flash memory.

快閃記憶體可以嵌入在主板上或SSD板或可以在單獨的模組上。電容器,緩衝區,電阻器和其它組件也可以增加。控制器可以被整合在主板上,或在單獨的電路板或模組上。快閃記憶體可以和控制器或者原始NAND快閃記憶體芯片一起整合,作為一個單獨的芯片設備或者插件模組或者主板。Flash memory can be embedded on the motherboard or SSD board or can be on a separate module. Capacitors, buffers, resistors and other components can also be added. The controller can be integrated on the motherboard or on a separate board or module. The flash memory can be integrated with the controller or the original NAND flash memory chip as a separate chip device or plug-in module or motherboard.

使用多層次的控制器,如在控制器主控制排列中,相比較控制器的單一層次損耗均衡,壞塊管理,重映射,緩衝記憶體,電壓管理等的需求,在SEED中的控制器可能並不複雜。並不昂貴的硬碟可以在控制器中使用。例如,使用8051處理器作為控制器或者一個虛擬儲存器或者一個業務管理器,而不是一個更強大的處理核心,例如,先進的RISC機器ARM-9的CPU核。對於某種應用,可以考慮一個更強大的處理器。Use multi-level controllers, such as in the controller's main control arrangement, compared to the controller's single-level loss balance, bad block management, remapping, buffer memory, voltage management, etc., controllers in SEED may Not complicated. An inexpensive hard drive can be used in the controller. For example, use the 8051 processor as a controller or a virtual storage or a business manager instead of a more powerful processing core, such as the CPU core of the advanced RISC machine ARM-9. For an application, consider a more powerful processor.

不同數量和佈局的快閃記憶體儲存塊可以連接到SEED上。而不是使用一個的LBA儲存總線界面或差分串行資料包總線以及其它串行總線,例如,同步雙資料速率(synchronous Double-Data-Rate,DDR)、ONFI、Toggle NAND,差分串行資料包總線,傳統的快閃記憶體界面等。Different quantities and layouts of flash memory blocks can be connected to the SEED. Instead of using an LBA storage bus interface or a differential serial packet bus and other serial buses, for example, Synchronous Double-Data-Rate (DDR), ONFI, Toggle NAND, Differential Serial Packet Bus , the traditional flash memory interface and so on.

模式邏輯只在電源上電時能識別到引腳的狀態,而不是識別到專用引腳的狀態。引腳狀態的某個混合或者排列能夠用來初始化模式變化或者設置內部暫存器,如配置暫存器。一個多總線協議芯片可以有一個額外的個性引腳以選擇使用哪個串行總線界面,或者可以有可編程暫存器對集線器設置模式或者開關模式。The mode logic recognizes the state of the pin only when the power is turned on, rather than identifying the state of the dedicated pin. A mix or arrangement of pin states can be used to initiate a mode change or to set an internal register, such as a configuration register. A multi-bus protocol chip can have an additional personality pin to select which serial bus interface to use, or a programmable register-to-hub mode or switch mode.

業務管理器,控制器,進程和功能可以以各種不同的方式實施。功能和進程可以由CPU或其它處理器編程和執行,也以由專用硬體,韌體或其某種組合來實現。許多分割的功能,可以被取代。SEED控制器可以是硬體,或者包括硬體或者軟體或者軟體和硬體的結合。Service managers, controllers, processes and functions can be implemented in a variety of different ways. Functions and processes can be programmed and executed by a CPU or other processor, as well as by dedicated hardware, firmware, or some combination thereof. Many split features can be replaced. The SEED controller can be hard or include hardware or software or a combination of software and hardware.

藉由使用多快閃記憶體通道奇偶校驗/多快閃記憶體通道ECC和將資料端分割成多個NVM塊,整個系統的可靠性大大提高。例如,第九快閃記憶體芯片可用於快閃記憶體界面。其他八個快閃記憶體芯片的奇偶校驗被寫入到這第九快閃記憶體芯片,以提供額外的保護資料,以防止第八個快閃記憶體芯片遇到一個致命的讀錯誤的情況。然而,它可能需要使用有DDR、SDRAM緩衝記憶體的CPU引擎,以滿足複雜的ECC/奇偶校驗計算和產生的計算能量的要求。另一個好處是,即使快閃記憶體塊或快閃記憶體模組損壞,資料也可以恢復,或者SEED能初始化「故障恢復」或者「自動重建」過程中插入一個新的快閃記憶體模組,以及恢復或者重建「損失」或者「損壞」資料。整個系統的容錯率得以顯著提高。By using multiple flash memory channel parity/multi-flash memory channel ECC and splitting the data side into multiple NVM blocks, the reliability of the entire system is greatly improved. For example, a ninth flash memory chip can be used for the flash memory interface. The parity of the other eight flash memory chips is written to the ninth flash memory chip to provide additional protection data to prevent the eighth flash memory chip from encountering a fatal read error. Happening. However, it may be necessary to use a CPU engine with DDR, SDRAM buffer memory to meet complex ECC/parity calculations and the resulting computational energy requirements. Another benefit is that even if the flash memory block or flash memory module is damaged, the data can be recovered, or SEED can initiate a new flash memory module during the "failback recovery" or "automatic reconstruction" process. And recover or rebuild "loss" or "damage" information. The fault tolerance of the entire system has been significantly improved.

快閃記憶體單元的浮動閘極由注入它的電子編程。快閃記憶體在頁寫時控制電子注入,使之保持於兩個基準電壓位準。NAND快閃記憶體結構的位線被連接為32個單元的字符串,每個單元被連接到32個不同的字線。一個單元格的資料寫入後,任何相鄰單元寫和讀將會對該單元造成干擾。干擾將會向單元的浮動閘極注入或者從單元的浮動閘極移走電子。很長一段時間將會影響單元的浮動閘極中的電子數量。由於浮動閘極中的電子數量的變化,當讀資料時,輸出電壓位準將會漂移。如果輸出電壓位準在參考電壓邊界兩端漂移,讀出的結果將是錯誤的。The floating gate of the flash memory cell is programmed by the electronics that inject it. The flash memory controls the electron injection during page writes to maintain it at two reference voltage levels. The bit lines of the NAND flash memory structure are connected as a string of 32 cells, each cell being connected to 32 different word lines. After a cell's data is written, any adjacent cell write and read will cause interference to the cell. Interference will either inject the floating gate of the cell or remove the electron from the floating gate of the cell. For a long time it will affect the number of electrons in the floating gate of the unit. Due to the change in the number of electrons in the floating gate, the output voltage level will drift when reading data. If the output voltage level drifts across the reference voltage boundary, the result of the readout will be erroneous.

更寬或更窄的資料總線和快閃記憶體芯片可被取代,如16位或32位資料通道。嵌套或者分段總線的交替總線架構能可用於內部或者外部的SEED。兩個或更多的內部總線能夠在SEED中使用,以增加吞吐量。更複雜的交換結構可以取代內部或外部總線。A wider or narrower data bus and flash memory chip can be replaced, such as a 16-bit or 32-bit data channel. An alternate bus architecture of nested or segmented buses can be used for internal or external SEED. Two or more internal buses can be used in SEED to increase throughput. More complex switch fabrics can replace internal or external buses.

資料條帶化可以在各種方式發生,如奇偶校驗和錯誤校正碼(ECC)。根據用來防止重疊的內部儲存位置重新排序的資料佈局,資料包重新排序可以調整。SEED可以與其他組件整合,也可以是一個獨立的芯片。Data striping can occur in a variety of ways, such as parity and error correction code (ECC). Packet reordering can be adjusted based on the data layout used to prevent overlapping internal storage locations from being reordered. SEED can be integrated with other components or it can be a standalone chip.

可以增加額外的流水線或暫時緩衝區和FIFO。可以在每個通道中提供單獨的頁緩衝區。可以增加時鐘源。Additional pipelines or temporary buffers and FIFOs can be added. A separate page buffer can be provided in each channel. You can increase the clock source.

單個資料包,單個芯片,或者多芯片資料包可能包含一個或多個快閃記憶體或SEED或者SSD的通道數。本發明並不限定於SCFD使用。SCFD可以被替換為具有非易失性快閃記憶體和控制器的任何一類非易失性設備。A single packet, a single chip, or a multi-chip package may contain one or more channels of flash memory or SEED or SSD. The invention is not limited to use with SCFD. SCFD can be replaced with any type of non-volatile device with non-volatile flash memory and controllers.

基於MLC快閃記憶體設備可以具有四個具有兩個平行的資料信道的MLC快閃記憶體芯片,但也可以使用不同的組合以形成其它的快閃記憶體模組。例如,四個,八個或更多的資料通道,或8個,16個或更多的MLC芯片。快閃記憶體設備和藉由可以位於鏈,分支或者陣列中。例如,具有4個快閃記憶體設備的分支能夠作為鏈連接到SEED。其他大小的聚集或分區方案可以用於不同的內部儲存存取中。The MLC-based flash memory device can have four MLC flash memory chips with two parallel data channels, but different combinations can be used to form other flash memory modules. For example, four, eight or more data channels, or eight, 16 or more MLC chips. Flash memory devices and by means can be located in chains, branches or arrays. For example, a branch with 4 flash memory devices can be connected as a chain to the SEED. Other sized aggregation or partitioning schemes can be used for different internal storage accesses.

主機可以是台式PC主板或其它PC平台,例如,伺服器,筆記型電腦,上網本,平板電腦,智慧型電話,移動式通訊設備,個人數位助理(personal digital assistant,PDA),數位照相機,生產工具或測試儀,組合裝置,或其他設備。主機總線或主機設備界面可以是SATA,PCIE,雷電,SD,USB,NVMe,eMMC,ISSD,或其它主機總線,而連接快閃記憶體模組的內部總線可以PATA,使用多SD/MMC的多通道SSD,CF,USB,或其它並行界面。快閃記憶體模組可以是一個標準的PCB或是一個多芯片模組,模組被封裝在TSOP,BGA,LGA,COB,PIP,SIP,CSP,POP,多芯片封裝包(MCP),或者可以包括原始NAND快閃記憶體芯片,或存在與單獨的快閃記憶體芯片,其它類型的NVM快閃記憶體中,如切換,ONFI、eMMC、iSSD、3D NAND中的原始NAND快閃記憶體芯片。SEED SSD可以使用具有RAID的eMMC,並且eMMC也可以使用SEED結構。內部總線可以是完全或部分共享,或者可以是獨立的總線。SSD的系統可以使用具有其它部件的電路板,如LED指示燈,電容,電阻等。電源管理可能被添加在一個或多個層次。SEED SSD可以帶或不帶VMD驅動器。PCIE RAID DRAM緩衝記憶體卡可以包括VMD驅動器和多個SSD結構的SEED。The host can be a desktop PC motherboard or other PC platform, such as a server, a notebook, a netbook, a tablet, a smart phone, a mobile communication device, a personal digital assistant (PDA), a digital camera, a production tool. Or a tester, combination, or other device. The host bus or host device interface can be SATA, PCIE, lightning, SD, USB, NVMe, eMMC, ISSD, or other host bus, while the internal bus connected to the flash memory module can be PATA, using multiple SD/MMC Channel SSD, CF, USB, or other parallel interface. The flash memory module can be a standard PCB or a multi-chip module packaged in TSOP, BGA, LGA, COB, PIP, SIP, CSP, POP, Multi-Chip Package (MCP), or Can include raw NAND flash memory chips, or existing NAND flash memory in separate flash memory chips, other types of NVM flash memory, such as switching, ONFI, eMMC, iSSD, 3D NAND chip. SEED SSD can use eMMC with RAID, and eMMC can also use SEED structure. The internal bus can be shared in whole or in part, or it can be a separate bus. SSD systems can use boards with other components such as LEDs, capacitors, resistors, and more. Power management may be added at one or more levels. SEED SSDs are available with or without VMD drives. The PCIE RAID DRAM buffer memory card can include a VMD driver and SEED of multiple SSD structures.

方向性術語,例如,如高,低,上,下,頂部,底部等是相對的和多變的。因為系統或資料是交替的,翻轉等,這些術語是用於描述設備,但並非絕對。Directional terms such as, for example, high, low, top, bottom, top, bottom, etc. are relative and variable. Because the system or data is alternating, flipped, etc., these terms are used to describe the device, but not absolute.

NVM快閃記憶體可能在快閃記憶體模組中,快閃記憶體模組可能有一個封裝控制器和在單芯片封裝的快閃記憶體核心,快閃記憶體核心可以整合到PCBA,或直接封裝到主板上,以進一步簡化裝配,降低了製造成本,並減少整體厚度。快閃記憶體芯片也可用於其它實施例中,包括開放框架卡。NVM flash memory may be in a flash memory module. The flash memory module may have a package controller and a flash memory core in a single chip package. The flash memory core can be integrated into the PCBA, or Directly packaged onto the motherboard to further simplify assembly, reduce manufacturing costs, and reduce overall thickness. Flash memory chips can also be used in other embodiments, including open frame cards.

使用一個控制器不僅僅是為了快閃記憶體儲存,而是可能會增加附加功能。例如,一個音樂播放器可以包括一個控制器,用於播放儲存在快閃記憶體中的MP3資料。音頻插孔可能被添加到設備,以允許用戶插入耳機聽音樂。一個無線發射器,如藍芽發射器,可被添加到設備以連接到無線耳機而不是使用的音頻插孔。紅外發射器,如IrDA,也可加入。無線鼠標,PDA,鍵盤,印表機,數位相機,MP3播放器,或其它無線設備也可以被添加藍芽收發器。藍芽收發器能夠作為主要連接器取代連接器。藍芽適配器裝置可以有連接器,RF(射頻)收發器,基帶控制器,天線,快閃記憶體(EEPROM),電壓調節器,電晶體,LED(發光二極管),電阻,電容和電感。這些組件封裝到一個塑料或金屬外殼之前,可以被安裝在印刷電路板(printed circuit board,PCB)上。Using a controller is not just for flash memory storage, but may add additional functionality. For example, a music player can include a controller for playing MP3 data stored in flash memory. Audio jacks may be added to the device to allow the user to plug in the headphones to listen to music. A wireless transmitter, such as a Bluetooth transmitter, can be added to the device to connect to the wireless headset instead of the audio jack used. Infrared emitters, such as IrDA, can also be added. Bluetooth headsets can also be added to wireless mice, PDAs, keyboards, printers, digital cameras, MP3 players, or other wireless devices. The Bluetooth transceiver can replace the connector as the primary connector. Bluetooth adapter devices can have connectors, RF (radio frequency) transceivers, baseband controllers, antennas, flash memory (EEPROM), voltage regulators, transistors, LEDs (light-emitting diodes), resistors, capacitors and inductors. These components can be mounted on a printed circuit board (PCB) before being packaged in a plastic or metal enclosure.

資料的大小,如扇區,頁,塊可能會發生變化。一個扇區可有512個字節,一個頁可能有16個扇區,一個塊可以具有128頁,這樣的例子很多。The size of the data, such as sectors, pages, and blocks may change. A sector can have 512 bytes, a page can have 16 sectors, and a block can have 128 pages. There are many examples.

在ETL中的寫資料可以由快閃記憶體控制器一個接一個的包裝和記錄到資料寫入緩衝記憶體作為一個頁單元。來自主機的資料包的大小可以是大尺寸的,例如,大於元頁單元,或者是小尺寸,例如小於扇區的大小。添加標題顯示資料到主機LBA的關係。一個單獨封裝表將主機LBA映射到資料寫緩衝記憶體的元頁單元的資料和資料頭的偏移位置。資料寫緩衝記憶體的容量可以大於兩個以上元頁單元的大小。當資料寫緩衝記憶體滿了或時間到了,選定的元頁單位將從資料寫緩衝記憶體移動到快閃記憶體中。封裝表將主機LBA映射到資料寫緩衝記憶體的元頁單元的資料和資料頭的偏移位置。萬一覆蓋了主機舊的資料,如果封裝資料仍在資料寫緩衝記憶體中,舊資料可以被丟棄,藉由將封裝資料包上移和將新更新資料添加到資料寫緩衝記憶體中,並更新封裝表。否則,如果封裝資料在快閃記憶體中,則比較新資料和舊資料,並產生一個增量資料以示區別。增量資料和資料頭會被追加到資料寫緩衝記憶體中。資料頭也包括先前的舊資料的位置。封裝表將把LBA映射到增量資料位置。The write data in the ETL can be packaged and recorded one by one by the flash memory controller to the data write buffer memory as a page unit. The size of the data packet from the host can be large, for example, larger than the metapage unit, or small, such as smaller than the size of the sector. Add a title to show the relationship of the data to the host LBA. A separate package table maps the host LBA to the data page of the data write buffer memory and the offset position of the header. The capacity of the data write buffer memory can be greater than the size of more than two metapage units. When the data write buffer memory is full or the time is up, the selected metapage unit will move from the data write buffer memory to the flash memory. The encapsulation table maps the host LBA to the data of the metapage unit of the data write buffer memory and the offset position of the header. In case the old data of the host is overwritten, if the package data is still in the data write buffer memory, the old data can be discarded by moving the package data package and adding the new update data to the data write buffer memory, and Update the package table. Otherwise, if the package data is in the flash memory, the new data and the old data are compared, and an incremental data is generated to show the difference. Incremental data and headers are appended to the data write buffer memory. The header also includes the location of the previous old data. The encapsulation table will map the LBA to the incremental data location.

本發明部分的先前技術可包含有關該問題的先前技術訊息或發明環境,而不是描述別人的習知技術。因此,包括在先前技術部分的技術不是由本申請人承認的習知技術。The prior art of part of the present invention may contain prior art messages or inventive environments relating to this problem, rather than describing other known techniques. Therefore, the technology included in the prior art section is not a prior art recognized by the applicant.

本發明所述的任何方法或過程是機械實現或者是電腦實現的,且旨在由機器,電腦或其他裝置要執行,而不是在沒有機器輔助情況下的單獨人來執行。產生的有形結果可以包括報告或其他機器產生的顯示結果,結果在顯示設備上顯示,設備可以是電腦顯示器,投影設備,音頻產生設備,以及相關媒體的設備,並可以包括機械產生的硬拷貝打印輸出。電腦控制其它機器是另一種有形的結果。Any of the methods or processes described herein are either mechanically implemented or computer implemented and are intended to be performed by a machine, computer or other device, rather than by a separate person without machine assistance. The resulting tangible results may include reports or other machine generated display results, the results being displayed on a display device, which may be computer displays, projection devices, audio producing devices, and related media devices, and may include mechanically generated hard copy printouts. . Computer control of other machines is another tangible result.

任何的優點和利益可能並不適用於本發明的所有實施例。當「方法」被申請專利範圍引用時,申請人意圖是使申請專利範圍落入美國專利法第112條第6段保護範圍內。通常一個或多個標籤出現在「方法」之前。位於「方法」前的一個或多個詞是一個標籤,是為了引用申請專利範圍,而不是為了傳達結構限制。這種方法加功能的申請專利範圍,其目的是不僅是為了覆蓋前面描述的功能以及它的相當的結構,同時也為了覆蓋等價結構。例如,雖然釘子和螺絲有不同結構,但它們是等價的結構,因為他們都可以執行固定功能。申請專利範圍不使用「方法」其不是意圖落入美國專利法第112條第6段範圍之內,訊號通常是指電子訊號,但也可能可以藉由光纖進行傳輸的光訊號。Any advantages and benefits may not apply to all embodiments of the invention. When the “method” is quoted in the scope of the patent application, the applicant intends to make the scope of the patent application fall within the scope of paragraph 6 of Article 112 of the US Patent Law. Usually one or more tags appear before the "method". One or more words that precede the "method" are a label that is used to reference the scope of the patent application and is not intended to convey structural limitations. The scope of the patent application of this method is intended to cover not only the functions described above but also its equivalent structure, but also to cover the equivalent structure. For example, although nails and screws have different structures, they are equivalent structures because they can perform fixed functions. The scope of the patent application does not use the "method". It is not intended to fall within the scope of paragraph 6 of Article 112 of the US Patent Law. The signal usually refers to an electronic signal, but it may also be an optical signal that can be transmitted by optical fiber.

前面描述的本發明的實施例是為了說明和描述本發明。它的目的不是要詳盡或限制本發明公開的具體形式。根據上述實施例的揭示可以作出許多修改和變化。本發明的範圍本發明不是藉由這個詳細描述進行限制的,而是由所附的申請專利範圍確定的。

The embodiments of the invention described above are for the purpose of illustrating and describing the invention. It is not intended to be exhaustive or to limit the specific forms disclosed. Many modifications and variations are possible in light of the above teachings. The scope of the invention is not limited by the detailed description, but is determined by the scope of the appended claims.

100...VMD驅動器100. . . VMD drive

176...備用電源176. . . backup power

178...操作系統核心178. . . Operating system core

180...VMD應用程式180. . . VMD application

181...SSD內部清理181. . . SSD internal cleanup

182...用戶應用程式182. . . User application

184...操作系統設置184. . . Operating system settings

186...配置設置186. . . Configuration settings

188...虛擬磁碟188. . . Virtual disk

190...高級別檔案過濾驅動器190. . . High-level file filter driver

192...SEED控制器192. . . SEED controller

194...SSD DRAM緩衝區194. . . SSD DRAM buffer

195...電源備份195. . . Power backup

196...NAND快閃記憶體196. . . NAND flash memory

200...超級強耐力裝置200. . . Super strong endurance device

240...加密解密引擎240. . . Encryption and decryption engine

242...壓縮解壓縮引擎242. . . Compression decompression engine

266...檔案系統驅動器266. . . File system driver

268...低級別檔案過濾驅動器268. . . Low-level file filter driver

270...卷管理270. . . Volume management

300...主機300. . . Host

301...緩衝記憶體控制器301. . . Buffer memory controller

303...SEED SSD303. . . SEED SSD

305...電源管理305. . . Power management

307...電源備份307. . . Power backup

309...內部儲存控制器309. . . Internal storage controller

311...開關311. . . switch

Claims (25)

一種虛擬記憶體設備驅動器(VMD),該驅動器在主機上執行,其包括:
檔案類型識別器,用於為虛擬記憶體設備驅動器接收的主機寫產生一資料類型;
資料拆分管理器,用於根據該資料類型識別器識別的資料類型,對主機寫入資料進行分類;
資料寫入緩衝記憶體,用於儲存用戶資料類型的主機寫資料;
元資料緩衝記憶體,用於儲存元資料類型的主機寫資料;
分頁緩衝記憶體,用於儲存分頁檔案資料類型的主機寫資料;
暫時緩衝記憶體,用於儲存暫時資料類型的主機寫資料;
用戶分組引擎,用於將儲存在該資料寫緩衝記憶體中的用戶資料分類成用戶元頁;
元資料分組引擎,用於將儲存在該資料寫緩衝記憶體中的元資料分類成元資料的元頁;
輸出緩衝區,用於將分組的元頁和資料類型訊息發送到快閃記憶體驅動系統進行儲存。
A virtual memory device driver (VMD) that is executed on a host and includes:
a file type identifier for generating a data type for a host write received by the virtual memory device driver;
a data splitting manager, configured to classify data written by the host according to the type of data identified by the data type identifier;
The data is written into the buffer memory for storing the data of the user data type;
Metadata buffer memory for storing metadata of a metadata type;
a page buffer memory for storing a host write data of a paging file data type;
Temporary buffer memory for storing data of a temporary data type host;
a user grouping engine, configured to classify user data stored in the data write buffer memory into a user metapage;
a metadata packet engine for classifying metadata stored in the data write buffer memory into a meta page of the metadata;
An output buffer for sending the grouped meta page and data type messages to the flash memory drive system for storage.
如申請專利範圍第1項所述之虛擬記憶體設備驅動器,其進一步包括:
高級別檔案過濾驅動器,用於在主機上執行,並攔截向快閃記憶體驅動的高級別主機寫;
加密引擎,用於連接接收由該高級別檔案過濾驅動器攔截的高級別主機寫,並產生加密資料;
壓縮引擎,用於連接接收由該高級別檔案過濾驅動器攔截的高級別主機寫,並產生壓縮資料;
其中,壓縮後的資料和加密的資料被發送到在主機上執行的檔案系統驅動器;
低級別檔案過濾驅動器,用於在主機上執行,攔截向快閃記憶體驅動的較低級別的檔案系統主機寫,並發送該較低級檔案系統主機寫資料至該資料拆分管理器以分類該主機寫資料。
The virtual memory device driver of claim 1, further comprising:
A high-level file filter driver for execution on the host and intercepting high-level host writes to flash memory drives;
An encryption engine for connecting to receive high-level host writes intercepted by the high-level file filter driver and generating encrypted data;
a compression engine for connecting to receive high-level host writes intercepted by the high-level file filter drive and generating compressed data;
Wherein, the compressed data and the encrypted data are sent to a file system driver executed on the host;
a low-level file filter driver for executing on the host, intercepting a lower-level file system host write to the flash memory drive, and sending the lower-level file system host to write data to the data split manager for classification The host writes the data.
如申請專利範圍第1項所述之虛擬記憶體設備驅動器,其進一步包括:
虛擬磁碟驅動器,用於將暫時緩衝記憶體中的資料、瀏覽器緩衝記憶體中的資料或者應用程式緩衝記憶體中的資料儲存到虛擬磁碟中,該虛擬磁碟儲存於主機動態隨機記憶體中動態隨機存取記憶體(DRAM)。
The virtual memory device driver of claim 1, further comprising:
The virtual disk drive is configured to store data in the temporary buffer memory, data in the browser buffer memory, or data in the application buffer memory into the virtual disk, and the virtual disk is stored in the host dynamic random memory. In-body dynamic random access memory (DRAM).
如申請專利範圍第1項所述之虛擬記憶體設備驅動器,其進一步包括:
第一資料讀取緩衝記憶體,用於儲存主機讀取的經常存取的資料,和最近存取的資料;
第二資料讀取緩衝記憶體,用於儲存主機讀取的經常存取的,和非最近存取的資料;
第三資料讀取緩衝記憶體,用於儲存主機讀取的非經常存取的,和最近存取的資料;
第四資料讀取緩衝記憶體,用於儲存主機讀取的非經常存取的,和非最近存取的資料;
第一分割資料管理器,用於將從快閃記憶體驅動系統接收的資料分割成最近存取的資料和非最近存取的資料;
第二分割資料管理器,用於將從快閃記憶體驅動系統接收的資料分割成經常存取的資料和非經常存取的資料。
The virtual memory device driver of claim 1, further comprising:
The first data reading buffer memory is used for storing frequently accessed data read by the host, and recently accessed data;
a second data read buffer memory for storing frequently accessed, and non-nearestally accessed data read by the host;
a third data read buffer memory for storing non-frequently accessed, and recently accessed data read by the host;
The fourth data reading buffer memory is used for storing non-frequently accessed and non-recently accessed data read by the host;
a first split data manager for dividing data received from the flash memory drive system into recently accessed data and non-nearestally accessed data;
The second split data manager is configured to split the data received from the flash memory drive system into frequently accessed data and non-frequently accessed data.
如申請專利範圍第1項所述之虛擬記憶體設備驅動器,其中該快閃記憶體驅動系統是一個超級增強耐力設備(SEED),該超級增強耐力設備包括:
硬碟固體狀態驅動機(SSD)耐用轉換層(ETL),用於在動態隨機存取記憶體(DRAM)中執行,且藉由控制器控制,該控制器使用ETL層提供暫時儲存以減少快閃記憶體磨損;
硬碟固體狀態驅動機之動態隨機存取記憶體(SSD DRAM)緩衝區,用於儲存分組元資料;
動態隨機存取記憶體(DRAM)界面,用於存取硬碟固體狀態驅動機之動態隨機存取記憶體(SSD DRAM)緩衝區;
錯誤校正碼(ECC)管理器,用於產生錯誤校正碼,該錯誤校正碼附帶在寫到快閃記憶體中的分組元頁中;
壞頁管理器,用於跟蹤快閃記憶體中的壞頁;
磨損均衡器,用於為具有低抹除計數的快閃記憶體中的空塊分配新資料;
快閃記憶體界面,用於對快閃記憶體中的塊進行抹除和頁進行寫,該塊是頁大小的倍數;
快閃記憶體,用於儲存來自硬碟固體狀態驅動機之動態隨機存取記憶體(SSD DRAM)緩衝區中的分組元頁。
The virtual memory device driver of claim 1, wherein the flash memory drive system is a super enhanced endurance device (SEED), the super enhanced endurance device comprising:
Hard Disk Solid State Drive (SSD) Durable Translation Layer (ETL) for execution in Dynamic Random Access Memory (DRAM) and controlled by a controller that uses the ETL layer to provide temporary storage to reduce fast Flash memory wear;
a dynamic random access memory (SSD DRAM) buffer of a hard disk solid state drive machine for storing packet metadata;
a dynamic random access memory (DRAM) interface for accessing a dynamic random access memory (SSD DRAM) buffer of a hard disk solid state drive;
An error correction code (ECC) manager for generating an error correction code that is included in a packet element page written in the flash memory;
Bad page manager for tracking bad pages in flash memory;
Wear equalizer for allocating new data to empty blocks in flash memory with low erase counts;
A flash memory interface for erasing and writing a block in a flash memory, the block being a multiple of a page size;
Flash memory for storing packet metapages in a dynamic random access memory (SSD DRAM) buffer from a hard disk solid state drive.
一種用於在主機上執行之虛擬記憶體設備驅動器(VMD),其包括:
資料類型分配器,用於為藉由虛擬記憶體設備驅動器接收的主機寫產生資料類型;
任務優先級分配器,用於為任務分配優先級,包括根據資料類型寫主機寫資料,該優先級是來自於該資料類型分配器的資料類型的函數;
目標分配器,用於根據資料類型分配器產生的資料類型,對主機寫資料進行分類;
資料寫緩衝記憶體,用於儲存具有用戶資料類型的主機寫資料;
虛擬磁碟驅動器,用於將具有暫時資料類型的主機寫資料儲存到主機之動態隨機存取記憶體(DRAM)中;
資料讀緩衝記憶體,用於儲存主機讀資料;
分組引擎,用於將儲存在資料寫緩衝記憶體中的資料分組為元頁;
取消分組引擎,用於將儲存在元頁中的資料取消分組為儲存在資料讀緩衝記憶體中儲存的取消分組資料;
其中,該元資料被從分組引擎發送到卷管理器,以傳輸到快閃記憶體,並藉由取消分組引擎接收該儲存在快閃記憶體中的元頁;
電源監測器,用於檢測電源故障;
刷新管理器,用於當電源損失時,將主機之動態隨機存取記憶體(DRAM)儲存的資料刷新到硬碟固體狀態驅動機之動態隨機存取記憶體(SSD DRAM)中,然後刷新到快閃記憶體驅動系統的快閃記憶體中;
恢復管理器,用於當電源恢復時,加載從快閃記憶體驅動系統的快閃記憶體獲取的刷新資料,然後刷新到主機之動態隨機存取記憶體(DRAM)。
A virtual memory device driver (VMD) for execution on a host, comprising:
a data type allocator for generating a data type for a host write received by the virtual memory device driver;
a task priority allocator for assigning priorities to tasks, including writing a host write data according to a data type, the priority being a function from a data type of the data type allocator;
a target allocator for classifying the data written by the host according to the type of data generated by the data type allocator;
Data write buffer memory for storing host write data with user data type;
a virtual disk drive for storing a host write data having a temporary data type into a dynamic random access memory (DRAM) of the host;
Data read buffer memory for storing host read data;
a packet engine for grouping data stored in the data write buffer memory into a meta page;
The grouping engine is cancelled, and the data stored in the metapage is ungrouped into the ungrouped data stored in the data read buffer memory;
The metadata is sent from the packet engine to the volume manager for transmission to the flash memory, and the meta-page stored in the flash memory is received by canceling the packet engine;
Power monitor for detecting power failures;
The refresh manager is configured to refresh the data stored in the dynamic random access memory (DRAM) of the host into the dynamic random access memory (SSD DRAM) of the hard disk solid state drive when the power is lost, and then refresh to Flash memory in the flash memory drive system;
The recovery manager is configured to load the refresh data obtained from the flash memory of the flash memory drive system when the power is restored, and then refresh to the dynamic random access memory (DRAM) of the host.
如申請專利範圍第6項所述之虛擬記憶體設備驅動器,其進一步包括:
業務管理器,用於記錄向快閃記憶體資料寫的開始和完成的事件;
恢復管理器,用於讀取業務管理器記錄的事件,以在電源恢復後,撤消或重做向快閃記憶體的資料寫。
The virtual memory device driver of claim 6, further comprising:
a service manager for recording the start and completion of writing to flash memory data;
The recovery manager is used to read events recorded by the business manager to undo or redo the data written to the flash memory after the power is restored.
如申請專利範圍第6項所述之虛擬記憶體設備驅動器,其進一步包括:
配置設置管理器,用於禁止設置以提高快閃記憶體耐力,該設置包括至少一個驅動器索引,搜索索引,碎片整理,主機休眠狀態,預取,超級資料取,寫緩衝記憶體,寫緩衝記憶體緩衝區刷新。
The virtual memory device driver of claim 6, further comprising:
Configuration Settings Manager to disable settings to improve flash memory endurance, including at least one drive index, search index, defragmentation, host sleep state, prefetch, super data fetch, write buffer memory, write buffer memory The body buffer is refreshed.
一種刷新快閃記憶體之方法,其包括:
獲得當前日期;
在快閃記憶體的塊列表中的現行塊:
(a)讀塊狀態表,該塊狀態表用於現行塊的抹除計數和對現行塊的寫日期,該日期表示現行塊上次被寫入的日期;
計算第一時間延遲作為寫日期與當前日期的差;
將該第一時間延遲作為保留時間;
當該第一時間延遲超過該保留時間時,將現行塊中的所有有效頁移動至在動態隨機存取記憶體(DRAM)的備用塊中的空白頁中;
當動態隨機存取記憶體(DRAM)中的備用塊是滿的時,將來自動態隨機存取記憶體(DRAM)的備用塊中的資料移動至快閃記憶體中的備用塊;
抹除現行塊;
在快閃記憶體的塊列表中選擇另一個塊作為現行塊,並從(a)重複,直至處理完塊列表中的所有塊,至此,快閃記憶體塊被刷新。
A method of refreshing flash memory, comprising:
Get the current date;
The current block in the block list of the flash memory:
(a) reading a block status table for the erase count of the current block and the write date to the current block, the date indicating the date the current block was last written;
Calculating the first time delay as the difference between the write date and the current date;
Taking the first time delay as a retention time;
When the first time delay exceeds the retention time, moving all valid pages in the current block to a blank page in a spare block of a dynamic random access memory (DRAM);
When a spare block in a dynamic random access memory (DRAM) is full, moving data from a spare block of a dynamic random access memory (DRAM) to a spare block in the flash memory;
Erase the current block;
Another block is selected as the current block in the block list of the flash memory, and is repeated from (a) until all the blocks in the block list are processed, and thus the flash memory block is refreshed.
一種快閃記憶體刷新之方法,其包括:
獲得當前的日期;
對於在快閃記憶體的塊列表中的現行塊中的當前頁:
(a)讀塊狀態表,該塊狀態表用於現行塊的抹除計數;
(b)讀頁狀態表,該頁狀態表用於當前頁的寫日期,該日期表示當該前頁上次寫的日期;
計算第一時間延遲作為該寫日期與當前日期的差;
將該第一時間延遲作為保留時間;
當該第一時間延遲超過該保留時間時,將該現行塊中的該當前頁移動至在動態隨機存取記憶體(DRAM)的備用塊中的空白頁中;
當動態隨機存取記憶體(DRAM)中的備用塊是滿的時,將來自動態隨機存取記憶體(DRAM)的備用塊中的資料移動至快閃記憶體中的備用塊;
在現行塊中選擇另一個頁,並從(b)重複,直至處理完現行塊中的所有頁;
在快閃記憶體的塊列表中選擇另一個塊作為現行塊,並從(a)重複,直至處理完塊列表中的所有塊,至此,快閃記憶體頁被刷新。
A method of flash memory refreshing, comprising:
Get the current date;
For the current page in the current block in the block list of the flash memory:
(a) reading a block status table for the erase count of the current block;
(b) reading a page status table for the date of writing of the current page, the date indicating the date when the previous page was last written;
Calculating the first time delay as the difference between the write date and the current date;
Taking the first time delay as a retention time;
When the first time delay exceeds the retention time, moving the current page in the current block to a blank page in a spare block of a dynamic random access memory (DRAM);
When a spare block in a dynamic random access memory (DRAM) is full, moving data from a spare block of a dynamic random access memory (DRAM) to a spare block in the flash memory;
Select another page in the current block and repeat from (b) until all pages in the current block have been processed;
Select another block as the current block in the block list of the flash memory, and repeat from (a) until all the blocks in the block list are processed, and the flash memory page is refreshed.
如申請專利範圍第10項所述之快閃記憶體刷新之方法,其進一步包括:
計算該保留時間作為該現行塊的抹除計數的函數。
The method of flash memory refreshing as described in claim 10, further comprising:
This retention time is calculated as a function of the erase count for the current block.
一種超級增強耐力設備(SEED)硬碟固體狀態驅動機(SSD)耐用轉換層(ETL)之方法,該方法用來增強具有低指定抹除循環壽命的快閃記憶體的耐力,其包括:
在由控制器控制的動態隨機存取記憶體(DRAM)緩衝區中創建耐用轉換層(ETL)和使用該耐用轉換層(ETL),以提供暫時的儲存空間,以減少對該快閃記憶體的磨損;
在動態隨機存取記憶體(DRAM)緩衝區中創建備用交換區域;
使用該動態隨機存取記憶體(DRAM)緩衝區中的備用交換區域操作控制器,以合併具有新資料的快閃記憶體中的有效資料,以產生組合資料;
當覆蓋寫快閃記憶體中現有塊中的全部頁或者局部頁時,將新資料寫到與快閃記憶體中現有塊相關的動態隨機存取記憶體(DRAM)緩衝區的備用塊中,對快閃記憶體中的不同塊,當額外的新資料需要備用塊時,將具有新資料和來自快閃記憶體的現有塊的資料的備用塊的組合寫入該快閃記憶體中的備用塊中,將快閃記憶體中現有塊中的所有頁,標記頁狀態作為垃圾頁;
當電源損失時,使用備用電源為動態隨機存取記憶體(DRAM)緩衝區和快閃記憶體和控制器提供電能,該備用電源具有足夠的容量,以使該控制器將該耐用轉換層(ETL)所需的資料備份到快閃記憶體,由此,由控制器使用動態隨機存取記憶體(DRAM)緩衝區,而不是快閃記憶體,執行備用交換功能。
A super-enhanced endurance device (SEED) hard disk solid state drive (SSD) durable conversion layer (ETL) method for enhancing the endurance of a flash memory having a low specified erase cycle life, including:
Creating a durable conversion layer (ETL) in a dynamic random access memory (DRAM) buffer controlled by the controller and using the durable conversion layer (ETL) to provide temporary storage space to reduce the flash memory Wear and tear
Creating an alternate swap area in a dynamic random access memory (DRAM) buffer;
Using a spare swap area operation controller in the dynamic random access memory (DRAM) buffer to merge valid data in flash memory with new data to generate combined data;
When overwriting all pages or partial pages in an existing block in the flash memory, the new data is written to a spare block of a dynamic random access memory (DRAM) buffer associated with an existing block in the flash memory. For different blocks in the flash memory, when additional new data requires a spare block, a combination of spare blocks with new data and data from existing blocks of the flash memory is written to the flash memory for backup. In the block, all the pages in the existing block in the flash memory are marked as the garbage page;
When the power supply is lost, the backup power supply is used to provide power to the dynamic random access memory (DRAM) buffer and the flash memory and the controller, and the backup power supply has sufficient capacity to enable the controller to convert the durable conversion layer ( ETL) Backs up the required data to the flash memory, whereby the controller uses a dynamic random access memory (DRAM) buffer instead of flash memory to perform the alternate swap function.
一種超級增強耐力設備(SEED),其包括:
主機界面,用於接收來自於主機的主機讀和主機寫;
超級增強耐力設備(SEED)動態隨機存取記憶體(DRAM)緩衝區,用於儲存資料;
控制器,用於控制對快閃記憶體和動態隨機存取記憶體(DRAM)緩衝區的存取,以響應主機界面接收的主機讀和主機寫,該控制器將主機資料寫入到動態隨機存取記憶體(DRAM)緩衝區中;
超級增強耐力設備(SEED)硬碟固體狀態驅動機(SSD)耐用轉換層(ETL),在該動態隨機存取記憶體(DRAM)緩衝區中執行,且由使用耐用轉換層(ETL)的控制器控制,以提供暫時儲存以減少對快閃記憶體的磨損;
資料寫緩衝記憶體,該資料寫緩衝記憶體儲存在動態隨機存取記憶體(DRAM)緩衝區中,且藉由該控制器進行管理;
快閃記憶體界面,用於抹除塊和對快閃記憶體頁進行寫,其中,塊是頁大小的倍數;
快閃記憶體,用於儲存來自於硬碟固體狀態驅動機動態隨機存取記憶體(SSD DRAM)緩衝區的分組的元資料;
當電源損失時,使用備用電源為該動態隨機存取記憶體(DRAM)緩衝區、該快閃記憶體和該控制器提供電源,該備用電源具有足夠的容量,使該控制器將在耐用轉換層(ETL)中所需要的資料備份到快閃記憶體中。
A Super Enhanced Endurance Equipment (SEED) that includes:
a host interface for receiving host read and host writes from the host;
Super Enhanced Endurance Equipment (SEED) Dynamic Random Access Memory (DRAM) buffer for storing data;
a controller for controlling access to the flash memory and the dynamic random access memory (DRAM) buffer in response to host read and host writes received by the host interface, the controller writing the host data to the dynamic random Access memory (DRAM) buffer;
Super Enhanced Endurance Equipment (SEED) Hard Disk Solid State Drive (SSD) Durable Translation Layer (ETL), implemented in this Dynamic Random Access Memory (DRAM) buffer, and controlled by the use of a Durable Translation Layer (ETL) Control to provide temporary storage to reduce wear on flash memory;
Data write buffer memory, the data write buffer memory is stored in a dynamic random access memory (DRAM) buffer, and is managed by the controller;
Flash memory interface for erasing blocks and writing to flash memory pages, where the block is a multiple of the page size;
Flash memory for storing metadata from packets of a hard disk solid state drive dynamic random access memory (SSD DRAM) buffer;
When the power supply is lost, the backup power supply is used to supply power to the dynamic random access memory (DRAM) buffer, the flash memory, and the controller, and the backup power supply has sufficient capacity so that the controller will be in a durable conversion The data required in the layer (ETL) is backed up to the flash memory.
如申請專利範圍第13項所述之超級增強耐力設備,其進一步包括:
動態隨機存取記憶體(DRAM)緩衝區中的備用交換塊;
控制器,該控制器使用該動態隨機存取記憶體(DRAM)緩衝區中的備用交換區域,以合併具有新資料的快閃記憶體中的有效資料,以產生組合資料,當覆蓋寫快閃記憶體中現有塊中的全部頁或者局部頁時,將新資料寫到與快閃記憶體中現有塊相關的動態隨機存取記憶體(DRAM)緩衝區的備用塊中,對快閃記憶體中的不同塊,當額外的新資料需要備用塊時,將具有新資料和來自快閃記憶體的現有塊的資料的備用塊的組合寫入該快閃記憶體中的備用塊中,將快閃記憶體中現有塊中的所有頁的標記頁狀態作為垃圾頁。
The super-enhanced endurance device according to claim 13 of the patent application, further comprising:
An alternate swap block in a dynamic random access memory (DRAM) buffer;
a controller that uses the alternate swap area in the dynamic random access memory (DRAM) buffer to merge valid data in the flash memory with new data to generate combined data, when the overlay write flashes When all pages or partial pages in the existing block in the memory are written, the new data is written to the spare block of the dynamic random access memory (DRAM) buffer associated with the existing block in the flash memory, and the flash memory is Different blocks in the block, when additional new data requires a spare block, a combination of spare blocks with new data and data from existing blocks of the flash memory is written into the spare block in the flash memory, which will be fast The status of the tag page of all pages in the existing block in flash memory is used as a junk page.
如申請專利範圍第13項所述之超級增強耐力設備,其進一步包括:
壞頁管理器,用於跟蹤快閃記憶體中的壞頁;
該壞頁管理器,用於執行以下操作,包括:
當快閃記憶體中的抹除塊被抹除時,在抹除計數表中,為該抹除塊增加抹除計數;
讀頁狀態表,用於抹除塊,該頁狀態表有大量頁條目,每一個頁條目儲存該抹除塊中的頁的狀態,該狀態包括表示一個壞頁或者好頁;
對應該抹除塊中的每一頁,從該頁狀態表讀取該頁的頁條目;
當從該頁狀態表獲取的頁狀態是壞的,處理下一頁;
當從該頁狀態表獲取的頁狀態是好的,繼續處理該頁中的未抹除位;
當該未抹除位的數量超過了第一門檻值,修改頁狀態以在該頁條目中表明該頁是壞頁,並且增加壞頁計數;
當該未抹除位的數量在該第一門檻值和第二門檻值之間,且頁狀態表的頁狀態表明需要錯誤校正碼(error-correction code,ECC)保護,處理下一頁;
當該未抹除位的數量在該第一門檻值和第二門檻值之間,且頁狀態表的頁狀態表明不需要錯誤校正碼(ECC)保護,改變該頁條目中該頁的狀態,藉由標記該頁的頁狀態為保護頁,以表明需要錯誤校正碼(ECC)保護,增加錯誤校正碼(ECC)保護頁計數;
當該未抹除位的數量超過該第三門檻值,表明該抹除塊是壞塊,藉由標記該頁的頁狀態為壞頁,不再向該抹除塊寫新資料;
藉由計算該抹除塊中的壞頁識別抹除塊,且允許在好塊中存在壞頁,以延長快閃記憶體的耐力。
The super-enhanced endurance device according to claim 13 of the patent application, further comprising:
Bad page manager for tracking bad pages in flash memory;
The bad page manager is used to perform the following operations, including:
When the erase block in the flash memory is erased, in the erase count table, an erase count is added for the erase block;
Reading a page status table for erasing a block, the page status table having a plurality of page entries, each page entry storing a state of a page in the erase block, the state comprising indicating a bad page or a good page;
Each page in the block should be erased, and the page entry of the page is read from the page state table;
When the page status obtained from the page status table is bad, the next page is processed;
When the page status obtained from the page status table is good, continue processing the unerased bits in the page;
When the number of unerased bits exceeds the first threshold, the page state is modified to indicate in the page entry that the page is a bad page, and the bad page count is incremented;
When the number of the unerased bits is between the first threshold and the second threshold, and the page state of the page state table indicates that an error-correction code (ECC) protection is required, processing the next page;
When the number of the unerased bits is between the first threshold and the second threshold, and the page state of the page state table indicates that no error correction code (ECC) protection is required, changing the state of the page in the page entry, By marking the page state of the page as a protection page to indicate that an error correction code (ECC) protection is required, an error correction code (ECC) is added to protect the page count;
When the number of the unerased bits exceeds the third threshold, indicating that the erase block is a bad block, by marking the page state of the page as a bad page, no new data is written to the erase block;
The erase block is identified by calculating the bad page in the erase block, and a bad page is allowed in the good block to extend the endurance of the flash memory.
如申請專利範圍第15項所述之超級增強耐力設備,其進一步包括:
錯誤校正碼(ECC)產生器,用於產生錯誤校正碼(ECC),以使每單位資料具有更多的位,該資料儲存在具有較低可靠性頁的快閃記憶體中;
低密度同位元檢查(Low Density Parity Check,LDPC)產生器,由錯誤校正碼(ECC)管理器觸發,用於為快閃記憶體中具有高可靠性的資料,產生低密度同位元檢查(LDPC)碼,因此,該錯誤校正碼(ECC)碼是動態的。
The super-enhanced endurance device of claim 15, wherein the method further comprises:
An error correction code (ECC) generator for generating an error correction code (ECC) such that each unit of data has more bits, the data being stored in a flash memory having a lower reliability page;
Low Density Parity Check (LDPC) generator, triggered by an Error Correction Code (ECC) Manager, for low-density parity check (LDPC) for high-reliability data in flash memory The code, therefore, the error correction code (ECC) code is dynamic.
一種用於在主機上執行之虛擬記憶體設備驅動器,其包括:
主機耐用轉換層(ETL),用於在主機上執行,增加快閃記憶體耐力,該快閃記憶體具有低抹除週期壽命;
主機動態隨機存取記憶體(DRAM)緩衝區,位於主機上,藉由主機控制器控制,使用該主機耐用轉換層(ETL)在主機上提供暫時儲存以減少對快閃記憶體的磨損;
在硬碟固體狀態驅動機(SSD)上的超級增強耐力設備(SEED),該超級增強耐力設備(SEED)用於增加具有低抹除循環壽命的快閃記憶體的耐力;
在超級增強耐力設備硬碟固體狀態驅動機(SEED DRAM)緩衝區中的超級增強耐力設備(SEED)耐用轉換層(ETL),藉由超級增強耐力設備(SEED)控制器控制,該超級增強耐力設備耐用轉換層(SEED ETL)提供暫時儲存以減少快閃記憶體磨損。
A virtual memory device driver for execution on a host, comprising:
Host Durable Translation Layer (ETL) for execution on the host to increase flash memory endurance, the flash memory has a low erase cycle life;
a host dynamic random access memory (DRAM) buffer, located on the host, controlled by the host controller, using the host durable conversion layer (ETL) to provide temporary storage on the host to reduce wear on the flash memory;
Super Enhanced Endurance Equipment (SEED) on a hard disk solid state drive (SSD) for increasing the endurance of flash memory with low erase cycle life;
Super Enhanced Endurance Equipment (SEED) Durable Conversion Layer (ETL) in the Super Enhanced Endurance Device Hard Disk Solid State Drive (SEED DRAM) buffer, controlled by Super Enhanced Endurance Equipment (SEED) controller, this super enhanced endurance The Equipment Durable Conversion Layer (SEED ETL) provides temporary storage to reduce flash memory wear.
如申請專利範圍第17項所述之虛擬記憶體設備驅動器,其進一步包括:
刷新管理器,用於將儲存在主機DRAM緩衝區中的主機耐用轉換層(ETL)中的資料刷新到超級增強耐力設備動態隨機存取記憶體(SEED DRAM)緩衝區的超級增強耐力設備耐用轉換層(SEED ETL)中,且當電源損失時,刷新到快閃記憶體驅動系統的快閃記憶體中;
恢復管理器,用於當電源恢復時,重新加載從快閃記憶體驅動系統的快閃記憶體和超級增強耐力設備動態隨機存取記憶體(SEED DRAM)緩衝區獲取的刷新資料,並刷新到主機動態隨機存取記憶體(DRAM)緩衝區的主機耐用轉換層(ETL)中。
The virtual memory device driver of claim 17, further comprising:
A refresh manager for refreshing data in the host's Durable Translation Layer (ETL) stored in the host DRAM buffer to the Super Enhanced Endurance Device Dynamic Random Access Memory (SEED DRAM) buffer for super-enhanced endurance devices In the layer (SEED ETL), and when the power supply is lost, it is refreshed into the flash memory of the flash memory drive system;
The recovery manager is configured to reload the refresh data obtained from the flash memory of the flash memory drive system and the super-enhanced device dynamic random access memory (SEED DRAM) buffer when the power is restored, and refreshed to Host Dynamic Random Access Memory (DRAM) buffer in the Host Durable Translation Layer (ETL).
如申請專利範圍第17項所述之虛擬記憶體設備驅動器,其進一步包括:
系統業務管理器,用於創建日誌,以跟蹤對硬碟固體狀態驅動機(SSD)的持續的寫活動,並且定期的建立檢查點,以移除完全完成的業務;
硬碟固體狀態驅動機(SSD)業務管理器,用於創建日誌,以跟蹤對快閃記憶體的持續寫活動,並且定期的建立檢查點,以移除完全完成的業務。
The virtual memory device driver of claim 17, further comprising:
A system service manager for creating logs to track ongoing write activity to a hard disk solid state drive (SSD) and periodically establish checkpoints to remove fully completed services;
A hard disk solid state drive (SSD) service manager for creating logs to track persistent write activity to flash memory and periodically establishing checkpoints to remove fully completed services.
如申請專利範圍第17項所述之虛擬記憶體設備驅動器,其進一步包括在主機上的內部清除處理,其包括:
獲取最後一次存取檔案的日期;
使用當前日期,計算自從上次檔案存取日期以來的延時時間;
當該延時時間超過時間門檻值,且該自動清理設置使能時,刪除該檔案,日誌以及分頁,該檔案具有暫時檔案類型;
查找重複的檔案,且刪除該重複檔案;
重複主機上其它的檔案。
The virtual memory device driver of claim 17, further comprising an internal clearing process on the host, comprising:
Get the date the file was last accessed;
Use the current date to calculate the delay time since the last file access date;
When the delay time exceeds the time threshold and the automatic cleaning setting is enabled, the file, the log, and the paging are deleted, and the file has a temporary file type;
Find duplicate files and delete the duplicate file;
Repeat the other files on the host.
一種在主機上執行之虛擬記憶體設備驅動器,其包括:
加密引擎,用於耦合接收截獲的高級別主機寫,並產生加密資料;
壓縮引擎,用於耦合接收截獲的高級別次主機寫資料,並產生壓縮資料;
資料寫緩衝記憶體,用於儲存主機寫資料;
資料讀緩衝記憶體,用於儲存主機讀資料;
分組引擎,用於將儲存在該資料寫緩衝記憶體中的資料分成元頁;
取消分組引擎,用於將儲存在該元頁中的資料取消分組為可以儲存在該資料讀緩衝記憶體中的儲存的資料;
其中,將該元頁從分組引擎發送到卷管理器以轉移到快閃記憶體,同時,藉由取消分組引擎接收儲存在快閃記憶體中的元頁;
電源監測器,用於檢測電源故障;
主機動態隨機存取記憶體(DRAM)緩衝區,用於儲存主機耐用轉換層(ETL);
刷新管理器,用於當電源損失時,將儲存在主機動態隨機存取記憶體(DRAM)緩衝區中的主機耐用轉換層(ETL)中的資料刷新到硬碟固體狀態驅動機(SSD)耐用轉換層(ETL)動態隨機存取記憶體(DRAM)中,然後儲存到硬碟固體狀態驅動機(SSD)系統的快閃記憶體中;
恢復管理器,用於當電源恢復時,加載從硬碟固體狀態驅動機(SSD)系統的快閃記憶體獲取的刷新資料,然後刷新到主機動態隨機存取記憶體(DRAM)緩衝區的主機耐用轉換層(ETL)中。
A virtual memory device driver executing on a host, comprising:
An encryption engine for coupling to receive intercepted high-level host writes and generating encrypted data;
a compression engine for coupling to receive the intercepted high-level secondary host to write data and generate compressed data;
Data write buffer memory for storing data written by the host;
Data read buffer memory for storing host read data;
a grouping engine for dividing the data stored in the data write buffer memory into a metapage;
Ungrouping the data for ungrouping the data stored in the metapage into stored data that can be stored in the data read buffer memory;
The meta page is sent from the packet engine to the volume manager for transfer to the flash memory, and the meta page stored in the flash memory is received by canceling the packet engine;
Power monitor for detecting power failures;
a host dynamic random access memory (DRAM) buffer for storing a host durable conversion layer (ETL);
The refresh manager is used to flush data in the host's Durable Translation Layer (ETL) stored in the host dynamic random access memory (DRAM) buffer to the hard disk solid state drive (SSD) when the power supply is lost. Translation layer (ETL) dynamic random access memory (DRAM), and then stored in the flash memory of the hard disk solid state drive (SSD) system;
Recovery manager for loading refresh data obtained from the flash memory of the hard disk solid state drive (SSD) system when the power is restored, and then refreshing the host to the host dynamic random access memory (DRAM) buffer In the durable conversion layer (ETL).
如申請專利範圍第21項所述之虛擬記憶體設備驅動器,其進一步包括:
業務管理器,用於記錄向快閃記憶體資料寫開始和完成的事件;
恢復管理器,用於讀取該業務管理器記錄的事件,以在電源恢復後,撤消或重做向快閃記憶體的資料寫。
The virtual memory device driver of claim 21, further comprising:
a service manager for recording events that start and complete writing to flash memory data;
The recovery manager is configured to read an event recorded by the service manager to undo or redo the data written to the flash memory after the power is restored.
一種耐力快閃記憶體檔案系統,其包括:
高級別檔案過濾驅動器,用於在主機上執行,並攔截向快閃記憶體驅動器的高級別主機寫;
加密解密引擎,用於耦合接收由高級別檔案過濾驅動器截獲的高級別主機寫資料,並產生加密資料和解密資料;
壓縮解壓引擎,用於耦合接收由高級別檔案過濾驅動器截獲的高級別次主機寫資料,並產生壓縮資料和解壓縮資料;
其中,壓縮的資料和加密的資料被發送到一個在主機上執行的檔案系統驅動器(File System Driver,FSD)上;
低級別檔案過濾驅動器,用於在主機上執行,並攔截向快閃記憶體驅動器的低級別檔案系統主機寫;
資料寫緩衝記憶體,用於儲存主機寫資料;
資料讀緩衝記憶體,用於儲存主機讀資料;
分組引擎,用於將儲存在資料寫緩衝記憶體中的資料分成元頁;
取消分組引擎,用於將儲存在元頁中的資料取消分組為可以儲存在資料讀緩衝記憶體中的儲存的資料;
其中,將該元頁從分組引擎發送到卷管理器以轉移到快閃記憶體,同時,藉由取消分組引擎接收儲存在快閃記憶體中的元頁;
檔案優先級標籤分類器,用於為主機寫產生資料類型;
任務策略分配器,用於為任務分配優先級,包括根據資料類型向主機寫入資料,該優先級是來自於檔案優先級標籤分類器的資料類型的函數;
性能調節器,用於調整任務的優先級;
目標分類器,用於根據該檔案優先級標籤分類器產生的資料類型,對主機寫資料進行分類;
業務系統,用於記錄向快閃記憶體資料寫開始和完成的事件;
刷新管理器,用於當電源損失時,將儲存在主機動態隨機存取記憶體(DRAM)中的資料刷新到硬碟固體狀態驅動機動態隨機存取記憶體(SSD DRAM),然後到該快閃記憶體驅動系統中的快閃記憶體;
恢復管理器,用於從快閃記憶體驅動系統中的快閃記憶體獲取刷新的資料,然後當電源恢復時,刷新到該主機動態隨機存取記憶體(DRAM)中;
磁碟微型端口驅動器,用於管理該快閃記憶體驅動系統的特定協議功能。
An endurance flash memory file system comprising:
A high-level file filter driver that is executed on the host and intercepts high-level host writes to the flash memory drive;
An encryption and decryption engine for coupling to receive high-level host write data intercepted by a high-level file filter driver, and generating encrypted data and decrypted data;
a compression and decompression engine for coupling to receive high-level secondary host write data intercepted by a high-level file filter driver, and generating compressed data and decompressing data;
The compressed data and the encrypted data are sent to a File System Driver (FSD) executed on the host;
a low-level file filter driver for execution on the host and intercepting writes to low-level file system hosts of the flash memory drive;
Data write buffer memory for storing data written by the host;
Data read buffer memory for storing host read data;
a grouping engine for dividing the data stored in the data write buffer memory into metapage pages;
Ungrouping the data for ungrouping the data stored in the metapage into stored data that can be stored in the data read buffer memory;
The meta page is sent from the packet engine to the volume manager for transfer to the flash memory, and the meta page stored in the flash memory is received by canceling the packet engine;
a file priority label classifier for generating a data type for a host;
a task policy allocator for assigning priorities to tasks, including writing data to a host according to a data type, the priority being a function of a data type from a file priority label classifier;
a performance adjuster that adjusts the priority of the task;
a target classifier, configured to classify the host write data according to the data type generated by the file priority label classifier;
a business system for recording events that start and complete writing to flash memory data;
The refresh manager is used to refresh the data stored in the host dynamic random access memory (DRAM) to the hard disk solid state drive dynamic random access memory (SSD DRAM) when the power is lost, and then to the fast Flash memory in a flash memory drive system;
a recovery manager for acquiring the refreshed data from the flash memory in the flash memory drive system, and then refreshing into the host dynamic random access memory (DRAM) when the power is restored;
A disk miniport driver that manages the specific protocol functions of the flash memory drive system.
一種超級增強耐力設備,其包括:
主機界面,用於接收來自主機的主機讀和主機寫;
動態隨機存取記憶體(DRAM)緩衝區,用於儲存資料;
控制器,用於控制對快閃記憶體和動態隨機存取記憶體(DRAM)緩衝區的存取,以響應主機界面接收的主機讀和主機寫,該控制器將主機資料寫入到動態隨機存取記憶體(DRAM)緩衝區中;
儲存在動態隨機存取記憶體(DRAM)緩衝區中的資料寫緩衝記憶體,用於管理該控制器,該控制器管理非暫時資料;
快閃記憶體的增強快閃記憶體部分,用於配置為強健頁使用,其中,該快閃記憶體的保留部分被配置為弱頁;
編程抹除管理器,用於控制快閃記憶體的頁寫或塊抹除時間,以增強耐力和減少保留時間;
刷新管理器,用於控制保留在增強快閃記憶體部分的刷新時間。
A super-enhanced endurance device comprising:
a host interface for receiving host read and host writes from the host;
Dynamic Random Access Memory (DRAM) buffer for storing data;
a controller for controlling access to the flash memory and the dynamic random access memory (DRAM) buffer in response to host read and host writes received by the host interface, the controller writing the host data to the dynamic random Access memory (DRAM) buffer;
a data write buffer memory stored in a dynamic random access memory (DRAM) buffer for managing the controller, the controller managing non-transitory data;
An enhanced flash memory portion of the flash memory for configuring for use as a robust page, wherein the reserved portion of the flash memory is configured as a weak page;
Programmable erase manager for controlling page write or block erase time of flash memory to enhance endurance and reduce retention time;
A refresh manager that controls the refresh time that remains in the enhanced flash memory portion.
如申請專利範圍第24項所述之超級增強耐力設備,其進一步包括:
控制器,用於控制對該增強快閃記憶體部分的存取,以控制該頁寫或塊抹除時間來增強快閃記憶體的耐力。
The super-enhanced endurance device of claim 24, further comprising:
A controller for controlling access to the enhanced flash memory portion to control the page write or block erase time to enhance the endurance of the flash memory.
TW102133328A 2012-12-28 2013-09-14 Virtual memory device (vmd) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of temp files to ramdisks for enhanced flash endurance TWI506431B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/730,797 US8954654B2 (en) 2008-06-18 2012-12-28 Virtual memory device (VMD) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of temp files to ramdisks for enhanced flash endurance

Publications (2)

Publication Number Publication Date
TW201426305A true TW201426305A (en) 2014-07-01
TWI506431B TWI506431B (en) 2015-11-01

Family

ID=49828827

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102133328A TWI506431B (en) 2012-12-28 2013-09-14 Virtual memory device (vmd) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of temp files to ramdisks for enhanced flash endurance

Country Status (2)

Country Link
CN (1) CN103488578B (en)
TW (1) TWI506431B (en)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI557559B (en) * 2015-01-06 2016-11-11 國立臺灣科技大學 Method for writing into and reading from bad pages of a flash memory
TWI671632B (en) * 2018-10-24 2019-09-11 財團法人工業技術研究院 Memory device and refresh information coherence method thereof
TWI678621B (en) * 2018-06-01 2019-12-01 群聯電子股份有限公司 Memory management method, memory storage device and memory control circuit unit
TWI689821B (en) * 2018-12-24 2020-04-01 瑞昱半導體股份有限公司 Usb adapting circuit
CN111949220A (en) * 2020-09-03 2020-11-17 合肥沛睿微电子股份有限公司 Abnormal power failure recovery method for storage device and storage device
TWI718516B (en) * 2019-04-01 2021-02-11 慧榮科技股份有限公司 Write mangement for protecting erased blocks in flash memory
TWI765225B (en) * 2016-02-24 2022-05-21 南韓商三星電子股份有限公司 Mass storage device, and system and method accessing to mass storage
TWI771654B (en) * 2019-09-26 2022-07-21 日商鎧俠股份有限公司 Memory system, memory system control method, and information processing system
TWI771854B (en) * 2019-04-01 2022-07-21 慧榮科技股份有限公司 Write mangement for protecting erased blocks in flash memory

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103823639A (en) * 2014-02-19 2014-05-28 曙光信息产业(北京)有限公司 Method and system for migrating objects
WO2015127327A1 (en) * 2014-02-23 2015-08-27 Rambus Inc. Distributed procedure execution and file systems on a memory interface
CN105224438A (en) * 2014-06-11 2016-01-06 中兴通讯股份有限公司 Based on customer consumption based reminding method and the device of net dish
CN104156181B (en) * 2014-08-18 2017-02-15 上海众恒信息产业股份有限公司 Virtual resource cross access and security isolation method
CN109766302B (en) * 2014-09-12 2022-09-16 华为技术有限公司 Method and device for managing equipment
CN105404468B (en) * 2014-11-17 2020-05-26 晶天电子(深圳)有限公司 Green and non-solid state disk applications and drives therefor
WO2016082196A1 (en) * 2014-11-28 2016-06-02 华为技术有限公司 File access method and apparatus and storage device
CN105808151B (en) * 2014-12-29 2019-09-27 华为技术有限公司 Solid state hard disk stores the data access method of equipment and solid state hard disk storage equipment
CN105589912B (en) * 2015-03-27 2019-09-03 上海磁宇信息科技有限公司 A kind of method and storage organization using MRAM processing frequency written document
CN106155580B (en) * 2015-04-27 2019-04-12 华为技术有限公司 A kind of storage method and system based on embedded multi-media card eMMC
CN105630405B (en) * 2015-04-29 2018-09-14 上海磁宇信息科技有限公司 A kind of storage system and the reading/writing method using the storage system
CN105630701B (en) * 2015-05-29 2018-09-14 上海磁宇信息科技有限公司 Data storage device and the reading/writing method for using unavailable page table or unavailable piece of table
CN105630705B (en) * 2015-06-10 2019-09-17 上海磁宇信息科技有限公司 Data storage device and the reading/writing method for using block substitution table
CN105608016B (en) * 2015-08-05 2018-11-23 上海磁宇信息科技有限公司 Solid state hard disk of the DRAM in conjunction with MRAM and the storage card using MRAM
US20170068458A1 (en) * 2015-09-03 2017-03-09 Qualcomm Incorporated Hardware-accelerated storage compression
KR102435873B1 (en) * 2015-12-18 2022-08-25 삼성전자주식회사 Storage device and read reclaim method thereof
CN107025061A (en) * 2016-01-29 2017-08-08 后旺科技股份有限公司 The access method of combined type hard disk
US10318423B2 (en) * 2016-12-14 2019-06-11 Macronix International Co., Ltd. Methods and systems for managing physical information of memory units in a memory device
JP6677627B2 (en) 2016-12-20 2020-04-08 株式会社ソニー・インタラクティブエンタテインメント Information processing apparatus and memory access method
KR20180083093A (en) * 2017-01-12 2018-07-20 에스케이하이닉스 주식회사 Memory system and operating method of memory system
KR20180123385A (en) * 2017-05-08 2018-11-16 에스케이하이닉스 주식회사 Memory system and method of wear-leveling for the same
CN107479825A (en) * 2017-06-30 2017-12-15 华为技术有限公司 A kind of storage system, solid state hard disc and date storage method
CN109739340B (en) * 2017-08-15 2021-04-13 金钱猫科技股份有限公司 Energy-saving and power-saving data processing method and terminal
CN107957852B (en) * 2017-10-13 2021-08-13 记忆科技(深圳)有限公司 Method for improving performance consistency of solid state disk
CN108182154A (en) * 2017-12-22 2018-06-19 深圳大普微电子科技有限公司 A kind of reading/writing method and solid state disk of the journal file based on solid state disk
CN108052295B (en) * 2017-12-28 2020-11-10 深圳市金泰克半导体有限公司 Data storage method, solid state disk, host and storage system
CN110413545B (en) * 2018-04-28 2023-06-20 伊姆西Ip控股有限责任公司 Storage management method, electronic device, and computer program product
CN110580230B (en) * 2018-06-11 2022-11-22 群联电子股份有限公司 Memory management method, memory storage device and memory control circuit unit
KR102624911B1 (en) * 2018-06-13 2024-01-12 삼성전자주식회사 Method for increasing endurance of flash memory by improved metadata management
US10470264B1 (en) * 2018-08-24 2019-11-05 Monolithic Power Systems, Inc. Smart communication interface for LED matrix control
TWI696951B (en) 2018-08-31 2020-06-21 威剛科技股份有限公司 System and method for processing abnormal power failure of storage device
TWI688861B (en) 2018-09-18 2020-03-21 新唐科技股份有限公司 Data processing apparatus and data protection method thereof
US20200127685A1 (en) * 2018-10-19 2020-04-23 Nyquist Semiconductor Limited Systems and methods for a hybrid non-volatile storage system
US10831379B2 (en) * 2018-10-30 2020-11-10 Western Digital Technologies, Inc. Method for enhancing SSD endurance by utilizing host DRAM
CN109614042B (en) * 2018-11-30 2022-09-02 维沃移动通信有限公司 Method for storing log information and terminal equipment
CN109410869A (en) * 2018-12-11 2019-03-01 惠科股份有限公司 A kind of read method of data, reading device and display device
CN109410870A (en) * 2018-12-11 2019-03-01 惠科股份有限公司 Sequential control circuit, method for reading data and display device
KR20200074464A (en) * 2018-12-17 2020-06-25 에스케이하이닉스 주식회사 Data Storage Device and Operation Method Thereof, Storage System Having the Same
KR20200076923A (en) * 2018-12-20 2020-06-30 에스케이하이닉스 주식회사 Storage device, controller and operating method of storage device thereof
KR20200085513A (en) * 2019-01-07 2020-07-15 에스케이하이닉스 주식회사 Data Storage Device and Operation Method Thereof, Storage System Having the Same
CN109729170A (en) * 2019-01-09 2019-05-07 武汉巨正环保科技有限公司 A kind of cloud computing data backup of new algorithm and restoring method
CN109799959B (en) * 2019-01-22 2020-07-10 华中科技大学 Method for improving parallelism of open channel solid-state disk writing
CN111816239B (en) * 2019-04-12 2022-11-11 杭州宏杉科技股份有限公司 Disk detection method and device, electronic equipment and machine-readable storage medium
CN110188050A (en) * 2019-05-29 2019-08-30 中南大学 A kind of multichannel based on N-gram algorithm prefetches design method on demand
CN110262980B (en) * 2019-06-17 2023-05-02 吉林大学 High-speed storage system based on limited-life storage medium
CN110750213A (en) * 2019-09-09 2020-02-04 华为技术有限公司 Hard disk management method and device
US11262830B2 (en) 2019-11-11 2022-03-01 Microsoft Technology Licensing, Llc Managing ephemeral storage on a computing node
CN111597124B (en) * 2020-04-21 2023-05-05 重庆大学 Method, system and storage medium for organizing data of persistent memory file system
US11314456B2 (en) 2020-07-23 2022-04-26 Micron Technology, Inc. Memory device performance based on storage traffic pattern detection
TWI755059B (en) * 2020-09-11 2022-02-11 大陸商合肥沛睿微電子股份有限公司 Storage device and method for sudden power off recovery thereof
CN112181870B (en) * 2020-09-17 2022-10-28 重庆大学 Memory page management method, device and equipment and readable storage medium
CN112506442A (en) * 2020-12-22 2021-03-16 深圳市时创意电子有限公司 Flash memory chip data processing method and device, electronic equipment and storage medium
CN112860594B (en) * 2021-01-21 2022-11-01 华中科技大学 Solid-state disk address remapping method and device and solid-state disk
CN112817532A (en) * 2021-01-27 2021-05-18 杭州爱科科技股份有限公司 Data processing method, device and computer storage medium
WO2022177561A1 (en) * 2021-02-18 2022-08-25 Futurewei Technologies, Inc. Data access processing agnostic to mapping unit size
CN113569277B (en) * 2021-06-25 2024-01-26 北京鼎普科技股份有限公司 Method and device for checking security document data and electronic equipment
CN114911631B (en) * 2022-07-18 2022-10-21 深圳市泛联信息科技有限公司 Global resource management method and system based on persistent memory technology
CN115509798B (en) * 2022-09-27 2023-06-27 青海师范大学 Memory reading optimization method combining refreshing, copy and LDPC hybrid decoding
CN115686372B (en) * 2022-11-07 2023-07-25 武汉麓谷科技有限公司 ZNS solid state disk ZRWA function-based data management method
CN115904256B (en) * 2023-02-20 2023-06-13 中电装备山东电子有限公司 Data storage method and memory
CN117472295B (en) * 2023-12-28 2024-03-22 合肥康芯威存储技术有限公司 Memory, data processing method, device and medium

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5799200A (en) * 1995-09-28 1998-08-25 Emc Corporation Power failure responsive apparatus and method having a shadow dram, a flash ROM, an auxiliary battery, and a controller
US6523102B1 (en) * 2000-04-14 2003-02-18 Interactive Silicon, Inc. Parallel compression/decompression system and method for implementation of in-memory compressed cache improving storage density and access speed for industry standard memory subsystems and in-line memory modules
TWI384365B (en) * 2009-01-19 2013-02-01 Asustek Comp Inc Control system and control method of virtual memory
TW201122997A (en) * 2009-12-31 2011-07-01 Soaraway Technology Co Ltd Computer having a solid state drive and method of using a solid state drive in a computer
CN102193873B (en) * 2010-03-04 2013-06-05 中国科学院微电子研究所 Method of quickly reading and writing mass data file

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI557559B (en) * 2015-01-06 2016-11-11 國立臺灣科技大學 Method for writing into and reading from bad pages of a flash memory
TWI765225B (en) * 2016-02-24 2022-05-21 南韓商三星電子股份有限公司 Mass storage device, and system and method accessing to mass storage
TWI678621B (en) * 2018-06-01 2019-12-01 群聯電子股份有限公司 Memory management method, memory storage device and memory control circuit unit
TWI671632B (en) * 2018-10-24 2019-09-11 財團法人工業技術研究院 Memory device and refresh information coherence method thereof
US10692558B2 (en) 2018-10-24 2020-06-23 Industrial Technology Research Institute Memory device and refresh information coherence method thereof
TWI689821B (en) * 2018-12-24 2020-04-01 瑞昱半導體股份有限公司 Usb adapting circuit
TWI718516B (en) * 2019-04-01 2021-02-11 慧榮科技股份有限公司 Write mangement for protecting erased blocks in flash memory
US11175841B2 (en) 2019-04-01 2021-11-16 Silicon Motion, Inc. Write management of flash memory
TWI771854B (en) * 2019-04-01 2022-07-21 慧榮科技股份有限公司 Write mangement for protecting erased blocks in flash memory
TWI771654B (en) * 2019-09-26 2022-07-21 日商鎧俠股份有限公司 Memory system, memory system control method, and information processing system
US11886742B2 (en) 2019-09-26 2024-01-30 Kioxia Corporation Memory system control method for power-level state of a host via PCIe bus including receiving optimized buffer flush/fill (OBFF) messages over the PCIe bus
CN111949220A (en) * 2020-09-03 2020-11-17 合肥沛睿微电子股份有限公司 Abnormal power failure recovery method for storage device and storage device
CN111949220B (en) * 2020-09-03 2023-12-08 合肥沛睿微电子股份有限公司 Abnormal power-off recovery method of storage device and storage device

Also Published As

Publication number Publication date
CN103488578B (en) 2016-05-25
CN103488578A (en) 2014-01-01
TWI506431B (en) 2015-11-01

Similar Documents

Publication Publication Date Title
TWI506431B (en) Virtual memory device (vmd) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of temp files to ramdisks for enhanced flash endurance
US9548108B2 (en) Virtual memory device (VMD) application/driver for enhanced flash endurance
US9547589B2 (en) Endurance translation layer (ETL) and diversion of temp files for reduced flash wear of a super-endurance solid-state drive
US8954654B2 (en) Virtual memory device (VMD) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of temp files to ramdisks for enhanced flash endurance
US9405621B2 (en) Green eMMC device (GeD) controller with DRAM data persistence, data-type splitting, meta-page grouping, and diversion of temp files for enhanced flash endurance
US8959280B2 (en) Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear
US9720616B2 (en) Data-retention controller/driver for stand-alone or hosted card reader, solid-state-drive (SSD), or super-enhanced-endurance SSD (SEED)
US11714750B2 (en) Data storage method and system with persistent memory and non-volatile memory
KR101522848B1 (en) Self-journaling and hierarchical consistency for non-volatile storage
US20190294345A1 (en) Data-Retention Controller Using Mapping Tables in a Green Solid-State-Drive (GNSD) for Enhanced Flash Endurance
US9626288B2 (en) Address translation for a non-volatile memory storage device
US8909986B2 (en) Data storing method for solid state drive to preserve data integrity after power failure
US10127166B2 (en) Data storage controller with multiple pipelines
US10275310B2 (en) Updating exclusive-or parity data
US20130013980A1 (en) Data Management in Solid State Storage Devices
TW201403318A (en) Super-endurance solid-state drive with endurance translation layer and diversion of temp files for reduced flash wear
TW201619971A (en) Green nand SSD application and driver
US10303367B2 (en) Mapping table updating method without updating the first mapping information, memory control circuit unit and memory storage device
TWI498899B (en) Data writing method, memory controller and memory storage apparatus
JP2013016147A (en) Memory controller and nonvolatile storage
CN110390985B (en) Memory management method, memory storage device and memory control circuit unit
US20190034329A1 (en) Data storage method, memory control circuit unit and memory storage device
US10545700B2 (en) Memory management method, memory storage device and memory control circuit unit
CN105404468B (en) Green and non-solid state disk applications and drives therefor
KR20220103378A (en) Apparatus and method for handling data stored in a memory system

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees