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 |
-
8008
比较奇怪一点,它的地址线是 14 根,也就是说 PC 寄存器是 14 bit,为什么是 14 bit 呢?
因为这已经是那个时候科技所能做的最大值了...那个时候最大引脚数最多搞 18 个,即使靠多路复用也只能分地址线为 14 个了。 -
8086
依旧地址线比数据线多一些,而这个芯片的寻址就是老的汇编教材常见的寻址方式,如 CS:IP 这样的形式,这种模式叫做实模式。 -
80286 (286)
这个芯片有以下几点特征。
首先它告别了多路复用,地址线和数据线分开了。
此外它引入了保护模式,如果学过 8086 汇编,应该知道实模式中数据段、代码段这些可能会交叠的,保护模式就避免了这一点。
此外它引入了特权等级,每个段都有一个等级,低等级段不可访问高等级段。
但是这个芯片不是很成熟,比如对于一个程序,可用地址往往最大为 4 MB,比如他从实模式转到保护模式后很难再转回来...
- 80386 - game changer
Game changer,市场的改变者,划时代的芯片。引入了以下很熟悉的特征。
引入了FS 和 GS 寄存器
引入了虚拟8086模式,具体细节见xxx
引入了MMU,所以支持了分页,一个巧妙优雅的方法。从此地址有了虚拟地址和物理地址之分。
引入了平坦模式,之前那些分段叫做分段模式,下面是我自己的理解。
分段模式实际上是迫不得已的,你看以前的地址线和数据线都是不相同,这也是为了扩大地址空间的无奈之举。
分段模式对于程序员来说很麻烦,要管理各个段,如果有过 8086 汇编的经历也知道,要访问数据段,通过 DS/SS 去访问。但是,到了 80386,地址线和数据线一样了,换句话说,我现在访问数据段,直接就一个 [rax] 寻址就可以了,漂亮!所以不要再什么分段了!但是呢,为了向下兼容,这些段寄存器保留着,不过在平坦模式中,都是 0 了,也不会用他们了。
- 64 bit
欢迎来到 64 bit 的时代,这里又多了一些概念。
引入了长模式