CN103645964B - 嵌入式处理器的高速缓存容错机制 - Google Patents

嵌入式处理器的高速缓存容错机制 Download PDF

Info

Publication number
CN103645964B
CN103645964B CN201310597104.0A CN201310597104A CN103645964B CN 103645964 B CN103645964 B CN 103645964B CN 201310597104 A CN201310597104 A CN 201310597104A CN 103645964 B CN103645964 B CN 103645964B
Authority
CN
China
Prior art keywords
cache
data
parity check
instruction
write
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
CN201310597104.0A
Other languages
English (en)
Other versions
CN103645964A (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.)
No32 Research Institute Of China Electronics Technology Group Corp
Original Assignee
No32 Research Institute Of China Electronics Technology Group Corp
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 No32 Research Institute Of China Electronics Technology Group Corp filed Critical No32 Research Institute Of China Electronics Technology Group Corp
Priority to CN201310597104.0A priority Critical patent/CN103645964B/zh
Publication of CN103645964A publication Critical patent/CN103645964A/zh
Application granted granted Critical
Publication of CN103645964B publication Critical patent/CN103645964B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明公开了一种嵌入式处理器的高速缓存容错机制,其包括以下步骤:嵌入式处理器内有指令高速缓存和数据高速缓存;指令高速缓存有一个读端口和一个写端口;写高速缓存时,写端口根据写数据总线上的数据生成奇偶校验码;读高速缓存时,读端口锁存从高速缓存读出数据和奇偶校验码,同时锁存读高速缓存的访问地址;读端口对锁存的数据生成奇偶校验码,并与读端口读出的奇偶校验码比较,如果一致,则认为没有出现错误;如果不一致,则认为高速缓存出现错误;在出现错误时,将通过异常处理方式解决数据错误;执行异常处理方式。本发明通过奇偶检验和异常处理实现错误检查和错误处理,对电路的性能影响小,增加的硬件电路少。

Description

