前面三小节,介绍了PCIE的基本知识和概念,以及扫描流程。在不求甚解的情况下,我想各位小伙伴应该对PCIE有了个宏观的认识,OK,那么本章我们在之前的基础上,再单独把一些概念和更深层次的问题摘出来具体讨论。
首先依旧是国际惯例,先列问题:
1. PCIE的各个模块中,经常提到Bridge/Host Bridge,Root Complex, Root port以及一些其他常用的部件概念要怎么理解?
2. PCI总线模型和PCIE是点对点模型,要怎么理解?
3. EndPint是否可以直接访问另外一个EndPoint
1. Bridge/Host Bridge,Root Complex, Root port这些要怎么理解(以下解释来源于PCIE Spec)
Host bridge的概念:Root Complex中用来链接一个主CPU或多个CPU和一个层次结构的一个部分。英文原意如下:
Port 的概念:
1.逻辑上: 位于部件和一个PCIE链路之间的接口。 2. 物理上: 位于同一个芯片上用来定义一个链路的一组发射器和接收器。 原意如下:
Add Receiver&Reveiver Port
Root Port的概念:一个位于Root Complex上通过相关联的虚拟PCI-PCI Bridge映射一个层次结构整体部分的的PCIE Port,
Root Complex的概念: 一个的系统元素,包含一个Host Bridge, 0个或多个集成EndPoints的Root Complex, 0个或多个Root Complex时间收集器,0个或多个Root Ports
Add Root complex Componen
Switch的概念:一个定义好的用来连接两个或多个Ports且允许数据包在不同Ports之间被路由转发的一个系统元素。通过配置软件,一个switch也被配置为一组虚拟PCI-to-PCI Bridges的集合
Link的概念:两个Ports和他们之间所连接Lanes的集合。一个Link是一个双工通信通道在两个部件之间。
Lane的概念:一组不同的信号对,一对用来传送,一堆用来接收。由于PCIE使用差分信号传输,一条lane四条线,两条线组成一对,供发送。另外两条接收!
2. PCI总线模型和PCIE是点对点模型,要怎么理解?
PCI总线模型: 在传统的PCI总线模型中,一个设备通过在Bus上判断DEVSEL(设备选择)来认领一个请求。如果在一段时钟周期后没有设备认领一个请求,这个请求就被放弃。
PCIE点对点模型:PCI是一种点对点的传输模型,不像PCI总线那样,在总线上有平等认领请求的机制。所有的传送总是由一个Device发给Link上的另外一个Device。所以,对于所有接收方来说,接收方将会直接判断这个请请求是否要被认领。
3. EndPint是否可以直接访问另外一个EndPoint
在PCIE这种点对点的模型中,设备之间之间的互联访问是可以的。
情况一:不需要CPU参与
最典型的应用就是在一个带有DMA功能的Switch下,挂载两个EP,CPU需要首先配置DMA控制器,包括设置一些源地址,目标地址,传输数据以及数据量。然后每个设备发起DMA传输的时候,会直接透过Switch中的DMA控制器,发数据到另外一个设备,这个过程不需要CPU干预
情况二:CPU参与
这个过程就相对来说简单了,CPU从一个PCIE设备中读取出要发送的数据,然后直接发送给指定的目的PCIE设备节点即可。