CN117692535A - 一种PCIe协议报文保序装置 - Google Patents
一种PCIe协议报文保序装置 Download PDFInfo
- Publication number
- CN117692535A CN117692535A CN202410159116.3A CN202410159116A CN117692535A CN 117692535 A CN117692535 A CN 117692535A CN 202410159116 A CN202410159116 A CN 202410159116A CN 117692535 A CN117692535 A CN 117692535A
- Authority
- CN
- China
- Prior art keywords
- cpl
- message
- order
- preserving
- queue
- 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.)
- Granted
Links
- 230000000903 blocking effect Effects 0.000 claims description 29
- 230000005540 biological transmission Effects 0.000 claims description 25
- 238000000034 method Methods 0.000 claims description 20
- 238000004364 calculation method Methods 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 4
- 230000003139 buffering effect Effects 0.000 claims description 3
- 230000000977 initiatory effect Effects 0.000 claims description 2
- 230000009286 beneficial effect Effects 0.000 abstract description 3
- 238000004321 preservation Methods 0.000 abstract description 3
- 238000012163 sequencing technique Methods 0.000 abstract 1
- 230000032683 aging Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 5
- 230000006872 improvement Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- NGVDGCNFYWLIFO-UHFFFAOYSA-N pyridoxal 5'-phosphate Chemical compound CC1=NC=C(COP(O)(O)=O)C(C=O)=C1O NGVDGCNFYWLIFO-UHFFFAOYSA-N 0.000 description 3
- 238000011144 upstream manufacturing Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 101000741965 Homo sapiens Inactive tyrosine-protein kinase PRAG1 Proteins 0.000 description 1
- 102100038659 Inactive tyrosine-protein kinase PRAG1 Human genes 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种PCIe协议报文保序装置,包括基本保序单元、基于基本保序单元构建PCIe交换设备的保序交换网络、基于基本保序单元构建PCIe终端设备的保序终端;基本保序单元包括译码缓存模块、序控制模块和错误处理模块。本发明能实现不同事务类型报文间的保序,使得报文调度和排序的延时降低,效率提高,且大幅降低序信息保存所需的片上存储器开销和面积,有利于提升芯片实现的性能;还能提高报文交换的效率,同时避免交换设备中多端口跨时钟域同步和信息比对失败导致报文乱序的风险。
Description
技术领域
本发明涉及一种PCIe协议报文保序装置,属于PCIe技术领域。
背景技术
PCIe是一种高速串行计算机扩展总线标准,相对于此前旧的PCI/PCI-X总线协议,PCIe采用了点到点的互连拓扑,取消了共享并行总线架构,在设备间提供独立的双向全双工的高速互连串行链路,支持多个设备间的并发访问。PCIe总线的各个层次由硬件逻辑实现,协议共分为4层:物理层、数据链路层、事务层和应用层,如图1所示。
物理层实现了数据在高速串行链路的收/发,编码/解码,链路训练,状态机初始化和扰码等功能,PCIe设备通过高速串行链路相互连接在一起。物理层创建和解码专门用于同步和管理链路的物理层序列报文(PLP),接收和转发链路层报文(DLLP)和事务层报文(TLP),上述PLP/DLLP/TLP经过一系列处理后,通过物理层中电气子层的高速串行链路在各个PCIe设备间传输,目前已发布的PCIe 6.0协议支持最高达64GT/s的数据传输速率。
数据链路层实现了链路管理、TLP错误检测,流量控制、功耗管理以及报文可靠传输等功能。数据链路层接收和转发来自事务层的TLP报文,并对其添加序列号和循环冗余校验码,创建和解析多种DLLP,同时还实现了ACK/NACK应答机制来确认该报文是否被正确传输或重传校正。
事务层负责按照PCIe协议定义的总线事务对TLP报文进行创建、发送和接收,包括接收来自于应用层的数据,并将其封装为TLP报文后,发向数据链路层;也包括接收从数据链路层发来的数据报文,然后转发到设备的应用层。此外事务层还实现了TLP报文的解码以及端到端校验,QoS以及PCIe“序”等功能。
上述三层协议都是PCIe协议明确规范,要求设计者严格遵循。应用层则由用户根据自己的需求进行设计。
如图2所示,PCIe系统以树形结构构建各个设备之间的互连拓扑,该系统中存在四种不同的设备类型:根联合体、桥设备、交换设备和终端设备。
PCIe系统中,处理器通过根联合体与其他设备连接,根联合体作为拓扑结构的根,代表CPU与系统中其他设备通过PCIe总线进行通信,根联合体的PCIe端口被称为根端口;桥设备提供了与其他总线(PCI/PCI-X)的转接接口,允许将旧的PCI和PCI-X设备接入到PCIe系统中。
交换设备用于连接多个设备,提供了PCIe端口的扩展和汇聚能力,基于交换设备可将多个PCIe设备连接到一个根端口上。如图3所示,交换设备内部通常包含一个USP端口(Upstream Port)和多个DSP端口(Downstream Port),其中USP负责与上游的根端口连接,DSP负责与下游的其他设备连接。交换设备提供TLP报文的交换和路由能力,即根据地址或其他路由信息识别TLP报文需要走的路径,使其按照指定路径在端口和端口之间传输。交换设备在进行TLP报文的路由和交换传输时,需要遵循PCIe协议规范定义的保序规则,以保证系统的功能正确性。
终端设备处于PCIe总线系统拓扑结构中的最末端,一般作为事务的发起者或者终结者,它通常是计算机内部的各种设备,例如显卡、网卡、声卡等。如图4所示,终端设备内部通常包括:物理层IP、控制器IP、用于数据搬运的DMA模块(负责将数据搬运到处理器内存或其他设备中,或者从处理器内存或其他设备搬运到终端设备),中断控制逻辑,BAR空间寄存器以及用户逻辑等。终端设备与系统中其他设备进行通信和TLP报文传输时,需要遵循上述PCIe协议规范定义的保序规则,以保证系统的功能正确性。
PCIe事务层定义TLP报文类型如下表所列,按照其总线行为又可以分为三大类型:P(Posted,发出)、NP(Non-Posted,非发出)和CPL(Completion,完成),PCIe TLP报文对应的事务类型见表1:
表1
PCIe TLP报文类型 | 事务类型 |
MRd | NP |
MRdLk | NP |
MWr | P |
IORd | NP |
IOWr | NP |
CfgRd | NP |
CfgWr | NP |
Msg | P |
Cpl/CplD | CPL |
AtomicOP | NP |
P类型表示TLP报文从源设备传输到目标设备后,当前事务即完成,不需要目标设备向源设备返回完成报文Cpl/CplD;NP类型表示TLP报文从源设备发送到目的设备后,目标设备需要向源设备返回完成报文Cpl/CplD,当前事务才算完成。CPL类型用于结束NP类型的事务,即通知请求者当前的NP事务已经得到响应,该事务可以完成和结束。
PCIe协议规范对上述P/NP/CPL类型的报文传输顺序有着严格的定义,且与传统的PCI总线兼容。需要遵循的保序规则如表2所示:
表2 PCIe报文保序规则
表2定义了P/NP/CPL事务传输过程中需要遵守和保证的“序”规则,表格中的内容表示如下含义:
1)、是:表格所在行标识的TLP事务类型报文一定能够超越表格所在列标识的TLP事务类型报文;
2)、否:表格所在行标识的TLP事务类型报文一定不能够超越表格所在列标识的TLP事务类型报文;
3)、无要求:对表格所在行标识的TLP事务类型报文是否超越表格所在列标识的TLP事务类型报文无要求。
PCIe协议通过上述事务传输保序规则保证其系统中各个部件的数据交互行为满足生产者/消费者模型要求,使所有事务的能够有序完成,避免系统死锁或数据传递错误等问题。
当前现有的技术方案中,如中国专利公开号CN109684269B:一种PCIE交换芯片内核及工作方法,如图5所示,通过在交换设备的端口输入侧为每个TLP报文附加时戳的方式记录报文进入的时间,在端口输出侧构建虚拟输出队列,根据P/NP/CPL报文的时戳大小比较结果,输出队列拥塞反压信息,结合PCIe保序规则实现不同源队列的管理和输出调度,以此实现PCIE交换设备/芯片的TLP报文的保序交换传输。
又如美国专利公开号US7412555B2:序的规则以及公平调度实现(Ordering ruleand fairness implementation),描述了一种PCIe协议TLP报文的保序和调度机制,通过为每个TLP报文附加老化计数器,通过老化计数器两两相减的差值获得P/NP/CPL事务类型之间的相对老化程度,选择老化程度最高的事务类型进行调度输出。其代表图如图6所示,包括:用于三组老化计数器(P-NP/P-CPL/CPL-NP CTR),TLP报文和CTR缓存/排队的事务队列(Transaction Queue),老化计数器控制逻辑(Age Control),老化比较电路(CompareCircuit)以及调度输出控制(Issue Control)。
现有的技术方案中,基于时戳机制的方案属于通过判断报文进入的时间戳绝对大小的方式来进行保序,存在两个问题:一是需要维护系统级/芯片级的全局时戳机制,从芯片上电开始后所有端口上的时戳计数器都开始计时,对于端口数目较多的交换设备/芯片而言,各个USP/DSP各自拥有独立的时钟,不同端口之间交互需要进行跨时钟域同步,因此不利于各个端口时戳计数器进行统一计时和同步等操作,也存在快/慢时钟差异导致时戳比较结果不准确而乱序的风险;二是每个TLP报文从设备端口输入到输出的整个传输过程,均需要携带上述时戳信息,该信息需要由一个位宽足够大(足以覆盖设备正常工作的上/下电完整周期)的时戳计数器进行表征,因而需要额外增加较多的片上存储器空间保存该信息,对芯片实现的面积和功耗带来挑战。
而基于老化计数机制的方案属于通过记录报文进入设备的相对先/后顺序的方式来进行保序,相对于时戳机制,虽然降低了单个计数器的位宽,但需要额外存储的计数器值的个数有所增加(由1个时戳计数器变为2个老化计数器,老化计数器宽度由事务队列深度决定),因此同样需要额外增加数量可观的片上存储器资源,且上述文献中未解决在交换设备的多个端口之间如何利用老化计数机制保序的问题。
基于此,提出本发明。
发明内容
本发明针对现有技术存在的不足,提供了一种PCIe协议报文保序装置,通过构建基本保序单元作为报文的基本保序点,在每个单元中维护两两相位值和全局相位反转计数器,实现P/NP/CPL事务之间高效排序,只需由每个基本保序单元的序队列保存4位序信息,且每个TLP报文在传输过程中无需携带该信息,相比时戳方案和老化计数方案大幅降低了芯片实现的资源开销和面积。基于基本保序单元,还提供了一种PCIe交换设备中多端口间报文的高性能保序交换方案和一种PCIe终端设备中报文的高性能保序传输方案。
在PCIe交换芯片和PCIe终端芯片应用中,提供一种高性能和低开销的PCIe协议报文保序装置,单个基本保序单元可作为基础装置,由单个基本保序单元实现PCIe终端设备芯片中报文的高性能保序传输,高效的扩展多个基本保序单元构建PCIe交换设备芯片的高性能交换网络,提供多端口间的报文高性能保序和交换传输。
具体技术方案如下:
一种PCIe协议报文保序装置,包括:
基本保序单元、基于基本保序单元构建PCIe交换设备的保序交换网络、基于基本保序单元构建PCIe终端设备的保序终端;
所述基本保序单元包括译码缓存模块、序控制模块和错误处理模块;
所述基于基本保序单元构建PCIe交换设备的保序交换网络包括:在PCIe交换设备中,在每个USP/DSP端口的接收和发送两个方向的事务层接口设置基本保序单元,用中央仲裁选通器连接所有USP/DSP端口上的基本保序单元;
所述基于基本保序单元构建PCIe终端设备的保序终端包括:在PCIe终端设备中,在应用层-事务层的接口处的接收和发送两个方向设置基本保序单元。
更进一步的改进,所述译码缓存模块,负责接收来自TLP输入接口的报文,解析和译码TLP报文头格式,根据译码结果将TLP报文头和有效载荷写入其所属种类对应的报文队列,将TLP序信息写入其所属种类对应的序队列,被写入的序队列和报文队列的写指针自增,向前级单元输出P/NP/CPL输入阻塞标志。
更进一步的改进,所述P/NP/CPL输入阻塞标志,由译码缓存模块根据序队列和报文队列的读/写指针差值计算队列中缓存的有效序信息/报文数量,当序队列中存储的序信息数量或报文队列中缓存的报文数量达到阻塞阈值,需要通知外部前级模块暂停发送对应类型的P/NP/CPL报文,即对应P/NP/CPL输入阻塞标志置1,否则对应P/NP/CPL输入阻塞标志置0;
所述序队列负责存储TLP序信息;
所述TLP序信息包括1位由译码缓存模块输出的RO标志、2位由序控制模块输出的事务相位值以及1位由错误处理模块输出的错误标志;
所述错误标志,由错误处理模块检测接收的TLP报文中是否存在译码失败类型错误/长度非法类型错误/端口非法类型错误后生成1位该信息,伴随其他TLP序信息一同写入序队列中,若错误存在则错误标志置1,否则错误标志置0:
译码失败类型错误为无法识别TLP报文的P/NP/CPL种类;
长度非法类型错误为TLP报文携带的有效载荷超过系统定义的最大载荷;
端口非法类型错误为TLP报文的目标端口无法被保序交换网络解析和路由。
更进一步的改进,所述序控制模块,根据P/NP/CPL三类报文到达基本保序单元的先后顺序维护事务相位值,包括P-NP相位值、P-CPL相位值和CPL-NP相位值,与输入TLP报文所属类型相关的2个相位值伴随该TLP报文的RO标志一同写入其所属种类对应的序队列;
所述P-NP相位值的计算方法为:上电后初始值为0,当P报文到达基本保序单元时,若先于其到达的上一个报文的类型为NP报文,则相位发生翻转,P-NP相位值做取反操作;否则相位保持不变,P-NP相位值维持原值;
所述P-CPL相位值的计算方法为:上电后初始值为0,当P报文到达基本保序单元时,若先于其到达的上一个报文的类型为CPL报文,则相位发生翻转,P-CPL相位值做取反操作;否则相位保持不变,P-CPL相位值维持原值;
所述CPL-NP相位值的计算方法为:上电后初始值为0,当CPL报文到达基本保序单元时,若先于其到达的上一个报文的类型为NP报文,则相位发生翻转,CPL-NP相位值做取反操作;否则相位保持不变,CPL-NP相位值维持原值;
所述序控制模块,维护三个全局的相位反转计数器,包括P-NP相位反转计数器、P-CPL相位反转计数器和CPL-NP相位反转计数器;依据保序调度条件,选择P/NP/CPL三类事务中符合条件的一类作为调度结果输出,并更新对应的相位反转计数器内容;
所述P-NP相位反转计数器的更新流程为:上电后P-NP相位反转计数器初始值为0;当且仅当调度结果类型为P,且P序队列当前队首元素的P-NP相位值与下一任队首元素的P-NP相位值不一致时,P-NP相位反转计数器进行自增;当且仅当调度结果类型为NP,且该NP序队列当前队首元素的P-NP相位值与下一任队首元素的P-NP相位值不一致时,P-NP相位反转计数器进行自减;
所述P-CPL相位反转计数器的更新流程为:上电后P-CPL相位反转计数器初始值为0;当且仅当调度结果类型为P,且P序队列当前队首元素的P-CPL相位值与下一任队首元素的P-CPL相位值不一致时,P-CPL相位反转计数器进行自增;当且仅当调度结果类型为CPL,且该CPL序队列当前队首元素的P-CPL相位值与下一任队首元素的P-CPL相位值不一致时,P-CPL相位反转计数器进行自减;
所述CPL-NP相位反转计数器的更新流程为:上电后CPL-NP相位反转计数器初始值为0;当且仅当调度结果类型为CPL,且CPL序队列当前队首元素的CPL-NP相位值与下一任队首元素的CPL-NP相位值不一致时,CPL-NP相位反转计数器进行自增;当且仅当调度结果类型为NP,且该NP序队列当前队首元素的CPL-NP相位值与下一任队首元素的CPL-NP相位值不一致时,CPL-NP相位反转计数器进行自减。
更进一步的改进,所述序控制模块的保序调度条件包括:NP报文调度条件、CPL报文调度条件和P报文调度条件,调度流程按照如下优先级顺序进行:
NP报文调度条件>CPL报文调度条件>P报文调度条件。
更进一步的改进,所述NP报文调度条件,需并列满足下列具体条件:
1、NP输出阻塞标志为0,
2、NP序队列非空,
3、所有报文队列都不存在未输出完成的报文,
4、下列任意条件满足其一:
4.1、P序队列为空,CPL序队列为空,
4.2、P-NP相位反转计数器的值大于0,CPL序队列为空,
4.3、P-NP相位反转计数器的值大于0,CPL-NP相位反转计数器的值大于0,
4.4、CPL-NP相位反转计数器的值大于0,P序队列为空。
更进一步的改进,所述CPL报文调度条件,需在上述NP报文调度条件不满足的前提下,并列满足下列具体条件:
1、CPL输出阻塞标志为0,
2、CPL序队列非空,
3、所有报文队列都不存在未输出完成的报文,
4、下列任意条件满足其一:
4.1、P序队列为空,
4.2、P-CPL相位反转计数器的值大于0,
4.3、P输出阻塞标志为1,CPL序队列当前队首元素的RO标志为1。
更进一步的改进,所述P报文调度条件,需在上述NP报文调度条件和CPL报文调度条件均不满足的前提下,并列满足下列具体条件:
1、P输出阻塞标志为0,
2、P序队列非空,
3、所有报文队列都不存在未输出完成的报文;
P/NP/CPL的输出阻塞标志,由后级外部模块输入序控制模块,用于通知基本保序单元暂停发送对应类型的P/NP/CPL报文;
所有报文队列中的报文均输出完成,即序控制模块的调度条件满足后,选中对应的P/NP/CPL类型,读取译码缓存模块中对应的序队列和报文队列,对被读出序队列和报文队列的读指针执行自增操作;若序队列队首元素的错误标志为1,则将报文队列队首元素缓存的TLP报文头及其有效载荷读出后丢弃,否则将二者封装成一个完整报文后从TLP输出接口发出,直至该完整报文输出完成。
更进一步的改进,USP/DSP端口接收方向的基本保序单元,负责接收和缓存来自USP/DSP端口的事务层接口接收方向输入的TLP报文,并按照保序方法调度出符合条件的P/NP/CPL类型,向中央仲裁选通器发起仲裁申请,申请得到应答后向其发送对应类型的TLP报文;
所述中央仲裁选通器,负责解析报文目的地,对PCIe交换设备中所有接收方向基本保序单元所发送的相同目的地报文进行公平仲裁和选通,向接收方向的基本保序单元发送仲裁应答,并接收其发送的TLP报文,将其发往对应USP/DSP端口发送方向上的基本保序单元;
USP/DSP端口发送方向的基本保序单元,负责接收和缓存来自中央仲裁选通器输出的TLP报文,并按照保序方法调度出符合条件的P/NP/CPL报文,发往USP/DSP端口的事务层接口,经过事务层和数据链路层处理后,最终通过USP/DSP端口物理层的高速串行链路发往其他PCIe设备。
更进一步的改进,应用层-事务层的接口处发送方向的基本保序单元,将应用层中多个相同种类的TLP传输通道聚合成3个统一的P/NP/CPL通道后,接入该基本保序单元,由基本保序单元按照保序方法调度出符合条件的P/NP/CPL报文,发往PCIe终端事务层传输接口,最终由PCIe终端设备物理层的高速串行链路发往其他PCIe设备;
应用层-事务层的接口处接收方向的基本保序单元,负责接收和缓存来自应用层-事务层接口的TLP报文,并按照保序方法调度出符合条件的P/NP/CPL报文,由报文分发逻辑根据PCIe协议规范所定义的TLP报文的路由信息,分发到PCIe终端设备应用层的各个子系统中。
本发明的有益效果:
1、本发明提供了一种高效率、低开销的PCIe协议报文保序装置,通过构建基本保序单元作为报文的基本保序点,基于两两相位值和全局相位反转计数机制,实现不同事务类型报文间的保序。相对于其他保序方案,本发明使得报文调度和排序的延时降低,效率提高,且大幅降低序信息保存所需的片上存储器开销和面积,有利于提升芯片实现的性能。
2、由基本保序单元构建的保序终端和保序交换网络,实现报文保序能力的由点扩展到面,即由单个保序点扩展到整个PCIe交换网络的保序交换,且报文保序信息只由各个保序点自行维护,在TLP报文的整个传输过程中无需携带,对整个交换网络透明,因而减少冗余信息在交换网络中的传递,提高了报文交换的效率,同时避免了交换设备中多端口跨时钟域同步和信息比对失败导致报文乱序的风险。
附图说明
图1为PCIe协议栈层次;
图2为PCIe协议栈拓扑结构;
图3为PCIe交换设备结构;
图4为PCIe终端设备结构;
图5为中国专利公开号CN109684269B的附图;
图6为美国专利公开号US7412555B2的附图;
图7为基本保序单元内部结构图;
图8为序队列内部结构图;
图9为P-NP相位值计算流程图;
图10为P-NP相位反转计数器更新流程;
图11为序控制模块保序调度流程;
图12为NP报文调度条件和流程;
图13为CPL报文调度条件和流程;
图14为P报文调度条件和流程;
图15为基于基本保序单元构建PCIe交换设备的保序交换网络;
图16为基于基本保序单元构建PCIe终端设备的保序终端。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
缩略语和关键术语定义:
PCIe:Peripheral Component Interconnect Express,一种高速串行计算机扩展总线标准;
TLP:Transaction Layer Packet,事务层报文;
P:Posted,发出;
NP:Non-Posted,非发出;
CPL:Completion,完成;
RO:Relax Order,宽松序;
IDO:ID-Based Ordering,基于ID的序;
USP:Upstream Port,上游端口;
DSP:Downstream Port,下游端口;
DLLP:Data Link Layer Packet,链路层报文;
PLP:Physical Layer Packet,物理层报文;
QoS:Quality of Service,服务质量;
MRd:Memory Read,内存读;
MRdLk:Memory Read Lock,内存加锁读;
MWr:Memory Write,内存写;
IORd:Input/Output Read,输入/输出读;
IOWr:Input/Output Write,输入/输出写;
CfgRd:Configuration Read,配置读;
CfgWr:Configuration Write,配置写;
Msg/MsgD:Message/Message with Data,消息/带数据的消息;
Cpl/CplD:Completion/Completion with Data,完成/带数据的完成;
AtomicOP:Atomic Operation,原子操作;
IP:Intellectual Property,知识产权;
DMA:Direct Memory Access,内存直接访问;
BAR:Base Address Registers,基地址寄存器。
实施例 1
一种PCIe协议报文保序装置,包括:
基本保序单元、基于基本保序单元构建PCIe交换设备的保序交换网络、基于基本保序单元构建PCIe终端设备的保序终端;
基本保序单元作为PCIe报文传输通道上的单个保序点装置,由译码缓存模块、序控制模块和错误处理模块构成,如图7所示。
所述译码缓存模块,负责接收来自TLP输入接口的报文,解析和译码TLP报文头格式,将该TLP报文归类为P/NP/CPL三者之一。根据译码结果将TLP报文头和有效载荷写入其所属种类对应的报文队列,将TLP序信息写入其所属种类对应的序队列,被写入的序队列和报文队列的写指针自增,向前级单元输出P/NP/CPL输入阻塞标志。
所述P/NP/CPL输入阻塞标志,由译码缓存模块根据序队列和报文队列的读/写指针差值计算队列中缓存的有效序信息/报文数量,当序队列中存储的序信息数量或报文队列中缓存的报文数量达到阻塞阈值,需要通知外部前级模块暂停发送对应类型的P/NP/CPL报文,即对应P/NP/CPL输入阻塞标志置1,否则对应P/NP/CPL输入阻塞标志置0。
序队列负责存储TLP序信息,其结构如图8所示。
所述TLP序信息包括1位由译码缓存模块输出的RO标志(由TLP报文头解析获得)、2位由序控制模块输出的事务相位值以及1位由错误处理模块输出的错误标志;
所述错误标志,由错误处理模块检测接收的TLP报文中是否存在译码失败类型错误/长度非法类型错误/端口非法类型错误后生成1位该信息,伴随其他TLP序信息一同写入序队列中,若错误存在则错误标志置1,否则错误标志置0:
译码失败类型错误为无法识别TLP报文的P/NP/CPL种类;
长度非法类型错误为TLP报文携带的有效载荷超过系统定义的最大载荷;
端口非法类型错误为TLP报文的目标端口无法被保序交换网络解析和路由。
所述序控制模块,根据P/NP/CPL三类报文到达基本保序单元的先后顺序维护事务相位值,包括P-NP相位值、P-CPL相位值和CPL-NP相位值,与输入TLP报文所属类型相关的2个相位值伴随该TLP报文的RO标志一同写入其所属种类对应的序队列;
所述P-NP相位值,如图9所示,其计算方法为:上电后初始值为0,当P报文到达基本保序单元时,若先于其到达的上一个报文的类型为NP报文,则相位发生翻转,P-NP相位值做取反操作;否则相位保持不变,P-NP相位值维持原值。
所述P-CPL相位值的计算方法为:上电后初始值为0,当P报文到达基本保序单元时,若先于其到达的上一个报文的类型为CPL报文,则相位发生翻转,P-CPL相位值做取反操作;否则相位保持不变,P-CPL相位值维持原值。
所述CPL-NP相位值的计算方法为:上电后初始值为0,当CPL报文到达基本保序单元时,若先于其到达的上一个报文的类型为NP报文,则相位发生翻转,CPL-NP相位值做取反操作;否则相位保持不变,CPL-NP相位值维持原值。
所述序控制模块,维护三个全局的相位反转计数器,包括P-NP相位反转计数器、P-CPL相位反转计数器和CPL-NP相位反转计数器;依据保序调度条件,选择P/NP/CPL三类事务中符合条件的一类作为调度结果输出,并更新对应的相位反转计数器内容。
所述P-NP相位反转计数器,其更新流程如图10所示:上电后P-NP相位反转计数器初始值为0;当且仅当调度结果类型为P,且P序队列当前队首元素的P-NP相位值与下一任队首元素的P-NP相位值不一致时,P-NP相位反转计数器进行自增;当且仅当调度结果类型为NP,且该NP序队列当前队首元素的P-NP相位值与下一任队首元素的P-NP相位值不一致时,P-NP相位反转计数器进行自减。
所述P-CPL相位反转计数器的更新流程为:上电后P-CPL相位反转计数器初始值为0;当且仅当调度结果类型为P,且P序队列当前队首元素的P-CPL相位值与下一任队首元素的P-CPL相位值不一致时,P-CPL相位反转计数器进行自增;当且仅当调度结果类型为CPL,且该CPL序队列当前队首元素的P-CPL相位值与下一任队首元素的P-CPL相位值不一致时,P-CPL相位反转计数器进行自减。
所述CPL-NP相位反转计数器的更新流程为:上电后CPL-NP相位反转计数器初始值为0;当且仅当调度结果类型为CPL,且CPL序队列当前队首元素的CPL-NP相位值与下一任队首元素的CPL-NP相位值不一致时,CPL-NP相位反转计数器进行自增;当且仅当调度结果类型为NP,且该NP序队列当前队首元素的CPL-NP相位值与下一任队首元素的CPL-NP相位值不一致时,CPL-NP相位反转计数器进行自减。
所述序控制模块的保序调度条件,包括:NP报文调度条件、CPL报文调度条件和P报文调度条件。如图11所示,调度流程按照如下优先级顺序进行:NP报文调度条件>CPL报文调度条件>P报文调度条件;如图11所示,依次判断下列条件是否满足,并调度出符合条件的P/NP/CPL类型。
如图12所示,所述NP报文调度条件,需并列满足下列具体条件:
1、NP输出阻塞标志为0,
2、NP序队列非空,
3、所有报文队列都不存在未输出完成的报文,
4、下列任意条件满足其一:
4.1、P序队列为空,CPL序队列为空,
4.2、P-NP相位反转计数器的值大于0,CPL序队列为空,
4.3、P-NP相位反转计数器的值大于0,CPL-NP相位反转计数器的值大于0,
4.4、CPL-NP相位反转计数器的值大于0,P序队列为空。
如图13所示,所述CPL报文调度条件,需在上述NP报文调度条件不满足的前提下,并列满足下列具体条件:
1、CPL输出阻塞标志为0,
2、CPL序队列非空,
3、所有报文队列都不存在未输出完成的报文,
4、下列任意条件满足其一:
4.1、P序队列为空,
4.2、P-CPL相位反转计数器的值大于0,
4.3、P输出阻塞标志为1,CPL序队列当前队首元素的RO标志为1。
如图14所示,所述P报文调度条件,需在上述NP报文调度条件和CPL报文调度条件均不满足的前提下,并列满足下列具体条件:
1、P输出阻塞标志为0,
2、P序队列非空,
3、所有报文队列都不存在未输出完成的报文。
P/NP/CPL的输出阻塞标志,由后级外部模块输入序控制模块,用于通知基本保序单元暂停发送对应类型的P/NP/CPL报文。
所有报文队列中的报文均输出完成,即序控制模块的调度条件满足后,选中对应的P/NP/CPL类型,读取译码缓存模块中对应的序队列和报文队列,对被读出序队列和报文队列的读指针执行自增操作;若序队列队首元素的错误标志为1,则将报文队列队首元素缓存的TLP报文头及其有效载荷读出后丢弃,否则将二者封装成一个完整报文后从TLP输出接口发出,直至该完整报文输出完成。
所述基于基本保序单元构建PCIe交换设备的保序交换网络,如图15所示,具体包括:在PCIe交换设备中,在每个USP/DSP端口的接收和发送两个方向的事务层接口设置基本保序单元,用中央仲裁选通器连接所有USP/DSP端口上的基本保序单元。
USP/DSP端口接收方向的基本保序单元,负责接收和缓存来自USP/DSP端口的事务层接口接收方向输入的TLP报文,并按照保序方法调度出符合条件的P/NP/CPL类型,向中央仲裁选通器发起仲裁申请,申请得到应答后向其发送对应类型的TLP报文。
所述中央仲裁选通器,负责解析报文目的地,对PCIe交换设备中所有接收方向基本保序单元所发送的相同目的地报文进行公平仲裁和选通,向接收方向的基本保序单元发送仲裁应答,并接收其发送的TLP报文,将其发往对应USP/DSP端口发送方向上的基本保序单元。
USP/DSP端口发送方向的基本保序单元,负责接收和缓存来自中央仲裁选通器输出的TLP报文,并按照保序方法调度出符合条件的P/NP/CPL报文,发往USP/DSP端口的事务层接口,经过事务层和数据链路层处理后,最终通过USP/DSP端口物理层的高速串行链路发往其他PCIe设备。
所述基于基本保序单元构建PCIe终端设备的保序终端,如图16所示,具体包括:在PCIe终端设备中,在应用层-事务层的接口处的接收和发送两个方向设置基本保序单元。
应用层-事务层的接口处发送方向的基本保序单元,将应用层中多个相同种类的TLP传输通道聚合成3个统一的P/NP/CPL通道后,接入该基本保序单元,由基本保序单元按照保序方法调度出符合条件的P/NP/CPL报文,发往PCIe终端事务层传输接口,最终由PCIe终端设备物理层的高速串行链路发往其他PCIe设备。
应用层-事务层的接口处接收方向的基本保序单元,负责接收和缓存来自应用层-事务层接口的TLP报文,并按照保序方法调度出符合条件的P/NP/CPL报文,由报文分发逻辑根据PCIe协议规范所定义的TLP报文的路由信息(报文类型/地址/ID路由),分发到PCIe终端设备应用层的各个子系统中(DMA,终端控制,BAR,用户逻辑等)。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种PCIe协议报文保序装置,其特征在于,包括:
基本保序单元、基于基本保序单元构建PCIe交换设备的保序交换网络、基于基本保序单元构建PCIe终端设备的保序终端;
所述基本保序单元包括译码缓存模块、序控制模块和错误处理模块;
所述基于基本保序单元构建PCIe交换设备的保序交换网络包括:在PCIe交换设备中,在每个USP/DSP端口的接收和发送两个方向的事务层接口设置基本保序单元,用中央仲裁选通器连接所有USP/DSP端口上的基本保序单元;
所述基于基本保序单元构建PCIe终端设备的保序终端包括:在PCIe终端设备中,在应用层-事务层的接口处的接收和发送两个方向设置基本保序单元。
2.根据权利要求1所述的一种PCIe协议报文保序装置,其特征在于:所述译码缓存模块,负责接收来自TLP输入接口的报文,解析和译码TLP报文头格式,根据译码结果将TLP报文头和有效载荷写入其所属种类对应的报文队列,将TLP序信息写入其所属种类对应的序队列,被写入的序队列和报文队列的写指针自增,向前级单元输出P/NP/CPL输入阻塞标志。
3.根据权利要求2所述的一种PCIe协议报文保序装置,其特征在于:所述P/NP/CPL输入阻塞标志,由译码缓存模块根据序队列和报文队列的读/写指针差值计算队列中缓存的有效序信息/报文数量,当序队列中存储的序信息数量或报文队列中缓存的报文数量达到阻塞阈值,需要通知外部前级模块暂停发送对应类型的P/NP/CPL报文,即对应P/NP/CPL输入阻塞标志置1,否则对应P/NP/CPL输入阻塞标志置0;
所述序队列负责存储TLP序信息;
所述TLP序信息包括1位由译码缓存模块输出的RO标志、2位由序控制模块输出的事务相位值以及1位由错误处理模块输出的错误标志;
所述错误标志,由错误处理模块检测接收的TLP报文中是否存在译码失败类型错误/长度非法类型错误/端口非法类型错误后生成1位该信息,伴随其他TLP序信息一同写入序队列中,若错误存在则错误标志置1,否则错误标志置0:
译码失败类型错误为无法识别TLP报文的P/NP/CPL种类;
长度非法类型错误为TLP报文携带的有效载荷超过系统定义的最大载荷;
端口非法类型错误为TLP报文的目标端口无法被保序交换网络解析和路由。
4.根据权利要求3所述的一种PCIe协议报文保序装置,其特征在于:所述序控制模块,根据P/NP/CPL三类报文到达基本保序单元的先后顺序维护事务相位值,包括P-NP相位值、P-CPL相位值和CPL-NP相位值,与输入TLP报文所属类型相关的2个相位值伴随该TLP报文的RO标志一同写入其所属种类对应的序队列;
所述P-NP相位值的计算方法为:上电后初始值为0,当P报文到达基本保序单元时,若先于其到达的上一个报文的类型为NP报文,则相位发生翻转,P-NP相位值做取反操作;否则相位保持不变,P-NP相位值维持原值;
所述P-CPL相位值的计算方法为:上电后初始值为0,当P报文到达基本保序单元时,若先于其到达的上一个报文的类型为CPL报文,则相位发生翻转,P-CPL相位值做取反操作;否则相位保持不变,P-CPL相位值维持原值;
所述CPL-NP相位值的计算方法为:上电后初始值为0,当CPL报文到达基本保序单元时,若先于其到达的上一个报文的类型为NP报文,则相位发生翻转,CPL-NP相位值做取反操作;否则相位保持不变,CPL-NP相位值维持原值;
所述序控制模块,维护三个全局的相位反转计数器,包括P-NP相位反转计数器、P-CPL相位反转计数器和CPL-NP相位反转计数器;依据保序调度条件,选择P/NP/CPL三类事务中符合条件的一类作为调度结果输出,并更新对应的相位反转计数器内容;
所述P-NP相位反转计数器的更新流程为:上电后P-NP相位反转计数器初始值为0;当且仅当调度结果类型为P,且P序队列当前队首元素的P-NP相位值与下一任队首元素的P-NP相位值不一致时,P-NP相位反转计数器进行自增;当且仅当调度结果类型为NP,且该NP序队列当前队首元素的P-NP相位值与下一任队首元素的P-NP相位值不一致时,P-NP相位反转计数器进行自减;
所述P-CPL相位反转计数器的更新流程为:上电后P-CPL相位反转计数器初始值为0;当且仅当调度结果类型为P,且P序队列当前队首元素的P-CPL相位值与下一任队首元素的P-CPL相位值不一致时,P-CPL相位反转计数器进行自增;当且仅当调度结果类型为CPL,且该CPL序队列当前队首元素的P-CPL相位值与下一任队首元素的P-CPL相位值不一致时,P-CPL相位反转计数器进行自减;
所述CPL-NP相位反转计数器的更新流程为:上电后CPL-NP相位反转计数器初始值为0;当且仅当调度结果类型为CPL,且CPL序队列当前队首元素的CPL-NP相位值与下一任队首元素的CPL-NP相位值不一致时,CPL-NP相位反转计数器进行自增;当且仅当调度结果类型为NP,且该NP序队列当前队首元素的CPL-NP相位值与下一任队首元素的CPL-NP相位值不一致时,CPL-NP相位反转计数器进行自减。
5.根据权利要求4所述的一种PCIe协议报文保序装置,其特征在于:所述序控制模块的保序调度条件包括:NP报文调度条件、CPL报文调度条件和P报文调度条件,调度流程按照如下优先级顺序进行:
NP报文调度条件>CPL报文调度条件>P报文调度条件。
6.根据权利要求5所述的一种PCIe协议报文保序装置,其特征在于:所述NP报文调度条件,需并列满足下列具体条件:
1)、NP输出阻塞标志为0,
2)、NP序队列非空,
3)、所有报文队列都不存在未输出完成的报文,
4)、下列任意条件满足其一:
4.1)、P序队列为空,CPL序队列为空,
4.2)、P-NP相位反转计数器的值大于0,CPL序队列为空,
4.3)、P-NP相位反转计数器的值大于0,CPL-NP相位反转计数器的值大于0,
4.4)、CPL-NP相位反转计数器的值大于0,P序队列为空。
7.根据权利要求6所述的一种PCIe协议报文保序装置,其特征在于:所述CPL报文调度条件,需在上述NP报文调度条件不满足的前提下,并列满足下列具体条件:
1)、CPL输出阻塞标志为0,
2)、CPL序队列非空,
3)、所有报文队列都不存在未输出完成的报文,
4)、下列任意条件满足其一:
4.1)、P序队列为空,
4.2)、P-CPL相位反转计数器的值大于0,
4.3)、P输出阻塞标志为1,CPL序队列当前队首元素的RO标志为1。
8.根据权利要求7所述的一种PCIe协议报文保序装置,其特征在于:所述P报文调度条件,需在上述NP报文调度条件和CPL报文调度条件均不满足的前提下,并列满足下列具体条件:
1)、P输出阻塞标志为0,
2)、P序队列非空,
3)、所有报文队列都不存在未输出完成的报文;
P/NP/CPL的输出阻塞标志,由后级外部模块输入序控制模块,用于通知基本保序单元暂停发送对应类型的P/NP/CPL报文;
所有报文队列中的报文均输出完成,即序控制模块的调度条件满足后,选中对应的P/NP/CPL类型,读取译码缓存模块中对应的序队列和报文队列,对被读出序队列和报文队列的读指针执行自增操作;若序队列队首元素的错误标志为1,则将报文队列队首元素缓存的TLP报文头及其有效载荷读出后丢弃,否则将二者封装成一个完整报文后从TLP输出接口发出,直至该完整报文输出完成。
9.根据权利要求1所述的一种PCIe协议报文保序装置,其特征在于:USP/DSP端口接收方向的基本保序单元,负责接收和缓存来自USP/DSP端口的事务层接口接收方向输入的TLP报文,并按照保序方法调度出符合条件的P/NP/CPL类型,向中央仲裁选通器发起仲裁申请,申请得到应答后向其发送对应类型的TLP报文;
所述中央仲裁选通器,负责解析报文目的地,对PCIe交换设备中所有接收方向基本保序单元所发送的相同目的地报文进行公平仲裁和选通,向接收方向的基本保序单元发送仲裁应答,并接收其发送的TLP报文,将其发往对应USP/DSP端口发送方向上的基本保序单元;
USP/DSP端口发送方向的基本保序单元,负责接收和缓存来自中央仲裁选通器输出的TLP报文,并按照保序方法调度出符合条件的P/NP/CPL报文,发往USP/DSP端口的事务层接口,经过事务层和数据链路层处理后,最终通过USP/DSP端口物理层的高速串行链路发往其他PCIe设备。
10.根据权利要求1所述的一种PCIe协议报文保序装置,其特征在于:应用层-事务层的接口处发送方向的基本保序单元,将应用层中多个相同种类的TLP传输通道聚合成3个统一的P/NP/CPL通道后,接入该基本保序单元,由基本保序单元按照保序方法调度出符合条件的P/NP/CPL报文,发往PCIe终端事务层传输接口,最终由PCIe终端设备物理层的高速串行链路发往其他PCIe设备;
应用层-事务层的接口处接收方向的基本保序单元,负责接收和缓存来自应用层-事务层接口的TLP报文,并按照保序方法调度出符合条件的P/NP/CPL报文,由报文分发逻辑根据PCIe协议规范所定义的TLP报文的路由信息,分发到PCIe终端设备应用层的各个子系统中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410159116.3A CN117692535B (zh) | 2024-02-04 | 2024-02-04 | 一种PCIe协议报文保序装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410159116.3A CN117692535B (zh) | 2024-02-04 | 2024-02-04 | 一种PCIe协议报文保序装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117692535A true CN117692535A (zh) | 2024-03-12 |
CN117692535B CN117692535B (zh) | 2024-04-23 |
Family
ID=90135788
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410159116.3A Active CN117692535B (zh) | 2024-02-04 | 2024-02-04 | 一种PCIe协议报文保序装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117692535B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070073954A1 (en) * | 2005-09-29 | 2007-03-29 | P.A. Semi, Inc. | Ordering rule and fairness implementation |
CN102801635A (zh) * | 2012-08-30 | 2012-11-28 | 北京傲天动联技术有限公司 | 在多核处理器系统中使用的报文保序方法 |
CN109684269A (zh) * | 2018-12-26 | 2019-04-26 | 成都九芯微科技有限公司 | 一种pcie交换芯片内核及工作方法 |
CN114490201A (zh) * | 2021-12-17 | 2022-05-13 | 阿里巴巴(中国)有限公司 | 目标接口测试方法及装置 |
CN114731334A (zh) * | 2020-02-14 | 2022-07-08 | 华为技术有限公司 | 报文保序方法和装置 |
CN117118828A (zh) * | 2023-10-23 | 2023-11-24 | 上海芯联芯智能科技有限公司 | 一种协议转换器、电子设备及一种配置方法 |
CN117215801A (zh) * | 2023-11-07 | 2023-12-12 | 北京数渡信息科技有限公司 | 一种适用于多核处理器的片上负载性能优化装置 |
-
2024
- 2024-02-04 CN CN202410159116.3A patent/CN117692535B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070073954A1 (en) * | 2005-09-29 | 2007-03-29 | P.A. Semi, Inc. | Ordering rule and fairness implementation |
CN102801635A (zh) * | 2012-08-30 | 2012-11-28 | 北京傲天动联技术有限公司 | 在多核处理器系统中使用的报文保序方法 |
CN109684269A (zh) * | 2018-12-26 | 2019-04-26 | 成都九芯微科技有限公司 | 一种pcie交换芯片内核及工作方法 |
CN114731334A (zh) * | 2020-02-14 | 2022-07-08 | 华为技术有限公司 | 报文保序方法和装置 |
CN114490201A (zh) * | 2021-12-17 | 2022-05-13 | 阿里巴巴(中国)有限公司 | 目标接口测试方法及装置 |
CN117118828A (zh) * | 2023-10-23 | 2023-11-24 | 上海芯联芯智能科技有限公司 | 一种协议转换器、电子设备及一种配置方法 |
CN117215801A (zh) * | 2023-11-07 | 2023-12-12 | 北京数渡信息科技有限公司 | 一种适用于多核处理器的片上负载性能优化装置 |
Also Published As
Publication number | Publication date |
---|---|
CN117692535B (zh) | 2024-04-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100611268B1 (ko) | 가상 채널 설정을 위한 강화된 일반 입출력 아키텍처 및관련 방법 | |
US9836424B2 (en) | General input/output architecture, protocol and related methods to implement flow control | |
US8566473B2 (en) | General input/output architecture, protocol and related methods to implement flow control | |
US7246191B2 (en) | Method and apparatus for memory interface | |
KR101298862B1 (ko) | Pci 익스프레스를 통해 ⅰd 기반 스트림을 가능하게 하는 방법 및 장치 | |
US7583600B1 (en) | Schedule prediction for data link layer packets | |
EP1428130B1 (en) | General input/output architecture, protocol and related methods to provide isochronous channels | |
US20140307748A1 (en) | Packetized Interface For Coupling Agents | |
CN105357147B (zh) | 一种高速高可靠的片上网络适配单元 | |
US9432288B2 (en) | System on chip link layer protocol | |
WO2012143953A4 (en) | Optimized multi-root input output virtualization aware switch | |
JPH06511338A (ja) | 並行パケットバスに関する方法及び装置 | |
CN105376129B (zh) | 一种1394总线事务层-链路层数据包发送电路及方法 | |
CN111611185B (zh) | 一种多pcie端口的msi中断过滤装置 | |
KR20040041644A (ko) | 향상된 범용 입력/출력 아키텍쳐에서의 에러 포워딩 | |
US10938622B2 (en) | Interconnection network for integrated circuit with fault detection circuitry provided locally to an upstream location | |
US20070028015A1 (en) | System and method for processing data streams | |
CN117692535B (zh) | 一种PCIe协议报文保序装置 | |
US11593281B2 (en) | Device supporting ordered and unordered transaction classes | |
CN115633098A (zh) | 众核系统的存储管理方法、装置和集成电路 | |
JP2004054419A (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 | ||
GR01 | Patent grant |