快讯
HOME
快讯
正文内容
nand闪存与bios 为什么很多用了几十年的主板也没听说过BIOS的数据坏了的呢?
发布时间 : 2025-01-20
作者 : 小编
访问数量 : 23
扫码分享至微信

为什么很多用了几十年的主板也没听说过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天!

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

杂谈闪存二:NOR和NAND Flash

三星终于从爆炸门中走了出来,受到来自DRAM 与NAND 价格上涨带动,三星把Intel从盘踞了14年的半导体王座上赶了下来,风光可谓一时无两。虽然下半年市况预料将会修正,但今年整体DRAM 仍可较去年成长39%,NAND 则成长25%,而这两项恰恰曾经帮助过Intel走向巅峰,真是成也萧何,败也萧何啊。说起NAND Flash,他和他的哥哥NOR Flash可谓是20世纪最重要的发明之一,他的诞生和发展很是曲折,生于日本,长于美国,如今却在韩国大放异彩。今天的历史故事要从他的发明人桀冈富士雄(Fujio Masuoka)和他的狗血东家说起。

历史

Intel很早就发明了EPROM,这是一种可以用紫外线擦除的存储器。相较于ROM,它的内容可以更新而且可以保持10~20年,老式电脑的BIOS都存储于此。

(Intel 1702)

它的顶部必须被覆盖住,以防被阳光里的紫外线擦除。后来Intel在其基础上于1978年发明了电可擦除的升级版叫做EEPROM。不需要阳光的帮忙,方便多了,可是读取和擦除速度却非常缓慢。

这时我们的主人公富士雄出场了,他于1971年加入了东芝公司。受到了EEPROM的启发,他开始利用自己夜晚和周末的时间钻研一种能快速擦除的EERPOM。他在1980年取得突破,申请了一个叫做simultaneously erasable EEPROM的专利。然而,日本大公司的论资排辈却让这项划时代的发明石沉大海,直到4年之后。

“我终于被提拔了,可以不要批准就去工厂,让工人们帮忙做出样品了”,富士雄说。当他拿着他的样品参加当年的IEEE大会的时候,NOR Flash引起了轰动,以至于当他回到日本后,他的老板总是被Intel打来的要样品电话骚扰。他被奖励了几个人手帮忙,而这些人却是part-time的。而在大洋的另一边,Intel在收到样品后,立刻派出300多个工程师全力研发自己的版本。由于新发明的这种EEPROM擦除速度飞快,富士雄的同事建议他把这种技术取名Flash,暗合相机的闪光灯飞快闪烁之意。

东芝公司并没有把NOR flash技术当作宝贝,只是不想要别人插手而已。所以不停的起诉任何希望染指的公司,如TI公司。而富士雄却并没有停止他的追求,在1986年发明了NAND Flash,大大降低了制造成本。由于他的贡献,东芝奖励了他一笔几百美金的奖金和一个位置很高却悠闲的职位。做为一个工程师,他忍受不了这种待遇,不得不辞职进入大学继续科研。

东芝公司的短视很快招来了市场的惩罚。Flash市场迅速扩张,在90年代末期就达到数百亿美金的市场规模,Intel是这个市场的霸主,而东芝公司只享有很小的份额(NAND,NOR几乎没有)。在很长一段时间,东芝公司甚至不承认NOR flash是他发明的,说是Intel发明的。直到IEEE在1997年颁给富士雄特殊贡献奖后才改口。

富士雄觉得自己的贡献被东芝公司抹杀了,他愤然于2006年起诉了公司,并索要10亿日元的补偿。最后他和东芝公司达成和解,得到8700万日元(合758,000美元)。富士雄没有依旧停止自己的脚步,在获得进200个专利后,他还在向着下一个big thing进发。

无疑富士雄是个英雄,有人说应该颁给他诺贝儿奖,他也是我还可以记得名字的发明人之一,而其他的很多技术发明人却泯然众人矣。从这个故事中也可以折射出日本大公司的官僚主义和大公司病。

NOR VS NAND

那么什么是NOR Flash和NAND Flash?我们先来看看他们芯片的样子:

(左边是NAND,右边是NOR)

他们的电气原理我就不讲了,感兴趣的人也不多。我们这里主要聚焦在他们的共性和特性上。

1。共性

A. 都是非易失存储介质。即掉电都不会丢失内容。

B. 在写入前都需要擦除。实际上NOR Flash的一个bit可以从1变成0,而要从0变1就要擦除整块。NAND flash都需要擦除。

2。特性

特性是决定使用哪种Flash的根据,我这里总结出一张表:

如果以美光(Micron)自己的NAND和NOR对比的话,详细速度数据如下:

(数据来源Micron)

如果我们单独看随机读取速度:

(数据来源Micron)

如果用现在流行的关系图看是这样:

(数据来源Toshiba)

应用场景

在PC和手机上我们都可以找到NOR和NAND Flash的身影。

1。NOR Flash

NOR Flash和普通的内存比较像的一点是他们都可以支持随机访问,这使它也具有支持XIP(eXecute In Place)的特性,可以像普通ROM一样执行程序。这点让它成为BIOS等开机就要执行的代码的绝佳载体。

NOR Flash 根据与 Host 端接口的不同,可以分为 Parallel NOR Flash 和 Serial NOR Flash 两类。

Parallel NOR Flash 可以接入到 Host 的控制器 上,所存储的内容可以直接映射到 CPU 地址空间,不需要拷贝到 RAM 中即可被 CPU 访问。NOR Flash在BIOS中最早就是这种接口,叫做FWH(Firmware HUB),由于其接是并行接口,速度缓慢,现在基本已经被淘汰。Serial NOR Flash 的成本比 Parallel NOR Flash 低,主要通过 SPI 接口与 Host 也就是PCH相连。

现在几乎所有的BIOS和一些机顶盒上都是使用NOR Flash,它的大小一般在1MB到32MB之间,价格昂贵。

2。NAND Flash

NAND Flash广泛应用在各种存储卡,U盘,SSD,eMMC等等大容量设备中。它的颗粒根据每个存储单元内存储比特个数的不同,可以分为 SLC(Single-Level Cell)、MLC(Multi-Level Cell) 和 TLC(Triple-Level Cell) 三类。其中,在一个存储单元中,SLC 可以存储 1 个比特,MLC 可以存储 2 个比特,TLC 则可以存储 3 个比特。

NAND Flash 的单个存储单元存储的比特位越多,读写性能会越差,寿命也越短,但是成本会更低。

现在高端SSD会选取MLC甚至SLC,低端SSD则选取TLC。SD卡一般选取TLC。

3。其他

1. 最早的手机等设备之中既有NOR Flash也有NAND Flash。NOR Flash很小,因为支持XIP,所以负责初始化系统并提供NAND Flash的驱动,类似Bootloader。而NAND Flash则存储数据和OS镜像。三星最早提出Norless的概念,在它的CPU on die ROM中固话了NAND Flash的驱动,会把NAND flash的开始一小段拷贝到内存低端作为bootloader,这样昂贵的NOR Flash就被节省下来了,降低了手机主板成本和复杂度。渐渐NOR Flash在手机中慢慢消失了。

2. NOR Flash最大的问题是擦写慢和可擦写次数少,但是很少会因为这个原因造成BIOS速度降低和损坏,你知道是为什么吗?

尾声

NAND Flash相对NOR Flash更可能发生比特翻转,就必须采用错误探测/错误更正(EDC/ECC)算法,同时NAND Flash随着使用会渐渐产生坏块;我们在使用NAND Flash的SD卡上经常使用FAT文件系统,如果大家度过前面的文章(传送门:FAT文件系统与UEFI - 知乎专栏)就会知道,文件分配表会被频繁改写,而每块的擦写次数是NAND Flash寿命的决定性因素。如何才能平衡各块的擦写和为可能的坏块寻找替换呢?通常需要有一个特殊的软件层次,实现坏块管理、擦写均衡、ECC、垃圾回收等的功能,这一个软件层次称为 FTL(Flash Translation Layer)。根据 FTL 所在的位置的不同,可以把 Flash Memory 分为 Raw Flash 和 Managed Flash 两类:

最早大家都是使用raw Flash,FTL全由驱动程序实现。后来发展到SD和eMMC等,则由设备固件实现抽象。

FTL的原理是我们下一篇的主要内容。

相关问答

u盘变成 nand 怎么办?

按如下步骤,一步步排除故障。1、在确保没问题的USB接口上,插上U盘,听一下音箱有没有叮咚一声的响声。如果什么声音也没有,说明电脑完全没有识别到有USB设备...

NANDflash和NORflash的区别?

因此,NANDflash适合用于大容量、低功耗、顺序读写的应用场景,如便携式设备中的存储卡、USB闪存盘等;而NORflash则适合用于小容量、高性能、随机读写的应用场...

闪存 是什么意思?

闪存是一种用于数码设备的非易失性存储技术,它可以在断电或者断电后保持数据的存储状态。闪存通常用于各种设备,如USB闪存驱动器、固态硬盘(SSD)、移动电话、...

三星mznln128hahq固态硬盘参数?

速度...该硬盘采用了最新的NVMe协议,其读取速度和写入速度都高达数千MB/s,随机读写速度也十分出色,能提供更快的数据传输和运行速度。集成了硬件加密技术,更...

我的诺亚舟开不了机了.只是显示:np800+biosv1.12nandflash...

[回答]格式化机器,插入电脑格式化,再重新下载系统软件

硬盘和ROM的区别?

ROM是只读存储器(Read-OnlyMemory),是计算机内部存储器中的一种,而硬盘是外部存储器,所以对于大学学子来说,考试时你如果把这两个混为一种东西绝对是错误...

为什么固态硬盘的文件无法彻底删除?

目前所谓的基于SSD固态硬盘的可靠的擦除数据的方法,都会留下严重的隐患。他们深入的研究了NAND闪存芯片的管理方式,通过固件界面进行的数据读写管理,但是这些...

插入读卡器没反应是怨什么

[回答]把适合的存储卡插入插槽,端口与计算机相连并安装所需的驱动程序之后,计算机就把存储卡当作一个可移动存储器,从而可以通过读卡器读写存储卡。按所兼...

USB3.2相比3.1有多大提升?-ZOL问答

群联U17主控支持两个NAND闪存通道和16个CE,可搭配各家的3DTLC、3DQLC闪存,系统接口可选Toggle3.0、ONFI4.0,并支持群联第四代LDPC校验、RAIDECC纠错、...

电脑开机显示"Not enough space in runtime area!!.SMBIOS d...

3、重启机按着DEL进BIOS设置成出厂设置。如果通俗地解释非易失性存储器,那就是指断电之后,所存储的数据不丢失的随机访问存储器。之所以加如此的定语,是因为:...

 洛克王国火神  胡安妮 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2025  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部