一种PCIe协议报文保序装置的制作方法

文档序号:37310896发布日期:2024-03-13 20:59阅读:13来源:国知局
一种PCIe协议报文保序装置的制作方法

本发明涉及一种pcie协议报文保序装置,属于pcie。


背景技术:

1、pcie是一种高速串行计算机扩展总线标准,相对于此前旧的pci/pci-x总线协议,pcie采用了点到点的互连拓扑,取消了共享并行总线架构,在设备间提供独立的双向全双工的高速互连串行链路,支持多个设备间的并发访问。pcie总线的各个层次由硬件逻辑实现,协议共分为4层:物理层、数据链路层、事务层和应用层,如图1所示。

2、物理层实现了数据在高速串行链路的收/发,编码/解码,链路训练,状态机初始化和扰码等功能,pcie设备通过高速串行链路相互连接在一起。物理层创建和解码专门用于同步和管理链路的物理层序列报文(plp),接收和转发链路层报文(dllp)和事务层报文(tlp),上述plp/dllp/tlp经过一系列处理后,通过物理层中电气子层的高速串行链路在各个pcie设备间传输,目前已发布的pcie 6.0协议支持最高达64gt/s的数据传输速率。

3、数据链路层实现了链路管理、tlp错误检测,流量控制、功耗管理以及报文可靠传输等功能。数据链路层接收和转发来自事务层的tlp报文,并对其添加序列号和循环冗余校验码,创建和解析多种dllp,同时还实现了ack/nack应答机制来确认该报文是否被正确传输或重传校正。

4、事务层负责按照pcie协议定义的总线事务对tlp报文进行创建、发送和接收,包括接收来自于应用层的数据,并将其封装为tlp报文后,发向数据链路层;也包括接收从数据链路层发来的数据报文,然后转发到设备的应用层。此外事务层还实现了tlp报文的解码以及端到端校验,qos以及pcie“序”等功能。

5、上述三层协议都是pcie协议明确规范,要求设计者严格遵循。应用层则由用户根据自己的需求进行设计。

6、如图2所示,pcie系统以树形结构构建各个设备之间的互连拓扑,该系统中存在四种不同的设备类型:根联合体、桥设备、交换设备和终端设备。

7、pcie系统中,处理器通过根联合体与其他设备连接,根联合体作为拓扑结构的根,代表cpu与系统中其他设备通过pcie总线进行通信,根联合体的pcie端口被称为根端口;桥设备提供了与其他总线(pci/pci-x)的转接接口,允许将旧的pci和pci-x设备接入到pcie系统中。

8、交换设备用于连接多个设备,提供了pcie端口的扩展和汇聚能力,基于交换设备可将多个pcie设备连接到一个根端口上。如图3所示,交换设备内部通常包含一个usp端口(upstream port)和多个dsp端口(downstream port),其中usp负责与上游的根端口连接,dsp负责与下游的其他设备连接。交换设备提供tlp报文的交换和路由能力,即根据地址或其他路由信息识别tlp报文需要走的路径,使其按照指定路径在端口和端口之间传输。交换设备在进行tlp报文的路由和交换传输时,需要遵循pcie协议规范定义的保序规则,以保证系统的功能正确性。

9、终端设备处于pcie总线系统拓扑结构中的最末端,一般作为事务的发起者或者终结者,它通常是计算机内部的各种设备,例如显卡、网卡、声卡等。如图4所示,终端设备内部通常包括:物理层ip、控制器ip、用于数据搬运的dma模块(负责将数据搬运到处理器内存或其他设备中,或者从处理器内存或其他设备搬运到终端设备),中断控制逻辑,bar空间寄存器以及用户逻辑等。终端设备与系统中其他设备进行通信和tlp报文传输时,需要遵循上述pcie协议规范定义的保序规则,以保证系统的功能正确性。

10、pcie事务层定义tlp报文类型如下表所列,按照其总线行为又可以分为三大类型:p(posted,发出)、np(non-posted,非发出)和cpl(completion,完成),pcie tlp报文对应的事务类型见表1:

11、表1

12、 pcie tlp报文类型 事务类型 mrd np mrdlk np mwr p iord np iowr np cfgrd np cfgwr np msg p cpl/cpld cpl atomicop np

13、p类型表示tlp报文从源设备传输到目标设备后,当前事务即完成,不需要目标设备向源设备返回完成报文cpl/cpld;np类型表示tlp报文从源设备发送到目的设备后,目标设备需要向源设备返回完成报文cpl/cpld,当前事务才算完成。cpl类型用于结束np类型的事务,即通知请求者当前的np事务已经得到响应,该事务可以完成和结束。

