请教一个问题,关于RAM的。
DRAM在运行中可能会出现错误,例如本来存储的是1变成了0.这个时候数据就会发生错误。这个时候。计算机是怎么处理这个错误的呢?程序运行会出错吧。。。但是为什么咱们用的计算机 并没有任何提示呢?
如果有ECC 那么假设 ECC可以校验出8位中1位的错误。但是出现2位以上的错误了。。这咋办呢?
谢谢。。。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
就让它错吧,
:wink: :wink:
这个好像没法保证。
电子设备就怕电磁干扰。
如果打闪电。程序经常出错的。
没办法
问题是 出错了。。但是我们在使用中并没有出现啥异常。。请教。。计算机是怎么处理这些错误的?
DRAM是要不断刷新的,所以叫DRAM.
另外,在并行口中传输数据可能会有一个校验电路,最简单的是奇偶校验,但这是校验传输中的值的.
如果那里存储真的发生了改变,那么........属于天知道.也就是无从得知
过去的存储体都带奇偶校验的。譬如一个256KB的存储体,用的是九片256KBX1位存储芯片。第九片就是奇偶校验位。
但是,这样做,太影响访存速度了。
在VISTA中可以看到内存出错的数目 每秒大约20个字左右吧。我的是2G内存。。这也不足为奇。。。
俺的困惑是 理论上说 数据错了 就是致命的啊。。可是VISTA不是照样跑的好好的啊!
如果存储真的发生变化,因为对于存储本身一般没有校验电路,所以计算机不知道,除非cache回写的时候先读一遍。
所以“内存出错”在这里是代表什么意思?我想应该是缺页异常的意思,这与存储发生变化是两回事情
从理论上说,这个问题非常好解决。但是,内存访问是纳秒级的操作,不能容忍任何检查和纠正操作。
好在现在的DRAM已非常可靠。
内存数据错,是很灾难性的。不管错在操作码还是操作数,都会造成程序不可预测的结果。