掌桥专利:专业的专利平台
掌桥专利
首页

存储器控制方法、存储器存储装置及存储器控制器

文献发布时间:2023-06-19 09:35:27


存储器控制方法、存储器存储装置及存储器控制器

技术领域

本发明涉及一种存储器控制技术,且特别是涉及一种存储器控制方法、存储器存储装置及存储器控制器。

背景技术

非易失性存储器模块(例如快闪存储器模块)具有数据非易失性保存、低耗电及数据存取快速等优点。某些类型的存储器存储装置可额外于非易失性存储器模块中设置快取区(亦称为快取缓冲)。在存储数据时,若快取区尚未被写满,则数据可通过单阶存储单元(Single Level Cell,SLC)模式来快速存储至快取区,然后再于背景中将数据从快取区搬移至数据区进行存储。然而,若快取区已被写满,则数据将通过直接三阶存储单元(Direct-Triple Level Cell,Direct-TLC)或类似的编程模式来直接将数据存储至数据区。

一般来说,若主机系统指示存储小数据(例如数据量为4KB(bytes)的数据),则存储器存储装置需要将此小数据连同无意义的填充(dummy)数据来写入至预定的存储位置。以SLC模式为例,4KB的小数据可能要搭配12KB的填充数据来写入至快取区中容量为16KB的一个实体页。但是,若使用Direct-TLC来写入数据,则4KB的小数据可能要搭配44KB的填充数据来填满数据区中容量各别为16KB的三个实体页。这样长时间使用下来,除了快取区与数据区的使用空间很容易被无意义的填充数据用尽外,存储器存储装置的写入放大也上升的很快。

发明内容

本发明的实施例提供一种存储器控制方法、存储器存储装置及存储器控制器,可减少无意义的填充数据的使用量和/或降低写入放大。

本发明的实施例提供一种存储器控制方法,其用于控制存储器模块,其中所述存储器模块包括多个实体单元,且所述存储器控制方法包括:从所述多个实体单元中选择第一实体单元,其中所述第一实体单元已存储有效数据;从主机系统接收至少一第一写入指令,其中所述至少一第一写入指令指示存储第一数据;以及从所述第一实体单元收集至少一部分的所述有效数据并根据所述第一写入指令执行写入操作,其中所述写入操作包括:将所述第一数据存储至所述多个实体单元中的至少一第二实体单元中一部分的存储空间;以及将所收集的所述有效数据作为填充数据存储至所述至少一第二实体单元中另一部分的存储空间,以填满所述至少一第二实体单元。

本发明的实施例另提供一种存储器存储装置,其包括连接接口单元、存储器模块及存储器控制器。所述连接接口单元用以连接主机系统。所述存储器模块包括多个实体单元。所述存储器控制器连接所述连接接口单元与所述存储器模块。其中所述存储器控制器用以从所述多个实体单元中选择第一实体单元,其中所述第一实体单元已存储有效数据。所述存储器控制器还用以从所述主机系统接收至少一第一写入指令,其中所述至少一第一写入指令指示存储第一数据。所述存储器控制器还用以从所述第一实体单元收集至少一部分的所述有效数据并根据所述第一写入指令执行写入操作。其中所述写入操作包括:将所述第一数据存储至所述多个实体单元中的至少一第二实体单元中一部分的存储空间;以及将所收集的所述有效数据作为填充数据存储至所述至少一第二实体单元中另一部分的存储空间,以填满所述至少一第二实体单元。

本发明的实施例另提供一种存储器控制器,其包括主机接口、存储器接口及存储器控制电路。所述主机接口用以连接主机系统。所述存储器接口用以连接存储器模块,其中所述存储器模块包括多个实体单元。所述存储器控制电路连接所述主机接口与所述存储器接口。所述存储器控制电路用以从所述多个实体单元中选择第一实体单元,其中所述第一实体单元已存储有效数据。所述存储器控制电路还用以从所述主机系统接收至少一第一写入指令,其中所述至少一第一写入指令指示存储第一数据。所述存储器控制电路还用以从所述第一实体单元收集至少一部分的所述有效数据并根据所述第一写入指令执行写入操作。其中所述写入操作包括:将所述第一数据存储至所述多个实体单元中的至少一第二实体单元中一部分的存储空间;以及将所收集的所述有效数据作为填充数据存储至所述至少一第二实体单元中另一部分的存储空间,以填满所述至少一第二实体单元。

