BIOS存储在哪里?


56

http://en.wikipedia.org/wiki/BIOS

BIOS软件存储在主板上的非易失性ROM芯片中。...在现代计算机系统中,BIOS内容存储在闪存芯片上,因此可以在不从主板上卸下芯片的情况下重写内容。这样可以轻松升级BIOS软件以添加新功能或修复错误,但会使计算机容易受到BIOS rootkit的攻击。

由于ROM装置ř ead- ö唯一一句中号埃默里,为什么可以在BIOS内容被改写?

“闪存芯片”是否与“非易失性ROM”相同,都意味着存储BIOS?


2
CMOS包含可由用户[在BIOS屏幕中]修改的系统设置[BIOS设置]。因此,根据cpsforum.blogspot.co.uk/2012/06/…... “ [调用您输入的屏幕] CMOS设置比调用[it] BIOS设置更合适。” 和bayt.com/en/specialties/q/7459/… “仅通过刷新新版本才能修改BIOS。” 和“ BIOS是控制主板启动过程的一组指令。”
barlop

4
除了没有人设置CMOS。这就像说您在启动汽车时在汽车中设置了油箱。
Andon M. Coleman

4
ROM is read only, so why can the BIOS contents be rewritten?这是约定俗成的说法。
Synetech 2014年

1
如果您阅读了Wikipedia 中在问题中突出显示的链接后面的文章,那么您应该已经想到了,答案flash memory不是实际的ROM。尽管这种混乱可能很普遍,但在我看来,这是一个很糟糕的问题,因为它完全是由于缺乏阅读免费提供的信息而造成的!
亚历山大·科苏贝克

1
实际上,安东,在任何新计算机中做的第一件事就是设置我的CMOS设置。在这种情况下,汽车油箱比喻是完全不合适的。
TomXP411 2014年

Answers:


59

为了增加Varaquilex的答案,BIOS软件存储在电可擦可编程ROM(EEPROM)中,该固件可通过电子方式进行固件更新。非常老的BIOS芯片实际上是UV-EPROM芯片,需要对其进行紫外线照射才能擦除,然后才能对其进行重新编程。


编辑:正如评论中指出的那样,有时甚至比一次性使用可编程ROM(PROM)芯片更早,一旦配置,就无法对其进行重新编程,并且需要完全更换以进行升级(尽管很少需要这样做)。


2
甚至更早以前,还有一些是不可擦除的ROM / PROM,如果要安装新的BIOS,则必须用新的ROM替换。当然,那时BIOS的工作量很少,而且更改很少。
keshlam 2014年

是啊。UV-EPROM ...摘下UV-EPROM BIOS上的标签并看到用于重新编程芯片的小窗口总是很有趣。从字面上看,没有人拥有对其进行重新编程所需的设备,因此我从来没有理解他们为什么要在消费(非开发)硬件上进行重新编程。您必须将其发送到工厂中才能完成此操作,此时,制造商会执行此操作。通过使用标准的掩膜ROM可以省钱。
Andon M. Coleman

3
@ AndonM.Coleman在较小批量中,使用EPROM或(甚至更早)使用保险丝型PROM,实际上可能比切割掩模ROM便宜。例如,如果可以使用内存,则基本上所有80年代早期的街机都可以将其软件安装在PROM或EPROM上,尽管它永远都不会改变,因为它在预定的生产量上更便宜。
zwol

1
UV-EPROM(EEPROM)从未用于消费者对AFAIK的重新编程。当设备返回工厂维修或任何其他形式时,通过换出或重新编程EEPROM来升级固件非常方便。
rossnz 2014年

1
@ AndonM.Coleman-掩膜ROM 一次性收取大量费用。UV-EPROM虽然每单位价格更高,但对于短期(<10K)生产而言通常更便宜。
埃里克·布朗

40

ROM是只读的,为什么BIOS内容可以重写?

BIOS程序本身存储在EEPROM(可以通过[E]电[E]擦除和[P] Rrogrammable)或闪存中。因此,这里的只读信息是关于非易失性芯片。与易失性RAM不同,当电源断开时,存储器的内容会保留。ROM是EEP,可帮助BIOS重写或更新。那时,为了进行此类操作,您必须从板上卸下BIOS芯片,放置一个新的芯片(如果不是PROM或EPROM),或者如果必须将其EPROM交给制造商,然后让他们对芯片进行重新编程并将其重新连接到板上。在电流上升之后,借助EEPROM,您无需卸下芯片即可执行此类操作,只需使计算机通过电气完成工作即可。


