您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 第2章IA-32结构微处理器.
第2章80x86系列结构微处理器与8086本章讲述:2.180x86系列微处理器是8086的延伸2.28086的功能结构2.38086微处理器的执行环境2.1x86系列微处理器是8086的延伸如上章所述,x86系列结构微处理器的增长基本上按摩尔定律发展,已经经历许多代。但从使用者(包括程序员)的角度来看,它是以8086处理器为基础,是一个兼容的微处理器系列,是8086在功能上和性能上的延伸。2.1.18086功能的扩展1.从16位扩展为32位8086是16位微处理器。它的内部寄存器的主体是16位的。它的主要用于存放操作数的数据寄存器是16位的。它的主要的用作为地址指针的指针寄存器也是16位的。依赖分段机制,用20位段基地址加上16位的偏移量形成了20位的地址,以寻址1MB的物理地址。16位,无论作为数的表示,它能表示的数的范围是十分有限的。用16位作为地址,它只能表示64KB,更是一个十分小的地址范围,远远不能满足应用的需要。因而,于1985年,Intel公司推出了第一个32位的微处理器--80386,开创了微处理器的32位时代。目前,计算机正从32位向64位转移,但主流仍是32位机。32位,无论从能表示的数的范围,还是能寻址的物理地址,特别是能寻址的物理地址都极大的扩展了。使得微处理器能取代以前的所谓“大型机”,能应用于各种领域,从而极大地促进了计算机在各行各业中的应用。32位地址能寻址4GB物理地址。到目前,仍远大于主流计算机的实际内存配置,仍有广阔的应用余地。2.从实模式至保护模式当1981年,IBM公司刚推出IBM-PC时,主频是5MHz,内存是64KB-128KB,没有硬盘,只有单面单密度的软盘,到了PC/XT,才有10MB硬盘。在这样的硬件资源下,采用的操作系统是PC-DOS(MS-DOS)。这是单用户、单任务的磁盘操作系统。操作系统本身没有程序隔离、没有保护。这是DOS遭受病毒泛滥的内因。随着PC机的大量普及,随着硬件性能的迅速提高。要求有能保护操作系统核心软件的多任务操作系统。为使这样的操作系统能在微型计算机系统中应用与普及,要求微处理器本身为这样的操作系统提供支持。于是,从80286开始,在80386中真正完善保护模式。在保护模式下,程序运行于四个特权级。这样,可以实现操作系统核心程序与应用程序的严格的隔离。保护模式支持多任务机制,任务之间完全隔离。3.片内存储管理单元-MMU32位地址,可寻址4GB物理地址。但大多数PC机的物理内存配置远小于4GB。但应用程序却需要庞大的地址空间。因此,在操作系统中提供了虚拟存储器管理机制,而这要求硬件支持。因而,在80386中提供了片内的MMU。提供了4K页、页表等支持。以上三点是80386相对于8086的主要功能扩展。4.浮点支持工程应用、图形处理、科学计算等要求浮点支持(实数运算)。因此,自80486芯片开始,在x86系列微处理器中集成了x87(及其增强)浮点单元。5.MMX技术为支持多媒体技术的应用,如音乐合成、语音合成。语音识别、音频和视频压缩(编码)和解压缩(译码)、2D和3D图形(包括3D结构映像)和流视频等等。x86系列处理器中增加MMX技术及相应的指令6.流SIMD扩展(SSE)自PentiumIII处理器开始,在x86系列微处理器中引进了流SIMD(单指令多数据)扩展(SSE)技术。SSE扩展把由IntelMMX引进的SIMD执行模式扩展为新的128位XMM寄存器和能在包装的单精度浮点数上执行SIMD操作。奔腾4处理器又进一步扩展为流SIMD扩展2(SSE2):—用144条新指令扩展IntelMMX技术和SSE扩展,它包括支持:•128位SIMD整数算术操作。•128位SIMD双精度浮点操作。128位指令设计以支持媒体和科学应用。由这些指令所用的向量操作数允许应用程序在多个向量元素上并行操作。元素能是整数(从字节至四字)或浮点数(单精度或双精度)。算术运算产生有符号的、无符号的和/或混合的结果。2.1.28086性能的提高x86系列系列芯片的发展的一个重要方面是提高性能。1.利用流水线技术提高操作的并行性提高性能的一个重要方面是利用超大规模集成电路的工艺与制造技术提高芯片的主频。即减少一个时钟周期的时间。提高性能的另一重要方面是缩短执行指令的时钟周期数。在8086中,利用流水线把取指令与执行指令重叠,减少了等待取指令的时间,从而使大部分指令的执行为四个时钟周期。80386利用芯片内由6个能并行操作的功能部件组成,从而使执行一条指令缩短为两个时钟周期。80486将80386处理器的指令译码和执行部件扩展成五级流水线,进一步增强了其并行处理能力,在五级流水线中最多可有五条指令被同时执行,每级都能在一个时钟周期内执行一条指令,80486微处理器最快能够在每个CPU时钟周期内执行一条指令。到了奔腾处理器增加了第二个执行流水线以达到超标量性能(两个已知的流水线u和v,一起工作能实现每个时钟执行两条指令)。IntelPentium4处理器是第一个基于IntelNetBurst微结构的处理器。IntelNetBurst微结构是新的32bit微结构,它允许处理器能在比以前的X86系列处理器更高的时钟速度和性能等级上进行操作。IntelPentium4处理器有快速的执行引擎、Hyper流水线技术与高级的动态执行。使指令执行的并行性进一步提高,从而做到在一个时钟周期中可以执行多条指令。2.引入片内缓存(CACHE)随着超大规模集成电路技术的发展,存储器的集成度和工作速度都有了极大的提高。但是,相对于CPU的工作速度仍然至少差一个数量级。为了减少从存储器中取指令与数据的时间,利用指令执行的局部性原理,把近期可能要用到的指令与数据放在工作速度比主存储器更高(当然,容量更小)的缓存中。这样的思想,进一步在处理器中实现,即在处理器芯片中实现了缓存。目前,通常在处理器芯片上有指令和数据分开的一级缓存与指令与数据混合的二级缓存。且缓存的容量越来越大。从而进一步提高了处理器的性能。总之,x86系列系列处理器芯片就是沿着这样的思路发展的。因此,8086是x86系列系列处理器的基础。而且,任一种x86系列处理器芯片在上电后,就是处在8086的实模式。根据需要,用指令进入各种操作模式。所以,学习x86系列处理器必须学习掌握8086,也只能从8086入手。从指令,从编程来说,几乎没有用汇编语言来使用浮点指令、MMX指令与XMM指令的,都是通过高级语言来使用这些指令的。因而,绝大部分程序员,除了编写操作系统代码的外,面对x86系列处理器的指令,实际上是面对8086指令。因此,本书从8086入手来学习与掌握x86系列处理器。2.28086的功能结构8086的功能结构如图2-1所示。8086CPU功能结构图外部总线总线控制逻辑内部总线16位地址加法器总线接口部件BIU123456指令队列执行部件EU通用寄存器AXAHALBXBHBLCXCHCLDXDHDLSPBPDISIEU控制器80888086CSDSSSESIP暂存器ALU暂存器标志寄存器8位队列总线20位地址总线16位数据总线8086CPU从功能上来说分成两大部分:总线接口单元BIU(BusInterfaceUnit)和执行单元EU(ExecutionUnit)。BIU负责8086CPU与存储器之间的信息传送。具体地说,即BIU负责从内存的指定单元取出指令,送至指令流队列中排队(8086的指令流队列是6个字节);在执行指令时所需的操作数,也由BIU从内存的指定区域取出,传送给EU部分去执行。EU部分负责指令的执行。其中主要由数据寄存器、指针寄存器与算术逻辑单元(ALU)组成。这样,取指部分与执行指令部分是分开的,于是在一条指令的执行过程中,就可以取出下一条(或多条)指令,在指令流队列中排队。在一条指令执行完以后就可以立即执行下一条指令,减少了CPU为取指令而等待的时间,提高了CPU的利用率,提高了整个运行速度。如前所述,在8080与8085以及标准的8位微处理器中,程序的执行是由取指和执行指令的循环来完成的。即执行的顺序为取第一条指令,执行第一条指令;取第二条指令,执行第二条指令;……直至取最后一条指令,执行最后一条指令。这样,在每一条指令执行完以后,CPU必须等待到下一条指令取出来以后才能执行。所以,它的工作顺序如图2-2所示。时间但在8086中,由于BIU和EU是分开的,所以,取指和执行可以重叠进行。它的执行顺序如图2-3所示。于是就大大减少了等待对取指所需的时间,提高了CPU的利用率。一方面可以提高整个程序的执行速度,另一方面又降低了与之相配的存储器的存取速度的要求。这种重叠的操作技术,过去只在大型机中才使用称为流水线,在X86系列系列微处理器中得到了广泛的使用与提高。2.38086微处理器的执行环境本节描述汇编语言程序员看到的8086处理器的执行环境。它描述处理器如何执行指令及如何存储和操作数据。执行环境包括内存(地址空间)、通用数据寄存器、段寄存器、标志寄存器(EFLAGES)和指令指针寄存器等。2.3.1基本执行环境概要在8086处理器上执行的程序或任务都有一组执行指令的资源用于存储代码、数据和状态信息。这些资源构成了8086处理器的执行环境。地址空间。8086处理器上运行的任一任务或程序能寻址1MB(220)字节的线性地址空间。基本程序执行寄存器。八个通用寄存器、四个段寄存器、标志寄存器FLAGS和IP(指令指针)寄存器组成了执行通用指令的基本执行环境。这些指令执行字节、字整型数的基本整数算术运算,处理程序流程控制,在字节串上操作并寻址存储器。堆栈(stack)。为支持过程或子程序调用并在过程或子程序之间传递参数,堆栈和堆栈管理资源包含在基本执行环境中。堆栈定位在内存中。I/O端口。8086结构支持数据在处理器和输入输出(I/O)端口之间的传送。8086处理器的基本执行环境如图2-4所示。2.3.2基本的程序执行寄存器处理器为了应用程序编程提供了如图2-4所示的14个基本程序执行寄存器。这些寄存器能分组如下:通用寄存器。这八个寄存器能用于存放操作数和指针。段寄存器。这些寄存器最多能保存四个段选择子。FLAGS(程序状态和控制)寄存器。FLAGS寄存器报告正在执行的程序的状态,并允许有限地(应用程序级)控制处理器。IP(指令指针)寄存器。IP寄存器包合下一条要执行的指令的16位指针。1.通用寄存器八个32位通用寄存器AX、BX、CX、DX、SI、DI、BP和SP用于处理以下项:逻辑和算术操作的操作数;用于地址计算的操作数;内存指针。虽然所有这些寄存器都可用于存放操作数、结果和指针,但在引用SP寄存器时要特别小心。SP寄存器保持堆栈指针,通常不要用于其它目的。这些通用寄存器中的前四个,即AX、BX、CX、DX通常称为数据寄存器,用以存放操作数。后四个,即SI、DI、BP、SP通常称为指针寄存器。虽然它们也可以存放操作数,但主要用作地址指针。数据寄存器AX、BX、CX和DX又可以分别作为AH、BH、CH和DH(高字节)以及AL、BL、CL和DL(低字节)8位寄存器引用,如图2-5所示。SP是堆栈指针,它与段寄存器SS一起确定在堆栈操作时,堆栈在内存中的位置。用BP(BasePointerRegister)寻址堆栈操作数时,也是寻址堆栈段。SI(SourceIndexRegister)和DI(DestinationIndexRegister)常用于串操作。2.段寄存器段寄存器(CS、DS、SS、ES)保存16位段选择子。一个段选择子是标志内存中一个段的特殊指针。为访问在内存中的具体段,此段的段选择子必须存在于适当的段寄存器中。当写应用程序代码时,程序用汇编程序的命令和符号建立段选择子。然后汇编程序和别的工具建立与这些命令和符号相关的实际段选择子值。若写系统代码,程序员可能需要直接建立段选择子。当使用分段存储模式时,初始,每一个段寄存器用不同的段选择子加载,所以每个段寄存器指向线性地址空间中的不同的段
本文标题:第2章IA-32结构微处理器.
链接地址:https://www.777doc.com/doc-2154733 .html