2.3 从8086到80x86微处理器技术的发展

随着大规模集成电路的发展,Intel公司先后又推出了80286、80386、80486、Pentium等CPU。本节重点介绍80486 CPU。

2.3.1 80286和80386

1.80286

1982年2月1日,Intel推出了80286 CPU。80286 CPU官方名称为iAPX 286,是Intel公司的一款x86系列CPU。80286芯片集成了14.3万个晶体管,机器字长为16位,时钟频率由最初的6MHz逐步提高到后来的20MHz。其内部和外部数据总线皆为16位,地址总线24位。与8086相比,80286寻址能力达到了16MB,可以使用外存储设备模拟大量存储空间,从而大大扩展了80286的工作范围,还能通过多任务硬件控制使处理器在各种任务间来回快速切换,实现同时运行多个任务,其速度比8086提高了5倍甚至更多。

80286处理器被广泛应用在20世纪80年代中期到90年代初期的IBM PC中。这些PC被称为“286计算机”,有时也简称“286”。

80286有两种工作模式:实模式和保护模式。

实模式下,80286与8086的工作方式一样,相当于一个快速8086。在该方式下,80286直接访问内存的空间被限制在1MB,更多内存需要通过EMS或XMS内存机制进行映射才能进行访问。

保护模式下,80286提供了虚拟存储管理和多任务的硬件控制,能直接寻址16MB主存和1GB的虚拟存储器,具有异常处理机制,这为后来微软的多任务操作系统准备了条件。

2.80386

80386处理器被广泛应用在20世纪80年代中期到90年代中期的IBM PC中。这些PC被称为“386计算机”,有时也简称“386”。

80386的广泛应用,将PC从16位时代带入了32位时代。80386的强大运算能力也使PC的应用领域得到巨大扩展,在商业办公、科学计算、工程设计、多媒体处理等应用领域得到迅速发展。

(1)80386的特点

80386的特点如下。

1)首次在x86处理器中实现了32位系统。

2)可配合使用80387数字辅助处理器增强浮点运算能力。

3)首次采用高速缓存(外置)解决内存速度瓶颈问题。由于这些设计,80386的运算速度比其前代产品80286提高了几倍。

4)80386 DX版本的内部和外部数据总线是32位,地址总线也是32位,可以寻址到4GB内存,并可以管理64TB的虚拟存储空间。

(2)工作模式

80386有3种工作模式:真实模式、保护模式、虚拟86模式。

真实模式为DOS系统的常用模式,直接内存访问空间被限制在1MB;保护模式下,80386 DX版本可以直接访问4GB的内存,并具有异常处理机制;虚拟86模式可以同时模拟多个8086处理器来加强多任务处理能力。

(3)分类

80386为了满足不同的人群,发布了多个版本。

1)80386 DX:主流版本。内部和外部数据总线以及地址总线都是32位。

2)80386 SX:1988年末推出的廉价版本。外部数据总线为16位,位址总线为24位,与80286相同,从而方便80286计算机的升级。由于内部的32位结构及其他优化设计,80386 SX性能仍大大优于80286,而价格只相当于80386 DX的1/3,因而很受市场的欢迎。与之相配的数学辅助处理器型号为80387 SX。

3)80386 SL:1990年推出的低功耗版本,基于80386 SX结构。增加了系统管理方式(SMM)工作模式,具有电源管理功能,可以自动降低运行速度乃至休眠状态以实现节能。

4)80386 DL:1990年推出的低功耗版本,基于80386 DX,与80386 SL类似。

初期推出的80386 DX处理器集成了大约27.5万个晶体管,工作频率为12.5MHz。此后,80386处理器工作频率逐步提高到20MHz、25MHz、33MHz直至最后的40MHz。

2.3.2 80486 CPU

1.80486 CPU概述 几经变迁,Intel公司推出了80486微处理器,其内部通用寄存器、标志寄存器、指令寄存器、地址总线和外部数据总线都是32位。与以前微处理器相比,80486 CPU在性能上有了很大改进,主要表现在以下几点。

1)把浮点数学协处理器和一个8KB的高速缓存首次集成进了CPU内部,减小了外部数据传输环节,大大提高了微机的运行速度。

2)指令系统首次采用精简指令集计算机(RISC)设计思想,使得80486 CPU既具有复杂指令集计算机(CISC)类微处理器的特点,又具有RISC类微处理器的特点,采用该技术使其核心指令在1个时钟周期内就可完成。

3)在总线接口部件中没有突发式总线控制和缓存(Cache)控制电路,支持突发式总线周期中从内存或外部Cache高速读取指令或数据。

4)将CPU内部通用寄存器扩展为32位,名称为EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP,这些寄存器的低16位与8086兼容,既可以按32位使用,也可以按8086规定的16位或8位寄存器使用。

