86系列微机简介

Author: Date: 1992-12-25

        一、概 论
        微型机的新纪元是随着1971年Intel公司生产出4004和8008芯片开始的,它们是第一代微处理器。
        1974年,8008发展成8080,成为第二代微处理器。8080 作为代替电子逻辑电路的器件被用于各种应用电路和设备中,如果没有微处理器,这些应用就无法实现。
        由于微处理器可用来完成较老和较大设备的计算任务,价格又便宜,于是各半导体公司竞相生产微处理器芯片。Zilog公司生产了8080的增强型Z80,Motorola公司生产了6800,Intel公司于1976年又生产了增强型8085,但这些芯片基本没有改变8080 的基本特点,都属于第二代微处理器,它们均采用NMOS工艺,集成度约9000只晶体管,平均指令执行时间为1-2μS,采用汇编语言、BASIC、FORTRAN编程,使用单用户操作系统。1978年Intel公司生产的8086是第一个16位数据同时工作的微处理器。很快Zilog公司和Motorola公司也宣布计划生产Z8000和68000。这就是第三代微处理器的起点。8088是8086的8位副产品,于1979年推出。两年之后IBM公司宣布他们研制成以8088为CPU的个人计算机。并大批投放个人计算机市场。
        1983年Intel推出了80286,研制该产品用了四年的时间。IBM建立了PC和PC/XT机器标准,Apple公司推出以68000为CPU的Macintosh, 对抗PC/XT。1984年Intel起用80286,研制成IBM PC/AT,于是AT机又成为各公司广泛复制的标准机型。在Intel公司开发86系列的同时,Motorola 公司也在开发68000系统,该系列的前两个成员是68000和68010。它们均有32位寄存器,但是仅能容纳24位地址,且二者不支持存储器管理。以上这些微处理器皆属于第三代芯片,都是16位微处理器,采用HMOS工艺,集成度达到2~7万只晶体管,指令执行时间约0.5μS,采用多用户操作系统和多种高级语言。
        随着应用范围的扩大和要求的提高,32位微处理器的研制势在必行。1983年NS公司推出第一种32位微处理器32032,接着Motorola公司于1984年推出68020微处理器。作为微处理器发明厂家的Intel公司当然也不甘落后,又于1985年正式推出80386 微处理器。80386微处理器引入了32位通用寄存器组、巨大的扩充存储器空间、更加完善的段页式储存器管理机制以及一套增强模拟8086的措施。1987年IBM 公司采用80386建立了一套新的个人计算机系统PS/2,再次震动了微型机市场。
        Intel公司于1989年秋推出i486微处理器,其系统性能为80386的2-4倍,片内增加了32位浮点运算芯片、更高性能的算术运算单元、存储器管理单元、指令cache(高速缓冲存储器)和数据cache等。它主要用于个人计算机和工作站。
        
        32位微处理器的共同特点归纳如下:
        
        (1)全32位结构
        
        (2)4GB以上的直接寻址能力
        
        (3)主频在15MHz以上
        
        (4)采用多级指令流水线
        (5)按总线周期动态改变总线宽度
        (6)存储器管理(MMU)
        (7)支持多处理机系统
        (8)多数32位采用UNIX操作系统
        (9)兼容性
        (10)向高密度CMOS工艺发展
        二、80286微处理器
        286主要由四部分组成,即执行部件、地址部件、指令部件和总线部件。采用流水线工作方式,可以并行操作。
        286有两种基本工作方式。一种是实地址方式(简称实方式),在实方式下286 具有1MB的直接寻址能力,另一种工作方式是受保护的虚地址方式(简称虚方式),这是一种新的方式,该方式可将每个任务的230字节虚拟地址(1GB)映射到224字节(16MB)的物理地址空间中。
        286设定了几个保护等级(特权),不同的程序运行在不同的特权级上, 这样可保护操作系统及其控制权、保护任务分离并实现各程序之间的保密。
        1.80286的寄存器80286与8086一样,有14只同名的寄存器,它们是AX,BX,CX,DX,SP,BP, SI, DI, IP,FLAG,CS,DS,SS和ES。在实地址方式下它们的作用与8086相同,其中的FLAG 寄存器是16位的,比8086的FLAG增加了两个字段:NT(位14)和IOPL(位13和位12): 其余的寄存器与8086相同。NT是嵌套任务标志,NT=1表示当前任务嵌于另一任务之中。IOPL 是I/O特权层,可以指定I/O操作于0-3特权层中的某一层。另外还多了机器状态字MSW, 共4位:TS(位3),EM(位2),MP(位1)和PE(位0)。
        2.80286的引脚和信号80286是四方形芯片,共有68只引脚,每边各17个,各引脚作用如下:CLK_时钟,输入16MHz时钟,内部除以2;RESET_复位信号,输入;
        READY(低电平)_准备就绪信号,输入,高电平时CPU等待;
        A(0)-A(23)_24根地址线, A(0)与BHE配合控制传送高低八位,A (0)-A(15)传送I/O;
        D (0)-D (15)_16根双向数据总线;
        BHE(低电位)_高位字节允许输出,输出低电平时允许传送高八位, 反之禁止高八位的数据输出;
        LOCK(低电位)_锁定信号,输出。表示CPU正占有总线,不允许其他μp共享;
        HOLD_总线保持,输入。请求控制总线的所有权,相当于DMA请求信号;
        HLDA_总线保持响应,输出。相应于DMA响应信号;
        INTR_外部中断请求信号,输入;
        NMI_中断类型2,输入。非屏蔽中断; PEREQ_协处理器操作数请求信号,输入,此信号来自80287,相当于8086中的RQ/GT;
        PEACK(低电位)_协处理器操作数响应信号,输出,此信号去287,也相当于8086中的RQ/GT(双向);
        BUSY(低电位)_协处理器忙信号,输入,自287来;
        ERROR(低电位)_协处理器出错信号,输入;
        CAP_接衬底滤波电容器,0.047μ至地。供内部衬底偏压发生器滤波用;
        Vcc_系统电源,2只引脚,输入;
        Vss_系统电源地,3 只引脚,输入;
        S0(低)_总线周期状态输出信号,输出;
        S1(低)_总线周期状态输出信号,输出;
        M/IO(低)_M或IO读写区分信号,输出;
        COD/INTA(低)_取指周期和读数据周期区分信号,还可区分中断响应周期和 I/O周期,输出
        
        3.286的寻址方式
        (1)段寻址方式(实方式)
        利用段寄存器和指针指明段的基址及偏移值,可得20位的地址。
        (2)寻址方式(实方式)
        与8086相似,80286的寻址方式有24种,共分为6类:立即寻址、寄存器寻址、直接存储器寻址、间接存储器寻址、I/O寻址和隐含寻址。
        4.80286的指令系统
        80286共有117条指令,其中91条指令与8086的完全相同,新加了26条指令。与8086指令相同的91条指令是:
        
        MOV XCHG PUSH POP IN OUT XLAT LEA
        LDS LES LAHF SAHF PUSHF POPF ADD ADC
        INC SUB SBB DEC NEG CMP MUL IMUL DIV
        IDIV AND TEST OR XOR NOT SHL SHR SAL
        SAR ROL ROR RCL RCR MOVS CMPS SCAS LODS
        STOS JE JNE JL JNL JG JNG JB JNB JA JNA
        JS JNS JO JNO JP JNP CLC CMC STC CLD
        STD CLI STI ESC WAIT LOCK HLT INT INTO
        IRET LOOP LOOPZ LOOPNZ JCXZ CALL JMP RET
        AAA DAA AAS DAS AAM AAD CBW CWD NOP REP
        新加的26条指令:
        PUSHA_把所有通用寄存器推入栈;
        POPA_把所有通用寄存器弹出栈,通用寄存器共8只,但SP例外;
        PUSH Imm_将立即数压栈;
        INS_输入字串/DX或字节串内容为端口;
        OUTS_输出字串/DX或字节串内容为端口;
        ENTER_为过程入口格式化堆栈,进入过程;
        LEAVE_为过程终止恢复堆栈,离开过程;
        BOUND_检查预定范围以外的值;
        此外IMUL指令功能扩大,可用立即数当乘数;移位循环中count可表示大于1的数。
        CLTS_清任务转换标志;
        LGDT/SGDT_装入/存放全局描述子表寄存器。两条指令;
        LLDT/SLDT_装入/存放局部描述子表寄存器。两条指令;
        LIDT/SIDT_装入/存放中断描述子表寄存器。两条指令;
        LTR/STR_装入/存放任务寄存器;
        LMSW_从寄存器或存储器中装入机器状态字;
        SMSW_存放机器状态字;
        LAR_向寄存器或存储器中装入访问权;
        LSL_向寄存器或存储器中装入段限;
        ARPL_从R/M中调整已请求的特权层;
        VERR_VERR对R/M读进行验证;
        VERW_VERW对R/M写进行验证。
        5.286的I/O和中断系统
        286使用16根地址线寻址I/O端口,因此可用端口有64K个8位端口或32K个16位端口。
        8位端口地址采用直接端口地址,在指令操作中0扩展为16位;16位端口地址采用间接端口地址,即利用DX存放16位端口地址。
        286可以连接8位的I/O设备,也可以连接16位I/O设备,连接8位I/O设备时, 可以连在16位数据总线的高8位上,也可以连在低8位上,但要考虑均衡负载。当外设(如打印机)需要几个外设地址时,应该全为偶地址,或全为奇地址,接低8位时,控制信号BHE=1,偶数地址A0=0;接高8位时,控制信号BHE=0,奇数地址A0=1;而在连接16位外部设备时,16位数据线全接上,采用偶地址,即控制信号BHE=0,A0=0。
        286有两个外接引脚便于外设请求中断,这就是片上的NMI和INTR脚.NMI 叫非屏蔽中断,有信号加至该脚时,执行完一条指令后中止主程序。 这种中断一般用于掉电保护,以便保护掉电前现场。
        INTR叫外部中断,一般外设中断通过INTR引脚申请中断。 286共允许256种中断类型。外设提供中断类型号码, 按照号码处理器转入执行相应的例行中断服务程序。
        6.80286的保护方式
        286的设计者设想将特权0用于操作系统的一小部分, 这一小部分专门用来存储器管理、保护和访问控制,称为“安全核心”。所有与安全有关的功能都集中在安全核心之中,安全核心与操作系统其余大部分可隔离开。安全核心应当设计成:如果它是完全安全的,则操作系统也安全。它要求不论任何核心之外OS部分有故障,也要保障它的安全。这种安全系统在多用户系统中十分重要,因为此时往往有“敏感”的机要信息要管理。
        特权指令0环可执行指令高于I/O特权可运行根据特权级运行
        LIDT LLDT LGDT LTR LMSW CLTS HLTINS I OUTS OUT STI CLT LOCKIRET POPF
        7.系统的初始化
        8086的初始化是很简单的,仅仅初始化一些寄存器就可以执行程序了。但是在286 中为了执行286虚方式中的程序,必须在内存中提供各种各样的专门表, 如描述子表等,还要初始化更多的寄存器。
        系统复位时,286首先在实方式下开始运行,其原因是:实方式下的286 差不多等于8086,并且象8086一样不必为执行一个程序要事先请求。但是286在实方式下运行时,所有在8086中没有的上述特性都将被抑制着。为了发挥286的优势,应使286进入虚方式,所以当我们在实方式时, 即可建立所有用于虚方式的表和寄存器,然后再传输至虚方式。这样依靠在实方式使286初始化不仅可与8086兼容, 也解决了如何初始化虚方式的结构问题。
        8.80286机器组织
        80286只是一个中央处理单元(CPU),而不是一台完整的计算机系统。为了构成一台计算机,还必须加上存储器和I/O接口芯片。 中断控制器是为了判优多中断源所必须设立的,如果要进行快速的浮点算术运算,则还要连上一片287。
        三、IBM-PC/AT概述
        1.系统的基本特性
        1)Intel公司80286微处理器为CPU。
        2)Intel公司80287协处理器浮点计算。
        3)64KB ROM,可扩充至128KB,由四片32K×8的ROM芯片组成。
        4)512KB RAM,采用动态存储器但没有使用8207控制器。
        5)7通道DMA,使用两片8237A DMAC。
        6)16级中断,使用两片8259A控制器。
        7)系统时钟周期167ns,工作于6MHz。
        8)三个可编程定时器采用8254。
        9)8个I/O插槽,6个是36脚加62脚槽,2个62脚槽。
        10)扬声器、键盘、软盘、硬盘等外设。
        11)保护系统构造信息的CMOS RAM存储器。
        2.存储器
        在系统母板上有RAM,共5123K字节,每块芯片为128K×1动态存储器,共32片。 访存时间为150ns,访存周期为275ns。系统板上还有ROM,共128KB,4片。
        1)ROM定义在1M最高64KB和16M的最高64KB空间,用于实方式和虚方式。
        2)存储器系统保留区也对应为1M内和16M内两处,分配重复代码,容易为128KB。
        3.系统时钟
        80286工作于6MHz,时钟周期为167ns。一个处理机周期需要三个时钟周期( 其中还包括一个等待状态),所以就得到了一个500ns的16位微处理机周期。对8 位设备的8位总线操作,需要6个时钟周期(包括4个等待状态),因此就产生了一个1000ns 的处理机周期,16位总线对8位设备的操作需要12个时钟周期(包括10个I/O等待状态),因此可以产生一个2000ns的微处理器周期(即处理机周期)。
        4.其它AT机内共有8个I/O槽,其中六个是62-36脚的槽,可插入各种I/O接口 适配板。
        要注意PC/AT不支持下列插件:
        1)扩充单元。
        2)IBM PC异步通讯适配器。
        3)64/256KB存储器扩充适配器。
        4)IBM PC打印机适配器。
        5)非AT用的键盘。
        还有一点要注意,AT的软盘驱动器可按照160/180KB,320/360KB和1.2MB方式读写。
        
        但是以160/180KB或320/360KB方式格式化的软盘是由AT软盘驱动器写入的,那么对信息的读写也只能由AT高容量软盘驱动器来进行。用在这种驱动器上的1.2MB格式化的软盘不能用于PC/XT机上,但反过来在PC/XT机上格式化的软盘可以由AT 机读写。
        IBM PC/AT机的键盘有84键,键盘控制器是一单片机(8042),通过对8042 编程来支持AT的串行键盘接口。
        基本输入/输出系统(BIOS)放在系统板的ROM中,它提供全系统主要I/O设备的分级控制,与用户打的交道最多。BIOS有许多I/O驱动子程序,用户可以使用汇编语言来实现许多操作,如数据块(磁盘或软盘),字符级的I/O操作,日期时间,存储器容量检查,屏幕光标等等。
        AT机上插有一块串行/并行适配器,该板连到机器后部一个9脚插座和一个25 脚插座,前者是串行接口 ,可用于与其他计算机通讯;后者是并行接口, 可用于并行打印机。这是一块很有用的适配器。
        串行异步通讯控制器采用16450,它与8250很相似, 并行接口采用一些不可编程的锁存器。
        四、80386微处理器
        1.80386微处理器的基本特点:
        1)采用了CHMOSⅢ工艺。即CMOS的高密度集成工艺,在一个硅片上集成了275000 个晶体管,采用1.5μM工艺。
        2)标准主频为12-16MHz(最高主频33MHz)。它比8086的标准主频5MHz和286 的标准主频8MHz提高了1至2位。目前还有25MHz和33MHz工作主频的80386。主频的提高,使计算机的运行速度大大地提高了,可高达3-4MIPS。3)标准的32 位微处理器。具有32位数据线和32位地址线, 两总线在结构上是分开独立的,因此芯片引脚也较多, 共132 只引脚, 芯片是正方形的PGA 封装( pin  grid array)。
        4)三种工作方式:实地址方式、受保护的虚地址方式和8086虚拟方式。 它有物理实地址可寻址空间4G(232字节)和虚地址空间64T(246字节)。
        5)先进的存储器管理部件,另进行页式、段式和段页式存储管理。这种管理保证了上述巨大的逻辑空间。
        6)80386与8086和80286有向上兼容特性,8086、286的汇编源程序皆可以在80386 微机上运行。
        7)市场上大多数的操作系统可以在386机的保护方式下工作,在虚 拟86方式下,允许在Unix和DOS操作系统之下所编写的程序相互转换,
        8)CPU工作流水线方式。具有6级流水线,即取指、译码、执行、二级存储器管理和总线访问,指令并行处理提高了运行速度。
        9)具有动态数据总线宽度,可适应不同位M/IO器件和设备。可适用于8、16和32位的外设。总线周期流水线,CPU不必插入等待周期,总线带宽为32MB/s。
        10)具有丰富的外围支持器件:
        80387_数学协处理器;    82586_局网控制器:
        82384_时钟芯片; 82530_串行接口 ;
        82258_DMA控制器(DMAC);8272_磁盘控制器;
        8259A_中断控制器;82385_cache控制器;
        8254_定时/计数器; 82062_硬盘控制器。
        2.80386的寄存器,可分成六类。
        1) 通用寄存器
        通用寄存器用于算术和逻辑运算、存储器变址功能。
        2)指令指针和标志寄存器
        3)段寄存器
        80386支持四个同时可存取的代码模块,称之为段,它们是CS,DS,SS,ES,FS, GS, 都是16位寄存器。
        4)附加的寄存器
        附加寄存器包含了4个系统地址寄存器和4个控制寄存器, 它们确定了影响系统中所有任务的机器状态。
        5)调试与测试寄存器
        3.80386是方形芯片,共132只引脚。
        下面介绍引脚名称和信号。
        CLK2_两倍时钟信号,输入,该信号由时钟信号芯片82384同步输入, 在386 内部将CLK2信号二分频,即输入25MHZ,分频后为12.5MHz或16MHz。这是386的标准主频;
        D0-D31_数据总线,双向,三态,一次可传送8,16,24和32位;
        A2-A31_地址总线,输出、三态、这里是30根地址线,和BE0-BE3相组合可起到32根地址线作用;
        BE0-BE3(低)_字节选通,输出,每根线控制选通一个字节,如BE0选D0-D7字节,BE1选D8-D15字节,....相当存储器可分4库,上述A2-A31可寻址230单元,如果4根字节选通信号皆有效,则可选择230×22=232字节,所以可寻址4G字节;
        W/R(低)_读/写控制,输出;
        D/C(低)_数据/控制指示,输出,表示是数据传送周期还是控制周期;
        M/IO(低)_内存还是I/O选择,输出;
        LOCK(低)_总线锁定,输出。作用和8086相似;
        ADS(低)_地址状态,输出,三态。表示总线周期中地址信号有效,类似于8086的ALE;
        
        NA(低)_下一地址请求,输入。允许地址流水线操作, 即当前周期发下一总线周期地址和状态信号;
        BS16(低)_总线宽度16,输入。该信号有效表示数据只在低16位数据线上传输;
        READY(低)_准备就绪,输入,表示当前的总线周期已完成;
        HOLD(低)_总线保持请示,输入,该信号由要求占用总线的另外的处理器发出;
        HLDA(低)_总线保持响 应,输出 ,本处理器挂起让出总线给其他处理器使用, 是对上一信号的响 应;
        PEREQ_协处理器请求,输入,表示287或387要求386控制它们与存储器之间的信息传送;
        BUSY(低)_协处理器忙,输入;
        ERROR(低)_协处理器出错,输入;
        INTR(低)_可屏蔽中断请求,输入;
        NMI_非屏蔽中断请求,输入;
        RESET_复位信号,输入。
        4.寻址方式
        386指令不仅包含有操作的信息,还有指定了要处理的操作数类型, 以及指出这些操作数的位置。寻址方式有:
        立即寻址;       寄存器寻址;
        直接存储器寻址;寄存器间接寻址 ;
        基址相对寻址;直接变址寻址;
        基址变址寻址(带位移);标定寻址;
        位寻址。
        位一阵列指令是386独有的,8086和286皆没有,这些指令是为了操作个别位的阵列而设计的,一个32位机是为了处理大块数据而设计的,但是在计算机的发展中有两种重要的开发,它们给位操作以很高的评价,这两个开发是:
        1)存储器的高密度和价暴跌使得计算机有可能来处理视频和声频信号。
        2)随着高级语言的功能越来越强,编译生成代码也需要位操作。许多现代语言允许用户陈述布尔变量的阵列。但是,大多数编译器被迫去安排定位一个布尔阵列的每一元素的整个字节,因为没有合适的办法寻址一个阵列的个别位。有了直接位寻址将使编译程序能够很有效地压缩布尔阵列。
        关于高级语言支持,386与286完全一样有3条指令,即BOUND,ENTER和LEAVE。
        5.模拟286386可以在每个任务基础上模拟8086,因为286使用了一个表驱动段机制, 这和386相似,所以就更容易模拟特别是可以在某些程序中混合286和386程序, 以便286 和386程序相互调 用。下面看看该功能是如何完成的。
        首先,386必须能够确知它正执行的是286代码还是386代码。仅有两个目标代码区是不兼容 的,要特别加以注意:
        1)386段描述子和286有所区别,主要区别在扩展区(最高16位),段地址域由24位扩大到32位,段的尺寸界限也从16位扩大到24位。其他的不同来自对一些字段的不同解释,这将会产生不兼容。
        2)我们已看到缺少操作数尺寸和缺省地址长度在286是26位,在386则是32位.386 用检查代码段描述子的方法来解决这些不兼容的问题。在286和386中描述子皆64位长,因此我们可以在同一表上混合286和386的描述子。286的描述子高16位是不使用的,286规定这16位为0。386开拓这高16位,并规定这16位为0,且是286段的识别标志,特别是386代码段描述了的位54叫D位,当D位为1用于当前代码段,则缺省操作尺寸和寻址长度是32位。如果D位为0(它将用286),缺省值是16位, 这样就很容易区分了。
        现在只需把这两种类型的代码放入不同的段,286代码可以调用一个386过程,使用远调用CALL指令就行。返过来386代码也可调用286过程。
        在286和386之间即使代码段和堆栈段都为286的段,仍有下列区别:
        1)在许多情况下指令时序不同。一般说386比286要快。
        2)在386中有许多新的指令和前缀,它们在286上是无定义的, 如果这些操作码在286上执行,将发生无效代码故障(中断6)。如果这些操作在386上执行,指令将被执行,甚至386正在一286代码段上执行时也一样。增加386至286模拟方式的兼容是很有用的,比之支持286程序要好。因后者可能产生中断。
        6.保护环
        关于386的特权级(即保护环)的讨论与286完全一样,同样分为4环:安全核心(0环), 操作系统(1环),数据库管理(2环)和应用程序(3环)。
        7.多任务处理
        386支持各任务处理和286一样也是依靠从一个任务切换至另一个任务。为此386使每个任务有一个存储器段,该段含有所有起动或停止该任务的所需信息。这个专门段叫做任务状态段(TSS)。386有一16位寄存器,称为任务寄存器,它含 有GDT选择子,选择子用于当前运行任务的任务状态段, 任务寄在器由含有所选择描述子的寄存器所映射,虽然这个任务寄存器可以被装入和存储(使用LTR装任务寄存器指令和STR存储任务寄存器指令),但其亦将自动被386作为任务切换的一部分来处理。
        8.386的复位
        386有一个输入引脚RESET,它有效时迫使386复位。通常加电时使386复位。有不少计算机还设有复位按钮。一般要求复位信号为几分之一秒,才能稳定复位。复位后386开始执行实方式,实方式几乎与8086相同。我们可以在实方式下设置好所有的表和保护方式所需的寄存器,然后再转换到保护方式。这样,在实方式起动不仅可以有与8086兼容的好处,而且也便于初始化保护方式。
        9.检测287或387的存在
        设计386时考虑了和浮点运算协处理器的配合问题,它可以配用287或387, 或者它可以用软件模拟浮点指令的功能。许多系统包含了一个用于协处理器的插座,有时有两个插座,是为287和387准备的。由于二者引脚不尽相同,而且只能插一种,同时插两种会损坏器件,在这种情况下,多数通用初始化程序必须能告之是否存在一协处理器, 如果存在,又要区分是287还是387。
        387在复位时ERROR脚置“1”,与287相反。当386在复位时,自动检查这一脚,并且自动地编程设定CR0寄存器中关于387的位,反映检查后的结果,对387它是1,对287它是0。如果没有装上协处理器,系统应当在没有 连接的1脚上显示1。这样387位将置0。如果系统中根本没有287插座,那么初始化程序不用做很多测试。
        10.386与8086、80286在实方式下的区别
        这里简要列出80386在实方式下和8086,80286的区别,供编程者参考。
        (1)386与8086区别
        在80386上运行8086编码程序时,要考虑下列问题:
        ①无定义的8086/8088操作码
        8086/8088无定义的操作码会产生异常6,为避免这问题,可以定义该操作码或是执行为386定义的指令之一 。
        ②指令长度界限
        8086/8088没有指令长度界限,但386在遇到一条比15字节指令限长的指令时会产生异常13。这种情况只是由于过长的指令前缀引起的。
        ③访问超过偏移值65535字节。
        当一条指令的后继执行超过了64K,则下一指令字节的存取将从0地址开始,会产生异常13。
        ④时钟数目
        386执行一条指令比8086/8088少几个时钟周期,当某些I/O设备要求延时的时候要考虑这种差别。
        ⑤除法异常
        在8086上除法异常留下CS:IP值指向下一条指令,而在386上 则留下CS:IP 值指向出故障的指令。
        ⑥IDIV异常
        不成功的整数除法指令会使8086产生异常0,386则产生最大负数作为商。
        ⑦PUSH SP
        386在SP寄存器的数值减值前压入其值,而8086/8088是在SP减值之后压入其值。
        ⑧LOCK用法
        LOCK前缀在8086中一般没限制,但在386中则限于某些指令之前。
        ⑨标志入栈(PUSHF)
        选用PUSHF异常或中断存储标志时,8086把位12至位15当成1存储起来, 实方式中386把位15复位为0,位14至位12反映装入它们的最后数值。
        10中断16
        当386与协处理器一块工作,总是使用中断向量16处理协处理器出错,8086 则可以用其他向量,但是两向量都应当指向协处理器的出错异常处理程序。
        11前缀和数字异常处理程序
        在386 系统, CS: IP 指向一个协处理器异常, 它可以指向ESC 指令前的前缀。在8086/8088系统,CS:IP指向ESC指令自己。
        (2)实方式中286入386的区别
        ①通用寄存器初始化
        在系统复位后,386的某些通用寄存器和286是不一样的。因为8286通用寄存器的内容在系统复位后是无定义的。286/386寄存器应当不引起不兼容。
        ②第一条指令
        386第一条指令的起始地址在0FFFFFFF0H上,或者32位地址空间倒数16位字节。286相应起始地址是0FFFFF0H,或是24位地址空间倒数16字节。通常286ROM初始化程序可以在386环境工作。
        ③机器状态字(MSW)
        386初化MSW寄存器至0000H,而286初始化它至FFF0H,因为这些位的位置在386MSW 中是不同的,在286中是无定义的,不影响兼容性。使用这些值的程序在386中表现不同。
        ④LOCK
        LOCK前缀限定在某些指令前使用,这点前面已介绍过。因为80286和386实现总线锁定不同,如果286应用程序被传送至一专门的386应用过程,可能会有问题。386避免重复锁定指令访问相同起始地址/长度操作数存储器区,而8086/8088/80286 的配置锁定整个物理存储空间。
        11.80386接口方式
        与386连接的I/O设备可以用32位数据总线传送8,16,24或32位数据。I/O设备可以被安排在64K  I/O寻址空间中,或者按存储器编址高达4GB的存储器地址空间。用户可以选择I/O编址,也可以选用存储器映象I/O编址。386并不直接支持快速的I/O。为此要采用DMA控制器如82258或82380DMAC。
        当前386机上性能和价格之间采用了折衷的办法,有可能实现的系统存储器配置包括了SRAM,cache,分页存储器和静态列(static-column)RAM,DRAM或者它们的某些组合。大多数配置使用快速存储器处理经常要使用的功能,同时较慢的存储器作为备用件为其他功能服务。这些存储器通常分成快速局部存储器和较慢的系统存储器。有的386计算机使用了设计静态列RAM。但是,对于那些要求有大量存储器的系统来说,cache存储器方案有一个性能限。
        82385(高性能cache控制器)是专门为与386接口而设计的,它可以有效的管理cache。由于82385不需要专门的软件初始化和软件透明, 它和现存的软件以及以后的软件都可兼容。82385截取对存储器的访问并且直接处理它们,无需发送对总线的要求。这就减少了总线传输和有较快的存储器存取。
        80287和80387皆可配386,二者与早期的8087软件兼容,均提供对IEEE 浮点标准的全部支持,在16MHz时,80387比5MHz下工作的80287快6倍,但是80287对一般应用来说已足够快,而且价格便宜,所以用户可根据情况二者取一。
        下面我们介绍一些目前市场上遇到的386机型。由于研制386微型机的厂家非常多,我们不一一介绍,只介绍一些共同点。
        首先是关于主频的分档。目前市场上有4 种档次, 即16MHz,20MHz,25MHz和33MHz4类,一般表示为386/16,386/20,386/25和386/33。常见的系统配置见下表。
        微型机基本配置
        配置  386/33   386/25   386/20   386/16
        CPU 80386/33     80386/25   80386/20  80386/16
        内存 2-4MB   2-4MB   2-4MB 2-4MB
        cache 64KB
        CRT 1024×768   1024×768  1024×768   1024×768
        显示卡  TVGA    TVGA TVGA TVGA
        硬盘  100MB       80MB       40MB        40MB
        软盘 1-2MB 同左    同左 同左
        I/O  2串/1并     2串/1并    2串/1并  2串/1并
        鼠标器  标准配置   同左    同左 同左
        机箱      立式        立式 立式 立式/台式
        键盘      101    101       101 101
        电源      250W      200W   200W 200W
        多用户卡  4用户/8用户卡 同左   同左 同左
        另外,在微机市场上还有一种较便宜且低耗电的386 机, 叫做386SX 型,是Intel公司专门推出的386普及型微处理器。它的特点是内部结构为全32位, 但外部地址总线仅24位,外部数据总线为16位。使用它仍可获得32位编程结构,但无论用8位、16位或32位数据类型进行编程都可以,同时还可以与16位的外设相兼容。 由于目前很少有32位数据线的外设,因此应当以考虑现有的16位外设接口为主。386SX 和标准的386SX关系与当年的8088和8088的关系有些类似。
        80386SX的协处理器是80387SX,其速度比80287快4-7倍。80387SX内部结构为80位。有8个80位数字寄存器,它可将80386SX的数据类型扩展到包含32位、64位、80 位浮点数;32位、64位整数;18位BCD码运算等等。80387SX与80387全兼容。
        80386SX的目标码与80386、80286、8086全兼容。因此可以运行以80386为CPU的机器所能运行的操作系统及应用软件。如MS-DOS,OS/2,XENIX以及在它们支持下的能在IBM-PC/XT ,PC/AT,PS/2中运行的各种软件。 这类机器一般配有专用门阵列芯片如82230、82231、82335等外设集成接口芯片。80386SX配有大容量硬盘(80MB ,100MB) 和3.5〃软盘驱动器。显示方面一般选用多功能VGA彩卡,配合多频制高分辨率彩色监视器。也支持VGA,EGA,CGA和MDA等多种显示标准。在VGA方式工作时,可以在640*480分辨率下显示16种颜色;在CGA 方式下,可在320×200分辨率下显示256种颜色。下表给出了386SX机型的一般配置。80386DX是一种更新的机型,比早期的386机好,主频为33MHZ。
        386SX机型配置
        类型 IBM PC/AT全兼容
        CPU Intel 80386SX-16
        速度 8/20 MHz可调
        RAM 2MB,主板上可扩充至8MB
        ROM 64KB
        CMOS存储     可保持系统配置
        电池         供CMOS存储器及实时时钟使用
        软驱         360KB,1.2KB各一个
        硬盘         40MB 28M 2.5〃高速硬盘
        显示器 VGA 800×600隔行扫描可达1024×768
        显示卡 VGA支持800×600,兼容CGA,EGA,MDA
        扩展槽 三个8位,五个16位
        协处理器 80387SX-16
        I/O         一并行口,两中行口,游戏棒接口
        操作系统 DOS3.3,EMS4.0
        五、i486微机
        1989年秋Intel推出了i486微处理器。其系统性能为386的2-4倍,以OEM或用户为对象。i486主要适用于个人计算机和工作站,该产品继承了386DX微处理器(比开始的386性能好,主频33MHz)的体系结构,性能扩充,速度加快。片内增加了32位的浮点运算芯片,相当于387DX。内有更高性能的算术运算单元,存储器管理单元(MMU), 4K 字节的指令cache,和4K字节的数据cache,这些都集成在一块芯片之内,它设置指令cache和数据cache是响应68030的挑战。
        Intel公司在i486中采用了CHMOS IV处理技术,集成了约120万个晶体管(晶体管数量和内cache与Motorola的新产品68040相同)。
        i486在25MHz主频下,速度为15VAX MIPS(1 VAX MIPS是以VAX780的性能为1作衡量基准的)。可见大大超过了VAX 780计算机。i486在33MHz主频下,速度更高。
        1.i486结构特点
        i486微处理器的体系结构由内部32位寄存器组和外部32位独立的数据/ 地址总线构成。
        在指令执行单元时采用了流水线技术和RISC 技术(reduced   instruction  set computer_缩小指令集合计算机),大部分基本指令执行时间为1时钟周期。
        486上可以运行86系列的所有软件产品,如MS-DOS,OS/2,UNIX和操作系统及其应用程序。i486的结构框图如图所示。
        80486的结构框图与386的结构框图相比保留了原有的6个基本部分,这6个部分是控制单元,算术运算单元,存储器管理段单元和页单元,指令处理单元和总线接口单元。在这6个部分基础上,增加了浮点运算数学单元(相当387) 和cache 单元(指令和数据cache)。简述其特点:
        ①集成120万只晶体管
        ②软件的兼容性
        ③芯片内的存储器管理单元可排除寄存器延时问题
        ④片内cache
        内藏4K字节指令cache和4K字节数据cache,具有极高的击中率,而cache是原386中没有的。在cache存放了最频繁使用的指令和数据信息,大大加快了存取速度。
        ⑤易于建立多处理器系统
        2.外设芯片的开发
        i486为了保证其他处理器可正常工作, 采用系统总线EISA( extended  industrial  system architecture_扩展的工业标准结构总线),这和传统的PC 和XT中使用的I/O总线(ISA)是截然不同的,是标准的32位机系统总线,总线插座也与以住的大不相同,是一个双层的总线插座,之所以采用双层是考虑到原有插板大多数是ISA方式的,为仍能使用这种插座,同时又要配新型的EISA方式插板,所以采用双层总线插座。
        Intel公司在推出i486的同时,又推出了许多支持486的外设芯片,如82596CA“LAN”处理器;82350 EISA芯片组;82320“MCA”兼容芯片组;84C508“PLA”;82357“isp”集成外设芯片组(包括DMAC。中断控制器定时器和刷新电路);82358 EB总线控制器;82485 cache控制器,82352;EBB交换总线缓冲器等等, 此外还有大量的门阵列电路和PLA电路(可编程逻辑设计阵列电路)。它们是i486很好的陪衬。
        图4 i486结构框图
        i486的开发支持软件工具中,还有软件应用开发、硬件综合故障排除支持工具组i486所用的软件开发语言与现存的386DX,386SX用的语言完全向上兼容,可互换。即可通用宏汇编,C语言,PL/M编译程序,连接程序/定位等丰富的应用软件。软件调试可在基于386的MS-DOS下进行。
        总之,目前推出的25/33MHz的i486,33MHz的386DX以及低耗电的386SX及其系列芯片,不但加强了以往的32位系列产品,并使32位机在90年代又有了新的广泛应用前景。
        和386微机系统相比,i486微机系统更新了母板,采用i486为CPU,使用了EISA全32位结构总线,使用了许多门阵列的接口芯片组和PAL器件。同时又与286机,386机在许多方面兼容。
        3.母板
        i486计算机的核心部件是一块母板,母板上有多个I/O槽, 可接外设适配器卡和软硬盘驱动卡以及图形适配器卡等等,这些插入的I/O卡和386微机并没有多大区别,而且往往是可插入386机也可插入i486机,所以i486微型机和386 微型机的主要区别在于母板。
        母板面积大约8.5×13平方英寸使用了VLSI技术,它是以Intedl i486 32位微处理器和82350 EISA芯片组为核心的系统母板,母板与EISA全兼容。它有:
        Intel i486微处理器;
        由128KB高速SRAM组成第二级cache;
        支持成组方式的页式两路字交替存储系统;
        EISA可兼容的ROM BIOS(27C010);
        集成的系统外设芯片 82350,内含有7通道的DMA,16级中断控制器和5个可编程器;
        实时时钟和CMOS RAM(146818A);
        支持实时时钟和CMOS RAM的备份电池;
        系统时钟电路(33MHz);
        喇叭与键盘接口;
        PS/2鼠标接口;
        8个I/O槽,6个8-16-32位的EISA槽,两个8位ISA槽;
        32位高速系统存储器槽装有存储器条;
        Turbo灯和硬件复位接口;
        带有外接电池接口的板上镍镉电池。
        母板提供的特殊的功能有:作为扩展存储器的320KB RAM的重新定位和用户硬盘类型
        配置实用软件中有一HDCONF.EXE程序,允许用户重新配置ROM BIOS 磁盘驱动器表中的硬盘参数。
        Intel i486微处理器是高性能32位的微处理器,与基于8088,286 和386的软件相兼容。i486把387兼容的数字协处理器、cache存储器控制器以及8KB的高速SRAM三者集成于一芯片之上。