购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.5 微处理器的外部功能特性

为了更好地理解和使用现代微处理器,还应对其外部引脚信号及其操作特性有必要的了解。在本节,将以32位微处理器80386 DX为例,详细介绍微处理器外部引脚的基本功能特性及其操作时序。

3.5.1 微处理器的外部引脚信号

1.80386 DX的外部引脚信号概况

80386 DX微处理器共132个外部引脚,用来实现与存储器、I/O接口或其他外部电路进行连接和通信。整个芯片采用引脚栅格阵列(Pin Grid Array,PGA)封装,引脚分布如图3.14所示。

按功能的不同,可将这132个引脚信号分成4组:存储器/IO接口、中断接口、DMA接口和协处理器接口。图3.15给出了80386 DX引脚信号分组情况。

表3.3列出了各个引脚信号的名称、功能、传送方向以及每个信号的有效电平。例如,“存储器/IO接口”中的 信号,其功能是“存储器/IO指示”,用以告诉外部电路当前微处理器是在访问存储器还是I/O接口;该信号的传送方向是输出,即它是由微处理器产生的输出信号;它的有效电平为1/0,其含义为,在这个信号线上的逻辑1电平表明CPU当前是在访问存储器,而逻辑0电平表明是在访问I/O接口。又如,“中断接口”中的INTR信号,是可屏蔽中断请求输入信号,其有效电平是逻辑1。外部设备利用这个信号通知微处理器,它们需要得到服务。

图3.14 80386 DX引脚分布

图3.15 80386 DX引脚信号分组

表3.3 80386 DX外部引脚信号列表

2.存储器/IO接口信号

微处理器的“存储器/IO接口”信号通常又包括地址总线、数据总线及其他有关控制信号。下面分别予以说明。

1)地址和数据总线信号

地址总线和数据总线形成了CPU与存储器和I/O子系统间进行通信的基本通路。在早期的Intel微处理器(如8085、8086/8088)中,曾普遍采用地址总线和数据总线复用技术,即将部分(或全部)地址总线与数据总线共用微处理器的一部分引脚,目的是为了减少微处理器的引脚数量,但由此也会带来控制逻辑及操作时序上的复杂性。自80286及更高型号的微处理器开始,则采用分开的地址和数据总线。如图3.15所示,80386 DX的地址总线信号A 31 ~A 2 和数据总线信号D 31 ~D 0 被分别设定在不同的引脚上。

从硬件的观点来看,80386 DX的实模式与保护模式之间仅有一点不同,即地址总线的规模。在实模式下,只输出低18位地址信号A 19 ~A 2 ;而在保护模式下,则输出30位地址信号A 31 ~A 2 。其实,实模式的地址长度为20位,保护模式的地址长度是32位。其余的两位地址码A 1 和A 0 被80386 DX内部译码,产生字节允许信号 ,以控制在总线上进行字节、字或双字数据传送。

由图3.15及表3.3可以看到,地址总线是输出信号线。它们用于传送从CPU到存储器或I/O接口的地址信息。在实模式下,20位地址给出了80386 DX寻址1M(2 20 )字节物理地址空间的能力;而在保护模式下,32位地址可以寻址4G(2 32 )字节的物理地址空间。

无论是在实模式下还是保护模式下,80386 DX微型计算机均具有独立的I/O地址空间。该I/O地址空间的大小为64K字节单元。所以,在寻址I/O设备时,仅需使用地址线A 15 ~A 2 及相应的字节允许信号

数据总线由32条数据线D 31 ~D 0 构成。由图3.15及表3.3可以看到,数据总线是双向的,即数据既可以由存储器或I/O接口输入给CPU,也可以由CPU输出给存储器或I/O接口。在数据总线上传送数据的类型是对存储器读/写的数据或指令代码、对外部设备输入/输出的数据以及来自中断控制器的中断类型码等。

如前所述,在一个总线周期内,80386 DX在数据总线上可以传送字节、字或双字。所以,它必须通知外部电路发生何种形式的数据传送以及数据将通过数据总线的哪一部分进行传送。80386 DX是通过激活相应的字节允许信号( )来做到这一点的。表3.4列出了每个字节允许信号及对应被允许的数据总线部分。

表3.4 字节允许及数据总线信号

