第8章 总线技术 8.1 总线体系结构 8.2 总线操作 8.3 PC机第一代总线标准 8.4 第二代PCI总线 第8章 总线技术 8.1 总线体系结构 8.2 总线操作 8.3 PC机第一代总线标准 8.4 第二代PCI总线 8.5 第三代总线标准 PCI Express 8.6 外部总线
第八章 总线技术 本章讲解了总线的分级结构,叙述了总线的仲裁和传输方式,概述了微型计算机系统的三代总线标准,重点分析了PCI总线;对显示卡使用的AGP图形接口和系统常用的外部总线作了介绍,着重描述了IDE和SCSI总线。 微型计算机体系结构不断创新,总线结构的作用和重要性日益突出。现代微型计算机在系统结构上都采用分级总线结构,以适应不同部件的要求。 现代微机系统总线经历了三代发展: 第一代ISA总线、第二代PCI总线和第三代PCI Express总线。 从PC机PC/XT总线开始,走过了ISA总线——EISA总线——(MCA总线——)VESA局部总线——PCI局部总线——AGP图形接口——PCI Express总线……历程。 外部总线从并行的Centronics、IEEE488、IDE、SCSI、串行的RS-232到广泛应用的USB、高速的IEEE1394。
8.1 总线体系结构 8.1.1 总线分类 1. 按信号性质分 除电源线外,总线按其所传输信号的性质可分为三类:地址总线AB、数据总线DB和控制总线CB。 地址总线和数据总线相对较简单,功能也较为单一。系统的不同层面上它们的名称和性能可能有所不同。 ●微处理器MPU和其它总线部件作为主控模块时其地址线都是输出的,输出给要寻 址的从模块,如存储器或I/O端口等;当总线部件作为受控的从模块时,其地址线 都是输入的,接收主模块送来的地址信号以决定要访问的从模块之具体单元。 ●数据线一般都是双向传输,在主从模块间传送、交换数据。 ●控制总线则比较复杂,即使功能相同的模块因型号不同也有显著差别,如不同型号的MPU其地址总线和数据总线大致相似,而控制总线却差异较大。正是控制总线的不同特性,决定了各种模块(包括MPU)的不同接口特点。 控制总线的基本功能是控制存储器及I/O读写操作,此外还包括中断与DMA控制、总线判决、数据传输握手联络等。 中断与DMA控制线用来实现I/O操作的同步控制; 总线裁决线对多个竞争占用总线的主模块进行仲裁,以决定哪一个主模块占用总线,防止总线冲突; 传输握手联络线用来控制总线上数据传输的开始和结束,实现数据传输的同步,保证完整地传输数据。
习惯上把地址总线、数据总线、存储器及I/O读写控制线称为基本信息总线,而把中断与DMA控制线、总线裁决线统称为仲裁总线。在总线操作期间,仲裁线和握手线保证基本信息总线上信息的正常传送。 2. 按系统层次分 整个计算机系统包含许多模块,这些模块功能不同、性能各异,位于系统的不同层次上,整个系统按模块化构建,采用多总线分级结构。同一类型的总线在不同的层面上连接不同部位上的模块,其名称、作用、数量、电气特性和形态各不相同,按总线连接的对象和所处系统的层次来分,总线有芯片级总线、系统总线、局部总线和外部总线。 ◆芯片级总线 用于模块内芯片一级的互连,是芯片与外围支撑芯片的连接总线。 按所连芯片模块的功能,又称为××局部总线(或××本地总线)。如连接CPU及其周边的协处理器、总线控制器、总线收发器等的总线称为CPU局部总线或CPU总线,连接存储器及其支撑芯片的总线称为存储器总线,如此等等。这里的“局部”表示局限在某个模块范围内,芯片级总线把芯片连接成模块。 ◆系统总线 连接计算机系统内部各模块的一条主干线,是连接芯片级总线、局部总线和外部总线的纽带。 系统总线把微机系统各插件板与主板连在一起。系统总线符合某一总线标准,具有通用性,是计算机系统模块化结构的基础。系统总线经缓冲器驱动,负载能力较强。
◆局部总线:插在系统总线与CPU总线之间,直接连接CPU总线与高速外设的传输通道称 局部总线。 系统总线连接局部总线和外部总线,与所连接的CPU和外部设备相比,系统总线发展滞 后、速度缓慢、带宽较窄,成为数据传输的瓶颈。为了打破这一瓶颈,人们将高速外设 如图形卡、网络适配器、硬盘控制器等从系统总线(如ISA等)上卸下,通过控制与驱动电 路直接挂到CPU总线上,使高速外设能按CPU速度运行。 ◆外部总线 外部总线又称设备总线,是连接计算机与外部设备的总线。 外部总线经总线控制器挂接在系统总线或局部总线上,计算机作为一种设备亦通过系统 总线、外部总线与外部设备交换数据。 常用的外部总线有连接智能仪器仪表的并行通用接口总线IEEE-488、连接各种外设的 SCSI(Small Computer System Interface:小型计算机系统接口)和IDE(Intelligent Driver Equipment:智能驱动设备)总线、连接打印机的Centronics总线等并行总线,以及串行传 输设备的USB总线、串行通信总线RS-232-C和RS-422等。 从连接对象及其级别看,有人又把系统总线和局部总线称为模块级总线,模块级总线把主板上各模块以及外部I/O模块连接成完整的微机;而把外部总线称为系统级总线,它把多台微机和外部设备连接成一个大的系统。
CPU与连接到系统板上的外设打交道须经过芯片级总线、局部总线、系统总线和外部总线这样三或四级总线。两级总线之间经总线控制器和缓冲器连接。 从系统组成和应用角度看,人们最关心的是系统总线和局部总线。 3. 按传输方式分 按传输方式分,有并行总线和串行总线。 并行总线中的每个信号都有自己的传输线,所有信号并行传送; 串行总线一般只用一条或少数几条传输线,信号在一条传输线上依次顺序串行传输。 在计算机系统中,串行总线以前通常用于连接串行设备和通信线路,多属外部总线,传统的计算机结构中多数采用并行总线; 由于串行总线引脚少、功耗低,串行技术得到飞速发展,现在串行总线的传输速度越来越快,应用领域从芯片级、到主板和各种板卡直至外部设备,范围越来越广。
8.1.2 多总线分级结构 总线上连接的设备(模块)越多,传输延迟就越大,尤其是当总线控制频繁地由一个设备传递到另一个设备时。当聚集的总线传输请求接近总线容量时,总线便会成为瓶颈。通过提高总线的数据传输率可以缓解之,但视频控制器、网络接口等所需求的数据传输率增长很快,单总线解决不了传输瓶颈。因此,在计算机体系结构中选择使用多总线成为一种必然。 1. 传统总线结构
传统总线结构中,局部总线连接处理器和高速缓存,支持一个或多个高速局部设备(模块)。高速缓存通过高速缓存控制器连接到局部总线和系统总线,经系统总线连到所有的主存储器模块。 将主存储器从局部总线移到系统总线,可使主存储器及I/O端口通过系统总线的数据传输而不影响处理器的活动。 传统总线结构还使用一个或多个扩充总线,通过扩充总线接口来缓冲系统总线和扩充总线上的I/O控制器之间的数据传输。 与将I/O控制器直接连到系统总线的结构相比,该结构不仅将处理器——存储器的通信与I/O通信隔开,从而使数据传输更高效,而且支持更广泛的I/O设备,适应性更广。 扩充总线上的网络连接包含局域网LAN(如10Mbps以太网)和广域网(如分组交换网),SCSI连接可以是本地磁盘驱动器或光驱等外设,串口连接可以是支持串行传输的外设(如扫描仪、打印机等)。
2. 高性能总线结构 传统总线结构没有考虑性能越来越高的I/O数据传输。为适应快速高性能的I/O传输,构造一条高速总线,通过桥接器和处理器总线连接。下图即这种高性能总线结构。
图中,高速缓存控制器集成到连接高速总线的桥或设备缓冲器中。高速缓冲控制器经局部总线连接处理器,经系统总线连接主存储器。 低速设备仍由扩充总线支持,经扩充总线接口来缓冲扩充总线和高速总线之间的通信流量。 连接到高速总线上的设备经高速缓冲/桥与CPU局部总线相连,进行高速数据传输,它们可以是高速LAN(如100Mbps或更快的以太网)、视频和图形工作站控制器、支持大容量高速视频传输的FireWire(即1394)和SCSI外设等。 高速总线通过高速缓存/桥缓冲后与CPU局部总线相连,既使两者紧密相连,又使高速总线独立于处理器,允许两者在传输速度与信号线定义等方面有所不同,这样处理器结构变化不影响高速总线,反之亦然。 PCI局部总线就是这样的一种高速总线(见8.4节)。
3. 奔腾机分级的总线结构
与微处理器直接相连的是高速主总线系统,其上连接有高速缓存Cache和系统控制逻辑。 系统控制逻辑一般称为“北桥”控制逻辑,上面设有AGP接口(接插显卡,支持对图形控制器和整个显示的控制)、系统主存储器,连到下一级的PCI局部总线等,这些模块具有较高的数据传输率。 PCI局部总线上连接有总线转换控制逻辑,通常又称“南桥”控制逻辑。 南桥控制逻辑负责PCI总线接口与系统中数据传输率较低接口之间的数据交换(即引出更下一级的慢速总线传输),这些接口包括IDE接口、ISA总线接口、USB接口等;另外,南桥逻辑还负责一些系统功能管理,包括对中断请求的管理、DMA的传输控制、系统定时与计数等。 分级的多总线结构适应了多种性能各异、功能不同的设备模块对数据传输的要求。Pentium主板上有ISA总线和PCI总线,PentiumII和PentiumIII主板上主要有ISA总线、PCI总线和AGP等,到Pentium4已很少有对ISA支持的主板了。
8.2 总线操作 8.2.1 概述 一个模块占有总线进行总线操作须做两件事: ●获得总线的使用权; 8.2 总线操作 一个模块占有总线进行总线操作须做两件事: ●获得总线的使用权; ●通过总线向另一模块传送数据;或者经相应的控制线与地址线向其它模块发送请 求,然后等待接收另一模块发送来的数据。 8.2.1 概述 总线类似一个“公路网”,把系统内的各个模块连接起来。系统总线相当于“公路网”中的主干道,芯片级总线相当于某一城域内的道路,局部总线相当于连接到中心城市(即CPU或主控器)的专线,外部总线相当于连接到其它“公路网”的道路。 汽车上路行驶必须要先获得允许,主控模块要占有总线进行数据传输也必须先提出总线申请;当多个主控模块同时都提出总线申请时,必须按一定规则进行仲裁。 ●任何时候,只能有一个部件或模块占据、控制、使用总线,称之为当前主模块或 当前主控器。主模块一旦获得总线控制权,就开始与另一部件或模块联系,进行 一次数据传输,这后一部件或模块称为从模块。 ●以主模块为基准,向从模块发送数据或接收从模块送来的数据,这种工作关系称 为主从关系。主模块负责控制和支配总线,向从模块发出命令来指定数据传输方 式和传输的地址信息(源和目标)。 ●使用总线在源和目标之间完成一次数据传输的时间称为一个总线操作周期。当整 个数据传输完毕,当前主模块交出总线,以便系统中其它主模块使用总线。
占用总线进行数据传输一般要有四个阶段。 ◆总线请求和仲裁(Bus request & Arbitration)阶段 需要使用总线的主模块提出申请,由总线仲裁器确定把总线分配给哪个请求 源; ◆寻址(Addressing)阶段 取得总线使用权的主模块发出将要访问的从模块(如存储器或I/O端口)地址信 息以及有关命令,启动从模块; ◆数据传送(Data Transfer)阶段 主从模块进行数据交换,数据由源模块发出,经数据总线传送到目标模块。 ◆结束(Ending)阶段 主从模块的数据、地址、状态、命令信息均从总线上撤除,让出总线,以便 其它主模块继续使用总线。 对只有一个主模块的单处理器系统,总线始终归作为主模块的处理器所占有,不存在总线请求、裁决分配和撤除问题,所以中心操作只有寻址和数据传输两个阶段,如前面所讲述的CPU把数据写到存储器或输出端口、CPU从存储器或输入端口读入数据、CPU中断操作等。
8.2.2 总线仲裁 总线仲裁即总线判决,目的是避免多个主控器同时占用总线,确保任何时候总线上最多只有一个模块发送信息。当多个主控模块同时提出总线请求时,仲裁机构以一定的优先算法裁决由哪一个模块获得总线使用权。 按裁决机构的设置,总线仲裁可分为集中式控制和分布式控制。集中式控制将总线控制逻辑基本上集中于一个设备,分布式控制则将总线控制逻辑分散在总线连接的各个部件或设备中。 按裁决方式主要有定时查询、串行链接仲裁、并行仲裁和串并仲裁等。 1. 定时查询 定时查询方式中各模块的总线请求信号经一条公共的请求线向控制器发出,控制器轮流对各模块进行测试看是否有请求,如下图所示。
定时查询以计数方式向各模块发出一个计数值COUNT,与计数值相对应的模块如果有总线请求BR(Bus Request),则总线控制器停止计数,响应该模块的总线请求BR,使该模块获得总线使用权,然后该模块发出总线忙BB(Bus Busy)信号并开始总线操作。各模块的BR和BB“线或”后送往总线控制器。总线操作结束,该模块撤除总线忙BB信号,释放总线,控制器继续进行轮询,计数值可从零开始,也可从暂停的值继续。 如果计数值每次都从零开始,各模块的优先级按其对应的序号固定不变,0号优先级最高,序号越大优先级越低。如果每次都从暂停的计数值继续下去,则所有模块都有相同的机率占用总线,各模块的优先级相等。优先级还可以程序控制,动态改变,灵活性大。 定时查询方式可靠性高,模块的故障不会影响总线控制。缺点是扩展性较差。
2. 串行链接控制 串行链接仲裁简称串链仲裁、串行仲裁,又叫“菊花链”仲裁(robin Daisy chaining)。该仲裁法又有二线菊花链、三线菊花链、四线菊花链之分,其中三线菊花链使用普遍,最具代表性,如下图所示。 三线菊花链使用3根控制线:总线请求BR、总线允许BG(Bus Grant)和总线忙BB,各模块通过OC(集电极开路)门在请求线BR和忙线BB上分别“线或”(负逻辑),各个模块的BR(或BB)线连在一起,当有一个为低电平时,输入到仲裁器的BR(或BB)即为低电平,这种“负或”的关系若从正逻辑来看则为“正与”,因此也有叫“线与”的。
允许线BG则按优先级顺序串接各个模块,每个模块输入为BGIN,输出为BGOUT,通过BG信号在菊花链上的传递来实现对各个模块总线请求的判决,原理如下: ① 有任一主控模块发出总线请求时,使BR=1(负逻辑); ② 当BR=1并且BB=0(总线未被占用)时,仲裁器发出总线允许信号使BG=1,BG(连接BGIN0)传递给模块0,若模块0没发总线请求则将BGIN0向后传递,输出BGOUT0=1, 使BGIN1=1,BG信号依次在后面模块中逐级传递; ③ 当某个模块有总线请求时,即三个条件(BB=0、BRi=1、BGINi从0跳变至1)同时满足,则该模块接管、占用总线;不再将BG信号向后传递,迫使BGOUTi=0不变; ④ 接管总线的模块使总线忙有效,即BB=1,该信号送到总线仲裁器,使之不再输出总线允许信号(使BG=0); ⑤ 占据总线的模块用完总线后撤消总线请求BR,交回总线,同时撤消总线忙BB信号;总线仲裁器可再对新的(包括已经挂起的)总线请求进行裁决,重新分配总线。 如上所述,菊花链仲裁在任一时刻只有一个主控模块占用总线,先请求先响应,同时请求时优先级高的先响应。优先级高低取决于模块离仲裁器的近远,越近的优先级越高;如果仲裁器本身也是个主控器(比如是微处理器),则仲裁器的优先级最高。 ◆为了保证总线操作的同步,仲裁器还应有一根总线时钟线BCLK输出到各个模块。 ◆菊花链仲裁控制线少,实现简单,扩充容易(增加的主控模块只需挂到总线上即可)。 缺点是线路连好后优先级不能改变;且任一环节发生故障(如使BG传递失效)将阻止后 面模块获得总线控制权;离仲裁器远的模块容易被优先级高的模块锁定,出现“饿死” 现象;由于BG串行传递、逐级延时,优先级低的模块响应速度慢;系统中能容纳的 主控模块数受时钟频率限制。
为了克服三线菊花链仲裁的弊端又保留其优点,出现了循环菊花链(Round robin Daisy chaining)仲裁方法,如下图所示。 循环菊花链仲裁属分布式总线控制,系统中没有集中的总线仲裁器,而将仲裁逻辑分散在各个模块中。总线允许线BG连到最后一个模块后又返回到第一个模块而形成循环。系统中无论哪个模块被获准接管总线,它就同时兼作当前的总线仲裁器。可以编程选择任一模块首次访问总线,每个模块的优先权取决于它沿总线允许信号BG传输方向距当前总线控制器的远近,距离越远的优先权越低。因此在总线传输过程中优先权动态地改变,每个主控模块占用总线的机会均等。
3. 并行仲裁 并行仲裁又称独立请求仲裁(Independent Request Arbitration)。该仲裁方式每个主控器都各自有独立的总线请求线BR、总线允许线BG,都与总线仲裁器相连,相互间没有任何控制关系,如右图所示。 总线仲裁器直接识别所有模块的总线请求,按一定算法选中一个最高优先级的模块,直接向它发出总线允许信号BG;被选中的模块撤消总线请求信号BRi,并占用总线进行数据传输,同时送出BBi信号,使总线忙(BB=1)。总线传输结束该模块撤消总线忙信号BB,仲裁器撤消总线允许信号 BGi,释放总线,仲裁器根据总线请求情况重新仲裁、分配总线。 总线裁决的优先级算法很多,主要有固定优先级算法和循环优先级算法。对优先级既可以动态地改变 (如采用最近最少算法、轮转菊花链算法等),也可以将优先权在总线各模块之间按固定时间片轮转,还可以采用先来先服务的算法,等等。这些算法多半用硬件逻辑来完成,也有用软件加以实现的。
并行仲裁避免了链式串行仲裁的逐级传递延时,大大加快了响应速度,特别适合实时性要求高的多处理机系统中使用。但并行仲裁控制信号线多、逻辑复杂,随着总线上主控模块的增多,复杂性几乎呈指数律上升;另外并行仲裁系统不易扩充,因此它只适合用在主控模块不多且较为固定的系统。广泛使用的PCI总线就采用集中的并行仲裁方法,每个主控器有独立的总线请求REQ和总线允许GNT信号。 4. 并串仲裁 并串仲裁是把串行仲裁和并行仲裁结合起来的二维仲裁,它能构成更为灵活的择优机构,如下图所示。
图中以二并二串为例说明二维总线仲裁原理。 两个并行仲裁机构信号线为BR0/BG0和BR1/BG1,系统中主控器的总线请求线分别连到BR0和BR1上。对总线的请求先经总线仲裁器裁决是BR0还是BR1上连接的模块获得总线控制权,然后再按串行仲裁法决定BR0上是模块0还是模块2占用总线,或者BR1上是模块1还是模块3占用总线。并行请求线上BR0与BR1的优先级由总线仲裁器内部逻辑确定,同一串行链路上各模块的优先级由它们离总线仲裁器的远近决定。 并串二维总线仲裁兼具串行仲裁和并行仲裁的优点,灵活性好,可扩充性强,响应速度快;既能容纳较多的模块,又不使结构过分复杂。对于主控源较多的大型机而言,这无疑是一种上佳的选择。实际上,十多年来开发的各种支持16位、32位微机和多微机系统的系统总线 如Multibus、VERSAbus、VMEbus等差不多都提供了这种二维总线仲裁机构。如VMEbus总线规范中提供的并行仲裁有四级:BR0/BG0~BR3/BG3,它们由总线仲裁器按固定优先级或循环优先级进行裁决,每级BRi/BGi允许串接多达16个模块,它们再按菊花链方式判优。 许多32位及以上的微处理器如Pentium等,已经将总线请求和总线仲裁逻辑集成在芯片内部。
8.2.3 总线传输方式 总线传输方式即总线通信方式,俗称总线握手方式。握手线的数目因方式不同而异,握手线以信号电平的某种变化来标明总线传输的开始和结束,在主从模块之间实现可靠的数据传输。 这些通信方式通常有四种:同步传输、异步传输、半同步传输和周期分裂式传输。 1. 同步传输方式 该方式的数据传输在一个共同的时钟信号控制下进行,时钟通常由时钟发生器/驱动器发出,经分频电路送到总线上的所有模块。总线操作有固定的时序,所有信号与时钟的关系在时序上是固定的,主控模块和受控模块之间没有其它的应答、控制信号。 在同步方式中,为了保持可靠的数据传输,地址信号、数据信号和有关读写命令信号相对于时钟脉冲的前沿和后沿要有一定的建立时间和保持时间。 总线同步通信方式在早期微机中有使用,如MC6800的MPU。IBM PC/XT机因未用READY信号线(该机中8088 CPU的READY输入信号线固定接高电平)也被视为同步方式。 同步通信方式中系统的所有模块由单一时钟信号控制,突出的优点是简单快速,缺点也很明显:系统中快速模块必须迁就慢速模块,总线响应速度由速度最慢的模块确定,使系统整体性能大为降低。而且无法确知被访问的模块是否已经真正响应,故可靠性亦较低。
2. 异步传输方式 多数系统中不同模块的数据传输速度差异较大,为解决同步传输方式的上述缺点,异步传输方式得到广泛应用。 2. 异步传输方式 多数系统中不同模块的数据传输速度差异较大,为解决同步传输方式的上述缺点,异步传输方式得到广泛应用。 异步方式又称应答方式,数据发送部件和接收部件之间没有公用的时钟和固定的时间间隔,依靠相互制约的“握手”信号来协调双方,实现传输的定时控制。 主模块提出传输数据的“请求”信号,经接口送到从模块,从模块接到请求并传送准备就绪后向主设备发出“应答”信号,整个“握手”过程一问一答地进行。从“请求”到“应答”的时间由操作的实际时间决定,而不是由系统时钟的节拍硬性规定,因此具有很强的灵活性,能保证在两个传输速度相差很大的部件或模块之间可靠完整地交换数据。 “请求”和“应答”信号都有一定的时间宽度,根据它们的撤消是否互锁,异步方式又分为三种,如下图所示。
3. 半同步传输方式 ◆不互锁:“请求”信号的结束和“应答”信号无关,两信号的结束都由各自模块决定。 ◆半互锁:“请求”信号的撤消取决于“应答”信号的到来,而“应答”信号的撤消由从模块 自身决定。 ◆全互锁:“请求”信号的撤消取决于“应答”信号的到来,而“应答”信号的撤消又必须等 到“请求”信号撤消。 全互锁方式互以对方联络信号的变化为前提来确保地址总线和数据总线上的信息不会发生冲突,保证了传输的可靠,提供了很大的灵活性,当然接口电路也相应复杂。MC68000系列微处理器就是全互锁异步传输方式的代表。 异步通信方式,两个模块的互锁控制信号要经过两个来回传送,因此总线周期长,传输速度慢。 3. 半同步传输方式 这是兼具同步与异步两者长处而产生的一种混合传输方式。该方式中有一个共同的系统时钟脉冲信号(一般由主控模块发出),用作各模块部件动作的时间基准,还至少有一条握手线WAIT(等待),由受控器发给主控器。如果受控模块速度足够高,能和主控模块在规定的时序内完成读写操作,则WAIT信号一直处于无效状态,主控和受控模块按同步方式工作;当受控模块速度慢、不能在规定的时间内完成读写操作时,受控器就使等待信号WAIT有效,主控器测到有效的WAIT后就一直等待,直到受控器完成读写操作使WAIT变为无效,主控器检测到无效的WAIT信号后再用一个时钟脉冲作为同步信号,完成一个总线操作周期。 半同步传输方式中,慢速的模块与快速主模块按异步方式通信,而快速模块与主模块按同步方式通信,具有良好的适应性,既有同步传输的快速,又有异步传输的灵活可靠。二十世纪八十年代以来的微处理器(如Z80、80x86、Pentium等)及其相应的微机系统总线都是半同步总线,所采用的 CPU的Ready(准备好)引线相当于上述的WAIT线(但作用正好相反)。
4. 周期分裂式总线传输 前述三种总线传输方式,在整个传输周期中,从主控器发出地址和读写命令开始直到数据传输结束,系统总线完全由该主控器及其选中的受控器占用。在这整个过程中,系统总线并未充分利用。比如读周期基本操作有三步:① 主控器通过总线向受控器发出地址和命令,② 受控器地址译码寻址、进行内部读操作,③ 受控器通过总线向主控器传送数据。这三步中的第②步是受控器内部的读出过程,系统总线处于空闲等待状态。对于高速的多主系统和实时控制系统,在总线传输周期中存在这样一段空闲等待时间殊为可惜。为了充分挖掘系统总线上每一瞬间潜力,遂推出了“周期分裂式”总线传输方式。 周期分裂式总线传输方式把一个总线读周期分裂成两个独立的子传输周期。主控器申请总线获准后进入第一个子周期,主控器将命令、访问对象的地址及自己的编号(主控器的地址)通过总线发送给受控器,经握手信号线的一问一答确认受控器已经收到这些信号后,双方立即和总线断开,以便其它主控器占用总线。当受控器经寻址和读出过程已准备好主控器所要的数据后,再像主控器一样申请总线,获准后进入第二个子周期,受控器将主控器的编号、自己的地址及已读出的数据经系统总线送给请求的主控器。 一个读周期分裂成两个单方向写操作的子周期,在子周期中模块得到总线的使用权,可像同步传输方式那样在限定的时序内快速完成单方向传送,而传送可靠与否又像异步方式那样经握手联络线来确认。 显而易见,对于写操作周期无须再“分裂”,只用单个子周期即可一次完成传送。 周期分裂式传输既适应了慢速模块(外设)的运行,又不降低系统整体性能。在系统具有多个主控模块的情况下,它基本消除了前三种传输方式中所必然出现的空闲等待状态,能在多个主控模块之间实现信息分时交叉、并行传输,提高了总线的利用率。但该方式中的每个模块都必须具有总线请求的功能,每个模块既是主控器又是受控器,增加了模块的逻辑复杂性。因此,这种传输方式在普通微机系统中一般不用,只用在一些高档微机和小型机中,如Intel公司的iAPX-432和DEC公司的VAX-780等系统中。
8.3 PC机第一代总线标准 在微机发展历程中,应用最为普遍、影响最为久远的是ISA总线和PCI局部总线。ISA总线由于速度慢已从Pentium 4主板上消失,性能优越的PCI Express总线正向我们走来。 8.3.1 ISA总线 ISA(Industrial Standard Architecture)总线指IBM公司为适配PC/AT机而于1984年推出的16位系统总线标准,它是当初PC/XT机使用的XT总线的扩展, XT总线共62线,其插卡/插座分A、B两面,每面31线,其中数据线宽8位,地址线宽20位(可对1MB存储空间寻址)。XT总线后来又称ISA8总线。 ISA总线在原XT总线62引线的基础上再延长出独立的一段,新增加36线(A、B两面各18线),数据线扩至16位,地址线扩至24位。系统板上ISA插槽见下图。ISA总线适配8/16位数据总线传输要求,与XT总线兼容。ISA总线插槽长138.5mm,相邻引脚距离2.54mm,基本部分与扩展部分相距10.16mm。
1. ISA总线主要特性 ●数据传输率最高为8MB/S ●24根地址线,可寻址16MB存储空间(000000H~0FFFFFFH) ●64K个可寻址的I/O端口(16根地址线, 可寻址0000H~0FFFFH端口) ●一次可进行16位或8位数据存取 ●15级硬中断控制(对应2片8259A级联) ●7个DMA通道(对应2片8237A-5级联) ●可产生I/O等待状态 ●支持多个主控器(Multi Master) ISA总线信号引脚及其在插座上的排列情况如右图所示。 XT总线通常只有CPU是唯一的主控模块,其余的都是受控模块。ISA总线中增加了一条Master信号引脚,可使CPU释放总线(CPU处于高阻状态)而由其它主控器 (诸如DMA控制器、DRAM刷新控制器、带处理器的智能接口控制卡等)占用总线。但ISA只支持CPU以外的一个主控器接口卡工作。
2. ISA信号线 ISA总线共98条信号线。 ISA总线前向兼容62条信号线的特征和功能如右表所示。
ISA总线扩展36条信号线的特征和功能如右表所示。
3. 对存储器和I/O端口寻址 ISA总线有两组地址信号线:SA19~SA0和LA23~LA17。 SA19~SA0二十根地址线与XT总线一样,可对存储器中前1MB空间寻址, LA23~LA17为扩展地址线,与SA19~SA0合起来可对整个16MB存储空间进行寻址。 16MB由前1MB的基本存储器空间和15MB扩展存储器空间构成,前1MB基本存储器空间又分成三部分,如右图所示。
其中,最低640KB(000000H~09FFFFH)的主板存储器,是DOS常规内存,接下来的256KB (0A0000H~0DFFFFH)是适配卡存储器,用作显示器、硬盘等适配卡的数据缓冲区,前1MB空间内最高128KB(0E0000H~0FFFFFH)为EPROM,包括基本BIOS程序和BASIC解释程序,常称ROM BIOS区。整个16MB空间中最高128KB(FE0000H~FFFFFFH)是前1MB空间中ROM BIOS的副本,其它近15MB的存储空间为扩展存储器。 地址总线中的SA15~SA0还用来对64K个I/O端口进行访问。但在PC/AT机中只用了低10根地址线 SA9~SA0来寻址I/O端口,其中前256个(SA9SA8=00 即000H~0FFH)端口分配给主板上的I/O接口芯片,其余768个(SA9SA8≠00,即100~3FFH)分配给外部扩展槽上的I/O端口。
8.3.2 MAC总线 MCA(Micro Channel Architecture:微通道结构)总线是IBM公司为了适应具有32位数据处理能力的386微机而于1987年推出的真正32位总线,意在解决32位CPU处理能力和低性能的系统总线(8/16位)之间矛盾。 MCA构思新颖,使用了许多优于传统的精巧设计,为以后总线的发展提供了有益的借鉴。 1. MAC总线性能和特点 MCA的数据线宽度32位,支持猝发方式(burst mode),数据传输率是ISA总线的4倍(达33MB/S);地址线宽度32位,具有4GB的寻址能力。MCA总线上还规划了对声音与图象设备的连接,增加了声音通道(Audio Channel),允许扩充卡通过它处理声音信息;增加了视频数据传输线、同步信号线与时钟等,提供对屏幕的控制。 MCA采用微小化设计(Miniaturize),插卡/插槽精细美观,长度从13.5英寸缩短到11.5英寸,宽度从4.75英寸缩窄到3.5英寸。信号线接点宽度缩小,不仅节约了材料费用,运行时的功耗也随之降低。 MCA设计了独特的防电子噪音技术,扩充插槽上的引脚每隔三个就设置了一个接地引脚,并且A、B两面错开,使总线抗电子噪音干扰的能力大为增强。 MCA总线不论是在电器上还是机械结构上都与ISA不兼容,MCA最大的特色在于设计了硬件调节总线仲裁机构,允许多个微处理器同时运行,或者使多个附属部件具有共同分享总线的多任务能力,以及并行处理的能力。
2. MCA信号线 MCA总线的微机不能兼容已经获得广泛应用的各种I/O扩展卡。而且IBM迟迟未公布MCA总线标准,因此它只在IBM PS/2系列微机上使用,并未流行开来。
8.3.3 EISA总线 为冲破IBM公司对MCA的垄断,解决32位微机I/O瓶颈问题,以Compaq公司为首的九家兼容机制造商成立了一个“Gang of Nine”组织,于1989年联合推出了扩展工业标准体系结构EISA(Extension Industry Standard Architecture)。EISA具有MCA全部功能,而且与传统的ISA百分之百兼容,因而得到迅速推广。 1. EISA总线物理结构 为了与ISA总线保持兼容,EISA槽卡长度与ISA相同,而在纵向上采用加深的方法,扩展槽的针脚分为两层—— ●上层为与ISA兼容的结构,针脚的信号定义与ISA完全相同,ISA扩展卡可插在 EISA槽中使用基本的ISA信号线进行数据传输; ●下层为扩展结构,信号针脚在横向位置上错开上层的ISA信号引脚(98线),共新增 了100根EISA信号线。在EISA槽下层的某些位置设置了几个固定卡键,用来阻止 ISA插卡插到深处的EISA层,而EISA插卡在插槽上卡键对应位置处有相应缺口, 可不受卡键阻挡而插入到下层深处,使槽内上下两排针脚与插卡上的两排引线相 接触,使用198引脚线。 由于新增的100根引脚是错开ISA信号线插进来的,受原ISA引脚排列空间限制,新增的EISA线接点比ISA接点细,插槽内EISA接点(下层)每点最大电流为1A,而ISA接点(上层)每点最大电流为3A。 EISA信号线包含原ISA的98条,加上扩展的100条,共198条。 信号引脚排列见下图。
2. 性能与特点 ● EISA总线的地址线宽32位,可寻址4GB存储空间, EISA总线的数据线宽32位,在总线控制器控制下,能根据需要自动地进行32位、16位、8位数据之间的转换,保证各种EISA卡、ISA卡相互之间的通信。总线时钟频率为33MHz,数据传输率为33MB/s,支持猝发传输方式。 ● 拥有总线主导能力。扩展卡上总线主控器接受CPU有关I/O指令,无须CPU具体参与就能在I/O设备与存储器之间传输数据,彻底将CPU从耗时的I/O操作中解放出来。 ● 具有总线仲裁能力。总线仲裁采用集中式的并行请求方式,优先级固定,支持多总线主控器Master和对总线Master的智能管理,最多支持6个总线Master。 ● 共享DMA,允许8个DMA控制器,在EISA的插槽和主板中分别具有各自的DMA请求线,各模块可按指定的优先级占用DMA设备,总线传输增加了块DMA方式,支持猝发传输。扩展卡安装容易,自动配置,无须DIP开关。借助随产品提供的配置文件自动设置系统和扩展卡,各个插槽都被规定了相应的I/O端口地址范围,插卡不管插到哪个插槽都不会产生地址冲突。 ●EISA总线提供ISA总线不具备的中断共享功能,允许用户配置多个设备共享一个中断。 EISA体系结构中,多数386/486微机均使用了Intel公司的82350芯片组,提供了最大的I/O吞吐能力。
8.3.4 VESA总线 VESA VL由视频电子标准协会VESA(Video Electronics Standard Association)与六十多家显示接口制造厂商联合开发的一个全开放局部总线标准,一般称VL总线,也叫VESA总线。VL BUS(VESA Local BUS)采用中介式总线结构,将总线扩展成两个部分:前段是VL-BUS插槽,引脚密度大,有124个引脚,该插槽通常以33MHz高速运行,最大数据传输率为132MB/s,高速设备经VL-BUS直接与CPU总线相连,缩短了数据传输的距离和环节;后段插槽仍保持ISA的所有特性,有62+36=98个引脚,低速数据可由ISA插槽完成。 1. 主要特性 (1) 总线传输速率 VL BUS数据总线宽度为32位,可扩充至64位。VL BUS直接与CPU局部总线相连,与CPU同步工作;但由于VL BUS无缓冲器,当CPU速度高于33MHz时会产生延时。VL BUS最高主频为66MHz,但受连接器电性能限制,不可能超过40MHz,数据传输率可达132MB/s。 (2) 总线扩充槽和总线主控设备数目 VL BUS最多支持三个总线扩充槽,每个扩充槽只能有一个VL总线主控器。不用扩充槽的VL BUS设备,可直接做在主板上。最多支持三个总线主控器,否则将使CPU负载太重,甚至过热而烧毁。 (3) VL BUS设备类型 VL BUS主要设计目标是支持高速视频控制器,以及其它能从高速接口中受益的外设如硬盘控制器、LAN控制卡等。
2. VL BUS信号线 VL BUS为486微机设计,支持386、486等CPU,在多CPU的多主系统中,VL总线控制器只和单CPU相连。 (4) 支持回写式高速缓存系统(Write back Cache)。 (5) 总线扩充槽布局 VL总线扩充槽是一种标准的微通道型扩充槽,在主板上与系统I/O总线(如ISA或EISA扩充槽等)的中心线对齐。这样VL BUS扩充卡能充分利用所有系统I/O总线特性,在同一块卡上既有VL总线逻辑,又使用系统I/O总线接口逻辑。 2. VL BUS信号线 VL BUS插槽共有62×2=124个引脚接点,其中末端8个未定义,A46~47/B46~47位置为键卡,实际定义的引脚有112个,如右图所示。
8.4 第二代PCI总线 PCI(Peripheral Component Interconnect:外围部件互连)总线由Intel公司结构实验室于1991年底提出,PCI集团(即PCI SIG)在1992年6月推出1.0版,1993年4月30日和1995年6月1日分别推出2.0版和2.1版。 PCI总线是一种开放的、不依赖于任何微处理器的先进的局部总线,速度很高,只要很少芯片就能实现之,因而很经济,而且支持把其他总线连到PCI总线上,广泛用于Pentium(奔腾)机中。 Intel将所有PCI专利向外公开,PCI规范得到许多微处理器和外围设备生产厂商的支持,不同生产厂商的PCI产品相互兼容。 AGP是高速显示卡的图形接口,其点对点的数据传输速度比PCI更快。 8.4.1 PCI总线 1. 性能和应用 PCI总线性能优秀,特点如下。 (1) PCI支持广泛的基于微处理器的配置,包括单处理器和多处理器系统,支持迸发工作,PCI总线上的外设可与CPU并行工作,支持无限猝发读写方式(VL BUS仅支持16字节的猝发读写方式),特别适用于高速数据传输。这种优良的性能概源于有多级缓冲的总线控制器。
(2) PCI总线与CPU异步工作,所有PCI总线上的操作都同步于PCI的CLK信号,总线时钟为33MHz。PCI总线宽度为32位,可扩充到64位;数据传输的最高速率为133MB/s(32位总线)~264MB/s(64位总线)。 PCI规范要求PCI设备必须支持16MHz到33MHz范围内的操作,并建议支持低到0Hz的操作。 由于PCI总线与CPU及其时钟无关,使PCI总线扩充卡可以插到任何一个系统的PCI总线插槽内,差不多成了一种通用卡。 (3) 兼容性好。PCI总线不受CPU限制,可同时支持多组外围设备,能兼容已有的ISA、EISA、MCA、VESA等总线。在Pentium机中曾广泛采用PCI-ISA总线共存的方式,兼顾各种速度和性能的外设。PCI总线适用于多种外设接口,包括图形、网络、磁盘控制器、多媒体及其它扩展卡,而不象VESA VL总线仅针对图形卡设计。 (4) 具有PnP(Plug and Play:即插即用)功能。PCI卡内含有256个字节的配置寄存器,PCI卡一插入到PCI槽中,系统BIOS将根据读到的该扩展卡信息,结合系统的实际情况为插卡分配存储空间、端口地址、中断号和某些定时信息,从根本上免除了跨接跳线、设置DIP开关、指定中断号等麻烦的手工操作。 PCI是独立于处理器的总线,在CPU与外设之间插入一个复杂的管理流,协调数据传输速率,提供一个低延时的访问通路,可作为中间层或外围设备总线。PCI广泛应用到个人计算机、工作站和服务器系统中。PCI在单处理器系统中的典型应用如下图所示。
图中,PCI总线桥接器与DRAM控制器结合在一起,与处理器的耦合更紧密,同时提供了高速数据传输功能。桥接器起了“数据缓冲”作用,使PCI总线速度可以与CPU的I/O处理速度不同。
PCI在多处理器系统中的应用如下图所示。 多个PCI总线通过桥接器连接到处理器所在的系统总线上。图中,桥接器提供了快速数据收发功能,同时又保证了PCI独立于处理器,而系统总线则支持处理器高速缓存Cache、主存储器及PCI桥接器。
2. 总线结构 (1) PCI结构特点 驱动PCI总线的全部控制由PCI桥实现 PCI桥就是PCI总线控制器,它独立于处理器,采用独特的FIFO(先进先出)式的中间缓冲器设计,将处理器子系统与外围设备分开,使CPU脱离对I/O的直接控制。通过PCI总线控制器在CPU与高速外设之间传输数据,像道“桥梁”,故称“PCI桥”。 CPU输出数据,先把成批数据送到PCI缓冲器;然后再由PCI总线控制器将数据写入挂在PCI总线上的输出设备,在此过程中,CPU可以去执行其他操作。 读入时也是由PCI桥先把输入设备的数据成批装入PCI缓冲器中,在此过程中CPU可并行执行其它操作;整个数据块装入缓冲器后,再快速读进CPU。因此PCI总线和CPU总线的操作互相分离,互不影响。 兼容性强,适用范围广 使用标准总线桥的特殊模块可将PCI局部总线转换为ISA、EISA、MCA、VESA等标准总线,从而在PCI总线系统中可继续使用原先适配的ISA、EISA、MCA、VESA等总线的设备。 可采用多PCI总线 当要连接到PCI总线上的设备很多而总线驱动能力不足时,可采用多PCI总线,这些总线都可并发工作,每组总线上可接若干个外设。通过PCI桥缓冲,用户可增加多种外围设备而不会降低CPU的性能和可靠性,相反却提高了整体效率。
(2) PCI信号线 PCI总线信号线分两大类:必备的和可选的。 对PCI接口而言,最少引脚数为47(受控器)或49(主控器),如下图左侧所示。 49条必备信号线可分为五组,完成寻址、数据传输、接口控制、总线仲裁和错误报告、复位等系统功能。
★ 接口控制线:控制数据交换的时序,协调收发端动作。 ★ 错误报告线:用于报告奇偶校验错和其他错误。 ★ ★ 地址和数据线:包含32条分时复用的地址/数据线,4条信号线用来解释地址或数据信 号,并使之有效;1条用于奇偶校验。 ★ 接口控制线:控制数据交换的时序,协调收发端动作。 ★ 错误报告线:用于报告奇偶校验错和其他错误。 ★ 仲裁线:非共享线(不同于其它PCI线),每个PCI主控器都有一对仲裁线,直接连 到PCI总线仲裁器上。 ★ 系统信号线:时钟和复位引脚。 各条信号线的说明见下表。与ISA总线不同,PCI总线接口信号中没有专门的存储器读/写信号,而是隐含在C/-BE0~C/-BE3中(见后述)。 可选信号线51条,可分为六组,将地址/数据线扩充至64位,完成Cache支持、中断、接口控制、JTAG/边界扫描等功能,如上图右侧所示。 ★ 64位总线扩充线:包括32条分时复用的地址/数据线,与必备的地址/数据线一道形成 64位地址/数据线;4条线用于解释地址或数据信号并使之有效,2条线允许同意使用 64位线;1条用于奇偶校验。 ★ 接口控制线:用于总线封锁,禁止其它主控设备占有总线。 ★ 中断线:非共享线,提供给必须请求服务的PCI设备,PCI设备有自己的中断线。 ★ Cache支持线:支持在处理器或其它设备中能被高速缓存的PCI上的存储器。引脚支持 Cache监听协议。 ★ JTAG/边界扫描线:支持IEEE标准149.1中定义的测试程序。 各条信号线的说明见下表。
(3) PCI插槽与插卡 PCI总线有两种插槽,分别适用于5V和 3.3V电压环境;PCI插槽引脚部分长77.48mm,引脚之间相距1.27mm(为ISA的一半)。 PCI规定了三种电气类型的插卡:5V卡、3.3V卡和5V/3.3V通用卡,其中通用卡是实现5V到3.3V过渡时使用的;在插槽和插卡上同时用了一套对应的定位销键,以防止把插卡插到不适当的位置或不匹配的槽中,如下图所示。 每种PCI插卡(3.3V和5V)又都分为短型和长型两种,分别对应于32位或64位地址/数据线宽。短型卡定义了120根引脚,长型卡定义了184根引脚。 5V和3.3V信号电压环境下PCI插槽的引脚分配如下图所示。
下图是 PCI显示卡。
3. PCI命令 当总线主控器获得总线控制权时,主控器决定主、从设备之间的数据传输类型。在地址传送周期,C/-BE信号表示总线命令,首先指示传输类型,AD[31:0]线上的地址选中从设备。总线命令编码及类型说明如下表所示。 中断响应:是单个周期的读命令,回送的中断矢量的长度由字节使能信号来说明。 特殊周期命令:以广播的形式发给所有的设备,每个接收设备必须自我确定广播的消息是否适合自己。它不但能报告处理器的工作状态,而且可作为PCI设备间的辅助联络信号。
I/O读命令:用来从映射到I/O地址空间的设备读取数据。 存储器读命令:从映射到存储器地址空间的设备读取数据。 存储器写命令:向映射到存储器地址空间的设备写入数据。 配置读命令:从设备的配置空间读取数据。当一个设备的引脚-IDSEL有效且AD[1:0]=00时,该设备即被选为配置读命令的目标。在配置读的地址周期,AD[ 7:2 ]用来从该设备的配置空间(26=64个双字寄存器)中选出一个,AD[31:11]无意义,AD[10:8]表示从多功能设备中选择一个功能(23=8中选1)。 配置写命令:向设备的配置空间写入数据。设备的选择及其它参数同配置读命令。 存储器多行读:用于在主设备连接断开之前预读多行Cache数据,只要有效,就连续不断以流水线方式发出存储器读请求。该命令要求存储器控制器配合,传输大块连续数据,改善对存储器系统的访问性能。 双地址周期:两个地址周期发送64位地址,支持对64位设备的寻址。 存储器读行命令:读取多于两个数据周期的连续数据,其它与存储器读命令类似。 存储器写和无效作用:用一个或多个周期向映射到存储器地址空间的设备写入数据,与存储器写命令基本相同,但它保证至少有一个Cache(高速缓存)行是写操作,将寻址到的Cache行的每个字节都写入。该命令要求主设备的配置寄存器指明Cache行的大小。
存储器读/写命令激发的数据传输要占用一个或多个时钟周期,这些命令的解释执行依赖于总线上的存储器、控制器是否支持存储器和Cache之间进行数据传输;如果PCI协议支持,与存储器之间的数据传输通常是以高速缓存行(又称为块)来进行的。 3条存储器读命令在关于是否可Cache内存的解释执行如下表所示。
4. 数据传输 PCI上的基本总线传输机制是突发传输。一次突发传输由一个地址周期和若干个数据周期组成。 PCI突发传输是指:位于主处理器和PCI总线之间的主桥电路可以将针对存储器的多次访问在不影响正常操作的前提下合并为一次传输,由主桥电路完成针对存储器的突发访问周期,最大限度地提高系统性能。 基地址寄存器的预取位被置位,将允许读数据的预取和写数据的合并。根据初始化期间配置软件所提供的地址范围,主桥电路可以区分哪些地址空间可以合并,哪些不能合并。 进行突发操作,根据基地址依次产生下一个传输地址,所产生的隐含地址顺序相同,主桥电路总是可以将它们组合成顺序读取/写入的数据。 PCI总线上所有的数据传输基本由以下三条信号线所控制: ●-FRAME由主设备驱动,低电平有效,表示一次数据传输周期的起始和结束。 ●-IRDY由主设备驱动,低电平有效,表示主设备准备就绪;无效表示未准备好, 插入等待状态。 ●-TRDY由从设备驱动,低电平有效,表示从设备准备就绪;无效表示未准备好, 插入等待状态。
下图显示了32位模式下读操作时序。所有事件均在时钟下降沿(即每个时钟周期中央)同步,而总线设备在总线周期开始的上升沿对总线采样。
② CLK2上升沿,目标设备识别AD线上的地址信号。 读过程中发生的主要事件如下: ① CLK1下降沿总线主控器使-FRAME为低电平(有效),发送端把起始地址放到AD线上,C/-BE线则给出“读命令”信号,开始总线传输周期,直到发送端设备预备完成最后一次数据传输。 ② CLK2上升沿,目标设备识别AD线上的地址信号。 ③ CLK2下降沿发送端停止驱动AD总线,AD总线进入一个切换(过渡)周期(用上下两个半圆箭头表示),发送端修改C/-BE线上信号以指示AD线上将传送的数据中哪些字节有效,发送端使-IRDY有效(降为低电平),表明已准备好接收数据项。 ④ CLK3下降沿被选中的目标设备的-DEVSEL有效,表明它已收到有效地址。目标设备将所读数据放到AD总线上并使信号-TRDY有效(低电平)。 ⑤ CLK4周期开始读数据,CLK下降沿改变C/-BE线字节指示信号,准备下一次读。 ⑥ 目标设备还未将下一块数据准备好,在CLK4下降沿将-TRDY置为无效(高电平),因此发送端不会在CLK5读数据,也不改变字节允许信号。等待一个时钟周期后,CLK5下降沿目标设备复将-TRDY置为有效,在CLK6周期读第二块数据。 ⑦ 发送端未准备好读第三块数据(如暂时缓冲区满等),在CLK6下降沿使-IRDY无效,迫使目标设备读数据多保持一个时钟周期。 ⑧ 发送端得知第三块数据是传送的最后一块,在CLK7的下降沿使-FARME变为无效,通知目标端:这是最后一次数据传输;同时发送端再次使-IRDY有效,表示它已准备好完成本次传输。 ⑨ CLK8周期开始读数据,CLK8下降沿使-IRDY无效,把总线变为空闲状态,同时目标端使-TRDY和-DEVSEL处于无效的第三态。
PCI总线上写操作与读操作类似,写操作时序如下图所示。
-FRAME信号有效,在写操作中开始地址周期,CLK2上升沿达到稳定有效。写操作与读操作不同,在地址周期与数据周期之间没有切换(过渡)周期,因为地址与数据都是由同一主设备发出的。整个数据周期与读操作类似,图中在第三个数据传输周期由从设备连续插入3个等待周期(-TRDY无效),其中CLK4~CLK5期间主从设备都插入了等待周期。 主设备和从设备都可提出终止一次PCI传输的要求,但不一定得到响应;终止传输需要主从双方相互应答配合,最终由主设备撤消-FRAME和-IRDY信号,使总线进入空闲状态来完成。
5. 总线仲裁 PCI总线使用集中式的独立请求仲裁,总线上每个主控器有独立的请求信号-REQ和允许信号-GNT ,这些线连到中央仲裁器。某一设备要用总线传输数据,必须确保它的-GNT信号当时有效。 PCI总线基本仲裁规则如下: ① -GNT无效而-FRAME有效时,当前的数据传输合法且继续下去。 ② 总线在非空闲状态,一个-GNT信号无效与下一个-GNT信号有效之间必须有一个延迟的时钟周期,以避免AD线和PAR线上出现时序竞争。 ③ 若-FRAME无效,可在任意时刻置-GNT和-REQ无效,以便响应优先级更高的主设备;占用总线的主控设备在-GNT有效后16个时钟周期仍未开始数据传输,则允许当前主机跳出这个状态。 总线仲裁器在没有设备使用和请求使用总线的情况下,根据一定方式选定一个设备并向它发出-GNT信号,从而选定一个缺省的总线拥有者,称为总线停靠。停靠者一般固定为某一设备或最后一次使用总线的设备或仲裁器本身。
8.4.2 PCI-X总线 到2004年,处理器及其前端总线频率高达数GHz,应用方面游戏和多媒体也要求更高的带宽,这些都使PCI的工作频率和带宽无法胜任(即使PCI扩展到64位也只能提供533MB/s),再加上PCI存在IRQ共享冲突(只能支持有限数量的设备),因此HP、Compaq、IBM等公司提出了一种新的I/O接口和总线标准PCI-X(PCI-Extended:增强PCI)。 PCI-X性能优越,在相同频率下比PCI的性能提高14%~35%。PCI-X的特点如下: ● PCI-X支持66/100/133MHz工作频率,支持32/64位总线宽度,允许的最大带宽大 1066MB/s。 ● PCI-X的频率可随设备而变化,设备支持66MHz(或100MHz或133MHz),PCI-X 就工作于66MHz(或100MHz或133MHz),不再像PCI那样固定不变。 ● PCI-X允许目标设备与单个PCI-X设备交换数据,避免PCI总线必须在目标设备和 总线之间频繁地交换数据。 PCI-X总线能自动移除没有任何数据传输的设备,以减少PCI设备之间的等待时间。
8.4.3 AGP高速图形接口 随着多媒体的广泛应用,3D纹理与几何材质都需要大量显存和更高的总线带宽,PCI已不敷应用, Intel公司于1997年在PCI基础上推出高性能图形总线AGP(the Accelerate Graphics Ports:加速图形接口)以解决高速视频显示问题。 1. AGP的工作方式 AGP是专为3D显示而开发的一种高性能的内部互连总线,以66MHz PCI 2.1规范为基础的点对点连接的总线。它把需要进行高速传输的动态视频、三维图形等流媒体数据从PCI总线上分离出来,使之在图形控制器和系统芯片组之间专用的点对点通道上传输。这样,从根本上解决了PCI传输瓶颈问题,使PCI总线卸下高速显示数据传输重担而全力负责其它应用的数据传输,数据各行其道,PCI和AGP相得益彰。 AGP数据宽度32位,与PCI相比具有超高的数据传输速率。AGP有四种工作方式,基频为66MHz,其基频、倍频、四倍频、八倍频方式分别以66MHz、133MHz、266MHz、532MHz频率工作,四种方式的最大数据传输率分别为266MB/s、532MB/s、1064MB/s、2.128GB/s,如下表所示,其在视频方面的优势非常突出。
在AGP×1方式,32位数据在每个时钟CLK的上升沿传输,理论上最大的传输带宽为66MHz×32÷8=266MB/s。 在AGP×4方式,要在2个时钟周期内完成8组32位数据传输,无法直接利用CLK信号控制数据传输,而是利用波形完全相反、频率为133MHz的AD_STBx和- AD_STBx这两个触发信号的下降沿触发数据传输,最大传输带宽为(66MHz×2)×2×32÷8=1066MB/s。 在 AGP×8方式,要在一个CLK时钟周期内完成8组32位数据传输,利用了波形完全相反、频率为266MHz的AD_STBS和AD_STBF这两个触发信号的上升沿触发数据传输,最大传输带宽为(66MHz×4)×2×32÷8=2132MB/s。
2. AGP特点 (1) 直接内存执行DME AGP允许数据量极大的3D纹理数据放入系统内存而不存入拥挤的帧缓冲区(图形控制器的内存),从而释放帧缓冲区供其它功能使用。允许显示卡直接操作内存的技术称为DME(Direct Memory Execute:直接内存执行)技术。 (2) 数据读写流水操作 AGP采用内存请求流水线(Memory Pipelining)技术,允许系统处理图形的控制器对内存进行多次请求,并对内存请求进行排队,深度流水线隐去了对内存访问造成的延迟,加快了整个操作速度。AGP流水操作的最大深度不受结构上约束,在结构规范中定义为256,实际受限于主控器与从控器的能力,一个典型的内存请求队列可处理12个以上请求。 AGP流水式访问请求有一个确定的访问长度(PCI传输的长度由信号的有效时间来决定),而且是8的整数倍。AGP操作中所使用的存储器地址总是按8字节的边界对齐,每次访问的最小长度为8个字节,所有访问的长度都是8字节的整数倍。 (3) 并行操作 处理器访问内存的同时,显示卡可访问AGP存储器,显示带宽不与其它设备共享。 AGP采用边带信号传输(Side Band Signaling)技术,该方法控制显示信号不通过系统数据总线而经AGP的单独信号线来传输,把整个32/64位总线留给图形加速器,充分利用了系统资源。 (4) 数据传输率高 AGP以66MHz PCI 2.1规范为基准,使用32位数据总线和双时钟技术。双时钟(×2)允许AGP在一个时钟周期内传输双倍的数据,从而达到133MHz的操作速率、532MB/s的突发数据传输率(通常PCI仅为33MHz)。
3. AGP总线命令 与PCI操作不同,AGP的总线命令只对主系统存储器进行访问,而且不要求窥探高速缓存Cache(即不保证存储器内容的一致性,这适应图形数据特点)。 AGP接口上有两种操作:排队请求和数据传输。 AGP流水式的读写数据传输和相关的访问请求在时序关系上不一一对应,即AGP接口上的所有访问次序以访问请求的次序为准,而不以实际到达的数据传输次序为准。AGP接口的数据传输在时序上独立于启动该次传输的请求,有利于增加流水线的深度(但要以足够容量的缓冲器做保证)。 AGP接口上主控器所发出的流水式操作请求的类型排队情况,由AGP总线命令告诉核心逻辑。总线命令由信号线C/-BE[3:0]来编码表示,如下表所示。
8.5 第三代总线标准 PCI Express PCI成为主流架构后,为满足高速数据流的传输,显卡舍PCI总线而用AGP接口,南北桥之间的通道也弃PCI总线而代之以专用的诸如Intel的AHA、VIA的V-Link以及SIS的MultiThreaded I/O Link,显然主板上总线类型多,不统一;同时,Pentium 4前端总线频率已超过1GHz;为提高总线带宽、统一总线标准, 3GIO(第三代I/O标准)总线标准PCI Express应运而生。PCI Express将取代PCI、AGP及各种不同内部芯片的连接,连通所有I/O,目前,支持PCI Express的芯片组越来越多,计算机系统的未来总线属于PCI Express。 1. 概述 传统的总线技术通过提高并行传输的位数来提高性能,从8位、16位、32位到64位,并行位数越多,制造难度越大,成本也越高。随着速度的提升,针头、接脚、线缆、布线等诸多方面很难解决同步问题,传统并行总线中与数据信号同时传输的源同步时钟信号频率只能达到1GHz。 与PCI、PCI-X的并行传输不同,PCI Express基于串行技术,采用4根信号:,2根差分信号线用于接收,另2根差分信号线用于发送。信号频率2.5GHz,采用8/10位编码,将时钟信号直接植入数据流中,而不是作为独立信号传输。对应多种通道连接方式,PCI Express总线设置有×1、×4、×8、×16和×32通道连接器,一个×1的连接有4根传输线,一个×16的连接有64根双向数据传输线(16×2个差分信号对)。
在PCI Express卡规范中定义了从×1到×16总线宽度的接口(×2模式保留用于其它类型的PCI Express内部互连而不是插槽)。PCI Express在软件方面采用现有的PCI设备模式,因此任何支持PCI的操作系统都可以支持PCI Express。PCI规范制定者PCI-SIG把PCI Express作为PCI的继任者。继ATi率先推出PCI Express接口的显卡,现在PCI Express总线插槽已越来越多地用于ATX和BTX主板系统,在相当一段时期内,PCI插槽会继续存在,其位置一般挨着PCI Express插槽。PCI Express×16插槽将取代AGP插槽用于传输送显的图像数据,提供高达5GB/s的带宽(有效带宽约4GB/s)。PCI Express×16插槽长度比PCI插槽略长,而PCI Express×1插槽最短,只有PCI插槽长的1/3不到。 2. PCI Express总线技术特点 (1) 点对点互连 PCI Express在两个设备之间采用点对点互连:芯片之间采用接口连线、设备之间采用数据电缆、扩展卡之间使用插槽连接,这样为每个设备提供独立的通道带宽,充分保证设备的带宽资源,不同于PCI设备共享同一总线资源。 (2) 扩展灵活 使用PCI Express专用电缆可将各种外部设备与系统内的PCI Express总线相连,而不像PCI总线只能在机箱内通过扩展槽加以扩展。 (3) 传输率高 信号频率高达2.5GHz,再加上采用特殊的双通道通信技术,进一步提高了传输速率。定义有多种通道连接方式,最高达×32通道,双向数据传输速率高达16GB/s。
(4) 连接具有通用性 PCI Express在软件上与PCI兼容,不仅可用于南桥与其他设备连接,还延伸到芯片组之间的连接,亦可用于图形芯片的连接,能将整个I/O系统统一起来,优化微机系统设计。 (5) 引线少、功耗低 采用串行通信,每个通道数据传输仅需4根引线。引线数量少,电源功耗低,可靠性高。PCI Express×1总线插槽共有18根引脚,4根为双向数据传输,其余14根为电源线、控制线及这4根线的相互组合。 (6) 支持热插拔和即插即用PaP(Plug and Play) 与USB、1394一样,可方便地将外部设备对总线进行在线插拔,并且即插即用。 (7) 支持两种类型中断 一种是老式PCI设备中断PCI INTx(x为A、B、C、D之一),一种是新型的MSI(Message Signaled Interrupt:消息信号中断)。MSI在PCI 2.2/2.3设备中是可选项,在PCI Express中则是必需的。
3. PCI Express的数据传输与带宽 从逻辑上看,PCI Express有三个协议层,从高到低依次是处理层(Transaction)、数据链路层(Data Link)、和物理层(Phisical)。 处理层接受发送端数据并将其分块打包后送往数据链路层,或者将数据链路层送来的数据包还原成原本的发送信息送至接收端。 数据链路层采用Ack/Nack协议技术对数据包进行校验检测,将发送的数据包送往物理层,或者接收物理层送来的比特流分包检测后送往接收端的处理层,保证数据在数据链路层之间无差错地传送。 物理层负责在通信线路上传输串行的比特流。 PCI Express数据包传输包含了四种基本处理类型:内存处理、I/O处理、配置处理和信息处理。 PCI Express采用串行传输,位宽为1,使用8/10位编码。取10位作为一个字符的传输,PCI Express×1方式单向传输的带宽为1×2.5GHz→2.5Gb/s=(2500M/10)/s=250MB/s,双向传输的带宽为2×2.5GHz→5Gb/s=500MB/s。 PCI Express和其它总线带宽的比较见下表
8.6 外部总线 外部总线是微机系统之间、微机与外部设备之间的连线,外部总线通过总线控制器挂接在系统总线上。 外部总线有些是专为微型计算机外设而开发的总线标准,如IDE、SCSI等,有些是借用了其它行业的总线标准,如电子通信等行业的串行总线RS-232-C、并行总线IEEE-488等。现在使用最广泛的外部总线当属USB。 8.6.1 IDE总线 1. IDE接口 智能驱动电路IDE(Intelligent Drive Equipment)总线是1984年Compaq与WD公司联合推出的一种硬盘接口标准,也称ATA(PC/AT Attached)端口。标准IDE接口只支持2个智能设备(如磁盘驱动器等),每个硬盘驱动器设备最多支持1024个柱面、63个扇区、16个磁头,所以单个硬盘驱动器最大容量为512(字节/扇区)×63×1024×16=528MB。IDE接口只是ISA总线信号的一个子集,接口简单,操作时对系统软件透明,使用广泛。
大多数IDE接口和驱动器不支持DMA(直接存储器存取)方式数据传输,而采用PIO(编程输入输出)方式,使用标准I/O端口指令来传送所有的命令、状态和数据;因为硬盘驱动器内有多个扇区缓冲,这些指令可以一次取指令多次重复I/O操作;与DMA传送相比,有较高的速度和较低的总线利用率。IDE端口使用硬件中断(14#)来传输硬盘驱动器数据。 2. EIDE接口 为支持更大容量、更多设备和更高的传输速率,为与SCSI接口标准竞争,1993年WD公司推出了增强型IDE接口,即EIDE(Enhanced IDE)接口,又称ATA-2接口。EIDE可支持4个设备,每个硬盘驱动器最多可支持256个磁头,故单个硬驱最大容量可达528MB÷16×256=8.4GB。EIDE规范中还采纳了ATAPI(AT Attached Packed Interface)新标准,使该接口支持CD-ROM驱动器。EIDE接口得到广泛应用,Pentium主板均内置了EIDE型接口。 EIDE(ATA-2)中引入S.M.A.R.T技术,即自检测、分析、报告技术,俗称ATA-3,扩充了ATA-2的功能,但传输速率无变化。 在EIDE规范中,数据传输模式除了标准的PIO方式外,还有单字和多字DMA传输方式。单字DMA传送指每次DMA请求只传输一个16位的字,多字DMA传送则指:只要DMA请求有效,就持续不断地传送16位的数据项,直到结束。 应用在硬盘接口上,EIDE通常采用PIO传输方式。EIDE接口的数据传输速率可达16Mbps,EIDE传输模式及其最小总线周期如下表所示。
EIDE与IDE接口一样,共有20×2根引脚信号,如右图所示。
3. 超级DMA/33 超级DMA/33也称为ATA/33,是一种用于数据传输的物理协议,用在兼容DMA/33的IDE控制器和IDE设备之间数据传输。 DMA/33通过一个源同步信号协议来传输数据,支持突发传输和CRC-16检错协议。 DMA/33采用总线主控方式,即由装在硬盘上的DMA控制器直接控制硬盘的读写,CPU不再具体负责(因而可在数据传输期间进行其它处理)。DMA/33运行的时钟为33MHz,可使源和目标之间的数据传输达到甚至超过33MB/s。 DMA/33协议不要求在IDE连接器上增加额外的信号引脚,而只是对其中的3条信号引脚进行重新定义,如下表所示。
在数据由IDE设备传送到IDE接口的读周期,信号-IOR重新定义为-DMARDY,由IDE设备驱动:无效(高电平)说明数据未准备好,需要插入等待状态;有效说明数据已准备好,不需要插入等待状态。 在数据由IDE接口传送到IDE设备的写周期,-IOR重新定义为STROBE,由IDE接口驱动,在信号的上升沿和下降沿进行数据传输。 同样,在读周期信号IOCHRDY重新定义为STROBE,由IDE设备驱动,在信号的上升沿和下降沿进行数据传输。在写周期信号IOCHRDY重新定义为-DMARDY,由IDE接口驱动,被IDE设备采样,以决定在当前传输周期中是否插入等待状态。
4. DMA/66及新型超级接口 超级DMA/66实现的策略与DMA/33类似并保持兼容。DMA/66逻辑运行时钟为66MHz,平均每2个时钟周期完成一次16位的数据传输,数据传输率为66MB/s。 采用DMA/66接口传输数据,必须使用高质量的IDE连接电缆,以减少信号的反射、噪音和耦合感应,保证数据传输率的提高。 DMA/66也可以运行44MB/s的传输方式,用3个时钟周期完成一次16位数据传输。 Ultra DMA/33和Ultra DMA/66又称ATA-4,其后面的数字大致相当于数据传输速率。 Ultra ATA/100差不多已达到并行ATA的速度极限,为寻求速度上的突破,SATA即串行ATA硬盘接口技术应运而生,相对于IDE并行传输在结构上发生了质变:串行ATA电缆长约0.9米、有7条引脚(并行ATA电缆约长0.45米、有多达80条引脚)。Intel公司发布的Serial ATA的初始规格,最大外部数据传输速率达100MB/s,第一代串行ATA速度为150Mbps,总线速度达到1.5Gbps。预计2007年上市的第三代串行ATA工艺可以达到600Mbps,总线速度可达到6Gbps。
8.6.2 SCSI总线 SCSI是一个成功的外设接口,广泛用于Macintosh和IBM PC兼容机系统及众多的工作站中。SCSI支持多I/O任务并行操作,可选择8位、16位、32位数据线,用作硬盘、光驱、刻录机等大容量外部存储设备的标准接口。 SCSI接口总线在美国Shagart公司的SASI基础上增加了磁盘管理功能,于1986年推出,称为SCSI-1标准;SCSI-1提供8位数据线,时钟频率5MHz,数据传输速率5MB/s;SCSI-1最多允许7个设备以菊花链形式连接到主机上。 1990年推出SCSI-2标准,数据线可有选择地扩大到16位或32位,时钟频率增加到10MHz,数据传输速率最高可达40MB/s。 支持更高传输速率的SCSI-3规范也已开发。 1. SCSI系统结构和设备连接 SCSI总线可以连接单个/多个主机与外设构成SCSI系统,如下图所示。
SCSI设备实际上常采用菊花链相互连接。每个SCSI设备有两个连接端口,一个用于输入,一个用于输出,全部设备依次链接在一起,开始端接主机;所有SCSI设备独立起作用,可与主机交换信息,也可以互相交换数据。例如,一个硬盘数据可备份到另一个硬盘或磁带机上,而不用主处理器参与。 SCSI总线上的设备(模块)分为主设备(又称启动设备)和目标设备,主设备请求一个I/O过程,发出命令;目标设备接收命令,执行I/O过程。 通常与主机相连的适配器是主设备,与外设相连的外设控制器是目标设备,主设备接受主机的I/O任务,用SCSI命令告知目标设备执行I/O任务。 一般主设备是起始端,外设控制器是目标端,所有的数据交换在起始端和目标端之间进行。在SCSI系统中,主设备与目标设备并不是固定不变的,随两者在I/O操作中所起的作用而定,一个设备既可以作为主设备,也可以成为从设备。
2. 总线信号 SCSI总线包括并行数据线和控制信号线。并行数据线用于传输命令、消息、状态、数值等,控制信号线控制总线操作的时序变化、阶段更迭等活动。 SCSI-1是8位数据总线传输,有单端信号和差分信号两种传输形式,两者采用相同的传输线:50芯扁平电缆或25对双绞线电缆,称为A电缆,定义的信号线有18条:9条控制线、8条数据线和1条奇偶校验线,如图8-28所示。 SCSI-2用于超过8位宽度的数据传输,在A电缆之外再加一根68线的B电缆。B电缆是68芯扁平电缆或34对双绞线电缆,包括DB0~DB7之外的DB8~DB31及相应的奇偶校验信号P1~P3,见下图。 数据线如下: DB0~DB7、DB8~DB31:并行传输数据、命令、状态等。 DBP、DBP0~DBP3:总线校验位,DBP/DBP0对应DB0~DB7的校验位,DBP1对应DB8~DB15的校验位,余类推。
控制信号如下: BSY:忙(Busy),为真表示该SCSI设备处于“忙”状态,DB总线被占用,由起始端或目标端设置,各设备“或连”。 SEL:选择(Select),主设备用来选择目标设备,以执行一条命令;或断开连接后由目标设备重新选择主设备,恢复原先由起始端启动而被目标端挂起的操作。有关设备“或连”。 REQ:请求信号(Request),由目标设备置为真,用来请求进行一次数据传输。 ACK:应答信号(Acknowledge),起始端响应目标端的REQ请求,由主设备置为真。 REQB:与REQ信号功能一样,在B电缆中。 ACKB:与ACK信号功能一样,在B电缆中。 ATN:注意信号(Attention),起始端用来通知目标端,它有消息要传送,由主设备驱动为真。 MSG:消息(Message),目标端用来向起始端表示正在传送的信息是消息。 I/O:传输方向(Input/Output),目标端用来控制数据线上数据传输的方向。 C/D:命令/数据(Control/Data),目标端用来表示数据总线上传输的是控制类信息(命令、状态或消息,C/D=1)还是数据信息(C/D=0)。 RST:复位(Reset)信号,用来使总线回复到初始状态。 其它信号包括: TERMPWR:终端电源(Terminator Power),SCSI设备外部电源供电电路接入线。 TERMPWRB:与TERMPWR端功能一样,在B电缆中。 GND:地线(Ground)。
3. SCSI总线操作 (1) 总线状态 SCSI总线连接多主系统,总线上连接有多个主控制器和SCSI设备。任何设备使用总线要经仲裁,获得总线的设备先要进行选择(或重新选择)来确定目标端,然后在起始端和目标端之间传送信息(包括命令、数据、状态和消息等)。 因此SCSI总线状态有空闲期、仲裁期、选择(或重新选择)期、信息传输期,其流程如下图所示。
(2) SCSI工作过程 上电或复位,总线进入空闲期,所有信号线都无效。 当有一个或多个设备争用总线时,进入仲裁期。每个设备有一个唯一的标识号ID,并与数据总线中的一条相对应连接(因此SCSI设备数不能超过SCSI总线的位数),每个ID的优先级确定:0最小,31(或15或7)最大。经仲裁,高优先级设备获得总线使用权,其他设备退出。 获得总线的设备为主设备,成为起始端,启动SEL进入选择阶段,在对应的两条数据线上使自身ID和目标端ID有效,选中目标端设备。在BYS和I/O信号协调下,目标端识别ID。 接着,目标端使C/D信号为“C”,进入命令阶段。目标端使REQ有效,请求起始端发送命令的第一个字节(操作码)。起始端和目标端使用REQ/ACK握手信号传送命令的操作代码及其后的附加字节。 目标端接受和解释命令后,使C/D信号为“D”,使总线处于数据传输阶段,并启动I/O线,在起始端和目标端之间用REQ/ACK握手信号线协调在数据线上传输数据。 所有的请求数据传输之后,目标端使C/D信号为“C”,把状态字节传送到起始端。 最后,目标端使MSG信号有效,总线处于消息输入阶段,传送命令完成的有关消息。起始端收到消息字节,释放总线,使总线处于空闲状态。 SCSI默认的传输方式是异步传送。在数据输入和输出阶段,SCSI也支持同步传送。同步传送的系统开销较少,发送端在得到接收端对REQ的响应后,能发送一个连续的字节(或字)流。
(3) 消息 发送端和接收端之间交换消息,以此来管理SCSI接口。消息有单字节、双字节和多字节三种格式。常用的消息例子有: ● 命令完成:目标端送到发送端,表示一个命令的终止/有效状态已发给起始端。 ● 断开:目标端送到起始端,表示连接被中断。 ● 起始端检测到错误:起始端送目标端,目标端须重新操作。 ● 终止:起始端送发送端,消除当前操作。 同步数据传输:在起始端和目标端交换信息,建立同步数据传输。 (4) 命令 不管如何连接,以及连接的对象(特性、结构)怎样,SCSI都具有相同的物理特性和逻辑特性,SCSI自身具有与设备、主机无关的高级命令系统。 SCSI协议的核心和重点是SCSI命令集。命令包括从目标端读数据、向目标端写数据,以及适合特定外设的操作。每条命令都是由起始端发送、使目标端产生某些相应动作。SCSI命令集提供了一种标准方法用来处理连接到个人计算机和工作站上的各种公共设备,并简化在主机系统中编制I/O程序的任务。
命令在命令描述块(CDB)中定义。CDB由6~11个字节组成,包括操作代码(一个字节)、逻辑单元号(标识一个连接到目标端的物理设备或虚拟设备)、逻辑块地址(2~4个字节,读/写的逻辑起始地址)、传送长度(1~4个字节,指定传送逻辑块的数目,这些逻辑块相连)或参数列表长度或分配长度(指定起始端为返回数据而分配的最大字节数),以及连接的控制。 起始端在数据总线上将CDB传送到目标端,并开始执行命令。执行命令包括如下一些步骤:目标端获得命令并对其译码——数据传输(送到目标或从目标读出,或不执行此步)——目标端产生并回送状态信息。 SCSI命令大多数用于具体设备。SCSI-2标准包括如下设备类型的命令:处理器、通信设备、直接存取设备、顺序存取设备、打印机、一次写设备、只读光盘、扫描仪、光存储设备、媒体转换设备等。 SCSI有17条命令适用所有类型设备,其中有4条是所有设备必须执行的强制命令: 查询:请求目标端及其所连外设向起始端发送有关参数; 读请求:请求目标端将读出的数据(错误信息、定位信息、逻辑状态等)传送到起始端; 发送诊断:请求目标端对自己或所有控制的外设作出诊断; 测试单元就绪:报告检测逻辑单元是否就绪。
8.6.3 IEEE-488总线 IEEE488由HP公司于1972年开发出来,称HP接口总线HP-IB,1975年美国电气电子学会据此制定了程控设备标准接口总线GP-IB,即IEEE-488,1977年被国际电气标准委员会IEC认定为国际标准,称IEC-IB。IEEE-488给程控设备研发和按需灵活配置各种控制系统带来较大方便,被广泛采用。 (1) IEEE-488总线特性 ● 数据在标准总线上 按字节(8位)并行传输,字节之间以三线应答方式异步传送, 数据传输速率可按设备设定,最高不超过1MB/s。 ● 总线信号电平采用负逻辑,逻辑电平与TTL兼容,即逻辑“1”电平≤0.8v,逻辑“0” 电平≥2v。 ● 总线上挂接的设备数不超过15台。 ● 电缆总长度小于挂接的设备数×2(米),最长不得超过20米。任何两个设备之 间的电缆长度不得超过4米。 (2) 总线电缆接头与连接方式 IEEE-488电缆的接头是既有插头又有插座的组合式插头座。它有两种标准:GP-IB采用美国57系列24针/脚插头座,IEC-IB采用欧洲F161系列25针/脚插头座,如图8-30所示。
因为有两种不同结构和引脚排列的插头座,又产生了两者之间的转换插头座。 IEEE-488总线插头座插入仪器设备的IEEE插座时,它本身所带的插座又可供其它电缆插头插入,这样每个设备只要装配一个IEEE-488插座,利用两头带有组合插头座的电缆线,就可把各个设备按串联方式或者星型方式连接成系统。
(3) IEEE-488总线接口结构 IEEE系统中每个设备按如下三种方式中的一种或几种工作。 “听者”方式:从数据总线上接收数据。同一时刻可以有多个听者在工作。 “讲者”方式:向数据总线发送数据。总线上可以有多个讲者,但同一时刻只能有一个讲者工作。 “控者”方式:响应总线设备的服务请求,对总线设备进行初始化,控制总线上设备的工作方式和数据传送操作。系统中可以有不止一个控者,但任一时刻只能有一个控者工作。 总线上的设备都被分配有唯一的地址,控者可根据需要选择一个讲者和几个听者。 IEEE-488总线有24条信号线(IEC-IB有25线),其中8条数据线、3条控制数据传送的握手联络线、5条接口管理线和8条地线(IEC-IB为9条)。各信号线的名称和总线结构如下图所示。
如图所示,显示器/打印机/绘图仪只能作“听者”,键盘/扫描仪/读入设备/某些测量仪器只能作“讲者”。磁盘驱动器/磁带机/辅助计算机等既能作“讲者”,又能作“听者”。主控器则既能作“控者”,又能“讲”也能“听”。
IEEE-488总线数据传输采用异步应答方式,以三条应答联络线来控制字节的传送。只有当全部“听者”都准备好了以后,“讲者”才开始发送数据;只有当全部“听者”都把数据接收完毕后,“讲者”才撤消数据线上的信息。速度不同的设备能在此系统中协调工作。 控制数据传输的三条联络线为NRFD、DAV和NDAC,以这三条线上的电平变化来完成握手应答过程。 未准备好(NRFD)线:各“听者”用OC(集电极开路)门“线或”(负逻辑)到NRFD线上,只要有一个“听者”未作好接收数据的准备工作,NRFD就为1(低电平),“讲者”便不能发送数据。只有当全部“听者”都准备好之后,NRFD才变为0(高电平),让“讲者”发送数据。 数据有效(DAV)线:“讲者”把数据送上数据线并且稳定后,使DAV=1(低电平),通知“听者”接收数据。 未收到数据(NDAC)线:各“听者”用OC门“线或”到NDAC线上,只要有一个“听者”未接收完数据线上的信息,NDAC就为1(低电平),示意“讲者”不要撤掉数据线上的信息。只有当最慢的“听者”接收完数据,NDAC才变为0(高电平),通知“讲者”撤消数据,结束本次传送。 数据线8条,双向,用来传送数据、设备地址和指令。
接口管理线5条,对接口和设备进行控制和管理。 IFC 接口清除线:控者发出。为1(低电平)将各设备置于初始状态。 ATN 注意线:指示数据线上信息的类型。为低电平表示数据线上传送的是接口信息,如有关的指令、设备地址等,用来管理接口本身,总线上所有的讲者和听者必须听取并执行之,由控者发出;为高电平表示数据线上传送的是设备信息,包括规定仪器设备固有功能的命令和仪器设备的测量参数,由讲者发出听者接收。 SRQ 服务请求线:所有听者和讲者的SRQ端都“线或”在一起,向控者提出服务请求。例如控者为微机,则SRQ线与微机系统的中断请求端(8259A的INi端)相连,微机通过执行中断服务子程序为请求对象服务。 REN 远程允许线:REN为1(低电平),可通过系统接口对所接设备进行遥控(设备本身的面板控制开关不起作用)。 EOI 结束或识别线:ATN为“0”,讲者驱动EOI为“1”表示已传送完毕一个字节;ATN为“1”,控者驱动EOI为“1”,命令各设备把它们的状态放到数据总线上,供控者查询,以便识别哪个设备需要服务。 IEEE-488总线上传送的控制信息包括两大类:接口信息和设备信息。 设备信息未做统一的规定,由各厂家自行确定,以适应设备的多样性。 为保证通用性,IEEE-488对接口信息做了统一的规定。接口信息有单线传送的,分别用三条传送控制线和五条接口管理线中的一条或几条来传输;有多线传送的,用8条数据线来传输。多线传送的接口信息有三项:地址(包括听者地址、讲者地址、实现不同功能的辅助地址等)、通令(发给所有设备的通用指令)和指令(专门发给听者的命令)。接口信息编码此处从略。
8.6.4 构成系统的其它总线 在模块式结构计算机内,系统总线用来连接构成计算机系统的各个模块和插件板,插件板可以是系统中各个主CPU板,或者是系统的共享资源模板,或者是某块CPU板的局部资源模板。构成系统的常用总线除上述的外,还有S-100总线、MULTibusⅠ及MULTibusII、STD bus、VME bus和Future bus等,它们的主要规格列于下表。
STD总线在工业测控系统中获得广泛应用,STD即Standard Bus,是一种面向工业控制、规模小而设计周密的系统总线。1978年由美国Prolog公司公布(8位),1985年公布了STD1.3版本,允许16位传送;1987年定为IEEE961标准;1989年公布STD32,可实现8位、16位、32位数据传输。我国1984年10月引进STD总线技术,九十年代以来,增加了汉字功能,并将STD总线技术与PC/AT相结合,生产PC/AT的STD总线兼容机,获得广泛应用,为发展我国总线-模板式测控系统作出了贡献。 8位STD总线有56根信号线,划分为四组:双向数据总线8根、地址总线16根、控制总线22根,以及电源线10根(其中逻辑电源线6根、辅助电源线4根)。56根引脚的定义如下表所示。 在16位STD总线中,A15~A8复用为数据线,和原先8根数据线合并复用为16位数据线;D7~D0复用为地址线,和原先16根地址线合并复用为24位地址线,实现对16MB存储器空间的寻址。 STD32有114根信号线,其中数据线和地址线宽各为32位。 STD总线支持多处理器系统,可实现分布式、主从式及多主STD总线多处理器系统,以同步方式传输数据。 上世纪九十年代以来,STD系统采用局部总线技术,在主模板上设置iSBX(IEEEP959标准)局部I/O总线接口,使大部分高速I/O操作绕过STD系统总线,极大地节省了STD总线带宽,STD总线还吸收了高速串行通信技术,用来实现STD总线测控系统局域网。 STD模板尺寸为11.4cm×16.5cm,是总线-模板式测控系统中最小的,机械强度高、抗振动、耐冲击,可靠性高。 STD总线技术在国内外都已发展到成熟阶段。在测控领域,其主要竞争对手是PC/XT、PC/AT总线。
本 章 小 结 总线是计算机系统组成基础,须正确理解总线的分级结构与Pentium机各级总线的作用。 了解总线仲裁和数据传输方式; 本 章 小 结 总线是计算机系统组成基础,须正确理解总线的分级结构与Pentium机各级总线的作用。 了解总线仲裁和数据传输方式; 掌握 ISA总线,了解常见的PC总线标准; 掌握PCI总线结构特点和主要信号线,以及PCI总线命令和数据传输机制; 熟悉AGP接口的特点和应用, 正确理解3GI/O标准PCI Express总线。 正确认识、熟悉广泛使用的IDE、EIDE总线和SCSI总线,了解其它的外部总线。