1、4第 2 章 微处理器及其结构本章介绍了 8086、80486 和 Pentium 微处理器的内部结构、寄存器结构、存储器组织及输入/ 输出结构、工作模式及总线操作时序。1.1 重点与难点本章的重点是 80486 微处理器的内部结构、寄存器结构、存储器组织、输入/输出结构和微处理器的工作模式,难点是实地址工作模式下存储器的寻址。具体内容如下:18086 微处理器总线接口部件和执行部件的功能,通用数据寄存器、指针及变址寄存器、段寄存器和指令指针的名称及用途,标志寄存器中各个标志位的意义,存储器的分段及物理地址的形成。8086 CPU 存储器的名称及功能见表 2.1。表 2.1 8086 寄存器及
2、其功能类别 名 称 缩 写 位 数 功 能累 加 器 AX 16基址寄存器 BX 16计数寄存器 CX 16通用数据寄存器 数据寄存器 DX 16均可以作为 8 位寄存器使用。既可以作为算术、逻辑运算的源操作数,向 ALU 提供参与运算的原始数据,也可以作为目标操作数,保存运算的中间结果或最后结果。堆栈指针 SP 16 在进行堆栈操作的过程中,SP 用来指示堆栈栈顶的偏移地址基址指针 BP 16 用来存放位于堆栈段中的 1 个数据区的“基址” 的偏移地址源变址指针 SI 16 在串操作指令中,SI 用来存放源操作数地址的偏移地址指针及变址寄存器 目的变址指针 DI 16 在串操作指令中,DI
3、用来存放目标操作数地址的偏移地址 代码段寄存器 CS 16 用来存放当前使用的代码段的段基址数据段寄存器 DS 16 用来存放当前使用的数据段的段基址堆栈段寄存器 SS 16 用来存放当前使用的堆栈段的段基址段寄存器附加段寄存器 ES 16 用来存放当前使用的附加段的段基址指令指针 IP 16 存放 BIU 将要取的下一条指令代码的偏移地址。控制寄存器 标志寄存器 FR 16 只使用了 9 位。其中 6 位为状态标志位,用来反映算术运算或逻辑运算结果的状态;3 位为控制位,用来控制 CPU 的操作280486 微处理器80486 微处理器的内部结构、新增寄存器名称及用途、存储器组织以及输入/输
4、出结构。实地址模式、保护模式和虚拟 8086 模式的特点及其相互转换,时钟周期、总线周期和指令周期的概念以及总线操作时序。80486 CPU 存储器的名称及功能见表 2.2。3Pentium 微处理器Pentium 微处理器的超标量流水线、独立指令 Cache 和数据 Cache、浮点部件和分支转移动态预测等部件的特点,存储器组织以及输入/输出结构。5表 2.2 80486 寄存器及其功能位 数分类类别 名 称 缩写 程序可见 程序不可见 功 能累 加 器 EAX 32 无基址寄存器 EBX 32 无计数寄存器 ECX 32 无数据寄存器 EDX 32 无均可以作为 8 位、16 位和 32
5、位寄存器使用。堆栈指针 ESP 32 无 可作为 16 位和 32 位寄存器使用,用来指示堆栈栈顶的偏移地址基址指针 EBP 32 无 可作为 16 位和 32 位寄存器使用,用来存放位于堆栈段中的 1 个数据区的“基址 ”的偏移地址源变址指针 ESI 32 无 可作为 16 位和 32 位寄存器使用,在串操作指令中,用来存放源操作数的偏移地址通用寄存器目的变址指针 EDI 32 无 可作为 16 位和 32 位寄存器使用,在串操作指令中,用来存放目标操作数的偏移地址 代码段寄存器 CS 16 64数据段寄存器 DS 16 64堆栈段寄存器 SS 16 64ES 16 64FS 16 64段寄
6、存器 附加段寄存器GS 16 64程序可见部分在实地址模式下,存放段基址,在保护模式下,存放选择符。程序不可见部分只有在保护模式下有效。CS 用来存放当前使用的代码段的段基址DS 用来存放当前使用的数据段的段基址SS 用来存放当前使用的堆栈段的段基址ES、 FS 和 GS 用来存放当前使用的附加数据段的段基址指令指针 EIP 32 无 可作为 16 位和 32 位寄存器使用,存放 BIU 将要取的下一条指令代码的偏移地址。基本寄存器控制寄存器标志寄存器 EFR 32 无在 8086 的基础上,增加了 5 位系统标志位,用于控制系统或执行某种操作。 全局描述符表寄存器 GDTR 48 无 用于存
7、放全局描述表的 32 位基地址和 16 位段限值局部描述符表寄存器 LDTR 16 64 用于保存局部描述符表的 32 位基地址、16 位段限值和 16位访问权限中断描述符表寄存器 IDTR 48 无 用于存放中断描述符表的 32 位基地址和 16 位段限值系统地址寄存器任务寄存器 TR 16 64用于存放任务状态段的 32 位基地址、16 位段限值和 16 位访问权限模式控制与状态控制寄存器 CR0 32 无用于系统操作模式控制和系统状态控制控制寄存器 CR1 32 无 为与后续的 Intel CPU 兼容而保留页故障线性地址寄存器 CR2 32 无存放页故障的线性地址系统寄存器 控制寄存器
8、 页目录寄存器 CR3 32 无 微处理器提供当前任务的页目录表地址断点地址寄存器 DR0 32 无 存放断点 0 的线性地址断点地址寄存器 DR1 32 无 存放断点 1 的线性地址断点地址寄存器 DR2 32 无 存放断点 2 的线性地址断点地址寄存器 DR3 32 无 存放断点 3 的线性地址调试寄存器 DR4 32 无 保留未用调试寄存器 DR5 32 无 保留未用断点状态寄存器 DR6 32 无 说明是哪一种性质的断点及断点异常是否发生调试寄存器断点控制寄存器 DR7 32 无 指明断点发生的条件及断点的类型Cache 数据测试寄存器 TR3 32 无 用作 Cache 数据读/ 写
9、缓冲器Cache 状态测试寄存器 TR4 32 无 包含 Cache 测试期间标志位和有效位的信息Cache 控制测试寄存器 TR5 32 无 说明可测试性操作、置位和入口的选择TLB 控制测试寄存器 TR6 32 无 包含对 TLB 进行测试的标志信息和控制信息调试与测试寄存器 测试寄存器 TLB 状态测试寄存器 TR7 32 无 包含 TLB 测试期间数据块的存取信息数据寄存器 R7 R0 80 无 相当于 20 个 32 位的寄存器,用于堆栈操作标志寄存器 FPTW 16 无 指示 8 个数据寄存器的特征,每两位代表 1 个数据寄存器控制寄存器 FPCW 16 无 用于浮点运算部件操作控
10、制的选择浮点寄 状态寄存器 FPSW 16 无 指示浮点运算部件的状态6指令指针 IP 48 无 用于指令错误的处理存器 数据指针 DP 48 无 用于数据错误的处理2.2 习题解答2.1 简述 8086 和 80486CPU 内部结构由那些部件组成,并阐明它们结构上的异同。答:(1)参见 P2628,2.1.1 Intel 8086 微处理器内部结构;(2)参见 P3841,2.2.1 Intel 80486 微处理器内部结构。2.2 8086 微处理器和 80486 微处理器中的寄存器是如何分类的,它们的主要功能是什么?答:(1)参见 P2829,2.1.2 Intel 8086 微处理器
11、寄存器结构;(2)参见 P4147,2.2.2 Intel 80486 微处理器寄存器结构。2.3 EFR 寄存器包含哪些标志位?说明各主要标志位的作用。答:参见 P4243, (3)标志寄存器 EFR2.4 说明 80486 微处理器中控制寄存器、系统地址寄存器的作用和各自的功能。答:参见 P4446,2.系统寄存器。2.5 存储器为什么要分段?在实地址方式下存储器如何分段?答:8086CPU 有 20 条地址线,可直接寻址 1M 字节的存储空间,而寄存器均为 16 位,可寻址 21664K 的存储空间,不能直接寻址 1M 的存储空间,为此采用分段结构,由 16 位段寄存器提供段基址,由不同
12、的寻址方式或寄存器提供 16 位偏移地址,共同组成 20 位的物理地址,寻址 1M 的存储空间。在实地址方式下,将 1M 字节的存储器划分为 4 段,即代码段、数据段、堆栈段和附加段。每段包含若干个 216个字节(即 64K 字节单元) ,并且每个段的首地址是 1 个可以被 16整除的数(即段的起始地址的最低 4 位为 0) 。在任意时刻,程序能够很方便地访问 4 个分段的内容。2.6 什么是逻辑地址?什么是物理地址?在实模式下,如何求存储器的物理地址?设一个 16 字的数据存储区,它的起始地址为 70A0H:DDF6H.。写出这个数据区的首字单元和末字单元的物理地址。答:(1)逻辑地址由段基
13、址(存放在段寄存器中) 和偏移地址(由寻址方式提供)两部分构成,它们都是无符号的 16 位二进制数。逻辑地址是用户进行程序设计时采用的地址。(2)物理地址是 1M 内存空间中每个存储单元惟一的地址,由 20 位二进制数构成。物理地址是 CPU 访问内存时使用的地址。当用户通过编制程序将 16 位逻辑地址送入 CPU的总线接口部件 BIU 时,地址加法器通过地址运算变换为 20 位的物理地址。(3)20 位物理地址的计算公式为:物理地址段基址16偏移地址(4)解题思路:按照物理地址的计算公式,计算首字单元的物理地址。在计算末7字单元的物理地址时,注意 16 个字为 32 个字节,占用 32 个(
14、即 20H 个)存储单元。首字单元的物理地址70A0H16+DDF6H7E7F6H末字单元的物理地址7E7F6H+20H27E816H27E814H占用存储器单元的情况如图 2.1 所示。2.7 80486 微处理器有哪 3 种工作方式?简述没种工作方式的特点和区别。答:参见 P5354,2.3 Intel 80486 微处理的工作模式。2.8 堆栈的数据结构特点是什么?计算机中为什么要设置堆栈?答:(1)堆栈是 CPU 内存中一个特定的存储区。堆栈的数据结构特点是 “先进后出” ,即最后进入堆栈的数据最先从堆栈中弹出。(2)CPU 在处理数据的过程中,有一些中间数据需要进行暂存,同时 CPU
15、 在调用子程序和进行中断响应的过程中,现场和断点都需要进行保护,为此计算机中设置了一定容量的堆栈。2.9 简述时钟周期、总线周期和指令周期之间的关系。答:参见 P55,3.时钟周期、总线周期和指令周期。2.10 什么叫突发传送和非突发传送?80486 微处理器的最快非突发单总线周期传送由几个时钟周期组成?答:(1)由 信号结束的传送周期,称为突发周期传送。由 信号结束的传送BRDY RDY周期,称为非突发周期传送。(2)80486 微处理器的最快非突发单总线周期传送由 2 个时钟周期组成。物理地址 逻辑地址 存储器 70A0H:DDF6H70A0H:DE14H 7E7F6H7E7F8H7E7F
16、AH7E814H 图 2.1 题 2.6 图 70A0H:DE16H 7E816H 第 1 个字 第 2 个字 第 3 个字 第 16 个字 第 17 个字 82.11 简述 80486CPU 芯片引脚 、 、 、 、 、 的功能。ADSRYBDLASTKENPCH答:参见 P4852,2.2.3 Intel 80486 微处理器引脚信号及其功能。2.12 80486 微处理器的实地址工作模式的物理地址空间是多大?保护模式的物理地址空间是多大?保护模式虚拟地址空间是多大?答:解题思路:实地址工作模式的物理地址空间为 1MB;保护模式的物理地址空间为4GB,程序可用的虚拟存储空间为 64TB;在
17、保护模式下,通过使用分页功能,可以把虚拟8086 模式下的 1MB 地址空间映射到 80486 微处理器的 4GB 物理空间中的任何位置。2.13 如果在数据写总线周期的字节允许信号代码 等于 1110B 时,所发BE321E0生的是字节、字还是双字数据传送?答:解题思路:由 P53 表 2.9 可知,当 等于 1110B 即只有 为低电BE0平有效,所以,当 等于 1110B 时,是字节数据传送。BE321E02.14 总线状态码 等于 010 时,将进行哪种总线周期?M/IODCW/R答:解题思路:由题意可知 0,表明是对 I/O 端口操作。 1,表明是对数据I D/C信号进行操作, 0,表明是读操作,所以,当总线状态码 等于 010 时,/R MIOWR是对 I/O 端口进行读数据操作。