0、8086的设计----16bit的寄存器宽度,要支持20-bit的地址空间即1M内存空间!

0、8086的设计----内存平铺 or 内存分段?当时的选择是内存分段。

3、8086的方案----使用段寄存器,从此x86体系架构就是段寄存器。

3、8086的方案----使用段寄存器,从此x86体系架构就是段寄存器。

----听起来,段寄存器很高明,扩展性很高,16bit寄存器可以寻址20位地址,甚至还可以继续扩展支持32位地址。这成了X86体系架构的核心,无数以x86为计算机体系结构学习样本。
3、8086的方案----支持1MB内存,但不是都给用户应用程序的。

----中断向量表IVT:00000H to 003FFH(1Kit)。
----Video Display:A0000H to BFFFFH(2*64K)。
----BIOS:F0000H to FFFFFH(64K)。
----Reset:FFFF0H(不是00000H,没有现代SOC上的那种用于boot的MaskROM,Reset Start Address直接写到BIOS的外置存储器的开始地址!!!!!!)。

----编译器直接编译使用x86体系结构里面的段。

----Memory Segmentation was a brilliant compromise of 8086, the start of X86 architecture.
----然而这样一个"技术投机"的设计,随着寄存器宽度普遍到达32bit以后,再也没有必要了,变回成前面第2图列出来的、被8086弃用的【正规】方案----Flat Memory方案!


----现代处理器,32bit宽度的寄存器和数据总线宽度(两者有区别但这里不表)是起步的情况下,内存分段以及课本上介绍x86段寄存器的知识早已过时,但这个"内存分段"造成的影响远远不止于过时,它还容易对现代通用CPU的虚拟内存所采用的"内存分页"造成干扰,容易想到**内存分段vs内存分页,其实它们完全不是一个东东。**内存分段是8086开始的一段商业成功但也是技术投机,随着寄存器和数据总线宽度增大已经变得没有用了,而内存分页则是现代计算机的虚拟内存的核心机制。

----从386开始有的Memory Management Unit(MMU),里面用到的是分页机制(Paging)。而Optional On-Chip Paging大概就是片上提供的分页的缓存TLB。

----286还没有MMU以及Paging分页机制,只有Protected Virtual Address Mode(保护模式)和8086 Real Address Mode(实地址模式)两种。
----80386是一个明确的分水岭,现代虚拟内存技术/内存分页管理/页表由OS和芯片硬件协同管理和使用/芯片设计页表缓存(TLB)将原本在内存中由OS写的per-app的页表,读取到位于芯片中的页表缓存中,加快页表的查询过程。芯片的TLB/MMU就是负责虚拟内存地址和物理内存地址的映射。
----加一备忘:上面图中列出的8086时代所设计的Reset Start Address:FFFF0H(不是00000H,没有现代SOC上的那种用于boot的MaskROM,Reset Start Address直接写到BIOS的外置存储器的开始地址!!!!!!)。x86的一些数据手册datasheet也有类似片内ROM的部件,不是现代SOC常见的用于第0阶段Boot的MaskROM(或者作者喜欢称之为BootROM),而是用来翻译复杂指令,把复杂指令转换为硬件控制下执行底层微操作序列,称之为MicroCode(伪代码),那个标识可能叫MicroROM这一类。
----加二备忘:Intel 80386EX,是一个强大的高集成度的SoC。不是说Intel就只会造CPU,它也在很早很早就有强大的CPU加外设的SoC!

----强大到什么程度,这里面有Integrated Perpheral Functions。其中有Clock and Power Management Unit。要谈一下,这个Clock主要是数字倍频器,把外部时钟源进行频率升高或降低以及频率的高稳定性调控,而Power Management则是对外部输入的电源进行高稳定性调控。**它们不是要代替板级的时钟源和板级的电源管理芯片,而是芯片级高稳定的时钟和电源调控,保证芯片级的性能功耗与稳定性!**比如说电源的调控,不是说"电源供应管够",而是说芯片自己不需要用电的时候要把输入进来的电流降低。这种降低在电力领域就是通过变压器实现的----变压器的负载降低了,输入端的电流就降低了,电网往这个地方投送的电力就减少了。
<<<<<<<<完>>>>>>>>
关键词:内存分段,内存分页,MMU,TLB,Paging,虚拟内存,保护模式,实模式。
摘要:本文记录了x86的内存分段和内存分页的概念,梳理了内存分段这一历史技术的来龙去脉,明确了内存分段和内存分页的不同,内存分页是现代通用计算机系统所采用的虚拟内存的必要技术,以支持多应用进程的调度运行。即使是不使用虚拟内存系统的嵌入式系统和DSP等,在实地址模式下运行,也基本不使用内存分段这样的技术,毕竟,寄存器宽度那一点点消耗,在现代芯片设计制造里面太不需要考虑了。此外关于现代SOC的bootcode in MaskROM和x86曾经有的on-chip microcode的概念区分值得记下备忘。
<<<<<<<<END>>>>>>>>