存储器及其数据读写方法与流程

文档序号:29166589发布日期:2022-03-09 02:48阅读:1394来源:国知局
存储器及其数据读写方法与流程

1.本公开涉及数据存储技术,特别涉及存储器的数据读写技术。


背景技术:

2.计算机系统的计算结果和服务信息临时保存在内存中,这些数据在系统掉电后将丢失,甚至能引起整个系统的崩溃。
3.新兴的非易失性存储器(nvm),如电阻式随机存取存储器(reram)、相变存储器(pcm)和闪存,展现了更高位密度和在断电后仍然能够保持数据的优势。然而,nvm往往受限于它们较高的访问延迟和较差的耐久性能。
4.易失性存储器如动态随机存取存储器(dram)则相反,展现了较低延迟和几乎无限的耐久性能。但是易失性存储器却具有有限的容量,且在断电后难以保持数据。
5.因此,结合非易失性存储器技术和易失性存储器技术的混合存储器系统非常有希望提供在容量、断电保持、延迟、耐久性能方面提升的综合性能。
6.例如,新提出的非易失性双列直插式存储模块(nvdimm),结合dram和nvm技术,可以解决系统异常掉电情况下,内存数据的保存工作,并且能够在系统恢复正常运行后,继续之前的工作。
7.目前,采用混合存储器系统的主要方案主要有两种。一种方案使用dram作为缓存,而使用nvm作为主存储器。另一种方案使用dram和nvm作为平坦地址空间存储器系统。
8.然而,两种方案都会要求dram和nvm之间的数据交换移动。
9.具体说来,对于使用dram作为缓存(例如页面缓存)的第一种方案,缓存替换要求将旧的缓存页面从dram中剔除,而将新的页面提取到dram中,由此引发需要依次实施的读和写处理。
10.而对于平坦地址空间方案,系统需要将热点页面移动到数据读写速度较快的dram,而将冷门页面移动到数据读写速度较慢的nvm。因此,同样会引发交换页面的系列处理。
11.这种数据交换移动需要耗费一定的读写操作时间。
12.更重要的是,在dram和nvm之间的缓存替换/页面交换处理中,dram被阻塞,从而延长了存储器响应时间,并且降低了存储器带宽。
13.因此,仍然需要一种改进的数据存储方案。


技术实现要素:

