首先来分析一个例子,如下图所示:
当包(packet)到达switch的输入端口(ingress port)时,端口首先会检查包是否有错误,然后根据包的路由(routing)信息,来做出以下三种处理方式之一:
1、 接受这个包,并自己(switch)使用它(internal use);
2、 将其通过响应的输出端口(egress port)转发到下一级endpoint(或者下一级switch);
3、 拒绝接受这个包。
在前面的文章中多次介绍过,pcie总线中一共有三种类型的包:ordered sets(命令集包,只在相邻的设备的物理层之间进行传递,不会被转发到其他的设备中)、dllps(数据链路层包,只在相邻的设备的数据链路层之间进行传递,不会被转发到其他设备中)和tlps(事务层包,可以根据包中的路由信息被转发到其他的设备中)。
注:实际上不论是tlps还是dllps都会经过物理层,这里说的tlp和dllp指的是包的最初来源分别是事务层和数据链路层,即dllp和上一层的事务层没有什么关系,其内容和作用完全是由数据链路层自己决定的。
注:endpoint不仅可以发送tlp给其上层的设备(如root),也可以发送tlp给其他的endpoint,当然这需要借助switch来实现。这种传输方式叫做peer-to-peer。
tlp一共有三种路由方式,分别是id路由(id routing,即bdf routing)、地址路由(address routing,包括memory和io)以及模糊路由(implicitly routing)。本文将简单介绍一些关于tlp路由的基础知识,具体的路由方式将会在接下来的三篇文章中依次进行介绍。
具体采用哪一种路由方式是由tlp的类型所决定的,如下表所示:
注:atomicop是pcie spec v2.1新增的内容,有兴趣的可以自行阅读v2.1的相关内容。
注:一般情况下,message都是使用模糊路由(implicitly routing)的,但是也有pcie设备厂商自定义的message会使用地址路由或者id路由。
可能有的人要有疑惑了,既然message可以使用地址路由或者id路由,为什么还要单独搞出来一个模糊路由呢?原因很简单,使用模糊路由可以广播message到每一个设备,采用其他的路由方式必须明确指定是哪一个设备。
那么pcie中是如何来判断tlp的类型的呢?又是如何判断其为request还是completion的呢?实际上是通过tlp header的format和type部分来确定的,如下图所示:
智能锁工作原理及基本工作流程技术原理介绍
中科中涣推出电动客车动力锂离子电池箱火灾防控装置
2019年全球智能手机市场的增长将会暂缓
2021年Q1我国新能源汽车累计销售约44.3万辆
串行口驱动LED显示的C语言源代码
一些关于TLP路由的基础知识
加征落地,家电企业影响几何?
做多中国半导体 从投资角度解读集成电路市场
如何解决LUN存储的五大问题?
基于222nm光源产品在防疫作业中的应用
nVIDIA Geforce2 Go显示芯片
雷达物位计在液氨工况案例的分析
如何实现无人驾驶汽车?
Impinj推出两款支持高级物联网功能的芯片
使用ESR电容提高可穿戴设备的能效与电池寿命
光电化学-电致变色双信号微流控芯片用于OFL的痕量分析
我国CV市场预计到2020年将达780亿元 人脸识别成落地应用最广泛的技术
传感器行业还有哪一些矛盾需要去解决
诺基亚8真机曝光:6月发布,外形太丑配置劲爆,大涨价!
芯科科技发布新版蓝牙开发流程