HK1220271B - Green nand ssd application and driver - Google Patents
Green nand ssd application and driver Download PDFInfo
- Publication number
- HK1220271B HK1220271B HK16108310.8A HK16108310A HK1220271B HK 1220271 B HK1220271 B HK 1220271B HK 16108310 A HK16108310 A HK 16108310A HK 1220271 B HK1220271 B HK 1220271B
- Authority
- HK
- Hong Kong
- Prior art keywords
- data
- dram
- coupled
- solid
- host
- Prior art date
Links
Description
相关申请的交叉引用CROSS-REFERENCE TO RELATED APPLICATIONS
本申请涉及2013年3月7日提交的序号No.13/788,989的美国专利申请“带有可编程二进制水平每单元(Binary-Levels-Per-Cell)位识别页或块作为具有三级、多级或单级闪存单元的耐久性和保持力闪存控制器”(Endurance and Retention Flash Controllerwith Programmable Binary-Levels-Per-Cell Bits Identifying Pages or Blocks ashaving Triple,Multi,or Single-Level Flash-Memory Cells);2012年12月28日提交的序号No.13/730,797的美国专利申请“带有数据类型拆分、元页分组和临时文件向RAM盘转向用的二级拦截以提高闪存耐久性的虚拟存储器件(VMD)应用/驱动器”(Virtual MemoryDevice(VMD)Application/Driver with Dual-Level Interception for Data-TypeSplitting,Meta-Page Grouping,and Diversion of Temp Files to Ramdisks forEnhanced Flash Endurance);2012年7月2日提交的序号No.13/540,569的美国专利申请“带有耐用转换层(ETL)和临时文件转换以减少闪存损耗的超级耐久固态驱动器(Super-Endurance Solid-State Drive with Endurance Translation Layer(ETL)andDiversion of Temp Files for Reduced Flash Wear)”;2008年6月18日提交的序号No.12/141,879的美国专利申请“基于高性能和耐久性非挥发存储器的存储系统(HighPerformance and Endurance Non-volatile Memory Based Storage Systems)”;以及2013年6月26日提交的序号No.13/927,435的美国专利申请“用以增强闪存耐久性和性能的具有DRAM数据持续性的绿能与非器件驱动器”(Green NAND Device(GND)Driver WithDRAM Data Persistence For Enhanced FLASH Endurance And Performance),其中它们每一个已经公开的内容在此整体并入参考,并且它们都属于同一权利受让人。This application is related to U.S. patent application Ser. No. 13/788,989, filed on March 7, 2013, and entitled "Endurance and Retention Flash Controller with Programmable Binary-Levels-Per-Cell Bits Identifying Pages or Blocks as Having Triple, Multi, or Single-Level Flash-Memory Cells"; and U.S. patent application Ser. No. 13/730,797, filed on December 28, 2012, and entitled "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." No. 13/540,569, filed on July 2, 2012, for “Super-Endurance Solid-State Drive with Endurance Translation Layer (ETL) and Diversion of Temp Files for Reduced Flash Wear”; No. 12/141,879, filed on June 18, 2008, for “High Performance and Endurance Non-volatile Memory Based Storage Systems”; and No. 13/927,435, filed on June 26, 2013, for “Green NAND Device (GND) Driver With DRAM Data Persistence For Enhanced FLASH Endurance and Performance.” Performance), the disclosures of each of which are hereby incorporated by reference in their entirety, and which are all owned by the same assignee.
技术领域Technical Field
本发明一般涉及闪存存储器以及,更特别地,涉及提高闪存存储器耐久性的方法和装置。The present invention relates generally to flash memory and, more particularly, to methods and apparatus for improving the endurance of flash memory.
背景技术Background Art
带有旋转磁盘的硬盘正在日益被利用半导体闪存存储器的更可靠的固态驱动器(SSD)代替。NAND闪存存储器采用在浮栅上存储电荷的电可擦除可编程只读存储器(EEPROM)单元。单元一般用雪崩电流编程,然后利用穿过氧化物薄层的量子力学隧道擦除。可惜的是,在编程或擦除过程中某些电子可能在氧化物薄层中被捕捉。假定编程电压恒定,这些被捕捉的电子在随后的编程周期中减少了该单元中贮存的电荷。往往要提高编程电压来补偿被捕捉的电子。Hard disks with rotating platters are increasingly being replaced by more reliable solid-state drives (SSDs) that utilize semiconductor flash memory. NAND flash memory uses electrically erasable programmable read-only memory (EEPROM) cells that store charge on a floating gate. Cells are typically programmed using an avalanche current and then erased using quantum mechanical tunneling through a thin oxide layer. Unfortunately, during the programming or erasing process, some electrons may become trapped in the oxide layer. Assuming a constant programming voltage, these trapped electrons reduce the charge stored in the cell during subsequent programming cycles. The programming voltage is often increased to compensate for the trapped electrons.
随着闪存存储器的密度和尺寸的增大,该单元的尺寸及其可靠性和寿命已经全都降低。闪存存储器保证能够承受的编程-擦除周期数约为100,000周期,在正常的读写条件下这被认为是一个很长的寿命了。但较小的闪存单元已经经历高得令人不安的损耗。较新式的二级单元闪存存储器具有小于10,000编程-擦除(P/E)周期的耐久性,而对于三级单元(TLC)在约500到约1500P/E周期的耐久性。若当前的趋势继续,则未来的闪存存储器可能只允许300编程-擦除周期。这样低的耐久性可能严重地限制闪存存储器可能的用途,以及用于固态硬盘(SSD)的应用。需要高耐久性的SSD驱动器和耐久性的增强方法。As the density and size of flash memory have increased, the size of the cells, along with their reliability and lifespan, have all decreased. Flash memory is guaranteed to withstand approximately 100,000 program-erase cycles, which is considered a very long lifespan under normal read and write conditions. But smaller flash cells already experience disturbingly high wear rates. Newer secondary cell flash memory has an endurance of less than 10,000 program-erase (P/E) cycles, while triple-level cells (TLC) have an endurance of approximately 500 to approximately 1500 P/E cycles. If current trends continue, future flash memory may only allow for 300 program-erase cycles. Such low endurance could severely limit the possible uses of flash memory, including its application in solid-state drives (SSDs). High-endurance SSD drives and methods for enhancing endurance are needed.
发明内容Summary of the Invention
本发明实施例提供一种器件和方法。该器件包括耦合至主机DRAM的绿能与非固态驱动(GNSD)驱动器,该器件有存储管理器的GNSD驱动器耦合至上部过滤器;耦合至该主机DRAM的数据分组引擎;耦合至该主机DRAM的取消数据分组引擎;以及耦合至该存储管理器的电源管理器;以及耦合至该存储管理器的刷新/恢复管理器。GNSD驱动器耦合至GNSD应用,以及主机DRAM耦合至非挥发存储器。在实施例中,GNSD驱动器还包括压缩/解压缩引擎,耦合至文件系统过滤器;加密/解密引擎,耦合至文件系统过滤器;或高级误差纠错码引擎,耦合至文件系统过滤器。在采用加密/解压缩引擎的实施例中,加密/解密引擎配置为根据数据加密标准或先进加密标准其中之一进行加密。Embodiments of the present invention provide a device and method. The device includes a Green Energy Non-Solid State Drive (GNSD) driver coupled to a host DRAM, the device having a storage manager, a GNSD driver coupled to an upper filter, a data packet engine coupled to the host DRAM, a data unpacking engine coupled to the host DRAM, a power manager coupled to the storage manager, and a refresh/recovery manager coupled to the storage manager. The GNSD driver is coupled to a GNSD application, and the host DRAM is coupled to a non-volatile memory. In an embodiment, the GNSD driver further includes a compression/decompression engine coupled to a file system filter, an encryption/decryption engine coupled to the file system filter, or an advanced error correction code engine coupled to the file system filter. In embodiments employing an encryption/decompression engine, the encryption/decryption engine is configured to perform encryption according to one of a Data Encryption Standard or an Advanced Encryption Standard.
本发明实施例还包括耦合至主机DRAM的GNSD驱动器,其包括数据分组器;DRAM数据写缓存,耦合至数据分组器;取消数据分组器;以及DRAM数据读缓存,耦合至取消数据分组器。数据分组器和取消数据分组器耦合至上部过滤器和下部过滤器。GNSD驱动器耦合至GNSD应用程式。DRAM耦合至非挥发存储器。在实施例中,GNSD驱动器还包括压缩/解压缩引擎,耦合至下部过滤器;去重引擎,耦合至下部过滤器;加密/解密引擎,耦合至下部过滤器;或高级误差纠错码引擎,耦合至下部过滤器。GNSD驱动器还可包括智能数据监控器,耦合至超级增强耐力设备SSD;以及安全引擎,耦合至主机。高级误差纠错码引擎采用基于图形编码或代数编码之一。在一实施例中,高级误差纠错码引擎采用基于图形编码的低密度奇偶校验码。数据分组器和取消数据分组器每个都耦合至用于用户数据的元页分组器;用于FDB的元页分组器;以及用于页文件页的元页分组器。An embodiment of the present invention further includes a GNSD driver coupled to a host DRAM, comprising a data grouper; a DRAM data write buffer coupled to the data grouper; a data degrouper; and a DRAM data read buffer coupled to the data degrouper. The data grouper and the data degrouper are coupled to an upper filter and a lower filter. The GNSD driver is coupled to a GNSD application. The DRAM is coupled to a non-volatile memory. In an embodiment, the GNSD driver further includes a compression/decompression engine coupled to the lower filter; a deduplication engine coupled to the lower filter; an encryption/decryption engine coupled to the lower filter; or an advanced error correction code engine coupled to the lower filter. The GNSD driver may also include an intelligent data monitor coupled to a super-enhanced endurance device (SSD); and a security engine coupled to the host. The advanced error correction code engine employs either pattern-based coding or algebraic coding. In one embodiment, the advanced error correction code engine employs a low-density parity check code based on pattern coding. The data grouper and the ungrouper are each coupled to a metapage grouper for user data; a metapage grouper for the FDB; and a metapage grouper for page file pages.
实施例还提供耦合至主机DRAM的GNSD应用程式,其中包括耦合至GNSD驱动器的SSD内部清除模块;耦合至GNSD驱动器的DRAM分配模块;耦合至GNSD驱动器的驱动器安装模块;或耦合至GNSD驱动器的缓存模式开启/关闭开关。Embodiments also provide a GNSD application coupled to a host DRAM, including an SSD internal clear module coupled to a GNSD driver; a DRAM allocation module coupled to a GNSD driver; a driver installation module coupled to a GNSD driver; or a cache mode on/off switch coupled to a GNSD driver.
实施例提供了一种具有GNSD驱动器的计算机系统主机,该GNSD驱动器耦合至数据分组和取消数据分组在计算机系统主机中;和一种耦合至GNSD驱动器和计算机系统主机的GNSD应用程式。在本实施例中,GNSD驱动器的数据分组和取消数据分组耦合至计算机系统主机的上部过滤器和下部过滤器,以及耦合至非挥发存储器器件的计算机主机。实施例还包括耦合至计算机主机的操作系统的配置和登记设置。An embodiment provides a computer system host having a GNSD driver coupled to data grouping and data degrouping functions within the computer system host; and a GNSD application coupled to the GNSD driver and the computer system host. In this embodiment, the GNSD driver's data grouping and data degrouping functions are coupled to upper and lower filters within the computer system host, and the computer system host is coupled to a non-volatile memory device. The embodiment also includes configuration and registry settings coupled to an operating system within the computer system host.
本发明的实施例包括一种操作耦合至主机DRAM的GNSD驱动器和GNSD应用程式的方法,其包括向主机和GNSD应用程式耦合配置和登记设置;向主机DRAM耦合GNSD驱动器数据分组引擎;向主机DRAM耦合GNSD驱动器取消数据分组引擎;向主机耦合GNSD驱动器的电源管理器;向主机耦合GNSD驱动器的存储器管理;向DRAM耦合GNSD驱动器的刷新/恢复管理器;向上部过滤器和下部过滤器耦合GNSD驱动器数据分组引擎和取消数据分组引擎;以及向超级增强耐久设备(SEED)SSD耦合DRAM。该方法还包括禁止驱动索引、禁止驱动搜索索引、减少页面文件的大小、禁用系统恢复、禁用休眠、禁用预取、减小回收站大小、禁用磁盘碎片整理程序、减少记录;以及禁用性能监视器、禁用写缓存、或禁用写缓存缓冲器刷新。该SEED SSD的耐久性增加至超过规定值并且写放大被减少至小于规定值。An embodiment of the present invention includes a method of operating a GNSD driver and a GNSD application coupled to a host DRAM, the method comprising coupling configuration and registration settings to the host and the GNSD application; coupling a GNSD driver data packet engine to the host DRAM; coupling a GNSD driver de-packet engine to the host DRAM; coupling a GNSD driver power manager to the host; coupling a GNSD driver memory manager to the host; coupling a GNSD driver refresh/recovery manager to the DRAM; coupling the GNSD driver data packet engine and de-packet engine to an upper filter and a lower filter; and coupling the DRAM to a Super Enhanced Endurance Device (SEED) SSD. The method also includes disabling drive indexing, disabling drive search indexing, reducing the size of a page file, disabling system resume, disabling hibernation, disabling prefetching, reducing the size of the recycle bin, disabling a disk defragmenter, reducing logging; and disabling a performance monitor, disabling write caching, or disabling write cache buffer flushing. The SEED SSD endurance is increased to exceed a specified value and write amplification is reduced to less than a specified value.
在实施例中,该方法还包括同步弱表至SEED SSD块的弱表;在弱表中产生页数据的高级纠错码(ECC)数据、提供产生的高级ECC数据;存储该产生的高级ECC数据于主机DRAM中的一个缓存区域,或SEED SSD的剩余区域;以及写入由弱表指示的页。该方法可通过ECC引擎读取页中的数据而继续以及,如果SEED SSD本地ECC引擎确定页中数据是错误的,则ECC引擎读取生成的弱表高级ECC属于错误的页数据;以及用由ECC引擎生成的高级ECC来纠正该错误的页数据。In one embodiment, the method further includes synchronizing a weak table to a weak table of a SEED SSD block; generating advanced error correction code (ECC) data for page data in the weak table, providing the generated advanced ECC data; storing the generated advanced ECC data in a cache area in a host DRAM or a remaining area of the SEED SSD; and writing the page indicated by the weak table. The method may continue by an ECC engine reading the data in the page and, if the SEED SSD local ECC engine determines that the data in the page is erroneous, the ECC engine reading the generated advanced ECC from the weak table to identify the erroneous page data; and correcting the erroneous page data using the advanced ECC data generated by the ECC engine.
在实施例中,该方法还包括分组用户数据为第一元页;分组系统FDB为第二元页;分组页文件页为第三元页;以及存储该第一第二和第三元页至SEED SSD的存储卷。在一个实施例中,该方法包括提供耐久转换层(ETL)以控制对SEED SSD中的闪存存储器的访问以及对DRAM缓冲器的访问;通过ETL检查闪存存储器块和通过ETL识别若所有错误位超过预选高水平阈值则该块为坏块,或者通过ETL若所有错误位超过预选低水平阈值使该块进入弱表;以及同步耦合至DRAM的GNSD驱动器的弱表。In one embodiment, the method further includes grouping user data into a first metapage, grouping system FDB into a second metapage, grouping page file pages into a third metapage, and storing the first, second, and third metapages in a storage volume of a SEED SSD. In one embodiment, the method includes providing an endurance translation layer (ETL) to control access to flash memory in the SEED SSD and access to a DRAM buffer, checking a flash memory block via the ETL and identifying the block as a bad block via the ETL if all error bits exceed a preselected high level threshold, or entering the block into a weak list via the ETL if all error bits exceed a preselected low level threshold, and synchronizing the weak list of a GNSD driver coupled to the DRAM.
本发明的实施例还包括一种增加非挥发闪存存储器耐久性的方法,包括耦合具有ECC引擎的GNSD驱动器至主机DRAM;耦合SEED SSD至主机DRAM;使用主机DRAM为SEED SSD中的所选数据生成高级ECC;和用该高级ECC纠正SEED SSD的错误数据。实施例的方法还包括同步SEED SSD块弱表的弱表;在弱表中产生页数据的高级纠错码(ECC)数据、提供产生的高级ECC数据;存储该产生的高级ECC数据于DRAM中的一个缓存区域或SEED SSD的剩余区域;以及写入由弱表指示的页数据。权利要求18的增加耐久性的方法的实施例,包括读取页中数据;如果SEED SSD本地ECC引擎确定页中数据是错误的,则读取属于页的弱表中产生的高级ECC数据,并用在页中产生的高级ECC数据来纠正该错误的数据。Embodiments of the present invention also include a method for increasing the endurance of a non-volatile flash memory, comprising coupling a GNSD driver having an ECC engine to a host DRAM; coupling a seed SSD to the host DRAM; using the host DRAM to generate advanced ECC for selected data in the seed SSD; and correcting erroneous data in the seed SSD using the advanced ECC. The method of the embodiment also includes synchronizing a weak table of a seed SSD block weak table; generating advanced error correction code (ECC) data for page data in the weak table, providing the generated advanced ECC data; storing the generated advanced ECC data in a cache area of the DRAM or a remaining area of the seed SSD; and writing the page data indicated by the weak table. An embodiment of the method for increasing endurance of claim 18 includes reading data in a page; if the seed SSD local ECC engine determines that the data in the page is erroneous, reading the advanced ECC data generated in the weak table belonging to the page, and correcting the erroneous data using the advanced ECC data generated in the page.
附图简要说明BRIEF DESCRIPTION OF THE DRAWINGS
一般通过参照附图示出本发明,其中:The present invention is generally illustrated by reference to the accompanying drawings, in which:
图1为根据本发明教导的计算机系统的框图;FIG1 is a block diagram of a computer system according to the teachings of the present invention;
图2为根据本发明教导的具有绿能与非固态硬盘驱动器(GNSD)的主机的框图;FIG2 is a block diagram of a host computer having a green non-solid state hard disk drive (GNSD) according to the teachings of the present invention;
图3A为根据本发明教导的具有实现主机读功能的GNSD的计算机系统的功能框图;3A is a functional block diagram of a computer system having a GNSD that implements a host read function according to the teachings of the present invention;
图3B为根据本发明教导的从超级增强耐力设备(SEED)固态硬盘实现读操作的GNSD的功能框图;3B is a functional block diagram of a GNSD implementing a read operation from a Super Enhanced Endurance Device (SEED) solid state drive according to the teachings of the present invention;
图3C为根据本发明教导的具有在掉电模式中实现主机读功能的GNSD的计算机系统的功能框图;3C is a functional block diagram of a computer system having a GNSD that implements host read functionality in power-down mode according to the teachings of the present invention;
图4为根据本发明教导的具有在掉电模式中实现主机写功能的GNSD的计算机系统的功能框图;4 is a functional block diagram of a computer system having a GNSD that implements host write functionality in power-down mode according to the teachings of the present invention;
图5为根据本发明教导的表示DES/AES加密过程的高级框图;FIG5 is a high-level block diagram illustrating a DES/AES encryption process according to the teachings of the present invention;
图6为根据本发明教导的表示数据压缩/解压缩过程的高级框图;FIG6 is a high-level block diagram illustrating a data compression/decompression process according to the teachings of the present invention;
图7为根据本发明教导的在高级误差纠错码工作期间GNSD驱动器与SEED相互作用的框图;FIG7 is a block diagram illustrating the interaction between the GNSD driver and the SEED during operation of an advanced error correction code according to the teachings of the present invention;
图8为根据本发明教导的表示实现用于输入/输出(I/O)请求包(IRP)的操作的GNSD的框图;FIG8 is a block diagram illustrating a GNSD implementing operations for an input/output (I/O) request packet (IRP) in accordance with the teachings of the present invention;
图9为根据本发明教导的表示GNSD IRP读流程的框图;FIG9 is a block diagram illustrating a GNSD IRP read process according to the teachings of the present invention;
图10为根据本发明教导的表示GNSD IRP写流程的框图;FIG10 is a block diagram illustrating a GNSD IRP write process according to the teachings of the present invention;
图11为根据本发明教导的表示GNSD刷新块操作的框图;FIG11 is a block diagram illustrating the operation of a GNSD refresh block according to the teachings of the present invention;
图12为根据本发明教导的表示SSD I/O控制功能的框图;FIG12 is a block diagram illustrating SSD I/O control functionality according to the teachings of the present invention;
图13为根据本发明教导的表示相对于GNSD驱动器和GNSD应用程式的SSD I/O控制功能的框图;13 is a block diagram illustrating SSD I/O control functionality relative to a GNSD driver and a GNSD application in accordance with the teachings of the present invention;
图14为根据本发明教导的表示SSD I/O控制编码的示例;FIG14 is an example of SSD I/O control encoding according to the teachings of the present invention;
图15为根据本发明教导的表示用户发起的读请求(“读发送”)的方框流程图;FIG15 is a block flow diagram illustrating a user-initiated read request (“read send”) in accordance with the teachings of the present invention;
图16为根据本发明教导的表示用户发起的写请求(“写发送”)的方框流程图;FIG16 is a block flow diagram illustrating a user-initiated write request (“Write Send”) in accordance with the teachings of the present invention;
图17为根据本发明教导的表示写发送元表的示例性列表;FIG17 is an exemplary table showing a write-send meta-table according to the teachings of the present invention;
图18为根据本发明教导的表示TRIM功能性命令的方框流程图;FIG18 is a block flow diagram illustrating TRIM functionality commands according to the teachings of the present invention;
图19为根据本发明教导的耐用转换层的表示地图;FIG19 is a diagram showing a durable conversion layer according to the teachings of the present invention;
参照相关附图对一些实施例进行了详细的描述。另外的实施例,特征和/或优点将出现在随后的描述中或可能通过实践本发明获得学习。在附图中,其不是按比例缩小的,在全文描述中相同的附图标记指代相同的特征。下面的描述没有局限的意义,而仅仅是以为了描述本发明一般原则的目的给出。Several embodiments are described in detail with reference to the accompanying drawings. Additional embodiments, features, and/or advantages will appear in the subsequent description or may be learned by practicing the invention. In the drawings, which are not to scale, like reference numerals refer to like features throughout the description. The following description is not intended to be limiting but is provided solely for the purpose of illustrating the general principles of the invention.
具体实施例Specific embodiments
在阻止、结合或缓存至DRAM的主机上执行的绿能与非固态硬盘驱动器(GNSD)应用程式和GNSD驱动器,在它们写到闪存之前,因此降低了向闪存的写频率。绿能或低能闪存器件采用低耐久性NAND闪存存储器。在主机上的GNSD应用程式和GNSD驱动器产生并管理主机和SSD上的多个缓存,其可具有低耐久性闪存存储器。低耐久性闪存存储器包括,但不限于,三级单元(TLC)NAND闪存存储器。GNSD应用程式和GNSD驱动器与SSD和主体运行以将SSD转换为超级增强耐久闪存驱动,或超级增强耐久器件(SEED)SSD。文中的示例可应用至微软、雷蒙德,WA USA的Windows操作系统,但是类似作了適當的修正的示例可应用至其他操作系统。A green and non-solid state drive (GNSD) application and a GNSD driver executing on a host block, combine, or cache to DRAM before they write to flash memory, thereby reducing the frequency of writes to flash memory. Green or low-energy flash devices use low-endurance NAND flash memory. The GNSD application and GNSD driver on the host create and manage multiple caches on the host and SSD, which may have low-endurance flash memory. Low-endurance flash memory includes, but is not limited to, triple-level cell (TLC) NAND flash memory. The GNSD application and GNSD driver operate with the SSD and the host to convert the SSD into a super-enhanced endurance flash drive, or super-enhanced endurance device (SEED) SSD. The examples herein may be applied to Windows operating systems from Microsoft, Redmond, WA USA, but similar examples with appropriate modifications may be applied to other operating systems.
参照图1和2,计算机系统5包括主机300和SEED SSD 200。主机300包括GNSD驱动器100,其可耦合至GNSD应用程式180。GNSD驱动器100具有存储器管理器106,和刷新/恢复管理器107。此外,GNSD驱动器100可包括加密/解密引擎240,高级纠错码(ECC)引擎241,压缩/解压缩引擎242,去重引擎243,和安全引擎244。1 and 2 , a computer system 5 includes a host 300 and a SEED SSD 200. The host 300 includes a GNSD driver 100, which can be coupled to a GNSD application 180. The GNSD driver 100 has a memory manager 106 and a refresh/restore manager 107. In addition, the GNSD driver 100 may include an encryption/decryption engine 240, an advanced error correction code (ECC) engine 241, a compression/decompression engine 242, a deduplication engine 243, and a security engine 244.
“存储器管理器”106可提供多种功能,诸如“DRAM清除”,其重置由GNSD驱动器控制的DRAM缓存区域。向SSD200的OS命令“Trim命令”以实际上从闪存去除数据。对于GNSD驱动器,如果数据缓存在DRAM 333上,可使用命令从DRAM 333上去除数据。“格式窃取程序”可使格式命令穿过至SSD 200而不受任何干扰。“智能刷新”可刷新从DRAM 333到SSD 200的数据,依赖于用户“永远”(例如,不使用自动刷新)、30秒、1分钟、或5分钟等的选择。默认是不使用自动刷新以最大化DRAM 333的效率。此外,当DRAM缓存使用到达预定级别时,可刷新被选择的DRAM缓存数据(例如冷数据)至SSD 200。当选择自动刷新时,预定水标可设置为用于已刷新的DRAM缓存数据和仍然保留在DRAM中的数据。该DRAM缓存只在DRAM缓存区域满时被重写。"Memory Manager" 106 can provide various functions, such as "DRAM Clear," which resets the DRAM cache area controlled by the GNSD driver. A "Trim Command" is issued to the OS of SSD 200 to actually remove data from the flash memory. For the GNSD driver, if data is cached in DRAM 333, this command can be used to remove the data from DRAM 333. "Format Stealer" allows format commands to pass through to SSD 200 without any interference. "Smart Refresh" can refresh data from DRAM 333 to SSD 200, depending on the user's selection of "Forever" (e.g., not using auto-refresh), 30 seconds, 1 minute, or 5 minutes. The default is to not use auto-refresh to maximize DRAM 333 efficiency. In addition, when DRAM cache usage reaches a predetermined level, selected DRAM cache data (e.g., cold data) can be refreshed to SSD 200. When auto-refresh is selected, a predetermined watermark can be set for the refreshed DRAM cache data and the data still remaining in DRAM. The DRAM cache is only overwritten when the DRAM cache area is full.
“刷新/恢复管理器”107提供一种在关机或掉电时快速刷新DRAM数据至SSD 200以及电源再來时重新将被刷新的数据从SSD 200存入DRAM。其还可在当DRAM缓存到达预定水平标记时刷新DRAM 333至SSD 200。如果主机对SSD 200没激活,GNSD驱动器100可基于用户的选择将DRAM缓存数据写入SSD 200。当电源关机或掉电时,DRAM缓存,例如SSD DRAM 194,中的脏50The "Flush/Restore Manager" 107 provides a method for quickly refreshing DRAM data to the SSD 200 when the power is turned off or lost, and for restoring the refreshed data from the SSD 200 to the DRAM when the power is restored. It can also refresh the DRAM 333 to the SSD 200 when the DRAM cache reaches a predetermined level mark. If the host is not active on the SSD 200, the GNSD driver 100 can write the DRAM cache data to the SSD 200 based on the user's selection. When the power is turned off or lost, the dirty 50 in the DRAM cache, such as the SSD DRAM 194, is
数据将作为一个图像文件而保存至SEED SSD。这种方式和所有标准操作相比都将更快。在电源恢复时,该图像可被读出并按照上次重新装载。The data will be saved as an image file to the SEED SSD. This method is much faster than all standard operations. When power is restored, the image file can be read out and reloaded as before.
提供GNSD驱动器100的功能288结合配置和操作系统的设置以改善耐久性和SEEDSSD的性能。下面详细描述结合配置和操作系统的设置以改善耐久性和SEED SSD性能的GNSD驱动器100的功能288:The function 288 of the GNSD driver 100 is provided to improve the endurance and performance of the SEED SSD by combining the configuration and the operating system settings. The function 288 of the GNSD driver 100 is provided to improve the endurance and performance of the SEED SSD by combining the configuration and the operating system settings.
禁止驱动索引:SSD 200功能求快,约0.1毫秒,这样的索引是不需要的。Disable drive indexing: SSD 200 functions fast, about 0.1 milliseconds, so such indexing is not needed.
禁止驱动搜索索引:禁止搜索索引有助于增加SSD的性能和寿命。禁止此选项可以防止Windows操作系统试图追踪每一个文件搜索。缺点是,SSD的搜索可能变慢。Disable drive search indexing: Disabling search indexing can help increase the performance and lifespan of your SSD. Disabling this option prevents the Windows operating system from attempting to track every file search. The downside is that SSD searches may be slower.
减少页面文件的大小:将页面文件留在SSD上但将它设置为一个固定的“合理”尺寸。操作系统(OS)会分配一个页面文件是大小与安装的DRAM 333相同的大小。对于大型DRAM机器,操作系统会快速消耗SSD空间。操作系统的页面文件在SSD上的功能表现,取决于系统中的DRAM内存量。它可以被设置为例如1或2GB的大小。当设置页面文件的值时,其参数可设置为相同、固定、最小和最大值,其反映了SSD 200上的可用空间之间的平衡以及可获得多少以及有多少经常使用的DRAM 333。Reduce the size of the page file: Leave the page file on the SSD but set it to a fixed, "reasonable" size. The operating system (OS) will allocate a page file that is the same size as the installed DRAM 333. For large DRAM machines, the OS will quickly consume SSD space. How well the OS's page file functions on the SSD depends on the amount of DRAM memory in the system. It can be set to, for example, 1 or 2 GB. When setting the page file value, its parameters can be set to the same, fixed, minimum, and maximum values, which reflect the balance between the available space on the SSD 200 and how much DRAM 333 is available and how much is frequently used.
禁用系统恢复:系统恢复功能允许安装软件、驱动程序和其他可被重新运行的更新。禁用此功能可以释放介于几百兆字节和几十亿字节之间存储。可使用的系统还原的磁盘空间量被减少,或甚至完全关闭时会面临不能自动从因系统变化引起的问题中恢复的风险。然而,如果禁用此功能,用户可以使用备份的其他形式,如创建磁盘图像备份。Disabling System Restore: The System Restore feature allows software, driver, and other updates to be installed and re-run. Disabling this feature can free up between hundreds of megabytes and several gigabytes of storage. The amount of disk space available for System Restore is reduced, or even turned off entirely, with the risk of not being able to automatically recover from problems caused by system changes. However, if this feature is disabled, users can use other forms of backup, such as creating disk image backups.
禁用休眠:通过禁用Windows操作系统的休眠功能,可将SSD 200的空间释放至DRAM 333的数量。默认情况下,休眠文件的大小(Hiberfil.sys)与在计算机上安装的DRAM333的量相同。当然,禁用休眠功能会阻止用户使用该省电模式,以及妨碍获得快速导入和关机的优点。可是,休眠模式没有给SSD200提供真正好处,由于其快速的10-20秒的SSD加载时间,其中,在某些情况下,等效于休眠。尽管如此,用户可以通过从关机菜单中选择它来选择使用休眠功能。Disabling Hibernation: By disabling the Windows operating system's hibernation feature, you free up space on the SSD 200 to match the amount of DRAM 333. By default, the size of the hibernation file (Hiberfil.sys) is the same as the amount of DRAM 333 installed on the computer. Of course, disabling the hibernation feature prevents users from using this power-saving mode and from benefiting from faster boot and shutdown times. However, hibernation mode offers no real benefit to the SSD 200 due to its fast 10-20 second SSD boot time, which, in some cases, is equivalent to hibernation. Nevertheless, users can opt in to use the hibernation feature by selecting it from the shutdown menu.
禁用写缓存:通过禁用写缓存和使用GNSD驱动器100缓存,当有备用电源时GSND驱动器100可完全使用其缓存。Disabling write caching: By disabling write caching and using the GNSD drive 100 cache, the GNSD drive 100 can fully utilize its cache when backup power is available.
关闭写缓存缓冲器的刷新:关闭写缓存缓冲器的刷新可增加SSD的性能。Disabling write cache buffer flushing: Disabling write cache buffer flushing can increase SSD performance.
禁用预取:固态硬盘具有极低的寻道时间且没有旋转延迟,所以访问时间不依赖于特定的段的位置。预取因此失去其主要目的。此外,减少写入SSD 200是优化其性能的一部分,因此预取应禁用。Disable prefetching: SSDs have extremely low seek times and no rotational latency, so access times do not depend on the location of a specific segment. Prefetching therefore defeats its primary purpose. Furthermore, reducing writes to the SSD 200 is part of optimizing its performance, so prefetching should be disabled.
设置只向缓存启动超级预取:使用超级预取的改进方法是只设置缓存启动文件。超级预取确实是有目的的,并只是把它完全关闭会只获得一些磁盘空间,特别是如果仅仅是缓存文件被删除后禁用。禁用超级预取会引起机器繁忙以减缓它从磁盘到RAM的交换应用程式。只是因为使用了SSD,并不意味着交换不会发生或不值得注意。Enable Superfetch only for cached files: An improved approach to using Superfetch is to enable it only for cached files. Superfetch does have a purpose, and simply turning it off completely will only gain some disk space, especially if only the cached files are deleted after disabling it. Disabling Superfetch will cause the machine to be busy swapping applications from disk to RAM, slowing it down. Just because you have an SSD doesn't mean swapping won't occur or won't be noticeable.
减少回收站大小:设置回收站到一个固定且小的尺寸。Windows操作系统使用SSD的尺寸大小的约10%来进行尺寸设置。可设置其他大小尺寸的回收站。如使用300MB的一个较小的尺寸可以腾出空间并减少向SSD的写入。Reduce the Recycle Bin size: Set the Recycle Bin to a fixed, smaller size. The Windows operating system uses approximately 10% of the SSD's size for this size. You can set the Recycle Bin to a different size. For example, using a smaller size of 300MB can free up space and reduce writes to the SSD.
减少记录:操作系统(OS)写了很多的事件日志。除了一些必要的(日志应用,安全,系统,安全要点),可安全地停止那些周期性地写在驱动中的日志。Reduce logging: The operating system (OS) writes a lot of event logs. Except for some necessary ones (log application, security, system, security points), it is safe to stop the periodic logs written to the driver.
禁用Windows可靠性监视器:这种性能的监控器可提供长期的硬件和软件问题概述。其将事件写入驱动,并且每小时地。如果操作系统是在SSD上,监控活动可以减缓稳定系统。Disable Windows Reliability Monitor: This performance monitor provides a long-term overview of hardware and software issues. It writes events to the drive every hour. If the operating system is on an SSD, monitoring activity can slow down system stability.
如果“智能监控器”246监测到从主机到SSD 200没有活动,将会刷新用户选择的DRAM数据缓存量至SSD 200,如果“自动刷新”可以的话。可以根据写入量向DRAM数据缓存制作标记,然后基于写入量安排刷新顺序的优先级。安全244实现在允许访问SEED SSD 200之前或由GSND驱动器100缓存的数据之前的密码验证处理。智能数据监控器246从SEED SSD200向SSD应用程式180发送智能监测信息。If "Smart Monitor" 246 detects no activity from the host to SSD 200, it flushes the user-selected amount of DRAM data cache to SSD 200, if "Auto-Flush" is enabled. The DRAM data cache can be tagged based on write volume, and the order of flushes can be prioritized based on write volume. Security 244 implements a cryptographic authentication process before allowing access to data cached by the SEED SSD 200 or the GSND drive 100. Smart Data Monitor 246 sends smart monitoring information from the SEED SSD 200 to the SSD application 180.
GSND应用程式可具有多种功能,它们中的四个可包括,但不限于:The GSND app can have a variety of functions, four of which may include, but are not limited to:
GNSD应用程式180中的SSD内部清理应用181执行各种高级功能,如垃圾收集,和删除旧的或无用的文件。SSD内部清理应用181可定期进行,如,但不限于,每天或每周。The SSD internal cleaning application 181 in the GNSD application 180 performs various advanced functions, such as garbage collection, and deleting old or useless files. The SSD internal cleaning application 181 can be performed regularly, such as, but not limited to, daily or weekly.
GNSD应用程式180中的“DRAM分配”183,其从操作系统分配并初始化DRAM容量,为了在GNSD驱动器存在或当缓存模式被关闭时使用GNSD驱动器100和返回DRAM至操作系统。"DRAM Allocation" 183 in the GNSD application 180 allocates and initializes DRAM capacity from the operating system for use with the GNSD driver 100 and returns DRAM to the operating system when the GNSD driver is present or when cache mode is turned off.
“缓存模式开/关”185:随着GNSD应用程式180中缓存模式的关闭,GNSD驱动器100可刷新所有DRAM缓存数据至SSD 200并保持其活动。随着缓存模式的开启,GNSD驱动器100可设置成DRAM缓存环境。在“跟随主机对器件的访问(读/写)”中:IRP可直接传递至下一个驱动器。随着缓存模式的开启,GNSD驱动器可以从“寄存表”读取参数并设置成DRAM缓存环境。“跟随主机对器件的访问(读/写)”,IRP可直接传递至GNSD驱动器。需要注意,当接到“全部刷新”命令时,GNSD驱动器会首先将缓存模式切换为关闭,完成刷新后,其可将缓存模式切换为开启。随着缓存模式的关闭,“跟随主机对器件的访问(读/写)”,IRP访问将被GNSD驱动器忽略并直接传递至下一个驱动器。随着缓存模式的开启,“跟随主机对器件的访问(读/写)”,将被传递至GNSD驱动器和DRAM缓存。"Cache Mode On/Off" 185: With cache mode turned off in the GNSD application 180, the GNSD driver 100 can flush all DRAM cache data to the SSD 200 and keep it active. With cache mode turned on, the GNSD driver 100 can be set to the DRAM cache environment. In "Follow Host Access to Device (Read/Write)": IRPs can be passed directly to the next driver. With cache mode turned on, the GNSD driver can read parameters from the "Register Table" and set to the DRAM cache environment. With "Follow Host Access to Device (Read/Write)", IRPs can be passed directly to the GNSD driver. It should be noted that when receiving the "Flush All" command, the GNSD driver will first switch cache mode to off. After the flush is complete, it can switch cache mode back on. With cache mode turned off, "Follow Host Access to Device (Read/Write)", IRP accesses will be ignored by the GNSD driver and passed directly to the next driver. With cache mode turned on, "Follow Host Access to Device (Read/Write)" will be passed to the GNSD driver and the DRAM cache.
“缓存模式开启”:如果缓存模式状态关闭,从注册登记编辑器中读取参数并从操作系统执行存储器需求和分配。"Cache Mode On": If the cache mode status is off, read the parameters from the registry editor and perform memory requirements and allocations from the operating system.
“缓存模式关闭”:如果缓存模式状态开启,基于用户指令刷新DRAM中缓存或清除DRAM,然后将释放分配的存储返回操作系统。Cache Mode Off: If the cache mode is on, the cache in DRAM is flushed or the DRAM is cleared based on user instructions, and the allocated storage is released back to the operating system.
GNSD应用程式180中的“驱动器安装”187,当GNSD驱动器启动时,安装用户选择的SSD 200驱动器。SSD 200驱动器可是,但不限于,USB SSD、SATA SSD、PCI SSD、或M.2SSD。也可以使用其他SSD 200。The "Drive Installation" 187 in the GNSD application 180 installs the user-selected SSD 200 when the GNSD driver is launched. The SSD 200 driver may be, but is not limited to, a USB SSD, SATA SSD, PCI SSD, or M.2 SSD. Other SSDs 200 may also be used.
超级增强耐力设备(SEED)SSD 200可包括,但不限于,NAND闪存存储器196、和SEED控制器192;SEED 200也包括SSD DRAM 194和电源备份195。SEED SSD 200中的SEED控制器192可在SSD DRAM缓冲器194中存储数据并随后存至NAND闪存存储器196,例如,在掉电或当SSD DRAM缓冲器194被存满时。Super Enhanced Endurance Device (SEED) SSD 200 may include, but is not limited to, NAND flash memory 196, and a SEED controller 192; SEED 200 may also include SSD DRAM 194 and power backup 195. The SEED controller 192 in the SEED SSD 200 may store data in the SSD DRAM buffer 194 and subsequently save it to the NAND flash memory 196, for example, upon power loss or when the SSD DRAM buffer 194 is full.
主机300具有处理器325,其用于为程序例如用户应用182和为操作系统(OS)内核178例如Windows、Linux、苹果OS、安卓、或其他操作系统内核执行指令。主机300还包括第二处理器350,其用作辅助或备用处理器。处理器350也是多核系统的一部分。GNSD应用程式180可是一个执行应用程式,例如,在主机300上。GNSD应用程式180和GNSD驱动器100可用于擦除超级增强耐力设备(SEED)SSD 200的负载。GNSD应用程式180和GNSD驱动器100可一起工作以分离数据例如临时文件,分页文件页等,其不意味着被永久存储在闪存上。GNSD驱动器100可管理缓存以存储这些临时(Temp)数据。缓存是主机DRAM 333的一部分。The host 300 includes a processor 325 for executing instructions for programs such as user applications 182 and for an operating system (OS) kernel 178, such as Windows, Linux, Apple OS, Android, or other operating system kernels. The host 300 also includes a second processor 350, which serves as a secondary or backup processor. Processor 350 is also part of a multi-core system. The GNSD application 180 can be an executable application, for example, on the host 300. The GNSD application 180 and the GNSD driver 100 can be used to erase the payload of the Super Enhanced Endurance Device (SEED) SSD 200. The GNSD application 180 and the GNSD driver 100 can work together to separate data, such as temporary files, paging file pages, etc., that is not meant to be permanently stored on flash memory. The GNSD driver 100 can manage a cache to store this temporary (temporary) data. The cache is part of the host DRAM 333.
GNSD驱动器100将写操作从主机300转至主机DRAM 333中和/或SSD DRAM194中的缓存,特别是当提供充足备用电源的情况。来自用户应用182的被操作系统内核178所写的数据被上级文件过滤器驱动器190中断并传至GNSD驱动器100以分别压缩和/或通过压缩引擎242和/或去重引擎243去重,在被送至文件系统驱动器266之前。加密/解密引擎240例如可使用AES和DEA加密技术(见图5)之一。那么低级文件过滤器驱动器268再次中断数据以被GNSD驱动器100进行更多的处理,例如以存储在缓存301中。The GNSD driver 100 forwards write operations from the host 300 to a cache in the host DRAM 333 and/or the SSD DRAM 194, particularly when sufficient backup power is available. Data from the user application 182 written by the operating system kernel 178 is intercepted by the upper-level file filter driver 190 and passed to the GNSD driver 100 for compression and/or deduplication by the compression engine 242 and/or deduplication engine 243, respectively, before being sent to the file system driver 266. The encryption/decryption engine 240 may, for example, use one of the AES and DEA encryption techniques (see FIG5 ). The lower-level file filter driver 268 then intercepts the data again for further processing by the GNSD driver 100, such as for storage in the cache 301.
文件优先排序264基于低级文件过滤驱动268指定的数据类型,或由逻辑块地址指示的数据类型,如元数据(FAT/FDB)、临时文件、页面文件、或用户数据,来分类数据。FAT指文件分配表,以及FDB是文件描述块。临时文件包括Windows操作系统临时文件、浏览器的临时文件等。可替换的,这个功能可以选择禁用某些应用如服务器。由优先任务转让器260给出操作的优先级以致更高优先级的任务可以在低优先级的任务之前执行。性能调节器256可以周期性地调整这些优先级以提高性能。目标受让器254然后将数据发送到磁数据写入缓存20。File prioritization 264 classifies data based on the data type specified by the low-level file filter driver 268, or the data type indicated by the logical block address, such as metadata (FAT/FDB), temporary files, page files, or user data. FAT refers to the file allocation table, and FDB is the file description block. Temporary files include Windows operating system temporary files, browser temporary files, etc. Alternatively, this function can be disabled for certain applications such as servers. The priority of the operation is given by the priority task transferor 260 so that higher priority tasks can be executed before lower priority tasks. The performance regulator 256 can periodically adjust these priorities to improve performance. The target transferee 254 then sends the data to the magnetic data write cache 20.
最终准备写入SEED SSD 200的数据可被从GNSD驱动器100发送至卷管理器270,例如其管理存储卷,如SEED SSD 200。SEED SSD 200中的SEED控制器192将数据存储在SSDDRAM缓冲器194中并然后至NAND闪存存储器196中,例如,当电源關機或当SSD DRAM缓冲器194存满时。Data that is ultimately ready to be written to the SEED SSD 200 may be sent from the GNSD driver 100 to a volume manager 270, for example, which manages storage volumes such as the SEED SSD 200. The SEED controller 192 in the SEED SSD 200 stores the data in the SSD DRAM buffer 194 and then to the NAND flash memory 196, for example, when power is turned off or when the SSD DRAM buffer 194 is full.
交易系统262确保数据可被完全写入SEED SSD 200。恢复管理器216确定那個写数据交易没有完成,例如,由于非正常掉电,以及有助于应用程式完成必要的重复或撤销操作以使数据持久。因此,恢复管理器216旨在确保在更新数据期间不发生错误,特别是在更新数据期间面临的电源干扰。调度程序218管理交易系统262以管理和记录写入SSD交易,如启动,终止,及承诺。Transaction system 262 ensures that data is fully written to SEED SSD 200. Recovery manager 216 determines which write transactions were incomplete, for example, due to an abnormal power outage, and assists applications in performing necessary redo or undo operations to make the data persistent. Recovery manager 216 is therefore designed to ensure that no errors occur during data updates, particularly in the event of power outages during data updates. Scheduler 218 manages transaction system 262 to manage and record write SSD transactions, such as initiation, termination, and commitment.
在系统导入处理期间初始化文件系统;特别是I/O系统初始化。文件系统过滤驱动器179为可选的驱动器,其增加或修改文件系统的行为。文件系统过滤驱动器179可作为Windows操作系统执行的一部分运行的内核模式部件。文件系统过滤驱动器179能过滤用于一个或多个文件系统或文件系统卷的I/O操作。根据驱动器的性质,过滤可以是记录、观察、修改、选择、甚或阻止。典型的用于文件系统过滤驱动器179的应用程式包括压缩程序、杀毒应用、加密程序、和分级存储管理系统。Initializes the file system during the system boot process; specifically, the I/O system is initialized. File system filter driver 179 is an optional driver that adds to or modifies the behavior of the file system. File system filter driver 179 may be a kernel-mode component that runs as part of the Windows operating system. File system filter driver 179 can filter I/O operations for one or more file systems or file system volumes. Depending on the nature of the driver, filtering can be logging, observing, modifying, selecting, or even blocking. Typical applications for file system filter driver 179 include compression programs, antivirus applications, encryption programs, and hierarchical storage management systems.
文件系统过滤驱动器179也可与一个或多个文件系统一起工作以管理文件输入/输出操作。这些操作包括创建、打开、关闭、和枚举文件和目录;获取和设置文件、目录和卷信息;以及读取和写人文件数据。此外,文件系统过滤驱动器266、190、268可支持文件系统特定特征例如缓存、锁定、稀疏文件、硬盘配额、压缩、安全、恢复、重新分析点、和卷量点。配置设置186、以及登记和操作系统设置184可由操作系统内核178或GSND应用程式180来设置以定义缓存或其他系统变量的大小,以及管理GSND应用程式180和GNSD驱动器100的首选功能。The file system filter driver 179 can also work with one or more file systems to manage file input/output operations. These operations include creating, opening, closing, and enumerating files and directories; getting and setting file, directory, and volume information; and reading and writing file data. In addition, the file system filter drivers 266, 190, and 268 can support file system-specific features such as caching, locking, sparse files, disk quotas, compression, security, recovery, reparse points, and volume points. Configuration settings 186, as well as registry and operating system settings 184, can be set by the operating system kernel 178 or the GSND application 180 to define the size of caches or other system variables, as well as to manage the preferred functionality of the GSND application 180 and the GNSD driver 100.
安全引擎244可在允许访问SEED SSD 200之前执行密码验证过程或由GNSD驱动器100缓存的数据。GNSD驱动器100采用主机CPU 325来执行诸如压缩/解压缩、去重、和加密/解密的功能。智能数据监控246可将智能监控信息从SEED SSD 200至GNSD应用程式180。智能数据监控246代表自监控、分析和报告技术。The security engine 244 can perform a cryptographic authentication process before allowing access to the SEED SSD 200 or data cached by the GNSD driver 100. The GNSD driver 100 employs the host CPU 325 to perform functions such as compression/decompression, deduplication, and encryption/decryption. The smart data monitoring 246 can transmit smart monitoring information from the SEED SSD 200 to the GNSD application 180. Smart data monitoring 246 represents a self-monitoring, analysis, and reporting technology.
智能驱动器39与智能监控器246一起工作以处理智能命令,或供应商命令、来自主机300,诸如监控器和控制误差校正、损耗、坏块和其它闪存存储器管理。主机300采用智能命令自智能驱动器39向监控器设置一些来自SSD驱动200的重要数据,例如,但不限于,电源开启时间、损耗水平量等。主机300采用这个数据来判断和识别SSD 200的期望寿命。还可采用该信息来决定基于使用的保修范围。采用智能驱动器39,主机300可使得SSD驱动200在经历失效之前被取代,以改善计算机系统5的整体正常运行时间。在RAID装配中,主机可以使用智能命令例如来避免更昂贵的RAID2、5或6配置。The smart drive 39 works with the smart monitor 246 to process smart commands, or vendor commands, from the host 300, such as to monitor and control error correction, wear, bad blocks, and other flash memory management. The host 300 uses smart commands to set important data from the SSD drive 200 from the smart drive 39 to the monitor, such as, but not limited to, power-on time, wear level, etc. The host 300 uses this data to determine and identify the expected lifespan of the SSD 200. This information can also be used to determine warranty coverage based on usage. Using the smart drive 39, the host 300 can cause the SSD drive 200 to be replaced before it experiences a failure, thereby improving the overall uptime of the computer system 5. In a RAID configuration, the host can use smart commands, for example, to avoid more expensive RAID 2, 5, or 6 configurations.
在图1的智能监控器246中,当1)由AP激励而自动刷新时;或2)在Windows操作系统(或在其他操作系统中的类似功能)中,驱动器启动和不能从注册登记表编辑器读出参数时,“开始定时器”激活定时器,然后设置定时器按照规则的间隔从注册登记表编辑器中读取参数直到连续,然后配置存储器。In the smart monitor 246 of Figure 1, when 1) automatically refreshed by AP stimulation; or 2) in the Windows operating system (or similar functions in other operating systems), the driver starts and cannot read parameters from the registry editor, the "Start Timer" activates the timer, and then sets the timer to read parameters from the registry editor at regular intervals until continuous, and then configures the memory.
此外在智能监控器246中,当1)由AP通知而停止自动刷新时;或2)驱动器已经从注册登记表编辑器读出参数并配置存储器之后,调用“停止定时器”以停止计时器。Also in the smart monitor 246, when 1) the AP notifies to stop auto-refresh; or 2) the driver has read out parameters from the registry editor and configured the memory, "Stop Timer" is called to stop the timer.
去重引擎243发现并检测数据文件的重复拷贝以减少写负担。GNSD驱动器100中的引擎,例如压缩/解压缩引擎242,例如可将128数据部分压缩为压缩的48数据部分。这些压缩的48数据部分包括标题和一些存储在第一压缩页里的压缩数据,和两页以上的压缩数据,总共3压缩页。这可将未压缩时的8页有效的减少。选择配置设置186和注册登记和操作系统设置184的设置以提高闪存存储器的耐久性和性能。例如,设置184、186可允许或禁止写缓存、驱动索引、搜索索引、磁盘碎片整理、主机休眠、预取、超级预取、和Windows操作系统写缓存缓冲器刷新。预取、索引、休眠、和磁盘碎片整理可引起闪存存储的额外写入并降低耐久性。因此,闪存耐久性可通过禁用这些特性来提高。此外,由于GNSD驱动器100具有其自己的写缓存和刷新功能,因此可禁用写缓存和写缓存缓冲器刷新。The deduplication engine 243 detects and detects duplicate copies of data files to reduce the write burden. An engine within the GNSD driver 100, such as the compression/decompression engine 242, can compress, for example, 128 data portions into 48 compressed data portions. These 48 compressed data portions include a header and some compressed data stored in the first compressed page, and two or more pages of compressed data, for a total of three compressed pages. This effectively reduces the number of uncompressed pages from eight. Configuration settings 186 and registry and operating system settings 184 are selected to improve the durability and performance of the flash memory. For example, settings 184 and 186 can enable or disable write caching, drive indexing, search indexing, disk defragmentation, host hibernation, prefetching, super prefetching, and Windows operating system write cache buffer flushing. Prefetching, indexing, hibernation, and disk defragmentation can cause additional writes to the flash memory and reduce durability. Therefore, flash memory durability can be improved by disabling these features. Furthermore, since the GNSD driver 100 has its own write caching and flushing functionality, write caching and write cache buffer flushing can be disabled.
当主电源发生故障时,备用电源176为主机300提供电源,使主机300从缓存发送关键数据188至SEED SSD 200以在停电时将其存储在NAND闪存196中。备用电源176可使用的电源例如是,但不限于,电池、超级电容器、不间断电源(UPS)或其他备用电源。备用电源176的容量尺寸制作为给主机处理器300足够的时间来关闭应用程式和适当地关闭附接的设备。SEED SSD200可具有其独立的备用电源195,在主电源断电时允许SEED SSD 200向NAND闪存存储器196写入关键数据。备用电源195可使用,但不限于,电容器、超级电容器或电池。可替换的,如果主机备用电源176具有足够的电力来从容地关闭系统,SEED SSD 200中的SSD备用电源195就不需要了,例如当主机300为笔记本电脑或智能手机。When the main power fails, backup power supply 176 provides power to host 300, allowing host 300 to send critical data 188 from cache to SEED SSD 200 for storage in NAND flash memory 196 during the power outage. Backup power supply 176 can be powered by, for example, but not limited to, a battery, supercapacitor, uninterruptible power supply (UPS), or other backup power sources. The capacity of backup power supply 176 is sized to give host processor 300 sufficient time to shut down applications and properly shut down attached devices. SEED SSD 200 may have its own independent backup power supply 195, allowing SEED SSD 200 to write critical data to NAND flash memory 196 during a main power outage. Backup power supply 195 can be powered by, but not limited to, a capacitor, supercapacitor, or battery. Alternatively, if host backup power supply 176 has sufficient power to gracefully shut down the system, the SSD backup power supply 195 in SEED SSD 200 is not required, for example, when host 300 is a laptop or smartphone.
磁盘微型端口驱动138管理附加的SSD的厂商特定功能。取消分组136取消从SEEDSSD 200恢复的群组数据在被转移至数据读缓存之前。由于GNSD驱动具有其独立的写缓存和刷新功能,可以禁用写缓存和写缓存缓冲器刷新。因此可通过禁用这些特性来提高闪存耐久性。在被发送至卷管理器270和、进一步,至SEED SSD 200之前,用分组引擎134将可被写入SEED SSD 200的数据分组为元页。通过存储元页,可减少写入SEED SSD 200的总量。The disk miniport driver 138 manages the vendor-specific functionality of the attached SSD. The unpacking function 136 unpacks group data recovered from the SEED SSD 200 before transferring it to the data read cache. Because the GNSD driver has its own independent write cache and flushing functions, write caching and write cache buffer flushing can be disabled. Therefore, disabling these features can improve flash memory endurance. Data that can be written to the SEED SSD 200 is grouped into metapages using the grouping engine 134 before being sent to the volume manager 270 and, further, to the SEED SSD 200. By storing metapages, the total amount of data written to the SEED SSD 200 can be reduced.
CPU的寄存器和缓存控制器301向主机写入CPU寄存器和缓存器且然后向SEED SSD200,例如,当停电时。当预设时,开关311隔离主机上不必要的部件以致它们不接收备用电源,因此延长备用电源用于关键部件上的时间。存储控制器309可用于异常断电和电源恢复时在主机DRAM 333和SEED SSD200之间传输数据。The CPU register and cache controller 301 writes CPU registers and caches to the host and then to the SEED SSD 200, for example, during a power outage. When enabled, the switch 311 isolates unnecessary components on the host from receiving backup power, thereby extending the time that backup power is available to critical components. The storage controller 309 can be used to transfer data between the host DRAM 333 and the SEED SSD 200 during abnormal power outages and power restoration.
SEED SSD 200具有主机界面355,其通过诸如PCIe、SATA、USB、NVMe、雷电、eMMC、iSSD等总线与主机300互動。来自主机界面355的主机数据可被发送至SEED控制器192。SEED控制器192执行各种功能以减少NAND闪存存储器196的损耗,例如通过存储来自SSD DRAM缓冲器194中的主机300中且不在NAND闪存存储器196中的GNSD驱动器100的刷新文件。The SEED SSD 200 has a host interface 355 that interacts with the host 300 via a bus such as PCIe, SATA, USB, NVMe, Thunderbolt, eMMC, iSSD, etc. Host data from the host interface 355 can be sent to the SEED controller 192. The SEED controller 192 performs various functions to reduce wear on the NAND flash memory 196, such as by storing refresh files from the NAND flash drive 100 in the host 300 in the SSD DRAM buffer 194 that are not in the NAND flash memory 196.
SSD DRAM缓冲器194存储主机缓存和其他来自GNSD驱动器100的刷新数据或表的备份。它还可以存储包括元数据、备用和交换块、用于坏页管理的表、和其他缓冲器和表。NAND闪存存储器196为SSD存储除了用户数据和刷新缓存之外,尚有安全信息、表、文件系统和各种其他表和缓冲器。NAND闪存存储器196的一些区域为坏块或过预备保留。如果出现,主机备份电源176对系统关闭电源并只向SEED SSD 200提供电源。在使用电源管理305的情况下,可向DRAM 333、SEED 303、开关311和存储控制器309继续提供电源。刷新/恢复管理126周期地刷新数据写缓存20的内容至SEED SSD 200,例如在掉电之前。The SSD DRAM buffer 194 stores a backup of the host cache and other flush data or tables from the GNSD driver 100. It may also store metadata, spare and swap blocks, tables for bad page management, and other buffers and tables. The NAND flash memory 196 stores security information, tables, file systems, and various other tables and buffers for the SSD, in addition to user data and a flush cache. Some areas of the NAND flash memory 196 are reserved for bad blocks or over-provisioning. If this occurs, the host backup power supply 176 shuts off power to the system and provides power only to the SEED SSD 200. If power management 305 is used, power may continue to be provided to the DRAM 333, SEED 303, switch 311, and storage controller 309. The refresh/restore management 126 periodically flushes the contents of the data write cache 20 to the SEED SSD 200, for example, before a power outage.
去重引擎243发现并删除数据文件的副本,以减少写负载。然后底层文件过滤驱动268再截取更多经GNSD驱动100处理的数据。可替换的,主机300将数据类型信息从供应商命令转换至SEED SSD 200以使SEED SSD 200的数据分离管理不会重复已由GNSD驱动100的数据分离管理器108做过的工作。可替换的,在某些情况下这个功能可被选择地禁止。The deduplication engine 243 detects and deletes duplicate data files to reduce write load. The underlying file filter driver 268 then intercepts more data processed by the GNSD driver 100. Alternatively, the host 300 translates the data type information from the vendor command to the SEED SSD 200 so that the SEED SSD 200's data separation management does not duplicate work already performed by the GNSD driver 100's data separation manager 108. Alternatively, this function can be selectively disabled in certain circumstances.
系统5中存在的模式示例包括,但不限于,掉电模式、节电模式和持续模式。在掉电模式,计算机系统5按順序地关闭过程,向SEED SSD 200刷新缓存。在节电模式,有时指“睡眠模式”,计算机系统5断掉被选元件的电源,但是其他剩余元件繼續运行,可能运行在减少电能之下。选择的缓存被写入SEED SSD驱动200以保持被选择的数据。在持续模式,数据就像计算机系统5处于节电模式一样被保存,但是计算机系统5是掉电的。尽管存在,典型的休眠模式不被使用或禁止使用,由于所有DRAM缓存都需要被存入SEED SSD200,可能引起不必要的写操作。Examples of modes that exist in the system 5 include, but are not limited to, power-down mode, power-save mode, and persistent mode. In power-down mode, the computer system 5 performs an orderly shutdown process, flushing cache to the SEED SSD 200. In power-save mode, sometimes referred to as "sleep mode," the computer system 5 removes power to selected components, but other remaining components continue to operate, possibly at a reduced power level. Selected cache is written to the SEED SSD drive 200 to maintain selected data. In persistent mode, data is saved as if the computer system 5 were in power-save mode, but the computer system 5 is powered off. Although present, typical sleep modes are not used or are disabled because all DRAM cache needs to be stored in the SEED SSD 200, which may cause unnecessary write operations.
如图3A、3B和3C所示,于掉电模式和持续模式,数据分類和取消分组經由GNSD驱动100讀取時,主机300发送读命令至数据分离管理器108,其也在去重引擎243、解压引擎242或解密引擎240进行去重、解压或解密之后传递主机读数据。GNSD驱动100内的数据分离管理器108通过数据类型将主机读数据进行分类以及基于数据类型选择该数据。As shown in Figures 3A, 3B, and 3C, in power-down mode and persistent mode, when data is sorted and unpacked by the GNSD driver 100, the host 300 sends a read command to the data separation manager 108, which also passes the host read data after deduplication, decompression, or decryption by the deduplication engine 243, the decompression engine 242, or the decryption engine 240. The data separation manager 108 within the GNSD driver 100 sorts the host read data by data type and selects the data based on the data type.
用户数据最近可能已经被写入并且仍可从数据写缓存20中获取。数据可以存储在SEED SSD 200的SSD驱动卷201中,并且用户数据先通用户数据元页取消过程来取消分组并装入数据读缓存20。存储在SSD200驱动卷中的FAT/FDB数据在其被放入元数据缓存120中之前先通过FAT/FDB元页取消处理116取消分组。供应商命令发送至SSD 200可用于禁止某些重复功能,例如由GNSD驱动100执行的去重、压缩、加密、或数据分离。User data may have been recently written and may still be available from the data write cache 20. Data may be stored in the SSD drive volume 201 of the SEED SSD 200, and the user data is first ungrouped by the user data metapage ungrouping process and loaded into the data read cache 20. FAT/FDB data stored in the SSD 200 drive volume is ungrouped by the FAT/FDB metapage ungrouping process 116 before it is placed in the metadata cache 120. Vendor commands sent to the SSD 200 may be used to disable certain duplication functions, such as deduplication, compression, encryption, or data separation, performed by the GNSD driver 100.
许多数据类型位和其他状态集合、指针等的编码是可能的。数据类型状态位不必是入口的第一位。入口应该连接至其他表中的入口,例如具有用于标签或有效位的独立表。临时文件应该具有扩展变量以及新扩展应该被加入到列表中以便于搜索。通过已知程序产生临时文件,例如字处理器和互联网浏览器是已知的文件扩展,但是在任何时候都可以加入额外的扩展。通过更新固件至SEED SSD 200的控制软件来加入这些额外的文件扩展,或者通过软件更新至GNSD应用程式180和GNSD驱动100。SEED SSD 200中的SEED控制器192将数据存储在SSD DRAM缓冲器194中以及随后在掉电或当SSD DRAM缓冲器194存满时存至NAND闪存存储器196。Many encodings of data type bits and other state sets, pointers, etc. are possible. The data type state bit does not have to be the first bit in an entry. The entry should be connected to entries in other tables, such as a separate table for tags or valid bits. Temporary files should have extension variables and new extensions should be added to the list to facilitate searching. Temporary files generated by known programs, such as word processors and Internet browsers are known file extensions, but additional extensions can be added at any time. These additional file extensions can be added by updating the firmware to the control software of the SEED SSD 200, or by software updates to the GNSD application 180 and GNSD driver 100. The SEED controller 192 in the SEED SSD 200 stores data in the SSD DRAM buffer 194 and then to the NAND flash memory 196 upon power failure or when the SSD DRAM buffer 194 is full.
为了在持续模式期间的额外的写入,或在掉电模式期间,例如当电源关闭或加载失败时,缓冲可被复制至持续模式DRAM映象203而典型的不是SSD驱动卷201。如图3B所示,处理器间(IP)信息可被存储在IPDRAM 213上,而不是SSD驱动卷201。处理器间存储器(IPDRAM 213)可用于当只有被选择的DRAM内容被存储在持续模式下的DRAM映象203的情况。第一字节可是符号例如0x55AA。每个记录有一个归档为DEF的定义,即0x00表示指向的数据当电源故障时记录不需要备份;0x01表示需要备份的指向数据,或0xFF代表IPDRAM中最后一个有效记录。进一步的细节可以使用其余的数字实现,0x02到0XFE,识别不同数据类型,例如0x02是处理器范围207、0x03是数据写缓存20等。每个记录还包含一个指针指示在主机DRAM存储器中的起始地址和长度字段,以指示相关的数据的总长度。每个记录将总共有10个字节。对于一个512字节的扇区,它可以容纳51条记录。0xFF记录是不必要的其位于最后一条记录。To accommodate additional writes during persistent mode, or during power-down mode, such as when power is off or a load fails, the buffer can be copied to persistent mode DRAM image 203, typically not SSD drive volume 201. As shown in FIG3B , interprocessor (IP) information can be stored in IPDRAM 213, rather than SSD drive volume 201. Interprocessor memory (IPDRAM 213) can be used when only selected DRAM contents are stored in persistent mode DRAM image 203. The first byte can be a symbol such as 0x55AA. Each record has a definition filed as DEF, i.e., 0x00 indicates that the record does not need to be backed up during a power failure; 0x01 indicates that the record does need to be backed up; or 0xFF represents the last valid record in IPDRAM. Further details can be implemented using the remaining digits, 0x02 to 0xFE, to identify different data types, such as 0x02 for processor range 207, 0x03 for data write buffer 20, etc. Each record also contains a pointer to the starting address in host DRAM memory and a length field to indicate the total length of the associated data. Each record will have a total of 10 bytes. For a 512-byte sector, it can accommodate 51 records. The 0xFF record is unnecessary and is located at the last record.
当电源故障时,NVM CTRL 109或由CPU 325执行的电源故障程序会读取IPDRAM(在DRAM部分存储的情况下)的每一个记录并决定当DEF域不是0x00或0xFF时是否从DRAM复制数据至SSD。IPDRAM将被设置在DRAM的固定已知地址所以CPU 325或另一CPU 350,其可以是内部的或外部的,并且NVM CTRL 109访问相同的位置而不会混淆。When power fails, NVM CTRL 109 or a power failure program executed by CPU 325 will read each record of IPDRAM (in the case of partial storage in DRAM) and decide whether to copy data from DRAM to SSD when the DEF field is not 0x00 or 0xFF. IPDRAM will be set at a fixed known address in DRAM so that CPU 325 or another CPU 350, which can be internal or external, and NVM CTRL 109 access the same location without confusion.
当电源关闭或故障以及持续模式开启时,SSD驱动100刷新并准备信息例如处理器范围207和CPU缓存209和恢复范围213至主机DRAM 333并在将DRAM升级存储至持续模式DRAM映象203之前升级IPDRAM 213。电池或其它备用电源即可完成向持续模式DRAM映象的203数据写入以保持一段时间。然后,当主电源恢复时,该数据可以从持久模式DRAM映象203中恢复。注意,由存储在SEED SSD 200的SSD驱动卷201中的GNSD分页文件处理的写数据典型的首先被分页元页取消分组程序取消分组,并装入缓存的分页区38。临时文件不存储在闪存并由数据分离管理器108将其从缓存的临时文件区124中读取。在电源启动期间使用持久模式,那些存储在持久模式DRAM映象203中的缓存和元页分组113,114,116,当电源关闭或故障时,可被装载回它们在DRAM 333中的相同位置。从持久模式DRAM映象203复制缓存。可从持久模式DRAM映象203中复制诸如处理器范围、CPU缓存、和恢复范围的刷新信息。When power is turned off or fails and persistent mode is enabled, the SSD driver 100 flushes and prepares information such as the processor scope 207 and CPU cache 209 and the recovery scope 213 to the host DRAM 333 and updates the IPDRAM 213 before storing the DRAM update in the persistent mode DRAM image 203. The battery or other backup power source can then complete the data written to the persistent mode DRAM image 203 for a period of time. Then, when the main power is restored, the data can be restored from the persistent mode DRAM image 203. Note that write data processed by the GNSD paging file stored in the SSD drive volume 201 of the SEED SSD 200 is typically first unpacked by the paging metapage unpacking process and loaded into the cached paging area 38. Temporary files are not stored in flash memory and are read from the cached temporary file area 124 by the data separation manager 108. Using persistent mode during power-up, cache and metapage groups 113, 114, 116 stored in the persistent mode DRAM image 203 can be loaded back to their same locations in DRAM 333 when power is turned off or fails. Caches are copied from the persistent mode DRAM image 203. Refresh information such as processor-wide, CPU cache, and restore-wide information can be copied from the persistent mode DRAM image 203.
如图3C所示的掉电模式,SSD驱动卷201提供用户或由元页用户文件分组处理分组的元页中非临时文件数据类型。SSD驱动卷201还提供了分页文件的数据类型,其分为经分页文件的分组处理116的元页,和文件描述符块(FDB)数据分成经FDB元页分组处理114的元页。临时文件存储在缓存中的临时文件区124并且一旦缓存电源耗尽其将会丢失。FDB数据可包括目录、子目录、FAT1、FAT2等。In power-down mode as shown in FIG3C , SSD drive volume 201 provides non-temporary file data types in metapages grouped by the user or by the metapage user file grouping process. SSD drive volume 201 also provides data types for paging files, which are divided into metapages grouped by the paging file grouping process 116, and file descriptor block (FDB) data, which are grouped into metapages grouped by the FDB metapage grouping process 114. Temporary files are stored in the temporary file area 124 in the cache and will be lost once the cache power is exhausted. FDB data may include directories, subdirectories, FAT1, FAT2, etc.
典型的GND驱动100将不使用DRAM高速缓存以避免关键数据在电源故障时的损失。如图4所示,在掉电期间的主机写期间,GND驱动100中的数据分离管理器108按数据类型分类主机写数据,例如通过检查文件扩展或通过分析FAT和FDB。临时文件存储在具有表入口的缓存的临时文件区124,其在元数据缓存120中被修改。当關機或电源故障时,临时文件区124存储在SEED SSD 200的SSD DRAM 194中的持久模式DRAM映象中。可替换的,根据用户的选择可以不将临时文件存储在持久模式DRAM映象中。A typical GND driver 100 does not utilize DRAM caching to prevent loss of critical data during a power failure. As shown in FIG4 , during a host write during a power outage, the data separation manager 108 in the GND driver 100 classifies host write data by data type, for example by checking file extensions or analyzing the FAT and FDB. Temporary files are stored in a cached temporary file area 124 with table entries, which are modified in the metadata cache 120. Upon shutdown or power failure, the temporary file area 124 is stored in the persistent mode DRAM image in the SSD DRAM 194 of the SEED SSD 200. Alternatively, temporary files may not be stored in the persistent mode DRAM image, depending on the user's preference.
當数据拆分和分组經由GNSD驱动100寫入時,主机300发送写命令至数据分离管理器108,如果被允許的狀況其也可以在通过去重引擎或压缩/加密引擎去重、压缩或加密之后接收主机写数据。去重或压缩文件的去重/压缩表入口或元页分组表可在DRAM 333的元页数据缓存中修改。When data is split and grouped for writing via the GNSD driver 100, the host 300 sends a write command to the data separation manager 108. If permitted, the host can also receive the host write data after deduplication, compression, or encryption by the deduplication engine or compression/encryption engine. The deduplication/compression table entry or metapage grouping table for the deduplication or compression file can be modified in the metapage data cache of the DRAM 333.
还是如图4所示,SSD驱动卷201接收由元页用户文件分组处理分组的元页113中的用户或非临时文件数据类型。SSD驱动卷201还接收分页文件的数据类型,其分为经分页文件的分组处理116的元页,和分成经FDB元页分组处理114的元页的FDB。在正常运行时一旦相应的元页滿了,所有这些三元页面分组113、114、116将从主机300发送到SSD驱动卷201。停电时,未完成的元页分组113、114、116可能丢失。可替换地,如果SEED SSD具有这些三元页面分组镜像DRAM区域202,那么停电时可将数据损失最小化。当关机或电源故障时存储在缓存124的临时文件区的临时文件會损失掉。As shown in Figure 4, the SSD drive volume 201 receives user or non-temporary file data types in the metapage 113 grouped by the metapage user file grouping process. The SSD drive volume 201 also receives data types for the paging file, which are divided into metapages that have been grouped by the paging file grouping process 116, and FDB that have been grouped into metapages that have been grouped by the FDB metapage grouping process 114. During normal operation, once the corresponding metapage is full, all of these three metapage groups 113, 114, and 116 will be sent from the host 300 to the SSD drive volume 201. In the event of a power outage, the incomplete metapage groups 113, 114, and 116 may be lost. Alternatively, if the SEED SSD has these three metapage groups mirroring the DRAM area 202, data loss can be minimized during a power outage. Temporary files stored in the temporary file area of the cache 124 will be lost when the system is shut down or a power failure occurs.
图5示出了加密。数据加密标准是现有的加密电子数据的主要对称密钥算法。其受学术界现代密码术进步的高度影响。早在1970s IBM的发展以及基于Horst Feistel的早期设计,受代理人保护敏感、未分类电子政府数据的邀请将该算法提交至国家标准局(NBS)。Figure 5 illustrates encryption. The Data Encryption Standard (DES) is the predominant symmetric key algorithm used to encrypt electronic data. It is highly influenced by modern cryptographic advances in academia. Developed in the 1970s by IBM and based on an earlier design by Horst Feistel, the algorithm was submitted to the National Bureau of Standards (NBS) at the request of the agency responsible for protecting sensitive, unclassified electronic government data.
先进加密标准(AES)是对电子数据加密的规范,由美国国家标准技术研究所(NIST)建立于2001年。对于AES,NIST选择了Rijndael密码家族的三个成员,每个都具有128位块大小,但有三个不同的密钥长度:128、192和256位。The Advanced Encryption Standard (AES) is a specification for electronic data encryption, established by the United States National Institute of Standards and Technology (NIST) in 2001. For AES, NIST selected three members of the Rijndael cipher family, each with a 128-bit block size but three different key lengths: 128, 192, and 256 bits.
AES已经被美国政府所采纳并且现在被世界广泛使用。其取代了1977年出版的数据加密标准(DES)。AES所描述的算法是对称密钥算法,意思就是对加密和解密都使用相同的密钥。AES has been adopted by the US government and is now used worldwide. It replaced the Data Encryption Standard (DES) published in 1977. The algorithm described by AES is a symmetric key algorithm, meaning that the same key is used for both encryption and decryption.
如果用户选择开启加密,当数据刷新/写入闪存存储器器件时执行加密,例如通过加密引擎240。用户可选择加密为AES或DES加密。在图5中,全部数据加密500可通过刷新数据来执行,例如从缓存,至加密引擎520。在一个示例中,AES加密520可在数据存入SEED SSD驱动530之前在其上执行。而且,全部数据加密550可包括数据向加密引擎240的刷新以在被存入SEED SSD驱动580之前执行DES加密570。解密可是加密的反转过程。例如,如果从闪存存储器器件读数据,解密引擎240可解密之前加密的数据。加密引擎520和570可具有类似于加密/解密引擎240的功能。If the user chooses to enable encryption, encryption is performed when data is flushed/written to the flash memory device, for example, by encryption engine 240. The user can select whether the encryption is AES or DES encryption. In Figure 5, full data encryption 500 can be performed by flushing the data, for example, from a cache, to encryption engine 520. In one example, AES encryption 520 can be performed on the data before it is stored in SEED SSD drive 530. Furthermore, full data encryption 550 can include flushing the data to encryption engine 240 to perform DES encryption 570 before it is stored in SEED SSD drive 580. Decryption can be the reverse process of encryption. For example, if data is read from the flash memory device, decryption engine 240 can decrypt previously encrypted data. Encryption engines 520 and 570 can have similar functionality to encryption/decryption engine 240.
图6示出了GNSD驱动器100所采用的压缩/解压缩过程。如果根据用户的选择开启,当用户应用程式写数据时执行。GNSD驱动器在传送数据至“文件系统驱动器”之前压缩数据。(然后至DRAM缓存,然后至闪存存储器)。当用户应用程式读数据时,GNSD驱动器解压缩数据。可采用与数据压缩相同的方式执行去重。FIG6 illustrates the compression/decompression process employed by the GNSD driver 100. If enabled by user selection, this process is performed when a user application writes data. The GNSD driver compresses the data before sending it to the "file system driver" (then to the DRAM cache, and then to the flash memory). When the user application reads the data, the GNSD driver decompresses the data. Deduplication can be performed in the same manner as data compression.
数据压缩是一项比原始数据表示采用更少位的数据编码技术。压缩具有减少向SEED SSD驱动中写数据的存储,因此增加了耐久性。在一个向SEED SSD驱动的写数据压缩示例中,操作系统600可写带SEED SSD驱动635预期目标的文件605。SEED SSD驱动635具有类似于SEED SSD 200的功能。写文件605可通过文件系统过滤610截取、处理并发送至压缩引擎615以进行压缩。压缩的数据所后被传送至过滤系统驱动器620以及,反过来,至过滤驱动器625并至总线驱动630,以存储在SEED SSD驱动635上。读时的解压缩可是压缩功能的逆过程,其中从SEED SSD驱动635读取压缩数据可传输该压缩数据至文件系统驱动660,通过总线驱动640和过滤驱动650。文件系统驱动660提供具有压缩数据的解压缩引擎665,其将压缩数据转换为解压缩数据。该解压缩数据随后被文件系统过滤670截取,产生一读文件操作675,由此该操作系统600读取未压缩的数据。LZ法是本领域的公知技术并且是压缩/解压缩引擎使用的压缩/解压缩技术。也可以采用其他公知的方法。Data compression is a technique for encoding data using fewer bits than the original data representation. Compression reduces the storage required to write data to a SEED SSD drive, thereby increasing durability. In an example of data compression for writing to a SEED SSD drive, operating system 600 may write file 605 with an intended destination in SEED SSD driver 635. SEED SSD driver 635 has similar functionality to SEED SSD 200. Write file 605 may be intercepted, processed, and sent to compression engine 615 by file system filter 610 for compression. The compressed data is then passed to filter system driver 620 and, in turn, to filter driver 625 and bus driver 630 for storage on SEED SSD drive 635. Decompression on reads can be the reverse of the compression function, where compressed data read from SEED SSD driver 635 can be transmitted to file system driver 660, via bus driver 640 and filter driver 650. File system driver 660 provides decompression engine 665 with the compressed data, which converts the compressed data into decompressed data. The decompressed data is then intercepted by the file system filter 670, generating a read file operation 675, whereby the operating system 600 reads the uncompressed data. The LZ method is a well-known technique in the art and is the compression/decompression technique used by the compression/decompression engine. Other well-known methods may also be used.
图7示出了高级纠错码(ECC)。为了增加SEED SSD驱动750的耐久性,GNSD驱动775与SEED SSD驱动750一起工作以产生高级ECC保护码以帮助较弱页面扩展它们的使用寿命。SEED SSD驱动750决定并管理退化页的位置,包括那些不再被SEED控制器192产生的指定ECC级别保护的页。GNSD驱动775可使用“读弱表命令”745来同步该“弱表”720与SEED驱动700的弱表710。DRAM转换层(DTL)715可是SEED SSD驱动750中的DRAM,其中由GNSD775执行操作为了减少闪存700的不必要的写。无论何时GNSD驱动775识别将被写入弱表720中的页的数据,这可为这个页735产生更高级别ECC数据并存储该产生的ECC数据730于DRAM缓存区域或SEED驱动750的备用部分。当数据被读回时,如果SEED ECC读取无错误的话,则不需要做额外的工作。如果SEED ECC错误,其将错误的数据发送回GNSD驱动775并且GNSD驱动775能从DRAM缓存或SEED驱动750重新找回该产生的ECC数据。该产生的ECC数据可与错误数据一起使用来重新获得正确的数据。FIG7 illustrates advanced error correction codes (ECC). To increase the endurance of the SEED SSD driver 750, the GNSD driver 775 works with the SEED SSD driver 750 to generate advanced ECC protection codes to help weaker pages extend their useful life. The SEED SSD driver 750 determines and manages the location of degraded pages, including those that are no longer protected by a specified ECC level generated by the SEED controller 192. The GNSD driver 775 can synchronize the "weak table" 720 with the weak table 710 of the SEED driver 700 using a "read weak table command" 745. The DRAM translation layer (DTL) 715 can be the DRAM within the SEED SSD driver 750, where operations are performed by the GNSD 775 to reduce unnecessary writes to the flash memory 700. Whenever the GNSD driver 775 identifies data to be written to a page in the weak table 720, it can generate higher-level ECC data for that page 735 and store the generated ECC data 730 in a DRAM cache area or a spare portion of the SEED driver 750. When the data is read back, if the SEED ECC read is error-free, no additional work is required. If the SEED ECC is erroneous, it sends the erroneous data back to the GNSD driver 775, and the GNSD driver 775 can retrieve the generated ECC data from the DRAM cache or the SEED driver 750. The generated ECC data can be used together with the erroneous data to retrieve the correct data.
图7中,“高级ECC”可使用LDPC(低密度奇偶校验)以通过设计LDPC码而产生额外ECC保护位来提供数据更高级别的保护并将其存储在SEED SSD的备份区域。当被保护的数据读取发生错误时,例如,数据无法由SSD器件控制器恢复,读取该存储的对应ECC/LDPC码并使用该码来做出纠正。因此,使用有效的类似LDPC的ECC可提高耐久性。注意,除了类似LDPC的基于图形的码,诸如基于代数的码,不限于BCH、汉明(hamming)码、和纠栅(Reed-Solomon)码。尽管LDPC码相对于其他码而言在保护相同大小数据时倾向于能更快地产生并使用更少的位。In Figure 7, "Advanced ECC" can use LDPC (Low Density Parity Check) to generate additional ECC protection bits by designing LDPC codes to provide a higher level of protection for data and store it in the backup area of the SEED SSD. When an error occurs when the protected data is read, for example, the data cannot be recovered by the SSD device controller, the corresponding ECC/LDPC code of the storage is read and used to make corrections. Therefore, the use of an effective LDPC-like ECC can improve durability. Note that in addition to graph-based codes similar to LDPC, such as algebraic-based codes, it is not limited to BCH, Hamming codes, and Reed-Solomon codes. Although LDPC codes tend to be generated faster and use fewer bits when protecting data of the same size compared to other codes.
图8示出了GNSD驱动100的框图,其中:FIG8 shows a block diagram of the GNSD driver 100 , wherein:
“增加器件”800:GNSD驱动器为对应的物理器件目标物产生并初始化一个新的过滤器器件目标物。“Add Device” 800: The GNSD driver creates and initializes a new filter device object for the corresponding physical device object.
IRP指I/O请求包,如现有技术的通常理解,例如,与微软基于Windows的系统联系但是也可以与其它操作系统环境一起使用。IRP的示例包括:IRP refers to an I/O Request Packet, as commonly understood in the art, for example, in connection with Microsoft Windows-based systems but may also be used with other operating system environments. Examples of IRPs include:
“IRP_MN_启动_器件”805:启动程序以为GNSD驱动器准备SSD 200。“IRP_MN_Start_Device” 805 : Starts a procedure to prepare the SSD 200 for the GNSD driver.
“分配存储器初始化存储器”810:从操作系统控制下的主机主存储器中请求取得一部份的存储器然后将其初始化以便与GNSD驱动器的后续使用。“Allocate Memory Initialize Memory” 810: Request a portion of memory from the host main memory under the control of the operating system and then initialize it for subsequent use with the GNSD driver.
“IRP_MN_去除_器件”815:启动程序以从GNSD驱动器去除SSD 200。“IRP_MN_REMOVE_DEVICE” 815 : Initiates a procedure to remove the SSD 200 from the GNSD driver.
“存储器解脫”820:从主机主存取得的被请求和被分配的存储器還給操作系统。“Memory Detaching” 820: Returning the requested and allocated memory from the host main memory to the operating system.
“IRP调度”825:识别IRP是哪种类型。读、写或器件控制。“IRP调度”包括“IRP_MJ_器件_控制”、“IRP_MJ_读”和“IRP_MJ_写”。"IRP Dispatch" 825: Identifies the type of IRP: read, write, or device control. "IRP Dispatch" includes "IRP_MJ_Device_Control", "IRP_MJ_Read", and "IRP_MJ_Write".
“IRP_MJ_读”:I/O管理器或文件系统驱动器的读请求。"IRP_MJ_READ": a read request from the I/O manager or file system driver.
“逻辑到DRAM单元”830:1.检查该“逻辑到DTL”表以便看出与该单元相关的任何DRAM缓存单元存在否;2.如果是,检查该“逻辑到DTL”表、“DTL_Unit_SEC_CNT”表和“DTL_位图”表832。"Logical to DRAM Unit" 830: 1. Check the "Logical to DTL" table to see if any DRAM cache unit associated with this unit exists; 2. If so, check the "Logical to DTL" table, "DTL_Unit_SEC_CNT" table and "DTL_Bitmap" table 832.
“读取DRAM”834:如果相关“逻辑到DTL”,以及其他三个表表明数据是有效的并且所有数据都是在DRAM中的話。"Read DRAM" 834: If the associated "Logic to DTL", and the other three tables indicate that the data is valid and all data is in DRAM.
“读取器件”836:如果没有相关“逻辑到DTL”,或其他三个表表明数据是无效的或数据部分在DRAM中和部分在SSD 200中。“Read Device” 836 : If there is no associated “Logic to DTL”, or the other three tables indicate that the data is invalid or the data is partially in DRAM and partially in SSD 200 .
“IRP_MJ_写”827:I/O管理器或文件系统驱动器的写请求。"IRP_MJ_WRITE" 827: A write request from the I/O manager or the file system driver.
“逻辑到DRAM单元”838:1.检查该“逻辑到DTL”表以便看出与该单元相关的任何DRAM缓存单元存在否;2.如果是,检查该“逻辑到DTL”表、“DTL_单元_状态”表和“DTL_位图”表840。"Logic to DRAM Cell" 838: 1. Check the "Logic to DTL" table to see if any DRAM cache cells associated with this cell exist; 2. If so, check the "Logic to DTL" table, "DTL_Cell_Status" table and "DTL_Bitmap" table 840.
“向新DRAM写”842:如果“逻辑到DTL”不相关。将数据写入DRAM未使用的缓存单元。更新所有四个表。"Write to New DRAM" 842: If "Logic to DTL" is not relevant, write the data to the unused cache cells of DRAM. Update all four tables.
“向旧DRAM写”844:如果“逻辑到DTL”相关。将数据重写入指向的DRAM缓存单元。更新其他三个表。"Write to Old DRAM" 844: If "Logic to DTL" is relevant, rewrite the data to the pointed DRAM cache unit. Update the other three tables.
“检查刷新需求?”846:检查是否被使用但没有发送至SEED的DRAM缓存区域超过了预定的阈值水平。如果没超过,什么都不做。如果超过了,刷新选择的DRAM缓存单元并更新其他三个表。"Check Refresh Required?" 846: Checks whether the number of DRAM cache cells that are used but not sent to the SEED exceeds a predetermined threshold level. If not, do nothing. If so, refresh the selected DRAM cache cells and update the other three tables.
“IRP_MJ_器件_控制”828:用户应用程式和GNSD驱动器的器件控制操作。"IRP_MJ_Device_Control" 828: Device control operations for user applications and GNSD drivers.
“固定格式”848:如果是“格式”命令,需要更新至SEED器件。写操作:可将数据写如DRAM和所有更新的四个表,然后发送至器件;读操作:从器件读取数据。"Fixed Format" 848: If it is a "Format" command, it needs to be updated to the SEED device. Write operation: data can be written to DRAM and all four tables are updated and then sent to the device; read operation: data is read from the device.
“读表”850:发送最大_DRAM_单元、DRAM_使用、AP的四个表数据。“Read Table” 850: Send four table data of Max_DRAM_Unit, DRAM_Usage, and AP.
“刷新”852:“DRAM全部刷新”、“IDLE刷新”(如:Idle>30秒、每5秒刷新15项)、和“安全擦除”(点击GNSD AP的“安全擦除”按钮或关闭计算机电源、或点击任务栏的器件安全擦除)。全对此有相关。"Refresh" 852: "DRAM Refresh All", "IDLE Refresh" (e.g., if Idle > 30 seconds, refresh 15 items every 5 seconds), and "Secure Erase" (click the "Secure Erase" button on the GNSD AP, turn off the computer power, or click Device Secure Erase on the taskbar). All are related to this.
“读写计数器”854:来自用户应用程式的读/写计数和向SEED的真实读写计数。“Read and Write Counters” 854: Read/write counts from user applications and actual read and write counts to SEED.
图8示出了IRP读流量900,其也在图9中示出,其中:FIG8 shows IRP read traffic 900, which is also shown in FIG9, where:
“逻辑到DRAM单元”905为从用户应用程式读取数据。“检查数据是否全在DRAM?”910决定读数据是否位于DRAM缓存的。"Logic to DRAM Unit" 905 is to read data from the user application. "Check if data is all in DRAM?" 910 determines whether the read data is located in the DRAM cache.
如果全部数据位于DRAM缓存,进入“While循环的扇区计数”915程序。如果没有完成对扇区数据的读取,“复制存储器”920将从相应的DRAM缓存单元的扇区读出数据。之后,返回至“While循环的扇区计数”915。If all data is in the DRAM cache, the process proceeds to "While Loop Sector Count" 915. If the reading of the sector data is not complete, "Copy Memory" 920 reads the data from the corresponding sector of the DRAM cache unit. The process then returns to "While Loop Sector Count" 915.
如果用户应用程式已经按请求读出全部扇区数据,则响应“IRP完成”940至用户应用程式If the user application has read all the sector data as requested, the response "IRP Completed" 940 is sent to the user application.
如果数据不是全部位于DRAM缓存的,“发送IRP至下一个”925,将设置“GNSD读完成”程序,下一个可能是硬盘驱动或硬盘上部过滤器。在这一点上“检查DRAM数据”930验证DRAM中有效数据。如果这样,执行“复制存储器”935并它可响应“IRP完成”940至请求者用户应用程式。如果不是,它可响应“IRP完成”940至用户应用程式。If the data is not completely in the DRAM buffer, "Send IRP to Next" 925 will set up the "GNSD Read Complete" process. The next step may be the hard drive or the upper filter of the hard drive. At this point, "Check DRAM Data" 930 verifies that valid data is in DRAM. If so, "Copy Memory" 935 is executed and it can respond with "IRP Complete" 940 to the requesting user application. If not, it can respond with "IRP Complete" 940 to the user application.
IRP写流程1000示出在图8中且也示出在图10中,其中:The IRP write process 1000 is shown in FIG. 8 and also in FIG. 10 , where:
“逻辑到DRAM单元”1010为从用户应用程式写数据。“While循环扇区sector计数”1020决定所有的写数据都被写入DRAM缓存单元。"Logic to DRAM Cell" 1010 is for writing data from the user application. "While Loop Sector Count" 1020 determines that all write data is written to the DRAM cache cell.
如果都被写入(“检查需要刷新”1070),其可检查是否正在被使用的DRAM缓存而還未发送至SEED的区域是否超出预定阈值水平。如果没超过,什么都不做。如果超过了,刷新选择的DRAM缓存单元并更新其他三个表。做完之后,它可响应“IRP完成”1080至用户应用程式。If all are written ("Check for Flush Required" 1070), it checks whether the area of the DRAM cache currently being used but not yet sent to the SEED exceeds a predetermined threshold level. If not, it does nothing. If so, it flushes the selected DRAM cache unit and updates the other three tables. Once this is done, it responds with "IRP Completed" 1080 to the user application.
如果仍然有数据未被写入DRAM缓存,其可是“检查DRAM数据?”1030(决定是否是数据单元的初始写入)。如果该逻辑地址数据单元没有相关联的DRAM缓存单元,可为給该逻辑地址映象一個新的DRAM缓存单元(更新“逻辑到DTL”和“DTL到逻辑”表)。然后进入“修改位图”1040。If there is still data not written to the DRAM cache, it can proceed to "Check DRAM Data?" 1030 (determine whether this is the initial write of the data unit). If the logical address data unit does not have an associated DRAM cache unit, a new DRAM cache unit can be mapped to the logical address (updating the "Logical to DTL" and "DTL to Logical" tables). Then it proceeds to "Modify Bitmap" 1040.
如果它有相关联的DRAM缓存单元1060,可进入“修改位图”1040。If it has an associated DRAM cache unit 1060, it may proceed to "Modify Bitmap" 1040.
“修改位图”1040:其更新“DTL_位图”和“DTL_单元_状况”表。然后“复制存储器”1050(将扇区数据从逻辑地址拷贝至对应的DRAM缓存单元的扇区)。为了未完成的扇区数据进入“While循环扇区计数”。"Modify Bitmap" 1040: This updates the "DTL_Bitmap" and "DTL_Unit_Status" tables. Then "Copy Memory" 1050 (copies the sector data from the logical address to the corresponding DRAM cache unit sector). For the unfinished sector data, enter the "While Loop Sector Count".
图11示出了刷新框图1100,其中:FIG11 shows a refresh block diagram 1100, wherein:
“Flush PTR=Next Null PTR”1105:让该刷新指针指向下一个空的DRAM单元。"Flush PTR = Next Null PTR" 1105: Let the refresh pointer point to the next empty DRAM cell.
“Check Unit_status=DTL_Host_Data”1110决定DRAM缓存单元的数据状态。如果不是主机数据?,进入“Flush PTR++”130刷新指针使其加1。"Check Unit_status = DTL_Host_Data" 1110 determines the data status of the DRAM cache unit. If it is not host data, enter "Flush PTR++" 130 to refresh the pointer and increase it by 1.
如果是主机数据?,“Check Unit_Status=DTL_Data_Full”1115。如果数据不满,“Check Unit_Status=DTL_Overwrite2”1140,如果是overwrite2状态,“Move to newunit”1145移动数据至新单元,进入“FLUSH PTR++”1130刷新指针使其加1。If it is host data? "Check Unit_Status = DTL_Data_Full" 1115. If the data is not full, "Check Unit_Status = DTL_Overwrite2" 1140. If it is in overwrite2 status, "Move to new unit" 1145 moves the data to the new unit and enters "FLUSH PTR++" 1130 to refresh the pointer and increase it by 1.
如果不是overwrite2状态,“修改映象表”1125(逻辑到DTL、DTL到逻辑、DTL_Unit_status、DTL_位图),然后“刷新”1135数据至SEED器件。If it is not in overwrite2 state, "Modify Image Table" 1125 (Logic to DTL, DTL to Logic, DTL_Unit_status, DTL_Bitmap), then "Refresh" 1135 the data to the SEED device.
如果数据是满的,“检查数据序列”1120,如果为“否”则“刷新”1135数据至SEED器件。If the data is full, "Check Data Sequence" 1120, if "No" then "Refresh" 1135 the data to the SEED device.
如果是“是”,“修改映象表”1125(逻辑到DTL、DTL到逻辑、DTL_Unit_status、DTL_位图?),然后进入“刷新PTR++”1130刷新指针使其增加1。If yes, "Modify Image Table" 1125 (Logical to DTL, DTL to Logic, DTL_Unit_status, DTL_Bitmap?), then enter "Refresh PTR++" 1130 to refresh the pointer and increase it by 1.
图12示出了器件输入输出控制1200,其中:FIG12 shows a device input and output control 1200, wherein:
“固定格式”1205:如果接收的IRP为,例如,0x002d0c141207然后0x00700001207或0x002d0c14然后0x0070000然后0x002d1400,或x002d0c14然后0x0070000然后0x002d1400然后0x002d1080,其表明“格式化开启”1211。当然,此处示出十六进制码只是示例的目的,也可以使用其他码。"Fixed format" 1205: If the received IRP is, for example, 0x002d0c141207 then 0x00700001207 or 0x002d0c14 then 0x0070000 then 0x002d1400, or x002d0c14 then 0x0070000 then 0x002d1400 then 0x002d1080, it indicates "formatting on" 1211. Of course, the hexadecimal code shown here is for example purposes only, and other codes may also be used.
如果接收的IRP是0x002d51901213或0x0066001B 1215,其表示“格式化关闭”1217。If the received IRP is 0x002d51901213 or 0x0066001B 1215 , it means “Formatting Off” 1217 .
“读表”1219发送max_dram_unit、Dram_Using、四个表的数据至AP。"Read Table" 1219 sends data of four tables, max_dram_unit, Dram_Using, to AP.
“最大DRAM单元”1221:分配到的DRAM单元计数器。"Max DRAM Unit" 1221: allocated DRAM unit counter.
“DRAM使用”1223:当前使用的DRAM单元计数器。“DRAM Usage” 1223: Counter of DRAM units currently in use.
“逻辑到DTL”表1227:入口计数值为最大DRAM单元,表示每个逻辑单元對應的DRAM单元地址、“DTL”表示DRAM转换层,其是DRAM的一部分,用于减少不必要的写刷新,如同文中其他地方所描述的,例如图19。“Logical to DTL” table 1227: The entry count value is the maximum DRAM unit, indicating the DRAM unit address corresponding to each logical unit, and “DTL” represents the DRAM translation layer, which is part of the DRAM and is used to reduce unnecessary write refreshes, as described elsewhere in the text, such as Figure 19.
“DTL到逻辑”表1229:入口计数值为最大DRAM单元,表示每个DRAM单元對應的逻辑单元地址。“DTL to Logic” table 1229: The entry count value is the maximum DRAM unit, indicating the logical unit address corresponding to each DRAM unit.
“DTL_位图”表1231:入口计数值为最大DRAM单元,每个入口表示一个DRAM单元,且该项的每1位表示一个LBA(逻辑框地址),1代表LBA的数据在DRAM中,0代表不在DRAM中。"DTL_Bitmap" table 1231: The entry count value is the maximum DRAM unit, each entry represents a DRAM unit, and each bit of this item represents an LBA (logical box address), 1 means that the LBA data is in the DRAM, and 0 means it is not in the DRAM.
“DTL_状态”表1233:入口计数值为最大DRAM单元,每个入口表示每个DRAM单元的状态。"DTL_STATUS" table 1233: The entry count value is the maximum DRAM unit, and each entry represents the status of each DRAM unit.
“刷新”1235:从DRAM 333写数据至物理器件。“Refresh” 1235 : Write data from DRAM 333 to the physical device.
“刷新一个”1237做15次连续刷新(刷新大小依赖于计算且不是固定的)。"Refresh One" 1237 does 15 consecutive refreshes (the refresh size depends on the calculation and is not fixed).
“刷新全部”1241关闭缓存模式然后刷新DRAM中的所有数据。"Refresh All" 1241 turns off cache mode and then refreshes all data in DRAM.
“读计数器”1243:驱动器进入IRP_MJ_READ的次数。"Read Counter" 1243: The number of times the driver enters IRP_MJ_READ.
“写计数器”1245:驱动器进入IRP_MJ_WRITE的次数。"Write Counter" 1245: The number of times the driver enters IRP_MJ_WRITE.
“读参数”1247将全部文件系统写计数器、全部器件写计数器、最大_dram_单元、DRAM_使用、重写计数器、读计数器、写计数器发送至AP。"Read parameters" 1247 sends all file system write counters, all device write counters, max_dram_units, DRAM_usage, overwrite counters, read counters, and write counters to the AP.
图13-14示出I/O请求包(IRPs)是能用于Windows驱动器模型和WindowsNT器件驱动器的内核模式结构,以在彼此之间以及与操作系统通讯。不是Windows操作系统的操作系统可以使用类似的包。图13为器件类型值列表,按字母顺序列出,可用于系统I/O管理器。图14为可用于系统I/O控制的SSD控制码表。IRP为描述输入输出请求的数据结构,且被认为能很好地等价于“输入输出请求描述符”或类似的。不是将大量的小变量(例如缓冲器地址、缓冲器大小、输入输出功能类型等)传送至驱动器,而是将全部这些参数通过指向该持久数据结构的单一指针传送。如果I/O请求不能立即执行,那么将这些具有全部参数的IRP进行排队。通过传送地址至用于该目的的程序,输入输出完成请求,来将I/O完成报告回I/O管理器。如果请求将I/O完成报告至该请求线程,IRP可用于特定内核APC目标的目的。典型的通过响应于用户模式的输入输出请求的输入输出管理器来产生IRP。可是,有时通过即插即用管理器、电源管理器305和其它系统部件来产生IRP,并也可通过驱动器来产生并且然后传送至其它驱动器。Figures 13-14 illustrate I/O request packets (IRPs), kernel-mode structures used by Windows driver models and Windows NT device drivers to communicate with each other and the operating system. Similar packets can be used by operating systems other than Windows. Figure 13 shows an alphabetical list of device type values available to the system I/O manager. Figure 14 shows a table of SSD control codes available for system I/O control. An IRP is a data structure that describes an I/O request and is considered a good equivalent to an "I/O request descriptor" or similar. Instead of passing a large number of small variables (such as buffer address, buffer size, I/O function type, etc.) to the driver, all these parameters are passed through a single pointer to this persistent data structure. If an I/O request cannot be executed immediately, these IRPs with all the parameters are queued. I/O completions are reported back to the I/O manager by passing the address of the program designated for this purpose, an I/O completion request. If I/O completions are reported to the requesting thread, IRPs can be used for specific kernel APC targets. Typically, an IRP is generated by an input/output manager in response to an input/output request from a user mode. However, an IRP is sometimes generated by a plug-and-play manager, a power manager 305, and other system components, and may also be generated by a driver and then sent to other drivers.
读调度1500示于图15,其中:The read schedule 1500 is shown in FIG15 , where:
用户模式下“用户应用程式初始化读请求”1505中,文件记录信息将通过操作系统被从子目录中读出,其将该信息传送至内核模式的“文件系统驱动器”1510。随着GNSD驱动器的执行,该“硬盘上部过滤器”从“文件系统驱动器”(1.)1517截取IRP发送至“硬盘驱动器”。该“硬盘上部过滤器”可检查“逻辑到DTL”表,如果数据已经在DRAM缓存(2.)1545中,则可从DRAM缓存(A.3)1540读取数据并将“输入输出完成请求”(A.4)1542与数据一起发送至“卷”,然后至“文件系统驱动器”(A.5)1544,然后至用户_模式(A.6)1546。如果数据不在DRAM缓存(2.)1545中,其可向“硬盘驱动器”发送请求并设置输入输出完成程序(B.3)1550。可从闪存存储器器件读取数据并发送至GNSD读完成(B.4)1555。如果部分数据已经存储在DRAM缓存中,可更新DRAM缓存(B.5)1560中的读数据,硬盘驱动器可发送IRP至下部驱动器直到最后返回至用户模式并完成读调度程序。In user mode, during the "User Application Initiated Read Request" 1505, the file record information is read from the subdirectory by the operating system, which then passes the information to the kernel-mode "File System Driver" 1510. Following the execution of the GNSD driver, the "Hard Drive Upper Filter" intercepts the IRP from the "File System Driver" (1.) 1517 and sends it to the "Hard Drive." The "Hard Drive Upper Filter" checks the "Logical to DTL" table. If the data is already in the DRAM cache (2.) 1545, it reads the data from the DRAM cache (A.3) 1540 and sends an "Input/Output Completion Request" (A.4) 1542 along with the data to the "Volume," then to the "File System Driver" (A.5) 1544, and then to the user-mode (A.6) 1546. If the data is not in the DRAM cache (2.) 1545, it sends a request to the "Hard Drive" and sets up the input/output completion procedure (B.3) 1550. The data may be read from the flash memory device and sent to the GNSD Read Complete (B.4) 1555. If some of the data is already stored in the DRAM cache, the read data in the DRAM cache may be updated (B.5) 1560, and the hard drive may send an IRP to the lower drivers until it finally returns to user mode and completes the read scheduler.
写调度1600示于图16,其中:The write schedule 1600 is shown in FIG16 , where:
用户模式下“用户应用程式初始化写请求”1605中,通过操作系统将文件记录信息写入当前子目录,例如,并将该信息传送至内核模式的“文件系统驱动器”1610。随着GNSD驱动器100的执行,该“硬盘上部过滤器”1615从“文件系统驱动器”(1.)1612截取IRP发送至“硬盘驱动器”1620。该“硬盘上部过滤器”可将数据写入DRAM缓存并更新“逻辑到DTL”表(2.)1645。然后检查DRAM缓存使用(3.)1650,如果使用没有超过预定阈值(最大_dram_单元-1024),可将“输入输出完成请求”(4.B)1640返至“文件系统驱动器”1610,并完成写调度程序。如果使用超过了预定阈值(最大_dram_单元-1024),可执行预定义“数据_刷新”(4.)1655并通过“硬盘驱动器”1620将已刷新数据发送至闪存存储器器件,该硬盘驱动器可将IRP发送至下部驱动器A 1625以及下部驱动器B 1630直到端点1635,返回至用户模式并完成写调度程序。In user mode, during "User Application Initiated Write Request" 1605, the operating system writes file record information to the current subdirectory, for example, and transmits this information to kernel mode "File System Driver" 1610. As the GNSD driver 100 executes, the "Hard Disk Top Filter" 1615 intercepts the IRP from the "File System Driver" (1.) 1612 and sends it to the "Hard Drive" 1620. The "Hard Disk Top Filter" writes the data to the DRAM cache and updates the "Logical to DTL" table (2.) 1645. The DRAM cache usage is then checked (3.) 1650. If the usage does not exceed a predetermined threshold (max_dram_units=1024), an "Input/Output Completion Request" (4.B) 1640 is returned to the "File System Driver" 1610, completing the write scheduler. If usage exceeds a predetermined threshold (max_dram_units - 1024), a predefined "data_refresh" (4.) 1655 may be executed and the refreshed data may be sent to the flash memory device via the "hard drive" 1620 which may send an IRP to lower driver A 1625 and lower driver B 1630 to endpoint 1635, returning to user mode and completing the write scheduler.
图17示出了写调度元表1700。可是四个元表,例如,用于供给DRAM缓存。第一个表是“逻辑到DTL”表1710。DTL表示“DRAM转换层”。每个表入口距离“文件系统驱动”的偏移可是逻辑地址,例如,在128K字节单元中,并且它的内容可是分配数据的DRAM缓存的偏移起始地址,例如,在128K字节单元中。需要的全部入口代表闪存存储器器件的容量。剩余的三个表全都具有它们的各自偏移作为DRAM缓存单元的起始地址,例如,在128K字节单元中。需要的全部入口是DRAM缓存的全部可获得单元。第二个表是“DTL到逻辑”表1720。它的内容是逻辑单元地址,其是来自“文件系统驱动器”的逻辑地址的起始地址,例如,在128K字节单元中。第三个表是“DTL_单元_状态”表1730。它的内容是对应DRAM缓存单元的状态。一位用于数据有效性;一位用于它的刷新状态;一位用于主机数据;一位用于队列中的写;一位用于一次重写;一位用于两次重写;一位用于DRAM缓存单元的完整的数据使用。第四个表是“DTL_位图”表1740。它的内容是应DRAM缓存单元的256扇区的位图。每位代表DRAM缓存单元中它对应的扇区的使用。在DRAM缓存单元中,逻辑“0”代表空或无效数据以及逻辑“1”代表有效数据,例如256位。FIG17 illustrates a write scheduling metatable 1700. There are four metatables, for example, used to supply a DRAM cache. The first table is a "Logical to DTL" table 1710. DTL stands for "DRAM Translation Layer." Each table entry's offset from the "file system driver" can be a logical address, for example, in 128K byte units, and its content can be the offset starting address of the DRAM cache where the data is allocated, for example, in 128K byte units. All required entries represent the capacity of the flash memory device. The remaining three tables all have their respective offsets as the starting addresses of the DRAM cache cells, for example, in 128K byte units. All required entries are all available cells in the DRAM cache. The second table is a "DTL to Logical" table 1720. Its content is the logical cell address, which is the starting address of the logical address from the "file system driver," for example, in 128K byte units. The third table is a "DTL_Cell_Status" table 1730. Its content is the status of the corresponding DRAM cache cell. One bit for data validity; one bit for its refresh status; one bit for host data; one bit for queued writes; one bit for a single overwrite; one bit for two overwrites; and one bit for the complete data usage of the DRAM cache cell. The fourth table is the "DTL_Bitmap" table 1740. Its contents are a bitmap of the 256 sectors of the DRAM cache cell. Each bit represents the usage of its corresponding sector in the DRAM cache cell. In the DRAM cache cell, a logical "0" represents empty or invalid data, and a logical "1" represents valid data, e.g., 256 bits.
在图18中,示出了GNSD驱动器的修整功能(TRIM)1800。TRIM 1800允许操作系统通知固态驱动器(SSD),其中不再考虑使用数据块并且可被在内部擦除。SSD通常不知道哪个扇区/页是真正在使用的以及哪个可被考虑为自由空间。在硬盘驱动器中,删除操作电性地限制为标记数据块。尽管只是采用重写,硬盘驱动器就可以擦除旧数据,但是TRIM使得该SSD知道已经被删除的数据。如果没有TRIM 1800,该SSD将把数据移动至块中的一个新页、浪費时间、并引起向SSD的不必要的写入。使用GNSD驱动器100,该TRIM命令可通知GNSD驱动器100不要刷新被删除的数据到SSD,去除不必要的写。这降低了相关写扩大,增加了SSD的耐久性。TRIM管理器处理来自主机300上的文件系统或操作系统的TRIM命令1835。该TRIM命令1835表示不再被主机需要的扇区并将其擦去或去除。被修整的页作为被删除而记录在“页状态表”中。当进行背景垃圾收集时,如果块被识别为擦除候选,则不复制该页至新块。在那时完成TRIM命令1835。TRIM管理器执行内务操作例如保持追蹤块中的扇区和页不再被需要。回收站也可用于追蹤准备擦除的块。一旦不再需要整个块,TRIM管理器将激活回收站或其它擦除机制来擦除该块以致该块可再利用。FIG18 illustrates the trimming function (TRIM) 1800 of the GNSD driver. TRIM 1800 allows the operating system to notify the solid-state drive (SSD) that a data block is no longer considered in use and can be internally erased. An SSD typically does not know which sectors/pages are actually in use and which can be considered free space. In a hard drive, delete operations are electronically limited to marking data blocks. While a hard drive can simply overwrite old data, TRIM allows the SSD to be aware of deleted data. Without TRIM 1800, the SSD would move the data to a new page within the block, wasting time and causing unnecessary writes to the SSD. Using the GNSD driver 100, the TRIM command notifies the GNSD driver 100 not to flush the deleted data to the SSD, eliminating unnecessary writes. This reduces write-amplification and increases the endurance of the SSD. The TRIM manager processes TRIM commands 1835 from the file system or operating system on the host 300. TRIM commands 1835 indicate sectors no longer needed by the host and erase or remove them. The trimmed page is recorded as deleted in the Page Status Table. When background garbage collection is performed, if a block is identified as an erase candidate, the page is not copied to a new block. At that time, the TRIM command 1835 is completed. The TRIM manager performs housekeeping operations such as keeping track of which sectors and pages in the block are no longer needed. The Recycle Bin can also be used to track blocks ready for erasure. Once the entire block is no longer needed, the TRIM manager will activate the Recycle Bin or other erase mechanism to erase the block so that it can be reused.
图19中,并且也参考图1,在SSD DRAM 194的DRAM缓冲器中产生耐久转换层(ETL)并提供临时存储以降低闪存损耗。该ETL由与DRAM 194一起工作的SEED控制器192提供以减少对闪存196不必要的写操作。DRAM 20可表示发现在DRAM 194中的DRAM缓冲器。该ETL用于管理DRAM 194和闪存存储器196的互動,在上电时、正常工作期间、以及掉电时。DRAM缓冲器20的临时区域存储着临时文件,其由FDB/FAT中的控制器192读文件扩展识别,该读文件扩展是存储在FAT区域或FDB区域中的文件扩展。临时文件是那些公知的扩展,例如操作系统、文字处理器、互联网浏览器、CAD系统或电子数据表系统。其它应用程式可使用它们自己独有的临时文件的文件扩展。两个区域具有用于分配每个临时文件的表。通过主机逻辑地址可索引到该表。可在DRAM缓冲器中产生受控制器控制的ETL。该ETL可用于提供临时存储以减少闪存损耗。在DRAM缓冲器中分配数据以形成DRAM缓冲器中的数据结构分布,为了跨越多个闪存存储器信道写入新数据,其中可由控制器管理该结构。通过搜寻映象表,用来自标准主机写操作的逻辑地址找出匹配的入口,来自匹配入口读出数据类型位和指針,并识别数据类型为非临时数据类型,该控制器管理非临时数据。用DRAM与SEED SSD配对,包括使用耐久转换层(ETL)来控制对闪存存储器的访问以及对动态随机存取存储器(DRAM)缓存的访问。ETL检查闪存存储器的块,以及若所有错误位超过预选高水平阈值则识别该块为坏块,或者若所有错误位超过预选低水平阈值则登记该块入弱表。典型的,该弱表是与GNSD驱动器100同步的,其可耦合至主机DRAM 333。In FIG19 , and also referring to FIG1 , a durable translation layer (ETL) is generated in the DRAM buffer of SSD DRAM 194 and provides temporary storage to reduce flash memory wear. This ETL is provided by a SEED controller 192 that works with DRAM 194 to reduce unnecessary write operations to flash memory 196. DRAM 20 may represent the DRAM buffer found in DRAM 194. This ETL is used to manage the interaction between DRAM 194 and flash memory 196 during power-up, normal operation, and power failure. The temporary area of DRAM buffer 20 stores temporary files, which are identified by the controller 192 reading the file extension in the FDB/FAT. This file extension is the file extension stored in the FAT area or FDB area. Temporary files have well-known extensions, such as those used by operating systems, word processors, internet browsers, CAD systems, or spreadsheet systems. Other applications may use their own unique file extensions for temporary files. Both areas have a table for allocating each temporary file. This table can be accessed by a host logical address. The ETL, controlled by the controller, can be generated in the DRAM buffer. The ETL can be used to provide temporary storage to reduce flash memory wear. Data is allocated in the DRAM buffer to form a data structure distribution in the DRAM buffer, which can be managed by the controller in order to write new data across multiple flash memory channels. The controller manages non-temporary data by searching the mapping table, finding a matching entry using a logical address from a standard host write operation, reading the data type bits and pointer from the matching entry, and identifying the data type as a non-temporary data type. Pairing DRAM with the SEED SSD includes using an enduring translation layer (ETL) to control access to the flash memory and access to the dynamic random access memory (DRAM) cache. The ETL checks blocks of the flash memory and identifies the block as bad if all error bits exceed a preselected high level threshold, or registers the block in a weak table if all error bits exceed a preselected low level threshold. Typically, the weak table is synchronized with the GNSD driver 100, which can be coupled to the host DRAM 333.
图19示出了存储器映象,其是表示存储在ETL DRAM 20中的各种数据类型的耐久转换层(ETL),其也可是如图1所示的SSD DRAM 194。ETL DRAM20代表SSD DRAM 194的一部分。SEED控制器192的固件使用ETL来管理DRAM 194的ETL DRAM 20与闪存存储器196的互動,在上电时、正常工作期间、以及掉电时。ETL缓冲器20中的临时区域1940存储着临时文件,其由FDB/FAT中的读文件扩展识别,该读文件扩展是存储在FAT区域1958或FDB区域1960中的文件扩展。临时文件是那些以.tmp、.temp、.tmt、.tof、.trs、.tst等为扩展名的。系统相关的临时文件包括._mp、.log、.gid、.chk、.old、.bak。AotoCAD相关的临时文件包括.SV$、.DWL、.AC$。Word相关的临时文件包括.asd文件。Excel相关的临时文件包括.xar文件。其它应用程式可使用它们独有的临时文件的文件扩展名。互联网临时文件区域1942存储具有.gif、.jpg、.js、.htm、.png、.css、.php、.tmp、.mp3、.swf、.ico、.txt、.axd、.jsp、和.aspx扩展名的文件。区域1940和1942都有用于分配每个临时文件的表。可通过来自主机300的逻辑地址来索引该表。FIG19 illustrates a memory map representing the persistent translation layer (ETL) representing various data types stored in ETL DRAM 20, which may also be SSD DRAM 194 as shown in FIG1 . ETL DRAM 20 represents a portion of SSD DRAM 194. The firmware of SEED controller 192 uses the ETL to manage the interaction between ETL DRAM 20 and flash memory 196 in DRAM 194 at power-up, during normal operation, and during power-down. A temporary area 1940 in ETL buffer 20 stores temporary files, identified by a read file extension in the FDB/FAT, which is the file extension stored in FAT area 1958 or FDB area 1960. Temporary files have extensions such as .tmp, .temp, .tmt, .tof, .trs, .tst, etc. System-related temporary files include ._mp, .log, .gid, .chk, .old, and .bak. Temporary files associated with AutoCAD include .SV$, .DWL, and .AC$. Temporary files associated with Word include .asd files. Temporary files associated with Excel include .xar files. Other applications may use their own file extensions for temporary files. The temporary internet file area 1942 stores files with extensions such as .gif, .jpg, .js, .htm, .png, .css, .php, .tmp, .mp3, .swf, .ico, .txt, .axd, .jsp, and .aspx. Areas 1940 and 1942 each have a table for allocating each temporary file. The table can be indexed by a logical address from the host 300.
取数据区域1944存储着取数据和在取数据区域1944中的入口表。计算机每次启动时,Windows操作系统保持追蹤计算机启动方式和那些程式通常被打開的。Windows操作系统保存该信息为预取文件夹中的多个小文件。下次计算机启动时,Windows操作系统指向这些文件以助于快速启动处理。Fetch data area 1944 stores fetch data and a table of entries in fetch data area 1944. Each time the computer is started, the Windows operating system keeps track of how the computer was started and which programs are typically opened. The Windows operating system saves this information as several small files in a prefetch folder. The next time the computer is started, the Windows operating system points to these files to help speed up the startup process.
预取文件夹是Windows操作系统中的系统文件夹的子文件夹。预取文件夹是自保持的,且不需要删除或清空其内容。具有扩展名.log或.evt的登记文件存储在登陆文件区域1946中,其也可具有映象表用于存储在该区域的登陆文件,或是被看作临时文件类型。The prefetch folder is a subfolder of the system folder in the Windows operating system. The prefetch folder is self-perpetuating and does not need to be deleted or its contents emptied. Log files with the extension .log or .evt are stored in the log file area 1946. They may also have an image table for log files stored in this area or be treated as temporary files.
在外围存储设备例如硬盘或SEED SSD驱动器200和主机主存储器之间交换数据的分页文件,被存储并映象于分页区域1948。从闪存存储器196读取并存储在ETL DRAM缓冲器20中的数据读缓存位于读缓存区域1951。可使用读缓存入口的映象表,并包括闪存存储器196中的标签、有效位和指向数据的指针。系统区域1950存储闪存系统数据用于SEED SSD控制器192的操作系统。缓冲器1952中的数据存储著未加工已被写入SEED SSD驱动器200的主机数据(包括LBA)。该实际主机数据随后在被写入闪存存储器196之前被移动至数据写缓存1954。与数据写缓存1954相关的超级写缓存技术用于缓存数据至闪存196,为了减少对闪存196写/擦次数和备份/交换块1956进一步减少闪存196中的写/擦。The paging file used to exchange data between a peripheral storage device, such as a hard drive or SEED SSD drive 200, and the host main memory is stored and mapped in paging area 1948. The read cache of data read from flash memory 196 and stored in ETL DRAM buffer 20 is located in read cache area 1951. A mapping table of read cache entries is available and includes a tag, valid bit, and pointer to the data in flash memory 196. System area 1950 stores flash system data for the operating system of SEED SSD controller 192. Buffer 1952 stores raw host data (including LBAs) that has been written to SEED SSD drive 200. This actual host data is then moved to data write cache 1954 before being written to flash memory 196. The super write cache technology associated with data write cache 1954 is used to cache data in flash memory 196 to reduce write/erase times to flash memory 196, and backup/swap blocks 1956 further reduce write/erase times in flash memory 196.
从主机300的数据写操作首先向缓冲器1952中写入数据,然后经GNSD驱动器100诸如压缩的处理之后,它将被写入数据写缓存1954,然后写入闪存存储器196。在从主机300连续写大量数据的情况下,写入闪存存储器196可能是一个瓶颈。可连续将数据写入数据写缓存1954直到写满,然后从缓冲器1952中的数据向数据写缓存1954的流动将停止。如果缓冲器1952中的数据也满了,然后将提醒主机300停止阻塞。Data write operations from host 300 first write data to buffer 1952. After processing by GNSD driver 100, such as compression, the data is written to data write cache 1954 and then to flash memory 196. When large amounts of data are continuously written from host 300, writing to flash memory 196 may become a bottleneck. Data may be continuously written to data write cache 1954 until it is full, at which point the flow of data from buffer 1952 to data write cache 1954 stops. If data in buffer 1952 is also full, host 300 is notified to stop blocking.
数据写缓存1954采用耐久性写缓存算法,其存储写数据至ETL DRAM缓冲器20而不是闪存存储器196直到被逐出。因此具有相同LBA的多次写入可以重疊写入到数据写缓存1954中以及根据规则(例如基于消逝的时间、分配的容量等)或關機或电源故障時,用条准备单元写入数据到闪存存储器196。数据写缓存1954还支持部分页写数据直至全部页被分组成多个部分页。因此,多个部分页写可以根据规则(例如基于消逝的时间、分配的容量等)或關機或电源故障而写入闪存存储器196。The data write cache 1954 employs a durable write cache algorithm that stores write data in the ETL DRAM buffer 20 rather than in the flash memory 196 until evicted. Therefore, multiple writes with the same LBA can be overlapped and written to the data write cache 1954 and written to the flash memory 196 using stripe preparation units based on rules (e.g., based on elapsed time, allocated capacity, etc.) or upon shutdown or power failure. The data write cache 1954 also supports partial page writes until the entire page is grouped into multiple partial pages. Therefore, multiple partial page writes can be written to the flash memory 196 based on rules (e.g., based on elapsed time, allocated capacity, etc.) or upon shutdown or power failure.
多信道控制器结构中,器件控制器192将排列成若干页(若干的数量等于多个信道数)的数据从数据写缓存1954写入数据条准备单元中的闪存至最好使用闪存界面带宽。对于每个器件控制器192,其包括信道C的数量,每个信道附属F个闪存芯片,每个芯片堆叠D个晶片,以及每个晶片具有面P。信道条的大小可设置为F*D*P页。该条的深度可设置为C*F*D*P页。器件控制器192从数据写缓存1954选择数据并将数据写入闪存存储器196的被选条,然后对应PBA地址更新相关映象表入口。每个信道只有一条总线,因此只可以访问一个晶片。将交叉存取F*D个晶片以共享总线来最大化总线使用。条准备单元的大小可是C或上至C*F*D*P页。In a multi-channel controller architecture, device controller 192 writes data arranged into multiple pages (the number of pages equals the number of channels) from data write buffer 1954 to the flash memory in the data stripe preparation unit to optimize the use of the flash memory interface bandwidth. For each device controller 192, there are C channels, F flash chips attached to each channel, D dies stacked per die, and P faces per die. The channel stripe size can be set to F*D*P pages. The stripe depth can be set to C*F*D*P pages. Device controller 192 selects data from data write buffer 1954 and writes it to the selected stripe of flash memory 196, then updates the associated mapping table entry corresponding to the PBA address. Each channel has only one bus and can therefore access only one die. F*D dies are interleaved to share the bus to maximize bus utilization. The stripe preparation unit size can be C or up to C*F*D*P pages.
一种增加闪存存储器耐久性的耐久转换层(ETL)方法具有低的指定擦除周期寿命。闪存存储器界面具有多个用于信道的总线;每个信道具有多个闪存芯片;每个芯片具有多个晶片,以及每个晶片具有多个面。可同时访问所有信道。不能同时访问同一信道中的所有晶片;在同一信道中一次只能访问一个晶片。当写或读其它晶片时,可访问信道中的其它晶片。交叉存取的写或读可增加闪存访问的性能。数据写缓存存储在DRAM缓冲器中并有控制器根据规则来管理。当数据写缓存中的脏数据大于条准备单元时,器件控制器管理该脏数据并通过闪存存储器界面将其写入闪存存储器。器件控制器管理闪存存储器的每个信道的数据分布。器件控制器管理每个信道中一个芯片的一个晶片的数据交叉存取,以及管理映象表入口以追踪LBA至PBA映象。A durable translation layer (ETL) method for increasing the endurance of flash memory has a low specified erase cycle life. The flash memory interface has multiple buses for channels; each channel has multiple flash chips; each chip has multiple dies; and each die has multiple faces. All channels can be accessed simultaneously. Not all dies in the same channel can be accessed simultaneously; only one die in the same channel can be accessed at a time. While writing or reading from other dies, other dies in the channel can be accessed. Interleaving writes or reads increases flash memory access performance. Data write cache is stored in a DRAM buffer and managed by a controller according to rules. When dirty data in the data write cache is larger than a stripe ready unit, the device controller manages the dirty data and writes it to the flash memory through the flash memory interface. The device controller manages data distribution for each channel of the flash memory. The device controller manages data interleaving for one die of one chip in each channel and manages mapping table entries to track LBA to PBA mappings.
在其它可替换的设计中,在多信道控制器结构中,每个信道具有其自己的数据写缓存1954。写条准备单元与每个闪存存储器信道同时最大化闪存存储器界面速度。用户文件数据可被识别为基于击中率>=n(例如2)的频繁访问数据和击中率<n的不频繁访问数据。将它们分别写入两个数据写缓存1954。频繁访问区的具有相同LBA地址的多写数据将重写DRAM中的旧内容即不刷新以致减少向闪存存储器196的写次数。数据写缓存的频繁访问区的缓冲数据将被存储在条准备单元的闪存存储器196中,依据诸如基于消逝的时间、分配的容量等规则,或關機或电源故障。数据写缓存的非频繁访问区的缓冲数据将被存储在条准备单元的闪存存储器196中,依据诸如基于消逝的时间(例如15分)、分配的容量等其它规则,或依据關機或电源故障。In another alternative design, in a multi-channel controller structure, each channel has its own data write cache 1954. The write stripe preparation unit is synchronized with each flash memory channel to maximize the flash memory interface speed. User file data can be identified as frequently accessed data based on a hit rate >= n (e.g., 2) and infrequently accessed data with a hit rate < n. They are written to the two data write caches 1954 separately. Multiple writes with the same LBA address in the frequently accessed area will overwrite the old content in the DRAM, i.e., not refreshed, thereby reducing the number of writes to the flash memory 196. The buffered data in the frequently accessed area of the data write cache will be stored in the flash memory 196 of the stripe preparation unit according to rules such as elapsed time, allocated capacity, or shutdown or power failure. The buffered data in the infrequently accessed area of the data write cache will be stored in the flash memory 196 of the stripe preparation unit according to other rules such as elapsed time (e.g., 15 minutes), allocated capacity, or shutdown or power failure.
当LBA地址與主機地址有偏差时,对LBA地址增加补偿以使在写入数据写缓存1954之前将LBA地址与闪存存储器196的页地址对准以使得后续写入闪存存储器更有效率。When the LBA address deviates from the host address, compensation is added to the LBA address to align the LBA address with the page address of the flash memory 196 before writing data to the write cache 1954 to make subsequent writes to the flash memory more efficient.
耐久备用和交换块1956用于垃圾收集功能以巩固有效数据并在被写入闪存之前从写缓存去除数据。页状态表1963包含具有页状态入口的表,例如空页、使用过的页、垃圾页(TRIMed)、坏页、和需要额外ECC保护的页。压缩LBA表1961为压缩的用户数据存储映象入口。块擦除计数表1964为闪存存储器196中的每个物理块保持擦除计数器的轨迹以及块状态。Durable spare and swap blocks 1956 are used for garbage collection to consolidate valid data and remove data from the write cache before being written to the flash memory. Page status table 1963 contains a table with page status entries, such as free pages, used pages, trash pages (TRIMed), bad pages, and pages requiring additional ECC protection. Compressed LBA table 1961 is an entry for the compressed user data image. Block erase count table 1964 keeps track of the erase counter and block status for each physical block in flash memory 196.
部分页映象表1966存储部分页映象信息。DRAM 20不具备足够的全部映象表的空间,因此只有部分被加载至DRAM。当LBA表入口不在DRAM中时,则将去除部分映象表中的一些部分并加载相关LBA表至DRAM。部分子扇区分组映象表1968存储数据文件的子扇区映象信息,其大小小于一页。部分子扇区分组映象表1968的部分映象表具有可设置为N的映象表仅为1的入口。其它N-1的设置被存储在闪存存储器中并在部分映象表发生未擊中时取入DRAM缓冲器。Partial page mapping table 1966 stores partial page mapping information. DRAM 20 does not have enough space for the entire mapping table, so only a portion is loaded into DRAM. When an LBA table entry is not in DRAM, some portion of the partial mapping table is removed and the associated LBA table is loaded into DRAM. Partial sub-sector group mapping table 1968 stores sub-sector mapping information for data files and is smaller than a page. The partial mapping table of partial sub-sector group mapping table 1968 has a mapping table entry that can be set to N, with only one entry. The remaining N-1 entries are stored in flash memory and loaded into the DRAM buffer in the event of a partial mapping table miss.
智能数据收集器1970具有数据表和其它信息供SMART监控器246的SMART功能39(图1)使用并可被主机通过SMART命令或供应商命令请求。The intelligent data collector 1970 has data tables and other information for use by the SMART function 39 (FIG. 1) of the SMART monitor 246 and can be requested by the host through SMART commands or vendor commands.
在ETL DRAM缓冲器20中的区域大小可由所有ETL DRAM 20的大小、页大小、块大小、和闪存存储器的扇区大小来决定,并且使用页映象或块,或估計入口比例其中範圍是使用页映象的而不是块映象的。例如,ETL DRAM缓冲器20可是512兆字节DRAM,给临时区域1940分配240兆字节,给互联网临时区域1942分配160兆字节,给取数据分配12兆字节,给登陆文件分配6兆字节等。The size of the region in the ETL DRAM buffer 20 can be determined by the overall ETL DRAM 20 size, the page size, the block size, and the sector size of the flash memory, and by using page mapping or block mapping, or by estimating the proportion of entries where the region is page-mapped rather than block-mapped. For example, the ETL DRAM buffer 20 can be a 512-megabyte DRAM, with 240 megabytes allocated for the temporary area 1940, 160 megabytes for the internet temporary area 1942, 12 megabytes for fetch data, 6 megabytes for log files, and so on.
在多信道控制器结构中,器件控制器192从闪存存储器196读数据并经过多信道结构到达各种ETL表(FAT/子映象表1958、FBD/子映象表1960、页状态表1962、压缩LBA表1961、块擦除计数表1964、部分页映象表1966和部分子扇区分组映象表1968)。In the multi-channel controller structure, the device controller 192 reads data from the flash memory 196 and passes through the multi-channel structure to various ETL tables (FAT/sub-image table 1958, FBD/sub-image table 1960, page status table 1962, compressed LBA table 1961, block erase count table 1964, partial page image table 1966 and partial sub-sector group image table 1968).
在多信道控制器结构中,器件控制器192可写各种ETL表(FAT/子映象表1958、FBD/子映象表1960、页状态表1962、压缩LBA表1961、块擦除计数表1964、部分页映象表1966和部分子扇区分组映象表1968),其排列为若干页(若干的数量等于多个信道数)以刷新条准备单元,根据规则(例如基于消逝的时间、分配的容量等)或依赖于關機或电源故障,以達成最好使用闪存界面带宽。In a multi-channel controller architecture, the device controller 192 may write various ETL tables (FAT/sub-image table 1958, FBD/sub-image table 1960, page status table 1962, compressed LBA table 1961, block erase count table 1964, partial page map table 1966, and partial sub-sector group map table 1968), which are arranged into a number of pages (the number of which is equal to the number of channels) to refresh the stripe preparation units, according to rules (e.g., based on elapsed time, allocated capacity, etc.) or depending on shutdown or power failure, to achieve the best use of the flash interface bandwidth.
本文所描述的绿能与非固态驱动器应用程式180和驱动器100的实施例对SSD器件的耐久性具有令人深刻的效果。事实上,GNSD驱动器100可提供多于10倍的SSD写放大的提高。例如,标准TLC SSD具有标准的500-1500编程/擦除(P/E)周期的耐久性,而本文发明的实施例对TLC SSD可增强至5000-15000(P/E)周期的耐久性。此外,多层单元(MLC)SSD和单层单元(SLC)SSD的耐久性经历了超过当前MLC和SLC SSD标准耐久性10倍的提高。而且,写放大相对于SSD的标准值减小了。The green energy and non-solid state drive application 180 and embodiments of the drive 100 described herein have a profound effect on the endurance of SSD devices. In fact, the GNSD drive 100 can provide more than a 10x improvement in SSD write amplification. For example, a standard TLC SSD has a standard endurance of 500-1500 program/erase (P/E) cycles, while the embodiments of the invention herein can enhance the endurance of a TLC SSD to 5000-15000 (P/E) cycles. In addition, the endurance of multi-layer cell (MLC) SSDs and single-layer cell (SLC) SSDs has experienced an improvement of more than 10 times the endurance of current MLC and SLC SSD standards. Moreover, write amplification is reduced relative to the standard value of the SSD.
GNSD驱动器不限于对SSD的耐久性/性能的提高。其还可用于提高其它非挥发存储器件,例如,但不限于安全数字存储卡(SD)、多媒体存储卡(MMC)、内嵌多媒体存储卡(eMMC)、M.2、硬盘驱动器(HDD)以及混合SSD/HDD。The GNSD driver is not limited to improving the endurance/performance of SSDs. It can also be used to improve other non-volatile storage devices, such as, but not limited to, Secure Digital (SD), MultiMediaCard (MMC), Embedded MultiMediaCard (eMMC), M.2, Hard Disk Drive (HDD), and hybrid SSD/HDD.
尽管已经通过参照电路图的示例方式说明了本发明,但是本文中应该注意,对本领域技术人员来说,可以出现各种变化和修改。因此,除非这种变化和修改偏离本发明的精神,否则它们都应该包括在本发明的构造之内。Although the present invention has been described by way of example with reference to the circuit diagrams, it should be noted herein that various changes and modifications may occur to those skilled in the art. Therefore, unless such changes and modifications depart from the spirit of the present invention, they should all be included in the construction of the present invention.
Claims (20)
Applications Claiming Priority (6)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US12/141,879 US20080320209A1 (en) | 2000-01-06 | 2008-06-18 | High Performance and Endurance Non-volatile Memory Based Storage Systems |
| US13/540,569 US8959280B2 (en) | 2008-06-18 | 2012-07-02 | Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear |
| 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 |
| US13/788,989 US9123422B2 (en) | 2012-07-02 | 2013-03-07 | Endurance and retention flash controller with programmable binary-levels-per-cell bits identifying pages or blocks as having triple, multi, or single-level flash-memory cells |
| US14/543,472 US9389952B2 (en) | 2008-06-18 | 2014-11-17 | Green NAND SSD application and driver |
| US14/543,472 | 2014-11-17 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| HK1220271A1 HK1220271A1 (en) | 2017-04-28 |
| HK1220271B true HK1220271B (en) | 2021-02-26 |
Family
ID=
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US9489258B2 (en) | Green NAND SSD application and driver | |
| US20220139455A1 (en) | Solid state drive architectures | |
| US11048589B2 (en) | Preserving data upon a power shutdown | |
| US9841911B2 (en) | Green NAND device (GND) driver with DRAM data persistence for enhanced flash endurance and performance | |
| US9489297B2 (en) | Pregroomer for storage array | |
| US11747979B2 (en) | Electronic device, computer system, and control method | |
| KR101522848B1 (en) | Self-journaling and hierarchical consistency for non-volatile storage | |
| JP6450598B2 (en) | Information processing apparatus, information processing method, and program | |
| US20150331624A1 (en) | Host-controlled flash translation layer snapshot | |
| US20140195725A1 (en) | Method and system for data storage | |
| CN105009094A (en) | Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive | |
| CN105659204A (en) | Method and apparatus for performing annotated atomic write operations | |
| TWI498738B (en) | File protecting method and system, and memory controller and memory storage apparatus thereof | |
| JP6094677B2 (en) | Information processing apparatus, memory dump method, and memory dump program | |
| CN105404468B (en) | Green and non-solid state disk applications and drives therefor | |
| US20140325168A1 (en) | Management of stored data based on corresponding attribute data | |
| US20140281581A1 (en) | Storage Device | |
| HK1220271B (en) | Green nand ssd application and driver |