指点成金-最美分享吧

登录

3-系统总线

佚名 举报

篇首语:本文由小编为大家整理,主要介绍了3-系统总线相关的知识,希望对你有一定的参考价值。

【README】

1.本文总结自B站 《计算机组成原理(哈工大刘宏伟)》的视频讲解,非常棒,墙裂推荐;

2.补充:冯洛伊曼计算机由5大部分组成

  • 1.    运算器
  • 2.    控制器
  • 3.    存储器
  • 4.    输入设备
  • 5.    输出设备

3. 总线定义连接各个部件(上述5个部件)的信息传输线,是各个部件共享的传输介质;

4.在某一时刻只允许有一个部件向总线发送信息,但多个部件可同时从总线上接收相同的信息


【1】总线基本概念


【2】总线分类

0)总线分类:

  • 片内总线(cpu内部总线);
  • 系统总线;
  • 通信总线;

系统总线分类

  • 数据总线: 总线上传输的是数据信号;双向
  • 地址总线:总线上传输的是地址信号;宽度和MAR寄存器相同; 单向,由CPU发出,发送到主存或io设备;
  • 控制总线:总线上传输的是控制信号;双向


【3】总线性能及性能指标

【3.1】总线物理实现


【3.2】总线特性


【3.3】总线性能指标

补充:

  • 1)地址线的根数:决定了主存单元寻址范围;如32位cpu,它的地址线是32根,则可以寻址的主存单元是 2^32 = 4G个主存单元(注意这里是主存单元个数,并非主存容量);
  • 2)数据线的根数:决定了每个主存单元的存储空间是多大,如32根数据线,则是32个bit,即4个字节;
  • 3)主存容量: 等于 主存单元个数 *  每个主存单元的存储空间;

当然可以把2个地址信号结合起来进行寻址,如1个地址信号作为低32位,第2个地址信号作为高32位(移位操作),两者结合可以寻址 2^64=16*2^60 = 16T个单元;(当然,这需要寄存器+内存单元较复杂的设计);


【3.4】 总线标准

 

总线接口补充:

  • PCI:PCI是Peripheral Component Interconnect(外设部件互连标准)的缩写,它是目前个人电脑中使用最为广泛的接口,几乎所有的主板产品上都带有这种插槽。
  • AGP:AGP插槽(Accelerated Graphics Port)是在PCI总线基础上发展起来的,主要针对图形显示方面进行优化,专门用于图形显示卡。
  • USB,是英文Universal Serial Bus(通用串行总线)的缩写,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯。是应用在PC领域的接口技术。

【4】总线结构

【4.1】单总线结构


【4.2】多总线结构

【4.2.1】双总线结构

【4.2.2】三总线结构

 DMA总线: direct memory access, 直接存储器访问; 外部设备通过 DMA总线 直接访问系统内存,而无需IO总线;

【4.2.3】三总线结构的其他形式

内存速度有限;
所以增加了cache 缓存;

【4.2.4】四总线结构

高速设备连接到 高速总线;
低速设备连接到 扩展总线;


 【4.3】总线结构举例(仅了解)


【5】 总线控制 (重要*)

问题1, 总线判优控制?

  • 多个设备可能同时向总线发出占用总线的请求, 到底哪个设备使用总线呢? 如何选择?
  • 因为总线在同一时刻,只能有一对设备使用总线;

问题2,如何完成总线上一对设备的通讯,保证通讯过程的正确性?


【5.1】总线判优控制

【5.1.1】基本概念

1)根据是否能提出总线请求,总线可以分为两类

  • 主设备:对总线有控制权;可以提出总线占用申请;并且在占用后,可以控制和另外一个设备的通信过程;
  • 从设备:本身无法对总线进行控制,也无法提出总线占用请求;只能响应从主设备发来的总线命令;
  • 有些设备既可以是主设备,也可以是从设备,没有那么绝对,如硬盘控制器;

  • 【5.1.2】链式查询方式

链式查询方式总线结构:

1.总线控制部件(总线控制器)是集中在一起的;

2.数据总线:用于信息交换过程中数据的传输;

3.地址总线:主设备占用了总线后,需要和从设备进行数据传输;要通过这条地址总线找到要通讯的这个从设备;

4.另外还有3条线(总线仲裁的3条线)

BR:总线请求线;所有设备都通过BR线发送总线占用请求;

BS:总线忙;如果某一个设备占用了总线控制权,它就通过BS线告诉总线控制部件或其他部件总线忙;

BG:总线授权或同意线;为啥叫链式查询,其特点就在BG线上;BG线是一个一个向下查询的;

如多个设备如设备1,设备n都通过BR这一条线同时提出总线占用请求;故总线控制部件不知道是哪一个设备提出了占用请求;所以通过BG线逐个查询设备,直到碰到第1个提出总线占用请求的设备,并把总线控制权交给设备(如IO设备接口1);然后接口1通过BS线发送总线忙信号,通知总线控制部件,或其他设备;

1)IO设备优先级特点:IO设备按照优先级在BG线上从左到右排序,优先级越高越靠左;
若某个设备的优先级最低,则它提出的总线占用请求可能一直都不会得到应答;

2)优点

  • 优点1:结构特别简单;
  • 优点2:增加删除设备简单;

3)缺点

  • 缺点1:对电路故障特别敏感;尤其是 BG线(总线允许或总线授权线),在向下传送的过程中,如果某一个接口电路出现故障,则信号无法向下传送,后面的设备就再也无法获得总线使用权了;
  • 缺点2:比较慢,因为要逐个查询;

4)应用场景:

  • 一般用在微型计算机或简单的嵌入式系统中

【5.1.3】计数器定时查询方式

相比于链式查询,计数器定时查询方式多了一根设备地址线

1.设备地址线上的信号来自于定时器给出;通过设备地址线查找某设备是否发出了总线占用请求

2.另外还有两条线,分别是BR-总线请求,BS-总线忙;

3. 总线控制部件有一个计数器;

1)计数器定时查询方式的总线判优过程

  • 步骤1)主设备提出总线占用请求;
  • 步骤2)总线控制器接收到请求后, 在能够响应的情况下,就会启动计数器,计数器的值通过设备地址线向外输出;
  • 步骤3)计数器的值向外输出后,如计数器值为0,则查询0号接口,查看其是否提出总线占用请求; 若没有提出,则计数器加1,通过设备地址线继续往外输出,;
  • 步骤4)接着对1号接口进行判断,该接口是否提出了总线占用请求; 若1号接口提出了总线占用请求,则1号接口就会响应;通过BS线进行应答

2)优点

  • 1.优先级确定非常灵活; 计数器初值为0,也可以是3,或者为上一次停止的地方开始;当计数器为3时,则从3号接口开始查询,而不是从0号接口开始(区别于链式查询);

3)补充:若IO接口数量为n个,则设备地址线有 log2(n) 个,使得设备地址线才可以寻找IO设备接口;

【小结】

前面两种方式,如链式查询,计数器定时查询方式,都是采用顺序查找方式,查询速度比较慢


【5.1.4】独立请求方式  

1)独立请求方式电路结构:

1.任何一个IO接口都增加了2条线;1条线是BR,用于IO接口提出总线占用请求;第2条线是BG,用于总线控制部件发出总线授权信号,接收到授权信号的接口就拥有了总线占用权;
2.IO设备优先级排队是在总线控制器内部的排队器来完成的;排队器中的优先级可以修改,如循环,或调整;

2)优点:

  • 相比于前两种,独立请求方式更快

3)缺点:

  • 用的信号线比较多;如果是n个设备,就需要2n条线;电路复杂;

4)上图获取总线控制权步骤:

  • 步骤1)多个接口部件通过各自的BR线同时向总线控制器发出总线占用请求;
  • 步骤2)总线控制器通过排队器中的优先级,对某个设备的总线占用请求进行应答;
  • 步骤3)获得应答的IO设备就占用总线使用权;

【5.2】总线通信控制

1)总线判优控制: 解决了由哪一个主设备(如CPU)占用总线; 使用总线;
主设备获得了总线使用权后,就需要和从设备进行信息交换;

