第二章 8086体系结构与80X86CPU

Similar documents
<4D F736F F F696E74202D20B5DA35D5C2CEA2B4A6C0EDC6F7B9A4D7F7D4ADC0ED2E707074>

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

Microsoft PowerPoint - Ch CPU总线及其形成.ppt [兼容模式]

主要内容 微型机的构成 ( 回顾 ) 总线 接口 8086 CPU 的结构及工作原理 8086 存储器 8086 系统配置 2015 年 3 月 9 日星期一 3 时 38 分 16 秒 2

untitled

提纲. 1 实验准备. 2 从实模式进入保护模式. 3 小结 陈香兰 ( 中国科学技术大学计算机学院 ) 软件综合实验之操作系统 July 1, / 11

幻灯片 1

Microsoft PowerPoint - C15_LECTURE_NOTE_08.ppt

PowerPoint Presentation

图 内部结构图 8251 的外部引脚如图 所示, 共 28 个引脚, 每个引脚信号的输入输出方式如图中的箭 头方向所示

<4D F736F F F696E74202D DB5DABEC5BDB22DCEA2B4A6C0EDC6F7B5C4D3B2BCFEBDE1B9B9A3A8D2BBA3A92E >

<4D F736F F D20C7B6C8EBCABDCFB5CDB3C9E8BCC6CAA6B0B8C0FDB5BCD1A75FD1F9D5C22E646F63>

指令系统 可分成如下 6 类 : 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 程序控制指令 处理器控制指令 2015 年 3 月 26 日星期四 8 时 41 分 27 秒 2

Microsoft PowerPoint - 微原-第3章3.ppt [兼容模式]

数据库系统概论

Ps22Pdf

Microsoft PowerPoint - C15_LECTURE_NOTE_08.ppt

DPJJX1.DOC

1 CPU

Microsoft PowerPoint - 05-第五讲-寻址方式.pptx

<4D F736F F D20C7B0CBC4D5C2D7F7D2B5CCE22E646F6378>

WJYL.s92

Microsoft PowerPoint - Ch3-8086CPUæ„⁄令系ç»�(3)-æŁ°æ“®ä¼€é•†æ„⁄令

微机第02章1(指令寻址)

Microsoft PowerPoint - 微原-第3章2.ppt [兼容模式]

本次习题课中提到的 课本, 均指机械工业出版社的 Intel 微处理器 ( 原书第八版 ) 中文版, 使用其他版本课本的同学需要自己对应

Microsoft PowerPoint - os_4.ppt

主要内容 指令系统的一般概念 指令操作方式操作码的含义指令对操作数的要求指令执行的结果 寻址方式 指令说明 2015 年 3 月 16 日星期一 8 时 2 分 37 秒 2

lecture21

投影片 1


数据库系统概论

中文手册

微机系统与接口--第5章-2.ppt

3.3.2 算术运算指令 数据类型 : 无符号和有符号整数 无符号数又分成 : 无符号二进制数 ; 无符号压缩十进制 :1 字节表示 2 个十进制数 ; 无符号非压缩十进制 :1 字节表示 1 个十进制数 有符号数 : 有符号二进制数 用补码表示 2015 年 3 月 26 日星期四 11 时 3

数据库系统概论

,768 32,767 32K JMP Jnnn (386+) LOOP CALL [Label:] JMP short/near/far address L10: jmp jmp L20: L10 L20

<4D F736F F F696E74202D DB5DAB6FECAAEB6FEBDB22DCEA2D0CDBCC6CBE3BBFACFC8BDF8BCBCCAF5CAB5C0FDA3A8D2BBA3A92E >

AT89C2051中文资料.doc

第七章 中断

第六章 微型计算机的输入输出

PCM-3386用户手册.doc

1 TPIS TPIS 2 2

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

控制器 EtherCAT EtherCAT EtherCAT 接下一个电机驱动模块 (X4) 接下一个电机驱动模块 (X5) X11 IN X4 IN X3 OUT X5 IN X6 OUT X2 X1 X4 IN X3 OUT X5 IN X6 OUT X2 X1 SYS STA DC BUS D

Microsoft PowerPoint - chapter7.ppt

2

Microsoft Word - em78 sub program.doc

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

Microsoft Word - 1 page0.doc

Microsoft Word - 專題封面.doc

ATMEL AT90S8515 AVR CPU AVR AVR AVR ATMEL RISC 32 8 r0 r X Y Z R0 R1 R2 R13 R14 R15 R16 R17 R26 R27 R28 R29 R30 R31 0x00 0x

《计算机应用基础》学习材料(讲义)

第五章 重叠、流水和现代处理器技术

Microsoft PowerPoint - C15_LECTURE_NOTE_05.ppt

Microsoft Word - 正文.doc

数据库系统概论

一:概述

Microsoft PowerPoint - C15_LECTURE_NOTE_11

1 CPU interrupt INT trap CPU exception

幻灯片 1

1 2 / 3 1 A (2-1) (2-2) A4 6 A4 7 A4 8 A4 9 A ( () 4 A4, A4 7 ) 1 (2-1) (2-2) ()

Microsoft PowerPoint - Ch3-8086CPU指令系统(2)-寻址.pptx

一 汇编语言计算机基础 从事计算机科学方面的工作, 汇编语言是我们必不可少缺的基础 我们的工作平台 研究对象都是机器, 而汇编语言是人和计算机沟通的最直接方式, 它描述了机器最终所要执行的指令序列 学习汇编语言可以让你充分获得底层编程的体验, 深刻理解机器运行程序的机理 二 基础知识 1. 汇编语言

水晶分析师

第五章

06721 main() lock pick proc() restart() [2][4] MINIX minix2.0 GDT, IDT irq table[] CPU CPU CPU CPU (IDTR) idt[] CPU _hwint00:! Interrupt

4 / ( / / 5 / / ( / 6 ( / / / 3 ( 4 ( ( 2

因 味 V 取 性 又 鸟 U 且 最 大 罗 海 惜 梅 理 春 并 贵 K a t h l ee n S c h w e r d t n er M f l e z S e b a s t i a n C A Fe rs e T 民 伊 ' 国 漳 尤 地 视 峰 州 至 周 期 甚 主 第 应

untitled

第4章 80X86指令系统

101

F515_CS_Book.book

/ / (FC 3)...

CH559指令周期.doc

Microsoft PowerPoint - C15_LECTURE_NOTE_06

ebook105-12

untitled

bingdian001.com

Microsoft Word - LMB402CBC-AppNote-V0.1.doc

一、填空题

!"#!$ %!$"" %%$&&''!(!)!*+,,!%*& -./ *##)' * %$" ',!*+/!*+ / - 0,1 #$*#2 #$*#2'' *($#3 *($#3'' -. 45,67!&$#6)*$ , ' 189

Microsoft PowerPoint - C15_LECTURE_NOTE_06

51 C 51 isp 10 C PCB C C C C KEIL


习 题 一

《微机接口技术》总复习题.doc

General CNC PCU SINUMERIK OP TP SINUMERIK PCU PC USB PC SINUMERIK SINUMERIK PCU SINUMERIK PCU PC SINUMERIK OP SINUMERIK PCU SINUMERIK SINUMERIK PCU MP

逢甲大學

<4D F736F F F696E74202D D D6B8C1EECFB5CDB DC6E4CBFBD6B8C1EE2E BBCE6C8DDC4A3CABD5D>

<4D F736F F D20B5DAC1F9D5C2CFB0CCE2B4F0B0B8A3A8CDF8D5BEA3A92E646F63>

E170C2.PDF

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L

L15 MIPS Assembly

Tel:

L1 computer system overview

2006年国家公务员招录考试行测真题(A)

学年本科教学和思政工作情况汇报

Transcription:

第二章 80x86 体系结构 1 8086CPU 结构 2 8086 系统的结构和配置 3 8086 的工作模式和内部时序 4 IA 微处理器技术的发展 *

2.1 8086CPU 结构 一 8086CPU 的内部结构 二 8086CPU 的寄存器结构 三 8086CPU 的管脚及功能

2.1 8086CPU 结构一 8086CPU 的内部结构 8086CPU 的内部结构组成 8086CPU 由两部分组成 : 指令执行部件 (EU,Execution Unit) 总线接口部件 (BIU,Bus Interface Unit)

2.1 8086CPU 结构一 8086CPU 的内部结构

2.1 8086CPU 结构一 8086CPU 的内部结构 执行部件 (EU) 主要由算术逻辑运算单元 (ALU) 标志寄存器 FR 通用寄存器组和 EU 控制器等 4 个部件组成, 其主要功能是执行指令 总线接口部件 (BIU) 主要由地址加法器 专用寄存器组 指令队列和总线控制电路等 4 个部件组成, 其主要功能是形成访问存储器的物理地址 访问存储器并取指令暂存到指令队列中等待执行, 访问存储器或 I/O 端口读取操作数参加 EU 运算或存放运算结果等

2.1 8086CPU 结构一 8086CPU 的内部结构

2.1 8086CPU 结构一 8086CPU 的内部结构 指令队列 EU BIU

2.1 8086CPU 结构一 8086CPU 的内部结构 EU 和 BIU 的操作原则 BIU 中的指令队列有 2 个或 2 个以上字节为空时, BIU 自动启动总线周期, 取指填充指令队列 直至队列满, 进入空闲状态 EU 每执行完一条指令, 从指令队列队首取指 系统初始化后, 指令队列为空,EU 等待 BIU 从内存取指, 填充指令队列

2.1 8086CPU 结构一 8086CPU 的内部结构 EU 取得指令, 译码并执行指令 若指令需要取操作数或存操作结果, 需访问存储器或 I/O, EU 向 BIU 发出访问总线请求 当 BIU 接到 EU 的总线请求, 若正忙 ( 正在执行取指总线周期 ), 则必须等待 BIU 执行完当前的总线周期, 方能响应 EU 请求 ; 若 BIU 空闲, 则立即执行 EU 申请总线的请求 EU 执行转移 调用和返回指令时, 若下一条指令不在指令队列中, 则队列被自动清除,BIU 根据本条指令执行情况重新取指和填充指令队列 空闲状态

2.1 8086CPU 结构一 8086CPU 的内部结构 指令流水

2.1 8086CPU 结构二 8086CPU 的寄存器结构 通用寄存器 段寄存器 标志寄存器 FR 指令指针寄存器 IP

2.1 8086CPU 结构二 8086CPU 的寄存器结构 1 通用寄存器 指令执行部件 (EU) 设有 8 个通用寄器 AX BX CX DX SP BP SI DI AX BX CX AH BH CH AL BL CL DX DH DL SI DI BP SP

2.1 8086CPU 结构二 8086CPU 的寄存器结构 1 通用寄存器 AX(Accumulator Register) 累加器一般用来存放参加运算的数据和结果, 在乘 除法运算 I/O 操作 BCD 数运算中有不可替代的作用 BX(Base Register) 基址寄存器除可作数据寄存器外, 还可放内存的逻辑偏移地址, 而 AX,CX,DX 则不能

2.1 8086CPU 结构二 8086CPU 的寄存器结构 1 通用寄存器 CX(Counter) 将它称作计数寄存器, 是因为它既可作数据寄存器, 又可在串指令和移位指令中作计数用 DX(Data Register) DX 除可作通用数据寄存器外, 还在乘 除法运算 带符号数的扩展指令中有特殊用途

2.1 8086CPU 结构二 8086CPU 的寄存器结构 1 通用寄存器 SI(Source Index) 源变址寄存器多用于存放内存的逻辑偏移地址, 隐含的逻辑段地址在 DS 寄存器中, 也可放数据 DI(Destination Index) 目标变址寄存器多用于存放内存的逻辑偏移地址, 隐含的逻辑段地址在 DS 寄存器中也可放数据

2.1 8086CPU 结构二 8086CPU 的寄存器结构 1 通用寄存器 BP(Base Pointer) 基址指针用于存放内存的逻辑偏移地址, 隐含的逻辑段地址在 SS 寄存器中 SP(Stack Pointer ) 堆栈指针用于存放栈顶的逻辑偏移地址, 隐含的逻辑段地址在 SS 寄存器中

2.1 8086CPU 结构二 8086CPU 的寄存器结构 寄存器的特殊用途和隐含性质 在指令中没有明显的标出, 而这些寄存器参加操作, 称之为 隐含寻址 具体的 : 在某类指令中, 某些通用寄存器有指定的特殊用法, 编程时需遵循这些规定, 将某些特殊数据放在特定的寄存器中, 这样才能正确的执行这些指令 采用 隐含 的方式, 能有效地缩短指令代码的长度

2.1 8086CPU 结构二 8086CPU 的寄存器结构 寄存器名 特殊用途 隐含性质 在输入输出指令中作数据寄存器用不能隐含 AX, AL 在乘法指令中存放被乘数或乘积, 在除法指令中存放被除数或商隐含 AH 在 LAHF 指令中, 作目标寄存器用 隐 含 AL 在十进制运算指令中作累加器用隐含在 XLAT 指令中作累加器用隐含 BX 在间接寻址中作基址寄存器用不能隐含在 XLAT 指令中作基址寄存器用隐含 CX 在串操作指令和 LOOP 指令中作计数器用 隐 含 CL 在移位 / 循环移位指令中作移位次数计数器用 不能隐含 DX 在字乘法 / 除法指令中存放乘积高位或被除数高位或余数隐含在间接寻址的输入输出指令中作地址寄存器用不能隐含 SI 在字符串运算指令中作源变址寄存器用隐含在间接寻址中作变址寄存器用不能隐含 DI 在字符串运算指令中作目标变址寄存器用隐含在间接寻址中作变址寄存器用不能隐含 BP 在间接寻址中作基址指针用 不能隐含 SP 在堆栈操作中作堆栈指针用 隐 含

2.1 8086CPU 结构二 8086CPU 的寄存器结构 2 段寄存器 总线接口部件 BIU 设有 4 个 16 位段寄存器 CS(Code Segment), 代码段寄存器中存放程序代码段起始地址的高 16 位 DS(Data Segment), 数据段寄存器中存放数据段起始地址的高 16 位 SS(Stack Segment), 堆栈段寄存器中存放堆栈段起始地址的高 16 位 ES(Extended Segment), 扩展段寄存器中存放扩展数据段起始地址的高 16 位

2.1 8086CPU 结构二 8086CPU 的寄存器结构 3 标志寄存器 FR 标志寄存器 FR 中共有 9 个标志位, 可分成两类 : 状态标志表示运算结果的特征, 它们是 CF PF AF ZF SF 和 OF 控制标志控制 CPU 的操作, 它们是 IF DF 和 TF

2.1 8086CPU 结构二 8086CPU 的寄存器结构 3 标志寄存器 FR

2.1 8086CPU 结构二 8086CPU 的寄存器结构 3 标志寄存器 FR CF(Carry Flag): 进位标志位 CF=l, 表示本次运算中最高位 (D15 或 D7) 有进位 ( 加法运算时 ) 或有借位 ( 减法运算时 ) CF 标志可通过 STC 指令置位, 通过 CLC 指令复位 ( 清除进位标志 ), 还可通过 CMC 指令将当前 CF 标志取反 PF(Parity Flag): 奇偶校验标志位 PF=1, 表示本次运算结果中有偶数个 l,pf= 0, 表示本次运算结果中有奇数个 1

2.1 8086CPU 结构二 8086CPU 的寄存器结构 3 标志寄存器 FR AF(Auxiliary Carry Flag): 辅助进位标志位 AF=l, 表示运算结果的 8 位数据中, 低 4 位向高 4 位有进位 ( 加法运算时 ) 或有借位 ( 减法运算时 ), 这个标志位只在十进制运算中有用 ZF(Zero Flag): 零标志位 ZF=1, 表示本次运算结果为零, 否则即运算结果非零时,ZF=0

2.1 8086CPU 结构二 8086CPU 的寄存器结构 3 标志寄存器 FR SF(Sign Flag): 符号标志 SF=1, 表示本次运算结果的最高位 ( 第 7 位或第 15 位 ) 为 l, 否则 SF=0 OF(Overflow F1ag): 溢出标志

2.1 8086CPU 结构二 8086CPU 的寄存器结构 3 标志寄存器 FR IF(Interrupt Flag): 中断标志位 IF=1, 表示允许 CPU 响应可屏蔽中断 IF 标志可通过 STI 指令置位, 也可通过 CLI 指令复位 DF(Direction Flag): 方向标志位在串操作指令中, 若 DF=0, 表示串操作指令地址指针自动增量 ;DF=1, 表示地址指针自动减量 DF 标志位可通过 STD 指令置位, 也可通过 CLD 指令复位 TF(Trap Flag): 单步标志位

2.1 8086CPU 结构二 8086CPU 的寄存器结构 4 指令指针寄存器 IP IP :BIU 要取的指令地址 说明 :

2.1 8086CPU 结构三 8086CPU 的管脚及功能 8086 是 16 位 CPU 它采用高性能的 N 沟道, 耗尽型负载的硅栅工艺 (HMOS) 制造 由于受当时制造工艺的限制, 部分管脚采用了分时复用的方式, 构成了 40 条管脚的双列直插式封装

2.1 8086CPU 结构三 8086CPU 的管脚及功能

2.1 8086CPU 结构三 8086CPU 的管脚及功能 1 8086 的两种工作方式最小模式 : 系统中只有 8086 一个处理器, 所有的控制信号都是由 8086CPU 产生 (MN/MX=1) 最大模式 : 系统中可包含一个以上的处理器, 比如包含协处理器 8087 在系统规模比较大的情况下, 系统控制信号不是由 8086 直接产生, 而是通过与 8086 配套的总线控制器等形成 (MN/MX=0)

2.1 8086CPU 结构三 8086CPU 的管脚及功能 最小模式下的引脚说明 (1) AD15~AD0 (Address Data Bus): 地址 / 数据复用信号, 双向, 三态 在 T1 状态 ( 地址周期 )AD15~AD0 上为地址信号的低 16 位 A15~A0; 在 T2 ~ T3 状态 ( 数据周期 ) AD15~AD0 上是数据信号 D15~D0

2.1 8086CPU 结构三 8086CPU 的管脚及功能 (2) A19/S6~A16/S3 (Address/Status): 地址 / 状态复用信号, 输出 在总周期的 T1 状态 A19/S6~A16/S3 上是地址的高 4 位 在 T2~T4 状态,A19/S6~A16/S3 上输出状态信息

BHE 2.1 8086CPU 结构三 8086CPU 的管脚及功能 S 4 S 3 当前正在使用的段寄存器 0 0 ES 0 1 SS 1 0 CS 或未使用任何段寄存器 1 1 DS

2.1 8086CPU 结构三 8086CPU 的管脚及功能 (3)BHE# /S7 (Bus High Enable/Status): 数据总线高 8 位使能和状态复用信号, 输出 在总线周期 T1 状态,BHE# 有效, 表示数据线上高 8 位数据有效 在 T2~T4 状态 BHE # /S7 输出状态信息 S7 S7 在 8086 中未定义

2.1 8086CPU 结构三 8086CPU 的管脚及功能 (4) RD# (Read) 读信号, 三态输出, 低电平有效, 表示当前 CPU 正在读存储器或 I/O 端口 (5) WR# (Write) 写信号, 三态输出, 低电平有效, 表示当前 CPU 正在写存储器或 I/O 端口 (6)M/IO# (Memory/IO ) 存储器或 I/O 端口访问信号 三态输出,M/IO# 为高电平时, 表示当前 CPU 正在访问存储器,M/IO# 为低电平时, 表示当前 CPU 正在访问 I/O 端口

2.1 8086CPU 结构三 8086CPU 的管脚及功能 (7)READY 准备就绪信号 由外部输入, 高电平有效, 表示 CPU 访问的存储器或 I/O 端口己准备好传送数据 当 READY 无效时, 要求 CPU 插入一个或多个等待周期 Tw, 直到 READY 信号有效为止

2.1 8086CPU 结构三 8086CPU 的管脚及功能 (8)INTR( Interrupt Request) 中断请求信号, 由外部输入, 电平触发, 高电平有效 INTR 有效时, 表示外部设备向 CPU 发出中断请求,CPU 在每条指令的最后一个时钟周期对 INTR 进行测试, 一旦测试到有中断请求, 并且当中断允许标志 IF=1 时, 则暂停执行下条指令转入中断响应周期

2.1 8086CPU 结构三 8086CPU 的管脚及功能 (9)INTA# (Interrupt Acknowledge) 中断响应信号 向外部输出, 低电平有效, 表示 CPU 响应了外部发来的 INTR 信号 (10) NMI( Non Maskable Interrupt Request) 不可屏蔽中断请求信号 由外部输入, 边沿触发, 正跳沿有效 CPU 一旦测试到 NMI 请求信号, 待当前指令执行完就自动从中断入口地址表中找到类型 2 中断服务程序的入口地址, 并转去执行

2.1 8086CPU 结构三 8086CPU 的管脚及功能 (11)TEST# 测试信号 由外部输入, 低电平有效 当 CPU 执行 WAIT 指令时 (WAIT 指令是用来使处理器与外部硬件同步 ), 每隔 5 个时钟周期对 TEST 进行一次测试, 若测试到该信号无效, 则 CPU 继续执行 WAIT 指令, 即处于空闲等待状态 ; 当 CPU 测到 TEST 输入为低电平时, 则转而执行 WAIT 的下一条指令 由此可见, TEST 对 WAIT 指令起到了监视的作用

2.1 8086CPU 结构三 8086CPU 的管脚及功能 (12)RESET 复位信号 由外部输入, 高电平有效 RESET 信号至少要保持 4 个时钟周期,CPU 接收到该信号后, 停止进行操作, 并对标志寄存器 (FR) IP DS SS ES 及指令队列清零, 而将 CS 设置为 FFFFH 当复位信号变为低电平时,CPU 从 FFFF0H 开始执行程序, 由此可见, 采用 8086CPU 计算机系统的启动程序就保持在开始的存储器中

2.1 8086CPU 结构三 8086CPU 的管脚及功能 (13)ALE(Address Latch Enable) 地址锁存使能信号, 输出, 高电平有效 用来作为地址锁存器的锁存控制信号 (14)DEN# (Data Enable) 数据使能信号, 输出, 三态, 低电平有效 用于数据总线驱动器的控制信号

2.1 8086CPU 结构三 8086CPU 的管脚及功能 (15) DT/R#(Data Transmit/Receive): 数据驱动器数据流向控制信号, 输出, 三态 在 8086 系统中, 通常采用 8286 或 8287 作为数据总线的驱动器, 用 DT/R# 信号来控制数据驱动器的数据传送方向 当 DT/R#=1 时, 进行数据发送 ; DT/R#=0 时, 进行数据接收

2.1 8086CPU 结构三 8086CPU 的管脚及功能 (16)HOLD(Hold Request) 总线请求信号 由外部输入, 高电平有效器向 CPU 请求使用总线 (17)HLDA(Hold Acknowledge) 共享总线的处理总线请求响应信号 向外部输出, 高电平有效

2.1 8086CPU 结构三 8086CPU 的管脚及功能 (18)MN/MX#(Minimum/Maximum Mode Control): 最大最小模式控制信号, 输入 MN/MX#=1 (+5V),CPU 工作在最小模式 MN/MX#=0 ( 接地 ), CPU 则工作在最大模式 (19) GND 地 (20) VCC 电源, 接 +5V

2.1 8086CPU 结构三 8086CPU 的管脚及功能 最大模式下的引脚说明当 8086CPU 工作在最大模式系统时, 有 8 个管脚重新定义 (1)S2# S1# S0#(Bus Cycle Status, 最小模式为 M/IO# D/TR# DEN#): 总线周期状态信号, 输出 这三个信号的组合表示当前总线周期的类型 在最大模式下, 由这三个信号输入给总线控制器 8288, 用来产生存储器 I/O 的读写等相关控制信号 如下表 :

2.1 8086CPU 结构三 8086CPU 的管脚及功能 S2# S1# S0# CPU 状态 8288 命令 0 0 0 中断响应 INTA# 0 0 1 读 I/O 端口 IORC# 0 1 0 写 I/O 端口 IOWC# AIOWC# 0 1 1 暂停无 1 0 0 取指令 MRDC# 1 0 1 读存储器 MRDC# 1 1 0 写存储器 MWTC# AMWC# 1 1 1 无作用无

2.1 8086CPU 结构三 8086CPU 的管脚及功能 (2)LOCK# 封锁信号 三态输出, 低电平有效 LOCK 有效时表示 CPU 不允许其它总线主控者占用总线 这个信号由软件设置 当在指令前加上 LOCK 前缀时, 则在执行这条指令期间 LOCK 保持有效, 即在此指令执行期间,CPU 封锁其它主控者使用总线 (3)QS1 QS0(Instruction Queue Status, 最小模式为 ALE INTA#): 指令队列状态信号, 输出 QS1,QS0 组合起来表示前一个时钟周期中指令队列的状态, 以便从外部对芯片的测试

2.1 8086CPU 结构三 8086CPU 的管脚及功能 (4)RQ#/GT0#,RQ#/GT1# (Request/Grant) 总线请求信号请求 / 同意信号 双向, 低电平有效, 当该信号为输入时表示其它主控者向 CPU 请求使用总线 ; 当为输出时表示 CPU 对总线请求的响应信号 两条线可同时与两个主控者相连, 同时,RQ#/GT0# 优先级高于 RQ#/GT1#

2.1 8086CPU 结构二 8086CPU 的寄存器结构 (5)QS1 QS0(Instruction Queue Status): 指令队列状态信号, 输出 QS1,QS0 组合起来表示前一个时钟周期中指令队列的状态, 以便从外部对芯片的测试 QS1 QS0 编码含义 0 0 无操作 0 1 从队列中取第一个字节 1 0 队列已空 1 1 从队列中取后续字节

2.2 8086 系统的储存器组织一 8086 存储器结构 8086 系统中的存储器是一个最多 1M 个 8 位数量的字节序列, 即可寻址的存储空间为 1M 字节, 系统为每个字节分配一个 20 位的物理地址 ( 对应 16 进制的地址范围从 00000H~FFFFFH) 00000H 00001H 0000FH FFFFFH

2.2 8086 系统的储存器组织一 8086 存储器结构 数据的存放形式 : 大端模式 (Big-Endian) 高位放低址 小端模式 (Little-Endian) 低位放低址 ( 一 ) 数据在内存的位置 字节 字 双字及其地址 ( 二 )8086CPU 对字 / 字节的读操作 16 位读 从偶地址读

2.2 8086 系统的储存器组织一 8086 存储器结构 D 8 D 15 D 0 D 7 00000H 00002H 00004H 00001H 00003H 00004H FFFFEH FFFFFH

2.2 8086 系统的储存器组织二 8086 存储器的分体结构 8086 系统中, 存储器是分体结构,1M 字节的存储空间分成两个 512K 字节的存储体 一个是偶数地址存储体, 一个是奇数地址存储体, 两个存储体采用字节交叉编址方式

2.2 8086 系统的储存器组织二 8086 存储器的分体结构 D 8 D 15 D 0 D 7 00000H 00002H 00004H 00001H 00003H 00004H FFFFEH FFFFFH 偶地址体 奇地址体

2.2 8086 系统的储存器组织三 存储器的分段 为什么分段 8086 存储器分 4 个段 段基地址与段寄存器 偏移地址的产生 逻辑地址 物理地址

2.2 8086 系统的储存器组织三 存储器的分段 段基地址和偏移地址组成了逻辑地址 格式为 : 段基地址 : 偏移地址 60000H 段首地址 0 0 0 0 60002H 00H 12H 段基地址 (16 位 ) 物理地址 = 段基地址 16+ 偏移地址

2.2 8086 系统的储存器组织三 存储器的分段 15 0 段内偏移地址 19 5 4~0 段寄存器 0000 段地址左移 4 位 19 0 20 位物理地址 物理地址的形成

2.2 8086 系统的储存器组织三 存储器的分段 8086 分段的好处 1 解决了 16 位地址寄存器对 20 位物理地址的寻址问题 2 实现了程序代码的浮动装配

8086 存储器组织

奇偶寻址字节访问

偶地址字传送

奇地址字传送

2.2 8086 系统的储存器组织三 存储器的分段 段寄存器使用约定 存储器操作类型隐含段 超越段 偏移量 取指令 CS 无 IP 堆栈 SS 无 SP 数据变量 DS CS,ES,SS 有效地址 源串变量 DS CS,ES,SS SI 目的串变量 ES 无 DI 基址 BP 指针 SS CS,ES,DS 有效地址

2.2 8086 系统的储存器组织四堆栈段的使用 所谓堆栈是在存储器中开辟一个区域, 用来存放需要暂时保存的数据, 其工作方式是 先进后出 或 后进先出 的方式 8086 系统中的堆栈段是由段定义语句在存储器中定义的一个段, 堆栈段容量小于等于 64K 字节 段基址由堆栈寄存器 SS 指定, 栈顶由堆栈指针 SP 指定, 堆栈地址由高向低增长, 栈底设在存储器的高地址区 8086 堆栈是递减型的 满 堆栈

2.3 8086 的工作模式和内部时序 工作模式 CPU 工作于最小模式时, 送到存储器和 I/O 接口的所有信号都由 CPU 产生 工作于最大模式时, 某些控制信号由 8288 总线控制器产生 最大模式主要用于包含数值协处理器 ( Numeric Data Processor, NDP)8087 的系统中 (FPU( 浮点运算单元 ))

2.3 8086 的工作模式和内部时序 一 二 三 最小模式系统 最大模式系统 总线操作时序

2.3 8086 的工作模式和内部时序一最小模式系统 8086 工作于最小模式时的系统配置图

2.3 8086 的工作模式和内部时序 一 最小模式系统 硬件包含 :8086 CPU 存储器 I/O 接口芯片, 还有 8 位地址锁存器 74LS373 8 位双向数据总线缓冲器 74LS245 和时钟产生器 8284A 3 片 74LS373 锁存器, 分离地址 / 数据线 AD 15 ~AD 0 地址状态线 A 19 /S 6 ~A 16 /S 3 和 BHE# 信号 这些总线上先传地址信号, 然后被锁存, 再传送数据或状态信号 8086 系统传送 16 位数据, 要用 2 片 74LS245 驱动 8088 仅传送 8 位数据, 只要 1 片缓冲器 缓冲器还可控制数据传送方向 锁存器也具有缓冲功能 8284A 产生系统所需的时钟信号

2.3 8086 的工作模式和内部时序 一 最小模式系统 74LS245 的逻辑功能和引脚图 门控信号 G#, 和方向控制端 DIR G 只有 G# =0, 数据才能传输, A B 或 A B; DIR=1, 传输方向 A B; DIR=0, 传输方向 A B

OE 2.3 8086 的工作模式和内部时序一最小模式系统 74LS373 的逻辑功能图和真值表 : OE OE OE

2.3 8086 的工作模式和内部时序一最小模式系统时钟发生器 8284A 8284A 为 8086/8088 系统提供 : 系统时钟信号 CLK 复位信号 RESET 准备好信号 READY 以及供外设用的时钟信号

2.3 8086 的工作模式和内部时序 一 最小模式系统 8284A 的时钟信号来源 : 如 F/C# 接低电平, 时钟信号源由晶体振荡器提供, 频率为 f = 14.31818MHz; 如 F/C# 接高电平, 用 EFI 端接入的外加振荡信号作时钟信号源 从 8284A 输出端可产生的信号 : CLK88- 频率 4.77MHz, 输入时钟 3 分频后得到, 可送给 8088 或 8288 作时钟脉冲 PCLK-CLK88 经 8284A 内部 2 分频产生的脉冲信号, 频率 2.385MHz OSC- 从 OSC 脚输出的脉冲信号, 频率为 14.31818 MHz PCLK 和 OSC 信号输出到系统外部, 供外部电路 ( 如 8253) 使用

2.3 8086 的工作模式和内部时序 一 最小模式系统 8284A 的作用 : 系统加电, 电源准备好信号 PWR GOOD 送 8284A 复位端 RES, 经它同步后形成系统复位信号 RESET 当 CPU 与慢速存储器或外设交换数据时, 会向 8284A 的 RDY 1 AEN1# 输入信号, 经它同步后使 READY 变低并送到 CPU 的 READY 端, 在 T 3 周期后插入 1~n 个等待周期 Tw, 直至外部数据准备就绪, 使 READY 变高才进入 T 4 周期, 完成数据传送 在 X 1 和 X 2 端接频率 15MHz 或 24MHz 晶振, 则经 8284A 做 2 分频, 在 CLK 端获得 5MHz 的 CLK86 或 8MHz 的 CLK86-2 信号, 供 8086 或 8086-2 作时钟脉冲信号

2.3 8086 的工作模式和内部时序 一 最小模式系统 CPU 可从存储器或 I/O 接口中读出数据, 也可向它们写入数据 以读存操作为例说明最小模式工作过程 1)CPU 送出 M/IO# 和 DT/R# 信号 M/IO# = 1 选中存储器 ; DT/R# 连到 74LS245 的 DIR, 控制传送方向 DT/R#=0 使 DIR=0, 数据 A B,CPU 准备接收内存读出的数据 2)CPU 先送出地址和 BHE# 信号, 再送出地址锁存 ALE A 19 /S 6 ~A 16 /S 3 AD 15 ~AD 0 BHE# 送 3 片 74LS373 输入 ; 这时, 地址 / 状态线和地址 / 数据线上传送地址信号 ; 当 ALE=1 时, 分离出的 A 19 ~A 0 和 BHE# 打入 74LS373; 当 ALE= 时, 20 位地址和 BHE# 被锁存在 74LS373 中

2.3 8086 的工作模式和内部时序 一 最小模式系统 3)74LS373 的输出允许端 OE# 恒接地 锁存的 20 位地址和 BHE# 信号直接送到 PC 总线上, 也被送到存储器系统, 用来选择存储单元 4)CPU 使 RD# =0,DEN# =0 RD# =0,CPU 要从指定存储单元读数据 ;DEN# =0, 表示允许收发数据 DEN# 与 74LS245 的 G 相连, 允许 74LS245 传送数据 由于第 1) 步中已设置缓冲器数据传送方向 A B, 所以可从存储单元读出数据, 经数据总线 D 15 ~D 0, 从 74LS245 的 B 端传送到 A 端, 再从 CPU 的 AD 15 ~AD 0 总线送入 CPU 的寄存器

2.3 8086 的工作模式和内部时序 二最大模式系统 8086 工作于最大模式时, 需增加一片总线控制器 (?) 8288

另 : 总线仲裁和总线仲裁器 8289

2.3 8086 的工作模式和内部时序 二最大模式系统 8288 总线控制器的引脚及内部结构框图

2.3 8086 的工作模式和内部时序 二最大模式系统 8288 的输入输出总线信号 其总线信号分成 4 组 1. 状态输入信号 S2# S0# 8086 送来, 译码后产生总线周期类型信号 2. 由外部输入的控制信号 CLK 时钟输入信号, 由 8284A 时钟发生器提供 AEN# 地址允许 CEN 命令允许 IOB I/O 总线模式信号 3. 总线控制信号 R DT/R#, DEN( 反相后为 DEN#),ALE 与最小模式类似, MCE/PDEN# 为主控级联允许 / 外设数据允许信号

2.3 8086 的工作模式和内部时序 二最大模式系统 4. 总线命令信号 MRDC# 正常的存储器读信号 是最小模式下 RD#=0 和 M/IO#=1 的组合, 送到 PC 总线后称为 MEMR# MWTC# 正常的存储器写信号 是最小模式下 WR#=0 和 M/IO#=1 的组合, 送到 PC 总线后称为 MEMW# AMWC# 超前的存储器写信号, 有时需给存储器提供一个较早的超前写信号 IORC# 正常的 I/O 读信号, 是 RD#=0 和 M/IO#=0 的组合, 在 PC 总线中称为 IOR# IOWC# 正常的 I/O 写信号, 等于 WR#=0 和 M/IO#=0 的组合, 在 PC 总线中称为 IOR# ATOWC# 超前的 I/O 写信号 在某些情况下需要给 I/O 端口提供一个较早的超前写信号 INTA# 中断响应信号

2.3 8086 的工作模式和内部时序 三内部时序 1 时序基本概念 时钟周期或状态周期 :8086CPU 内部的逻辑操作以及与外部存储器和 I/O 交换数据进行的总线操作全部由 CPU 的时钟来定时的 CPU 的基本定时单位称为时钟周期或者状态周期 假设 8086 的主频为 10MHz, 一个时钟周期为 100ns 总线周期 :CPU 为了读取指令或传送数据, 需要通过总线接口部件 BIU 与存储器或 I/O 接口进行信息交互, 执行对总线的操作 进行一次数据传送的总线操作定义为一个总线周期 指令周期 : 完成一条指令所需要的时间, 是由一个或多个总线周期组成

2.3 8086 的工作模式和内部时序 三内部时序 2 典型时序图 典型总线周期示意图

(1) 最小方式下的总线读操作 2.3 8086 的工作模式和内部时序 三内部时序

2.3 8086 的工作模式和内部时序 三内部时序 最小模式读总线周期 1)T 1 状态 首先, 由 M/IO# 确定是读内存或 I/O 端口 时序图中, M/IO# 可能是 1 或 0 若执行读内存指令 M/IO#=1,I/O 操作 M/IO#=0 其次, 给出指定单元地址以便读出 T 1 开始,20 位地址及从 A 19 /S 6 ~A 16 /S 3 AD 15 ~AD 0 及 BHE#/S 7 线输出到 74LS373 锁存器 若读 I/O 端口, 不用传送高 4 位地址 A 19 ~A 16 同时, 从 ALE 输出地址锁存信号 ALE=1 时, 地址和 BHE# 打入锁存器, 在 ALE= 时锁定 此后复用信号线就用来传送数据和状态信号 此外, 还置 DT/R=0, 使 74LS245 的 DIR=0, 设定数据传送方向 A B, 允许从内存或 I/O 端口读入数据

2.3 8086 的工作模式和内部时序 三内部时序 最小模式读总线周期 2)T 2 状态 在 A 19 /S 6 ~A 16 /S 3 BHE#S 7 总线上传送状态信息 AD 15 ~AD 0 呈高阻态, 为接收数据作好准备 DEN 在 T 2 状态的后半周期,RD#=0, 允许从内存或 I/O 端口读出数据 ; 数据允许信号 DEN#=0, 使 74LS245 的门控输入 G# =0, 允许接收数据 3)T 3 状态 读取数据 数据出现在 D 15 ~D 0 上, 数据从 74LS245 的 B A, 经 AD 15 ~AD 0 送入 CPU 寄存器 若是 8 位数据操作, 仅用低 8 位数据线传送 8 位数据 与慢速设备交换数据时, 需在 T 3 和 T 4 状态之间插入等待周期 Tw

2.3 8086 的工作模式和内部时序 三内部时序 最小模式读总线周期 4)T 4 状态 数据 状态信号在总线上维持一段时间 到 T 4 后半周期, 数据信号撤除, 各控制和状态信号无效,DEN# 无效, 禁止收发数据, 读总线周期结束

2.3 8086 的工作模式和内部时序 三内部时序 (2) 最小方式下的总线写操作

2.3 8086 的工作模式和内部时序 三内部时序 (3) 最大模式下的总线读操作

2.3 8086 的工作模式和内部时序 三内部时序 (4) 最大模式下的总线写操作

2.4 IA 微处理器技术的发展 * 一 IA 微处理器的进化 二 Pentium 微处理器

2.4 IA 微处理器技术的发展 * 计算机体系结构的含义计算机体系结构 = Computer Architecture 计算机体系结构是程序员所看到的系统的一些属性 : 概念性的结构和功能上的表现, 这些属性既不同于数据流和控制的组织, 也不同于逻辑设计和物理实现 Amdahl,1964 计算机体系结构是连接硬件和软件的一门学科, 它研究的内容不但涉及计算机硬件, 也涉及计算机软件

2.4 IA 微处理器技术的发展 * 兼容性针对系列计算机要求所有机种间能够保持向上兼容和向后兼容向上兼容 : 为某个档次机种编制的软件能够不加修改地运行在比它高档的机种上向后兼容 : 为某个时期生产的机种编制的软件能够不加修改地运行在它之后生产的机种上 兼容性针对 ( 软件 ) 体系结构, 非硬件实现

2.4 IA 微处理器技术的发展 * 一 IA 微处理器的进化 Intel 结构 (IA) 处理器性能的提高及采用的相关技术 IA 处理器的寄存器组织 取指令和预取指令队列和具有等待状态的总线周期 MMU 和虚拟存储 采用 Cache 技术, 克服存储器速度的瓶颈效应问题 超标量流水线技术与指令分支预测

2.4 IA 微处理器技术的发展 * 一 IA 微处理器的进化 1 IA 处理器的寄存器组织

2.4 IA 微处理器技术的发展 * 一 IA 微处理器的进化 1 IA 处理器的寄存器组织 1) 基本结构寄存器 通用 REG AX~DX EAX~EBX SP BP SI DI ESP EBP ESI EDI 段 REG CS SS DS ES FS GS 指令指针 REG IP EIP 标志 REG Flags Eflags*

