CN109992530A - 一种固态驱动器设备及基于该固态驱动器的数据读写方法 - Google Patents
一种固态驱动器设备及基于该固态驱动器的数据读写方法 Download PDFInfo
- Publication number
- CN109992530A CN109992530A CN201910156909.9A CN201910156909A CN109992530A CN 109992530 A CN109992530 A CN 109992530A CN 201910156909 A CN201910156909 A CN 201910156909A CN 109992530 A CN109992530 A CN 109992530A
- Authority
- CN
- China
- Prior art keywords
- data
- dram
- entry
- host
- dtl
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 239000007787 solid Substances 0.000 title claims abstract description 32
- 238000000034 method Methods 0.000 title abstract description 58
- 230000015654 memory Effects 0.000 claims abstract description 248
- 238000013507 mapping Methods 0.000 claims abstract description 128
- 238000013519 translation Methods 0.000 claims abstract description 13
- 238000003860 storage Methods 0.000 claims description 48
- 230000006870 function Effects 0.000 claims description 41
- 238000007906 compression Methods 0.000 claims description 25
- 239000000872 buffer Substances 0.000 claims description 23
- 230000006835 compression Effects 0.000 claims description 20
- 238000011084 recovery Methods 0.000 claims description 15
- 230000002829 reductive effect Effects 0.000 claims description 10
- 238000009826 distribution Methods 0.000 claims description 8
- 239000000284 extract Substances 0.000 claims description 7
- 230000005611 electricity Effects 0.000 claims description 2
- 230000005055 memory storage Effects 0.000 claims description 2
- 210000003205 muscle Anatomy 0.000 claims 1
- 230000008569 process Effects 0.000 description 33
- 238000010586 diagram Methods 0.000 description 27
- 238000005516 engineering process Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 15
- 230000007423 decrease Effects 0.000 description 12
- 238000007667 floating Methods 0.000 description 9
- 238000007726 management method Methods 0.000 description 9
- 241001269238 Data Species 0.000 description 8
- 230000008859 change Effects 0.000 description 6
- 230000014759 maintenance of location Effects 0.000 description 5
- 230000036961 partial effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 230000001351 cycling effect Effects 0.000 description 4
- 230000003247 decreasing effect Effects 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000003252 repetitive effect Effects 0.000 description 4
- 239000003990 capacitor Substances 0.000 description 3
- 238000005538 encapsulation Methods 0.000 description 3
- 238000010304 firing Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 239000013307 optical fiber Substances 0.000 description 3
- 101000824318 Homo sapiens Protocadherin Fat 1 Proteins 0.000 description 2
- 102100022095 Protocadherin Fat 1 Human genes 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- CXOXHMZGEKVPMT-UHFFFAOYSA-N clobazam Chemical compound O=C1CC(=O)N(C)C2=CC=C(Cl)C=C2N1C1=CC=CC=C1 CXOXHMZGEKVPMT-UHFFFAOYSA-N 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000013506 data mapping Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 239000010813 municipal solid waste Substances 0.000 description 2
- 229940044442 onfi Drugs 0.000 description 2
- 230000008707 rearrangement Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- RVCKCEDKBVEEHL-UHFFFAOYSA-N 2,3,4,5,6-pentachlorobenzyl alcohol Chemical compound OCC1=C(Cl)C(Cl)=C(Cl)C(Cl)=C1Cl RVCKCEDKBVEEHL-UHFFFAOYSA-N 0.000 description 1
- DMIUGJLERMOBNT-UHFFFAOYSA-N 4-amino-n-(3-methoxypyrazin-2-yl)benzenesulfonamide;5-[(3,4,5-trimethoxyphenyl)methyl]pyrimidine-2,4-diamine Chemical compound COC1=NC=CN=C1NS(=O)(=O)C1=CC=C(N)C=C1.COC1=C(OC)C(OC)=CC(CC=2C(=NC(N)=NC=2)N)=C1 DMIUGJLERMOBNT-UHFFFAOYSA-N 0.000 description 1
- 101000824299 Homo sapiens Protocadherin Fat 2 Proteins 0.000 description 1
- 235000006508 Nelumbo nucifera Nutrition 0.000 description 1
- 240000002853 Nelumbo nucifera Species 0.000 description 1
- 235000006510 Nelumbo pentapetala Nutrition 0.000 description 1
- 102100022093 Protocadherin Fat 2 Human genes 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 239000013078 crystal Substances 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000005194 fractionation Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 239000004033 plastic Substances 0.000 description 1
- 229920003023 plastic Polymers 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- APTZNLHMIGJTEW-UHFFFAOYSA-N pyraflufen-ethyl Chemical compound C1=C(Cl)C(OCC(=O)OCC)=CC(C=2C(=C(OC(F)F)N(C)N=2)Cl)=C1F APTZNLHMIGJTEW-UHFFFAOYSA-N 0.000 description 1
- 230000005610 quantum mechanics Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明实施例公开了一种GNSD固态驱动器设备及基于该固态驱动器的数据读写方法,该固态硬盘驱动器设备包括:闪存存储器,用于存储第一数据;SSD DRAM,用于存储映射表和第二数据;DRAM翻译层(DTL),用于控制对SSD DRAM的访问;控制器,用于当主机读取数据时,根据映射表确定所读取的数据存储于SSD DRAM和/或闪存存储器中;控制器,还用于当主机写入数据时,根据映射表中的可用DRAM条目的数量,将所写入的数据存储于SSD DRAM或闪存存储器。采用本发明,可以有效控制闪存存储器的写入和擦除次数,从而提高闪存存储器的耐久性。
Description
技术领域
本发明涉及闪存存储器技术领域,尤其涉及一种固态驱动器设备及基于该固态驱动器的数据读写方法。
背景技术
闪存存储器广泛用于计算机系统的外部储存,并且用于便携设备的主要储存。闪存存储器(flash memory),在1987年由东芝Fujio Masuoka博士发明,采用在浮栅上存储电荷的电可擦除可编程只读存储器(Electrically-Erasable Programable Read-OnlyMemory,EEPROM)单元。该单元一般用雪崩电流编程,然后利用穿过氧化物薄层的量子力学隧道擦除。可惜的是,在编程或擦除过程中某些电子可能在氧化物薄层中被捕捉。假定编程电压恒定,这些被捕捉的电子在随后的编程周期中会减少该单元中贮存的电荷。因此,往往需要提高编程电压来补偿被捕捉的电子。
随着闪存存储器的密度和尺寸的增大,该单元的尺寸已经收缩。氧化物的厚度包括隧道氧化物的也已经减小。而较薄的氧化物更容易受到捕获的电子的影响,并且有时更容易失效。绿能与非固态驱动器(Green NAND Solid State Drive,GNSD)闪存存储器的浮栅可以捕获电子,浮栅中的电子数量会影响输出的电压电平。不同的电压电平可以通过控制在写入过程捕获到耗尽层中的电子来达到。越小的浮栅区域限制可捕获电子的最大数量(目前仅仅几百电荷的电子)。由于程序/读取干扰电荷可能泄漏或陷入浮栅。电子数量的变动会影响输出电压的变动并改变读取结果。
闪存存储器保证能够承受的编程擦除周期数约为100,000周期,在正常的读写条件下这被认为是一个很长的寿命了。但较小的闪存单元已经经历高得令人不安的损耗,且较新式的二级单元闪存存储器在规格书上被定义为低于10,000编程-擦除(Program/erase,P/E)周期的耐久性,而对于三级单元(Triple-Level Cell,TLC)为约600P/E周期的耐久性。如果目前趋势持续,未来闪存存储器可能只允许300编程-擦除周期。如此低的耐久性可能会严重地限制闪存存储器可能的用途,以及用于固态硬盘(Solid state drives,SSD)的应用。
另外,提高闪存存储器密度的一种方法是每个储存单元储存多于一位的数据。一个单元的不同电压等级被分配给多位中的不同位,例如给予一个两位的单元四个电压等级。然而,多层单元(Multi-level cell,MLC)和TLC闪存技术的噪声容限降低,使得闪存存储器的耐久性问题恶化。
在P/E次数有限的前提下,如何减少闪存存储器的写入次数和擦除次数是需要解决的问题。
发明内容
基于此,为解决上述提到的闪存存储器的耐久性恶化技术问题,特提供了一种固态驱动器设备及基于该固态驱动器的数据读写方法。
本发明实时例第一方面提供了一种绿能NAND固态驱动器(GNSD)设备,其特征在于,包括:
闪存存储器,用于存储第一数据;
闪存转换层,用于访问所述闪存存储器;
固态驱动器(SSD)动态随机存取存储器(DRAM),用于存储映射表和第二数据,其中,所述固态驱动器动态随机存储器包括用于控制对所述SSD DRAM的访问的DRAM翻译层(DTL);
GNSD控制器,包括:
存储器管理器,用于管理所述映射表,当主机读取和写入主机数据时访问映射表,所述映射表用于指示所述主机数据在所述SSD DRAM以及所述闪存存储器中的存储情况;
所述GNSD控制器,用于响应主机读取/写入主机数据,执行读取/写入控制例程,所述读取/写入控制例程用于确定所述映射表中的可用DRAM条目的数量;
其中,所述第一数据指存储在所述闪存存储器中的数据,所述第二数据指存储在所述SSD DRAM中的数据。
可选的,所述设备还包括:
映射表,用于管理对所述SSD DRAM的访问;
所述映射表包括:
逻辑到DTL表,包括根据主机接收的逻辑地址确定的多个条目,每个条目包含DTL指针;
DTL到逻辑表,包括多个由所述DTL指针选择的DRAM条目;
其中,所述多个DRAM条目中的每一个DRAM条目都包含存储在所述SSD DRAM中的多个扇区。
可选的,所述设备还包括:
所述读取/写入控制例程,还用于将所述映射表中的可用DRAM条目的数量与第一阈值和第二阈值进行比较;
其中,当所述可用DRAM条目的数量同时低于所述第一阈值和所述第二阈值时,所述GNSD控制器用于增加所述可用DRAM条目的数量,直到所述映射表中可存储所述新主机写入数据的可用DRAM条目的数量大于所述第二阈值为止;
所述增加所述可用DRAM条目的数量包括:
在所述映射表中搜索可更改为存储新主机写入数据的可用DRAM条目的目标DRAM条目,通过更改所述目标DRAM条目及对应的扇区数据创建新的可用DRAM条目,同时为创建的每个新的可用DRAM条目增加所述映射表中可存储新主机写入数据的可用DRAM条目的数量;
其中,所述第二阈值大于所述第一阈值。
可选的,所述设备还包括:
自动缓存写入计时器,用于控制自动缓存写入例程;
所述控制器,还用于对所述自动缓存写入计时器进行响应,执行所述自动缓存写入例程,将所述SSD DRAM中的主机数据缓存写入到所述闪存存储器中,以增加可用于存储新主机写入数据的可用DRAM条目的数量。
其中,所述DTL至到逻辑表中的每个DRAM条目包括:
DTL到逻辑字段,用于存储从主机接收到的逻辑地址,通过所述逻辑地址选择所述逻辑到DTL表中的匹配条目,所述匹配条目用于存储所述DTL指针,所述DTL指针用于指示所述DTL到逻辑表中所述DRAM条目;
状态字段,用于指示所述DRAM条目存储的所述第二数据的存储状态;
扇区有效位图,包含多个扇区有效位,每个扇区有效位用于指示所述DRAM条目存储的每个扇区的有效性;
扇区计数字段,用于指示所述DRAM条目中存储的有效扇区的数量;
其中,所述扇区计数字段与所述扇区有效位图中处于有效状态的扇区有效位的总数相等。
其中,所述状态字段包括:
主机数据位,用于指示所述主机数据已经被写入所述SSD DRAM中的所述DRAM条目;
重写_1位,用于指示所述DRAM条目发生第二次主机写入操作;
重写_2位,用于指示所述DRAM条目发生第三次或以上主机写入操作。
其中,所述存储器管理器在需要增加可用DRAM条目以用于存储新的主机数据时,将所述重写_2位被设置的DRAM条目中存储的主机数据保存在所述SSD DRAM中,将所述重写_2位未被设置的DRAM条目中存储的主机数据写入所述闪存存储器。
其中,所述状态字段还包括:
数据有效位,用于指示所述DRAM条目可以用于存储主机数据;
空队列位,用于指示所述DRAM条目中待写入主机数据;
缓存已写入位,用于指示所述DRAM条目的主机数据已经被写入所述闪存存储器;
数据已满位,用于指示所述DRAM条目中的所有扇区已经被写入主机数据。
可选的,所述设备还包括:
数据写入缓存,用于缓存主机写入数据;
数据读取缓存,用于缓存主机读取数据;
数据分组引擎,用于将存储在所述数据写入缓存中的数据分组为元页面;
分组还原引擎,用于将存储为所述元页面的数据分组还原成未分组数据以存储在所述数据读取缓存中;
其中,所述元页面会被所述数据分组引擎传送到所述闪存存储器,并且由所述分组还原引擎接收存储在所述闪存存储器中的元页面。
本发明实施例第二方面提供了一种绿能NAND固态驱动器(GNSD)控制器,其特征在于,所述控制器包括:
存储器管理器,用于访问具有由所述存储器管理器管理的多个缓冲器的固态驱动器(SSD)DRAM;
所述SSD DRAM包括:
数据写入缓存,用于存储主机写入数据;
数据读取缓存,用于存储主机读取数据;
映射表,用于管理对所述SSD DRAM的访问,所述映射表包括:
逻辑到DTL表,用于存储根据主机接收的逻辑地址确定的多个条目,每个条目包含DTL指针;
DTL到逻辑表,用于存储多个由所述DTL指针选择的DRAM条目;
其中,所述多个DRAM条目中的每一个DRAM条目都包含存储在所述SSD DRAM中的多个扇区。
其中,所述DTL到逻辑表中的每个DRAM条目包括:
DTL到逻辑字段,用于存储从主机接收到的逻辑地址,通过所述逻辑地址选择所述逻辑到DTL表中的匹配条目,所述匹配条目存储用于指示所述DTL到逻辑表中所述DRAM条目的DTL指针;
状态字段,用于指示所述DRAM条目存储的主机数据的状态;
扇区有效位图,包含多个扇区有效位,其中,每个扇区有效位用于指示所述DRAM条目存储的每个扇区的有效性;
扇区计数字段,用于指示所述DRAM条目存储的有效扇区的数量;
其中,所述扇区计数字段与所述扇区有效位图中处于有效状态的扇区有效位的总数相等。
其中,所述状态字段包括:
数据有效位,用于指示所述DRAM条目可以用于存储主机数据;
空队列位,用于指示所述DRAM条目对应的多个扇区中未存储数据;
缓存已写入位,用于指示所述DRAM条目的主机数据已经被复制到闪存存储器;
主机数据位,用于指示所述主机数据已经被写入所述SSD DRAM中的所述DRAM条目;
数据已满位,用于指示所述DRAM条目中的所有扇区已经被写入了主机数据。
可选的,所述状态字段还包括:
重写_1位,用于指示所述DRAM条目发生第二次主机写入操作;
重写_2位,用于指示所述DRAM条目发生第三次或以上主机写入操作。
其中,所述存储器管理器在需要增加可用DRAM条目以用于存储新的主机数据时,将所述重写_2位被设置的DRAM条目中存储的主机数据保存在所述SSD DRAM中,将所述重写_2位未被设置的DRAM条目中存储的主机数据写入所述闪存存储器。
可选的,所述控制器还包括:
电源/CPU监视器,用于检测所述控制器所在驱动器的电源不足;
缓存写入/恢复管理器,用于在断电时将存储在所述SSD DRAM中的主机数据缓存写入到所述闪存存储器中;
恢复管理器,用于恢复电源时从所述闪存存储器中将缓存写入的主机数据提取到所述SSD DRAM。
可选的,所述SSD DRAM还包括:
DRAM翻译层(DTL),所述DTL包括:
管理临时文件的映射表、管理日志文件的映射表,管理分页文件的映射表和管理提取数据的映射表、数据写入高速缓存表、读取高速缓存区域、FAT/子映射表、FDB/子映射表及块擦除计数表。
可选的,所述控制器还包括:
事务处理系统,用于记录指示主机数据写入所述闪存存储器的开始和完成的事件;
恢复管理器,用于读取所述事务处理系统记录的事件,以在恢复供电后撤消或重新将主机数据写入所述闪存存储器。
本发明实施例第三方面提供了一种集成的绿能NAND固态驱动器(GNSD)控制器,其特征在于,所述控制器包括:
存储器管理器,用于控制对固态驱动器(SSD)动态随机存取存储器(DRAM)的访问的DRAM翻译层(DTL);
映射表,用于管理对所述SSD DRAM的访问,所述映射表包括:
逻辑到DTL表,用于存储根据主机接收的逻辑地址确定的多个条目,每个条目包含一个DTL指针;
DTL到逻辑表,用于存储多个由所述DTL指针选择的DRAM条目;
其中,所述多个DRAM条目中的每一个DRAM条目都包含存储在所述SSD DRAM中的多个扇区;
其中所述DTL到逻辑表中的每个DRAM条目包括:
DTL到逻辑字段,用于存储从主机接收到的逻辑地址,通过所述逻辑地址的选择上述逻辑到DTL表中的匹配条目,所述匹配条目用于存储指示所述DTL到逻辑表中所述DRAM条目的DTL指针;
状态字段,用于指示所述DRAM条目存储的主机数据的存储状态;
扇区有效位图,包含多个扇区有效位,每个扇区有效位用于指示所述DRAM条目存储的每个扇区的有效性;
扇区计数字段,用于指示所述DRAM条目中存储的有效扇区的数量;
其中,所述扇区计数字段与所述扇区有效位图中处于有效状态的扇区有效位的总数相等;
其中,所述状态字段包括:
数据有效位,用于指示所述DRAM条目可以用于存储主机数据;
空队列位,用于指示所述DRAM条目随时准备被写入主机数据;
缓存已写入位,用于指示所述DRAM条目的主机数据已经被复制到闪存存储器;
主机数据位,用于指示所述主机数据已经被写入所述SSD DRAM中的所述DRAM条目;
数据已满位,用于指示所述DRAM条目中的所有扇区已经被写入了主机数据;
重写_1位,用于指示所述DRAM条目发生第二次主机写入操作;
重写_2位,用于指示所述DRAM条目发生第三次或以上主机写入操作;
其中,所述存储器管理器在需要增加可用DRAM条目以用于存储新的主机数据时,将所述重写_2位被设置的DRAM条目中存储的主机数据保存在所述SSD DRAM中,将所述重写_2位未被设置的DRAM条目中存储的主机数据写入所述闪存存储器。
可选的,所述控制器还包括:
数据写入缓存,用于存储主机写入数据;
数据读取缓存,用于存储主机读取数据;
数据分组引擎,用于将存储在所述数据写入缓存中的数据分组为元页面;
分组还原引擎,用于将存储为所述元页面的数据分组还原成未分组数据以存储在所述数据读取缓存中;
其中,所述元页面会被所述数据分组引擎发送到驱动器卷以传送到所述闪存存储器,并且由所述分组还原引擎接收存储在所述闪存存储器中的元页面;
文件优先级标签分类器,用于为接收到的主机写入数据生成对应的数据类型;
文件优先排序,用于对主机写入的数据进行优先级排序;
任务优先分配器,用于为包括通过所述数据类型写入主机写入数据的任务分配优先级,其中所述优先级通过所述文件优先级标签分类器的数据类型计算函数得到;
性能调节器,用于调整任务的优先级;
目标分配器,用于根据数据类型将数据发送到数据写入缓存。
可选的,所述控制器还包括:
事务处理系统,用于记录指示主机数据写入所述闪存存储器的开始和完成的事件;
缓存写入/恢复管理器,用于在断电时将存储在所述SSD DRAM中的主机数据缓存写入到所述闪存存储器;
恢复管理器,用于重新加载程序,在恢复电源时从所述闪存存储器中将缓存写入的主机数据提取到所述SSD DRAM。
可选的,所述控制器还包括:
加密器和解密器,两者组合起来用于实现接收主机写入数据,产生加密的主机数据以及解密已加密的主机数据的功能;
压缩/解压缩引擎,用于实现接收主机写入数据,生成压缩数据以及解压缩已压缩的主机数据的功能。
实施本发明实施例,将具有如下有益效果:
采用了上述GNSD设备、GNSD控制器及集成的GNSD控制器,通过对频繁访问数据和不频繁访问数据采取不同的操作,并根据映射表条目中各个组成单元的值,包括逻辑到DTL字段、DTL到逻辑字段、状态字段、扇区计数字段及扇区有效位图,实现对SSD DRAM中存储的有效数据的管理,并通过控制数据在闪存或SSD DRAM中的存储情况,从而减少对闪存中存储数据的读写次数,减少闪存的程序擦除周期,进而提高闪存的耐用性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
其中:
图1是本发明实施例提供的一种固态驱动器的结构示意图;
图2是本发明实施例提供的一种主机写入的数据分割和分组的数据流向结构示意图;
图3是本发明实施例提供的一种主机读取的数据分组和分组还原的流程结构示意图;
图4是本发明实施例提供的一种DTL DRAM中存储的数据映射表类型;
图5是本发明实施例提供的一种映射表中状态字段示意图;
图6a~6c是本发明实施例提供的一种驱动器进行数据读取和写入后的映射表示意图;
图7是本发明实施例提供的一种缓存写入操作对映射表的更新示意图;
图8是本发明实施例提供的一种通过映射表进行数据读取的流程示意图;
图9.1~9.6是本发明实施例提供的一种通过映射表进行主机数据写入操作的流程示意图;
图10.1~10.4是本发明实施例提供的一种自动缓存写入操作的流程示意图;
图11是本发明实施例提供的一种查找可用DRAM条目的流程示意图。
具体实施方式
以下说明是为了使一种普通的技术能够在特定的应用程序和它的要求的背景下制作和使用这项技术。对于本领域技术人员而言,对优选实施例子的各种修改将是显而易见的,并且本文中定义的一般原理可以应用于其他实施例子。因此,本技术并非旨在限于所示出和描述的特定实施例子,而是应适用于与本文公开的原理和新特征一致的最广泛的用途中。
请参见图1,为本发明实施例提供了一种固态驱动器的结构示意图。如图1所示,该GNSD驱动器1包括:GNSD控制器10、闪存转换层20、闪存存储器30(简称闪存)、固态硬盘动态随机存取存储器(Solid State Drive Dynamic Random Access Memory,SSD DRAM)40,由操作系统内核写入的主机数据被传递到GNSD驱动器1中,由该GNSD驱动器1中的GNSD控制器10进行处理;GNSD控制器10包括:存储器管理器110,具体的:
闪存转换层20,用于控制对闪存30的访问;
闪存30,用于存储数据;
SSD DRAM40,用于存储映射表和数据;
存储器管理器110,用于通过使用映射表控制对SSD DRAM 40的访问,即可以认为用于管理映射表。
可选的,上述GNSD驱动器1还可以包括备用电源50,用于向上述GNSD驱动器1提供电力以将热数据从SSD DRAM 40中备份到闪存30中,其中,该备用电源50可以不被包括。
可选的,该GNSD控制器10还包括:GNSD应用程式101、去重引擎102、压缩/解压缩引擎103、安全性104、智能数据监视器105、电源/中央处理器(Central Processing Unit,CPU)监视器106、文件优先排序107、任务优先分配器108、性能调节器109、缓存写入/恢复管理器111、恢复管理器112、调度器113、事务处理系统114、数据写入缓存115、目标分配器116、加密器117、解密器118、高级ECC/LDPC控制器119、数据分组引擎120、分组还原引擎121、数据读取缓存122。其中,以上GNSD控制器10所包括的各个功能模块所实现的功能可以认为是该GNSD控制器10进行实现的,各个功能模块为GNSD控制器10中所实现的功能的具体描述单元。其中,由操作系统内核写入的主机数据被传递到驱动器1中,然后传递到GNSD控制器10中,具体的:
GNSD应用程式101,该GNSD应用程式101中固件由GNSD控制器10实现,并且可以针对闪存30和SSD DRAM 40的大小预设置,其中,上述固件是该驱动器1的驱动程序;
去重引擎102,用于将接收到的主机数据进行重复数据删除;
压缩/解压缩引擎103,用于实现接收主机写入数据,生成压缩数据以及解压缩已压缩的主机数据的功能;
安全性104,用于在允许访问闪存30或高速缓存在SSD DRAM 40中的数据之前,执行密码验证过程;
智能数据监视器105,用于发送自我检测、分析及报告技术(Self-MonitoringAnalysis and Reporting Technology,S.M.A.R.T.)检测从闪存30到上述GNSD应用程式101的信息;
电源/CPU监视器106,用于检测该驱动器1是否掉电或故障及CPU法人占用情况;
文件优先排序107,用于基于由逻辑区块地址(Logical Block Address,LBA)指示的数据类型对数据进行排序,其中,上述数据类型可以包括:元数据(文件配置表(FileAllocation Table,FAT),数据库文件(Forwarding Database,FDB)),临时文件,分页文件或用户数据,其中,上述临时文件包括Windows临时文件、互联网浏览器临时文件等,可选的,对于一些用途(如服务器)可以选择禁用该文件优先排序107的功能;
任务优先分配器108,用于对该驱动器1所执行的任务给予优先权,包括通过数据类型写入主机写入数据的任务,其中优先级通过文件优先级标签分类器的数据类型计算函数得到,以使更高优先级的任务可以先于低优先级的任务执行,其中,文件优先级标签分类器用于为接收到的主机写入数据生成对应的数据类型;
性能调节器109,用于周期性地调节上述任务优先分配器108分配的优先级,以使任务的优先级根据驱动器1需要进行更改,从而改善性能;
缓存写入/恢复管理器111,用于当电源/CPU监视器106检测到掉电或故障时被激活,将存储在SSDDRAM 40中的主机数据缓存写入到闪存30中,还用于当缓存写入完成时,向闪存30和备用电源50发出缓存写入完成指令,还用于当电源丢失之前,周期性地将数据写入缓存115的内容缓存写入到闪存30中;
恢复管理器112,用于确定由于异常断电而未完成的写入事物,并且帮助GNSD应用程式101做必要的重做或撤销以使数据持久化,及在恢复电源时从闪存30中将由于异常断电而缓存写入的主机数据提取到SSD DRAM 40中;
调度器113,用于管理事务处理系统114以管理和记录对SSD事物的写入,例如开始,中止和提交;
事物处理系统114,用于记录指示主机数据写入所述闪存存储器的开始和完成的事件;
数据写入缓存115,用于缓存主机写入数据;
目标分配器116,用于根据数据的数据类型将该数据发送到数据写入缓存115中;
加密器117,用于实现接收主机写入数据,对主机写入数据进行加密,产生加密的主机数据;
解密器118,用于解密已加密的主机数据;
高级纠错码/低密度奇偶校验码(Error Correcting Code/Low Density ParityCheck Code,ECC/LDPC)控制器119,用于产生并对主机写入数据附加纠错码(ECC)以写入数据,或者检查并移除ECC以读取数据;
数据分组引擎120,用于在将写入数据发送到闪存30之前,对该写入数据进行分组;
分组还原引擎121,用于对从闪存30中取回的读取数据进行分组还原,并将该读取数据传送到数据读取缓存122;
数据读取缓存122,用于缓存主机读取数据。
可选的,参加图2,图2是本发明实施例提供的一种主机写入的数据分割和分组的数据流向结构示意图。该GNSD控制器10还包括:数据拆分管理器123,元页面用户文件分组124,FDB的元页分组125,页面的元页面分组126,缓存的临时文件区域127,输出缓冲器128。闪存30还包括:驱动器卷301。具体的,数据分割管理器123,用于接收由GNSD驱动器1中GNSD控制器10发送的主机写入命令/数据,可选的,该数据分割管理器123可以在上述主机写入命令/数据通过压缩/解压缩引擎103压缩或加密器117加密后接收主机写入命令/数据(若压缩/加密功能启用),可选的,可以在数据写入缓存115中修改用于加密或压缩文件的压缩表条目;
数据分割管理器123,还用于通过数据类型对主机写入数据进行分类,例如通过检查文件扩展名或通过解析FAT和FDB等对主机写入数据进行分类,并将上述主机写入数据发送到该主机写入数据对应的数据类型的存储模块中;
缓存的临时文件区域127,用于存储临时文件,还可以选择溢出并分组到SSD中,其中,临时文件不会存储到闪存30中,并在电源关闭或失败时丢失,可选的,对于某些操作(如服务器),可以选择禁用此区域的功能;
页面的元页面分组126,用于将分页文件与包含相同分页文件数据类型的其他页面分组到元页面中,其中,分页文件被存储在高速缓存的分页区域中,其中,分页文件是虚拟内存文件或称为交换文件;
FDB的元页分组125,用于将FDB分组为元页面,其中,元数据文件(例如FAT和FDB条目)由数据拆分管理器123路由;
元页面用户文件分组124,用于将用户文件与包含相同用户或非临时文件数据类型的其他页面一起分组到元页面,其中,元数据又称中介数据、中继数据,为描述数据的数据,主要描述数据属性的信息;
输出缓冲器128,用于生成ECC代码并附加到主机写入数据,并且调用高级ECC/LDPC控制器119生成ECC;
输出缓冲器128,还用于接收页面的元页面分组126分组后的分组页面,将该分组页面发送到闪存30中的驱动器卷301,并且可以将该分组页面存储在SSD DRAM 40中,然后存储到闪存30中;
其中,输出缓冲器128,还用于接收FDB的元页分组125分组得到的元页,将该元页发送到闪存30,可选的可以将该元页存储在SSD DRAM 40中;
其中,输出缓冲器128,还用于接收上述元页面用户文件分组124分组后的元页面,将该元页面发送到闪存30,可选的,可以将该元页面存储到SSD DRAM40中,然后存储到闪存30中。
可选的,参见图3,图3是本发明实施例提供的一种主机读取的数据分组和分组还原的流程结构示意图。其中,在断电模式下,闪存30中的驱动器卷301在由元页面用户文件分组124分组后得到的元页面中提供用户或非临时文件数据类型;还用于提供通过FDB的元页分组125分组为元页面的文件描述块FDB数据;还用于提供分组文件数据类型通过页面的元页面分组126分组成元页面。在缓存的临时文件区域127中的临时文件会丢失,其中,断电模式可以包括电源异常、电源耗尽或电源掉电等。其中,FDB数据可以包括目录,子目录,FAT1,FAT2等。
可选的,参见图4,图4是本发明实施例提供的一种DTL DRAM中存储的数据映射表类型。具体的,图4显示了作为存储映射表的DRAM翻译层(DRAM TranslationLayer,DTL),其示出了存储在DTL DRAM 40中的各种类型的数据,其中,上述DTL DRAM 40即为图1中所示的SSD DRAM 40。GNSD控制器10的固件使用DTL来在正常操作、断电期间、加电时管理SSD DRAM40与闪存30的交互。具体的,该DTL DRAM 40包括以下映射表类型:
临时区域401,用于通过读取存储在FAT/子映射表区域411或FDB/子映射表区域412中的FAT/FDB中的文件扩展名来识别临时文件,用于存储临时文件和上述临时文件的映射表。上述临时文件可以包括:扩展名为.tmp,.temp,...的文件及.tmt,.tof,.trs,.tst的文件;系统相关的临时文件可能包括:扩展名为.mp,.log,.gid,.chk,.old,.bak的文件;AutoCAD相关的临时文件可以包括:扩展名为.SV$,.DWL,.AC$等的文件;Word相关的临时文件可能包含:.asd文件;Excel相关的临时文件可能包含.xar文件;其他应用程序可以使用自己的唯一文件扩展名来存储临时文件。
互联网临时文件区域402,用于存储扩展名为:.gif,.jpg,.js,.htm,.png,.css,.php,.tmp,.mp3,.swf,.ico,.txt,.axd,.jsp和.aspx等的互联网相关临时文件,以及上述互联网相关临时文件的映射表。
其中,上述临时区域401和互联网临时文件区域402都具有用于定位每个临时文件的表格,该表格可以由来自主机的逻辑地址索引。
预取数据区域403,用于存储预取数据和条目表格及上述预取数据和条目表格的映射表。具体的,在打开计算机时,操作系统(Operating system,OS)跟踪计算机的启动方式和打开频率超过预设频率值的程序,操作系统将上述计算机的启动方式和经常打开的程序作为信息保存为预取文件夹中的许多小文件。在再次打开计算机时,操作系统会通过上述许多小文件来加速启动过程。具体的,预取文件夹是OS系统文件夹的子文件夹,是自我维护的,不需要进行删除或清空该预取文件夹的内容。
日志文件区域404,用于存储日志文件和上述日志文件的映射表,上述日志文件和该日志文件的映射表可以被认为是临时文件的类型,其中,上述日志文件可以是.log或.evt扩展名的日志文件。
页面文件区域405,用于存储在主机上的诸如硬盘或驱动器1之类的外围存储器的主存储器之间交换数据的分页文件及上述分页文件的映射表。
读取高速缓存区域406,用于存储从闪存30读取并存储在DTL DRAM 40的读取缓存数据及上述读取缓存数据的映射表。其中,上述读取缓存数据的映射表可以被使用,该读取缓存条目的映射表包括标签、有效位及指向闪存30中的数据的指针。
系统区域407,用于存储由GNSD控制器10的操作系统使用的闪存系统数据。
缓冲区408,用于存储被写入驱动器1的原始主机数据(包括LBA)。
数据写入高速缓存表409,用于在实际主机数据被写入闪存30前存储上述实际主机数据,其中,与数据写入高速缓存表409相关的超写入高速缓存技术用于对写入闪存30的数据进行写入缓存,以便减少对闪存30的写入/擦除的次数。
备份/交换块410,用于进一步减少闪存30中的写入/擦除的次数。
具体的,来自主机的写入数据将首先写入缓冲区408中,在由驱动器1处理(诸如压缩)之后,将处理后的写入数据写入数据写入高速缓存表409,再写入闪存30中。若从主机连续写入大量数据,写入闪存30可能较为困难。可选的,上述大量数据可以被连续写入数据写入高速缓存表409中,直至上述数据写入高速缓存表409中内存占用已满,然后停止将缓冲区408中的数据写入到数据写入高速缓存表409的过程。可选的,若缓冲区408中的数据也已满,则通知主机停止数据通信。其中,数据写入高速缓存表409使用耐久性写入高速缓存算法,该算法将写入数据存储到DTL DRAM 40而不是闪存30,直到将上述写入数据从DTL DRAM40写入闪存30为止。因此,具有相同LBA的多次写入可以覆盖数据写入高速缓存表409中的数据并根据策略(例如基于经过的时间,分配的容量等)或在断电或电源故障时以连续单元写入闪存30。数据写入高速缓存表409还保存部分页面写入数据,直到整个页面与多个部分页面完成组合为止。可以认为将写入数据拆分成多个部分页面,在操作中可能有些部分页面存储在缓存中,有些部分页面存储在闪存中。因此,根据策略(诸如基于经过的时间,分配的容量等)或者在断电或电源故障时,多个部分页面写入可以写入闪存30。
可选的在多通道控制器结构中,设备控制器会把被整理为N个页面的数据(该N可以等同于多通道)从数据写入高速缓存表409以条带单元形式写入闪存30,以便最大限度地利用闪存接口带宽。其中,上述原始写入数据量为接收到的上层文件系统下发的写入数据的大小,上述实际写入数据量为上述原始写入数据经过驱动器处理后得到的实际写入数据的大小。对于每个设备控制器,其由C个通道组成,每个通道附着着F个闪存芯片,每个芯片由D个裸片堆叠起来,并且每个裸片具有P个页面。条带大小可以表示为F*D*P页。条带宽度可以表示为C,可知总条带深度可以表示为C*F*D*P页。设备控制器从数据写入高速缓存表409中选择数据,并将数据写入闪存30的所选条带,然后用相应的物理区块地址(physicalblock address,PBA)更新相关的映射表条目。每个通道只有一条总线,因此只能访问一个裸片。F*D个芯片将交错共享总线,以最大限度地利用总线。条带单元的大小可以是C页或多达C*F*D*P页。
DRAM翻译层(DTL)方法增加具有低指定擦除循环寿命的闪存的耐久性。闪存接口具有多个用于通道的总线;每个通道有多个闪存芯片;每个芯片具有多个裸片,并且每个裸片具有多个平面。所有通道可以同时访问。同一通道中的所有裸片不能同时访问;一次只能访问同一通道中的一个裸片。。交错写入或读取可以提高闪存访问的性能。数据写入高速缓存表409存储在DTL DRAM 40缓冲区中,并由GNSD控制器10根据策略进行管理。当数据写入高速缓存表409中的数据大于条带就绪单元时,设备控制器管理此数据并通过闪存接口写入闪存。设备控制器管理数据分配到闪存的每个通道。设备控制器管理数据交叉到每个通道中一个芯片的一个裸片,并管理映射表条目以跟踪LBA到PBA的映射。其中,设备控制器用于挂历数据分配到闪存30的每一个通道。
可选的,在其它替代设计中,在多通道控制器结构中,每个通道可以具有其自己的数据写入高速缓存表409。将条带就绪单元同时写入每个闪存通道可以将闪存接口速度最大化。用户文件数据可以基于命中率>=n(例如2)标识为频繁访问数据和命中率<n标识为非频繁访问数据,其中,命中率为数据访问次数。可以将上述频繁访问数据和非频繁访问数据分别写入两个数据写入高速缓存表409,记为频繁访问区409a和非频繁访问区409b。具有与频繁访问区409a相同的LBA地址的多个写入数据将覆盖DTL DRAM 40中尚未写入闪存30中的旧内容,从而减少对闪存30的写入次数。数据写入高速缓存表409中的频繁访问区409a中的缓存数据将基于诸如基于经过的时间(例如1小时),分配的容量等的策略或者在断电或电力故障时被存储在闪存30中的条带就绪单元中。数据写入高速缓存表409的非频繁访问区409b中的高速缓存数据将基于诸如基于经过的时间(例如15分钟),分配的容量等的另一策略或者关闭电源或断电时以条带就绪单元的形式存储到闪存30中。
在LBA地址未对准的情况下,在将数据写入数据写入高速缓存表409之前,LBA地址将与起始扇区偏移量相加以使该数据的LBA地址与闪存30的页面地址对齐,以使写入闪存更有效。其中LBA地址未对准的情况是指LBA地址为条带长度的非整数倍,对准指LBA地址为条带长度的整数倍。
备份/交换块410还用于通过垃圾回收功能以巩固有效数据,并在数据被写入闪存30之前从数据写入高速缓存表409中去除该数据。
页面状态表413包含具有页面状态条目的表格,诸如空页面,已使用页面,垃圾页面(被Trim通过操作系统通知SSD主控数据无效的页面,TRIMed),坏页面和需要附加ECC保护的页面。
压缩的LBA表格414为压缩的用户数据存储映象入口,用于存储压缩的用户数据的映射表。
块擦除计数表415,用于存储闪存存储器30中的每个物理块保持擦除计数器的轨迹以及块状态。
部分页面映射表416,用于存储部分页面映射信息。具体的,DTL DRAM 40可能没有足够的空间用于存储整个映射表,因此可能只有一部分被加载到DTL DRAM 40中。当LBA表项不在DTL DRAM 40中时,则将去除部分映射表中的一些部分,并加载相关LBA表至DRAM。
部分子扇区分组映射表417,用于存储数据文件的子扇区映射信息,其大小小于一页。部分子扇区分组映射表417中存储的部分映射表包括设置为N个映射表中的一个映射表。设置的其它N-1个映射表被存储在闪存存储器30中并在部分映射表发生未击中时取入DTL DRAM 40缓冲区408。
智能数据收集器418,用于存储数据表和其它信息,上述数据表和其他信息用于供图1中智能数据监视器105的S.M.A.R.T功能使用,上述只能数据收集器418还可被主机通过SMART命令或供应商命令请求。其中,上述其他信息可以包括:接收到的由上层文件系统下发的写入、读取的数据统计,以及经过驱动处理后实际写入的数据统计等等。
DTL DRAM 40中的区域大小可以由DTL DRAM 40的整体大小,闪存30的扇区大小,块大小和扇区大小(可以认为块大小是扇区大小的整数倍)以及是否使用页面映射或块映射来确定,或者是基于该区域中页面映射而非块映射的百分比的估计。在一种可行的实施方式中,假定DTL DRAM 40的大小可以是512MB DRAM,其中240MB分配给临时区域401,160MB分配给互联网临时文件区域402,12MB分配给预取数据区域403,6MB分配给日志文件区域404等等。
在多通道控制器结构中,设备控制器可以从闪存30读取数据,并且经过上述多通道控制器结构到达各种DTL表(FAT/子映射表区域411,FDB/子映射表区域412,页面状态表413,压缩的LBA表格414,块擦除计数表415,部分页面映射表416和部分子扇区分组映射表417)。
可选的,在多通道控制器结构中,设备控制器可以将各种DTL表(FAT/子映射表区域411,FDB/子映射表区域412,页面状态表413,压缩的LBA表格414,块擦除计数表415,部分页面映射表416和部分子扇区分组映射表417),排列为M页(M等于多个通道数)以刷新条带就绪单元,根据规则(例如基于消逝的时间、分配的容量等)或在关机或电源故障时,通过上述各种DTL表刷新上述条带就绪单元,从而使得使用闪存接口带宽达成最大效果。
可选的,参见图5,图5是本发明实施例提供的一种映射表中状态字段示意图。状态字段603可以是图4的DTL DRAM 40中的任一个映射表的一部分。映射表可以包括图4中的映射表:临时区域401、互联网临时文件区域402、预取数据区域403、日志文件区域404、页面文件区域405、压缩的LBA表格414等存储的映射表,图5至图11为上述映射表和数据写入高速缓存表409中的简化映射表的映射表和数据传输流程图的示意图。其中,映射表的组成示意图可以参见图6a~图6c或图7所示。
具体的,在图5中为映射表中包括的状态字段的示意图。其中,上述状态字段603中V为数据有效位,F为缓存已写入位,H为主机数据位,Q为空队列位,R为保留位,O2为重写_2位,O1为重写_1位,DF为数据已满位。具体的,可以表示为上述状态字段603包括数据有效位501,缓存已写入位502,主机数据位503,空队列位504,保留位505,重写_2位506,重写_1位507,数据已满位508。可选的,在初始状态下,上述映射表的任一数据单元条目都会把数据有效位501设置为1,而未分配给映射表或设置映射表的数据单元条目则设置数据有效位501为0。当任一数据单元条目被写入闪存30之后,该数据单元条目的缓存已写入位502会被设置为1。主机数据位503在主机数据被写入数据单元条目时被设置为1,但在缓存写入时清除,即置为0。因此,主机数据位503用于指示DTL DRAM 40中的多个数据单元条目中存储有尚未被复制到闪存30的当前最新写入数据。
具体的,得到状态字段603所在的DRAM条目,状态字段603中所包含的各个字段在被设置时表示如下状态:
数据有效位501,用于指示该DRAM条目对应的多个扇区可用于存储主机数据;
缓存已写入位502,用于指示该DRAM条目对应的多个扇区所存储的数据已被存储至闪存30中;
主机数据位503,用于指示所在的DRAM条目对应的多个扇区已存储主机请求写入的数据;
空队列位504,用于指示该DRAM条目对应的多个扇区中未存储数据;
保留位505,不使用,默认为0;
重写_2位506,用于指示该DRAM条目对应的多个扇区中存在发生第三次或以上主机写入操作的扇区;
重写_1位507,用于指示该DRAM条目对应的多个扇区中存在发生第二次主机写入操作的扇区;
数据已满位508,用于指示该DRAM条目对应的多个扇区中的所有扇区已存储数据。
当DTL DRAM 40中的数据单元条目已被分配和设置但尚未写入主机写入数据时,设置空队列位504为1。此时DTL DRAM 40中该数据单元条目没有主机数据,且保留位505未使用。当DTL DRAM 40中的数据单元条目中的所有扇区均已被写入主机写入数据时,该数据单元条目的状态字段603中的数据已满位508被置为1。其中,数据已满位508F在缓存写入时被清除,上述DTL DRAM40中的数据单元条目可以简称为DRAM条目。
当DTL DRAM 40中的数据单元条目被第二次写入数据时,重写_1位507被置1。当DTL DRAM 40中的数据单元条目被写入第三次以上时,重写_2位506被置1。具体的,即使数据写入DTL DRAM 40的上述数据单元条目中的不同扇区,这些重写位也会被置1。这些重写位在缓存写入时被清除。这些重写位用于识别频繁写入数据。频繁写入数据所在的数据单元条目可以保存在映射表中,而在缓存写入期间可以删除非频繁写入数据对应的映射条目,从而可以提高性能。
可选的,上述状态字段603中的各个位组成的状态字段值包括:
0000 0000,表示未建立或分配给映射表的DRAM条目;
1001 0000,表示有效但空的DRAM条目;
1010 0000,表示该DRAM条目发生第一次主机数据写入;
1010 0010,表示该状态字段所在的DRAM条目发生第二次主机数据写入;
1010 0110,表示该状态字段所在的DRAM条目发生第三次及以上主机数据写入;
1010 0001,表示该状态字段所在的DRAM条目中所包含的所有扇区都写入主机数据,且该DRAM条目只发生一次主机数据写入过程;
1010 0011表示该状态字段所在的DRAM条目中所包含的所有扇区都写入主机数据,且该DRAM条目发生两次主机数据写入过程;
1010 0111,表示该状态字段所在的DRAM条目中所包含的所有扇区都写入主机数据,且该DRAM条目发生三次或以上主机数据写入;
1100 0000,表示该状态字段所在的DRAM条目发生缓存写入,即将该DRAM条目中的数据写入闪存,此时主机数据位503、重写_2位506、重写_1位507及数据已满位508被清除。
可选的,参见图6a至图6c,图6a至图6c是本发明实施例提供的一种驱动器进行数据读取和写入后的映射表示意图。在图6a至图6c中可知,任一映射表包括:逻辑到DTL表和DTL到逻辑表。其中逻辑到DTL表包括逻辑到DTL字段601,DTL到逻辑表包括:DTL到逻辑字段602,状态字段603,扇区计数字段604及扇区有效位图605,上述映射表通过将所有地址字段设置为FFFF的空值来进行初始化。其中,上述地址字段包括逻辑到DTL字段601和DTL到逻辑字段602所示的地址字段,上述扇区有效位图605的所有扇区有效位被清除,即置为0,上述扇区计数字段604也会被清除为0,该映射表中的所有DRAM条目的状态字段603被清除,此时上述映射表中的所有DRAM条目的状态字段603被设置为1001 0000,表示上述所有DRAM条目有效但为空条目。具体的,上述DTL到逻辑表中的地址都指向上述逻辑到DTL表中的逻辑到DTL字段601中存储的DRAM条目。具体的,来自主机的主机数据携带的逻辑地址中的一部分用于选择上述逻辑到DTL字段601中的一个DRAM条目,其中上述逻辑到DTL字段601中的每个DRAM条目都指向驱动器1中SSD DRAM 40内存的一部分空间,被称为1个DRAM单元。
在一个可行的实施方式中,假定上述DRAM单元包含256个扇区,每个扇区为512个字节,可知每个上述DRAM单元总共包括128K字节。其中,上述映射表中的DTL到逻辑表中的每个条目的扇区有效位图605具有256位以控制128K字节的数据存储。
可选的,假定具有2T字节容量的闪存,则该闪存有2T/128K或16M个可能的逻辑单元。若映射表中的映射方式为全映射,则DTL DRAM 40中的逻辑到DTL字段601需要16M个DRAM条目。其中,上述逻辑到DTL字段601中的每个DRAM条目有16位,可知上述逻辑到DTL字段601所需的总存储容量大小为16M x16位或32M字节。
具体的,分配给映射表的DRAM较小,因为SSD DRAM尺寸小于闪存尺寸,并且SSDDRAM中只有一部分DRAM可用于映射表存储。因此,DTL到逻辑表中可用的DRAM条目相对较少。例如,相对于闪存的容量大小为2T字节,DTL到逻辑映射表的大小可能只有4G字节。
具体的,DTL到逻辑表中的每个DRAM条目的大小包括:存储在DTL到逻辑字段602中的地址字段的32位或4字节,状态字段603的一个字节,扇区计数字段604的两个字节以及用于扇区有效位图605的256位或32字节。可知,上述DTL到逻辑表中的每个DRAM条目总共有39个字节。当假定为DTL到逻辑表分配32K个DRAM条目时,占用的内存大小约为32Kx39字节或1.2M字节。可选的,上述DTL到逻辑表中的每个DRAM条目的大小设定仅为一种可选的实施方式,上述DTL到逻辑表中每个DRAM条目所包含的DTL到逻辑字段602、状态字段603、扇区计数字段604及扇区有效位图605等也可以是其他容量大小分配和空间安排,这里不做限制。
具体的,由于仅为上述DTL到逻辑表分配了32K个条目,所以在初始化期间DTL到逻辑字段602中的第一个条目被分配并将其状态字段603设置为10010000。在DTL到逻辑字段602中的包括0xFFFF在内的最后32K个地址字段所在的条目的状态字段603被清零。
可选的,参见图6a,图6a是本发明实施例提供的一种主机数据写入后的映射表示意图。如图6a所示,在第一可行的写入操作中,在映射表进行初始化之后,假设主机发出了LBA地址为272的连续8个扇区的第一主机数据。在本写入操作中,假定的是上述第一主机数据的LBA地址是扇区地址而不是块地址。因此,将上述第一主机数据从第272个扇区开始写入连续8个扇区。具体的,可以通过计算得到该第一主机数据的第一逻辑地址号是272/256或1,余数为16,可知该第一主机数据是在逻辑到DTL字段601中DRAM条目中逻辑地址为#1(即0x0001)开始写入,并且该第一主机数据的起始扇区偏移量为16。
分配DTL到逻辑表中的第一个条目,上述第一个条目的DTL到逻辑字段602的DTL地址为0x0000,因此将0000的DTL地址添加到逻辑到DTL字段601中的第二个条目,上述第二个条目为上述逻辑到DTL字段601中逻辑地址为0x0001的DRAM条目。此时,逻辑到DTL字段601中DRAM条目的逻辑地址0x0001指向DTL到逻辑表中的条目0x0000。
逻辑到DTL字段601的第二个条目0001的逻辑地址被输入到DTL到逻辑表中的已分配的第一个条目的DTL到逻辑字段602的地址字段中。将该条目的状态字段603中的主机数据位503置为1并且清空空队列位504,所以该状态字段603现在是1010 0000。由于主机写入8个扇区的主机数据,因此将扇区计数字段604中的扇区计数置为8。已知上述起始扇区偏移量为16,则在扇区有效位图605中设置位16至23为1,使得位图现在为0000FF0000000000...00000000。
可选的,在第二可行的写入操作中,继续执行对LBA地址为1362的连续500个扇区的较大主机数据写入操作,这里将上述较大主机数据记做第二主机数据。可知该第二主机数据的第一逻辑地址号是1362/256或5,余数为82。由此可以得到该第二主机数据的起始DRAM条目的逻辑地址为#5(即0x0005),该第二主机数据的起始扇区偏移量为82。通过查询DTL到逻辑表可知该DTL到逻辑表中的下一个可用DRAM空条目为第二个条目0x0001,记做第一DRAM条目,因此将0001填入到逻辑到DTL字段601中逻辑地址为0x0005对应的DRAM条目记录中,并且将0005填入到DTL到逻辑字段602中的地址字段为0x0001的记录中。
具体的,在本次较大主机数据写入中有500个扇区的数据,由上述第二起始扇区偏移量可知在本写入操作中上述第二主机数据的第一条目中的扇区计数字段604为174(256-82=174),上述第二主机数据的第二条目中的扇区计数字段604为256(500-174=326>256),上述第二主机数据的第三条目中的扇区计数字段604为70(500-174-256=70),因此上述第二主机数据进行写入操作时总共需要3个DRAM单元和3个DRAM条目。之后将上述第二条目和上述第三条目也分配到逻辑到DTL表和DTL到逻辑表中。其中,在上述逻辑到DTL表中查找接下来两个可用DRAM空条目,可知上述两个可用DRAM空条目分别为逻辑到DTL字段601中逻辑地址为0x0006和逻辑地址为0x0007的DRAM条目,分别记做上述第二主机数据的第二DRAM条目和上述第二主机数据的第三DRAM条目。具体的,上述第二主机数据的第二DRAM条目#6地址0x0006被链接到上述DTL到逻辑表中的下一个可用空条目,为DTL到逻辑表中的第三个条目0x0002(即上述第二主机数据的第二条目),所以将0002填入到上述第二主机数据的第二DRAM条目中,并且0006被填入到上述第二主机数据的第二条目中的DTL到逻辑字段602中,即地址字段为0x0002。上述第二主机数据的第三DRAM条目#7地址0x0007被链接到DTL到逻辑表中的下一个可用空条目,为DTL到逻辑表中第四个条目0x0003(即上述第二主机数据的第三条目),因此将0003填入到上述第二主机数据的第二DRAM条目中,并且0007被填入到上述第二主机数据的第三条目中的DTL到逻辑字段602中,即地址字段为0x0003。因此,三个条目对应的地址字段被添加到逻辑到DTL字段601中,分别指向DTL到逻辑表中的三个条目,其中,上述三个条目分别为上述第二主机数据的第一条目、上述第二主机数据的第二条目和上述第二主机数据的第三条目。
具体的,上述三个条目的状态字段603的主机数据位503被设置为1,并且空队列位504被清除,上述第二主机数据的第二条目的数据已满位508被设置为1,因为该条目的全部256个扇区将被写满。因此,上述第二主机数据的第一条目0x0001和上述第二主机数据的第三条目0x0003,现在的状态字段603为1010 0000,对于上述第二主机数据的第二条目0x0002,现在的状态字段603为1010 0001。上述第二主机数据的第二条目0x0002的扇区计数字段604被写入256,上述第二主机数据的第一条目0x0001的扇区计数字段604被写入174,上述第二主机数据的第三条目0x0003的扇区计数字段604被写入70。
其中,上述第二主机数据的第二条目的扇区有效位图605中的256位均被设置为1,上述第二主机数据的第一条目的扇区有效位图605中的最后174位被设置为1,并且上述第二主机数据的第三条目的扇区有效位图605中的前70位被设置为1。
可选的,参见图6b,图6b为本发明实施例提供的一种数据重写后的映射表示意图。如图6b所示,在第三可行的写入操作中,在上述第二可行的写入操作之后,将另外50个扇区数据写入LBA地址1862,将上述另外50个扇区数据记做第三主机数据。其中,本次写入操作为上述第二个可行的写入操作结束之后执行。可知该第三主机数据的逻辑地址号为1862/256或7,余数为70。由此可以得到该第三主机数据的起始DRAM条目的逻辑地址为#7(即0x0007),经过对逻辑到DTL表的查询可知,DRAM条目0x0007中存储有数据0003,即为指向DTL到逻辑表中的条目0x0003的指针。检查上述条目0x0003对应的DTL到逻辑表中的状态字段603,可知该条目0x0003为有效不为空条目,因此在上述0x0003条目中已有的有效数据之后添加上述第三主机数据,由上述条目0x0003中的扇区计数字段604及扇区有效位图605可知该条目中前70个扇区为已使用扇区,而上述第三主机数据的起始扇区偏移量为70,则将上述第三主机数据从上述条目0x0003的第71个扇区进行写入操作。其中,已知上述第三主机数据包含50个扇区数据,则上述条目0x0003的第71至120个扇区被写入上述第三主机数据。具体的,将上述条目0x0003中的扇区计数字段604更新为120,扇区有效位图605中的第71至120位置为1。其中,由于本次写入是对该条目0x0003的第二次写入,所以状态字段603中的重写_1位被置为1,可得条目0x0003现在的状态字段为1010 0010。
可选的,如图6b所示,在第四可行的写入操作中,在上述第三可行的写入操作之后,继续执行将LBA地址为272的连续8个扇区的主机数据写入操作,将该主机数据记做第四主机数据。可知该第四主机数据的逻辑地址号为272/256或1,余数为16。由此可以得到该第四主机数据的起始DRAM条目的逻辑地址为#1(即0x0001),经过对逻辑到DTL表的查询可知,DRAM条目0x0001中存储有数据0000,即为指向DTL到逻辑表中的条目0x0000的指针。检查上述条目0x0000对应的DTL到逻辑表中的状态字段603值为1010 0000,可知该条目0x0000为有效不为空条目,由扇区有效位图605可知该条目0x0000中的位16至23为1,即该条目对应的DRAM单元中的第16至23个扇区已被使用。具体的,上述第四主机数据的起始扇区偏移量为16,可知该第四主机数据将被写入条目0x0000中对应的DRAM单元的第16至23个扇区,与该条目0x0000中已存储的数据重合,因此该第四有效数据将上述条目0x0000中的旧数据覆盖。此时,该条目0x0000中的扇区计数字段604和扇区有效位图605不发生改变,而由于该条目0x0000的数据被进行重新写入,因此将该条目0x0000中的状态字段603中的重写_1位置1,得到现在的状态字段603为1010 0010。
可选的,参见图6c,图6c是本发明实施例提供的一种主机数据重写和读取后的映射表示意图。如图6c所示,在第五可行的写入操作中,执行将LBA地址为272的连续8个扇区的主机数据写入操作,其中,上述第五可行的写入操作在上述第四可行的写入操作之后执行。具体的,该第五可行的写入操作过程与上述第四可行的写入操作过程相同,由于条目0x0000中的状态字段603的重写_1位为1,可知本次写入操作是第三次或以上进行数据重写,因此该状态字段603的重写_2位置为1,得到该条目0x0000的状态字段603的值为10100110,该条目中的逻辑到DTL表和DTL到逻辑表中除状态字段603以外的写入操作见上述第四可行的写入操作,在此不再赘述。
可选的,如图6c所示,在第一可行的读取操作中,执行从所有DRAM单元中读取LBA地址为2000的连续200个扇区数据的操作,将上述连续200个扇区数据记做第一读取数据。根据上述LBA地址可得该第一读取数据的逻辑地址号为2000/256=7,余数为208,即该第一读取数据的起始扇区偏移量为208。根据上述第一读取数据的逻辑地址号和起始扇区偏移量确定该第一读取数据的起始DRAM条目的逻辑地址为#7(即0x0007),根据逻辑到DTL字段601可知逻辑地址0x0007对应的DRAM条目中存储有数据0003,为指向DTL到逻辑表中的条目0x0003的指针,从而确定访问的DTL到逻辑表中的条目为条目0x0003。再根据上述第一读取数据的起始扇区偏移量可知本次读取操作的范围为条目0x0003中第208个扇区开始连续200个扇区。具体的,查询该条目0x0003中的扇区计数字段604和扇区有效位图605,可知该条目0x0003的扇区计数字段604为120,扇区有效位图605为FFFFFFFFFFFF…00000000,可以确定该条目中的有效数据为前120个扇区的数据。通过比较上述第一读取数据的起始扇区偏移量和该条目0x0003的扇区有效位图,可以得出起始扇区偏移量为208时超出该条目0x0003中的最后一个有效扇区,因此本次读取操作将从闪存30中读取上述第一读取数据。
可选的,参见图7,图7是本发明实施例提供的一种缓存写入操作对映射表的更新示意图。可选的,这里假定将DTL地址为#2(即0x0002)对应的DRAM单元中的数据进行缓存写入。根据该条目0x0002的DTL到逻辑表可知该条目0x0002中有256个扇区的有效数据,具体的,通过缓存写入操作将上述256个扇区的有效数据从SSD DRAM 40中复制到闪存30。在将上述256个扇区的有效数据复制到闪存30后,上述有效数据仍被存储在SSD DRAM 40中,并将条目0x0002中状态字段603的缓存已写入位502置为1,主机数据位503和数据已满位508被置为0,可得本次缓存写入操作后的条目0x0002中的状态字段更新为1100 0000,具体描述参见图5所示。其中,扇区计数字段604和扇区有效位图605保持不变。由于被缓存写入的数据仍然存储在SSD DRAM 40中,使得在读取和写入时可以快速访问上述被缓存写入的数据,可选的,该条目0x0002中的上述被缓存写入的数据随时可能被新的主机写入数据覆盖。
可选的,参见图8,图8是本发明实施例提供的一种通过上述图5至图7的映射表进行数据读取的流程图。具体的,当接收到主机读取请求后,执行如下操作:
801,计算开始逻辑单元地址#、起始扇区偏移量和逻辑单元计数。
具体的,上述主机读取请求包括读取数据的第一逻辑地址和读取扇区数量。控制器在获取到上述主机读取请求后,通过将上述读取数据的第一逻辑地址除以每个DRAM单元所包含的扇区数,计算得到DRAM条目的逻辑地址作为第二逻辑地址#及起始扇区偏移量。具体的,经过计算得到的整数结果为第二逻辑地址#,余数为起始扇区偏移量。再根据上述起始扇区偏移量和上述读取扇区数量计算得到逻辑单元数量,上述逻辑单元数量是存储所有上述读取扇区数目所需的DRAM单元的数量。具体的,将当前需要读取的逻辑单元数目记为i,即逻辑单元计数i,i的初始值为上述逻辑单元数量。
具体的,假定此处需要读取第一逻辑地址为1362的连续500个扇区的读取数据,即读取扇区数量为500,其中,假定每个DRAM单元的扇区数为256,根据上述第一逻辑地址1362和每个DRAM单元的扇区数256计算,
1362/256=5…82,得到该读取数据的第二逻辑地址为#5,起始扇区偏移为82。可选的,可以再根据上述起始扇区偏移82和读取扇区数量500经过如下可选的计算过程:256-82=174(第一个逻辑单元),174+256=430<500(第二个逻辑单元),430+256=686>500(第三个逻辑单元),可以得到该读取数据的逻辑单元数量为3,并将该读取数据的逻辑单元计数i的初始值设置为3。
802,判断逻辑单元计数i是否大于0。
具体的,若上述逻辑单元计数i>0,表示所需读取的DRAM单元尚未全部读取,则继续执行步骤803,否则当上述逻辑单元计数i不大于0时,表示上述主机读取请求所请求读取的数据全部读取完成,即本次读取操作结束,则继续执行步骤815。具体的,根据上述步骤802中假定此时的逻辑单元计数i为3>0,因此执行步骤803。
803,读取逻辑到DTL表中的DRAM条目。
具体的,读取上述第二逻辑地址#对应的DRAM条目。由步骤801可知,上述第二逻辑地址#当前值为5,则读取逻辑到DTL表中的DRAM条目0x0005。
804,判断该DRAM条目的值是否为FFFF。
具体的,若该DRAM条目中存储的值为FFFF,则表示该DRAM条目是无效的,且该DRAM条目对应的SSD DRAM 40中的DRAM单元中未存储数据,因此执行步骤806;若该DRAM条目中存储的值不为FFFF,则表示该DRAM条目所对应的SSD DRAM 40中的DRAM单元中存储有数据,因此执行步骤805。
805,判断状态字段中的主机数据位或缓存已写入位是否等于1,其中,该状态字段为该DRAM条目中的逻辑到DTL字段601的值所指向的DTL到逻辑表条目中状态字段603。
具体的,该DRAM条目中逻辑到DTL字段601所存储的值为该DRAM条目所指向的DTL到逻辑表中的DTL地址,通过查找上述DTL到逻辑表中的对应条目,读取该条目中状态字段603的值,并判断上述状态字段603中的主机数据位503是否等于1或者缓存已写入位502是否等于1。可选的,若上述主机数据位503或上述缓存已写入位502中任一位的值为1,则表示该条目所对应的DRAM单元中存储有有效数据,执行步骤809;否则表示该条目为空且所对应的DRAM单元中未存储数据,则继续执行步骤806。
806,将扇区计数记为j,判断j是否大于0。
具体的,将上述DRAM单元中所需读取的扇区读取计数记为j,该扇区读取计数j的初始值为上述DRAM单元中所包含的总扇区数目,判断当前的扇区读取计数j是否大于0,若大于0则表示该DRAM单元中的数据未读取结束,执行步骤807,否则执行步骤814。
807,从闪存存储器读取数据,若该数据被加密则进行解密。
具体的,从闪存中读取该DRAM单元中的当前读取扇区所对应的区域读取数据,若读取得到的数据被加密,则激活解密器对该数据进行解密。
808,将扇区计数j--。
具体的,上述DRAM单元中的当前扇区读取结束,将上述DRAM单元中仍需读取的扇区数目减一,即扇区读取计数j--,继续返回执行步骤806,判断扇区读取计数j是否大于0。
809,将扇区计数记为j,判断j是否大于0。
具体的,将当前DRAM条目对应的DRAM单元中人仍需读取的扇区数目记为j,记做扇区读取计数j,初始值为当前DRAM条目所对应的DRAM单元中包含的总扇区数目,判断当前的扇区读取计数j是否大于0,若大于0则执行步骤810,否则执行步骤814。
810,检查扇区有效位图中当前扇区位是否为1。
具体的,获取当前DRAM条目中的扇区有效位图的值,判断当前DRAM条目的扇区有效位图中的当前读取扇区的有效位值是否为1,若未1则表示上述当前读取扇区中存储有有效数据,执行步骤801,否则从闪存中读取数据,执行步骤812。
811,从SSD DRAM中读取数据。
具体的,从SSD DRAM中的当前DRAM条目所对应的DRAM单元中读取数据,继续执行步骤813。
812,从闪存存储器中读取数据,若该数据被加密则进行解密。
具体的,从闪存中读取该DRAM单元中的当前读取扇区所对应的区域读取数据,若读取得到的数据被加密,则激活解密器对该数据进行解密。
813,将扇区计数j--。
具体的,上述DRAM单元中的当前扇区读取结束,将上述DRAM单元中仍需读取的扇区数目减一,即扇区读取计数j--,继续返回执行步骤809,判断扇区读取计数j是否大于0。
814,将逻辑单元计数i++,同时第二逻辑地址下移,即#++。
具体的,当前DRAM条目中所对应存储的数据全部读取完成,则继续读取下一DRAM条目所对应存储的数据,易知当前需要读取的逻辑单元数目少一,即上述逻辑单元计数i++,且DRAM条目的逻辑地址递增,即第二逻辑地址#++,表示上述下一DRAM条目的逻辑地址,返回执行步骤802,判断上述逻辑单元计数i是否大于0。
815,如果去重功能开启,则将读取数据进行去重处理。
具体的,当所需读取的逻辑单元全部读取完成,则检测GNSD控制器中的去重功能是否开启,若开启则对上述主机读取请求所请求读取的数据进行去重处理,删除该数据中的重复请求数据。
816,如果压缩功能开启,则对读取数据进行压缩处理。
具体的,检测GNSD控制器中的压缩功能是否开启,若开启则对上述主机读取请求所请求的数据进行压缩处理,从而减小读取数据的大小。
817,将当前主机读写计数++。
具体的,驱动器将上述主机读取请求所请求的读取数据返回到主机,完成了一次主机数据读取操作,使得主机读写计数器及当前主机读写计数器(host_read-write_count_now,host_rw_cnt_now)递增,将当前主机读写计数加一。
请参见图9.1至图9.6,为本发明实施例提供一种通过映射表进行主机数据写入操作的流程示意图。
在步骤901中,接收主机发送的写入请求,该写入请求包括主机写入数据、该主机写入数据的逻辑地址。具体的,GNSD控制器接收主机发送的写入请求,该写入请求中包括请求写入的主机写入数据、该主机写入数据的逻辑地址及主机写入数据的扇区数量。
当启用压缩功能时,在步骤902,GNSD控制器10压缩来自主机的主机写入数据。如果启用重复数据删除,则在步骤903,写入数据被去除重复。当重复删除功能被启用时,新的写入数据可以与已被存储其他较旧的数据作对比,并且替换指向该旧数据的指针指向的写入DRAM或闪存的数据。
可用的DRAM单元的数量是确定的。当可用DRAM单元的数量大于第一阈值(步骤904)或大于第二阈值(步骤905)时,可用DRAM单元的数量是足够的并且不需要增加。然后,依照9D,操作继续如图9.4所示步骤922,在将主机数据写入SSD DRAM 40之前,检查自动缓存写入定时器。
当可用DRAM单元的数量小于第一阈值(步骤904)并且也不大于第二阈值(步骤905)时,可用DRAM单元的数量太小并且必须增加。将缓存写入指针被用于指向DTL到逻辑表中的一个DRAM条目。其中,第二阈值大于第一阈值。
当该DRAM条目的状态字段603已经将主机数据位503清除为0(步骤906)时,则该DRAM条目已经可用,因此缓存写入指针递增(步骤908),并且从步骤905重复该循环以搜索可以被缓存写入的更多DRAM条目。
当该DRAM条目的状态字段603已经将主机数据位503设置为1(步骤906)时,则该DRAM条目由于其存储主机数据而不可用。当该DRAM条目的重写_2位被设置时(步骤907),那么该DRAM条目保存的是多次被写入的热数据。依据9C执行如图9.3所示各步骤,将该DRAM条目将被迁移到另一个开放DRAM单元。否则,当重写_2位未被设置时(步骤907),条目不具有频繁写入的数据并且可以被写入闪存并且条目被重新分配给不同的逻辑地址。
其中,热数据为写入相对频繁的数据,可以认为被重复多次写入的数据,在本发明实施例中的一种可能的判别方法为重复写入三次及以上的数据被称为热数据。
继续图9.2,由缓存写入指针当前指向的DRAM条目的数据从SSD DRAM40中被写入闪存存储器30。扇区计数被初始化为可能为该DRAM条目存储的扇区的最大数量,在本方案的假设中也就是256。扇区计数用于指示该DRAM条目所包含的扇区中尚未被处理的扇区数量。通过扇区计数进行循环处理实现对该DRAM条目中所包含的多个扇区中每个扇区的处理过程。当扇区计数大于0时(步骤909),从扇区有效位图605中读取当前扇区计数对应的每一位。当该当前扇区在扇区有效位图605中对应的有效位为0时(步骤910),那么该当前扇区和扇区计数不存在,数据可以递减,并且从步骤909重复循环。
当前扇区计数的扇区有效位图605中当前扇区对应的扇区有效位为1时(步骤910),则存在该扇区的数据。该扇区的数据从SSD DRAM 40读取并且如果加密被启用则被加密(步骤911)。然后在步骤912将该扇区的数据写入到闪存30中。然后扇区计数可以递减并且从步骤909重复循环。
一旦处理了全部256个扇区,则扇区计数达到0(步骤909)。DRAM单元的条目已被缓存写入到闪存30并且现在可用于其他逻辑地址。在步骤913,可用DRAM单元数目的计数器被递增。在步骤914,将状态字段603中的DTL到逻辑表中的该条目的状态字段值改变为11000000,以指示该DRAM条目是有效的并且被缓存写入(步骤914)。然后该过程可以依据9A执行如图9.1中步骤908所示,在递增缓存写入指针之后继续搜索具有DTL到逻辑表中的下一个条目的更多DRAM单元,并且重复图9.1中的步骤905的循环。
在图9.3中,如由图9.1中的步骤907所确定的,针对由缓存写入指针指向的当前条目设置了重写_2。当前DRAM条目具有频繁写入的数据,并且应该被重新定位在SSD DRAM 40中,以便将来的访问将在SSD DRAM中找到频繁使用的数据,而不是仅在较慢的闪存中。其中,图9.3所示步骤是通过将分散存储但频繁写入的各个数据转移到一边,整理出连续空间用于存放后续主机写入数据,也便于已存在的频繁写入数据的访问。
在步骤915中,例如通过使用图11的例程,找到下一个可用的DRAM单元,将空闲DRAM指针指向找到的该可用的DRAM单元。扇区计数被初始化为当前DRAM条目所包含的最大扇区数,在本方案中可能为条目256。虽然扇区计数大于0,步骤916,从扇区有效位图605中读取当前扇区计数对应的扇区有效位。当该位为0时(步骤917),那么对于该扇区不存在数据,并且扇区计数可以递减并且循环从步骤916重复。
当当前扇区计数在扇区有效位图605中对应的扇区有效位为1时(步骤917),则存在该当前扇区的数据。该当前扇区的数据从缓存写入指针指向的条目中被读取,并被写入由空闲DRAM指针(FreeDRAM_Pointer,FDRAM_PTR)所指向的另一DRAM条目(步骤918)。因此,将经常使用的数据从当前条目复制到SSD DRAM 40中的不同条目。然后扇区计数可递减,并从步骤916重复循环。
一旦处理了所有256个扇区,则在步骤916,扇区计数达到0。当前DRAM单元中对应的数据已经移动到SSD DRAM 40中的查找到的空闲DRAM指针指向的不同DRAM条目,并且当前DRAM条目现在可用于其他逻辑地址。由缓存写入指针指向的当前DRAM条目的映射条目被复制到由空闲DRAM指针指向的条目(步骤919)。该内容包括DTL到逻辑字段602,扇区计数字段604,扇区有效位图605和状态字段603。由空闲DRAM指针指向的新条目号被写入到逻辑到DTL表的逻辑到DTL字段601中,用于已指向当前条目的逻辑地址,从而更新逻辑到DTL表、空闲指针指向的DRAM条目的映射内容,创建逻辑到DTL表与空闲指针指向的DRAM条目的映射关系(步骤919)。然后可以增加空闲DRAM指针(步骤920),并且可用DRAM单元的数量的计数器递减(步骤921),以考虑新条目。然后该过程依据9B1在图9.2中以步骤914继续。状态字段603中的DTL到逻辑表中的旧条目的状态被改变为“1100 0000”以指示条目是有效的并且被缓存写入(步骤914)。然后该过程可以依据9A执行图9.1中所示步骤908,在递增缓存写入指针之后继续搜索具有DTL到逻辑表中的下一个条目的更多DRAM单元,并且重复图9.1的步骤905的循环。
在图9.4中,可用DRAM单元的数量是足够的并且不需要增加。在将主机数据写入SSD DRAM 40之前,操作从图9.1所示继续进行,检查自动缓存写入定时器,步骤922。当自动缓存写入定时器大于零时,自动缓存写入程序923被激活(图10.1~图10.4)。
GNSD控制器10通过将来自主机的逻辑地址除以诸如256的每个DRAM单元的扇区数来计算开始逻辑地址单元#。整数结果是逻辑单元#并且余数是起始扇区偏移量。逻辑单元数量是存储主机写入数据所需要的所有扇区所需的逻辑单元的数量,并且取决于开始和结束扇区偏移以及写入的扇区数量(步骤924)。
当逻辑单元计数达到零时(步骤925),主机读写计数器host_rw_cnt_now递增(步骤926)。主机写入操作结束。
当逻辑单元计数大于零时(步骤925),在步骤927,使用逻辑地址单元#作为地址来读取逻辑到DTL字段601以找到对应的条目(步骤927)。如果该条目具有除FFFF以外的任何值,则主机逻辑地址已经映射到有效条目并且可以将其数据存储到SSD DRAM 40中。如果被缓存写入位在状态字段603中未被设置(步骤930),则该条目将被新的主机数据覆盖,如依据9F所示执行如图9.6中步骤937所示。
如果在状态字段603中设置了被缓存写入的位(步骤930),则由于写入数据已经被备份到闪存30,所以该条目已经可用。“DTL到逻辑”表中的表项将其状态字段603设置为“1010 0000”,以指示该条目对于新主机数据是有效的,并且扇区计数字段604和扇区有效位图605中的所有位都被清除(步骤931)。该过程依据9E执行如图9.5中继续执行。
当逻辑单元计数大于零时(步骤925),使用逻辑地址单元#作为地址来读取逻辑到DTL字段601以找到对应的条目(步骤927)。如果该条目具有FFFF的值,则该条目无效,并且SSD DRAM 40中没有数据。写数据必须在DTL到逻辑表中分配一个新DRAM条目。
在步骤928,通过使用如图11的例程,找到下一个可用的DRAM单元#。在步骤929,将该下一个可用的DRAM单元#的新条目编号写入逻辑到DTL字段601中,以获得来自主机的逻辑地址。DTL到逻辑字段602被写入来自主机的逻辑地址的上部,该逻辑地址是逻辑到DTL字段601中的条目#。因此,逻辑到DTL字段601和DTL到逻辑字段602中的条目被链接。DTL到逻辑表中的新条目将其状态字段603设置为1010 0000以指示该条目为有效的主机数据,并且扇区计数字段604和扇区有效位图605中的所有位都被清除,步骤931,该过程依据9E执行如图9.5中继续。
在图9.5中,主机数据被写入空的DRAM单元。由于正在使用缓存已写入或空的DRAM单元,可用DRAM单元的数量递减(步骤932)。扇区计数可以被初始化为当前处理的可用DRAM单元所包含的扇区的数量,在本方案中可以假定扇区计数被初始化为256。在扇区计数大于0的情况下(步骤933),在步骤934中将用于该扇区计数的主机数据写入SSD DRAM 40。在循环到下一个扇区的步骤933之前,在步骤934中设置扇区有效位图605中该扇区对应的扇区有效位为1,并且步骤935中扇区计数递减。
当数据写入少于DRAM单元中所有256个扇区时,根据起始扇区偏移量和总扇区计数写入数据,并且仅对在步骤924中指定的正在写入的扇区设置有效位。
在处理了所有256个扇区之后,如果在步骤936中全部256个扇区已经写入有效数据,则设置数据已满位(data_full)位为1,如步骤936所示。接下来依据9D1用图9.4的步骤925处理下一个逻辑单元(如果有的话)。
在图9.6中,主机写入数据覆盖已经在DRAM单元中缓存的数据。在步骤937,在条目的状态字段603中主机数据位503被设置为1。
扇区计数被初始化为当前处理的DRAM条目所包含的扇区数量,该扇区数量可以为256。在步骤938,当扇区计数大于0时,在步骤939,将该扇区计数的任何主机数据写入SSDDRAM 40。如果扇区有效位图605中该扇区对应的扇区有效位已被设置(步骤940),则扇区计数递减并且通过循环回到步骤938来处理下一个扇区。否则,在循环到下一个扇区(步骤938)之前,设置扇区有效位图605中该扇区计数的扇区有效位(步骤941),并且扇区计数递减(步骤942)。
当数据写入少于DRAM单元中所有256个扇区时,根据扇区偏移量和总扇区计数写入数据,并且仅对在图9.4中步骤924中指定的正在写入的扇区设置扇区有效位。
在全部256个扇区已经被处理并且扇区计数达到0之后(步骤938),如果全部256个扇区已经被写入有效数据,则设置数据已满位为1(步骤943)。如果在状态字段603中已经设置了重写_1位,表示该DRAM条目中对应数据至少被写入两次,则重写_2位也被设置。如果在状态字段603中重写_1位为0,则设置重写_1位。接下来依据9D1用图9.4的步骤925处理下一个逻辑单元(如果有的话)。
请参见图10.1~图10.4,图10.1~图10.4提供了一种自动缓存写入操作的流程示意图。具体的,自动缓存写入计时器可以周期性增加或减少计数,当发生大量的读写操作时,自动缓存写入计时器重置为0,当读取和写入操作相对较少时,自动缓存写入计时器会周期性增加。当自动缓存写入计数器大于0时,自动缓存写入功能被激活。
在图10.1中,当图9.4中所示自动缓存写入例程923被激活时,在步骤1001清除缓存写入计数和DRAM计数。如果在缓存写入指针指向的条目的状态字段603中设置了主机数据位(步骤1002),则设置重写_2为1(步骤1003),然后依据10C在图10.3中继续处理频繁写入的数据。
如果在缓存写入指针指向的条目的状态字段603中设置了主机数据位(步骤1002),而重写_2位为0(步骤1003),则依据10B由图10.2中所示的流程向闪存写入旧的DRAM条目和对应的数据。
如果在缓存写入指针所指向的DRAM条目的状态字段603中主机数据位为0(步骤1002),对于空白或已经缓存写入的DRAM条目,会继续依据10D1进行图10.4所示的过程。
在图10.2中,由缓存写入指针当前指向的DRAM条目的数据从SSD DRAM40中被写入闪存30。扇区计数被初始化为当前DRAM条目所对应的扇区总数,本申请中可以为256。当扇区计数大于0时(步骤1004),从扇区有效位图605读取当前扇区计数的位。当该位为0时(步骤1005),则该扇区不存在数据,扇区计数可递减并且继续从步骤1004重复该循环。
当当前扇区在扇区有效位图605对应的扇区位为1时(步骤1005),则该扇区的数据存在内存中。该扇区的数据从SSD DRAM 40被读取并且如果加密被启用则被加密(步骤1006),然后该扇区数据被写入闪存30(步骤1007),然后扇区计数递减并且循环从步骤1004重复。
一旦处理了所有256个扇区,步骤1004中扇区计数达到0,DRAM单元的条目已被缓存写入到闪存30并且现在可用于其他逻辑地址,可用DRAM单元的数目的计数器递增(步骤1008),缓存写入计数也递增。在DTL到逻辑表中该条目的状态在状态字段603中变为11000000以指示该条目是有效的并被缓存写入(步骤1009),该过程依据10D在图10.4中继续。
在图10.3中,旧的DRAM单元有经常访问的数据并且应该被迁移到不同的DRAM单元。在步骤1010中,通过使用图11的例程,找到下一个可用DRAM单元。扇区计数被初始化为可能为DRAM条目存储的最大扇区数256。当扇区计数大于0(步骤1011),从扇区有效位图605中读取当前扇区计数的位,当该位为0时(步骤1012),该扇区不存在数据,且扇区计数可以递减并且从步骤1011重复该循环。
当当前扇区的扇区有效位图605对应的扇区位为1时(步骤1012),则该扇区存在数据。从该缓存写入指针指向的条目读取该扇区的数据,并将其写入由空闲DRAM指针指向的另一条目(FDRAM_PTR)(步骤1013)。这样,频繁使用的数据就从当前条目复制到SSD DRAM40中的另一个条目。然后扇区计数递减,并且从步骤1011重复循环。
一旦处理了所有256个扇区,则在步骤1011处,扇区计数达到0。DRAM单元的当前条目已经移动到SSD DRAM 40中的不同DRAM条目,并且当前DRAM条目现在可用于其他逻辑地址。由缓存写入指针指向的当前条目的映射条目被复制到空闲DRAM指针所指向的条目(步骤1014)。复制的内容包括DTL到逻辑字段602,扇区计数字段604,扇区有效位图605以及状态字段603,空闲DRAM指针所指向的新DRAM条目号被写入逻辑到DTL字段601中指向当前条目的逻辑地址中(步骤1014),实现对当前处理的DRAM条目中各个字段的值和空闲DRAM指针指向的DRAM条目的各个字段值的更新,然后空闲DRAM指针递增(步骤1015),并且可用DRAM单元的数目的计数器递减(步骤1016)用来统计新的可用条目。该过程可依据10D1在图10.4中继续。
在图10.4中,图10.1,图10.2和图10.3的过程继续。图10.2的缓存清理过程在步骤1019中继续。当缓存写入计数器指向的条目设置了数据已满位(步骤508)并且缓存写入计数小于最大缓存写入计数时(步骤1020),则缓存写入指针递增(步骤1021),接着,对于DTL到逻辑表中的下一个DRAM条目,依据10A从图10.1重复该过程。
当缓存写入计数器指向的DRAM条目的数据已满位为0时(步骤1019),或者当缓存写入计数大于最大缓存写入计数时(步骤1020),则缓存写入指针递增(步骤1022),并且自动缓存写入定时器递减(步骤1022)。然后自动缓存写入处理结束。
当主机数据位为0时(步骤1002)(图10.1,依据10D1)或在热数据已被移动到另一个DRAM单元(图10.3,依据10D1)之后,DRAM计数器递增(步骤1017)。当DRAM计数器是大于最大DRAM阈值(步骤1018),则在步骤1022中,缓存写入指针递增,并且自动缓存写入定时器递减。然后自动缓存写入过程结束。
当DRAM计数器不大于最大DRAM阈值时(步骤1018),对于DTL到逻辑表中的另一个DRAM条目,缓存写入指针递增(步骤1021),并且依据10A从图10.1重复该过程。
请参见图11,图11是本发明实施例提供的一种查找可用DRAM条目的流程示意图,具体包括如下步骤:
1101,获取空闲DRAM指针,将空闲DRAM指针递增。
具体的,空闲DRAM指针指向当前处理的空闲DRAM条目,获取该空闲DRAM指针,将该空闲DRAM指针加一。
1102,判断空闲DRAM指针是否大于最大空闲DRAM计数。
具体的,比较空闲DRAM指针和最大空闲DRAM计数,判断空闲DRAM指针是否大于最大空闲DRAM计数,若空闲DRAM指针大于最大空闲DRAM计数,则执行步骤1103;否则,执行步骤1104。其中,最大空闲DRAM计数由GNSD驱动器本身所包含的存储空间决定。
1103,空闲DRAM指针=0。
具体的,清除空闲DRAM指针,将该空闲DRAM指针置为0,即将该空闲DRAM指针指向多个空闲DRAM条目中的第一个DRAM条目。
1104,判断空闲DRAM指针是否小于最小空闲DRAM计数。
具体的,当该空闲DRAM指针小于最小空闲DRAM计数,则执行步骤1105;若该空闲DRAM指针不小于最小空闲DRAM计数,则执行步骤1108。
1105,判断空闲DRAM指针是否小于最大空闲DRAM计数。
具体的,当空闲DRAM指针小于最大空闲DRAM计数,则执行步骤1106;当空闲DRAM指针不小于最大空闲DRAM计数,则执行步骤1108。
1106,搜索未使用或缓存已写入位值为1的DRAM条目。
具体的,控制器通过读取空闲DRAM指针指向的空闲DRAM条目,获取该空闲DRAM条目中的状态字段,若该空闲DRAM条目未使用或状态字段中的缓存已写入位的值为1,则将该空闲DRAM条目加入到空闲DRAM表中。其中,空闲DRAM表用于存储SSD DRAM中可用的多个空闲DRAM条目。继续执行步骤1107。
1107,增加空闲DRAM指针。
具体的,读取上述空闲DRAM条目的下一个空闲DRAM条目,将空闲DRAM指针递增,用于指示该上述空闲DRAM条目的下一个空闲DRAM条目,将空闲DRAM指针指示的空闲DRAM条目作为当前处理的空闲DRAM条目,返回执行步骤1105。
1108,空闲DRAM指针递减。
具体的,将空闲DRAM指针递减,指向该空闲DRAM条目的上一个空闲DRAM条目。
具体的,在空闲DRAM指针降到最小空闲DRAM计数以下之前,不执行步骤1106,若该步骤1106开始执行,则将继续查找未使用或缓存已写入位值为1的空闲DRAM条目,直至空闲DRAM指针达到最大空闲DRAM计数。
本发明实施例提供了又一种可能的实施方式,具体如下所示:
发明人考虑了若干其他实施方式,例如,高级别纠错码/低密度奇偶校验码(ErrorCorrection Code/Low Density Parity Check Code,ECC/LDPC)控制器119可以通过计算LDPC码并将它们存储在备用中来产生ECC保护的附加位来使用ECC或LDPC(低密度奇偶校验)以提供更高级别的数据保护,当受保护的数据读取错误时,比如,数据不能被GNSD控制器10恢复时,可以读取所存储的对应ECC/LDPC码并进行校正。因此,使用像LDPC这样的高效ECC可以提高耐用性。注意,除了诸如LDPC之类的基于图形的编码之外,代数码可以是但不限于BCH(Bose、Ray-Chaudhuri与Hocquenghem的缩写,以发现人命名),Hamming(哈明)和Reed-Solomon(里德-所罗门码)代码。但是,LDPC代码的生成速度往往更快,并且使用与其他代码相比更少的位来保护相同数据量的数据。
Full可能指的是达到了某个阈值。数据类型位和其他状态字段,指针等的许多编码都是可能的。条目可以链接到其他表中的条目,例如具有用于标记或有效位的单独表格。临时文件可以有多种扩展名,新的扩展名可以添加到列表中进行搜索。知名程序(如文字处理程序和互联网浏览器)创建的临时文件具有众所周知的文件扩展名,但可以随时添加其他扩展名。这些额外的文件扩展名可以通过固件更新添加到GNSD和SSD控制器的控制软件,或者通过固件更新到GNSD应用程式101。
其中,固件是指写入可擦写只读存储器(Eraseable Read Only Memory,EROM)或电可擦可编程只读存储器(Electrically Erasable Programmable read only memory,EEPROM)等中的程序。
由DTL的每个部分使用的DRAM缓冲器的大小可以由SSD控制器的固件固定。DTL的每个部分也可以由控制器固件根据用户的使用或偏好自动或手动动态调整。由于DRAM缓冲区的大小有限,并不是所有的DTL功能都可以同时容纳在其中。各种DTL功能可以适应真实的工作环境。控制器可以调整每个DTL使用的大小以优化DRAM缓冲器,自适应调整可以根据设备的使用模式周期性地完成。
对于闪存设备,DRAM缓冲器可以用诸如相变存储器(Phase Change Memory,PCM),铁电随机存取存储器(Ferroelectric Random Access Memory,FRAM),磁阻RAM(Magnetoresistive Random Access Memory,MRAM),忆阻器,相变随机存储器(PhaseChange RAM,PRAM),电阻RAM(Resistance RAM,RRAM),赛道内存(Racetrack内存)和纳米RAM(Nanometer,NRAM)等的非易失性随机访问存储器(No-Volatile Random AccessMemory,NVRAM)。NVRAM的优势在于,所有支持DTL的表格等都可以保留在NVRAM中(无需放入闪存),而其他将写入闪存的数据(如数据写入缓存等)即使断电也会保留,因此即使突然关闭电源,也不再需要备用电源电路。tmp等及映射表,以及读取缓存和映射表可以在掉电时或在下次加电初始化时选择性地丢弃。
在SSD装置中,DRAM缓冲器也可以用诸如DRAM+静态随机存取存储器(StaticRandom-Access Memory,SRAM),DRAM+MLC,DRAM+PCRAM(即PRAM)或DRAM+MRAM的组合代替。当使用DRAM缓冲器的组合(例如DRAM+MLC)时,DTL支持的功能由DRAM管理,但其中一些存储在闪存中。DRAM缓冲区中的一些数据最终可能会被丢弃,例如temp.数据和映射表,以及读取缓存和映射表,这些表在电源关闭时不会写入闪存。关闭电源时需要保留的表格和数据,例如块擦除计数表,页面状态表,S.M.A.R.T.数据采集器等,当电源突然关闭时,需要存储到闪存中。
在服务器应用的情况下,temp数据和映射表以及读取缓存和映射表不能被丢弃;当电源突然关闭时,这些区域将使用备用电源存储到闪存。另一种方法是确保将DRAM的DTL中有效的数据复制到MLC。在关闭电源的情况下,DTL中的有效数据副本可以保存在闪存中。通电时,DTL中的数据可以从闪存装载回DRAM。可以通过记录微小差异来修改复制方法,这会减少复制数据量并因此减少对闪存的写入。
DRAM和多级单元(MLC)或DRAM和单级单元(SLC)不需要使用不同类型的闪存30,例如SLC,MLC,TLC,四级单元(Quad-Level Cell,QLC),PLC,3D NAND等等。相反,通过分配仅具有强编程页的TLC的一部分,可以从三级单元(TLC)中得到MLC。通过分配MLC,TLC,QLC,PLC等仅具有强编程页面的部分,可以从MLC,TLC,QLC,PLC中得到SLC。例如,增强型TLC闪存可以通过把TLC的一部分被配置为SLC(通过强页面)来实现,使用诸如TLC的四分之一用作SLC(强页面)以及剩余的TLC作为TLC(弱页面)。或者TLC的一部分被配置为MLC(强页面)并且剩余的TLC配置为TLC(弱页面)。此外,编程/擦除管理器可能会减慢写入页面并阻止擦除时间,从而延长闪存单元的氧化层寿命。较慢的页面写入/块擦除时间可应用于增强型TLC闪存,以增加耐久性,但会降低保留时间。通过使用缓存写入管理器111,保留时间可以增加。由于包括SLC(强页面)和TLC(弱页面)且具有不同保留时间的增强型TLC闪存,缓存写入管理器111可以跟踪块的使用作为SLC(强页面)或TLC(弱页面),然后调整缓存写入时间相应。或者,增强型TLC闪光可以由被配置为SLC(强页面)使用的TLC的一部分实现,诸如用作SLC(强页面)的TLC的四分之一。类似地,MLC可以用作SLC(强页面)/MLC(弱页面)的组合,并且QLC可以用作诸如SLC(强页面)/QLC(弱页面),MLC(强页面)/QLC(强页面),TLC(强页面)/QLC(强页面)或SLC/MLC/TLC/QLC的任意组合。或者,MLC可以用作SLC(强页面)等,上述功能也可以在GNSD SSD 1中实现。
本文描述的耐久性技术试图解决NAND闪存的耐久性问题。有几种非易失性存储器,如MRAM,PCM,RRAM,忆阻器,NRAM等,它们正在使用竞争技术来取代NAND闪存。
SSD可以与硬盘驱动器(Hard-Disk Drive,HDD)组合,其中SSD作为高速缓存并且HDD作为存储器。GNSD SSD具有很高的续航能力,更适合作为缓存。该混合设备的整体性能可能会提高。另一种确保DRAM的DTL中有效的数据的方法是复制到HDD。在关闭电源的情况下,DTL中的有效数据副本可以保存在HDD中。上电时,DTL中的数据可以从硬盘装载回DRAM。可以通过记录微小差异来修改复制方法,这将减少复制数据量,并因此减少对HDD的写入。
写入数据的分组不限于页面作为单元,分组数据可以放在更大的单元中,例如多页(元页)和整个块等。
尽管主机访问的数据类型的分类已被描述为将来自主机的逻辑地址与一个或多个地址范围进行比较,但该比较可以仅将逻辑地址的一部分与代表地址的范围进行比较范围。数据类型也可以通过解析某些格式的主机写入数据来识别,例如FAT格式或FDB格式。初试的一系列主机写入也可以用来检查其数据格式。FAT文件系统已被用作示例,FDB/FAT是FAT文件系统的元数据。其他文件系统,如LINUX,Apple操作系统(Operating System,OS)和Android等,都有自己的具有不同名称的元数据,但是是等同的。
DRAM单元可以是一个块或几个块的大小,每个区块可以分成多页区域。例如,一个块可能有16个页面和4个区域,每个区域有4个页面。该替代实施例中的一些映射可以用于区域而不是用于单独的页面或块。或者在特殊情况下,每个区域可以有一个页面。区域模式比页面模式需要更少的映射条目,因为每个区域都有多个页面。
来自主机的逻辑扇区地址(Logical Sector Address,LSA)的高位可以选择簇或区域。映射表中的所有条目可以用于同一个区域。当LSA中的区号与映射表中所有条目的区号相匹配时,LSA中的LBA将在映射表中选择一个条目,混合或多级映射表也可以被使用。由于FAT1/2的LBA范围是已知的,因此可以省略表格内容数据类型位“100”。映射表的粒度可以是块或页面。其中,簇为cluster,相邻扇区组合起来形成簇,可能的,可以包括2、4、8、16、32或64等个扇区;粒度指系统内存扩展增量的最小值。
由于在页面模式中非SLC闪存的顺序写入规则比在块模式下更少违反,因此页面映射中的用于重新定位的块的复制较少,这增加了闪存系统的耐用性并提高了性能。
映射表可以位于扩展地址空间中,并且可以使用大于用户地址空间中的最大地址的虚拟地址或非法地址。页面可能保留在主机的页面顺序中,或者可能会重新映射到任何页面位置。在诸如用于数据中心应用的另一个实施例中,页面文件和临时文件可以被视为普通用户数据以简化控制器操作,但要消耗闪存耐久性。耐用备用/交换区域可以通过使用DRAM缓冲器作为耐用备用/交换缓冲器而不是使用闪存来提供扩展的超额容量。在主机已提供压缩功能的情况下,可以选择关闭压缩功能。在其他实施方案中,控制器可能将页面文件视为用户数据文件来简化控制器功能。
框图的许多变化是可能的。诸如EEPROM的ROM可以连接到控制器或作为控制器的一部分,并专用于存储用于虚拟存储处理器的固件。该固件也可以存储在主闪存模块中,主机接口总线可以是串行高级技术附件(Serial Advanced Technology Attachment,SATA)总线、外围组件互连高速(Peripheral Component Interconnection express,PCIe)总线、紧凑型闪存(Compact flash memory,CF)总线或通用串行总线(Universal Serial Bus,USB)非易失性存储规范(Non-Volatile Memory express,NVMe)、火线1394总线、光纤通道(Fibre Channel,FC)总线和雷电接口等。内部总线可以使用诸如用于串行AT附件(SATA)总线,集成开发环境(Integrated Development Environment,IDE)总线,外围组件互连高速(PCIe)总线,紧凑型闪存(CF)总线,通用串行总线(USB),安全数字(Secure Digital,SD)总线,多媒体卡(Multimedia card,MMC)总线,火线1394总线,光纤通道(FC)总线,各种以太网总线等。集成SATA闪存驱动器(Combo SATA Flash Drive,CSFD)只能包含SLC或MLC闪存,或者是组合SLC/MLC闪存。
闪存可以嵌入在主板或SSD板上,或者可以位于单独的模块上。可能会添加电容器,缓冲器,电阻器和其他组件。控制器可以集成在主板上或单独的板或模块上。闪存可以与控制器集成,也可以与原始NAND闪存芯片集成为单芯片器件或插入式模块或电路板。
使用多级控制器,诸如在控制器的主要管理器布置中,GNSD SSD中的控制器如果没有被要求做诸如损耗均衡、坏块管理、重新映射、缓存和电源管理等单个控制,就会相对简单。控制器中可以使用较便宜的硬件,例如使用8051处理器作为控制器或虚拟存储处理器或事务管理器,而不是更强大的处理器核心,例如一个高级的精简指令集计算机(Reduced Instruction Set Computer,RISC)机器高级RISC微处理器(Advanced RISCMachine-9Central Processing Unit,ARM-9CPU)内核。对于某些应用程式,会考虑更强大的处理器。
连接到GNSD SSD的也可以是其他数量和排列的闪存块。除了使用LBA存储总线接口或差分串行数据包总线,其他串行总线还有同步双数据速率(Double Data Rate,DDR),开放式NAND快闪存储器接口(Open Nand Flash Interface,ONFI),Toggle NAND,差分串行数据包数据总线,传统闪存接口等其他串行总线。
事务管理器,控制器,处理过程和函数可以以多种方式来实现。函数和处理过程可以通过嵌入式CPU或其他处理器进行编程和执行,也可以通过专用硬件,固件或某种组合来实现。函数的许多部分可以被替换,GNSD SSD控制器可以是硬件,或者可以包括固件或软件或其他组合。
通过采用具有多个闪存通道的奇偶校验/ECC并将数据段剥离成多个非易失性存储规范(Non-Volatile Memory,NVM)块,总体系统可靠性得到极大改善。例如,第九块闪存芯片可以与闪存接口一起使用。其他八个闪存芯片的奇偶校验写入到第九个闪存芯片,以便在八个闪存芯片中的一个遇到致命的读取错误时提供额外的数据保护。但是,为了满足复杂的ECC/奇偶校验计算和生成的计算能力要求,可能需要使用带有双数据速率/同步动态随机存储器(Double Data Rate/Synchronous Dynamic Random Access Memory,DDR/SDRAM)高速缓存的CPU引擎。另一个好处是,即使一个闪存模块或闪存模块损坏,数据仍可恢复,或者GNSD SSD可启动“故障恢复”或“自动重建”过程来插入新的闪存模块,并恢复或重建“丢失”或“损坏”的数据。整个系统容错性得到显著改善。
闪存单元的浮置栅极通过向其中注入电子而被编程。闪存控制页面写入时的电子注入,使其保持在两个参考电压电平内。NAND闪存结构的位线连接到一串32个单元,每个单元也连接到32个不同的字线。单元写入数据后,任何对相邻单元的写入和读取都会对单元造成干扰。干扰将从电池的浮动栅极注入或移除电子,很长一段时间的积累也会影响电池浮栅中的电子数量。由于浮置栅极中电子数量的变化,读取时输出电压电平会相应改变。如果输出电压电平的移动越过了参考电压边界,则读取结果将会是错误的。
其他替代方案也可以是更宽或更窄的数据总线和闪存芯片,例如具有16位或32位的数据通道。具有嵌套或分段总线的其他总线架构可以在GNSD SSD内部或外部使用。GNSDSSD中可以使用两个或更多内部总线来提高吞吐量,更复杂的交换结构可以替代内部或外部总线。
数据条带化可以以各种方式完成,如奇偶校验和纠错码(ECC)一样。分组重新排序可以根据用于防止对重叠存储位置重新排序的数据整理进行调整。GNSD SSD可以与其他组件集成,也可以是独立芯片。
额外的管道或临时缓冲区和先进先出管道可以被添加。可以在每个通道中提供单独的页面缓冲区,时钟脉冲源可以被添加。
单个封装,单个芯片或多芯片封装可以包含闪存和/或GNSD SSD或SSD的多个通道中的一个或多个通道。本技术不限于使用SCFD,SCFD可以用具有非易失性闪存和控制器的任何类型的非易失性设备替代。
基于MLC的闪存器件可以具有四个并行双通道数据的MLC闪存芯片,但是可以使用不同的组合来形成其他闪存模块,例如四个,八个或更多个数据通道,或八个,十六个或更多个更多的MLC芯片。闪存设备和通道可能在链中,分支或阵列中。例如,4个闪存设备的一个分支可以作为链条连接到GNSD SSD,其他大小的组合或分区方案可以用于存储器的不同访问方式。
主机可以是台式个人计算机(personal computer,PC)主板或其他PC平台,例如服务器、笔记本、上网本、平板电脑、智能电话、移动通信设备、个人数字助理(PersonalDigital Assistant,PDA)、数码相机、生产工具或测试仪、组合装置或其他装置。主机总线或主机设备接口可以是SATA,PCIE,雷电接口(Thunderbolt),SD,USB,NVMe,嵌入式多媒体卡(Embedded Multi Media Card,eMMC),集成固态驱动器(integrated SolidState Drive,iSSD)或其他主机总线,而闪存模块的内部总线可以是并行先进技术附件(ParallelAdvanced Technology Attachment,PATA),使用多个SD/MMC的多通道SSD,紧凑型闪存(CF),USB或其他并行接口。闪存模块可以是标准印制电路板(Printed CircuitBoard,PCB),也可以是封装在薄型小尺寸封装(Thin Small Outline Package,TSOP),焊球阵列封装(Ball Grid Array,BGA),栅格阵列封装(Land Grid Array,LGA),板上芯片封装(Chips on Board,COB),堆叠封装(Product In Package,PIP),系统级封装(System In aPackage,SIP),芯片级封装(Chip Scale Package,CSP),堆叠组装(Package on Package,POP)或多芯片封装(Multichip Packaging,MCP)封装中的多芯片模块,也可以是包含了多个NAND闪存芯片或原始NAND闪存芯片作为单独的闪存芯片,也可以是其他类型的NVM闪存(如触发器,ONFI,eMMC,iSSD,3D NAND)。GNSD SSD可能会使用带有RAID的eMMC,并且eMMC可能会使用GNSD SSD结构。内部总线可以完全或部分共享,也可以是独立的总线。SSD系统可以使用具有其他组件的电路板,例如发光二极管(Light-Emitting Diode Light,LED)指示器,电容器,电阻器等。可以在一个或多个级别添加电源管理。GNSD SSD可以使用或不使用虚拟存储设备(Virtual-Memory Device,VMD)驱动程式。PCIe RAID DRAM缓存卡可以整合了VMD驱动程式和多个GNSD SSD结构化SSD。
诸如上部、下部、上部、下部、顶部、底部等的方向术语在系统或数据被旋转,翻转等时是相对和可改变的。这些术语对于描述设备是有用的,但并不打算做绝对的。
NVM闪存可以位于闪存模块上,该闪存模块可以具有封装控制器和闪存芯片在单个芯片封装中,其可以集成到印刷电路板+组件(Printed Circuit Board+Assembly,PCBA)上,或者直接集成到主板上以进一步简化组装,降低制造成本和降低整体厚度。闪存芯片也可以用于包括开放式帧卡的其他实施例。
除了使用仅仅控制闪存存储器的控制器,可以添加附加的功能。例如,音乐播放器可能包含了可以播放存储在闪存中的MP3数据的音频的控制器。可以将音频插孔添加到设备,以允许用户插入耳机来听音乐。无线发射器(如蓝牙发射器)可能会添加到设备中以连接到无线耳机,而不是使用音频插孔。红外发射器例如红外线进行点对点通信的技术(Infrared Data Association,IrDA)也可能被添加。蓝牙收发器到无线鼠标、PDA、键盘、打印机、数码相机、MP3播放器或其他无线设备也可能被添加。蓝牙收发器可以将连接器替换为主连接器。蓝牙适配器装置可以具有连接器、射频(Radio Frequency,RF)收发器、基带控制器、天线、闪存(EEPROM)、电压调节器、晶体、发光二极管(Light-Emitting Diode,LED)、电阻器、电容器和电感器。这些组件可能被封装在塑料或金属外壳中之前安装在PCB上。
诸如扇区、页面、块的数据的大小可以变化。作为众多例子之一,一个扇区可能有512个字节,一个页面可能有16个扇区,而一个块可能有128个页面。
作为备选的,DTL中的写入数据可以由闪存控制器作为页面单元逐个打包并记录到数据写入高速缓存表。来自主机的打包数据大小可以是诸如超过元页面单元的大尺寸或诸如小于扇区的小尺寸。添加一个头部,显示数据与主机LBA的关系。单独的打包表将主机的LBA映射到数据写入缓存的元页单元中的数据和头的偏移位置。数据写入缓存的容量可以是两个以上的元页面单元。当数据写入缓存已满或已到达预设时间时,选定的元页面单元将从数据写入缓存移至闪存。打包表将主机LBA映射到闪存的元页单元中的数据和标题的偏移位置。在重复写入主机数据的例子中,如果打包数据仍然在数据写入缓存中,则可以通过向上移动打包数据并将新的更新数据附加到数据写入缓存中并更新打包表格来丢弃旧数据。否则,如果打包数据位于闪存中,则会比较新旧数据,并生成增量数据以显示差异。增量数据及其标题将被追加到数据写入缓存中。新的标题还将包含以前的旧数据位置。打包表将把LBA映射到增量数据位置。
本发明实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本发明实施例提供的方法及相关装置是参照本发明实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
实施本发明实施例,将具有如下有益效果:
采用了控制器控制主机写入数据和主机读取数据的写入、读写操作,通过对频繁访问数据和不频繁访问数据采取不同的操作,并根据映射表条目中各个组成单元的值,包括逻辑到DTL字段、DTL到逻辑字段、状态字段、扇区计数字段及扇区有效位图,实现对SSDDRAM中存储的有效数据的管理,从而减少对闪存中存储数据的读写次数,减少闪存的程序擦除周期,进而提高闪存的耐用性。
所描述的任何优点和益处可能不适用于本发明的所有实施例。当在权利要求要素中引用单词“方法”时,申请人希望权利要求要素落入35USC Sect.112,第6段。通常,一个或多个单词的标签在单词“方法”之前。在术语“方法”之前的单词或单词是旨在便于参考权利要求要素的标签,并非意在表达结构上的限制。这种方法加功能的权利要求旨在不仅覆盖这里描述的用于执行该功能及其结构等同物,而且覆盖等同的结构。例如,虽然钉子和螺钉具有不同的结构,但它们都具有等同的结构,因为它们都具有紧固功能。不使用“手段”一词的声明不打算属于35USC Sect.112,第6段。信号通常是电子信号,但也可以是光信号,例如可以通过光纤线传送。
以上所揭露的仅为本发明较佳实施例而已,这并不意味着穷举或将本技术限制到所公开的确切形式。考虑到上述教义,许多修改和变化是可能的。意图是本技术的范围不受该详细描述的限制,而应是受所附权利要求的限制。
Claims (21)
1.一种绿能NAND固态驱动器(GNSD)设备,其特征在于,所述设备包括:
闪存存储器,用于存储第一数据;
闪存转换层,用于访问所述闪存存储器;
固态驱动器(SSD)动态随机存取存储器(DRAM),用于存储映射表和第二数据,其中,所述固态驱动器动态随机存储器包括用于控制对所述SSD DRAM的访问的DRAM翻译层(DTL);
GNSD控制器,包括:
存储器管理器,用于管理所述映射表,当主机读取和写入主机数据时访问映射表,所述映射表用于指示所述主机数据在所述SSD DRAM以及何时所述主机数据仅驻留在闪存存储器中;
所述GNSD控制器,用于响应主机读取/写入主机数据,执行读取/写入控制例程,所述读取/写入控制例程用于确定所述映射表中的可用DRAM条目的数量。
2.如权利要求1所述的GNSD设备,其特征在于,所述设备还包括:
映射表,用于管理对所述SSD DRAM的访问;
所述映射表包括:
逻辑到DTL表,包括根据主机接收的逻辑地址确定的多个条目,每个条目包含DTL指针;
DTL到逻辑表,包括多个由所述DTL指针选择的DRAM条目;
其中,所述多个DRAM条目中的每一个DRAM条目都包含存储在所述SSDDRAM中的多个扇区。
3.如权利要求1所述的GNSD设备,其特征在于,
所述读取/写入控制例程,还用于将所述映射表中的可用DRAM条目的数量与第一阈值和第二阈值进行比较;
其中,当所述可用DRAM条目的数量同时低于所述第一阈值和所述第二阈值时,所述GNSD控制器用于增加所述可用DRAM条目的数量,直到所述映射表中可存储所述新主机写入数据的可用DRAM条目的数量大于所述第二阈值为止;
所述增加所述可用DRAM条目的数量包括:
在所述映射表中搜索可更改为存储新主机写入数据的可用DRAM条目的目标DRAM条目,通过更改所述目标DRAM条目及对应的扇区数据创建新的可用DRAM条目,同时为创建的每个新的可用DRAM条目增加所述映射表中可存储新主机写入数据的可用DRAM条目的数量;
其中,所述第二阈值大于所述第一阈值。
4.如权利要求1所述的GNSD设备,其特征在于,所述设备还包括:
自动缓存写入计时器,用于控制自动缓存写入例程;
所述控制器,还用于对所述自动缓存写入计时器进行响应,执行所述自动缓存写入例程,将所述SSD DRAM中的主机数据缓存写入到所述闪存存储器中,以增加可用于存储新主机写入数据的可用DRAM条目的数量。
5.如权利要求2所述的GNSD设备,其特征在于,所述DTL到逻辑表中的每个DRAM条目包括:
DTL到逻辑字段,用于存储从主机接收到的逻辑地址,通过所述逻辑地址选择所述逻辑到DTL表中的匹配条目,所述匹配条目用于存储所述DTL指针,所述DTL指针用于指示所述DTL到逻辑表中所述DRAM条目;
状态字段,用于指示所述DRAM条目存储的所述第二数据的存储状态;
扇区有效位图,包含多个扇区有效位,每个扇区有效位用于指示所述DRAM条目存储的每个扇区的有效性;
扇区计数字段,用于指示所述DRAM条目中存储的有效扇区的数量;
其中,所述扇区计数字段与所述扇区有效位图中处于有效状态的扇区有效位的总数相等。
6.如权利要求5中所述的GNSD设备,其特征在于,所述状态字段包括:
主机数据位,用于指示所述主机数据已经被写入所述SSD DRAM中的所述DRAM条目;
重写_1位,用于指示所述DRAM条目发生第二次主机写入操作;
重写_2位,用于指示所述DRAM条目发生第三次或以上主机写入操作。
7.如权利要求6所述的GNSD设备,其特征在于,所述存储器管理器在需要增加可用DRAM条目以用于存储新的主机数据时,将所述重写_2位被设置的DRAM条目中存储的主机数据保存在所述SSD DRAM中,将所述重写_2位未被设置的DRAM条目中存储的主机数据写入所述闪存存储器。
8.如权利要求5所述的GNSD设备,其特征在于,所述状态字段还包括:
数据有效位,用于指示所述DRAM条目可以用于存储主机数据;
空队列位,用于指示所述DRAM条目中待写入主机数据;
缓存已写入位,用于指示所述DRAM条目的主机数据已经被写入所述闪存存储器;
数据已满位,用于指示所述DRAM条目中的所有扇区已经被写入主机数据。
9.如权利要求1所述的GNSD设备,其特征在于,所述设备还包括:
数据写入缓存,用于缓存主机写入数据;
数据读取缓存,用于缓存主机读取数据;
数据分组引擎,用于将存储在所述数据写入缓存中的数据分组为元页面;
分组还原引擎,用于将存储为所述元页面的数据分组还原成未分组数据以存储在所述数据读取缓存中;
其中,所述元页面会被所述数据分组引擎传送到所述闪存存储器,并且由所述分组还原引擎接收存储在所述闪存存储器中的元页面。
10.一种绿能NAND固态驱动器(GNSD)控制器,其特征在于,所述控制器包括:
存储器管理器,用于访问具有由所述存储器管理器管理的多个缓冲器的固态驱动器(SSD)DRAM;
所述SSD DRAM包括:
数据写入缓存,用于存储主机写入数据;
数据读取缓存,用于存储主机读取数据;
映射表,用于管理对所述SSD DRAM的访问,所述映射表包括:
逻辑到DTL表,用于存储根据主机接收的逻辑地址确定的多个条目,每个条目包含DTL指针;
DTL到逻辑表,用于存储多个由所述DTL指针选择的DRAM条目;
其中,所述多个DRAM条目中的每一个DRAM条目都包含存储在所述SSDDRAM中的多个扇区。
11.如权利要求10所述的GNSD控制器,其特征在于,所述DTL到逻辑表中的每个DRAM条目包括:
DTL到逻辑字段,用于存储从主机接收到的逻辑地址,通过所述逻辑地址选择所述逻辑到DTL表中的匹配条目,所述匹配条目存储用于指示所述DTL到逻辑表中所述DRAM条目的DTL指针;
状态字段,用于指示所述DRAM条目存储的主机数据的状态;
扇区有效位图,包含多个扇区有效位,其中,每个扇区有效位用于指示所述DRAM条目存储的每个扇区的有效性;
扇区计数字段,用于指示所述DRAM条目存储的有效扇区的数量;
其中,所述扇区计数字段与所述扇区有效位图中处于有效状态的扇区有效位的总数相等。
12.如权利要求11所述的GNSD控制器,其特征在于,所述状态字段包括:
数据有效位,用于指示所述DRAM条目可以用于存储主机数据;
空队列位,用于指示所述DRAM条目对应的多个扇区中未存储数据;
缓存已写入位,用于指示所述DRAM条目的主机数据已经被复制到闪存存储器;
主机数据位,用于指示所述主机数据已经被写入所述SSD DRAM中的所述DRAM条目;
数据已满位,用于指示所述DRAM条目中的所有扇区已经被写入了主机数据。
13.如权利要求11所述的GNSD控制器,其特征在于,所述状态字段还包括:
重写_1位,用于指示所述DRAM条目发生第二次主机写入操作;
重写_2位,用于指示所述DRAM条目发生第三次或以上主机写入操作。
14.如权利要求13所述的GNSD控制器,其特征在于,所述存储器管理器在需要增加可用DRAM条目以用于存储新的主机数据时,将所述重写_2位被设置的DRAM条目中存储的主机数据保存在所述SSD DRAM中,将所述重写_2位未被设置的DRAM条目中存储的主机数据写入所述闪存存储器。
15.如权利要求10所述的GNSD控制器,其特征在于,所述控制器还包括:
电源/CPU监视器,用于检测所述控制器所在驱动器的电源不足;
缓存写入/恢复管理器,用于在断电时将存储在所述SSD DRAM中的主机数据缓存写入到所述闪存存储器中;
恢复管理器,用于恢复电源时从所述闪存存储器中将缓存写入的主机数据提取到所述SSD DRAM。
16.如权利要求10所述的GNSD控制器,其特征在于,所述SSD DRAM还包括:
DRAM翻译层(DTL),所述DTL包括:
管理临时文件的映射表、管理日志文件的映射表,管理分页文件的映射表和管理提取数据的映射表、数据写入高速缓存表、读取高速缓存区域、FAT/子映射表、FDB/子映射表及块擦除计数表。
17.如权利要求10所述的GNSD控制器,其特征在于,所述控制器还包括:
事务处理系统,用于记录指示主机数据写入所述闪存存储器的开始和完成的事件;
恢复管理器,用于读取所述事务处理系统记录的事件,以在恢复供电后撤消或重新将主机数据写入所述闪存存储器。
18.一种集成的绿能NAND固态驱动器(GNSD)控制器,其特征在于,所述控制器包括:
存储器管理器,用于控制对固态驱动器(SSD)动态随机存取存储器(DRAM)的访问的DRAM翻译层(DTL);
映射表,用于管理对所述SSD DRAM的访问,所述映射表包括:
逻辑到DTL表,用于存储根据主机接收的逻辑地址确定的多个条目,每个条目包含一个DTL指针;
DTL到逻辑表,用于存储多个由所述DTL指针选择的DRAM条目;
其中,所述多个DRAM条目中的每一个DRAM条目都包含存储在所述SSDDRAM中的多个扇区;
其中所述DTL到逻辑表中的每个DRAM条目包括:
DTL到逻辑字段,用于存储从主机接收到的逻辑地址,通过所述逻辑地址的选择上述逻辑到DTL表中的匹配条目,所述匹配条目用于存储指示所述DTL到逻辑表中所述DRAM条目的DTL指针;
状态字段,用于指示所述DRAM条目存储的主机数据的存储状态;
扇区有效位图,包含多个扇区有效位,每个扇区有效位用于指示所述DRAM条目存储的每个扇区的有效性;
扇区计数字段,用于指示所述DRAM条目中存储的有效扇区的数量;
其中,所述扇区计数字段与所述扇区有效位图中处于有效状态的扇区有效位的总数相等;
其中,所述状态字段包括:
数据有效位,用于指示所述DRAM条目可以用于存储主机数据;
空队列位,用于指示所述DRAM条目随时准备被写入主机数据;
缓存已写入位,用于指示所述DRAM条目的主机数据已经被复制到闪存存储器;
主机数据位,用于指示所述主机数据已经被写入所述SSD DRAM中的所述DRAM条目;
数据已满位,用于指示所述DRAM条目中的所有扇区已经被写入了主机数据;
重写_1位,用于指示所述DRAM条目发生第二次主机写入操作;
重写_2位,用于指示所述DRAM条目发生第三次或以上主机写入操作;
其中,所述存储器管理器在需要增加可用DRAM条目、以用于存储新的主机数据时,将所述重写_2位被设置的DRAM条目中存储的主机数据保存在所述SSD DRAM中,将所述重写_2位未被设置的DRAM条目中存储的主机数据写入所述闪存存储器。
19.如权利要求18所述的集成GNSD控制器,其特征在于,所述控制器还包括:
数据写入缓存,用于存储主机写入数据;
数据读取缓存,用于存储主机读取数据;
数据分组引擎,用于将存储在所述数据写入缓存中的数据分组为元页面;
分组还原引擎,用于将存储为所述元页面的数据分组还原成未分组数据以存储在所述数据读取缓存中;
其中,所述元页面会被所述数据分组引擎发送到卷管理器以传送到所述闪存存储器,并且由所述分组还原引擎接收存储在所述闪存存储器中的元页面;
文件优先级标签分类器,用于为接收到的主机写入数据生成对应的数据类型;
文件优先排序,用于对主机写入的数据进行优先级排序;
任务优先分配器,用于为包括通过所述数据类型写入主机写入数据的任务分配优先级,其中所述优先级通过所述文件优先级标签分类器的数据类型计算函数得到;
性能调节器,用于调整任务的优先级;
目标分配器,用于根据数据类型将数据发送到数据写入缓存。
20.如权利要求18所述的集成GNSD控制器,其特征在于,所述控制器还包括:
事务处理系统,用于记录指示主机数据写入所述闪存存储器的开始和完成的事件;
缓存写入/恢复管理器,用于在断电时将存储在所述SSD DRAM中的主机数据缓存写入到所述闪存存储器;
恢复管理器,用于重新加载程序,在恢复电源时从所述闪存存储器中将缓存写入的主机数据提取到所述SSD DRAM。
21.如权利要求18所述的集成GNSD控制器,其特征在于,所述控制器还包括:
加密器和解密器,两者组合起来用于实现接收主机写入数据,产生加密的主机数据以及解密已加密的主机数据的功能;
压缩/解压缩引擎,用于实现接收主机写入数据,生成压缩数据以及解压缩已压缩的主机数据的功能。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910156909.9A CN109992530A (zh) | 2019-03-01 | 2019-03-01 | 一种固态驱动器设备及基于该固态驱动器的数据读写方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910156909.9A CN109992530A (zh) | 2019-03-01 | 2019-03-01 | 一种固态驱动器设备及基于该固态驱动器的数据读写方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109992530A true CN109992530A (zh) | 2019-07-09 |
Family
ID=67130081
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910156909.9A Pending CN109992530A (zh) | 2019-03-01 | 2019-03-01 | 一种固态驱动器设备及基于该固态驱动器的数据读写方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109992530A (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110989927A (zh) * | 2019-11-11 | 2020-04-10 | 宜鼎国际股份有限公司 | 具备有可自我存取档案数据能力的数据储存装置 |
CN111177034A (zh) * | 2019-12-27 | 2020-05-19 | 鸿秦(北京)科技有限公司 | 一种固态硬盘的自适应ftl算法 |
CN111597129A (zh) * | 2020-05-21 | 2020-08-28 | 北京泽石科技有限公司 | 缓存管理方法、装置、存储介质和固态非易失存储设备 |
CN112035294A (zh) * | 2020-08-25 | 2020-12-04 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 安全日志文件系统及其实现方法和介质 |
CN112115077A (zh) * | 2020-08-31 | 2020-12-22 | 瑞芯微电子股份有限公司 | 一种dram内存驱动优化方法和装置 |
CN112486870A (zh) * | 2020-11-16 | 2021-03-12 | 深圳宏芯宇电子股份有限公司 | 计算机系统及计算机系统控制方法 |
CN113064558A (zh) * | 2021-06-04 | 2021-07-02 | 广东汇天航空航天科技有限公司 | 一种数据存储方法和装置 |
CN113535089A (zh) * | 2020-05-22 | 2021-10-22 | 长江存储科技有限责任公司 | 用于ssd的映射表的刷新方法 |
CN113590044A (zh) * | 2021-07-30 | 2021-11-02 | 深圳市新威尔电子有限公司 | 电池测试数据存储方法 |
CN113885808A (zh) * | 2021-10-28 | 2022-01-04 | 合肥兆芯电子有限公司 | 映射信息记录方法以及存储器控制电路单元与存储装置 |
CN114077559A (zh) * | 2020-08-11 | 2022-02-22 | 慧荣科技股份有限公司 | 存储装置的存取管理的方法及设备 |
US11302378B2 (en) | 2020-07-07 | 2022-04-12 | International Business Machines Corporation | Semiconductor circuit including an initialization circuit for initializing memory cells and clearing of relatively large blocks of memory |
CN114527942A (zh) * | 2022-02-21 | 2022-05-24 | 苏州浪潮智能科技有限公司 | 一种基于固态硬盘的写数据方法、系统、存储介质及设备 |
CN114692229A (zh) * | 2022-03-30 | 2022-07-01 | 中国电信股份有限公司 | 硬盘无权访问检测方法、装置、计算机设备和存储介质 |
CN114721844A (zh) * | 2022-03-10 | 2022-07-08 | 云和恩墨(北京)信息技术有限公司 | 数据缓存方法和装置、计算机设备、存储介质 |
US11557335B2 (en) | 2020-07-07 | 2023-01-17 | International Business Machines Corporation | Erasing a partition of an SRAM array with hardware support |
CN115758206A (zh) * | 2022-11-07 | 2023-03-07 | 武汉麓谷科技有限公司 | 一种快速查找ZNS固态硬盘中NorFlash上次写结束位置的方法 |
CN116775507A (zh) * | 2023-08-23 | 2023-09-19 | 四川云海芯科微电子科技有限公司 | 固态硬盘控制器垃圾回收中的硬件加速选块方法及装置 |
CN117971741A (zh) * | 2024-03-29 | 2024-05-03 | 苏州元脑智能科技有限公司 | 互连链路的控制方法及装置、存储介质及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101122887A (zh) * | 2007-01-17 | 2008-02-13 | 晶天电子(深圳)有限公司 | 一种采用数据区域切换指针缓冲硬盘驱动器的闪存卡 |
CN105404468A (zh) * | 2014-11-17 | 2016-03-16 | 晶天电子(深圳)有限公司 | 绿能与非固态硬盘应用及其驱动器 |
US20160139982A1 (en) * | 2008-06-18 | 2016-05-19 | Frank Yu | Green nand ssd application and driver |
-
2019
- 2019-03-01 CN CN201910156909.9A patent/CN109992530A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101122887A (zh) * | 2007-01-17 | 2008-02-13 | 晶天电子(深圳)有限公司 | 一种采用数据区域切换指针缓冲硬盘驱动器的闪存卡 |
US20160139982A1 (en) * | 2008-06-18 | 2016-05-19 | Frank Yu | Green nand ssd application and driver |
CN105404468A (zh) * | 2014-11-17 | 2016-03-16 | 晶天电子(深圳)有限公司 | 绿能与非固态硬盘应用及其驱动器 |
Cited By (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110989927B (zh) * | 2019-11-11 | 2024-03-01 | 宜鼎国际股份有限公司 | 具备有可自我存取档案数据能力的数据储存装置 |
CN110989927A (zh) * | 2019-11-11 | 2020-04-10 | 宜鼎国际股份有限公司 | 具备有可自我存取档案数据能力的数据储存装置 |
CN111177034A (zh) * | 2019-12-27 | 2020-05-19 | 鸿秦(北京)科技有限公司 | 一种固态硬盘的自适应ftl算法 |
CN111597129A (zh) * | 2020-05-21 | 2020-08-28 | 北京泽石科技有限公司 | 缓存管理方法、装置、存储介质和固态非易失存储设备 |
CN113535089A (zh) * | 2020-05-22 | 2021-10-22 | 长江存储科技有限责任公司 | 用于ssd的映射表的刷新方法 |
CN113535089B (zh) * | 2020-05-22 | 2024-05-17 | 长江存储科技有限责任公司 | 用于ssd的映射表的刷新方法 |
US11557335B2 (en) | 2020-07-07 | 2023-01-17 | International Business Machines Corporation | Erasing a partition of an SRAM array with hardware support |
US11302378B2 (en) | 2020-07-07 | 2022-04-12 | International Business Machines Corporation | Semiconductor circuit including an initialization circuit for initializing memory cells and clearing of relatively large blocks of memory |
US11797194B2 (en) | 2020-08-11 | 2023-10-24 | Silicon Motion, Inc. | Method and apparatus for performing access management of memory device in host performance booster architecture with aid of device side table information |
CN114077559B (zh) * | 2020-08-11 | 2023-08-29 | 慧荣科技股份有限公司 | 存储装置的存取管理的方法及设备 |
CN114077559A (zh) * | 2020-08-11 | 2022-02-22 | 慧荣科技股份有限公司 | 存储装置的存取管理的方法及设备 |
CN112035294A (zh) * | 2020-08-25 | 2020-12-04 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 安全日志文件系统及其实现方法和介质 |
CN112035294B (zh) * | 2020-08-25 | 2023-12-29 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 安全日志文件系统及其实现方法和介质 |
CN112115077B (zh) * | 2020-08-31 | 2022-04-19 | 瑞芯微电子股份有限公司 | 一种dram内存驱动优化方法和装置 |
CN112115077A (zh) * | 2020-08-31 | 2020-12-22 | 瑞芯微电子股份有限公司 | 一种dram内存驱动优化方法和装置 |
CN112486870A (zh) * | 2020-11-16 | 2021-03-12 | 深圳宏芯宇电子股份有限公司 | 计算机系统及计算机系统控制方法 |
CN113064558B (zh) * | 2021-06-04 | 2021-09-17 | 广东汇天航空航天科技有限公司 | 一种数据存储方法和装置 |
CN113064558A (zh) * | 2021-06-04 | 2021-07-02 | 广东汇天航空航天科技有限公司 | 一种数据存储方法和装置 |
CN113590044A (zh) * | 2021-07-30 | 2021-11-02 | 深圳市新威尔电子有限公司 | 电池测试数据存储方法 |
CN113885808A (zh) * | 2021-10-28 | 2022-01-04 | 合肥兆芯电子有限公司 | 映射信息记录方法以及存储器控制电路单元与存储装置 |
CN113885808B (zh) * | 2021-10-28 | 2024-03-15 | 合肥兆芯电子有限公司 | 映射信息记录方法以及存储器控制电路单元与存储装置 |
CN114527942A (zh) * | 2022-02-21 | 2022-05-24 | 苏州浪潮智能科技有限公司 | 一种基于固态硬盘的写数据方法、系统、存储介质及设备 |
CN114527942B (zh) * | 2022-02-21 | 2023-06-06 | 苏州浪潮智能科技有限公司 | 一种基于固态硬盘的写数据方法、系统、存储介质及设备 |
CN114721844B (zh) * | 2022-03-10 | 2022-11-25 | 云和恩墨(北京)信息技术有限公司 | 数据缓存方法和装置、计算机设备、存储介质 |
CN114721844A (zh) * | 2022-03-10 | 2022-07-08 | 云和恩墨(北京)信息技术有限公司 | 数据缓存方法和装置、计算机设备、存储介质 |
CN114692229B (zh) * | 2022-03-30 | 2023-11-10 | 中国电信股份有限公司 | 硬盘无权访问检测方法、装置、计算机设备和存储介质 |
CN114692229A (zh) * | 2022-03-30 | 2022-07-01 | 中国电信股份有限公司 | 硬盘无权访问检测方法、装置、计算机设备和存储介质 |
CN115758206A (zh) * | 2022-11-07 | 2023-03-07 | 武汉麓谷科技有限公司 | 一种快速查找ZNS固态硬盘中NorFlash上次写结束位置的方法 |
CN116775507A (zh) * | 2023-08-23 | 2023-09-19 | 四川云海芯科微电子科技有限公司 | 固态硬盘控制器垃圾回收中的硬件加速选块方法及装置 |
CN116775507B (zh) * | 2023-08-23 | 2023-10-20 | 四川云海芯科微电子科技有限公司 | 固态硬盘控制器垃圾回收中的硬件加速选块方法及装置 |
CN117971741A (zh) * | 2024-03-29 | 2024-05-03 | 苏州元脑智能科技有限公司 | 互连链路的控制方法及装置、存储介质及电子设备 |
CN117971741B (zh) * | 2024-03-29 | 2024-05-28 | 苏州元脑智能科技有限公司 | 互连链路的控制方法及装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109992530A (zh) | 一种固态驱动器设备及基于该固态驱动器的数据读写方法 | |
US9547589B2 (en) | Endurance translation layer (ETL) and diversion of temp files for reduced flash wear of a super-endurance solid-state drive | |
US10838859B2 (en) | Recency based victim block selection for garbage collection in a solid state device (SSD) | |
TWI506431B (zh) | 虛擬記憶體設備驅動器、用於在主機上執行之虛擬記憶體設備驅動器、刷新快閃記憶體的方法、快閃記憶體刷新的方法、超級增強耐力設備硬碟固體狀態驅動機耐用轉換層之方法、超級增強耐力設備及耐力快閃記憶體檔案系統 | |
US8959280B2 (en) | Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear | |
US10430084B2 (en) | Multi-tiered memory with different metadata levels | |
US10102119B2 (en) | Garbage collection based on queued and/or selected write commands | |
US9548108B2 (en) | Virtual memory device (VMD) application/driver for enhanced flash endurance | |
Hu et al. | Write amplification analysis in flash-based solid state drives | |
US8954654B2 (en) | Virtual memory device (VMD) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of temp files to ramdisks for enhanced flash endurance | |
US9563549B2 (en) | Data storage device, user device and data write method | |
US8910017B2 (en) | Flash memory with random partition | |
CN104303162B (zh) | 用于管理缓存接纳的系统和方法 | |
US20180089074A1 (en) | Techniques to Manage Key-Value Storage at a Memory or Storage Device | |
CN102646069B (zh) | 一种延长固态盘使用寿命的方法 | |
US20190294345A1 (en) | Data-Retention Controller Using Mapping Tables in a Green Solid-State-Drive (GNSD) for Enhanced Flash Endurance | |
US20140095775A1 (en) | Systems and methods for cache endurance | |
Margaglia et al. | The Devil Is in the Details: Implementing Flash Page Reuse with {WOM} Codes | |
DE102013106242A1 (de) | Halbleiterlaufwerk mit Konvertierungsschicht (ETL) und Umleitung von temporären Dateien zur Verschleissminderung von Flashspeichern | |
CN106170773A (zh) | 用于裸芯上缓冲式非易失性存储器的选择性回拷 | |
US10936203B2 (en) | Memory storage device and system employing nonvolatile read/write buffers | |
Lee et al. | Design and implementation of a journaling file system for phase-change memory | |
Yim et al. | A fast start-up technique for flash memory based computing systems | |
CN109074318A (zh) | 用于执行转换层表的自适应主机存储器缓冲区高速缓存的系统和方法 | |
US8972650B2 (en) | Methods and systems for performing efficient page reads in a non-volatile memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190709 |