14.本公开要解决的一个技术问题是提供一种能够简化存储器的数据读写过程的数据存储方案。
15.根据本公开的第一个方面,提供了一种存储器,包括至少一个数据存储芯片,每个数据存储芯片包括数据存储模块、数据处理模块和2m个数据引脚,m为正整数。在针对数据存储芯片的每次读操作中从数据存储模块读取n位数据,并且/或者在针对数据存储芯片的
每次写操作中向数据存储模块写入n位数据,n为正整数。数据处理模块以2n位数据为单次处理量对要写入数据存储模块的数据进行第一数据处理,并且/或者以2n位数据为单次处理量对从数据存储模块读出的数据进行第二数据处理。在存储器与外部设备进行数据交换时:从数据存储模块读取第一组n位数据和第二组n位数据,送入数据处理模块以进行第二数据处理;通过2m个数据引脚中的第一组m个数据引脚,从外部设备接收第三组n位数据;通过2m个数据引脚中的第二组m个数据引脚,向外部设备传输第一组n位数据;由数据处理模块对第三组n位数据和第二数据处理后的第二组n位数据进行第一数据处理;以及将第一数据处理后的第三组n位数据和第二组n位数据写入数据存储模块。
16.可选地,数据存储芯片的数据位宽为m,用于构建数据存储芯片的管芯与用于构建数据位宽为2m的数据存储芯片的管芯相同,其中第一组m个数据引脚被初始配置为用于支持m位数据位宽的读和写操作,第二组m个数据引脚被初始配置为不使用,并且第二组m个数据引脚被重新配置以用于对外传输第一组n位数据。
17.可选地,第一组n位数据和第二组n位数据是先前写入数据存储模块时一同进行第一数据处理的2n位数据。
18.可选地,第一数据处理是纠错编码,第二数据处理是纠错解码,数据处理模块是片上纠错编解码模块。
19.一种混合存储器系统,包括第一存储器和第二存储器,第一存储器为上述第一方面的存储器,第一存储器与第二存储器之间进行数据交换操作。
20.可选地,第一存储器的数据读写速度比第二存储器的数据读写速度快。
21.可选地,第一存储器为易失性存储器,第二存储器为非易失性存储器。
22.可选地,第一存储器为双倍速率同步动态随机存储器dram,第二存储器为非易失性存储器nvm。
23.可选地,混合存储器系统用于服务器。
24.可选地,m=4。
25.可选地,n=64。
26.根据本公开的第二个方面,提供了一种存储器数据读写方法。存储器包括至少一个数据存储芯片,每个数据存储芯片包括数据存储模块、数据处理模块和2m个数据引脚,m为正整数。在针对数据存储芯片的每次读操作中从数据存储模块读取n位数据,并且/或者在针对数据存储芯片的每次写操作中向数据存储模块写入n位数据,n为正整数。数据处理模块以2n位数据为单次处理量对要写入数据存储模块的数据进行第一数据处理,并且/或者以2n位数据为单次处理量对从数据存储模块读出的数据进行第二数据处理。该方法包括:从数据存储模块读取第一组n位数据和第二组n位数据,送入数据处理模块以进行第二数据处理;通过2m个数据引脚中的第一组m个数据引脚,从存储器外部接收第三组n位数据;通过2m个数据引脚中的第二组m个数据引脚,向存储器外部传输第一组n位数据;由数据处理模块对第三组n位数据和第二数据处理后的第二组n位数据进行第一数据处理;以及将第一数据处理后的第三组n位数据和第二组n位数据写入数据存储模块。
27.根据本公开的第三个方面一种在第一存储器和第二存储器之间交换数据的方法,其中,第一存储器包括至少一个数据存储芯片,每个数据存储芯片包括数据存储模块、数据处理模块和2m个数据引脚,m为正整数,在针对数据存储芯片的每次读操作中从数据存储模
块读取n位数据,并且/或者在针对数据存储芯片的每次写操作中向数据存储模块写入n位数据,n为正整数,数据处理模块以2n位数据为单次处理量对要写入数据存储模块的数据进行第一数据处理,并且/或者以2n位数据为单次处理量对从数据存储模块读出的数据进行第二数据处理,该方法包括:从第一存储器的数据存储芯片的数据存储模块读取第一组n位数据和第二组n位数据,送入数据存储芯片上的数据处理模块以进行第二数据处理;通过2m个数据引脚中的第一组m个数据引脚,获取来自第二存储器的第三组n位数据;通过2m个数据引脚中的第二组m个数据引脚,对外传输第一组n位数据,以便写入第二存储器;由第一存储器的数据存储芯片的数据处理模块对第三组n位数据和第二数据处理后的第二组n位数据进行第一数据处理;以及将第一数据处理后的第三组n位数据和第二组n位数写入第一存储器的数据存储芯片的数据存储模块。
28.可选地,第一组n位数据和第二组n位数据是先前写入数据存储模块时一同进行第一数据处理的2n位数据。
29.可选地,数据存储芯片的数据位宽为m,用于构建数据存储芯片的管芯与用于构建数据位宽为2m的数据存储芯片的管芯相同。第一组m个数据引脚被初始配置为用于支持m位数据位宽的读和写操作,第二组m个数据引脚被初始配置为不使用。该方法还可以包括:配置第二组m个数据引脚以用于对外传输第一组n位数据。
30.由此,通过本公开的技术方案,在对存储器上存储的数据进行数据交换操作时,能够显著减少数据移动处理,从而减少数据交换过程所耗费的时间。
附图说明
31.通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
32.图1具有片上ecc编解码模块的dram数据存储芯片的数据读写示意图。
33.图2是根据本公开具有片上ecc编解码模块的x4 dram数据存储芯片的数据读写示意图。
34.图3是根据本公开的存储器的示意性框图。
35.图4示出了根据本公开的存储器与外部设备进行数据交换的方法的流程图。
36.图5是根据本公开的混合存储器系统的示意性框图。
具体实施方式
37.下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
38.这里,首先以dram存储器为例,描述根据本公开的技术方案的总体技术构思。
39.发明人对dram存储器的数据读和数据写过程进行了仔细观察和分析,具体描述如下。
40.dram存储器上一般设置有多个数据存储芯片(或称为“存储器芯片”、“内存颗粒”、“dram数据存储芯片”)。根据dram协议,数据存储芯片的常见数据位宽有4位、8位、16位,分别记为“x4”、“x8”、“x16”。数据存储芯片的数据引脚(dq)数量与数据位宽相同。也即“x4”、“x8”、“x16”数据存储芯片分别通过4个、8个、16个数据引脚进行数据输入和输出。
41.一般而言,对于服务器系统而言,往往使用x4数据存储芯片。这是因为服务器系统对存储器的容量和可靠性的要求较高。
42.例如,对于一个通道(channel)64位,需要在dram存储器上放置16个x4数据存储芯片,而只放置8个x8数据存储芯片。同等条件下,x4数据存储芯片和x8数据存储芯片可以具有基本上相同的存储量。这样,相对于x8数据存储芯片,使用x4数据存储芯片可以使整个dram存储器具有更高的存储容量。
43.图1是具有片上ecc编解码模块的x4 dram数据存储芯片的常规数据读写示意图。
44.如图1所示,每个x4数据存储芯片具有多个存储库(bank)110,在本公开的上下文中也可以称为“数据存储模块”。例如,第三代双倍速率同步动态随机存储器(ddr3)具有8个存储库,第四代双倍速率同步动态随机存储器(ddr4)具有16个存储库,而第五代双倍速率同步动态随机存储器(ddr5)则具有高达32个存储库。
45.存储库的读写颗粒度,也即该芯片的读写颗粒度,为32位(32b)或64位(64b)。即在每次数据存储芯片的读/写过程中,数据存储芯片接收或输出32位或64位数据。对于ddr3和ddr4而言为32位,对于ddr5而言为64位。为便于描述,本公开中可以将这样一次读或写的32位或64位数据成为一组数据。
46.另一方面,第五代ddr5在数据存储芯片中实现了片上纠错编解码(on-die ecc),以提高芯片级的可靠性。
47.具体说来,片上ecc 120可以每次对128位(128b)输入数据进行纠错编码,生成附带的8位冗余ecc校验数据,并使用从存储库读出的相应128位数据(一同进行纠错编码的128位数据)和相应生成的8位ecc校验数据进行纠错解码,实现错误检查及纠错。
48.这样,对于ddr5,结合上述64位的读写颗粒度和128位ecc,这一机制要求在向dram数据存储芯片执行数据读出操作时,需要从存储库中超量取出数据。而在执行数据写入操作之前需要执行内部读操作。
49.换言之,为了执行片上128位ecc,必须使每组64位数据与另一组64位数据在内部相关联,以便一同进行128位的ecc编解码处理。
50.这样,在向dram数据存储芯片写入数据时,数据存储芯片为其片上ecc积累两组各64位数据,分别记为“a”和“b”,执行128位ecc编码,并得到8位校验数据,然后在存储库中存储该128位ecc编码后的两组各64位数据a和b以及8位校验数据。一同进行128位ecc编码的两组各64位数据可以认为是内部相关联的。
51.然后,当要从数据存储芯片的存储库中读取一组64位数据a时,需要将关联的这两组各64位数据a和b和相应的8位校验数据都读取到片上ecc模块中,以进行128位ecc解码,实现错误检查及纠错。然后将经过ecc纠错解码后的一组64位数据a通过其4个数据引脚(dq0、dq1、dq2、dq3)传输出去。
52.这里,数据引脚和片上ecc编解码模块之间可以具有对应于4个数据引脚的输入/输出缓存器130,以缓存要通过这4个数据引脚(dq0、dq1、dq2、dq3)向外传输或向内写入的一组64位数据。
53.另一方面,当经由数据存储芯片的4个数据引脚(dq0、dq1、dq2、dq3)新输入又一组64位数据c,存入这4个数据引脚(dq0、dq1、dq2、dq3)对应的输入/输出缓存器130,要将数据存储芯片的存储库110中存储的一组64位数据a替换为数据c时,需要使用先前存储的另一组64位数据b和新输入的又一组64位数据c进行128位ecc编码,并得到8位校验数据,然后在存储库110中存储该128位ecc编码后的两组各64位数据c和数据b以及8位校验数据,从而使得数据c和数据b内部相关联。而在使用数据b与数据c进行128位ecc编码之前,还需要先使用数据a和数据b进行128位ecc解码以至少对数据b进行错误检查和纠错。
54.换言之,为了将数据c写入存储库以替换数据a,需要先执行一次读取操作,从存储库110读取数据a和数据b以及对应的8位校验数据,再执行一次写入操作,将ecc编码后的数据c和数据b写入存储库。即,在数据存储芯片内部执行一读一写两次操作,实现对数据存储芯片的一次写入操作。
55.而对于在该dram存储器与外部设备(如cpu或混合存储器系统中的nvm)之间进行数据交换,例如要将dram上存储的一组64位数据a与来自外部设备的另一组64位数据c交换的情况下,需要首先按上述完整的读取操作过程读出数据a,经4个数据引脚(dq0、dq1、dq2、dq3)传输到外部设备,然后再经这4个数据引脚(dq0、dq1、dq2、dq3)接收来自外部设备的数据c,并按上述完整的写入操作过程将数据c写入存储库110。
56.具体说来,如上所述,在从存储库读取并向外传输数据a的过程中,需要从存储库额外读取数据b和8位校验数据以进行ecc解码校验。
57.而在写入新输入的数据c的过程中,需要首先从存储库110读取数据a和数据b,进行ecc解码校验后,再将经4个数据引脚输入的数据c与ecc解码校验后的数据b经ecc编码,写入存储库110。
58.本公开的发明人注意到,向dram存储器的存储库110写入数据c的过程中需要首先执行内部读操作。这样,从dram存储器读出数据a以向外部传输的过程和向dram存储器内部写入数据c的过程中,都需要执行从存储库110读取数据a的过程。换言之,数据a被读取两次。
59.换言之,在将数据c写入dram存储器的过程中,也会将要传输出去的数据a读取到片上ecc编解码模块。
60.基于这一观察结果,发明人提出,如果能够将数据交换过程中相互独立的读(数据a)操作和写(数据c)的操作组合为一次写操作,利用写操作中已经读取到片上ecc编解码模块120的数据a实现读数据a(并向外传输)的操作,则能够减少一次上述完整的读操作。
61.然而,与输入/输出(i/o)端口连接的4个数据引脚(dq0、dq1、dq2、dq3)(及其关联的i/o缓存130)已被新写入的数据c占用,因此不能用于将数据a传输出去。
62.为解决这一问题,发明人进一步观察和分析,并注意到dram数据存储芯片的生产厂商往往使用相同的管芯(die)来构建数据位宽为8位的x8 dram数据存储芯片(以下简称“x8芯片”)和数据位宽为4位的x4 dram数据存储芯片(以下简称“x4芯片”)。并且x8芯片与x4芯片也共享相同的封装。
63.换言之,在x4 dram数据存储芯片上同样具有8个数据引脚,只是在生产厂商的出厂初始设置中,将其中一组4个数据引脚设置为用于支持4位数据位宽的读和写操作,而另外一组4个数据引脚(及其对应的输入/输出缓存器)则未被使用。而与初始设置用于支持4
位数据位宽的读和写操作的一组4个数据引脚一样,未被使用的另外一组4个数据引脚也通过其对应的输入/输出缓存器连接到片上ecc编解码模块。这样,厂商只需要设计并生产一种管芯,并对其引脚进行初始配置,即可以相应得到x8芯片或x4芯片。
64.在x4芯片中,这4个未被使用的数据引脚可能被厂商出厂初始设置为禁用。但是,可以对其进行重新配置,以启用这4个数据引脚,来进行上述一组64位数据a的对外传输。
65.图2是根据本公开具有片上ecc编解码模块的x4 dram数据存储芯片的数据读写示意图。
66.这样,如图2所示,一组4个数据引脚(dq0、dq1、dq2、dq3)按原有的配置,接收外来的一组64位数据c,并缓存在其对应的输入/输出缓存器130中,以便在片上ecc编解码模块120与经过ecc解码校验的一组数据b一起进行128位ecc数据编码;另一组4个数据引脚(dq4、dq5、dq6、dq7)则按新的配置,在其对应的输入/输出缓存器140中缓存经过ecc解码校验的一组数据a,以向外输出。
67.这样,在一组4个数据引脚(dq0、dq1、dq2、dq3)从外部接收一组64位数据c之后,缓存在这一组4个数据引脚对应的输入/输出缓存器130中。
68.从存储库110中读取两组相关联的各64位数据a和数据b以及对应的8位校验数据,在片上ecc编解码模块120对其进行ecc解码校验,然后将数据a缓存到另一组4个数据引脚(dq4、dq5、dq6、dq7)对应的输入/输出缓存器140中。
69.由于两组各4个数据引脚及其对应的输入/输出缓存器是相互独立的,所以上述接收数据c并缓存在一组4个数据引脚(dq0、dq1、dq2、dq3)对应的输入/输出缓存器130中的操作,与读取数据a和数据b直到将数据a缓存到另一组4个数据引脚(dq4、dq5、dq6、dq7)对应的输入/输出缓存器140中的操作,两者可以是独立的,其执行顺序可以任意调整,也可以并行。
70.然后,可以将数据c从输入/输出缓存器130送到片上ecc编解码模块120,以便与数据b进行128位ecc编码,得到8位校验数据,再将ecc编码后的数据c和数据b,以及对应的8位校验数据写入到存储库110中。
71.而另一组4个数据引脚(dq4、dq5、dq6、dq7)对应的输入/输出缓存器140中缓存的数据a则可以通过输入/输出端口传输出去,例如发送到上述外部设备。
72.由此,通过基本上相当于原来仅一次完整的写入操作的操作处理量,实现了原本需要一次完整的读出操作加一次完整的写入操作才能完成的数据交换处理。
73.应当理解,上述具体存储器的类型以及相应各个具体数字等内容,都只是可以实现本公开技术方案的具体实施例的一些具体细节。本公开的技术方案不限于这些具体的细节。
74.只要存储器在其完整的写入操作中,需要先执行读取操作,然后经过对所读取的数据进行处理(或修改)后,再进行写入操作,并且该存储器具有未使用的数据引脚,便可以实施根据本公开的技术方案。
75.另外,上文中以对数据进行ecc编解码处理为例进行了描述。应当理解,在对数据进行其它处理的情形下,本公开的技术方案也一样可以实施。
76.由此,本公开提出了一种存储器。
77.图3示意性地示出了根据本公开的存储器的示意性框图。
78.该存储器300包括至少一个数据存储芯片310。每个数据存储芯片310包括数据存储模块311(例如可以包括多个存储库(bank))、数据处理模块312和2m个数据引脚313、314。m为正整数,在上述x4芯片的实施例中,m=4。
79.数据存储芯片310的设定数据位宽为m,即通过m个数据引脚进行数据输入/输出操作。但是数据存储芯片310上设置有2m个数据引脚。
80.在一些实施例中,用于构建数据存储芯片310的管芯与用于构建数据位宽为2m的数据存储芯片的管芯相同。因此,数据位宽为m的数据存储芯片310上额外预备了m个数据引线。即,第一组m个数据引脚313被初始配置为用于支持m位数据位宽的读和写操作,而第二组m个数据引脚314则被初始配置为不使用。
81.这样,在实施例中,可以将第二组m个数据引脚314重新配置以用于对外传输第一组n位数据。
82.在针对数据存储芯片310的每次读操作中,从数据存储模块311读取n位数据。在针对数据存储芯片310的每次写操作中,向数据存储模块3110写入n位数据。n为正整数。在上述实施例中,n=64。
83.数据处理模块312以2n位数据为单次处理量,对要写入数据存储模块311的数据进行第一数据处理,并以2n位数据为单次处理量对从数据存储模块311读出的数据进行第二数据处理。
84.第二数据处理可以是第一数据处理的逆处理。相应地,第二数据处理需要针对先前执行第一数据处理时所针对的相同的2n个数据进行。
85.在上述实施例中,第一数据处理是ecc纠错编码,第二数据处理是ecc纠错解码,数据处理模块是片上ecc纠错编解码模块。
86.图4示出了根据本公开的存储器与外部设备进行数据交换的方法的流程图。
87.该外部设备可以是cpu。或者,该外部设备也可以是另一个存储器,如与存储器300同属于一个混合存储器系统的非易失性存储器。
88.如图4所示,在步骤s410,从数据存储模块311读取第一组n位数据和第二组n位数据,送入数据处理模块312以进行第二数据处理。
89.这里,第一组n位数据和第二组n位数据可以是先前写入数据存储模块310时一同进行第一数据处理的2n位数据。
90.在步骤s420,通过2m个数据引脚中的第一组m个数据引脚313,从外部设备接收第三组n位数据。
91.在送往数据处理模块312进行第二数据处理之前,可以将第三组n位数据缓存在第一组m个数据引脚313对应的输入/输出缓存器中。
92.在步骤s430,通过2m个数据引脚中的第二组m个数据引脚314,向外部设备传输第一组n位数据。
93.在步骤s440,由数据处理模块312对第三组n位数据和第二数据处理后的第二组n位数据进行第一数据处理。
94.在步骤s450,将第一数据处理后的第三组n位数据和第二组n位数据写入数据存储模块。
95.应当理解,上述步骤s410与步骤s420的执行顺序可以不分先后,也可以并行执
行。;上述步骤s430与步骤s440、s450的执行顺序也可以不分先后,也可以并行执行。
96.根据本公开的存储器可以与另一个存储器例如非易失性存储器共同形成混合存储器系统。
97.图5是根据本公开的混合存储器系统的示意性框图。
98.如图5所示,该混合存储器系统可以包括第一存储器510和第二存储器520。
99.第一存储器510可以为上面参考图3描述的根据本公开的存储器300。第一存储器与第二存储器之间进行数据交换操作时,可以按上文中参考图4描述的方法进行操作。
100.第一存储器的数据读写速度可以比第二存储器的数据读写速度快。
101.第一存储器可以为易失性存储器,而第二存储器则可以为非易失性存储器。
102.更进一步地,第一存储器可以为双倍速率同步动态随机存储器dram,而第二存储器可以为非易失性存储器nvm。
103.该混合存储器系统可以用于服务器,以满足服务器对存储器的高容量及高可靠性的要求。
104.上文中已经参考附图详细描述了根据本公开的存储器及其在数据交换过程中可以执行的数据读写方案。
105.通过根据本公开的技术方案,在执行数据交换时,将原本需要一次完整的读操作和一次完整的写操作的过程,简化为仅需要一次完整的写操作,显著减少了存储器与外部设备如混合存储器系统用的另一个存储器进行数据交换时的时间消耗,进一步提升了存储器的运行速度和性能。
106.本领域技术人员将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
107.附图中的流程图和框图显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
108.以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1