一种存储访问控制系统、方法、芯片及存储介质与流程

文档序号:35779116发布日期:2023-10-21 14:31阅读:26来源:国知局
一种存储访问控制系统、方法、芯片及存储介质与流程

本技术涉及数据存储,特别是涉及一种存储访问控制系统、方法、芯片及存储介质。


背景技术:

1、在数据中心中,为了提高存储系统的安全性,通常会使用单位错误可纠正、双位错误可检测(single error correction, double error detection,secded)技术,对存储在设备中的数据添加冗余校验码(error correction code,ecc)。这一技术常用于同步动态随机存取内存(synchronous dynamic random-access memory,sdram)等设备中,以便在存储在sdram中的数据发生错误时进行纠错或检测。

2、举例来说,在采用ddr5(第5代双倍速sdram)规范的设备中,一个子通道的数据位宽为32位(比特)。因此,将需要存储到sdram中的数据按照32位进行分组,并对每一组32位数据进行secded编码,生成7位的冗余校验码。这7位的冗余校验码与原始的32位数据一同存储到sdram中。在从sdram中读取数据时,会将每组32位的数据与对应的7位冗余校验码一同读取回来。如果每组数据中出现1位错误,可以进行纠正;如果出现2位错误,可以进行检测并上报。

3、如图1所示,示出了现有ddr5中32位子通道ecc编码的示意图。其中,数据部分被分配到了8片半字节位宽的sdram颗粒中(用x4 sdram表示),而7位的冗余校验码存在2片半字节位宽的sdram颗粒中。这里的x4表示该类型的sdram的位宽为半字节(即4位),可以进行4位并行传输。

4、如图2所示,示出了现有的ddr5中32位子通道可纠错系统的框图。其存储器控制器中包含32+7个ecc编码器和32+7个ecc解码器。经过ecc编码的数据利用数据分组器被分为8组(s0~s7),每组半字节;然后将7位的ecc数据分为两组(e0~e1),不足4位的可以补充1位的0或1。该系统中共使用了10片半字节位宽的sdram,其中d0~d7是8片半字节位宽的sdram,用于存放按照半字节分组后的32位数据。而d8~d9是2片半字节位宽的sdram,用于存放按照半字节分组后的7位ecc数据(可以补充1位冗余位,以凑成8位)。此外,框图中还包含一个寄存器控制模块,方便软件通过配置寄存器的方式来控制各个模块。

5、然而,现有的这种方案中存在一些不足之处。如果有一片sdram颗粒出现故障,则存储系统的整个通道就无法使用。例如,在图中的d0~d9中,任何一片sdram出现故障,当ecc要求存在时,数据将无法正确存储。

6、另外,多个sdram颗粒通常会以双列直插式存储模块(dual-inline-memory-modules,dimm)的形式组成终端产品。如果一条dimm上的多片sdram中有一片发生故障,整个dimm条将无法使用,导致一定程度的资源浪费。若sdram采用直接焊接在pcb板上的方式,一旦出现sdram故障,整块pcb板将无法继续使用,造成很大程度的资源浪费。


技术实现思路

1、本技术所要解决的技术问题在于,提供一种存储访问控制系统、方法、芯片及存储介质。可以在存在sdram坏片时,不影响对存储的读写访问,可以提高数据的安全性,以及降低维护成本。

2、为解决上述技术问题,作为本技术的一方面,提供一种存储访问控制系统,其至少包括:

3、坏片检测模块,用于检测一个存储通道中所有sdram片中是否存在坏片;

4、编码选择器,用于根据坏片检测模块检测结果选择第一ecc编码器或第二ecc编码器使能;

5、第一ecc编码器及第二ecc编码器,分别用于采用对应的编码方式对输入的原始数据进行ecc编码处理;

6、分组器,用于将ecc编码处理后的数据进行分组,形成多个半字节数据片,以写入对应的多个sdram片中;或从多个sdram片中获得多个半字节数据片;

7、解码选择器,用于根据编码选择器的选择结果,选择相对应的第一ecc解码器或第二ecc解码器使能;

8、第一ecc解码器及对第二ecc解码器,分别用于采用对应的编码方式对来自所述分组器的多个半字节数据片进行解码处理;

9、半字节选择器,其中包含多个选择器,用于确定各正常sdram片与分组器中各半字节数据片之间的一一对应关系;

10、读写控制模块,用于根据半字节选择器所确定的对应关系,将多个半字节数据片写入各正常sdram片中,或从所述各正常sdram片中读出多个半字节数据片。

11、其中,所述编码选择器进一步用于:

12、在坏片检测检测结果为不存在坏片时,选择第一ecc编码器使能,选择第二ecc编码器禁使能;在坏片检测结果为存在坏片时,选择第二ecc编码器使能,选择第一ecc编码器禁使能;

13、其中,所述第一ecc编码器为接收32位数据生成7位ecc码的ecc编码器;所述第二ecc编码器为接收64位数据生成8位ecc码的ecc编码器。

14、其中,所述分组器进一步用于:

15、在不存在坏片时,将所述32位数据及7位ecc数据,分组形成10个半字节数据片;或在存在坏片时,将所述64位数据及8位ecc数据,分组形成18个半字节数据片。

16、其中,所述解码选择器进一步用于:

17、在当前使能的ecc编码为第一ecc编码器时,选择第一ecc解码器使能;在当前使能的ecc编码为第二ecc编码器时,则选择第二ecc解码器使能;其中,第一ecc解码器为32位数据对应7位ecc码的解码器,第二ecc解码器为64位数据对应8位ecc码的解码器。

