首页> 中国专利> 处理层数据包生成方法、装置及PCI Express系统

处理层数据包生成方法、装置及PCI Express系统

摘要

本发明提供了一种处理层数据包生成方法、装置及PCI?Express系统,该方法包括:控制处理层生成初始TLP,初始TLP包括预留字段、头字段、数据字段及摘要字段,预留字段包括空白的开始标志字段、序列号字段、LCRC字段及结束标志字段;控制数据链路层和物理层计算并填写预留字段,生成最终的TLP。通过本发明的实施,在生成TLP的过程中,由于不需要对TLP包进行移位,因此减小了TLP的传输延时。

著录项

  • 公开/公告号CN105608029A

    专利类型发明专利

  • 公开/公告日2016-05-25

    原文格式PDF

  • 申请/专利权人 深圳市同创国芯电子有限公司;

    申请/专利号CN201510963001.0

  • 发明设计人 刘应;

    申请日2015-12-17

  • 分类号G06F13/38;G06F13/42;

  • 代理机构深圳鼎合诚知识产权代理有限公司;

  • 代理人江婷

  • 地址 518057 广东省深圳市南山区高新科技产业园南区科技南八道豪威科技大厦16层

  • 入库时间 2023-12-18 15:29:29

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-08-21

    授权

    授权

  • 2016-08-17

    著录事项变更 IPC(主分类):G06F13/38 变更前: 变更后: 申请日:20151217

    著录事项变更

  • 2016-06-22

    实质审查的生效 IPC(主分类):G06F13/38 申请日:20151217

    实质审查的生效

  • 2016-05-25

    公开

    公开

说明书

技术领域

本发明涉及高速串行总线领域,尤其涉及一种用于PCIExpress(Peripheral ComponentInterconnectExpress,高速外部设备互连总线)系统的处理层数据 包生成方法、装置及PCIExpress。

背景技术

PCIExpress技术是为了适应计算机技术的发展而提出的第3代高性能I/O 总线技术,PCIExpress技术的软件框架是与PCI(PeripheralComponent Interconnect,外部设备互连总线)技术的软件框架完全兼容,与PCI技术采用 并行数据传输不同,PCIExpress技术是采用串行数据传输。

PCIExpress协议规定,PCIExpress由物理层、数据链路层以及处理层组 成;其中处理层主要实现TLP(TransactionLayerPacket,处理层数据包)的 组包与解包;数据链路层的主要功能为保证在各链路上发送与接收的TLP的完 整性,数据链路层通过序列号生成与检测电路以及LCRC(LinkCyclic RedundancyCheck,链路层循环冗余校验)电路来保证数据包正确传输。

如图1所示,TLP结构与PCIExpress中各个层的关系,在现有技术中,处 理层生成TLP时,只生成TLPD部分,即图1中的头字段Header、数据字段Data 及摘要字段Digest,其长度为DW(1DW=4Byte)的整数倍,TLP传输到数据链路 层时再添加2Byte长的序列号字段SequenceNumber与1DW长的LCRC值,TLP 传输到物理层时再添加1Byte长的开始标志字段STP与1Byte长的结束标志字 段END。即,现有TLP生成方法需要在数据链路层与物理层进行移位操作,将增 加TLP的传输延时。

因此,如何提供一种可以解决现有TLP生成方法需要在数据链路层与物理 层进行移位操作的TLP生成方法,是本领域技术人员亟待解决的技术问题。

发明内容

本发明提供了一种用于PCIExpress系统的处理层数据包生成方法、装置 及PCIExpress,以解决现有TLP生成方法需要在数据链路层与物理层进行移位 操作导致的增加TLP传输延时的问题。

本发明提供了一种用于PCIExpress系统的TLP生成方法,PCIExpress包 括处理层、数据链路层及物理层,TLP生成方法包括:控制处理层生成初始TLP, 初始TLP包括预留字段、头字段、数据字段及摘要字段,预留字段包括空白的 开始标志字段、序列号字段、LCRC字段及结束标志字段;控制数据链路层和物 理层计算并填写预留字段,生成最终的TLP。

