计算机组成原理-系统总线
-
总线的基本概念
总线连接:把计算机的五大部件连接到一组公共信息传输线上
总线:连接多个部件的信息传输线,是各部件共享的传输介质,实际上由许多传输线或者通路组成,每一条传输线可以一位一位的传输二进制代码
-
总线的分类
按照传输方式:串行传输总线,并行传输总线
按照传输数据宽度:8,16,32,64位等
按照使用范围:计算机总线,测控总线,网络通讯总线
按照连接的部件不同来介绍总线:
-
片内总线
指芯片内部总线,如在CPU内部,连接寄存器和寄存器,寄存器和ALU单元
-
系统总线
指CPU,I/O设备,主存各大部件之间的信息传输线。
数据总线:传输各功能部件之间数据信息,双向传输总线,位数和机器字长,储存字长有关,数据总线位数称为数据总线宽度,衡量系统性能的重要参数
地址总线:用来传输数据总线上源数据或目的数据所在的地址,地址信息由CPU单向输出,储存单元个数与地址线位数紧密相关。有20根地址线的主存有2^20个储存单元
控制总线:数据总线和地址总线都是被挂在上面的部件共享的,控制总线上传输的控制信号,让各部件在不同时刻对总线有控制权
-
通信总线
用于计算机系统之间和计算机系统和其他系统之间的通信。传输速率和传输距离成反比。并行传输的速率远大于串行传输,但是并行传输的成本很高,所以在长距离的传输中,一般用串行传输
-
总线特性以及性能指标
机器特性:总线在机械连接方式上的特性
电气特性:规定总线上每一条传输线上信号的传递方向和有效电平范围。值得注意的是RS-232C的电平信号是反逻辑的,即低电平为1,高电压为0
功能特性:指定每根传输线的功能,如地址线传输地址码
时间特性:指总线上传输线的信号在什么时间内有效
-
总线结构
总线宽度:总线传输线根数
总线带宽:每秒钟传输的数据位数或者字节数。eg. 工作频率为100MHz, 线宽为32位的总线,带宽为:100M*32/8B/1s = 400MBps(兆字节每秒)
时钟同步/异步:数据传输是否与时钟信号同步
总线复用:一条总线上是否传输两种信号。通常地址总线和数据总线是复用的,在不同的时间,总线传递不同的信号
信号线数:地址总线, 数据总线, 控制总线三者总线的线数之和
其他指标:如负载能力,电源电压等。 总线的负载能力就是驱动能力,当总线接上负载后,总线的输出逻辑电平是否能保持在额定范围之内
-
总线标准
总线标准就是,系统和各模块之间,模块和模块之间的一个相互连接的标准界面。这个界面对两端的模块都是透明的,即界面的任一方只需要根据总线的标准完成各自的接口功能需求,而无需知道对方接口与总线的连接需求,所以总线标准设计的接口可以视为通用接口
几种常见的总线标准
ISA总线:(industrial standard architecture)工业标准构架总线,采用独立于CPU的时钟频率,所以能采用比总线频率更高的时钟,有利于CPU性能提高,没有支持总线仲裁的硬件逻辑,因而不支持多台主设备系统,且所有数据传输必须经过CPU或者DMA接口来管理,因此CPU花费大量时间来控制与外部设备交换数据。工作频率为8MHz,数据线16位,地址线24位
PCI:由于带宽的限制,ISA标准不适合在GUI和多媒体中应用。(peripheral component interconnect)外围部件互连。
高性能:不依附于某个具体处理器的局部总线,为系统提供一个高速的数据传输通道,采用33MHz或者66Mhz的总线时钟,数据线为32位,可以扩展到64位。支持突发工作,这种方式是指被传输的数据在主存中如果连续存放,访问这些数据的时候,只需要给出第一个数据地址,占用一个时钟周期,其后每个数据的传送各占一个时钟周期,不必每次给各个数据地址,从而提高传输速率
良好的兼容性:总线部件和插件接口相对于处理器是独立的,支持所有现在和将来不同结构的处理器,有相对长的生命周期
支持即插即用(plug and play):任何扩展卡只要插入系统就可以工作
支持多设备能力,提供数据和地址奇偶校验功能,支持两种电压,扩充性好,采用多路复用。。。
RS-232C:由美国电子工业协会(EIA)推荐的一种串行通信总线标准,用于串行二进制交换的数据终端设备和数据通讯设备。
USB总线:(universal serial bus)通用串行总线,基于通用连接技术,实现外设的简单快速连接,达到方便用户,降低成本,扩展PC外设的目的。具有真正的即插即用的特征,相信大家在日常生活中有这样的感受;有很强的连接能力,一般的电脑可以连接127个外设,通过hub你可以在你的电脑上连接更多的外设;USB1.0,采用无屏蔽的双绞线,传输速度达1.5Mbps,若采用屏蔽双绞线,可以达到12Mbps,USB2.0的传输速度可达480Mbps;标准统一,usb标准的引入减轻了目前PC对所有标准接口的需求,我们日常用的鼠标,键盘,打印机都可以用usb标注接入系统,从而减少对PC插槽的需求;连接电缆轻巧,电源体积小。usb采用4芯电缆,两条用于信号连接,两条用于电源和接地,可以给外设提供5V的直流电流;生命力强,开放性的不具有专利版权的工业标准
以上几种总线标准的详细内容大家可以在网上做进一步了解
-
总线控制
总线判优控制:按照总线上的设备对总线是否有控制功能可以分为主设备和从设备两种。主设备对总线有控制权,从设备只能响应主设备发来的的总线命令,对总线没有控制权。总线上的信息的传送是由主设备启动的,如某一个主设备要和一个从设备通信,首先由主设备发出总线请求信号,若多个设备要同时使用总线,就由总线控制器的判优,仲裁逻辑按照一定的优先等级顺序决定哪个主设备能使用总线,只有获得总线使用权的主设备才能开始传输数据。常见的仲裁方式有一下几种
- 链式查询,控制总线有三根用于总线控制,分别为BS(总线忙),BR(总线请求),BG(总线同意),其中BG信号是串行的从一个IO设备从上一个传输到下一个,如果BG新到到达的接口有总线请求,BG信号就不再继续向下传送,以为该接口获得使用权,并且建立BS信号,表示系统总线已经被占用。这种方式用很少的线就能实现,但是对电路故障很敏感,并且优先级低的设备很难获得总线使用权
- 计数器定时查询,总线控制部件接收到BR送来的请求后,在总线未被使用(BS=0)的情况下,总线控制部件中的计数器开化寺记数,并且通过设备地址线发出一组地址信号,当某个请求占用总线设备的地址和计数器的值一致的时候,获得总线使用权。这种方式对电路故障的敏感不如链式查询,但是控制线增多,控制更加复杂。
- 独立请求方式,每一台设备都有一对BR和BG信号线。设备需要使用总线的时候就发出BR信号,总线控制部件中有排队电路,根据优先次序确定响应那一台设备的请求。这种方式的响应速度快,优先次序控制灵活,但是控制线很多,总线控制复杂
链式查询只需要2条线确定使用权属于哪个设备,记数查询中大概用log2n条线(近似地址线的条数,实际还有BR,BS),独立请求方式需要2n条线,n是设备数 量
总线通讯控制:众多部件共享总线,在争夺总线使用权时,应按照各部件的优先级来解决。在通讯时间上,分时方式来处理,即以获得使用权的先后顺序分时占用总线,即哪一个部件获得使用权,此时就由它传送,下一部件获得使用权,接着下一时刻传送。通常完成一次总线操作的时间称为总线周期,可以分为四个阶段
- 申请分配阶段:需要使用总线的主模块提出请求,经总线仲裁决定下一传输周期的总线使用权属于哪一个申请者
- 寻址阶段:取得使用权的主模块通过总线发出本次要访问的从模块的地址以及有关命令,启动参与本次传输的从模块
- 传输阶段:主模块和从模块进行数据交换,数据由源模块发出,经过总线流入目的模块
- 结束阶段:主模块有关信息均从系统总线上撤除,让出总线控制权
总线通信控制主要解决通信双方如何获知传输开始和传输结束,以及双方如何配合。通常有四种通讯方式
- 同步通信:通信双方由统一时标控制数据传送,时标通常由CPU的总线控制部件发送到总线上所有的部件,也可以由部件各自的时序发生器发出,但必须由总线控制部件发出的时钟信号对他们进行同步。一个同步通信周期包括四个时钟信号T1,T2,T3,T4,总线传输周期是连接在总线上的两个部件完成一次完整且可靠的传输时间。CPU在T1上升沿发出地址信息,T2上升沿发出读命令,与地址信号相符合的输入设备按命令进行一系列操作,T3上升沿来领之前将CPU所需要的数据送到数据总线上,T4上升沿撤销读命令,输入设备不再送数据,撤销其对总线的驱动。 写操作,类似详细过程可以看时序图。同步通信的优点是规定明确统一,模块间的配合简单一致。缺点是主从模块时间配合属于强制性同步,必选在限定时间内完成规定要求,对于速度不同的部件来说,必须按照速度最慢的部件来设计公共时钟,严重影响工作效率。同步通信一般用于总线长度短,各部件存取时间比较一致的场合
- 异步通信:允许各模块速度不一致,给设计者灵活的选择。采用应答方式,当主模块发出请求时,一直等待从模块反馈响应后,才开始通信。 异步通信分为不互锁,半互锁,全互锁三种方式。 不互锁方式:主模块发出请求后,不要要等到从模块的应答信号,而是经过一段时间后就撤销请求信号。CPU向主存写数据就常用这种方式; 半互锁方式:主模块发出请求后,必须等到从模块的应答信号后再撤销请求信号。但是从模块再发出应答信号后,等一段时间就撤销应带信号。这种方式常用于多机系统中,CPU访问共享内存,CPU在收到共享内存未被占用的信号后才能访问内存; 全互锁方式:主模块发送请求后,必须收到从模块的应答信号才能撤销自己的请求信号,同样从模块在接受到主模块对自己发出的应答信号的响应后才能撤销自己的应答信号。这种方式常用于网络通信中,比如TCP的握手协议。 因为异步通信没有同步时钟,为了区分一个数据帧,就必须在数据的首位加上标志来区分。常用的方式是在数据前加以为的信号的起始位,在数据尾部添加以为奇偶校验位,以及1位,1.5位,或者2位高电平信号的终止位。还可以在终止位后面添加高电平的空闲位。因为数据的后面全是高电压,当接受到一个低电平,即起始位,就可以标志有新的数据传来。 异步通信的数据传送速率是用波特率来衡量的。波特率是指单位时间内传送二进制数据的位数,单位用bps来表示记作波特。比特率用来衡量串行通信的数据传输速率,即单位时间内传送二进制有效数据位数,即不包括起始位,奇偶校验位和终止位
- 半同步通信:这种方式具有同步通信和移步通信的特点。所有的地址,命令,数据帧的发出时间都严格参照系统时钟的某个前沿开始,而接收方都采用系统时钟后沿来进行判断识别;同时又像异步通信那样允许不听速度的模块和谐的工作,为此增加一条“等待”响应信号线,采用插入时钟周期的措施来协调双方的配合问题。以上面同步通信的输入位例,T1,T2都和上面一样,区别在T3时刻,如果从模块工作速率较慢,无法在T3时刻提供数据,则必须在T3来领之前通知主模块,给出“等待”信号。如果主模块在T3来时刻测得“等待”信号为低电平,就插入一个等待周期Tw(宽度和时钟周期一致),不立即从数据线上取数据。若下一个时钟周期“等待”信号任然为低电平,重复上一步操作,直到“等待”信号为高电平,主模块把此刻的下一个时钟周期当做正常的T3周期。 半同步通信适用于系统工作速度不高但又包含了许多工作速度差异较大的各类设备组成的简单系统。半同步通信控制方式比异步通信简单,在全系统内各模块又在统一的系统时钟控制下工作,可靠性高,同步结构较方便。缺点是对系统时钟频率不能要求太高,所以整体上来看,系统的工作速度不是很高
- 分离式通信:以上三种方式都是从主模块发出地址和读命令开始,直到数据传输结束。在整个传输周期中,系统总线的使用权完全由占有使用权的主模块和由他选中的从模块占据。进一步分析读命令传输周期,发现除了申请总线这一阶段外,其余时间花费在如下三个方面。 1.主模块通过总线向从模块发送地址和命令 ; 2.从模块按照命令进行读数据的必要准备; 3:从模块经数据总线向主模块提供数据 由2可以发现,对系统的总线而言,该过程中没有任何数据传输,总线属于空闲等待。为了提高总线的利用率,基本思想是把一个传输周期分解为两个子周期。在第一个周期中,主模块获得总线使用权后将命令,地址以及其他相关信息,包括该主模块编号(当有多个主模块的时候,这个编号很重要)发到系统总线上,经过总线传输后,从模块把相关信息接收下来,主模块向系统总线发布这些信息只占用总线很短的时间,一旦发送完,立即放弃总线使用权,以便其他模块使用。在第二个子周期中,当从模块收到主模块的相关命令信息后,经过一系列的操作,将主模块需要的数据准备好,从模块申请总线使用权一旦获准,从模块就把主模块的编号,从模块地址,主模块需要的数据等一系列信号送到总线上,供主模块接受。很明显上面的了两个传输子周期都只有单向的信息流,每个模块都成了主模块。 这种通信方式的特点如下: 1.各模块想占用主线使用权都必须提出申请; 2.在获得总线使用权后,主模块在限定时间内向对方传送信息,采用同步方式传送,不再等待对方的回答信号; 3.各模块在准备数据的过程中都不占用总线,让总线可以接受其他模块请求; 4.总线被占用的时候都在做有效的工作,或者通过它发送命令,或者通过它传送数据,不存在空闲等待时间,充分地利用了总线的有效占用,从而实现总线在多个组从模块间进行信息交叉重叠并行传送,这能有效的提高速率。但这种控制方式比较复杂,一般在普通计算机中很少使用
3.4总线结构没有看,不过我觉得不是很重要