随着计算机的发展和应用领域的不断扩大,I/O 设备的种类和数量也越来越多。为了更好地解决 I/O 设备和主机之间连接的灵活性问题,计算机的结构从分散连接发展为总线连接。
总线是连接多个部件的信息传输线或通路,是负责各部件之间通信的传输介质。同一时刻只允许有一个部件向总线发送消息,但多个部件可以同时从总线上接收相同的消息。
总线上所连接的各类设备,按其对总线有无控制功能可分为主设备和从设备两种。
主设备。指获得总线控制权的设备,也称主模块。 从设备:指被主设备访问的设备,只能响应主设备发来的各种总线命令,也称从模块。
总线特性包括以下几项。
机械特性。指总线在机械连接方式上的一些性能,如尺寸、形状与标准等。 电气特性。指总线的每一根传输线上信号的传输方向和有效的电平范围。 功能特性。指总线中每根传输线的功能。 时间特性。指总线中的任一根线在什么时间内有效。每条总线上的各种信号互相存在一种有效时序的关系。
总线的分类
计算机系统中的总线,按连接部件划分为片内总线、系统总线和通信总线三类。
片内总线
片内总线是指芯片内部的总线,它是 CPU
芯片内部,寄存器与寄存器之间、寄存器与算术逻辑单元 ALU
之间的公共连接线。
系统总线
系统总线是指 CPU
、主存
、I/O 接口
各功能部件之间相互连接的信息传输线。按系统总线传输信息的不同,又可分为数据总线、地址总线和控制总线三类。
数据总线用来传输各功能部件之间的数据信息,它是双向传输总线,其位数与机器字长、存储字长有关。 地址总线用来指出数据总线上的源数据或目的数据在主存单元的地址或 I/O 端口的地址,它是单向传输总线,地址线的位数与存储单元的个数有关。 控制总线传输的是各种控制信息,包括 CPU
送出的控制命令、主存或外设返回CPU
的反馈信号。
各个功能部件通过
数据总线
连接形成的数据传输路径称为数据通路
。数据通路
表示的是数据流经的路径,而数据总线
是承载的媒介。
通信总线
通信总线是在计算机系统之间或计算机系统与其他系统之间传送信息的总线,通信总线也称外部总线。按数据传输方式可分为串行通信和并行通信两种。
串行通信是指数据在单条 1 位宽的传输线上,一位一位地按顺序分时传送。如在串行传送中,1 字节的数据要通过一条传输线分 8 次由低位到高位按顺序逐位传送。 并行通信是指数据在多条并行 1 位宽的传输线上,同时由源传送到目的地。如在并行传送中,1 字节的数据要通过 8 条并行传输线同时由源传送到目的地。
总线结构
引入总线结构主要是为了
简化系统结构,便于系统设计制造。 减少连接数目,便于布线,减小体积,提高系统可靠性。 便于接口设计,所有与总线连接的设备均采用类似的接口。 便于系统扩充、更新与灵活配置,易于实现系统模块化。 便于设备的软件设计,所有接口的软件就是对不同的口地址进行操作。 便于故障诊断和维修,同时也降低了成本。
总线结构通常分为单总线结构和多总线结构两种。多总线结构分为双总线、三总线和四总线等等。
单总线结构
单总线结构将 CPU
、主存、通过 I/O 接口的设备都挂在一组总线上,允许 I/O 设备之间、I/O 设备与 CPU
之间或 I/O 设备与主存之间直接交换信息,如下图所示。

优点是结构简单,成本低,易于接入新设备;缺点是带宽低、负载重,多个部件争用唯一总线,且不支持并发传送操作。
单总线并不是指只有一根信号线,系统总线按传递信息的不同可细分为地址总线、数据总线和控制总线。
双总线结构
双总线结构有两条总线,一条是主存总线,用于在 CPU
、主存和通道之间传送数据;另一条是 I/O 总线,用于在多个外部设备与通道之间传送数据,如下图所示。

优点是将低速的 I/O 设备从单总线上分离出来,实现了主存总线与 I/O 总线分离;缺点是需要增加通道等硬件设备。
通道是一个具有特殊功能的处理器,
CPU
将一部分功能下放给通道,使其对 I/O 设备具有统一管理的功能,以完成外部设备与主存储器之间的数据传送。
三总线结构
三总线结构是在计算机系统各部件之间采用三条各自独立的总线来构成信息通路,这三条总线分别为主存总线、I/O 总线和DMA总线,如下图所示。

