




已阅读5页,还剩73页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 第3章微处理器 广州网站建设 2 主要内容 微处理器的一般结构 8086微处理器的组成 引脚功能 8086的内部寄存器和标志位 8086的存储器组织 实模式和保护模式的存储器寻址 80X86系列微处理器的结构特点 3 3 1微处理器的一般结构 运算器算术逻辑运算 由加法器和 ALU 一些辅助逻辑电路组成指令流控制控制器时序控制 产生节拍定时信号指令译码和操作控制寄存器组存放临时数据 运算的中间结果 运算特征 操作数地址 性能 8位 16位 32位 主流 64位 趋势 主要部件 4 3 28086微处理器 主要内容 8086外部引线及功能 8086的内部结构和特点 8086的工作时序 5 8086的硬件特性 16位微处理器 CMOS型 40引脚DIP封装16位数据总线 20位地址总线功耗 5V 360mA 低功耗型80C86仅需10mA 输入特性 输入电流 0 01mA逻辑0 0 8V逻辑1 2 0V输出特性 逻辑0 0 45V 最大2 0mA逻辑1 2 4V 最大 0 4mA输出引脚负载能力 74HC 74ALS 74AS 74F负载 10个74LS负载 5个74 74S负载 1个 6 一 指令流水线 取指令 指令译码 取操作数 执行指令 存放结果 CPU执行一条指令的过程类似于工厂生产流水线 被分解为多个小的步骤 称为指令流水线 原料 调度分配 生产线 成品 仓库 出厂 数据和程序指令 控制器的调度分配 ALU等功能部件 处理后的数据 存储器 输出 7 指令流水线 指令流水线有两种运作方式 串行方式 取指令和执行指令在不同的时刻按顺序执行 并行方式 取指令和执行指令可同时执行 需要有能并行工作的硬件的支持 8 串行工作方式 8086以前的CPU采用串行工作方式 取指令1 执行1 取指令2 执行2 CPU BUS 忙碌 忙碌 取指令3 执行3 忙碌 空闲 空闲 空闲 t1 t0 t2 t3 t4 t5 6个周期执行了3条指令 9 并行工作方式 8086CPU采用并行工作方式 取指令1 取指令2 取指令3 取指令4 执行1 执行2 执行3 BUS 执行4 CPU t1 t0 t2 t3 t4 t5 取指令5 执行5 6个周期执行了5条指令 10 并行操作的前提 取指令部件和指令执行部件要能够并行工作 各部件执行时间基本相同 否则需再细分 取指令部件取出的指令要能暂存在CPU内部某个地方 指令执行部件在需要时总能立即获得暂存的指令 需要解决转移指令问题 11 超级流水线和超标量结构 超级流水线指令的执行步骤分得更细 流水线长度更长例如 PIII为14个阶段 P4为20个阶段有利于提高主频转移分支时的效率 解决 分支预测 推测执行超标量结构对流水线中的关键 岗位 设置多个相同的执行单元 多个工人完成一道工序P4 倍频ALU 2 FPU 2 其中一个为并行FPU AthlonXP ALU 6 并行FPU 3组 12 8086CPU的特点 采用并行流水线工作方式 通过设置指令预取队列 IPQ 实现对内存空间实行分段管理 将内存分段并设置地址段寄存器 以实现对1MB空间的寻址 支持多处理器系统 8087FPU 执行部件 取指部件 13 8086CPU的两种工作模式 8086可工作于两种模式下 即 最小模式和最大模式 最小模式不支持8087 存储器和I O控制信号全部由CPU产生 最大模式支持8087 CPU的部分信号线被用作8087的控制 因此需要由8288总线控制器来产生这些控制信号 注 80286以后的CPU不再区分这两种工作模式 14 最小模式下的连接示意图 8086CPU 控制总线 数据总线 地址总线 地址锁存器 数据总线缓冲器 ALE 时钟发生器 8284A 地址 数据 8286 8282 Vcc DEN DT R 15 最大模式下的连接示意图 8088CPU 数据总线 地址总线 地址锁存器 数据总线缓冲器 时钟发生器 总线控制器 控制总线 8284A 8288 ALE CLK 8282 8286 GND 16 8288总线控制器 最大模式下 8288总线控制器产生某些CPU不再提供的控制信号 8288产生的信号包括 独立的I O控制命令 IORC IOWC独立的存储器控制命令 MRDC MWTC中断响应信号和总线控制信号以上三组信号取代了最小模式的 ALE WR IO M DT R DEN INTA 17 8288总线控制器逻辑框图 控制逻辑 命令信号产生器 控制信号产生器 状态译码器 MCE PDEN PIC主控级连 IO设备数据输出控制信号IOB 0时 PIC主控级连 否则 用于允许I O总线收发器 18 二 8086CPU的引线及功能 引脚定义的方法可大致分为 每个引脚只传送一种信息 如RD 电平的高低代表不同的含义 如M IO 在不同模式下有不同的名称和定义 如WR LOCK 分时复用引脚 如AD15 AD0 引脚的输入 输出分别传送不同的信息 如RQ GT0 19 最小模式下的主要引线 MN MX工作模式控制 0 接地 工作于最大模式 1 接Vcc 工作于最小模式 20 最小模式下的主要引线 地址总线 数据总线 AD15 AD0 三态地址 数据复用引脚 ALE 1时作为地址线A16 A0 ALE 0时作为数据线D16 D0 传送地址时为输出 传送数据时为双向 A19 A16 S6 S3 输出 三态地址 状态复用引脚 ALE 1时作为地址线A19 A16 ALE 0时作为控制信号 21 最小模式下的主要引线 控制信号 WR 输出 三态写选通信号 表示CPU正在写数据到MEM或I O设备 RD 输出 三态读信号 表示CPU正在从总线上读来自于MEM或I O设备的数据 M IO 输出 三态区分是读写存储器还是读写I O端口 即地址总线上的地址是存储器地址还是I O端口地址 22 最小模式下的主要引线 DEN 输出 三态数据总线允许信号 用来打开外部数据总线缓冲器 DT R 输出 三态表明CPU正在传送还是接收数据 用来作为外部数据总线缓冲器的方向控制 ALE 输出地址锁存允许信号 表示地址 数据总线上传输的是地址信号 以上三个信号的用法见下页图 23 数据 地址分离电路 最小模式 8282或 373 8086 BHE S7 A19 A16 S6 S3 AD15 AD0 OE 8286或 245 OE DIR D15 D0 DT R ALE STB A19 A0 BHE 地址总线 数据总线 DEN CPU总线 系统总线 24 最小模式下的主要引线 RESET 输入复位信号 保持4个以上时钟周期的高电平时将引起CPU进入复位过程 IF清0 并从存储单元FFFF0H开始执行指令 BHE S7 输出高8位数据总线允许 在读 写操作期间允许高8位数据总线D16 D8有效 即读 写数据的高8位 READY 输入准备就绪 用于与存储器或I O接口的同步 0时CPU进入等待状态 插入1个或多个等待周期 25 READY引脚的作用 总线周期 T2 T1 T3 Twait T4 标准总线周期 增加了等待状态的总线周期 若在T3周期上升沿检测到READY 0 将插入等待周期 插入的个数取决于READY何时变为1 采样 26 中断请求和响应信号 INTR 输入可屏蔽中断请求输入端 CPU要检查IF状态NMI 输入非屏蔽中断请求输入端 CPU不检查IF状态INTA 输出中断响应信号 表示CPU已进入中断响应周期 此信号常用来选通中断向量号 27 总线保持信号 HOLD 输入总线保持请求 用来直接存储器存取 DMA 当CPU以外的其他设备要求占用总线以便访问存储器时 通过此引脚向CPU发出请求 HOLD 1时 CPU停止执行指令 并将地址 数据总线和控制总线中的所有三态控制线置为高阻状态 HLDA 输出总线保持响应 CPU对HOLD信号的响应信号 指示CPU已进入保持状态 28 其他信号 TEST 输入测试信号 执行WAIT指令时将测试此引脚的状态 0时 WAIT指令相当于空操作 NOP 1时 WAIT指令将重复测试直到它变为0 通常此引脚与8087算术协处理器相连 CLK 输入时钟引脚 为CPU提供基本的定时信号 占空比必须为33 高1 3 低2 3 29 三 8086CPU的内部结构 8086内部由两部分组成 执行单元 EU 总线接口单元 BIU 结构 30 执行单元 功能 执行指令 具体操作如下从IPQ中取指令代码译码完成指定的操作结果保存到目的操作数运算特征保存在标志寄存器FLAGS 仅对影响标志的指令 31 总线接口单元 功能 从内存中取指令到指令预取队列IPQ 负责与内存或I O接口之间的数据传送 在执行转移指令时 BIU将清除IPQ 然后从转移的目的地址处开始取指令并重新填充IPQ 32 8086结构特点小结 有EU和BIU两个独立的 同时运行的部件二者通过IPQ构成一个两工位流水线指令被EU和BIU按流水线方式处理 提高了CPU的运行速度 提高了CPU的执行效率 降低了对存储器存取速度的要求 33 四 8086的工作时序 工作时序分为很多小的时间片 时钟周期一个时钟脉冲所持续的时间 时钟周期越短 CPU执行速度越快 总线周期通过总线对存储器或I O接口进行一次访问所需要的时间 一般包括4个时钟周期 在5MHz的工作频率时 一个标准总线周期为0 8 s 34 总线周期中各时钟周期的操作 T1周期CPU向存储器或I O发送地址CPU向地址 数据分离器 地址锁存器 发送ALE信号T2周期给存储器或I O发送写入的数据测试READY引脚状态 以决定是否插入等待周期发出RD或WR信号T3周期等待存储器或I O存取数据完成使数据在CPU与存储器或I O之间传输T4周期写入数据 读 写总线周期的信号波形见下页图 35 数据写入存储器时的总线操作 写总线周期 由ALE信号将地址锁存到地址锁存器 DEN 0并且DT R 1时打开总线缓冲器 将其放到系统数据总线上 此信号与M IO信号共同构成存储器写控制信号 将数据写入存储器 36 数据从存储器读出的总线操作 读总线周期 DEN 0并且DT R 0时打开总线缓冲器 将其放到CPU总线上 供CPU读入 较完整的读总线周期 此信号与M IO信号共同构成存储器读控制信号 由ALE信号将地址锁存到地址锁存器 37 3 38086内部寄存器组 8086寄存器组又称为8086的程序设计模型它是程序设计中惟一可见的CPU部件它是系统程序设计员的操作对象含14个16位寄存器 按功能可分为三类 通用寄存器 8个段寄存器 4个控制寄存器 2个 38 8086寄存器概貌 SP IP FLAGS AH AL BH BL CH CL DH DL AXBXCXDX BP SI DI CS DS ES SS 通用寄存器 控制寄存器 段寄存器 39 一 通用寄存器 数据寄存器 AX BX CX DX 地址指针寄存器 SP BP 变址寄存器 SI DI 40 数据寄存器 用途 存放临时数据和存放运算操作数 例 每个均为16位 但又可分为2个8位寄存器 即 AXAH ALBXBH BLCXCH CLDXDH DL 例如 若 AX 1234H 则 AH 12H AL 34H 41 数据寄存器特有的习惯用法 AX 累加器所有I O指令都通过AX AL 与接口传送信息 中间运算结果也多放于AX AL 中 乘除法指令的一个操作数必须在AX AL 中 BX 基址寄存器在间接寻址中用于存放操作数的基地址 CX 计数寄存器用于在循环指令或串操作指令中存放计数值 DX 数据寄存器在间接寻址的I O指令中存放I O端口地址 在32位乘除法运算时 存放高16位数 42 地址指针寄存器 SP 堆栈指针寄存器其内容为堆栈栈顶的偏移地址 任何堆栈操作后 SP都会自动增 减量 BP 基址指针寄存器在间接寻址中用于存放操作数的基地址 常用于访问存放在堆栈中的数据 43 BX与BP在应用上的区别 作为通用寄存器 二者均可用于存放数据 作为基址寄存器 默认情况下 用BX作为指针所访问的数据在数据段 DS段 用BP作为指针所访问的数据在堆栈段 SS段 注 间接寻址时仅BX BP SI DI可用于存储器寻址 仅DX可用于I O寻址 44 变址寄存器 SI 源变址寄存器 用于访问源操作数DI 目标变址寄存器 用于访问目的操作数常用于操作数的间接寻址或变址寻址 在串操作指令中 SI存放源操作数的偏移地址 而DI存放目标操作数的偏移地址 45 二 段寄存器 用于存放逻辑段的段基地址 简称段地址 CS 代码段寄存器 代码段存放指令代码DS 数据段寄存器ES 附加段寄存器SS 堆栈段寄存器 指示堆栈区域的位置 这两个段存放操作数 堆栈段 SS 数据段 DS ES 代码段 CS 46 三 控制寄存器 IP 指令指针寄存器其内容为下一条要执行的指令的偏移地址 FLAGS 标志寄存器存放指令执行结果的特征 有些指令 如算术指令 要改变FLAGS的内容 影响FLAGS 有些指令对FLAGS无影响 6个状态标志位 CF SF AF PF OF ZF 3个控制标志位 IF TF DF P71例 O D I T S Z A P C 15 0 2 4 6 7 8 9 10 11 FLAGS 47 3 48086的存储器组织 8086可访问1MB的存储空间 为什么 哪个寄存器能够放得下20位的地址 用分段的方法解决 段是存储器中的一块区域段起始于存储器内16字节整倍数的边界处 段首地址的最低4位一定为0用段和偏移的组合访问存储单元每个段最大为64KB 最小为16B 为什么 所有存储单元的地址都由段地址加偏移地址组成段地址被装入段寄存器中以供寻址使用偏移地址用于在64KB存储器段内选择任一单元 48 段和偏移 设段起始地址 60000H段地址偏移地址0 FFFFH 6A000H 12H 60000H 6000 段寄存器 偏移地址 A000H 49 物理地址和逻辑地址 物理地址 存储单元的硬件地址物理地址 段地址 16 或段地址左移4位 偏移地址逻辑地址 段和偏移形式的地址逻辑地址用于汇编语言程序设计以下地址都是逻辑地址的例子 2500H 0100H段地址A000H偏移地址0001H 50 例1 已知CS 1055H DS 250AHES 2EF0H SS 8FF0H数据段中某操作数偏移地址 0204H各段首地址 画出各段在内存中的分布该操作数的物理地址 这个例子说明 段与段可以不连续段之间可以重叠 10550H 250A0H 2EF00H 8FF00H DS段 ES段 SS段 CS段 51 默认段和偏移寄存器 8086规定了访问存储器段的规则 此规则定义了段地址寄存器和偏移地址寄存器的组合方式 其默认规则如下表 52 例2 设当前执行的程序中某条指令的物理地址为5A1F6H 则程序所在的段的段地址 当前CS的内容为多少 解 有多个解 求出任意一个即可 5A1F6H 5A10H 10H 00F6H所以 段地址 5A10H CS的内容为5A10H想一想 还有哪些解 思考题 设当前数据段位于存储器的A8000H到B7FFFH的地址空间 问DS的内容应是什么才能访问该数据段的所有存储单元 53 堆栈及堆栈段的使用 堆栈 内存中一个特殊区域 用于存放需要保护的数据 堆栈按后进先出方式工作堆栈通过SS 段地址 和SP 偏移地址 来访问 堆栈指针堆栈的数据压入方向是从高地址到低地址 弹出方向则相反 堆栈指针的变化举例 常用于响应中断子程序调用参数传递 54 例3 若已知 SS 1000H SP 2000H则堆栈段的段起始地址 栈顶地址 若该段最后一个单元地址为10100H则栈底单元的偏移地址 段起始 栈底 栈顶 堆栈段 55 3 580X86微处理器 了解 80X86存储器寻址方式80386CPU的特点及存储管理 Pentium微处理器 56 一 80X86的存储器寻址方式 实地址模式用段地址和偏移地址的组合寻址内存的第一个1MB空间段地址在段寄存器 CS DS ES SS 中保护虚地址模式80286 80386 80486 Pentium Pentium4寻址空间 每个段的大小 80286 224 8MB 80386以上 232 4GB 虚拟地址空间64TB 8K 8K个描述符 段地址在内存的描述符中 描述符由段寄存器的内容来选择 为什么这样做 57 保护模式的存储器寻址 1MB 实模式存储器 扩展存储器 由段寄存器提供段信息 由描述符提供段信息 FFFFFH 00000H 100000H 两种方式中的偏移地址的用法相同 58 保护虚地址模式 描述符 Descriptor 用于描述存储器段的位置 大小 访问权限所有的描述符统一放在内存中的描述符表中全局描述符表GDT 系统中只有一个 中断描述符表IDT 系统中只有一个 包含了指向256个中断处理程序入口地址的描述符局部描述符表LDT 每个任务一个 GDT和IDT的基地址由GDTR和IDTR给出LDT的基地址由LDTR 16位选择子 间接给出选择子 Selector 选择符 指定描述符在描述符表中的位置 偏移量 59 如何访问描述符 段寄存器内容 选择子 全局描述符表局部描述符表 描述符表 GDTR 150 GDT 描述符 线性地址空间 偏移 当前访问的段 存储器 60 描述符的格式 80386以上 访问权限 段界限 L19 L16 G 粒度 G 1 界限要乘以4KB 即段的大小为4KB 4GB G 0 段的大小为0 1MB D 16 32 D 1 寄存器和偏移地址均为32位 D 0时均为16位 AV 段有效 AV 1 段有效 AV 0 段无效 访问权限 在保护方式下控制存储的访问 如 能否读写 优先级别 段如何扩展等 158765430 段基址 B31 B24 D G 0 AV 0 2 4 6 1 3 5 7 段基址 B23 B16 段基址 B15 B0 段界限 L15 L0 61 例 0008H DS 描述符表 FF 00 00 00 10 00 00 92 段界限 段基地址 00100000H 001000FFH 数据段 描述符 存储器 粒度 0 GDTR 00000000H FFFFFFFFH 62 选择子的格式 选择子 加载到段寄存器中的内容 选择子 Selector 13位 TI RPL 153210 从8192个全局描述符或8192个局部描述符中选择一个描述符 0使用GDTR作为描述符表的段基址 即访问GDT 1使用LDTR作为描述符表的段基址 即访问LDT 请求者优先级别00最高 11最低 63 访问局部描述符表LDT 将选择子装入LDTR 用LLDT指令 以下操作由CPU自动完成 根据LDTR中的选择子到GDT中选择一个LDT的描述符 即LDT的描述符在GDT中 这个描述符给出了LDT的基地址和段界限 它被自动复制到LDTR的高速缓冲区中 可以看出 LDTR是GDT中的某个LDT描述符的偏移地址 见下页图示 以后就可以用LDTR高速缓冲区中的基地址来访问局部描述符表了 64 访问局部描述符表LDT 选择子 GDTR 150 GDT LDT描述符 LDTR 基地址 界限 权限 LLDT 偏移量 150 LDT 段寄存器 偏移量 65 二 80386CPU 主要特性 全32位结构 ALU BUS Reg 可处理8 16 32位数据物理寻址空间232字节 4GB 外部数据总线传输率为33MB s片内集成MMU 支持段式或页式虚拟存储管理和特权保护虚存空间64TB 1MB或4GB 段 16384段 任务4级特权层 一般OS为0 1 2级 用户程序为3级实地址方式 虚拟8086方式和保护方式硬件支持多任务 一条指令可完成任务转换 转换时间 17us更先进的流水线结构 16字节指令队列时钟速度 16 33MHz 66 1 内部结构 分三个部分 总线接口单元 BIU 与存储器和接口间的数据传送中央处理单元 CPU 指令预取部件 指令译码部件 执行部件指令译码和执行存储器管理单元 MMU 段管理部件 页管理部件地址转换 虚存管理 内部结构 67 2 主要引线功能 D0 D31 双向 32位数据总线 A2 A31 输出 30位地址总线 BE0 BE3 字节选通输出 与30位地址线结合可相当于32位地址 W R 输出 写 读控制信号 D C 输出 数据传送周期 控制周期 BS16 输入 有效则总线宽度为16位 ADS 输出 地址信号有效 NA 输入 下一地址请求信号 其他信号与8086基本一致 68 3 内部寄存器组 共34个内部寄存器 8个通用寄存器 32 16 8位 6个段寄存器 16位 指令指针 32 16位 标志寄存器 32 16位 4个系统地址寄存器 32 20位 16位 控制寄存器调试和测试寄存器 69 通用寄存器组 32 16 8位 EAXEBXECXEDXESIEDIEBPESP 低16位可分为两个8位寄存器 低16位可作为独立的寄存器 注 32位寻址时 这8个32位寄存器全部可用于提供偏移地址 70 段寄存器 16位 CSDSESSSFSGS 每个16位段寄存器对应一个64位的高速缓冲段描述符一旦选择子装入段寄存器 相应的段描述符立刻被自动装入高速缓冲段描述符中 新增的2个段寄存器 71 指令指针及标志寄存器 32位 指令指针EIP标志寄存器EFLAGS 增加了4个标志位 IOPL 指定I 0操作处于哪个特权级 NT 当前任务是否嵌套于另一任务 RF 调试结束 下一条指令后恢复程序的执行 VM 是否工作于虚拟8086方式 EFLAGS 72 系统地址段寄存器 程序不可见 GDTR 48位全局描述符表寄存器指示全局描述符表的基地址 32位 和表的界限 16位 IDTR 48位中断描述符表寄存器指示中断描述符表的基地址 32位 和表的界限 16位 TR 16位任务状态寄存器LDTR 16位局部描述符表寄存器以上这些寄存器不直接被程序访问 73 程序不可见的寄存器 CS DS ES SS FS GS 基地址 界限 权限 TR L
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论