例3.5 】 当字节允许信号 时,将产生哪种类型的数据传送(字节、字、双字)?数据传送经过哪些数据线?

由表3.4容易发现,此时将在数据线D 15 ~D 0 上进行一个数据字的传送。

2)控制信号

微处理器的控制信号用来支持和控制在地址和数据总线上进行的信息传输。通过这些控制信号表明,何时有效地址出现在地址总线上,数据以什么样的方向在数据总线上传送,写入到存储器或I/O接口的数据何时在数据总线上有效,以及从存储器或I/O接口读出的数据何时能够在数据总线上放好,等等。

80386 DX并不直接产生上述功能的控制信号,而是在每个总线周期的开始时刻输出总线周期定义的指示信号。这些总线周期指示信号需在外部电路中进行译码,从而产生对存储器和I/O接口的控制信号。

3个信号用来标识80386 DX的总线周期类型,即在图3.15及表3.3中所列出的“写/读指示”( )、“数据/控制指示”( )及“存储器/IO指示”( )信号。表3.5列出了这些总线周期指示信号的全部状态组合及对应的总线周期类型。

表3.5 总线周期指示信号及总线周期类型

由表3.5可见, 的逻辑电平标识是产生存储器还是I/O总线周期,逻辑1表明是存储器操作,而逻辑0则是I/O操作; 标识当前的总线周期是数据还是控制总线周期。从表中可见,该信号的逻辑0电平表明是中断响应、读存储器代码以及暂停/关机操作的控制总线周期,而逻辑1电平表明是对存储器及I/O端口进行读/写操作的数据总线周期。仔细观察表3.5可以发现,若 的编码是00,则一个中断请求被响应;如果是01,则进行I/O操作;如果是10,则读出指令代码;如果是11,则读/写存储器数据。

表3.5中的 信号用来标识总线周期的操作类型。若在一个总线周期中 为逻辑0,则数据从存储器或I/O接口读出;相反,若 为逻辑1,则数据被写入存储器或I/O接口。

在表3.5中,总线周期指示码 的总线周期类型为空闲(idle),这是一种不形成任何总线操作的总线周期,也称空闲周期。

例3.6 】 若总线周期指示码 ,则将产生什么类型的总线周期?

从表3.5不难发现,总线周期指示码010标识着一个“读I/O数据”的总线周期。