14、pcie协议规范对上述p/np/cpl类型的报文传输顺序有着严格的定义,且与传统的pci总线兼容。需要遵循的保序规则如表2所示:

15、表2 pcie报文保序规则

16、

17、表2定义了p/np/cpl事务传输过程中需要遵守和保证的“序”规则,表格中的内容表示如下含义:

18、1)、是:表格所在行标识的tlp事务类型报文一定能够超越表格所在列标识的tlp事务类型报文;

19、2)、否:表格所在行标识的tlp事务类型报文一定不能够超越表格所在列标识的tlp事务类型报文;

20、3)、无要求:对表格所在行标识的tlp事务类型报文是否超越表格所在列标识的tlp事务类型报文无要求。

21、pcie协议通过上述事务传输保序规则保证其系统中各个部件的数据交互行为满足生产者/消费者模型要求,使所有事务的能够有序完成,避免系统死锁或数据传递错误等问题。

22、当前现有的技术方案中,如中国专利公开号cn109684269b:一种pcie交换芯片内核及工作方法,如图5所示,通过在交换设备的端口输入侧为每个tlp报文附加时戳的方式记录报文进入的时间,在端口输出侧构建虚拟输出队列,根据p/np/cpl报文的时戳大小比较结果,输出队列拥塞反压信息,结合pcie保序规则实现不同源队列的管理和输出调度,以此实现pcie交换设备/芯片的tlp报文的保序交换传输。

23、又如美国专利公开号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)。

24、现有的技术方案中,基于时戳机制的方案属于通过判断报文进入的时间戳绝对大小的方式来进行保序,存在两个问题:一是需要维护系统级/芯片级的全局时戳机制,从芯片上电开始后所有端口上的时戳计数器都开始计时,对于端口数目较多的交换设备/芯片而言,各个usp/dsp各自拥有独立的时钟,不同端口之间交互需要进行跨时钟域同步,因此不利于各个端口时戳计数器进行统一计时和同步等操作,也存在快/慢时钟差异导致时戳比较结果不准确而乱序的风险;二是每个tlp报文从设备端口输入到输出的整个传输过程,均需要携带上述时戳信息,该信息需要由一个位宽足够大(足以覆盖设备正常工作的上/下电完整周期)的时戳计数器进行表征,因而需要额外增加较多的片上存储器空间保存该信息,对芯片实现的面积和功耗带来挑战。

25、而基于老化计数机制的方案属于通过记录报文进入设备的相对先/后顺序的方式来进行保序,相对于时戳机制,虽然降低了单个计数器的位宽,但需要额外存储的计数器值的个数有所增加(由1个时戳计数器变为2个老化计数器,老化计数器宽度由事务队列深度决定),因此同样需要额外增加数量可观的片上存储器资源,且上述文献中未解决在交换设备的多个端口之间如何利用老化计数机制保序的问题。

26、基于此,提出本发明。


技术实现思路

1、本发明针对现有技术存在的不足,提供了一种pcie协议报文保序装置,通过构建基本保序单元作为报文的基本保序点,在每个单元中维护两两相位值和全局相位反转计数器,实现p/np/cpl事务之间高效排序,只需由每个基本保序单元的序队列保存4位序信息,且每个tlp报文在传输过程中无需携带该信息,相比时戳方案和老化计数方案大幅降低了芯片实现的资源开销和面积。基于基本保序单元,还提供了一种pcie交换设备中多端口间报文的高性能保序交换方案和一种pcie终端设备中报文的高性能保序传输方案。

2、在pcie交换芯片和pcie终端芯片应用中,提供一种高性能和低开销的pcie协议报文保序装置,单个基本保序单元可作为基础装置,由单个基本保序单元实现pcie终端设备芯片中报文的高性能保序传输,高效的扩展多个基本保序单元构建pcie交换设备芯片的高性能交换网络,提供多端口间的报文高性能保序和交换传输。

3、具体技术方案如下:

4、一种pcie协议报文保序装置,包括:

5、基本保序单元、基于基本保序单元构建pcie交换设备的保序交换网络、基于基本保序单元构建pcie终端设备的保序终端;

6、所述基本保序单元包括译码缓存模块、序控制模块和错误处理模块;

7、所述基于基本保序单元构建pcie交换设备的保序交换网络包括:在pcie交换设备中,在每个usp/dsp端口的接收和发送两个方向的事务层接口设置基本保序单元,用中央仲裁选通器连接所有usp/dsp端口上的基本保序单元;

8、所述基于基本保序单元构建pcie终端设备的保序终端包括:在pcie终端设备中,在应用层-事务层的接口处的接收和发送两个方向设置基本保序单元。