进一步的,计算并填写预留字段生成最终的TLP包括:控制物理层确定并 填写开始标志字段及结束标志字段,控制数据链路层确定并填写序列号字段, 控制LCRC电路计算并填写LCRC字段。

进一步的,LCRC电路包括多个不同输入位宽的并行循环冗余校验电路;控 制LCRC电路计算并填写LCRC字段包括:根据初始TLP的有效数据位宽,使能 对应输入位宽的并行CRC电路计算并填写LCRC。

进一步的,使能对应输入位宽的并行CRC电路计算链接CRC包括:检测到 开始标志字段,基于开始标志字段确定第一周期的有效数据位宽,选择第一周 期的并行CRC电路,并产生第一周期的并行CRC电路的初始值,计算出输出值; 在下一周期选择与内部总线数据位宽对应的并行CRC电路,将前一周期的并行 CRC电路的输出值作为本周期的并行CRC电路的初始值,计算出输出值;检测到 结束标志字段,基于结束标志字段确定最后一周期的有效数据位宽,选择最后 一周期的并行CRC电路,将前一周期的并行CRC电路的输出值作为本周期的并 行CRC电路的初始值,计算出输出值,并将其作为LCRC。

进一步的,还包括:当初始TLP为背靠背TLP时,检测初始TLP的开始标 志字段及结束标志字段,将背靠背TLP拆分为两个待处理的初始TLP,同时处理 两个待处理的初始TLP。

进一步的,同时处理两个待处理的初始TLP包括:复用不同输入位宽的并 行CRC电路,计算LCRC字段。

本发明提供了一种用于PCIExpress系统的TLP生成装置,PCIExpress包 括处理层、数据链路层及物理层,TLP生成装置包括:预留模块,用于控制处理 层生成初始TLP,初始TLP包括预留字段、头字段、数据字段及摘要字段,预留 字段包括空白的开始标志字段、序列号字段、LCRC字段及结束标志字段;控制 模块,用于控制数据链路层和物理层计算并填写预留字段,生成最终的TLP。

进一步的,控制模块用于控制物理层填写开始标志字段及结束标志字段, 控制数据链路层填写序列号字段,控制LCRC电路计算并填写LCRC字段。

进一步的,LCRC电路包括多个不同输入位宽的并行CRC电路;控制模块用 于根据初始TLP的有效数据位宽,使能对应输入位宽的并行CRC电路计算并填 写LCRC。

进一步的,控制模块用于检测到开始标志字段,基于开始标志字段确定第 一周期的有效数据位宽,选择第一周期的并行CRC电路,并产生第一周期的并 行CRC电路的初始值,计算出输出值;在下一周期选择与内部总线数据位宽对 应的并行CRC电路,将前一周期的并行CRC电路的输出值作为本周期的并行CRC 电路的初始值,计算出输出值;检测到结束标志字段,基于结束标志字段确定 最后一周期的有效数据位宽,选择最后一周期的并行CRC电路,将前一周期的 并行CRC电路的输出值作为本周期的并行CRC电路的初始值,计算出输出值, 并将其作为LCRC。

进一步的,控制模块还用于当初始TLP为背靠背TLP时,检测初始TLP的 开始标志字段及结束标志字段,将背靠背TLP拆分为两个待处理的初始TLP,同 时处理两个待处理的初始TLP。

进一步的,控制模块用于复用不同输入位宽的并行CRC电路,计算LCRC字 段。

本发明提供了一种PCIExpress系统,其包括本发明提供的TLP生成装置, 使用TLP生成装置生成TLP。

本发明的有益效果:

本发明提供了一种新的TLP生成方法,通过控制处理层生成初始TLP,初始 TLP包括预留字段、头字段、数据字段及摘要字段,预留字段包括空白的开始标 志字段、序列号字段、LCRC字段及结束标志字段,控制数据链路层和物理层计 算并填写预留字段,生成最终的TLP;在生成TLP的过程中,由于不需要对TLP 包进行移位,因此减小了TLP的传输延时。进一步的,采用全并行的结构对LCRC 值进行计算,实现处理背靠背TLP而不丢包,保证了TLP传输带宽。进一步的, 对背靠背TLP拆分处理,并对不同输入位宽的并行CRC电路复用,减少了电路 资源开销。