“闪存芯片”是否与“非易失性ROM”相同,都意味着存储BIOS?

来自维基百科

闪存是一种非易失性电子存储介质,可以对其进行电擦除和重新编程。

闪存是从EEPROM(电可擦可编程只读存储器)开发的。闪存有两种主要类型,以NAND和NOR逻辑门命名。各个闪存单元的内部特性表现出与相应栅极相似的特性。EPROM在重写之前必须被完全擦除,而NAND型闪存则可以以块(或页)的形式进行读写,这些块(或页面)通常比整个设备小得多。NOR型闪存允许将单个机器字(字节)写入(擦除的位置)或独立读取。

EEPROM和闪存不是相同的东西:它们是两种相似的存储器类型,一种是从另一种存储器开发出来的,并且包含不同类型/配置的MOS晶体管。但是,它们是BIOS程序所在的内存。


为了解决另一个误解,我想提一下这种CMOS-BIOS关系:

BIOS设置被存储在CMOS芯片(其经由电池保持在功率主板上)。因此,当您取出电池并重新连接电池时,BIOS会重置。运行相同的程序,但设置为默认设置。有关启动过程中使用的内存的详细视图,请参见此答案

编辑

为了扩展CMOS-BIOS主题,感谢@Andon M. Coleman,我想在回答中添加他的评论:

值得一提的是,BIOS设置不必存储在易失性CMOS内存中。有许多嵌入式系统将其设置存储在NVRAM中。这些年来,PC不再使用易失性CMOS的唯一原因是,它们已经有一块电池,可以在电源关闭时保持内部实时时钟的滴答声(回想一下,当您按下PC-AT上的电源开关时,它实际上切断了主板的所有电源)。这意味着可以使用更便宜的易失性存储器来存储系统设置。所以它主要是出于历史目的。


3
值得一提的是,BIOS设置不必存储在易失性CMOS内存中。有许多嵌入式系统将其设置存储在NVRAM中。这些年来,PC不再使用易失性CMOS的唯一原因是,它们已经有一块电池,可以在电源关闭时保持内部实时时钟的滴答声(回想一下,当您按下PC-AT上的电源开关时,字面上就切断了主板的所有电源)。这意味着可以使用更便宜的易失性存储器来存储系统设置。所以它主要是出于历史目的。
Andon M. Coleman 2014年

1
@ AndonM.Coleman这很有价值。我将其添加到我的答案中。感谢您的见解,我学到了一些新东西:) +1
Varaquilex

2
过去,用于内存的80286板映射了CMOS。我发现困难的方法是:不正确地限定循环并经常擦拭硬盘设置。
pestilence669

@ pestilence669,“限定循环”是什么意思?
Pacerier,2015年

@Pacerier这是一个很好的问题。我想我的意思是“终止”。如果我不小心保留我的CX寄存器,那么REP STOSW&这样会擦除我的设置。
瘟疫669年

27

作为其他答案的补充,我喜欢一种更直观的方法:

BIOS位置

此BIOS芯片在其插槽中的位置似乎不太好。

BIOS(包括新的UEFI BIOS)是存储在主板芯片上的软件。zelanix和Varaquilex已涵盖了技术细节。

该芯片通常(但并非总是)是可移动的,以便于维修。一些主板包括一个以上的BIOS,主要是作为销售as头,但在某些情况下,第二个BIOS有助于从某些(通常是用户引起的)问题中恢复:

双不可移动BIOS


6
那根本不是销售头...您知道BIOS更新有多可怕吗?当您执行此操作时,会收到各种警告,并且如果您设法破坏该过程(有时即使您做的一切正确),最终也会遇到一台笨拙的PC。哦,并且“ BIOS更新不在制造商的保修范围之内。” 这就是发明备份BIOS的原因。这与营销无关。只是一点点额外的安全性。(是的,我已经砖砌电脑做一个BIOS更新我们不得不主板发送给制造商,以获得BIOS重新闪现。)
TomXP411

尽管最近几年BIOS更新得到了很大的改进,但您的观点很不错。不再需要引导到DOS并找到软盘驱动器。例如,在最近的华硕主板上,更新可以在Windows中完成,也可以直接从UEFI BIOS完成,后者从NTFS读取文件。这是用于主板。像3Ware(no Avago)这样的制造商仍然希望您能弄清楚如何在1.44MB磁盘映像上安装10MB BIOS。他们不提供备份BIOS。
Charles Burns 2014年

@CharlesBurns tw_cli可以在引导计算机的情况下进行3ware BIOS更新。
derobert 2014年

@derobert我最近的BIOS更新是尝试纠正由于3Ware驱动程序更新而无法启动的服务器(因为3Ware需要驱动程序,软件和固件匹配)。在这种情况下,无法使用无法启动的OS进行更新会使事情变得棘手,并且最新的3Ware CD无法启动(尽管主板在受支持的列表中)。但是您完全正确:tw_cli可以更新BIOS。我忘记了这一点。:)
查尔斯·伯恩斯

@CharlesBurns,您为什么称UEFI EUFI?
Pacerier,2015年

7

可能还值得注意的是,在80286之前的大多数机器上,从ROM读取数据的速度和从RAM读取数据的速度一样快,但是自1980年代以来RAM带宽有了极大的提高,但商用ROM带宽却没有[快速ROM芯片的确存在。 ,但是如果将ROM的速度提高到一定程度,则会增加价格]。由于一次读取BIOS ROM的每个字节仅需花费一秒钟的时间,因此某些80386机器和大多数80486及更高版本的机器提供了在启动时将BIOS复制到RAM的选项。现代机器将事情做得更远,实际上将BIOS ROM芯片放置在与RAM总线完全分开的总线上。慢点。与80486时代的机器通过从ROM运行以将其自身复制到RAM的程序开始,不同的是,许多较新的机器所具有的处理器根本无法从ROM运行代码。相反,它们具有启动时将ROM的某些部分读入RAM并执行的电路。


正确,这可以解释现代BIOS芯片如何只有8条左右的导线。现代闪存实际上使用串行接口。
TomXP411 2014年

1

看一下2005年1月阅读的Wikipedia文章:

在1990年左右之前,BIOS被保存在无法更改的ROM芯片上。随着固件的复杂性和更新需求的增长,BIOS固件存储在EEPROM或闪存设备中,用户可以对其进行升级。但是,执行不当或中止BIOS更新会导致计算机或设备无法使用。为避免BIOS损坏,某些新主板具有备用BIOS。而且,大多数BIOS具有“启动块”,它是ROM的一部分,该ROM首先运行并且不可更新。此代码将在跳转到BIOS之前验证其余BIOS是否完整(通过校验和,哈希等)。

当然,如今,我们在Wikipedia上有一篇文章,说该芯片一口气是“非易失性ROM”,可在下一次写入时使人们感到困惑。从这里可以学到的教训是,维基百科通常写得不太好,文章也会变,不一定总是变得更好。

我建议看书。斯科特·穆勒(Scott Mueller)的《升级和修复PC》一书中有整整一章是关于BIOS的,它讨论了从BIOS芯片所在的地方到各种各样的东西(清单四:ROM,PROM,EPROM和EEPROM)。

一些引号:

哪种类型的ROM的系统使用不管,存储在ROM芯片中的数据是[原文如此]非易失性并无限期地保持,除非有意擦除或覆盖(在那些情况下,这是可能的)。— 升级和维修PC,第373页

自1996年以来,几乎所有制造的PC都包含用于存储BIOS的闪存ROM。快闪ROM是一种EEPROM芯片,您无需特殊设备即可直接在系统中擦除和重新编程。— 升级和维修PC,第387页

书并不完美。例如,可以在此处用Mueller对闪存的“第一次腮红”定义争论细节。但是好者通常是经过校对的,并且比大多数维基百科具有更连贯的解释,至少在句子与句子之间并不矛盾。

假定使用现代PC,而对20年前PC的工作原理不感到困惑:

您机器的固件保存在主板上的非易失性存储芯片中。它实际上占有很多。(在我的答复中提到的Pm49FL004T 拥有一半的MiB,并且在我的答复中提到,某些芯片组能够支持16MiB的固件。)它不仅牵涉系统引导程序,甚至涉及保护模式的操作系统。它的内容是可修改的,但不如主系统RAM的(易失)内容那么容易。在EFI系统上,芯片不仅保存固件代码和(只读)数据,还保存非易失性EFI变量的值。


0

实际上,在最近的日子里,越来越复杂的系统如何存储BIOS。想象一下2个类似于您的闪存驱动器的存储库,只是更小。其中之一被只读访问,第二个可被写入(以刷新BIOS的新版本)。编写新BIOS失败时,有两部分是备份。如果成功刷新新BIOS,则这两个部分将切换,并且可以在新BIOS下重启设备。

注意:并非所有类型的设备都具有该系统。有时是一个简单的小型闪存,只是被覆盖。通常,系统会提示您备份电力,而不要中断升级过程。

