我知道现代计算机已经修改了哈佛架构.
事实上他们可以从他们保存数据的地方读取指令,这样他们可以直接从ROM芯片中获取指令吗?他们首先将BIOS加载到RAM,还是直接从芯片执行?我没有可以在附近打开的计算机,所以...如果我从内存插槽中删除所有RAM,计算机是否能够启动完整的BIOS,运行POST的东西并告诉我需要RAM?这很有趣我从未尝试过......
编辑:我的意图是要了解商业CPU(或至少是intel cpus)是否可以直接从ROM执行代码.它不是出于实际目的,而是为了增加我对计算机体系结构和内容的理解.删除RAM部分不是我的主要疑问,只是一个例子
x86 CPU在物理地址0xFFFFFFF0处开始执行.BIOS ROM位于地址空间的末尾.CPU从ROM执行的第一条指令是远跳,导致重新加载CS段,因此从物理区0x000F0000 - 0x000FFFFF内执行下一条指令.
什么原因导致ROM在两个区域都做出响应?PC上有一些特殊的地址解码逻辑吗?我在Bochs源代码中发现了一条评论,该代码指出最后128K的BIOS ROM映射到0xE0000 - 0xFFFFF.但是我找不到更多关于此的信息.很明显,这是PC特有的,因为我有x86嵌入式主板,并且这种镜像不会发生在那里.我只能用近跳.
英特尔表示,复位后处理器处于实模式,软件初始化代码从0xFFFFFFF0H开始.我的问题:
如果处理器处于实模式,它如何访问内存> 1MB(0xFFFFFFF0H)
如何发生这种情况或当RAM <4GB(比如2GB)时会发生什么
如果BIOS映射到0x000FFFFFH,为什么处理器开始在0xFFFFFFF0H执行
请帮我解决这些问题.谢谢.
我从以前的堆栈溢出的答案阅读:
初次上电时,BIOS直接从ROM执行.ROM芯片被映射到处理器存储空间中的固定位置(这通常是芯片组的一个特征).当x86处理器退出复位时,它立即从0xFFFFFFF0开始执行.
跟进问题,
这个地址0xFFFFFFF0是否只是为了访问系统BIOS ROM而硬连接,之后系统启动并运行此地址0xFFFFFFF0不能被RAM使用?
此外,当该地址0xFFFFFFF0正在我们访问系统BIOS ROM中,在CPU访问它作为IO设备或存储器装置?