80X86微处理器简介

概述

微处理器:

微处理器简称CPU,是用来实现运算和控制功能的部件,由运算器、控制器和寄存器三部分组成。

运算器用于完成数据的算术和逻辑运算。 CPU内部的寄存器用来暂存参加运算的操作数和运算结果。 控制器通常由指令寄存器、指令译码器和控制电路组成。

80X86微处理器是美国Intel公司生产的系列微处理器。 从1978年推出的16位8086微处理器芯片后,便开始了Intel公司的80X86系列微处理器的生成历史。 

8086CPU

Intel系列的16位微处理器;

单一的+5V电源供电;

双列直插式芯片,40个引脚;

时钟频率5MHz~10MHz。 16条数据总线,可以处理16位数据

20条地址总线,可直接寻址1M字节的存储单元。

在8086推出后不久,为方便原8位机用户,Intel公司很快推出了8088微处理器,其指令系统与8086完全兼容,CUP内部结构仍为16位,但外部数据总线是8位,这样设计的目的主要是为了与原有的8位外围接口芯片兼容。

字长

字长是指在单位时间内同时处理的二进制数据的位数。 字长与数据总线的宽度有关。 字长决定了CPU表示数据的精度。 提高了CPU的相对运行速度。 典型CPU字长:    

8088--------------8bit    

8086--------------16bit    

80386-------------32bit    
Pentiun-----------32bit   64bit

内部工作频率:

内部工作频率又称为内频或主频,表示在微处理器内数字脉冲信号振荡的速度。

与微处理器实际运算能力并没有直接关系。仅是微处理器性能表现的一个方面,不代表微处理器的整体性能。

内部频率的倒数是时钟周期,这是微处理器中最小的时间元素,微处理器每个动作至少需要一个时钟周期

示例:当CPU时钟频率为5MHz时,其总线周期为()。

A.0.8µs     B. 500ns    C.200ns    D.200µs

【解析】 时钟周期T=1/f=1/5MHz   =1/5000 000=0. 2x10-6s =0.2x10-3ms  =0.2µs=200ns

一个总线周期通常由4个T状态组成,即  4×T=4×200ns=0.8µs

外部工作频率

外部工作频率是指由主板为CPU提供的基准时钟频率。早期,微处理器的内频等于外频。 目前,微处理器的内频越来越高,相比之下外频与内频不再是一比一的同步关系了,从而出现了内部倍频技术。内频=外频×倍频。

【示例】 早期,80486 DX-33的内频为33MHz,它的外频也为33MHz。即80486 DX-33以33MHz的速度在内部进行运算,也同样以33MHz的速度与外界交换数据。 80486DX-66外频为33MHz,由于内部2倍频技术的关系,内频为2× 33MHz=66 MHz。

前端总线频率

前端总线(Front  Side  Bus),通常用FSB表示,它是微处理器和外界交换数据的最主要的通道,主要连接主存、显卡等数据吞吐率高的部件,因此前端总线的数据传输能力对计算机整体性能作用很大。如果没足够快的前端总线,再强的CPU也不能明显提高计算机整体速度。

目前PC机上所能达到的前端总线频率有266MHz、333MHz、400MHz、533MHz、800MHz几种,最高到1066MHz。

片内Cache的容量

片内Cache又称CPU Cache,可分为L1 Cache、L2 Cache,部分高端CPU还具有L3 Cache。L1 Cache的容量基本在4~64KB之间,L2 Cache的容量从128KB~2MB不等。L2 Cache是影响CPU性能的关键因素之一。

片内Cache(L1 Cache)与片外Cache(L2 Cache)合起来的命中率可达98%。

为什么要用Cache?

CPU速度快、内存速度慢,为了协调二者的速度,在CPU和内存之间设置一种可高速存储信息的芯片—Cache,把近期可能要用到的指令与数据放在工作速度比主存储器更高(但容量更小)的缓存中,  减少从存储器中取指令和数据的时间,从而进一步提高了处理器的工作效率。

地址总线宽度

地址总线宽度决定了微处理器可以访问的最大物理地址空间。

地址总线宽度决定了CPU能够使用多大容量的主存储器,即地址总线宽度决定了CPU能直接访问的内存单元的个数。假定地址总线是32位,则能够访问232=4GB个内存单元。

【示例】总线宽度分为地址总线宽度和数据总线宽度。其中,地址总线宽度决定了CPU 能够使用多大容量的(    );

 A.Cache     B.主存储器       C.U 盘        D.磁盘

 数据总线宽度       

(1) 是CPU与内存或其他器件之间的数据传送的通道。

