总线
1.1 总线的概念和结构形态
1.1.1总线的基本概念
数字计算机是由若干个系统功能部件构成的,这些系统功能部件在一起工作才能形成一个完整的计算机系统。一种连接方式是将需要通信的部件两两相连。但是现代计算机的CPU可能有很多,I/O设备也各种各样,如果采用两两相连的方式,线路将会非常复杂,这是不现实的,故推出的总线的概念。
1. 定义
总线定义: 连接各个部件的信息传输线,是各个部件共享的传输介质,英文名为BUS,十分形象。
总线是构成计算机系统的互联机构,是多个系统功能部件之间进行数据传送的公共通路。借助于总线连接,计算机在各系统功能部件之间实现地址、数据和控制信息的交换,并在争用资源的基础上进行工作。在总线上传输方式有串行和并行两种,由于线路之间会相互干扰,所以传输距离短。
2. 分类
总线可分为以下几类(根据所在位置):
- 内部总线:CPU内部连接各寄存器及运算器部件之间的总线,也叫片内总线。
- 系统总线:外部总线,CPU和计算机系统中其他高速功能部件如存储器、输入输出接口等相互连接的总线。又细分为:
- 数据总线:双向(读和写),总线条数与机器字长、存储字长有关,但不一定相等。
- 地址总线:单向(只读),条数与存储地址、I/O地址有关
- 控制总线:传输控制信号,单向,但是有输出信号也有输入信号。
- 通信总线:用于计算机系统之间或者计算机系统与其他系统之间的通信,按照传输方式分为:串行通信和并行通信总线。
3. 特性
总线的特性可分为:物理特性、功能特性、电气特性、时间特性。
- 物理特性:总线的物理连接方式(根数、插头、插座形状,引脚排列方式)
- 功能特性:每根线的功能(地址、数据、控制)
- 电气特性:每根线上信号的传递方向及有效电平范围。
- 时间特性:规定了每根总线在什么时间有效(时序关系)。
4. 总线的性能指标
- 总线宽度 :数据线的根数
- 标准传输率 :每秒传输的最大字节数(MBps)
- 时钟同步/异步 :同步、不同步
- 总线复用: 地址线与数据线复用
- 信号线数:地址线、数据线和控制线的总和
- 总线控制方式:突发、自动、仲裁、逻辑、计数
- 其他指标:负载能力
5. 标准总线
为了使不同厂家生产的相同功能部件可以互换使用,就需要进行系统总线的标准化工作。目前,已经出现了很多总线标准,如PCI、ISA等PC、STD、EISA。
采用标准总线的优点:
- 简化系统设计
- 简化系统结构,提高系统可靠性
- 便于系统的扩充和更新
6. 总线带宽
总线带宽:总线本身所能达到的最高传输速率。
一次操作可以传输的数据位数。如S100为8位,ISA为16位,EISA为32位,PCI-2可达64位。总线宽度不会超过微处理器外部数据总线的宽度。取决于一次操作所花费的时间,时间越短带宽越高。一次可传递的信息量越多,带宽越高。
例题:
(1)某总线在一个总线周期中并行传送4个字节的数据,假设一个总线周期等于一个总线时钟周期,总线时钟频率为33MHz,总线带宽是多少?
(2)如果一个总线周期中并行传送64位数据,总线时钟频率升为66MHz,总线带宽是多少?
解:
(1)设总线带宽用Dr表示,总线时钟周期用T=1/f表示,一个总线周期传送的数据量用D表示,根据定义可得
Dr=D/T=D∗(1/T)=D∗f=4B∗33∗106/s=132MB/s
(2)位64位=8B Dr=D∗f=8B∗66∗106/s=528MB/s
1.1.2总线的连接方式
适配器(接口):实现高速CPU与低速外设之间工作速度上的匹配和同步,并完成计算机和外设之间的所有数据传送和控制的电路。
1. 单总线:
使用一条单一的系统总线来连接CPU、内存和I/O设备。
单总线结构特点:
在单总线结构中,要求连接到总线上的逻辑部件必须高速运行,以便在某些设备需要使用总线时,能迅速获得总线控制权;而当不再使用总线时,能迅速放弃总线控制权。否则,由于一条总线由多种功能部件共用,可能导致很大的时间延迟。
2. 多总线
在CPU、主存、I/O之间互联采用多条总线。如图所示。
CPU总线:CPU和cache之间采用
系统总线:主存连在其上。
高速总线:通过桥,CPU总线、系统总线和高速总线彼此相连。桥实质上是一种具有缓冲、转换、控制功能的逻辑电路。高速总线通过扩充总线接口与扩充总线相连,扩充总线上可以连接串行方式工作的I/O设备。
多总线结构体现了高速、中速、低速设备连接到不同的总线上同时进行工作,以提高总线的效率和吞吐量,而且处理器结构的变化不影响高速总线。
1.1.3总线的内部结构
1. 早期总线的内部结构
如图所示,它实际上是处理器芯片引脚的延伸,是处理器与I/O设备适配器的通道。这种简单的总线一般由50~100条线组成,这些线按其功能可分为三类:地址线、数据线和控制线。
- 数据总线:双向(读和写),总线条数与机器字长、存储字长有关,但不一定相等。
- 地址总线:单向(只读),条数与存储地址、I/O地址有关
- 控制总线:传输控制信号,单向,但是有输出信号也有输入信号。
缺点:
- CPU是总线上惟一的主控者。即使后来增加了具有简单仲裁逻辑的DMA控制器以支持DMA传送,但仍不能满足多CPU环境的要求。
- 总线信号是CPU引脚信号的延伸,故总线结构紧密与CPU相关,通用性较差。
2. 当代总线的内部结构
- 数据传送总线:由地址线、数据线、控制线组成。其结构与简单总线相似,但一般是32条地址线,32或64条数据线。为了减少布线,64位数据的低32位数据线常常和地址线采用多路复用方式。
- 仲裁总线:包括总线请求线和总线授权线。
- 中断和同步总线:用于处理带优先级的中断操作,包括中断请求线和中断认可线。
- 公用线:包括时钟信号线、电源线、地线、系统复位线以及加电或断电的时序信号线等。
1.1.4总线结构实例
大多数计算机采用了分层次的多总线结构。下图它是一个三层次的多总线结构:CPU总线、PCI总线和ISA总线。
- CPU总线:也称CPU-存储器总线,包含64位数据线和32位地址线的同步总线。可以看成是CPU引脚信号的衍生。
- PCI总线:用于连接高速的I/O设备模块,如图形显示器适配器、网络接口控制器等,通过“桥”与上面更高速的CPU总线相连,与下面更低速的ISA总线相连。PCI总线是一个32(或64)位的同步总线,数据和地址是同一组线,分时复用,采用集中式仲裁方式,有专用的PCI总线仲裁器。
- ISA总线:与低速的I/O设备连接,支持7个DMA通道和15级可屏蔽硬件中断,并通过片级总线和ROM、键盘鼠标控制器等相连。
1.2 总线接口
1.2.1 信息的传送方式
计算机系统中,传输信息基本有三种方式:
串行传送:使用一条传输线,采用脉冲传送。
优点:只需要一条传输线,这一点对长距离传输显得特别重要,不管传送的数据量有多少,只需要一条传输线,成本比较低廉。
缺点:就是速度慢。
并行传送:每一数据位需要一条传输线,一般采用电位传送。
分时传送:总线复用或是共享总线的部件分时使用总线。
出于速度和效率上的考虑,系统总线上传送的信息必须采用并行传送方式。
1.2.2 总线接口的基本概念
I/O功能模块通常称为I/O接口,也叫适配器,是CPU、主存和外设之间通过系统总线进行连接的标准化逻辑部件。
接口的典型功能:控制、缓冲、状态、转换、整理、程序中断。
一个适配器的两个接口:一个同系统总线相连,采用并行方式,另外一个同设备控制器相连,可能采用并行方式也可以采用串行方式,设备控制器是外围设备自带的设备控制器,是控制外围设备进行操作的控制部件。
例题:
利用串行方式传送字符,每秒钟传送的比特(bit)位数常称为波特率。假设数据传送速率是120个字符/秒,每一个字符格式规定包含10个比特位(起始位、停止位、8个数据位),问传送的波特率是多少?每个比特位占用的时间是多少?
解:
波特率为:10位×120/秒=1200波特
每个比特位占用的时间Td是波特率的倒数:Td=1/1200=0.833×10-3s=0.833ms
1.3 总线的仲裁
1.3.0 基本概念
- 连接到总线上的功能模块有主动和被动两种形态,其中主方又称为主设备可以启动一个总线周期,而从方(从设备)只能响应主方请求。每次总线操作,只能有一个主方,但是可以有多个从方。
- 为了解决多个主动态的功能模块争用总线的问题,必须设置总线仲裁部件。
- 总线占用期:主方持续控制总线的时间。
- 按照总线仲裁电路的位置不同,仲裁方式分为集中式和分布式两种。
1.3.1 集中式仲裁
1. 链式查询方式
所有设备通过BR发出申请总线的信号,总线控制部件通过BG线授予某个设备总线控制权,该设备通过BS先发出总线被占用的信号。当有设备发出总线请求信号后,从仲裁器一端开始查询,从左向右的顺序依次查询每个I/O设备,遇到第一个设备请求总线则授予控制权。故离中央仲裁器最近的设备具有最高优先权,离总线控制器越远,优先权越低。
- 优点:只用很少几根线就能按照一定优先次序实现总线控制,并且这种链式结构很容易扩充设备。
- 缺点:对询问链的电路故障很敏感,某个接口电路出现故障,则后面的设备都无法获得总线控制权,优先级固定。
2. 计数器定时查询方式
总线上的任一设备要求使用总线时,通过BR线发出总线请求。中央仲裁器接到请求信号以后,在BS线为“0”的情况下让计数器开始计数,计数值通过一组地址线发向各设备。每个设备接口都有一个设备地址判别电路,当地址线上的计数值与请求总线的设备地址相一致时,该设备置“1”BS线,获得了总线使用权,此时中止计数查询。 每次计数可以从“0”开始,也可以从中止点开发始。
- 如果从“0”开始,各设备的优先次序与链式查询法相同,优先级的顺序是固定的。
- 如果从中止点开始,则每个设备使用总线的优先级相等。(如上次终止点在10,则下次从11开始查询,10的优先级从高变成最低)
计数器的初值也可用程序来设置,这可以方便地改变优先次序,但这种灵活性是以增加线数为代价的。
3. 独立请求方式
在独立请求方式中,每一个共享总线的主设备均有一对总线请求线BRi和总线授权线BGi。当设备要求使用总线时,便发出该设备的请求信号。总线仲裁器中有一个排队电路,它根据一定的优先次序决定首先响应哪个设备的请求,给设备以授权信号BGi。当代总线标准普遍采用独立请求方式。
优点:
- 响应时间快,即确定优先响应的设备所花费的时间少,用不着一个设备接一个设备地查询。
- 对优先次序的控制相当灵活。优先级可以预先固定,也可以通过程序来改变优先次序,还可以用屏蔽(禁止)某个请求的办法,不响应来自无效设备的请求。
1.3.2 分布式仲裁
不需要中央仲裁器,而是多个仲裁器竞争使用总线。当它们有总线请求时,把它们唯一的仲裁号发送到共享的仲裁总线上,每个仲裁器将仲裁总线上得到的号与自己的号进行比较。如果仲裁总线上的号大,则它的总线请求不予响应,并撤消它的仲裁号。最后,获胜者的仲裁号保留在仲裁总线上。显然,分布式仲裁是以优先级仲裁策略为基础的。
1.4 总线的定时和数据传送模式
1.4.1 总线定时
总线的信息传送过程:
- 申请分配阶段:主模块申请,总线仲裁决定。
- 寻址阶段:主模块向从模块给出地址和命令。
- 传数阶段:主模块和从模块交换数据。
- 结束阶段:主模块撤消有关信息。
定时:事件出现在总线上的时序关系。
1. 同步定时
2. 异步定时
【例3】某CPU采用集中式仲裁方式,使用独立请求与菊花链查询相结合的二维总线控制结构。每一对请求线BRi和授权线BGi组成一对菊花链查询电路。每一根请求线可以被若干个传输速率接近的设备共享。当这些设备要求传送时通过BRi线向仲裁器发出请求,对应的BGi线则串行查询每个设备,从而确定哪个设备享有总线控制权。请分析说明图6.14所示的总线仲裁时序图。
解:从时序图看出,该总线采用异步定时协议。
当某个设备请求使用总线时,在该设备所属的请求线上发出申请信号BRi(1)。
CPU按优先原则同意后给出授权信号BGi作为回答(2)。
BGi链式查询各设备,并上升从设备回答SACK信号证实已收到BGi信号(3)。
CPU接到SACK信号后下降BG作为回答(4)。
在总线“忙”标志BBSY为“0”情况该设备上升BBSY,表示该设备获得了总线控制权,成为控制总线的主设备(5)。
在设备用完总线后,下降BBSY和SACK(6)释放总线。
在上述选择主设备过程中,可能现行的主从设备正在进行传送。此时需等待现行传送结束,即现行主设备下降BBSY信号后(7),新的主设备才能上升BBSY,获得总线控制权。
1.4.2 总线数据传送模式
1.读、写操作
读操作是由从方到主方的数据传送;写操作是由主方到从方的数据传送。一般,主方先以一个总线周期发出命令和从方地址,经过一定的延时再开始数据传送总线周期。为了提高总线利用率,减少延时损失,主方完成寻址总线周期后可让出总线控制权,以使其他主方完成更紧迫的操作。然后再重新竞争总线,完成数据传送总线周期。
2. 块传送操作
只需给出块的起始地址,然后对固定块长度的数据一个接一个地读出或写入。对于CPU(主方)存储器(从方)而言的块传送,常称为猝发式传送,其块长一般固定为数据线宽度(存储器字长)的4倍。例如一个64位数据线的总线,一次猝发式传送可达256位。这在超标量流水中十分有用。
3. 写后读、读修改写操作
这是两种组合操作。只给出地址一次(表示同一地址),或进行先写后读操作,或进行先读后写操作。前者用于校验目的,后者用于多道程序系统中对共享存储资源的保护。这两种操作和猝发式操作一样,主方掌管总线直到整个操作完成。
4. 广播、广集操作
一般而言,数据传送只在一个主方和一个从方之间进行。但有的总线允许一个主方对多个从方进行写操作,这种操作称为广播。与广播相反的操作称为广集,它将选定的多个从方数据在总线上完成AND或OR操作,用以检测多个中断源。
演示过程:
1.5 HOST总线和PCI总线
1.5.1 多总线结构
如图,典型的多总线结构框图。实际上,这也是高档PC机和服务器的主板总线框图。
HOST总线: 该总线有CPU总线、系统总线、主存总线、前端总线等多种名称,各自反映了总线功能的一个方面。这里称“宿主”总线,也许更全面,因为HOST总线不仅连接主存,还可以连接多个CPU。它是 连接“北桥”芯片与CPU之间的信息通路,它是一个64位数据线和32位地址线的同步总线。32位的地址线可支持处理器4GB的存储寻址空间。总线上还接有L2级cache,主存与cache控制器芯片。后者用来管理CPU对主存和cache的存取操作。CPU拥有HOST总线的控制权,但在必要情况下可放弃总线控制权。
PCI总线: 连接各种高速的PCI设备。PCI是一个与处理器无关的高速外围总线,又是至关重要的层间总线。它采用同步时序协议和集中式仲裁策略,并具有自动配置能力。PCI设备可以是主设备,也可以是从设备,或兼而有之。在PCI设备中不存在DMA(直接存储器传送)的概念,这是因为PCI总线支持无限的猝发式传送。这样,传统总线上用DMA方式工作的设备移植到PCI总线上时,采用主设备工作方式即可。系统中允许有多条PCI总线,它们可以使用HOST桥与HOST总线相连,也可使用PCI/PCI桥与已和HOST总线相连的PCI总线相连,从而得以扩充PCI总线负载能力。
LAGACY总线: 可以是ISA,EISA,MCA等这类性能较低的传统总线,以便充分利用市场上丰富的适配器板卡,支持中、低速I/O设备。
在PCI总线体系结构中有三种桥。其中HOST桥又是PCI总线控制器,含有中央仲裁器。桥起着重要的作用,它连接两条总线,使彼此间相互通信。桥又是一个总线转换部件,可以把一条总线的地址空间映射到另一条总线的地址空间上,从而使系统中任意一个总线主设备都能看到同样的一份地址表。
桥本身的结构可以十分简单,如只有信号缓冲能力和信号电平转换逻辑,也可以相当复杂,如有规程转换、数据快存、装拆数据等。
1.5.2 PCI总线信号线
PCI总线的基本传输机制是猝发式传送,利用桥可以实现总线间的猝发式传送。写操作时,桥把上层总线的写周期先缓存起来,以后的时间再在下层总线上生成写周期,即延迟写。读操作时,桥可早于上层总线,直接在下层总线上进行预读。无论延迟写和预读,桥的作用可使所有的存取都按CPU的需要出现在总线上。
- 必要引脚主控设备49条
- 目标设备47条
- 可选引脚51条(主要用于64位扩展、中 断请求、高速缓存支持等)
- 总引脚数120条(包含电源、地、保留引脚等)
1.5.3 总线周期类型
PCI总线周期由当前被授权的主设备发起。PCI支持任何主设备和从设备之间点到点的对等访问,也支持某些主设备的广播读写。
存储器读/写总线周期
存储器写和使无效周期
特殊周期
配置读/写周期
1.5.4 总线周期操作
PCI总线周期的操作过程有如下特点:
(1)采用同步时序协议。总线时钟周期以上跳沿开始,半个周期高电平,半个周期低电平。总线上所有事件,即信号电平转换出现在时钟信号的下跳沿时刻,而对信号的采样出现在时钟信号的上跳沿时刻。
(2)总线周期由被授权的主方启动,以帧FRAME#信号变为有效来指示一个总线周期的开始。
(3)一个总线周期由一个地址期和一个或多个数据期组成。在地址期内除给出目标地址外,还在C/BE#线上给出总线命令以指明总线周期类型。
(4)地址期为一个总线时钟周期,一个数据期在没有等待状态下也是一个时钟周期。一次数据传送是在挂钩信号IRDY#和TRDY#都有效情况下完成,任一信号无效(在时钟上跳沿被对方采样到),都将加入等待状态。
(5)总线周期长度由主方确定。在总线周期期间FRAME#持续有效,但在最后一个数据期开始前撤除。即以FRAME#无效后,IRDY#也变为无效的时刻表明一个总线周期结束。由此可见,PCI的数据传送以猝发式传送为基本机制,单一数据传送反而成为猝发式传送的一个特例。并且PCI具有无限制的猝发能力,猝发长度由主方确定,没有对猝发长度加以固定限制。
(6)主方启动一个总线周期时要求目标方确认。即在FRAME#变为有效和目标地址送上AD线后,目标方在延迟一个时钟周期后必须以DEVSEL#信号有效予以响应。否则,主设备中止总线周期。
(7)主方结束一个总线周期时不要求目标方确认。目标方采样到FRAME#信号已变为无效时,即知道下一数据传送是最后一个数据期。目标方传输速度跟不上主方速度,可用TRDY#无效通知主方加入等待状态时钟周期。当目标方出现故障不能进行传输时,以STOP#信号有效通知主方中止总线周期。
1.5.5 总线仲裁
PCI总线采用集中式仲裁方式,每个PCI主设备都有独立的REQ#(总线请求)和GNT#(总线授权)两条信号线与中央仲裁器相连。由中央仲裁器根据一定的算法对各主设备的申请进行仲裁,决定把总线使用权授予谁。但PCI标准并没有规定仲裁算法。