CN100399287C - 数据错误检查方法及相关装置 - Google Patents

数据错误检查方法及相关装置 Download PDF

Info

Publication number
CN100399287C
CN100399287C CNB2004100879212A CN200410087921A CN100399287C CN 100399287 C CN100399287 C CN 100399287C CN B2004100879212 A CNB2004100879212 A CN B2004100879212A CN 200410087921 A CN200410087921 A CN 200410087921A CN 100399287 C CN100399287 C CN 100399287C
Authority
CN
China
Prior art keywords
data
module
subdata
many
check
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CNB2004100879212A
Other languages
English (en)
Other versions
CN1601481A (zh
Inventor
林景祥
江蕙如
丁杰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Priority to CNB2004100879212A priority Critical patent/CN100399287C/zh
Publication of CN1601481A publication Critical patent/CN1601481A/zh
Application granted granted Critical
Publication of CN100399287C publication Critical patent/CN100399287C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明提供一种在存取存储器时进行数据错误检查/校正的方法及相关装置。在优选实施例中,本发明可在同一时钟周期取得多笔数据及多笔检查码,而这多笔数据可视为一整体数据,多笔检查码则可视为一整体的检查数据;利用此一检查数据,就可检查/校正该整体数据,等效上也就是检核原先的多笔数据。举例来说,在存取32位数据架构的双倍数据率存储器时,本发明就可将同一时钟周期中取得的两笔32位数据视为一笔64位的数据,并沿用64位数据/8位检查码的算法来实现32位架构下的错误检核。

Description

数据错误检查方法及相关装置
技术领域
本发明提供一种数据错误检查方法及相关系统,尤指一种在存取高倍数据率的存储器时进行错误检查/校正的方法及相关系统。
背景技术
在现代信息社会中,电脑系统已经被广泛运用于社会生活的每一方面,除了个人电脑、服务器等一般应用外,像是提款机(ATM)等金融服务的终端机,某些多功能的物品/票证贩售机以及各种信息家电中,也都设有嵌入式架构的电脑系统。在不同的应用下,不同的电脑系统也可能会有不同的系统需求。举例来说,个人电脑/服务器比较讲求高效能与扩充性;相较之下,提款机等金融服务终端机则较为注重数据存取的正确性,不需讲究极致的效能,以换取成本的降低。而要如何满足不同电脑系统的不同需求,也就成为信息厂商的研发重点之一。
如本领域技术人员所知,电脑系统中会设有中央处理器、存储器、芯片组,以搭配其他的外围设备(像是非易失性存储的硬盘、光盘、输出入接口、网络存取装置)来实现电脑系统的整体功能。其中,中央处理器主控电脑系统的运行,负责程序执行、数据处理及数据运算,存储器(像是随机存取存储器)则用来储存中央处理器运行期间所需的程序、资料及数据。而设于中央处理器、存储器之间的芯片组,就是用来管理中央处理器(或其他装置)对存储器的数据存取。另外,芯片组中还可实现错误检查/校正(errorchecking/correction)的机制,确保存储器数据存取的正确性。
在现行的主流存储器架构(像是个人电脑的存储器架构)下,芯片组可通过一个具有64条并行线的总线来存取存储器中的数据。也就是说,在同一时间内,集合每条并行线所分别传输的一位,芯片组就能通过此总线存取一笔64位的数据。配合64位的数据,现在已经发展出「64位数据/8位错误检查码」的算法,以根据64位的数据算出8位的错误检查码,实现错误检查/校正的机制。换句话说,在此种机制下,存储器/芯片组之间的总线除了要以64条并行线来传输一般的数据外,还要另外设有8条并行线来传输8位的错误检查码。
在现有的错误检核机制中,芯片组进行错误检查/校正的运作情形可描述如下。当芯片组要将一笔64位的数据写入(储存)至存储器时,会先利用「64位数据/8位错误检查码」算法,以根据该笔数据的内容计算出一对应的8位错误检查码,再将该笔数据及该错误检查码同时写入存储器中。等芯片组要将该笔64位数据由存储器口读出时,芯片组也会将原先写入存储器中的8位错误检查码一并读出以做一参考的检查码。读出数据后,芯片组会利用相同的错误检核算法,根据读出的64位数据再度算出一笔新的8位错误检查码,并将此一新算出的错误检查码与原先写入/读出的参考检查码进行比较,看看两者是否相符。若两者相符,代表数据存取正确,没有错误发生。相对地,若两者不相符,就代表读出的数据已经损毁而发生数据错误;此时,芯片组就可采取相对的错误管理运行,像是根据参考检查码/错误检查码来判断错误发生的型态(如:有几位数据被损毁)、错误的位置(错误发生在哪一位)、甚至进而修正读出的数据,或是将数据错误的情形回报至中央处理器以通知电脑系统的使用者。
在个人电脑/服务器的应用中,存储器是由存储器模块组成的;而现行的主流存储器模块中可设有9个存储单元,每个存储单元可在同一时间提供8位的数据,集合9个存储单元在同一时间内总共所能提供的72位,现有的错误检核机制就刚好能支持「64位数据/8位错误检查码」算法,在存取8个存储单元所提供的64位数据时,同步地利用另一存储单元所提供的8位错误检查码来进行错误检核。
虽然上述现有的错误检核机制已成为信息业界的标准作法,但还是缺乏运用上的适应性,较难普遍适用于嵌入式架构等结构精简的低成本电脑系统。为了要配合「64位数据/8位错误检查码」的算法,现有技术会一次从存储器中读出64位的数据,以配合此64位的数据计算出对应的8位的错误检查码。然而,像在金融服务终端机等应用中,以九个存储单元来架构存储器会使得电脑系统的成本偏高;若是以较少的存储单元来架构存储器,现有技术就不能在同一时间内取得64位的数据,也就不能沿用「64位数据/8位错误检查码」的算法来实现错误检核。举例来说,在嵌入式架构的低成本电脑系统中,以4个存储单元所能同时提供的32位数据是存储器架构合理的选择之一;但在此32位数据架构下,现有技术一次仅能存取32位的数据,就无法以此32位的数据来直接套用「64位数据/8位错误检查码」算法。若是要为32位数据架构设计一套专用的错误检核运算法,则会增加演算机制与电路设计生产的成本。况且,如本领域技术人员所知,32位的数据可能需要6位的错误检查码才能实现错误检核,相较之下,64位数据/8位错误检查码的错误检核就经济多了。因为,在32位数据/6位错误检查码的错误检核架构下,平均每一位的数据需要0.1875个错误检查位;但在64位数据/8位错误检查码的错误检核架构下,平均每一位的数据仅需0.1275个错误检查位。
发明内容
因此,本发明的主要目的,即在于提供一种能兼顾各种应用的错误检核机制,以克服现有技术的缺点。
随着存储器技术的进步,存储器的数据传输效能也越来越好,并出现了高倍数据率的存储器技术,像是双倍数据率(DDR,double-data-rate)的存储器。在同一时钟周期中的上升沿与下降沿,双倍数据率的存储器都能传输数据,使芯片组能在同一时钟周期中取得两笔数据。而在本发明的优选实施例中,本发明就是利用此特点,让芯片组将同一时钟周期中取得的多笔数据合并视为一整体数据,并利用此一整体数据来计算对应的错误检查数据,实现错误检核机制。
举例来说,在运用于低成本电脑系统的32位数据架构时,本发明可将同一周期中先后传来的两笔32位数据合并为一个64位的整体数据,并利用「64位数据/8位错误检查码」的算法计算出对应的8位错误检查码。利用此8位错误检查码,就可检查/校正64位的整体数据,等效上也就是对原先的两笔32位数据分别进行检查/校正。配合本发明的错误检核机制,电脑系统的存储器中除了以4个8位存储单元提供32位的数据空间外,仅需另设一个4位的存储单元来支持4位的错误检查码。当要将32位的两笔数据以双倍数据率写入存储器时,本发明可根据这两笔数据合并为64位数据,沿用「64位数据/8位错误检查码」算法算出一个8位错误检查码,并将此8位错误检查码分解为两笔各4位的检查子数据;再配合同一时钟周期的上升沿与下降沿而分别将两笔32位数据写入存储器的4个8位存储单元时,同时也将这两笔4位检查子数据先后写入4位存储单元。
在将数据由存储器中读出时,本发明除了在同一周期中先后读出两笔32位数据,也会同时读出两笔对应的4位检查子数据做为参考子数据。两笔32位数据会合并为一64位的整体数据,并利用「64位数据/8位错误检查码」的算法算出一个8位的错误检查码;而两笔被读出的4位检查子数据则会被合并为一个8位的参考检查码。比较8位的错误检查码及参考检查码,就能对64位的整体数据进行错误检查/校正,等效上也就是对原先读出的两笔32位数据进行检核。以此种方法来实现错误检核机制,就能在32位数据架构下沿用「64位数据/8位错误检查码」的算法,不仅能实现较为经济的错误检核机制以减少每个数据位所需的错误检查位,也不需为32位数据架构重新设计/开发新的错误检核算法,降低了电脑系统设计制造的时间与成本。
换句话说,本发明可充分利用高倍数据率存储器技术的特点,将一时钟周期中所能存取到的多笔数据整合为一整体以进行数据检核,进而实现较为经济的数据检核机制,并能兼顾各种电脑系统在不同数据架构下的不同需要。
附图说明
图1为本发明电脑系统一实施例的功能方块示意图。
图2为图1中芯片组将数据写入存储器时相关数据信号的时序示意图。
图3为图1中芯片组将数据读出存储器时相关数据信号的时序示意图。
图4为本发明电脑系统另一实施例的功能方块示意图。
图5为图4中芯片组将数据写入存储器时相关数据信号的时序示意图。
图6为图4中芯片组将数据读出存储器时相关数据信号的时序示意图。
图中主要元件标号说明如下:
10、40电脑系统       12中央处理器
14外围电路           16、46芯片组
18存储器             20存储器模块
22A数据模块          22B  检查数据模块
24A-24B、25A缓冲模块 26计算模块
28分割模块           30比较模块
32接口电路           36、38存储单元
Q1-Q4附加数据        34附加数据模块
DQ、DQe、Q信号        CLK时钟
DQS数据选通信号
Nb、Ne、Nd、Nq位
D1-D4、Di1-Di2、Ei1-Ei4、E1-E4数据
具体实施方式
参考图1;图1为本发明中一电脑系统10的功能方块示意图。电脑系统10中可设有一中央处理器12、一芯片组16、一存储器18以及外围电路14。中央处理器12用来执行程序、处理数据及运算数据,存储器18用来存储中央处理器12运行期间所需的程序、资料与数据。外围电路14可以是硬盘机、光盘机或是各种附插卡(像是显示卡、网络卡、音效卡等等),而芯片组16就是用来管理中央处理器12与外围电路14对存储器18的存取,并在存取存储器18时进行数据检查/校正,实现数据检核机制。
如前所述,电脑系统中的存储器可以包括有以存储单元架构出的存储器模块,而在图1的实施例中,存储器18内即设有多个(设有N个)存储单元36及一个存储单元38,并以这些存储单元来形成一存储器模块20。其中,各个存储单元36用来提供存储器18的存储空间以储存电脑系统运行期间所需的一般数据,像是程序、资料与数据等等;各个存储单元36可分别在同一时间内通过Nb条并行线提供Nb位的数据,以N*Nb条并行线集合所有N个存储单元36所提供的数据,就能在同一时间内提供一笔Nd(Nd=N*Nb)位的数据。而在芯片组16与存储器18间传输的信号DQ中,就是经由这N*Nb条并行线的总线而顺序传输各笔Nd(Nd=N*Nb)位的数据。
为了要利用错误检查码来实现存储器数据存取时的错误检核机制,存储器18中另以存储单元38来储存错误检查码;存储单元38可在同一时间内经由Ne条并行线来传输一笔Ne位的数据,而在芯片组16与存储器18间传输的信号DQe中,就是经由这Ne条并行线而顺序传输各笔Ne位的数据以作为错误检核之用。
配合本发明的错误检核机制,芯片组16中设有一数据模块22A、一检查数据模块22B、缓冲模块24A、24B、一计算模块26、一分割模块28、一比较模块30及一接口电路32。数据模块22A用来存取存储器18的一般数据,也就是由N个存储单元36集合起来所提供的Nd位数据;检查数据模块22B则用来存取存储器18中与错误检核相关的数据,也就是由存储单元38所提供的Ne位数据。数据模块22A由存储器18读出的一般数据可经由接口电路32而传输至中央处理器12(或/和外围电路14);而中央处理器(或/和外围电路14)要存入至存储器18的一般数据也可经由接口电路32、数据模块22A而写入(储存)至存储器18的存储单元36中。另外,为了协调芯片组16与存储器18运行的定时(timing)与数据传输的时序,芯片组16会另外以时钟CLK来触发存储器18中各存储单元的运行,并以数据选通信号DQS来同步各笔数据传输的时序。在本发明的优选实施例中,存储器18为高倍数据率的存储器,譬如说是双倍数据率的存储器;换句话说,在传输数据时,数据选通信号DQS会和时钟CLK同步,随着数据选通信号DQS在同一周期T中的上升沿与下降沿,每一个存储单元36就能顺序先后传输两笔Nb位的数据,存储单元38也能同步顺序地传输两笔Ne位的数据。
当数据模块22A存取各存储单元36的一般数据时,检查数据模块22B也可同步地存取存储单元38中与错误检核相关的数据,而缓冲模块24、计算模块26、分割模块28及比较模块30就可根据数据模块22A、检查数据模块22B所存取到的数据来实现错误检核机制。其中,缓冲模块24A可将数据模块22A于同一周期T中存取到的两笔一般数据合并为一2Nd位的整体数据,而计算模块26就能利用特定的「2Nd位数据/2Ne位错误检查码」的算法,针对此一2Nd位的整体数据算出一笔对应的2Ne位检查数据(即错误检查码);并将此一检查数据暂存于分割模块28中。另外,缓冲模块24B则能将检查数据模块22B于同一周期T中存取到的错误检查相关数据合并为一参考数据;而比较模块30就能比较缓冲模块24B中的参考数据是否与分割模块28中的检查数据相符,并根据比较的结果来进行数据错误检核。换句话说,虽然存储器的数据架构是「Nd位数据/Ne位错误检查码」(存储单元36共提供Nd位/存储单元38提供Ne位),但利用双倍数据率的特性,本发明就可使用「2Nd位数据/2Ne位错误检查码」的算法来实现错误检核机制,以充分利用「2Nd位数据/2Ne位错误检查码」的算法较为经济的特性,增进本发明错误检核机制的效能。
至于本发明芯片组16进行数据错误检核的过程,可描述如下。首先,参考图2(以及图1);图2示意的是芯片组16运行时各相关数据信号的时序示意图,图2的横轴为时间。当芯片组16要将一般数据写入存储器18时,同一周期T内要传输至存储器18的两笔一般数据会在缓冲模块24中合并为一整体数据;如图2的例子所示,要在同一周期T中传输的两笔Nd位数据D1及D2会先被合并为一笔2Nd位的整体数据Di1,而计算模块26就会利用「2Nd位数据/2Ne位错误检查码」的算法,以根据数据Di1算出对应的2Ne位数据Ei1作为检查数据(也就是错误检查码),使得此检查数据Ei1能反映数据Di1各位的数据内容。暂存于分割模块28的数据Ei1可被等分为前后两笔各具有Ne位的数据E1、E2以作为两笔检查子数据,分别对应于数据D1、D2。当数据模块22A要根据数据远通信号DQS的上升沿/下降沿触发而在信号DQ中将数据Di1及Di2顺序传输至存储器18的各个存储单元36时,检查数据模块22B就能同步地将对应的数据E1、E2传输至存储器18的存储单元38。以此类推,要将一般数据D3、D4写入存储器18时,也是依据数据D3、D4合并的整体数据Di2来计算出对应的检查数据Ei2,再将数据Ei2分解为数据E3、E4。当数据D3、D4随着数据选通信号下一周期的上升沿与下降沿而传输至各个存储单元36时,对应的检查子数据E3、E4也就同步地顺序传输至存储单元38。
延续图2中的例子,继续参考图3(并一并参考第1、2图)。相对于图2中说明的数据写入时序,图3示意的则是当芯片组16要将数据由存储器18读出时,各相关数据信号的时序;图3的横轴为时间。当芯片组16要将数据D1、D2由各存储单元36中读出时,也会一并将其对应的检查子数据E1、E2读出作为参考子数据。如图3所示,随着数据选通信号DQS中上升沿与下降沿的触发,数据D1、D2会在信号DQ中顺序传输至芯片组16,而这两笔数据分别所对应的检查子数据E1、E2也会同步地在信号DQe中传输至芯片组16。在同一周期T内取得的两笔Nd位数据D1、D2会在缓冲模块24A中被合并为一笔2Nd位的整体数据Di1;而两笔Ne位的数据E1、E2则会在缓冲模块24B中被合并为一笔2Ne位的参考用错误检查码Er1。
根据整体数据Di1,计算模块26就能利用「2Nd位数据/2Ne位错误检查码」算法,计算出一笔2Ne位的数据Ei1作为读出数据的错误检查码。连同缓冲模块24B中的数据Er1,比较模块30就能比较数据Ei1以及Er1两者是否相符,以进行数据的错误检查/校正。若两者相符,就代表存储器18中的数据D1、D2未曾损毁;反之,若数据Ei1及Er1两者不符,代表数据D1、D2在储存于存储器期间被损毁了,使得当初在数据写入时计算的错误检查码Er1与数据读出后计算的错误检查码Ei1两者不符。在这种情况下,芯片组16就可根据数据Ei1、Er1来进行对应的补救措施;举例来说,芯片组16可计算出数据Di1中有几位数据发生错误-等效上也就可知道数据D1、D2中有几位数据发生错误;若数据错误的情形不严重(错误的位不多),芯片组16也可根据数据Ei1、Er1采校正整体数据Di1-等效上也就是校正数据D1及D2。此外,芯片组16也可将错误发生的情形回报至中央处理器12以告知使用者。
由以上讨论可知,即使在存储器为32位数据架构的低成本电脑系统中,本发明还是能沿用「64位数据/8位错误检查码」的算法来实现错误检核机制。参照图1,要在32位数据架构的存储器中实现错误检核机制,本发明就可使用4个8位存储单元36来储存一般数据(即N=4、Nb=8、Nd=4*8=32),再另外使用一个4位存储单元38(即Ne=4),即可配合双倍数据率的特性,沿用现有的「64位数据/8位错误检查码」算法而实现错误检核机制。能沿用「64位数据/8位错误检查码」算法有数项优点,首先,沿用既有算法就不必为了32位数据架构而重新设计新的错误检核算法,也就不必重新设计计算模块的电路架构;同样的计算模块,既可适用于64位数据架构的存储器(也就是同一时间内能以64条并行线传输数据的存储器),也可适用于32位存储器架构,自然就能降低计算模块以及芯片组设计开发生产的成本。在优选的情况下,甚至可用同一种芯片组设计来广泛地支持64位数据架构以及32位数据架构,以低成本来满足不同电脑系统的各种需求。另一方面,如前面讨论过的,若要为32位数据架构的存储器重新设计一种错误检核算法,会需要6位错误检查码;但根据本发明的技术而沿用「64位数据/8位错误检查码」算法后,平均每一笔32位数据仅需4位错误检查码就能实现错误检核机制,更为经济,也使错误检查码中每一位所能发挥的效益大幅提高。
除了上述的实施例之外,当本发明应用于32位数据架构的电脑系统时,用来储存错误检查相关数据的存储单元38也可以是8位存储单元;在此种配置下,存储器18中共有5个相同的8位存储单元;其中4个8位存储单元36用来储存一般数据,另外一个8位存储单元38则用来储存错误检查的相关数据,也就是Nb=Ne=8。在此种配置的实施例中,本发明就可配合双倍数据率而在同一周期T中顺序收集两笔32位数据、两笔8位检查子数据,并根据「64位数据/16位错误检查码」的算法来实现错误检核机制。虽然要发展新的的算法,但相较于「32位数据/6位错误检查码」的算法,「64位数据/16位错误检查码」的算法一定会具有优选的错误检核能力。因为64位数据仅需8位错误检查码就能进行「一位错误」(one-bit error)的检查与校正,若有16位的错误检查码,就能在此错误检查码中携载更多错误检核信息,实现更高阶的错误检核能力,像是校正多位错误等等。换句话说,由于64位数据架构下的错误检核算法本来就比32位数据架构的算法更经济,每个错误检查码的位能发挥更好的效益,所以当64位数据架构下的错误检查码能具有更多位时,集合每个错误检查位的效益,就能实现更高阶的错误检核能力。
一般来说,在研发错误检核算法时,会希望错误检核算法至少能检查/校正「一位错误」,就是当一笔多位的数据中有一位发生错误时,其对应的错误检查码能反映出该错误的位是哪一位,这样就能修复该错误的位。在32位数据架构下,数据有32位,「一位错误」可能发生在32位中的其中一个(或完全没有错误);要覆盖数目1至32(或0到31)的范围,错误检查码至少要有5位,再加上一位代表没有数据错误的情况,故32位数据架构下的错误检查码至少要具有6位。但由上述讨论可知,要检核「一位错误」,错误检查码中所需的位数目大致会与数据中位数成对数关系;当数据中的位数目增加一倍,其对应的错误检查码中却只要增加一位就能覆盖,故数据中的位数目越多,错误检查码中的每一位反而能发挥更大的效益,变得更经济。就如前面讨论过的,32位数据需要6位错误检查码,64位则只需要8位错误检查码(事实上只要7位);也就是说,在64位架构下,每个错误检查位都能在错误检核方面发挥更大的效益。而本发明就是充分利用存储器高倍数据率的特性,在同一周期中尽量集合多笔数据以合并出较多位的整体数据,并针对较多位整体数据来实现错误检核机制,以利用较多位的数据架构下错误检核更经济、效益更高的优点。
参考图4;图4为本发明另一实施例的电脑系统40的功能方块示意图。为了方便说明,在图4中标号与图1中标号相同的元件皆具有相同的功能,包括中央处理器12、外围电路14、存储器18、接口电路32、数据模块22A、检查数据模块22B、计算模块36、分割模块28、比较模块30以及各存储单元36、38。不同的是,电脑系统40中的芯片组46中另设有一附加数据模块34;在实现数据检核机制时,在缓冲模块25A中将数据模块22A存取的数据与附加数据模块34所提供的附加数据合并为较多位的整合数据,并针对此整合数据来实现数据检核机制。进一步参考图5及图6(与图4);图5为电脑系统40在将数据写入存储器18时各数据信号的时序示意图,图6则是将数据由存储器18读出时各数据信号的时序示意图。
如图5所示,当芯片组46要将一般数据D1写入存储器18时,可先将Nd位的数据D1与信号Q中具有Nq位的附加数据Q1合并为一整体数据Di1,使数据Di1中具有(Nd+Nq)位;而计算模块26(图4)就能以「(Nd+Nq)位数据/Ne位错误检查码」的算法,针对数据Di1计算出一对应的Ne位错误检查码E1作为检查数据,然后再配合数据选通信号DQS而在信号DQ中将数据D1写入各存储单元36,并同步地在信号DQe中将对应的错误检查数据E1写入存储单元38。同理,数据D2、D3等等也可分别和附加数据Q2、Q3合并为较高位的数据,以计算出对应的错误检查码E2、E3,并同步地将D2、E2与D3、E3写入存储器18。
如图6所示,当芯片组46要将数据D1由存储器18读出时,芯片组46可同步将数据D1及对应的错误检查码E1读出;读出的数据D1再度与附加数据Q1合并为整体数据Di1,再根据相同的「(Nd+Nq)位数据/Ne位错误检查码」算法计算出对应的错误检查码Er1作为参考检查数据,并将错误检查码Er1与读出的错误检查码E1做比较,以进行数据的错误检核。在将图4的技术实施于32位数据架构的电脑系统时,可采用5个8位存储单元,使用32位的附加数据Q与32位的数据合并(Nq=Nd=32),沿用「64位数据/8位错误检查码」算法来计算出8位的错误检查码(也就是Ne=8)。各笔32位附加数据Q可以是相同的,譬如是32位的数位「0」;由于附加数据Q的内容是固定、已知的,故相关的错误检核算法可能可以实现出更高的错误检核能力。
在现有技术中,仅能针对单笔数据的位数目来进行错误检核,缺乏运用上的适应性,错误检核机制中每个错误检查码的位也未能发挥较高的效益。相较之下,本发明将数据合并为更多位的数据,以较多位的数据来实现错误检核机制,故能充分利用高位数据架构下错误检核机制具有较好效益的特性,也可以广泛地支持不同数据架构的电脑系统,减少研发生产的时间与成本。在本发明的优选实施例中,还可配合高倍数据率的存储器技术而将同一周期中的多笔数据合并为较高位数据,并配合一周期的触发而完成对应的错误检核,使得错误检核不会拖延,能顺利地和芯片组运行的时序同步地进行。譬如说在双倍数据率的存储器中,本发明就可将同一周期中先后传输的两笔数据合并为一笔双倍位数的数据,如图1至图3的例子所示;若使用于四倍数据率的存储器中,本发明就可将同一周期中顺序传输的四笔数据合并为一四倍位数的整体数据,并据此实现错误检核机制。虽然本发明在各附图中的实施例仅绘出一存储器模块、一通道(一总线),但本发明的技术精神能普遍运用于多存储器模块、多通道的电脑系统,在信息领域中具有通常知识者应该已能由本发明的实施例了解具体实施的方式。另外,芯片组中的各个模块可以用软件、固件或硬件的方式来实现;举例来说,用来计算错误检查码的计算模块可用硬件的逻辑电路来实现。除了将本发明的技术实现于芯片组之外,本发明的技术精神还可普遍实现于各种存储器控制电路,像是单芯片系统(system on a chip)中的存储器控制电路等等。
以上所述仅为本发明的优选实施例,凡依本发明权利要求所做的均等变化与修饰,皆应属本发明的覆盖范围。

Claims (17)

1.一种进行数据错误检查的方法,其包含有:
将累积取得的多笔数据合并为一整体数据;
根据该整体数据进行一错误检查码算法,以计算出对应的一检查数据;
将该检查数据划分为多笔检查子数据,使各笔检查子数据对应于该多笔数据中的一笔数据;以及
当要顺序传输每一笔数据时,同时传输其对应的检查子数据,
其中,存储在存储器中的数据与其对应的检查子数据所存储的存储单元不同并且存储单元具有相同大小的位。
2.如权利要求1所述的方法,其中取得该多笔数据,在不同时间分别取得一笔数据以累积取得多笔数据。
3.如权利要求1所述的方法,其中该错误检查码算法为一64位数据/8位错误检查码的算法。
4.如权利要求1所述的方法,还包含有:
要将该整体数据存入一存储器时,在不同的时间分别将该整体数据中的一笔数据存入该存储器,以及
在将每一笔数据存入该存储器时,同时将该笔数据对应的检查子数据存入至该存储器。
5.如权利要求3所述的方法,还包含有:
由该存储器取得多笔数据与对应的检查子数据;
使多笔数据合并为一整体数据重新进行该错误检查码算法,以计算对应的一参考数据;以及
将该参考数据划分为多笔参考子数据,并检查该多笔检查子数据与参考子数据是否相符。
6.如权利要求1所述的方法,其中当取得该多笔数据时,根据一数据选通(datastrobe)信号的上升沿与下降沿分别取得一笔数据。
7.如权利要求6所述的方法,其中当计算该检查数据时,根据一时钟的触发来进行逻辑运算以计算出该检查数据,而该时钟的一个周期相当于该数据选通信号的一周期。
8.一种芯片组,其包含有:
一数据模块,其可取得多笔数据;
一缓冲模块,将数据模块取得的多笔数据合并为一整体数据;
一计算模块,根据该整体数据进行一错误检查码算法,以计算对应的一检查数据,使得当该多笔数据中有任何一笔数据的内容改变时,该检查数据的内容亦会随之改变;以及
一分割模块,将该检查数据划分为多笔检查子数据,使各笔检查子数据对应于该多笔数据中的一笔数据;以及
一检查数据模块,当该数据模块要顺序传输每一笔数据时,该检查数据模块可同时传输其对应的检查子数据,
其中,存储在存储器中的数据与其对应的检查子数据所存储的存储单元不同并且存储单元具有相同大小的位。
9.如权利要求8所述的芯片组,其中该数据模块分别在不同的时间分别取得一笔数据以累积取得多笔数据。
10.如权利要求8所述的芯片组,其中该数据模块可在不同的时间分别将该整体数据中的一笔数据存入一存储器的多个第一存储单元内;同时该检查数据模块可将该笔数据对应的检查子数据存入该存储器的一第二存储单元。
11.如权利要求10所边的芯片组,其中该多个第一存储单元具有较多的位数,该第二存储单元具有较少的位数。
12.如权利要求10所述的芯片组,其中该多个第一存储单元与该第二存储单元具有相同大小的位。
13.如权利要求10所述的芯片组,还包含有一比较模块,当由该存储器取得多笔数据与对应的检查子数据时,使多笔数据合并为一整体数据重新进行该错误检查码算法,以计算对应的一参考数据,并将该参考数据划分为多笔参考子数据,使用该比较模块检查该多笔检查子数据与参考子数据是否相符。
14.如权利要求8所述的芯片组,其中该数据模块在取得多笔数据,是根据一数据选通(datastrobe)信号的上升沿与下降沿分别取得一笔数据。
15.如权利要求14所述的芯片组,其中该计算模块根据一时钟的触发来进行逻辑运算以计算出该检查数据,而该时钟的一个周期相当于该数据选通信号的一周期。
16.如权利要求8所述的芯片组,其中计算模块内的错误检查码算法,是64位数据/8位错误检查码的算法。
17.如权利要求8所述的芯片组,其中还包括一附加数据模块,提供多个附加数据到该缓冲模块,使该多个附加数据与该多笔数据合并成一整合数据。
CNB2004100879212A 2004-10-27 2004-10-27 数据错误检查方法及相关装置 Active CN100399287C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2004100879212A CN100399287C (zh) 2004-10-27 2004-10-27 数据错误检查方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2004100879212A CN100399287C (zh) 2004-10-27 2004-10-27 数据错误检查方法及相关装置

Publications (2)

Publication Number Publication Date
CN1601481A CN1601481A (zh) 2005-03-30
CN100399287C true CN100399287C (zh) 2008-07-02

Family

ID=34667134

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100879212A Active CN100399287C (zh) 2004-10-27 2004-10-27 数据错误检查方法及相关装置

Country Status (1)

Country Link
CN (1) CN100399287C (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5481552A (en) * 1993-12-30 1996-01-02 International Business Machines Corporation Method and structure for providing error correction code for 8-byte data words on SIMM cards
US5687353A (en) * 1995-03-03 1997-11-11 Hal Computer Systems, Inc. Merging data using a merge code from a look-up table and performing ECC generation on the merged data
US6125467A (en) * 1998-04-21 2000-09-26 International Business Machines Corporation Method and apparatus for partial word read through ECC block
US6216247B1 (en) * 1998-05-29 2001-04-10 Intel Corporation 32-bit mode for a 64-bit ECC capable memory subsystem

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5481552A (en) * 1993-12-30 1996-01-02 International Business Machines Corporation Method and structure for providing error correction code for 8-byte data words on SIMM cards
US5687353A (en) * 1995-03-03 1997-11-11 Hal Computer Systems, Inc. Merging data using a merge code from a look-up table and performing ECC generation on the merged data
US6125467A (en) * 1998-04-21 2000-09-26 International Business Machines Corporation Method and apparatus for partial word read through ECC block
US6216247B1 (en) * 1998-05-29 2001-04-10 Intel Corporation 32-bit mode for a 64-bit ECC capable memory subsystem

Also Published As

Publication number Publication date
CN1601481A (zh) 2005-03-30

Similar Documents

Publication Publication Date Title
CN101833424B (zh) 基于fpga的高速存储与传输装置
CN101369246B (zh) 使用存储器映射函数来映射存储器缺陷的系统和方法
CN102687121B (zh) 堆叠式存储器中的错误校正
CN103235760B (zh) 基于CLB总线的高利用率NorFLASH存储接口芯片
CN103455283A (zh) 一种混合存储系统
CN104572517A (zh) 提供被请求数据的方法、控制器以及计算机系统
CN101711385A (zh) 非ecc组件中的ecc实现
CN112130768A (zh) 磁盘阵列在线扩容方法、装置及计算机可读存储介质
CN104699577B (zh) 用于在分布式码字存储系统中定位故障管芯的计数器
CN103699337A (zh) 一种基于独立磁盘冗余阵列raid的写控制方法及系统
CN103116551A (zh) 应用于CLB总线的NorFLASH存储接口模块
CN103914363A (zh) 一种内存监控方法及相关装置
US20170024333A1 (en) High performance host queue monitor for pcie ssd controller
CN101556802A (zh) 一种raid阵列转换的方法及装置
US20230236761A1 (en) Read-disturb-based logical storage read temperature information identification system
CN101488369B (zh) Bch码控制器接口电路
CN102609221A (zh) 一种硬件raid5/6存储系统的架构及数据处理方法
CN110515542A (zh) 数据存储方法、装置、计算设备、存储系统及存储介质
CN101587744B (zh) 一种大规模flash存储阵列的多层次数据冗余方法
US20230236760A1 (en) Read-disturb-based logical storage read temperature information maintenance system
CN100477009C (zh) 一种nand flash存储器件
CN101493759B (zh) 一种任意容量异步先入先出存储器的地址控制方法
CN103034559A (zh) 基于rdma架构设计的pq检验模块及检验方法
TWI254849B (en) Method and related apparatus for data error checking
CN100399287C (zh) 数据错误检查方法及相关装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant