第3版第4章指令系统层_第1页
第3版第4章指令系统层_第2页
第3版第4章指令系统层_第3页
第3版第4章指令系统层_第4页
第3版第4章指令系统层_第5页
已阅读5页,还剩156页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 计算机的基本工作主要体现为执行指令。计算机的基本工作主要体现为执行指令。一台计算机所能执行的全部指令,称为该一台计算机所能执行的全部指令,称为该机的指令系统或指令集,具体内容包括指机的指令系统或指令集,具体内容包括指令格式、寻址方式、指令类型与功能。令格式、寻址方式、指令类型与功能。 相对微体系结构层,指令系统层是一个抽相对微体系结构层,指令系统层是一个抽象的层次,它是硬件和软件之间的接口,象的层次,它是硬件和软件之间的接口,其主要特征就是指令系统。其主要特征就是指令系统。 本章将以本章将以80 x86为背景讨论指令系统层。为背景讨论指令系统层。第第4 4章章 指令系统层指令系统层2本章主

2、要内容:本章主要内容: 4.1 80 x86 CPU 4.2 CPU的寄存器和主存储器的寄存器和主存储器 4.3 80 x86指令系统。指令系统。34.1 80 x86 CPU 型号型号 发布发布 年代年代字长(位)字长(位)晶体管数晶体管数(万个)(万个)主频主频(MHz)内部数内部数据总线据总线宽度宽度(位)(位)外部数外部数据总线据总线宽度宽度(位)(位)地址总地址总线宽度线宽度(位)(位)寻址寻址空间空间片内片内高速高速缓存缓存80861978162.94.771616201MB无无80881979162.94.77168201MB无无8028619821613.46201616241

3、6 MB无无8038619861627.512.5333232324GB无无8048619891612016025503232324GB8KB80 x86 CPU概况如下表所示:概况如下表所示:4 型号型号 发布发布 年代年代字长字长(位)(位)晶体管数晶体管数(万个)(万个)主频主频(MHz)内部数内部数据总线据总线宽度宽度(位)(位)外部数外部数据总线据总线宽度宽度(位)(位)地址总地址总线宽度线宽度(位)(位)寻址寻址空间空间片内高片内高速缓存速缓存Pentium (586)199332310330601666464324GB8KB数据数据8KB指令指令Pentium Pro (P6)1

4、99532550+155016020064643664GB8KB数据数据8KB指令指令256KB 二二级高级缓级高级缓存存Pentium II19973275023333364643664GB32KB512KB 二二级高速缓级高速缓存,有独存,有独立封装和立封装和独立总线独立总线5 本节主要介绍本节主要介绍8086/8088、80386/80486、Pentium、Pentium Pro和和Pentium CPU的内部的内部结构及特点。结构及特点。 4.1.1 8086/8088 CPU 8086 CPU是是16位微处理器,即位微处理器,即CPU的内外数据总线为的内外数据总线为16位,一个总线

5、周期可以传送一个字(位,一个总线周期可以传送一个字(16位)数据。而位)数据。而8088是准是准16位微处理器,其位微处理器,其CPU的内部总线为的内部总线为16位,外部位,外部数据总线为数据总线为8位,因此一个总线周期只能传送一个字节。但位,因此一个总线周期只能传送一个字节。但是两者的内部结构基本上是相同的,其地址引脚均为是两者的内部结构基本上是相同的,其地址引脚均为20位,位,可寻址可寻址1MB主存空间。主存空间。8086/8088的指令系统完全相同,在的指令系统完全相同,在软件上是完全兼容的。软件上是完全兼容的。 618086/8088 CPU内部结构内部结构 模型机模型机CPU的指令之

6、间的衔接采用串行的顺序处理方式,即必的指令之间的衔接采用串行的顺序处理方式,即必须在一条指令执行完后,才能从主存中读取下一条指令。在须在一条指令执行完后,才能从主存中读取下一条指令。在CPU执行指令时,系统总线与主存可能空闲,因此程序执行效率不高。执行指令时,系统总线与主存可能空闲,因此程序执行效率不高。 下图(下图(a)给出了)给出了3条指令的执行过程:条指令的执行过程:7 8086/8088 CPU采用了指令流水线结构,将取指令(或取操采用了指令流水线结构,将取指令(或取操作数)与执行指令的功能分别由两个独立部件实现,即总线接口作数)与执行指令的功能分别由两个独立部件实现,即总线接口部件部

7、件BIU(Bus Interface Unit)与执行部件)与执行部件EU(Execute Unit)。)。因此,当因此,当EU执行某条指令时,执行某条指令时,BIU同时完成从主存中预取后继指同时完成从主存中预取后继指令,两个部件并行地工作,使指令的读取与执行可以部分重叠,令,两个部件并行地工作,使指令的读取与执行可以部分重叠,从而提高了指令的执行速度。从而提高了指令的执行速度。8086/8088 CPU的指令执行过程如的指令执行过程如图(图(b)所示。)所示。8 8086 CPU内部结构如下图所示内部结构如下图所示:9下面讨论下面讨论EU和和BIU的功能的功能:(1)执行部件)执行部件EU

8、包括一个包括一个16位算术逻辑运算部件位算术逻辑运算部件ALU、一组、一组通用寄存器、暂存器、标志寄存器,以及通用寄存器、暂存器、标志寄存器,以及EU控制器。各寄存控制器。各寄存器和内部数据通路都是器和内部数据通路都是16位。位。EU的主要任务是执行指令,其的主要任务是执行指令,其功能为:功能为:从指令队列中取出指令代码,由从指令队列中取出指令代码,由EU控制器进行译码后产生对应的控制信号到各部控制器进行译码后产生对应的控制信号到各部件以完成指令规定的操作。件以完成指令规定的操作。对操作数进行算术和逻辑运算,并将运算结果的特征状态存放在标志寄存器中。对操作数进行算术和逻辑运算,并将运算结果的特