2.4 IA 微处理器技术的发展 * 一 IA 微处理器的进化 1 IA 处理器的寄存器组织 2) 系统级寄存器 控制 REG CR0~CR3*,CR4 系统地址 REG 和限长 IDTR GDTR 存放全局描述符表的基地址 存放全局描述符表的基地址和限长 LDTR 选择符 (LDT 基址 限长 属性 ) TR 选择符 ( 任务基址 限长 属性 ) 3) 调试与测试寄存器 调试 REG DR0~DR7 测试 REG TR6~TR7,TR3~TR5

2.4 IA 微处理器技术的发展 * 一 IA 微处理器的进化 2 预取指令队列 IA 微处理器的预取指令队列 为解决较快速度指 令执行和较慢速度 指令读取的矛盾 处理器 8088 8086 80286 80386 80486 Pentium 队列长度 (byte) 4 6 6 16 32 2 64 (2 queues)

2.4 IA 微处理器技术的发展 * 一 IA 微处理器的进化 3 MMU 和虚拟存储器 MMU 和虚拟存储机制扩大存储空间 286:MMU,16MB 物理 1GB 虚拟 16K 个段描述符描述 16K 个存储段, 每段 64KB 实模式 1M, 保护 16MB 386:MMU 增加分页选择, 线形 物理地址转换, 4GB 物理 64TB 虚拟控制寄存器 CR0:PE 位, 实模式 保护模式转换 Pentium:64GB 物理空间

