第2章 16位和32位微处理器_第1页
第2章 16位和32位微处理器_第2页
第2章 16位和32位微处理器_第3页
第2章 16位和32位微处理器_第4页
第2章 16位和32位微处理器_第5页
已阅读5页,还剩147页未读 继续免费阅读

下载本文档

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

文档简介

1、第2章 16位和32位微处理器,2.1 16位微处理器8086/8088,2.1.0 简介,8086:16位微处理器 采用单一的+5V电源和40条引脚的双列直插式封装;时钟频率为5MHz10MHz,最快的指令执行时间为0.4s。 8086有16根数据线和20根地址线,可以处理8位或16位数据,可寻址220即1MB的存储单元和64KB的I/O端口。 8088:准16位微处理器 设计的主要目的是为了与Intel原有的8位外围接口芯片直接兼容。 8088的内部寄存器、运算器以及内部数据总线都是按16位设计的,但外部数据总线只有8条,因此执行相同的程序,8088要比8086有较多的外部存取操作而执行得

2、较慢。,2.1.1 8086/8088 CPU的内部结构,图2.1,图2.1 8086微处理器内部结构图,1.总线接口部件BIU,功能 负责CPU与内存或I/O端口传送指令或数据。 BIU从内存取指令送到指令队列缓冲器。 当EU执行指令时,BIU要配合EU从指定的内存单元或I/O端口中读取数据,或者把EU的操作结果送到指定的内存单元或I/O端口去。 组成:段寄存器、指令指针寄存器、地址加法器、指令预取队列及总线控制逻辑。,图2.1,1)段寄存器,所有寄存器都是16位的,因此,能够提供的最大地址空间只能为64 KB。 为了寻址1MB,将存储器的空间分成若干段,每段最大为64KB。 段寄存器:用来

3、存放段的起始地址(16位)的寄存器,设有四个段寄存器: CS 代码段寄存器(Code Segment register) DS 数据段寄存器(Data Segment register) SS 堆栈段寄存器(Stack Segment register) ES 附加数据段寄存器(Extra Segment register),图2.1,2)地址加法器,作用:根据提供的16位信息产生20位地址。,图2.1,3)指令预取队列,8086:指令预取队列为6字节 8088:指令预取队列为4字节 指令预取队列采用“先进先出”原则。 要执行的指令预先由BIU从内存取出放在队列中,然后EU再从队列中取出指令并

4、执行。 一般情况下,EU每执行完一条指令,就可以立即从指令队列中取指令执行,从而提高了CPU的效率。,图2.1,4)总线控制逻辑,8086分配20条引脚线传送20位地址、16位数据和4位状态信息,这就必须要分时传送。 总线控制逻辑的功能,就是以逻辑控制方法实现上述信息的分时传送。,2.执行部件EU,功能 负责指令的译码和执行。 负责向总线接口部件BIU提供偏移地址。 对通用寄存器和标志寄存器进行管理。 组成:算术逻辑单元(ALU) 、1个标志寄存器、8个通用寄存器、1个数据暂存寄存器和EU控制电路。,图2.1,1)算术逻辑部件ALU,用于进行8位和16位的算术和逻辑运算,也可以按照指令的寻址方

5、式计算出寻址单元的16位偏移量。,图2.1,2)标志寄存器FR,16位,用来反映CPU运算的状态特征或存放控制标志。,图2.1,3)通用寄存器组,4个16位数据寄存器AX、BX、CX、DX 4个16位指针与变址寄存器:堆栈指针寄存器SP(Stack Pointer)基址指针寄存器BP(Base Pointer) 源变址寄存器SI(Source Index) 目的变址寄存器DI(Destination Index),图2.1,4)数据暂存寄存器,协助ALU完成运算,暂存参加运算的数据。,图2.1,5)EU控制电路,它是控制、定时与状态逻辑电路,接收从BIU中指令队列取来的指令,经过指令译码形成各

6、种定时控制信号,对EU的各个部件实现特定的定时操作。 EU中所有的寄存器和数据通道(除指令队列总线为8位外)都是16位的宽度,可实现数据的快速传送。,3.BIU和EU的流水线管理,(1)每当8086的指令队列中有2个空字节或8088的指令队列有1个空字节,BIU就会自动把后面的指令从存储器取到指令队列中,从而提高了CPU执行指令的速度。 (2)每当EU准备执行一条指令时,它会从指令队列前部取出指令,进行译码,然后去执行。在执行指令时,如果必须访问存储器或I/O端口,EU就会请求BIU去完成访问外部的操作,如果此时BIU正好处于空闲状态,那么会立即响应EU的请求。若EU向BIU发出请求访问时,B

