微机原理 第二章.docx
- 文档编号:24636956
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:52
- 大小:642.09KB
微机原理 第二章.docx
《微机原理 第二章.docx》由会员分享,可在线阅读,更多相关《微机原理 第二章.docx(52页珍藏版)》请在冰豆网上搜索。
微机原理第二章
第二章微处理器的性能与结构
重点:
1.微处理器的各组成部分
2.程序执行的流程
3.时钟、周期和时序
4.存储器结构体系和I/O端口
2.1微处理器概述
微处理器(CPU)是组成微型计算机或微处理器系统的核心,包含运算器和控制器,除执行算术运算和逻辑运算之外,还承担着控制整个计算机系统的责任,使它能够高效、自动和协调地完成各种系统管理和操作。
CPU的性能基本上确定了微计算机的功能。
2.1.1微处理器的基本功能
微处理器要控制整个程序的执行,它必须具有以下基本功能:
1、程序控制
程序执行顺序称为程序控制。
由于程序是一个指令序列,这些指令的相互顺序不能任意颠倒,必须严格按程序规定的顺序进行。
因此,保证机器按规定的顺序执行是微处理器的首要任务。
2、操作控制
指令功能的完成往往是由一系列操作信号的组合来实现的。
因此,微处理器分析并产生每条指令的操作信号,将这些信号送往相应的部件,从而控制这些部件按指令的要求进行相应的操作。
3、时间控制
对各种操作实施时间上的控制称为时间控制。
这是因为在计算机中的各种指令的操作信号是在系统时序的控制之下发出的。
而一条指令的整个执行过程所花费的时间也在系统的严格控制之下。
因为只有这样,计算机才能够有条不紊地自动工作。
4、数据加工
所谓数据加工,就是对数据进行算术运算和逻辑运算的处理。
微处理器的最根本任务也就是有效地、高速地完成对数据的加工处理。
2.1.2微处理器的主要性能
1、微处理器的字长
微处理器的字长是指它在交换、加工和存放信息时,一次传送或处理的二进制的位数。
字长长的机器处理数据的精度和速度都更高。
因此,字长是微处理器最重要的指标之一。
字节是通用基本单元的长度,由8个二进制位(Bit)组成。
图2-1示出字节和字的结构。
字节右边的位,称为最低位(LSB),即位0,左边的位称为最高位(MSB),即位7。
在16位的字中,右边8位称低位字节,左边8位称高位字节。
一个16位的数,用8位微处理器,需进行两次传送、处理;而用16位微处理器,只需进行一次。
这就是字长长的机器在处理速度上带来的优越性。
字长由微处理器对外数据通路的数据总线条(位)数决定。
同时,字长又确定了微处理器的内部结构。
常称的16位微处理器,是指数据总线条数和内部寄存器的位数均为16位;而对外数据总线只有8条的16位内部结构又称准16位微处理器(如Intel8088CPU)。
图2-1字节和字
2、指令数
指令是指挥计算机完成某种操作的命令。
❑CISC----ComplexInstructionSetComputer
❑RISC----ReducedInstructionSetComputer
RISC的特点:
❑采用功能简单、数量有限的指令系统;
❑大量通用的寄存器,通过编译技术优化寄存器的使用;
❑通过优化指令流水线提高微处理器性能
早期微处理器的功能强弱是以能执行指令的多少来衡量,微处理器指令数愈多,表示它的功能愈强。
现在,指令数一般不作为衡量微处理器功能强弱的标准。
32位的80x86从80486开始借鉴RISC的思想。
使CISC的微处理器融入RISC技术。
3、基本指令执行时间和平均指令执行时间
基本指令执行时间=寄存器加法指令执行时间
平均指令执行时间=∑所有指令的执行时间/所有指令数。
微处理器中的各种指令由于完成的操作不同,所需花费的时间也不一样。
为了取一种衡量处理器速度的标准,选用了各种微处理器都设有的一条指令——寄存器加法指令作为基本指令,它的执行时间就称为基本指令执行时间。
基本指令执行时间由该微处理器的时钟周期及所用的时钟周期数决定,此时间愈短,表示微处理器的工作速度愈高。
随着计算机的发展,指令系统越来越复杂,特别是复杂指令系统计算机,仅用寄存器加法指令的执行时间来衡量已经不科学,因而采用平均指令执行时间作为参考标准。
4、能够构成的最大存储空间
----取决于地址线的根数。
微处理器采用寻址的方式访问内存单元。
最大存储空间是指由该微处理器构成的系统所能访问(读/写)的存储单元总数。
该总数由系统所能提供的地址总线的条数决定.
在X86系列CPU中,8位微处理器地址总线有16条,能编出的地址码总数为216=65536种,表示由它构成的存储空间有65536个单元号,简称为64KB;16位微处理器有20条地址总线,为220=1048576,简称为1MB;32位微处理器有32条地址总线,它能访问的最大空间为4GB。
5、多处理器系统
❑数值数据协处理器----8087❑I/O通道控制器----8089
从80486开始,出现片内的数值数据协处理器,从而大大提高了浮点数据处理能力。
若微处理器具有协处理器接口,就可用来构成多处理器系统。
这样,主处理器的某些任务——如:
浮点数据运算(数据协处理器)、输入/输出任务(通道控制器或通道处理机)等,交给协处理器去完成,使主处理器从繁琐的事务处理中解脱出来,主处理器与协处理器采用并行工作方式,因而整个系统的性能将成倍的增加,但在16位微处理器之前的8/4位微处理器并不具有多处理器扩展性能。
6、其他
采用不同工艺制造的微处理器芯片,性能上有较大差别,信号电平和使用环境的要求也不同,选用时应注意。
其他还有控制功能(包括中断、等待、保持和复原等)、封装形式、电源种类、功耗等,也是选用时应注意的。
2.2微处理器的内部结构
图2-28086CPU内部结构
v执行单元EU(ExecutionUnit)
由ALU、通用寄存器组、EU控制单元、状态标志寄存器等构成,它负责指令的译码、执行和数据的运算。
v总线接口单元(BusInterfaceUnit)
由指令队列缓冲器、专用寄存器组、地址加法器和总线控制逻辑等构成。
该单元主要功能是形成访问存储器的物理地址,访问存储器取得指令并暂存到指令队列中等待执行,访问存储器或I/O端口以读取操作数参与EU运算,或存放运算结果等。
2.2.1执行部件EU
执行部件EU只负责分析并执行指令,而不与外部总线打交道。
EU执行的指令从BIU的指令队列缓冲器取得,经控制单元译码并执行,将所得结果数据或执行指令所需的数据由EU向BIU发出请求,由BIU向存储器或外部设备存入或读取。
1、运算器
运算器由下列部分组成,负责所有运算。
除此之外,通用寄存器也将协助其工作。
❑十六位算术逻辑单元ALU(ArithmeticandLogicUnit)
核心是二进制加法器
作用:
(1)进行所有的算术运算和逻辑运算;
(2)按指令的寻址方式计算出寻址单元的十六位的有效地址EA(EffectiveAddress),并将此有效地址(偏移地址)送到BIU中形成一个二十位的实际地址(PhysicalAddress),以对1M字节的存储空间寻址。
❑16位的状态标志寄存器Flags
该寄存器用来存放由算术运算指令、逻辑运算指令和测试结果所建立的特征状态标志,除此之外,还存放一些控制系统操作的控制标志。
6个状态标志、3个控制标志
❑数据暂存寄存器
协助ALU完成运算,对参加运算的数据进行暂存。
2、通用寄存器组
通用寄存器组包括8个16位的寄存器,其中AX、BX、CX、DX为数据寄存器,既可以寄存16位数据,也可分成两半,分别寄存8位数据;
SP为堆栈指针寄存器,用于堆栈操作时,确定堆栈在内存中的位置,由它给出堆栈栈顶的偏移量;
BP为基址指针寄存器,用来存放位于堆栈段中的一个数据区基址的偏移量;
SI和DI为变址寄存器,SI用来存放源操作数地址的偏移量,DI用来存放目的操作数地址的偏移量。
所谓偏移量是相对于段起始地址(或称段首址)的距离。
3、EU控制电路
接收从BIU的指令队列中来的指令,经过译码,翻译形成各种控制信号,对EU的各个部件实现在规定的时间完成规定的操作。
EU中所有的寄存器和数据通路都是十六位的,可实现数据的快速传送。
2.2.2总线接口部件BIU
总线接口部件BIU是专门负责和总线打交道的接口部件,它根据EU的请求,执行8086CPU对存储器或I/O接口的总线操作,完成其数据传送。
BIU由下列几个部分组成:
1、指令队列缓冲器
可同时存放6个字节的指令。
采用“先进先出”原则
指令队列缓冲器是用来暂时存放从程序存储区中取来的一组指令的暂存单元,由六个8位的寄存器组成,最多可存入6个字节的指令码,采用“先进先出”原则,顺序存放,依次地被取到EU中去执行。
其工作将遵循以下原则:
(1)取指令时,取来的指令存入指令队列缓冲器。
当缓冲器存入第一条指令时,EU就开始执行;
(2)指令队列缓冲器中只要有一个字节为空,BIU便自动执行取指令操作,直到填满为止;
(3)在EU执行指令过程中,若需要对存储器或I/O接口进行数据存取时,BIU将在执行完现行取指令周期后的下一个存储器周期,对指定的存储单元或I/O接口进行存取操作,交换的数据经BIU交EU进行处理;
(4)当EU执行转移、调用和返回指令结束时(即程序的执行发生跳转),将清空指令队列缓冲器,并要求BIU从新的地址重新开始取指令,新取的第一条指令将直接送去EU执行,随后取来的指令填入指令队列缓冲器。
特点:
取指和执行指令重叠并行。
由于执行部件EU和总线接口部件BIU是两个独立的工作部件,它们可按并行方式重叠操作,在EU执行指令的同时,BIU也在进行取出指令、读取操作数或存入结果的操作。
这样,提高了整个系统的执行速度,并充分利用了总线,实现最大限度的信息传输。
2、16位指令指针寄存器IP(InstructionPointer)
★IP总是保存着EU要执行的下一条指令的偏移地址。
程序计数器IP是一个非常重要的寄存器,它随时跟踪着程序的执行。
由于8086取指令和执行指令是同时进行的,为保证执行指令的需要,实际上BIU的取指令操作总是提前的,为了保证在遇到调用子程序或中断时能正确地记录程序的返回地址,就需要用一个专门的寄存器来保存EU将要执行的下一条指令的偏移地址,IP就是这样一个寄存器。
★程序不能直接对指令指针寄存器IP进行存取。
特点:
自动修正
程序计数器IP的内容不能直接由程序进行存取,但可以进行修改,其修改发生在下列情况下:
(1)程序运行中自动修正,使之指向将要执行的下一条指令的地址;
(2)转移、调用、中断和返回指令能改变IP的值,转移指令直接修改,而调用、中断和返回指令则将原先IP的值(或者称为断点地址)压入堆栈保存,或由堆栈弹出恢复原值。
3、地址产生器和段寄存器
由于存放地址信号的IP和通用寄存器都只有16位,若用它们直接编址时,其编址范围只能达到64KB,仅为8086访存空间1MB范围中的一个段,因此,必须设置能够产生20位实际地址PA(或物理地址)的机构,8086采用了地址产生器∑。
段寄存器是用来存放段的首地址的。
8086设有四个段寄存器:
代码段寄存器CS,数据段寄存器DS,堆栈段寄存器SS和附加段寄存器ES,分别用来存放代码段首地址、数据段首地址、段堆栈首地址和附加段首地址。
代码段存放程序指令,程序代码超过64KB时,需要分成几个段存放。
CS中存放的是现在正在执行的程序段的段地址。
数据段用于存放当前使用的数据。
需要第二个数据段时可以使用附加段。
堆栈段是内存中的一块存储区,用来存放专用数据。
SS存放堆栈段的段基址,SP存放当前堆栈栈顶的偏移地址。
编程时,程序和各种不同类型的数据分别存放在不同的逻辑段中,它们的段地址存放在段寄存器中,段内的偏移地址存放在指针寄存器或变址寄存器中。
图2-3示出实际地址PA产生的过程。
例1:
要产生执行指令的实际地址PA,就将IP中的16位指令指针与代码段寄存器CS左移四位后的内容在地址产生器∑中相加;
例2:
要产生某一操作数的实际地址PA,则应该首先由ALU计算出该操作数的16位偏移地址EA,然后在地址产生器∑中与数据段寄存器DS左移四位后的内容相加。
其余两个段——堆栈段和附加段中数据的PA也由同样的方法产生。
概括起来,PA的计算公式为:
PA=(段寄存器)*16+偏移地址
其中的偏移地址和段寄存器的内容又称为逻辑地址。
图2-3实际地址PA的产生过程
4、总线控制逻辑
8086分配20条总线,用来传送16位数据信号、20位地址信号和4位状态信号S6~S3,这就必须要分时进行传送(分时复用)。
总线控制逻辑的功能,就是以逻辑控制方法实现上述信号的分时传送的。
2.38086的寄存器结构
图2-4示出了8086CPU的寄存器结构,包括十三个16位的寄存器和一个16位的状态标志寄存器。
这里,着重讨论每个寄存器的用途,以便在指令中更恰当地使用它们。
寄存器按功能分为以下几组:
2.3.1通用寄存器组
8086CPU中设置了较多的通用寄存器,是一种面向寄存器的体系结构,操作数据可以直接存放在这些寄存器中,因而可减少访问存储器的次数,使用寄存器的指令长度也较短。
这样,既提高了数据处理速度,也减少了指令存放的内存空间。
8086微处理器指令执行部件中有8个16位通用寄存器,它们分为两组:
通用数据寄存器AX、BX、CX、DX,存放数据或地址;可以分开使用,8位不能存放地址。
150
AX累加器
BX基数
CX计数
DX数据
通用寄存器组
堆栈指针
基址指针
源变址
目的变址
指令指针
状态标志
代码段寄存器
数据段寄存器
堆栈段寄存器
附加段寄存器
图2-48086的寄存器结构
1、数据寄存器
·AX累加器(Accumulator):
使用频率最高,用于算术运算,逻辑运算以及与外设传送信息等;隐含使用包括字乘、字除、字I/O等;
·BX基址寄存器(BaseaddressRegister):
常用于存放内存偏移地址,隐含使用:
查表转换指令;
·CX计数器(Counter):
作为循环和串操作等指令的隐含计数器;
·DX数据寄存器(Dataregister):
存放数据,隐含使用:
字乘、字除、间接I/O操作;
·AL隐含使用:
字节乘、字节除、字节I/O、查表转换、十进制运算;
·AH隐含使用:
字节乘、字节除;
·CL隐含使用:
多位移位和循环移位。
数据寄存器主要用来存放参加运算的操作数或运算的中间结果,以减少访问存储器的次数。
多数情况下,数据寄存器被用在算术运算或逻辑运算指令进行算术逻辑运算。
在有些指令中则有特定的隐含用途,如AX作累加器用;BX作基址寄存器,在查表转换指令XLAT中存放表的首址;CX作计数寄存器,控制循环的次数;DX作数据寄存器,如在字除法运算指令DIV中存放余数。
这些寄存器在指令中的隐含使用归纳如表2-2所示。
表2-2数据寄存器的隐含使用
寄存器
操作
寄存器
操作
AX
字乘、字除、字I/O
CL
多位移位和循环移位
AL
字节乘、字节除、字节I/O、查表转换、十进制运算
DX
字乘、字除、间接I/O
SP
BP
堆栈操作
AH
字节乘、字节除
BX
查表转换
SI
DI
数据串操作
CX
数据串操作、循环控制
2、指针和变址寄存器
主要用来存放操作数的偏移地址(即操作数的段内地址)。
SP——堆栈指针寄存器,存放栈顶的偏移地址。
自动修正,类似于IP,但可以读取,可以被初始化;不宜人工修改。
BP——基址指针寄存器,存放堆栈段中的一个数据区基址的偏移地址。
可自由指向堆栈空间某单元。
一般利用BP访问堆栈中存入的数据。
SI和DI用来存当前数据段中数据的偏移地址。
SI——源变址寄存器,存放源操作数地址的偏移量;
DI——目的变址寄存器,存放目的操作地址的偏移量。
如在数据串操作指令中,要求将被处理的源数据串的偏移地址放入SI寄存器中,而将处理后得到的结果数据串的偏移地址则放入DI寄存器中,传送过程中自动加1或减1。
2.3.2段寄存器
代码段寄存器CS是用来给出当前的代码段,CPU执行的指令将从代码段取得;
堆栈段寄存器SS给出程序当前所使用的堆栈段,堆栈操作的执行地址就在这个段中;
数据段寄存器DS指向程序当前使用的数据段,一般来说,程序所用的数据放在DS中;
附加段寄存器ES指出程序当前使用的附加段,它通常也用来存放数据,典型用法是用来存放处理以后的结果数据,或用于串操作。
8086用一组段寄存器将这1MB存储空间分成若干个逻辑段,每个逻辑段的长度最大为64K字节。
2.3.3标志寄存器
8086CPU的标志寄存器Flags是一个16位寄存器,用了其中的九个位作标志位,状态标志位为六个,控制标志位为三个,如图2-5所示。
其用途如下:
0
87
15
图2-58086的状态标志寄存器Flags
1、状态标志位
状态标志位用来反映EU执行算术运算或逻辑运算后果的状态,共六个状态标志:
(1)进位(或借位)标志CF(CarryFlag):
当CF=1,表示运算结果的最高位上产生了一个进位或借位;CF=0,则无进位或借位产生;
(2)辅助进位标志AF(AuxiliaryCarryFlag);当AF=1,表示运算结果的低4位产生了一个进位或借位;AF=0,则无此进位或借位;
(3)溢出标志OF(OverflowFlag):
当OF=1,表示带符号数在算术运算后产生了算术溢出;OF=0,则无溢出;
(4)零标志ZF(ZeroFlag):
当ZF=1,表示运算结果为零;ZF=0,则运算结果不为零;
(5)符号标志SF(SignFlag);当SF=1,表示带符号数的运算结果为负数,即结果的最高位为1;SF=0,则运算结果为正数,最高位为0;
(6)奇偶标志PF(ParityFlag):
当PF=1,表示运算结果低8位中有偶数个1;PF=0,则运算结果低8位中有奇数个1。
2、控制标志位
控制标志位是用来控制CPU操作的,它由指令设置或清除。
共三个控制标志;
(1)方向标志DF(DirectionFlag);用来控制数据串操作指令的步进方向。
用设置方向标志指令STD将DF标志位置1后,数据串操作指令将以地址的递减顺序对数据串进行处理;若用清除方向标志指令CLD使DF置0,则数据串操作指令将以地址递增顺序对数据串进行处理;
(2)中断允许标志IF(InterruptEnableFlag):
若用设置中断标志指令STI将IF置1,称为开中断,即允许CPU接受外部从INTR引脚发来的中断请求;若用清除中断标志指令CLI将IF清除为0,表示关中断,不能接受经INTR发来的可屏蔽中断请求。
应当提醒的是:
中断允许标志IF的设置不影响非屏蔽中断NMI请求,也不影响CPU响应内部产生的中断请求;
(3)陷阱标志TF(TrapFlag):
8086为使程序调试方便而设置了TF。
若设置TF为1,8086进入单步工作方式。
在这种方式下,每执行完一条指令,就自动地产生一个内部中断,转去执行一个中断服务程序,将每条指令执行后CPU内部寄存器的情况显示出来,以便检查程序;反之,当TF清除,8086仍正常的执行程序。
状态标志的状态可用调试程序DEBUG将它们显示出来,所表示的符号如表2-3所示。
表2-3Flags中的状态标志的状态表示符号
标志
为1的符号
为0的符号
OF
DF
IF
SF
ZF
AF
PF
CF
OV
DN
EI
NG
ZR
AC
PE
CY
NV
UP
DI
PL
NZ
NA
PO
NC
2.3.4指令指针寄存器IP
16位的指令指针寄存器IP用来指示当前指令在代码段的偏移位置。
微处理器利用CS和IP取得要执行的指令,然后修改IP的内容使之指向下一条指令的内存地址。
即微处理器通过CS和IP寄存器来控制指令序列的执行流程。
代码段由微处理器自动维护,IP寄存器就是专用寄存器,存放EU将要执行的下一条指令的偏移地址,以实现对代码段指令执行时的跟踪。
2.48086微处理器的外部引脚特性
8086CPU采用四十条引脚的双列直插(DIP)封装,如图2-6所示。
由于有16条数据总线,20条地址总线,一些引脚必须分时复用。
8086有两种不同的工作模式,功能的转换由33号引脚(
)进行控制。
当
=1(高电平)时,8086工作于最小方式MN,24~31号引脚直接提供出8086的控制总线信号,如图中括号外的信号;
图2-68086CPU芯片的引脚图(括号中为最大方式时引脚名)
当
=0时,24~31号引脚提供的信号如图中括号内所示,这些信号还需经外接的8288总线控制器转换,才能提供给系统作为控制总线信号使用。
可将8086的引脚按特性分为四类:
2.4.1地址/数据复用总线(AD15~AD0双向、三态)
访问存储器或I/O接口时,首先用来发送地址信号,(由外接的地址锁存器锁存下来)。
然后用来传输数据(双向三态输入输出)。
当进行存储器直接存取(DMA)时,这类总线处于浮空状态。
2.4.2地址/状态复用总线(A19/S6、A18/S5、A17/S4、A16/S3输出、三态)
A19~A16是地址信号的高4位,和A15~A0一样,也是应该首先发出的;
A19~A16在访问存储器时才有用,也需由外接地址锁存器进行锁存后,向系统提供20位地址信号。
访问I/O接口时,则不使用,即A19~A16=0。
S6~S3是状态信号,可在输出地址信号之后输出,因此,这4条总线也可采取分时复用。
4位状态信号有不同的用途:
(1)S4、S3用来指示当前使用哪一个段寄存器——00指示使用ES;01指示使用SS;10指示使用CS;11指示使用DS。
(2)S5用来指示中断允许标志IF的状态。
(3)S6始终保持低电平。
当进行DMA时,S6~S3进入浮空状态。
2.4.3控制总线及其信号意义
以下8条控制线对8086不管工作在哪种(最大、最小)方式下,都是存在的。
1、
/S7
高8位数据总线允许/状态线(输出,三态)。
这是分时复用线,在访问存储器或I/O接口的总线周期中,首先输出
控制信号,用以对以字节组织的存储器或I/O接口实现高位或低位字节的选择;
非数据传送时,该引脚用作S7,输出状态信息S7。
AD0
总线使用情况
0
0
16位数据总线上进行字传送
0
1
高8位数据总线上进行字传送(奇体)
1
0
低8位数据总线上进行字传送(偶体)
1
1
无效
2、
读控制信号(输出,三态,低电平有效)。
当
=0时,表示8086CPU执行存储器读操作或I/O读操作,DMA时,浮空。
3、READY
准备就绪信号(输入,高电平有效)。
该信号是由所访问的存储器或者I/O接口发来的响应信号。
当READY有效时,表示内部存储器或I/O接口准备就绪,马上可进行一次数据传输。
CPU在每个总线周期中对READY信号进行采样,若检测到为无效的低电平时,就会自动插入等待状态TW,直到READY变为高电平后,才进行数据传输,结束该次总线周期。
4、
测试信号(输入,低电平有效)。
该信号和等待指令WAIT结合使用。
在CPU执行WAIT指令时,进入等待处于空转状态;当8086的
信号为有效电平时。
等待状态结束,继续往下执行WAIT后面的指令。
等待过程中允许外部中断,中断返回后到WAIT指令的下一条命令。
5、INTR
可屏蔽中断请求信号(输入,高电平有效)。
8086在每一个指令周期的最后一个状态去采样此信号;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理 第二章 微机 原理 第二