附图说明

图1为TLP结构与PCIExpress中各个层的计算关系;

图2为本发明第一实施例提供的TLP生成装置的结构示意图;

图3为本发明第二实施例提供的TLP生成方法的流程图;

图4为内部传输总线位宽为128bit时,常见的背靠背TLP传输模式;

图5为本发明第三实施例提供的LCRC电路功能框图。

具体实施方式

现通过具体实施方式结合附图的方式对本发明做出进一步的诠释说明。

第一实施例:

图2为本发明第一实施例提供的TLP生成装置的结构示意图,由图2可知, 在本实施例中,本发明提供的TLP生成装置2包括:

预留模块21,用于控制处理层生成初始TLP,初始TLP包括预留字段、头 字段、数据字段及摘要字段,预留字段包括空白的开始标志字段、序列号字段、 LCRC字段及结束标志字段;

控制模块22,用于控制数据链路层和物理层计算并填写预留字段,生成最 终的TLP。

在一些实施例中,上述实施例中的控制模块22用于控制物理层填写开始标 志字段及结束标志字段,控制数据链路层填写序列号字段,控制LCRC电路计算 并填写LCRC字段。

在一些实施例中,上述实施例中的LCRC电路包括多个不同输入位宽的并行 CRC电路;控制模块22用于根据初始TLP的有效数据位宽,使能对应输入位宽 的并行CRC电路计算并填写LCRC。

在一些实施例中,上述实施例中的控制模块22用于检测到开始标志字段, 基于开始标志字段确定第一周期的有效数据位宽,选择第一周期的并行CRC电 路,并产生第一周期的并行CRC电路的初始值,计算出输出值;在下一周期选 择与内部总线数据位宽对应的并行CRC电路,将前一周期的并行CRC电路的输 出值作为本周期的并行CRC电路的初始值,计算出输出值;检测到结束标志字 段,基于结束标志字段确定最后一周期的有效数据位宽,选择最后一周期的并 行CRC电路,将前一周期的并行CRC电路的输出值作为本周期的并行CRC电路 的初始值,计算出输出值,并将其作为LCRC。

在一些实施例中,上述实施例中的控制模块22还用于当初始TLP为背靠背 TLP时,检测初始TLP的开始标志字段及结束标志字段,将背靠背TLP拆分为两 个待处理的初始TLP,同时处理两个待处理的初始TLP。

在一些实施例中,上述实施例中的控制模块22用于复用不同输入位宽的并 行CRC电路,计算LCRC字段。

本发明提供了一种PCIExpress,其包括本发明提供的TLP生成装置2,使 用TLP生成装置2生成TLP。

第二实施例:

图3为本发明第二实施例提供的TLP生成方法的流程图,由图3可知,在 本实施例中,本发明提供的TLP生成方法包括以下步骤:

S301:控制处理层生成初始TLP,初始TLP包括预留字段、头字段、数据字 段及摘要字段,预留字段包括空白的开始标志字段、序列号字段、LCRC字段及 结束标志字段;

S302:控制数据链路层和物理层计算并填写预留字段,生成最终的TLP。

在一些实施例中,上述实施例中的计算并填写预留字段生成最终的TLP包 括:控制物理层确定并填写开始标志字段及结束标志字段,控制数据链路层确 定并填写序列号字段,控制LCRC电路计算并填写LCRC字段。

进一步的,LCRC电路包括多个不同输入位宽的并行CRC电路;控制LCRC电 路计算并填写LCRC字段包括:根据初始TLP的有效数据位宽,使能对应输入位 宽的并行CRC电路计算并填写LCRC。

在一些实施例中,上述实施例中的使能对应输入位宽的并行CRC电路计算 链接CRC包括:

检测到开始标志字段,基于开始标志字段确定第一周期的有效数据位宽, 选择第一周期的并行CRC电路,并产生第一周期的并行CRC电路的初始值,计 算出输出值;