2)总线通信控制: 就是解决主设备与从设备间协调及通信的问题;
3)总线传输周期: 指的是主设备与从设备间完成一次通讯所需要的时间;
4)总线通信控制需要解决以下4个问题

  • 问题1:总线占用申请分配阶段; 这一步是由总线判优逻辑或仲裁来完成的;
  • 问题2:寻址阶段; 主设备通过地址找到从设备,通过命令控制从设备完成操作;
  • 问题3:数据传输阶段; 如果从设备已经准备好数据,那它可以发送数据;如果从设备已经准备好数据接收,那它可以接收数据;
  • 问题4:结束阶段;主模块和从模块都撤销相关信息;


【5.2.3】总线通信的四种方式 

总线通信的四种方式特点

  • 1)同步通信:要有一个统一的定宽定距的时标,来控制数据传送过程;每一个操作每一个信号的给出,都是在固定的时间点,由这个时标进行控制;
  • 2)异步通信:没有时标;采用应答方式;主设备发出请求,从设备发出应答信号;然后再进行信息传输;
  • 3)半同步通信:主要是解决不同速度的两个设备间的通讯问题;是同步,异步的结合;
  • 4)分离式通信:充分挖掘系统总线每个瞬间的潜力;让系统总线发挥最大效能;(推荐*

1)同步通信-同步式数据输入(主设备从从设备读取数据)

1.1 )同步通信特征,是要有一个定宽定距的时标(时钟信号),来控制整个数据的传输过程;

1.2 )总线周期由4个时钟周期构成;这4个时钟周期就可以完成一次可靠的数据通信

1.3 )除了时钟信号之外,cpu要完成数据输入的话,还需要地址信号,读信号

  • 所以总线同步通信需要传递3种信号,包括地址信号,控制信号(读写),数据信号;

1.4)此外,从设备在给定的时间点上要给出数据的输出,对cpu来说,是数据的输入;

1.5)同步通信的特点:在固定的时间点上,给出固定的操作;步骤如下

  • 1.在t1时钟的上升沿,必须给出地址信号;这个地址信号是主设备给出的,在本例中是cpu给出的;
  • 2.在t2的上升沿,必须给出读命令信号告诉从设备,cpu要从从设备读入数据;
  • 3.在t3的上升沿达到之前,从设备必须给出数据信号,通过数据总线给出;
  • 4.(信号撤销)在t4的上升沿,数据信号和控制信号,就可以撤销了;在t4时钟周期结束时,地址信号也撤销了;

小结:

  • 小结1.同步式数据传输,一定要有定宽定距的时钟,来控制整个数据传输的整个过程;
  • 小结2.在给定的时间点上,要完成对应的操作;

2)同步通信-同步式数据输出(主设备把数据写入到从设备)

2.1)同步式数据输出电路设计: 

  • 1.首先要有1个定宽定距的时钟;由它来控制整个数据输出过程;如cpu把数据输出或写入到某个设备;
  • 2.还要有地址信号,知道向哪一个从模块进行数据传输;
  • 3.要把数据输出到从模块上去,所以需要数据;
  • 4.写命令表明本次操作是写操作;

2.2)同步式数据输出步骤如下(在规定的时间做规定的动作):

  • 步骤1.在t1时钟上升沿,要给出地址信号;在t1时钟下降沿,要给出数据;
  • 步骤2.在t2时钟上升沿,要给出写命令;向从设备进行数据写入;
  • 步骤3.在t3时钟上升沿,做写入操作;.
  • 步骤4.在t4时钟上升沿,cpu或主设备撤销数据,撤销写命令;在第4个时钟周期结束时把地址信息也撤销掉;
  • 以上,就完成了这次输出或写数据的操作;

2.3)小结

同步方式的话, 所有从模块都用同一个时标进行控制;要在同一个实现中完成规定的操作,主从模块是强制同步的

  • 缺点:这对多个速度不同的模块,我们必须选择速度最慢的那个模块作为统一的时标进行设计(这会影响整个通信速率);
  • 应用场景:所以一般情况下,总线同步通信方式应用到总线长度比较短,并且各个模块存取时间比较一致的情况下;

3)异步通信(非常重要,全互锁式异步通信可以完成可靠消息传输)

3.0)异步通信结构

  • 主设备:发起这次总线通讯;
  • 从设备:受主设备控制;
  • 与总线同步通信方式相比,异步通信没有定宽定距的时钟,但要增加2条线,包括请求线(主设备发出请求信号用),应答线(从设备对主设备发出的请求进行应答);

3.1)异步通信第1种方式:不互锁(有问题,不推荐);

  • 步骤1)主设备发出通信请求,从设备接收到请求后,进行应答;
  • 步骤2)之后,主设备撤销请求信号,从设备撤销应答信号;

这个过程中,主设备无论是否接收到从设备应答信号,经过一定延时后,都会撤销请求信号;
从设备也不管主设备是否接收到应答信号,经过一定延时后,都会撤销应答信号;
这种方式的通信是有问题的,存在信号丢失风险

3.2)异步通信第2种方式:半互锁(对不互锁的改进,还是有问题

  • 步骤1)主设备发出请求信号;
  • 步骤2)从设备接收到请求信号后,发出应答信号;
  • 步骤3)主设备接收到从设备的应答信号后,再撤销请求;如果接收不到,主设备请求会一直保持
  • 步骤4)从设备发出应答信号,不管主设备是否接收到了应答信号,经过一定延时后,从设备都会撤销应答信号;
  • 总线半互锁异步通信方式的问题:有可能造成请求信号一直保持高电平

3.3)异步通信第3种方式:全互锁(可以解决半互锁的问题,推荐)

  • 步骤1)主设备发出请求信号;
  • 步骤2)从设备接收到请求信号后,发出应答信号;
  • 步骤3)主设备接收到从设备的应答信号后,再撤销请求;如果接收不到,主设备请求会一直保持;
  • 步骤4)等到主设备撤销请求信号后,从设备才会撤销应答信号

小结:总线全互锁异步通信方式可以完成可靠的数据传输

  • 如果传输过程中,发现数据出错,半互锁,全互锁方式,可以请求从设备重新发送或接收数据;
  • 异步通信就是通过请求和应答这2个握手信号来完成通信联络的

4)半同步通信(同步 异步结合)

4.1)半同步通信是同步和异步的结合,既有同步特征,也有异步特征;

  • 同步特征:有一个定宽定距的时钟信号,来管理整个通信过程;发送方用时钟前沿发送信号;接收方用时钟后沿判断或识别;
  • 异步特征:允许不同速度的设备之间协调工作;为了调整主从设备速度差异,增加了一条等待信号 WAIT;这个WAIT 是由从设备给出的;

4.2)以输入数据为例的半同步通信时序过程

假设总线周期或通信过程依然是4个时钟周期正常情况

  • 步骤1)T1时钟上升沿,主模块发地址;
  • 步骤2)T2时钟上升沿,主模块发命令,这个命令就是读信号;
  • 步骤3)正常情况下,在T3上升沿到来之前,从模块要能提供出数据来;并且把数据放到数据总线上;主模块开始在数据总线上接收数据;
  • 步骤4)在T4时钟, 从模块撤销数据,主模块撤销命令;

但是有一种情况(特殊情况或异常情况):如主模块是cpu,从模块是内存;cpu速度快于内存;

  1. 在T3时钟到来之前,从模块无法向主模块提供数据;则在T3到来之前,从模块发出 WAIT 信号;
  2. 主模块检测WAIT 这条信号线;如果检测到WAIT 是一个低电平,主模块就会插入一个 Tw时钟周期以等待从模块数据到来
  3. 在下一个时钟周期到来之前,主模块还会检测这个 WAIT信号是否为低电平,如果是,则主模块还是会等待一个时钟周期;直到在某一个时钟周期到来之前,主模块发现WAIT信号是高电平,则表示从模块已经准备好了,可以发送数据了;
  4. 这个时候,主模块进行T3周期,准备接收从模块的数据;

半同步通信时序图:

 

半同步通信是同步,异步通信的结合;
需要一个时钟信号,这个定宽,定距时钟,控制了整个数据传输过程;这是同步通信的特征;
【例】cpu从外部设备读入数据的步骤

  • 步骤1)在t1上升沿,cpu先给出地址信号,通过地址总线;
  • 步骤2)在t2上升沿,cpu给出读信号;
  • 步骤3)在T3时钟到来前,若从设备不能把数据准备好,它会发送WAIT低电平信号,以通知主设备cpu等待从设备准备数据;主设备cpu检测到WAIT 信号,如果是低电平,它会在第3个时钟周期t3到来之前,插入TW周期;在下一个时钟开始前,主设备cpu继续检测WAIT信号;直到WAIT信号为高电平(这也表示从设备已经准备好了数据);
  • 步骤4)T3时钟周期开始时,从设备准备好数据后,通过数据总线把数据传送给cpu;
  • 步骤5)在T4开始时,主设备撤销读命令信号,从设备撤销数据信号; T4结束,主设备cpu撤销地址总线上的地址信号;

