在冯诺依曼计算机体系当中,把计算机基本组成分成了五大部分。
运算器、控制器、存储器、输入设备和输出设备,即使我们可以吧运算器和控制器制作在一个芯片上 (CPU),输入设备和输出设备统一为I/O设备,那么计算机的基本组成还包括三大部分。
现代计算机比这个基本组成更加复杂,可能有成百上千个CPU,外部设备的数量和种类也非常的丰富,只有把这些部件连接到一起,他们才能组成一个完整的计算机硬件系统,可以协调的进行工作。
那么我们如何把这些部件连接到一起呢?
有一种方法是采用分散连接的方式,需要进行信息传递的两个部件,我们把他用线连接起来。那么我们可以想象一下,几百个部件需要两两相互连接,并且两两之间的连线也非常多,那么们需要的线就会非常多。把这些线都放在电路板上,成本非常高,难度也很大,而且这些线路会占用大量的空间。
这种连接方式的另外一个问题,就是系统很难拓展。比如新增加一个IO设备,那么这个设备需要和原来的CPU进行连接,那么我们又要增加很多束线,每束线又有若干条,这个操作起来难度非常大。
为了解决这个问题,我们引入了总线连接方式。
基本概念:总显示连接各个部件的信息传输线,是各个部件共享的传输介质。
总线的英文名字是“BUS”,十分生动形象。他是信号的公共传输线
在任何时刻,只能由一组设备或者构件来使用总线,其他设备只能等当前的设备使用完释放之后才能使用总线。
但是使用总线传输速度很高,可拓展性也很强
串行
串行就是把要传输的信息一位一位的放在总线上去,接收方再一位一位的进行接收
并行
把要传输的数据多位同时放在数据总线上进行传输,接收方也同时接收多位数据。
并行方式需要多条数据线进行传输
如果传输距离比较长的话,线和线之间会产生干扰,所以接收方很难接收到准确的数据。
通常情况下,并行传输总线的传输距离都比较短,比如集中在机箱内部的并行总线
我们把计算机的所有部件都连接到这条总线上,这条总线就是计算机的系统总线
但是在这种结构中,如果某一个I/O设备与主存进行信息传递,那么这时主存和CPU之间就无法利用主存进行数据传输,会严重的影响CPU的运行效率。
还有就是当我们的I/O设备非常多的时候,这个单总线就会非常长,数据传输的速度就会大幅度下降。
那么有什么办法可以解决这个问题呢?
我们额外用一条总线专门进行CPU和主存的数据传输,这样就可以避免I/O设备与CPU和内存与CPU数据传输时的冲突。
那么这样是不是就不存在问题了呢?
假如我们需要主存和某一个外部设备进行信息传递,但是我们可以看到他们之间没有直接的信息通路,只能通过CPU作为媒介才能进行信息传输,这时CPU执行程序的任务就会被冲突。
为了解决以上的问题,聪明的人们发明了这样一种总线结构
这个结构当中CPU和主存有专用的存储总线,CPU也可以通过系统总线和外部I/O设备进行信息传递。
但是以目前的技术,图上的两条总线,也就是存储总线和系统总线还是不能同时工作。
总线在一个芯片内部完成了芯片内部的不同部件之间的连接,我们叫它“片内总线”
很容易联想到,芯片与芯片之间进行连接的这类总线,我们不叫它片外总线,因为这样命名的话覆盖的范围太大不便于区分。
系统总线:实现了计算机各个部件之间的信息传输。系统总线又根据总线上传输信号的不同又可以分为三类。
通常情况下,总显得宽度是小于等于机器字长或者存储字长的,
通信总线:用于计算机系统之间或计算机系统与其他系统(控制仪表、移动通信等)之间的通信。
传输方式:串行数据通信、并行数据通信。