组成原理(二):总线

系列文章目录

组成原理(一):基本概述icon-default.png?t=N7T8http://t.csdn.cn/uHkFn
组成原理(二):总线icon-default.png?t=N7T8http://t.csdn.cn/gAcm1
组成原理(三):存储器(上)icon-default.png?t=N7T8http://t.csdn.cn/PgUTh
组成原理(四):存储器(中)icon-default.png?t=N7T8http://t.csdn.cn/7PiKT


目录

前言

 (一)总线的基本概念 

1.为什么要用总线?

2.什么是总线?

2.1.特点

2.2.总线上信息的传输

3.计算机的总线结构

3.1.单总线结构

3.2.改进:面向CPU的双总线结构

3.3.改进PRO:以存储器为中心的双总线结构

(二)总线分类(计算机总线一般按位置分类)

1.片内总线

2.系统总线

3.通信总线

(三)总线的特性与性能指标

1.总线的物理实现

2.总线特性

3.总线的性能指标

4.总线标准

(四)总线结构(详)

1.单总线结构

2.多总线结构

2.1.双总线结构

2.2.三总线结构

2.3.三总线结构变式

2.4.四总线结构

3.总线结构举例

3.1.传统微机总线结构

3.2.VL-BUS局部总线结构

3.3.PCI总线结构

3.4.多层PCI总线结构

(五)总线控制

        1.总线判优控制

1.1.基本概念

1.2.集中式判优

1.2.1.链式查询方式

1.2.2.计数器定时查询方式

1.2.3.独立请求方式

2.总线通信控制

2.1.目的

2.2.总线的传输周期

2.3.总线通信的四种方式

2.4.同步通信

2.4.1.同步式数据输入

2.4.2.同步式数据输出

2.5.异步通信

2.5.1.不互锁

2.5.2.改进:半互锁

2.5.3.改进PRO:全互锁

2.6.半同步通信

2.6.1.半同步通信数据输入

2.7.上述三种通信的共同点

2.8.分离式通信


前言

哈工大计组网课笔记,教材是《计算机组成原理》(唐朔飞)


 (一)总线的基本概念 

1.为什么要用总线?

因为分散式连接(即把需要通信的两个部件两两相连)线条数量太过庞大复杂,如果将线做在印刷电路板上,成本过高,且难度很大。此外设备之间的接口要占用大量空间,系统拓展性差。

2.什么是总线?

总线是连接各个部件的信息传输线,是各个部件共享的传输介质。

2.1.特点

  • 在任何一个时刻只能有一对设备可以使用总线传输数据,即设备使用总线时是独占的。所以总线可能成为系统的瓶颈。
  • 结构简单,拓展性好。

2.2.总线上信息的传输

  • 串行:发送方把要传输的信息一位一位传入总线,然后接收方一位一位从总线接收
  • 并行:发送方把要传输的信息多位同时传入总线上,接收方也同时接受多位数据。并行方式需要多条数据线进行传输。

3.计算机的总线结构

3.1.单总线结构

缺点:

  • 因为设备使用总线时是独占的,所以单总线结构中总线的瓶颈会严重制约CPU的使用效率
  • 各个设备之间可能会出现总线的争用
  • 因为只有一条总线,两个远端设备通信可能会有相对较高的时延

3.2.改进:面向CPU的双总线结构

M总线是数据总线

描述:CPU在运行程序的时候,指令来自主存,数据也来自主存,CPU和主存之间的通信是非常频繁的,所以增加一条专门连接主存与CPU的总线设计是非常自然的,避免单总线对CPU的瓶颈限制。

缺点:但主存和外部设备之间仍然没有直接连接的信息通路,只能通过CPU作为媒介与外部设备进行信息传输,此时仍然会中断CPU的处理任务。

3.3.改进PRO:以存储器为中心的双总线结构

注意:面向现代技术,通常情况下,存储总线和系统总线还是不能同时进行工作。

(二)总线分类(计算机总线一般按位置分类)

1.片内总线

芯片内部的总线,完成芯片内部不同部件的连接

2.系统总线

计算机各部件之间的信息传输线

  • 数据总线:双向,和机器字长、存储字长相关(<=机器字长)
  • 地址总线:单向,与存储地址、I/O地址有关(与MAR宽度相同)
  • 控制总线:有出(存储器读写、总线允许、中断确认),有入(中断请求、总线请求)

3.通信总线

用于计算机系统之间或计算机系统与其他系统(如控制仪表,移动通信等)之间的通信。

传输方式:

  • 串行通信总线
  • 并行通信总线

(三)总线的特性与性能指标

1.总线的物理实现

在计算机当中,有个大的印刷电路板,总线就是印刷到这块印刷版上,这块板在微机中,我们称为主板。在总线上会留出一些接口,计算机其他的部件或者是模块通过接口连在主板上。