2.4 IA 微处理器技术的发展 * 一 IA 微处理器的进化 4 Cache 技术 1) 外部 Cache 80386 系统 : 20~25Mhz,CPU 可以实现零等待的存储器访问 CPU 内集成 MMU CPU 和 Cache 的数据传送是通过外部总线进行的, ( 外部总线成为制约 CPU 访问时间的因素 )

2.4 IA 微处理器技术的发展 * 一 IA 微处理器的进化 4 Cache 技术 2) 内部统一 Cache 结构 80486 系统 : Cache 设计在 CPU 芯片中 代码与数据统一存放在同一 Cache 中 5 级流水线,1 条指令 /CLK Cache 的争用问题例如 : 执行 MOV mem,reg

2.4 IA 微处理器技术的发展 * 一 IA 微处理器的进化 4 Cache 技术 3) 代码与数据分离的 Cache 结构 Pentium CPU: 独立的 8KB 代码 Cache 和 8KB 数据 Cache 4) 两级 Cache Pentium 和 80486 采用了二级 Cache 技术, 在内部 Cache 不命中时, 访问 CPU 外部的第二级 Cache

2.4 IA 微处理器技术的发展 * 一 IA 微处理器的进化 5 超标量流水线技术与指令分支预测 Cache 的发展, 单条流水线的指令执行速度已经不能和指令的快速预取相匹配 超标量流水线使得 Pentium 的指令执行速度比 80486 提高一倍 Pentium 采用了指令的分支预测技术, 在预测正确的情况下, 不发生时间延误

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 Pentium 的结构特点超标量流水线指令的分支与预测 Pentium 的工作模式

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 Pentium 的结构特点 1 Pentium 的功能单元 1) 总线单元 2) 数据 Cache 3) 代码 Cache 4) 指令预取器 5) 预取缓冲器 6) 指令译码单元 7) 控制单元 8) 整数执行单元 9) 寄存器组 10) 地址产生器 11) 分页单元 12) 浮点单元

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 1) 总线单元 地址发送接收器 写缓冲器 数据总线收发器 总线控制逻辑 总线主控制 第二级 Cache 控制 内部 Cache 控制 奇偶校验码生成和控制

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 2) 数据 Cache 8K 字节 每行 32 字节 两路组相联结构组织的高速缓存 Cache 目录为三端口结构 允许两条流水线同时访问并支持监听功能

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 3) 代码 Cache 8K 字节 每行 32 字节 两路组相联结构组织的高速缓存 Cache 目录为三端口结构 允许两条流水线同时访问并支持监听功能

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 4) 指令预取器 将所需要的指令从代码 Cache 读到指令预取器, 如果所需要的指令行不在代码 Cache 中, 它启动一个总线的猝发周期,CPU 从外部存储器取指进行 Cache 行填充操作

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 5) 预取缓冲器 包含两组指令预取缓冲器, 两组之间相互独立 指令预取器从指令 Cache 中取出指令, 将它们顺序存放在一组预取缓冲器中, 另一组缓冲器则处于空闲状态 当分支指令被预测会发生转移时, 预取器将从转移目标地址开始取出指令, 放入第二组空闲的预取缓冲器中 预取器一直使用第二组缓冲器直到另一条分支指令被预测, 再切换回第一组缓冲器 在线性取指和执行指令时, 预取缓冲器将一对指令分别送到两条流水线 U 和 V 的指令译码器, 进行指令配对分析

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 6) 指令译码单元 两级指令译码单元, 译码级 1(Decode1) 和译码级 2 (Decode2) 译码级 1 除了包含指令配对检查逻辑以外, 还包含分支目标缓冲器 BTB(Branch Target Buffer) BTB 具有分支预测功能 译码级 2 包含流水线 U 和 V 的存储器操作数产生逻辑 分段逻辑以及期望检测逻辑 在 Decode1 中, 检查在两条流水线中操作码是否满足 Pentium 指令的配对规则, 如果满足, 两条指令同时被送到 Decode2 如果指令是分支指令, 则由 BTB 检查预测该指令是否会发生分支转移 在 Decode2 中, 计算指令的操作数在存储器中的地址

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 7) 控制单元 包含微代码序列器和微代码控制 ROM 进行解释指 令控制断点 控制中断 控制整数流水线和浮点流水线的操作

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 8) 执行单元 两个 ALU, 分别属于 U V 流水线 一个桶状移位器, 属于 U 流水线 U 的执行单元可以完成比 V 相对复杂的指令, 并可先于 V 中的 ALU 完成操作

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 9) 寄存器组 10) 地址产生器每条流水线有一个地址产生器 根据每条流水线中指令的操作数形成特定的地址

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 11) 分页单元 将地址产生器来的线性地址转换为物理地址 分页单元包含一个转换旁视缓冲器 (translation look-aside buffer), 用来保存最近使用过的页目录项和页表项 12) 浮点单元 一条浮点流水线具有 8 级流水阶段, 可以在每个 CLK 执行一条指令, 最快可以达到每个 CLK 执行两条指令

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 12) 浮点单元 指令预处理阶段 PF(Prefetch) 第一指令译码阶段 D1(Decode stage 1) 第二指令译码阶段 D1(Decode stage 2) 指令执行阶段 EX(Execute) 第一浮点指令执行阶段 X1(Execute 1) 第二浮点指令执行阶段 X2(Execute 2) 结果回写到寄存器文件阶段 WF(Write Floatingpoint Register)

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 2 寄存器组织 Pentium 的寄存器组织

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 1 系统复位和代码 Cache 填充 RESET 以后,Cache 是被禁止的, 应由驻留程序设置 Cache 的使能位 Cache 首次置为有效后, 内部的数据无效 指令预取器从 Cache 预取指令时, 发生 Cache 不命中 Cache 向总线单元提出 Cache 行填充请求, 通知总线单元从外部 Cache 或主存储器取指, 将 Cache 行填满 Cache 行填充是在总线的猝发周期进行的 CPU 每次将 32 字节代码在一个猝发周期内读入 Cache 行填充缓冲器 在送入 Cache 的同时, 送入指令预取器

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 2 指令预取 指令由指令预取器从代码 Cache 中取出, 成对存放在两组预取缓冲器 ( 预取指令队列 ) 中有效的一组缓冲器中 指令队列中指令顺序存放, 提供给两条指令流水线, 直至遇到一条分支指令时可能会发生变化 预测分支指令是否发生地址转移, 是在执行级的译码单元 1 由分支目标缓冲器中的分支预测逻辑进行判断的 如果预测该分支指令将要发生地址转移, 则 BTB 通知指令预取器切换指令存放的队列, 预取器从分支目标地址处开始取指 如果预测不发生转移, 预取器仍然顺序取指并将指令存放在现行工作的指令队列中 指令队列切换后, 由当前有效的指令队列给两条流水线输送分支目标地址及以后的指令

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 3 指令配对和操作数地址计算 有效的指令队列将两条指令分别送 U 和 V 流水线的 Decode1, 配对检测逻辑进行配对检查 如果两条指令能够配对执行, 译码级 1 将它们送到译码级 2 如果不能配对, 则将 V 流水线中的指令转移到 U 流水线中, 两条指令在 U 流水线中串行地执行 在译码级 2 中计算操作数地址 不管操作数是什么寻址方式, 译码级 2 用一个 CLK 完成操作数地址的计算

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 4 指令并行执行条件和配对规则 1) 指令的并行执行 U V 流水线执行级各有一个 ALU U 的 ALU 包含一个桶状移位器, 可以执行一些在 V 流水线中不能执行的复杂指令 两条指令能够配对, 它们被并行执行 两个 ALU 可同时形成数据 Cache 或数据存储器的访问请求, 对目标寄存器或标志寄存器的回写 指令执行是通过 5 个流水步完成的 在执行级, 如果 V 流水线拖延了时间,U 流水线可以继续做如回写目标寄存器或标志寄存器的工作 反之则不行 若 U 流水线拖延,V 只能等待 U

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 4 指令并行执行条件和配对规则 2) 指令的配对规则 两条指令是简单指令 ; mov reg,reg/mem/imm mov mem,reg/imm inc reg/mem dec reg/mem push reg/mem pop reg 等等 非一字节指令长度相等 ;

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 4 指令并行执行条件和配对规则 2) 指令的配对规则两条指令不存在寄存器争用的问题, 即两条指令并行执行时不会访问同一个寄存器 ; read-after-write 相关 : mov AX, imm; mov [BP], AX; write-after-write 相关 : 例 1: mov AX, imm; mov AX, [BP]; 例 2: mov AL, imm1; mov AH, imm2.

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 Pentium 的结构特点超标量流水线指令的分支与预测 Pentium 的工作模式

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 超标量流水线

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 指令的分支与预测 1 分支目标缓冲器和分支预测逻辑 分支预测逻辑, 可以对将要执行的分支指令进行动态的转移预测 分支预测逻辑是以该分支指令的历史执行情况为预测依据的 支持分支预测机制的关键部件是分支目标缓冲器 BTB(Branch Target Buffer) 它是一个 256 行 4 路组相联结构的 Cache, 它记录了已执行过的分支指令的信息

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 分支目标缓冲器 BTB(Branch Target Buffer) 256 个目录行, 每行包括 : 1 bit 指示该项是否正在使用 2 bits 历史记录位表示该分支指令发生转移的频度 这条转移指令源存储器的地址 ; 该转移指令最后一次执行时的目标地址 ; 分支预测逻辑根据 BTB 中的记录, 按照一定转移预测策略对当前的分支指令进行转移预测

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 分支目标缓冲器 BTB(Branch Target Buffer) 转移频度表 历史记录 表示转移发生频度 00 Strongly not taken 01 Weakly not taken 10 Weakly taken 11 Strongly taken

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 2 动态转移预测策略 2) 分支指令执行后 BTB 对记录的操作 根据转移发生情况对历史位的修改

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 Pentium 的工作模式 实地址方式 (real address mode) 保护虚拟地址方式 (protected virtual address mode) 虚拟 8086 方式 (virtual 8086 mode) 系统管理方式 (system management mode)

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 1 Pentium 的工作模式 特权级的环形保护

2.4 IA 微处理器技术的发展 * 二 Pentium 微处理器 2 工作模式之间的转换控制寄存器 CR0: PE EFLAG:VM SMI#; RSM 指令 工作模式之间的转换