基于上述,已存储有效数据的第一实体单元可被预先选择。在从主机系统接收指示存储第一数据的第一写入指令后,可从所述第一实体单元收集有效数据并根据所述第一写入指令执行写入操作。在所述写入操作中,所述第一数据可被存储至第二实体单元中一部分的存储空间,且所收集的有效数据可作为填充数据而存储至所述第二实体单元中另一部分的存储空间,以填满所述第二实体单元。借此,可减少无意义的填充数据的使用量和/或降低写入放大。

附图说明

图1是根据本发明的一实施例所示出的存储器存储装置的示意图;

图2是根据本发明的一实施例所示出的存储器控制器的示意图;

图3是根据本发明的一实施例所示出的管理存储器模块的示意图;

图4是根据本发明的一实施例所示出的写入操作的示意图;

图5是根据本发明的一实施例所示出的将不同数据量的填充数据存储至第二实体单元的示意图;

图6是根据本发明的一实施例所示出的存储器控制方法的流程图。

具体实施方式

现将详细地参考本发明的示范性实施例,示范性实施例的实例说明于附图中。只要有可能,相同元件符号在附图和描述中用来表示相同或相似部分。

图1是根据本发明的一实施例所示出的存储器存储装置的示意图。请参照图1,存储器存储系统10包括主机系统11与存储器存储装置12。主机系统11可为任意型态的计算机系统。例如。主机系统11可为笔记本计算机、台式计算机、智能手机、平板计算机、工业计算机等。存储器存储装置12用以存储来自主机系统11的数据。例如,存储器存储装置12可包括固态硬盘、U盘或其他类型的非易失性存储装置。主机系统11可经由串行先进技术总线附属(Serial Advanced Technology Attachment,SATA)接口、外设部件互连快速(PeripheralComponent Interconnect Express,PCI Express)、通用串行总线(Universal SerialBus,USB)或其他类型的连接接口电性连接至存储器存储装置12。因此,主机系统11可将数据存储至存储器存储装置12和/或从存储器存储装置12读取数据。

存储器存储装置12可包括连接接口121、存储器模块122及存储器控制器123。连接接口121用以将存储器存储装置12连接至主机系统11。例如,连接接口121可支援SATA、PCIExpress或USB等连接接口标准。存储器存储装置12可经由连接接口121与主机系统11通信。

存储器模块122用以存储数据。存储器模块122可包括可复写式非易失性存储器模块。存储器模块122包括存储单元阵列。存储器模块122中的存储单元是以电压的形式来存储数据。例如,存储器模块122可包括单阶存储单元(SLC)NAND型快闪存储器模块、多阶存储单元(Multi Level Cell,MLC)NAND型快闪存储器模块、三阶存储单元(Triple LevelCell,TLC)NAND型快闪存储器模块、四阶存储单元(Quad Level Cell,QLC)NAND型快闪存储器模块或其他具有相似特性的存储器模块。

存储器控制器123连接至连接接口121与存储器模块122。存储器控制器123可用以控制存储器存储装置12。例如,存储器控制器123可控制连接接口121与存储器模块122以进行数据存取与数据管理。例如,存储器控制器123可包括中央处理单元(CPU)、图形处理单元(GPU),或是其他可编程的一般用途或特殊用途的微处理器、数字信号处理器(DigitalSignal Processor,DSP)、可编程控制器、专用集成电路(Application SpecificIntegrated Circuits,ASIC)、可编程逻辑器件(Programmable Logic Device,PLD)或其他类似装置或这些装置的组合。

在一实施例中,存储器控制器123亦称为快闪存储器控制器。在一实施例中,存储器模块122亦称为快闪存储器模块。存储器模块122可接收来自存储器控制器123的指令序列并根据此指令序列存取存储于存储单元中的数据。

图2是根据本发明的一实施例所示出的存储器控制器的示意图。请参照图1与图2,存储器控制器123包括主机接口21、存储器接口22及存储器控制电路23。主机接口21用以经由连接接口121连接至主机系统11,以与主机系统11通信。存储器接口22用以连接至存储器模块122,以与存储器模块122通信。

存储器控制电路23连接至主机接口21与存储器接口22。存储器控制电路23可经由主机接口21与主机系统11沟通并经由存储器接口22存取至存储器模块122。存储器控制电路23也可视为存储器控制器123的控制核心。在以下实施例中,对于存储器控制电路23的说明等同于对于存储器控制器123的说明。此外,存储器控制电路23可包括一或多个缓冲存储器,其用以暂存数据。