主存总线。用于 CPU
和主存之间传送地址、数据和控制信息。I/O 总线。用于在 CPU
和各类 I/O 设备之间通信。DMA 总线。用于在主存和高速 I/O 设备之间直接传送数据。
优点是提高了 I/O 设备的性能,使其更快地响应命令,提高了系统吞吐量;缺点是系统工作效率更低。
三总线结构中,任一时刻只能使用一种总线。主存总线与 DMA 总线不能同时对主存进行存取,I/O 总线只有在 CPU
执行 I/O 指令时才能用到。
另一种三总线结构采用的是局部总线、系统总线和扩展总线,如下图所示。

局部总线。用于在 CPU
与Cache
之间直接通信,并将CPU
与Cache
或与更多的局部设备相连。系统总线。用于在主存与 Cache
之间传输信息,I/O 设备与主存之间的传输不必通过CPU
。扩展总线。将局域网、小型计算机接口 SCSI
、调制解调器Modem
以及串行接口等都连接起来,并通过这些接口又可与各类 I/O 设备相连,可支持相当多的 I/O 设备。扩展总线通过扩展总线接口可与系统总线相连,实现这两种总线之间的信息传递,提高工作效率。
四总线结构
四总线结构通过局部总线、系统总线、高速总线和扩展总线四种总线连接计算机系统各部件,如下图所示。

四总线结构是在三总线结构之上增加了一条高速总线,在高速总线上挂接一些高速 I/O 设备,如高速局域网、图形工作站等。通过 Cache
控制机构中的高速总线桥或高速缓冲器与系统总线和局部总线相连,使得这些高速设备与 CPU
更密切。而一些较低速的设备如图文传真 FAX
、调制解调器及串行接口仍然挂在扩展总线上,并由扩展总线接口与高速总线相连。
四总线结构对高速设备而言,其自身的工作可以很少依赖 CPU
,同时它们又比扩展总线上的设备更贴近 CPU
,可见对于高性能设备与 CPU
来说,各自的效率将获得更大的提高。在这种结构中,CPU
、高速总线的速度以及各自信号线的定义完全可以不同,以至各自改变其结构也不会影响高速总线的正常工作,反之亦然。
总线性能指标
总线的传输周期。指一次总线操作所需的时间(包括申请阶段、寻址阶段、传输阶段和结束阶段),简称总线周期。总线传输周期通常由若干总线时钟周期构成。 总线时钟周期。即机器的时钟周期。计算机有一个统一的时钟,以控制整个计算机的各个部件,总线也要受此时钟的控制。 总线的工作效率。总线上各种操作的频率,为总线周期的倒数。实际上指 1 秒内传送几次数据。若总线周期 = N 个时钟周期,则总线的工作频率 = 时钟频率/N。 总线的时钟频率。即机器的时钟频率,它为时钟周期的倒数。 总线宽度。又称总线位宽,它是总线上同时能够传输的数据位数,通常指数据总线的根数,如 32 根称为 32 位总线。 总线带宽。可理解为总线的数据传输率,即单位时间内总线上可传输数据的位数,通常用每秒传送信息的字节数来衡量,单位可用字节/秒(B/s)表示。总线带宽 = 总线工作频率×(总线宽度/8)。 总线复用。总线复用是指一种信号线在不同的时间传输不同的信息,因此可以使用较少的线传输更多的信息,从而节省空间和成本。 信号线数。地址总线、数据总线和控制总线 3 种总线数的总和称为信号线数。其中,总线的最主要性能指标为总线宽度、总线(工作)频率、总线带宽,总线带宽是指总线本身所能达到的最高传输速率,它是衡量总线性能的重要指标。
三者关系:总线带宽 = 总线宽度×总线频率。
例如,总线工作频率为 22MHz,总线宽度为 16 位,则总线带宽 = 22×(16/8)=44。
总线仲裁
为解决多个主设备同时竞争总线控制权的问题,应当采用总线仲裁逻辑,按某种方式选择一个主设备优先获得总线控制权。只有获得了总线控制权的设备,才能开始传送数据。仲裁逻辑又称判优控制。
总线仲裁逻辑可分为集中式和分布式两种,前者将控制逻辑集中在一处,或者将控制逻辑分散在与总线连接的各个部件或设备上。
集中仲裁方式
总线控制逻辑基本上集中于一个设备中,如 CPU
。将所有的总线请求集中起来,利用一个特定的裁决算法进行裁决,称为集中仲裁方式。集中仲裁方式有链式查询方式、计数器定时查询方式和独立请求方式三种。
链式查询方式
链式查询方式如下图所示。总线上所有的部件共用一根总线请求线,当有部件请求使用总线时,需经此线发总线请求信号到总线控制器。由总线控制器检查总线是否忙,若总线不忙,则立即发总线响应信号,经总线响应线 BG 串行地从一个部件传送到下一个部件,依次查询。若响应信号到达的部件无总线请求,则该信号立即传送到下一个部件;若响应信号到达的部件有总线请求,则信号被截住,不再传下去。

