文章目录
- 第三章 系统总线
- 3.1、总线的基本概念
- 一、为什么要用总线
- 二、什么是总线
- 三、总线上信息的传送
- 四、总线结构的计算机举例
- 1、单总线结构框图
- 2、面向CPU的双总线结构框图
- 3、以存储器为中心的双总线结构图
- 3.2、总线的分类
- 1、片内总线
- 2、系统总线
- 3、通信走线
- 3.3、总线特性及性能指标
- 一、总线物理实现
- 二、总线特性
- 1、机械特性
- 2、电气特性
- 3、功能特性
- 三、总线的性能指标
- 四、总线标准
- 3.4、总线结构
- 一、单总线结构
- 二、多总线结构
- 1、双总线结构
- 2、三总线结构
- 3、三总线结构的又一形式
- 4、四总线结构
- 三、总线结构举例
- 1、传统微型机总线结构
- 2、VL-BUS局部总线结构
- 3、PCI总线结构
- 4、多层PCI总线结构
- 3.5、总线控制
- 一、总线判优控制
- 1、基本概念
- 2、链式查询方式
- 3、计数器定时查询方式
- 4、独立请求方式
- 二、总线通信控制
- 1、目的
- 2、总线传输周期
- 3、总线通信的四种方式
- (1)同步式数据输入
- (2)同步式数据输出
- (3)异步通信
- (4)半同步通信(同步、异步结合)
- (5)分离式通信
第三章 系统总线
3.1、总线的基本概念
一、为什么要用总线
二、什么是总线
总线是连接各个部件的信息传输线,是各个部件共享的传输介质
三、总线上信息的传送
四、总线结构的计算机举例
1、单总线结构框图
单总线会出现多个部件的挣用
2、面向CPU的双总线结构框图
采用双总走线,相比单总线结构,实际上是在CPU和主存上专门连接了一条总线,CPU运行程序的时候,指令来自于主存,所以CPU和主存之间的交换是非常繁忙的,在CPU和主存上专门连接了一条总线是一个非常好的思路,但这样的走线也存在着问题,假设在外部设备和主存之间进行传输的话,它们之间没有信息通路,只能以中央处理CPU作为媒介,而这种信息传输频繁的话中央处理器CPU计算的任务、执行程序的任务还是会被打断。把这种结构再进行改造如下。
3、以存储器为中心的双总线结构图
CPU和主存之间有一条存储总线,主存和外部设背进行交换信息的话,可以通过系统总线,CPU也可以通过系统总线,和双总线相比就更进了一步,但是面向现代技术,通过情况下这两条总线不能同时工作。虽然有双口存储器,但是双口存储器送信息的时候还是分时来做的。随着将来的发展,系统的效率会进一步得到提高。
3.2、总线的分类
1、片内总线
芯片内部的总线
2、系统总线
计算机个部件之间的信息传输线
数据总线:如果这条走线上传输的数据信号,那么我们把这样的走线叫做数据走线,一般来说,数据走线是双向的,与机器字长、存储字长有关,但我们不能说数据走线的宽度一定和机器字长、存储字长是相等的,通常情况下,走线的宽度是小于等于机器字长或者是存储字长,比如说,一台64位的计算机,它的数据走线的宽度你可以把它做成8位,要想完成一次64位的运算,传输一个64位的数据,传到CPU当中去的话,那我们要进行8次,双向是因为有些是需要把数据送到CPU当中,有时候我们是需要数据信息送到外部设备当中,存储器当中,一般来说数据线都是双向的。
地址总线:只要有地址才能找到相应的存储单元或者是相应的设备,通常情况下地址走线是单向的,由CPU发出,主设备发出,地址走线的条数一般情况下是和IO,存储地址是有关系的,要对IO寻址,存储地址寻址,通常情况下地址走线条数和地址单元的个数是相关的,在这个模型当中,地址总线的宽度和MAR寄存器的宽度是一样的。
控制总线:向系统的各个部件传输控制信号,或者系统的各个部件把它们自己的状态信号向外进行传输,告诉主设备,这个方向有出有入,比如说发存储器的读操作,写控制,这个就有CPU发出的,告诉设备是读数据还是写数据。还有些信号是输入的,比如中断信号,IO端口送给CPU,总线请求,也外部设备送给CPU。
这是CPU内部的走线,计算机内部的走线,范围扩大,就是通信走线。
3、通信走线
用于计算机系统之间或计算机系统与其他系统(比如控制仪表、移动通信等)之间的通信。
3.3、总线特性及性能指标
一、总线物理实现
为了CPU、主存和IO插板与主板连接,总线需要一些特性
二、总线特性
1、机械特性
尺寸、形状、管脚数以及排列顺序
2、电气特性
传输方向和有效的电平范围
3、功能特性
每根传输线的功能
● 地址
● 数据
● 控制
4、时间特性
信号的时序关系。
三、总线的性能指标
1、总线宽度 数据线的根数
2、标准传输率 每秒传输的最大字节数(MBps)
3、时钟同步/异步 同步、不同步
4、总线复用 地址线与数据线复用
5、信号线数 地址线、数据线和控制线的总和
6、总线控制方式 突发、自动、仲裁、逻辑、计数
7、其他指标 负载能力
四、总线标准
已经被淘汰。
3.4、总线结构
一、单总线结构
二、多总线结构
1、双总线结构
2、三总线结构
3、三总线结构的又一形式
4、四总线结构
高速设备用高速线,地速设备用低速线。
三、总线结构举例
1、传统微型机总线结构
IO走线和系统走线分离
2、VL-BUS局部总线结构
分离出VL-BUS高速走线,在标准总线控制器上又接了ISA、EISA低速走线,做到了高低速分离。
3、PCI总线结构
4、多层PCI总线结构
3.5、总线控制
一、总线判优控制
1、基本概念
● 主设备(模块)对总线有控制权
● 从设备(模块)响应从主设备发来的总线命令
● 总线判优控制
○ 集中式:
■ 链式查询
■ 计数器定时查询
■ 独立请求方式
○ 分布式
2、链式查询方式
设备的连接方式(IO先后)已经确认,如果某一个IO设备的,优先级比较低的话,排得比较靠后,它提出得总线占用请求一直不会得到响应,这是它的优先级特点。速度比较慢,一直要向下查询。另为有一个缺陷,就是电路故障比较敏感,尤其是BG总线同意的这条线,在向下传送的过程当中,如果某一个接口出现了故障,这些信号无法向下传送的话,那么后面这些设备再也无法获得总线同意的使用权。这种电路方式的优点是结构比较简单,优先级和总线仲裁就这3条;还有增加设备比较容易,要增加一个设备,直接放上去就可以了;优先级的算法很简单;另一点是进行可靠性设计的时候比较容易实现,比如把BS这条线换成2条线。用于微型计算机或者简单的嵌入式系统当中。
3、计数器定时查询方式
计数器定时查询,和前面链式查询相似和不同的地方,首先它还是有地址线和数据线,数据线用于数据的传输,地址线用于从设备的查找,另为它还有一条线,叫做设备地址,这种方式名称的来源,叫做计数器定时查询。这上面传输的地址实际上是一个地址给出的,通过这个设备来查找某个设备是否发出请求,另为两个是BR总线忙、BR总线请求。总线的控制过程,总线的控制里面有一个计数器,它的初始值可以是0也可以是1。如果说一个主设备要占用总线,和某一个从设备进行数据传输,它通过BR这条线,提出总线占用请求,总线控制器呢接受总线请求以后,在能够响应的情况下可以让出总线使用权的情况下就会启用这个计数器,这个计数器的值是通过设备地址这条线输出,设备地址线输出以后,比如这个IO的接口是0,就判断它是不是提出了请求,如果它没有提出占用请求的话,就会进行加1,如果IO1提出了占用请求的话,就会通过设备地址相应。它的优点是什么?它的优先级确定非常灵活,你可以确认每次查询计数器都是从0开始,从0~n,这个就确认优先级的顺序,那么我们计数器的不是从0开始启动,从上次停止计数的地方启动,那优先级就变成了循环优先级。如果计数器可以通过软件确认初值的话,比如说设置一个数值k,IO和接口k就变成了优先级最高,与链式相比,少了BG,多了设备地址这条,设备地址多少呢,和设备数有关,它是一个计时,把所有的设备都进行编码,比如n个设备,用二进制编码的话,那这个编码至少需要以log2为底向上的这4条线。
4、独立请求方式
上面方式都是查找那一个设备提出了占用请求,实际上都是按照顺序查找的,这个速度比较慢,独立请求方式就改变了这种方式,它的速度更快,确立那个设备请求占用速度快。
优先级:那个设备比较重要,就在排队器当中设置。不过需要的线更多,每增加一个设备就需要应引出一个BG和BR。
二、总线通信控制
1、目的
解决通信双方(主设备和从设备之间)协调配合问题。
2、总线传输周期
是指主设备和从设备之间完成一次完整的并且可靠的通讯需要的时间。这个过程当中主要解决以下几个问题
申请分配阶段 主模块申请,总线仲裁决定
寻址阶段 主模块向从模块给出地址和命令
传数阶段 主模块和从模块交换数据
结束阶段 主模块撤销有关信息
3、总线通信的四种方式
● 同步通信 由统一时标控制数据传送
● 异步通信 采用应答方式,没有公共时钟标准
● 半同步通信 同步、异步结合
● 分离式通信 充分挖掘系统总线每个瞬间的潜力。
(1)同步式数据输入
首先,给出来时钟、地址、读命令和数据4个信号,在来到第一个时钟周期的上升沿,必须要给出地址信号,这个信号是主设备出的,在我这个例子当中是CPU给出的,在第二个时钟周期的上升沿,必须给出读命令信号,告诉主设备或者CPU要从从模块或者从设备读入出去,在第三个时钟周期上升沿,从模块或者从设备必须要给出数据信号,第四个周期的上升沿,数据信号和控制信号(读命令)就可以撤销了。注意:读命令在低电平发挥作用,高电平不起作用。地址和数据在中间空白地方起作用,阴影部分不起作用。
(2)同步式数据输出
和同步式数据输入一样,要有一个定宽定长的时钟周期,由它控制整个数据输出和输入的过程。我们假设CPU或者主模块要把一个数据要把它输出到某个从设备或者从模块当中去。除了时钟外,还有一个地址信号,才知道要与哪一个从模块传输。要把数据输出到从模块当中去,必须要有一个数据。另外还要进行写操作。在规定的时间做规定的动作:在第一个时钟上升沿,主模块或者CPU要给出地址信号(给出从设备的地址信号),在时钟的下向沿给出数据。在第二个时钟的上升沿,给出写命令,向从设备进行写入。在第三个时钟的上升沿,做写入操作。在第四个时钟的上升沿,CPU可以撤销数据和写命令,结束的时候撤销地址信号。
(3)异步通信
异步通信:设备有主、从设备两种,主设备发起总线通讯,从设备接受总线通讯,受主设备控制。和同步相比,没有定宽定距的时钟,但要增加两条线,一条式请求线,由主设备发出请求设备用,另为一条是应答线,对主设备发出的请求应答。第一种方式叫做不互锁,主设备发出通信请求,从设备接受到请求以后,开始应答,之后主设备撤销请求信号,从设备也撤销应答信号。那么在这个过程当中,不管主设备是否接受到了应答信号,经过一段的延时以后,都会撤销请求信号,从设备也不管主设备是否接受到了应答信号,过段时间也会撤销应答信号。(相当于一个老师提出一个问题,他不管学生听见了没,同学也回答了这个问题,他也不管老师听到没)这样通信的可靠性是有问题的,这便是不互锁方式。第二种方式叫做半互锁,主设备发出请求信号,从设备接受请求信号后,发出应答信号,主设备接受到应答信号后撤销请求,如果主设备没有接受到应答信号,那么这个请求信号会保持,这种方式叫做半互锁方式,(接飞盘方没有接到飞盘的话,会一直喊,让对方把飞盘扔过来,)但是从设备发出应答信号以后,经过一段时间以后它都会撤销应答信号,半互锁有什么问题,有可能主设备的请求信号一直保持高电平(保持请求状态)第三种方式叫做全互锁方式,可以解决半互锁的问题,同样的,主设备或者CPU发出请求,从设备发出请求以后发出应答信号,主设备接受到应答信号后会撤销请求信号,同样的,只有主设备的请求信号撤销以后,从设备才会撤销应答信号,这种方式会完成可靠的数据传输,如果传输过程当中发现数据不互锁、半互锁、全互锁可以让主设备发重新发送或者接受数据,这是异步通讯,利用请求和回答来完成通信。
(4)半同步通信(同步、异步结合)
同步:发送方用系统时钟前沿发信号
接受方用系统时钟后沿判断、识别
异步: 允许不同速度的模块和谐工作
增加一个“等待”响应信号
以输入数据为例的半同步通信时序。
、
假设这个通信过程或走线周期依然是4使用周期。T1上升沿的时候由主模块发出地址,T2上升沿的时候主模块发出命令(读信号),,在正常的情况下,在T3上升沿到来之前,从模块要提供数据放到总线上,T3上升沿主模块开始在总线上接受数据,在T4从模块撤销数据,主模块撤销命令。
那么如果说主模块和从模块之间的速度不一致,比如主模块是CPU,从模块是存储器,CPU可能工作得比存储器工作得要快,在T3上升沿到来之前,从模块无法向主模块提供数据,如果在同步通信过程当中,这样就会出错,那么在T3到来之前,这个从模块要发出wait信号,主模块检测wait信号线,如果检测到wait是一个低电平,主模块就会插入一个T这样一个周期,等待数据得到来,在下一个时钟周期到来之前,主模块还会检测这个wait信号是否位低电平,如果是它还会等待一个周期T,直到一个在某一个周期到来之前,主模块检测wait信号为高电平,从模块准备好了,它可以发送信号,这个时候我们进入T3周期。
半同步通信是同步与异步得结合,首先呢,我们要有一个时钟信号定宽定距的时钟控制了数据的整个过程,这是同步通信的特征。下面了我们假设某一个外部设备或者某一个内存单元当中我们要读数据。CPU呢要先给出一个地址,既然是读数据的话就要给出一个读信号(读命令的信号),外部设备或者内存单元和CPU之间有速度差异,在时间点上可能无法提供给CPU需要的数据,外部设备有一条线,给出一个wait信号让CPU等待数据的到来,另外就是数据线,数据线有了之后由外部设备或者由内存发出,传送给CPU。
第一个时钟信号上升沿,CPU通过地址走线要给出地址信号,在第二个周期到来的时候,是读操作,CPU给出读信号,在第三个周期开始之前,如果从设备不能把数据准备好,那么它要通过wait信号给出一个低电平,告诉CPU让它等待,CPU对wait信号一直检测,wait是低电平说明外部设备是没有准备好数据,那么插入一个周期Tw等待,在下一个周期开始之前Tw依然要检测整个wait信号,wait信号是低电平依然要插入一个周期Tw进行等待,在下一个周期前,我们发现wait已经变成了高电平,着说明外部设备已经准备好了CPU需要的数据,就可以进入到T3周期,在T4周期开始的时候,读命令信号和读命令信号从总线上撤销,T4个使用周期结束地址信号也撤销,那么这次半同步通信就结束了,这就是半同步通信传输,这种方式允许不同频率的主从设备进行信息交换。
上述三种通信的共同点
一个总线传输周期(以输入数据为例)
● 主模块发地址、命令 占用总线
● 从模块准备数据 不占用总线 总线空闲
● 从模块向主模块发数据 占用总线
总线在传输过程当中空闲对总线来说是一种浪费资源,有没有办法把空闲时间用上,这就是下面这个办法——分离式通信。
(5)分离式通信
充分挖掘系统总线每个瞬间的潜力
一个总线传输周期
● 子周期1:主模块申请占用总线,使用完后 即放弃总线的使用权
● 子周期2: 从模块申请占用总线,将各种信息送至总线上。
解释:我们把一个总线的传输周期分成两个子周期。在第一个子周期,主设备发出地址,发出命令占用总线。地址和命令发送以后,主设备和总线之间的连接断开,主设备放弃总线的使用权。这个周期结束以后,从设备准备数据接收或者是准备要发送的数据。如果从设备已经准备好了接收或者准备好了要发送的数据。那么从设备要再一次发出占用总线的请求,在这个时候,这个从模块实际上已经从从模块变成了主模块,因为他发起了总线的占用请求。分成两个周期实际上就把我们刚才的那个总线传输周期当中中间的一部分,即设备或者模块准备数据的这个过程的总线使用权让出,以提高总线资源利用率。
例子:比如一个硬盘它挂在通道上,在执行程序过程当中,我们要从硬盘读数据或者读程序,读数据或者读程序对硬盘有三种操作。第一个操作称为定位,寻找一个指定的磁道这个时间,要寻找磁道的话,这个磁头要在硬盘的表面进行径向地移动,移动到指定的磁道上去,这个时间是比较长的,一般来说需要几十个ms。第二个操作就是磁头找到了指定的磁道以后,还要找指定的扇区,磁头停止在磁道表面,针围绕一个在围绕一个轴进行转动,我们假设是一个500转的一个磁盘,那么等待磁头转到一个指定的扇区,平均时间大概是6s左右,然后才能开始读数据,假如33兆字节/s,大概是512个字节,我们只需要几微秒就能把数读出来。
在这个过程当中,我们采用半步式通信方式的话,通道发出这个磁盘的读操作到一直读完的时间,实际上大部分时间,几十毫秒的时间,这个总线处于等待状态,等待磁头要找的磁道,等待磁头要找到指定的磁道才能开始,那如果我们采用分离式方式的话,通道发出定位之后,通道和总线都断开,那么硬盘的控制器由它控制磁盘完成定位操作,它完成定位操作以后,并从设备向通道发出清求,通道呢,再次给它发送找扇区的操作,找扇区的操作找到以后,硬盘控制器再次向通道发出请求,通道再去进行数据传输,这个过程我们可以看到充分利用总线的每一次的瞬间,主模块可以变成从模块。todo
分离式通信特点
● 1、各模块有权申请占用总线(主模块申请,从模块可以变成主模块,然后申请)
● 2、采用同步方式通信,不等对方回答。
● 3、各模块准备数据式,不占用总线
● 4、总线被占用时,无空闲