对服务器CPU而言寄存器ECC功能是否有必要?

对服务器CPU而言寄存器ECC功能是否有必要?,第1张

服务器CPU而言寄存器ECC功能是有必要
这个题干有多义性, 能否提供资料解释下SPARC中ECC功能是针对哪个模块的
目前与处理器相关的ECC技术几乎都是用在存储模块上 无论是DRAM, SRAM, CPU片内还是片外, 都可以通过每行增加几个比特的形式完成校验 简单又便宜 如果题干指在CPU在L1/L2上使用ECC, 这个技术已经被绝大多数架构所采用, 包括SPARC和x86
此外, 还有一个叫做Register ECC的技术, 是应用于DRAM上的 意思是某个内存条使用了Register和ECC两项防错技术, 稳定性好但是速度低, 主要被服务器采用 Register模块用来锁存总线上传送来的数据, 以防电平不够高/低导致驱动DRAM错误 ECC还是用来校验一行
如果题干指"给CPU中的每个寄存器加入ECC校验", 我就认为这是不可能的功能了
CPU的工作的确会出错, 可能性最高的是CPU制造上的瑕疵导致永久/条件/工作寿命错误, 其次的可能性是片内SRAM, 第三是受到外来电磁辐射, 最后才是由于片内电磁干扰等因素"意外算错"
这里第一项在CPU生产中被DFT过滤掉, 第二项可以用ECC改善, 第三项可以加外包装抗干扰, 我理解题干说的"给CPU中的每个寄存器加入ECC校验"是为了解决第四项
说它不可能的原因是: CPU中每一级流水线都是靠寄存器互连, 总共使用的寄存器数量应该在千万个以上, 而且遍布芯片各处 将他们分组, 加上ECC功能, 再加上错误处理的控制模块这个工作量应该比做Scan Chain还大几倍 增大很多面积, 仅为了覆盖发生率在10^-15左右的错误, 得不偿失
但是处理器的RAS问题是确实存在的, 比如银行的CPU在没有意外事件的前提下, 算错一个数, 弄错一笔交易, 或者导致服务器重启, 就会导致严重损失 为了解决这种问题, 大型服务器的CPU一般:
1 重新执行出问题的指令 比如IBM和以前的Itanium都可以做到
2 交给OS去裁决
3 最牛X的, 用Master-checker方案, 直接在拿3块主板搭一个服务器, 让它们永远算一样的东西 投票也好, 裁决也好, 反正不会错, 谁错了就换掉谁的板子, 这个过程软件层不需要知道, 还支持热插拔 或者直接做一个3核心的芯片, 当1核用, 让它们执行一样的程序, 保证算不错 据我所知这个逆天的功能只有IBM在做, 也只有它有能力垄断大型服务器市场


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10844338.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存