在微处理器的历史上,第一款微处理器芯片4004是由Intel推出的,那是一个4位的微处理器。在4004之后,intel推出了一款8位处理器8080,它有1个主累加器(寄存器A)和6个次累加器(寄存器B,C,D,E,H和L),几个次累加器可以配对(如组成BC, DE或HL)用来访问16位的内存地址,也就是说8080可访问到64K内的地址空间。另外,那时还没有段的概念,访问内存都要通过绝对地址,因此程序中的地址必须进行硬编码(给出具体地址),而且也难以重定位,这就不难理解为什么当时的软件大都是些可控性弱,结构简陋,数据处理量小的工控程序了。
几年后,intel开发出了16位的处理器8086,这个处理器标志着Intel X86王朝的开始,这也是内存寻址的第一次飞跃。之所以说这是一次飞跃,是因为8086处理器引入了一个重要概念—段
8086处理器的寻址目标是1M大的内存空间,于是它的地址总线扩展到了20位。但是,一个问题摆在了Intel设计人员面前,虽然地址总线宽度是20位的,但是CPU中“算术逻辑运算单元(ALU)”的宽度,即数据总线却只有16位,也就是可直接加以运算的指针长度是16位的。如何填补这个空隙呢?可能的解决方案有多种,例如,可以像一些8位CPU中那样,增设一些20位的指令专用于地址运算和操作,但是那样又会造成CPU内存结构的不均匀。又例如,当时的PDP-11小型机也是16位的,但是其内存管理单元(MMU)可以将16位的地址映射到24位的地址空间。受此启发,Intel设计了一种在当时看来不失为巧妙的方法,即分段的方法。
为了支持分段,Intel在8086 CPU中设置了四个段寄存器:CS、DS、SS和ES,分别用于可执行代码段、数据段、堆栈段及其他段。每个段寄存器都是16位的,对应于地址总线中的高16位。每条“访内”指令中的内部地址也都是16位的,但是在送上地址总线之前,CPU内部自动地把它与某个段寄存器中的内容相加。因为段寄存器中的内容对应于20位地址总线中的高16位(也就是把段寄存器左移4位),所以相加时实际上是内存总线中的高12位与段寄存器中的16位相加,而低4位保留不变,这样就形成一个20位的实际地址,也就实现了从16位内存地址到20位实际地址的转换,或者叫“映射”。
段式内存管理带来了显而易见的优势,程序的地址不再需要硬编码了,调试错误也更容易定位了,更可贵的是支持更大的内存地址。程序员开始获得了自由。
技术的发展不会就此止步。intel的80286处理器于1982年问世了,它的地址总线位数增加到了24位,因此可以访问到16M的内存空间。更重要的是从此开始引进了一个全新理念—保护模式。这种模式下内存段的访问受到了限制。访问内存时不能直接从段寄存器中获得段的起始地址了,而需要经过额外转换和检查(从此你不能再随意存取数据段,具体保护和实现我们后面讲述)。
为了和过去兼容,80286内存寻址可以有两种方式,一种是先进的保护模式,另一种是老式的8086方式,被成为实模式。系统启动时处理器处于实模式,只能访问1M空间,经过处理可进入保护模式,访问空间扩大到16M,但是要想从保护模式返回到实模式,你只有重新启动机器。还有一个致命的缺陷是80286虽然扩大了访问空间,但是每个段的大小还是64k,程序规模仍受到限制。因此这个先天低能儿注定命不会很久。很快它就被天资卓越的兄弟——80386代替了。
80386是一个32位的CPU,也就是它的ALU数据总线是32位的,同时它的地址总线与数据总线宽度一致,也是32位,因此,其寻址能力达到4GB。对于内存来说,似乎是足够了。从理论上说,当数据总线与地址总线宽度一致时,其CPU结构应该简洁明了。但是,80386无法做到这一点。作为X86产品系列的一员,80386必须维持那些段寄存器的存在,还必须支持实模式,同时又要能支持保护模式,这给Intel的设计人员带来很大的挑战。
Intel选择了在段寄存器的基础上构筑保护模式,并且保留段寄存器16位。在保护模式下,它的段范围不再受限于64K,可以达到4G。这一下真正解放了软件工程师,他们不必再费尽心思去压缩程序规模,软件功能也因此迅速提升。
从8086的16位到80386的32位处理器,这看起来是处理器位数的变化,但实质上是处理器体系结构的变化,从寻址方式上说,就是从“实模式”到“保护模式”的变化。从80386以后,Intel的CPU经历了80486、Pentium、PentiumII、PentiumIII等型号,虽然它们在速度上提高了好几个数量级,功能上也有不少改进,但基本上属于同一种系统结构的改进与加强,而无本质的变化,所以我们把80386以后的处理器统称为IA32(32 Bit Intel Architecture)。
分享到:
相关推荐
总结,Intel 80x86保护模式是现代计算机系统的核心组成部分,它的分段和分页机制、特权级设计以及内存保护策略,为复杂操作系统的高效运行提供了坚实的硬件基础。理解并熟练掌握这些概念,对于进行系统级编程和底层...
80x86保护模式是Intel 80x86处理器家族的一种运行模式,它相对于实地址模式提供了更高级别的内存管理和系统安全特性。在这个模式下,CPU可以支持多任务处理,虚拟内存,并且提供了对硬件资源的权限控制。本教程将...
80X86保护模式编程是计算机科学中的一个重要领域,主要涉及英特尔x86架构处理器在操作系统级别如何管理和控制资源。这个主题对于深入理解操作系统原理、驱动开发以及系统级编程至关重要。以下是一些关于80X86保护...
80x86保护模式是英特尔80x86处理器工作的一种核心模式,它为操作系统提供了高级的内存管理和硬件级的多任务支持。这个“80x86保护模式系列教程”显然是一份深入探讨这一主题的教育资源,可能包含了大量的理论知识、...
80x86保护模式是Intel 80x86系列处理器的一种运行模式,它引入了先进的内存管理和安全特性,为现代操作系统如Windows、Linux等提供了基础。在保护模式下,CPU可以支持多任务处理、虚拟内存以及访问控制,极大地提高...
80x86是Intel公司早期的CPU系列,广泛应用于个人计算机,而保护模式是这些处理器运行操作系统和复杂应用的主要工作模式。 在80x86处理器中,实模式是最基础的操作模式,它提供了1MB的地址空间,但没有内存保护和多...
80x86保护模式是Intel 80x86系列处理器的一种运行模式,它相对于实地址模式提供了更高级别的内存管理和安全性。在保护模式下,CPU能够支持多任务、虚拟内存以及高级权限级别,这些都是现代操作系统如Windows、Linux...
保护模式是80x86处理器的一种运行模式,它引入了内存保护、多任务处理和虚拟内存等功能,极大地提高了系统的安全性和灵活性。相比实模式,保护模式提供了一种更加复杂但更安全的环境,使得操作系统可以有效地管理...
4. **保护模式与实模式**:80x86处理器有实模式和保护模式两种工作模式。实模式下,处理器使用与8086相同的地址映射方式,而保护模式则引入了分段和分页机制,增强了系统的安全性。 5. **指令系统**:80x86拥有丰富...
x86汇编语言是针对Intel 80x86系列处理器的一种低级编程语言,包括8086、80286、80386、Pentium等。它以指令集为基础,直接对应处理器的机器码,具有高效、直接控制硬件的优点。汇编语言主要包括指令、寻址方式、伪...
80x86汇编语言程序设计是一门深入理解计算机底层运作原理的重要课程,它主要关注Intel 80x86系列微处理器的指令集及其编程技术。这门课程通常会涵盖汇编语言的基本概念、指令系统、寻址模式、程序设计技巧以及与高级...
80x86保护运行模式,又称为保护模式,是Intel 80386及后续x86架构处理器所引入的一种运行环境。这一模式的引入,标志着x86架构从16位到32位的重要飞跃,为操作系统的设计和应用提供了更为丰富的特性与支持。在保护...
80x86架构包括了实模式、保护模式等多种工作模式,其中保护模式是现代操作系统的基础之一,能够提供更高级别的内存管理和安全特性。 #### 三、保护模式详解 **1. 保护模式的基本概念** 保护模式是一种更加安全的...
80X86保护运行模式是Intel 80x86系列处理器的一种核心工作模式,它为操作系统提供了高级别的安全性和资源管理能力。在80X86保护运行模式下,处理器可以支持多任务处理、内存保护、硬件虚拟化等多种功能,这些都是...