我的老师说,一个8086 Intel微处理器具有16位地址和20位物理地址。 地址和物理地址有什么区别?


回答 1:

这意味着在8086中,程序中使用的地址(您称为逻辑或虚拟地址)为16位,而8086发送至RAM的实际地址为20位。

为什么? 因为16位= 64 KB地址空间,其中20位地址= 1 MB内存。 因此,与普通的16位寻址相比,您可以寻址更多的存储器(在这种情况下,存储器的存储量是16倍)。

怎么样? 回忆实模式分段寻址方案。 在8086中,发送到RAM的地址=段寄存器* 16 +偏移量(用cs:ip,ds:si,es:di等替换段寄存器和偏移量)

因此,尽管段寄存器和偏移量是16位,但是我们可以拥有20位长的物理地址。

(如果您注意到,乘以16就等于向左移4。向左移4的16位地址变为20位地址(偏移量尚未添加))


回答 2:

告诉电气工程师设计某件东西时,电气工程师必须注意的最重要目标之一是,在设计,制造和销售产品时,它会花费多少。 有时这意味着计算机中的数据和地址总线是多路复用的,以节省资金。 通常,我们会认为20位地址总线具有20条独立的导线,每条导线在地址总线上承载1位数据。 当高4位由段寄存器控制时,可能有16条导线与地址总线通​​信。 这导致存在一个1兆字节的内存体系结构,该体系结构寻址为16个64 KB的存储体。 16位地址总线将选择0–64k之间的地址,并且您必须更改存储区选择寄存器的内容,才能与64k连续存储组进行通信,一直到1 meg边界。 地址线少于支持的内存大小的CPU通常具有段寄存器,以便内核或操作系统代码可以跟踪并根据需要切换存储体选择寄存器。

最终,这将导致以下情况:通过4位段寄存器+ 16位地址总线= 20位物理地址找到给定的物理内存地址,以便与1兆字节的内存通信。 幸运的是,我们早已过去了1970年代,那时芯片设计人员一直不愿将cpus放入具有40多个引脚的封装中,因此,地址总线多路复用不再需要。