dyts 发表于 2007-11-19 19:16

"64Kx4K=256M,而这正是24位地址空间的大小"
不管怎么样,他直接这么说,我总觉得不恰当。

Benson_linux 发表于 2007-11-20 13:25


"64Kx4K=256M,而这正是24位地址空间的大小"
不管怎么样,他直接这么说,我总觉得不恰当。


LZ的意思应该是:
2^16=64K
64Kx4K=256M
这是16位的地址空间,而24位的应该是:
2^24=16M
16Mx4K=65536M=64G

这里我想可能忽略了一个80286的细节,80286为16位CPU,虽然采用24位数据总线,但其实际寻址能力还是16位的。而80386是在286的基础上添加了功能,所以这里说的24位的地址空间实际上指的是:
2^16=64K
64Kx4K=256M

这里只不过段长变为了4K。
有兴趣可以深入的了解一下20286的寻址方法。

一些摘录:

Intel给80386设计了三个技术要点:使用“类286”结构,开发80387协微处理器增强浮点运算能力,开发配套高速缓存解决内存速度瓶颈

80386采用“类286”总线结构,这样就可以保持软硬件的兼容性,可以利用现有技术和配件,降低整机的开发和制造成本。


[ 本帖最后由 Benson_linux 于 2007-11-20 13:36 编辑 ]

beepbug 发表于 2007-11-22 15:52

8位机8080(8085)是16位线性寻址。到16位机(8086/88/186/286)为向下兼容于8080/35代码,搞成段式寻址。先是8086/88,由两个寄存器组合提供地址字,段址和偏移都是16位。段址左移4位后与偏移相加,形成20位地址字输出到地址总线。到80286,地址线为24根,仍要向下兼容于8086,更麻烦。设两种模式。实模式兼容于8086,合成20位地址字,地址线的高4根无效。保护模式采取虚拟存储技术,虚存空间1GB,映射到16MB物理空间。偏移仍为16位,段基址24位,需经过转换。段寄也仍为16位,在实模式下,就表示段基址,但在保护模式下,表示选择字。按其在在描述表中找到段描述符,再由段描述符查到段地址,由此段地址(24位)和指令中的偏移地址(16位)相加,最后得到24位物理地址。
这些都是向下兼容惹的祸。

dyts 发表于 2007-11-24 19:47

12楼 发表于 2007-11-22 15:52
----------------------------------------
"最后得到24位物理地址"

既然最后得到的物理地址为24位,那么可寻址空间就为2^24=16M,何来256M呢?

beepbug 发表于 2007-11-26 15:34

只有24根地址线,实存就是16MB。虚存1GB要通过虚拟存储机制映射到16MB。

Benson_linux 发表于 2007-11-28 19:00

我看这个问题还是继续吧,我在11楼发的东西也是一些猜测。

继续讨论。

dyts 发表于 2007-11-28 19:00

回复 #14 beepbug 的帖子

讨论寻址空间的时候还包括虚存吗?

dyts 发表于 2007-11-28 19:02

回复 #15 mik 的帖子

如果你想要分的话那给你好了,我只是想把问题搞清楚而已,至于分不分的,我无所谓

mik 发表于 2007-11-28 22:00

原帖由 dyts 于 2007-11-28 19:02 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
如果你想要分的话那给你好了,我只是想把问题搞清楚而已,至于分不分的,我无所谓
这就是你想搞清楚问题的态度和作风么,恐怕难呀

beepbug 发表于 2007-12-03 13:01

原帖由 dyts 于 2007-11-28 19:00 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
讨论寻址空间的时候还包括虚存吗?
讨论寻址空间当然要讲虚存。你访问的全是虚拟空间,至于实际用到哪块物理空间,那是操作系统的事,我们管不着。
页: 1 [2] 3
查看完整版本: 关于地址空间的问题