9、征状态存放在标志寄存器中。由于由于EU不直接与系统总线连接,因此当需要与主存储器或不直接与系统总线连接,因此当需要与主存储器或I/O端口传送数据时,端口传送数据时,EU向向BIU发出命令,并提供给发出命令,并提供给BIU 16位有效地址与传送的数据。位有效地址与传送的数据。(2)总线接口部件)总线接口部件BIU 包括一组段寄存器、指令指针、包括一组段寄存器、指令指针、6字节字节的指令队列(的指令队列(8088是是4字节)、字节)、20位总线地址形成部件,以及位总线地址形成部件,以及总线控制逻辑。总线控制逻辑。BIU的主要任务是完成的主要任务是完成CPU与主存储器或与主存储器或I/O端口之间的信

10、息传送,其功能为:端口之间的信息传送,其功能为:从主存取出指令送到指令队列中排队。从主存取出指令送到指令队列中排队。从主存或从主存或I/O端口取操作数或存放运算结果。端口取操作数或存放运算结果。计算并形成访问主存的计算并形成访问主存的20位物理地址。位物理地址。10段基值:段基值:20位段起始地址的高位段起始地址的高16位,称位,称为段基值(为段基值(Segment Base Value),存),存放在放在BIU的相应段寄存器中。的相应段寄存器中。偏移地址(偏移量):偏移地址(偏移量):一个主存单一个主存单元与所在段的段基址之间的字节距离。元与所在段的段基址之间的字节距离。 当当CPU访问某个

11、主存单元时,访问某个主存单元时,必须指明由哪个段寄存器提供段基值,必须指明由哪个段寄存器提供段基值,同时又给出偏移地址。然后由同时又给出偏移地址。然后由BIU将将16位段基值左移位段基值左移4位后与位后与16位偏移地址位偏移地址相加,形成相加,形成20位主存单元的物理地址。位主存单元的物理地址。2. 8086/8088 主存地址的形成主存地址的形成 段基址:段基址:将将1 MB主存空间划分为若干段主存空间划分为若干段,每个段的最大长度为,每个段的最大长度为64 KB。段的。段的20位段位段起始地址称为段基址。起始地址称为段基址。114.1.2 80386/80486 CPU 1Intel 80

12、386 1985年年Intel公司推出了其第一片公司推出了其第一片32位微处理器位微处理器80386。它的主要性能如下:。它的主要性能如下: 32位地址,可直接寻址的物理存储空间为位地址,可直接寻址的物理存储空间为4 GB。 具有片内存储管理部件,使虚拟存储空间(逻辑地址具有片内存储管理部件,使虚拟存储空间(逻辑地址空间)可达空间)可达64 TB。 字长字长32位,系统总线的数据通路宽度位,系统总线的数据通路宽度32位。位。 采用多级流水线结构。采用多级流水线结构。 平均运算速度约为平均运算速度约为4 MIPS。122Intel 80486 1989年年Intel公司又推出了公司又推出了804

13、86。它相当于一个增强型的。它相当于一个增强型的80386、一个、一个增强型的增强型的80387数值协处理器(也称浮点部件数值协处理器(也称浮点部件FPU)、一个)、一个8 KB的高速缓存的高速缓存(Cache)的集成,基本上沿用了)的集成,基本上沿用了80386的体系结构,内部结构如下图。的体系结构,内部结构如下图。13下面分别简单介绍各部件的功能:下面分别简单介绍各部件的功能: 总线接口部件总线接口部件BIU :BIU包含地址驱动器、数据收发器、总线包含地址驱动器、数据收发器、总线控制器。它是控制器。它是CPU与存储器及与存储器及I/O设备之间的高速接口。其功能是:设备之间的高速接口。其功

14、能是:当取指令、取数据或写数据、响应分页部件或分段部件请求时,能当取指令、取数据或写数据、响应分页部件或分段部件请求时,能有效地满足有效地满足CPU对系统总线的传送要求。对系统总线的传送要求。 指令部件:指令部件:它包含指令预取部件、指令译码部件、产生微命令的它包含指令预取部件、指令译码部件、产生微命令的控制部件、高速缓存控制部件、高速缓存Cache。它完成预取指令、分析指令,然后产。它完成预取指令、分析指令,然后产生指令所需的微命令去控制相应部件操作。生指令所需的微命令去控制相应部件操作。 执行部件:执行部件: 执行部件包含数据部件和浮点部件执行部件包含数据部件和浮点部件FPU。 数据部件包

15、括通用寄存器、一个有乘除功能的数据部件包括通用寄存器、一个有乘除功能的ALU、一个、一个64位位的桶形移位器。它执行控制部件所指定的数据操作。的桶形移位器。它执行控制部件所指定的数据操作。 由于浮点部件由于浮点部件FPU和浮点寄存器组集成在和浮点寄存器组集成在80486芯片内,缩短了芯片内,缩短了FPU与处理器各部件之间的距离,因此与处理器各部件之间的距离,因此FPU的执行速度比的执行速度比80386和和80387组成的系统快组成的系统快3倍。倍。 14 存储器管理部件存储器管理部件MMU 在在80486中,将存储器按段来组织,以适应用户程中,将存储器按段来组织,以适应用户程序的逻辑结构。段的

