第2章 16位和32位微处理器 2.1 16位微处理器8086/8088 2.2 32位微处理器80386 2.3 32位微处理器Pentium
2.1 16位微处理器8086/8088 2.1.1 8086/8088 CPU的内部结构 2.1.2 8086/8088 CPU的寄存器结构 2.1.3 8086/8088 CPU的引脚信号和功能 2.1.4 8086/8088系统的工作模式 2.1.5 8086/8088的操作和时序 2.1.6 8086/8088的存储器组织
简介 8086:16位微处理器 数据总线宽度16位:可以处理8位或16位数据 地址总线宽度20位:可直接寻址1MB存储单元和 64KB的I/O端口 8088:准16位处理器 内部寄存器及内部操作均为16位,外部数据总线8位 8088与8086指令系统完全相同,芯片内部逻辑结构、芯片引脚有个别差异。 设计8088的目的主要是为了与Intel原有的8位外围接口芯片直接兼容。
2.1.1 8086/8088 CPU的内部结构 1.总线接口部件BIU(Bus Interface Unit) 2.执行部件EU(Execution Unit)
1.总线接口部件BIU 功能 负责与内存或I/O端口传送指令或数据。 BIU从内存取指令送到指令队列缓冲器。 当EU执行指令时,BIU要配合EU从指定的内存单元或I/O端口中读取数据,或者把EU的操作结果送到指定的内存单元或I/O端口去。 组成:段寄存器、指令指针寄存器、地址加法器、指令队列及总线控制逻辑
1)段寄存器 所有寄存器都是16位的,因此,能够提供的最大地址空间只能为64 KB。 为了寻址1MB,将存储器的空间分成若干段,每段最大为64KB。 段寄存器:用来存放段的起始地址(16位)的寄存器,设有四个段寄存器: CS 代码段寄存器(Code Segment register) DS 数据段寄存器(Data Segment register) SS 堆栈段寄存器(Stack Segment register) ES 附加数据段寄存器(Extra Segment register)
2)地址加法器 由于8086内部寄存器都是16位的,需要一个附加结构-地址加法器来根据提供的16位信息产生20位地址。
3)指令队列缓冲器 在8086 CPU中设置了一个6字节的指令预取队列(8088 CPU中的指令预取队列为4字节),采用“先进先出”原则。 要执行的指令预先由BIU从内存取出放在队列中,然后EU再从队列中取出指令并执行。 一般情况下,EU每执行完一条指令,就可以立即从指令队列中取指令执行,从而提高了CPU的效率。
2.执行部件EU 功能 负责指令的译码和执行。 负责向总线接口部件BIU提供偏移地址。 对通用寄存器和标志寄存器进行管理。 组成:算术逻辑单元(ALU)、8个通用寄存器、1个状态标志寄存器、1个数据暂存寄存器和EU控制电路
执行部件EU的组成 算术逻辑部件ALU(Arithmetic Logic Unit) 用于进行8位和16位的算术和逻辑运算,也可以按照指令的寻址方式计算出寻址单元的16位偏移量。 16位标志寄存器F 用来反映CPU运算的状态特征或存放控制标志。 通用寄存器组 4个16位数据寄存器AX、BX、CX、DX 4个16位指针与变址寄存器: 堆栈指针寄存器SP(Stack Pointer) 基址指针寄存器BP(Base Pointer) 源变址寄存器SI(Source Index) 目的变址寄存器DI(Destination Index)
3.BIU和EU的流水线管理 每当8086的BIU指令队列中有2个空字节或8088的指令队列有1个空字节,BIU就会自动把后面的指令从存储器取到指令队列中,从而提高了CPU执行指令的速度。 每当EU准备执行一条指令时,它会从BIU的指令队列前部取出指令,进行译码,然后去执行。
2.1.2 8086/8088 CPU的寄存器结构
1.通用寄存器 分为数据寄存器和地址寄存器两组。 数据寄存器:EU中有4个16位的数据寄存器AX、BX、CX、DX,每个数据寄存器又可分为高字节H和低字节L寄存器,即AH、BH、CH、DH和AL、BL、CL、DL两组。16位数据寄存器主要用于存放数据,也可存放地址,而8位寄存器只能用于存放数据,它们均可以用寄存器名来独立寻址、独立使用。 地址指针寄存器和变址寄存器:都是16位,一般用来存放偏移地址。
2.指令指针寄存器 16位,存放着BIU要取的下一条指令的偏移地址。 指令执行时,每取一次指令IP就自动加1,这样保证能按顺序取出并执行指令。 指令代码存放在存储器的代码段,代码段寄存器CS指示代码段的开始, CPU利用CS和IP取得要执行的指令,然后修改IP中的内容,从而确定代码段指令的执行流向。
3.标志寄存器(16位) 只用了其中的9位 8086的标志分为两类: 状态标志位 控制标志位
1)状态标志位(6位) 用来反映算术或逻辑运算后结果的状态,以记录CPU的状态特征。例如,是否产生了进位,是否发生了溢出等等。
1)状态标志位(续) 加法时,最高位(字节操作时的D7位,字操作时的D15位)是否有进位产生。 进位标志CF(Carry Flag) 加法时,最高位(字节操作时的D7位,字操作时的D15位)是否有进位产生。 减法时,最高位(字节操作时的D7位,字操作时的D15位)是否有借位产生。 奇偶标志PF(Parity Flag) 若运算结果低8位中“1”的个数为偶数,则PF=1;否则PF=0。
1)状态标志位(续) 辅助进位标志AF(Auxiliary carrry Flag) 也称“半进位标志”。 加法时,第3位向第4位有进位。 减法时,第3位向第4位有借位。 零标志ZF(Zero Flag) 若运算结果为0,则ZF=1;否则ZF=0。
1)状态标志位(续) 符号标志(Sign Flag) 它和运算结果的最高位相同。 溢出标志OF(Overflow Flag) 若运算过程中发生了“溢出”,则OF=1,否则OF=0。
2)控制标志位(3位) 每一位控制标志都对一种特定的功能起控制作用。 可以通过专门的指令对其进行“置位”(Set)或“复位”(Reset)。
2)控制标志位(续) 中断允许标志IF(Interrupt Enable Flag) 如果IF置“1”,则CPU可以接受可屏蔽中断请求;反之,则CPU不能接受可屏蔽中断请求。 STI 使IF置“1”,即开放中断。 CLI 使IF清“0”,即关闭中断。
2)控制标志位(续) 方向标志DF(Direction Flag) 用于串操作指令中的地址增量修改(DF=0)还是减量修改(DF=1)。 STD使DF=1。 CLD使DF=0。
2)控制标志位(续) 跟踪标志TF(Trap Flag) 若TF=1,则CPU按跟踪方式(单步方式)执行程序,否则将正常执行程序。
4.段寄存器 专门存放段地址的寄存器,它们是: 代码段寄存器CS 数据段寄存器DS 堆栈段寄存器SS 附加段寄存器ES。 每个段寄存器可以确定一个段的起始地址,这些段寄器的内容与有效的地址偏移量一起可确定内存的地址。
1)存储器分段的概念 8086/8088有20位地址线,能够寻址1 MB的内存空间,但是CPU内部存放地址信息的IP、SP、SI、DI或BX等寄存器却只有16位,很显然,不采取特殊措施,是不能寻址1 MB存储空间的。 所谓分段技术就是把1MB的存储空间分成若干逻辑段,每个逻辑段最大具有64 KB的存储空间。 段内地址是连续的,段与段之间是相互独立的。逻辑段可以在整个存储空间浮动,即段的排列可以连续、分开、部分重叠或完全重叠,非常灵活。
2)逻辑地址和物理地址 8086要求各逻辑段的第一个单元的地址(称为段首址)的最低4位应该是全0(即段首址是16的整数倍)。 段首址的高16位称为段基址。段基址存放在段寄存器中。 段内存储单元距离段首地址的偏移量(以字节数计算),叫做偏移地址,也称有效地址EA。偏移地址存放在IP、BP、SI、DI或BX中,或者是通过计算得到。 逻辑地址通常用段基址:偏移地址的形式来描述。 实际地址(也称物理地址)是指CPU和存储器进行数据交换时实际寻址所使用的地址,对8086/8088来说是用20位二进制数或5位十六进制数表示的地址。 任何一个单元的20位物理地址都是由它的逻辑地址变换得到的。
物理地址的形成 物理地址=段基址×16+偏移地址
注意 程序中只能使用逻辑地址。 一个物理地址可对应于多个逻辑地址,即一个存储单元的物理地址是唯一的,而逻辑地址是可以不唯一的。例如,物理地址是12345H,它的逻辑地址可以是1233H:0015H,也可以是1234H:0005H。
3)堆栈 堆栈是存储器中的一个段,一个栈的深度最大为64KB。 SS给定堆栈段的段基址,SP给定当前栈顶。 堆栈是以“先进后出”或“后进先出”原则管理的存储区域。
4)段寄存器的使用
段寄存器使用时的一些基本约定
2.1.3 8086/8088 CPU的引脚信号和功能 8086总线周期的概念: 为了取得指令或传送数据,就需要CPU的总线接口部件(BIU)执行一个总线周期。 一个最基本的总线周期由4个时钟周期组成。 习惯上将4个时钟周期分别称为4个状态,即T1状态、T2状态、T3状态和T4状态。
8086/8088的引脚信号 (括号中为最大模式时引脚名)
1.8086最小模式下引脚的功能定义 MN/MX 最小/最大模式设定,输入。 MN/MX=1时:工作方式设置为最小模式,在此方式下,系统全部控制信号由8086本身提供; MN/MX=0时:工作方式设置为最大模式。
AD15~AD0 地址/数据复用引脚。 传送地址时为三态输出,传送数据时可双向三态输入/输出。 在8088中,只有AD7~AD08条地址/数据线,AD15~AD8只用来输出地址。
A19/S6~A16/S3 地址/状态复用引脚,三态,分时输出。 在T1状态:输出高4位地址。访问存储器时,A19 ~A16与AD15 ~AD0组成20位地址;访问I/O端口时,不使用这4条引线。 在T2~T4状态:输出状态信息。 S6=0:表示CPU与总线相连; S5 :与IF的内容相同; S4、S3用来指示当前正在使用哪个段寄存器。
BHE/S7 高8位数据总线允许/状态复用引脚,三态,输出。 在T1状态:BHE输出,若BHE=0,则利用数据总线高8位AD15~AD8和奇地址存储器单元或I/O端口交换数据。 在T2~T4状态:输出S7(无意义)。
RD 读信号,三态、输出。 RD=0时,表示将要执行一个对存储器或I/O端口的读操作。 在读操作的总线周期的T2、T3和TW为低电平。
WR 写信号,三态、输出。 WR=0时,表示将要执行一个对存储器或I/O端口的写操作。 在写操作的总线周期的T2、T3和T4为低电平。
M/IO 存储器/外设控制信号,输出 =1:访问存储器 =0:访问I/O端口 8088为M/IO。
RESET 复位信号,输入,高电平有效。 至少维持4个时钟周期的高电平,接通电源时间不能小于50μs。 复位后,内部寄存器状态见下表。
READY “准备好”信号,输入,高电平有效 由所寻址的存储器或I/O端口发来的响应信号。 CPU在T3采样READY,若READY=0,则在T3后插入一个或多个TW,直至READY=1,进入T4。
TEST 等待测试信号,输入,低电平有效。 用于多处理器系统中且只有在执行WAIT指令时才使用。 当CPU执行WAIT指令时,每隔5个时钟周期对该引脚进行一次测试:若TEST=1时,CPU将停止取下条指令而进入等待状态,重复执行WAIT指令,直至TEST=0,CPU才继续往下执行被暂停的指令。 等待期间允许外部中断。 WAIT指令是用来使CPU与外部硬件同步的,TEST相当于外部硬件的同步信号。
NMI 非屏蔽中断请求信号,输入,上升沿有效。 此请求不受IF的影响。只要此信号一出现,CPU就在现行指令结束后响应中断。
INTR 可屏蔽中断请求信号,输入,高电平有效。 当INTR=1时,表示外设提出了中断请求,8086/8088在每个指令周期的最后一个T状态去采样此信号。 若IF=1,则CPU响应中断,转去执行中断服务程序。
INTA 中断响应信号,输出,低电平有效。 用于对外设的中断请求作出响应。连续周期中的两个负脉冲。 第1个脉冲是通知外设接口,它的中断请求已获允许; 外设接口收到第2个负脉冲后,往数据总线上放中断类型码。
HOLD、 HLDA HOLD:总线保持请求信号,输入,高电平有效 HLDA:总线保持响应信号,输出,高电平有效 HOLD信号是系统中的其它总线主控部件向CPU发出的请求占用总线的控制信号。当CPU从HOLD线上收到一个高电平请求信号时,如果CPU允许让出总线,就在当前总线周期完成时,于T4状态从HLDA线上发出一个应答信号,对HOLD请求作出响应。同时,CPU使地址/数据总线和控制总线处于浮空状态,从而让出了总线。 当请求部件完成对总线占用后,CPU就立即使HLDA变低,同时恢复对总线的控制。
ALE 地址锁存允许信号,输出,正脉冲。 提供给地址锁存器8282的控制信号。 在任何一个总线周期的T1状态,ALE输出有效电平,以表示当前总线上输出的是地址信息。
DT/R 数据收发控制信号,输出,三态。 用来控制数据总线驱动器8286的数据传送方向。 =1:发送数据 =0:接收数据
DEN 数据允许信号,输出,低电平有效,三态。 提供给数据总线收发器8286,表示CPU准备发送或接收一个数据。 它常作为数据总线驱动器的三态控制信号。
CLK 系统时钟,输入 通常与8284A时钟发生器的时钟输出端CLK相连。该时钟信号的低/高之比常采用2:1。8086 CPU的标准时钟频率为5 MHz。
VCC、GND 电源线VCC接入的电压为+5V±10%。 两条地线GND均应接地。
2.8086最大模式下引脚的功能定义 当MN/MX为低电平时,8086 CPU工作在最大模式。 在最大模式下,许多总线控制信号不是由8086直接产生,而是通过总线控制器8288产生的。 因此,8086在最小模式下提供的总线控制信号的引脚(24~31脚)就需重新定义,改作支持最大模式之用。
S2、S1、S0 总线周期状态信号,输出,三态。 8288总线控制器依据这三个状态信号产生访问存储器和I/O端口的控制命令。
QS1、QS0 指令队列状态信号,输出。 这两个信号组合起来提供了本总线周期的前一个时钟周期中指令队列的状态,以便于外部器件,如8087协处理器对8086/8088内部指令队列的动作进行跟踪。 QS1 QS0 队 列 状 态 1 无操作 从指令队列中取出指令的第1个字节 队列为空 从指令队列中取出第1字节以后部分
RQ/GT1、RQ/GT0 总线请求信号输入/总线请求允许信号输出,双向,低电平有效,三态 。 供协处理器发出使用总线的请求信号和接收CPU对总线请求的回答信号。 后者比前者的优先级高。
LOCK 总线封锁信号,输出,低电平有效,三态。 当LOCK为低电平时,系统中其它总线主部件就不能占用总线。 LOCK信号由指令前缀LOCK产生,而在LOCK后面的一条指令执行完后,便撤销了LOCK信号。 此信号是为避免多个处理器使用共有资源时产生冲突而设置的。
2.1.4 8086/8088系统的工作模式 1.最小模式组成 2.最大模式组成
1.最小模式组成 当MN/MX=1时,8086 CPU工作在最小模式之下,即单处理器系统方式。此时,构成的微型机中只包括一个8086或8088 CPU,且系统总线的所有控制信号都由CPU直接给出,系统中的总线控制逻辑电路被减到最少,适合于较小规模的应用。
8086最小模式下的典型配置
2.最大模式组成 当MN/MX=0时,8086 CPU工作在最大模式。在此模式下,构成的微型计算机中除了有8086 CPU之外,还可以接另外的CPU,如8087、8089等,以构成多处理器系统。 在最大模式系统中,系统的许多控制信号不再由8086直接发出,而是由总线控制器8288对8086发出的控制信号进行变换和组合,从而得到各种系统控制信号。
8086最大模式典型配置
2.1.5 8086/8088的操作和时序 1.指令周期与总线周期 指令周期:执行一条指令所需要的时间。不同指令的指令周期在时间上是不相等的。 总线周期:CPU访问一次存储器或I/O接口所需要的时间。一个指令周期由一个或几个总线周期组成。 时钟周期:执行指令的所有操作都是在时钟脉冲的控制下一步一步进行的。时钟周期是CPU的基本时间计量单位。时钟周期由主频决定。
2.几种基本时序 1)系统的复位和启动操作 2)总线读/写操作 3)中断响应操作
1)系统的复位和启动操作 RESET引脚至少维持4个时钟周期的高电平信号时,8086/8088复位。如果是初次加电引起的复位,则要求维持不小于50μs的高电平。 8086/8088复位后将从内存的FFFF0H处开始执行指令。因此,一般在该处放一条无条件转移指令,转移到系统程序的入口处。这样系统一旦被启动,便自动进入系统程序。
2)总线读/写操作 总线操作可以分为: 总线读操作(CPU从存储器或I/O端口读取数据) 总线写操作(CPU将数据写入存储器或I/O端口)
(1)最小模式下的总线读操作
(2)最小模式下的总线写操作
(3)最大模式下的总线读操作
(4)最大模式下的总线写操作
3)中断响应操作 当8086/8088CPU收到外界从INTR引脚上送来的中断请求信号,并且满足IF=1时,CPU在执行完当前指令后,便执行一个中断响应时序。
2.1.6 8086/8088的存储器组织 1.8086存储器组织 2.8088存储器组织
1.8086存储器组织 8086的1MB存储空间实际上分为两个512KB的存储体(又称存储库),分别叫奇存储体(奇区)和偶存储体(偶区) 。 偶存储体与数据总线D7~D0相连,该存储体中每个地址均为偶数地址; 奇存储体与数据总线D15~D8相连,该存储体中每个地址均为奇数地址。
8086存储器的组织
BHE、A0代码表示的奇偶区的选择
数据在存储器中的存放 存储器的物理组织分成了偶区和奇区,但是,在逻辑结构上,存储单元是按地址顺序排列的,每个字节信息只占一个单元,有唯一物理地址,相邻的两个字节被称为一个“字” 。 若存放的信息是以字节(8位)为单位,将在存储器中按顺序排列存放。
数据在存储器中的存放(续) 若存放的信息为一个字(16位),需占用两个连续地址的单元,将每一个字的低字节(低8位)存放在低地址中,高字节(高8位)存放在高地址中,并以低地址作为该字的地址。 若存放的信息为双字(32位,一般作为地址指针),需占用四个连续地址单元,其低位字是被寻址地址的偏移量;高位字是被寻址地址的段基址。
规则字和非规则字 对于字节信息,根据其存放单元的地址是偶/奇地址,分别叫做偶字节、奇字节; 对于字信息,其低位字节既可以从奇数地址开始存放,也可以从偶数地址开始存放,根据存放它的低位字节的单元地址是偶/奇地址,分别叫做偶字(规则字)、奇字(非规则字)。 对偶字节、奇字节、偶字的存取可在一个总线周期内完成,而奇字的存取需两个总线周期,即而从奇地址开始读/写一个字,必须分两次访问存储器中的两个偶字,首先作奇字节读/写,然后作偶字节读/写。
各种字节和字的读操作示例
2.8088存储器组织 由于每次传送的是8位数据,因此不存在一次对16位数据的传送,不存在奇偶存储体的概念,所以,它和总线之间的连接方式也很简单,它的20位地址线A19~A0和8根数据线分别和8088CPU的对应地址线与数据线相连。 8088CPU每访问一次存储器只读/写一个字节信息,而读/写一个字需要两次访问存储器才能完成。故在8088系统中,程序运行速度比在8086系统中要慢些。
2.2 32位微处理器80386 1985年10月,Intel公司推出了32位微处理器80386,它与8086、80286相兼容,它是为多用户、多任务操作系统设计的一种高集成度的芯片。 该芯片集成了275000个晶体管,采用32位数据总线、32位地址总线,直接寻址能力达4GB。
2.2.1 80386的特点 灵活的32位微处理器,提供32位的指令。 提供32位外部总线接口,最大数据传输速率为32Mbps。 2.2.1 80386的特点 灵活的32位微处理器,提供32位的指令。 提供32位外部总线接口,最大数据传输速率为32Mbps。 具有片内集成的存储器管理部件MMU,可支持虚拟存储和特权保护 。 具有实地址方式、保护方式和虚拟8086方式。 具有极大的寻址空间,直接寻址能力达4GB。 通过配用数值协处理器可支持高速数值处理。 在目标码一级与8086、80286芯片完全兼容。
2.2.2 80386内部结构
1.指令预取部件IPU 指令预取部件IPU将存储器中的指令按顺序取到长度为16B的指令预取队列中,以便在CPU执行当前指令时,指令译码部件IDU对下一条指令进行译码。 一旦指令队列向指令译码部件输送一条指令,指令队列便会空出部分字节,指令预取部件就会向总线接口部件发总线请求,如总线接口部件此时处于空闲状态,则会响应此请求,从存储器取指令填充指令预取队列。
2.指令译码部件IDU 指令译码部件IDU中除了指令译码器外,还有译码指令队列,此队列能容纳3条译好码的指令。 只要译码指令队列有剩余空间,译码部件就会从指令预取队列取下一条指令进行译码。
3.执行部件EU 执行部件EU包括运算器ALU、1个64位的多位移位器加法器和8个32位的通用寄存器,它们共同执行各种数据处理和运算。
4.存储器管理部件 包括分段部件SU和分页部件PU,其功能是实现存储器的管理。 总线接口部件BIU是80386和外界之间的高速接口。在80386内部,指令预取部件从存储器取指令时,或者执行部件在指令执行过程中访问存储器和外设以读写数据时,都会发出总线请求,BIU会根据优先级对这些请求进行仲裁,从而有条不紊地服务于多个请求,并产生相应的总线操作所需的信号,包括地址信号、读写控制信号等。另外,BIU也能实现80386和协处理器之间的协调控制。
2.2.3 80386的寄存器结构 有7类32个寄存器,它们是: 通用寄存器 段寄存器 指令指针和标志寄存器 控制寄存器 系统地址寄存器 2.2.3 80386的寄存器结构 有7类32个寄存器,它们是: 通用寄存器 段寄存器 指令指针和标志寄存器 控制寄存器 系统地址寄存器 调试寄存器 测试寄存器。
1.通用寄存器 80386有8个32位通用寄存器,它们都是8086中16位通用寄存器的扩展,故命名为EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP,仍然支持8位和16位操作,用法和8086系统相同,用来存放数据或地址。
2.段寄存器 80386有6个16位段寄存器:代码段寄存器CS、堆栈段寄存器SS、数据段寄存器DS、和三个附加段寄存器ES、FS、GS。 在保护方式下,段寄存器称为段选择符,它与描述符配合实现段寻址。
3.指令指针和标志寄存器 32位的指令指针寄存器EIP用来存放下一条要执行的指令的地址偏移量,寻址范围为4GB。为了和8086相兼容,EIP的低16位可作为独立指针IP来使用。 32位的标志寄存器EFLAGS是在8086标志寄存器基础上扩展而来。除保留8086CPU的6个状态标志CF、PF、AF、ZF、SF、、OF 及三个控制标志TF、IF、DF外,又增加了四个标志IOPL、NT、RF、VM。
80386的标志寄存器
4.系统地址寄存器 80386有4个系统地址寄存器,用来保护操作系统需要的保护信息和地址转换表信息、定义目前正在执行任务的环境、地址空间和中断向量空间。分别是: GDTR 全局描述符表寄存器 IDTR 中断描述符表寄存器 TR 任务状态寄存器 LDTR 局部描述符表寄存器
2.2.4 80386的工作方式 有三种工作方式: 实地址方式(real address mode) :系统启动后,80386自动进入实地址方式。此方式下,采用类似于8086的体系结构。 保护方式(protected virtual address mode) :是指在执行多任务操作时,对不同任务使用的虚拟存储器空间进行完全的隔离,保护每个任务顺利执行。 虚拟8086方式(virtual 8086 mode) :是指一个多任务的环境,即模拟多个8086的工作方式。 保护方式是80386最常用的方式,通常开机或复位后,先进入实地址方式完成初始化,便立即转到保护方式。只有在保护方式下,80386才能充分发挥其强大的功能和本性。而虚拟8086方式是80386中很重要的设计特点,它可以使大量的8086软件有效地与80386保护方式下的软件并发运行。
2.3 32位微处理器Pentium Pentium是Intel公司于1993年3月推出的第五代系列微处理器,它与8086、80286、80386及80486相兼容。与前几代产品相比,Pentium采用了多项先进技术,如超标量流水线、分支预测技术等。
1.CISC技术和RISC技术 复杂指令集计算机技术CISC(complex instruction set computer)和简化指令集计算机技术RISC(reduced instruction set computer)是基于不同理论和构思的两种不同的CPU设计技术,CISC技术的产生和应用均早于RISC。Intel公司在Pentium之前的CPU均属于CISC体系,从Pentium开始,将CISC和RISC相结合。Pentium的大多数指令是简化指令,但仍然保留了一部分复杂指令,而这部分指令采用硬件来实现,因而Pentium吸取了两者之长,实现了更高的性能。
2.超标量流水线技术 所谓超标量,是指一个处理器中有多条指令流水线。Pentium由“U”和“V”两条指令流水线构成超标量流水线结构,其中,每条流水线都有独立的ALU地址生成逻辑和Cache接口。在每个时钟周期内可执行两条整数指令,每条流水线分为指令预取、指令译码、地址生成、指令执行和回写5个步骤。当一条指令完成预取步骤时,流水线就可以开始对另一条指令进行操作,极大地提高了指令的执行速度。
3.重新设计的浮点部件 Pentium内部重新设计了一个增强型浮点运算器FPU(float processor unit),在FPU中,采用快速硬件来实现浮点加、乘、除运算,使其浮点运算速度比前一代CPU至少提高3倍以上。同时,用电路进行固化,用硬件来实现ADD、MUL、INC、DEC、PUSH、POP、JMP、CALL及LOAD等常用指令,使这些常用指令的执行速度大为提高。
4.独立的指令Cache和数据Cache Pentium片内设置了两个独立的Cache,一个是指令Cache,另一个是数据Cache。Cache技术通过一种映像机制,使CPU在运行程序时,将原先需要访问主存储器的操作大部分转换为访问高速Cache的操作,有效减少了CPU访问相对速度较低的主存储器的次数,因此,提高了速度。另外,指令和数据分别使用不同的Cache,使Pentium中数据和指令的存取减少了冲突,提高了性能。
5.分支预测技术 Pentium提供了一个小Cache,称为分支目标缓冲器BTB(branch target buffer),来动态地预测程序的分支操作。当某条指令造成程序分支时,BTB记下该条指令和分支目标的地址,并用这些信息预测该条指令再次产生分支时的路径,预先从该处预取,保证流水线的指令预取步骤不会空置。这一机构的设置,可以减少在循环操作时对循环条件的判断所占用的CPU的时间。
6.采用64位外部数据总线 Pentium内部总线和通用寄存器是32位,所以仍属32位微处理器,但其和内存储器相连的外部数据总线是64位,这使得在一个总线周期中,数据传输量提高了一倍。
Pentium的内部结构
Pentium的寄存器结构 Pentium的寄存器分为如下几类: 基本寄存器组:包括通用寄存器、指令寄存器、标志寄存器、段寄存器; 系统寄存器组:包括地址寄存器、调试寄存器、控制寄存器、模式寄存器; 浮点寄存器组:包括数据寄存器、标记字寄存器、状态寄存器、控制字寄存器、指令指针寄存器和数据指针寄存器。 其中,系统寄存器组只供系统程序访问,而其它两组寄存器则供系统程序和应用程序共同访问。
Pentium系列微处理器的发展 Pentium自1993年问世以来,技术上分成了两大流派:一是Pentium Pro,中文名为“高能奔腾”;另一是Pentium MMX,中文名为“多能奔腾”。 两者融合,于1997年5月,诞生了Pentium Ⅱ,它的内部含有750万个晶体管,内部除了16KB的一级指令Cache和16KB的一级数据Cache外,还含有512KB的二级Cache。Pentium Ⅱ微处理器采用了双重独立总线结构,即其中一条总线连通二级缓存,另一条主要负责内存。 它把多媒体增强技术融入到高能奔腾处理器中,使Pentium Ⅱ既保持了“高能奔腾”原有的强大处理功能,又增强了PC机在三维图形、图像和多媒体方面的可视化计算功能和交互功能。
Pentium Ⅲ 1999年2月,Intel公司发布了Pentium Ⅲ,它具有以下特点:采用0.25mm工艺制造,内部集成了950万个晶体管;系统频率为100MHz;采用第六代CPU核心P6微架构,针对32位应用程序进行优化,双重独立总线;L1 Cache为32KB(16KB指令缓存加16KB数据缓存),L2 Cache大小为512KB。 它通过8个64位MMX寄存器和8个128位的SSE寄存器,达到既支持MMX指令集,又可执行SSE指令集,这是一个专门为了提高微型机的网络性能而设计的CPU。Pentium Ⅲ芯片中的70条SSE(streaming SIMD extensions)指令指令增强了音频、视频和3D图形处理能力。
Pentium Ⅳ 2000年6月,Intel公司推出了新的微处理器Pentium Ⅳ,其内部含有4200万个晶体管。Pentium Ⅳ微处理器不但拥有更高的时钟频率,并且支持超线程技术。 超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高了CPU的运行效率,使一块芯片的性能几乎相当于两块。