ECC存储器存储不同长度数据的方法

申请号 CN201310536363.2 申请日 2013-10-31 公开(公告)号 CN103559914B 公开(公告)日 2016-03-23
申请人 西安紫光国芯半导体有限公司; 发明人 亚历山大; 付妮;
摘要 本 发明 提供一种ECC 存储器 存储不同长度数据的方法,该方法虽然未对ECC存储器存储阵列物理上进行 修改 ,但仍然能灵活选择存储不同长度的数据并进行ECC操作。存储阵列在存储器中占据了大部分的面积,该ECC存储器存储不同长度数据的方法在不改变存储阵列的情况下,可灵活地利用ECC的编解码规则满足不同长度的数据进行ECC操作的需求。
权利要求

1.一种ECC存储器存储不同长度数据的方法,其特征在于,包括以下步骤:
n
1]判断存入的数据长度是否与ECC存储器存储阵列数据长度相同为M位或为其1/2n
倍,n为自然数,若长度相同,则进入步骤2处理,若为1/2倍,则进入步骤3处理,若小于Mn
位但不等于1/2倍,则进入步骤4处理;
2]此时的ECC存储器与一般的ECC存储器相同,用M位存储数据产生长度为k的监督位并同时存入存储阵列;
n
3]将1/2倍长度的数据存入存储阵列中的一部分,原长度为k的监督位的部分存储位n n
置用来存储此1/2倍数据的监督位,原监督位的剩余位为1/2 倍长度的数据相对应的监督位的位置判断位,监督位用于进行ECC操作验证其存储数据是否正确,位置判断位用于判n
断此监督位对应的数据位在存储阵列中的存储位置;此1/2倍数据以外的存储阵列可以用于存储没有相应的监督位的数据;
4]将小于M位的数据存入存储阵列中的一部分,原长度为k的监督位的部分存储位置用来存储此数据的监督位,原监督位的剩余位为小于M位的数据相对应的监督位的位置判断位,监督位用于进行ECC操作验证其存储数据是否正确,位置判断位用于判断此监督位对应的数据位在存储阵列中的存储位置;如果数据长度小于M/2位,此数据以外的存储阵列仍然可以继续存储相同长度的数据位,只是这些数据位没有相应的监督位;如果数据长度大于M/2位,将不能再进行存储。
2.根据权利要求1所述的ECC存储器存储不同长度数据的方法,其特征在于:所述ECC存储器存储阵列的数据长度为8、16、32、64、128、256位,监督位为4、5、6、7、8、9、10位。

说明书全文

ECC存储器存储不同长度数据的方法

技术领域

[0001] 本发明涉及一种不同数据长度的存储方法,主要用于固定长度的ECC存储器存储不同长度的数据。

背景技术

[0002] 对于存储器来说,ECC常采用线性码(linear codes),而出于对出错率和修复成本的折中考虑,最常见的是线性码中的SEC/DED(single error correcting/double error detecting一位纠正两位检测)码。以64位数据长度为例,可采用(72,64)的SEC/DED码,其中64表示数据位长度,72表示数据位长度和监督位长度之和,也就是说监督位长度是8,可用图1表示。其中,存储阵列被分为两部分,存储数据位的存储阵列A和存储监督位的存储阵列B;如果以存储量来分的话,可分为9个部分,存储数据位的存储阵列A7~A0和存储监督位的存储阵列B,每部分能存储8位数据。
[0003] 当系统工作在不同模式下时,可能需要不同的数据位长度,例如32位,此时就不能用上面所提到的(72,64)码,而存储器的存储阵列一但固定就不能在物理上进行修改,所以在以上存储阵列的基础上可以做改进以支持不同的数据位长度的要求。

发明内容