16、大小可变,最大可达到序的逻辑结构。段的大小可变,最大可达到4 GB。针。针对主存物理空间的组织,又将存储器划分为页,每页对主存物理空间的组织,又将存储器划分为页,每页大小均为大小均为4 KB。 存储器管理部件设置了分段部件与分页部件:存储器管理部件设置了分段部件与分页部件: 分段部件分段部件按控制部件的要求计算有效地址,并且按控制部件的要求计算有效地址,并且 将逻辑地址(将逻辑地址(由段基值由段基值/ 段选择器和偏移地址组成)段选择器和偏移地址组成)转换成转换成线性地址,即:线性地址,即: 线性地址线性地址=段基址段基址+有效地址(即偏移地址)有效地址(即偏移地址) 分页部件分页部件通过页变换

17、,将来自分段部件或指令预通过页变换,将来自分段部件或指令预取部件的线性地址转换成主存的物理地址。取部件的线性地址转换成主存的物理地址。15 上述上述9个部件可以独立操作,也能与其他部件个部件可以独立操作,也能与其他部件并行工作。在取指令和执行指令的过程中,每个并行工作。在取指令和执行指令的过程中,每个部件都完成一部分功能,因此部件都完成一部分功能,因此80486可以同时对可以同时对不同指令进行操作。不同指令进行操作。80486具有具有5级流水线,使不级流水线,使不同指令的操作重叠程度更高,从而允许一些常用同指令的操作重叠程度更高,从而允许一些常用指令在一个时钟周期内完成。尽管这些指令的读指令在

18、一个时钟周期内完成。尽管这些指令的读取、译码和执行实际上占用了多个时钟周期,但取、译码和执行实际上占用了多个时钟周期,但由于这些指令与其他指令的译码和执行相重叠,由于这些指令与其他指令的译码和执行相重叠,因此平均每条指令的执行时间只占一个时钟周期。因此平均每条指令的执行时间只占一个时钟周期。 164.1.3 Pentium系列系列CPU1Pentium CPU (1)概述)概述 Pentium CPU是是Intel 80 x86系列微处理器的第五代产系列微处理器的第五代产品,其性能比它的前一代产品又有较大的提高,但它仍保品,其性能比它的前一代产品又有较大的提高,但它仍保持与持与Intel 80

19、86、80286、80386、80486兼容。兼容。 Pentium CPU是第一个实现系统管理方式的高性能微是第一个实现系统管理方式的高性能微处理器,它能很好地实现处理器,它能很好地实现PC机系统的能耗与安全管理。机系统的能耗与安全管理。 Pentium CPU之所以有如此高的性能,在于该微处理之所以有如此高的性能,在于该微处理器体系结构采用了一系列新的设计技术,如超标量体系结器体系结构采用了一系列新的设计技术,如超标量体系结构、集成浮点部件、构、集成浮点部件、64位数据总线、指令动态转移预测、位数据总线、指令动态转移预测、回写数据高速缓存、错误检测与报告等。回写数据高速缓存、错误检测与报告

20、等。17(2)Pentium CPU的功能结构如下图所示的功能结构如下图所示:18 超标量体系结构超标量体系结构 Pentium CPU具有三条指令执行流水线:两条独立的整数指令流水线具有三条指令执行流水线:两条独立的整数指令流水线(U流水线和流水线和V流水线)与一条浮点指令流水线。两条整数指令流水线都拥流水线)与一条浮点指令流水线。两条整数指令流水线都拥有独立的算术逻辑运算部件、地址生成逻辑和高速数据缓存接口。每一个有独立的算术逻辑运算部件、地址生成逻辑和高速数据缓存接口。每一个时钟周期可以同时执行两条简单指令,因而相对同一频率下工作的时钟周期可以同时执行两条简单指令,因而相对同一频率下工作

21、的80486来来说,其性能几乎提高了说,其性能几乎提高了1倍。通常把这种能一次同时执行多条指令的处理倍。通常把这种能一次同时执行多条指令的处理器结构称为器结构称为超标量体系结构超标量体系结构。 浮点指令流水线与浮点指令部件浮点指令流水线与浮点指令部件 浮点指令流水线具有浮点指令流水线具有8级,实际上它是级,实际上它是U流水线的扩充。流水线的扩充。U流水线的前流水线的前4级用来准备一条浮点指令,浮点部件中的后级用来准备一条浮点指令,浮点部件中的后4级执行特定的浮点运算操作并级执行特定的浮点运算操作并报告执行错误。此外在浮点部件中,对常用的浮点指令(加、减、除)采报告执行错误。此外在浮点部件中,对

22、常用的浮点指令(加、减、除)采用专用硬件电路执行,而不像其他指令由微码来执行。因此,大多数浮点用专用硬件电路执行,而不像其他指令由微码来执行。因此,大多数浮点指令都可以在一个时钟周期内完成,这比相同频率下的指令都可以在一个时钟周期内完成,这比相同频率下的80486浮点处理性能浮点处理性能提高了提高了4倍。倍。19 指令转移预测部件指令转移预测部件 Pentium CPU提供了一个小型的提供了一个小型的1KB高速缓存(称为高速缓存(称为转移目标缓冲器转移目标缓冲器BTB)来预测指令转移。它记录正在执行)来预测指令转移。它记录正在执行的程序最近所发生的几次转移,这就犹如一张指令运行路的程序最近所发