在下一周期选择与内部总线数据位宽对应的并行CRC电路,将前一周期的 并行CRC电路的输出值作为本周期的并行CRC电路的初始值,计算出输出值;

检测到结束标志字段,基于结束标志字段确定最后一周期的有效数据位宽, 选择最后一周期的并行CRC电路,将前一周期的并行CRC电路的输出值作为本 周期的并行CRC电路的初始值,计算出输出值,并将其作为LCRC。

在一些实施例中,上述实施例中的方法还包括:当初始TLP为背靠背TLP 时,检测初始TLP的开始标志字段及结束标志字段,将背靠背TLP拆分为两个 待处理的初始TLP,同时处理两个待处理的初始TLP。

在一些实施例中,上述实施例中的同时处理两个待处理的初始TLP包括: 复用不同输入位宽的并行CRC电路,计算LCRC字段。

现结合具体应用场景对本发明做进一步的诠释说明。

第三实施例:

现有PCIExpress中TLP的LCRC值是在LCRC电路计算完成后,再添加到 TLP的结束标识,采用这种方式处理需要进行TLP移位对齐操作,会增加TLP的 传输延时;现有PCIExpress中的LCRC电路处理背靠背TLP时,采用2路相同 的LCRC电路进行计算,LCRC电路的资源开销很大;现有PCIExpress中的LCRC 电路处理背靠背TLP时,对于内部数据位宽大,如128bit位宽,没有公布的LCRC 电路解决方案。

为了解决上述问题,本实施例在处理层组包TLP时,预先保留TLP中LCRC 值以及其它附加值的位置,由于TLP开始标识与TLP结束标识的位宽是不固定 的,因此,LCRC电路需要由多个不同输入位宽的并行CRC电路组成;CRC电路 的个数与内部总线传输位宽有关。

本发明提供的LCRC电路采用动态检测输入TLP的有效数据位宽,根据检测 结果使能相应输入位宽的并行CRC电路进行计算,并控制多选一开关选通对应 CRC电路的初始值与输入值。进一步的,通过对TLP的开始标识与TLP结束标识 的检测,将背靠背TLP包拆分为2个独立的TLP,并同时对2个TLP进行CRC值 计算,2个TLP复用不同输入位宽的并行CRC电路。通过对TLP结束标识的检测, 控制选择对应CRC电路的输出作为当前计算TLP包的最终LCRC值,并将LCRC 值填充到TLP结束标识中。

基于上述方案,由于不需要对TLP包进行移位,因此减小了TLP的传输延 时。采用全并行的结构对LCRC值进行计算,实现处理背靠背TLP包而不丢包, 保证了TLP传输带宽。对背靠背TLP拆分处理,并对不同输入位宽的并行CRC 电路复用,减少了电路资源开销。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图4 及5,以内部传输总线位宽为128bit的情况,对本发明实施例中的技术方案进 行详细地描述。

图1示出了TLP包结构与PCIExpress中各个层的关系。在传统的处理方 法中,处理层生成TLP时,只生成TLPD(图1中的Header、Data以及Digest) 部分,其长度为DW的整数倍(1DW=4Byte);TLP传输到数据链路层时再添加 2Byte长的SequenceNumber与1DW长的LCRC值;TLP传输到物理层时再添加 1Byte长的STP与1Byte长的END。按照传统方法处理时,TLP需要在数据链路 层与物理层进行移位操作。本发明中在处理层生成TLP时,则预先保留Sequence Number、LCRC、STP以及END的位置,这样可以消除移位延时的影响,但数据链 路层在处理TLP时,TLP的处理层部分不是DW对齐的,因此需要进行下一步处 理,TLP采用小端在前的传输方式,也即是先传输STP最后传输END。

