《微处理器体系与结构.ppt》由会员分享,可在线阅读,更多相关《微处理器体系与结构.ppt(54页珍藏版)》请在三一办公上搜索。
1、第二章微处理器体系与结构,第一节 Intel微处理器的概要历史,8086/8088初始芯片时钟频率为4.77MHz 内部数据总线和外部数据总线都是16位 地址总线为20位,可最大寻址1MB的存储空间80386 80 x86家族的第一个32位处理器 内部和外部数据总线都是32位 地址总线也是32位,可寻址高达4GB内存 具有实模式和保护模式外,还增加了一种叫虚拟86的工作方式,可以通过同时模拟多个8086处理器来提供多任务能力,第二节 Intel 8086/8088微处理器的结构,分三部分:一、执行单元与总线接口单元二、8086/8088的寄存器结构三、8086/8088的存储器组织,一、执行单
2、元与总线接口单元,注:8086 CPU数据总线16位,指令队列为六个字节;8088 CPU数据总线八位,指令队列为四个字节。,(一)、总线接口单元BIU(Bus Interface Unit),功能:负责与 Memory、I/O 端口传送数据。取指令时,从存储器指定地址取出指令送入指令队列排队。执行指令时,根据EU命令对指定存储器单元或I/O端口存取数据。组成4 个段地址寄存器(CS、DS、ES、SS)16位指令指针寄存器IP20位的地址加法器(16d段地址+偏移地址物理地址)6字节(8086)或4字节(8088)的指令队列总线控制电路:处理器与外界总线联系的转接电路。括三组总线:20 位地址
3、总线,8 位双向数据总线,一组控制总线。,(一)、总线接口单元BIU(Bus Interface Unit)(cont.),指令队列8086 的指令队列为6个字节,8088 的指令队列为4个字节。不论是8086还是8088都会在执行指令的同时从内存中取下一条或几条指令,取来的指令放在指令队列中,使 BIU 具有预取指令的功能,是一种先进先出(FIFO)的数据结构。指令执行顺序顺序指令执行:指令队列存放紧接在执行指令后面的那一条指令。执行转移指令:BIU 清除指令队列中的内容,从新的地址取入指 令,立即送往执行单元,然后再从新单元开始重新填满队列。,(二)、执行单元EU(Execution Un
4、it),功能 执行指令,进行全部算术逻辑运算、完全偏移地址的计算向总线接口单元BIU提供指令执行结果的数据和偏移地址,并对通用寄存器和标志寄存器进行管理。组成:4个通用寄存器:AX、BX、CX、DX4个专用寄存器:BP、SP、SI、DI标志寄存器(PSW):9个标志位,其中6个条件标志位用于存放结果状态,算术逻辑单元:16 位加法器,用于对寄存器和指令操作数进行算术或逻辑运算,EU 控制系统:接受从总线接口单元的指令队列中取来的指令代码,对其译码和向 EU 内各有关部分发出时序命令信号,协调执行指令规定的操作。,(三)、流水线工作方式,8086/8088取指部分与执行部分是分开的。在一条指令的
5、执行过程中可以取出下一条(或多条)指令,指令 在指令队列中排队;在一条指令执行完成后,就可以立即执行下一条指令,减少CPU为取指令而等待的时间,提高CPU的利用率和整个运行速度。8086/8088微处理器:BIU和EU分开,取指和执行可以重迭,大大减少了等待取指所需的时间,提高CPU的利用率。,(三)、流水线工作方式(cont.),对于8080与8085及较早的8位微处理器:程序执行由取指令和执行指令的循环来完成的,每条指令执行完后CPU必须等待到下条指令取出来后才能执行。,二、8086/8088的寄存器结构,二、8086/8088的寄存器结构(cont.),1、通用寄存器通用寄存器包括:数据
6、寄存器、地址指针寄存器、变址寄存器数据寄存器包括:AX、BX、CX、DX 地址指针寄存器包括:SP、BP 变址寄存器包括:SI、DI 2、段寄存器段寄存器包括:CS、SS、DS、ES3、控制寄存器 控制寄存器包括:IP、PSW,(一)、通用寄存器,(1)、数据寄存器AX:(Accumulator)作为累加器。它是算术运算的主要寄存器,所有I/O指令都使用这一寄存器与外部设备交换数据。BX:Base用作基址寄存器使用。在计算内存储器地址时,经常用来存放基址。CX:Count可以作计数寄存器使用。在循环LOOP指令和串处理指令中用作隐含计数器。DX:Data可以作为数据寄存器使用。一般在双字长乘除
7、法运算时,把DX和AX组合在一起存放一个双字长(32位)数,DX用来存放高16位;对某些I/O操作DX可用来存放I/O的端口地址(口地址 256)。,(一)、通用寄存器(cont.),(2)、地址指针与变址寄存器SP、BP、SI、DI 四个16位寄存器。以字为单位在运算过程中存放操作数,经常用以在段内寻址时提供偏移地址。SP(stack pointer)堆栈指针寄存器用来指示栈顶的偏移地址,必须与SS段寄存器联合使用确定实际地址。BP(base pointer)基址指针寄存器可以与SS寄存器联合使用来确定堆栈段中某一存储器单元地址。变址寄存器(SI、DI)SISource Index Regi
8、ster 源变址寄存器。DIDestination Index 目的变址寄存器。使用场合:常用于变址寻址。一般与DS联用,用来确定数据段中某一存储单元的地址,SI,DI具有自动增量和自动减量功能.,(二)、段寄存器,段寄存器:4个16位段寄存器CS、DS、SS、ES。用来识别当前可寻址的四个段,不可互换的使用。CSCode Segment Register 代码段寄存器用来识别当前代码段(程序一般放在代码段)。DSData Segment Register数据段寄存器用来识别当前数据段寄存器。SSStack Segment Register堆栈段寄存器,用来识别当前堆栈段。ESExtra Se
9、gment Register附加段寄存器,用来识别当前附加段。,(三)、控制寄存器,控制寄存器:IP、PSWIPInstruction Pointer指令指针寄存器用来存储代码段中的偏移地址;程序运行过程中IP始终指向下一次要取出的指令偏移地址IP要与。CS寄存器相配合才能形成真正的物理地址。PSW(Processor States Word Program)程序状态字寄存器,16位寄存器。由条件码标志FLAG、控制标志构成。只用了其中9位,6位条件码标志,3位控制标志。,(三)、控制寄存器(cont.)条件码标志,用来记录程序中运行结果的状态信息作为后续条件转移指令的转移控制条件。条件码包括
10、6位:CF、PF、AF、ZF、SF、OF。OF(Overflow Flag)溢出标志(一般指补码溢出)OF=1:在运算过程中,如操作数超过了机器表示的范围称为溢出。OF=0:在运算过程中,如操作数未超过了机器能表示的范围称为不溢出。字节允许范围-128+127,字运算范围-32768+32767。SF(Sign Flag)符号标志 SF=1:记录运算结果的符号为负。SF=0:记录运算结果的符号为正。ZF(Zero Flag)零标志 ZF=1:运算结果为0。ZF=0:运算结果不为0。,(三)、控制寄存器(cont.)条件码标志,CF(Carry Flag)进位标志 CF=1:记录运算时从最高有效
11、位产生进位值。CF=0:记录运算时从最高有效位不产生进值。AF(Auxiliary Carry Flag)辅助进位标志AF=1:记录运算时第3位(半个字节)产生进位值。AF=0:记录运算时第3位(半个字节)不产生进位值。PF(Parity Flag)奇偶标志 PF=1:结果操作数低8位中有偶数个1。PF=0:结果操作数低8位中有奇数个1。用来为机器中传送信息时可能产生的代码出现情况提供检验条件。,(三)、控制寄存器(cont.)控制标志,对控制标志位进行设置后,对其后的操作起控制作用。控制标志位包括3位:TF、IF、DF。跟踪(陷阱)标志TF、中断标志IF、方向标志 DF。TF(Trap Fl
12、ag)跟踪(陷阱)标志位 TF=1,每执行一条指令后,自动产生一次内部中断,使CPU处于单步执行指令工作方式,便于进行程序调试,用户能检查程序。TF=0,CPU正常工作,不产生陷阱。IF(Interupt Flag)中断标志位 IF=1,允许外部可屏蔽中断。CPU可以响应可屏蔽中断请求。IF=0,关闭中断。CPU禁止响应可屏蔽中断请求。IF的状态对不可屏蔽中断和内部软中断没有影响。DF(Direction Flag)方向标志位 DF=1,每次串处理操作后使变址寄存器SI和DI减量,使串处理从高地址向低地址方向处理。DF=0,每次串处理操作后使变址寄存器SI和DI增量,使串处理从低地址向高地址方
13、向处理。DF方向标志位是在串处理指令中控制处理信息的方向用的。,例1:执行两个数的加法,分析对标志位的影响。,标志:运算结果最高位为0SF=0;运算结果本身0 ZF=0低8位中1的个数为奇数个 PF=0;最高位没有进位 CF=0第三位向第四位无进位 AF=0;次高位向最高位没有进位,最高位向前没有进位,OF=0。,例2:执行两个数的加法,分析对标志位的影响。,标志:运算结果最高位为1,SF=1;运算结果本身不为0,ZF=0;最高位向前无进位,CF=0 次高位向最高位产生进位,而最高位向前没有进位,OF=1;结果低8位含偶数个1,PF=1;第三位向第四位有进位,AF=1。在绝大多数情况下,一次运
14、算后并不影响所有标志,程序也并不需要对所有的标志作全面的关注。一般只是在某些操作后,对其中某个标志进行检测。,三、8086/8088的存储器组织,(一)、存储器结构(二)、存储器的分段结构和物理地址的形成(三)、信息分段存储与段寄存器,(一)、存储器结构,存储单元的地址和内容存储器位编号:8088字长16位,由二个字节组成,位编号如下:高位字节 MSB(815位)低位字节LSB(07位)8088内部的 ALU 能进行16 位运算。有关地址寄存器如 SP、IP、BP、SI、DI 等都是16位的。,(一)、存储器结构(cont.),存储单元地址,按字节,存储单元的的内容:一个存储单元有效的信息。,
15、机器字长是16位,大部分数据以字节为单位表示,一个字存入存储器占有相继的二个单元:低位字节存入低地址,高位字节存入高地址。字单元的地址采用它的低地址来表示。例:字单元:(0004H)=1234H,字节单元:(0004H)=34H 同一个地址既可以看作字节单元地址,又可看作字单元地址,需要根据使用情况确定。字单元地址:可以是偶数也可以是奇数,,(一)、存储器结构(cont.),(一)、存储器结构(cont.),8086/8088系统的存储体结构,8086系统的存储体结构,8088系统的存储体结构,(一)、存储器结构(cont.),(2)、CPU和存储器或I/O端口之间传送数据8086 8086数
16、据总线是16位的。80888088数据总线只有8位。讨论CPU和存储器或I/O端口之间传送数据方式:字数据读/写操作字节读/写操作,(一)、存储器结构(cont.),(1)字数据读/写操作(a)操作数存放在偶地址开始两个存储单元或两个 I/O端口中:即操作数字低8位在偶地址单元或 在偶地址端口;高8位在奇地址单元或在奇地址端口。在一个总线周期内完成(通常4个时钟周期)16位数据传送,操作数必须存放在偶地址开始两个存储单元或两个 I/O端口中。,对应的偶地址单元/偶地址端口数据通过数据总线低8位传输。对应的奇地址单元/奇地址端口数据通过数据总线高8位传输。,字数据读/写偶地址字操作如下图:,(一
17、)、存储器结构(cont.),操作数存放在奇地址开始两个存储单元或两个 I/O端口中如下图所示:,字数据读/写读/写奇地址字,(一)、存储器结构(cont.),在第一个总线周期中:对应于奇地址单元或奇地址端口字节(操作字低8位)通过数据总线高8位进行传输,而数据总线低8位处于空闲状态;在第二个总线周期中:对应于偶地址单元或偶地址端口字节(操作字高8位)通过数据总线低8位进行传输,而数据总线高8位处于空闲状态.由此可见,操作数存放在奇地址开始两个存储单元/两个 I/O端口中进行数据传输,8086需要二个总线周期。,(一)、存储器结构(cont.),字节读/写操作:对偶地址单元/偶地址端口的字节数
18、据进行读/写如下图所示:在一个总线周期中,只有数据总线的低8位传输数据,高8位处于空闲状态。对奇地址单元/奇地址端口的字节数据进行读/写如下图所示:在一个总线周期中,只有数据总线的高8位传输数据,而低8位处于空闲状态。,(一)、存储器结构(cont.),(二)、存储器的分段结构和物理地址的形成,8088有20条地址总线,直接寻址能力为220=1M字节。用16进制数表示1M字节的地址范围应为0000HFFFFFH。(1)、8088内部20位物理地址形成(2)、逻辑地址与物理地址,(1)、存储器地址分段,8088地址总线是20位的,CPU中的寄存器是16位的,20位地址无法用16位寄存器表示,必须
19、分段。程序员在编制程序时把存储器划分成段。段内地址16位,每个段的大小最大可达64KB;实际可以根据需要来确定段大小,可以是1,100,1000等在64K范围内的任意字节数。IBM PC机对段的起始地址有限制,即段不能从任意地址开始:必须从任一小段(paragraph)的首地址开始。从0地址开始每16字节为一小段,(二)、存储器的分段结构和物理地址的形成(cont.),(二)、存储器的分段结构和物理地址的形成(cont.),(2)、20位物理地址形成物理地址:在1M字节存储器里,每个存储单元都有一个唯一的20位地址作为该存储单元的物理地址。CPU访问存储器时,必须先确定所要访问的存储单元的物理
20、地址才能取出(或存入)该单元中的内容。20位物理地址形成:由16位段地址和16位偏移地址组成。段地址:只取段起始地址高16位值。偏移地址:指在段内某内存单元物理地址相对段起始地址的偏移值。,逻辑地址与物理地址概念逻辑地址与物理地址概念如下页图所示。逻辑地址:由段基址和段内偏移地址组成的地址,段基址和段内偏移地址都是16位的无符号二进制数,在程序设计时使用。物理地址:存储器的绝对地址(20位的实际地址),范围从00000HFFFFFH,是由CPU访问存储器时由地址总线发出的地址。存储器管理:将程序中逻辑地址转移为物理地址的机构。,(二)、存储器的分段结构和物理地址的形成(cont.),物理地址计
21、算方法:即把段地址左移4位再加上偏移地址值形成物理地址,写成:物理地址=16d段地址+偏移地址。每个存储单元只有唯一的物理地址。但可由不同的段地址和不同的偏移地址组成。,(二)、存储器的分段结构和物理地址的形成(cont.),存储器典型的分段结构,(二)、存储器的分段结构和物理地址的形成(cont.),逻辑地址来源,(三)、信息分段存储与段寄存器,各段在存储器中分配各段在存储器中分配分4种情况讨论:(1)由操作系统负责分配一般情况,各段在存储器中的分配是由操作系统负责。每个段可以独立地占用64K存储区。(2)各段也可以允许重迭每个段的大小允许根据实际需要分配,不一定要占64KB。每个存储单元的
22、内容不允许发生冲突(段可重迭,但使用时防止冲突)。(3)在程序的首部设定各段寄存器的值如果程序中的四个段都是64K的范围之内,程序运行时所需要的信息都在本程序所定义的段区之内,程序员只要在程序的首部设定各段寄存器的值就可以了。(4)动态地修改段寄存器的内容如果程序的某一段(如数据段)在程序运行过程中会超过64K空间,或者程序中可能访问除本身四个段以外的其他段区的信息,那么在程序中必须动态地修改段寄存器的内容。,(三)、信息分段存储与段寄存器(cont.),以8088CPU的IBMPC系统中,存储器首尾地址的用途固定。00000H003FFH共1K内存单元用于存放中断向量。FFFF0HFFFFF
23、H是存储器底部的16个单元。系统加电复位时,会自动转到FFFF0H单元执行,而在FFFF0H处存放一条无条件转移指令,转向系统初始化程序。,(三)、信息分段存储与段寄存器(cont.),第三节 Intel 80386微处理器的结构,一、80386微处理器的体系结构 二、存储器管理三、80386的工作方式四、中断,80386的主要特性,灵活的32位微处理器,提供32位的指令。提供32位外部总线接口,最大数据传输速率为32Mbps。具有片内集成的存储器管理部件MMU,可支持虚拟存储和特权保护。具有实地址方式、保护方式和虚拟8086方式。具有极大的寻址空间。通过配用数值协处理器可支持高速数值处理。在
24、目标码一级与8086、80286芯片完全兼容。,一、80386微处理器的体系结构,80386微处理器的功能结构,8086到80386的改进:,16位寄存器发展为32位寄存器;增加了保护方式;引入了多任务、任务切换的概念;引入了四级特权机制,程序能在不同特权间切换;引入了存储器管理单元MMU;增加了新指令。,80386的寄存器结构,80386中共有7类32个寄存器,它们是:通用寄存器:EAX,EBX,ECX,EDX,ESP,EBP,ESI,EDI 段寄存器:CS,DS,ES,SS,FS,GS指令指针和标志寄存器:EIP,EFLAGS控制寄存器:CR0,CR1,CR2,CR3 系统地址寄存器:GD
25、TR,LDTR,IDTR,TR 调试寄存器:DR0,DR1,DR2,DR3,DR4,DR5,DR6,DR7 测试寄存器:TR6,TR7。,80386的寄存器结构,80386描述符,段选择子,分段管理机制,二、存储器管理,80386段描述符,80386中MMU增加了分页管理的功能,分页机制可以将线性地址转换为物理地址。内存的分页管理在保护方式下,控制寄存器CR0中PE=1时,可以通过设置PG位来控制分页机制是否启用:PG=1,分页机制启动;PG=0,则关闭分页机制。,分页管理机制,线性地址到物理地址的转换,页的属性,页目录与页表的格式,实地址方式:系统启动后,80386自动进入实地址方式。此方式下,采用类似于8086的体系结构 保护方式:是指在执行多任务操作时,对不同任务使用的虚拟存储器空间进行完全的隔离,保护每个任务顺利执行。虚拟8086方式:是指一个多任务的环境,即模拟多个8086的工作方式。,三、80386的工作方式,四、中断,IDTR与IDT的关系,任务门、中断门、陷阱门结构,