我是x86 cpu的新手。
我在x86中阅读了有关受保护模式的内存管理的所有资料。
材料是英特尔®64和IA-32架构软件开发人员手册第3A卷,系统编程指南,第1部分
我相信我理解cpu访问内存时的许多步骤。 :选择器寄存器是段描述符表的索引,描述符表的条目是段的基础,线性地址是段的基数和32位偏移的加法。
但是,令我困惑的是,在我看来,在上述所有步骤完成之前,CPU无法知道它将在第一时间访问哪个内存地址。如果CPU想要访问特定的内存地址,它必须知道选择器值和偏移量。但我的问题是它是如何知道的? CPU知道的唯一信息是它想要访问的内存地址吗?
当CPU只知道输出(存储器地址)时,CPU如何知道输入(选择器值,偏移量)?
答案 0 :(得分:0)
......来自
您还缺少真实模式
看看DOS_Protected_Mode_Interface&虚拟控制程序接口
定时器芯片如何控制CPU的复位线?
另请参阅Google Patents中的OSCILLATOR CIRCUIT WITH SIGNAL BUFFERING AND START-UP CIRCUITRY
CPU'开始'执行存储在主板上ROM中地址为FFFF0的代码 例行测试中央硬件,搜索视频ROM ...
所以...不是CPU开始'因为是“电源线”开始'
电源信号被发送到主板,由处理器定时器芯片接收,控制处理器的复位线。
BIOS detect RAM怎么样?另请参阅串行存在检测,开机自检(POST)
BIOS是一个在实模式下运行的16位程序
当CPU复位时,BIOS开始POST。 CPU尝试执行的第一个存储单元称为复位向量。在硬重启的情况下,北桥会将此代码获取(请求)指向位于系统闪存上的BIOS。对于热启动,BIOS将位于RAM中的适当位置,北桥将复位向量调用指向RAM
这个重置向量是什么?
重置向量是中央处理单元用于查找第一条指令的默认位置,它将在重置后执行 。 复位向量是指针或地址,CPU应始终在能够执行指令时立即开始。 地址位于非易失性存储器的一部分中,初始化为包含启动CPU操作的指令,作为启动包含CPU的系统的第一步。
8086处理器的复位向量位于物理地址FFFF0h(低于1 MB的16字节)。复位时CS寄存器的值为FFFFh,复位时IP寄存器的值为0000h,形成分段地址FFFFh:0000h,映射到物理地址FFFF0h。
关于北桥
北桥或主桥是PC主板上核心逻辑芯片组架构中的两个芯片之一,另一个是南桥。与南桥不同,北桥通过前端总线(FSB)直接连接到CPU
来源:
" 80386程序员参考手册" (PDF)。英特尔。 1990.第10.1节复位后的处理器状态
" 80386程序员参考手册" (PDF)。英特尔。 1990.第10.2.3节第一条指令,