参照图4,示出了内部传输总线位宽为128bit时,常见的几种背靠背TLP 传输模式,图4各图中的横坐标上的DW0、DW1、DW2以及DW3分别表示传输的 第1个DW、第2个DW、第3个DW以及第4个DW;纵坐标上的周期表示时间周 期的刻度。以图4a为例,第1个周期上的LCRC的有效计算位宽为120bit(STP 不需要参与计算);第n个周期上同时有2个TLP的数据,第1帧TLP的LCRC 的有效计算位宽为56bit(LCRC与END不需要参与计算),第2帧TLP的LCRC 的有效计算位宽为24bit(STP不需要参与计算);TLP中间部分的有效计算位 宽为128bit。类似方法可以得到图4a-4f传输模式中各周期时LCRC的有效计算 位宽,共有24bit、56bit、88bit、120bit以及128bit这几种模式。当为图4b 中的模式时,上一帧TLP与下一帧TLP的有效LCRC计算部分位宽同时为24bit, 故在同一周期上需要同时计算2个24bit的LCRC电路模块。因此,实施例中需 要1个128bit、1个120bit、1个88bit、1个56bit以及2个24bit的并行 CRC电路模块。

参照图5,示出了一种LCRC电路实现结构框图。图中TLP_stp与TLP_end 分别为TLP有效起始位与有效结束位编信号。selection_ctrl模块根据TLP_stp 值与TLP_end值产生多选一(MUX)的控制信号与in_selection模块的控制信 号。in_selection模块根据selection_ctrl产生的控制信号,将TLP上的有效 信号输入到相应的CRC模块。MUX模块根据selection_ctrl产生的控制信号, 产生对应CRC模块的初始值。CRC模块每个周期计算出的输出值,通过寄存器(FF) 输出,并作为下一个周期计算时的初始值。TLP_end有效时,则selection_ctrl 模块产生控制信号并选择对应CRC模块的输出,作为计算出的最终LCRC值。

以计算图4a中的TLP的LCRC为例:第1个周期时,selection_ctrl模块 检测到TLP_stp有效(TLP_stp等于1,STP在DW0上),则产生控制信号使能 CRC32_parallelx120模块工作,并控制MUX选择32'hffffffff作为模块的初始 值,以及控制in_selection模块产生TLP[127:8]作为模块计算的输入;第2个 周期时,selection_ctrl模块使能CRC32_parallelx128模块工作,并控制MUX 选择CRC32_parallelx120模块的输出值作为当前计算的初始值,TLP[127:0]作 为计算的输入计值;第3-(n-1)个周期时,selection_ctrl模块使能 CRC32_parallelx128模块工作,并控制MUX选择CRC32_parallelx128模块的输 出值作为当前计算的初始值,TLP[127:0]作为计算的输入计值;第n个周期时, selection_ctrl模块检测到TLP_end有效(TLP_end等于4,END在DW2上), 则产生控制信号使能CRC32_parallelx56模块工作,控制MUX选择 CRC32_parallelx128模块的输出作为模块计算的初始值,以及控制 in_selection模块产生TLP[55:0]作为模块计算的输入,并根据TLP_end值选 择CRC32_parallelx56模块的计算输出作为当前TLP的最终LCRC值;在第n个 周期上时同时还检测到TLP_stp有效(TLP_stp等于8,STP在DW3上),因此 还会同时使能CRC32_parallelx24模块工作,计算方法与第1个周期时相同。

综上可知,通过本发明的实施,至少存在以下有益效果:

本发明提供了一种新的TLP生成方法,通过控制处理层生成初始TLP,初始 TLP包括预留字段、头字段、数据字段及摘要字段,预留字段包括空白的开始标 志字段、序列号字段、LCRC字段及结束标志字段,控制数据链路层和物理层计 算并填写预留字段,生成最终的TLP;在生成TLP的过程中,由于不需要对TLP 包进行移位,因此减小了TLP的传输延时。进一步的,采用全并行的结构对LCRC 值进行计算,实现处理背靠背TLP而不丢包,保证了TLP传输带宽。进一步的, 对背靠背TLP拆分处理,并对不同输入位宽的并行CRC电路复用,减少了电路 资源开销。

以上仅是本发明的具体实施方式而已,并非对本发明做任何形式上的限制, 凡是依据本发明的技术实质对以上实施方式所做的任意简单修改、等同变化、 结合或修饰,均仍属于本发明技术方案的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号