发明内容
有鉴于此,本申请提供了一种数据存储方法和装置以及固态硬盘,以提高SSD的存储性能。
为实现上述目的,本申请提供如下技术方案:一种数据存储方法,应用于固态硬盘SSD,所述方法包括:
获取当前待写入的目标数据;
如果确定出所述目标数据为需要缓存的数据,则从第一缓存和第二缓存中,确定用于存储所述目标数据的目标缓存,其中,所述第一缓存为主机内存中预设的缓存区,所述第二缓存为所述SSD中的固有缓存;
将所述目标数据缓存至所述目标缓存。
优选的,所述从第一缓存和第二缓存中,确定用于存储所述目标数据的目标缓存,包括:
确定所述目标数据所属的数据类型,所述数据类型包括第一类型数据和第二类型数据,所述第一类型数据的预估访问频率大于所述第二类型数据的预估访问频率;
当所述目标数据为第一类型数据时,将所述第一缓存确定为目标缓存;
当所述目标数据为第二类型数据时,将所述第二缓存确定为目标缓存。
优选的,将所述目标数据缓存至所述目标缓存之后,还包括:
统计所述目标数据的访问频率;
当基于所述目标数据的访问频率确定出所述目标数据所属的数据类型发生变化时,更新所述目标数据所属的数据类型。
优选的,当基于所述目标数据的访问频率确定出所述目标数据所属的数据类型发生变化之后,还包括:
基于所述目标数据当前所属的目标数据类型,将所述目标数据转移至与所述目标数据类型对应的缓存中。
优选的,还包括:
分别监测所述第一缓存和第二缓存中当前剩余空间是否小于预设值;
如果所述第一缓存中当前剩余空间小于预设值,则从所述第一缓存区中选取至少部分数据迁移至所述第二缓存;
如果所述第二缓存中当前剩余空间小于预设值,则从所述第二缓存区中选取至少部分数据迁移至所述第一缓存。
优选的,还包括:
基于所述第一缓存和第二缓存的数据读取频率,确定所述第一缓存的第一调整量和第二缓存区的第二调整量;
依据所述第一调整量,调整所述第一缓存的缓存空间大小;
依据所述第二调整量,调整所述第二缓存的缓存空间大小。
另一方面,本申请还提供了一种数据存储装置,应用于固态硬盘SSD,所述装置包括:
数据获取单元,用于获取当前待写入的目标数据;
缓存确定单元,用于如果确定出所述目标数据为需要缓存的数据,则从第一缓存和第二缓存中,确定用于存储所述目标数据的目标缓存,其中,所述第一缓存为主机内存中预设的缓存区,所述第二缓存为所述SSD中的固有缓存;
数据写入单元,用于将所述目标数据缓存至所述目标缓存。
优选的,所述缓存确定单元,包括:
类型确定子单元,用于确定所述目标数据所属的数据类型,所述数据类型包括第一类型数据和第二类型数据,所述第一类型数据的预估访问频率大于所述第二类型数据的预估访问频率;
第一缓存子单元,用于当所述目标数据为第一类型数据时,将所述第一缓存确定为目标缓存;
第二缓存子单元,用于当所述目标数据为第二类型数据时,将所述第二缓存确定为目标缓存。
优选的,还包括:
频率统计单元,用于在所述数据写入单元将所述目标数据缓存至所述目标缓存之后,统计所述目标数据的访问频率;
类型变更单元,用于当基于所述目标数据的访问频率确定出所述目标数据所属的数据类型发生变化时,更新所述目标数据所属的数据类型。
优选的,还包括:
数据转移单元,用于在所述类型变更单元确定出所述目标数据所属的数据类型发生变化之后,基于所述目标数据当前所属的目标数据类型,将所述目标数据转移至与所述目标数据类型对应的缓存中。
优选的,还包括:
空间监测单元,用于分别监测所述第一缓存和第二缓存中当前剩余空间是否小于预设值;
第一迁移单元,用于如果所述第一缓存中当前剩余空间小于预设值,则从所述第一缓存区中选取至少部分数据迁移至所述第二缓存;
第二迁移单元,用于如果所述第二缓存中当前剩余空间小于预设值,则从所述第二缓存区中选取至少部分数据迁移至所述第一缓存。
优选的,还包括:
调整量确定单元,用于基于所述第一缓存和第二缓存的数据读取频率,确定所述第一缓存的第一调整量和第二缓存区的第二调整量;
第一调整单元,用于依据所述第一调整量,调整所述第一缓存的缓存空间大小;
第二调整单元,用于依据所述第二调整量,调整所述第二缓存的缓存空间大小。
另一方面,本申请还提供了一种固态硬盘,包括:
控制器和第二缓存;
其中,所述控制器,用于获取当前待写入的目标数据;如果确定出所述目标数据为需要缓存的数据,则从第一缓存和所述第二缓存中,确定用于存储所述目标数据的目标缓存;将所述目标数据缓存至所述目标缓存;其中,所述第一缓存为主机内存中预设的缓存区。
优选的,所述控制器从第一缓存和第二缓存中,确定用于存储所述目标数据的目标缓存,具体为:
所述控制器确定所述目标数据所属的数据类型,所述数据类型包括第一类型数据和第二类型数据,所述第一类型数据的预估访问频率大于所述第二类型数据的预估访问频率;当所述目标数据为第一类型数据时,将所述第一缓存确定为目标缓存;当所述目标数据为第二类型数据时,将所述第二缓存确定为目标缓存。
优选的,所述控制器还用于:在将所述目标数据缓存至所述目标缓存之后,统计所述目标数据的访问频率;当基于所述目标数据的访问频率确定出所述目标数据所属的数据类型发生变化时,更新所述目标数据所属的数据类型。
优选的,所述控制器还用于:当基于所述目标数据的访问频率确定出所述目标数据所属的数据类型发生变化之后,基于所述目标数据当前所属的目标数据类型,将所述目标数据转移至与所述目标数据类型对应的缓存中。
优选的,所述控制器还用于:分别监测所述第一缓存和第二缓存中当前剩余空间是否小于预设值;如果所述第一缓存中当前剩余空间小于预设值,则从所述第一缓存区中选取至少部分数据迁移至所述第二缓存;如果所述第二缓存中当前剩余空间小于预设值,则从所述第二缓存区中选取至少部分数据迁移至所述第一缓存。
优选的,所述控制器还用于:基于所述第一缓存和第二缓存的数据读取频率,确定所述第一缓存的第一调整量和第二缓存区的第二调整量;依据所述第一调整量,调整所述第一缓存的缓存空间大小;依据所述第二调整量,调整所述第二缓存的缓存空间大小。
经由上述的技术方案可知,获取到当前待写入的目标数据为待缓存数据时,则从第一缓存和第二缓存中确定目标缓存,并将该目标数据缓存至该目标缓存,由于第一缓存为主机内存中预设的缓存区,而第二缓存为该SSD内固有的缓存,因此,目标数据可以根据需要存储到主机内存中预设的缓存区或者是该SSD内固有的缓存区,从而利用主机内存中的缓存区,实现对SSD用于缓存数据的缓存空间的扩展,增大了SSD可用的缓存空间,从而有利于提高SSD的存储性能。
具体实施方式
本申请实施例提供了一种数据存储方法和装置,以将主机中的部分内存作为SSD的缓存,以扩展SSD的缓存空间,提高SSD的存储性能。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先对本申请的一种数据存储方法进行介绍。
参见图1,其示出了本申请一种数据存储方法一个实施例的流程示意图,本实施例的方法可以应用于固态硬盘SSD,该方法可以包括:
101,获取当前待写入的目标数据。
其中,SSD获取当前待写入的目标数据的过程可以与现有的方式相似,如SSD获取处理器传输的待写入的目标数据。
102,如果确定出该目标数据为需要缓存的数据,则从第一缓存和第二缓存中,确定用于存储该目标数据的目标缓存。
其中,该第一缓存为主机内存中预设的缓存区,该第二缓存为该SSD中的固有缓存。
与现有不同的是,在本实施例中,该SSD所能够操作或者说访问的缓存空间实际上有两部分,一个缓存是该SSD中固有的缓存空间,即,该缓存为目前SSD缓存数据所用,且位于该SSD内部的缓存空间;另一个缓存是主机内存中预设的缓存区,该缓存区为该主机内存的一部分空间。为了便于区分,本申请实施例中,将SSD可访问的该主机内存中的预设缓存区称为第一缓存,而将该SSD中固有缓存称为第二缓存。
本申请实施例中将主机内存的一部分缓存扩展为该SSD可用的缓存,从而有利于提高SSD的缓存性能。
在实际应用中,SSD获取到待缓存的目标数据后,可以从第一缓存和第二缓存,确定一个当前用于存储该目标数据的缓存,以便将该目标数据存储至确定出的缓存内。为了便于区分,将第一缓存和第二缓存中用于对该目标数据进行存储的缓存称为目标缓存。
可以理解的是,获取到待确定的目标数据之后,确定该目标数据是否需要缓存的方式同样可以与现有的方式相似,如目标数据根据访问频率的不同,或者目标数据的用途不同,则针对该目标数据的存储方式可能会有所不同,如,对于处理器运行所必须的数据则可能需要被缓存,而一些不经常使用的数据则无需缓存。
103,将该目标数据缓存至该目标缓存。
在本申请实施例中,获取到当前待写入的目标数据为待缓存数据时,则从第一缓存和第二缓存中确定目标缓存,并将该目标数据缓存至该目标缓存,由于第一缓存为主机内存中预设的缓存区,而第二缓存为该SSD内固有的缓存,因此,目标数据可以根据需要存储到主机内存中预设的缓存区或者是该SSD内固有的缓存区,从而利用主机内存中的缓存区,实现对SSD用于缓存数据的缓存空间的扩展,增大了SSD可用的缓存空间,从而有利于提高SSD的存储性能。
需要说明的是,在本申请任意一个实施例中,该主机内存中预设的缓存区可以理解为该主机内存中预留出的能够被该SSD访问的空间,该部分预留出的空间不能够再被主机作用内存。具体的,可以在开启主机的过程中,由主机的BIOS程序将内存中指定区域上报给所述主机,该指定区域不包含该预设的缓存区,则主机启动后,可以仅仅使用该内存中的指定区域,而不会使用到内存中的该预设的缓存区。
可以理解的是,从第一缓存和第二缓存中确定用于存储该目标数据的目标缓存的方式可以有多种。
在一种可能的实现方式中,SSD可以随机确定目标缓存。
在另一种可能的实现方式中,SSD可以是根据该第一缓存和第二缓存当前剩余的可用缓存空间的大小,确定当前用于存储该目标数据的目标缓存。如,基于负载均衡的原理,从第一缓存和第二缓存中选取剩余的可用缓存空间较大者,作为该目标缓存。
当然,还可以有其他确定目标缓存的方式,同样适用于本申请。
下面以一种确定目标缓存的方式为例,进行详细介绍。参见图2,其示出了本申请一种数据存储方法另一个实施例的流程示意图,本实施例的方法可以应用于固态硬盘SSD,该方法可以包括:
201,获取当前待写入的目标数据。
202,如果确定出该目标数据为需要缓存的数据,确定该目标数据所属的数据类型。
其中,数据类型可以表征该数据被访问的频率,该数据类型可以包括第一类型数据和第二类型数据。第一类型数据的预估访问频率大于该第二类型数据的预估访问频率。
对于SSD而言,有些数据是经常需要被读取的,而有些数据则可能并不会经常被读取,而对于经常调取的数据而言,如果对该类数据的读取速度过慢,也会影响到电子设备的数据处理性能。因此,在本申请实施例中,将待存储的目标数据进行分类,以根据数据类型确定该目标存储所需存储到目标缓存。
203,当该目标数据为第一类型数据时,将第一缓存确定为目标缓存。
204,当该目标数据为第二类型数据时,将该第二缓存确定为目标缓存。
其中,该第一缓存为主机内存中预设的缓存区,该第二缓存为该SSD中的固有缓存。
可以理解的是,主机内存中的缓存区的数据读写性能要高于该SSD中固有缓存的数据读写性能,因此,如果目标数据为访问频率较高的数据,则说明该类数据对读写性能要求较高,此时可以将该目标数据存储至该第一缓存中;而对于其他类数据则可以直接存储到该SSD的第二缓存中。
其中,在本申请实施例中可以依据存储的数据访问频率记录以及预设的数据类型所对应的访问频率,确定出该目标数据所属的数据类型;也可以是预先设定不同数据所属的数据类型。
205,将该目标数据缓存至该目标缓存。
确定出目标缓存后,可以直接将数据存储到该目标缓存中即可。
可选的,由于第一缓存读写性能高于第二缓存的读写性能,因此,当该目标数据为第一类型数据时,可以基于第一数据写入速率将目标数据写入至该第一缓存中;而当该目标数据为第二类型数据时,可以基于第二数据写入速率将该目标数据写入至第二缓存中,其中,该第一数据写入速率大于该第二数据写入速率。
可选的,在图2所示实施例的基础上,在将该目标数据缓存至该目标缓存之后,还可以包括:统计所述目标数据的访问频率。则当基于该目标数据的访问频率确定出该目标数据所属的数据类型发生变化时,更新该目标数据所属的数据类型。
在存储了目标数据之后对数据的访问频率进行统计,以确定出目标数据的数据类型的变更,有利于后续准确确定待存储数据的数据类型,并从第一缓存和第二缓存中,合理的确定存储该目标数据的缓存区。
进一步的,当基于目标数据的访问频率确定出该目标数据所属的数据类型发生变化之后,还可以包括:
基于该目标数据当前所属的目标数据类型,将该目标数据转移至与该目标数据类型对应的缓存中。
根据目标数据的数据类型的变化,动态调整存储该目标数据的目标缓存,实现了动态使用主机内存中预设缓存区和该SSD中的固定缓存,有利于更为合理的分配SSD内部固有内存和主机内存的使用。
可以理解的是,在以上任意一个实施例中,将目标数据存储至第一缓存具体可以借用主机的直接内存存取(DMA,Direct Memory Access)操作进行数据搬移即可,而无需经过主机接口模块。
而将该目标数据存储至第二缓存可以为:通过主机接口模块将目标数据存储至第二缓存。。
参见图3,其示出了本申请一种数据存储方法另一个实施例的流程示意图,本实施例的方法可以应用于固态硬盘SSD,该方法可以包括:
301,获取当前待写入的目标数据。
302,如果确定出该目标数据为需要缓存的数据,则从第一缓存和第二缓存中,确定用于存储该目标数据的目标缓存。
其中,该第一缓存为主机内存中预设的缓存区,该第二缓存为该SSD中的固有缓存。
303,将该目标数据缓存至该目标缓存。
以上步骤301至303可以参见前面任意一个实施例的相关介绍,在此不再赘述。
304,基于第一缓存和第二缓存的数据读取频率,确定该第一缓存的第一调整量和第二缓存区的第二调整量。
在本实施例中根据第一缓存的数据读取频率,来判断该第一缓存当前的存储空间是否能够满足第一缓存对应的数据读取频率,如果第一缓存的数据读取频率较高,则说明对第一缓存的使用频率较高,第一缓存存储着大量经常被访问的数据。为了适应数据读取需求,则可以适当增大该第一缓存的空间容量,则该第二调整量可以为第一缓存需要增加的存储空间;相应的,如果第一缓存的读取频率较低,则可以适当减少该第一缓存的存储空间大小。
对于第二缓存类似,可以根据其数据读取频率,来确定是否需要增加或减少该第二缓存的容量。
305,依据该第一调整量,调整该第一缓存的缓存空间大小。
基于第一调整量对该第一缓存进行调整,可以是将第一调整量以及对该第一缓存的缓存空间大小进行调整的请求发送给主机,以便主机的BIOS程序在检测到主机启动后,重新配置该第一缓存的容量。
306,依据该第二调整量,调整该第二缓存的缓存空间大小。
对于该第二缓存的调整,则可以重新配置第二缓存的大小,如增加第二缓存的容量,则会相应减少SSD中其他存储空间的大小;相应而,如减少第二缓存的容量,则可以相应增加SSD中其他存储空间的大小。
本实施例实现了对第一缓存和第二缓存的空间大小的动态修改,有利于适应数据存取需求。
参见图4,其示出了本申请一种数据存储方法另一个实施例的流程示意图,本实施例的方法可以应用于固态硬盘SSD,该方法可以包括:
401,获取当前待写入的目标数据。
402,如果确定出该目标数据为需要缓存的数据,则从第一缓存和第二缓存中,确定用于存储该目标数据的目标缓存。
其中,该第一缓存为主机内存中预设的缓存区,该第二缓存为该SSD中的固有缓存。
403,将该目标数据缓存至该目标缓存。
以上步骤401至403可以参见前面任意一个实施例的相关介绍,在此不再赘述。
404,分别监测第一缓存和第二缓存中当前剩余空间是否小于预设值。
其中,该预设值可以根据需要设定,且第一缓存和第二缓存所对应的预设值可以相同也可以不同。
通过本步骤的监测,可以降低由于第一缓存和第二缓存剩余空间不足而导致数据存储异常的情况。
405,如果该第一缓存中当前剩余空间小于预设值,则从该第一缓存区中选取至少部分数据迁移至该第二缓存。
406,如果该第二缓存中当前剩余空间小于预设值,则从该第二缓存区中选取至少部分数据迁移至该第一缓存。
如果第一缓存或第二缓存中当前剩余空间小于预设值,则可以将其中一个缓存内存储的数据迁移到另一个缓存中。
对于任意一个缓存中的数据迁移,可以根据该缓存中数据的访问频率,确定是否将该数据迁移至另外一个缓存中。
如,对于将第一缓存中的数据迁移至第二缓存的情况,当检测到第一缓存的剩余存储空间小于预设值时,确定当前时刻第一缓存中缓存的已存储数据的预估访问频率;根据目标数据存储区域内存储的目标数据的预估访问频率从高到低的顺序,将排序靠后的指定数量的目标数据转移至第二缓存中。
又如,对于将第二缓存中的数据迁移至第一缓存的情况,当检测到第二缓存的剩余存储空间小于预设值时,确定当前时刻第二缓存中缓存的已存储数据的预估访问频率;根据目标数据存储区域内存储的目标数据的预估访问频率从高到低的顺序,将排序靠前的指定数量的目标数据转移至该第一缓存中。
对应本申请的一种数据存储方法,本申请实施例还提供了一种数据处理装置。
参见图5,其示出了本申请一种数据存储装置一个实施例的结构示意图,本实施例的装置应用于固态硬盘SSD,所述装置可以包括:
数据获取单元501,用于获取当前待写入的目标数据;
缓存确定单元502,用于如果确定出所述目标数据为需要缓存的数据,则从第一缓存和第二缓存中,确定用于存储所述目标数据的目标缓存,其中,所述第一缓存为所述主机内存中预设的缓存区,所述第二缓存为所述SSD中的固有缓存;
数据写入单元503,用于将所述目标数据缓存至所述目标缓存。
在本申请实施例中,获取到当前待写入的目标数据为待缓存数据时,则从第一缓存和第二缓存中确定目标缓存,并将该目标数据缓存至该目标缓存,由于第一缓存为主机内存中预设的缓存区,而第二缓存为该SSD内固有的缓存,因此,目标数据可以根据需要存储到主机内存中预设的缓存区或者是该SSD内固有的缓存区,从而利用主机内存中的缓存区,实现对SSD用于缓存数据的缓存空间的扩展,增大了SSD可用的缓存空间,从而有利于提高SSD的存储性能。
参见图6,其示出了本申请一种数据存储装置另一个实施例的结构示意图,本实施例的装置与前面装置实施例的不同之处在于:
该缓存确定单元502,包括:
类型确定子单元5021,用于确定所述目标数据所属的数据类型,所述数据类型包括第一类型数据和第二类型数据,所述第一类型数据的预估访问频率大于所述第二类型数据的预估访问频率;
第一缓存子单元5022,用于当所述目标数据为第一类型数据时,将所述第一缓存确定为目标缓存;
第二缓存子单元5023,用于当所述目标数据为第二类型数据时,将所述第二缓存确定为目标缓存。
可选的,本实施例还可以包括:
频率统计单元,用于在所述数据写入单元将所述目标数据缓存至所述目标缓存之后,统计所述目标数据的访问频率;
类型变更单元,用于当基于所述目标数据的访问频率确定出所述目标数据所属的数据类型发生变化时,更新所述目标数据所属的数据类型。
进一步的,本实施例的装置还可以包括:
数据转移单元,用于在所述类型变更单元确定出所述目标数据所属的数据类型发生变化之后,基于所述目标数据当前所属的目标数据类型,将所述目标数据转移至与所述目标数据类型对应的缓存中。
可选的,在以上任意一个装置的实施例中,该装置还可以包括:
空间监测单元,用于分别监测所述第一缓存和第二缓存中当前剩余空间是否小于预设值;
第一迁移单元,用于如果所述第一缓存中当前剩余空间小于预设值,则从所述第一缓存区中选取至少部分数据迁移至所述第二缓存;
第二迁移单元,用于如果所述第二缓存中当前剩余空间小于预设值,则从所述第二缓存区中选取至少部分数据迁移至所述第一缓存。
可选的,在以上任意一个装置的实施例中,该装置还可以包括:
调整量确定单元,用于基于所述第一缓存和第二缓存的数据读取频率,确定所述第一缓存的第一调整量和第二缓存区的第二调整量;
第一调整单元,用于依据所述第一调整量,调整所述第一缓存的缓存空间大小;
第二调整单元,用于依据所述第二调整量,调整所述第二缓存的缓存空间大小。
另一方面,本申请还提供了一种固态硬盘。
参见图7,其示出了本申请一种固态硬盘一个实施例的结构示意图,本实施例的固态硬盘70可以包括:
控制器701和第二缓存702;
其中,所述控制器701,用于获取当前待写入的目标数据;如果确定出所述目标数据为需要缓存的数据,则从第一缓存801和所述第二缓存702中,确定用于存储所述目标数据的目标缓存;将所述目标数据缓存至所述目标缓存;其中,所述第一缓存为主机内存中预设的缓存区。
可以理解的是,该固态硬盘还可以包括存储介质,该存储介质可以为闪存。
其中,该固态硬盘的控制器与该主机内存的第一缓存可以通过主机接口模块相连、
可选的,所述控制器从第一缓存和第二缓存中,确定用于存储所述目标数据的目标缓存,具体为:
所述控制器确定所述目标数据所属的数据类型,所述数据类型包括第一类型数据和第二类型数据,所述第一类型数据的预估访问频率大于所述第二类型数据的预估访问频率;当所述目标数据为第一类型数据时,将所述第一缓存确定为目标缓存;当所述目标数据为第二类型数据时,将所述第二缓存确定为目标缓存。
可选的,所述控制器还用于:在将所述目标数据缓存至所述目标缓存之后,统计所述目标数据的访问频率;当基于所述目标数据的访问频率确定出所述目标数据所属的数据类型发生变化时,更新所述目标数据所属的数据类型。
进一步的,所述控制器还可以用于:当基于所述目标数据的访问频率确定出所述目标数据所属的数据类型发生变化之后,基于所述目标数据当前所属的目标数据类型,将所述目标数据转移至与所述目标数据类型对应的缓存中。
可选的,所述控制器还用于:分别监测所述第一缓存和第二缓存中当前剩余空间是否小于预设值;如果所述第一缓存中当前剩余空间小于预设值,则从所述第一缓存区中选取至少部分数据迁移至所述第二缓存;如果所述第二缓存中当前剩余空间小于预设值,则从所述第二缓存区中选取至少部分数据迁移至所述第一缓存。
可选的,所述控制器还用于:基于所述第一缓存和第二缓存的数据读取频率,确定所述第一缓存的第一调整量和第二缓存区的第二调整量;依据所述第一调整量,调整所述第一缓存的缓存空间大小;依据所述第二调整量,调整所述第二缓存的缓存空间大小。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。