在较早的主板上,有EPROM存储器,该存储器可以在强光擦除后重新写入,或者后来是PROM存储器,可以一次写入。两者都只能通过特殊的编程设备完成,因此应从要写入的设备中删除BIOS芯片。


0

我相信,在最初的IBM PC中,BIOS“ ROM”是某种电可编程的(“一次写入”)ROM(EPROM)。我认为它是套接字,但是没有真正的期望它会在现场“升级”。那个时代的其他计算机也使用类似的东西。

随着系统变得越来越复杂,使BIOS“可现场升级”(而无需打开包装盒并进行物理更换)变得更加有利。因此,系统开始具有各种类型的可重写BIOS“ ROM”。优点是三:

  1. 随着系统变得越来越复杂,发生错误的可能性也越来越大。
  2. 具有升级和合并新功能的能力很有吸引力。
  3. 对于可能在多个不同盒中使用的主板(甚至​​可能使用不同的品牌名称),能够针对特定用途对BIOS进行出厂自定义很有吸引力。

与原始IBM PC大约同时使用的更大的存储盒也开始具有某种只读的“引导”内存,而不是更原始的“引导加载程序”技术。其中一些是通过掩码编程的ROM,一些EPROM,甚至是通过小型“服务处理器”从软盘读取的RAM。


是的,PC和XT主板上的yll芯片(也许是I / O芯片)都已插入插槽。这很有用。我不得不将XT板上的一些芯片换掉以应对各种问题。实际上,某些早期的PC确实需要BIOS更新,而原始PC实际上在ROM中具有完整的编程语言。我似乎记得,软盘驱动器的第一代PC需要进行一些更新……
TomXP411 2014年

@ TomXP411-是的,我忘记了原始PC在ROM中具有BASIC解释器。但是从技术上讲,这是与BIOS IIRC分开的一个ROM。BASIC在第一个版本中有一些记录良好的错误,但是我不记得他们提供了更新来修复它们-您只需要购买带有更新版本的新PC。类似于1.2版。
Daniel R Hicks 2014年

0

原始ROM实际上是在硅层上以这种方式制造的。一旦用户对其进行了电气可编程设置,则需要注意以下几点:

  1. 在许多公司中,它们内部都有硬件升压电路,允许内部将3.3V或5V电压升至12V以进行实际编程。对于较早的PROM,EPROM,UVEPROM和EEPROM,这是正确的。

  2. 如果在较旧的型号中可用,则紫外线(紫外线)可擦写功能允许电路在对器件进行编程时仅启用内部+ 12V,并且紫外线窗口允许紫外线进入芯片区域,但是必须覆盖紫外线窗口编程后,否则芯片将在任何房间的日光照明下擦除。UV可擦写的擦除速度也非常快,比将整个芯片重新编程为0或1的速度要快得多。

在许多情况下,所有“可编程” PROM内部都有一个升压电路。

  1. 后来的EEPROM允许电擦除到EPROM或UVEPROM。

  2. 后来出现了闪存技术,并添加了不同的电路技术(在晶体管级别),并且密度比旧的EEPROM高。

  3. 自从原始ROM停止运行以来,几乎在所有情况下,几乎所有(25%?)计算机问题都可疑为所有BIOS PROM。这些后来的PROM(都具有某些可编程功能)可能会损坏,或者随着时间的推移只是“忘记”其程序。

无论如何擦除或重新编程PROM,都应小心(ESD损坏),老化或潮湿。

在大约1/4的坏电脑机箱中,重新编程“好” BIOS通常可以解决问题。因此,即使您的BIOS是“好”的,如果可能的话,也总是需要重新刷新。


-1

BIOS存储在CMOS芯片或NVRAM中,这是主板上的少量非易失性内存(也就是说,它们可以无限期地保存数据而无需电源)。

至于如果一切顺利,您会收到什么消息,在较旧的计算机上,如果一切都签出,通常会从计算机中听到一声哔哔声。

在较新的计算机上,您将一无所获:您将不会看到该帖子,也不会有任何消息,哔哔声,什么都没有……有点像“没有新闻就是好消息”类型的交易。如果您仍然希望看到POST在更新的计算机上运行,​​则击中的键(至少在我使用的计算机上)是Tab。打开电源后立即点击几次,以在屏幕上看到POST。或者,应该有一个选项可让您在BIOS设置中的屏幕上显示POST。


4
您正在将bios 程序与其设置数据混淆。明显的区别是:取出备用电池,程序仍然运行,但其设置恢复为默认值。当设置由电池供电时,程序将存储在“读取最多”的存储技术中,该技术需要采取有效措施进行擦除。
克里斯·斯特拉顿
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.