数据总线, 地址总线, 控制总线详解.
什么是总线:
ISA,PCI,PCIE,USB,I2C,sata,这么多种总线,它们除了电气特性不同之外,就用途而言,相同么?
http://www.zhihu.com/question/29723949
除了ISA/PCI,其他在习惯上并不被称作总线。ISA/PCI之所以被称作总线,是因为在老的pc机结构上,他们是用来连接各种外设的,并且你能在主板上看到他们。这已经是很古老的东西了,现在基本用不到。
现在的pc机构架,包括嵌入式SoC,核心通过前端总线连接内存控制器,L3缓存,片内显卡和各种IO模块控制器(注意是控制器,而不是设备)。这个前端总线在芯片内部,你是看不到的。在pc机上你能看到的是连接南桥芯片的连线,南桥里面也有各种协议控制器,从而连接各种设备模块,比如PCIE,USB,I2C,sata。而在SoC中,连南桥都不存在。协议控制器都在一个芯片内,向上通过前端总线连接核,向下出芯片直接连接各种外设。这里的PCIE,USB,I2C,sata,虽然他们也是连接外设的,但是习惯上并不称作总线,而是称作IO(Input & Output)。
可能有点搞,但只要记住核,前端总线,控制器,设备,就不难理清楚了。不行找个x86构架图看看吧。
至于不同,主要是分3类,高速中速低速。我几年前写过一个科普,现在回过头看看有些地方并不准精确,随便看看吧。计算机IO协议扫盲之一
简而言之,在每个速度分类之内,电气特性差别不大。分类之间差别很大。各个协议用途差别很大,各有擅长,目前并没有融合趋势。
驱动差别也很大,DDR只要初始化不需驱动(也可以使用dma驱动),用于连接内存。pcie类似,用于连接除高速设备,网卡,固态硬盘,显卡等。他们都是内存映射。sata,usb.是操纵数据块做dma,sata连硬盘和固态硬盘,usb连得就多了,有个协议叫usb class,定义了所有可连接的设备类型。I2C这类低速的连数据块都不用,直接填地址和数据到寄存器。连接各种传感器等低速设备,也用可于高速设备的配置,比如内存条。
高速设备需要考虑效率和性能,包括pcie/sata/usb。虽然写法不同,但是等你看懂驱动后,他们在驱动模型和效率方面的考量,是一致的。
现在的pc机构架,包括嵌入式SoC,核心通过前端总线连接内存控制器,L3缓存,片内显卡和各种IO模块控制器(注意是控制器,而不是设备)。这个前端总线在芯片内部,你是看不到的。在pc机上你能看到的是连接南桥芯片的连线,南桥里面也有各种协议控制器,从而连接各种设备模块,比如PCIE,USB,I2C,sata。而在SoC中,连南桥都不存在。协议控制器都在一个芯片内,向上通过前端总线连接核,向下出芯片直接连接各种外设。这里的PCIE,USB,I2C,sata,虽然他们也是连接外设的,但是习惯上并不称作总线,而是称作IO(Input & Output)。
可能有点搞,但只要记住核,前端总线,控制器,设备,就不难理清楚了。不行找个x86构架图看看吧。
至于不同,主要是分3类,高速中速低速。我几年前写过一个科普,现在回过头看看有些地方并不准精确,随便看看吧。计算机IO协议扫盲之一
简而言之,在每个速度分类之内,电气特性差别不大。分类之间差别很大。各个协议用途差别很大,各有擅长,目前并没有融合趋势。
驱动差别也很大,DDR只要初始化不需驱动(也可以使用dma驱动),用于连接内存。pcie类似,用于连接除高速设备,网卡,固态硬盘,显卡等。他们都是内存映射。sata,usb.是操纵数据块做dma,sata连硬盘和固态硬盘,usb连得就多了,有个协议叫usb class,定义了所有可连接的设备类型。I2C这类低速的连数据块都不用,直接填地址和数据到寄存器。连接各种传感器等低速设备,也用可于高速设备的配置,比如内存条。
高速设备需要考虑效率和性能,包括pcie/sata/usb。虽然写法不同,但是等你看懂驱动后,他们在驱动模型和效率方面的考量,是一致的。
地址总线
它是单向的,只能从CPU传向外部存储器或I/O端口,地址总线上使得地址的64线路处于开合状态下,在该状态下,对应地址里面的数据可以获取或者存入
控制总线
控制总线,英文名称:ControlBus,简称:CB。控制总线主要用来传送控制信号和时序信号。控制信号中,有的是微处理器送往存储器和输入输出设备接口电路的,如读/写信号,片选信号、中断响应信号等;也有是其它部件反馈给CPU的
数据总线
数据总线数据总线是CPU与存储器、CPU与I/O接口设备之间传送数据信息(各种指令数据信息)的总线,这些信号通过数据总线往返于CPU与存储器、CPU与I/O接口设备之间,因此,数据总线上的信息是双向传输的。