CN113204515B - Pcie应用层数据接收过程中的流控系统及方法 - Google Patents

Pcie应用层数据接收过程中的流控系统及方法 Download PDF

Info

Publication number
CN113204515B
CN113204515B CN202110615636.7A CN202110615636A CN113204515B CN 113204515 B CN113204515 B CN 113204515B CN 202110615636 A CN202110615636 A CN 202110615636A CN 113204515 B CN113204515 B CN 113204515B
Authority
CN
China
Prior art keywords
data
flow control
read
module
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
Application number
CN202110615636.7A
Other languages
English (en)
Other versions
CN113204515A (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 Xinda Jiean Information Technology Co Ltd
Original Assignee
Zhengzhou Xinda Jiean 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 Xinda Jiean Information Technology Co Ltd filed Critical Zhengzhou Xinda Jiean Information Technology Co Ltd
Priority to CN202110615636.7A priority Critical patent/CN113204515B/zh
Publication of CN113204515A publication Critical patent/CN113204515A/zh
Application granted granted Critical
Publication of CN113204515B publication Critical patent/CN113204515B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)

Abstract

本发明属于计算机技术领域,具体涉及一种PCIE应用层数据接收过程中的流控系统及方法,该系统包括PCIE设备和主机,所述PCIE设备包括PCIE IP核、读请求发送模块、数据接收模块、排序缓冲区、数据读取模块和流控模块,所述PCIE IP核通过PCIE接口与主机进行高速数据交互。本发明由发送端连续发送读请求,接收端根据排序情况,实现对发送端的反馈,通过控制发送端的发包动作,来实现排序过程中的流控,防止排序过程中的数据流溢出;同时本发明将PCIE IP核、主机和排序缓冲区当成一个“FIFO”,由流控模块根据读请求发送模块反馈的写完成指针1和数据读取模块反馈的读完成指针来实现对“FIFO”内压数据包数量的控制,进一步保证数据流不丢失。

Description