嵌入式处理器的高速缓存容错机制
技术领域
本发明涉及一种高速缓存(Cache)容错机制,特别是涉及一种嵌入式处理器的高速缓存容错机制。
背景技术
高速缓存电路是计算机处理器的主要组成部件之一,主要用于缓存指令和数据。通常情况,缓存指令和缓存数据的高速缓存是分离的,分别称指令高速缓存和数据高速缓存。图1显示了指令高速缓存和数据高速缓存在处理器数据通路上的位置。指令高速缓存位于取指令数据通路上;数据高速缓存位于数据存取单元(load(加载)/store(存储)单元)的数据通路上。指令高速缓存有两个端口:一个读端口,与指令单元连接;一个写端口,与总线接口单元连接。数据高速缓存也有两个端口,但两个端口都是可读可写端口,一个端口与指令单元连接,一个端口与总线接口单元连接。
在嵌入式处理器中,高速缓存通常按组相联的方式组织。这里以一个容量为16KB的高速缓存为例,介绍其组织结构,图2是其高速缓存的组织结构图。高速缓存以缓冲块为基本寻址单位,每个缓存块为32字节。16KB的高速缓存按128x4个缓存块组织,即128个分组,每个分组有4路,每路一个缓存块的方式组织。128x4个缓存块位于数据RAM(RandomAccess Memory,随机存储器)区。每个缓存都都有一组属性信息,包括地址、有效状态、WIMG状态(Write-through、Caching-Inherited、Memory coherency、Guarded)等,这些信息保存在标签RAM中。每个缓存块有一个标签,高速缓存的所有标签也是按128x4的方式组织。访问高速缓存的地址总线为EA(Effective address:有效地址),共32位,用EA[0:31]表示。访问高速缓存时,用EA[20:26]选择128个分组的某一组,用EA[0:19]与分组内4个缓存块的地址比较,如果相等,且缓存块有效,则访问命中,将从对应缓存块读取数据。
受信号噪声、宇宙射线等因素影响,高速缓存中存储的比特数据可能受触发,跳变到错误状态,例如数据RAM的比特存储单元本来存储的是1,在电源噪声的干扰下,存储单元的数据变成了0。这种错误可能导致程序错误,或程序运行结果与预期结果不一致。
高速缓存的容错机制正是为了检查高速缓存中的数据是否错误,以及纠正出错的数据位。高速缓存的容错机制之一是ECC(Error Checking Coding,错误检查编码)保护,例如专利US5233616A“Write-back cache with ECC protection”提出ECC保护机制。该专利的原理是:数据写入高速缓存时,要对写入的数据生成ECC码;从高速缓存读出数据时,要对读出的数据进行ECC码检查和校正。ECC码可以检查出2位数据错误,纠正1位数据错误。ECC保护机制可以提供处理器运行的可靠性,在服务器、图像处理器中广泛使用。
嵌入式处理器要求成本低、功耗低,并且集成的高速缓存容量小,所以嵌入式处理器的高速缓存通常没有容错机制。随着工艺技术的进步,嵌入式处理器的高速缓存容量越来越大,高速缓存引入容错机制已经成为趋势。
美国专利US5233616A提出的ECC保护机制虽然也可用于嵌入式处理器的高速缓存,但存在以下问题:
(1)ECC保护机制的电路复杂
以64位数据总线为例,需要8位ECC码。生成ECC码共需226次异或运算。其中生成ECC[6]的路径最长,需要35次异或运算。ECC码的检查和纠错逻辑等同于8输入64输出的译码器,也是非常复杂的电路。
(2)ECC保护机制增加了高速缓存的访问时间,降低了处理器的性能
图3和图4分别示例了无ECC保护机制和有ECC保护机制时,高速缓存的读数据路径。图4的路径相对图3的路径多了ECC码生成和ECC码检查与纠错逻辑,导致访问高速缓存的访问时间增加10%以上。
发明内容
本发明所要解决的技术问题是提供一种嵌入式处理器的高速缓存容错机制,其以奇偶校验为基础,结合异常处理,达到处理器硬件增加尽量少,处理器性能影响尽量小的效果。
本发明是通过下述技术方案来解决上述技术问题的:一种嵌入式处理器的高速缓存容错机制,其特征在于,其包括以下步骤:
步骤一,嵌入式处理器内有指令高速缓存和数据高速缓存;指令高速缓存有一个读端口和一个写端口;写高速缓存时,写端口根据写数据总线上的数据生成奇偶校验码;
步骤二,读高速缓存时,读端口锁存从高速缓存读出数据和奇偶校验码,同时锁存读高速缓存的访问地址;
步骤三,读端口对锁存的数据生成奇偶校验码,并与读端口读出的奇偶校验码比较,如果一致,则认为没有出现错误;如果不一致,则认为高速缓存出现错误;
步骤四,只有读端口检查高速缓存中的数据是否错误,在出现错误时,将通过异常处理方式解决数据错误;
步骤五,执行异常处理方式。
优选地,所述指令高速缓存的读端口与指令单元连接;数据高速缓存有一个可读可写端口和一个只写端口;数据高速缓存的可读可写端口与加载/存储单元连接;执行加载指令时,读数据高速缓存;执行存储指令时,写数据高速缓存。
优选地,所述步骤一生成奇偶校验码时,以字节为单位,即一个字节生成一位奇偶校验码,两个字节生成两为奇偶校验码,依此类推。
优选地,所述步骤四中如果指令单元读指令高速缓存出现错误,将产生指令高速缓存错误异常,异常地址为对应读指令高速缓存的地址;如果加载/存储单元执行加载指令时,数据高速缓存出现错误,将产生数据高速缓存错误异常,异常地址为加载指令的地址,同时异常现场还保存读数据高速缓存的地址。
优选地,所述异常处理方式由操作人员控制。
优选地,所述异常处理方式包括以下步骤:将数据出错的高速缓存块置为无效,然后退出异常处理程序,重新执行出现异常的指令。
优选地,所述步骤一生成的奇偶校验码与数据总线上写数据同时写入高速缓存的数据随机存储器。
本发明的积极进步效果在于:一,电路简单,生成奇偶校验码仅需56个异或运算;校验仅需8个异或运算。而ECC码生成需要226次异或运算,校验需要8个异或运算,纠错需要8输入64输出的译码器。异常处理虽然增加了硬件电路,但嵌入式处理器本身就有对非法指令的异常处理和对load/store的不对齐异常处理。本发明的异常处理可以与已有的这些异常处理共用电路,不需要新增加电路。二,对电路的性能影响小,本发明的校验检查在访问高速缓存的下一周期执行,不影响访问高速缓存的访问时间。相比之下,ECC机制则与访问缓存串行执行,增加了访问高速缓存的时间。三,软硬结合,提高容错处理的灵活性,本发明通过程序处理高速缓存的错误,程序员可以根据***的可靠性、稳定性要求灵活处理高速缓存的错误。
附图说明
图1为现有高速缓存电路的结构示意图。
图2为现有高速缓存的组织结构图。
图3为无ECC保护机制时高速缓存的读数据路径的示意图。
图4为有ECC保护机制时高速缓存的读数据路径的示意图。
图5为本发明嵌入式处理器的高速缓存容错机制的流程图。
具体实施方式
下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案。
如图5所示,本发明嵌入式处理器的高速缓存容错机制包括以下步骤:
步骤一,嵌入式处理器内有指令高速缓存和数据高速缓存;指令高速缓存有一个读端口和一个写端口。指令高速缓存的读端口与指令单元连接。数据高速缓存有一个可读可写端口和一个只写端口;写高速缓存时,写端口根据写数据总线上的数据生成奇偶校验码;生成奇偶校验码时,以字节为单位,即一个字节生成一位奇偶校验码,两个字节生成两为奇偶校验码,依此类推。生成的奇偶校验码与数据总线上写数据同时写入高速缓存的数据RAM;数据高速缓存的可读可写端口与load/store单元连接;执行load(加载)指令时,读数据高速缓存;执行store指令时,写数据高速缓存。需要注意的是,执行store指令时,除写数据高速缓存外,还通过总线接口单元写内存。
步骤二,读高速缓存时,读端口锁存从高速缓存读出数据和奇偶校验码,同时锁存读高速缓存的访问地址;
步骤三,读端口对锁存的数据生成奇偶校验码,并与读端口读出的奇偶校验码比较,如果一致,则认为没有出现错误;如果不一致,则认为高速缓存出现错误;
步骤四,只有读端口检查高速缓存中的数据是否错误,在出现错误时,将通过异常处理方式解决数据错误。如果指令单元读指令高速缓存出现错误,将产生指令高速缓存错误异常,异常地址为对应读指令高速缓存的地址;如果load/store单元执行load指令时,数据高速缓存出现错误,将产生数据高速缓存错误异常,异常地址为load指令的地址,同时异常现场还保存读数据高速缓存的地址;
步骤五,执行异常处理方式。建议的异常处理方式包括以下步骤:将数据出错的高速缓存块置为无效,然后退出异常处理程序,重新执行出现异常的指令。此时,高速缓存将自动从内存重新载入缓存块,从而保证缓存块的数据正确。异常处理方式由操作人员控制。
下面以一款32位嵌入式RISC(精简指令集计算机)处理器的指令高速缓存为例,介绍实现指令高速缓存容错的实施方式。该RISC处理器的指令为32位,每个周期处理2条指令。指令高速缓存的容量为16K字节,按128x4个缓存块的方式组织,每个缓存块为32字节。
指令高速缓存的写数据总线为64+8位,64位为数据,8位为对应字节的奇校验码。总线接口单元从内存取64位指令数据,同时对这64位数据生成奇校验码,然后一起写入指令高速缓存中。缓存块为32字节,因此写指令高速缓存时一般是4次写操作在连续的4个周期完成。
指令高速缓存的读数据总线也是64+8位。从指令高速缓存读出的数据锁存在指令寄存器IR中,同时指令指针也将锁存在指令指针暂存器中。在指令译码的同时,校验电路检查指令寄存器中的奇校验信息是否正确。如果正确,不做任何处理。如果错误,则产生指令高速缓存错误异常,同时将指令指针暂存器中的指令地址作为异常地址,锁存在异常状态寄存器SRR1中。
对异常的处理由程序员实现。建议的处理方法是将对应的缓存块置为无效,然后重新从内存区指令;如果再次出现校验异常,则关闭指令高速缓存,直接从内存取指令。
本发明通过奇偶检验和异常处理实现错误检查和错误处理。奇偶校验检查错误的电路简单,对电路的性能影响小,增加的硬件电路少。通过异常处理,可简化错误处理的硬件,同时提高错误处理的灵活性。
以上所述的具体实施例,对本发明的解决的技术问题、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (1)

