++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
申明:这篇文章是我学习了哈尔滨工业大学计算机科学与技术系刘宏伟老师的mooc课程(参考教材为高教出版社出版的唐朔飞老师编写的《计算机组成原理(第二版)》)的课堂笔记整理(系统总线部分),其中的截图来自刘宏伟老师上课的PPT,版权归刘宏伟老师所有。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
什么是总线?
计算机系统的五大部件之间的链接方式有两种:第一种是各个部件之间使用单独的导线,这个称之为分散链接;另一种是将各个部件链接到一组公共的信息传输线上,这个称之为总线连接(BUS)。
为什么需要总线?
如果各个部件之间使用分散连接的话,那么计算机系统必然会因为众多的设备而导致拥有大量的数据导线,从而使得系统变得异常复杂,如果需要动态添加一个新的设备的话,会比较麻烦。
总线上信息传输的方式
总体来说,有两种方式:串行和并行。
串行:数据一位一位地传递,只有上一位传送完毕之后下一位才能传递,通常由一根导线设计。如下图:
并行:数据中的很多位可以同时传输,使用多根导线制造设计。如下图:
两种方式比较如下:
串行:优点:硬件设计简单,占用引脚较少,有利于集成。缺点:数据传输效率较低。
并行:优点:数据传输效率较高,吞吐量大。缺点:硬件设计复杂,占用较多引脚,集成复杂。
常见总线结构
单总线结构
这种结构是最经典,也是最简单的结构。所有的设备,包括CPU,主存,各种I/O设备全部挂接在一条总线上。但是这种方式的效率底下,因为同时只能有一对设备使用总线进行数据传输,如果这对设备传输时间很长的话(比如CPU和主存之间的数据传输)那么这段时间内别的设备只能等待;另外多个设备之间可能存在严重资源使用冲突的问题。
面向CPU的双总线结构
这种结构以CPU为中心,和上面的结构不同的是,这里主存不在挂在单一总线上了,而是设计了两个总线:I/O总线和M总线(Memory)。这样一来就把专门用于I/O设备数据传输的总线和存储总线分开了,解决了单一总线中因为CPU访问内存而导致系统总线负载较重的问题。
但是这种结构也是有问题的,比如所有的I/O设备如果需要和主存交互的话,那么效率是比较低的,因为每次都需要CPU实际参与。