Skip to content

Study OS By History

复制本地路径 | 在线编辑

看到了一篇特别特别好的文章,不算是翻译吧,算是简单的笔记总结。加上真巧前一天看的 AMD 手册,看第一章看的我云里雾里,各种模式搞得很乱,所以这里就从历史的角度来看,这些模式的出现显得顺利成章多了。

首先先看这张表

Year Model Pins Data width Address width Address space
1972 Intel 8008 18 8 14 16 KiB
1978 Intel 8086 40 16 20 1 MiB
1982 Intel 80286 68 16 24 16 MiB
1985 Intel 80386 132 32 32 4 GiB
2003 AMD Athlon 64 754 64 64 16 EiB
2004 Intel P4 SL79K 478 64 64 16 EiB
  1. 8008
    比较奇怪一点,它的地址线是 14 根,也就是说 PC 寄存器是 14 bit,为什么是 14 bit 呢?
    因为这已经是那个时候科技所能做的最大值了...那个时候最大引脚数最多搞 18 个,即使靠多路复用也只能分地址线为 14 个了。

  2. 8086
    依旧地址线比数据线多一些,而这个芯片的寻址就是老的汇编教材常见的寻址方式,如 CS:IP 这样的形式,这种模式叫做实模式

  3. 80286 (286)
    这个芯片有以下几点特征。
    首先它告别了多路复用,地址线和数据线分开了。
    此外它引入了保护模式,如果学过 8086 汇编,应该知道实模式中数据段、代码段这些可能会交叠的,保护模式就避免了这一点。

此外它引入了特权等级,每个段都有一个等级,低等级段不可访问高等级段。

但是这个芯片不是很成熟,比如对于一个程序,可用地址往往最大为 4 MB,比如他从实模式转到保护模式后很难再转回来...

  1. 80386 - game changer
    Game changer,市场的改变者,划时代的芯片。引入了以下很熟悉的特征。
    引入了FS 和 GS 寄存器
    引入了虚拟8086模式,具体细节见xxx
    引入了MMU,所以支持了分页,一个巧妙优雅的方法。从此地址有了虚拟地址物理地址之分。
    引入了平坦模式,之前那些分段叫做分段模式,下面是我自己的理解。

分段模式实际上是迫不得已的,你看以前的地址线和数据线都是不相同,这也是为了扩大地址空间的无奈之举。
分段模式对于程序员来说很麻烦,要管理各个段,如果有过 8086 汇编的经历也知道,要访问数据段,通过 DS/SS 去访问。但是,到了 80386,地址线和数据线一样了,换句话说,我现在访问数据段,直接就一个 [rax] 寻址就可以了,漂亮!所以不要再什么分段了!但是呢,为了向下兼容,这些段寄存器保留着,不过在平坦模式中,都是 0 了,也不会用他们了。

  1. 64 bit
    欢迎来到 64 bit 的时代,这里又多了一些概念。
    引入了长模式

Comments