[0004] 本发明提供一种ECC存储器存储不同长度数据的方法,该方法虽然未对ECC存储器存储阵列物理上进行修改,但仍然能灵活选择存储不同长度的数据并进行ECC操作。
[0005] 本发明的具体技术解决方案如下:
[0006] 该ECC存储器存储不同长度数据的方法,包括以下步骤:
[0007] 1]判断存入的数据长度是否与ECC存储器存储阵列数据长度相同为M位或为其n n1/2倍,n为自然数,若长度相同,则进入步骤2处理,若为1/2 倍,则进入步骤3处理,若小n
于M位但不等于1/2倍,则进入步骤4处理;
[0008] 2]此时的ECC存储器与一般的ECC存储器相同,用M位存储数据产生长度为k的监督位并同时存入存储阵列;
[0009] 3]将1/2n倍的数据存入存储阵列中的一部分,原长度为k的监督位的部分存储位n置用来存储此1/2倍数据的监督位,原监督位的剩余位为该组数据的位置判断位,监督位用于进行ECC操作验证其存储数据是否正确,位置判断位用于判断此监督位对应的数据位n
在存储阵列中的存储位置;此1/2倍数据以外的存储阵列仍然可以存储数据位,只是这些数据位没有相应的监督位;
[0010] 4]将小于M位的数据存入存储阵列中的一部分,原长度为k的监督位的部分存储位置用来存储此数据的监督位,原监督位的剩余位为该组数据的位置判断位,监督位用于进行ECC操作验证其存储数据是否正确,位置判断位用于判断此监督位对应的数据位在存储阵列中的存储位置;如果数据长度小于M/2位,此数据以外的存储阵列仍然可以继续存储相同长度的数据位,只是这些数据位没有相应的监督位;如果数据长度大于M/2位,将不能再进行存储。
[0011] 本发明的优点在于:
[0012] 存储阵列在存储器中占据了大部分的面积,该ECC存储器存储不同长度数据的方法在不改变存储阵列的情况下,可灵活地利用ECC的编解码规则满足不同长度的数据进行ECC操作的需求。附图说明
[0013] 图1为存储阵列存储原理示意图;
[0014] 图2为本发明存储原理示意图。

具体实施方式

[0015] 以数据位长度从64位变到32位为例,可以选用(39,32)的SEC/DED码,其中数据位长度为32位,监督位长度为7位,存储阵列也变为图2中的对应关系。由于一次只需要32位数据,数据位由d<63:0>变为两组32位数据d0<31:0>和d1<31:0>,相应的数据位存储阵列也变为两部分,A0(包含4个小存储阵列A0_3~A0_0)和A1(包含4个小存储阵列A1_3~A1_0),每个小存储阵列依旧存储8位数据,监督位存储阵列不变。监督位p<7:0>中,对于32位数据长度只需要7位监督位,剩余的一位可作为判断位,如果用低7位p<6:0>作为监督位,那最高位p<7>可用来做判断位用来判断这7位监督位对应的是d0还是d1的32位数据。例如,可定义当p<7>=0时,表示监督位对应d0<31:0>的32位数据位;当p<7>=1时,表示监督位对应d1<31:0>的32位数据位。当外部写入d0<31:0>时,ECC编码产生p<6:0>,并且与p<7>=0一起写入存储阵列;读出d0<31:0>时,ECC解码先判断p<7>所存的值,如果是“0”,则用相应的p<6:0>进行解码和纠正操作。
[0016] 对于256位/128位/16位/8位等以及其它数据位长度的数据,只要其长度适宜分割并且有相对应的ECC码(不限于SEC/DED码)均可以使用此方法。例如以上例子如果不是分割成32位而是分割成16位数据位长度d3<15:0>/d2<15:0>/d1<15:0>/d0<15:0>,那数据位存储阵列相应可分割成4个相同的部分A3/A2/A1/A0。每16位数据需要6位监督位,剩余的2位监督位可用来判断监督位相对应的数据位属于哪部分存储阵列。例如p<5:0>作为监督位,p<7:6>作为判断位,当p<7:6>=00,对应存储阵列A0和数据d0<15:0>;当p<7:6>=01,对应存储阵列A1和数据d1<15:0>;当p<7:6>=10,对应存储阵列A2和数据d2<15:0>;当p<7:6>=11,对应存储阵列A3和数据d3<15:0>。
QQ群二维码
意见反馈