23、生的几次转移,这就犹如一张指令运行路线图,指明转移指令很可能会引向何处。线图,指明转移指令很可能会引向何处。BTB将进入流水将进入流水线的新指令与它所存储的有关转移信息进行比较,以确定线的新指令与它所存储的有关转移信息进行比较,以确定是否将再次执行转移。由于程序局部性原则,指令的历史是否将再次执行转移。由于程序局部性原则,指令的历史本身会经常重复,因而使转移预测部件在大多数情况下的本身会经常重复,因而使转移预测部件在大多数情况下的预测是正确的,这就足以将微处理器的性能提高很多。预测是正确的,这就足以将微处理器的性能提高很多。 数据和指令高速缓存数据和指令高速缓存 Pentium芯片内部有两个超

24、高速缓冲存储器芯片内部有两个超高速缓冲存储器Cache。一。一个是个是8KB的数据的数据Cache,另一个是,另一个是8KB的指令的指令Cache,它,它们可以并行操作。这种分离的高速缓存结构可减少指令预们可以并行操作。这种分离的高速缓存结构可减少指令预取和数据操作之间可能发生的冲突,提高微处理器的信息取和数据操作之间可能发生的冲突,提高微处理器的信息存取速度。存取速度。20 2Pentium Pro CPU Pentium Pro CPU即即P6,中文名称为高能奔腾处理器,中文名称为高能奔腾处理器,是是Intel公司继公司继Pentium之后于之后于1995年推出的又一种新型高年推出的又一种

25、新型高性能奔腾微处理器。性能奔腾微处理器。Pentium Pro CPU主要特点如下:主要特点如下: (1)三路发布超标量微结构,)三路发布超标量微结构,14级超流水线,使一个级超流水线,使一个时钟周期内可同时执行三条简单指令。时钟周期内可同时执行三条简单指令。 (2)5个并行处理单元:两个整数运算部件,一个装入个并行处理单元:两个整数运算部件,一个装入部件,一个存储部件,一个浮点运算部件(部件,一个存储部件,一个浮点运算部件(FPU)。)。 (3)8 KB两路组相关指令高速缓存,两路组相关指令高速缓存,8 KB四路组相联四路组相联数据高速缓存。数据高速缓存。 (4)专用全速总线上的)专用全速

26、总线上的256 KB SRAM使二级高速缓存使二级高速缓存与微处理器紧密相联。与微处理器紧密相联。 (5)事务处理)事务处理I/O总线和非封锁高速缓存分级结构。总线和非封锁高速缓存分级结构。 (6)乱序执行,动态分支预测和推理执行。)乱序执行,动态分支预测和推理执行。213Pentium CPU (1) 概述概述 Pentium(P)CPU采用了与采用了与Pentium Pro CPU相同相同的核心结构。同时,增加了对多媒体的支持和对的核心结构。同时,增加了对多媒体的支持和对16位代码优位代码优化的特性,它能够同时处理两条化的特性,它能够同时处理两条MMX多媒体指令。多媒体指令。 Pentiu

27、m的显著特点有:的显著特点有: 双重独立总线双重独立总线DIB体系结构,能同时使用具有纠错功能的体系结构,能同时使用具有纠错功能的64位系统总线和具有可选纠错功能的位系统总线和具有可选纠错功能的64位位Cache总线。总线。 多重跳转分支预测。多重跳转分支预测。 数据流分析。分析哪一条指令依赖于其他指令的结果或数据流分析。分析哪一条指令依赖于其他指令的结果或数据,由此来优化指令调度。根据分析结果来重排指令,使数据,由此来优化指令调度。根据分析结果来重排指令,使指令以优化的顺序执行,而与原始程序的顺序无关。指令以优化的顺序执行,而与原始程序的顺序无关。 指令推测执行。使用转移预测和数据流分析,让

28、指令在指令推测执行。使用转移预测和数据流分析,让指令在程序实际执行之前就程序实际执行之前就“推测执行推测执行”,并把结果暂时存储起来。,并把结果暂时存储起来。通过执行可能需要的指令,使处理器的执行机制尽可能地保通过执行可能需要的指令,使处理器的执行机制尽可能地保持繁忙。持繁忙。 采用采用Intel MMX技术。它包括技术。它包括57条增强的条增强的MMX指令,可指令,可处理视频、声频及图像数据。处理视频、声频及图像数据。22(2)Pentium CPU的内部结构的内部结构23 P有有3条指令流水线,每条指令流水线,每条指令流水线共有条指令流水线共有14级如级如右图所示:右图所示: 24 P C

29、PU在体系结构上较以前的处理器有很大变化,在体系结构上较以前的处理器有很大变化,一个最明显的技术特征就是其核心完全采用一个最明显的技术特征就是其核心完全采用RISC微结构,微结构,为了保持与为了保持与80 x86其他处理器兼容,仍继续采用其他处理器兼容,仍继续采用CISC指令指令集,因此内部增加了集,因此内部增加了RISC与与CISC之间的转换硬件。之间的转换硬件。 P与与P6一样采用一样采用*BE7*BE0作为作为8个存储体的选择个存储体的选择信号对存储器的访问加以控制。它们在非流水线的地址方信号对存储器的访问加以控制。它们在非流水线的地址方式下需要两个时钟周期进行总线操作,在式下需要两个时

30、钟周期进行总线操作,在P6和早期和早期P系系统中,系统总线的速度为统中,系统总线的速度为66 MHz,主频为,主频为250 MHz,以,以后的后的Pentium系统总线速度提高到系统总线速度提高到100 MHz。 25(3)操作模式)操作模式 Pentium具有具有3种操作模式:种操作模式:实模式、虚拟实模式、虚拟8086模模式和保护模式。式和保护模式。实际上,实际上,80386及后继机型都具有这及后继机型都具有这3种种模式。模式。 在在实模式实模式下,所有下,所有8088/8086之后增加的新特性都被之后增加的新特性都被关闭,这时关闭,这时Pentium就像一台单纯的就像一台单纯的8088/