图3是根据本发明的一实施例所示出的管理存储器模块的示意图。请参照图1与图3,存储器模块122包括多个实体单元301(1)~301(C)。每一个实体单元皆包括多个存储单元且用以非易失性地存储数据。例如,一个实体单元可以是指一个实体页或者其他的存储单元管理单位。一个实体单元中的多个存储单元可被同时编程以存储数据。多个实体单元可组成一个实体区块。一个实体区块中的多个实体单元(或存储单元)可被同时抹除。此外,存储器控制电路23可配置多个逻辑单元来映射至少部分的实体单元。例如,一个逻辑单元可由一或多个逻辑地址组成。逻辑单元与实体单元之间的映射关系则可记载于逻辑至实体映射表中。存储器控制电路23可根据逻辑至实体映射表中的信息来存取存储器模块122。

在一实施例中,存储器模块122包括快取区310、数据区(亦称为静态数据区)320及闲置区330。快取区310中的实体单元301(1)~301(A)与数据区320中的实体单元301(A+1)~301(B)皆存储有来自主机系统11的数据(亦称为使用者数据)。快取区310与数据区320中的实体单元被抹除后就会被关连至闲置区330。换言之,闲置区330中的实体单元301(B+1)~301(C)皆已被抹除且未存储有效数据。其中,有效数据指的是当前有被逻辑单元映射的数据。

在一实施例中,当有来自于主机系统11的新数据需要存储时,闲置区330中的一或多个实体单元会被选取并且用于存储此数据。根据所采用的编程模式,存储有此数据的实体单元可被改为关连至快取区310或数据区320。此外,存储于快取区310的数据可能在往后某一时间点于存储器存储装置12的背景作业中被复制到数据区320进行较长时间的存储。

在一实施例中,快取区310中的实体单元301(1)~301(A)的最大容量小于数据区320中的实体单元301(A+1)~301(B)的最大容量。在一实施例中,快取区310中的实体单元301(1)~301(A)的最大容量约为数据区320中的实体单元301(A+1)~301(B)的最大容量的1%~5%,但本发明不限于此。

在一实施例中,快取区310中的实体单元301(1)~301(A)皆是基于某一编程模式(亦称为第一编程模式)进行编程以存储数据,而数据区320中的实体单元301(A+1)~301(B)皆是基于另一编程模式(亦称为第二编程模式)进行编程以存储数据。第一编程模式不同于第二编程模式。例如,第一编程模式可用以将一预设数目(亦称为第一数目)的比特数据存储至一个存储单元,第二编程模式则可用以将另一预设数目(亦称为第二数目)的比特数据存储至一个存储单元,且第一数目小于第二数目。例如,第一数目可为1,且第二数目可为2、3或4。

在一实施例中,第一编程模式可包括SLC模式(或虚拟SLC模式),而第二编程模式则可包括MLC模式、TLC模式或QLC模式。其中,基于SLC模式来编程的一个存储单元可用以存储1个比特,而基于MLC模式、TLC模式或QLC模式来编程的一个存储单元则可用以分别存储2个、3个或4个比特。

在一实施例中,第一编程模式的可靠度和/或编程速度高于第二编程模式的可靠度和/或编程速度。在以下实施例中,第一编程模式是以SLC模式作为范例,而第二编程模式则是以TLC模式(亦称为Direct-TLC)作为范例,但本发明不以此为限。

在一实施例中,存储器控制电路23可从快取区310和/或数据区320的多个实体单元中选择至少一个实体单元(亦称为第一实体单元)。所选择的第一实体单元皆是已存储有效数据的实体单元。在一实施例中,所述选择第一实体单元的操作可包含于用于回收和/或集中有效数据的垃圾回收(garbage collection)程序中。在一实施例中,所述选择第一实体单元的操作可于存储器存储装置12的背景作业中执行。

在一实施例中,存储器控制电路23可从主机系统11接收至少一个写入指令(亦称为第一写入指令)。所述第一写入指令指示存储特定数据(亦称为第一数据)。例如,第一数据包括来自主机系统11的使用者数据。

在一实施例中,存储器控制电路23可从所述预先选择的第一实体单元中收集至少一部分的所述有效数据并根据所述第一写入指令执行一个写入操作。其中,所述写入操作主要是用以将所述第一数据存储至从闲置区330中选取的至少一个实体单元(亦称为第二实体单元)。而从所述第一实体单元中收集的有效数据则是作为填充数据使用,以搭配所述第一数据填满所述第二实体单元。

