接下来介绍论文中提出的两种容错机制:
Cache word-disable:
上图是一条cache entry。word-disable机制的要点有两点:
1)每一条cache line的tag中保存了一个缺陷映射表(defect map),一条line(64 B)中有16个word(32 bit),则map中存有16个bit,分别对应这16个word,若word产生缺陷,则map中相应bit为1,若word有效则相应bit为0。
2)在每一个cache set中每连续两个cache line形成一条logical line。第一条physical line存logical line的前8个有效字(32 bit word),第二条physical line存logical line的后8个有效字。
我们将一条cache line两等分,这样每份是8个字的容量,但每一份只存4个字(每条cache line只存8个字),每一份最多允许4个字有缺陷,超过4个字则整个cache有缺陷。我们通过两个四阶段shifter去除有缺陷的字并收集有效字,利用defect-map对缺陷字进行定位,具体图示如下(来自论文):
Cache bit-fix:
它的粒度更细,2个bit为一组(成为pair),当至少有一个bit有缺陷时该pair视为有缺陷。用2-bit的patch(补丁)就可纠正一个有缺陷的pair。对一条cache line读写,先要取出这条cache line对应的repair patterns,repair patterns包括repair pointer和patch,repair pointer可以避免读和写broken bit,而patch可以修正cache line(读cache line时),当写cache时,需要将新的patch写入到repair patterns。我们将一个8-way cache分成两个bank ,这样当cache hit时,我们可以同时将data line和fix-line(存有data line对应的repair patterns)取出:
如上图,我们从Bank A中取出data line,从Bank B中取出fix-line。data line要经过n个shift阶段,n代表缺陷对的数目,每一个阶段去除一个缺陷对(缺陷对要靠defect pointer去识别),同时替换为一个fixed pair(patch进行修正)。fix-line也会出现错误,我们用SECDED ECC进行纠正,当确保没问题时,我们再用repair patterns去纠正data line。
在低电压下稳定运行的cache(二),布布扣,bubuko.com
原文:http://blog.csdn.net/bluecloudmatrix/article/details/22800197