文章目录
- 前言
- 一、总线的概述
- 1.总线的概述(是什么、什么用)
- 2.总线的分类
- 2.1 片内总线
- 2.2 系统总线
- 2.2.1 数据总线
- 2.2.2 地址总线
- 2.2.3 控制总线
- 二、总线的仲裁
- 1.为什么需要总线仲裁
- 2.总线仲裁的方法
- 2.1 链式查询
- 2.2 计时器定时查询
- 2.3 独立请求
- 总结
前言
今天给大家介绍计算机的总线,总线是连接计算机不同设备的一条数据线,分两个板块给大家介绍:总线的概述、总线的仲裁。
一、总线的概述
这里面分为两个板块:总线的概述(是什么、什么用)、总线的分类。
1.总线的概述(是什么、什么用)
首先我们来了解总线是什么?有什么用?从生活中最常见的例子开始,如下图:
这个相信大家都用过,它的名字叫 USB(Universal Serial Bus),它也是一条总线,中文名称是通用串行总线。联系一下实际生活,可以看出 USB 有如下作用:
- 提供了对外连接的接口
- 不同设备可以通过USB接口进行连接
- 连接的标准,促使外围设备接口的统一
通过以上对USB总线的认识,可以总结出总线的基本功能:解决不同设备之间的通信问题。
假设如果没有总线存在,那么计算机的五个主要部件各自都需要连接一条线,形成分散连接,非常麻烦,如下图所示:
如果这个时候我们新增了一个输入设备,那么新增的输入设备就要逐个连接到存储器、运算器、控制器中,就会导致线路越来越复杂,如下图:
我们再来看一下,如果有了IO总线,那么输入设备、输出设备都可以直接连接到总线上,总线的另外一边连接存储器、运算器、控制器,使得计算机里面的结构变得更加清晰、容易梳理,如下图:
这就是总线所带来的巨大变化,了解了总线是什么?有什么用?接下来我们再来了解总线的分类。
2.总线的分类
总线主要分成两类:片内总线、系统总线。
2.1 片内总线
片内总线是指在芯片内部的总线,如下图:
假设这个是CPU,在CPU里面也是有相关的总线的,这些总线连接高速缓存、控制器、运算器及中断系统。那么芯片通过片内总线就可以简化内部的电路结构,总的而言,片内总线特点如下:
- 芯片内部的总线
- 连接寄存器与寄存器
- 也可以连接寄存器与控制器、运算器之间的设备
一句话总结:片内总线就是高集成度芯片内部的信息传输线。
2.2 系统总线
对于系统总线就很容易理解,我们上面提到的USB总线就是属于系统总线的一种。对于系统总线呢,就是连接计算机外围各种设备的一条总线,包括这里面的CPU、主存、硬盘、IO设备、USB插槽、PCI插槽、显卡、声卡等等设备。
一句话总结:系统总线就是CPU、主内存、IO设备、各组件之间的信息传输线。
系统总线分为三类:数据总线、地址总线、控制总线,接下来分别说说这三种的作用。
2.2.1 数据总线
数据总线的位数一般与CPU位数相同(32位、64位),特点如下:
- 双向传输各个部件的数据信息
- 数据总线的位数(总线宽度)是数据总线的重要参数(如果总线的位数是32位,一次可以传输32比特也就是4字节数据;如果是64位,一次可以传输64位也就是8字节数据)
2.2.2 地址总线
地址总线是用于传输数据的地址而使用的,也就是用于寻址。如果地址总线位数等于n,寻址范围:0~2^n。特点如下:
- 指定源数据或目的数据在内存中的地址
- 地址总线的位数与存储单元有关
2.2.3 控制总线
控制总线特点如下:
- 控制总线是用来发出各种控制信号的传输线
- 控制信号经由控制总线从一个组件发给另外一个组件(如从CPU发送到键盘等等)
- 控制总线可以监视不同组件之间的状态(就绪/未就绪)
二、总线的仲裁
这里面包含两部分:为什么需要总线仲裁、总线仲裁的方法。
1.为什么需要总线仲裁
为什么需要总线仲裁呢?在这里举个例子,假设在计算机里面,主存需要和硬盘及IO设备交换数据,这个时候硬盘和其他的IO设备都已经就绪了。那么总线应该由硬盘还是IO设备来使用呢?这个时候如果没有一个第三方的仲裁器来解决这个问题的话,将会引起设备之间的冲突。
所以这就是仲裁器存在的理由,仲裁器的目的就是为了解决不同设备使用总线的优先顺序,解决总线使用权的冲突问题,接下来了解总线仲裁的方法。
2.总线仲裁的方法
总线仲裁有三个方法:链式查询、计时器定时查询、独立请求,接下来逐个介绍这些方法。
2.1 链式查询
假设现在有三个设备:设备1、设备2、设备3,这三个设备都是通过总线与系统总线连接。除此之外,还有个仲裁控制器,仲裁控制器与设备1、设备2、设备3通过仲裁控制线分别连接起来。对于链式查询,总线的使用权的信号就是通过链式连接设备1、设备2、设备3,如下图所示:
如果现在设备2要使用总线,那么设备2会通过仲裁控制线向仲裁控制器发出总线使用的请求,仲裁控制器在拿到请求之后就会发出允许使用的信号。信号首先会通过链式进入设备1,如果设备1不需要使用的话,再来到设备2,设备2在拿到这个信号之后就可以使用总线了。
但是这里面存在一个问题:假如设备1和设备2同时发出了仲裁的请求,那会是哪个先使用总线呢?
两者同时发出仲裁请求之后,对于允许使用的信号会首先到达设备1,也就是设备1会优先取到总线的使用权,这就是链式查询了。接下来简单总结下链式查询的特点:
- 好处:电路复杂度低,仲裁方式简单(对于电路复杂度低,我们刚才可以看到设备1/2/3都是通过一个串联电路连接起来的,同时仲裁的方式也非常简单)
- 坏处:优先级低的设备难以获得总线使用权(设备的优先级就体现在链式查询里面的先后顺序,如图中可以看出设备1的优先级是最高的,其次是设备2,最后是设备3)
- 坏处:对电路故障敏感(了解过物理中电路的串联应该都能理解)
2.2 计时器定时查询
计时器定时查询步骤如下:
- 仲裁控制器对设备编号并使用计数器累计计数
- 接收到仲裁信号后,往所有设备发出计数值
- 计数值与设备编号一致则获得总线使用权
我们接下来通过刚才的图示来理解这里面的步骤,对于计时器定时查询的方法中,仲裁控制器与设备1、设备2、设备3分别连接。同时,仲裁控制器本身还有一个计数器,计数器的初始值为1。如下图所示:
假设这时候设备2要使用总线,则通过仲裁控制线向仲裁控制器发出请求。仲裁控制器收到请求后,会把当前计数器的值 发送给所有的设备,所有设备都会接收到数字1这个信号,如下图:
但是这里面的设备1实际上是没有发出请求的,所以这时候仲裁控制器发出的1信号是没有用的。那么接下来,仲裁控制器还会发出信号2,对于2的计数值就与设备2编号相等了,所以这时候设备2就可以获得总线的使用权。如下图:
同样的,在下次请求当中,假设设备3通过仲裁控制线往仲裁控制器发出了请求,那么这时候仲裁控制器就会把计数器的值加1。同时往所有的设备发出计数器的值,当计数值与设备3编号相等的时候,设备3就可以获得总线的使用权。
以上就是计时器定时查询的方法。
2.3 独立请求
独立请求方式如下:
- 每个设备均有总线独立连接仲裁器
- 设备可单独向仲裁器发送请求和接收请求
- 当同时收到多个请求信号,仲裁器有权按优先级分配使用权
这时候,仲裁控制器与设备的连接方式如下图所示,设备1、设备2、设备3可以独立的向仲裁控制器发出请求以及独立的接收仲裁控制器所发送的允许使用总线的信号。
对于独立请求的方法特点如下:
- 好处:响应速度快,优先顺序可动态改变
- 坏处:设备连线多,总线控制复杂
总结
以上就是给大家介绍的内容,包括总线的概述和总线的仲裁。对于概述部分,我们了解了总线是什么、什么用,以及总线的分类;对于总线仲裁,了解了为什么需要仲裁,以及仲裁的三种方法。