7、IU正在将某条指令取到指令队列中,此时BIU首先完成取指令操作,然后再去响应EU发出的访问外界的请求。,3.BIU和EU的流水线管理(续),(3)当指令队列已满,且EU对BIU又没有总线访问请求时,BIU进入空闲状态。 (4)在执行转移指令、调用指令和返回指令时,如果要执行的指令不在指令队列中,则指令队列中原有内容被自动清除,BIU会重新取指令,把将要转入的程序段的指令装入到指令队列中。,2.1.2 8086/8088 CPU的寄存器结构,图2.2,图2.2 8086/8088的寄存器结构,1.通用寄存器,分为:,1)数据寄存器,EU中有4个16位的数据寄存器AX、BX、CX、DX 每个数据寄

8、存器又可分为高字节H和低字节L寄存器,即AH、BH、CH、DH和AL、BL、CL、DL两组。 16位数据寄存器主要用于存放数据,也可存放地址,而8位寄存器只能用于存放数据,它们均可以用寄存器名来独立寻址、独立使用。,2)地址指针寄存器和变址寄存器,都是16位,一般用来存放偏移地址。 指针寄存器SP和BP用来存取位于当前堆栈段中的数据,但SP和BP使用上有区别。 堆栈指针寄存器SP给出栈顶的偏移地址。 基址指针寄存器BP用来存放位于堆栈段中的一个数据区基址的偏移地址。 源变址寄存器SI和目的变址寄存器DI用来存放当前数据段的偏移地址。,表2.1,表2.1 寄存器的隐含使用,2.指令指针寄存器,1

9、6位,存放着BIU要取的下一条指令的偏移地址。 指令执行时,每取一次指令IP就自动加1,这样保证能按顺序取出并执行指令。 指令代码存放在存储器的代码段,CPU利用CS和IP取得要执行的指令. 修改IP中的内容,就可以改变指令的执行流向。,3.标志寄存器(16位),16位标志寄存器FR用于反映指令执行结果或控制指令执行的形式。 只用了其中的9位,分为:状态标志位和控制标志位。,1)状态标志位(6位),用来反映算术或逻辑运算后结果的状态,以记录CPU的状态特征。,进位标志CF(Carry Flag),加法时,最高位(字节操作时的D7位,字操作时的D15位)是否有进位产生。 减法时,最高位(字节操作

10、时的D7位,字操作时的D15位)是否有借位产生。,奇偶标志PF(Parity Flag),若运算结果低8位中“1”的个数为偶数,则PF=1;否则PF=0。 一般用来检测数据传输中是否发生错误。,辅助进位标志AF(Auxiliary carrry Flag),加法时,第3位向第4位有进位。 减法时,第3位向第4位有借位。 该标志位通常用于对BCD算术运算结果进行调整。,零标志ZF(Zero Flag),若运算结果为0,则ZF=1;否则ZF=0。,符号标志SF(Sign Flag),它和运算结果的最高位相同。,溢出标志OF(Overflow Flag),若运算过程中发生了“溢出”,则OF=1,否则

11、OF=0。,2)控制标志位(3位),用来控制CPU的操作,由程序设置或清除。,中断允许标志IF(Interrupt Enable Flag),如果IF置“1”,则CPU可以接受可屏蔽中断请求;反之,则CPU不能接受可屏蔽中断请求。 STI 指令使IF置“1”,即开放中断。 CLI 指令使IF清“0”,即关闭中断。,方向标志DF(Direction Flag),控制字符串操作指令的步进方向。 DF=1时,地址自动递减; DF=0时,地址自动递增。 STD使DF=1。 CLD使DF=0。,跟踪(陷阱)标志TF(Trap Flag),为调试程序的方便而设置的。 TF=1,则处于单步工作方式; TF=

12、0 ,将正常执行程序。 例如,在系统调试软件DEBUG中的T命令,就是用该标志位来进行程序的单步跟踪的。,4.段寄存器,图2.1,1)存储器分段的概念,8086/8088有20位地址线,能够寻址1 MB的内存空间; CPU内部存放地址信息的IP、SP、SI、DI或BX等寄存器却只有16位,只能寻址64KB存储空间。 所谓分段技术就是把1MB的存储空间分成若干逻辑段,每个逻辑段最大具有64 KB的存储空间。 段内地址是连续的,段与段之间是相互独立的。逻辑段可以在整个存储空间浮动,即段的排列可以连续、分开、部分重叠或完全重叠,非常灵活。,图2.4,图2.4 逻辑分段的示意图,2)逻辑地址和物理地址

13、,段首址:段的第一个单元的地址(20位),最低4位是全0(即段首址是16的整数倍)。 段基址:段首址的高16位。段基址存放在段寄存器中。 偏移地址:段内存储单元距离段首地址的偏移量(以字节数计算,16位),也称有效地址EA。偏移地址存放在IP、BP、SI、DI或BX中,或者是通过计算得到。 逻辑地址:通常用段基址:偏移地址的形式来描述,在程序中使用。,物理地址的形成,物理地址:指CPU和存储器进行数据交换时实际寻址所使用的地址,是用20位二进制数或5位十六进制数表示的地址。 任何一个单元的20位物理地址都是由它的逻辑地址变换得到的: 物理地址段基址16偏移地址,例题,设(CS)=4232H ,

14、(IP)=0066H,试计算物理地址。,注意,一个存储单元的物理地址是唯一的,而逻辑地址是可以不唯一的。 例如,物理地址是12345H,它的逻辑地址可以是1233H:0015H 也可以是1234H:0005H。,3)堆栈,堆栈是以“先进后出”或“后进先出”原则管理的存储区域。 堆栈段也采用段定义语句在存储器中定义,最大为64KB。可在1MB的存储空间内浮动。 堆栈段所在存储区中的位置由堆栈段寄存器SS和堆栈指针SP来指示。 SS给出堆栈段的段基址 SP存放栈顶地址,指出从栈顶到段首址的偏移量。 栈顶与栈底之间单元中的内容是堆栈段中的有效数据。 堆栈操作有入栈(PUSH)和出栈(POP)两种。,

15、4)段寄存器的使用,四个段寄存器分别指明四个现行可寻址的逻辑段: (1)代码段(Code Segment):用来存放当前正在运行的程序。系统在取指令时将寻址代码段,其段基址和偏移地址分别由段寄存器CS和指令指针IP给出。 (2)数据段(Data Segment):存放当前运行程序所用的数据。用户在寻址该段内的数据时,可以缺省段的说明,其偏移地址可通过多种寻址方式形成。 (3)堆栈段(Stack Segment):堆栈为保护、调度数据提供了重要的手段。系统在执行栈操作指令时将寻址堆栈段,段基址和偏移地址分别由段寄存器SS和堆栈指针SP提供。 (4)附加数据段(Extra Segment):该段是

16、一个辅助的数据区,也用于数据的保存。用户在访问段内的数据时,其偏移地址同样可以通过多种寻址方式来形成,但在偏移地址前要加上段的说明(即段跨越前缀ES)。,图2.7,表2.2,图2.7 段寄存器的使用情况,只要修改段寄存器的内容,就可以将相应的存放区设置在内存存储空间的任何位置上。这些区域可以相互独立,也可以部分或完全重叠。,表2.2 段寄存器使用时的一些基本约定,2.1.3 8086/8088 CPU的引脚信号和功能,图2.8,图2.8 8086/8088CPU的引脚信号,1.8086最小模式下引脚的功能定义,最小/最大模式设定,输入。 =1时:工作方式设置为最小模式,在此方式下,系统全部控制

17、信号由8086本身提供; =0时:工作方式设置为最大模式。,8086总线周期的概念,为了取得指令或传送数据,就需要CPU的总线接口部件(BIU)执行一个总线周期。 一个最基本的总线周期由4个时钟周期组成。 习惯上将4个时钟周期分别称为4个状态,即T1状态、T2状态、T3状态和T4状态。,8086最小模式下引脚的功能定义,AD15AD0,A19/S6A16/S3,RESET,READY,NMI,INTR,HOLD、HLDA,ALE,CLK,VCC、GND,AD15AD0,地址/数据复用引脚。 在总线周期的T1状态用来输出要访问的存储器或I/O端口地址,在T2T4状态,作为数据传输线。 传送地址时

18、为三态输出,传送数据时可双向三态输入/输出。 在8088中,只有AD7AD08条地址/数据线,AD15AD8只用来输出地址。,A19/S6A16/S3,地址/状态复用引脚,三态,分时输出。 在T1状态:输出高4位地址。 访问存储器时:A19A16与AD15 AD0组成20位地址; 访问I/O端口时:不使用这4条引线。 在T2T4状态:输出状态信息。 S6=0,表示当前8086/8088与总线相连(即S6始终保持低电平)。 S5 用来指示状态寄存器中的中断允许标志IF的状态 (S5为1允许中断,S5为0禁止中断) 。,表2.3,表2.3 S4和S3的组合,高8位数据总线允许/状态复用引脚,三态,