在一实施例中,在所述写入操作中,存储器控制电路23可将所述第一数据存储至所述第二实体单元中一部分的存储空间并将从第一实体单元收集的有效数据作为填充数据存储至所述第二实体单元中另一部分的存储空间,以填满所述第二实体单元。在第一数据的数据量不足以填满第二实体单元的所有存储空间的前提下,使用从第一实体单元收集的所述有效数据作为有意义的填充数据来填满第二实体单元,可有效降低一般无意义的填充数据的使用量和/或降低数据写入时的写入放大。

在一实施例中,在从主机系统11接收所述第一写入指令之后,存储器控制电路23可从主机系统11接收其他指令。存储器控制电路23可判断接续于所述第一写入指令而从主机系统11接收的指令是否为写入指令(亦称为第二写入指令)。若接续于所述第一写入指令而从主机系统11接收的指令不是第二写入指令(例如接续于所述第一写入指令而从主机系统11接收的指令是读取指令),则存储器控制电路23可执行所述从第一实体单元收集有效数据的操作以及所述写入操作,以完成第一写入指令所指示的写入行为。然而,若接续于所述第一写入指令而从主机系统11接收的指令为第二写入指令(例如此指令指示存储特定数据),则存储器控制电路23可继续等待收集到足够多的待写入数据或者等待接收到不是写入指令的其他指令时,再执行所述从第一实体单元收集有效数据的操作以及所述写入操作。

换言之,在一实施例中,存储器控制电路23可在背景作业(例如垃圾回收程序)中预先选择一或多个已存储有效数据的实体单元(即第一实体单元)。接着,当满足需要使用到填充数据来在写入操作中填满特定实体单元(即第二实体单元)时,存储器控制电路23可即时从第一实体单元中收集有效数据并且将所收集的有效数据搭配待存储的数据一并存储至第二实体单元中。

图4是根据本发明的一实施例所示出的写入操作的示意图。请参照图4,假设实体单元401(1)至401(D)被预先选定作为填充数据的来源实体单元(即第一实体单元)。在从主机系统11接收到指示存储数据410(即第一数据)的写入指令(即第一写入指令)后,若下一个来自主机系统11的指令并非写入指令(即第二写入指令)且数据410不足以填满用以存储数据410的实体单元401(E)(即第二实体单元),此时,在对应于第一写入指令的写入操作中,有效数据420可以从实体单元401(1)至401(D)中收集出来并且与数据410一并写入至实体单元401(E)中。例如,数据410可被存储至实体单元401(E)中的存储空间A,而作为填充数据使用的有效数据420则可被存储至实体单元401(E)中剩余的存储空间B,以填满实体单元401(E)。需注意的是,用以存储数据410的实体单元401(E)的数目可以是一或多个。

在一实施例中,存储器控制电路23可根据待存储的第一数据的数据量与所述第二实体单元的容量决定所收集的有效数据的数据量。以图4为例,在选定一或多个实体单元401(E)作为存储数据410的第二实体单元后,根据数据410的数据量与实体单元401(E)的总容量,存储器控制电路23可获得数据410的数据量与实体单元401(E)的总容量之间的差值。根据此差值,存储器控制电路23可决定要从实体单元401(1)~401(D)中收集多少有效数据。在决定待收集的有效数据的数据量后,存储器控制电路23可从实体单元401(1)~401(D)中收集符合此数据量的有效数据420并将数据410与有效数据420一并存储至实体单元401(E)中。

在一实施例中,用以存储第一数据的第二实体单元的总容量并非是固定的,而是根据要将第一数据存储于图3的快取区310或数据区320而动态决定的。例如,若要将第一数据存储于快取区310,则第二实体单元的数目可能是1个。或者,若要将第一数据存储于数据区320,则第二实体单元的数目可能是3个。随着第二实体单元的数目变化,在某一次的写入操作中作为填充数据使用的有效数据的数据量也会对应改变。

图5是根据本发明的一实施例所示出的将不同数据量的填充数据存储至第二实体单元的示意图。请参照图5,在一实施例中,假设待存储的第一数据的数据量是4KB,则在决定将第一数据存储至容量为16KB的实体单元501(1)之后,第一数据可以与12KB的作为填充数据使用的有效数据一并存储至实体单元501(1)中,以填满实体单元501(1)。例如,4KB的第一数据可存储于实体单元501(1)的存储空间A,而12KB的有效数据则存储于实体单元501(1)的存储空间B。

