1.89k likes | 2.11k Views
第 5 章 微处理器总线时序和系统总线. 5.1 微处理器性能指标 5.2 微处理器总线 5.3 8086 微处理器的基本时序 5.4 系统总线 习题 5. 5.1 微处理器性能指标.
E N D
第5章 微处理器总线时序和系统总线 5.1 微处理器性能指标 5.2 微处理器总线 5.3 8086微处理器的基本时序 5.4 系统总线 习题5
5.1 微处理器性能指标 CPU(Central Processing Unit)即中央处理器,从雏形出现到发展壮大的今天,由于制造技术越来越先进,因此集成度越来越高,内部的晶体管数已达到几千万个。虽然从最初的CPU发展到现在,其晶体管数增加了几千倍,但是CPU的内部结构仍然可分为控制单元、逻辑单元和存储单元三大部分。CPU的性能大致上反映了它所配置的微机的性能。CPU主要的性能指标有11项,下面分别介绍。
1. 字长 所谓字长,即处理器一次性加工运算二进制数的最大位数。字长是处理器性能指标的主要量度之一,它与计算机其他性能指标(如内存最大容量、文件的最大长度、数据在计算机内部的传输速度、计算机处理速度和精度等)有着十分密切的关系。字长是计算机系统体系结构、操作系统结构和应用软件设计的基础,也是决定计算机系统综合性能的基础。
2. 主频 主频也就是CPU的时钟频率,简单地说就是CPU运算时的工作频率。一般说来,主频越高,一个时钟周期里面完成的指令数也越多,当然CPU的速度也就越快。不过由于各种各样的CPU的内部结构不尽相同,因此并非所有的时钟频率相同的CPU其性能都一样。外频是系统总线的工作频率;倍频则是指CPU外频与主频相差的倍数。三者有着十分密切的关系,即:主频=外频×倍频。
3. 内存总线速度与扩展总线 内存总线速度(Memory Bus Speed)一般等同于CPU的外频。内存总线的速度对整个系统性能来说很重要,由于内存速度的发展滞后于CPU的发展速度,为了缓解内存带来的瓶颈,开发了二级(L2)缓存,来协调两者之间的差异,内存总线速度就是指CPU与二级高速缓存以及内存之间的工作频率。 扩展总线(Expansion Bus)指的是安装在微机系统上的局部总线。如VESA或PCI总线,它们是CPU联系外部设备的桥梁。
4. 工作电压 工作电压(Supply Voltage)指的是CPU正常工作所需的电压。早期CPU(286~486)的工作电压为5 V,由于制造工艺相对落后,以致CPU发热量大,寿命短。随着CPU的制造工艺与主频的提高,CPU的工作电压逐步下降,到奔腾时代,电压曾有过3.5 V,后来又下降到3.3 V,甚至降到了2.8 V,Intel最新出品的Coppermine已经采用1.6 V的工作电压了。低电压能解决耗电过大和发热过高的问题,这对于笔记本电脑尤其重要。随着CPU的制造工艺与主频的提高,近年来各种CPU的工作电压有逐步下降的趋势。
5. 地址总线宽度 地址总线宽度决定了CPU可以访问存储器的物理地址空间,简单地说就是CPU到底能够使用多大容量的内存。地址线的宽度为20位的微机,最多可以直接访问1 MB的物理空间,但是对于386以上的微机系统,地址线的宽度为32位,最多可以直接访问4096 MB(4 GB)的物理空间。 6. 数据总线宽度 数据总线负责整个系统数据流量的大小,而数据总线宽度则决定了CPU与二级高速缓存、内存以及输入/输出设备之间一次数据传输的信息量。
7. 协处理器 协处理器主要的功能就是负责浮点运算。在486以前的CPU里面,是没有内置协处理器的,主板上可以另外加一个外置协处理器,其目的就是增强浮点运算的功能。486以后的CPU一般都内置了协处理器,协处理器的功能也不再局限于增强浮点运算功能,含有内置协处理器的CPU,可以加快特定类型的数值计算,某些需要进行复杂计算的软件系统(如高版本的AutoCAD)就需要协处理器支持。
8. 流水线技术、超标量 流水线(PipeLine)是Intel首次在486芯片中开始使用的技术。流水线的工作方式就像工业生产上的装配流水线。在CPU中由5~6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5~6步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,因此提高了CPU的运算速度。超流水线是指CPU内部的流水线超过通常的5~6步以上,例如,Pentium Pro的流水线就长达14步。将流水线的步(级)数设计得越多,其完成一条指令的速度就越快,因此才能适应工作主频更高的CPU。
超标量是指在一个时钟周期内CPU可以执行一条以上的指令。只有Pentium级以上的CPU才具有这种超标量结构,这是因为现代的CPU越来越多地采用了RISC技术。486以下的CPU属于低标量结构,即在这类CPU内执行一条指令至少需要一个或一个以上的时钟周期。超标量是指在一个时钟周期内CPU可以执行一条以上的指令。只有Pentium级以上的CPU才具有这种超标量结构,这是因为现代的CPU越来越多地采用了RISC技术。486以下的CPU属于低标量结构,即在这类CPU内执行一条指令至少需要一个或一个以上的时钟周期。
9. 高速缓存 高速缓存(Cache)分内置和外置两种,用来解决CPU与内存之间传输速度的匹配。内置的高速缓存的容量和结构对CPU的性能影响较大,容量越大,性能也就相对提高。不过高速缓冲存储器均由静态RAM组成,结构较复杂,在CPU管芯面积不能太大的情况下,高速缓存的容量不可能做得太大。采用回写(Write Back)结构的高速缓存,它对读和写操作均有效,速度较快。而采用写通(Write Through)结构的高速缓存,仅对读操作有效。在486以上的计算机中基本采用了回写式高速缓存。
10. 动态处理 动态处理是应用在高能奔腾处理器中的新技术,创造性地把三项专为提高处理器对数据的操作效率而设计的技术融合在一起。这三项技术是多路分流预测、数据流量分析和猜测执行。动态处理并不是简单执行一串指令,而是通过操作数据来提高处理器的工作效率。
1) 多路分流预测 多路分流预测通过几个分支对程序流向进行预测。采用多路分流预测算法后,处理器便可参与指令流向的跳转。它预测下一条指令在内存中位置的准确度可以高达90%以上。这是因为处理器在取指令时,还会在程序中寻找未来要执行的指令。这个技术可加速向处理器传送任务。
2) 数据流量分析 数据流量分析抛开原程序的顺序,分析并重排指令,优化执行顺序。处理器读取经过解码的软件指令,判断该指令能否处理或是否需与其他指令一并处理。然后,处理器再决定如何优化执行顺序以便高效地处理和执行指令。
3) 猜测执行 猜测执行提前判断并执行有可能需要的程序指令,从而提高执行速度。当处理器执行指令时(每次五条),采用的是“猜测执行”的方法。这样可使Pentium Ⅱ处理器超级处理能力得到充分的发挥,从而提升软件性能。被处理的软件指令是建立在猜测分支基础之上的,因此结果也就作为“预测结果”保留起来。一旦其最终状态能被确定,指令便可返回到其正常顺序并保持永久的机器状态。
11. 制造工艺 Pentium CPU的制造工艺是0.35 靘,PentiumⅡ CPU可以达到0.25 靘,最新的CPU制造工艺可以达到0.18 靘,并且将采用铜配线技术,可以极大地提高CPU的集成度和工作频率。 Intel的几种微处理器关键特性的比较如表5-1所示。
Intel 处理器 引入 日期 最大时钟 频率 晶体管 数目 寄存器 尺寸 外部数据总线尺寸 最大外部地址空间 Cache 8086 1978 8 MHz 29K 16GP 16 1 MB 80286 1982 16 MHz 134K 16GP 16 16 MB 80386DX 1985 40 MHz 275K 32GP 32 4 GB 80486DX 1989 100 MHz 1.2M 32GP 80FPU 32 4 GB L1:8 KB Pentium 1993 166 MHz 3.1M 32GP 80FPU 64 4 GB L1:16 KB Pentium Pro 1995 266 MHz 5.5M 32GP 80FPU 64 64 GB L1:16 KB L2:256 KB PentiumⅡ 1997 400 MHz 7M 32GP 80FPU 64MMX 64 64 GB L1:32 KB L2:256 KB PentiumⅢ 1999 887 MHz 8.2M 32GP 80FPU 64MMX 128MMX 64 64 GB L1:32 KB L2:512 KB 表5-1 Intel微处理器关键特性比较
5.2 微处理器总线 5.2.1 Intel 8086微处理器的引脚功能 8086微处理器是Intel公司的第三代微处理器,它的字长是16位的,采用40条引脚的DIP(双列直插)封装。时钟频率有三种:5 MHz(8086)、8 MHz(8086-1)和10 MHz (8086-2)。8086的引脚如图3.1所示。 8086的40条引脚信号按功能可分为四部分——地址总线、数据总线、控制总线以及其他(时钟与电源)。8086微处理器的引脚信号定义见表5-2。
1. 地址总线和数据总线 (1) 数据总线用来在CPU与内存储器(或I/O设备)之间交换信息,为双向、三态信号。地址总线由CPU发出,用来确定CPU要访问的内存单元(或I/O端口)的地址信号,为输出、三态信号。 (2) AD15~AD0为地址/数据总线。这16条信号线是分时复用的双重总线,在每个总线周期(T1)开始时,用作地址总线的16位(AD15~AD0)给出内存单元(或I/O端口)的地址;其他时间为数据总线,用于数据传输。
(3) A19~A16/S6~S3为地址/状态总线。这4条信号线也是分时复用的双重总线,在每个总线周期(T1)开始时,用作地址总线的高4位(A19~A16),在存储器操作中为高4位地址,在I/O操作中,这4位置“0”(低电平)。在总线周期的其余时间,这4条信号线指示CPU的状态信息。在4位状态信息中,S6恒为低电平;S5反映标志寄存器中中断允许寄存器IF的当前值;S4、S3表示正在使用哪个段寄存器,其编码见表5-3。
名 称 功 能 引 脚 号 类 型 公 用 信 号 AD15~AD0 地址/数据总线 2~16,39 双向、三态 A19/S6~A16/S3 地址/状态总线 35~38 输出、三态 /S7 总线高允许/状态 34 输出、三态 MN/ 最小/最大方式控制 33 输入 读控制 32 输出、三态 等待测试控制 23 输入 READY 等待状态控制 22 输入 RESET 系统复位 21 输入 NMI 不可屏蔽中断请求 17 输入 INTR 可屏蔽中断请求 18 输入 CLK 系统时钟 19 输入 VCC +5 V电源 40 输入 GND 接地 1,20 表5-2 8086引脚信号定义
最小方式信号(MN/=MX=VCC) HOLD 保持请求 31 输入 HLDA 保持响应 30 输出 写控制 29 输出、三态 M/IO 存储器/IO控制 28 输出、三态 DT/R 数据发送/接收 27 输出、三态 数据允许 26 输出、三态 ALE 地址锁存允许 25 输出 中断响应 24 输出 表5-2 8086引脚信号定义
最大方式信号(MN/=GND) 请求/允许总线访问控制 30,31 双向 总线优先权锁定控制 29 输出、三态 总线周期状态 26~28 输出、三态 QSl、QS0 指令队列状态 24,25 输出 表5-2 8086引脚信号定义
S4 S3 特性(所使用的段寄存器) 0 0 ES 0 1 SS 1 0 CS(或者不是寄存器操作) 1 1 DS 表5-3 S4、S3的编码表
(4) 8086的20条地址线访问存储器时可寻址1 MB的内存单元;访问外部设备时,只用16条地址A15~A0,可寻址64K个I/O端口。 (5) BHE/S7为总线高允许/状态S7信号(输出三态)。这也是分时复用的双重总线,在总线周期开始的T1周期,作为16位总线高字节部分允许信号,低电平有效。当为低电平时,把读/写的8位数据与AD15~AD8连通。该信号与A0(地址信号最低位)结合以决定数据字是高字节工作还是低字节工作。在总线周期的其他T周期,该引脚输出状态信号S7。在DMA方式下,该引脚为高阻态。
2. 控制总线 控制总线是传送控制信号的一组信号线,有些是输出线,用来传输CPU送到其他部件的控制命令(如读、写命令,中断响应等);有的是输入线,由外部向CPU输入控制及请求信号(复位、中断请求等)。 8086的控制总线中有一条是MN/MX(33#引脚)线,即最小/最大方式控制线,用来控制8086的工作方式。当MN/MX接+5 V时,8086处于最小方式,由8086提供系统所需的全部控制信号,构成一个小型的单处理机系统。当MN/MX接地时,8086处于最大方式,系统的总线控制信号由专用的总线控制器8288提供,8086把指示当前操作的状态信号(S2、S1、S0)送给8288,8288据此产生相应的系统控制信号。最大方式用于多处理机和协处理机结构中。
在8086的控制总线中,有一部分总线的功能与工作方式无关,而另一部分总线的功能随工作方式不同而不同(即一条信号线有两种功能),现分别叙述。在8086的控制总线中,有一部分总线的功能与工作方式无关,而另一部分总线的功能随工作方式不同而不同(即一条信号线有两种功能),现分别叙述。 1) 受MN/MX影响的信号线(最大方式信号) (1) S2、S1、S0——总线周期状态信号(三态、输出)。它们表示8086外部总线周期的操作类型,送到系统中的总线控制器为8288。8288根据这三个状态信号,产生存储器读/写命令、I/O端口读/写命令以及中断响应信号,S2、S1、S0的译码表如表5-4所示。
操作类型(CPU周期) 0 0 0 中断响应 表5-4 S2、S1、S0译码表 0 0 1 读I/O端口 0 1 0 写I/O端口 0 1 1 暂停 1 0 0 取指 1 0 1 读存储器(数据) 1 1 0 写存储器 1 1 1 无效(无总线周期)
在总线周期的T4期间,S2、S1、S0的任何变化,都指示一个总线周期的开始,而在T3期间(或Tw等待周期期间)返回无效状态,表示一个总线周期的结束。在DMA(直接存储器存取)方式下,S2、S1、S0处于高阻状态。在总线周期的T4期间,S2、S1、S0的任何变化,都指示一个总线周期的开始,而在T3期间(或Tw等待周期期间)返回无效状态,表示一个总线周期的结束。在DMA(直接存储器存取)方式下,S2、S1、S0处于高阻状态。 在最小方式下, S2、S1、S0三引脚分别为M/IO、DT/R和DEN。M/IO是存储器与输入/输出端口的控制信号(输出、三态),用于区分CPU是访问存储器(M/IO=1),还是访问I/O端口(M/IO=0)。DT/R为数据发送/接收信号(输出、三态),用于指示CPU是进行写操作(DT/R=1)还是读操作(DT/R=0)。DEN为数据允许信号(输出、三态),在CPU访问存储器或I/O端口的总线周期的后一段时间内,该信号有效,用作系统中总线收发器的允许控制信号。
(2)RQ/GT0、RQ/GT1——请求/允许总线访问控制信号(双向)。这两种信号线是为多处理机应用而设计的,用于对总线控制权的请求和应答,其特点是请求和允许功能由一根信号线来实现。 总线访问的请求/允许时序分为三个阶段,即请求、允许和释放。首先是协处理器向8086输出RQ请求使用总线,然后在CPU(8086)的T4或下一个总线周期的T1时期,CPU输出一个宽度为一个时钟周期的脉冲信号GT给请求总线的协处理器,作为总线响应信号,从下一个时钟周期开始,CPU释放总线。当协处理器使用总线结束时,再给出一个宽度为一个时钟周期的脉冲信号RQ给CPU,表示总线使用结束,从下一个时钟周期开始,CPU又控制总线。
两条控制线可以同时接两个协处理器,规定RQ/GT0的优先级高。在最小方式下,RQ/GT0和RQ/GT0二引脚分别为HLDA。两条控制线可以同时接两个协处理器,规定RQ/GT0的优先级高。在最小方式下,RQ/GT0和RQ/GT0二引脚分别为HLDA。 HOLD为保持请求信号(输入),当外部逻辑把HOLD引脚置为高电平时,8086在完成当前总线周期以后进入HOLD(保持)状态,让出总线控制权。 HLDA为保持响应信号(输出),这是CPU对HOLD信号的响应信号,它对HOLD信号作出响应,使HLDA输出高电平。当HLDA信号有效时,8086的三态信号线全部处于高阻态(即三态),使外部逻辑可以控制总线。
QS1 QS0 指令队列操作状态 0 0 空操作,在最后一个时钟周期内,从队列中不取任何代码 0 1 第一个字节,从队列中取出的字节是指令的第一个字节 1 0 队列空,由于执行传送指令,队列已重新初始化 1 1 后续字节,从队列中取出的字节是指令的后续字节 (3) QS1、QS0——指令队列状态信号(输出)。用于指示8086内部BIU中指令队列的状态,以便让外部协处理器进行跟踪。QS1、QS0的编码状态如表5-5所示。 表5-5 QS1、QS0的编码表
在最小方式下,QS1、QS0二引脚分别为INTA和ALE。在最小方式下,QS1、QS0二引脚分别为INTA和ALE。 ALE为地址锁存允许信号(输出),这是8086 CPU在总线周期的第一个时钟周期内发出的正脉冲信号,其下降沿用来把地址/数据总线(AD15~AD0)以及地址/状态总线(A19~A16/S6~S3)中的地址信息锁住并存入地址锁存器中。 INTA为中断响应信号(输出、三态),当8086 CPU响应来自INTR引脚的可屏蔽中断请求时,在中断响应周期内,INTA变为低电平。
(4) LOCK——总线优先权锁定信号(输出、三态)。该信号用来封锁外部处理器的总线请求,当输出低电平时,外部处理器不能控制总线,LOCK信号是否有效,由指令在程序中设置。若一条指令加上前缀指令LOCK,则8086在执行该指令期间,LOCK线输出低电平并保持到指令执行结束,以防止在这条指令在执行过程中被外部处理器的总线请求所打断。在保持响应期间,LOCK线为高阻态。 INTA在最小方式下,LOCK引脚为WR信号。WR为写控制信号(输出,三态),当8086 CPU对存储器或I/O端口进行写操作时,WR为低电平。
2) 不受MN/MX影响的控制总线(公共总线) 下面这些控制信号是不受工作方式影响的公共总线。 (1) RD——读控制信号(三态、输出)。RD信号为低电平时,表示8086 CPU执行读操作。在DMA方式时RD处于高阻态。 (2) READY——等待状态控制信号,又称准备就绪信号(输入)。当被访问的部件无法在8086 CPU规定的时间内完成数据传送时,应由该部件向8086 CPU发出READY=0(低电平),使8086 CPU处于等待状态,插入一个或几个等待周期T,当被访问的部件完成数据传输时,被访问的部件将使READY=1(高电平),8086 CPU继续运行。
(3) INTR——中断请求信号(输入)。该引脚提供可屏蔽中断请求信号,为电平触发信号。在每条指令的最后一个时钟周期,8086 CPU将采样该引脚信号,若INTR为高电平,同时8086 CPU的IP(中断允许标志)为“1”,则8086 CPU将执行中断响应,并且把控制转移到相应的中断服务程序。如果IF=“0”,则8086不响应该中断请求,继续执行下一条指令。INTR信号可由软件将CPU内部的IP复位而加以屏蔽。 (4) NMI——不可屏蔽中断请求信号(输入)。上升沿触发信号,不能用软件加以屏蔽。当NMI从低电平变为高电平时,该信号有效,8086 CPU在完成当前指令后,把控制转移到不可屏蔽中断服务程序。
(5)TEST——等待测试控制信号(输入)。在WAIT(等待)指令期间,8086 CPU每隔5个时钟周期对TEST引脚采样。若TEST为高电平,则8086 CPU循环于等待状态,若TEST为低电平,则8086 CPU脱离等待状态,继续执行后续指令。 (6) RESET——复位信号(输入)。当RESET为高电平时,系统处于复位状态,8086 CPU停止正在运行的操作,把内部的标志寄存器FR、段寄存器、指令指针IP以及指令队列复位到初始化状态。注意,代码段寄存器CS的初始化状态为FFFFH。
3. 其他信号 (1) CLK——时钟信号(输入)。该信号为8086 CPU提供基本的定时脉冲,其占空比为1∶3(高电平持续时间:重复周期=1∶3),以提供最佳的内部定时。 (2) VCC——电源(输入)。要求接上正电压(+5V±10%)。 (3) GND——地线。两条接地线。
4. 8088引脚与8086引脚的不同之处 8088微处理器是一种准16位处理器,其内部结构基本上与8086相同,且有着相同的内部寄存器和指令系统,在软件上是完全兼容的。其引脚信号也与8086基本相同,只是如下引脚的功能有所不同。8088的引脚安排如图5.2所示。 (1) 8086 CPU的指令预取队列为6个字节,而8088 CPU只有4个字节。 (2) 8086 CPU的AD15~AD0为地址/数据双向分时复用的,而8088 CPU只有AD7~AD0,为地址、数据双向分时复用的,A15~A8仅用于输出地址信号。在16位数据操作时,8086只需一个总线周期就可完成,8088则需要两个总线周期来完成,因此8088的速度较8086要慢些。
(3) 8086的引脚28为M/IO,即CPU访问内存时该引脚输出高电平,访问接口时则输出低电平。对于8088而言,该引脚的状态正好相反,变为IO/M。 (4) 8088中无BHE/S7信号,该引脚为SS0状态信号线。该引脚在最大方式下保持高电平,在最小方式下等效于最大方式下S0的作用,SS0与IO/ M、DT/R组合以确定当前的总线周期,IO/M、DT/R与SS0的编码如表5-6所示。
IO/ DT/ SS0 总线操作 1 0 0 中断响应 表5-6 IO/M、DT/R、SS0编码表 1 0 1 读I/O端口 1 1 0 写I/O端口 1 1 1 暂停 0 0 0 取指 0 0 1 读存储器 0 1 0 写存储器 0 1 1 无效
5.2.2 8086微处理器的系统配置 8086微处理器有两种工作方式,下面讨论在这两种工作方式下系统的基本配置。 1. 最小方式下的系统配置 当8086 CPU的MN/引脚接+5 V电源时,8086 CPU工作于最小方式,用于构成小型的单处理机系统,图5.3为最小方式下8086系统配置图。在图5.3所示的8086系统中,除8086 CPU、存储器和I/O接口电路外,还有三部分支持系统工作的器件——时钟发生器、地址锁存器和数据收发器。
1) 时钟发生器8284A 8284A是用于8086(或8088)系统的时钟发生器/驱动器芯片,它为8086(或8088)以及其他外设芯片提供所需要的时钟信号。8284A的结构框图及引脚图如图5.4所示。由图可见,8284A由三部分电路组成。
(1) 时钟信号发生器电路提供系统所需要的时钟信号,有两个来源:一个是在x1与x2引脚之间接上晶体,由晶体振荡器产生时钟信号;另一个是由EFI引脚加入的外接振荡信号产生时钟信号,两者由F/端信号控制。F/C=0时,表示由外接振荡器产生。 如果晶体振荡器的工作频率为14.318 18 MHz,则该时钟脉冲(OSC)经3分频后得到4.77 MHz的时钟脉冲CLK,即微处理器(如8086)所需的时钟信号(占空比为1∶3)。CLK再经2分频后产生外设时钟PCLK,其频率为2.3805 MHz(占空比为1∶2)。
(2) 复位生成电路是由一个施密特触发器和一个同步触发器组成,输入信号RES在时钟脉冲下降沿加入D门(同步触发器)的D端,由CLK(8086的时钟信号)同步产生RESET信号(高电平有效)。在PC/XT机中,RES由电源来的PWRGOOD信号经8284延时和同步后产生系统复位信号,使系统初始化。
(3) 就绪控制电路有两组输入信号,每一组都有允许信号AEN和设备就绪信号RDY。AEN是低电平有效信号,用以控制其对应的RDY信号是否有效,RDY信号为高电平时,表示已经能正确地完成数据传输。ASYNC输入端规定了就绪信号同步操作的两种方法,当ASYNC为低电平时,对有效的RDY信号提供两级同步,RDY信号变为高电平后,首先在CLK的上升沿上同步到触发器1,然后在CLK的下降沿上同步到触发器2,使READY成为有效(高电平)。RDY信号变为低电平时,将直接在CLK下降沿上同步到触发器2,使READY输出信号无效(低电平)。如果ASYNC为高电平,则RDY输入信号直接与触发器2同步在CLK下降沿上,这种工作方式用于能保证满足RDY建立时间要求的同步设备中。