19、输出。 在T1状态: 输出,若 =0,表示高8位数据线D15D8上的数据有效。 在T2T4状态:输出S7(无意义)。,ALE,地址锁存允许信号,输出,正脉冲。 提供给地址锁存器8282的控制信号。 在任何一个总线周期的T1状态,ALE输出有效电平,以表示当前总线上输出的是地址信息,要求进行地址锁存。,RESET,复位信号,输入,高电平有效。 复位信号至少维持4个时钟周期的高电平,接通电源上电时,复位信号不能小于50s。,表2.4,表2.4 复位后CPU内部寄存器的状态,READY,“准备好”信号,输入,高电平有效 由所寻址的存储器或I/O端口发来的响应信号,表明存储器或I/O端口的状态。 CP

20、U在T3采样READY,若READY=0,则在T3后插入一个或多个TW,直至READY=1,进入T4,完成数据传送,从而结束当前总线周期。,读信号,三态、输出。 =0时,表示将要执行一个对存储器或I/O端口的读操作。 在读操作的总线周期的T2、T3和TW为低电平。,写信号,三态、输出。 =0时,表示将要执行一个对存储器或I/O端口的写操作。 在写操作的总线周期的T2、T3和T4为低电平。,存储器/外设控制信号,输出 =1:访问存储器 =0:访问I/O端口 一般被用于存储芯片或I/O接口芯片的片选( )译码电路中。 8088为 。,NMI,非屏蔽中断请求信号,输入,上升沿有效。 此请求不受IF的

21、影响。只要此信号一出现,CPU就在现行指令结束后响应中断。,INTR,可屏蔽中断请求信号,输入,高电平有效。 当INTR=1时,表示外设提出了中断请求,8086/8088在每个指令周期的最后一个T状态去采样此信号。 若IF=1,则CPU响应中断,转去执行中断服务程序。,中断响应信号,输出,低电平有效。 用于对外设的中断请求作出响应。连续周期中的两个负脉冲。 第1个脉冲是通知外设接口,它的中断请求已获允许; 外设接口收到第2个负脉冲后,往数据总线上放中断类型码。,HOLD、 HLDA,HOLD:总线保持请求信号,输入,高电平有效 HLDA:总线保持响应信号,输出,高电平有效 HOLD信号是系统中

22、的其它总线主控部件向CPU发出的请求占用总线的控制信号。当CPU从HOLD线上收到一个高电平请求信号时,如果CPU允许让出总线,就在当前总线周期完成时,于T4状态从HLDA线上发出一个应答信号,对HOLD请求作出响应。同时,CPU使地址/数据总线和控制总线处于浮空状态,从而让出了总线。 当请求部件完成对总线占用后,CPU就立即使HLDA变低,同时恢复对总线的控制。,数据收发控制信号,输出,三态。 用来控制数据总线驱动器8286的数据传送方向。=1:发送数据=0:接收数据,数据允许信号,输出,低电平有效,三态。 提供给数据总线收发器8286,表示CPU准备发送或接收一个数据。 它常作为数据总线驱

23、动器的三态控制信号。,等待测试信号,输入,低电平有效。 用于多处理器系统中且只有在执行WAIT指令时才使用。 当CPU执行WAIT指令时,每隔5个时钟周期对该引脚进行一次测试:若 1时,CPU将停止取下条指令而进入等待状态,重复执行WAIT指令,直至该信号为0,CPU才继续往下执行被暂停的指令。 等待期间允许外部中断。 WAIT指令可使CPU与外部硬件同步, 相当于外部硬件的同步信号。,CLK,系统时钟,输入 通常与8284A时钟发生器的时钟输出端CLK相连。该时钟信号的低/高之比常采用2:1。 8086 CPU的标准时钟频率为5 MHz。,VCC、GND,电源线VCC接入的电压为+5V10。

24、 两条地线GND均应接地。,2.8086最大模式下引脚的功能定义,当 为低电平时,8086 CPU工作在最大模式。 在最大模式下,许多总线控制信号不是由8086直接产生,而是通过总线控制器8288产生的。 因此,8086在最小模式下提供的总线控制信号的引脚(2431脚)就需重新定义,改作支持最大模式之用。,QS1、QS0,图2.8,总线周期状态信号,输出,三态。 8288总线控制器依据这三个状态信号产生访问存储器和I/O端口的控制命令。,QS1、QS0,指令队列状态信号,输出。 这两个信号组合起来提供了本总线周期的前一个时钟周期中指令队列的状态,以便于外部器件(如8087协处理器)对8086/

