总线的基本概念:

冯诺依曼将计算机分成了五大设备:运算器,控制器,存储器,输入和输出设备。
就算我们将运算器和控制器组合在一起做成CPU,将输入和输出设备做成I/O设备,那么计算器也可以分成三大部分
那么为什么需要总线呢?
因为计算机的这些部件十分复杂,只有将这些部件连接在一起,才能够协调的进行工作,才能组合成一个完整的计算机。
有一种方法是分散连接,也就是说每个部件两两进行连接,但是这种方法明显会很复杂,并且扩展性不好,那么这个时候就出现了总线。
那么什么是总线呢?
总线是连接各个部件的信息传输线,是各个部件共享的传输介质。
在任何时候,都只能有一对部件在使用这根总线。

总线上的信息传输:

串行
并行(并行方式需要多条数据线进行传输,如果传输的距离比较长,那么相互平行的线路就会彼此产生干扰,那么在接收方就很难接收到正确的数据)

总线结构计算机举例:

快速了解总线
所有的部件都连接到一根总线上。
那么这种单总线的结构会有什么问题?
因为在任何时候都只能有一对部件使用这根总线,如果我们的主存和I/O有连接,那么这个时候CPU就会暂停工作,这个时候就会严重影响CPU的效率。

那为了解决这个问题,我们需要使用多条总线。
面向CPU的双总线结构:
快速了解总线
上面这种结构中,我们把CPU和主存中专门连接了一条总线,这样就可以防止上面的那种现象发生。

那么这种结构其实也有问题:比如我们想让主存和外部设备之间进行信息传输的话,因为他们之间没有一条直接的线路,所以只能够通过CPU进行传输

以存储器为中心的双总线结构:
快速了解总线
上面都是两种比较特别的连接方式,一般的连接如下:
快速了解总线
上面我们将主存总线和I/O总线分开,然后用一个通道对这两个总线之间进行连接。

三总线结构:
快速了解总线
三总线结构相比较于双总线结构多出了一个DMA总线(直接存储器访问)也就是直接对存储器进行访问而不需要经过I/O总线。
快速了解总线
上面这种方法很好的提高了CPU的工作效率(由于cache产生),但是我们发现,由于各种不一样的设备都连接到了扩展总线上,所以会导致我们的外部设备的工作效率变低。

四总线结构:
快速了解总线
上面这种结构将高速设备和低速设备分开,就很好的解决了外部设备的效率问题。

总线的分类

快速了解总线
快速了解总线

总线的性能指标:

总线的宽度(数据线的根数):总线一次性能够传输多少位数据
总线的根数越多,那同时传输的数据位也就越多,那么总线的性能可能也就越好
标准传输率每秒传输的最大字节数
时钟同步/异步:同步/不同步
总线复用地址线数据线共用
信号线数:地址线,数据线,控制线的总和
总线控制方式:突发,自动,仲裁,逻辑,计数
其他指标;负载能力(这条总线上能够挂载多少个I/O设备)

总线的标准:

快速了解总线

总线结构举例:

快速了解总线
快速了解总线
PCI总线结构:
快速了解总线
当我们的外部设备较多的时候,我们将会对PCI进行扩展:
快速了解总线
总线上连接了各种设备,这些设备要互相通讯。
问题:
多个设备可能向总线发出占用的请求,那么总线如何判优呢?(到底哪一个设备来使用总线呢?)
总线判优完成后,如何知道数据传输过程中数据的传输的准确性嗯?

总线判优方式:
快速了解总线链式查询方式:
快速了解总线链式查询方式的体现就在BG上,当有设备发出总线占用请求的话,总线控制部件就会通过BG链式进行判优。
优点:这种结构很简单。增删设备很容易,优先级算法很简单。
但是这种方式也有缺点:对电路故障非常敏感。
也就是如果BG线出现问题,那么后面的这些设备就永远得不到响应。

计数器定时查询:
快速了解总线
用设备地址来判断哪一个设备发出了总线占用请求。
在总线控制部件中有一个计数器,假设计数器初始化为0,当有设备向总线发出占用请求的时候,通过BR进行传输占用请求,总线控制部件通过设备地址进行一个个查询,如果这个设备没有发出占用请求,那么计数器就+1,如果发出了请求,那么设备就通过BS进行响应。
优点:可以自定义优先级的次序。
设备地址线的宽度和设备数有关。

独立请求方式:
快速了解总线
这样的结构就非常灵活,哪一个设备进行占用全部取决于总线控制部件中的排队器。预定优先级。

总线通信控制:
目的:解决通信双方协调配合的问题
总线传输周期:
申请分配阶段:主模块申请,总线仲裁决定
寻址阶段:主模块向从模块给出地址和命令
传数阶段:主模块和从模块交换数据
结束阶段:主模块撤销有关消息

总线通讯的四种方式:
同步通讯:由统一时标控制数据传送
异步通信:采用应答方式,没有公共时间标准
半同步通信:同步,异步结合
分离式通信:充分挖掘系统总线在每一瞬间的潜力

同步式数据通信:
在固定的时间点上要给出固定的操作
同步数据输入:快速了解总线
同步数据输出:
快速了解总线
异步通信:快速了解总线
半同步通信:
同步:发送方用 系统时钟前沿 发信号
接收方用时钟后沿判断识别
异步:允许不同速度的模块和谐工作
增加一条等待响应信号
快速了解总线
因为CPU的速度要比存储器速度要快,所以如果是同步的话,这根时候就会出错,但是如果存储器发送一个wait信号,,这个时候如果主模块接收到这个wait信号,那么就会进行等待,直到下一个周期到来之前,主模块都会检测是否出现wait信号。
快速了解总线

上述三种通信的共同点:

一个总线传输周期(以输入数据为例):
主模块发地址和命令 占用总线
从模块准备数据 不需要占用总线(这个时候总线空闲)
从模块向主模块发数据 占用总线

我们会发现,在模块准备数据的时候,总线是空闲的,那么有什么办法可以改进?————分离式通信(充分挖掘总线在每一个瞬间的潜力)

分离式通信:

快速了解总线
分离式通信的特点:
1.各模块都有权占用总线
2.采用同步方式通信,不等待对方回答
3.各模块准备数据时,不占用总线
4.总线被占用时,无空闲

相关文章: