TLP的路由方式指的是TLP经过Switch或者PCIe桥片时采用哪条路径,最终到达EP或RC的方法。

PCIe总线继承了PCI总线的地址路由和ID路由方式,并新增了“隐式路由”方式。

存储器和IO读写操作请求TLP使用基于地址的路由方式,这种方式使用TLP中的Address字段进行路由选径,最终到达目的地。

配置读写报文、“Vendor_Defined Messages”报文、cpl、cplD报文使用基于ID路由方式,这种方式使用PCI总线号(Bus Number)进行路由路径选择,在Switch或多端口RC的虚拟PCI-to-PCI桥配置空间中,包含如何使用PCI总线号进行路由路径选择的信息。

隐式路由主要用于Message报文的传递,在PCIe总线中定义了一系列消息报文,包括“INTx Interrupt Signaling(中断信号)”、“Power Management Message(电源管理信息)”、“Error Signal Message(错误信息)”等报文,在这些报文中,除了“Vendor_Defined Messages”报文,其他所有信息报文都使用隐式路由方式。

隐式路由是指从下游端口到上游端口进行数据传递的使用路由方式,或者用于RC向EP发出广播报文。

Egress端口和Ingress端口 

Egress端口指发送端口,即数据离开Switch使用的端口,ingress端口指的是接收端口即数据进入switch使用的端口(E,export)。

Egress端口和Ingress端口与上下游端口没有对应关系,在switch中,上下游端口可以作为Engress端口,也可以作为Ingress端口,如图所示,RC对EP3内部的寄存器进行读写操作时,Switch的上游端口为Ingress端口,下游端口为Egress。当EP3对主存储器进行DMA写操作时,该Switch的上游端口为Egress端口,而下游端口为Ingress端口。

上游端口和下游端口 

在PCIe总线中,Switch是一个特殊的设备,该设备由一个上游端口和2~n个下游端口构成,PCIe总线规定:在一个switch中可以与RC(Root Complex)直接或者间接相连的端口为上游端口,在PCIe总线中,RC的位置一般位于上方,这也是上游端口的由来。

在switch中除了上游端口外,其他所有的端口都被称为下游端口,下游端口一般与EP相连,或者链接下一级switch继续扩展PCIe链路,其中与上游端口相连的PCIe链路称为上游链路,与下游端口相连的PCIe链路称为下游链路。

基于地址的路由

在PCIe总线中,存储器读写和I/O读写TLP使用基于地址的路由方式。

当一个TLP进行数据传递时,可能会经过多级Switch,最终到达目的地。Switch将根据存储器读写或者IO读写请求TLP的目的地址将报文传递到合适的Egress端口上。一个Switch包含几个端口,就包含几个虚拟PCI-to-PCI桥。

在虚拟PCI-to-PCI桥的配置空间中,包含一个桥片能够接受的物理地址范围,PCIe总线通过这个物理地址实现基于地址的路由,这段配置寄存器如下图所示,当系统软件初始化PCI总线时,将合理的设置这些寄存器,之后当TLP通过这些Switch时将根据这些寄存器选择合适的路径。

上图中的配置寄存器的配置过程由上位机完成,该配置寄存器描述了该虚拟PCI-to-PCI桥下游PCI子树使用的三组空间范围,分别为I/O、存储器、可预取的存储器空间,分别用Base和Limit两类寄存器描述,Base表示可访问空间的基地址,Limit表示可访问的空间的大小,一定要通过查询这组寄存器后,再决定传送路径。

基于ID的路由 

在PCIe总线中,基于ID的路由方式主要应用于配置读写TLP和Cpl、CplD报文,此外Vender_Defined消息报文也可以使用这种基于ID的路由方式。

基于ID的路由方式和基于地址的路由方式有较大的不同,两者的TLP头格式也存在着较大的区别:

基于ID路由的TLP使用Bus Number、Device Number和Function Number进行路由寻址。

PCIe总线规范规定,在一个PCI总线域空间中,最多只能有256条总线,因此在一个TLP中,Bus Number由8位组成;而在一条总线中最多包含32个设备,因此TLP中的Device Number由5位组成;而每个设备最多包含8个功能,所以一个TLP的Function Number由3位组成。

配置读写请求TLP是基于ID路由的一组重要报文,其主要作用是读写PCIe总线的EP、Switch、PCIe桥片的配置寄存器,已完成PCIe总线的配置,在处理器上电后对PCIe系统进行枚举,为PCIe总线分配总线号,并设置Switch、EP、PCI桥的配置,如Limit寄存器组、Base寄存器组、BAR寄存器、Primary Bus Number、Secondary Bus Number、Subordinate Bus Number等配置参数。

隐式路由

PCIe总线相对于PCI总线的一大改进便是消除了大量的边带信号,这正是通过Message的机制来实现的。

PCIe中心规定消息请求报文使用隐世路由方式,在PCIe总线中,有许多消息是直接发向RC或者来自RC的广播报文,这些报文不使用地址或ID进行路由,而是使用Msg或MsgD报文的Routing字段({Fmt,Routing})进行路由,这种路由方式称为隐式路由。所有采用隐式路由的TLP头都是4DW的,如下所示:

其中,type字段决定了隐式路由的类型,具体如下所示:

000b:路由到RC

001b:使用地址路由

010b:使用ID路由

011b:来自RC的广播报文(隐式路由)

100b:本地消息,在接收端结束(Legacy使用此种报文格式传递来自PCI总线的中断报文)

101b:用于PCIe电源管理。

110b~111b:reserved

当一个报文使用隐式路由向EP传送时,EP将对routing字段进行检查,如果这个报文是“来自RC的广播报文”或者“本地报文”,EP将接收此报文。

如果Switch接收到一个隐式路由的TLP时,Switch将根据Route字段的不同而分别处理。如果Switch上游端口接受了一条来自于RC的广播信息,则将该报文发送所有的下游端口;如果Switch接收到一条来自下游端口发向RC的报文时,Switch直接转发到上游端口,直至RC;如果Switch接收到一条使用隐式路由方式的本地消息报文,则Switch将接收并终结此报文,不再上传或下推。

如果RC接收到一个使用隐式路由的TLP时,将根据Route字段而分别处理这些TLP,如果该Route字段为3’b000 or 3’b101,RC将接收该TLP,并作相应的处理;如果为3’b100,RC将接收该报文,并结束该TLP报文的传递。

https://mp.weixin.qq.com/s?__biz=MzA5NjI1NDk0NQ==&mid=2247484469&idx=1&sn=506e41a4bda961b207b8c4b0a126ea3c&chksm=90b3aabba7c423adcbfc319b1a09393efef94accc62046bed64d06946395164e9c4245a4cdcb&scene=178&cur_album_id=1462562427954216964#rd

PCIe系列第四讲、TLP的路由方式相关推荐

  1. PCIe系列第八讲、MSI和MSI-X中断机制

    本章将着重讲述PCIe的MSI和MSI-X中断机制,在FPGA应用中主要通过XDMA中断与上位机进行通信,本文略长. 简介 在PCIe总线中,MSI和MSI-X中断机制使用存储器写请求TLP向处理器提 ...

  2. DDD系列第四讲:领域层设计规范

    在一个DDD架构设计中,领域层的设计合理性会直接影响整个架构的代码结构以及应用层.基础设施层的设计.但是领域层设计又是有挑战的任务,特别是在一个业务逻辑相对复杂应用中,每一个业务规则是应该放在Enti ...

  3. 营销管理手册_营销管理学院新生入学讲座系列第四讲——学习红绿灯之学习学生手册...

    为使2020级新生更好.更快地适应大学生活,鼓励新生做一名合格的大学生,营销管理学院于9月26日18:00在耘慧110召开了<学生手册>学习讲座.本次讲座由团委书记冉德睿主讲,2020级全 ...

  4. PCIe系列专题之二:2.3 TLP结构解析

    一.故事前传 之前我们讲了对PCIe的一些基础概念作了一个宏观的介绍,了解了PCIe是一种封装分层协议(packet-based layered protocol),主要包括事务层(Transacti ...

  5. 织梦仿站系列教程第四讲——首页页首代码

    织梦仿站系列教程第四讲--首页页首代码 今天,我们接上一讲,继续开始我们的仿站之路. 这一讲分两个部分,第一部分,修改首页的页首代码,即之间的代码. 有网页标题title.网页关键字keywords. ...

  6. C#精髓 第四讲 GridView 72般绝技

    说明:准备出一个系列,所谓精髓讲C#语言要点.这个系列没有先后顺序,不过尽量做到精.可能会不断增删整理,本系列最原始出处是csdn博客,谢谢关注. C#精髓 第四讲 GridView 72般绝技 作者 ...

  7. JVM基础系列第7讲:JVM 类加载机制

    当 Java 虚拟机将 Java 源码编译为字节码之后,虚拟机便可以将字节码读取进内存,从而进行解析.运行等整个过程,这个过程我们叫:Java 虚拟机的类加载机制.JVM 虚拟机执行 class 字节 ...

  8. AI公开课:18.05.05 施尧耘(阿里云量子技术CS)—清华AI第四讲之《人工智能与量子计算》Quantum课堂笔记——带你了解量子计算

    AI公开课:18.05.05 施尧耘(阿里云量子技术CS)-清华AI第四讲之<人工智能与量子计算>Quantum课堂笔记--带你了解量子计算 导读 清华大学"人工智能前沿与产业趋 ...

  9. “悟道”公开课第四讲丨悟道开发案例:​悟空策论——议论文写作平台

    图片出处:https://bmk.sh/2020/05/29/GPT-3-A-Brief-Summary/ 如果你错过了上一波深度学习引发的NLP范式转换,不要再错过这一波超大预训练模型的崛起. 现在 ...

最新文章

  1. 工业4.0进行时:未来协作方式的变革
  2. windows或Ubuntu中请求github.com请求超时,或在下载GitHub文件出现:<urlopen error [Errno 110] Connection timed out>
  3. Linux添加新硬盘、分区、格式化、自动挂载
  4. 不知是哪个家伙写的,相当的有才啊!
  5. HBase之BloomFilter
  6. Spring回滚事务类型
  7. 取消预约的c语言代码大全,C语言机房机位预约系统课设(附源码).doc
  8. git常用操作,切换分支,合并分支
  9. android jni示例_Android GridLayoutManager示例
  10. [MySQL][Spider][VP]Spider-3.1 VP-1.0 发布
  11. JavaScript String 对象、Math 对象使用详解
  12. 【报告分享】2021年中国网络文学出海报告-艾瑞咨询(附下载)
  13. vos3000配置与通讯测试(一)
  14. Gson Builder — Gson Lenient 属性
  15. Java最新学习笔记(2020版)丨基于JKD1.8
  16. 如何在 Mac 上的邮件中添加签名来个性化电子邮件?
  17. 七月行情有盼头——技术派=基础,资金流派和基本面派是工具,思维流是集大成者_96
  18. An error occurred: Cannot write to '/opt/apache-jmeter-5.2.1/bin/jmeterRes/Report1' as folder is not
  19. iOS 判断手机型号及系统版本(最新)持续更新
  20. vue根据不同权限显示图片_vuex根据不同的用户权限展示不同的路由列表

热门文章

  1. uni-app卡片式轮播
  2. 单片机进阶 --------hex文件格式
  3. Express 极速掌握 1
  4. Unity/Animator -- 创建Animator Controller
  5. LINUX系统管理-PCS配置手册
  6. docker创建(run)容器后容器自动关闭
  7. 安装nginx遇到C compiler cc is not fount问题
  8. 代谢组学分析平台都有什么仪器?
  9. 基于嵌入式ARM工控主板与X86工控主板的比较
  10. Ant是什么东西(初级)