在链式查询中,部件离总线控制器越近,其优先级越高;部件离总线控制器越远,其优先级越低。
链式查询方式的优点是优先级固定,只需很少几根就能按一定优先次序实现总线控制,结构简单,扩充容易;缺点是其对硬件电路的故障敏感,且优先级不能改变,当优先级高的部件频繁请求总线时,会使优先级较低的部件长期不能使用总线。
计数器定时查询方式
计数器定时查询方式如下图所示。采用一个计数器控制总线使用权,相对链式查询方式多了一组设备地址线,少了一根总线响应线 BG。它仍共用一根总线请求线,当总线控制器收到总线请求信号并判断总线空闲时,计数器开始计数,计数值通过设备地址线发向各个部件。当地址线上的计数值与请求使用总线设备的地址一致时,该设备获得总线控制权,同时中止计数器的计数及查询。

该方式的优点是计数可从 0
开始,此时一旦设备的优先次序被固定,设备的优先级就按 0
, 1
,···, n
的顺序降序排列,而且固定不变,计数也可从上一次的终点开始,即采用一种循环方法,此时设备使用总线的优先级相等;计数器的初值还可由程序设置,故优先次序可以改变,且这种方式对电路的故障没有链式查询方式敏感;但缺点是增加了控制线数(若设备有 n 个,则大致需要 条控制线),控制也比相对链式查询要复杂。
独立请求方式
独立请求方式如下图所示。每个设备均有一对总线请求线 和总线允许线 。当总线上的部件需要使用总线时,经各自的总线请求线发送总线请求信号,在总线控制器中排队,当总线控制器按一定的优先次序决定批准某个部件的请求时,给该部件发送总线响应信号,该部件接到此信号后就获得了总线使用权,开始传送数据。

该方式的优点是响应速度快,总线允许信号 BG 直接从控制器发送到有关设备,而不必在设备间传递或查询,而且对优先次序的控制相当灵活;但缺点是控制线数量多(设备有 n 个,需要 2n+1
条控制线,其中 +1
为 BS 线,其作用是让设备向总线控制部件反馈已使用完总线),总线控制逻辑更复杂。
分布仲裁方式
分布仲裁方式不需要中央仲裁器,每个潜在的主模块都有自己的仲裁号和仲裁器。当它们有总线请求时,就会把它们各自唯一的仲裁号发送到共享的仲裁线上,每个仲裁器将从仲裁总线上得到仲裁号与自己的仲裁号进行比较。若仲裁总线上的仲裁号优先级高,则它的总线请求不予响应,并撤销它的仲裁号。最后,获胜者的仲裁号保留在仲裁总线上。
总线通信控制
总线通信控制主要解决通信双方如何获知传输开始和传输结束,以及通信双方如何协调配合。因为众多部件共享总线时,争夺总线控制权按各部件优先等级来解决;通信时间上,按分时方式处理,即以获得总线使用权先后顺序分时占用总线。
通常将完成一次总线操作的时间称为总线周期,可分为以下 4 个阶段。
申请分配阶段。由需要使用总线的主模块提出申请,经总线仲裁机构决定下一传输周期的总线使用权授于某一申请者。也可将此阶段细分为传输请求和总线仲裁两个阶段。 寻址阶段。取得使用权的主模块通过总线发出本次要访问的从模块的地址及有关命令,启动参与本次传输的从模块。 传输阶段。主模块和从模块进行数据交换,数据由源模块发出,经数据总线流入目的模块。 结束阶段。主模块的有关信息均从系统总线上撤除,让出总线使用权。
总线通信控制通常用四种方式:同步通信、异步通信、半同步通信和分离式通信。
同步通信
通信双方由统一时标控制数据传送称为同步通信。时标通常由 CPU
的总线控制部件发出,送到总线上的所有部件;也可以由每个部件各自的时序发生器发出,但必须由总线控制部件发出的时钟信号对它们进行同步。
在一个总线周期中,发送方和接收方可以进行一次数据传送。采用统一的时钟,每个部件或设备发送或接收信息都在固定的总线传送周期中,一个总线的传送周期结束,下一个总线的传送周期开始。
下图表示某个输入设备向 CPU
传输数据的同步通信过程。

图中总线传输周期是连接在总线上的两个部件完成一次完整且可靠的信息传输时间,它包含四个时钟周期 、、、。
主模块发地址。 主模块发出读命令。 从模块提供数据。 主模块撤销读命令,从模块撤销数据。
下图为同步式数据输出传输过程。

主模块发地址。 主模块提供数据。 主模块发出写命令,从模块接收到命令后,必须在规定时间内将数据总线上的数据写到地址总线所指明的单元中。 主模块撤销写命令和数据等信号。
这种通信的优点是规定明确、统一,模块间的配合简单一致。其缺点是主从模块属于强制性同步
,必须在限定时间内完成规定的要求。并且对所有从模块都用同一限时,这就势必造成,对各不相同速度的部件而言,必须按最慢速度的部件来设计公共时钟,严重影响总线的工作效率,也给设计带来了局限性,缺乏灵活性。
同步通信适用于总线长度较短、各部件存取时间比较一致的场合。
在同步通信的总线系统中,总线传输周期越短,数据线的位数越多,直接影响总线的数据传输率。
异步通信
异步通信没有公共的时钟标准,不要求所有部件严格的统一操作时间,而是采用应答方式,又称握手方式,即当主模块发出请求信号时,一直等待从模块反馈回来响应信号后,才开始通信。当然,这就要求主、从模块之间增加两条应答线。
异步通信的应答方式又可分为不互锁、半互锁和全互锁三种类型。如下图所示。

不互锁方式。主模块发出请求信号后,不必等待接到从模块的回答信号,而是经过一段时间,确认从模块已收到请求信号后,便撤销其请求信号;从模块接到请求信号后,在条件允许时发出回答信号,并且经过一段时间确认主模块已收到回答信号后,自动撤销回答信号。可见通信双方并无互锁关系。 半互锁方式。主模块发出请求信号,必须待接到从模块的回答信号后再撤销其请求信号,有互锁关系;而从模块在接到请求信号后发出回答信号,但不必等待获知主模块的请求信号已经撤销,而是隔一段时间后自动撤销其回答信号,无互锁关系。由于一方存在互锁关系,一方不存在互锁关系,故称半互锁方式。 全互锁方式。主模块发出请求信号,必须待从模块回答后再撤销其请求信号;从模块发出回答信号,必须待获知主模块请求信号已撤销后,再撤销其回答信号。双方存在互锁关系,故称为全互锁方式。
这种通信的优点是总线周期长度可变,能保证两个工作速度相差很大的部件或设备之间可靠地进行信息交换,自动适应时间的配合。其缺点为比同步控制方式稍复杂一些,速度比同步通信方式慢。
半同步通信
半同步通信既保留了通信特点如信号发出时间严格参照系统时钟某个前沿开始,接收方采用系统时钟后沿时刻判断识别;又想异步通信允许不同速度的模块和谐工作。为此增设一条等待() 响应信号线,采用插入时钟周期的措施来协调通信双方的配合问题。
半同步通信数据输入过程如下图所示。