这些改进使得80486成为一款高性能的32位微处理器,对多任务处理以及先进存储管理方式的支持更加完善、可靠,性能大大得到了改进。

段寄存器仍为16位,但增加了数据段寄存器FS和GS。

2.80486 CPU功能结构 80486 CPU内部结构如图2-17所示,与以往CPU比较,除某些功能有了进一步改善外,内部又新增了浮点运算器和Cache部件。前者用于完成协处理器的功能,后者用于存放CPU 最近使用的程序和数据。当CPU要访问存储器时,先访问缓存部件,只有要访问的数据不在缓存内时,才去访问存储器,经过这一改进,明显提高了CPU的访问速度。

978-7-111-53315-3-Chapter02-36.jpg

图2-17 80486 CPU内部结构

该微处理器由总线接口部件、指令预取部件、指令译码部件、控制和保护部件、算术与逻辑运算部件、浮点运算部件FPU、分段部件、分页部件和8KB的缓存部件几部分组成。

这些部件既可以独立工作,也可以并行工作。在取指令和执行指令时,每个部件完成一项任务或某一个操作步骤,这样既可以同时对不同的指令进行操作,又可以对同一指令的不同部分同时并行处理。各部件的功能如下。

(1)总线接口部件BIU

BIU是CPU与外部的通路,负责完成CPU与主存、外围设备等部件进行数据传送的任务。

(2)分段部件

在80486 CPU中设有6个16位段寄存器,用来实现对主存分段管理。在实地址方式下,用来存放段基址,其内容左移4位与偏移地址形成20位物理地址;在保护方式下,段寄存器作为选择器使用,用来存放选择符以指示相应的段描述符在其段描述表中的地址。分段部件通过段描述符把逻辑地址转换成32位线性地址。

(3)分页部件

分页部件是分段部件之后的下一级存储管理部件。若分页禁止,则线性地址就是物理地址;若允许分页,则由分页部件再将线性地址转换成32位物理地址。通过分页管理,80486可寻址4GB的物理地址内存地址空间。通过分段分页管理可实现64TB虚拟存储器的映像管理。

(4)缓存部件

片内8KB缓存采用4路相连映像方式,用来存储待执行的程序数据,也就是作为外部主存的副本。它通过16位的总线与指令预取部件连接,使指令和数据的传输时间缩短。它通过64位数据线与整数部件、浮点运算器和分段部件相连接,并与外部采用突发式传输方式,来提高数据传输速率。为了保持与主存的一致性,片内缓存采用“写贯穿”方式进行写入操作。

(5)指令预取部件

指令预取部件一次可从片内缓存取出16位指令代码,送入指令队列排队,等候执行。

(6)指令译码器

指令译码器从指令队列获取指令代码,并对其译码。而后由微程序控制器ROM输出代码序列,并控制该指令的执行,同时由控制和保护部件进行保护检查。

(7)整数部件

整数部件由算术/逻辑运算部件ALU、桶形移位器和寄存器组成。在ALU中设有高速加法器,可实现高速算术/逻辑运算、数据传输等功能。

(8)浮点运算器

浮点运算器FPU可实现各种浮点数值运算、跨越/非跨越函数运算等功能。

3.80486引脚信号 80486外部引脚分布如图2-18所示。

978-7-111-53315-3-Chapter02-37.jpg

图2-18 80486外部引脚分布示意图

1)32位数据总线

单一功能的32位数据总线(D31~D0),双向,三态。借助BE16、BE8两根输入信号能够完成总线宽度控制,使数据总线可以用来传输32位、16位、8位3种宽度的数据

2)32位地址总线

32位地址总线(A31~A2,BE3~BE0),输出,三态。该总线提供物理存储器地址或I/O端口地址。在80486中为了实现32位、16位、8位数据访问,设有4位允许输出信号BE3~BE0,用来控制不同存储体的数据宽度。高30位地址线(A31~A2)与4位允许输出信号 978-7-111-53315-3-Chapter02-38.jpg 4位输出相对于2位地址线)形成32位地址总线。该信号由80486根据指令类型产生。低2位地址(A1,A0)没有相应的输出线

(3)总线控制信号

1) 978-7-111-53315-3-Chapter02-39.jpg 地址状态信号,输出,低电平有效,表示总线周期中地址信号有效。

2) 978-7-111-53315-3-Chapter02-40.jpg :非突发式传送准备好信号,输入,低电平有效,当该信号有效时,表示存储器或I/O设备已经准备好数据输出。

(4)总线周期定义信号

用来定义正在执行的总线周期类型。

1) W/R:表示写/读周期。

2) D/C:表示数据/控制周期。

3) 978-7-111-53315-3-Chapter02-41.jpg :表示访问存储器或I/O接口。

4) 978-7-111-53315-3-Chapter02-42.jpg :总线锁定信号,低电平有效,用来表示是锁定总线周期还是开启总线周期。

5) PLOCk:伪总线锁定信号,低电平有效,表示现行总线的处理需要多个总线传送周期。

(5)总线宽度控制信号

1) 978-7-111-53315-3-Chapter02-43.jpg :16位总线宽度控制信号,输入,低电平有效。

2) 978-7-111-53315-3-Chapter02-44.jpg :8位总线宽度控制信号,输入,低电平有效。

(6)总线仲裁信号

1) HOLD:总线保持请求信号,输入,高电平有效。该信号有效时表示80486以外的某些设备控制总线。

2) HLDA:总线保持相应信号,输出,高电平有效。该信号有效时表示80486己经响应HOLD信号,并且让出总线控制权,进入总线保持状态。

3) BOEF:总线占用信号,输入,低电平有效。该信号有效时,强制总线为高阻悬空状态。

4) BREQ:总线请求信号,输出,高电平有效。该信号有效时,表示80486需要一个总线周期。

(7)突发式总线控制信号

1) 978-7-111-53315-3-Chapter02-45.jpg :突发式传送准备好信号,输入,高电平有效。有效时可以进行突发式数据传送。

2) 978-7-111-53315-3-Chapter02-46.jpg :最后数据传送信号,输出,低电平有效,有效时表示正在进行本批数据的最后数据传送。

(8)中断信号

1) INIR:可屏蔽中断请求信号,输入,高电平有效。

2)Nvii:非屏蔽中断请求信号,输入,高电平有效。

3) RESET:复位信号,输入,高电平有效。

(9)缓存控制信号

1) KEN:缓存允许信号,输入,低电平有效。有效时表示可以将存储器中的数据复制到片内缓存中。

2) 978-7-111-53315-3-Chapter02-47.jpg :缓存刷新信号,输入,低电平有效。用来通知80486将缓存内容全部清空。

3) AHOLD及 978-7-111-53315-3-Chapter02-48.jpg :AHOLD地址保持信号,输入,低电平有效,修改主存内容后,发出该信号,使地址总线悬空至高阻态;EADS外部地址有效信号,输入,低电平有效,有效时表明地址线上已经有有效地址。

4)PWT和PCD:PWT为页贯穿信号,输出,高电平有效,有效时,表示在修改缓存的同时将修改写回主存中的相应单元;PCD为页式缓存禁止信号,输出,高电平有效。

(10)浮点处理信号

1) 978-7-111-53315-3-Chapter02-49.jpg :浮点数据出错处理信号,输出,低电平有效

2) 978-7-111-53315-3-Chapter02-50.jpg :忽略数值处理器出错信号,输入,低电平有效

(11)奇偶校验信号

1)DP3~DP0:奇偶校验信号,双向。写入数据时,系统会随之加入4个偶校验位DP3~DP0,每个校验位对应数据总线的1B;读数据时,系统也会对每个数据字节进行偶校验。

2)PCHK:奇偶校验状态信号,输出,低电平有效。有效时,表明发生了奇偶校验错12)地址A20屏蔽信号 978-7-111-53315-3-Chapter02-51.jpg :地址A20屏蔽信号,输入,低电平有效。该信号只适用于实地址工作方式,有效时,80486在总线上查找内部Cache或发生某存储周期之前屏蔽A20。

4.功能模式

(1)实地址方式

80486 CPU在加电开机或复位时,被初始化为实地址方式。在此方式下,它和8086具有相同的存储空间和管理方式,最大寻址空间为1MB,物理地址等于段地址左移4位与偏移地址相加所得的值。

(2)保护地址方式

80486 CPU在保护方式下能支持4GB的物理内存空间及64TB的虚拟存储空间,使得程序可在64TB的虚拟存储器中运行。保护方式下,80486先进的存储器管理部件及相应的辅助保护机构,为现代多任务操作系统的顺利运行提供了强大的硬件基础。

在保护方式下,80486的基本结构保持不变,实地址方式下的寄存器结构、指令和寻址方式仍然有效。从程序员的观点看,保护方式和实地址的主要区别是地址空间和寻址机构的不同。

在保护方式下,48位的逻辑地址由16位的段选择子和32位的段内偏移量组成。与实地址方式不同的是,在保护方式下,某个段寄存器中的内容不是段的基址。

为了加快由线性地址向物理地址的转换过程,80486芯片内置了1个页描述符高速缓冲存储器,它也称为转换旁视缓冲器(TLB)。TLB中存放着最近经常用到的线性地址的高20位及其对应的页表项。

(3)虚拟8086方式

80486的虚拟8086方式是实地址方式和保护方式的结合。在虚拟8086方式下,80486的段寄存器的用途与实地址方式相同,并且也允许执行以前8086的程序。在虚拟8086方式下执行8086应用程序时,可以充分利用80486的存储保护机制。