【问题标题】:Is address 0xFFFFFFF0 hardwired for system BIOS ROM?地址 0xFFFFFFF0 是否为系统 BIOS ROM 硬接线?
【发布时间】:2014-05-29 07:51:36
【问题描述】:

我从以前的堆栈溢出答案中读到了这个:

初始开机时,BIOS 直接从 ROM 执行。 ROM 芯片映射到处理器内存空间中的固定位置(这通常是芯片组的一个特性)。当 x86 处理器退出复位后,它会立即从 0xFFFFFFF0 开始执行。

跟进问题,

这个地址 0xFFFFFFF0 是硬连线的,只是为了访问系统 BIOS ROM,然后在系统启动并运行之后,这个地址 0xFFFFFFF0 不能被 RAM 使用吗?

另外,当这个地址0xFFFFFFF0被我们访问系统BIOS ROM时,CPU是作为IO设备还是内存设备访问它?

【问题讨论】:

    标签: memory x86 cpu boot bios


    【解决方案1】:

    上电时,它是 ROM。必须是,否则 CPU 将无法启动。一些芯片组具有寄存器位,允许您从内存地址空间取消映射 BIOS 闪存芯片。当然你不应该在从 ROM 执行时这样做!

    PC 硬件上有一种称为"shadowing" 的通用技术,BIOS 会将 ROM 芯片的内容复制到映射到相同地址的 RAM 中。 RAM 通常比 ROM 快得多,因此可以加快系统速度。

    至于你的第二个问题,它是一个内存设备。 一定有以下原因:

    1. I/O 地址是 16 位,而不是 32 位。
    2. x86 处理器无法从 I/O 空间执行代码。您不能将指令指针指向 I/O 地址。

    【讨论】:

      【解决方案2】:

      它被映射到全局内存空间并以相同的方式寻址。按照惯例,不应将 RAM 映射到其他设备使用的任何地址范围。这很常见。您可能还记得几年前,在 64 位操作系统在家用 PC 上变得更加标准之前,用户可以安装 4 GB 的物理内存,但由于显卡映射到 512 MB 的地址空间,因此可能只能访问 3.5 GB .

      【讨论】:

        猜你喜欢
        • 2015-12-01
        • 2011-12-09
        • 1970-01-01
        • 2019-01-30
        • 1970-01-01
        • 2020-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多