9、更进一步的改进,所述译码缓存模块,负责接收来自tlp输入接口的报文,解析和译码tlp报文头格式,根据译码结果将tlp报文头和有效载荷写入其所属种类对应的报文队列,将tlp序信息写入其所属种类对应的序队列,被写入的序队列和报文队列的写指针自增,向前级单元输出p/np/cpl输入阻塞标志。

10、更进一步的改进,所述p/np/cpl输入阻塞标志,由译码缓存模块根据序队列和报文队列的读/写指针差值计算队列中缓存的有效序信息/报文数量,当序队列中存储的序信息数量或报文队列中缓存的报文数量达到阻塞阈值,需要通知外部前级模块暂停发送对应类型的p/np/cpl报文,即对应p/np/cpl输入阻塞标志置1,否则对应p/np/cpl输入阻塞标志置0;

11、所述序队列负责存储tlp序信息;

12、所述tlp序信息包括1位由译码缓存模块输出的ro标志、2位由序控制模块输出的事务相位值以及1位由错误处理模块输出的错误标志;

13、所述错误标志,由错误处理模块检测接收的tlp报文中是否存在译码失败类型错误/长度非法类型错误/端口非法类型错误后生成1位该信息,伴随其他tlp序信息一同写入序队列中,若错误存在则错误标志置1,否则错误标志置0:

14、译码失败类型错误为无法识别tlp报文的p/np/cpl种类;

15、长度非法类型错误为tlp报文携带的有效载荷超过系统定义的最大载荷;

16、端口非法类型错误为tlp报文的目标端口无法被保序交换网络解析和路由。

17、更进一步的改进,所述序控制模块,根据p/np/cpl三类报文到达基本保序单元的先后顺序维护事务相位值,包括p-np相位值、p-cpl相位值和cpl-np相位值,与输入tlp报文所属类型相关的2个相位值伴随该tlp报文的ro标志一同写入其所属种类对应的序队列;

18、所述p-np相位值的计算方法为:上电后初始值为0,当p报文到达基本保序单元时,若先于其到达的上一个报文的类型为np报文,则相位发生翻转,p-np相位值做取反操作;否则相位保持不变,p-np相位值维持原值;

19、所述p-cpl相位值的计算方法为:上电后初始值为0,当p报文到达基本保序单元时,若先于其到达的上一个报文的类型为cpl报文,则相位发生翻转,p-cpl相位值做取反操作;否则相位保持不变,p-cpl相位值维持原值;

20、所述cpl-np相位值的计算方法为:上电后初始值为0,当cpl报文到达基本保序单元时,若先于其到达的上一个报文的类型为np报文,则相位发生翻转,cpl-np相位值做取反操作;否则相位保持不变,cpl-np相位值维持原值;

21、所述序控制模块,维护三个全局的相位反转计数器,包括p-np相位反转计数器、p-cpl相位反转计数器和cpl-np相位反转计数器;依据保序调度条件,选择p/np/cpl三类事务中符合条件的一类作为调度结果输出,并更新对应的相位反转计数器内容;

22、所述p-np相位反转计数器的更新流程为:上电后p-np相位反转计数器初始值为0;当且仅当调度结果类型为p,且p序队列当前队首元素的p-np相位值与下一任队首元素的p-np相位值不一致时,p-np相位反转计数器进行自增;当且仅当调度结果类型为np,且该np序队列当前队首元素的p-np相位值与下一任队首元素的p-np相位值不一致时,p-np相位反转计数器进行自减;

23、所述p-cpl相位反转计数器的更新流程为:上电后p-cpl相位反转计数器初始值为0;当且仅当调度结果类型为p,且p序队列当前队首元素的p-cpl相位值与下一任队首元素的p-cpl相位值不一致时,p-cpl相位反转计数器进行自增;当且仅当调度结果类型为cpl,且该cpl序队列当前队首元素的p-cpl相位值与下一任队首元素的p-cpl相位值不一致时,p-cpl相位反转计数器进行自减;

24、所述cpl-np相位反转计数器的更新流程为:上电后cpl-np相位反转计数器初始值为0;当且仅当调度结果类型为cpl,且cpl序队列当前队首元素的cpl-np相位值与下一任队首元素的cpl-np相位值不一致时,cpl-np相位反转计数器进行自增;当且仅当调度结果类型为np,且该np序队列当前队首元素的cpl-np相位值与下一任队首元素的cpl-np相位值不一致时,cpl-np相位反转计数器进行自减。

25、更进一步的改进,所述序控制模块的保序调度条件包括:np报文调度条件、cpl报文调度条件和p报文调度条件,调度流程按照如下优先级顺序进行:

26、np报文调度条件>cpl报文调度条件>p报文调度条件。