25、8088内部指令队列的动作进行跟踪。,总线请求信号输入/总线请求允许信号输出,双向,低电平有效,三态 。 供协处理器发出使用总线的请求信号和接收CPU对总线请求的回答信号。 后者比前者的优先级高。,总线封锁信号,输出,低电平有效,三态。 当 为低电平时,表示CPU独占总线使用权。 信号由指令前缀LOCK产生,而在LOCK后面的一条指令执行完后,便撤销了 信号。 此信号是为避免多个处理器使用共有资源时产生冲突而设置的。,3.8088的引脚特性,8088和8086之间引脚上的不同主要表现在: (1)由于8088 CPU外部一次只传送8位数据,因此其引脚A15A8仅用于输出地址信号,而8086则将此

26、8条线变为双向分时复用的AD15AD8。 (2)8086 CPU上的 信号在8088上变为 (HIGH)信号。这是一条状态输出线,它与 和 信号一起,决定了8088 CPU在最小模式下现行总线周期的状态。HIGH在最大模式时始终为高电平输出。 (3)8088的存储器/外设控制引脚是 。,2.1.4 8086/8088系统的工作模式,1.最小模式组成,当 1时,8086 CPU工作在最小模式之下,即单处理器系统方式。 此时,构成的微型机中只包括一个8086或8088 CPU,且系统总线的所有控制信号都由CPU直接给出,系统中的总线控制逻辑电路被减到最少,适合于较小规模的应用。,图2.9,时钟发生

27、器8284A,地址锁存器8282,数据收发器8286,图2.9 8086最小模式下的典型配置,1)时钟发生器8284A,8086/8088CPU所需的时钟信号由外部的时钟发生器提供。 8284A是Intel公司专为8086设计的时钟信号发生器,能产生8086所需的5MHz系统时钟信号,即系统主频。 8284A除提供恒定的时钟信号外,还对外界输入的准备就绪信号RDY和复位信号进行同步操作。,图2.10,图2.10 8284A与8086的连接图,2)地址锁存器8282,由于8086/8088的部分地址线和数据线采用分时复用的技术,在一个总线周期内总线首先传送地址,然后传送数据。 在每个总线周期的T

28、1状态利用地址锁存允许信号ALE的后沿,将地址信息锁存到地址锁存器内,经锁存后的地址信号可以在整个总线周期保持不变,从而为外部提供稳定的地址信息。 Intel 8282是具有三态缓冲的单向8位锁存器。使用时,将8282的选通信号输入端STB与ALE相连。 当ALE有效时,8086的地址信号被锁存并以同相方式传至输出端,供存储器芯片和I/O接口芯片使用。 8086除了20位地址外, 也要锁存,所以需要3片8282作为锁存器。,图2.11,图2.11 8282锁存器与8086的连接,3)数据收发器8286,当系统中所连接的存储器及I/O设备较多时,为了使系统能稳定工作,可以采用发送器和接收器来增加

29、驱动能力。发送器和接收器简称为收发器,也常称为总线驱动器。 Intel 8286是8位双向三态缓冲器。8286的数据线有两组,A7A0、B7B0,引脚T用来控制数据传输的方向,当T=1时,方向为AB;当T=0时,方向为BA。 是输出允许信号,当它为0时,允许数据传送。 8086的数据总线是16位,如果要选用8286做总线驱动器,则需要2片。 如果是较小规模的最小模式系统,不需要总线驱动器,那么就用CPU的 、 、 组合起来决定系统中数据传输的方式。,图2.12,图2.12 8286收发器和8088CPU的连接,2.最大模式组成,当 0时,8086 CPU工作在最大模式。 在最大模式下,构成的微

30、型计算机中除了有8086 CPU之外,还可以接另外的CPU,如8087、8089等,以构成多处理器系统。 在最大模式系统中,系统的许多控制信号不再由8086直接发出,而是由总线控制器8288对8086发出的控制信号进行变换和组合,从而得到各种系统控制信号。,图2.13,图2.14,1)8086最大模式典型配置,2)8288总线控制器主要引脚信号,2.1.5 8086/8088的操作和时序,1.指令周期与总线周期,指令周期:执行一条指令所需要的时间。不同指令的指令周期在时间上是不相等的。 总线周期:CPU访问一次存储器或I/O接口所需要的时间。一个指令周期由一个或几个总线周期组成。 时钟周期:执

