当前位置:文档之家› (整理)Pentium微处理器内部寄存器.

(整理)Pentium微处理器内部寄存器.

Pentium微处理器的内部寄存器Pentium是Intel公司于1993年3月推出的第五代80X86系列微处理器,简称P5或80586,中文译名为“奔腾”。

与其前辈80X86微处理器相比,Pentium采用了全新的设计,它有64位数据线和32位地址线,但依然保持了与其前辈80X86的兼容性,在相同的工作方式上可以执行所有的80X86程序。

Pentium的内部结构如图2.4所示。

它主要由执行单元、指令Cache、数据Cache、指令预取单元、指令译码单元、地址转换与管理单元、总线单元以及控制器等部件组成。

其中核心是执行单元(又叫运算器),它的任务是高速完成各种算术和逻辑运算,其内部包括两个整数算术逻辑运算单元(ALU)和一个浮点运算器,分别用来执行整数和实数的各种运算。

为了提高效率,它们都集成了几十个数据寄存器用来临时存放一些中间结果。

这些功能部件除地址转换和管理单元与80386/80486保持兼容外,其他都进行了重新设计。

1) 超标量体系结构和指令流水线Pentium由“U”和“V”两条指令流水线构成超标量流水线结构,其中每条流水线都有自己的ALU、地址生成逻辑和Cache接口。

这种双流水线技术可以使两条指令在不同流水线中并行执行。

图2.4 Pentium微处理器的内部结构每条流水线又分为指令预取PF、指令译码(一次译码)D1、地址生成(二次译码)D2、指令执行EX和回写WB共5个步骤。

图2.5给出了Pentium的指令流水线操作示意。

图2.5 Pentium指令流水线操作示意图当第一条指令完成指令预取,进入第二个操作步骤D1,执行指令译码操作时,流水线就可以开始预取第二条指令;当第一条指令进入第三个步骤D2,执行地址生成时,第二条指令进入第二个步骤D1,开始指令译码,流水线又开始预取第三条指令;当第一条指令进入第四个步骤EX,执行指令规定的操作时,第二条指令进入第三个步骤D2,执行地址生成,第三条指令进入第二个步骤D1,开始指令译码,流水线又开始预取第四条指令;当第一条指令进入第五个步骤WB,执行回写操作时,第二条指令进入第四个步骤EX,执行指令规定的操作,第三条指令进入第三个步骤D2,执行地址生成,第四条指令进入第二个步骤D1,开始指令译码,流水线又开始预取第五条指令。

这种流水线操作并没有减少每条指令的执行步骤,5个步骤哪一步都不能跳越。

但由于各指令的不同步骤之间并行执行,从而极大地提高了指令的执行速度。

从第一个时钟开始,经过5个时钟后,每个时钟都有一条指令执行完毕从流水线输出。

在这种理想情况下,Pentium 的超标量体系结构每个时钟周期内可执行两条整数指令(每条流水线执行一条指令)。

2) 重新设计的浮点运算部件Pentium的浮点运算部件在80486的基础上作了重新设计,采用了超流水线技术,由8个独立执行部件进行流水线作业,使每个时钟周期能完成一个浮点操作(或两个浮点操作)。

采用快速算法可使诸如ADD、MUL和LOAD等运算的速度最少提高3倍,在许多应用程序中利用指令调度和重叠(流水线)执行可使性能提高5倍以上。

同时,这些指令用电路进行固化,用硬件来实现,使执行速度得到更大提高。

3) 独立的指令Cache和数据CachePentium片内有两个8KB的超高速缓存器,一个是指令Cache,一个是数据Cache。

转换后备缓冲器TLB(Translation Look-aside Buffer)的作用是将线性地址转换为物理地址。

这两种Cache采用32×8线宽,是对Pentium的64位总线的有力支持。

指令和数据分别使用不同的Cache,使Pentium中数据和指令的存取减少了冲突,提高了性能。

Pentium的数据Cache有两种接口,分别与U和V两条流水线相连,以便能在相同时刻向两个独立工作的流水线进行数据交换。

当向已被占满的数据Cache中写数据时,将移走当前使用频率最低的数据,同时将其写回内存,这种技术称为Cache回写技术。

由于CPU向Cache 写数据和将Cache释放的数据写回内存是同时进行的,所以采用Cache回写技术将节省处理时间。

4) 分支指令预测。

Pentium提供了一个称为BTB(Branch Target Buffer)的小Cache来动态地预测程序的分支操作。

当某条指令导致程序分支时,BTB记忆下该条指令和分支的目标地址,并用这些信息预测该条指令再次产生分支时的路径,预先从该处预取,保证流水线的指令预取步骤不会空置。

这一机构的设置,可以减少在循环操作时对循环条件的判断所占用的CPU的时间。

5) 采用64位外部数据总线Pentium芯片内部ALU和通用寄存器仍是32位,所以还是32位微处理器,但它同内存储器进行数据交换的外部数据总线为64位,使两者之间的数据传输速度可达528MB/s。

此外Pentium还支持多种类型的总线周期,在突发方式下,可以在一个总线周期内读入256B的数据。

2. Pentium的外部引脚Pentium芯片有168个引脚,这些引脚信号线也即Pentium CPU总线,分为三大类:总线接口引脚、处理器控制引脚、调试与测试引脚。

1) 总线接口信号Pentium的总线接口信号如表2.1所示。

这些引脚信号包括用于管理访问外部存储器和I/O端口必须的地址、数据和总线周期控制信号,以及Cache控制信号。

