本公开涉及半导体,尤其涉及一种存储器访问方法及设备。
背景技术:
1、为提高存储容量,目前的大多数存储器内部一般都是由多个bank(或称为存储库)组成,各bank按一定的顺序摆放在存储器里。
2、中央处理器(central processing unit,cpu)的内存控制器通常以bank的id为地址信息来访问存储器内部的各个bank;对于内存控制器而言,存储器中的各个bank所代表的内存空间完全一样,没有任何差别,因此存储器内部的各个bank会被内存控制器以相同的概率访问。
3、然而,受物理布局以及工艺偏差等因素影响,同一存储器内部的各个bank的存储单元的数据保持(data retention)时间会有所差异,导致存储器在使用过程中的整体可靠性与寿命不高。
技术实现思路
1、本公开提供了一种存储器访问方法及设备,可以有效提升存储器在使用过程中的整体可靠性与寿命。
2、第一方面,本公开实施例提供了一种存储器访问方法,所述存储器包括多个存储库;所述方法包括:
3、获取各个所述存储库对应的访问优先级;其中,各个所述存储库对应的访问优先级是根据各个所述存储库的数据保持时间确定的;
4、根据待访问容量,确定待访问的存储库的第一数量;
5、按照所述访问优先级由高到低的顺序,在所述多个存储库中选择所述第一数量的存储库进行访问。
6、在一些实施例中,所述获取各个所述存储库对应的访问优先级之前,还包括:
7、检测各个所述存储库的数据保持时间;
8、根据各个所述存储库的数据保持时间,确定各个所述存储库对应的访问优先级。
9、在一些实施例中,所述检测各个所述存储库的数据保持时间,包括:
10、在各个所述存储库中写入第一数据;
11、多次刷新各个所述存储库,并在每次刷新后读取各个所述存储库中存储的第二数据;
12、比较每一次读取的各个所述存储库中存储的第二数据与所述第一数据是否一致,并根据比较结果确定各个所述存储库的数据保持时间。
13、在一些实施例中,所述多次刷新各个所述存储库,包括:
14、在每次刷新各个所述存储库后,按照预设幅度,增加刷新间隔时间。
15、在一些实施例中,所述根据比较结果确定各个所述存储库的数据保持时间,包括:
16、根据所述比较结果,确定各个所述存储库首次出现读取错误的时间;
17、将各个所述存储库首次出现读取错误的时间,确定为各个所述存储库的数据保持时间。
18、在一些实施例中,所述根据各个所述存储库的数据保持时间,确定各个所述存储库对应的访问优先级,包括:
19、根据各个所述存储库的数据保持时间,以及各个优先级预设的时间区间,确定各个所述存储库对应的访问优先级。
20、在一些实施例中,所述确定各个所述存储库对应的访问优先级之后,还包括:
21、根据各个所述存储库对应的访问优先级,调整预设的至少一个寄存器中各组比特位的值;其中,各个所述寄存器中包括多组比特位,每组比特位均包括至少一个比特位,且每组比特位的值与每组比特位对应的所述存储库的访问优先级相关。
22、在一些实施例中,所述获取各个所述存储库对应的访问优先级,包括:
23、读取所述至少一个寄存器中各组比特位的值;
24、根据所述至少一个寄存器中各组比特位的值,得到各个所述存储库对应的访问优先级。
25、在一些实施例中,还包括:
26、每隔预设时长,重新确定各个所述存储库对应的访问优先级,并根据重新确定的各个所述存储库对应的访问优先级,更新所述至少一个寄存器中各组比特位的值。
27、第二方面,本公开实施例提供了一种存储器访问装置,所述存储器包括多个存储库;所述装置包括:
28、获取模块,用于获取各个所述存储库对应的访问优先级;其中,各个所述存储库对应的访问优先级是根据各个所述存储库的数据保持时间确定的;
29、确定模块,用于根据待访问容量,确定待访问的存储库的第一数量;
30、访问模块,用于按照所述访问优先级由高到低的顺序,在所述多个存储库中选择所述第一数量的存储库进行访问。
31、在一些实施例中,还包括检测模块,用于:
32、检测各个所述存储库的数据保持时间;
33、根据各个所述存储库的数据保持时间,确定各个所述存储库对应的访问优先级。
34、在一些实施例中,所述检测模块具体用于:
35、在各个所述存储库中写入第一数据;
36、多次刷新各个所述存储库,并在每次刷新后读取各个所述存储库中存储的第二数据;
37、比较每一次读取的各个所述存储库中存储的第二数据与所述第一数据是否一致,并根据比较结果确定各个所述存储库的数据保持时间。
38、在一些实施例中,所述检测模块具体用于:
39、在每次刷新各个所述存储库后,按照预设幅度,增加刷新间隔时间。
40、在一些实施例中,所述检测模块具体用于:
41、根据所述比较结果,确定各个所述存储库首次出现读取错误的时间;
42、将各个所述存储库首次出现读取错误的时间,确定为各个所述存储库的数据保持时间。
43、在一些实施例中,所述检测模块具体用于:
44、根据各个所述存储库的数据保持时间,以及各个优先级预设的时间区间,确定各个所述存储库对应的访问优先级。
45、在一些实施例中,还包括优先级存储模块,用于:
46、根据各个所述存储库对应的访问优先级,调整预设的至少一个寄存器中各组比特位的值;其中,各个所述寄存器中包括多组比特位,每组比特位均包括至少一个比特位,且每组比特位的值与每组比特位对应的所述存储库的访问优先级相关。
47、在一些实施例中,所述获取模块具体用于:
48、读取所述至少一个寄存器中各组比特位的值;
49、根据所述至少一个寄存器中各组比特位的值,得到各个所述存储库对应的访问优先级。
50、在一些实施例中,还包括更新模块,用于:
51、每隔预设时长,重新确定各个所述存储库对应的访问优先级,并根据重新确定的各个所述存储库对应的访问优先级,更新所述至少一个寄存器中各组比特位的值。
52、第三方面,本公开实施例提供了一种电子设备,包括:至少一个处理器和存储器;
53、所述存储器存储计算机执行指令;
54、所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如第一方面提供的存储器访问方法。
55、第四方面,本公开实施例提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如第一方面提供的存储器访问方法。
56、第五方面,本公开实施例提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时,实现如第一方面提供的存储器访问方法。
57、本公开实施例提供的存储器访问方法及设备,预先根据各个存储库的数据保持时间确定出各个存储库对应的访问优先级,在需要访问存储器时,按照访问优先级由高到低的顺序,在多个存储库中优先选择访问优先级高的存储库,由此可以增加对数据保持能力高的存储库的利用率,降低对数据保持能力低的存储库的利用率,从而有效提升存储器在使用过程中的整体可靠性及寿命。