PCIE应用层数据接收过程中的流控系统及方法
技术领域
本发明属于计算机技术领域,具体涉及一种PCIE应用层数据接收过程中的流控系统及方法。
背景技术
随着现代社会科技的发展,PCIE(peripheral component interconnectexpress)总线作为一种高性能I/O总线广泛应用于计算机系统中,目前几乎所有商业级和工业级的计算机生产商都在其生产的计算机系统中提供了PCIE总线接口。PCIE总线标准将取代原来的PCI和AGP总线,成为新一代计算机系统的标准总线接口。PCIE总线使用高速差分信号,并采用了端到端双向传输方式,即接收和发送分别占用一对(或多对)差分对,这样的传输方式大大提高了传输速率。
Host与PCIE设备之间,或者PCIE设备与设备之间,数据传输都是以Packet形式进行的。事务层根据上层(即应用层)请求的类型、目的地址和其它相关属性,把这些请求打包,产生TLP,也就是Transaction Layer Packet。然后这些TLP往下,经历数据链路层,物理层,最终到达目标设备。
PCIE事物层与Host进行高速数据交互时,当请求方根据最大读请求长度发出读请求TLP包,Host以数量不等的CPLD包回应,CPLD包数据载荷最大为Max Payload Size。由于PCIE的传输有延时现象,可能由多个CPLD包对应一个TLP包,所以返回的CPLD包有乱序现象。为了解决乱序现象,引入了TAG和排序缓冲区;在发TLP包时,对发出的各个TLP包标注顺序的TAG,在接收CPLD包时,根据附带的TAG标识在排序缓冲区进行排序,从而解决CPLD包乱序现象。然而排序过程中,如果Host和PCIE_IP中的压包量过大,则容易导致数据流溢出排序缓冲区,进而造成数据丢失的问题。
发明内容
为了解决现有技术中存在的问题,本发明提出了一种PCIE应用层数据接收过程中的流控系统及方法,以防止在排序过程中数据流溢出,进而导致数据丢失的风险。
为解决上述技术问题,本发明采用以下的技术方案:
本发明提出一种PCIE应用层数据接收过程中的流控系统,该系统包括PCIE设备和主机,所述PCIE设备包括PCIE IP核、读请求发送模块、数据接收模块、排序缓冲区、数据读取模块和流控模块;所述PCIE IP核通过PCIE接口与主机进行高速数据交互;
所述读请求发送模块,按照TAG号取值范围0~k循环发送TLP包,且每完成发送一个TLP包则向所述流控模块标记一次写完成指针1,并将发送的每个TAG号以及对应的TLP包经由PCIE IP核发送到主机;
所述数据接收模块,将接收到的TLP包的数据根据TAG、Length、Byte Count发送到排序缓冲区,当接收到的Length和Byte Count相等时,表明该TAG号对应的TLP数据包收集完毕,并向所述流控模块标记一次写完成指针2;
所述数据读取模块,从所述排序缓冲区按TAG号顺序和长度读取排序完成的TLP数据,每次读取量为一个TAG号对应的TLP数据,且每完成读取一个TAG号则向所述流控模块标记一次读完成指针;
所述流控模块,用于指示当前TAG号的数据是否可以读取,并向数据读取模块指示本TAG号内数据长度;同时基于读请求发送模块、数据接收模块以及数据读取模块反馈的写完成指针1、写完成指针2和读完成指针完成对PCIE IP核和主机内压数据包数量的计算,完成流量控制。
进一步地,所述流控模块通过比较写完成指针2和读完成指针来实现对压包的控制,预设n为压包的最大限定量,当(写完成指针2-读完成指针)>=(k+1-n)时,即:剩余空间不小于压包的最大限定量时,通知读请求发送模块停止发送TLP包;当(写完成指针2-读完成指针)<(k+1-n)时,即:剩余空间小于压包的最大限定量时,通知读请求发送模块启动发送TLP包。
进一步地,所述流控模块接收数据接收模块反馈的写完成指针2,所述写完成指针2为某TAG号的TLP包接收完成标识,所述流控模块根据该TAG号的TLP包接收完成标识实现对数据读取模块的读控制。
进一步地,所述流控模块对数据读取模块的读控制,包括:
当所述数据接收模块接收到某TAG号的TLP包后,则向流控模块写入该TAG号的TLP包接收完成标识,然后流控模块按照已接收的TAG和Length数据来控制数据读取模块进行顺序读取,即使得数据读取模块只会读取已接收到的TAG号对应的TLP包。
进一步地,预设TLP包的Read_Request_Size为m,则排序缓冲区对每个TAG号的存储空间大小为m,数量至少为k+1个,则排序缓冲区的空间大小至少为(k+1)m。
进一步地,所述排序缓冲区内剩余的存储空间应大于等于PCIE IP核和主机内缓存的TLP数据包n,即满足下述不等式:
(k+1)*m-(写完成指针2-读完成指针)*m>=n*m,其中“*”表示相乘。
进一步地,所述排序缓冲区的存储空间已存有的数据不得大于(k+1-n)个TAG号对应的TLP数据包,具体运算过程如下:
将不等式:(k+1)*m-(写完成指针2-读完成指针)*m>=n*m的两端分别消除m得到不等式:(k+1)-(写完成指针2-读完成指针)>=n;
对不等式:(k+1)-(写完成指针2-读完成指针)>=n进行移项处理进一步得到不等式:(写完成指针2-读完成指针)<=(k+1-n),其中,(写完成指针2-读完成指针)表示排序缓冲区的存储空间已存有的数据范围。
进一步地,所述PCIE IP核、主机和排序缓冲区充当为一个“FIFO”,FIFO表示先入先出队列,并由所述流控模块根据读请求发送模块反馈的写完成指针1和数据读取模块反馈的读完成指针来实现对FIFO内压数据包数量的控制。
本发明还提出一种PCIE应用层数据接收过程中的流控方法,应用于上述的PCIE应用层数据接收过程中的流控系统,包含以下步骤:
由读请求发送模块按照TAG号取值范围0~k循环发送TLP包,且每完成发送一个TLP包则向所述流控模块标记一次写完成指针1,并将发送的每个TAG号以及对应的TLP包经由PCIE IP核发送到主机以写入对应的数据;
由数据接收模块接收到主机返回的TLP数据包并根据TAG、Length、Byte Count发送到排序缓冲区,当接收到的Length和Byte Count相等时,表明该TAG号对应的TLP数据包收集完毕,并向所述流控模块标记一次写完成指针2;
由数据读取模块从所述排序缓冲区按TAG号顺序和长度读取排序完成的TLP数据,每次读取量为一个TAG号对应的TLP数据,且每完成读取一个TAG号则向所述流控模块标记一次读完成指针;
由流控模块指示当前TAG号的数据是否可以读取,并向数据读取模块指示本TAG号内数据长度;同时基于读请求发送模块、数据接收模块以及数据读取模块反馈的写完成指针1、写完成指针2和读完成指针完成对PCIE IP核和主机内压数据包数量的计算,完成流量控制。
进一步地,该方法还包括:
所述流控模块通过比较写完成指针2和读完成指针来实现对压包的控制,预设n为压包的最大限定量,当(写完成指针2-读完成指针)>=(k+1-n)时,即:剩余空间不小于压包的最大限定量时,通知读请求发送模块停止发送TLP包;当(写完成指针2-读完成指针)<(k+1-n)时,即:剩余空间小于压包的最大限定量时,通知读请求发送模块启动发送TLP包。
与现有技术相比,本发明具有以下优点:
本发明由发送端连续发送读请求,接收端根据排序情况,实现对发送端的反馈,通过控制发送端的发包动作,来实现排序过程中的流控,防止排序过程中的数据流溢出;同时本发明将PCIE IP核、主机和排序缓冲区当成一个“FIFO”,由流控模块根据读请求发送模块反馈的写完成指针1和数据读取模块反馈的读完成指针来实现对“FIFO”内压数据包数量的控制,进一步保证数据流不丢失。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例的PCIE应用层数据接收过程中的流控系统的结构框图;
图2是本发明实施例的PCIE应用层数据接收过程中的流控方法的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本实施例提出一种PCIE应用层数据接收过程中的流控系统,该系统包括PCIE设备和主机,所述PCIE设备包括PCIE IP核、读请求发送模块、数据接收模块、排序缓冲区、数据读取模块和流控模块;所述PCIE IP核通过PCIE接口与主机进行高速数据交互。
所述读请求发送模块,按照TAG号取值范围0~k循环发送TLP包,且每完成发送一个TLP包则向所述流控模块标记一次写完成指针1,并将发送的每个TAG号以及对应的TLP包经由PCIE IP核发送到主机。
所述数据接收模块,将接收到的TLP包的数据根据TAG、Length、Byte Count发送到排序缓冲区,当接收到的Length和Byte Count相等时,表明该TAG号对应的TLP数据包收集完毕,并向所述流控模块标记一次写完成指针2。
所述数据读取模块,从所述排序缓冲区按TAG号顺序和长度读取排序完成的TLP数据,每次读取量为一个TAG号对应的TLP数据,且每完成读取一个TAG号则向所述流控模块标记一次读完成指针。
所述流控模块,用于指示当前TAG号的数据是否可以读取,并向数据读取模块指示本TAG号内数据长度;同时基于读请求发送模块、数据接收模块以及数据读取模块反馈的写完成指针1、写完成指针2和读完成指针完成对PCIE IP核和主机内压数据包数量的计算,完成流量控制。
需要说明的是,本实施例对排序缓冲区的操作有两个指针:写完成指针2和读完成指针,且两个指针是相互追逐的过程。
在实际应用中,读请求发送模块将TAG号以及对应的TLP包经由PCIE IP核发送到主机,主机对TLP包进行写入数据,待写入完成后将以CPLD包的形式返回给PCIE设备,并由数据接收模块进行接收。
进一步的,所述流控模块通过比较写完成指针2和读完成指针来实现对压包的控制,预设n为压包的最大限定量,当(写完成指针2-读完成指针)>=(k+1-n)时,即:剩余空间不小于压包的最大限定量时,通知读请求发送模块停止发送TLP包;当(写完成指针2-读完成指针)<(k+1-n)时,即:剩余空间小于压包的最大限定量时,通知读请求发送模块启动发送TLP包。本发明通过控制读请求发送模块的发包动作,来实现排序过程中的流控。
所述流控模块接收数据接收模块反馈的写完成指针2,所述写完成指针2为某TAG号的TLP包接收完成标识,所述流控模块根据该TAG号的TLP包接收完成标识实现对数据读取模块的读控制。
具体的,当数据接收模块接收到某TAG号的TLP包后,则向流控模块写入该TAG号的TLP包接收完成标识(即写完成指针2),然后流控模块即可按照已接收的TAG和Length数据来控制数据读取模块进行顺序读取。可以简单理解为,在流控模块的读控制下,使得数据读取模块只会读取已接收到的TAG号对应的TLP包,减少一些不必要的无效读操作过程,提升读取效率。
根据本发明的具体实施例,预设TLP包的Read_Request_Size为m,则排序缓冲区对每个TAG号的存储空间大小为m,数量至少为k+1个,则排序缓冲区的空间大小至少为(k+1)m。
进一步的,所述排序缓冲区内剩余的存储空间应大于等于PCIE IP核和主机内缓存的TLP数据包n,即满足下述不等式:
(k+1)*m-(写完成指针2-读完成指针)*m>=n*m,其中“*”表示相乘。
可以理解的是,为了不丢失数据,需满足:排序缓冲区内剩余的存储空间应大于PCIE IP核和主机内缓存的TLP数据包;换言之,排序缓冲区内的剩余容量要大于还没收回的TLP数据包;这样,一旦某个TAG号对应的TLP数据包没收完整,排序缓冲区可以预留充足的剩余空间以满足将所有数据收集过来,实现在极端情况下完成数据排序而不丢失数据的目的。
进一步的,排序缓冲区的存储空间已存有的数据不得大于(k+1-n)个TAG号对应的TLP数据包,具体运算过程如下:
将不等式:(k+1)*m-(写完成指针2-读完成指针)*m>=n*m的两端分别消除m得到不等式:(k+1)-(写完成指针2-读完成指针)>=n;
对不等式:(k+1)-(写完成指针2-读完成指针)>=n进行移项处理进一步得到不等式:(写完成指针2-读完成指针)<=(k+1-n),其中,(写完成指针2-读完成指针)表示排序缓冲区的存储空间已存有的数据范围。
举一个具体应用,预设k+1=16;Read_Request_Size m=512B;
PCIE IP核和主机内压包的最大限定量n=8;
则将上述参数值代入上述不等式中,得到:
(写完成指针2-读完成指针)*512B<=16*512B-8*512B;
由上式进一步计算得出:(写完成指针2-读完成指针)*512B<=8*512B;
由上式进一步计算得出:(写完成指针2-读完成指针)<=8;
进而根据式:(写完成指针2-读完成指针)<=8可以推出:排序缓冲区的存储空间存有的数据不得大于8个TAG号对应的TLP数据包。
本发明可以将PCIE IP核、主机和排序缓冲区充当为一个“FIFO”,FIFO表示先入先出队列,并由所述流控模块根据读请求发送模块反馈的写完成指针1和数据读取模块反馈的读完成指针来实现对FIFO内压数据包数量的控制,进一步保证数据流不丢失。
如图2所示,本实施例还提出一种PCIE应用层数据接收过程中的流控方法,应用于上述的PCIE应用层数据接收过程中的流控系统,该方法包含以下步骤:
步骤S101,由读请求发送模块按照TAG号取值范围0~k循环发送TLP包,且每完成发送一个TLP包则向所述流控模块标记一次写完成指针1,并将发送的每个TAG号以及对应的TLP包经由PCIE IP核发送到主机以写入对应的数据;
步骤S102,由数据接收模块接收到主机返回的TLP数据包并根据TAG、Length、ByteCount发送到排序缓冲区,当接收到的Length和Byte Count相等时,表明该TAG号对应的TLP数据包收集完毕,并向所述流控模块标记一次写完成指针2;
步骤S103,由数据读取模块从所述排序缓冲区按TAG号顺序和长度读取排序完成的TLP数据,每次读取量为一个TAG号对应的TLP数据,且每完成读取一个TAG号则向所述流控模块标记一次读完成指针;
步骤S104,由流控模块指示当前TAG号的数据是否可以读取,并向数据读取模块指示本TAG号内数据长度;同时基于读请求发送模块、数据接收模块以及数据读取模块反馈的写完成指针1、写完成指针2和读完成指针完成对PCIE IP核和主机内压数据包数量的计算,完成流量控制。
进一步的,该方法还包括:
所述流控模块通过比较写完成指针2和读完成指针来实现对压包的控制,预设n为压包的最大限定量,当(写完成指针2-读完成指针)>=(k+1-n)时,即:剩余空间不小于压包的最大限定量时,通知读请求发送模块停止发送TLP包;当(写完成指针2-读完成指针)<(k+1-n)时,即:剩余空间小于压包的最大限定量时,通知读请求发送模块启动发送TLP包。
本发明由发送端连续发送读请求,接收端根据排序情况,实现对发送端的反馈,通过控制发送端的发包动作,来实现排序过程中的流控,防止排序过程中的数据流溢出;同时本发明将PCIE IP核、主机和排序缓冲区当成一个“FIFO”,由流控模块根据读请求发送模块反馈的写完成指针1和数据读取模块反馈的读完成指针来实现对“FIFO”内压数据包数量的控制,进一步保证数据流不丢失。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (8)

1.一种PCIE应用层数据接收过程中的流控系统,其特征在于,该系统包括PCIE设备和主机,所述PCIE设备包括PCIE IP核、读请求发送模块、数据接收模块、排序缓冲区、数据读取模块和流控模块;所述PCIE IP核通过PCIE接口与主机进行高速数据交互;
所述读请求发送模块,按照TAG号取值范围0~k循环发送TLP包,且每完成发送一个TLP包则向所述流控模块标记一次写完成指针1,并将发送的每个TAG号以及对应的TLP包经由PCIE IP核发送到主机;
所述数据接收模块,将接收到的TLP包的数据根据TAG、Length、Byte Count发送到排序缓冲区,当接收到的Length和Byte Count相等时,表明该TAG号对应的TLP数据包收集完毕,并向所述流控模块标记一次写完成指针2;
所述数据读取模块,从所述排序缓冲区按TAG号顺序和长度读取排序完成的TLP数据,每次读取量为一个TAG号对应的TLP数据,且每完成读取一个TAG号则向所述流控模块标记一次读完成指针;
所述流控模块,用于指示当前TAG号的数据是否可以读取,并向数据读取模块指示本TAG号内数据长度;同时基于读请求发送模块、数据接收模块以及数据读取模块反馈的写完成指针1、写完成指针2和读完成指针完成对PCIE IP核和主机内压数据包数量的计算,完成流量控制;
所述流控模块通过比较写完成指针2和读完成指针来实现对压包的控制,预设n为压包的最大限定量,当(写完成指针2-读完成指针)>=(k+1-n)时,即:剩余空间不小于压包的最大限定量时,通知读请求发送模块停止发送TLP包;当(写完成指针2-读完成指针)<(k+1-n)时,即:剩余空间小于压包的最大限定量时,通知读请求发送模块启动发送TLP包。
2.根据权利要求1所述的PCIE应用层数据接收过程中的流控系统,其特征在于,所述流控模块接收数据接收模块反馈的写完成指针2,所述写完成指针2为某TAG号的TLP包接收完成标识,所述流控模块根据该TAG号的TLP包接收完成标识实现对数据读取模块的读控制。
3.根据权利要求2所述的PCIE应用层数据接收过程中的流控系统,其特征在于,所述流控模块对数据读取模块的读控制,包括:
当所述数据接收模块接收到某TAG号的TLP包后,则向流控模块写入该TAG号的TLP包接收完成标识,然后流控模块按照已接收的TAG和Length数据来控制数据读取模块进行顺序读取,即使得数据读取模块只会读取已接收到的TAG号对应的TLP包。
4.根据权利要求1所述的PCIE应用层数据接收过程中的流控系统,其特征在于,预设TLP包的Read_Request_Size为m,则排序缓冲区对每个TAG号的存储空间大小为m,数量至少为k+1个,则排序缓冲区的空间大小至少为(k+1)m。
5.根据权利要求4所述的PCIE应用层数据接收过程中的流控系统,其特征在于,所述排序缓冲区内剩余的存储空间应大于等于PCIE IP核和主机内缓存的TLP数据包n,即满足下述不等式:
(k+1)*m-(写完成指针2-读完成指针)*m>=n*m,其中“*”表示相乘。
6.根据权利要求5所述的PCIE应用层数据接收过程中的流控系统,其特征在于,所述排序缓冲区的存储空间已存有的数据不得大于(k+1-n)个TAG号对应的TLP数据包,具体运算过程如下:
将不等式:(k+1)*m-(写完成指针2-读完成指针)*m>=n*m的两端分别消除m得到不等式:(k+1)-(写完成指针2-读完成指针)>=n;
对不等式:(k+1)-(写完成指针2-读完成指针)>=n进行移项处理进一步得到不等式:(写完成指针2-读完成指针)<=(k+1-n),其中,(写完成指针2-读完成指针)表示排序缓冲区的存储空间已存有的数据范围。
7.根据权利要求1所述的PCIE应用层数据接收过程中的流控系统,其特征在于,所述PCIE IP核、主机和排序缓冲区充当为一个“FIFO”,FIFO表示先入先出队列,并由所述流控模块根据读请求发送模块反馈的写完成指针1和数据读取模块反馈的读完成指针来实现对FIFO内压数据包数量的控制。
8.一种PCIE应用层数据接收过程中的流控方法,应用于如权利要求1至7任一项所述的PCIE应用层数据接收过程中的流控系统,其特征在于,包含以下步骤:
由读请求发送模块按照TAG号取值范围0~k循环发送TLP包,且每完成发送一个TLP包则向所述流控模块标记一次写完成指针1,并将发送的每个TAG号以及对应的TLP包经由PCIE IP核发送到主机以写入对应的数据;
由数据接收模块接收到主机返回的TLP数据包并根据TAG、Length、Byte Count发送到排序缓冲区,当接收到的Length和Byte Count相等时,表明该TAG号对应的TLP数据包收集完毕,并向所述流控模块标记一次写完成指针2;
由数据读取模块从所述排序缓冲区按TAG号顺序和长度读取排序完成的TLP数据,每次读取量为一个TAG号对应的TLP数据,且每完成读取一个TAG号则向所述流控模块标记一次读完成指针;
由流控模块指示当前TAG号的数据是否可以读取,并向数据读取模块指示本TAG号内数据长度;同时基于读请求发送模块、数据接收模块以及数据读取模块反馈的写完成指针1、写完成指针2和读完成指针完成对PCIE IP核和主机内压数据包数量的计算,完成流量控制;
所述流控模块通过比较写完成指针2和读完成指针来实现对压包的控制,预设n为压包的最大限定量,当(写完成指针2-读完成指针)>=(k+1-n)时,即:剩余空间不小于压包的最大限定量时,通知读请求发送模块停止发送TLP包;当(写完成指针2-读完成指针)<(k+1-n)时,即:剩余空间小于压包的最大限定量时,通知读请求发送模块启动发送TLP包。
CN202110615636.7A 2021-06-02 2021-06-02 Pcie应用层数据接收过程中的流控系统及方法 Active CN113204515B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110615636.7A CN113204515B (zh) 2021-06-02 2021-06-02 Pcie应用层数据接收过程中的流控系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110615636.7A CN113204515B (zh) 2021-06-02 2021-06-02 Pcie应用层数据接收过程中的流控系统及方法

Publications (2)

Publication Number Publication Date
CN113204515A CN113204515A (zh) 2021-08-03
CN113204515B true CN113204515B (zh) 2022-02-22

Family

ID=77023867

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110615636.7A Active CN113204515B (zh) 2021-06-02 2021-06-02 Pcie应用层数据接收过程中的流控系统及方法

Country Status (1)

Country Link
CN (1) CN113204515B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114553776B (zh) * 2022-02-28 2023-10-10 深圳市风云实业有限公司 一种信号乱序控制与速率自适应的传输装置及其传输方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5960215A (en) * 1996-09-12 1999-09-28 Digital Equipment Corporation Transmit data FIFO for flow controlled data
CN104393961A (zh) * 2014-12-12 2015-03-04 成都朗锐芯科技发展有限公司 一种接收包排序及无效包处理方法
CN108073546A (zh) * 2017-12-27 2018-05-25 西安奇维科技有限公司 一种基于fpga实现网络数据接收及读取控制方法
CN110688333A (zh) * 2019-09-29 2020-01-14 郑州信大捷安信息技术股份有限公司 一种基于pcie的dma数据传输系统及方法
CN112181887A (zh) * 2019-07-05 2021-01-05 迈普通信技术股份有限公司 数据传输方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8943255B2 (en) * 2012-05-29 2015-01-27 Lsi Corporation Methods and structure for accounting for connection resets between peripheral component interconnect express bridges and host devices

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5960215A (en) * 1996-09-12 1999-09-28 Digital Equipment Corporation Transmit data FIFO for flow controlled data
CN104393961A (zh) * 2014-12-12 2015-03-04 成都朗锐芯科技发展有限公司 一种接收包排序及无效包处理方法
CN108073546A (zh) * 2017-12-27 2018-05-25 西安奇维科技有限公司 一种基于fpga实现网络数据接收及读取控制方法
CN112181887A (zh) * 2019-07-05 2021-01-05 迈普通信技术股份有限公司 数据传输方法及装置
CN110688333A (zh) * 2019-09-29 2020-01-14 郑州信大捷安信息技术股份有限公司 一种基于pcie的dma数据传输系统及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于PCIe的多路传输系统的DMA控制器设计;李胜蓝等;《计算机应用》;20170310(第03期);第3-5页 *

