Pentium微处理器
Pentium微处理器是一种最先进的32位微处理器。它与DOS,Windows, OS/2和UNIX基础上的应用软件兼容。
有两组算术逻辑单元(ALU)、两条流水线、能同时执行两条指令;
并且把数据cache(高速缓冲存储器)和代码cache分开;不仅提高了总线的速度;还将数据总线增加到64条;
流水浮点部件提供了工作站的特性。因此它几乎具有两台80X86的功能。
Pentium的原理结构
包括12个主要部件,核心部件是两个流水线执行部件和浮点处理部件
总线接口部件
- 实现CPU与系统总线的连接,包含64位数据线、32位地址线和控制信号线,实现信息交换
U流水线和V流水线
- 独立运行,均含ALU。每条流水线含5级(取指令、译码、生成地址、执行指令、回写)
- U:可执行所有的整数运算指令 V:执行简单的整数运算和数据交换指令
数据Cache
- 存放CPU最近要使用的数据和指令,提高存取速度,并分别配置了转换检测缓冲器
代码Cache
- Cache存放CPU最近要使用的数据和指令,提高存取速度,并配置转换检测缓冲器(TLB),将线性地址转换为高速缓存的物理地址
控制ROM
- 含有复杂指令对应的微程序
分支目标缓冲器BTB
- BTB在遇到条件转移指令时用来预测是否发生转移,并提供预取地址
控制部件
- 通过解析指令译码器中的译码信息和控制ROM中的微程序,控制两条流水线和FPU的执行
浮点处理单元FPU
- 采用硬件电路实现加、乘、除浮点运算
分段部件和分页部件
- 分段/分页实现对存储器的两级管理
寄存器组
- 通用寄存器
- 段寄存器
- 描述符寄存器
- 指令计数器
- 标志寄存器
- 控制组寄存器
- 系统地址寄存器
- 调试寄存器
指令预取部件
- 从指令缓存中预取指令流
指令译码器
- 三个译码器进行译码
Pentium的主要部件
总线接口部件
64位数据线、32位地址线、控制总线
功能
① 地址驱动和传输:A31~ A3、BE7#~BE0#
② 数据驱动:D63~D0
③ 数据总线宽度控制(8,16,32,64位通过控制信号实现总线宽度控制)
④ 数据缓冲
⑤ 总线操作的控制功能(数据传输,成组传输,中断,复位,DMA操作等)
⑥ 奇/偶校验告示功能
⑦ Cache操作控制(片内和片外Cache一致性)
U流水线和V流水线,独立运行
代码Cache和数据Cache(高速缓存可读写RAM)
- 两者分开,减少冲突,提高数据存取命中率
- 两者分别配置专用的TLB(转换检测缓冲器),将线性地址转换为高速缓存的物理地址
指令预取部件IPU、指令译码器IDU、控制ROM和分支目标缓冲器BTB
- IPU每次预取两条指令
- 复杂指令需要控制ROM的转换(转换为微程序)
控制部件(控制流水线和FPU的正常运行)
- FPU按流水线机制执行指令(8级)
- 是U流水线的补充
- 浮点运算指令的前4级在U流水线中执行
- 常用浮点指令采用专门的硬件电路实现
- 支持32位、64位、80位精度
分段部件和分页部件
- 片内二级存储管理
- 分段将逻辑地址转换为物理地址
- 分页将线性地址转换为物理地址
先进的体系结构
- 外部数据总线为64位,数据传输量提高一倍
- 设置片内代码cache和数据cache(速度高容量小的存储器)提高取指令和读/写数据速度
- 两条指令流水线并行执行
- 片内集成FPU(浮点运算器),是U流水线的补充,采用硬件实现浮点运算,对ADD,MUL,INC,DEC,PUSH等常用指令采用硬件实现
- 采用分段和分页两级存储管理机制,存储管理方便灵活
- 增强了信息传输准确性的检测能力和机器异常事件的处理能力
RISC,CISC技术
计算机流水线一般是:指令流水线和运算流水线
RISC出现后,就出现了超流水线,超标量等体系结构
CISC
新设计的处理器,只需要增加较少的电晶体就可以执行同样的指令集,也可以很快的编写新的指令集程式。
优点:能够有效缩短新指令的微代码设计事件,允许设计师实现CISC体系机器的向上相容
缺点:指令集以及晶片的设计比上一代产品更复杂,不同的指令需要不同的时钟周期完成,执行较慢的指令,将影响整台机器的执行效率
RISC
解决途径就是减少微处理器指令总数和减少指令操作的时钟周期数
精简指令集:包含了简单的基本指令,透过简单,基本的指令,就可以组成复杂指令。
相同长度的指令:每条指令的长度都是相同的,可以再一个单独西操作里完成。
单机器周期指令:大多数的指令都可以再一个机器周期里完成,并且允许处理器在同一时间内执行一系列的指令
优点:在使用相同的晶片技术相同运行时钟下,RISC系统的运行速度是CISC的2~ 4倍
缺点:要选用合适的编译器;多任务环境下,会形成任务切换时众多寄存器保护和恢复的需求,从而增加操作量
Pentium结合两者之长——大多数指令采用简化指令,但仍保留一部分复杂指令并用硬件实现
RISC对编译器的要求高,CISC强调硬件的复杂性,CPU的实现更为复杂
超标量流水线
超流水线结构:一个时钟周期再细分伟多个子周期,每个子周期发出一条指令
超标量结构:再每个时钟周期内发射多条指令,这要求微处理器片内集成两条或以上的流水线
超标量超流水线结构:就是超流水线和超标量结合起来
标准状态下:一个处理器含有一条指令流水线
Pentium微处理器的超标量执行机构允许两条指令以并行的方式执行:一条叫U流水线,一条叫V流水线
这种双流水线可以使两条指令并行执行,使Pentium微处理器在每个时钟周期内可以同时执行两条指令
U流水线和V流水线均含有独立的ALU,一系列寄存器,地址生成电路和连接数据Cache存取数据,称为Cache双端接口
要求所有指令基本都是简化指令,V流水线能接受U流水线的下一条指令
先进的分支预测技术
BTB可以进行动态分支预测
BTB含有一个1KB容量的Cache,BTB中存放三种信息。
以前执行过的分支指令的地址记录BIA;该分支指令的跳转目的地址BTA;分支历史记录,历史状态有四种情况:必定转移,可能转移,可能不转移,必定不转移
指令解码完成后,CPU搜索BTB中的记录,如果当前指令的地址与BTB某一条目中的BIA部分记录相符,则成为一次BTB命中。BTB命中后首先根据该条目分支历史纪录来判定分支是否跳转,如果判定为跳转,那么CPU按条目中BTA的地址纪录取指令,否则依旧按编译顺序取指令。如果BTB未命中,.则同样按编译顺序取指令。
与此同时,不论BTB是否命中,也不论预测结果如何,分支指令依然会被送到下级处理单元,直至执行完成,并将执行结果回馈给BTB。如果出现误预测,则修改历史记录,并清空流水线里的后续指令,并按正确的地址进行取指。
进一步提高性能:
双向分支预测 芯片内部配置了两个预取缓冲存储器 一个按照BTB预测结果预取指令,并在预取指令时,在BTB中建立一个登记项
Pentium的指令流水线技术
指令流水线的组成
总线接口部件
- 控制数据总线和地址总线的信息传输
- 主要进行读取指令和存取指令
指令预取部件
在总线空闲时从存储器读取指令放入指令预取队列
指令译码部件
对指令译码,送入译码指令队列
执行部件
控制两条流水线的运行
总线接口部件、指令预取部件、指令译码部件和存储器管理部件构成了80386CPU指令流水线
指令流水线的原理
非流水线方式
以此执行取指令,指令译码,执行三个操作
流水线
- Pentium的整数运算流水线最初由5级组成:
- 指令预取级PF、首级译码级D1、二次译码级D2(形成物理地址)、执行级EX、回写级WB
- 级别越多,速度越快
- Pentium4的流水线达20级
- Pentium的浮点运算部件也采用流水线机制运行 8级组成:PF、D1、D2、EX、X1、X2、WF、ER
八个阶段的浮点流水线:
- PF 预取
- D1 译码阶段1
- D2 译码阶段2
- EX 取操作数
- X1 浮点执行步骤1
- X2 浮点执行步骤2
- WT 写浮点数
- ER 出错报告
超标量流水线技术
标准状态下:
- 一个处理器含有一条指令流水线
超标量:
- 一个处理器中又多条指令流水线
指令流水线的组成:
- 总线接口部件、指令预取部件、指令译码部件、执行部件
Pentium的一条指令流水线:
- 5级:指令预取级PF、首次译码级D1、D2、执行级EX、回写级WB
Pentium中:
- U、V两条流水线,U—所有整数运算,V—简单整数运算和数据交换指令
- 每条流水线均含有独立的ALU、一系列寄存器、地址生成电路、连接数据Cache的接口
超标量:
- 以并行方式在U、V两条流水线上同时执行两条指令
- 在U流水线中可以执行任何指令
- V流水线中只能执行和U流水线当前执行的指令符合配对规则的指令
配对规则:
- 两条指令都是简单指令(包括RISC指令)
- 互相没有寄存器关联性:两条指令中的寄存器不是“读后写”或者“写后写”的关系(不能对同一寄存器多次操作)
- 一条指令不能同时既包含位移量又包含立即数
- 带前缀的指令只能出现在U流水中
- 浮点运算指令不能和任何指令配对
过程:
- D1步骤,指令译码器中的两个并行的译码部件对两套指令译码,并用指令配对规则进行判断
- 不能100%配对成功:V流水线不会全速运行
流水线受阻的情况:
- U:影响V
- V:不会影响U