CN117539820B - 一种PCIe Switch与SoC的互联系统及方法 - Google Patents
一种PCIe Switch与SoC的互联系统及方法 Download PDFInfo
- Publication number
- CN117539820B CN117539820B CN202410036940.XA CN202410036940A CN117539820B CN 117539820 B CN117539820 B CN 117539820B CN 202410036940 A CN202410036940 A CN 202410036940A CN 117539820 B CN117539820 B CN 117539820B
- Authority
- CN
- China
- Prior art keywords
- axi
- request
- tlp
- packet
- tlp packet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000006243 chemical reaction Methods 0.000 claims abstract description 10
- 230000004044 response Effects 0.000 claims description 97
- 238000012545 processing Methods 0.000 claims description 26
- 239000000872 buffer Substances 0.000 claims description 21
- 230000008569 process Effects 0.000 claims description 16
- 238000004891 communication Methods 0.000 claims description 9
- 238000012546 transfer Methods 0.000 claims description 9
- 230000002159 abnormal effect Effects 0.000 claims description 7
- 238000011144 upstream manufacturing Methods 0.000 claims description 5
- 238000013519 translation Methods 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 abstract description 35
- 230000003993 interaction Effects 0.000 abstract description 10
- 230000002829 reductive effect Effects 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 14
- 239000011159 matrix material Substances 0.000 description 11
- 230000006870 function Effects 0.000 description 9
- 238000005457 optimization Methods 0.000 description 4
- 230000002411 adverse Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 210000001503 joint Anatomy 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/38—Universal adapter
- G06F2213/3852—Converter between protocols
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
Abstract
本发明涉及数据传输技术领域,提供了一种PCIe Switch与SoC的互联系统及方法。其中,通过在PCIe Switch上直接设置本地系统桥,和将SoC直接部署在PCIe Switch上,实现了PCIe总线域的TLP包与SoC上AXI总线数据之间的相互转换,及PCIe总线系统与SoC间的低延迟、低成本数据通路,克服了传统互联方法中PCIe总线系统与SoC间的数据交互必须基于高延迟PCIe链路实现的局限性,以及系统性能提升对高带宽PCIe PHY的依赖性,同时降低了传统方式中使用PCIe PHY和完整的PCIe控制器所带来的资源成本,有效降低了设计实现高性能、多功能PCIe Switch芯片的所需的功耗、面积代价。
Description
技术领域
本发明涉及数据传输技术领域,特别是涉及一种PCIe Switch与SoC的互联系统及方法。
背景技术
在基于传统PCIe(Peripheral Component Interconnect express,高速串行计算机扩展总线标准)Switch产品构建的PCIe总线系统中,用于扩展各种功能的通用或应用驱动的专用SoC(System on Chip,片上系统)通常在PCIe终端设备(End Point)上部署,SoC通过PCIe终端设备的PCIe链路与PCIe总线系统中的其它设备实现数据交互和信息交换。PCIe链路的建立通过对接链路两端的PCIe设备的PHY(Physical,物理层接口)并需要完整的PCIe控制器(PCIe Controller)作为支持。其中,PCIe Switch芯片是一种高速PCIe交换设备,便于主机和服务器的PCIe接口扩展,达到可以接入更多PCIe设备的效果。
由于PCIe链路的存在,传统的PCIe Switch与SoC的互联方式存在以下缺陷:一是数据在PCIe链路上的传输存在不可避免的延迟,性能优化主要依赖于PCIe PHY的带宽提升;二是PCIe PHY和PCIe控制器均是大规模的复杂IP(Intellectual Property,知识产权核心,指芯片中具有独立功能的电路模块的成熟设计),由此引入的资源成本对芯片面积和功耗造成了不利影响。
鉴于此,克服现有技术所存在的缺陷是本技术领域亟待解决的问题。
发明内容
为有效提升SoC与PCIe总线系统的互访性能,降低二者之间数据通路的延迟与复杂度,本发明采用一种部署在PCIe Switch上的本地系统桥互联PCIe Switch内部的Switch子系统和SoC子系统,将PCIe总线系统中的SoC直接部署在PCIe Switch上,代替了传统的互联方式(通过PCIe链路互联部署在PCIe终端设备上的SoC与PCIe总线系统)。
本发明采用如下技术方案:
第一方面,本发明提供了一种PCIe Switch与SoC的互联系统,包括Switch子系统、本地系统桥和SoC子系统,所述Switch子系统、所述本地系统桥和所述SoC子系统直接部署在PCIe Switch上,所述Switch子系统与所述本地系统桥连接,所述本地系统桥与所述SoC子系统连接,其中:
所述Switch子系统,用于将来自PCIe总线系统的第一请求TLP包和第二完成TLP包向所述本地系统桥转发;以及,用于接收第二请求TLP包和第一完成TLP包,将所述第二请求TLP包和所述第一完成TLP包进行路由处理并转发至PCIe总线系统;
所述本地系统桥,用于接收所述第一请求TLP包,将所述第一请求TLP包转换为第一AXI读写请求,当所述第一请求TLP包转换为所述第一AXI读写请求后,将所述第一AXI读写请求转发至所述SoC子系统,待所述SoC子系统返回第一AXI读响应后,将所述第一AXI读响应转换为第一完成TLP包;以及,用于接收第二AXI读写请求,将所述第二AXI读写请求转换为所述第二请求TLP包,当所述第二AXI读写请求转换为所述第二请求TLP包后,所述本地系统桥将所述第二请求TLP包转发至所述Switch子系统,待所述Switch子系统返回第二完成TLP包后,将所述第二完成TLP包转换为第二AXI读写响应;
所述SoC子系统,用于向所述本地系统桥发送所述第二AXI读写请求;以及,用于接收所述第一AXI读写请求,对所述第一AXI读写请求进行处理并返回所述第一AXI读响应。
第二方面,本发明提供了一种PCIe Switch与SoC的互联方法,用于实现第一方面所述的PCIe Switch与SoC的互联系统,包括:
Switch子系统向本地系统桥发送第一请求TLP包;所述本地系统桥接收所述第一请求TLP包,将所述第一请求TLP包转换为第一AXI读写请求;当所述第一请求TLP包转换为所述第一AXI读写请求后,所述本地系统桥将所述第一AXI读写请求转发至SoC子系统;所述SoC子系统接收所述第一AXI读写请求,对所述第一AXI读写请求进行处理后返回第一AXI读响应,以根据所述第一AXI读响应完成SoC子系统方向的通信;
所述SoC子系统向本地系统桥发送第二AXI读写请求;所述本地系统桥接收所述第二AXI读写请求,将所述第二AXI读写请求转换为第二请求TLP包;当所述第二AXI读写请求转换为所述第二请求TLP包后,所述本地系统桥将所述第二请求TLP包转发至所述Switch子系统;所述Switch子系统接收所述第二请求TLP包,对所述第二请求TLP包进行处理后返回第二完成TLP包,以根据所述第二完成TLP包完成Switch子系统方向的通信。
与现有技术相比,本发明的有益效果在于:
本发明通过在PCIe Switch上直接设置本地系统桥,和将SoC直接部署在PCIeSwitch上,在PCIe Switch的结构上实现了PCIe Switch连接本地系统桥、本地系统桥连接SoC的互联系统,实现了PCIe总线域的TLP包与AXI总线数据之间的相互转换(即支持双向传输),避免了经过PCIe链路,无需通过PCIe的数据链路层和物理层,使用本地系统桥直接在事务层传输数据,实现了PCIe总线系统与SoC的低延迟、低成本数据通路,克服了传统互联方法中PCIe总线系统与SoC间的数据交互必须基于高延迟PCIe链路实现的局限性,以及系统性能提升对高带宽PCIe PHY的依赖性,同时降低了传统方式中使用PCIe PHY和完整PCIe控制器所带来的资源成本,有效降低了设计实现高性能、多功能PCIe Switch芯片的所需的功耗、面积代价。且通过在PCIe Switch的SoC子系统和Switch子系统之间提供大规模的数据交换通路,使得SoC在PCIe Switch上实现后,打破了一些功能强大的高速接口在PCIeSwtich芯片上的使用限制,极大地增加了PCIe Switch的功能可扩展性,且有效降低了PCIe控制器和PCIe PHY之间PCIe链路的延迟。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本发明实施例提供的现有技术的PCIe Switch与SoC的互联系统的芯片结构示意图;
图2是本发明实施例提供的现有技术的PCIe链路逻辑层次结构交互示意图;
图3是本发明实施例提供的现有技术的PCIe链路逻辑层次结构的数据传输格式示意图;
图4是本发明实施例提供的一种PCIe Switch与SoC的互联系统的芯片结构示意图;
图5是本发明实施例PCIe Switch与SoC的互联方法的内部功能逻辑示意图;
图6是本发明实施例提供的一种PCIe Switch与SoC的互联系统的外部特征示意图;
图7是本发明实施例提供的一种PCIe Switch与SoC的互联方法的整体流程示意图;
图8是本发明实施例PCIe Switch与SoC的互联方法的一种数据处理流程示意图;
图9是本发明实施例PCIe Switch与SoC的互联方法的另一种数据处理流程示意图;
图10是本发明实施例步骤20的一种流程示意图;
图11是本发明实施例步骤202的另一种流程示意图;
图12是本发明实施例提供的一种高速接口与Switch子系统交互的具体示例的示意图;
图13是本发明实施例提供的PCIe Switch与SoC的互联系统的一种实施方案示意图;
图14是本发明实施例提供的PCIe Switch与SoC的互联系统的另一种实施方案示意图;
图15是本发明实施例提供的一种PCIe Switch与SoC的互联系统的另一种外部特征示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在本发明的描述中,术语“内”、“外”、“纵向”、“横向”、“上”、“下”、“顶”、“底”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明而不是要求本发明必须以特定的方位构造和操作,因此不应当理解为对本发明的限制。
本发明中术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”等的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
在本申请中,除非另有明确的规定和限定,术语“连接”应做广义理解,例如,“连接”可以是固定连接,也可以是可拆卸连接,或成一体;可以是直接相连,也可以通过中间媒介间接相连。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
现有技术通过PCIe链路(PCIe Link)将PCIe Switch与SoC互联,以实现数据交互和信息交换。如图1所示,通过PCIe PHY和PCIe控制器,完整的实现了PCIe事务层、数据链路层和物理层,其中,PCIe Switch为一个独立的芯片,其Switch下游端口(Downstream Port,DSP)对接PCIe终端设备(Endpoint)的端口,SoC部署在PCIe终端设备,该PCIe终端设备与PCIe Switch相独立,即PCIe Switch与SoC可视作为位于两个不同芯片,PCIe Switch与PCIe终端设备(PCIe Endpoint)通过PCIe链路连接。
PCIe链路基于串行连接方式,使用数据包进行数据传输,数据包在发送和接收过程中需要经过多个层次,包括事务层,数据链路层和物理层;在PCIe高速接口/端口上,从高到低是事务层、数据链路层和物理层。如图2所示,其中,PCIe域的Switch应用层与SoC的终端设备(Endpoint)应用层之间,事务层定义了PCIe总线使用事务,这些事务可以通过Switch设备进行转发,事务层实现了路由和寻址功能;PCIe链路的事务层将事务需要传输的数据封装为TLP(Transaction Layer Packet,事务层包)包,TLP包可在事务层进行传输,事务层将其转换为数据链路层的格式,得到DLLP(Data Link Layer Packet,数据链路层包)包,发送至数据链路层。数据链路层发送和接收DLLP包,执行检测和纠错,流量和电源管理等操作;数据链路层与事务层交互,接收该DLLP包,当该DLLP包中的数据包含需要数据链路层执行的操作时,执行相应操作;数据链路层将该DLLP包转换为物理层的格式,得到PLP(Physical Layer Packet,物理层包)包,发送至物理层。物理层是PCIe链路最底层,是PCIe电气特性的描述,为数据传送提供可靠的物理环境,TLP包、DLLP包和PLP包都必须通过物理层完成收发操作;物理层与数据链路层交互,接收该PLP包,发送至PCIe链路另一端的SoC的物理层,在SoC的物理层、数据链路层和事务层倒序执行与上述交互相同的操作,实现通过PCIe链路传输数据。
在事务层、数据链路层和物理层的交互过程较为复杂。如图3所示,事务层封装待传输的事务层数据生成TLP包时,按照TLP包格式,需要给待传输数据添加头部和ECRC校验;事务层将TLP包转换为DLLP包时,需要给TLP包添加包序列号和LCRC校验;数据链路层将DLLP包转换为PLP包时,需要给DLLP包添加开始边界(即头部)和结束边界(即尾部)。其中,事务层、数据链路层和物理层属于逻辑分层,PCIe PHY,PCIe控制器为实现该逻辑分层的具体硬件设备;物理层的一部分通过PCIe PHY实现,事务层、数据链路层和物理层的上半部分通过PCIe控制器实现。具体而言,使用完整的事务层、数据链路层和物理层的PCIe链路进行数据传输对数据(TLP)的有效吞吐量(throughput)的影响主要体现在三个方面:一是若以一个TLP(事务层包的头部+数据)作为有效数据,则TLP从事务层向下传递到PCIe链路之前(依次经过数据链路层和物理层),还要被添加占两个字节(Bytes,简称b)大小的数据链路层包编号、占4个字节的数据链路层LCRC、各占1个字节的物理层包的头部和尾部。这些信息仅服务于PCIe链路两端的数据传输,对事务层而言属于冗余信息,传递该部分冗余信息影响了数据有效吞吐量。二是为保证DC(Direct current,直流电源)平衡,避免出现连续的0/1,PCIe对物理层数据采用8b/10b编码(Gen1和/或Gen2)或128b/130b编码(Gen3及以上)。物理层编码同样影响了数据的有效吞吐量,例如考虑8b/10b编码的Gen1的有效带宽应为2.5Gbps(千兆比特/秒)80%=2.0Gbps。其中,Gen1、Gen2和Gen3为PCIe的不同版本,区别主要在于传输速度和带宽。三是存在一些数据链路层的DLLP和物理层的指令集(Order Sets)只是为了在链路两端传递控制信息,如功耗管理、Ack/Nak(Acknowledge character/Negative acknowledgment,确认字符/否定应答)、流量控制和链路训练等,这些DLLP和Order Sets的传递占用了PCIe的链路带宽,影响了TLP的有效吞吐量。
现有技术中,由于数据在PCIe链路上需要经过三个逻辑层次、两个具体设备中的多条逻辑管线和AXI总线的数据传输交互,对数据包格式的转换消耗大量时间。其中,AXI(Advanced eXtensible Interface,高级可扩展接口)总线作为一种高速片上总线,在当前的SoC中被广泛应用,是构建一个SoC系统最常用的内部总线,具有很强的通用性,其本身规定的传输方式(即不需要等待前一笔操作传输完成就可以发送下一笔操作)的特性显著提高了总线带宽的利用率。PCIe链路的物理实现是串连在芯片间的PCB(Printed CircuitBoard,印制电路板)线路。由于PCIe PHY和PCIe控制器均是大规模的复杂IP,由此引入的资源成本对芯片面积和功耗皆会造成不利影响。由于PCIe Switch侧的PCIe PHY与SoC侧的PCIe PHY通过PCIe链路连接,所以数据在PCIe链路上的传输存在不可避免的延迟,PCIe总线的性能优化主要依赖于PCIe PHY的带宽提升。
本发明实施例通过设计一个虚拟的PCIe本地系统桥(local system bridge),将PCIe Switch与SoC互联,避免经过PCIe链路,在数据传输逻辑的层面上,实现无需通过PCIe的数据链路层和物理层,使用本地系统桥直接在事务层传输数据;在实际硬件设备的层面上,不需要PCIe PHY,不需要PCIe控制器的大部分的资源,将SoC直接接入至PCIe Switch上。本地系统桥在PCIe Switch上部署后对PCIe总线的根复合体(Root Complex)和系统软件可见,表现为一个虚拟终端设备(Virtual_Endpoint)连接到虚拟下游端口(Virtual_DSP)上。通过将TLP包转为AXI总线数据,实现与SoC上挂载的各种主控设备,如CPU、DMA,和高速接口,如以太网、NVMe(Non-Volatile Memory express,一种使用非易失性内存主机控制器接口规范的计算机存储接口),以及存储设备,如RAM(Random Access Memory,随机存取存储器)、DDR(Double Data Rate Synchronous Dynamic Random Access Memory,双倍速率同步动态随机存储器,通常称为DDR)等进行交互(这里所列举的主控设备、高速接口和存储设备均支持AXI接口)。
本地系统桥实现了PCIe TLP与AXI总线数据的互相转换,其中,AXI总线数据是符合AXI协议规范,通过AXI总线进行传输的片内格式化数据,其内容具体为AXI读写请求和与之对应的AXI读写响应。转换分为数据传输的入口(ingress)方向和数据传输的出口(egress)方向,数据传输的入口方向为PCIe总线系统到PCIe Switch本地SoC,数据传输的出口方向为PCIe Switch本地SoC到PCIe总线系统;入口方向和出口方向实现了两条独立的数据传输通路。如图4所示,本发明实施例提供了一种PCIe Switch与SoC的互联系统,包括Switch子系统、本地系统桥和SoC子系统,所述Switch子系统、所述本地系统桥和所述SoC子系统直接部署在PCIe Switch上,所述Switch子系统与所述本地系统桥连接,所述本地系统桥与所述SoC子系统连接,其中:
所述Switch子系统,用于将来自PCIe总线系统的第一请求TLP包和第二完成TLP包向所述本地系统桥转发;以及,用于接收第二请求TLP包和第一完成TLP包,将所述第二请求TLP包和所述第一完成TLP包进行路由处理并转发至PCIe总线系统;
所述本地系统桥,用于接收所述第一请求TLP包,将所述第一请求TLP包转换为第一AXI读写请求,当所述第一请求TLP包转换为所述第一AXI读写请求后,将所述第一AXI读写请求转发至所述SoC子系统,待所述SoC子系统返回第一AXI读响应后,将所述第一AXI读响应转换为第一完成TLP包;以及,用于接收第二AXI读写请求,将所述第二AXI读写请求转换为所述第二请求TLP包,当所述第二AXI读写请求转换为所述第二请求TLP包后,所述本地系统桥将所述第二请求TLP包转发至所述Switch子系统,待所述Switch子系统返回第二完成TLP包后,将所述第二完成TLP包转换为第二AXI读写响应;
所述SoC子系统,用于向所述本地系统桥发送所述第二AXI读写请求;以及,用于接收所述第一AXI读写请求,对所述第一AXI读写请求进行处理,并返回所述第一AXI读响应。
其中,SoC子系统通过本地系统桥访问Swtich子系统,具体是SoC子系统上的各种主控设备发起的访问。
本发明实施例的本地系统桥的结构相当于部分PCIe控制器,由于省去了PCIe PHY和部分PCIe控制器的结构,显著降低了芯片面积开销和功耗成本,拓宽了本发明实施例的PCIe Switch的应用场景,在提高原有传输性能的同时,使得本发明实施例的PCIe Switch能够应用于更小型的设备中。
本地系统桥通过将来自PCIe总线域的PCIe TLP转换为AXI总线数据,以及将来自本地SoC的AXI总线数据上转换为PCIe TLP,实现现有技术中的PCIe链路功能的同时,提升了数据传输的性能、减少芯片面积开销与功耗。
本发明实施例的PCIe Switch与SoC的互联系统通过本地系统桥,进行PCIeSwitch与SoC的数据交互,为了更好的阐述本发明的PCIe Switch与SoC的互联系统,接下来对本发明实施例的本地系统桥的内部功能模块做进一步的细化,具体而言,如图5所示,所述本地系统桥包括TLP输入控制模块,其中:
所述TLP输入控制模块,用于接收第一请求TLP包和第二完成TLP包,对所述第一请求TLP包和所述第二完成TLP包进行判断,若支持则将所述第一请求TLP包和所述第二完成TLP包转发至所述TLP转AXI模块,以及将所述第一请求TLP包中的配置请求TLP包分流至PCIe配置空间,以便于所述PCIe配置空间根据所述配置请求TLP包进行配置;若不支持则丢弃所述第一请求TLP包,当被丢弃的第一请求TLP包为非报告类型时,产生不支持类型的第一完成TLP包,将所述第一完成TLP包发送至TLP输出控制模块。
本发明实施例对第一请求TLP包和第二完成TLP包进行判断后,分类处理的逻辑如下:若支持,则转发至TLP转AXI模块;若不支持,当TLP包属于NP(Non-Posted)请求包时,产生一个UR类型的完成包当TLP包属于P (Posted)请求包或完成包时,直接丢弃该TLP包。
其中,配置请求TLP包为配置请求包类型的TLP包。TLP包包括需要返回响应的(Non-Posted)和不需要返回响应的(Posted)两种。TLP包的类型可分为配置请求包、读写请求包(读请求包,Memory Read Request,MRd;写请求包,Memory Write Request,MWr)和完成包(Completion without Data,Cpl;Completion with Data,CplD)。
所述本地系统桥还包括TLP转AXI模块和第一AXI主接口,其中:
所述TLP转AXI模块,用于将所述第一请求TLP包转换为所述第一AXI读写请求,将所述第一AXI读写请求转发至第一AXI主接口。
所述本地系统桥还包括AXI转TLP模块、TLP输出控制模块和第一AXI从接口,其中:
所述TLP转AXI模块,还用于将所述第二完成TLP包转换为第二AXI读响应(对应所述第二AXI读写请求),将所述第二AXI读响应转发至第一AXI从接口。
所述AXI转TLP模块,用于将所述第二AXI读写请求转换为第二请求TLP包;还用于将第一AXI读响应(对应所述第一AXI读写请求)转换为第一完成TLP包,并将所述第二请求TLP包和所述第一完成TLP包转发至所述TLP输出控制模块。
所述TLP输出控制模块,用于将所述第二请求TLP包和所述第一完成TLP包转发至所述Switch子系统。
需要说明的是,本发明实施例的转换模块(即TLP转AXI模块和AXI转TLP模块)既要转发请求TLP包,也要转响应包(如第二AXI读响应);且转发的目的地不同,如是请求TLP包,则转到相应的AXI主接口上;如是响应包,则转到相应的AXI从接口上。
相比使用完整的事务层、数据链路层和物理层的PCIe链路,由于将原本为芯片之间的数据传输,转换为芯片内部的数据传输,仅需一层,所以无需进行层与层之间冗余信息的传输,无需为保证DC平衡而限制物理层传输速率,且本地系统桥的两个设备虚拟下游端口和虚拟终端设备的事务层直接对接,直接使用专门的内部信号代替这些DLLP和指令集做二者之间的控制信息传递,提高了进行数据传输时的有效吞吐量。在芯片内部将本地系统桥和SoC通过AXI总线连接,利用了AXI总线不需要等待前一笔操作传输完成就可以发送下一笔操作的特性,在提高总线带宽利用率的同时,由于实现了芯片内部的数据传输,极大地扩展了性能优化的实现方式,避免了性能优化主要依赖于PCIe PHY的带宽提升。
本发明实施例的PCIe Switch与SoC的互联系统实现了PCIe总线系统与SoC的低延迟数据通路,极大地降低了数据传输的延迟,提高了数据通路的性能,使得PCIe Switch的本地SoC可对PCIe总线系统中的根复合体和终端设备的内存空间进行高效访问,反之PCIe总线系统中的根复合体和终端设备也可对Switch的本地SoC的内存空间及配置空间进行高效访问。其中,根复合体、Switch和终端设备构成PCIe网络;PCIe的通信是分层的,所有数据都通过一个单一的源传输,即根复合体;终端设备处于PCIe总线系统拓扑结构的最末端,一般作为总线操作的发起者(initiator,类似PCIe总线中的主机)或者终结者(completers,类似PCIe总线中的从机),终端设备只能接受来自上级拓扑的数据包或者向上级拓扑发送数据包。
为了更好的阐述本发明的PCIe Switch与SoC的互联系统,接下来对本发明实施例的PCIe Switch与SoC的互联系统的外部特征做进一步的细化,具体而言,如图6所示,所述Switch子系统包括发送缓存器,所述本地系统桥包括请求包入接口和完成包入接口,其中:
所述发送缓存器,用于缓存要向所述本地系统桥发送的第一请求TLP包(包括配置请求TLP包)和第二完成TLP包。
所述请求包入接口,用于接收来自所述发送缓存器的所述第一请求TLP包。
所述完成包入接口,用于接收来自所述发送缓存器的所述第二完成TLP包。
所述Switch子系统还包括接收缓存器,所述本地系统桥还包括TLP出接口、第一AXI主接口和第一AXI从接口,所述SoC子系统包括第二AXI主接口和第二AXI从接口,其中:
所述TLP出接口,用于将第二请求TLP包和第一完成TLP包转发至所述接收缓存器。所述接收缓存器,用于缓存从所述本地系统桥接收到的所述第二请求TLP包和所述第一完成TLP包。
所述第二AXI从接口,用于通过AXI总线接收所述第一AXI主接口发出的所述第一AXI读写请求,并返回第一AXI读响应至所述第一AXI主接口。
所述第一AXI主接口,用于通过AXI总线将所述第一AXI读写请求转发至所述SoC子系统上的所述第二AXI从接口。还用于接收来自所述第二AXI从接口的第一AXI读响应(对应第一AXI读写请求)。
所述第一AXI从接口,用于通过AXI总线接收来自SoC子系统上的第二AXI主接口发出的第二AXI读写请求,将所述第二AXI读写请求转发至AXI转TLP模块。还用于接收来自TLP转AXI模块的第二AXI读响应,转发所述第二AXI读响应(对应第二AXI读写请求)至所述SoC子系统上的所述第二AXI主接口。
所述第二AXI主接口,用于通过AXI总线向所述第一AXI从接口发送所述第二AXI读写请求,还用于接收第一AXI从接口返回的所述第二AXI读响应。
本发明实施例本地系统桥具体的外部特征为:在SoC子系统一侧,实现了一个第一AXI主接口和一个第一AXI从接口,分别对接SoC子系统的第二AXI从接口和第二AXI主接口。其中,图6中m1表示第一AXI主接口,s1表示第一AXI从接口,m2表示第二AXI主接口,s2表示第二AXI从接口。其中,全文所有“AXI主接口”指AXI_Master,“AXI从接口”指AXI_Slave,均为AXI总线的接口,AXI_Master和AXI_Slave均为AXI协议中的专有名词。
在Switch子系统一侧,实现了一个TLP出接口(tlp_egress_intf接口),对接Switch子系统的接收缓存器;还实现了一个请求包入接口(tlp_ingress_intf0(req)接口)和完成包入接口(tlp_ingress_intf0(cpl)接口),对接Switch子系统的发送缓存器,分别用于传输第一请求TLP包和第二完成TLP包。其中,tlp_ingress_intf0(req)指该请求包入接口传入第一请求TLP包,tlp_ingress_intf0(cpl)指该完成包入接口传入第二完成TLP包。
在上述实施例提供的PCIe Switch与SoC的互联系统的基础上,提供一种PCIeSwitch与SoC的互联方法,所述PCIe Switch与SoC的互联方法用于实现本发明实施例的PCIe Switch与SoC的互联系统,如图7所示,本发明实施例提供了一种PCIe Switch与SoC的互联方法,用于实现本发明实施例的PCIe Switch与SoC的互联系统,包括:
步骤10:Switch子系统向本地系统桥发送第一请求TLP包;所述本地系统桥接收所述第一请求TLP包,将所述第一请求TLP包转换为第一AXI读写请求;当所述第一请求TLP包转换为所述第一AXI读写请求后,所述本地系统桥将所述第一AXI读写请求转发至SoC子系统;所述SoC子系统接收所述第一AXI读写请求,对所述第一AXI读写请求进行处理,处理完成后向本地系统桥返回第一AXI读响应,以便于本地系统桥将所述第一AXI读响应转换为第一完成TLP包,将所述第一完成TLP包返回至Switch子系统。
其中,第一请求TLP包为事务层数据包。TLP包实现数据通信的双方分别为请求者(Requester)和接收者(Completer),请求者使用数据包(Request)发送请求,接收者接收完数据,进行相应的处理,如果有数据返回,则产生用于返回至请求者的数据包,数据包返回后,实现本次事务的操作。在步骤10的过程中,请求者为Switch子系统,接受者为SoC子系统,数据包为TLP包(如第一请求TLP包)。本地系统桥不发起请求,也不产生响应,仅负责将该第一请求TLP包包含的数据从Switch子系统转发至SoC子系统,以及对接收到的数据进行转换。
在入口方向,Switch子系统将来自PCIe总线域的数据,以TLP包的形式传输到本地系统桥,本地系统桥根据该TLP包的类型(如读写请求包、配置请求包和完成包),对该TLP包进行相应的处理。如果该TLP包需要转发至SoC子系统,以便于SoC子系统收到该TLP包包含的请求后,作出相应的响应,由于本地系统桥与SoC子系统通过AXI总线连接,则本地系统桥根据AXI总线协议,将该TLP包转换为第一AXI读写请求,将该第一AXI读写请求转发至SoC子系统。
步骤20:所述SoC子系统向本地系统桥发送第二AXI读写请求;所述本地系统桥接收所述第二AXI读写请求,将所述第二AXI读写请求转换为第二请求TLP包;当所述第二AXI读写请求转换为所述第二请求TLP包后,所述本地系统桥将所述第二请求TLP包转发至所述Switch子系统;所述Switch子系统接收所述第二请求TLP包,对所述第二请求TLP包进行处理,处理完成后向本地系统桥返回第二完成TLP包,以便于本地系统桥将所述第二完成TLP包转换为第二AXI读响应,将所述第二AXI读响应返回至SoC子系统。
其中,第二AXI读写请求为通过AXI总线,从SoC子系统传输至本地系统桥的AXI协议格式的读写请求。在出口方向,SoC子系统将来自PCIe Switch本地SoC的数据,以AXI读写请求的形式传输到本地系统桥,本地系统桥根据该AXI读写请求的地址信息,通过Switch子系统传输到PCIe总线域。
对该AXI读写请求进行相应的处理。如果该AXI读写请求需要转发至SoC子系统,以便于SoC子系统收到该AXI读写请求后,作出相应的响应,由于本地系统桥与Switch子系统通过PCIe总线连接,则本地系统桥根据PCIe总线协议,将该AXI读写请求转换为第二请求TLP包,将该第二请求TLP包转发至SoC子系统。
为了更好的阐述本发明实施例的PCIe Switch与SoC的互联方法,对本发明实施例的PCIe Switch与SoC的互联系统如何处理操作对象(PCIe协议的TLP和AXI协议的AXI总线数据),以及本地系统桥如何实现相应处理和控制,进行具体说明,接下来对本发明实施例的PCIe Switch与SoC的互联方法的步骤10做进一步的细化,如图8所示,具体而言,包括:
步骤101:Switch子系统向本地系统桥发送第一请求TLP包。
Switch子系统的发送缓存器,根据Switch子系统的需求,将需要发送的请求以TLP包的形式发送至本地系统桥。其中,根据该TLP包的类型,即读写请求包、配置请求包和完成包,分别将读写请求包和配置请求包发送至请求包入接口,完成包发送至完成包入接口,以便于将TLP包包含的数据发送至本地系统桥的不同模块,执行相应的操作。
步骤102:所述本地系统桥接收所述第一请求TLP包,将所述第一请求TLP包转换为第一AXI读写请求。请求包入接口和完成包入接口接收第一请求TLP包,TLP输入控制模块根据该第一请求TLP包的类型(配置请求包、读写请求包和完成包),对该第一请求TLP包执行相应的操作
步骤103:当所述第一请求TLP包转换为第一AXI读写请求后,所述本地系统桥将所述第一AXI读写请求转发至SoC子系统。其中,该TLP包被TLP转AXI模块转换为第一AXI主接口上的AXI读写请求(产生arvalid/awvalid信号),本地系统桥的第一AXI主接口向SoC子系统的第二AXI从接口发送该读写请求,实现对AXI读写请求的转发。
步骤104:所述SoC子系统接收所述第一AXI读写请求,对所述第一AXI读写请求进行处理后返回第一AXI读响应,以根据所述第一AXI读响应完成SoC子系统方向的通信。第二AXI从接口接收所述第一AXI读写请求,SoC对所述第一AXI读写请求进行处理。其中,若相应TLP包为需要返回响应的类型(Non-Posted),则SoC对该AXI读写请求进行处理后,返回响应至本地系统桥的第一AXI主接口,以完成该入口方向的读写请求。
为了更好的阐述本发明的PCIe Switch与SoC的互联方法,接下来对本发明实施例的PCIe Switch与SoC的互联方法的步骤102做进一步的细化,具体而言,所述步骤102包括:
步骤1021:所述本地系统桥的TLP输入控制模块判断所述本地系统桥是否支持所述第一请求TLP包。其中,根据第一请求TLP包是否符合PCIe的路由规则、是否出错(ECRC校验出错、TLP格式有误等),和提前判断第一请求TLP包被转为AXI总线数据后是否能被Switch子系统本地的SoC处理(如不能处理,则提前终止,避免影响总线效率),决定是否支持该第一请求TLP包。其中,相应判断的具体实现方式由本领域普通技术人员根据具体使用场景自行指定,在此不做限定。
步骤1022:若支持所述第一TLP包,则所述TLP输入控制模块判断所述第一TLP包是否需要返回响应;若需要返回响应,则根据所述第一TLP包的类型(配置请求包或读写请求包),进行相应的正常处理;若不需要返回响应,则所述第一TLP包为MRd TLP的完成包,所述TLP输入控制模块将所述第一TLP包转发至所述本地系统桥的TLP转AXI模块,以便于所述TLP转AXI模块转换该完成包(Cpl/CpID TLP)为第一AXI从接口上的第一AXI读响应。
其中,入口方向上以TLP包形式传输的读写请求,从PCIe TLP包(MRd/MWr)转换为第一AXI主接口上的第一AXI读写请求;入口方向上以TLP包形式传输的读响应从PCIe TLP包(Cpl/CplD)转换为第一AXI从接口上的总线响应。
其中,所述第一完成TLP包为PCIe完成包,是TLP包的一种类型。该TLP包为第一完成TLP包时,TLP转AXI模块将其转换为第一AXI从接口上的第二AXI读响应(产生rvalid信号)。
步骤1023:若不支持所述第一请求TLP包,则判断所述第一请求TLP包是否需要返回响应;若需要返回响应,则产生对应的第二完成TLP包,将所述第二完成TLP包返回至所述Switch子系统;若不需要返回响应,则丢弃所述第一请求TLP包。其中,所述第二完成TLP包为UR类型的完成包,是TLP包的一种类型。不支持第一请求TLP包时,TLP输入控制模块判断所述第一请求TLP包是否需要返回响应;若需要返回响应,则TLP输出控制模块产生对应的第二完成TLP包,将所述第二完成TLP包返回至所述Switch子系统,向PCIe总线域路由。
为了更好的阐述本发明的PCIe Switch与SoC的互联方法,接下来对本发明实施例的PCIe Switch与SoC的互联方法的步骤1022中需要返回响应的情况做进一步的细化,具体而言,包括:
步骤10221:若支持所述第一请求TLP包,则所述TLP输入控制模块判断所述第一请求TLP包是否需要返回响应。
步骤10222:若所述第一请求TLP包为配置请求TLP包,则所述TLP输入控制模块将所述配置请求TLP包路由至所述本地系统桥的对应配置空间,以便于根据所述配置请求TLP包,实现所述配置空间;所述TLP输出控制模块产生对应的第一完成TLP包,将所述第一完成TLP包返回至所述Switch子系统。
其中,配置空间为本地系统桥的虚拟下游端口的配置空间,和本地系统桥的虚拟终端设备的配置空间。配置空间是每一个PCIe设备都要提供的一系列寄存器,位于硬件设备中,用于对本地系统桥进行配置。其中,所述第一完成TLP包为CFG类型的完成包,用于对实现配置空间返回响应。
步骤10223:若所述第一请求TLP包为读写请求TLP包,则所述TLP转AXI模块将所述读写请求TLP包转换为所述本地系统桥的第一AXI主接口上的所述第一AXI读写请求。其中,读写请求TLP包为读写请求包类型的TLP包。TLP输入控制模块获取该读写请求TLP包的地址,根据该地址是否命中本地系统桥的虚拟终端设备的某一Bar(Base Address Register,基地址寄存器)空间,进行寻址;TLP输入控制模块将该读写请求TLP包的地址转换为AXI协议格式,以便于后续将其转换为第一AXI读写请求。
所述步骤1022为需要返回响应的情况时,为了更好的阐述本发明的PCIe Switch与SoC的互联方法,接下来对本发明实施例的PCIe Switch与SoC的互联方法的步骤103做进一步的细化,具体而言,所述步骤103包括:
步骤1031:当所述第一AXI读写请求为所述第一AXI主接口上的读请求时,所述本地系统桥的第一主端口控制模块将所述读请求转发至所述SoC子系统,将所述SoC子系统返回的第一AXI读响应转发至所述AXI转TLP模块;所述AXI转TLP模块将所述第一AXI读响应转换为第一完成TLP包,将所述第一完成TLP包返回至所述Switch子系统。其中,所述第一完成TLP包为PCIe完成包,是TLP包的一种类型。
步骤1032:当所述第一AXI读写请求为所述第一AXI主接口上的写请求时,所述第一AXI主接口将所述写请求转发至所述SoC子系统,接收所述SoC子系统返回的写响应,以完成所述写响应对应的所述第一AXI读写请求。
综上所述,如图5所示,本发明实施例的PCIe Switch与SoC的互联方法实现了一种本地系统桥的内部功能逻辑。如图8所示,本发明实施例的PCIe Switch与SoC的互联方法实现了入口方向的数据处理流程。
本发明实施例的PCIe Switch与SoC的互联方法还包括出口方向的数据处理流程,具体而言,所述SoC子系统向本地系统桥发送第二AXI读写请求。其中,SoC的第二AXI主接口向本地系统桥的第一AXI从接口发送第二AXI读写请求。所述本地系统桥接收所述第二AXI读写请求,将所述第二AXI读写请求转换为第二请求TLP包。其中,第一AXI从接口根据接收到的第二AXI读写请求的地址,进行地址转换和寻址操作,AXI转TLP模块将第二AXI读写请求转换为第二TLP包。当所述第二AXI读写请求转换为第二请求TLP包后,本地系统桥将所述第二请求TLP包转发至Switch子系统。其中,TLP输出控制模块将第二TLP向Switch子系统(PCIe总线域)转发。Switch子系统接收所述第二请求TLP包,对所述第二请求TLP包进行处理。其中,第二AXI从接口接收第二请求TLP包。出口方向上的第二AXI读写请求从第一AXI从接口上的总线请求转换为PCIe TLP包(MRd/MWr格式);第一AXI读响应从第一AXI从接口上的总线响应。
如图9所示,接下来对本发明实施例出口方向的数据处理流程做进一步的细化,具体而言,如图10所示,在步骤20中,所述本地系统桥接收所述第二AXI读写请求,将所述第二AXI读写请求转换为第二请求TLP包包括:
步骤201a:所述本地系统桥的第一AXI从接口接收所述第二AXI读写请求,判断PCIe协议格式的地址是否命中所述本地系统桥的地址转换域。
PCIe Switch是一个多端口设备,其主要功能为把数据接收端口(ingress port)上收到的数据从数据转发端口(egress port)上转发出去(数据格式为TLP包),本发明实施例的本地系统桥在SoC至Switch子系统方向上,TLP包最终在Swtich子系统的某一数据转发端口上被发送,因此需要根据TLP包内的地址字段提前计算目标数据转发端口的在Switch子系统内的数据转发端口编号(egress port index)。
步骤202a:若命中所述地址转换域,则所述第一AXI从接口提前计算第二AXI读写请求转为第二请求TLP包后在Switch子系统上的输出端口的编号;其中,所述输出端口的编号为目标数据转发端口编号。
步骤203a:根据所述目标数据转发端口编号,判断对应的目标数据转发端口是否被使能;若使能,则所述第一AXI从接口将所述第二AXI读写请求转发至所述本地系统桥的AXI转TLP模块,以便于所述AXI转TLP模块将所述第二AXI读写请求转换为所述第二请求TLP包;若未使能,则所述本地系统桥的第一AXI从接口产生异常读写响应。
第一AXI从接口根据第二AXI读写请求进行寻址后,通过AXI转TLP模块得到了第二请求TLP包,TLP输出控制模块将该第二请求TLP包向Switch子系统(PCIe总线域)传输,TLP输出控制模块对第二请求TLP包进行路由规则检查和数据分流。
步骤204a:若未命中所述地址转换域,则所述第一AXI从接口产生所述异常读写响应。
为了对本地系统桥将第二请求TLP包转发至Switch子系统进行说明,具体而言,在步骤20中,如图11所示,所述当所述第二AXI读写请求转换为所述第二请求TLP包后,所述本地系统桥将所述第二请求TLP包转发至所述Switch子系统包括:
步骤201b:所述本地系统桥的TLP输出控制模块接收所述第二请求TLP包,判断所述第二请求TLP包是否为MRd TLP包。
步骤202b:若为所述MRd TLP包,则判断所述MRd TLP包是否符合PCIe上行路由规则;若符合,则将所述MRd TLP包转发至所述Switch子系统,并根据是否在预设时间内接收到所述Switch子系统返回的第二完成TLP包,所述第一AXI从接口据此选择性地产生正常AXI读响应和/或异常AXI读响应;若不符合,则丢弃所述MRd TLP包,并产生对应的第二完成TLP包,所述第一AXI从接口根据所述第二完成TLP包产生所述异常AXI读响应。
其中,所述预设时间由本领域普通技术人员根据实际使用场景的错误处理机制自行设置;PCIe上行路由规则由本领域技术人员根据具体使用场景进行选择。TLP输出控制模块将MRd TLP包转发至Switch子系统(即PCIe总线系统)后,TLP输入控制模块等待Switch子系统返回的第二完成TLP包。若在预设时间内接收到第二完成TLP包,则确定该第二完成TLP包正常,第一AXI从接口产生正常AXI读响应,以完成对出口方向读请求的处理;若未在预设时间内接收到第二完成TLP包,则确定该第二完成TLP包产生超时错误,第一AXI从接口产生异常AXI读响应,以传输该第二完成TLP包产生的超时错误。
MRd TLP包不符合PCIe上行路由规则时,产生的第二完成TLP包为UR类型的完成包。
步骤203b:若不为所述MRd TLP包,则所述第一AXI从接口产生正常AXI写响应,以结束当前的第二AXI写请求;判断非所述MRd TLP包的所述第二请求TLP包是否符合所述PCIe上行路由规则;若符合,则将所述第二请求TLP包转发至所述Switch子系统;若不符合,则丢弃所述第二请求TLP包。
其中,非所述MRd TLP包的所述第二请求TLP包符合PCIe上行路由规则时,TLP输出控制模块转发第二请求TLP包至Switch子系统,以完成对出口方向写请求的处理。
值得注意的是,在功能方面,本发明实施例通过在PCIe Switch的SoC子系统和Switch子系统之间提供大规模的数据交换通路,使得SoC在PCIe Switch上实现后,打破了一些功能强大的高速接口在PCIe Swtich芯片上的使用限制,极大地增加了PCIe Switch的功能可扩展性。现有技术中,各种功能强大的高速接口(如以太网、NVMe等)只能在SoC子系统的内部发挥作用,无法与PCIe Switch芯片的核心部分(即Switch子系统)做数据交互和控制管理。其中,一个高速接口与Switch子系统交互的具体示例如图12所示。
在性能方面,本发明实施例使用两大接口IP供应商的高标准化程度的IP,提供PCIe控制器和PCIe PHY的延迟(latency)实测数据,按照现有技术,通过PCIe控制器和PCIePHY建立端到端的PCIe连接后,在PCIe Gen4速率下该端到端链路(link)的延迟(一端的PCIe控制器至一端的PCIe PHY至另一端的PCIe PHY至另一端的PCIe控制器)最小,按照最小的TLP及最大的支持速率(Cen4芯片)计算约为150ns(仅忽略PCB走线延迟,非常接近真实情况。对比而言,本发明实施例通过将虚拟终端设备至虚拟下游端口的带宽按照PCIe Gen4的标准(主时钟频率为500Mhz)设计实现时,处理一个TLP包需要20至28个时钟周期(500Mhz频率的工作时钟每个时钟周期为1s/500Mhz = 2ns),理论延迟约为40ns至54ns。其中,Mhz为Mega Hertz,即兆赫;ns为nano second,即纳秒。其中,由于该IP标准化程度较高,且目前本领域技术人员使用的IP基本来源于该两大接口供应商,因此不同本领域技术人员使用该IP测试得到的延迟的数据差别较小,可以证明本发明实施例的性能改进效果。
本发明实施例在上述实施例提供的PCIe Switch与SoC的互联系统的基础上,提供另一种的PCIe Switch与SoC的互联系统。如图13所示,具体而言,本实施例与上述实施例中PCIe Switch与SoC的互联系统的不同之处在于,所述SoC子系统还包括各种类型的高速接口控制器,其中:
所述高速接口控制器,用于通过AXI总线接收所述第一AXI读写请求,对所述第一AXI读写请求进行处理,并返回第一AXI读响应,以根据所述第一AXI读响应完成SoC子系统方向的通信。以及,用于通过AXI总线向所述本地系统桥的第一AXI从接口发送所述第二AXI读写请求,并接收和处理第二AXI读响应,以根据所述第二AXI读响应完成Switch子系统方向的通信。
上述本发明实施例的PCIe Switch与SoC的互联系统,在SoC上存在多个高速接口控制器时,单个本地系统桥仅支持通过AXI总线一对一直接接入一个高速接口控制器。在可选的实施例中,高速接口控制器为SATA(Serial Advanced Technology Attachment,串行高级技术附件) AHCI(Serial ATA Advanced Host Controller Interface)、千兆以太网(Giga Ethernet)和NVMe等。对每个高速接口控制器实现一条专用数据通路使得数据传输的延迟低,性能优势明显。但其本地系统桥均一对一支持高速接口控制器,在一些需要对数据通路进行扩展的实际应用场景中,实用性较低。
如图14所示,在可选的实施例中,可在本地系统桥与高速接口控制器之间接入AXI矩阵(在SoC子系统上实现一个AXI矩阵),以提高接入高速接口控制器的可扩展性。AXI矩阵是基于AXI总线设计的全交叉数据交换矩阵,用于互联所有接入AXI矩阵的AXI主从接口,包括本发明实施例的第一AXI主接口、第一AXI从接口、第二AXI主接口、第二AXI从接口,实现第一AXI读写请求和第一AXI读响应在第一AXI主接口和第二AXI从接口之间的传输,及第二AXI读写请求和所述第二AXI读写响应在第二AXI主接口和第一AXI从接口之间的传输。如图15所示,m1表示第一AXI主接口,s1表示第一AXI从接口,m2表示第二AXI主接口,s2表示第二AXI从接口;其中,该AXI矩阵包含第二AXI主接口和第二AXI从接口,第二AXI从接口通过AXI总线接收本地系统桥的第一AXI主接口发送的第一AXI读写请求,第二AXI主接口通过AXI总线向本地系统桥的第一AXI从接口发送第二AXI读写请求。
PCIe Switch芯片是一种高速PCIe交换设备,便于主机和服务器的PCIe接口扩展,以达到允许接入多个PCIe子设备的效果。上述实施例的PCIe Switch与SoC的互联系统仅支持一对一接入,本实施例的PCIe Switch与SoC的互联系统通过在SoC上设置AXI矩阵,在实现低延迟通路和节省芯片面积及功耗的基础上,实现了与现有技术中PCIe控制器相同的功能。通过AXI矩阵实现高可扩展性的一对多数据通路,适用于需要对数据通路进行扩展的实际应用场景。但由于AXI矩阵的存在,需要对AXI矩阵中的数据进行仲裁、分流、路由判断等处理,以便于支持多个高速接口控制器,且AXI矩阵与每个高速接口控制器进行数据传输交互时,都需要增加一条使用AXI总线的数据传输通路,以上两个因素会造成本实施例的PCIeSwitch与SoC的互联系统相比上述实施例的PCIe Switch与SoC的互联系统存在一定延迟。
需要说明的是,上述装置和系统内的模块、单元之间的信息交互、执行过程等内容,由于与本发明的处理方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或光盘等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种PCIe Switch与SoC的互联系统,其特征在于,包括Switch子系统、本地系统桥和SoC子系统,所述Switch子系统、所述本地系统桥和所述SoC子系统直接部署在PCIe Switch上,所述Switch子系统与所述本地系统桥连接,所述本地系统桥与所述SoC子系统连接,其中:
所述Switch子系统,用于将来自PCIe总线系统的第一请求TLP包和第二完成TLP包向所述本地系统桥转发;以及,用于接收第二请求TLP包和第一完成TLP包,将所述第二请求TLP包和所述第一完成TLP包进行路由处理并转发至PCIe总线系统;
所述本地系统桥,用于接收所述第一请求TLP包,将所述第一请求TLP包转换为第一AXI读写请求,当所述第一请求TLP包转换为所述第一AXI读写请求后,将所述第一AXI读写请求转发至所述SoC子系统,待所述SoC子系统返回第一AXI读响应后,将所述第一AXI读响应转换为第一完成TLP包;以及,用于接收第二AXI读写请求,将所述第二AXI读写请求转换为所述第二请求TLP包,当所述第二AXI读写请求转换为所述第二请求TLP包后,所述本地系统桥将所述第二请求TLP包转发至所述Switch子系统,待所述Switch子系统返回第二完成TLP包后,将所述第二完成TLP包转换为第二AXI读写响应;
所述SoC子系统,用于向所述本地系统桥发送所述第二AXI读写请求;以及,用于接收所述第一AXI读写请求,对所述第一AXI读写请求进行处理,并返回所述第一AXI读响应。
2.根据权利要求1所述的PCIe Switch与SoC的互联系统,其特征在于,所述本地系统桥还包括TLP转AXI模块和第一AXI主接口,其中:
所述TLP转AXI模块,用于将所述第一请求TLP包转换为所述第一AXI读写请求,将所述第一AXI读写请求转发至第一AXI主接口。
3.根据权利要求2所述的PCIe Switch与SoC的互联系统,其特征在于,所述本地系统桥还包括AXI转TLP模块、TLP输出控制模块和第一AXI从接口,其中:
所述TLP转AXI模块,还用于将所述第二完成TLP包转换为第二AXI读响应,将所述第二AXI读响应转发至第一AXI从接口;
所述AXI转TLP模块,用于将所述第二AXI读写请求转换为第二请求TLP包;还用于将第一AXI读响应转换为第一完成TLP包,并将所述第二请求TLP包和所述第一完成TLP包转发至所述TLP输出控制模块;
所述TLP输出控制模块,用于将所述第二请求TLP包和所述第一完成TLP包转发至所述Switch子系统。
4.根据权利要求1所述的PCIe Switch与SoC的互联系统,其特征在于,所述Switch子系统包括发送缓存器,所述本地系统桥包括请求包入接口和完成包入接口,其中:
所述发送缓存器,用于缓存要向所述本地系统桥发送的第一请求TLP包和第二完成TLP包;
所述请求包入接口,用于接收来自所述发送缓存器的所述第一请求TLP包;
所述完成包入接口,用于接收来自所述发送缓存器的所述第二完成TLP包。
5.根据权利要求1所述的PCIe Switch与SoC的互联系统,其特征在于,所述Switch子系统包括接收缓存器,所述本地系统桥还包括TLP出接口、第一AXI主接口和第一AXI从接口,所述SoC子系统包括第二AXI主接口和第二AXI从接口,其中:
所述TLP出接口,用于将第二请求TLP包和第一完成TLP包转发至所述接收缓存器;所述接收缓存器,用于缓存从所述本地系统桥接收到的所述第二请求TLP包和所述第一完成TLP包;
所述第二AXI从接口,用于通过AXI总线接收所述第一AXI主接口发出的所述第一AXI读写请求,并返回第一AXI读响应至所述第一AXI主接口;
所述第一AXI主接口,用于通过AXI总线将所述第一AXI读写请求转发至所述SoC子系统上的所述第二AXI从接口;还用于接收来自所述第二AXI从接口的第一AXI读响应;
所述第一AXI从接口,用于通过AXI总线接收来自SoC子系统上的第二AXI主接口发出的第二AXI读写请求,将所述第二AXI读写请求转发至AXI转TLP模块;还用于接收来自TLP转AXI模块的第二AXI读响应,转发所述第二AXI读响应至所述SoC子系统上的所述第二AXI主接口;
所述第二AXI主接口,用于通过AXI总线向所述第一AXI从接口发送所述第二AXI读写请求,还用于接收第一AXI从接口返回的所述第二AXI读响应。
6.根据权利要求1所述的PCIe Switch与SoC的互联系统,其特征在于,所述SoC子系统包括高速接口控制器,其中:
所述高速接口控制器,用于通过AXI总线接收所述第一AXI读写请求,对所述第一AXI读写请求进行处理,并返回第一AXI读响应,以根据所述第一AXI读响应完成Switch子系统到SoC子系统方向的通信;
以及,用于通过AXI总线向所述本地系统桥的第一AXI从接口发送所述第二AXI读写请求,并接收和处理第二AXI读响应,以根据所述第二AXI读响应完成SoC子系统到Switch子系统方向的通信。
7.一种PCIe Switch与SoC的互联方法,其特征在于,所述PCIe Switch与SoC的互联方法用于实现权利要求1至6中任一项所述的PCIe Switch与SoC的互联系统,包括:
Switch子系统向本地系统桥发送第一请求TLP包;所述本地系统桥接收所述第一请求TLP包,将所述第一请求TLP包转换为第一AXI读写请求;当所述第一请求TLP包转换为所述第一AXI读写请求后,所述本地系统桥将所述第一AXI读写请求转发至SoC子系统;所述SoC子系统接收所述第一AXI读写请求,对所述第一AXI读写请求进行处理,处理完成后向本地系统桥返回第一AXI读响应,以便于本地系统桥将所述第一AXI读响应转换为第一完成TLP包,将所述第一完成TLP包返回至Switch子系统;
所述SoC子系统向本地系统桥发送第二AXI读写请求;所述本地系统桥接收所述第二AXI读写请求,将所述第二AXI读写请求转换为第二请求TLP包;当所述第二AXI读写请求转换为所述第二请求TLP包后,所述本地系统桥将所述第二请求TLP包转发至所述Switch子系统;所述Switch子系统接收所述第二请求TLP包,对所述第二请求TLP包进行处理,处理完成后向本地系统桥返回第二完成TLP包,以便于本地系统桥将所述第二完成TLP包转换为第二AXI读响应,将所述第二AXI读响应返回至SoC子系统。
8.根据权利要求7所述的PCIe Switch与SoC的互联方法,其特征在于,所述本地系统桥接收所述第二AXI读写请求,将所述第二AXI读写请求转换为第二请求TLP包包括:
所述本地系统桥的第一AXI从接口接收所述第二AXI读写请求,判断PCIe协议格式的地址是否命中所述本地系统桥的地址转换域;
若命中所述地址转换域,则所述第一AXI从接口提前计算第二AXI读写请求转为第二请求TLP包后在Switch子系统上的输出端口的编号;其中,所述输出端口的编号为目标数据转发端口编号;
根据所述目标数据转发端口编号,判断对应的目标数据转发端口是否被使能;若使能,则所述第一AXI从接口将所述第二AXI读写请求转发至所述本地系统桥的AXI转TLP模块,以便于所述AXI转TLP模块将所述第二AXI读写请求转换为所述第二请求TLP包;若未使能,则所述本地系统桥的第一AXI从接口产生异常读写响应;
若未命中所述地址转换域,则所述第一AXI从接口产生所述异常读写响应。
9.根据权利要求8所述的PCIe Switch与SoC的互联方法,其特征在于,所述当所述第二AXI读写请求转换为所述第二请求TLP包后,所述本地系统桥将所述第二请求TLP包转发至所述Switch子系统包括:
所述本地系统桥的TLP输出控制模块接收所述第二请求TLP包,判断所述第二请求TLP包是否为MRd TLP包;
若为所述MRd TLP包,则判断所述MRd TLP包是否符合PCIe上行路由规则;若符合,则将所述MRd TLP包转发至所述Switch子系统,并根据是否在预设时间内接收到所述Switch子系统返回的第二完成TLP包,所述第一AXI从接口据此选择性地产生正常AXI读响应和/或异常AXI读响应;若不符合,则丢弃所述MRd TLP包,并产生对应的第二完成TLP包,所述第一AXI从接口根据所述第二完成TLP包产生所述异常AXI读响应;
若不为所述MRd TLP包,则所述第一AXI从接口产生正常AXI写响应,以结束当前的第二AXI写请求;判断非所述MRd TLP包的所述第二请求TLP包是否符合所述PCIe上行路由规则;若符合,则将所述第二请求TLP包转发至所述Switch子系统;若不符合,则丢弃所述第二请求TLP包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410036940.XA CN117539820B (zh) | 2024-01-10 | 2024-01-10 | 一种PCIe Switch与SoC的互联系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410036940.XA CN117539820B (zh) | 2024-01-10 | 2024-01-10 | 一种PCIe Switch与SoC的互联系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117539820A CN117539820A (zh) | 2024-02-09 |
CN117539820B true CN117539820B (zh) | 2024-05-03 |
Family
ID=89788515
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410036940.XA Active CN117539820B (zh) | 2024-01-10 | 2024-01-10 | 一种PCIe Switch与SoC的互联系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117539820B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012023149A2 (en) * | 2010-08-19 | 2012-02-23 | Ineda Systems Pvt. Ltd | Multi-root input output virtualization aware switch |
US9489304B1 (en) * | 2011-11-14 | 2016-11-08 | Marvell International Ltd. | Bi-domain bridge enhanced systems and communication methods |
WO2018042767A1 (ja) * | 2016-08-31 | 2018-03-08 | 株式会社ソシオネクスト | バス制御回路、半導体集積回路、回路基板、情報処理装置およびバス制御方法 |
CN113961494A (zh) * | 2021-10-21 | 2022-01-21 | 上海安路信息科技股份有限公司 | 一种pcie总线与axi总线的桥接系统 |
WO2023076597A1 (en) * | 2021-10-29 | 2023-05-04 | Microchip Technology Incorporated | System and method for flexibly crossing packets of different protocols |
CN116225992A (zh) * | 2023-02-24 | 2023-06-06 | 山东云海国创云计算装备产业创新中心有限公司 | 一种支持虚拟化仿真设备的NVMe验证平台及方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11269795B2 (en) * | 2019-08-01 | 2022-03-08 | Vulcan Technologies Shanghai Co., Ltd. | Intelligent controller and sensor network bus, system and method including a link media expansion and conversion mechanism |
US20220113967A1 (en) * | 2021-12-23 | 2022-04-14 | Intel Corporation | Accelerator fabric for discrete graphics |
US20220334995A1 (en) * | 2021-12-30 | 2022-10-20 | Debendra Das Sharma | Parameter exchange for a die-to-die interconnect |
US20230222082A1 (en) * | 2022-01-12 | 2023-07-13 | Xilinx, Inc. | Zoned accelerator embedded processing |
US11860811B2 (en) * | 2022-03-23 | 2024-01-02 | Arm Limited | Message protocol for a data processing system |
-
2024
- 2024-01-10 CN CN202410036940.XA patent/CN117539820B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012023149A2 (en) * | 2010-08-19 | 2012-02-23 | Ineda Systems Pvt. Ltd | Multi-root input output virtualization aware switch |
US9489304B1 (en) * | 2011-11-14 | 2016-11-08 | Marvell International Ltd. | Bi-domain bridge enhanced systems and communication methods |
WO2018042767A1 (ja) * | 2016-08-31 | 2018-03-08 | 株式会社ソシオネクスト | バス制御回路、半導体集積回路、回路基板、情報処理装置およびバス制御方法 |
CN113961494A (zh) * | 2021-10-21 | 2022-01-21 | 上海安路信息科技股份有限公司 | 一种pcie总线与axi总线的桥接系统 |
WO2023076597A1 (en) * | 2021-10-29 | 2023-05-04 | Microchip Technology Incorporated | System and method for flexibly crossing packets of different protocols |
CN116225992A (zh) * | 2023-02-24 | 2023-06-06 | 山东云海国创云计算装备产业创新中心有限公司 | 一种支持虚拟化仿真设备的NVMe验证平台及方法 |
Non-Patent Citations (1)
Title |
---|
<基于PCIe Gen 4和AXI总线的接口设计与验证>;杨聪;<中国优秀硕士学位论文全文数据库 (信息科技辑)>;20220430(第4期);I137-109 * |
Also Published As
Publication number | Publication date |
---|---|
CN117539820A (zh) | 2024-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9430432B2 (en) | Optimized multi-root input output virtualization aware switch | |
JP4928732B2 (ja) | データ転送システム及び電子機器 | |
US10698856B1 (en) | Alternative protocol selection | |
CN114168520B (zh) | 光纤通信总线装置、设备和系统 | |
CN110837486A (zh) | 一种基于FPGA的FlexRay-CPCIe通信模块 | |
CN111177065A (zh) | 一种多芯片互联方法和装置 | |
CN110635985A (zh) | 一种FlexRay-CPCIe通信模块 | |
US11693813B2 (en) | Alternative protocol over physical layer | |
CN116647247B (zh) | 一种适用于灵活连接的信号收发机及信号收发系统 | |
CN112148651B (zh) | 一种增强型rapidio互联装置及设备 | |
CN111338996A (zh) | 一种支持多协议的复合总线控制器 | |
Slogsnat et al. | An open-source hypertransport core | |
US8090893B2 (en) | Input output control apparatus with a plurality of ports and single protocol processing circuit | |
US6822976B1 (en) | Method and apparatus for high throughput multiplexing of data | |
CN117539820B (zh) | 一种PCIe Switch与SoC的互联系统及方法 | |
US6615306B1 (en) | Method and apparatus for reducing flow control and minimizing interface acquisition latency in a hub interface | |
CN114866497A (zh) | 一种全局异步站内同步的PCIe交换电路和方法 | |
Hanawa et al. | Pearl: Power-aware, dependable, and high-performance communication link using pci express | |
EP2300925B1 (en) | System to connect a serial scsi array controller to a storage area network | |
Verma et al. | Pcie bus: A state-of-the-art-review | |
KR100432701B1 (ko) | 컴퓨터 구성요소 간의 개선된 인터페이스를 위한 방법 및장치 | |
US7039047B1 (en) | Virtual wire signaling | |
CN115827532B (zh) | 一种PCIe HBA IOC内部总线网络互联方法 | |
US20230342325A1 (en) | Alternative protocol over physical layer | |
JP4930554B2 (ja) | 入出力制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |