2.1.概述
总线,连接多个部件的信息传输线,是各个部件共享的传输介质。当多个部件与总线相连时,在某一时刻,只允许有一个部件向总线发送消息,而多个部件可以同时从总线上接收相同的信息。
总线一共有三种:
- 数据总线
传输数据信息 - 地址总线
传输数据总线上传输的数据在内存中的地址 - 控制总线
传输控制信号,如中断信号、复位信号、就绪信号等。
总线分布在主板上,各个部件通过各自的接口插入总线。理论上总线是有三种,但是物理上可能存在着复用,比如三条总线可以时分复用一条物理线路,以节约硬件资源。
2.2.实现
总线的落地实现有几种架构:
- 单总线
- 双总线
- 三总线
- 多总线
2.2.1.单总线
单总线并不是说数据总线、地址总线、控制总线复用一条线路,而是说将系统总线抽象成一个整体来看待后,所有设备其实都接在系统总线的一个实体上。
由于总线在同一时间只允许一个部件发送消息,所以单总线存在一个明显的问题。执行IO操作时,IO设备占用总线后,主存与IO设备之间进行数据交互,IO向总线上写入数据,主存去总线上读取数据,(由计算机的存储体系决定,CPU不会直接去和IO进行交互,由内存读入IO的数据,再将数据通过总线交给CPU),整个期间CPU会空转,严重浪费CPU资源。
2.2.2.双总线
双总线系统就是为了解决单总线系统中CPU空转的问题。双总线系统即在CPU和主存之间加上一条总线,专门用于CPU和主存之间进行数据的交互。双总线中目前还存在一定的技术瓶颈,即主存无法同时向两条总线中写数据,目前还是采用分时的方式进行写入。
2.2.3.三总线
有些高速外设,其速率是可以和主存匹配的,走总线的话会耽搁时间,三总线系统就是为了解决这个问题出现的一种架构,即在逻辑上将高速设备和低速设备分离(分开对待),在主存和IO之间给一条专门的总线用于IO设备与主存的直接交互。高速设备走这条专用的总线,低速设备走老总线
2.2.4多总线
多总线系统是指将系统总线拆成几个实体(几段),实体之间通过通道来连接,例如拆成下图这种,一条总线管内设,一条总线管外设,中间通过通道来连同:
总线是为部件之间提供信息传输能力,因此想要进行部件间的通信,都可架起总线,所以多总线系统可以很复杂,可以每个设备都单独接入总线,架构图可以远比上图更复杂。
2.3.控制
总线的控制由专门的总线控制部件来负责,各个设备争抢总线时都通过专门的请求线路去向控制部件请求,总线控制器面对设备的总线资源请求时,会发信号询问总线上的所有设备,如果此时有设备正在占用总线,该设备会1返回信号告知控制部件——“总线忙”。
(具体的控制方式有很多种,下图只是其中的一种,不过各种实现的原理都相似)