在另一实施例中,在决定将4KB的第一数据存储至总容量为48KB的3个实体单元501(2)~501(4)之后,第一数据可以与44KB的作为填充数据使用的有效数据一并存储至实体单元501(2)~501(4)中,以填满实体单元501(2)~501(4)。例如,4KB的第一数据可存储于实体单元501(2)~501(4)的存储空间A,而44KB的有效数据则存储于实体单元501(2)~501(4)的存储空间B1~B3。

在一实施例中,存储器控制电路23可根据图3中快取区310的使用状态决定将第一数据存储至快取区310或数据区320。其中,快取区310的使用状态可以是指快取区310的使用程度。或者,快取区310的使用状态也可以反映已存储于快取区310的数据(例如有效数据)的总数据量。

在一实施例中,若已存储于快取区310的数据(例如有效数据)的数据量尚未达到一个预设临界值,表示快取区310还有足够的存储空间。此时,存储器控制电路23可决定将第一数据存储至快取区310。例如,存储器控制电路23可指示存储器模块122通过SLC编程模式将第一数据与符合某一数据量(亦称为第一数据量)的填充数据写入至图5的实体单元501(1)。同时,实体单元501(1)可被关联至快取区310。

在一实施例中,若已存储于快取区310的数据(例如有效数据)的数据量已达到所述预设临界值,表示快取区310已经被写满或即将被写满。此时,存储器控制电路23可决定将第一数据存储至数据区320。例如,存储器控制电路23可指示存储器模块122通过Direct-TLC编程模式将第一数据与符合某一数据量(亦称为第二数据量)的填充数据写入至图5的实体单元501(2)~501(4)。所述第一数据量小于所述第二数据量。同时,实体单元501(2)~501(4)可被关联至数据区320。

在一实施例中,在第一实体单元中所有的有效数据皆被收集之后,存储器控制电路23可抹除第一实体单元。例如,在一实施例中,选择第一实体单元、从第一实体单元收集有效数据以及将所收集的有效数据写入至第二实体单元的操作皆可视为是垃圾回收程序中的操作行为。因此,类似于垃圾回收程序,在完整收集第一实体单元中所有的有效数据之后,第一实体单元可被抹除并且被关联至图3的闲置区330。

在一实施例中,被作为填充数据存储至第二实体单元的有效数据仍然会被相应的逻辑单元映射。以图4为例,在将有效数据420存储至实体单元401(E)后,有效数据420仍然会被相应的逻辑单元映射。藉此,后续才能通过此逻辑单元存取实体单元401(E)中的有效数据420。

在一实施例中,若是使用无意义的填充数据(即非从第一实体单元收集的有效数据)来填补第二实体单元,则此无意义的填充数据可能是一连串的1或0等无意义的数据。此外,此无意义的填充数据也不会被任何逻辑单元映射。

图6是根据本发明的一实施例所示出的存储器控制方法的流程图。请参照图6,在步骤S601中,从多个实体单元中选择第一实体单元,其中所述第一实体单元已存储有效数据。在步骤S602中,从主机系统接收至少一第一写入指令,其中所述至少一第一写入指令指示存储第一数据。在步骤S603中,从所述第一实体单元收集至少一部分的所述有效数据并根据所述第一写入指令执行步骤S604的写入操作。步骤S604的写入操作包括步骤S6041与S6042。在步骤S6041中,将所述第一数据存储至所述多个实体单元中的至少一第二实体单元中一部分的存储空间。在步骤S6042中,将所收集的所述有效数据作为填充数据存储至所述至少一第二实体单元中另一部分的存储空间,以填满所述至少一第二实体单元。

然而,图6中各步骤已详细说明如上,在此便不再赘述。值得注意的是,图6中各步骤可以实作为多个程式码或是电路,本发明不加以限制。此外,图6的方法可以搭配以上范例实施例使用,也可以单独使用,本发明不加以限制。

综上所述,一或多个已存储有效数据的实体单元(即第一实体单元)可在背景作业(例如垃圾回收程序)中被预先选择。当满足需要使用到填充数据来在写入操作中填满特定实体单元(即第二实体单元)时,有效数据可即时从第一实体单元中收集出来以搭配待存储的数据一并存储至此特定实体单元中,以填满此特定实体单元。藉此,可减少无意义的填充数据的使用量和/或降低写入放大。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

相关技术
  • 存储器控制方法、存储器存储装置及存储器控制器
  • 存储器控制方法、存储器存储装置及存储器控制器
技术分类

06120112219120