-
11月04日
-
内存访问优化策略
假设一个SDRAM有四个Bank,每个Bank各有一个Row Buffer。Activate指令会将一行数据放入相应Bank的Row Buffer中,而Precharge、Precharge All指令会关闭Row Buffer并写回数据。如果某Bank的Row Buffer是关闭的,我们称它为空闲 (Idle) 的。SDRAM的访问存在三种情况:
1,Page Hit。当前访问的Row,正好保存在相应bank的row buffer里。此时,不需要激活Row,直接发读写指令和Column地址,就可以进行列读写,这就是Back to Back读写。此情况,读写延时最小。
2,Page Empty。当前访问的Row所在的bank中,row buffer关闭。此时,需要先激活Row,再发读写指令和Column地址。此情况,读写延时中等。
3,Page Miss。当前访问的Row所在的bank中,row buffer打开,但存的是另一个Row的数据。此时,必须先发送Precharge或Precharge All指令关闭row buffer,再激活Row,最后发读写指令和Column地址。此情况,读写延时最大。
Close Page Policy
尽量保持行缓冲关闭的策略。对当前行访问结束后立刻进行Precharge操作,不论后面是否还要访问该行。Close Page Policy中只发生一种情况:Page Empty(即行缓冲为空,需要先激活行)。
Close Page Policy的读写延时适中并且恒定,与访问请求的时间空间局部性无关,具有良好的可预测性 (Predictabilility) ,适用于实时性要求较高的应用场合。
Close Page Policy的硬件实现比较简洁,因为每次读写都是一个行激活、列读写、预充电的过程。
Open Page Policy
尽量保持行缓冲打开的策略。除非需要访问当前同一bank中的其它行,则不进行Precharge操作。Open Page Policy中常会发生两种情况:Page Hit(即再次访问Row Buffer中的数据)、Page Miss (Row Buffer中的行不是要访问的行)。
如果访问请求的时间空间局部性很好,则发生Page Hit的概率远大于发生Page Miss的概率,应用Open Page Policy可以大大减少读写延时;如果访问请求的时间空间分部很分散,则发生Page Miss的概率远大于发生Page Hit,应用Open Page Policy会造成较大的读写延时。
Adaptive Page Policy
动态的行缓冲策略。根据运行中前一段时间的访问历史动态决定SDRAM行缓冲策略的技术;
若当前策略偏向于Open Page,则对下列情况进行双向计数:关闭当前行以打开新行、访问当前行,如果前者接二连三地出现并超过阈值,则更换策略;
若当前策略偏向于Close Page,则对下列情况进行双向计数:打开新行、打开上一次操作中被关闭的行,如果后者接二连三地出现并超过阈值,则更换策略。
内存错误
按错误来源分,内存错误分为硬错误和软错误:
Hard Error:硬错误,指受到外界环境中强大的能量如雷击或静电的瞬间放电而造成的系统元件永久性损坏,可以通过硬件故障切换(failover)功能来恢复,保证系统的持续运行。
Soft Error:软错误,指半导体元件受不明带电粒子影响,如果正好撞击到内存中的储存单元,只要能量足够就会导致位元翻转,造成数据错误。软错误是随机的,对于可纠正的软错误,可以通过ECC等内存保护技术来修复。对于不可纠正的错误,可以通过联合OS/firmware进行的错误隔离以及错误恢复。当软错误(可修复/不可修复)累积到一定数量,可通过阈值(Threshold)和PFA算法来提前通知用户进行硬件更换,而不致错误累积到系统突然宕机 。
按错误类型分,内存错误可分为可纠正错误和不可纠正错误:
Correctable Error:可纠正错误,指可利用CRC、ECC等硬件机制来纠正的错误。
Uncorrectable Error:不可纠正错误,指无法利用ECC等硬件机制来纠正的错误,需要通过备、镜像和热切换等将损坏的数据进行隔离。有些不可纠正的错误可能造成系统宕机。
另外,内存错误还可分为单比特错误(SBE - Single Bit Error),多比特错误(DBE – Double Bit Error)和地址奇偶检验错误(AP - Address Parity)。
推荐阅读:
除非注明,文章均为宿迁波仔博客原创,转载请注明本文地址:http://wangboxyk.cn/post/Neicun-SDRAM-Bank.html标签:硬件 内存
- 评论:(10)
- 隐藏评论
【评论很精彩,有内幕、有真相!】