总线:连接计算机内部各个部件或各个子系统的一组公共的通路。
传播信息采用广播的传播方式。 根据传输信息的种类,分为: 1、 地址总线
根据地址总线可以得到它最多能寻址的地址空间的大小
如果是16位总线,则最多寻址64k(216)的空间 2、 数据总线
传递数据信号,既可以是指令,也可以是数据
宽度一般是8,16,32,64等,是字节的倍数,就是8的倍数 3、 控制总线
电源线和地线单独考虑,不纳入总线的范围。
单总线结构:把需要连接的所有的功能部件都连接在同一个总线当中
由于所有设备共享一个总线,各个设备数据同时传输会产生问题。所以需要一个控制信息,每次只有一个设备能发送信息。
存在传输延迟问题。
多总线结构:在单总线结构的基础上,由于CPU与存储器之间的数据传输比较频繁,单独建立一组总线来连接,对于I/O设备,则用DMA总线来连接。I/O设备不是直接接到系统总线上的,而是通过I/O接口再连接到系统总线上去的。
专用型总线
地址总线Ai 数据总线Di
复用型总线既可以用来传送数据,也可以用来传送地址,称为ADi 复用型总线可以节省资源,但是效率比较低,需要相应的控制信号。 发送信息具有互斥性,同一时间内只有一个设备能发送信息 接收信息具有共享性,同一时间内可以有多个部件接收信息 总线被允许启动的控制器,称为总线控制器。 仲裁:选择下一个设备称为总线的主控制器,然后可以向总线发送信息
下一个设备要获得总线的控制权,必须等待总线主控制器放弃对总线的控制权。
CPU和DMA控制器都能获得总线的控制权,向仲裁申请后,等待分配控制权。
仲裁机制:
1、 集中式仲裁
只有一个仲裁主控设备,可以在CPU内部,也可以是一个独立的模块 a. 菊花链查询或者串行链接方式
有一个BG信号串行从头到尾连接各个设备,只要总线是空闲的,就一直发送信号,如果某个设备没有发出请求(不需要总线的控制权),就算截获了BG信号,也不会有总线控制权,这样BG就一直往后传,直到被截获然
后获取总线控制权后,总线设置为忙的状态,BG信号改变,后面的不再能得到BG信号。 b. 定时查询
仲裁主控设备内部有个计数器,每一个与总线连接的设备都有一个编号,计数器计数到多少就检测该设备是否有发出请求,有则分配控制权给它,总线状态设置为忙状态,否则继续计数。 通过设置计数器的初始值设置设备的优先级。 c. 独立请求查询
所有设备都有一个独立的请求信号线连接到仲裁主控设备。每一个设备都可以独立获得仲裁设备发回来的信号。
在仲裁设备中会有一个队列,根据队列来分配控制权。
2、 分布式仲裁
没有一个起主导作用的设备,仲裁的控制逻辑分散在总线连接的所有部件中。 每个设备都有优先级,多个设备同时发出请求时,分配给优先级高的设备。 假设编号高的优先级高: 0101 0110
线或后变成0111,进行匹配:
与0101匹配时,到第三位的时候,0和1不匹配,就把后面的1变成0,再发一次出去,发出去的是0100;与0110匹配,到最后一位,把后面的变成0,由于后面已经没有了,发出去的还是0110,两个设备第2次发送的数据,线或之后变成0110,再匹配就得到了0110,将总线的控制权分配给编号为0110的设备
时钟
如果总线有公共的时钟,则称为同步总线,否则称为异步总线
画时序图并不关注传送的是什么数据,只是关注传送的数据是否有效,所以用一对平行线来代替具体数据,标志有效状态。
异步总线:需要先导信息,握手信号
没有共同的时钟,其中的一种实现方式是:主设备发出一个就绪信号,等待从设备发出就绪信号就进行信息传递。
一种是默认发送方始终是准备就绪的,接收方准备就绪后直接就传送数据。 另外一种是默认接收方是准备就绪的。 最差的就是都不知道对方是否准备就绪。
总线频率:总线工作频率
总线宽度:总线能传送的数据的位数 总线带宽:总线传送数据的速率
总线带宽 = 总线频率 × 总线宽度 ÷ 8 =