You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

x86处理器如何从SPI闪存中获取第一条指令?

x86上电启动:SPI闪存指令读取的底层细节
  • x86处理器上电复位后,第一条指令的固定地址是0xFFFFFFF0(也就是常说的复位向量),这个地址被硬件直接映射到存储BIOS的SPI闪存区域——现代英特尔系统里,闪存集成在PCH里(替代了老架构的南桥)。

很多人疑惑:复位后CPU连缓存、DRAM都没初始化,也不知道SPI协议,SPI总线也没配置,怎么能从闪存里读到指令?甚至看到资料说BIOS是direct memory addressable,搞不清到底是怎么回事。

核心原因是这全靠硬件层面的透明适配,完全不需要软件干预:

  1. 硬件默认启动模式:CPU复位的同时,PCH里的SPI控制器会自动进入固化的启动模式——片选信号被硬件拉低使能,SPI总线直接用预设的标准时序工作,默认发送SPI读指令0x03来读取数据。
  2. 地址自动转SPI命令:当CPU取指引擎把0xFFFFFFF0放到地址总线上时,PCH的地址解码器会自动把这个内存地址转换成SPI闪存对应的物理偏移,然后生成完整的SPI读命令序列,把闪存里的指令数据读出来再返回给CPU。整个过程CPU完全感知不到SPI协议的存在,就跟读普通内存一样。
  3. 关于direct memory addressable:这里说的不是原地执行(SPI闪存本身没法直接跑代码),而是指CPU可以用普通的内存访问指令(取指、读操作)来访问闪存内容,硬件帮你处理了所有SPI协议的细节,让闪存看起来就像一段只读ROM。

至于为什么查x86手册找不到细节:因为这类启动逻辑属于平台设计的私有内容,不是x86架构的通用规范。CPU手册只会定义复位后要去0xFFFFFFF0取指令,但具体怎么把这个地址映射到SPI闪存、SPI控制器怎么自动工作,都是主板/PCH厂商的实现细节,不会写在公开的CPU架构手册里。

内容的提问来源于stack exchange,提问作者shivakumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 17:02:04