18、其中,所述读写控制模块进一步包括:

19、第一写单元,用于在不存在坏片时,所述正常sdram片为10片,确定10片正常sdram片与10个半字节数据片之间的一一对应关系,将来自第一ecc编码且经分组器分组后的所述10个半字节数据片分别写入所述10片sdram片中;

20、第二写单元,用于在存在坏片时,所述正常sdram片为9片,将来自第二ecc编码器且经分组后的所述18个半字节数据片分成两批,确定9片正常sdram片与每批中9个半字节数据片之间的一一对应关系,将所述18个半字节数据片分两批分别写入所述9片sdram片中。

21、第一读单元,用于在不存在坏片时,从10片正常sdram片中读出10个半字节数据片,经分组器发送给所述第一ecc解码器;

22、第二读单元,用于在存在坏片时,从9片正常sdram片中分两批读出18个半字节数据片,经分组器分送给所述第二ecc解码器。

23、其中,进一步包括:

24、寄存器控制模块,用于产生ecc编码选择控制信号、ecc解码选择控制信号以及各ecc编码器和ecc解码器的使能和禁用信号。

25、相应地,本技术的实施例,还提供一种存储访问控制方法,其至少包括如下步骤:

26、检测一个存储通道中所有sdram片中是否存在坏片;

27、根据坏片检测结果,选择第一ecc编码器或第二ecc编码器使能;

28、采用所选择的第一ecc编码器或第二ecc编码器,以其对应的编码方式对输入的原始数据进行ecc编码处理;

29、将ecc编码处理后的数据进行分组,形成多个半字节数据片;

30、确定各正常sdram片与分组器中各半字节数据片之间的一一对应关系,将所述多个半字节数据片写入对应的各正常sdram片中。

31、其中,进一步包括步骤:

32、从各正常sdram片中获得多个半字节数据片,根据所述一一对应关系,将所述多个半字节数据片存入分组器;

33、根据当前使能的ecc编码器选择相对应的第一ecc解码器或第二ecc解码器使能,对来自各正常sdram片的多个半字节数据片进行解码处理。

34、其中,所述根据坏片检测模块检测结果选择第一ecc编码器或第二ecc编码器使能,进一步包括:

35、在坏片检测检测结果为不存在坏片时,选择第一ecc编码器使能,选择第二ecc编码器禁使能;

36、在坏片检测结果为存在坏片时,选择第二ecc编码器使能,选择第一ecc编码器禁使能;

37、其中,所述第一ecc编码器为接收32位数据生成7位ecc码的ecc编码器;所述第二ecc编码器为接收64位数据生成8位ecc码的ecc编码器。

38、其中,所述采用所选择的第一ecc编码器或第二ecc编码器,以其对应的编码方式对输入的原始数据进行ecc编码处理,进一步包括:

39、在采用第一ecc编码器时,将每接收到的32位进行编码生成7位ecc码;

40、在采用第二ecc编码器时,将每接收到的64位进行编码生成8位ecc码。

41、其中,所述将ecc编码处理后的数据进行分组,形成多个半字节数据片,进一步包括:

42、在不存在坏片时,将所述32位数据及7位ecc数据,分组形成10个半字节数据片;或

43、在存在坏片时,将所述64位数据及8位ecc数据,分组形成18个半字节数据片。

44、其中,确定各正常sdram片与分组器中各半字节数据片之间的一一对应关系,将所述多个半字节数据片写入对应的各正常sdram片中,进一步包括:

45、在不存在坏片时,所述正常sdram片为10片,确定10片正常sdram片与10个半字节数据片之间的一一对应关系,将的所述10个半字节数据片分别写入所述10片sdram片中;

46、在存在坏片时,所述正常sdram片为9片,将所述18个半字节数据片分成两批,确定9片正常sdram片与每批中9个半字节数据片之间的一一对应关系,将所述18个半字节数据片分两批分别写入所述9片sdram片中。

47、其中,根据当前使能的ecc编码器选择相对应的第一ecc解码器或第二ecc解码器使能,对来自各正常sdram片的多个半字节数据片进行解码处理,进一步包括:

48、在当前使能的ecc编码为第一ecc编码器时,选择第一ecc解码器使能;并从10片正常sdram片中读出10个半字节数据片,经分组器发送给所述第一ecc解码器,进行解码处理;

49、在当前使能的ecc编码为第二ecc编码器时,则选择第二ecc解码器使能;并从9片正常sdram片中分两批读出18个半字节数据片,经分组器发送给所述第二ecc解码器进行解码处理。

50、相应地,本技术的再一方面,还提供一种芯片,其至少包括有一内存控制器,所述内存控制器部署有如前述的系统。

51、相应地,本技术的再一方面,还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如前述的方法的步骤。

52、实施本技术实施例,具有如下的有益效果:

53、本技术提供一种存储访问控制系统、方法、芯片及存储介质。通过设置半字节选择器,可以灵活地确定和正常sdram片与完成ecc编码后各半字节数据片之间的一一对应关系。同时,针对sdram片是否出现坏片,能够选择不同的ecc编码器和ecc解码器。实施本技术方案,即能兼顾没有sdram坏片时的传输方案,又能在有sdram坏片时通过切换到其他ecc编码方式灵活的将数据存到剩余的正常的sdram中。实施本技术方案,即使存储系统中出现一片sdram坏掉的情形,整个存储系统依然可以继续使用,大大降低了因为sdram坏片带来的损失,从而可以提高数据的安全性,以及降低维护成本。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1