本发明涉及存储技术,尤其涉及一种支持部分写的ecc内存及数据部分写入的方法。
背景技术:
由于易失性内存很广泛地应用于主控芯片中,为了确保主控芯片是长期可靠且运作稳定,适当地纠错机制是必需的。
由于不同资料属性,内存的写入有可能是部分写(partialwrite),又考虑系统运作的稳定性加上了纠错机制,部分写的操作必须分为3个步骤“读——修改——写”,部分写的操作相比常规的写和读操作来说,多出一次对存储器的访问,而这个多出来的一次访问会给之后的读或写操作造成地址冲突,从而给使用者造成困扰。
技术实现要素:
本发明的目的在于克服现有技术的缺陷,提供一种支持部分写的ecc内存,引入了读标志位rmw_flag来为部分写指令获取额外操作存储器的时钟周期,解决由部分写带来的地址冲突问题。
为实现上述目的,本发明提出如下技术方案:一种支持部分写的ecc内存,包括:
一指令处理模块,与外部电路进行通信,接收外部电路发送过来的新指令,并分析判断新指令是否为部分写指令,所述指令处理模块内设有指令标志位rmw_flag,所述指令标志位具有0和1两种状态,0表示可以接收新的指令,1表示不可以接受新的指令:
一指令缓存模块,与指令处理模块连接,在指令标志位为1时缓存待执行的指令;
一存储模块;
一控制信号模块,分别与指令处理模块及存储模块连接,根据指令处理模块发送的控制信号,控制存储模块进行存储或读取操作,同时反馈完成信号给指令处理模块;
一编码模块,分别与指令处理模块及存储模块连接,对指令处理模块输入的逻辑字编码,生成对应的奇偶校验位与逻辑字组成物理字送入存储模块;
一译码模块,分别与指令处理模块及存储模块连接,从存储模块中读取物理字进行解码纠错生成纠错码,将解码后的逻辑字和纠错码传送给指令处理模块。
优选的,所述部分写指令包括读、修改和写三个操作。
优选的所述纠错码为扩展汉明码。
一种ecc内存中数据部分写入的方法,包括如下步骤:
a、指令处理模块收到外部新指令,读取指令标志位rmw_flag的值,若为1就将新指令送入指令缓存模块内,等待下一次接收,若为0则接收新指令,并执行步骤b;
b、指令处理模块读取新指令中数据位的使能信号,若该使能信号全部有效,表示该指令不是部分写指令,则执行步骤c,若该使能信号部分有效,表示该指令为部分写指令,执行步骤f;
c指令处理模块将指令中的控制信号发送给控制信号模块送入存储模块,而将指令中的逻辑字送至编码模块进行编码;
d、编码模块将逻辑字进行编码,并送入存储模块进行存储;
e、控制信号模块反馈操作完成信号给指令处理模块,完成新指令写入,返回步骤a;
f、指令处理模块发送读命令,根据译码模块提供的数据字为基础,根据部分写命令修改数据字内容,再发送写命令,执行步骤g,同时将指令标志位设置为1,
g、指令处理模块将修改后的数据字送入编码器进行编码,并送入存储模块进行存储,同时指令处理模块将部分写指令中的控制信号发送给控制信号模块送入存储模块;
h、控制信号模块反馈操作完成信号给指令处理模块,完成部分写指令的写入,将指令标志位设置为0,返回步骤a。
作为优选,所述步骤c中控制信号包括读信号或写信号及地址信号。
作为优选,所述步骤d中编码模块对逻辑字进行编码,输出逻辑字以及与之对应的奇偶校验位。
作为优选,所述步骤f中译码模块读取存储模块的物理字,根据编码表对逻辑字进行ecc操作,生成纠错码连同逻辑字形成数据字送入指令处理模块。
与现有技术相比,本发明所揭示的一种支持部分写的ecc内存,在处理模块中引入读标志位rmw_flag,为部分写指令获取额外操作存储器的时钟周期,解决由部分写带来的地址冲突问题,实现内存的部分写入操作。
附图说明
图1是本发明的内存模块图;
图2是本发明涉及的组织物理字的框图;;
图3是本发明中指令处理模块的判断分析流程。
具体实施方式
下面将结合本发明的附图,对本发明实施例的技术方案进行清楚、完整的描述。
如图1所示,本发明所揭示的一种支持部分写的ecc内存,包括指令处理模块,指令缓存模块,存储模块,控制信号模块,编码模块及译码模块,其中:
指令处理模块,与外部电路进行通信,接收外部电路发送过来的新指令(包括常规读写指令和部分写指令),该指令处理模块中设置了指令标志位rmw_flag来判断是否可以接收新指令,该指令标志位具有0和1两个状态,0表示可以接受新指令,而1表示内部将要执行部分写指令,无法接收新指令,此外指令处理模块还可以对接收的指令进行分析,通过读取数据的位使能信号的有效程度来判断指令类别。
所述指令缓存模块与指令处理模块连接,在指令标志位为1时,指令处理模块无法执行读指令,而在这个时钟周期内外部输入的指令无法被立即处理,则送入指令缓存模块中缓存,缓存的指令信息包括读/写,地址,数据,选通信号,而当指令处理模块可以接收新指令时,优先处理缓存模块中的指令,而对于新送入指令的则依次存放至指令缓存模块内。
此外,由于部分写操作对存储模块更新的始终延迟比一般的读写操作多若干个(设为m个),倘若在一个部分写命令后的m个时钟周期内对同一地址进行读操作,存储模块输出的是就数据,而不是更新后的新数据,则指令缓存模块发送警告信号给指令处理模块进行处理。
所述存储模块用于存储电路中的相关指令信息。
所述控制信号模块分别与指令处理模块及存储模块连接,根据指令处理模块发送的控制信号(包括读/写,地址),控制存储模块进行存储或读取操作,同时反馈完成信号(包括读完成和地址)给指令处理模块。
所述编码模块分别与指令处理模块及存储模块连接,对指令处理模块输入的逻辑字进行编码,生成对应的奇偶校验位与逻辑字组成物理字送入存储模块;
所述译码模块分别与指令处理模块及存储模块连接,根据扩展汉明码译码原理,从存储模块中读取物理字进行译码,输出经过纠错的数据字及其检错结果(有0/1/2比特出错),所数据字由逻辑字和纠错码组成,而纠错码是扩展汉明码。
所述部分写指令包括读、修改和写三个操作,其中读是通过译码模块读取存储模块中原先的数据字,修改是指令处理模块根据原先的数据字再结合部分写指令进行数据字修改,写是通过编码模块将修改后的数据字重新编码送入存储模块。
如图2所示,存储模块中物理字总共13位,包括8位数据位(d0~d7),4位纠错码(h0~h3)及1位奇偶校验位(p)。
本发明揭示一种ecc内存中数据部分写入的方法,包括如下步骤:
a、指令处理模块收到外部新指令,读取指令标志位rmw_flag的值,若为1就将新指令送入指令缓存模块内,等待下一次接收,若为0则接收新指令,并执行步骤b(如图3所示);
b、指令处理模块读取新指令中数据位的使能信号,若该使能信号全部有效,表示该指令不是部分写指令,则执行步骤c,若该使能信号部分有效,表示该指令为部分写指令,执行步骤f(如图3所示);
c指令处理模块将指令中的控制信号发送给控制信号模块送入存储模块,而将指令中的逻辑字送至编码模块进行编码;
d、编码模块将逻辑字进行编码,并送入存储模块进行存储;
e、控制信号模块反馈操作完成信号给指令处理模块,完成新指令写入,返回步骤a;
f、指令处理模块发送读命令,根据译码模块提供的数据字为基础,根据部分写命令修改数据字内容,再发送写命令,执行步骤g,同时将指令标志位设置为1,
g、指令处理模块将修改后的数据字送入编码器进行编码,并送入存储模块进行存储,同时指令处理模块将部分写指令中的控制信号发送给控制信号模块送入存储模块;
h、控制信号模块反馈操作完成信号给指令处理模块,完成部分写指令的写入,将指令标志位设置为0,返回步骤a。
所述步骤c中控制信号包括读信号或写信号及地址信号;所述步骤d中编码模块对逻辑字进行编码,输出逻辑字以及与之对应的奇偶校验位;所述步骤f中译码模块读取存储模块的物理字,根据编码表对逻辑字进行ecc操作,生成纠错码连同逻辑字形成数据字送入指令处理模块。
在部分写操作下,第一个读操作也有相应的译码操作,类似地,ecc输出译码模块输出数据及检错或纠错的记录;不同地,在部分写的情况下,第三笔写操作会将译码过程的纠错结果代入,这时位选信号全部有效,即自动纠正存储模块内的单比特错误。
本发明改进了ecc存储器的存储方式,增加了对部分写的支持,并解决了由部分写带来的地址冲突问题,使其在部分写的情况下不影响纠错码的纠错功能,以及后续读写操作。
本发明的技术内容及技术特征已揭示如上,然而熟悉本领域的技术人员仍可能基于本发明的教示及揭示而作种种不背离本发明精神的替换及修饰,因此,本发明保护范围应不限于实施例所揭示的内容,而应包括各种不背离本发明的替换及修饰,并为本专利申请权利要求所涵盖。