1.一种嵌入式处理器的高速缓存容错方法,其特征在于,其包括以下步骤:
步骤一,嵌入式处理器内有指令高速缓存和数据高速缓存;指令高速缓存有一个读端口和一个写端口;写高速缓存时,写端口根据写数据总线上的数据生成奇偶校验码;
步骤二,读高速缓存时,读端口锁存从高速缓存读出数据和奇偶校验码,同时锁存读高速缓存的访问地址;
步骤三,读端口对锁存的数据生成奇偶校验码,并与读端口读出的奇偶校验码比较,如果一致,则认为没有出现错误;如果不一致,则认为高速缓存出现错误;
步骤四,只有读端口检查高速缓存中的数据是否错误,在出现错误时,将通过异常处理方式解决数据错误;
步骤五,执行异常处理方式;
所述指令高速缓存的读端口与指令单元连接;数据高速缓存有一个可读可写端口和一个只写端口;数据高速缓存的可读可写端口与加载/存储单元连接;执行加载指令时,读数据高速缓存;执行存储指令时,写数据高速缓存;
所述步骤一生成奇偶校验码时,以字节为单位,即一个字节生成一位奇偶校验码,两个字节生成两位奇偶校验码,依此类推;
所述步骤四中如果指令单元读指令高速缓存出现错误,将产生指令高速缓存错误异常,异常地址为对应读指令高速缓存的地址;如果加载/存储单元执行加载指令时,数据高速缓存出现错误,将产生数据高速缓存错误异常,异常地址为加载指令的地址,同时异常现场还保存读数据高速缓存的地址;
所述异常处理方式由操作人员控制;
所述异常处理方式包括以下步骤:将数据出错的高速缓存块置为无效,然后退出异常处理程序,重新执行出现异常的指令;
所述步骤一生成的奇偶校验码与数据总线上写数据同时写入高速缓存的数据随机存储器。
CN201310597104.0A 2013-11-22 2013-11-22 嵌入式处理器的高速缓存容错机制 Active CN103645964B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310597104.0A CN103645964B (zh) 2013-11-22 2013-11-22 嵌入式处理器的高速缓存容错机制

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310597104.0A CN103645964B (zh) 2013-11-22 2013-11-22 嵌入式处理器的高速缓存容错机制

Publications (2)

Publication Number Publication Date
CN103645964A CN103645964A (zh) 2014-03-19
CN103645964B true CN103645964B (zh) 2017-05-10

Family

ID=50251185

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310597104.0A Active CN103645964B (zh) 2013-11-22 2013-11-22 嵌入式处理器的高速缓存容错机制

Country Status (1)

Country Link
CN (1) CN103645964B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10108487B2 (en) * 2016-06-24 2018-10-23 Qualcomm Incorporated Parity for instruction packets
CN106792183A (zh) * 2016-12-16 2017-05-31 深圳Tcl数字技术有限公司 电视机的数据纠错方法及***

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001075865A (ja) * 1999-09-02 2001-03-23 Fujitsu Ltd キャッシュtag制御方法及びこの制御方法を用いた情報処理装置
CN101339524A (zh) * 2008-05-22 2009-01-07 清华大学 大规模磁盘阵列存储***的磁盘容错方法
CN101502001A (zh) * 2006-01-18 2009-08-05 晟碟以色列有限公司 在多电平单元存储设备内安排数据的方法
CN102138129A (zh) * 2008-09-05 2011-07-27 飞思卡尔半导体公司 用于数据处理***中的统一高速缓存的错误检测方案
CN102567132A (zh) * 2011-12-30 2012-07-11 记忆科技(深圳)有限公司 端对端芯片数据通路保护装置及其方法
CN102681928A (zh) * 2012-04-27 2012-09-19 加弘科技咨询(上海)有限公司 计算机***的异常信息输出***
CN102929743A (zh) * 2012-11-28 2013-02-13 中国人民解放军国防科学技术大学 具有软错误容错功能的一级缓存数据存储方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001075865A (ja) * 1999-09-02 2001-03-23 Fujitsu Ltd キャッシュtag制御方法及びこの制御方法を用いた情報処理装置
CN101502001A (zh) * 2006-01-18 2009-08-05 晟碟以色列有限公司 在多电平单元存储设备内安排数据的方法
CN101339524A (zh) * 2008-05-22 2009-01-07 清华大学 大规模磁盘阵列存储***的磁盘容错方法
CN102138129A (zh) * 2008-09-05 2011-07-27 飞思卡尔半导体公司 用于数据处理***中的统一高速缓存的错误检测方案
CN102567132A (zh) * 2011-12-30 2012-07-11 记忆科技(深圳)有限公司 端对端芯片数据通路保护装置及其方法
CN102681928A (zh) * 2012-04-27 2012-09-19 加弘科技咨询(上海)有限公司 计算机***的异常信息输出***
CN102929743A (zh) * 2012-11-28 2013-02-13 中国人民解放军国防科学技术大学 具有软错误容错功能的一级缓存数据存储方法及装置