主模块发出地址信息。 主模块发出命令。 当 为低电平时,进入等待, 的宽度与 T 的宽度一致。··· 从模块提供数据。 主模块撤销读命令,从模块撤销数据。
如上所示,
···
为进入时钟周期循环等待,直到主模块测得为高电平时,把此刻的下一个时钟周期当作增长周期 。
半同步通信的优点是比异步通信简单,在全系统内各模块又在统一的系统时钟控制下同步工作,可靠性较高,同步结构较方便。其缺点是对系统时钟频率不能要求太高,故从整体上来看,系统工作的速度还不是很高。
半同步通信适用于系统工作速度不高但又包含了由许多工作速度差异较大的各类设备组成的简单系统。
分离式通信
分离式通信是为充分挖掘系统总线每瞬间的潜力,提高系统性能而提出的。分离式通信是将一个传输周期或叫总线周期分解为两个子周期。
第一个周期中,主模块获得总线使用权后发送数据给从模块,总线传输完后立即放弃总线使用权,以便其他模块使用。 第二个周期中,从模块接收完数据后,申请总线使用权,申请下来后将所需数据送到总线上,供主模块接收。
分离式通信的特点如下:
各模块要有权申请占用总线。 限定实现内采用同步方式通信,不再等待对方回答。 各模块准备数据过程中不占用总线,使总线可接收其他模块请求。 总线被占用时不存在空闲等待时间,充分利用总线有效占用,实现总线在多个主从模块间进行信息交叉重叠并行式传送。
I/O 接口
I/O 接口,又称 I/O 控制器,是主机和外设之间的交接界面,通过接口可以实现主机和外设之间的信息交换。主机和外设具有各自的工作特点,它们在信息形式和工作速度上具有很大的差异,接口正是为了解决这些差异而设置的。
I/O 接口功能
I/O 接口的主要功能如下:
实现主机和外设的通信联络控制。解决主机与外设时序配合问题,协调不同工作速度的外设和主机之间交换信息,以保证整个计算机系统能统一、协调地工作。 进行地址译码和设备选择。 CPU
送来选择外设的地址码后,接口必须对地址进行译码以产生设备选择信息,使主机能和指定外设交换信息。实现数据缓冲。 CPU
与外设之间的速度往往不匹配,为消除速度差异,接口必须设置数据缓冲寄存器,用于数据的暂存,以避免因速度不一致而丢失数据。信号格式的转换。外设与主机两者的电平、数据格式都可能存在差异,接口应提供计算机与外设的信号格式的转换功能,如电平转换、 并/串
或串/并
转换、模/数
或数/模
转换等。传送控制命令和状态信息。 CPU
要启动某一外设时,通过接口中的命令寄存器向外设发出启动命令;外设准备就绪时,则将准备好
状态信息送回接口中的状态寄存器,并反馈给 CPU。外设向CPU
提出中断请求和DMA
请求时,CPU
也应有相应的响应信号反馈给外设。
I/O 接口结构
为使 I/O 接口实现基本功能,需要具有相应的逻辑电路,基本结构如下图所示。

CPU
与外设之间的信息传送,实质上是对接口中的某些寄存器(即端口)进行读或写,如传送数据是对数据端口 DBR
进行读写操作。
内部接口:内部接口与系统总线相连,实质上是与内存、 CPU
相连。数据的传输方式只能是并行传输。外部接口:外部接口通过接口电缆与外设相连,外部接口的数据传输可能是串行方式,因此 I/O 接口需具有 串/并
转换功能。
接口和端口不相同,端口是指接口电路中可以进行读/写的寄存器,若干端口加上相应的控制逻辑才可以组成接口。
I/O 接口类型
从不同的角度看,I/O 接口可以分为不同的类型。
按数据传送方式可分为并行接口和串行接口,接口要完成数据格式的转换。并行接口是将一个字节或一个字的所有位同时传送;串行接口是在设备与接口间一位一位传送。 按主机访问 I/O 设备的控制方式可分为程序查询接口、中断接口和 DMA 接口等。 按功能选择的灵活性可分为可编程接口和不可编程接口。
数据传送方式指的是外设和接口一侧的传送方式,而在主机和接口一侧,数据总是并行传送的。
I/O 端口
I/O 端口是指接口电路中可被 CPU
直接访问的寄存器,主要有数据端口、状态端口和控制端口,若干端口加上相应的控制逻辑电路组成接口。通常,CPU
能对数据端口执行读写操作,但对状态端口只能执行读操作,对控制端口只能执行写操作。
I/O 端口要想能够被 CPU
访问,必须要有端口地址,每个端口对应一个端口地址。而对 I/O 端口的编址方式有与存储器统一编址和独立编址两种。
统一编址
统一编址,又称存储器映射方式,是指把 I/O 端口当作存储器的单元进行地址分配,这种方式 CPU
不需要设置专门的 I/O 指令,用统一的访存指令就可以访问 I/O 端口。
该编址方式的优点是不需要设置专门的输入/输出指令,可使 CPU
访问 I/O 的操作更灵活、更方便,还可使端口有较大的编址空间。而其缺点是端口占用存储器地址,使内存容量变小,而且利用存储器编址的 I/O 设备进行数据输入/输出操作,执行速度较慢。
独立编址
独立编址,又称 I/O 映射方式,是指 I/O 端口地址与存储器地址无关,独立编址 CPU
需要设置专门的输入/输出指令访问端口。
独立编址的优点是 I/O 指令与存储器指令有明显区别,程序编制清晰,便于理解。其缺点是 I/O 指令少,一般只能对端口进行传送操作,尤其需要 CPU
提供存储器读/写、I/O 设备读/写两组控制信号,增加了控制的复杂性。





