370 likes | 449 Views
第 3 章. 32 位微处理器. 本章知识要点: 本章以 32 位的 Pentium 为平台,站在微处理器芯片整体结构角度,把构成 CPU 的诸如寄存器组、总线接口部件、存储管理部件、分支转移缓冲存储器、控制部件、预取缓冲部件、指令译码部件、整数部件、浮点部件等各部件的结构、功能、工作原理,以及 Pentium 所采用的超标量执行技术、分支转移预测技术、流水线操作技术、浮点部件、浮点流水线操作等先进技术进行了描述。 本章内容是微机知识的核心、是重点、难点所在, 通过本章的学习,读者得到是系统、先进的微机知识。.
E N D
第 3 章 32位微处理器
本章知识要点: 本章以32位的Pentium为平台,站在微处理器芯片整体结构角度,把构成CPU的诸如寄存器组、总线接口部件、存储管理部件、分支转移缓冲存储器、控制部件、预取缓冲部件、指令译码部件、整数部件、浮点部件等各部件的结构、功能、工作原理,以及Pentium所采用的超标量执行技术、分支转移预测技术、流水线操作技术、浮点部件、浮点流水线操作等先进技术进行了描述。 本章内容是微机知识的核心、是重点、难点所在, 通过本章的学习,读者得到是系统、先进的微机知识。
3.1 CISC和RISC 1 复杂指令系统计算机—CISC 每一种微处理器的CPU都有属于它自己的指令系统。CPU正是通过执行一系列的特定的指令来实现应用程序的某种功能。像Intel x86系列,为了增加新的功能,就必须增加新的指令;另一方面,为了保持向上兼容,又必须保留原有的指令。每条指令又有若干个不同的操作字段,用来说明要操作的数据类型,以及存放的位置。这就意味着一个较大的指令系统和复杂的寻址技术。以这样的微处理器为平台的计算机系统就是“复杂指令系统计算机”(CISC)。 CISC也有许多优点,如指令经编译后生成的指令程序较小执行起来较快,节省硬件资源。像存取指令的次数少,占用较少的存储器等。
2 .精简指令系统计算机—RISC “精简指令系统计算机”(RISC)的核心思想,是通过简化指令来使计算机的结构更加简单、合理,从而提高CPU的运算速度。解决途径就是减少微处理器指令总数和减少指令操作的时钟周期数。经过当时的技术比较测试表明,处于同样工艺水平的芯片,RISC的运行速度是CISC运行速度的3-5倍。 特征: (1) 每个计算机周期执行一条指令 (2) 进行的是寄存器与寄存器之间的操作 (3) 寻址方式简单 (4) 指令格式简单
3.2 Pentium 体系结构 3.2.1Pentium寄存器 Pentium配备的寄存器按类可分为如下几类: (1)基本体系结构寄存器: ① 通用寄存器; ② 指令指针寄存器; ③ 标志寄存器; ④ 段寄存器; (2)系统级寄存器: ① 系统寄存器; ② 系统地址寄存器; (3)调试和测试寄存器: (4)浮点寄存器: 浮点寄存器包括: ①数据寄存器;②标记字寄存器; ③状态字寄存器 ;④ 指令和数据指针寄存器; ⑤ 控制字寄存器;
通用寄存器 斜体表示8位寄存器名称 32位寄存器名称 31 16 15 8 7 0 AH AL BH BL CH CL DH DL 中间是16位寄存器名称 EAX 累加寄存器 AX EBX BX 基址寄存器 ECX CX 计数寄存器 EDX DX 数据寄存器 EBP 基地址指针寄存器 BP ESI SI 源变址寄存器 EDI DI 目标变址寄存器 ESP SP 堆栈指针寄存器
段寄存器 15 0 代码段寄存器CS 堆栈段寄存器SS 代码段寄存器 CS 堆栈段寄存器 SS 数据段寄存器 DS 附加数据段寄存器 ES 附加数据段寄存器 FS 附加数据段寄存器 GS 标志和指令指针寄存器 标志寄存器 FLAGS 指令指针寄存器 IP 31 0 注:图中的深色部分表明,只有32位的80386、80486,Pentium微处理器 才配备有、且可以用这些32位的寄存器。
1.基本体系结构寄存器 (1) 通用寄存器 8个通用寄存器也可以称之为多功能寄存器,它们全部是32位寄存器,而且用户可以随意使用这8个32位通用寄存器。在这些寄存器内存放着逻辑操作和算术运算用的操作数,除堆栈指针寄存器ESP不能作为变址寄存器使用外,其余七个通用寄存器在进行地址计算时都可用来存放参与运算的操作数。
(2) 段寄存器 Pentium器配备有6个16位的段寄存器,他们分别是: 代码段寄存器CS、数据段寄存器DS、 堆栈段寄存器SS、附加数据段寄存器ES、 附加数据段寄存器FS、附加数据段寄存器GS。 这6个段寄存器与80386的6个段寄存器同宗、同名、同功能。段寄存器的另一种称呼叫段选择符,也有的称其为段选择子。
(3)标志寄存器 Pentium标志寄存器的作用是用来存放有关Pentium的状态标志信息、控制标志信息以及系统标志信息。各条件码(例如进位、符号、溢出)及方式位均存放在的标志寄存器EFLAGS中,如图所示。 标志寄存器中这些标志不仅控制着微处理器的某些操作,且随时随地的指示出微处理器的状态。标志寄存器内不仅有状态和控制标志,而且还有几位是系统标志位。状态标志位用S表示,控制标志位用C表示,系统标志位用X表示。
(4) 指令指针寄存器 指令指针寄存器EIP内保存有当前代码段中下一条要执行指令的偏移量。指令指针寄存器不直接供程序员使用,它由控制转移指令(转移、返回等指令)、中断及异常隐含地进行控制。
32位线性基地址 界限 47 0 全局描述符寄存器 中断描述符寄存器 16 15 GDTR IDTR 系统段寄器 描述符寄存器(自动装入) 属性 32位线性基地址 32位段界限 15 0 选择符 选择符 TR LDTR 3.系统级寄存器 (1) 系统地址寄存器 ① 全局描述符表寄存器GDTR ② 中断描述符表寄存器IDTR ③ 局部描述符表寄存器LDTR ④ 任务寄存器TR
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 页 故 障 线 性 地 址 寄 存 器 31 7 6 5 4 3 2 1 0 P S E M CE TSD V M E PVI DE CR4 0 31 12 11 4 3 0 PWT PCD CR3 31 16 15 0 CR2 31 16 15 0 保 留 CR1 (2) 控制寄存器 Pentium由于控制管理的需要,又配备了5个控制寄存器。CR0、CR1、CR2、CR3和CR4。
AM WP EM MP PE PG NW NE ET TS CD CR0 不写贯穿 禁止Cache 允许分页 对准屏蔽 写保护 数值错 扩展类型 任务切换 模拟浮点部件 监控浮点部件 允许保护 ① 控制寄存器CR0
② 控制寄存器CR1: Pentium微处理器的CR1控制寄存器没有定义,供将来用。 ③ 控制寄存器CR2: Pentium的CR2控制寄存器内保存的是页故障线性地址。 ④ 控制寄存器CR3: Pentium的CR3控制寄存器是页目录基地址寄存器,保存着页目录表的物理基地址。 ⑤ 控制寄存器CR4 较之80386、80486微处理器,Pentium又新配备了一个CR4控制寄存器。其内共设置了6个控制位。其目的是用来扩展Pentium的某些体系结构。
3.2.2Pentium 体系结构 Pentium是由总线接口部件(64位的)、 存储管理部件(分段、分页管理部件)、 指令Cache、数据Cache、 分支转移目标缓冲存储器、 控制ROM部件、控制部件、 预取缓冲部件、指令译码部件、 整数运算部件、整数及浮点数寄存器组、浮点运算部件等功能组成。
(1)总线接口部件 总线接口部件与片内Cache外部总线接口实行的是逻辑接口连接。当访问Cache出现没命中、或需更改系统存储器内容、或需向Cache写入某些信息时,就要通过总线接口从外部存储器系统中取出一批数据。 (2)预取缓冲部件 取指令是指从高速缓冲存储器Cache内或从内存储器中取出指令代码,以备译码之用的操作。 (3)指令译码部件 译码操作, 一是检查一条指令的格式, 二是确定它是哪种类型操作的指令,并给出这条指令所需的操作数。 (4)控制部件 Pentium微处理器控制部件的作用是,负责解释来自指令译码部件的指令字和控制ROM的微代码。控制部件的输出控制着整数流水线部件和浮点部件。 (5)执行部件 是微处理器用于执行指令所规定的具体操作的CPU的核心硬件部分。这些非常具体的操作是指诸如数值运算、逻辑操作以及分支转移处理等。
(6)分段部件 Pentium的存储管理是采用了分段存储管理技术和分页存储管理技术实现的。 所谓段,就是一个被保护的独立的Pentium使用的存储器内的存储空间。 分段部件的功能是,将由程序提供的逻辑地址转换成一种线性地址。 (7) 分页部件 Pentium微处理器的分页存储管理部件,在整个存储管理系统内采用的是二级分页管理机制。 使用分页部件可以使程序能够访问比实际存储空间大很多的数据结构,所采用的手段就是将这种大数据结构的一部分保存在主存储器之内,而另一部分则保存在磁盘上的分页技术。
3.3 Pentium 采用的新技术 1. 超标量执行 超标量是指那种拥有多条指令流水线,并在每个时钟周期中可执行一条以上的指令(在理想情况下)的微处理器处理指令的操作方式。 Pentium的超标量体系结构,配备有三条流水线,一条是执行浮点指令的浮点部件内的浮点流水线,而另两条则是整数运算部件内执行整数指令的U流水线和V流水线。这样就使得Pentium拥有了可同时执行3条指令的能力。
PF D1 取指令且对准 D2 指令译码 生成控制字 EX 控制字译码 生成存储器地址 控制字译码 生成存储器地址 WB 访问数据Cache 或ALU计算 访问数据Cache 或ALU计算 U流水线 V流水线 写结果 写结果 超标量执行
2 分支转移预测技术 • 分支转移预测和推测执行技术 采用分支转移预测和动态推测执行的主要目的,是为了提高CPU的运行速度。推测执行是建立在分支 转移预测基础上的一项技术。 推测执行是指允许CPU去处理那些不一定总能被执行的指令,例如,跳过条件的分支转移。在经分支转移预测程序预测判断之后,决定是否进行分支转移,接下来所要进行的处理就是推测执行。 2. 分支转移预测判断 为了支持在Pentium内采用的分支转移预测新技术,芯片内装备有两个预取缓冲存储器,一个是以线性方式来预取代码,另一个则是根据分支转移目标缓冲器(BTB)预取代码。这样就可以保证在执行之前将所需用的指令从存储器预取出来。 由于Pentium采用了这项技术,可以在无延迟的情况下正确地预测各种转移。另外,V流水线中的条件转移指令可以与一条比较类指令成对执行,当然也可以与U流水线中的置标志指令配合执行。但Pentium作到了与现有软件是完全兼容,所以不必修改现有软件。
3 流水线技术 流水线操作(Pipeline),类似于大工业生产的“装配线”设计,Pentium微处理器的流水线操作是指把指令的操作处理分解成许多更小的操作步骤或操作阶段,每个操作步骤或操作阶段都由各自独立的电路来实现的。 当一条指 令执行完了一个操作步骤之后,它就按顺序进入到流水线操作的下一个操作步骤,而前一个操作步骤则会继续处理后续的指令。
2. Pentium整数流水线 Pentium的整数流水线操作是由 预取PF、 首次译码D1、 二次译码D2、 执行EX、 写回WB 共五个操作步骤组成。
非流水线操作为了更好地说明流水线操作技术,以及更好地认识流水线操作的技术进步, 先从非流水线操作认识起
当一条指令在执行的过程之中时,其他指令则要眼吧吧地看着这条指令的执行,等待着这条指令的完成。只有前一条指令经历了这五个操作步骤,完成了这条指令的操作,下一条指令才可得以进入指令的执行,同样又是五个时钟周期时间,同样又是其他指令的等待。这种非流水线操作方式并没有把计算机执行的时间资源有效地利用起来当一条指令在执行的过程之中时,其他指令则要眼吧吧地看着这条指令的执行,等待着这条指令的完成。只有前一条指令经历了这五个操作步骤,完成了这条指令的操作,下一条指令才可得以进入指令的执行,同样又是五个时钟周期时间,同样又是其他指令的等待。这种非流水线操作方式并没有把计算机执行的时间资源有效地利用起来
指令流水线操作Pentium整数指令的执行要经过指令预取PF、指令首次译码 D1、二次译码D2、指令执行EX和写回WB这五个操作步骤。在流水线内会有5条指令同时执行。
指令流水线操作Pentium是一种能够以并行方式同时执行两条指令的超标量机器。两条指令按照流水线操作的5个操作步骤以并行方式执行操作,使整数指令能够在一个时钟里,在两条流水线上同时执行指令流水线操作Pentium是一种能够以并行方式同时执行两条指令的超标量机器。两条指令按照流水线操作的5个操作步骤以并行方式执行操作,使整数指令能够在一个时钟里,在两条流水线上同时执行
指令配对规则 Pentium微处理器每个时钟可以发出一条或两条指令。要同时发出两条指令,必须满足下列配对规则: ① 配对两条指令必须是所谓的“简单”指令; ② 两条指令之间不得存在“写后读”或“写后写”这样的寄存器相关性; ③ 一条指令不能同时既包含位移量又包含立即数; 带前缀(JCC指令的OF除外)的指令只能出现在U流水线中。 依赖性或相关性是指,只有当一条指令执行完毕之后,才允许另一条指令执行的一个条件。
3.4 Pentium 操作模式 Pentium有两种主要的操作模式及一种“系统管理模式”。操作模式决定可使用哪些指令及体系结构特性。这些模式如下: (1) 保护模式 这是微处理器的本机状态,在这个模式下所有指令及体系结构特性均可以使用。 (2)实地址模式(也称实模式) 这种模式提供了8086的程序设计环境,并有一些扩展功能(如退出该模式, 复位时把处理器置于实模式,也可以通过一条指令使处理器切换到保护模式。 (3)系统管理模式 Pentium还支持系统存储管理模式(SMM),SMM是所有新的Intel微处理器(从80386开始)所特有的一种标准体系结构特性。
3.5 浮点部件 Pentium 通过芯片内的浮点部件把浮点技术表现得淋漓尽致,由于Pentium 微处理器把浮点部件与整数部件、分段部件、分页部件等都集成到同一芯片之内,而且执行的是流水线操作方式。把整个浮点部件设计成每个时钟周期都能够进行一次浮点操作,每个时钟周期可以接受两条浮点指令,但是其中的一条浮点指令必须是交换类的指令。 对程序设计人员来说,可把Pentium芯片内的浮点部件FPU看成是一组辅助寄存器,是数据类型的扩展;还可以把浮点部件的指令系统看成是Pentium指令系统的一个子集。 Pentium 的浮点部件是在80486浮点部件的基础上重新设计而成。其整体性能比80486性能会高出5倍之多。
标志字段 79 0 1 0 78 64 63 指 数 符号 R0 有效数位 R1 R2 R3 R4 R5 R6 R7 3.5.1 浮点部件体系结构 1. 数值寄存器 Pentium浮点部件的数值寄存器是由8个80位的数值寄存器、三个16位的寄存器等构成。其中,这8个80位的能各自独立进行寻址的数值寄存器,又可用来构成一个寄存器堆栈。
15 0 控制字寄存器 状态字寄存器 标记字寄存器 而3个16位的寄存器分别称之为浮点部件FPU的状态字寄存器、浮点部件控制字寄存器和标记字寄存器。
浮点部件正忙 栈顶指针 条件码 10 15 14 13 11 9 8 7 6 5 4 3 2 1 0 C0 C2 PE TOP C3 C1 ES SF UE IE ZE B OE DE 概括出错状态 堆栈故障异常 精度事故 下溢事故 溢出标志 除数为零 非规格式化操作数 无效操作事故 2.状态字寄存器 Pentium 片内浮点部件状态字寄存器内容反映的是浮点部件的全部状态和环境。根据其作用状态字又可以进一步细分成两个字段:一个是异常事故标志字段,另一个则是状态位字段。首先用一条存放在存储器中的浮点操作指令检查状态字,然后再使用Pentium 指令代码再检查各位状态。
(无穷大控制) 保留 圆整操作 精度操作 9 15 14 13 12 11 10 8 7 6 5 4 3 2 1 0 X X X X R P C IM C X OM ZM DM PM X UM 保留 异常事故屏蔽 精度 下溢 上溢 除数为零 非规格式化操作数 无效操作 3. 控制字寄存器 控制字内包括有事故屏蔽,允许中断屏蔽以及若干控制位。图中示出了控制字格式以及各字段的意义。
9 8 15 14 13 12 11 10 7 6 5 4 3 2 1 0 TAG(7) TAG(0) TAG(5) TAG(4) TAG(1) TAG(6) TAG(3) TAG(2) 4.标记字寄存器 标记字的功能优化了浮点部件的性能,图中展示出标记字各字段,从图中可以看出,标记字是由八个字段构成,每个字段长度均为两位,分别用来标志 八个数据寄存器。
3.5.2 浮点部件流水线操作 1.Pentium浮点流水线 Pentium的浮点部件则是在80486的基础上重新进行了设计。它所采用的快速算法可以使诸如加法、乘法以及装入这样的常用操作速度提高了10倍。 (1)浮点流水线操作 Pentium 浮点流水线是由预取PF、首次译码D1、二次译码D2、存储器和寄存器的读操作EX、首次执行X1、二次执行X2、写浮点数WF和出错报告ER共八个操作步骤组成。 其中预取PF和首次译码D1这两个操作步骤与整数流水线中的前两个操作步骤公用同一硬件资源。而浮点流水线中的第三个操作步骤是开始激活浮点指令的执行逻辑,其实浮点流水线中的前五个操作步骤与整数流水线中的五个操作步骤是同步执行的,只是多出了三个步骤而已。
浮点部件中的这八个操作步骤: PF 预取 D1 指令译码(首次译码) D2 地址生成(二次译码) EX 存储器和寄存器的读操作,将浮点数据转换成外部存储格式且还要执行存储器的写操作。 X1 浮点执行步骤1(首次执行); 将外部存储器数据格式转换成内部浮点数据格式,并且还要把操作数写到浮点寄存器上。 X2 浮点执行步骤2(二次执行); WF 写浮点数,完成舍入操作,并且把计算后的浮点结果 写到浮点寄存器(此时可进行旁路2操作)。 ER 报告出现的错误/更新状态字的状态。