在图3.15的“存储器/IO接口”中,还可以看到另外3个控制信号,即地址状态 、就绪( )及下一地址 信号。 为逻辑0表示总线周期指示码(M/ 、字节允许信号 及地址信号(A 31 ~A 2 )全为有效状态。

信号用于插入等待状态(T w )到当前总线周期中,以便通过增加时钟周期数使总线周期得到扩展。在图3.15中可以看到,这个信号是输入给80386 DX的。通常它是由存储器或I/O子系统产生并经外部总线控制逻辑电路提供给80386 DX。通过将 信号变为逻辑0,存储器或I/O接口可以告诉80386 DX它们已经准备好,处理器可以完成数据传送操作。关于这方面的操作特性,在下面介绍微处理器的操作时序时还会具体讨论。

还需指出,80386 DX支持在其总线接口上的地址流水线方式。所谓地址流水线,是指对下一个总线周期的地址、总线周期指示码及有关的控制信号可以在本总线周期结束之前发出,从而使对下一个总线周期的寻址与本总线周期的数据传送相重叠。采用这种方式,可以用较低速的存储器电路获得与较高速存储器相同的性能。外部总线控制逻辑电路是通过将 输入信号有效(变为逻辑0)来激活这种流水线方式的。

由80386 DX输出的另一个控制信号是总线封锁 信号。这个信号用以支持多处理器结构。在使用共享资源(如全局存储器)的多处理器系统中,该信号能够用来确保系统总线和共享资源的占用不被间断。当微处理器执行带有LOCK前缀的指令时,则 输出引脚变为逻辑0,从而可以封锁共享资源以独占使用。

最后一个控制信号是“16位总线宽”( )输入信号。该信号用来选择32位( =1)或16位( )数据总线。在实际应用中,如果80386 DX大多数情况下工作在16位数据总线方式,则可索性选用微处理器80386 SX,它的数据总线宽度为16位。

3.中断接口信号

由图3.15可见,80386 DX的中断接口信号有“中断请求”(INTR)、“非屏蔽中断请求”(NMI)及“系统复位”(RESET)。INTR是一个对80386 DX的输入信号,用来表明外部设备需要得到服务。80386 DX在每条指令的开始时刻采样这个输入信号。INTR引脚上的逻辑1电平表示出现了中断请求。

当80386 DX检测到有效的中断请求信号后,它便把这一事实通知给外部电路并启动一个中断响应总线周期时序。在表3.5中可以看到,中断响应总线周期的出现是通过总线周期指示码 等于000来通知外部电路的。这个总线周期指示码将被外部总线控制逻辑电路译码从而产生一个中断响应信号。通过这个中断响应信号,80386 DX告诉发出中断请求的外部设备它的服务请求已得到同意。这样就完成了中断请求和中断响应的握手过程。从此时开始,程序控制转移到了中断服务程序。

INTR输入是可屏蔽的,即它的操作可以通过微处理器内部的标志寄存器中的“中断标志位”(IF)予以允许或禁止。而非屏蔽中断NMI输入,顾名思义,它是不可屏蔽的中断输入。只要在NMI引脚上出现0到1的跳变,不管中断标志IF的状态如何,一个中断服务请求总会被微处理器所接受。在执行完当前指令后,程序一定会转移到非屏蔽中断服务程序的入口处。

最后,RESET输入用来对80386 DX进行硬件复位。例如,利用这个输入可以使微型计算机在加电时被复位。RESET信号跳变到逻辑1,将初始化微处理器的内部寄存器。当它返回到逻辑0时,程序控制被转移到系统复位服务程序的入口处。该服务程序用来初始化其余的系统资源,如I/O端口、中断标志及数据存储器等。执行80386 DX的诊断程序也是复位过程的一部分。它可以确保微型计算机系统的有序启动。

4.DMA接口信号

由图3.15可见,80386 DX的直接存储器访问(Direct Memory Access,DMA)接口只通过两个信号实现:总线保持请求(HOLD)和总线保持响应(HLDA)。

当一个外部电路(如DMA控制器)希望掌握总线控制权时,它就通过将HOLD输入信号变为逻辑1来通知当前的总线主80386 DX。80386 DX如果同意放弃总线控制权(未在执行带LOCK前缀的指令),就在执行完当前总线周期后,使相关的总线输出信号全部变为高阻态(第三态),并通过将HLDA输出信号变到逻辑1电平来通知外部电路它已交出了总线控制权。这样就完成了“总线保持请求”和“总线保持响应”的握手过程。80386 DX维持这种状态直至“总线保持请求”信号撤销(变为逻辑0),随之80386 DX将“总线保持响应”信号也变为逻辑0,并重新收回总线控制权。

5.协处理器接口信号

在图3.15中可以看到,在80386 DX微处理器上提供了协处理器接口信号,以实现与数值协处理器80387 DX的接口。80387 DX不能独立地形成经数据总线的数据传送。每当80387 DX需要从存储器读或写操作数时,它必须通知80386 DX来启动这个数据传送过程。这是通过将80386 DX的“协处理器请求”(PEREQ)输入信号变为逻辑1来实现的。

另外两个协处理器接口信号是 。“协处理器忙”( )是80386 DX的一个输入信号。每当协处理器80387 DX正在执行一条数值运算指令时,它就通过将 输入信号变为逻辑0来通知80386 DX。另外,如果在协处理器运算过程中有一个错误产生,这将通过使“协处理器错”( )输入信号变为逻辑0来通知80386 DX。

3.5.2 微处理器的总线时序

为了实现微处理器与存储器或I/O接口的连接与通信,必须了解总线上有关信号的时间关系。这就是本节所要讨论的微处理器的总线时序问题。总线时序是微处理器功能特性的一个重要方面。

1.总线时序基本概念

1)指令周期、总线周期及时钟周期

如前所述,指令的执行通常由取指令、译码和执行等操作步骤组成,执行一条指令所需要的时间称为指令周期。不同指令的指令周期是不相同的。

CPU与存储器或I/O接口交换信息是通过总线进行的。CPU通过总线完成一次访问存储器或I/O接口操作所需要的时间,称为总线周期。一个指令周期由一个或几个总线周期构成。