2.总线特性

  • 机械特性:尺寸、形状、管脚数以及排列顺序
  • 电气特性:信号的传输方向和有效的电平范围
  • 功能特性:每根传输线的功能
  • 时间特性:信号之间的时序关系

3.总线的性能指标

  • 总线宽度:数据线的根数
  • 标准传输率:每秒传输的最大字节数
  • 时钟同步/异步:同步、不同步
  • 信号复用:地址线与数据线的复用(减少芯片管脚数)
  • 信号线数:地址线、数据线和控制线的总和
  • 总线控制方式:突发、自动、仲裁、逻辑、计数
  • 其他标准:负载能力等等

4.总线标准

(四)总线结构(详)

1.单总线结构

描述:总线限制CPU性能

2.多总线结构

2.1.双总线结构

描述:除了之前的面向CPU、面向存储器的总线结构,还有这种将存储总线与I/O总线分离的总线结构,存储总线连接CPU与主存,I/O总线连接各种I/O设备,两个总线之间用专门的通道连接

2.2.三总线结构

描述:在面向CPU的总线结构的基础上,将高速设备分离出来直接通过DMA总线(直接存储器访问总线)连接主存,但是低速的I/O设备还是通过CPU连接主存。

2.3.三总线结构变式

描述:在计算机技术的发展中,CPU性能的发展与存储器的发展并不协调,CPU大概每年提高52%,而内存的存储延迟大概每十年才会变成原来的一半,为了解决CPU与存储速率的不协调,在CPU与主存之间增加了一个小容量的,高速的cache,对主存当中的数据,进行缓存,CPU在运行的时候,主要是从cache中获得指令和数据。

2.4.四总线结构

将低速设备与高速设备分开连接,增加传输效率。

3.总线结构举例

3.1.传统微机总线结构

3.2.VL-BUS局部总线结构

3.3.PCI总线结构

3.4.多层PCI总线结构

(五)总线控制

1.总线判优控制

1.1.基本概念

  • 主设备(模块):对纵向有控制权,可以提出总线的占用申请,并且在占用总线时可以控制与另外一个设备通信的整个过程。
  • 从设备(模块):只能响应从主设备发来的总线命令。

1.2.集中式判优

1.2.1.链式查询方式

描述:总线控制部件是集中在一起的,这是集中式控制的特征,通过数据线传输信息,通过地址线寻找从部件。结构简单,与判优相关的线路就只有三条,增删设备非常容易。与优先级相关的算法也非常简单。进行可靠性设计时比较容易实现。

流程:需要占用总线的部件通过BR线总线控制部件提交占用请求,然后从总线控制部件通过BG链式的逐个向后探询第一个提交占用请求的部件并授权总线权限,部件在得到占用权限后通过BS向其他部件发送总线繁忙的消息,此时这个部件就获得了总线使用权

特点:

  • 这个方法的优先级与BG向下探询部件I/O的顺序高度相关,BG的探询顺序就是各I/O部件占用总线优先权的先后顺序,这种顺序是事先确定好的,所以可能出现优先级靠后的部件的占用请求一直不能得到应答。
  • 对电路故障特别敏感,尤其是BG线路,在BG向下探询时,如果在BG线上的某一个接口电路出现故障,那么这个探询信号无法向下传递,那之后的设备再也无法获得总线使用权。
1.2.2.计数器定时查询方式

描述:总线控制部件中有一个计数器。总线控制部件在收到BR传来的某部件的总线占用请求后,通过设备地址线查询计数器的值的编号的设备是否发出占用请求,如果没有,则计数器加一,直到找到发出请求的部件并授予总线使用权。

特点:

  • 优先级确定非常灵活,可以是事先确定的,例如计数器的初始值为零,之后每次加一,那么这就和链式查询相似,查询顺序就是各I/O部件占用总线优先权的先后顺序。也可以通过软件来控制初始值以实现更灵活的优先级设置。
  • 设备地址线宽度与设备数量相关,与链式查询方法相比增加一些线的数量。
1.2.3.独立请求方式

描述:在总线内部有一个排队器,通过排队器来设置优先级,这样优先级的设置更加灵活,比如可以事先就进行排队,将优先级确立好,也可以将排队器设置为计时器实现循环优先级查询;还可以使用自适应的方式,那些设备在工作中比较重要,则给予其高优先级;也可以几种方法混用。

流程:多个设备通过自己的BR线向总线控制部件提出占用请求,总线控制部件依照排队器的优先级排序对某一个设备通过BG线进行应答,获得应答的设备就占用了总线使用权。

特点:优先级非常灵活,独立请求方法使用的线数较多,如果是n台设备可能需要2n条向来实现。

2.总线通信控制

2.1.目的