(2)数据总线的宽度决定了CPU和外界的数据传送速度。

(3)每条传输线一次只能传输1位二进制数据。如: 8根数据线一次可传送一个8位二进制数据(即一个字节)。

(4)数据总线是数据线数量之和。 数据总线的位数决定CPU单次通信能交换的信息数量

工作电压

工作电压是指电器在额定的电压范围内、正常工作时的电压值。 微处理器工作电压指的是微处理器正常工作所需要的电压。

一般情况下,微处理器应该具有以下四个方面的功能:

1.指令控制。也称程序的顺序控制,使计算机中的控制指令严格按照规定的顺序执行。

2.操作控制。将计算机指令所产生的一系列控制信号分别送往相应部件,从而控制这些部件按指令的要求完成规定工作。

3.时间控制。使计算机中各类控制信号严格按照时间上规定的先后顺序进行操作,以完成时序控制和总线操作。

4.数据加工。完成对数据进行算术运算和逻辑运算等操作,或对其他信息进行处理。

8086/8088CPU的内部结构

8086/8088CPU从功能上划分成两部分:执行单元EU(Execution Unit)和总线接口单元BIU(Bus Interface Unit) 。

两个单元相互独立,分别完成各自操作。两个单元可以并行执行,实现指令取值和执行的流水线操作。

以下CPU中x986架构的有 x86 cpu内部结构_数据

  执行部件

计算机按照取指令→指令译码→操作指令→执行指令→存放结果的顺序执行操作。

EU可不间断地从BIU指令队列中取得指令并连续执行,若指令执行过程中需访问存储器时,只需将要访问的地址送入BIU,等待操作数到来后继续执行,遇到转移类指令时则将指令队列中的后续指令作废,等待BIU重新从存储器中取出新指令代码送入指令队列缓冲器,EU再继续执行指令。

EU无直接对外接口,要译码的指令将从BIU的指令队列中获取,除了最终形成20位物理地址的运算需要BIU完成相应功能外,所有的逻辑运算包括形成16位有效地址的运算均由EU来完成。

执行部件EU的功能

全部指令的译码、执行

与BIU交换数据和地址

对通用和标志寄存器进行管理

执行部件EU的组成

算术逻辑单元

通用寄存器组 

暂存器

标志寄存器

EU控制电路

算术逻辑单元

算术逻辑单元(Arithmetic Logic Unit,ALU): ALU是加工与处理数据的功能部件,可完成8/16位二进制数的算术逻辑运算。运算结果通过内部总线送通用寄存器组或BIU内部寄存器中以等待写到存储器,此外还影响状态标志寄存器的状态标志位。

通用寄存器组

寄存器是CPU内部的高速存储单元,不同的CPU配有不同数量、不同长度的一组寄存器。 由于访问寄存器比访问存储器快捷和方便,所以各种寄存器用来存放临时的数据或地址,具有数据准备、调度和缓冲等作用。 通用寄存器包括4个16位数据寄存器AX、BX、CX、DX,可用来存放16位或8位数据;4个16位地址指针与变址寄存器SP、BP、SI、DI。如图所示:

以下CPU中x986架构的有 x86 cpu内部结构_数据_02

寄存器是CPU内部的高速存储单元,不同的CPU配有不同数量、不同长度的一组寄存器。 由于访问寄存器比访问存储器快捷和方便,所以各种寄存器用来存放临时的数据或地址,具有数据准备、调度和缓冲等作用。 通用寄存器包括4个16位数据寄存器AX、BX、CX、DX,可用来存放16位或8位数据;4个16位地址指针与变址寄存器SP、BP、SI、DI。如图所示:

以下CPU中x986架构的有 x86 cpu内部结构_寄存器_03

 

 暂存器

用于暂时存放参加运算的操作数。可用来暂存指令、 数据。 在CPU的控制部件中,包含的暂存器有指令暂存器 (IR)和程序计数器 (PC)。在CPU的算术及逻辑部件中,包含的暂存器有累加器 (ACC)。

以下CPU中x986架构的有 x86 cpu内部结构_以下CPU中x986架构的有_04

标志寄存器(FLAG) 

标志寄存器也称为程序状态字PSW(Progrom Status Word),有16位,其中有6个状态位和3个控制位。 6 个状态位包括:CF、PF、AF、ZF、SF、OF 3个控制位包括: IF、DF、TF 

1)CF(Carry Flay)进位标志。如果加法时最高位(对字节操作是D7位,对字操作是D15位)产生进位或减法运算时最高位产生借位,则CF=1,否则CF=0

2)PF(Parity Flag)奇偶标志。如果操作结果的低8位中含有偶数个1,PF=1,否则PF=0。

3)AF(Auxiliary Carry Flay)辅助进位标志。如果在加法时D3位有进位或减法时D3位有借位,则AF=1,否则AF=0。

4)ZF(Zero Flag)零标志。如果运算结果各位都是零,则ZF=1,否则ZF=0。

5)SF(Sign Flag)符号标志。它总是和结果的最高位(字节操作时是D7,字操作时是D15)相同。 因为在补码运算时最高位是符号位,所以运算结果为负时,SF=1,否则SF=0。

6)OF(Overflow Flay)溢出标志。当运算结果超出了带符号数所能表示的数值范围,即溢出时,OF=1,否则OF=0。可用来判断符号数运算结果是否溢出。 对于加法运算,如果次高位(数值部分最高位)形成进位加入最高位,而最高位(符号位)相加时(包括次高位的进位)却没有进位输出;或者反过来,次高位没有进位加入最高位,但最高位却有进位输出,都会发生溢出。

标志寄存器(FLAG) )-控制标志

DF(Direction Flag)方向标志:

可以指令预置。 字符串操作指令执行时受它的控制。 该标志可以控制地址向着增大的方向自动增加(DF=0)或减小的方向自动减小(DF=1)

IF(Interupt Flag)中断允许标志:

可用指令预置 当IF=1,则CPU可响应可屏蔽中断请求 当IF=0,则CPU不响应可屏蔽中断请求

TF(Trap Flag)陷阱标志:

用于控制处理器进入单步操作方式,设置TF=0,处理器正常工作,不产生陷阱;设置TF=1,处理器单步执行指令。 单步执行指令是指处理器在每条指令执行结束时,会产生一个编号为1的内部中断(单步中断),利用单步中断对程序进行逐条指令的调试,即单步调试。

EU控制器电路。

它负责从BIU的指令队列缓冲器中去指令、分析指令,然后根据译码器译码结果向EU内部各部件发出控制命令以完成指令功能。

以下CPU中x986架构的有 x86 cpu内部结构_嵌入式硬件_05

 总线接口部件-- BIU 

总线接口单元BIU的功能是负责完成与存储器或I/O设备之间的数据传送。 其具体任务是:BIU要从内存取指令送到指令队列缓冲器;CPU 执行指令时,总线接口单元要配合执行单元从指定的内存单元或外设端口中取数据,将数据传送给执行单元,或者把执行单元的操作结果传送指定的内存单元 或外设端口中

BIU内有4个16位段地址寄存器CS(代码段寄存器)、DS(数据段寄存器)、SS(堆栈段寄存器)和ES(附加段寄存器),16位指令指针IP,6字节指令队列缓冲器,20位地址加法器和总线控制电路。

指令队列缓冲器

8086的指令队列为6个字节,8088的指令队列为4个字节。无论是8086还是8088,都会在执行指令的同时,从内存中取下面一条或几条指令,取来的指令就依次存放到指令队列中。它们采用“先进先出”的原则,按顺序存放,并顺序到EU中去执行。

1)取指令时,每当指令队列缓冲器中存满一条指令时,EU就立即开始执行。

2)指令队列缓冲器中只要空出两个字节(8086)或一个字节(8088),BIU便自动执行取指令操作,直到填满为止。

3)在EU执行指令过程中,指令需对存储器或I/O设备存取数据时,BIU将在执行完现行取指的存储器周期后的下一个存储器周期,对指定的内存单元或I/O设备进行存取操作,交换的数据经BIU由EU进行处理。

4)当EU执行完转移、调用和返回指令时,则要清除指令队列缓冲器,并要求BIU从新的地址重新开始取指令,新取得第一条指令将直接经指令队列送到EU去执行,随后取来的指令将填入指令队列缓冲器。由于BIU和EU是分开并独立工作的,因此在一般情况下,CPU执行完一条指令后就可以执行下一条指令。这种并行重叠操作的特点,提高了总线的信息传输效率和整个系统执行效率。

地址加法器:

8086有20条地址线,但是CPU内部寄存器只有16位,如何用16位寄存器实现20位地址的寻找? 解决方法:分别用16位的段寄存器与16位的偏移量来表示地址。 即各个段寄存器分别用来存放各段的起始地址。由IP提供或由EU按寻址方式计算出寻址单元的16位偏移地址(又称逻辑地址)后,将与左移4位后的段寄存器的内容同时送到地址加法器进行相加,形成一个20位实际地址(又称为物理地址),以实现对存储单元寻址。

段寄存器

4个16位的段寄存器,即代码段寄存器(CS)、数据段寄存器(DS)、堆栈段寄存器(SS)和附加段寄存器(ES)与地址加法器组合,用于形成存储器物理地址,完成从16位的存储器逻辑地址到20位的存储器物理地址的转换运算。

指令指针寄存器(IP)

指令指针寄存器IP,用于控制程序中指令的执行顺序。 正常运行时,IP中含有BIU要取的下一条指令的偏移地址,一般情况下,每从内存中存取一次指令码,IP就自动加1,从而保证指令的顺序执行。 IP实际上是指令机器码存放内存单元的地址指针,IP的内容可以被转移类指令(如JMP)强迫改写,以改变程序执行的顺序。

内部暂存器

用于内部数据的暂存,该部分对用户透明,在编程时不予理会,用户无法访问。

总线接口控制逻辑。

总线控制逻辑发出总线控制信号,实现存储器的读/写控制和I/O的读写控制。它将CPU内部总线与外部总线相连,是CPU与外部电路进行数据交换的路径。 总线控制逻辑8086通过20条引脚线分时传送20位地址线、16位数据和4位状态信息。

8086/8088包括四个16位数据寄存器,两个16位指针寄存器,两个16位变址寄存器,一个16位指令指针寄存器,四个16位段寄存器,一个16位标志寄存器。总共有14个寄存器,这14个寄存器分成四组。

以下CPU中x986架构的有 x86 cpu内部结构_单片机_06

数据寄存器 

执行单元EU中有4个16位数据寄存器AX、BX、CX和DX。每个数据寄存器分为高字节H和低字节L,它们均可作为8位数据寄存器独立寻址,独立使用。 数据寄存器是用在算术运算或逻辑运算指令中,用来进行算术逻辑运算。在有些指令中有特定的用途:如AX作累加器;BX作基址寄存器,在查表指令XLAT中存放表的起始地址;CX作计数寄存器,在使用带有重复前缀(如REP)的数据串操作指令中用来存放数据串元素个数;DX作数据寄存器,在字的除法运算指令DIV中存放余数。这些寄存器在指令中的功能是被隐含使用的。

以下CPU中x986架构的有 x86 cpu内部结构_嵌入式硬件_07

以下CPU中x986架构的有 x86 cpu内部结构_寄存器_08

 

指针寄存器和变址寄存器 

指针寄存器是指堆栈指针寄存器SP和堆栈基址指针寄存器BP,简称为P组。变址寄存器是指源变址寄存器SI和目的变址寄存器DI,简称为I组。它们都是16位寄存器,一般用来存放偏移地址。

指针寄存器SP和BP都用来指示存取位于当前堆栈段中的数据所在的地址,但SP和BP在使用上有区别。入栈(PUSH)和出栈(POP)指令是由SP给出栈顶的偏移地址,故称为堆栈指针寄存器。而BP则是存放位于堆栈段中的一个数据区基地址的偏移地址,故称为堆栈基址指针寄存器

以下CPU中x986架构的有 x86 cpu内部结构_嵌入式硬件_09

以下CPU中x986架构的有 x86 cpu内部结构_数据_10

 

控制寄存器 

8086微处理器的控制寄存器主要有指令指针寄存器(IP)和标志寄存器(FLAGS)。

段寄存器

代码段寄存器CS(Code Segment) 存放当前正在运行的程序代码所在段的段基址,表示当前使用的指令代码可以从该段寄存器指定的存储器段中取得,相应的偏移量则由IP提供。 数据段寄存器DS(Data Segment) 指出当前程序使用的数据所存放段的最低地址,即存放数据段的段基址。 堆栈段寄存器SS(Stack Segment)   指出当前堆栈的底部地址,即存放堆栈段的段基址。 附加段寄存器ES(Extra Segment) 指出当前程序使用附加数据段的段基址,该段是串操作指令中目的串所在的段。

8086CPU有20根地址线,最大可寻址内存空间为1MB。而8086的寄存器只有16位,指令指针(IP)和变址寄存器(SI、DI)也是16位的。用16位的地址寻址1MB空间是不可能的。所以就要把内存分段,也就是把1MB空间分为24,即16个段,每段不超过64KB(216,16位数据线就可以寻址)。在8086中设置4个16位的段寄存器,用于管理4种段:CS是代码段,DS是数据段,SS是堆栈段,ES是附加段。把内存分段后,每一个段就有一个段基址,段寄存器保存的就是这个段基址的高16位,这个16位的地址左移四位(后面加上4个0)就可构成20位的段基址。

以下CPU中x986架构的有 x86 cpu内部结构_寄存器_11