27、更进一步的改进,所述np报文调度条件,需并列满足下列具体条件:

28、1、np输出阻塞标志为0,

29、2、np序队列非空,

30、3、所有报文队列都不存在未输出完成的报文,

31、4、下列任意条件满足其一:

32、4.1、p序队列为空,cpl序队列为空,

33、4.2、p-np相位反转计数器的值大于0,cpl序队列为空,

34、4.3、p-np相位反转计数器的值大于0,cpl-np相位反转计数器的值大于0,

35、4.4、cpl-np相位反转计数器的值大于0,p序队列为空。

36、更进一步的改进,所述cpl报文调度条件,需在上述np报文调度条件不满足的前提下,并列满足下列具体条件:

37、1、cpl输出阻塞标志为0,

38、2、cpl序队列非空,

39、3、所有报文队列都不存在未输出完成的报文,

40、4、下列任意条件满足其一:

41、4.1、p序队列为空,

42、4.2、p-cpl相位反转计数器的值大于0,

43、4.3、p输出阻塞标志为1,cpl序队列当前队首元素的ro标志为1。

44、更进一步的改进,所述p报文调度条件,需在上述np报文调度条件和cpl报文调度条件均不满足的前提下,并列满足下列具体条件:

45、1、p输出阻塞标志为0,

46、2、p序队列非空,

47、3、所有报文队列都不存在未输出完成的报文;

48、p/np/cpl的输出阻塞标志,由后级外部模块输入序控制模块,用于通知基本保序单元暂停发送对应类型的p/np/cpl报文;

49、所有报文队列中的报文均输出完成,即序控制模块的调度条件满足后,选中对应的p/np/cpl类型,读取译码缓存模块中对应的序队列和报文队列,对被读出序队列和报文队列的读指针执行自增操作;若序队列队首元素的错误标志为1,则将报文队列队首元素缓存的tlp报文头及其有效载荷读出后丢弃,否则将二者封装成一个完整报文后从tlp输出接口发出,直至该完整报文输出完成。

50、更进一步的改进,usp/dsp端口接收方向的基本保序单元,负责接收和缓存来自usp/dsp端口的事务层接口接收方向输入的tlp报文,并按照保序方法调度出符合条件的p/np/cpl类型,向中央仲裁选通器发起仲裁申请,申请得到应答后向其发送对应类型的tlp报文;

51、所述中央仲裁选通器,负责解析报文目的地,对pcie交换设备中所有接收方向基本保序单元所发送的相同目的地报文进行公平仲裁和选通,向接收方向的基本保序单元发送仲裁应答,并接收其发送的tlp报文,将其发往对应usp/dsp端口发送方向上的基本保序单元;

52、usp/dsp端口发送方向的基本保序单元,负责接收和缓存来自中央仲裁选通器输出的tlp报文,并按照保序方法调度出符合条件的p/np/cpl报文,发往usp/dsp端口的事务层接口,经过事务层和数据链路层处理后,最终通过usp/dsp端口物理层的高速串行链路发往其他pcie设备。

53、更进一步的改进,应用层-事务层的接口处发送方向的基本保序单元,将应用层中多个相同种类的tlp传输通道聚合成3个统一的p/np/cpl通道后,接入该基本保序单元,由基本保序单元按照保序方法调度出符合条件的p/np/cpl报文,发往pcie终端事务层传输接口,最终由pcie终端设备物理层的高速串行链路发往其他pcie设备;

54、应用层-事务层的接口处接收方向的基本保序单元,负责接收和缓存来自应用层-事务层接口的tlp报文,并按照保序方法调度出符合条件的p/np/cpl报文,由报文分发逻辑根据pcie协议规范所定义的tlp报文的路由信息,分发到pcie终端设备应用层的各个子系统中。

55、本发明的有益效果:

56、1、本发明提供了一种高效率、低开销的pcie协议报文保序装置,通过构建基本保序单元作为报文的基本保序点,基于两两相位值和全局相位反转计数机制,实现不同事务类型报文间的保序。相对于其他保序方案,本发明使得报文调度和排序的延时降低,效率提高,且大幅降低序信息保存所需的片上存储器开销和面积,有利于提升芯片实现的性能。

57、2、由基本保序单元构建的保序终端和保序交换网络,实现报文保序能力的由点扩展到面,即由单个保序点扩展到整个pcie交换网络的保序交换,且报文保序信息只由各个保序点自行维护,在tlp报文的整个传输过程中无需携带,对整个交换网络透明,因而减少冗余信息在交换网络中的传递,提高了报文交换的效率,同时避免了交换设备中多端口跨时钟域同步和信息比对失败导致报文乱序的风险。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1