CN113489570B - 一种PCIe链路的数据传输方法、装置及设备 - Google Patents

一种PCIe链路的数据传输方法、装置及设备 Download PDF

Info

Publication number
CN113489570B
CN113489570B CN202110744270.3A CN202110744270A CN113489570B CN 113489570 B CN113489570 B CN 113489570B CN 202110744270 A CN202110744270 A CN 202110744270A CN 113489570 B CN113489570 B CN 113489570B
Authority
CN
China
Prior art keywords
data
error correction
data block
pcie link
check
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
Application number
CN202110744270.3A
Other languages
English (en)
Other versions
CN113489570A (zh
Inventor
张君龙
李长飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhengzhou Yunhai Information Technology Co Ltd
Original Assignee
Zhengzhou Yunhai Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhengzhou Yunhai Information Technology Co Ltd filed Critical Zhengzhou Yunhai Information Technology Co Ltd
Priority to CN202110744270.3A priority Critical patent/CN113489570B/zh
Publication of CN113489570A publication Critical patent/CN113489570A/zh
Application granted granted Critical
Publication of CN113489570B publication Critical patent/CN113489570B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本申请公开了一种PCIe链路的数据传输方法、装置、设备及计算机可读存储介质,PCIe链路的发送端在将待发送数据进行分块得到第一数据块之后,在生成第一数据块的数据帧时,将根据第一数据块计算得到校验码和纠错码填入数据帧,从而将数据帧发送至PCIe链路的接收端,以使接收端根据校验码对接收到的数据帧中的第二数据块进行校验失败时利用纠错码对第二数据块进行数据纠错、并在纠错失败后触发发送端重新发送第一数据块。通过数据纠错,可以一定程度上修复产生误码的数据帧,提高了数据可靠性,同时减少了需要重新发送的数据量,从而加快了数据传输效率,有助于减轻PCIe链路信号质量不稳定对NVMe SSD性能发挥的影响。

Description

一种PCIe链路的数据传输方法、装置及设备
技术领域
本申请涉及数据传输技术领域,特别是涉及一种PCIe链路的数据传输方法、装置、设备及计算机可读存储介质。
背景技术
在云计算时代,对计算能力和大数据处理能力的需求快速增长,使得对于海量数据传输能力和存储能力的要求越来越高。非易失性高速传输总线(non volatile memoryexpress,NVMe)协议定义了驱动软件与非易失性存储子系统,如外设部件互连标准和接口(peripheral component interconnect express,PCIe)和固态硬盘(Solid State Drive,SSD)等。NVMe SSD相对于串行高级技术附件固态硬盘(Serial Advanced TechnologyAttachment Solid State Drive,简称SATA SSD)可支持更多的输入输出(I/O)队列,因此具有更高的I/O性能,更高的带宽和更低的延迟,可以更大限度的提高I/O的并行能力。
为了扩展存储容量需要使用硬盘扩展柜(Just a bunch of nvme Flash,JBOF)设备来连接更多的NVMe SSD。JBOF扩展机箱通过串行连接SCSI接口(Serial Attached SCSI,SAS)线和存储主机相连。当SAS线接触不良或者整个链路信号质量不好时,通过PCIe总线协议传输的数据将产生大量的误码,最终导致存储端存储的数据可靠性降低。对此,现有技术中通常的解决办法PCIe链路的发送端根据待发送数据块计算得到校验码与待发送数据块一并写入数据帧,PCIe链路的接收端根据接收到的数据计算校验码与数据帧中的校验码对比,若不一致则触发PCIe链路的发送端重新发送。然而,在PCIe链路信号质量不佳时,将触发大量的重发操作,导致数据传输速率降低,影响了NVMe SSD的性能的发挥。
发明内容
本申请的目的是提供一种PCIe链路的数据传输方法、装置、设备及计算机可读存储介质,用于解决PCIe链路信号质量难以保证时影响到NVMe SSD性能发挥的问题。
为解决上述技术问题,本申请提供一种PCIe链路的数据传输方法,基于PCIe链路的发送端,包括:
将待发送数据进行分块,得到第一数据块;
在生成所述第一数据块的数据帧时,将根据所述第一数据块计算得到校验码和纠错码填入所述数据帧;
将所述数据帧发送至所述PCIe链路的接收端,以使所述接收端根据所述校验码对接收到的所述数据帧中的第二数据块进行校验失败时利用所述纠错码对所述第二数据块进行数据纠错、并在纠错失败后触发所述发送端重新发送所述第一数据块。
可选的,所述将根据所述第一数据块计算得到校验码和纠错码填入所述数据帧,具体为:
将根据所述第一数据块计算得到的N+1个由不同的计算方式计算得到的所述校验码和N个所述纠错码填入所述数据帧;
相应的,所述接收端根据所述校验码对接收到的所述数据帧中的第二数据块进行校验失败时利用所述纠错码对所述第二数据块进行数据纠错、并在纠错失败后触发所述发送端重新发送所述第一数据块,具体为:
所述接收端每利用一个所述校验码对所述第二数据块进行校验失败时,即利用一个所述纠错码对所述第二数据块进行数据纠错,而后利用下一个所述校验码对纠错后的所述第二数据块进行校验,直至最后一个所述校验码校验失败后触发所述发送端重新发送所述第一数据块;
其中,N为正整数。
可选的,所述校验码和所述纠错码在所述数据帧中所述第一数据块之后的字节中交错排列,且一个所述校验码列于所述校验码和所述纠错码中的首位。
可选的,所述N为1。
可选的,在所述将待发送数据进行分块,得到第一数据块之前,还包括:
根据所述PCIe链路的传输状态和一个所述数据帧所传输的字节数确定N的值;
相应的,所述将待发送数据进行分块,得到第一数据块,具体包括:
根据N的值确定所述第一数据块的长度;
根据所述第一数据块的长度将所述待发送数据进行分块,得到所述第一数据块。
可选的,在所述将待发送数据进行分块,得到第一数据块之前,还包括:
根据所述PCIe链路的传输状态和一个所述数据帧所传输的字节数确定根据一个所述第一数据块生成的所述纠错码的个数;
相应的,所述将待发送数据进行分块,得到第一数据块,具体包括:
根据所述纠错码的个数确定所述第一数据块的长度;
根据所述第一数据块的长度将所述待发送数据进行分块,得到所述第一数据块。
可选的,所述校验码具体为循环冗余校验码,所述纠错码具体为前向纠错码。
为解决上述技术问题,本申请还提供一种PCIe链路的数据传输装置,包括:
拆分模块,用于将待发送数据进行分块,得到第一数据块;
生成模块,用于在生成所述第一数据块的数据帧时,将根据所述第一数据块计算得到校验码和纠错码填入所述数据帧;
发送模块,用于将所述数据帧发送至所述PCIe链路的接收端,以使所述接收端根据所述校验码对接收到的所述数据帧中的第二数据块进行校验失败时利用所述纠错码对所述第二数据块进行数据纠错、并在纠错失败后触发所述发送端重新发送所述第一数据块。
为解决上述技术问题,本申请还提供一种PCIe链路的数据传输设备,包括:
存储器,用于存储指令,所述指令包括上述任意一项所述PCIe链路的数据传输方法的步骤;
处理器,用于执行所述指令。
为解决上述技术问题,本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任意一项所述PCIe链路的数据传输方法的步骤。
本申请所提供的PCIe链路的数据传输方法,PCIe链路的发送端在将待发送数据进行分块得到第一数据块之后,在生成第一数据块的数据帧时,将根据第一数据块计算得到校验码和纠错码填入数据帧,从而将数据帧发送至PCIe链路的接收端,以使接收端根据校验码对接收到的数据帧中的第二数据块进行校验失败时利用纠错码对第二数据块进行数据纠错、并在纠错失败后触发发送端重新发送第一数据块。通过数据纠错,可以一定程度上修复产生误码的数据帧,提高了数据可靠性,同时减少了需要重新发送的数据量,从而加快了数据传输效率,有助于减轻PCIe链路信号质量不稳定对NVMe SSD性能发挥的影响。
本申请还提供一种PCIe链路的数据传输装置、设备及计算机可读存储介质,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚的说明本申请实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种PCIe链路的数据传输方法的流程图;
图2为现有技术中的一种PCIe数据帧的示意图;
图3为本申请实施例提供的一种PCIe数据帧的示意图;
图4为本申请实施例提供的一种PCIe链路的数据传输装置的结构示意图;
图5为本申请实施例提供的一种PCIe链路的数据传输设备的结构示意图。
具体实施方式
本申请的核心是提供一种PCIe链路的数据传输方法、装置、设备及计算机可读存储介质,用于解决PCIe链路信号质量难以保证时影响到NVMe SSD性能发挥的问题。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
实施例一
图1为本申请实施例提供的一种PCIe链路的数据传输方法的流程图。
如图1所示,基于PCIe链路的发送端,本申请实施例提供的PCIe链路的数据传输方法包括:
S101:将待发送数据进行分块,得到第一数据块。
S102:在生成第一数据块的数据帧时,将根据第一数据块计算得到校验码和纠错码填入数据帧。
S103:将数据帧发送至PCIe链路的接收端,以使接收端根据校验码对接收到的数据帧中的第二数据块进行校验失败时利用纠错码对第二数据块进行数据纠错、并在纠错失败后触发发送端重新发送第一数据块。
本申请实施例针对PCIe链路信号质量不佳时所导致的PCIe链路的接收端产生大量误码并触发了大量的数据重发任务的问题,提出了一种在JBOF平台上使用的改进的PCIe链路上的融合数据校验算法,来保证PCIe链路上传输数据的速率和正确性,通过增加纠错流程,降低了PCIe链路的接收端出现错误时进行重试的概率,节省了错误发生时的数据传输时间。本申请实施例提供的具体办法即在PCIe链路的发送端生成数据帧时,保证数据帧中具有根据数据帧中要传输的第一数据块所生成的校验码和纠错码。该数据帧携带有第一数据块发送到PCIe链路的接收端后,若数据正确,则PCIe链路的接收端所接收到数据帧中的第二数据块应当与第一数据块一致,此一致性由PCIe链路的接收端通过数据帧中的校验码进行验证,若验证结果为不一致,则PCIe链路的接收端利用数据帧中的纠错码对第二数据块进行纠错,若纠错后的第二数据块可以通过校验码的校验,则采用纠错后的第二数据块,若纠错后的第二数据块仍不可以通过校验码的校验,再触发PCIe链路的发送端重新发送该数据帧。
在具体实施中,首先配置数据存储网络,通常将一台服务作为发送端(Initiator),一台存储设备作为接收端(Target),将一台带有NVME SSD盘的JBOF扩展机箱通过SAS线与存储设备连接作为扩展的数据存储端。发送端的服务器上的数据首先传输到接收端的存储设备上,然后接收端的存储设备将数据进行重新组装生成数据帧后发送到JBOF扩展机箱。则在本申请实施例中,PCIe链路的发送端可以为存储设备,PCIe链路的接收端可以为JBOF扩展机箱。
在PCIe链路初始化时,通过更改PCIe协议,PCIe链路的发送端与接收端预先约定校验算法和纠错算法,以及校验码、纠错码各自在数据帧中的位置。将校验算法和纠错算法通过C语言实现。校验码具体可以采用循环冗余校验(Cyclic Redundancy Check,CRC)码,纠错码具体可以采用前向纠错(Forward error correction,FEC)码,纠错算法可以采用RS(Reed-Solomon)纠错算法。其中,根据第一数据块的比特数的不同,可以选择采用不同类型的循环冗余校验算法以及不同的RS纠错算法。
对于步骤101来说,根据PCIe协议,PCIe总线上的数据是以数据帧的格式进行传输的,数据帧中又根据作用不同分成不同的块,而除了数据块外,其他的块都有特定的含义,故本申请实施例中设置校验码和纠错码需要减少原有数据块的比特数,用以放置校验码和纠错码。则需要预先根据校验码和纠错码所占据的比特数和数据帧的整体长度,确定第一数据块的长度后,根据第一数据块的长度对PCIe链路的发送端的待发送数据进行分块。
对于步骤S102来说,由于现有的PCIe数据帧通常在数据块之后设置有校验位,则本申请实施例提供的数据帧可以在此基础上增设纠错码即可。PCIe链路的发送端将第一数据块导入预先约定的校验算法和纠错算法中,生成校验码和纠错码,而后将校验码和纠错码填入数据帧中预先约定的位置。
对于步骤S103来说,PCIe链路的接收端根据预先约定的校验算法计算第二数据块的校验码后,与数据帧中的校验码对比,若不一致则确定校验失败,此时采用预先约定的纠错算法利用数据帧中的纠错码对第二数据块进行纠错,并计算纠错后的第二数据块的校验码,若还是与数据帧中的校验码不一致,则报错,并触发PCIe链路重新发送携带第一数据块的数据帧。
在实际应用中,校验码的数量和纠错码的数量均可以为一个,即PCIe链路的接收端进行校验失败后利用纠错码进行纠错,再重复利用该校验码进行校验。纠错码的数量可以为多个,以增加对第一数据块成功纠错的概率。校验码的数量也可以为多个,可以利用不同的校验算法生成多个不同的校验码。然而PCIe链路的发送端在数据帧中加入多个校验码或多个纠错码,PCIe链路的接收端可能需要进行多次校验运算和纠错运算,将占用较多的系统资源,故可以根据PCIe链路的传输情况和PCIe链路的接收端的状态选择设置校验码的数量和纠错码的数量。
本申请实施例提供的PCIe链路的数据传输方法,PCIe链路的发送端在将待发送数据进行分块得到第一数据块之后,在生成第一数据块的数据帧时,将根据第一数据块计算得到校验码和纠错码填入数据帧,从而将数据帧发送至PCIe链路的接收端,以使接收端根据校验码对接收到的数据帧中的第二数据块进行校验失败时利用纠错码对第二数据块进行数据纠错、并在纠错失败后触发发送端重新发送第一数据块。通过数据纠错,可以一定程度上修复产生误码的数据帧,提高了数据可靠性,同时减少了需要重新发送的数据量,从而加快了数据传输效率,有助于减轻PCIe链路信号质量不稳定对NVMe SSD性能发挥的影响。
本申请实施例提供的PCIe链路的数据传输方法的一种实际应用场合为利用分析仪将PCIe链路导出分析的场合,此时若PCIe链路的传输质量不佳,调试链路将耗费大量的精力,而应用本申请实施例提供的PCIe链路的数据传输方法可以忽略PCIe链路的传输质量问题,减轻工作人员的工作压力。可以理解的是,本申请实施例提供的PCIe链路的数据传输方法可以应用于任何PCIe链路传输场合。
实施例二
图2为现有技术中的一种PCIe数据帧的示意图;图3为本申请实施例提供的一种PCIe数据帧的示意图。
在上述实施例中提到,可以利用不同的校验算法生成多个不同的校验码,则在上述实施例的基础上,在本申请实施例提供的PCIe链路的数据传输方法中,步骤S101:将根据第一数据块计算得到校验码和纠错码填入数据帧,具体为:
将根据第一数据块计算得到的N+1个由不同的计算方式计算得到的校验码和N个纠错码填入数据帧。
相应的,步骤S103中接收端根据校验码对接收到的数据帧中的第二数据块进行校验失败时利用纠错码对第二数据块进行数据纠错、并在纠错失败后触发发送端重新发送第一数据块,具体为:
接收端每利用一个校验码对第二数据块进行校验失败时,即利用一个纠错码对第二数据块进行数据纠错,而后利用下一个校验码对纠错后的第二数据块进行校验,直至最后一个校验码校验失败后触发发送端重新发送第一数据块。
其中,N为正整数。
在具体实施中,为方便PCIe链路的接收端读取,PCIe链路的发送端可以将校验码和纠错码在数据帧中第一数据块之后的字节中交错排列,且一个校验码列于校验码和纠错码中的首位。则PCIe链路的接收端可以在读完接收到的数据帧中的第二数据块后,按照将第二数据块输入约定的第一种校验算法中得到第一个校验码,与数据帧中第一个校验码进行对比,若一致则校验通过,将第二数据块进行存储,若不一致则利用第一校验码后的第一个纠错码对第二数据块进行数据纠错,而后再利用之后的第三个校验码进行校验,以此类推……若最后一个校验码校验仍不通过,则确认第二数据块产生误码较多无法修复,此时再触发PCIe链路的发送端重新发送携带第一数据块的数据帧。
一种可选的方案是N为1。如图2所示,一种现有的PCIe数据帧所包括的块定义分别为开始位(Start)、序列号(Se’quen’ce Number)、头字节(He’a’de’r)、数据块(Da’ta)、校验位(LCRC)和结束位(En’d)。应用本申请实施例提供的PCIe链路的数据传输方法,如图3所示,采用N为1的方案,即新增一个校验码和纠错码,如新增2比特的CRC校验码和4比特的纠错码,则在数据块中减少6位数据,并将2比特的CRC校验码和4比特的纠错码依次放置于数据块与原有的校验位之间。则PCIe链路的接收端首先利用2比特的CRC校验码对接收到的数据帧中的第二数据块进行校验,若校验不通过则利用4比特的纠错码对第二数据块进行纠错,并利用校验位(LCRC)对纠错后的第二数据块进行校验,若还是校验不通过,则触发PCIe链路的发送端重新发送携带第一数据块的数据帧。
则在步骤S101:将根据第一数据块计算得到校验码和纠错码填入数据帧之前,本申请实施例提供的PCIe链路的数据传输方法还包括:
根据PCIe链路的传输状态和一个数据帧所传输的字节数确定N的值。
相应的,步骤S101:将待发送数据进行分块,得到第一数据块,具体包括:
根据N的值确定第一数据块的长度;
根据第一数据块的长度将待发送数据进行分块,得到第一数据块。
在具体实施中,在PCIe链路的调试过程中,可以试验不同的校验码和纠错码的组合方式,以寻找到最符合当前PCIe链路状态的方式,并在系统初始化时进行PCIe协议的更新。
若PCIe链路的传输状态较为紧张,则可以增加数据帧中纠错码的数量,从而在PCIe链路的接收端进行多次数据修复失败后再触发PCIe链路的发送端重发数据。若PCIe链路的接收端计算资源紧张,则减少校验码和纠错码的数量。若一个数据帧所传输的字节数较多,则可以增加纠错码的数量,反之则尽量采用较少的纠错码以节约系统资源。基于此原理,预先可以基于实验建立PCIe链路的传输状态、PCIe链路的接收端的资源状态和一个数据帧所传输的字节数与N值的计算关系式,以便自动确定N值。
实施例三
在上述实施例的基础上,在步骤S101:将待发送数据进行分块,得到第一数据块之前,本申请实施例提供的PCIe链路的数据传输方法中还包括:
根据PCIe链路的传输状态和一个数据帧所传输的字节数确定根据一个第一数据块生成的纠错码的个数。
相应的,步骤S101:将待发送数据进行分块,得到第一数据块,具体包括:
根据纠错码的个数确定第一数据块的长度;
根据第一数据块的长度将待发送数据进行分块,得到第一数据块。
在具体实施中,在PCIe链路的调试过程中,可以试验不同的校验码和纠错码的组合方式,以寻找到最符合当前PCIe链路状态的方式,并在系统初始化时进行PCIe协议的更新。
若PCIe链路的传输状态较为紧张,则可以增加数据帧中纠错码的数量,从而在PCIe链路的接收端进行多次数据修复失败后再触发PCIe链路的发送端重发数据。若PCIe链路的接收端计算资源紧张,则减少校验码和纠错码的数量。若一个数据帧所传输的字节数较多,则可以增加纠错码的数量,反之则尽量采用较少的纠错码以节约系统资源。基于此原理,预先可以基于实验建立PCIe链路的传输状态、PCIe链路的接收端的资源状态和一个数据帧所传输的字节数与N值的计算关系式,以便自动确定N值。
上文详述了PCIe链路的数据传输方法对应的各个实施例,在此基础上,本申请还公开了与上述方法对应的PCIe链路的数据传输装置、设备及计算机可读存储介质。
实施例四
图4为本申请实施例提供的一种PCIe链路的数据传输装置的结构示意图。
如图4所示,本申请实施例提供的PCIe链路的数据传输装置包括:
拆分模块401,用于将待发送数据进行分块,得到第一数据块;
生成模块402,用于在生成第一数据块的数据帧时,将根据第一数据块计算得到校验码和纠错码填入数据帧;
发送模块403,用于将数据帧发送至PCIe链路的接收端,以使接收端根据校验码对接收到的数据帧中的第二数据块进行校验失败时利用纠错码对第二数据块进行数据纠错、并在纠错失败后触发发送端重新发送第一数据块。
可选的,生成模块402将根据第一数据块计算得到校验码和纠错码填入数据帧,具体为:
将根据第一数据块计算得到的N+1个由不同的计算方式计算得到的校验码和N个纠错码填入数据帧;
相应的,接收端根据校验码对接收到的数据帧中的第二数据块进行校验失败时利用纠错码对第二数据块进行数据纠错、并在纠错失败后触发发送端重新发送第一数据块,具体为:
接收端每利用一个校验码对第二数据块进行校验失败时,即利用一个纠错码对第二数据块进行数据纠错,而后利用下一个校验码对纠错后的第二数据块进行校验,直至最后一个校验码校验失败后触发发送端重新发送第一数据块;
其中,N为正整数。
可选的,校验码和纠错码在数据帧中第一数据块之后的字节中交错排列,且一个校验码列于校验码和纠错码中的首位。
可选的,N为1。
可选的,本申请实施例提供的PCIe链路的数据传输装置还包括:
第一确定模块,用于在将待发送数据进行分块,得到第一数据块之前,根据PCIe链路的传输状态和一个数据帧所传输的字节数确定N的值;
相应的,拆分模块401具体包括:
第一确定子模块,用于根据N的值确定第一数据块的长度;
第一拆分子模块,用于根据第一数据块的长度将待发送数据进行分块,得到第一数据块。
可选的,本申请实施例提供的PCIe链路的数据传输装置还包括:
第二确定模块,用于在将待发送数据进行分块,得到第一数据块之前,根据PCIe链路的传输状态和一个数据帧所传输的字节数确定根据一个第一数据块生成的纠错码的个数;
相应的,拆分模块401具体包括:
第二确定子模块,用于根据纠错码的个数确定第一数据块的长度;
第二拆分子模块,用于根据第一数据块的长度将待发送数据进行分块,得到第一数据块。
可选的,校验码具体为循环冗余校验码,纠错码具体为前向纠错码。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
实施例五
图5为本申请实施例提供的一种PCIe链路的数据传输设备的结构示意图。
如图5所示,本申请实施例提供的PCIe链路的数据传输设备包括:
存储器510,用于存储指令,所述指令包括上述任意一项实施例所述的PCIe链路的数据传输方法的步骤;
处理器520,用于执行所述指令。
其中,处理器520可以包括一个或多个处理核心,比如3核心处理器、8核心处理器等。处理器520可以采用数字信号处理DSP(Digital Signal Processing)、现场可编程门阵列FPGA(Field-Programmable Gate Array)、可编程逻辑阵列PLA(Programmable LogicArray)中的至少一种硬件形式来实现。处理器520也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器CPU(CentralProcessing Unit);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器520可以集成有图像处理器GPU(Graphics Processing Unit),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器520还可以包括人工智能AI(Artificial Intelligence)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器510可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器510还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器510至少用于存储以下计算机程序511,其中,该计算机程序511被处理器520加载并执行之后,能够实现前述任一实施例公开的PCIe链路的数据传输方法中的相关步骤。另外,存储器510所存储的资源还可以包括操作系统512和数据513等,存储方式可以是短暂存储或者永久存储。其中,操作系统512可以为Windows。数据513可以包括但不限于上述方法所涉及到的数据。
在一些实施例中,PCIe链路的数据传输设备还可包括有显示屏530、电源540、通信接口550、输入输出接口560、传感器570以及通信总线580。
本领域技术人员可以理解,图5中示出的结构并不构成对PCIe链路的数据传输设备的限定,可以包括比图示更多或更少的组件。
本申请实施例提供的PCIe链路的数据传输设备,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如上所述的PCIe链路的数据传输方法,效果同上。
实施例六
需要说明的是,以上所描述的装置、设备实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例所述方法的全部或部分步骤。
为此,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如PCIe链路的数据传输方法的步骤。
该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器ROM(Read-OnlyMemory)、随机存取存储器RAM(Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例中提供的计算机可读存储介质所包含的计算机程序能够在被处理器执行时实现如上所述的PCIe链路的数据传输方法的步骤,效果同上。
以上对本申请所提供的一种PCIe链路的数据传输方法、装置、设备及计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

Claims (9)

1.一种PCIe链路的数据传输方法,其特征在于,基于PCIe链路的发送端,包括:
根据所述PCIe链路的传输状态和一个数据帧所传输的字节数确定根据一个第一数据块生成的纠错码的个数;
将待发送数据进行分块,得到所述第一数据块;
在生成所述第一数据块的所述数据帧时,将根据所述第一数据块计算得到校验码和纠错码填入所述数据帧;
将所述数据帧发送至所述PCIe链路的接收端,以使所述接收端根据所述校验码对接收到的所述数据帧中的第二数据块进行校验失败时利用所述纠错码对所述第二数据块进行数据纠错、并在纠错失败后触发所述发送端重新发送所述第一数据块;
其中,所述将待发送数据进行分块,得到所述第一数据块,具体包括:根据所述纠错码的个数确定所述第一数据块的长度;根据所述第一数据块的长度将所述待发送数据进行分块,得到所述第一数据块;
所述根据所述PCIe链路的传输状态和一个数据帧所传输的字节数确定根据一个第一数据块生成的纠错码的个数,具体包括:所述PCIe链路的传输状态越紧张,在所述数据帧中设置纠错码的数量越多;所述接收端的计算资源越紧张,在所述数据帧中设置校验码的数量和纠错码的数量越少;一个所述数据帧的字节数越多,在所述数据帧中设置纠错码的数量越多。
2.根据权利要求1所述的数据传输方法,其特征在于,所述将根据所述第一数据块计算得到校验码和纠错码填入所述数据帧,具体为:
将根据所述第一数据块计算得到的N+1个由不同的计算方式计算得到的所述校验码和N个所述纠错码填入所述数据帧;
相应的,所述接收端根据所述校验码对接收到的所述数据帧中的第二数据块进行校验失败时利用所述纠错码对所述第二数据块进行数据纠错、并在纠错失败后触发所述发送端重新发送所述第一数据块,具体为:
所述接收端每利用一个所述校验码对所述第二数据块进行校验失败时,即利用一个所述纠错码对所述第二数据块进行数据纠错,而后利用下一个所述校验码对纠错后的所述第二数据块进行校验,直至最后一个所述校验码校验失败后触发所述发送端重新发送所述第一数据块;
其中,N为正整数。
3.根据权利要求2所述的数据传输方法,其特征在于,所述校验码和所述纠错码在所述数据帧中所述第一数据块之后的字节中交错排列,且一个所述校验码列于所述校验码和所述纠错码中的首位。
4.根据权利要求2所述的数据传输方法,其特征在于,所述N为1。
5.根据权利要求2所述的数据传输方法,其特征在于,在所述将待发送数据进行分块,得到第一数据块之前,还包括:
根据所述PCIe链路的传输状态和一个所述数据帧所传输的字节数确定N的值;
相应的,所述将待发送数据进行分块,得到第一数据块,具体包括:
根据N的值确定所述第一数据块的长度;
根据所述第一数据块的长度将所述待发送数据进行分块,得到所述第一数据块。
6.根据权利要求1所述的数据传输方法,其特征在于,所述校验码具体为循环冗余校验码,所述纠错码具体为前向纠错码。
7.一种PCIe链路的数据传输装置,其特征在于,包括:
拆分模块,用于将待发送数据进行分块,得到第一数据块;
生成模块,用于在生成所述第一数据块的数据帧时,将根据所述第一数据块计算得到校验码和纠错码填入所述数据帧;
发送模块,用于将所述数据帧发送至所述PCIe链路的接收端,以使所述接收端根据所述校验码对接收到的所述数据帧中的第二数据块进行校验失败时利用所述纠错码对所述第二数据块进行数据纠错、并在纠错失败后触发发送端重新发送所述第一数据块;
第二确定模块,用于在将所述待发送数据进行分块,得到所述第一数据块之前,根据所述PCIe链路的传输状态和一个所述数据帧所传输的字节数确定根据一个所述第一数据块生成的纠错码的个数;
相应的,所述拆分模块具体包括:
第二确定子模块,用于根据纠错码的个数确定所述第一数据块的长度;
第二拆分子模块,用于根据所述第一数据块的长度将所述待发送数据进行分块,得到所述第一数据块;
所述根据所述PCIe链路的传输状态和一个所述数据帧所传输的字节数确定根据一个所述第一数据块生成的纠错码的个数,具体包括:所述PCIe链路的传输状态越紧张,在所述数据帧中设置纠错码的数量越多;所述接收端的计算资源越紧张,在所述数据帧中设置校验码的数量和纠错码的数量越少;一个所述数据帧的字节数越多,在所述数据帧中设置纠错码的数量越多。
8.一种PCIe链路的数据传输设备,其特征在于,包括:
存储器,用于存储指令,所述指令包括权利要求1至6任意一项所述PCIe链路的数据传输方法的步骤;
处理器,用于执行所述指令。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任意一项所述PCIe链路的数据传输方法的步骤。
CN202110744270.3A 2021-06-30 2021-06-30 一种PCIe链路的数据传输方法、装置及设备 Active CN113489570B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110744270.3A CN113489570B (zh) 2021-06-30 2021-06-30 一种PCIe链路的数据传输方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110744270.3A CN113489570B (zh) 2021-06-30 2021-06-30 一种PCIe链路的数据传输方法、装置及设备

Publications (2)

Publication Number Publication Date
CN113489570A CN113489570A (zh) 2021-10-08
CN113489570B true CN113489570B (zh) 2023-05-09

Family

ID=77937403

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110744270.3A Active CN113489570B (zh) 2021-06-30 2021-06-30 一种PCIe链路的数据传输方法、装置及设备

Country Status (1)

Country Link
CN (1) CN113489570B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114499776A (zh) * 2022-01-11 2022-05-13 维沃移动通信有限公司 数据传输方法及其装置
CN115567167B (zh) * 2022-12-06 2023-03-31 芯动微电子科技(珠海)有限公司 一种总线传输数据纠错方法及装置
CN116366206B (zh) * 2023-06-01 2023-08-25 三未信安科技股份有限公司 一种增强密码卡可靠性的方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101459431A (zh) * 2008-12-30 2009-06-17 北京大学 一种信道纠错码bch码和rs码的译码方法
CN103533045A (zh) * 2013-10-12 2014-01-22 江苏华丽网络工程有限公司 一种用于pcie数据链路层高性能容错的方法
CN110402606A (zh) * 2017-03-22 2019-11-01 索尼公司 终端设备、基站设备、通信方法和存储介质
CN112564881A (zh) * 2020-12-01 2021-03-26 国网安徽省电力有限公司 基于长短时多门限信道状态预测的5g通信自适应传输方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120112981A (ko) * 2011-04-04 2012-10-12 삼성전기주식회사 데이터 프레임의 재전송 감소 방법 및 이를 위한 수신 노드
CN103763067B (zh) * 2014-01-28 2017-11-10 天地融科技股份有限公司 一种通信数据包纠错校验方法与装置
CN105740088B (zh) * 2016-01-22 2021-06-22 深圳市硅格半导体有限公司 闪存数据纠错方法及装置
US20180358989A1 (en) * 2017-06-09 2018-12-13 Western Digital Technologies, Inc. Non-volatile Storage Systems With Application-Aware Error-Correcting Codes
US10831596B2 (en) * 2018-01-22 2020-11-10 Micron Technology, Inc. Enhanced error correcting code capability using variable logical to physical associations of a data block
US11637657B2 (en) * 2019-02-15 2023-04-25 Intel Corporation Low-latency forward error correction for high-speed serial links

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101459431A (zh) * 2008-12-30 2009-06-17 北京大学 一种信道纠错码bch码和rs码的译码方法
CN103533045A (zh) * 2013-10-12 2014-01-22 江苏华丽网络工程有限公司 一种用于pcie数据链路层高性能容错的方法
CN110402606A (zh) * 2017-03-22 2019-11-01 索尼公司 终端设备、基站设备、通信方法和存储介质
CN112564881A (zh) * 2020-12-01 2021-03-26 国网安徽省电力有限公司 基于长短时多门限信道状态预测的5g通信自适应传输方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于单反馈SLT码的纠错码与MP联合译码;牛芳琳;王洪玉;祝开艳;;系统工程与电子技术(01);全文 *

Also Published As

Publication number Publication date
CN113489570A (zh) 2021-10-08

Similar Documents

Publication Publication Date Title
CN113489570B (zh) 一种PCIe链路的数据传输方法、装置及设备
US20220147417A1 (en) Flit-based parallel-forward error correction and parity
US10153887B2 (en) Patch download with improved acknowledge mechanism
US20100138573A1 (en) System including transmitter and receiver
US8271850B2 (en) Fast low-density parity-check code encoder
CN102412847A (zh) 用联合节点处理来解码低密度奇偶校验码的方法和设备
CN110943800A (zh) 数据包的发送方法、装置及系统、存储介质、电子装置
CN112217599A (zh) 数据帧接收方法和装置以及通信方法和系统
CN102291408B (zh) 对iSCSI协议报文的处理方法及装置
WO2018214319A1 (zh) 一种SerDes链路参数调试方法、装置和计算机存储介质
CN112702065A (zh) Fpga码流数据校验方法及装置
KR20120112981A (ko) 데이터 프레임의 재전송 감소 방법 및 이를 위한 수신 노드
CN103034559B (zh) 基于rdma架构设计的pq检验模块及检验方法
CN110545161A (zh) 一种具有冗余的多媒体数据实时传输方法
US9118597B2 (en) Method and system for requester virtual cut through
CN104579605A (zh) 一种数据传输方法及装置
CN115129509A (zh) 一种数据传输方法、装置、介质
CN105007286A (zh) 解码方法和装置及云存储方法和系统
US10528408B2 (en) Symmetric connectivity over SCSI where the initiator and target are symmetric
US9021123B2 (en) Method and system for responder side cut through of received data
CN116346278A (zh) 发送方法、接收方法、装置、系统、设备及存储介质
CN115085867A (zh) 一种can总线报文的e2e校验方法及装置
CN109039536A (zh) 数据的传输方法、设备及可读介质
CN110138505B (zh) 一种异构协议转换的crc计算方法及系统
CN112135286A (zh) 一种基于蓝牙固件升级传输效率提升的方法及装置

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