80486 编辑

8048680486

80486是Intel公司1989年推出的32位微处理器。 八十年代末九十年代初,80486处理器面市,它集成了120万个晶体管,时钟频率由25MHz逐步提升到50MHz 。并在X86系列中首次使用了 RISC(精简指令集)技术,可以在一个时钟周期内执行一条指令。它还采用了突发总线传送方式,大大提高了与内存的数据交换速度,由于这些改进,80486的性能比带有80387协处理器的80386提高了4倍。早期的486分为有协处理器的486DX和无协处理器的486SX两种,其价格也相差许多。

设备介绍

编辑

8048680486

它采用了1μm(微米)制造工艺,内部集成了120万个晶体管。内外部数据总线是32位,地址总线为32位,可寻址4GB的存储空间,支持虚拟存储管理技术,虚拟存储空间为64TB。片内集成有浮点运算部件和8KB的cache(L1 cache),同时也支持外部cache(L2 cache)。整数处理部件采用精简指令集RISC结构,提高了指令的执行速度。此外,80486微处理器还引进了时钟倍频技术和新的内部总线结构,从而使主频可以超出100MHz。

内部结构

编辑
80486 CPU内部包括总线接口部件、指令预取部件、指令译码部件、控制和保护测试单元部件、整数执行部件、分段部件、分页部件,以及浮点运算部件和高速缓存(cache)管理部件。

1.总线接口部件:

总线接口部件(BIU)与外部总线连接,用于管理访问外部存储器和I/O端口的地址、数据和控制总线。对处理器内部,BIU主要与指令预取部件和高速缓存部件交换信息,将预取指令存入指令代码队列。

BIU与cache部件交换数据有三种情况:一是向高速缓冲存储器填充数据,BIU一次从片外总线读取16个字节到cache;二是如果高速缓冲存储器的内容被处理器内部操作修改了,则修改的内容也由BIU写回到外部存储器中去;三是如果一个读操作请求所要访问的存储器操作数不在高速缓冲存储器中,则这个读操作便由BIU控制总线直接对外部存储器进行操作。

在预取指令代码时,BIU把从外部存储器取出的指令代码同时传送给代码预取部件和内部高速缓冲存储器,以便在下一次预取相同的指令时,可直接访问高速缓冲存储器。

2.指令预取部件:

80486 CPU内部有一个32字节的指令预取队列,在总线空闲周期,指令预取部件(pre-fetcher)形成存储器地址,并向BIU发出预取指令请求。预取部件一次读取16个字节的指令代码存入预取队列中,指令队列遵循先进先出FIFO(first in first out)的规则,自动地向输出端移动。如果cache在指令预取时命中,则不产生总线周期。当遇到跳转、中断、子程序调用等操作时,预取队列被清空。

3.指令译码部件:

指令译码部件IDU(instruction decode unit)从指令预取队列中读取指令并译码,将其转换成相应控制信号。译码过程分两步:首先确定指令执行时是否需要访问存储器,若需要则立即产生总线访问周期,使存储器操作数在指令译码后能准备好;然后产生对其他部件的控制信号。

4.控制和保护测试单元部件:

控制部件CPTU(control and protection test unit)对整数执行部件、浮点运算部件和分段管理部件进行控制,使它们执行已译码的指令。

5.整数执行部件:

整数执行部件IU(integer data-path unit)包括四个32位通用寄存器、两个32位间址寄存器、两个32位指针寄存器、一个标志寄存器、一个64位桶形移位寄存器和算术逻辑运算单元等。它能在一个时钟周期内完成整数的传送、加减运算、逻辑操作等。80486 CPU采用了RISC技术,并将微程序逻辑控制改为硬件布线逻辑控制,缩短了指令的译码和执行时间,一些基本指令可在一个时钟周期内完成。

两组32位双向总线将整数单元和浮点单元联系起来,这些总线合起来可以传送64位操作数。这组总线还将处理器单元与cache联系起来,通用寄存器的内容通过这组总线传向分段单元,并用于产生存储器单元的有效地址。

6.浮点运算部件:

80486 CPU内部集成了一个增强型80487数学协处理器,称为浮点运算部件FPU(floating point unit),用于完成浮点数运算。由于FPU与CPU集成封装在一个芯片内,而且它与CPU之间的数据通道是64位的,所以当它在内部寄存器和片内Cache取数时,运行速度会极大提高。

7.分段部件和分页部件:

80486 CPU设置了分段部件SU(segmentation unit)和分页部件PU(paging unit),实现存储器保护和虚拟存储器管理。分段部件将逻辑地址转换成线性地址,采用分段cache可以提高转换速度。分页部件用来完成虚拟存储,把分段部件形成的线性地址进行分页,转换成物理地址。为提高页转换速度,分页部件中还集成了一个转换后援缓冲器TLB(the translation look-aside buffer)。

8.Cache管理部件:

80486 CPU内部集成了一个数据/指令混合型cache称为高速缓冲存储器管理部件CU(cache unit)。在绝大多数的情况下,CPU都能在片内cache中存取数据和指令,减少了CPU的访问时间。在与80486 DX配套的主板设计中,采用128KB~256KB的大容量二级cache来提高cache的命中率,片内cache(L1 cache)与片外cache(L2 cache)合起来的命中率可达98%。CPU片内总线宽度高达128位,总线接口部件将以一次16个字节的方式在cache和内存之间传输数据,大大提高了数据处理速度。80486 CPU中的cache部件与指令预取部件紧密配合,一旦预取代码未在cache中命中,BIU就对cache进行填充,从内存中取出指令代码,同时送给cache部件和指令预取部件。

寄存器

编辑
按功能可分为四类:基本寄存器、系统寄存器、调试和测试寄存器以及浮点寄存器。

80486 CPU的寄存器总体上可分为程序可见和不可见两类。在程序设计期间要使用的、并可由指令来修改其内容的寄存器,称为程序可见寄存器。在程序设计期间,不能直接寻址的寄存器,称为程序不可见寄存器,但是在程序设计期间可以被间接引用。程序不可见寄存器用于保护模式下控制和操作存储器系统。

1.基本寄存器(base architecture registers)

基本寄存器包括八个通用寄存器EAX, EBX, ECX, EDX, EBP, ESP, EDI, ESI;一个指令指针寄存器EIP;六个段寄存器CS, DS, ES, SS, FS和GS;一个标志寄存器EFLAGS。80486 CPU的基本寄存器如图2.11所示,它们都是程序可见寄存器。

(1)通用寄存器(general purpose registers)

通用寄存器包括EAX, EBX, ECX, EDX, EBP, ESP, EDI和ESI。

图2.11 80486 CPU的基本寄存器组

EAX, EBX, ECX, EDX都可以作为32位寄存器、16位寄存器或者8位寄存器使用。EAX可作为累加器用于乘法、除法及一些调整指令,对于这些指令,累加器常表现为隐含形式。EAX寄存器也可以保存被访问存储器单元的偏移地址。EBX常用于地址指针,保存被访问存储器单元的偏移地址。ECX经常用作计数器,用于保存指令的计数值。ECX寄存器也可以保存访问数据所在存储器单元的偏移地址。用于计数的指令包括重复的串指令、移位指令和循环指令。移位指令用CL计数,重复的串指令用CX计数,循环指令用CX或ECX计数。EDX常与EAX配合,用于保存乘法形成的部分结果,或者除法操作前的被除数,它还可以保存寻址存储器数据。

EBP和ESP是32位寄存器,也可作为16位寄存器BP, SP使用,常用于椎栈操作。EDI和ESI常用于串操作,EDI用于寻址目标数据串,ESI用于寻址数据串。

(2)指令指针寄存器

指令指针寄存器EIP(extra instruction pointer)存放指令的偏移地址。微处理器工作于实模式下,EIP是IP(16位)寄存器。80486 CPU工作于保护模式时EIP为32位寄存器。EIP总是指向程序的下一条指令(即EIP的内容自动加1,指向下一个存储单元)。EIP用于微处理器在程序中顺序地

寻址代码段内的下一条指令。当遇到跳转指令或调用指令时,指令指针寄存器的内容需要修改。

(3)标志寄存器EFR

EFR(extra flags register)包括状态位、控制位和系统标志位,用于指示微处理器的状态并控制微处理器的操作。80486 CPU标志寄存器如图2.12所示。

① 状态标志位:包括进位标志CF、奇偶标志PF、辅助进位标志AF、零标志ZF 、符号标志SF和溢出标志OF。

② 控制标志位:包括陷阱标志(单步操作标志)TF、中断标志IF和方向标志DF。80486 CPU标志寄存器中的状态标志位和控制标志位与8086 CPU标志寄存器中的状态标志位和控制标志位的功能完全一样,这里就不再赘述。

③ 系统标志位和IOPL字段:在EFR寄存器中的系统标志和IOPL字段,用于控制操作系统或执行某种操作。它们不能被应用程序修改。

IOPL(I/O privilege level field):输入/输出特权级标志位。它规定了能使用I/O敏感指令的特权级。在保护模式下,利用这两位编码可以分别表示0, 1, 2, 3这四种特权级,0级特权最高,3级特权最低。在80286以上的处理器中有一些I/O敏感指令,如CLI(关中断指令)、STI(开中断指令)、IN(输入)、OUT(输出)。IOPL的值规定了能执行这些指令的特权级。只有特权高于IOPL的程序才能执行I/O敏感指令,而特权低于IOPL的程序,若企图执行敏感指令,则会引起异常中断。

NT(nested task flag):任务嵌套标志。在保护模式下,指示当前执行的任务嵌套于另一任务中。当任务被嵌套时,NT=1,否则NT=0。

RF(resume flag):恢复标志。与调试寄存器一起使用,用于保证不重复处理断点。当RF=1时,即使遇到断点或故障,也不产生异常中断。

VM(virtual 8086 mode flag):虚拟8086模式标志。用于在保护模式系统中选择虚拟操作模式。VM=1,启用虚拟8086模式;VM=0,返回保护模式。

AC(alignment check flag):队列检查标志。如果在不是字或双字的边界上寻址一个字或双字,队列检查标志将被激活。

(4)段寄存器

80486微处理器包括六个段寄存器,分别存放段基址(实地址模式)或选择符(保护模式),用于与微处理器中的其他寄存器联合生成存储器单元的物理地址。存器结构

① 代码段寄存器CS。代码段是一个用于保存微处理器程序代码(程序和过程)的存储区域。CS存放代码段的起始地址。在实模式下,它定义一个64KB存储器段的起点。在保护模式下工作时,它选择一个描述符,这个描述符描述程序代码所在存储器单元的起始地址和长度。在保护模式下,代码段的长度为4GB。

② 数据段寄存器DS。数据段是一个存储数据的存储区域,程序中使用的大部分数据都在数据段中。DS用于存放数据段的起始地址。可以通过偏移地址或者其他含有偏移地址的寄存器,寻址数据段内的数据。在实模式下工作时,它定义一个64KB数据存储器段的起点。在保护模式下,数据段的长度为4GB。

③ 堆栈段寄存器。堆栈段寄存器SS用于存放堆栈段的起始地址,堆栈指针寄存器ESP确定堆栈段内当前的入口地址。EBP寄存器也可以寻址堆栈段内的数据。

④ 附加段寄存器ES。ES存放附加数据段的起始地址。常用于存放数据段的段基址或者在串操作中作为目标数据段的段基址。

⑤ 附加段寄存器FS和GS。FS和GS是附加的数据段寄存器,作用与ES相同,以便允许程序访问两个附加的数据段。

在保护模式下,每个段寄存器都含有一个程序不可见区域。这些寄存器的程序不可见区域通常称为描述符的高速缓冲存储器(descriptor cache),因此它也是存储信息的小存储器。这些描述符高速缓冲存储器与微处理器中的一级或二级高速缓冲存储器不能混淆。每当段寄存器中的内容改变时,基地址、段限和访问权限就装入段寄存器的程序不可见区域。例如当一个新的段基址存入段寄存器时,微处理器就访问一个描述符表,并把描述符表装入段寄存器的程序不可见的描述符高速缓冲存储器区域内。这个描述符一直保存在此处,并在访问存储器时使用,直到段号再次改变。这就允许微处理器在重复访问一个内存段时,不必每次都去查询描述符表,因此称为描述符高速缓冲存储器。

下一篇 标量流水线

上一篇 多任务