31、行指令的所有操作都是在时钟脉冲的控制下一步一步进行的。时钟周期是CPU的基本时间计量单位。时钟周期由主频决定。,图2.15,额外的时钟周期,图2.15 典型的8086总线周期序列,额外的时钟周期,(1)TW 等待状态 当被写入数据或被读取数据的存储器或外设在速度上跟不上CPU的要求时,就会由存储器或外设通过READY信号线在T3状态启动之前向CPU发一个READY无效信息,表示数据未就绪,于是CPU将在T3之后插入1个或多个附加的时钟周期TW(等待状态)。当存储器或外设完成数据的读/写时,便在READY线上发出有效信号,CPU接到此信号,会自动脱离TW而进入T4状态。 (2)TI 空闲状态 总

32、线周期只用于CPU和存储器或I/O端口之间传送数据和供填充指令队列,如果在1个总线周期之后,不立即执行下1个总线周期,那么,系统总线就处于空闲状态,即执行空闲周期TI。在空闲周期中,可以包含1个时钟周期或多个时钟周期。,图2.15,2.几种基本时序,1)系统的复位和启动操作,RESET引脚至少维持4个时钟周期的高电平信号时,8086/8088复位。如果是初次加电引起的复位,则要求维持不小于50s的高电平。 8086/8088复位后将从内存的FFFF0H处开始执行指令。因此,一般在该处放一条无条件转移指令,转移到系统程序的入口处。这样系统一旦被启动,便自动进入系统程序。,图2.16,图2.16

33、8086的复位操作时序,2)总线读/写操作,可以分为: 总线读操作(CPU从存储器或I/O端口读取数据) 总线写操作(CPU将数据写入存储器或I/O端口),图2.19 最大模式下的总线读操作,图2.20 最大模式下的总线写操作,3)中断响应操作,当8086/8088CPU收到外界从INTR引脚上送来的中断请求信号,并且满足IF=1时,CPU在执行完当前指令后,便执行一个中断响应时序。,图2.21,图2.21 8086中断响应的时序,2.1.6 8086/8088的存储器组织,1.8086存储器组织,奇区和偶区,8086的1MB存储空间实际上分为两个512KB的存储体,分别叫奇存储体(奇区)和偶

34、存储体(偶区) 。 偶存储体与数据总线D7D0相连,该存储体中每个地址均为偶数地址; 奇存储体与数据总线D15D8相连,该存储体中每个地址均为奇数地址。,图2.22,表2.7,图2.22 8086的存储器组织,表2.7 、A0代码表示的奇偶区的选择,信息的存放,存储器的物理组织分成了偶区和奇区,但是,在逻辑结构上,存储单元是按地址顺序排列的,每个字节信息只占一个单元,有唯一物理地址。 相邻的两个字节被称为一个“字” 。 字节信息(8位)在存储器中按顺序排列存放。 字信息(16位)需占用两个连续地址的单元,将每一个字的低字节存放在低地址中,高字节存放在高地址中,并以低地址作为该字的地址。 双字信

35、息(32位,一般作为地址指针),需占用四个连续地址单元,其低位字是被寻址地址的偏移量;高位字是被寻址地址的段基址。,图2.23,图2.23 指令和数据在存储器中的存放,偶字节、奇字节、偶字和奇字,偶字节:字节信息存放单元的地址是偶地址 奇字节:字节信息存放单元的地址是奇地址 偶字(规则字):字信息的低位字节从偶数地址开始存放 奇字(非规则字):字信息的低位字节从奇数地址开始存放 对偶字节、奇字节、偶字的存取可在一个总线周期内完成。 而奇字的存取需两个总线周期:首先作奇字节读/写,然后作偶字节读/写。,图2.23,图2.24,图2.24 各种字节和字的读操作示例,2.8088存储器组织,由于每次

36、传送的是8位数据,不存在奇偶存储体的概念。 存储器的20位地址线A19A0和8根数据线分别和8088CPU的对应地址线与数据线相连。 8088CPU每访问一次存储器只读/写一个字节信息,而读/写一个字需要两次访问存储器才能完成。故在8088系统中,程序运行速度比在8086系统中要慢些。,2.2 32位微处理器80386,1985年10月,Intel公司推出了32位微处理器80386,它与8086、80286相兼容,它是为多用户、多任务操作系统设计的一种高集成度的芯片。 该芯片采用32位数据总线、32位地址总线,直接寻址能力达4GB。,2.2.1 80386的特点,提供32位的指令。 提供32位

37、外部总线接口,最大数据传输速率为32Mbps。 具有片内集成的存储器管理部件MMU,可支持虚拟存储和特权保护 。 具有实地址方式、保护方式和虚拟8086方式。 直接寻址能力达4GB。 通过配用数值协处理器可支持高速数值处理。 在目标码一级与8086、80286芯片完全兼容。,2.2.2 80386内部结构,图2.25,图2.25 80386的功能部件,指令预取部件IPU,指令预取部件IPU将存储器中的指令按顺序取到长度为16B的指令预取队列中,以便在CPU执行当前指令时,指令译码部件IDU对下一条指令进行译码。 一旦指令队列向指令译码部件输送一条指令,指令队列便会空出部分字节,指令预取部件就会

38、向总线接口部件发总线请求,如总线接口部件此时处于空闲状态,则会响应此请求,从存储器取指令填充指令预取队列。,图2.25,指令译码部件IDU,指令译码部件IDU中除了指令译码器外,还有译码指令队列,此队列能容纳3条译好码的指令。 只要译码指令队列有剩余空间,译码部件就会从指令预取队列取下一条指令进行译码。,图2.25,执行部件EU,执行部件EU包括运算器ALU、1个64位的多位移位器加法器和8个32位的通用寄存器,它们共同执行各种数据处理和运算。 执行部件中还包括ALU控制部分和保护测试部分,前者实现有效地址的计算、乘除法的加速等功能,后者检验指令执行中是否符合涉及的存储器分段规则。,图2.25

39、,存储器管理部件,包括分段部件SU和分页部件PU。 分段部件SU管理面向程序员的逻辑地址空间,并且将逻辑地址转换为线性地址; 分页部件PU管理物理地址空间,将分段部件或者指令译码部件产生的线性地址转换为物理地址。,图2.25,2.2.3 80386的寄存器结构,有7类32个寄存器,它们是:,1.通用寄存器,80386有8个32位通用寄存器,它们都是8086中16位通用寄存器的扩展,故命名为EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP。 仍然支持8位和16位操作,用法和8086系统相同,用来存放数据或地址。,2.段寄存器,80386有6个16位段寄存器:代码段寄存器CS、堆栈段

40、寄存器SS、数据段寄存器DS、和三个附加段寄存器ES、FS、GS。 在实方式下,段寄存器的用法和8086相同,只是增加了两个附加段寄存器FS、GS。 在保护方式下,段寄存器称为段选择符,它与描述符配合实现段寻址。,3.指令指针和标志寄存器,指令指针寄存器EIP (32位)用来存放下一条要执行的指令的地址偏移量,寻址范围为4GB。 为了和8086相兼容,EIP的低16位可作为独立指针IP来使用。 32位的标志寄存器EFR是在8086标志寄存器基础上扩展而来。除保留8086CPU的6个状态标志CF、PF、AF、ZF、SF、OF 及三个控制标志TF、IF、DF外,又增加了四个标志IOPL、NT、RF

41、、VM。,图2.26,图2.26 80386的标志寄存器,4.控制寄存器,80386内部有3个32位的控制寄存器CR0、CR2、CR3(CR1未定义),用来保存机器的各种全局性状态,这些状态影响系统所有任务的运行,它们主要是供操作系统使用的。,5.系统地址寄存器,80386有4个系统地址寄存器,用来保护操作系统需要的保护信息和地址转换表信息、定义目前正在执行任务的环境、地址空间和中断向量空间。分别是: GDTR全局描述符表寄存器 IDTR中断描述符表寄存器 TR任务状态寄存器 LDTR局部描述符表寄存器,6.调试寄存器,80386有8个调试寄存器DR0DR7用于设置断点和进行调试。,7.测试寄

42、存器,80386有8个测试寄存器。其中TR0TR5为Intel保留,TR6和TR7用于存储器测试。TR6 是测试命令寄存器,TR7是测试数据寄存器,保存测试结果的状态。,2.2.4 80386的工作方式,有三种工作方式: 实地址方式(real address mode) :系统启动后,80386自动进入实地址方式。此方式下,采用类似于8086的体系结构。 保护方式(protected virtual address mode) :是指在执行多任务操作时,对不同任务使用的虚拟存储器空间进行完全的隔离,保护每个任务顺利执行。 虚拟8086方式(virtual 8086 mode) :是指一个多任务

43、的环境,即模拟多个8086的工作方式。 保护方式是80386最常用的方式,通常开机或复位后,先进入实地址方式完成初始化,便立即转到保护方式。 只有在保护方式下,80386才能充分发挥其强大的功能和本性。而虚拟8086方式是80386中很重要的设计特点,它可以使大量的8086软件有效地与80386保护方式下的软件并发运行。,2.332位微处理器Pentium,2.3.1 Pentium的特点,Pentium是Intel公司于1993年3月推出的第五代系列微处理器,它与8086、80286、80386及80486相兼容。 Pentium采用了多项先进技术:,1.CISC技术和RISC技术,复杂指令

44、集计算机技术CISC(complex instruction set computer)和简化指令集计算机技术RISC(reduced instruction set computer)是基于不同理论和构思的两种不同的CPU设计技术,CISC技术的产生和应用均早于RISC。 Intel公司在Pentium之前的CPU均属于CISC体系,从Pentium开始,将CISC和RISC相结合。 Pentium的大多数指令是简化指令,但仍然保留了一部分复杂指令,而这部分指令采用硬件来实现,因而Pentium吸取了两者之长,实现了更高的性能。,2.超标量流水线技术,所谓超标量,是指一个处理器中有多条指令流

45、水线。 Pentium由“U”和“V”两条指令流水线构成超标量流水线结构,其中,每条流水线都有独立的ALU地址生成逻辑和Cache接口。 在每个时钟周期内可执行两条整数指令,每条流水线分为指令预取、指令译码、地址生成、指令执行和回写5个步骤。 当一条指令完成预取步骤时,流水线就可以开始对另一条指令进行操作,极大地提高了指令的执行速度。,3.重新设计的浮点部件,Pentium内部重新设计了一个增强型浮点运算器FPU(float processor unit)。 在FPU中,采用快速硬件来实现浮点加、乘、除运算,使其浮点运算速度比前一代CPU至少提高3倍以上。 同时,用电路进行固化,用硬件来实现A

46、DD、MUL、INC、DEC、PUSH、POP、JMP、CALL及LOAD等常用指令,使这些常用指令的执行速度大为提高。,4.独立的指令Cache和数据Cache,Pentium片内设置了两个独立的Cache,一个是指令Cache,另一个是数据Cache。 Cache技术通过一种映像机制,使CPU在运行程序时,将原先需要访问主存储器的操作大部分转换为访问高速Cache的操作,有效减少了CPU访问相对速度较低的主存储器的次数,因此,提高了速度。 指令和数据分别使用不同的Cache,使Pentium中数据和指令的存取减少了冲突,提高了性能。,5.分支预测技术,Pentium提供了一个小Cache,

47、称为分支目标缓冲器BTB(branch target buffer),来动态地预测程序的分支操作。 当某条指令造成程序分支时,BTB记下该条指令和分支目标的地址,并用这些信息预测该条指令再次产生分支时的路径,预先从该处预取,保证流水线的指令预取步骤不会空置。 这一机构的设置,可以减少在循环操作时对循环条件的判断所占用的CPU的时间。,6.采用64位外部数据总线,Pentium内部总线和通用寄存器是32位,所以仍属32位微处理器。 但其和内存储器相连的外部数据总线是64位,这使得在一个总线周期中,数据传输量提高了一倍。,2.3.2 Pentium的内部结构,总线部件实现CPU与系统总线的连接,其

48、中包括64位数据线、32位地址线和众多控制信号线。 Pentium采用“U”和“V”两条指令流水线,两者独立运行。这两条流水线中均有独立的ALU,“U”流水线可执行所有的整数运算指令,“V”流水线只能执行简单的整数运算指令和数据交换指令。 Pentium片内设置了两个8KB的相互独立的Cache,减少了指令预取和数据操作之间可能发生的冲突,并可提高命中率。两个Cache分别配置了专用的转换检测缓冲器TLB(translation look-aside buffer),用来将线性地址转换为Cache的物理地址。Pentium的数据Cache有两个端口,分别用于两条流水线,以便能在相同的时间段中分别和两个独立工作的流水线进行数据交换。,图2.27,2.3.2 Pentium的内部结构(续),指令预取部件每次取两条指令,如果是简单指令,并且后一条指令不依赖于前一条指令的执行结果,那么,指令预取部件便将两条指令分别送到“U”流水线和“V”流水线独立执行。 指令Cache、指令预取部件将原始指令送到指令译码器,分支目标缓冲器BTB则在遇到分支转移指令时用来预测转移是否发生。 浮点处理部件FPU主要用于浮点运算,内含专

温馨提示

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

评论

0/150

提交评论