31、8086一样运一样运行。行。 在在虚拟虚拟8086模式模式下,可以用一种受保护的方式来运下,可以用一种受保护的方式来运行老的行老的8088/8086程序。这时,有一个实际的操作系统在程序。这时,有一个实际的操作系统在控制整个计算机。控制整个计算机。 在在保护模式保护模式下,有下,有4种可用的特权级别,它们由程序种可用的特权级别,它们由程序状态字中的对应位控制。第状态字中的对应位控制。第0级相当于别的计算机中的内级相当于别的计算机中的内核模式,它可以完全控制计算机,因而只由操作系统使核模式,它可以完全控制计算机,因而只由操作系统使用。第用。第3级用于运行用户程序,它阻塞用户程序对某些特级用于运行

32、用户程序,它阻塞用户程序对某些特殊的关键指令和控制寄存器的访问,以防止某些鲁莽的殊的关键指令和控制寄存器的访问,以防止某些鲁莽的用户程序搞垮整个计算机。第用户程序搞垮整个计算机。第1级和第级和第2级很少使用。级很少使用。264.2.1 80 x86 CPU的寄存器的寄存器 180 x86 CPU的寄存器分类的寄存器分类 80 x86 CPU的内部寄存器可分为以下的内部寄存器可分为以下3大类:大类: 基本结构寄存器组基本结构寄存器组 :通用寄存器、指令指针寄存器、标志寄存通用寄存器、指令指针寄存器、标志寄存器、段寄存器。器、段寄存器。 系统级寄存器组系统级寄存器组 :系统地址寄存器、控制寄存器、

33、测试寄存器、系统地址寄存器、控制寄存器、测试寄存器、调试寄存器。调试寄存器。 浮点寄存器组浮点寄存器组 :数据寄存器、标记字寄存器、指令和数据指针寄数据寄存器、标记字寄存器、指令和数据指针寄存器、控制字寄存器。存器、控制字寄存器。4.2 80 x86 CPU的寄存器和主存储器的寄存器和主存储器272基本结构寄存器组基本结构寄存器组 基本结构寄存器组如右图所示:基本结构寄存器组如右图所示: 通用寄存器;通用寄存器; 指令指针寄存器;指令指针寄存器; 标志寄存器;标志寄存器; 段寄存器段寄存器 。28(1)通用寄存器)通用寄存器 图中除阴影区以外的寄存器是图中除阴影区以外的寄存器是8086/808

34、8和和80286所具所具有的寄存器,它们都是有的寄存器,它们都是16位寄存器。其中位寄存器。其中4个个16位的寄存位的寄存器器AX、BX、CX、DX可称为数据寄存器。这可称为数据寄存器。这4个寄存器个寄存器都是通用寄存器,但它们又可以用于各自的专用目的。都是通用寄存器,但它们又可以用于各自的专用目的。 AX(Accumulator)作为累加器用。)作为累加器用。在乘除等指令中在乘除等指令中指定用来存放操作数。另外,所有的指定用来存放操作数。另外,所有的I/O 指令都使用这一指令都使用这一寄存器与外部设备传送信息。寄存器与外部设备传送信息。 BX(Base)可以作为通用寄存器使用。)可以作为通用

35、寄存器使用。此外,在计算此外,在计算存储器地址时,它经常用作基址寄存器。存储器地址时,它经常用作基址寄存器。 CX(Count)可以作为通用寄存器使用。)可以作为通用寄存器使用。此外,它还此外,它还常用来保存计数值,如在移位指令、循环(常用来保存计数值,如在移位指令、循环(LOOP)和串)和串处理指令中用作隐含的计数器。处理指令中用作隐含的计数器。 DX可以作为通用寄存器使用。可以作为通用寄存器使用。一般在做双字长运算时一般在做双字长运算时把把DX和和AX组合在一起存放一个双字长数,组合在一起存放一个双字长数,DX用来存放用来存放高位字。此外,对某些高位字。此外,对某些I/O 操作,操作,DX

36、可用来存放可用来存放I/O 的端的端口地址。口地址。29 SP、BP、DI、SI 这这4个个16位寄存器可以像数据寄存器位寄存器可以像数据寄存器一样在运算过程中存放操作数,但它们只能以字(一样在运算过程中存放操作数,但它们只能以字(16位)位)为单位使用。此外,它们更经常的用途是为单位使用。此外,它们更经常的用途是在存储器寻址时,在存储器寻址时,提供偏移地址。因此,可称它们为指针或变址寄存器。提供偏移地址。因此,可称它们为指针或变址寄存器。 (2)指令指针寄存器和标志寄存器)指令指针寄存器和标志寄存器 IP(Instruction Pointer)为指令指针寄存器,它用来)为指令指针寄存器,它

37、用来存放代码段中的偏移地址。存放代码段中的偏移地址。IP作为指令的地址指针,其作作为指令的地址指针,其作用类似于其他计算机中的程序计数器用类似于其他计算机中的程序计数器PC,当现行指令执,当现行指令执行完毕时,由行完毕时,由IP提供下一条指令地址。提供下一条指令地址。 FLAGS为标志寄存器,又称为标志寄存器,又称PSW(Program Status Word),即程序状态寄存器。),即程序状态寄存器。这是一个存放条件码标志、这是一个存放条件码标志、控制标志和系统标志的寄存器控制标志和系统标志的寄存器。 80386及其后继机型的指令指针寄存器及其后继机型的指令指针寄存器EIP和标志寄存和标志寄

38、存器器EFLAGS是是32位的,其作用和相应的位的,其作用和相应的16位寄存器相同。位寄存器相同。 30下图说明了下图说明了80 x86 CPU中标志寄存器的内容中标志寄存器的内容:31 条件码标志包括以下条件码标志包括以下6位:位: OF(Over Flow Flag) 溢出标志。溢出标志。将参加算术运算的数将参加算术运算的数看作带符号数,如运算结果超出补码表示数的范围看作带符号数,如运算结果超出补码表示数的范围N,即溢出时,则,即溢出时,则OF置置1;否则;否则OF置置0。对于字节运算有。对于字节运算有 128N+127;对于字运算有;对于字运算有 32768N+32767。 SF(Sig

39、n Flag) 符号标志。符号标志。把指令执行结果看作带符号数,把指令执行结果看作带符号数,如结果为负,则如结果为负,则SF置置1;结果为正,则;结果为正,则SF置置0。 ZF(Zero Flag) 零标志。零标志。如指令执行结果各位全为如指令执行结果各位全为0时,时,则则ZF置置1;否则;否则ZF置置0。 CF(Carry Flag) 进位标志。进位标志。在进行算术运算时,如最在进行算术运算时,如最高位(对字操作是第高位(对字操作是第15位,对字节操作是第位,对字节操作是第7位)产生进位或借位时,位)产生进位或借位时,则则CF置置1;否则置;否则置0。在移位类指令中,。在移位类指令中,CF用

40、来存放移出的代码(用来存放移出的代码(0或或1)。)。 AF(Auxiliary Carry Flag) 辅助进位标志。辅助进位标志。在进行算在进行算术运算时,如低字节中低术运算时,如低字节中低4位(第位(第3位)产生进位或借位时,则位)产生进位或借位时,则AF置置1;否则否则AF置置0。AF可用于十进制运算的校正可用于十进制运算的校正。 PF(Parity Flag) 奇偶标志。奇偶标志。用来为机器中传送信息时可用来为机器中传送信息时可能产生的代码出错情况提供检验条件。当运算结果中能产生的代码出错情况提供检验条件。当运算结果中1的个数为偶数的个数为偶数时置时置1,否则置,否则置0。32 控制

41、标志位控制标志位1位位 DF(Direction Flag)方向标志,用来在串处理指令)方向标志,用来在串处理指令中控制处理信息的方向。中控制处理信息的方向。当当DF位为位为1时,每次操作后使变时,每次操作后使变址寄存器址寄存器SI和和DI减小,这样就使串处理从高地址向低地址减小,这样就使串处理从高地址向低地址方向处理。当方向处理。当DF位为位为0时,则使时,则使SI和和DI增大,使串处理从增大,使串处理从低地址向高地址方向处理。低地址向高地址方向处理。 系统标志位有系统标志位有10位:位: TF(Trap Flag) 陷阱标志陷阱标志,用于调试时的单步方式,用于调试时的单步方式操作。操作。

42、IF(Interrupt Flag) 中断标志中断标志 。 IOPL(I/O Privilege Level) I/O特权级标志特权级标志 。 NT(Nested Task) 嵌套任务标志嵌套任务标志,用来表示当前的,用来表示当前的任务是否嵌套在另一任务内。任务是否嵌套在另一任务内。 33 RF(Resume Flag) 恢复标志位,恢复标志位,它与调试寄存器它与调试寄存器的断点一起使用,以保证不重复处理断点。的断点一起使用,以保证不重复处理断点。 VM(Virtual-8086 Mode) 虚拟虚拟8086模式位模式位 。 AC(Alignment Check mode) 对准检查方式位对准

43、检查方式位 。 VIF(Virtual Interrupt Flag) 虚拟中断标志。虚拟中断标志。 VIP(Virtual Interrupt Pending flag) 虚拟中断未决虚拟中断未决标志。标志。 ID(IDentification flag) 标识标志,标识标志,程序有设置和程序有设置和清除清除ID标识的能力,以指示处理机对标识的能力,以指示处理机对CPU ID指令的支持。指令的支持。 34 在调试程序在调试程序DEBUG中提供了测试标志位的手段,它中提供了测试标志位的手段,它用符号表示某些标志位的值:用符号表示某些标志位的值: 标志名标志名标志为标志为1标志为标志为0 OF

44、溢出(是溢出(是/否)否) OVNV DF 方向(增量方向(增量/ 减量)减量)DNUP IF 中断(允许中断(允许/关闭)关闭)EIDI SF 符号(正符号(正/负)负)NGPL ZF 零(是零(是/否)否)ZRNZ AF 辅助进位(是辅助进位(是/否)否)ACNA PF 奇偶(偶奇偶(偶/奇)奇)PEPO CF 进位(是进位(是/否)否)CYNC35(3)段寄存器)段寄存器 段寄存器用于存储器寻址,用来直接或间接地存放段段寄存器用于存储器寻址,用来直接或间接地存放段地址。段寄存器的长度为地址。段寄存器的长度为16位,在位,在80286以前的处理器中,以前的处理器中,只有代码段只有代码段CS

45、(Code Segment)、数据段)、数据段DS(Data Segment)、堆栈段)、堆栈段SS(Stack Segment)和附加段)和附加段ES(Extra Segment)4个寄存器。从个寄存器。从80386起,增加了起,增加了FS和和GS两个段寄存器,它们也属于附加的数据段。有关段寄两个段寄存器,它们也属于附加的数据段。有关段寄存器的使用将在下一节中说明。存器的使用将在下一节中说明。364.2.2 80 x86的主存储器的主存储器 1存储单元的地址和内容存储单元的地址和内容 每每8位二进制数组成一个字节,位编号如图位二进制数组成一个字节,位编号如图(a)所示。)所示。8086、80

46、286的字长为的字长为16位,由两位,由两个字节组成,位编号如图(个字节组成,位编号如图(b)所示。)所示。80386Pentium机的字长为机的字长为32位,由两个字即位,由两个字即4个字节个字节组成,在组成,在80 x86系列中称其为双字,位编号如图系列中称其为双字,位编号如图(c)所示。此外,还有一种由)所示。此外,还有一种由8个字节即字长个字节即字长为为64位组成的位组成的4字,位编号如图(字,位编号如图(d)所示。)所示。37 在存储器里以字节为单位存储信息。为了正确地存放或取得信息,每在存储器里以字节为单位存储信息。为了正确地存放或取得信息,每一个字节单元给予一个唯一的编号即存储器

47、地址,称为一个字节单元给予一个唯一的编号即存储器地址,称为物理地址物理地址。地址从。地址从0开始编号,顺序地每次加开始编号,顺序地每次加1,因此存储器的物理地址空间呈线性增长。在机,因此存储器的物理地址空间呈线性增长。在机器里,地址也是用二进制数来表示的。当然它是无符号整数,书写格式为十器里,地址也是用二进制数来表示的。当然它是无符号整数,书写格式为十六进制数。六进制数。 8086/8088的的地址总线地址总线20位:位: 可访问的字节单元地址范围为可访问的字节单元地址范围为00000HFFFFFH; 80286的的地址总线地址总线24位:位: 可访问的地址范围为可访问的地址范围为000000

48、HFFFFFFH; 80386/ /80486和和Pentium地址总线地址总线32位:位: 地址范围为地址范围为00000000HFFFFFFFFH; Pentium Pro和和P地址总线地址总线36位:位: 地址范围为地址范围为000000000HFFFFFFFFFH。 1638 一个存储单元中存放的信息称为该存储单元的内一个存储单元中存放的信息称为该存储单元的内容,右图表示了存储器里存放信息的情况。容,右图表示了存储器里存放信息的情况。 0004H号字节单元中存放的信息为号字节单元中存放的信息为78H,表示为:表示为: (0004H)=78H 两个字节单元就构成了一个字单元,字单元的地址

49、两个字节单元就构成了一个字单元,字单元的地址采用它的低地址来表示。右图中采用它的低地址来表示。右图中00040004H H字单元的内容字单元的内容为为56785678H H,表示为表示为 (00040004H H)= 5678H= 5678H 双字单元的地址由其最低字节的地址指定,因此双字单元的地址由其最低字节的地址指定,因此0004H双字单元的内容为:双字单元的内容为: (0004H)=12345678H。 39 2实模式存储器寻址实模式存储器寻址 80 x86中除中除8086/8088只能在实模式下工作外,其他的只能在实模式下工作外,其他的CPU均可在实模式或保护模式下工作。均可在实模式或

50、保护模式下工作。 (1)存储器的分段)存储器的分段 实模式下允许的最大寻址空间为实模式下允许的最大寻址空间为1 MB。8086/8088的的地址总线宽度为地址总线宽度为20位,因而其最大寻址空间正好是位,因而其最大寻址空间正好是1MB。在在1MB的存储器里,每个存储单元都有一个唯一的的存储器里,每个存储单元都有一个唯一的20位地位地址,称为物理地址。址,称为物理地址。而对于其他微处理器在实模式下只能而对于其他微处理器在实模式下只能访问前访问前1 MB的存储器地址。的存储器地址。40 实模式就是为实模式就是为8086/8088而设计的工作方式,它要解决在而设计的工作方式,它要解决在16位字长的机

51、器里怎么位字长的机器里怎么提供提供20位地址的问题,而解决的办法是:将位地址的问题,而解决的办法是:将1 MB主存空间划分为若干段,每个段的主存空间划分为若干段,每个段的最大长度为最大长度为64 KB单元,这样段内地址可以用单元,这样段内地址可以用16位表示。如果能再提供段的位表示。如果能再提供段的20位起始位起始地址,那么通过这两个地址就可以访问段内任何一个存储单元。因此,在地址,那么通过这两个地址就可以访问段内任何一个存储单元。因此,在CPU中设置中设置的段寄存器只有的段寄存器只有16位,只能存放位,只能存放20位段起始地址的高位段起始地址的高16位,称它为位,称它为段基值(段基值(Seg

52、ment Base Value),而机器将段起始地址的低而机器将段起始地址的低4位设置为位设置为0。故将段基值左移。故将段基值左移4位后(即末尾位后(即末尾加加4位二进制数位二进制数0),就得到一个),就得到一个20位的段起始地址,称它为位的段起始地址,称它为段基地址或段基址(段基地址或段基址(Segment Base Address)。显然,段基址为显然,段基址为xxxx0H,其低其低4位二进制数为位二进制数为0,即能被,即能被16整除的主存物理地址才可作为段基址。整除的主存物理地址才可作为段基址。 段内地址即段内地址即偏移地址偏移地址,它是一个主存单元与所在段的段基址之间的字节距离,通常,

53、它是一个主存单元与所在段的段基址之间的字节距离,通常由由CPU按指令的寻址方式计算得到或由指令指针按指令的寻址方式计算得到或由指令指针IP提供,又称为提供,又称为有效地址有效地址。当。当CPU访问访问某个主存单元时,必须指明由哪个段寄存器提供段基值,同时给出偏移地址。然后将某个主存单元时,必须指明由哪个段寄存器提供段基值,同时给出偏移地址。然后将16位段基值左移位段基值左移4位后与位后与16位偏移地址相加,形成位偏移地址相加,形成20位主存单元的物理地址,这一过程可以位主存单元的物理地址,这一过程可以表示如下:表示如下: 41实模式存储器寻址过程如下图所示:实模式存储器寻址过程如下图所示:42

54、(2)段寄存器)段寄存器 在在808680286中,有中,有4个专门存放段基值的寄存个专门存放段基值的寄存器,称为段寄存器。它们分别是器,称为段寄存器。它们分别是代码段代码段CS、数据段、数据段DS、堆栈段、堆栈段SS和附加段和附加段ES寄存器寄存器。 每个段寄存器可以确定一个段的起始地址,而这每个段寄存器可以确定一个段的起始地址,而这些段则各有各的用途。些段则各有各的用途。代码段存放当前正在运行的程代码段存放当前正在运行的程序。数据段存放当前运行程序所用的数据序。数据段存放当前运行程序所用的数据。堆栈段堆栈段定义了堆栈的所在区域。附加段是附加的数据段,它定义了堆栈的所在区域。附加段是附加的数

55、据段,它是一个辅助的数据区,也是串处理指令的目的操作数是一个辅助的数据区,也是串处理指令的目的操作数存放区。存放区。 在在80386及其后继的及其后继的80 x86中,除上述中,除上述4个段寄存个段寄存器外,又增加了器外,又增加了2个段寄存器个段寄存器FS和和GS,它们也是附加,它们也是附加的数据段寄存器,所以的数据段寄存器,所以808680286的程序允许的程序允许4个存个存储段,而后继的储段,而后继的80 x86程序可允许程序可允许6个存储段。个存储段。 43 一般情况下,各段在存储器一般情况下,各段在存储器中的分配是由操作系统负责的。中的分配是由操作系统负责的。每个段可以独立地占用小于或

56、每个段可以独立地占用小于或等于等于64 KB的存储区,如右图所的存储区,如右图所示。示。 44 【例例】 如果代码段中的程序占有如果代码段中的程序占有8 KB(2000H)存储区,数据段)存储区,数据段占有占有2 KB(800H)存储区,堆)存储区,堆栈段只占有栈段只占有256 B的存储区,此的存储区,此时段区的分配如右图所示。时段区的分配如右图所示。 从图中可以看出,代码段的从图中可以看出,代码段的区域可以是区域可以是02000H03FFFH,但由于程序区只需要但由于程序区只需要8 KB,所,所以程序区结束后的第一个小段的以程序区结束后的第一个小段的首地址就作为数据段的起始地址。首地址就作为

57、数据段的起始地址。也就是说,在这里,代码段和数也就是说,在这里,代码段和数据段可以重叠在一起。当然每个据段可以重叠在一起。当然每个存储单元的内容是不允许发生冲存储单元的内容是不允许发生冲突的。这里所谓的重叠只是指每突的。这里所谓的重叠只是指每个段区的大小允许根据实际需要个段区的大小允许根据实际需要来分配,而不一定要占有来分配,而不一定要占有64 KB的最大段空间。的最大段空间。45 在在80 x86中,段寄存器和与其对应存放偏移地址中,段寄存器和与其对应存放偏移地址的寄存器之间有一种默认的组合关系,如下表所示的寄存器之间有一种默认的组合关系,如下表所示:8086/8088、80286:段寄存器

58、段寄存器 偏移地址偏移地址CSIPSSSP或或BPDSBX、SI、DI或一个或一个16位数位数ESDI(用于串指令)(用于串指令)80386及其后继机型:及其后继机型: 段寄存器段寄存器 偏移地址偏移地址CSEIPSSESP或或EBPDSEAX、EBX、ECX、EDX、EDI、ESI、一个一个8或或32位数位数ESEDI(用于串指令)(用于串指令)FS无默认无默认GS无默认无默认463保护模式存储器寻址保护模式存储器寻址 (1)逻辑地址)逻辑地址 在保护模式存储器寻址中在保护模式存储器寻址中 ,程序员在程序中指定逻,程序员在程序中指定逻辑地址,辑地址, CPU采用一种比较复杂的方法来求得相应的

59、物采用一种比较复杂的方法来求得相应的物理地址。在保护模式下,逻辑地址由段选择器和偏移地址理地址。在保护模式下,逻辑地址由段选择器和偏移地址两部分组成,段选择器存放在段寄存器中,但它不能直接两部分组成,段选择器存放在段寄存器中,但它不能直接确定段基址,而由确定段基址,而由CPU通过一定的方法取得段基址,再和通过一定的方法取得段基址,再和偏移地址相加,从而求得所选存储单元的线性地址,线性偏移地址相加,从而求得所选存储单元的线性地址,线性地址再通过分页部件转换成物理地址。地址再通过分页部件转换成物理地址。 47 下图为保护模式存储器寻址示意图。可以看出,它和实下图为保护模式存储器寻址示意图。可以看出

60、,它和实模式寻址的另一个区别是:偏移地址为模式寻址的另一个区别是:偏移地址为32位,最大段长可从位,最大段长可从64 KB扩大到扩大到4 GB。 48 (2)描述符)描述符 段选择器是通过描述符表取得描述符,从而得到段基段选择器是通过描述符表取得描述符,从而得到段基址的。址的。描述符有描述符有8个字节长,用来说明段的起始地址、段个字节长,用来说明段的起始地址、段的大小、段在存储器中的位置及有关的控制和状态信息,的大小、段在存储器中的位置及有关的控制和状态信息,其格式如下图所示其格式如下图所示: 49 描述符由段基址、段界限、访问权和附加字段描述符由段基址、段界限、访问权和附加字段4部分组成。部

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论