老男孩读PCIe之七:TLP的路由

一个TLP,是怎样经历千山万水,最后顺利抵达目的地呢?

今天就以上图的简单拓扑结构为例,讨论一个TLP是怎样从发起者到达接收者,即TLP路由问题。

 

PCIe共有三种路由方式:基于地址(Address)路由,基于设备ID(Bus number + Device number + Function Number)路由,还有就是隐式(Implicit)路由。

 

不同类型的TLP,其寻址方式也不同,下表总结了每种TLP对应的路由方式:

 

TLP类型

路由方式

Memory Read/Write TLP

地址路由

Configuration Read/Write TLP

ID路由

Completion[……]

阅读全文

老男孩读PCIe之四:TLP类型

Host与PCIe设备之间,或者PCIe设备与设备之间,数据传输都是以Packet形式进行的。事务层根据上层(软件层或者应用层)请求(Request)的类型、目的地址和其它相关属性,把这些请求打包,产生TLP,也就是Transaction Layer Packet。然后这些TLP往下,经历数据链路层,物理层,最终到达目标设备。

 

根据软件层的不同请求,事务层产生四种不同的TLP请求:

  1. Memory
  2. IO
  3. Configuration
  4. Message

     

    前三种分别用于访问内存空间、IO空间、配置空间,这三种请求在PCI或者PCI-X时代就[……]

阅读全文

老男孩读PCIe之三:PCIe分层结构

绝大多数的总线或者接口,都是采用分层实现的。PCIe也不例外,它的层次结构如下:

PCIe定义了下三层(彩色部分):事务层(Transaction Layer),数据链路层(Data Link Layer)和物理层(Physical Layer),每层职能是不同的,且下层是为上层服务的。分层设计的一个好处:如果层次分得够好,接口版本升级时,硬件设计可能只需要改动某一层,其它层次可以保持不动。

 

PCIe传输的数据从上到下,都是以packet的形式传输的,每个packet都是有其固定的格式的。

 

事务层的主要职责是创建(发送)或者解析(接收)TLP (Trans[……]

阅读全文

老男孩读PCIe之二:PCIe拓扑结构

计算机网络的拓扑结构是引用拓扑学中研究与大小、形状无关的点、线关系的方法,把网络中的计算机和通信设备抽象为一个点,把传输介质抽象为一条线,由点和线组成的几何图形就是计算机网络的拓扑结构。”

 

计算机网络的最主要的拓扑结构有总线型拓扑拓扑、拓扑、拓扑、混合型拓扑以及网状拓扑。

 

PCI采用的是总线型拓扑结构,一条PCI总线上挂着若干个PCI终端设备或者PCI桥设备,大家共享该条PCI总线,哪个人想说话,必须获得总线使用权,然后才能发言。下面是一个基于PCI的传统计算机系统:

 

北桥下面的那根PCI总线,挂载了以太网设备、SCSI设备、南桥以及其他设备,他们共享那条总线,[……]

阅读全文

老男孩读PCIe之五:TLP结构

无论Request TLP,还是作为回应的Completion TLP,它们模样都差不多:

 

 

TLP主要由三部分组成:Header,Data和CRC。TLP都是生于发送端的事务层(Transaction Layer),终于接收端的事务层。

 

每个TLP都有一个Header,跟动物一样,没有头就活不了,所以TLP可以没手没脚,但不能没有头。事务层根据上层请求内容,生成TLP Header。Header内容包括发送者的相关信息、目标地址(该TLP要发给谁)、TLP类型(前面提到的诸如Memory read,Memory Write之类的)、数据长度(如果有的话)等等。

 [……]

阅读全文