Also Published As

Publication number Publication date
CN103645964A (zh) 2014-03-19

Similar Documents

Publication Publication Date Title
US9128822B2 (en) On-chip bad block management for NAND flash memory
US6804162B1 (en) Read-modify-write memory using read-or-write banks
CN103137215B (zh) 向存储器提供低延时错误纠正码能力
KR102190683B1 (ko) 메모리 데이터 에러 정정 방법
EP1941512B1 (en) High speed cam lookup using stored encoded key
US7272773B2 (en) Cache directory array recovery mechanism to support special ECC stuck bit matrix
US10387305B2 (en) Techniques for compression memory coloring
US20130283123A1 (en) Combined group ecc protection and subgroup parity protection
US7257762B2 (en) Memory interface with write buffer and encoder
JPS5821353B2 (ja) チヤネル対メモリ書込み装置
CN113924625B (zh) 非易失性存储器***中的操作一致性
US11256563B2 (en) Memory controller with high data reliability, a memory system having the same, and an operation method of the memory controller
JP2024500785A (ja) リモート実行デバイスにおけるホストベースのエラー検出能力の提供
CN103645964B (zh) 嵌入式处理器的高速缓存容错机制
JP2001249847A (ja) マルチレベルキャッシュ転送時間の改善方法および装置
US20140351520A1 (en) Validation of cache locking using instruction fetch and execution
JP2004030527A (ja) 記憶制御装置、および記憶制御方法
US11327836B1 (en) Protection of data on a data path in a memory system
KR20230070231A (ko) 신뢰할 수 있는 저전압 캐시 동작을 위한 마스킹된 결함 검출
US6701484B1 (en) Register file with delayed parity check
US9496009B2 (en) Memory with bank-conflict-resolution (BCR) module including cache
CN106844281A (zh) 一种适用于PowerPC处理器的高可靠指令Cache
US8656214B2 (en) Dual ported replicated data cache
US7607048B2 (en) Method and apparatus for protecting TLB's VPN from soft errors
US8898540B1 (en) Counter update through atomic operation

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant