nand坏区 为什么很多用了几十年的主板也没听说过BIOS的数据坏了的呢?

小编头像

小编

管理员

发布于:2026年04月14日

149 阅读 · 0 评论

为什么很多用了几十年的主板也没听说过BIOS的数据坏了的呢?

现代的UEFI BIOS除了传统BIOS的一些配置信息还在CMOS中,绝大部分需要存储的内容都被保存在闪存芯片中,在那里,还居住着BIOS的执行代码、ME的代码和存储部分,以及一些其他固件们(GBe,PMC,TB PHY等等)。闪存,也就是Flash,这个词汇经常出现在我们周围,这不,长江存储又刷屏了 。但是,这种闪存是固态硬盘要用到的NAND Flash,而不是BIOS存储用到的NOR Flash。

BIOS之所以选用NOR,是看中了它的XIP,也就是eXecute in place特性。我粗陋的翻译为原地执行代码 ,而不需要加载Load到某块内存中执行。这个特性十分重要,因为在上电启动后,内存初始化还没有进行,没有内存可供使用,虽然我们可以将Cache偷过来做内存用一段时间(Cache As RAM,CAR),但总是没有直接用起来方便。在CAR好了之前的代码,都是在NOR Flash上直接执行的(XIP)。

BIOS芯片

尽管BIOS使用NOR Flash上已经有很长时间,但它和南桥芯片的接口在经历了从FWH到SPI的转变。十几年前闪存接口是传统的挂在LPC下面的FirmwareHub,那时的BIOS芯片长这样(现在有些古老主板上还可以找到它):

ST FWH 2MB Flash

FWH闪存芯片管脚多,主板走线复杂,成本高,LPC总线速度慢,这些弊病让主板BIOS芯片在十几年前慢慢地向SPI NOR Flash芯片转移。现在的BIOS芯片几乎都是SPI芯片,如果你仔细寻找,你几乎可以在所有的台式机、笔记本、服务器、甚至是嵌入式系统中找到它的身影:

Winbound 25Q64BV

这是两个Winbond 8MB的芯片 ,左边是8个管脚的封装,一般用作笔记本和嵌入式系统上;右边是16 pin的封装,一般用作台式机和服务器中。

BIOS闪存芯片经历了一个逐渐变大的过程。从1MB到2MB,再到8MB,现在很多服务器已经用上了64MB的Flash。闪存内部要也不再仅仅是BIOS了,还有别的小伙伴杂居其中。如果你对闪存芯片内容好奇,可以用UEFITool 打开BIOS Image:

一个BIOS Image例子

可以看到,Flash开头是描述符Descriptor区域。里面的结构是Intel定义的,有其他各个区块的大小、位置和权限等信息,以及SoftStrap等等内容。BIOS的代码和存储只是其中一个区域,尽管在很多情况下是最大的区域。

BIOS区中的可变部分:Variable

BIOS区域中如何划分就是BIOS程序员自己做主了。一般被划分成很多区域(FV),一些是存储代码,一些是存储数据。存储数据是利用了NOR Flash的非易失(NVM)特性,简单来说就是掉电内容不丢失,这样用户的一些选项(setup options)才能长期存储。尽管用在固态硬盘的NAND Flash和BIOS芯片NOR Flash在存储原理上有很大不同,但一点却是相似的,那就是数据可以从1变成0,但不能从0变成1:

想要从0变1,要经历一个擦除操作,这就是闪存所以被称为Flash的原因。而闪存的寿命是由能够擦除多少次来决定的,在NAND Flash是这样,在NOR Flash上也没有不同:

NOR Flash可擦除次数更少

在所有影响寿命的地方,我们一定要精打细算,BIOS 芯片也不能例外,谁也不想用着用着,主板忽然损坏了吧。这就要求BIOS在存储数据的时候,不能采取原地擦除的策略,而只是标记一下无效,在后期一次性擦除,延长Flash寿命 。在NAND Flash里面这个过程叫做GC(Garbage Collection),而在BIOS NOR上我们叫做Reclaim:

从图中,我们看到会有内容搬来搬去和整理的动作,比较两者,就会发现,有效数据一个个拍好了,十分整洁,为下一次的数据加入做好了充分的准备。这个搬迁的过程,不可避免的会将数据搬到内存,再从内存中移到目标块,同学们有没有想过,在搬的过程中,如果出现断电,是不是主板就变砖了?这就是图中有Spare Block的原因,它起到缓存,在搬得过程中,保证数据永远是可用的。它加上其他一些安全特性,就组成了UEFI BIOS存储的基线:高容错(Fault Tolerant)非易失存储系统 -- UEFI Variable。我们在BIOS界面上可见和不可见的改动,都存储在variable中。

红旗能打多久?

说了这么多原理,现在我们可以回答很多人关心的一个问题:如果我经常修改BIOS设置,会不会把BIOS写坏了?

我们已知条件有哪些呢?

1.UEFI BIOS在设计的时候,已经采用算法规避大量的擦除操作,将擦除操作归并,以增加闪存芯片寿命。

2. 不是每次BIOS启动,都有数据需要保存的,大多数情况下启动过程中没有写闪存操作。

那么如果你是个电脑爱好者,又十分勤奋,每天重新启动10次电脑,每次都更改BIOS配置,多久电脑会损坏?我们现在就这种脑洞情况进行一个有趣的计算。

假设你的电脑中BIOS UEFI Variable空间是64KB(台式机一般情况,服务器会大些),有一半的内容被固定配置占据,也就是还剩下32KB给BIOS开机设置项:Setup Variable用。不巧的是,主板的BIOS配置又很多,多达要用4KB来保存(极端情况)!这样每次开机会产生4KB的无效数据块,32 / 4 = 8次开机就要Reclaim一次,也就是要擦除一次。主板BIOS闪存芯片是上例中的W25Q64BV。在芯片手册中(参考资料2),它的擦除次数是:

用它的最小擦除次数10万计算,能用多久呢?很简单的算式:

100000 /(10 / 8)= 80000天 = 219年!

那如果你对BIOS设置有着疯狂的爱好,每天重启100次,而每次又都修改BIOS设置呢?理论上,也能用上近22年!

结论

UEFI BIOS已经做了很多优化,作为普通用户,大家完全没有必要担心Flash写坏。但也不是完全高枕无忧,BIOS业内人士还是要注意防止BIOS写坏的情况发生。我曾经做过一个项目,后期要求做压力测试,机器要在各种情况下(Shell,Windows,Linux)各要重启4000次。我拨了一些板子做这项压力测试,这些板子基本在不停的重启中(自动测试驱动)。过了一段时间测试部门报告一个板子坏了,烧不了BIOS了。我开始还不以为意,渐渐的,越来越多的压力测试主板都不能烧片了,这才引起我的注意,一计算才发现,好家伙,是程序的问题,险些引发大规模召回事件 。原来为了快速启动,内存初始化会保存内存training的参数,下次重启就不需要再Training了,节省了很多时间。而这些参数很大,占据了48KB空间(Variable只有64KB)。好死不死,尽管程序增加了逻辑,内容一样,就不会重复存了,但程序员在参数里面加入了时间戳,结果checksum每次不一样,这样每次重启都要存,每存一次都要Reclaim。每次重启需要10秒,一天可以重启:

24 x 60 x 60 / 10 = 1.44万次

而按照最小擦除次数10万次计算,能用:

10/1.44= 7.14天!

怪不得慢慢地一个个都坏了呢!后来去掉了时间戳,才解决问题。

什么是NAND Flash位翻转?如何解决其带来的启动异常等问题?

位翻转特性。

大家是否遇到过设备运行一段时间后无法开机,程序运行异常,但重烧固件后问题又神奇消失了的情况。如果你使用的存储是NAND Flash,那么或许位翻转现象是你需要关注的重点问题。

NAND Flash工作原理与数据绝缘储存有关,当需要写入数据时施加电压会形成电场,使电子能够穿越绝缘体进入存储单元完成数据写入。当需要删除存储单元的数据时同时也是需要施加电压的,以引导电子穿越绝缘层使其离开存储单元。

然而问题的关键在于什么是位翻转?位翻转是指在NAND Flash存储单元中由于长期使用电压变化、物理效应等因素,存储单元内的电子状态发生意外变化的现象。举个例子,本应储存为0的状态可能被意外变成了1或者反之,这种变化可能导致数据的读取错误,进而引发设备异常运行、启动问题等。

位翻转的出现通常源于漂移效应、频繁对某一区域的读写操作以及存储单元寿命耗尽等原因。要解决这个问题一种很常见的方法是引入ECC校验机制,这个机制能够检验所读取数据的正确性并在一定范围内纠正错误。

为了应对NAND Flash位翻转可能带来启动异常等问题,致远电子M3352核心板提供了有力的解决方案。通过在U-Boot支持8位ECC校验算法,它可以纠正小于8位的位翻转的问题。而对于超过8位的数据位翻转,系统将从备份分区启动并恢复坏区,从而保障系统不会因NAND Flash位翻转而导致启动问题。

相关问答

固态硬盘中的“mlc”,“tlc”和“3dv- nand ”的区别是什么?

tlc最烂,速度慢寿命短,最便宜mlc居中,速度中等,寿命中等,价格中等slc速度快,寿命长,价格贵3d是三星研究的一项技术,不过本质还是tlc,比一般tlc强点,...tlc...

a9破解,没虚拟,原内存卡 了,怎么换一张新内?

A9破解的原理是让机器直接运行存放在内存卡内的系统。也就是说用内存卡的系统直接代替了机器NAND的系统。不插带有系统的内存卡是无法正常开机的。跟主题、GW...

苹果电脑13寸右前方有个想sb卡的小口是干什么用的-ZOL问答

SDXC规范仍然基于NAND闪存技术,这主要是由于NAND闪存拥有增大页容量的功能(NAND闪存的读取写入的容量单位都是“页”),因为NAND闪存的工作原理是闪存页的容量越...

U盘USB口撞歪了,能不能修?

可以修的NANDFLASH和控制芯片完好无损的情况下,重新焊个接头就行了。电子市场十块钱的事儿。如果控制芯片也坏了,只能想办法直接读NANDFLASH了。幸好FAT32文...

老3DS虚拟升级失败,进入虚拟黑屏,求助-ZOL问答

如果你确定是虚拟系统升级到了9.4可以考虑将主机sd卡格式化全部重做备份nand...2.确认显示器是否损坏如果显示器和显卡安装牢靠,那么请换一台确认正常的显示器...

占韩国20%GDP的三星对韩国究竟是好是 ?

小孩子才分好坏,大人只分利弊。其实三星现在在韩国的地位就等同于封建社会里面的皇帝,如果是明君执政的话,那么就风调雨顺、国泰民安。如果是昏君上台的话,可...

【Windows10 BUG】无法修复磁盘错误 - Microsoft Community

[回答]Win10扫描驱动器感觉根本貌似没啥用呀!微软似乎改变了磁盘扫描策略:如果某一错误一直存在且无法恢复,但它并没有影响用户使用那么就不要报告这个错...

手机闪存和固态硬盘有什么不一样吗?为什么总担心固态硬盘 掉,却没人担心手机闪存坏掉?

因此,更多情况下,你会往电脑储存更多重要资料,而手机可能只是为作为云储存,起到文件转发,传输电脑的作用。因此,这种情况,电脑固态硬盘和手机闪存坏了,哪...因此...

小米路由R1D使用2年后大批量用户有损 情况,是否为设计问题?

路由器的工作是需要一天24小时不间断开机的,而小米路由中内置了一块1TB的硬盘,这本来是一件非常酷炫的事情。但是当时因为当时主板上的NandFlash只有256M,不...

我的索尼手机现在开不了机然后音量键 了怎么办?

软件故障:多是系统运行冲突,NAND存储器无法正常调动内存执行开机程序。这类固执用索尼出厂资料包刷机多数就能够解决了。建议问主到索尼手机售后刷机就可以...

标签:

相关阅读