解决通信双方协调配合的问题。

2.2.总线的传输周期

  • 申请分配阶段:主设备申请,总线控制部件仲裁决定
  • 寻址阶段:主设备向从设备给出地址和命令,通过地址找到从设备,通过命令控制从设备
  • 传数阶段:主设备与从设备交换数据
  • 结束阶段:主、从设备撤销相关信息

2.3.总线通信的四种方式

  • 同步通信:由统一时标(定宽、定距)控制数据传送
  • 异步通信:采用应答的方式,没有公共时钟标准
  • 半同步通信:同步,异步混合,为了解决不同速度的两个设备之间的通信问题
  • 分离式通信:充分挖掘系统总线每个瞬间的潜力。

2.4.同步通信

2.4.1.同步式数据输入

在固定的时间点要给出固定的操作

整个总线传输周期由四个时钟周期构成

  • 在T1时钟的上升沿需要主设备给出地址信号
  • 在T2时钟的上升沿必须给出读命令信号,告诉从设备主设备要读取数据
  • 在T3时钟的上升沿,从设备必须要通过数据总线给出数据信号
  • 在T4时钟的上升沿,撤销数据和控制信号
  • 在T4时钟的下降沿,撤销地址信号
2.4.2.同步式数据输出

  • 在T1时钟的上升沿需要主设备给出地址信号
  • 在T1时钟的下降沿,需要给出数据
  • 在T2时钟的上升沿必须给出写命令信号,向从设备主设备进行数据写入
  • 在T3时钟的上升沿做这个写入操作
  • 在T4时钟的上升沿,主设备撤销数据和控制信号
  • 在T4时钟的下降沿,撤销地址信号

特点:同步传输通常应用于总线长度比较短,且主、从设备存取时间比较一致的情况。这是因为,同步方式对任何两个设备之间的通信都给予同样的时间安排。就总线长度来讲,必须按距离最长的两个设备的传输延迟来设计公共时钟。但是总线长了势必降低传输频率。存取时间是指部件接到读/写命令,到完成读出或写入一个数据所需要的时间。同步总线必须按最慢的部件设计公共时钟,如果各部件存取时间相差很大,也会损失总线效率。

2.5.异步通信

2.5.1.不互锁

主设备发出通信请求,从设备接收到请求后发出应答信号,之后主设备撤销请求信号,从设备撤销应答信号。在这个过程中,主设备不管从设备有没有接收到请求信号,一段时间后都会撤销请求信号,而从设备也不管主设备有没有收到应答信号,一段时间后撤销应答信号。

这个就有点像两个人扔飞盘。对方喊把飞盘给我扔过来,你听到之后就扔过去就可以。那么不管他是否接收到。扔的一方都不会重复的扔,那么接收方喊了之后。也不管对方听没听到就不再喊了,那么这种方式呢,通信的可靠性是有问题。

2.5.2.改进:半互锁

主设备发出请求信号,从设备接收到这个请求之后发出应答信号。主设备接收到应答信号以后再撤销这个情况,那么如果接收不到应答信号,那这个请求将会保持。但从设备发出了应答信号以后,不管对方是否已经接到这个应答信息,经过一段时间后,都会撤销应答信号。

有可能会造成这个请求信号一直保持高电平。

相当于接飞盘的一方,如果没有接到这个飞盘的话,他会一直喊;你他妈把这个飞盘扔过来啊。而扔的这一方,只要飞盘扔出去了,不管对方有没有收到都不管了。

2.5.3.改进PRO:全互锁

全互锁的方式可以解决我们半互锁方式存在的问题,主设备发出请求,从设备接到这个请求以后发出应答信号。主设备接到应答信号以后才会撤销这个请求信号。那么同样只有主设备的请求信号撤销以后。从设备才会撤销自己的应答信号。这种方式可以完成可靠的数据传输。如果传输过程当中发现数据出错,半互锁全互锁的方式可以请求从设备重新发送或者是接收数据。

2.6.半同步通信

半同步即同步与异步的结合。

同步的特征是,有一个定宽定距的时钟,来管理整个通信过程,发送方用这个时钟的前沿来发送信号,接收发用时钟的后沿来进行判断,识别。

异步的特征是,它并不要求两个设备要以相同的速度进行工作,且允许不同速度的设备之间能够协调的进行工作。那么为了调整储存设备速度的差异,它增加了一条等待信号,就是wait信号,这个wait信号是由从设备给出的。

2.6.1.半同步通信数据输入