指令的执行是在时钟脉冲(CLK)的统一控制下一步一步地完成的,时钟脉冲的重复周期称为时钟周期(clock cycle)。时钟周期是CPU执行指令的基本时间计量单位,它由计算机的主频决定。例如,8086的主频为5MHz,则一个时钟周期为200ns;PentiumⅢ的主频为500MHz,则其时钟周期仅为2ns。时钟周期也称T状态(T-State)。

对于不同型号的微处理器,一个总线周期所包含的时钟周期数并不相同。例如,8086的一个总线周期通常由4个时钟周期组成,分别标以T 1 、T 2 、T 3 和T 4 ;而从80286开始,CPU的一个总线周期一般由两个时钟周期构成,分别标以T 1 和T 2

2)等待状态和空闲状态

通过一个总线周期完成一次数据传送,一般要有输出地址和传送数据两个基本过程。例如,对于由4个时钟周期构成一个总线周期的8086来说,在第一个时钟周期(T 1 )期间由CPU输出地址,在随后的3个时钟周期(T 2 、T 3 和T 4 )用来传送数据。也就是说,数据传送必须在T 2 ~T 4 这3个时钟周期内完成。否则,由于在T 4 周期之后将开始下一个总线周期而会造成总线操作的错误。

在实际应用中,当一些慢速设备在T 2 、T 3 、T 4 三个时钟周期内不能完成数据读写时,那么总线就不能被系统正确使用。为此,允许在总线周期中插入用以延长总线周期的T状态,称为插入“等待状态”(T w )。这样,当被访问的存储器或I/O接口无法在3个时钟周期内完成数据读写时,就由其发出请求延长总线周期的信号到CPU的 引脚,8086 CPU收到该请求信号后就在T 3 和T 4 之间插入一个等待状态T w ,插入T w 的个数与发来请求信号的持续时间长短有关。T w 的周期与普遍T状态的时间相同。

另外,如果在一个总线周期后不立即执行下一个总线周期,即总线上无数据传输操作,此时总线则处于所谓“空闲状态”,在这期间,CPU执行空闲周期T i ,T i 也以时钟周期T为单位。两个总线周期之间出现的T i 的个数随CPU执行指令的不同而有所不同。

图3.16表示了8086 CPU的总线周期及其“等待状态”和“空闲状态”的情况。

图3.16 总线时序中的等待状态及空闲状态

3)非流水线和流水线总线周期

有两种不同类型的总线周期:“非流水线总线周期”和“流水线总线周期”。下面讨论这两种总线周期的特点和不同。

采用“非流水线总线周期”,不存在前一个总线周期的操作尚未完成即预先启动后一个总线周期操作的现象,即不会产生前后两个总线周期的操作重叠(并行)运行的情况。图3.17表示了一个典型的“非流水线总线周期”时序,注意图中的一个总线周期是由两个时钟周期构成的。

图3.17 典型的“非流水线总线周期”时序

由图3.17可见,在总线周期的T 1 期间,CPU在地址总线上输出被访问的存储单元(或I/O端口)的地址、总线周期指示码及有关的控制信号(图中仅画出了地址信号,其他信号省略未画),在写周期的情况下,被写数据也在T 1 期间输出在数据总线上;在总线周期的T 2 期间,数据被写入所选中的存储单元或I/O端口(写总线周期),或把从存储单元或I/O端口读出的数据稳定地放置在数据总线上(读总线周期)。

在图3.17中可以看到,整个事件序列起始于T 1 状态的开始时刻,此时第 n 个总线周期的地址码输出在地址总线上。在该总线周期的后继时间,地址总线上的地址仍然有效,而读/写的数据则传送在数据总线上。注意,图中对第 n 个总线周期的数据传送是在该总线周期的T 2 状态完成的。此时,并未开始输出下一个总线周期的地址信息。另外,图中标出的“访问时间”是反映总线操作速度的一个重要参数,它是指从地址信号稳定地出现在地址总线上到实际发生数据读/写的总的时间。

下面看一下“流水线”式的微处理器总线周期的情形。前面介绍微处理器引脚NA时已经提及,所谓“流水线总线周期”,是指对后一个总线周期的寻址与前一个总线周期的数据传送相重叠。也就是说,对后一个总线周期的地址、总线周期指示码及有关的控制信号输出于前一个总线周期的数据传送期间。图3.18给出了一个流水线总线周期的典型时序。

图3.18 流水线总线周期时序

由图3.18可见,第 n 个总线周期的地址在该总线周期的T 1 开始时刻变为有效,然而该总线周期的数据却出现于第 n +1个总线周期的T 1 状态;而在第 n 个总线周期的数据传送的同时,第 n +1个总线周期的地址便输出到地址总线上了。由此可以看到,在流水线总线周期中,当微处理器进行前一个已寻址存储单元的数据读/写的同时,即已开始了对后一个被访问存储单元的寻址。或者说,当第 n 个总线周期正在进行之时,第 n +1总线周期就被启动了。从而使前后两个总线周期的操作在一定程度上得以并行进行,这样可以在总体上改善总线的性能。

前面已经介绍,可通过插入等待状态来扩展总线周期的持续时间。这实际上是通过检测 输入信号的逻辑电平来实现的。 输入信号也正是为此目的而提供的。该输入信号在每个总线周期的结尾时刻被采样,以确定当前的总线周期是否可以结束。如图3.19所示,在 输入端上的逻辑1电平表示当前的总线周期不能结束。只要该输入端保持在逻辑1电平,说明存储器或I/O设备的读/写操作还未完成,此时应将当前的T 2 状态变成等待状态T w 以扩展总线周期。直到外部硬件电路使 回到逻辑0电平,这个总线周期才能结束。具体地说,在每个总线周期的结尾时刻(T 2 结束时)对 信号进行采样,以确定当前的“时钟周期”是T 2 还是T w 。如果这时 =0,表明当前总线周期可以结束,即当前时钟周期为T 2 ;如果 =1,则当前时钟周期为T w ,并且微处理器将继续检测 直到其为0,总线周期才能结束。这种扩展总线周期的能力允许在较高速的微型计算机系统中可以使用较低速的存储器或I/O设备。

图3.19 带等待状态的流水线总线周期时序

2.基本的总线时序

为了对总线操作过程有一个基本的了解,先让我们看一下经适当简化的8086写、读总线周期时序。在此基础上,可进一步了解较为复杂的总线操作时序。

我们已经知道,微处理器通过3种总线(地址总线、数据总线和控制总线)与存储器或I/O接口进行连接与通信。为了把数据写入存储器(或I/O接口),微处理器首先要把欲写入数据的存储单元的地址输出到地址总线上,然后把要写入存储器的数据放在数据总线上,同时发出一个写命令信号 )给存储器。

一个简化的8086写总线周期时序如图3.20所示。其中,请注意两点:第一,8086的一个总线周期包含4个时钟周期(即T 1 、T 2 、T 3 和T 4 );第二,8086采用地址和数据总线复用技术,即在一组复用的“地址/数据”总线上,先传送地址信息(T 1 期间),然后传送数据信息(T 2 、T 3 、T 4 期间),从而可以节省微处理器引脚。图中的 是8086的输出信号,用以表明本总线周期是访问存储器还是访问I/O接口。具体而言 ,是访问存储器; ,则为访问I/O接口。

图3.20 简化的8086写总线周期时序

若要从存储器读出数据,则微处理器首先在地址总线上输出所读存储单元的地址,接着发出一个读命令信号( )给存储器,经过一定时间(时间的长短决定于存储器的工作速度),数据被读出到数据总线上,然后微处理器通过数据总线将数据接收到它的内部寄存器中。一个简化的8086读总线周期时序如图3.21所示。

图3.21 简化的8086读总线周期时序

另外,正如前面在介绍“等待状态”的概念时所提到的,若被访问的存储器或I/O接口的工作速度较慢,不能在预定的时间完成数据读/写操作,则可通过在总线时序中插入等待状态(T w )来扩展总线周期;而是否插入T w ,可通过检测8086的 输入引脚的逻辑电平来决定。关于这方面的情况,在简化的读/写总线周期时序图中省略未画。 gnVhKTpRjV/74vM9HgWh/QHFEgtiNRal7LEqh2SBdj7VpF6um0Ga81TDBR4LjUPG

点击中间区域
呼出菜单
上一章
目录
下一章
×