HK1220271B - 绿能与非固态硬盘应用及其驱动器 - Google Patents
绿能与非固态硬盘应用及其驱动器 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
相关申请的交叉引用
本申请涉及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),其中它们每一个已经公开的内容在此整体并入参考,并且它们都属于同一权利受让人。
技术领域
本发明一般涉及闪存存储器以及,更特别地,涉及提高闪存存储器耐久性的方法和装置。
背景技术
带有旋转磁盘的硬盘正在日益被利用半导体闪存存储器的更可靠的固态驱动器(SSD)代替。NAND闪存存储器采用在浮栅上存储电荷的电可擦除可编程只读存储器(EEPROM)单元。单元一般用雪崩电流编程,然后利用穿过氧化物薄层的量子力学隧道擦除。可惜的是,在编程或擦除过程中某些电子可能在氧化物薄层中被捕捉。假定编程电压恒定,这些被捕捉的电子在随后的编程周期中减少了该单元中贮存的电荷。往往要提高编程电压来补偿被捕捉的电子。
随着闪存存储器的密度和尺寸的增大,该单元的尺寸及其可靠性和寿命已经全都降低。闪存存储器保证能够承受的编程-擦除周期数约为100,000周期,在正常的读写条件下这被认为是一个很长的寿命了。但较小的闪存单元已经经历高得令人不安的损耗。较新式的二级单元闪存存储器具有小于10,000编程-擦除(P/E)周期的耐久性,而对于三级单元(TLC)在约500到约1500P/E周期的耐久性。若当前的趋势继续,则未来的闪存存储器可能只允许300编程-擦除周期。这样低的耐久性可能严重地限制闪存存储器可能的用途,以及用于固态硬盘(SSD)的应用。需要高耐久性的SSD驱动器和耐久性的增强方法。
发明内容
本发明实施例提供一种器件和方法。该器件包括耦合至主机DRAM的绿能与非固态驱动(GNSD)驱动器,该器件有存储管理器的GNSD驱动器耦合至上部过滤器;耦合至该主机DRAM的数据分组引擎;耦合至该主机DRAM的取消数据分组引擎;以及耦合至该存储管理器的电源管理器;以及耦合至该存储管理器的刷新/恢复管理器。GNSD驱动器耦合至GNSD应用,以及主机DRAM耦合至非挥发存储器。在实施例中,GNSD驱动器还包括压缩/解压缩引擎,耦合至文件系统过滤器;加密/解密引擎,耦合至文件系统过滤器;或高级误差纠错码引擎,耦合至文件系统过滤器。在采用加密/解压缩引擎的实施例中,加密/解密引擎配置为根据数据加密标准或先进加密标准其中之一进行加密。
本发明实施例还包括耦合至主机DRAM的GNSD驱动器,其包括数据分组器;DRAM数据写缓存,耦合至数据分组器;取消数据分组器;以及DRAM数据读缓存,耦合至取消数据分组器。数据分组器和取消数据分组器耦合至上部过滤器和下部过滤器。GNSD驱动器耦合至GNSD应用程式。DRAM耦合至非挥发存储器。在实施例中,GNSD驱动器还包括压缩/解压缩引擎,耦合至下部过滤器;去重引擎,耦合至下部过滤器;加密/解密引擎,耦合至下部过滤器;或高级误差纠错码引擎,耦合至下部过滤器。GNSD驱动器还可包括智能数据监控器,耦合至超级增强耐力设备SSD;以及安全引擎,耦合至主机。高级误差纠错码引擎采用基于图形编码或代数编码之一。在一实施例中,高级误差纠错码引擎采用基于图形编码的低密度奇偶校验码。数据分组器和取消数据分组器每个都耦合至用于用户数据的元页分组器;用于FDB的元页分组器;以及用于页文件页的元页分组器。
实施例还提供耦合至主机DRAM的GNSD应用程式,其中包括耦合至GNSD驱动器的SSD内部清除模块;耦合至GNSD驱动器的DRAM分配模块;耦合至GNSD驱动器的驱动器安装模块;或耦合至GNSD驱动器的缓存模式开启/关闭开关。
实施例提供了一种具有GNSD驱动器的计算机系统主机,该GNSD驱动器耦合至数据分组和取消数据分组在计算机系统主机中;和一种耦合至GNSD驱动器和计算机系统主机的GNSD应用程式。在本实施例中,GNSD驱动器的数据分组和取消数据分组耦合至计算机系统主机的上部过滤器和下部过滤器,以及耦合至非挥发存储器器件的计算机主机。实施例还包括耦合至计算机主机的操作系统的配置和登记设置。
本发明的实施例包括一种操作耦合至主机DRAM的GNSD驱动器和GNSD应用程式的方法,其包括向主机和GNSD应用程式耦合配置和登记设置;向主机DRAM耦合GNSD驱动器数据分组引擎;向主机DRAM耦合GNSD驱动器取消数据分组引擎;向主机耦合GNSD驱动器的电源管理器;向主机耦合GNSD驱动器的存储器管理;向DRAM耦合GNSD驱动器的刷新/恢复管理器;向上部过滤器和下部过滤器耦合GNSD驱动器数据分组引擎和取消数据分组引擎;以及向超级增强耐久设备(SEED)SSD耦合DRAM。该方法还包括禁止驱动索引、禁止驱动搜索索引、减少页面文件的大小、禁用系统恢复、禁用休眠、禁用预取、减小回收站大小、禁用磁盘碎片整理程序、减少记录;以及禁用性能监视器、禁用写缓存、或禁用写缓存缓冲器刷新。该SEED SSD的耐久性增加至超过规定值并且写放大被减少至小于规定值。
在实施例中,该方法还包括同步弱表至SEED SSD块的弱表;在弱表中产生页数据的高级纠错码(ECC)数据、提供产生的高级ECC数据;存储该产生的高级ECC数据于主机DRAM中的一个缓存区域,或SEED SSD的剩余区域;以及写入由弱表指示的页。该方法可通过ECC引擎读取页中的数据而继续以及,如果SEED SSD本地ECC引擎确定页中数据是错误的,则ECC引擎读取生成的弱表高级ECC属于错误的页数据;以及用由ECC引擎生成的高级ECC来纠正该错误的页数据。
在实施例中,该方法还包括分组用户数据为第一元页;分组系统FDB为第二元页;分组页文件页为第三元页;以及存储该第一第二和第三元页至SEED SSD的存储卷。在一个实施例中,该方法包括提供耐久转换层(ETL)以控制对SEED SSD中的闪存存储器的访问以及对DRAM缓冲器的访问;通过ETL检查闪存存储器块和通过ETL识别若所有错误位超过预选高水平阈值则该块为坏块,或者通过ETL若所有错误位超过预选低水平阈值使该块进入弱表;以及同步耦合至DRAM的GNSD驱动器的弱表。
本发明的实施例还包括一种增加非挥发闪存存储器耐久性的方法,包括耦合具有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数据来纠正该错误的数据。
附图简要说明
一般通过参照附图示出本发明,其中:
图1为根据本发明教导的计算机系统的框图;
图2为根据本发明教导的具有绿能与非固态硬盘驱动器(GNSD)的主机的框图;
图3A为根据本发明教导的具有实现主机读功能的GNSD的计算机系统的功能框图;
图3B为根据本发明教导的从超级增强耐力设备(SEED)固态硬盘实现读操作的GNSD的功能框图;
图3C为根据本发明教导的具有在掉电模式中实现主机读功能的GNSD的计算机系统的功能框图;
图4为根据本发明教导的具有在掉电模式中实现主机写功能的GNSD的计算机系统的功能框图;
图5为根据本发明教导的表示DES/AES加密过程的高级框图;
图6为根据本发明教导的表示数据压缩/解压缩过程的高级框图;
图7为根据本发明教导的在高级误差纠错码工作期间GNSD驱动器与SEED相互作用的框图;
图8为根据本发明教导的表示实现用于输入/输出(I/O)请求包(IRP)的操作的GNSD的框图;
图9为根据本发明教导的表示GNSD IRP读流程的框图;
图10为根据本发明教导的表示GNSD IRP写流程的框图;
图11为根据本发明教导的表示GNSD刷新块操作的框图;
图12为根据本发明教导的表示SSD I/O控制功能的框图;
图13为根据本发明教导的表示相对于GNSD驱动器和GNSD应用程式的SSD I/O控制功能的框图;
图14为根据本发明教导的表示SSD I/O控制编码的示例;
图15为根据本发明教导的表示用户发起的读请求(“读发送”)的方框流程图;
图16为根据本发明教导的表示用户发起的写请求(“写发送”)的方框流程图;
图17为根据本发明教导的表示写发送元表的示例性列表;
图18为根据本发明教导的表示TRIM功能性命令的方框流程图;
图19为根据本发明教导的耐用转换层的表示地图;
参照相关附图对一些实施例进行了详细的描述。另外的实施例,特征和/或优点将出现在随后的描述中或可能通过实践本发明获得学习。在附图中,其不是按比例缩小的,在全文描述中相同的附图标记指代相同的特征。下面的描述没有局限的意义,而仅仅是以为了描述本发明一般原则的目的给出。
具体实施例
在阻止、结合或缓存至DRAM的主机上执行的绿能与非固态硬盘驱动器(GNSD)应用程式和GNSD驱动器,在它们写到闪存之前,因此降低了向闪存的写频率。绿能或低能闪存器件采用低耐久性NAND闪存存储器。在主机上的GNSD应用程式和GNSD驱动器产生并管理主机和SSD上的多个缓存,其可具有低耐久性闪存存储器。低耐久性闪存存储器包括,但不限于,三级单元(TLC)NAND闪存存储器。GNSD应用程式和GNSD驱动器与SSD和主体运行以将SSD转换为超级增强耐久闪存驱动,或超级增强耐久器件(SEED)SSD。文中的示例可应用至微软、雷蒙德,WA USA的Windows操作系统,但是类似作了適當的修正的示例可应用至其他操作系统。
参照图1和2,计算机系统5包括主机300和SEED SSD 200。主机300包括GNSD驱动器100,其可耦合至GNSD应用程式180。GNSD驱动器100具有存储器管理器106,和刷新/恢复管理器107。此外,GNSD驱动器100可包括加密/解密引擎240,高级纠错码(ECC)引擎241,压缩/解压缩引擎242,去重引擎243,和安全引擎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缓存区域满时被重写。
“刷新/恢复管理器”107提供一种在关机或掉电时快速刷新DRAM数据至SSD 200以及电源再來时重新将被刷新的数据从SSD 200存入DRAM。其还可在当DRAM缓存到达预定水平标记时刷新DRAM 333至SSD 200。如果主机对SSD 200没激活,GNSD驱动器100可基于用户的选择将DRAM缓存数据写入SSD 200。当电源关机或掉电时,DRAM缓存,例如SSD DRAM 194,中的脏50
数据将作为一个图像文件而保存至SEED SSD。这种方式和所有标准操作相比都将更快。在电源恢复时,该图像可被读出并按照上次重新装载。
提供GNSD驱动器100的功能288结合配置和操作系统的设置以改善耐久性和SEEDSSD的性能。下面详细描述结合配置和操作系统的设置以改善耐久性和SEED SSD性能的GNSD驱动器100的功能288:
禁止驱动索引:SSD 200功能求快,约0.1毫秒,这样的索引是不需要的。
禁止驱动搜索索引:禁止搜索索引有助于增加SSD的性能和寿命。禁止此选项可以防止Windows操作系统试图追踪每一个文件搜索。缺点是,SSD的搜索可能变慢。
减少页面文件的大小:将页面文件留在SSD上但将它设置为一个固定的“合理”尺寸。操作系统(OS)会分配一个页面文件是大小与安装的DRAM 333相同的大小。对于大型DRAM机器,操作系统会快速消耗SSD空间。操作系统的页面文件在SSD上的功能表现,取决于系统中的DRAM内存量。它可以被设置为例如1或2GB的大小。当设置页面文件的值时,其参数可设置为相同、固定、最小和最大值,其反映了SSD 200上的可用空间之间的平衡以及可获得多少以及有多少经常使用的DRAM 333。
禁用系统恢复:系统恢复功能允许安装软件、驱动程序和其他可被重新运行的更新。禁用此功能可以释放介于几百兆字节和几十亿字节之间存储。可使用的系统还原的磁盘空间量被减少,或甚至完全关闭时会面临不能自动从因系统变化引起的问题中恢复的风险。然而,如果禁用此功能,用户可以使用备份的其他形式,如创建磁盘图像备份。
禁用休眠:通过禁用Windows操作系统的休眠功能,可将SSD 200的空间释放至DRAM 333的数量。默认情况下,休眠文件的大小(Hiberfil.sys)与在计算机上安装的DRAM333的量相同。当然,禁用休眠功能会阻止用户使用该省电模式,以及妨碍获得快速导入和关机的优点。可是,休眠模式没有给SSD200提供真正好处,由于其快速的10-20秒的SSD加载时间,其中,在某些情况下,等效于休眠。尽管如此,用户可以通过从关机菜单中选择它来选择使用休眠功能。
禁用写缓存:通过禁用写缓存和使用GNSD驱动器100缓存,当有备用电源时GSND驱动器100可完全使用其缓存。
关闭写缓存缓冲器的刷新:关闭写缓存缓冲器的刷新可增加SSD的性能。
禁用预取:固态硬盘具有极低的寻道时间且没有旋转延迟,所以访问时间不依赖于特定的段的位置。预取因此失去其主要目的。此外,减少写入SSD 200是优化其性能的一部分,因此预取应禁用。
设置只向缓存启动超级预取:使用超级预取的改进方法是只设置缓存启动文件。超级预取确实是有目的的,并只是把它完全关闭会只获得一些磁盘空间,特别是如果仅仅是缓存文件被删除后禁用。禁用超级预取会引起机器繁忙以减缓它从磁盘到RAM的交换应用程式。只是因为使用了SSD,并不意味着交换不会发生或不值得注意。
减少回收站大小:设置回收站到一个固定且小的尺寸。Windows操作系统使用SSD的尺寸大小的约10%来进行尺寸设置。可设置其他大小尺寸的回收站。如使用300MB的一个较小的尺寸可以腾出空间并减少向SSD的写入。
减少记录:操作系统(OS)写了很多的事件日志。除了一些必要的(日志应用,安全,系统,安全要点),可安全地停止那些周期性地写在驱动中的日志。
禁用Windows可靠性监视器:这种性能的监控器可提供长期的硬件和软件问题概述。其将事件写入驱动,并且每小时地。如果操作系统是在SSD上,监控活动可以减缓稳定系统。
如果“智能监控器”246监测到从主机到SSD 200没有活动,将会刷新用户选择的DRAM数据缓存量至SSD 200,如果“自动刷新”可以的话。可以根据写入量向DRAM数据缓存制作标记,然后基于写入量安排刷新顺序的优先级。安全244实现在允许访问SEED SSD 200之前或由GSND驱动器100缓存的数据之前的密码验证处理。智能数据监控器246从SEED SSD200向SSD应用程式180发送智能监测信息。
GSND应用程式可具有多种功能,它们中的四个可包括,但不限于:
GNSD应用程式180中的SSD内部清理应用181执行各种高级功能,如垃圾收集,和删除旧的或无用的文件。SSD内部清理应用181可定期进行,如,但不限于,每天或每周。
GNSD应用程式180中的“DRAM分配”183,其从操作系统分配并初始化DRAM容量,为了在GNSD驱动器存在或当缓存模式被关闭时使用GNSD驱动器100和返回DRAM至操作系统。
“缓存模式开/关”185:随着GNSD应用程式180中缓存模式的关闭,GNSD驱动器100可刷新所有DRAM缓存数据至SSD 200并保持其活动。随着缓存模式的开启,GNSD驱动器100可设置成DRAM缓存环境。在“跟随主机对器件的访问(读/写)”中:IRP可直接传递至下一个驱动器。随着缓存模式的开启,GNSD驱动器可以从“寄存表”读取参数并设置成DRAM缓存环境。“跟随主机对器件的访问(读/写)”,IRP可直接传递至GNSD驱动器。需要注意,当接到“全部刷新”命令时,GNSD驱动器会首先将缓存模式切换为关闭,完成刷新后,其可将缓存模式切换为开启。随着缓存模式的关闭,“跟随主机对器件的访问(读/写)”,IRP访问将被GNSD驱动器忽略并直接传递至下一个驱动器。随着缓存模式的开启,“跟随主机对器件的访问(读/写)”,将被传递至GNSD驱动器和DRAM缓存。
“缓存模式开启”:如果缓存模式状态关闭,从注册登记编辑器中读取参数并从操作系统执行存储器需求和分配。
“缓存模式关闭”:如果缓存模式状态开启,基于用户指令刷新DRAM中缓存或清除DRAM,然后将释放分配的存储返回操作系统。
GNSD应用程式180中的“驱动器安装”187,当GNSD驱动器启动时,安装用户选择的SSD 200驱动器。SSD 200驱动器可是,但不限于,USB SSD、SATA SSD、PCI SSD、或M.2SSD。也可以使用其他SSD 200。
超级增强耐力设备(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被存满时。
主机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的一部分。
GNSD驱动器100将写操作从主机300转至主机DRAM 333中和/或SSD DRAM194中的缓存,特别是当提供充足备用电源的情况。来自用户应用182的被操作系统内核178所写的数据被上级文件过滤器驱动器190中断并传至GNSD驱动器100以分别压缩和/或通过压缩引擎242和/或去重引擎243去重,在被送至文件系统驱动器266之前。加密/解密引擎240例如可使用AES和DEA加密技术(见图5)之一。那么低级文件过滤器驱动器268再次中断数据以被GNSD驱动器100进行更多的处理,例如以存储在缓存301中。
文件优先排序264基于低级文件过滤驱动268指定的数据类型,或由逻辑块地址指示的数据类型,如元数据(FAT/FDB)、临时文件、页面文件、或用户数据,来分类数据。FAT指文件分配表,以及FDB是文件描述块。临时文件包括Windows操作系统临时文件、浏览器的临时文件等。可替换的,这个功能可以选择禁用某些应用如服务器。由优先任务转让器260给出操作的优先级以致更高优先级的任务可以在低优先级的任务之前执行。性能调节器256可以周期性地调整这些优先级以提高性能。目标受让器254然后将数据发送到磁数据写入缓存20。
最终准备写入SEED SSD 200的数据可被从GNSD驱动器100发送至卷管理器270,例如其管理存储卷,如SEED SSD 200。SEED SSD 200中的SEED控制器192将数据存储在SSDDRAM缓冲器194中并然后至NAND闪存存储器196中,例如,当电源關機或当SSD DRAM缓冲器194存满时。
交易系统262确保数据可被完全写入SEED SSD 200。恢复管理器216确定那個写数据交易没有完成,例如,由于非正常掉电,以及有助于应用程式完成必要的重复或撤销操作以使数据持久。因此,恢复管理器216旨在确保在更新数据期间不发生错误,特别是在更新数据期间面临的电源干扰。调度程序218管理交易系统262以管理和记录写入SSD交易,如启动,终止,及承诺。
在系统导入处理期间初始化文件系统;特别是I/O系统初始化。文件系统过滤驱动器179为可选的驱动器,其增加或修改文件系统的行为。文件系统过滤驱动器179可作为Windows操作系统执行的一部分运行的内核模式部件。文件系统过滤驱动器179能过滤用于一个或多个文件系统或文件系统卷的I/O操作。根据驱动器的性质,过滤可以是记录、观察、修改、选择、甚或阻止。典型的用于文件系统过滤驱动器179的应用程式包括压缩程序、杀毒应用、加密程序、和分级存储管理系统。
文件系统过滤驱动器179也可与一个或多个文件系统一起工作以管理文件输入/输出操作。这些操作包括创建、打开、关闭、和枚举文件和目录;获取和设置文件、目录和卷信息;以及读取和写人文件数据。此外,文件系统过滤驱动器266、190、268可支持文件系统特定特征例如缓存、锁定、稀疏文件、硬盘配额、压缩、安全、恢复、重新分析点、和卷量点。配置设置186、以及登记和操作系统设置184可由操作系统内核178或GSND应用程式180来设置以定义缓存或其他系统变量的大小,以及管理GSND应用程式180和GNSD驱动器100的首选功能。
安全引擎244可在允许访问SEED SSD 200之前执行密码验证过程或由GNSD驱动器100缓存的数据。GNSD驱动器100采用主机CPU 325来执行诸如压缩/解压缩、去重、和加密/解密的功能。智能数据监控246可将智能监控信息从SEED SSD 200至GNSD应用程式180。智能数据监控246代表自监控、分析和报告技术。
智能驱动器39与智能监控器246一起工作以处理智能命令,或供应商命令、来自主机300,诸如监控器和控制误差校正、损耗、坏块和其它闪存存储器管理。主机300采用智能命令自智能驱动器39向监控器设置一些来自SSD驱动200的重要数据,例如,但不限于,电源开启时间、损耗水平量等。主机300采用这个数据来判断和识别SSD 200的期望寿命。还可采用该信息来决定基于使用的保修范围。采用智能驱动器39,主机300可使得SSD驱动200在经历失效之前被取代,以改善计算机系统5的整体正常运行时间。在RAID装配中,主机可以使用智能命令例如来避免更昂贵的RAID2、5或6配置。
在图1的智能监控器246中,当1)由AP激励而自动刷新时;或2)在Windows操作系统(或在其他操作系统中的类似功能)中,驱动器启动和不能从注册登记表编辑器读出参数时,“开始定时器”激活定时器,然后设置定时器按照规则的间隔从注册登记表编辑器中读取参数直到连续,然后配置存储器。
此外在智能监控器246中,当1)由AP通知而停止自动刷新时;或2)驱动器已经从注册登记表编辑器读出参数并配置存储器之后,调用“停止定时器”以停止计时器。
去重引擎243发现并检测数据文件的重复拷贝以减少写负担。GNSD驱动器100中的引擎,例如压缩/解压缩引擎242,例如可将128数据部分压缩为压缩的48数据部分。这些压缩的48数据部分包括标题和一些存储在第一压缩页里的压缩数据,和两页以上的压缩数据,总共3压缩页。这可将未压缩时的8页有效的减少。选择配置设置186和注册登记和操作系统设置184的设置以提高闪存存储器的耐久性和性能。例如,设置184、186可允许或禁止写缓存、驱动索引、搜索索引、磁盘碎片整理、主机休眠、预取、超级预取、和Windows操作系统写缓存缓冲器刷新。预取、索引、休眠、和磁盘碎片整理可引起闪存存储的额外写入并降低耐久性。因此,闪存耐久性可通过禁用这些特性来提高。此外,由于GNSD驱动器100具有其自己的写缓存和刷新功能,因此可禁用写缓存和写缓存缓冲器刷新。
当主电源发生故障时,备用电源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为笔记本电脑或智能手机。
磁盘微型端口驱动138管理附加的SSD的厂商特定功能。取消分组136取消从SEEDSSD 200恢复的群组数据在被转移至数据读缓存之前。由于GNSD驱动具有其独立的写缓存和刷新功能,可以禁用写缓存和写缓存缓冲器刷新。因此可通过禁用这些特性来提高闪存耐久性。在被发送至卷管理器270和、进一步,至SEED SSD 200之前,用分组引擎134将可被写入SEED SSD 200的数据分组为元页。通过存储元页,可减少写入SEED SSD 200的总量。
CPU的寄存器和缓存控制器301向主机写入CPU寄存器和缓存器且然后向SEED SSD200,例如,当停电时。当预设时,开关311隔离主机上不必要的部件以致它们不接收备用电源,因此延长备用电源用于关键部件上的时间。存储控制器309可用于异常断电和电源恢复时在主机DRAM 333和SEED SSD200之间传输数据。
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的刷新文件。
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,例如在掉电之前。
去重引擎243发现并删除数据文件的副本,以减少写负载。然后底层文件过滤驱动268再截取更多经GNSD驱动100处理的数据。可替换的,主机300将数据类型信息从供应商命令转换至SEED SSD 200以使SEED SSD 200的数据分离管理不会重复已由GNSD驱动100的数据分离管理器108做过的工作。可替换的,在某些情况下这个功能可被选择地禁止。
系统5中存在的模式示例包括,但不限于,掉电模式、节电模式和持续模式。在掉电模式,计算机系统5按順序地关闭过程,向SEED SSD 200刷新缓存。在节电模式,有时指“睡眠模式”,计算机系统5断掉被选元件的电源,但是其他剩余元件繼續运行,可能运行在减少电能之下。选择的缓存被写入SEED SSD驱动200以保持被选择的数据。在持续模式,数据就像计算机系统5处于节电模式一样被保存,但是计算机系统5是掉电的。尽管存在,典型的休眠模式不被使用或禁止使用,由于所有DRAM缓存都需要被存入SEED SSD200,可能引起不必要的写操作。
如图3A、3B和3C所示,于掉电模式和持续模式,数据分類和取消分组經由GNSD驱动100讀取時,主机300发送读命令至数据分离管理器108,其也在去重引擎243、解压引擎242或解密引擎240进行去重、解压或解密之后传递主机读数据。GNSD驱动100内的数据分离管理器108通过数据类型将主机读数据进行分类以及基于数据类型选择该数据。
用户数据最近可能已经被写入并且仍可从数据写缓存20中获取。数据可以存储在SEED SSD 200的SSD驱动卷201中,并且用户数据先通用户数据元页取消过程来取消分组并装入数据读缓存20。存储在SSD200驱动卷中的FAT/FDB数据在其被放入元数据缓存120中之前先通过FAT/FDB元页取消处理116取消分组。供应商命令发送至SSD 200可用于禁止某些重复功能,例如由GNSD驱动100执行的去重、压缩、加密、或数据分离。
许多数据类型位和其他状态集合、指针等的编码是可能的。数据类型状态位不必是入口的第一位。入口应该连接至其他表中的入口,例如具有用于标签或有效位的独立表。临时文件应该具有扩展变量以及新扩展应该被加入到列表中以便于搜索。通过已知程序产生临时文件,例如字处理器和互联网浏览器是已知的文件扩展,但是在任何时候都可以加入额外的扩展。通过更新固件至SEED SSD 200的控制软件来加入这些额外的文件扩展,或者通过软件更新至GNSD应用程式180和GNSD驱动100。SEED SSD 200中的SEED控制器192将数据存储在SSD DRAM缓冲器194中以及随后在掉电或当SSD DRAM缓冲器194存满时存至NAND闪存存储器196。
为了在持续模式期间的额外的写入,或在掉电模式期间,例如当电源关闭或加载失败时,缓冲可被复制至持续模式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记录是不必要的其位于最后一条记录。
当电源故障时,NVM CTRL 109或由CPU 325执行的电源故障程序会读取IPDRAM(在DRAM部分存储的情况下)的每一个记录并决定当DEF域不是0x00或0xFF时是否从DRAM复制数据至SSD。IPDRAM将被设置在DRAM的固定已知地址所以CPU 325或另一CPU 350,其可以是内部的或外部的,并且NVM CTRL 109访问相同的位置而不会混淆。
当电源关闭或故障以及持续模式开启时,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缓存、和恢复范围的刷新信息。
如图3C所示的掉电模式,SSD驱动卷201提供用户或由元页用户文件分组处理分组的元页中非临时文件数据类型。SSD驱动卷201还提供了分页文件的数据类型,其分为经分页文件的分组处理116的元页,和文件描述符块(FDB)数据分成经FDB元页分组处理114的元页。临时文件存储在缓存中的临时文件区124并且一旦缓存电源耗尽其将会丢失。FDB数据可包括目录、子目录、FAT1、FAT2等。
典型的GND驱动100将不使用DRAM高速缓存以避免关键数据在电源故障时的损失。如图4所示,在掉电期间的主机写期间,GND驱动100中的数据分离管理器108按数据类型分类主机写数据,例如通过检查文件扩展或通过分析FAT和FDB。临时文件存储在具有表入口的缓存的临时文件区124,其在元数据缓存120中被修改。当關機或电源故障时,临时文件区124存储在SEED SSD 200的SSD DRAM 194中的持久模式DRAM映象中。可替换的,根据用户的选择可以不将临时文件存储在持久模式DRAM映象中。
當数据拆分和分组經由GNSD驱动100寫入時,主机300发送写命令至数据分离管理器108,如果被允許的狀況其也可以在通过去重引擎或压缩/加密引擎去重、压缩或加密之后接收主机写数据。去重或压缩文件的去重/压缩表入口或元页分组表可在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的临时文件区的临时文件會损失掉。
图5示出了加密。数据加密标准是现有的加密电子数据的主要对称密钥算法。其受学术界现代密码术进步的高度影响。早在1970s IBM的发展以及基于Horst Feistel的早期设计,受代理人保护敏感、未分类电子政府数据的邀请将该算法提交至国家标准局(NBS)。
先进加密标准(AES)是对电子数据加密的规范,由美国国家标准技术研究所(NIST)建立于2001年。对于AES,NIST选择了Rijndael密码家族的三个成员,每个都具有128位块大小,但有三个不同的密钥长度:128、192和256位。
AES已经被美国政府所采纳并且现在被世界广泛使用。其取代了1977年出版的数据加密标准(DES)。AES所描述的算法是对称密钥算法,意思就是对加密和解密都使用相同的密钥。
如果用户选择开启加密,当数据刷新/写入闪存存储器器件时执行加密,例如通过加密引擎240。用户可选择加密为AES或DES加密。在图5中,全部数据加密500可通过刷新数据来执行,例如从缓存,至加密引擎520。在一个示例中,AES加密520可在数据存入SEED SSD驱动530之前在其上执行。而且,全部数据加密550可包括数据向加密引擎240的刷新以在被存入SEED SSD驱动580之前执行DES加密570。解密可是加密的反转过程。例如,如果从闪存存储器器件读数据,解密引擎240可解密之前加密的数据。加密引擎520和570可具有类似于加密/解密引擎240的功能。
图6示出了GNSD驱动器100所采用的压缩/解压缩过程。如果根据用户的选择开启,当用户应用程式写数据时执行。GNSD驱动器在传送数据至“文件系统驱动器”之前压缩数据。(然后至DRAM缓存,然后至闪存存储器)。当用户应用程式读数据时,GNSD驱动器解压缩数据。可采用与数据压缩相同的方式执行去重。
数据压缩是一项比原始数据表示采用更少位的数据编码技术。压缩具有减少向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法是本领域的公知技术并且是压缩/解压缩引擎使用的压缩/解压缩技术。也可以采用其他公知的方法。
图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数据可与错误数据一起使用来重新获得正确的数据。
图7中,“高级ECC”可使用LDPC(低密度奇偶校验)以通过设计LDPC码而产生额外ECC保护位来提供数据更高级别的保护并将其存储在SEED SSD的备份区域。当被保护的数据读取发生错误时,例如,数据无法由SSD器件控制器恢复,读取该存储的对应ECC/LDPC码并使用该码来做出纠正。因此,使用有效的类似LDPC的ECC可提高耐久性。注意,除了类似LDPC的基于图形的码,诸如基于代数的码,不限于BCH、汉明(hamming)码、和纠栅(Reed-Solomon)码。尽管LDPC码相对于其他码而言在保护相同大小数据时倾向于能更快地产生并使用更少的位。
图8示出了GNSD驱动100的框图,其中:
“增加器件”800:GNSD驱动器为对应的物理器件目标物产生并初始化一个新的过滤器器件目标物。
IRP指I/O请求包,如现有技术的通常理解,例如,与微软基于Windows的系统联系但是也可以与其它操作系统环境一起使用。IRP的示例包括:
“IRP_MN_启动_器件”805:启动程序以为GNSD驱动器准备SSD 200。
“分配存储器初始化存储器”810:从操作系统控制下的主机主存储器中请求取得一部份的存储器然后将其初始化以便与GNSD驱动器的后续使用。
“IRP_MN_去除_器件”815:启动程序以从GNSD驱动器去除SSD 200。
“存储器解脫”820:从主机主存取得的被请求和被分配的存储器還給操作系统。
“IRP调度”825:识别IRP是哪种类型。读、写或器件控制。“IRP调度”包括“IRP_MJ_器件_控制”、“IRP_MJ_读”和“IRP_MJ_写”。
“IRP_MJ_读”:I/O管理器或文件系统驱动器的读请求。
“逻辑到DRAM单元”830:1.检查该“逻辑到DTL”表以便看出与该单元相关的任何DRAM缓存单元存在否;2.如果是,检查该“逻辑到DTL”表、“DTL_Unit_SEC_CNT”表和“DTL_位图”表832。
“读取DRAM”834:如果相关“逻辑到DTL”,以及其他三个表表明数据是有效的并且所有数据都是在DRAM中的話。
“读取器件”836:如果没有相关“逻辑到DTL”,或其他三个表表明数据是无效的或数据部分在DRAM中和部分在SSD 200中。
“IRP_MJ_写”827:I/O管理器或文件系统驱动器的写请求。
“逻辑到DRAM单元”838:1.检查该“逻辑到DTL”表以便看出与该单元相关的任何DRAM缓存单元存在否;2.如果是,检查该“逻辑到DTL”表、“DTL_单元_状态”表和“DTL_位图”表840。
“向新DRAM写”842:如果“逻辑到DTL”不相关。将数据写入DRAM未使用的缓存单元。更新所有四个表。
“向旧DRAM写”844:如果“逻辑到DTL”相关。将数据重写入指向的DRAM缓存单元。更新其他三个表。
“检查刷新需求?”846:检查是否被使用但没有发送至SEED的DRAM缓存区域超过了预定的阈值水平。如果没超过,什么都不做。如果超过了,刷新选择的DRAM缓存单元并更新其他三个表。
“IRP_MJ_器件_控制”828:用户应用程式和GNSD驱动器的器件控制操作。
“固定格式”848:如果是“格式”命令,需要更新至SEED器件。写操作:可将数据写如DRAM和所有更新的四个表,然后发送至器件;读操作:从器件读取数据。
“读表”850:发送最大_DRAM_单元、DRAM_使用、AP的四个表数据。
“刷新”852:“DRAM全部刷新”、“IDLE刷新”(如:Idle>30秒、每5秒刷新15项)、和“安全擦除”(点击GNSD AP的“安全擦除”按钮或关闭计算机电源、或点击任务栏的器件安全擦除)。全对此有相关。
“读写计数器”854:来自用户应用程式的读/写计数和向SEED的真实读写计数。
图8示出了IRP读流量900,其也在图9中示出,其中:
“逻辑到DRAM单元”905为从用户应用程式读取数据。“检查数据是否全在DRAM?”910决定读数据是否位于DRAM缓存的。
如果全部数据位于DRAM缓存,进入“While循环的扇区计数”915程序。如果没有完成对扇区数据的读取,“复制存储器”920将从相应的DRAM缓存单元的扇区读出数据。之后,返回至“While循环的扇区计数”915。
如果用户应用程式已经按请求读出全部扇区数据,则响应“IRP完成”940至用户应用程式
如果数据不是全部位于DRAM缓存的,“发送IRP至下一个”925,将设置“GNSD读完成”程序,下一个可能是硬盘驱动或硬盘上部过滤器。在这一点上“检查DRAM数据”930验证DRAM中有效数据。如果这样,执行“复制存储器”935并它可响应“IRP完成”940至请求者用户应用程式。如果不是,它可响应“IRP完成”940至用户应用程式。
IRP写流程1000示出在图8中且也示出在图10中,其中:
“逻辑到DRAM单元”1010为从用户应用程式写数据。“While循环扇区sector计数”1020决定所有的写数据都被写入DRAM缓存单元。
如果都被写入(“检查需要刷新”1070),其可检查是否正在被使用的DRAM缓存而還未发送至SEED的区域是否超出预定阈值水平。如果没超过,什么都不做。如果超过了,刷新选择的DRAM缓存单元并更新其他三个表。做完之后,它可响应“IRP完成”1080至用户应用程式。
如果仍然有数据未被写入DRAM缓存,其可是“检查DRAM数据?”1030(决定是否是数据单元的初始写入)。如果该逻辑地址数据单元没有相关联的DRAM缓存单元,可为給该逻辑地址映象一個新的DRAM缓存单元(更新“逻辑到DTL”和“DTL到逻辑”表)。然后进入“修改位图”1040。
如果它有相关联的DRAM缓存单元1060,可进入“修改位图”1040。
“修改位图”1040:其更新“DTL_位图”和“DTL_单元_状况”表。然后“复制存储器”1050(将扇区数据从逻辑地址拷贝至对应的DRAM缓存单元的扇区)。为了未完成的扇区数据进入“While循环扇区计数”。
图11示出了刷新框图1100,其中:
“Flush PTR=Next Null PTR”1105:让该刷新指针指向下一个空的DRAM单元。
“Check Unit_status=DTL_Host_Data”1110决定DRAM缓存单元的数据状态。如果不是主机数据?,进入“Flush PTR++”130刷新指针使其加1。
如果是主机数据?,“Check Unit_Status=DTL_Data_Full”1115。如果数据不满,“Check Unit_Status=DTL_Overwrite2”1140,如果是overwrite2状态,“Move to newunit”1145移动数据至新单元,进入“FLUSH PTR++”1130刷新指针使其加1。
如果不是overwrite2状态,“修改映象表”1125(逻辑到DTL、DTL到逻辑、DTL_Unit_status、DTL_位图),然后“刷新”1135数据至SEED器件。
如果数据是满的,“检查数据序列”1120,如果为“否”则“刷新”1135数据至SEED器件。
如果是“是”,“修改映象表”1125(逻辑到DTL、DTL到逻辑、DTL_Unit_status、DTL_位图?),然后进入“刷新PTR++”1130刷新指针使其增加1。
图12示出了器件输入输出控制1200,其中:
“固定格式”1205:如果接收的IRP为,例如,0x002d0c141207然后0x00700001207或0x002d0c14然后0x0070000然后0x002d1400,或x002d0c14然后0x0070000然后0x002d1400然后0x002d1080,其表明“格式化开启”1211。当然,此处示出十六进制码只是示例的目的,也可以使用其他码。
如果接收的IRP是0x002d51901213或0x0066001B 1215,其表示“格式化关闭”1217。
“读表”1219发送max_dram_unit、Dram_Using、四个表的数据至AP。
“最大DRAM单元”1221:分配到的DRAM单元计数器。
“DRAM使用”1223:当前使用的DRAM单元计数器。
“逻辑到DTL”表1227:入口计数值为最大DRAM单元,表示每个逻辑单元對應的DRAM单元地址、“DTL”表示DRAM转换层,其是DRAM的一部分,用于减少不必要的写刷新,如同文中其他地方所描述的,例如图19。
“DTL到逻辑”表1229:入口计数值为最大DRAM单元,表示每个DRAM单元對應的逻辑单元地址。
“DTL_位图”表1231:入口计数值为最大DRAM单元,每个入口表示一个DRAM单元,且该项的每1位表示一个LBA(逻辑框地址),1代表LBA的数据在DRAM中,0代表不在DRAM中。
“DTL_状态”表1233:入口计数值为最大DRAM单元,每个入口表示每个DRAM单元的状态。
“刷新”1235:从DRAM 333写数据至物理器件。
“刷新一个”1237做15次连续刷新(刷新大小依赖于计算且不是固定的)。
“刷新全部”1241关闭缓存模式然后刷新DRAM中的所有数据。
“读计数器”1243:驱动器进入IRP_MJ_READ的次数。
“写计数器”1245:驱动器进入IRP_MJ_WRITE的次数。
“读参数”1247将全部文件系统写计数器、全部器件写计数器、最大_dram_单元、DRAM_使用、重写计数器、读计数器、写计数器发送至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,并也可通过驱动器来产生并且然后传送至其它驱动器。
读调度1500示于图15,其中:
用户模式下“用户应用程式初始化读请求”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至下部驱动器直到最后返回至用户模式并完成读调度程序。
写调度1600示于图16,其中:
用户模式下“用户应用程式初始化写请求”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,返回至用户模式并完成写调度程序。
图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位。
在图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管理器将激活回收站或其它擦除机制来擦除该块以致该块可再利用。
图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。
图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的逻辑地址来索引该表。
取数据区域1944存储着取数据和在取数据区域1944中的入口表。计算机每次启动时,Windows操作系统保持追蹤计算机启动方式和那些程式通常被打開的。Windows操作系统保存该信息为预取文件夹中的多个小文件。下次计算机启动时,Windows操作系统指向这些文件以助于快速启动处理。
预取文件夹是Windows操作系统中的系统文件夹的子文件夹。预取文件夹是自保持的,且不需要删除或清空其内容。具有扩展名.log或.evt的登记文件存储在登陆文件区域1946中,其也可具有映象表用于存储在该区域的登陆文件,或是被看作临时文件类型。
在外围存储设备例如硬盘或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中的写/擦。
从主机300的数据写操作首先向缓冲器1952中写入数据,然后经GNSD驱动器100诸如压缩的处理之后,它将被写入数据写缓存1954,然后写入闪存存储器196。在从主机300连续写大量数据的情况下,写入闪存存储器196可能是一个瓶颈。可连续将数据写入数据写缓存1954直到写满,然后从缓冲器1952中的数据向数据写缓存1954的流动将停止。如果缓冲器1952中的数据也满了,然后将提醒主机300停止阻塞。
数据写缓存1954采用耐久性写缓存算法,其存储写数据至ETL DRAM缓冲器20而不是闪存存储器196直到被逐出。因此具有相同LBA的多次写入可以重疊写入到数据写缓存1954中以及根据规则(例如基于消逝的时间、分配的容量等)或關機或电源故障時,用条准备单元写入数据到闪存存储器196。数据写缓存1954还支持部分页写数据直至全部页被分组成多个部分页。因此,多个部分页写可以根据规则(例如基于消逝的时间、分配的容量等)或關機或电源故障而写入闪存存储器196。
多信道控制器结构中,器件控制器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页。
一种增加闪存存储器耐久性的耐久转换层(ETL)方法具有低的指定擦除周期寿命。闪存存储器界面具有多个用于信道的总线;每个信道具有多个闪存芯片;每个芯片具有多个晶片,以及每个晶片具有多个面。可同时访问所有信道。不能同时访问同一信道中的所有晶片;在同一信道中一次只能访问一个晶片。当写或读其它晶片时,可访问信道中的其它晶片。交叉存取的写或读可增加闪存访问的性能。数据写缓存存储在DRAM缓冲器中并有控制器根据规则来管理。当数据写缓存中的脏数据大于条准备单元时,器件控制器管理该脏数据并通过闪存存储器界面将其写入闪存存储器。器件控制器管理闪存存储器的每个信道的数据分布。器件控制器管理每个信道中一个芯片的一个晶片的数据交叉存取,以及管理映象表入口以追踪LBA至PBA映象。
在其它可替换的设计中,在多信道控制器结构中,每个信道具有其自己的数据写缓存1954。写条准备单元与每个闪存存储器信道同时最大化闪存存储器界面速度。用户文件数据可被识别为基于击中率>=n(例如2)的频繁访问数据和击中率<n的不频繁访问数据。将它们分别写入两个数据写缓存1954。频繁访问区的具有相同LBA地址的多写数据将重写DRAM中的旧内容即不刷新以致减少向闪存存储器196的写次数。数据写缓存的频繁访问区的缓冲数据将被存储在条准备单元的闪存存储器196中,依据诸如基于消逝的时间、分配的容量等规则,或關機或电源故障。数据写缓存的非频繁访问区的缓冲数据将被存储在条准备单元的闪存存储器196中,依据诸如基于消逝的时间(例如15分)、分配的容量等其它规则,或依据關機或电源故障。
当LBA地址與主機地址有偏差时,对LBA地址增加补偿以使在写入数据写缓存1954之前将LBA地址与闪存存储器196的页地址对准以使得后续写入闪存存储器更有效率。
耐久备用和交换块1956用于垃圾收集功能以巩固有效数据并在被写入闪存之前从写缓存去除数据。页状态表1963包含具有页状态入口的表,例如空页、使用过的页、垃圾页(TRIMed)、坏页、和需要额外ECC保护的页。压缩LBA表1961为压缩的用户数据存储映象入口。块擦除计数表1964为闪存存储器196中的每个物理块保持擦除计数器的轨迹以及块状态。
部分页映象表1966存储部分页映象信息。DRAM 20不具备足够的全部映象表的空间,因此只有部分被加载至DRAM。当LBA表入口不在DRAM中时,则将去除部分映象表中的一些部分并加载相关LBA表至DRAM。部分子扇区分组映象表1968存储数据文件的子扇区映象信息,其大小小于一页。部分子扇区分组映象表1968的部分映象表具有可设置为N的映象表仅为1的入口。其它N-1的设置被存储在闪存存储器中并在部分映象表发生未擊中时取入DRAM缓冲器。
智能数据收集器1970具有数据表和其它信息供SMART监控器246的SMART功能39(图1)使用并可被主机通过SMART命令或供应商命令请求。
在ETL DRAM缓冲器20中的区域大小可由所有ETL DRAM 20的大小、页大小、块大小、和闪存存储器的扇区大小来决定,并且使用页映象或块,或估計入口比例其中範圍是使用页映象的而不是块映象的。例如,ETL DRAM缓冲器20可是512兆字节DRAM,给临时区域1940分配240兆字节,给互联网临时区域1942分配160兆字节,给取数据分配12兆字节,给登陆文件分配6兆字节等。
在多信道控制器结构中,器件控制器192从闪存存储器196读数据并经过多信道结构到达各种ETL表(FAT/子映象表1958、FBD/子映象表1960、页状态表1962、压缩LBA表1961、块擦除计数表1964、部分页映象表1966和部分子扇区分组映象表1968)。
在多信道控制器结构中,器件控制器192可写各种ETL表(FAT/子映象表1958、FBD/子映象表1960、页状态表1962、压缩LBA表1961、块擦除计数表1964、部分页映象表1966和部分子扇区分组映象表1968),其排列为若干页(若干的数量等于多个信道数)以刷新条准备单元,根据规则(例如基于消逝的时间、分配的容量等)或依赖于關機或电源故障,以達成最好使用闪存界面带宽。
本文所描述的绿能与非固态驱动器应用程式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的标准值减小了。
GNSD驱动器不限于对SSD的耐久性/性能的提高。其还可用于提高其它非挥发存储器件,例如,但不限于安全数字存储卡(SD)、多媒体存储卡(MMC)、内嵌多媒体存储卡(eMMC)、M.2、硬盘驱动器(HDD)以及混合SSD/HDD。
尽管已经通过参照电路图的示例方式说明了本发明,但是本文中应该注意,对本领域技术人员来说,可以出现各种变化和修改。因此,除非这种变化和修改偏离本发明的精神,否则它们都应该包括在本发明的构造之内。
Claims (20)
1.一种耦合至主机DRAM的绿能与非固态驱动器,包括:
存储管理器,耦合至上部过滤器;和
耦合至该主机DRAM的数据分组引擎;
耦合至该主机DRAM的取消数据分组引擎;
耦合至该存储管理器的电源管理器,以及
耦合至该存储管理器的刷新/恢复管理器,
其中,绿能与非固态驱动器耦合至绿能与非固态驱动器应用程式,以及其中,主机DRAM耦合至非挥发存储器。
2.如权利要求1所述的绿能与非固态驱动器,还包括:
压缩/解压缩引擎,耦合至文件系统过滤器;
或者,去重引擎,耦合至文件系统过滤器;
或者,加密/解密引擎,耦合至文件系统过滤器;或者,高级误差纠错码引擎,耦合至下部过滤器。
3.如权利要求2所述的绿能与非固态驱动器,其中加密/解密引擎配置为根据数据加密标准或先进加密标准进行加密。
4.一种耦合至主机DRAM的绿能与非固态驱动器,包括:
数据分组器;
DRAM数据写缓存,耦合至数据分组器;
取消数据分组器;以及
DRAM数据读缓存,耦合至取消数据分组器;
其中,数据分组器和取消数据分组器耦合至上部过滤器和下部过滤器,以及
其中,绿能与非固态驱动器耦合至绿能与非固态驱动器应用程式,以及
其中,DRAM耦合至非挥发存储器。
5.如权利要求4所述的绿能与非固态驱动器,还包括:
压缩/解压缩引擎,耦合至文件系统过滤器;
或者,去重引擎,耦合至文件系统过滤器;
或者,加密/解密引擎,耦合至文件系统过滤器;
或者,高级误差纠错码引擎,耦合至下部过滤器。
6.如权利要求4所述的绿能与非固态驱动器,还包括:
智能数据监控器,耦合至超级增强耐久设备SSD;以及
安全引擎,耦合至主机。
7.如权利要求5所述的绿能与非固态驱动器,其中高级误差纠错码引擎采用基于图形编码或代数编码之一。
8.如权利要求7所述的绿能与非固态驱动器,其中高级误差纠错码引擎采用基于图形编码的低密度奇偶校验码。
9.如权利要求4所述的绿能与非固态驱动器,其中数据分组器和取消数据分组器每个都耦合至:
用于用户数据的元页分组器;
FDB的元页分组器;以及
用于页文件页的元页分组器。
10.一种操作耦合至主机的主机DRAM的绿能与非固态驱动器和绿能与非固态驱动器应用程式的方法,其包括:
向主机和绿能与非固态驱动器应用程式耦合配置和登记设置;
向主机DRAM耦合绿能与非固态驱动器数据分组引擎;
向主机DRAM耦合绿能与非固态驱动器取消数据分组引擎;
向主机耦合绿能与非固态驱动器的存储器管理;
向主机DRAM耦合绿能与非固态驱动器刷新/恢复管理器;和
向上部过滤器和下部过滤器耦合绿能与非固态驱动器数据分组引擎和取消数据分组引擎;以及
向超级增强耐久设备SSD耦合DRAM;以及
之一:
禁止驱动索引、禁止驱动搜索索引、减少页面文件的大小、禁用系统恢复、禁用休眠、禁用预取、减小回收站大小、禁用磁盘碎片整理程序、减少记录;以及禁用性能监视器、禁用写缓存、或禁用写缓存缓冲器刷新,
其中,超级增强耐久设备SSD的耐久性增加至超过规定值并且写放大被减少至小于规定值。
11.如权利要求10所述的方法,还包括:
同步弱表至超级增强耐久设备SSD块的弱表;
在弱表中产生页数据的高级ECC数据,提供产生的高级ECC数据;
存储该产生的高级ECC数据于主机DRAM中的一个缓存区域,或超级增强耐久设备SSD的剩余区域;以及
写入由弱表指示的页数据。
12.如权利要求11所述的方法,还包括:
通过ECC引擎读取页中的数据;
如果超级增强耐久设备SSD本地ECC引擎确定页中数据是错误的:
则由ECC引擎读取的生成的弱表高级ECC属于错误的页数据;以及
用由ECC引擎生成的高级ECC来纠正该错误的页数据。
13.如权利要求10所述的方法,还包括:
分组用户数据为第一元页;
分组系统FDB为第二元页;
分组页文件页为第三元页;以及
存储该第一元页、第二元页和第三元页至超级增强耐久设备SSD的存储卷。
14.如权利要求10所述的方法,还包括:
提供ETL以控制对超级增强耐久设备SSD中的闪存存储器的访问以及对DRAM缓冲器的访问;
通过ETL检查闪存存储器块;
通过ETL识别若所有错误位超过预选高水平阈值则该闪存存储器块为坏块,或者,通过ETL识别若所有错误位超过预选低水平阈值使该闪存存储器块进入弱表;
同步耦合至DRAM的绿能与非固态驱动器的弱表。
15.一种计算机系统主机,包括耦合至主机DRAM的绿能与非固态驱动器应用程式,绿能与非固态驱动器应用程式包括:
耦合至绿能与非固态驱动器的SSD内部清除模块,用于定期进行垃圾收集,和删除旧的或无用的文件;
耦合至绿能与非固态驱动器的DRAM分配模块,用于从操作系统分配并初始化DRAM容量,在绿能与非固态驱动器存在或当缓存模式被关闭时使用绿能与非固态驱动器和返回DRAM至操作系统;
耦合至绿能与非固态驱动器的驱动器安装模块,用于当绿能与非固态驱动器启动时,安装用户选择的SSD驱动器;或
耦合至绿能与非固态驱动器的缓存模式开启/关闭开关。
16.一种计算机系统主机,包括:
绿能与非固态驱动器,在计算机系统主机中耦合至数据分组器和取消数据分组器;以及
如权利要求15所述的绿能与非固态驱动器应用程式;
其中,绿能与非固态驱动器的数据分组和取消数据分组耦合至计算机系统主机的上部过滤器和下部过滤器,以及
耦合至非挥发存储器器件的计算机系统主机。
17.如权利要求16所述的计算机系统主机,还包括耦合至计算机系统主机的操作系统的耦合配置和登记设置。
18.一种增加非挥发闪存存储器耐久性的方法,包括:
耦合具有ECC引擎的绿能与非固态驱动器至主机DRAM;
耦合超级增强耐久设备SSD至主机DRAM;
使用主机DRAM为超级增强耐久设备SSD中的所选数据生成高级ECC;和
用该高级ECC纠正超级增强耐久设备SSD的错误数据。
19.如权利要求18所述的方法,还包括:
同步弱表至超级增强耐久设备SSD块弱表;
在弱表中产生页数据的高级ECC数据,提供产生的高级ECC数据;
存储该产生的高级ECC数据于DRAM中的一个缓存区域或超级增强耐久设备SSD的剩余区域;以及
写入由弱表指示的页数据。
20.如权利要求18所述的方法,还包括:
读取页中数据;
如果超级增强耐久设备SSD本地ECC引擎确定页中数据是错误的;
则读取属于页的弱表中产生的高级ECC数据;以及
在页中产生的高级ECC数据来纠正该错误的数据。
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 (zh) | 2017-04-28 |
| HK1220271B true HK1220271B (zh) | 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 (ko) | 비휘발성 스토리지에 대한 셀프-저널링 및 계층적 일치성 | |
| JP6450598B2 (ja) | 情報処理装置、情報処理方法およびプログラム | |
| US20150331624A1 (en) | Host-controlled flash translation layer snapshot | |
| US20140195725A1 (en) | Method and system for data storage | |
| CN105009094A (zh) | 在固态驱动器中利用空闲空间计数来重建两阶加电映射的方法、设备和系统 | |
| CN105659204A (zh) | 用于进行带有注释的原子写入操作的方法和装置 | |
| TWI498738B (zh) | 檔案保護方法與系統及其記憶體控制器與記憶體儲存裝置 | |
| JP6094677B2 (ja) | 情報処理装置、メモリダンプ方法、およびメモリダンププログラム | |
| CN105404468B (zh) | 绿能与非固态硬盘应用及其驱动器 | |
| US20140325168A1 (en) | Management of stored data based on corresponding attribute data | |
| US20140281581A1 (en) | Storage Device | |
| HK1220271B (zh) | 绿能与非固态硬盘应用及其驱动器 |