Also Published As

Publication number Publication date
CN113204515A (zh) 2021-08-03

Similar Documents

Publication Publication Date Title
US7117308B1 (en) Hypertransport data path protocol
US5606559A (en) System and method for an efficient ATM adapter/device driver interface
US7366865B2 (en) Enqueueing entries in a packet queue referencing packets
KR100817676B1 (ko) 동적 클래스-기반 패킷 스케쥴링 방법 및 장치
US20050235072A1 (en) Data storage controller
US20090259786A1 (en) Data transfer system and method for host-slave interface with automatic status report
US7844752B2 (en) Method, apparatus and program storage device for enabling multiple asynchronous direct memory access task executions
CN101636721B (zh) 用于处理未知长度传输的dmac
CN108366111B (zh) 一种用于交换设备的数据包低时延缓存装置与方法
CN112835829B (zh) 多通道dma传输测控信号的方法
EP2097823A2 (en) Dynamic allocation of message buffers
US20110222540A1 (en) Packet assembly module for multi-core, multi-thread network processors
CN101877666A (zh) 基于零拷贝方式的多应用程序报文接收方法和装置
CN113204515B (zh) Pcie应用层数据接收过程中的流控系统及方法
US20050038946A1 (en) System and method using a high speed interface in a system having co-processors
EP1970815A1 (en) Data transfering apparatus and information processing system
US8094552B1 (en) Adaptive buffer for frame based storage communications protocols
EP2442500B1 (en) Data transfer device and data transfer method
CN117591023A (zh) 一种基于硬件卸载的分散聚集列表查询写入读取方法及装置
CN115002052B (zh) 一种分层的缓存控制器、控制方法及控制设备
CN114519013A (zh) 一种数据处理方法、装置、电子设备及存储介质
US7752355B2 (en) Asynchronous packet based dual port link list header and data credit management structure
US9665519B2 (en) Using a credits available value in determining whether to issue a PPI allocation request to a packet engine
US9338219B2 (en) Direct push operations and gather operations
US20010042143A1 (en) Memory access system in which processor generates operation request, and memory interface accesses memory, and performs operation on data

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