描述:首先我们要有一个时钟信号,这个定宽定距的时钟控制了整个数据传输的过程,这是同步通讯特征。我们假设是CPU要从某一个外部设备或者是某一个内存单元当中读入数据。CPU要先给出这个设备或内存地址。然后要给出读信号。外部设备和CPU之间有速度差异,在给定的时间点上可能无法提供CPU需要的数据,那么外部设备要有一条线给出这个wait信号,给出的wait信号让CPU等待数据的到来。数据准备好以后,结束wait信号,由外部设备或者由内存进行发出,通过数据总线传送给CPU。

  • 在第1个时钟周期开始的时候,CPU要给出地址信号通过地址总线
  • 在第2个时钟周期开始的时候,由于是读操作。那么CPU要给出读信号。
  • 在第3个周期开始之前,从设备如果不能把数据准备好,那么它要通过wait信号给出一个低电平,告诉CPU进行等待。CPU检测这个位置信号,如果是低电平的话。会在第3个时钟周期到来之前,插入一个wait周期,在下一个时钟周期开始之前,主设备依然要检测这个位置信号。
  • wait信号依然是低电平,还要插入一个时钟周期进行等待。然后在下一个信号之前我们看wait信号已经变成了高电平,那么可以进入T3周期。
  • 第3个周期开始,数据已经准备好并且放在了数据总线上,CPU进行数据接收
  • 在第4个时钟周期开始的时候,读信号和数据信号从总线上撤销
  • 第4个时钟周期结束,地址总线上的地址信号也撤销

2.7.上述三种通信的共同点

我们还是以总线上一个传输周期,比如说一个数据输入作为例子:

将一个总线传输周期分成三部分。

  • 第一部分,主模块要发出地址和命令
  • 第二部分,从模块准备数据
  • 第三部分,从模块数据准备好以后向主模块发送数据

那这在这三个步骤的过程当中,主模块发地址发命令是需要占用总线的。从模块准备数据,是不需要总线。也说在准备数据的过程当中,总线是空闲的。从模块准备好数据以后向主模块发送数据,这个时候我们是要占用总线。那我们看一下这个过程,在中间的这个过程中总线是空闲的,我们说过总线上实际上连接了多个模块或者是连接了多个设备。总线是系统的瓶颈。

总线在总线传输周期当中有空闲,对总线资源来说是一个浪费,有没有办法把这个空闲的这段时间也给它用起来,把这就是我们要下一个要讲的方法,就是分离式通信。

2.8.分离式通信

充分挖掘系统总线的每个瞬间的潜力

描述:我们把一个总线的传输周期分成两个子周期。在第一个子周期,主设备发出地址,发出命令占用总线。地址和命令发送以后,主设备和总线之间的连接断开,主设备放弃总线的使用权。这个周期结束以后,从设备准备数据接收或者是准备要发送的数据。如果从设备已经准备好了接收或者准备好了要发送的数据。那么从设备要再一次发出占用总线的请求,在这个时候,这个从模块实际上已经从从模块变成了主模块,因为他发起了总线的占用请求。分成两个周期实际上就把我们刚才的那个总线传输周期当中中间的一部分,即设备或者模块准备数据的这个过程的总线使用权让出,以提高总线资源利用率。

特点:

  • 各模块都有权申请占用总线
  • 采用同步方式通信,不等对方回答
  • 各模块准备数据时,不占用总线
  • 总线被占用时,无空闲

举个栗子:

比如说一个硬盘把它挂在通道上,在执行程序的过程当中,我们要从硬盘读数据或者是读程序。读程序或者读数据对硬盘要分三步操作。

第一步操作,我们把它称为定位,即寻找一个指定的磁道。硬盘的是机械式,要寻找指定磁道,磁头要在硬盘的表面进行径向地移动,移动到指定的磁道上去,这个时间是比较长的,一般需要几十个毫秒。

第二步操作,在磁头找到了指定的磁道以后,还要找指定的扇区。磁头停止在磁盘的表面,磁盘本身围绕着一个轴进行转动,我们假设这是一个五千转的磁盘。那么等待指定的扇区转到这个磁头下面平均的时间大概是5毫秒左右,然后才能够开始读数据。假如说每秒能读33兆字节,一个磁盘的扇区大概是512字节,那我们可能只需要几微秒我们就可以把这个数据读出来。

在这个过程当中,如果我们采用半同步方式的话。通道发出磁盘的读操作一直到读完,实际上大部分的时间,即几十毫秒的时间,这个总线都处于等待状态。等待磁头找到要找的磁道,等待指定的扇区转到磁头的下面才能开始进行读取。

那如果我们采用分离式通信的这种方式的话,通道发出定位命令以后,通道和总线就断开了,不再占用总线。硬盘的控制器去控制磁盘完成这个定位操作,完成定位操作以后,变成主设备再一次向通道发出请求,通道则再次给他发出找扇区操作。找扇区的操作结束以后,硬盘控制器再次向通道提出申请,通道再去进行数据传输,这个过程我们可以看到充分利用总线的每一瞬间的潜力,主模块可以变从模块。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值