总线概念辨析
总线是什么
总线就是一组线,上面挂了许多部件,部件可以通过总线进行数据传输。具体定义如下:
总线是一组能为多个部件分时共享的公共信息传送线路。
这里要注意:
分时:一个时段只能由一个主设备使用总线
共享:总线可以让多个部件共同使用
总线有哪些
分类由分类依据界定,这里着重讨论 从总线的功能进行讨论。
-
片内总线
片内总线是cpu内部的总线,连接了cpu各功能部件,如ALU和寄存器。在中央处理器中,我们讨论数据通路的几种模式:单总线方式,多总线方式和专用数据通路方式。其中的总线则指的片内总线,也称为cpu内部总线。
这里还要讨论提及到cpu内部单总线模式,这里要注意到,MAR和MDR是同时连接片内总线和系统总线(下文提及)的,指令寄存器IR将操作码地址信息通过片内总线传输到MAR,MAR通过系统总线访问主存,将被访问地址的数据内容放到MDR,MDR再通过片内总线传输到其他部件。
-
系统总线
系统总线包括:数据总线、地址总线、控制总线。
-
地址总线
这里先讨论地址总线,先要明确:地址总线是单向传输的,将要访问的地址信息,从cpu内部传输到外部(主存、I/O端口)。
结合上图,我们可以看到,cpu通过MAR和地址总线联系,因此不难看出:MAR的位数和地址总线的宽度是一致的。而MAR和主存的地址空间大小有关,因此地址总线宽度也和主存的地址空间大小有关。
-
数据总线
还是结合上图,我们可以看到cpu通过MDR和数据总线联系,因此不难理解:数据总线可以实现cpu和外部(主存、I/O端口)的数据交互(双向)。
同时,由于MDR的位数和存储字长一致,因此数据总线宽度和存储字长有关,但是不一定相等。如果数据总线宽度==存储字长,则传一个存储单元的数据就只用一次;如果存储字长是数据总线宽度的n倍,就得传n次。
顺便讨论以下各种字长:
- 机器字长:和ALU直接相关,指的是cpu进行一次整数运算所能处理的位数
- 存储字长:和MDR位数相同,值一个存储单元的位数
- 指令字长:一条指令的长度,通常和存储字长相关;如果指令字长==存储字长,则读取一条指令只需要访存一次。
-
控制总线
控制总线是cpu和外部(主存、I/O接口)双向传输控制信号的线路。控制信号这里举几个例子:时序信号、复位信号、总线读\写、中断请求等。
讨论控制总线和片内总线:
我们知道,在cpu内部总线(片内总线)也存在着控制信号,这些控制信号由CU控制单元(硬布线或微程序)发出,如PC_out、MAR_in,这些控制信号控制着cpu内部部件的运行。而控制总线是cpu和外部进行控制通信的线路,两者层级不一样,至于cpu如何通过控制总线和外部通信还没搞清楚,先放着。
-
-
通信总线
通信总线是计算机和计算机之间通信的线路,也叫做外部总线。
总结
其实本文只是从总线的功能层级进行了讨论划分(从细微到宏观):
- cpu内部(cpu内部部件通信):片内总线
- 计算机内部(cpu与主存、I/O部件通信):系统总线
- 计算机集群内部(多个计算机):通信总线
除了从功能层级划分外,其他划分标准也很值得学习:按照数据传输格式、按照时序控制方式 ;不过我比较倾向于将这两类不归为分类划分,而是具体应用的总线采用的特性,如采用了串行异步总线。这个之后在讨论吧!
标签:MAR,辨析,总线,概念,片内,字长,地址总线,cpu From: https://www.cnblogs.com/nanguahh/p/17287950.html