目录
1.总线分类
1.1数据传输方式分类
1.1.1串行总线
1.1.2并行总线
1.2按传输数据类型分为
1.2.1 数据总线
1.2.2 地址总线
1.2.3 命令总线
1.3按总线在soc系统的不同层次位置上分类
1.3.1 片上总线(片内总线)
AXI/AHB/APB 都属于片内总线
1.3.2 片间总线
微处理器与各外围芯片(如存储器RAM/ROM、I/O接口)之间通信的总线,属于芯片级互联
CAN/IIC/SPI/PCI-E
1.3.3系统总线
soc中各插件板与系统板之间的总线;属于插件板级的互连。
1.3.4 外部总线
设备间互联,比如IEEE488、RS232、RS485、USB等;属于设备级的互连。电脑与路由器设备级互联。
以上分类并不完全互斥。
或者简单分为片上总线和外设总线,在soc中常用片内AMBA总线,外设总线有PCIE,IIC,SPI
对于总线的理解可以参考知乎的一篇回答:
https://www.zhihu.com/question/26200899
arm芯片用pcie总线是不是能提高数据传输性能和效率?
arm自己有一套总线,包括flash也都是用的arm自己的接口,那么如果arm芯片使用pcie总线接口,是不是可以提升内存和flash的数据传输速度,使整体性能加强?
苦比的电子工程师
6 人赞同了该回答
xieyao
你提到的ARM总线应该是存储扩展用的并行总线。而PCIE是用于微控制器/微处理器到外设之间的高速串行总线。两者是不一样的。
另外,有的ARM芯片是带有PCIE接口模块的,比如TI的SITARA系列 Cortex-A8 内核的芯片。所以,问之前请先调查清楚。
先跑题一下,ARM的性能瓶颈不在总线上。举个例子,内存带宽是其重要的瓶颈之一。
现有ARM的并非没有集成Pcie控制器,如陈俊直所说的TI部分系列,还有CB2,3的全志A20 SOC,对SOC而言,只要你买了授权的IP core是可以集成到基于ARM的芯片的。
就题主的问题可以有两个方面来切入,一个是片内总线与片外总线,一个是ARM的性能。
第一个,题主说的“arm自己有一套总线”,这个是片内总线的概念,比如AMBA,再细层次的AXI等。ARM与flash的通讯属于片外总线通讯,引申开来有各种片外总线,如:SPI,I2C,UART,PCIE等等。那通过PCIe来连接flash确实如
说的,有点杀鸡用牛刀的意思。另外,外部总线速率上去了,但外设自身速率没上去也很难提高整体的通信速度。
第二个,提高ARM整体性能。这个议题应该是整个ARM联盟一直孜孜不倦追求的。坦率的讲,仅从性能上,Intel确实可以吊打整个ARM联盟。原因在于精简指令集(RISC)是一种更为消耗带宽的指令集,但ARM 架构的内存带宽却远远不足,因此这是ARM性能提升的巨大瓶颈。我想,我们谈到的并能运算能力差,超线程能力等等瓶颈,其主要的根因也在这。
所以,题主问这个问题可能是真心希望改善ARM性能,对于ARM阵营是可好消息。不过,方向可能有些偏颇,呵呵。
PCIE总线是一种外部总线协议,也就是说是一种片间总线协议。
具体到这个问题上,假设我有一颗带PCIE功能支持的ARM芯片,PCIE可以用来连接CPU和特定的存储器控制器,而不是Flash芯片本身。这是因为大部分FLASH芯片是用来实现存储程序和数据的功能,具体到电路上面就是地址线给定一个地址->使能->数据线上出现相应地址的数据电平,实现这种功能并行接口就足够了。如果硬是要把Flash芯片挂在PCIE通道上面,每一颗Flash芯片都要额外多设计一个PCIE控制器,成本会大大提高。而在SoC一端,也要增加一堆PCIE控制器,成本和功耗都会提高很多(我印象中PCIE控制器在ARM的SoC里面是一个独立的IP核,要额外授权?如有误请指出)。
其次,Flash是一种以block而不是bit组织的存储器,而且还有坏块的问题,因此必须要有一个专用的控制器对所有Flash芯片进行集中管理。ARM的SoC上面集成了控制器的话,Flash芯片就可以直接用并行总线接到SoC上面了,用PCIE就多做了一层无谓的转换了。(是不是可以理解DDR有控制器和PHY,所以直接并行总线接到SOC上的)
最重要的一点是,目前大部分ARM的性能瓶颈和总线无关,发挥这些SoC的全部数据吞吐能力用PCIE总线的话有点杀鸡用牛刀了。