半同步通信方式小结:总线的半同步通信方式允许不同速度的主从设备间进行信息交换;


【补充】上述三种通信的共同点

总线传输周期分为3个步骤:

  • 步骤1)主模块发地址,命令;需要占用总线;
  • 步骤2)从模块准备数据,不占用总线;总线空闲;
  • 步骤3)从模块向主模块发送数据;需要占用总线;

在这3个步骤中,步骤2,即从设备准备数据步骤,是不占用总线的,总线空闲;

【问题】
总线上连接了多个模块或设备,总线是系统瓶颈;总线传输周期有空闲,对总线来说是一种浪费,那有没有办法把空闲的总线时间给他利用起来;这就引入了分离式通信


5)分离式通信

5.1)定义:

  • 可以充分挖掘系统总线每个瞬间的潜力; 把空闲的总线时间(从设备准备数据期间)利用起来; 

 

5.2)总线周期分为2个子周期:

子周期1

主设备申请占用总线,发出地址,发出命令,使用完后,立即放弃总线使用权;(这之后,从设备准备数据期间,主从设备均没有占用总线)

子周期2

从设备准备好数据后,申请占用总线,(这个时候从设备转变为了主设备了,因为它提出总线占用请求了),把数据送入数据总线进而送入主设备;

以上过程:把从设备准备数据期间占用总线的控制权给让出来了,即从设备准备数据期间,主从设备均没有占用总线;提高了总线利用率;

5.3)【例】总线分离式通信方式-cpu从硬盘读取数据通信方式:
一个硬盘挂载到通道(DMA控制器)上;程序执行过程中,要从硬盘读取数据;读取硬盘上的数据大致分为3步操作:

  • 步骤1)寻找指定磁道;磁头需要在硬盘表面进行移动,移动到指定的磁道上去;这个时间比较长,一般来说需要几十毫秒;
  • 步骤2)寻找指定扇区;磁头停止在磁盘表面,磁盘本身围绕一个轴进行转动,假设是5000转的磁盘,等待指定扇区转到磁头下,平均时间6秒;
  • 步骤3)读取磁盘数据; 假设每秒读取33M字节,一个磁盘扇区是512个字节,读取扇区只需要几微秒;

5.3.1)采用半同步方式:通道(可以理解为时DMA控制器)发出读磁盘操作,一直到读数完成,实际上,大部分的时间,几十毫秒的时间,这个总线都处于等待状态;等待磁头找到指定磁道,等待指定扇区转到磁头下面,才能开始进行通讯;
5.3.2)采用分离式通信方式:

  • 步骤1)通道(DMA控制器)发出定位命令后,通道和总线断开,通道不再占用总线;
  • 步骤2)硬盘控制器去控制磁盘完成定位(寻找磁道)操作;
  • 步骤3)磁盘完成定位操作后,转为主设备,向通道发出请求;
  • 步骤4)通道向磁盘控制器发出找扇区的操作;
  • 步骤5)找扇区的工作完成后,磁盘控制器再次向通道发出请求;
  • 步骤6)通道再发出读命令;

分离式通信方式这个过程,充分利用了总线在每一个时间的响应;(从模块可以转变为主模块,发起总线占用请求)

 5.4)分离式通信特点

  • 特点1:各个模块都有权申请占用总线;所有的模块都可以从从模块变为主模块,发起总线占用请求;从模块准备好数据,它要申请占用总线;
  • 特点2:采用了同步通信方式;从模块准备接收数据或准备好数据以后,采用的是定宽定距的时钟来完成的;要发送主设备地址,发送数据,发送写信号;
  • 特点3:各个模块准备数据时,不占用总线;
  • 特点4:总线被占用时,无空闲;一定是在进行数据通信或传输控制命令;
  • 这样的话,就充分利用了总线带宽;

以上是关于3-系统总线的主要内容,如果未能解决你的问题,请参考以下文章