D63~D是Pentium的64位双向数据总线。

A31~A3和0~7BEBE构成32位地址总线,以提供存储器和I/O端口的物理地址。

A31~A3用于确定一个8字节单元地址,0~7BEBE则用于指明在当前的操作中要访问8字节中的哪些字节。

Pentium 微处理器规定:0BE对应数据线D 7~D 0;1BE 对应数据线D 15~D 8;2BE 对应数据线D 23~D 16;3BE 对应数据线D 31~D 24;4BE对应数据线D 39~D 32;5BE对应数据线D 47~D 40;6BE对应数据线D 55~D 48;7BE对应数据线D 63~D 56。

Pentium 微处理器的地址线没有设置A 2、A 1和A 0引脚,但可由0~7BE BE 这8个字节使能信号产生,为保持与前辈80X86的兼容性,还应产生BHE 信号。

C D /(数据/控制)、R W /(写/读)、IO M /(存储器/IO)是总线周期定义的基本信号,这3个信号的不同组合可以决定当前的总线周期所要完成的操作,如表2.2所示。

这些操作的意义将在有关章节加以介绍。

2) 处理器控制信号处理器控制信号如表2.3所示。

包括时钟、处理器初始化、FRC 、总线仲裁、Cache 窥视、中断请求、执行跟踪、数字出错和系统管理等信号。

3) 调试与测试引脚调试与测试信号如表2.4所示。

包括探针方式、断点/性能监测和边界扫描等引脚信号。

2.3.2内部寄存器Pentium的内部寄存器按功能分为四类:基本寄存器、系统级寄存器、调试与模型专用寄存器、浮点寄存器。

它们是在80486内部寄存器的基础上扩充而来,并与其前辈80X86保持了兼容。

主要差别是Pentium用一组模型专用寄存器代替了80486的测试寄存器,并扩充了一个系统控制寄存器。

1. 基本寄存器基本寄存器包括通用寄存器、指令指针寄存器、标志寄存器和段寄存器,这些寄存器都是在8086/8088基础上扩展而来的,如图2.6所示。

图2.6 基本寄存器1) 通用寄存器8个32位通用寄存器EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP是在8086/8088的8个16位寄存器基础上扩展位数而来的。

为了与8086/8088兼容,它们的低16位可以单独访问,并以同8086/8088中相同的名称命名: AX、BX、CX、DX、SI、DI、BP、SP。

其中AX、BX、CX、DX还可进一步分成两个8位寄存器单独访问,且同样有自己独立的名称: AH、AL,BH、BL,CH、CL,DH、DL。

上述寄存器中,(E)SP是指示栈顶的指针,称为堆栈寄存器。

在32位寻址时,8个32位寄存器均可用作存储器访问的地址寄存器,但在16位寻址时,只能使用BX、BP、SP、SI、DI寄存器,其中BX和BP称为基址寄存器,SI和DI称为变址寄存器,(E)CX则常用于循环控制,又称为循环计数寄存器,(E)AX则称为累加器。

2) 指令指针寄存器(EIP)EIP用于保存下一条待预取指令相对于代码段基址(由CS提供)的偏移量。

它的低16位也可以单独访问,并称之为IP寄存器。

当80X86/Pentium工作在32位操作方式时,采用32位的EIP;工作在16位操作方式,采用16位的IP。

用户不可随意改变其值,只能通过转移类、调用及返回类指令改变其值。

3) 标志寄存器(EFLAGS)标志寄存器EFLAGS是32位的,它是在8086/8088/80286标志寄存器FLAGS的基础上扩充而来的,共定义了三类17种(18位)标志,即:状态标志6种(CF、PF、AF、ZF、SF和OF),用于报告算术/逻辑运算指令执行后的状态;控制标志1种(DF),用于控制串操作指令的地址改变方向;系统标志10种11位(TF、IF、IOPL、NT、RF、VM、AC、VIF、VIP和ID),用于控制I/O、屏蔽中断、调试、任务转换和控制保护方式与虚拟8086方式间的转换。

图2.7给出了EFLAGS中各位的标志名以及各标志位与CPU的隶属关系,取值为0的位是Intel保留的,并未使用。

各标志位意义如下:图2.7 标志寄存器①进位标志CF(位0): CF=1表示运算结果的最高位产生了进位或借位。

这个标志主要用于多字节数的加减法运算。

移位和循环指令也用到它。

②奇偶标志PF(位2): PF=1表示运算结果中有偶数个1。

该标志主要用于数据传输过程中检错。

③辅助进位标志AF(位4): AF=1表示运算导致了低4位向第5位(位4)的进位或借位。

该标志主要用于BCD码运算。

④零标志ZF(位6): ZF=1表示运算结果的所有位为0。

⑤符号标志SF(位7): SF=1表示运算结果的最高位为1。

对于用补码表示的有符号数,SF=1表示结果为负数。

⑥自陷标志TF(位8): TF=1表示CPU将进入单步执行方式,即每执行一条指令后都产生一个内部中断。

利用它可逐条指令地调试程序。

⑦中断允许标志IF(位9): IF=1表示CPU允许外部可屏蔽中断,否则禁止外部可屏蔽中断。

注意,IF标志对内部中断和外部不可屏蔽中断(NMI)不会产生影响。

⑧方向标志DF(位10): DF=1表示在串操作过程中地址指针(E)DI和(E)SI的变化方向是递减,否则为递增。

⑨溢出标志OF(位11):OF=1表示有符号数运算时,运算结果的数值超过了结果操作数的表示范围。

相关主题