CN105721338B - 一种接收数据的处理方法及装置 - Google Patents

一种接收数据的处理方法及装置 Download PDF

Info

Publication number
CN105721338B
CN105721338B CN201610066151.6A CN201610066151A CN105721338B CN 105721338 B CN105721338 B CN 105721338B CN 201610066151 A CN201610066151 A CN 201610066151A CN 105721338 B CN105721338 B CN 105721338B
Authority
CN
China
Prior art keywords
breeze way
data packet
buffer
read request
completion data
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
CN201610066151.6A
Other languages
English (en)
Other versions
CN105721338A (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.)
Inspur Beijing Electronic Information Industry Co Ltd
Original Assignee
Inspur Beijing Electronic Information Industry 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 Inspur Beijing Electronic Information Industry Co Ltd filed Critical Inspur Beijing Electronic Information Industry Co Ltd
Priority to CN201610066151.6A priority Critical patent/CN105721338B/zh
Publication of CN105721338A publication Critical patent/CN105721338A/zh
Application granted granted Critical
Publication of CN105721338B publication Critical patent/CN105721338B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9047Buffering arrangements including multiple buffers, e.g. buffer pools
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9005Buffering arrangements using dynamic buffer space allocation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)

Abstract

本发明公开了一种接收数据的处理方法及装置,其中,该方法包括:获取响应读请求得到的完成数据包;选取一空闲的缓冲段作为目的缓冲段,其中,缓冲段为对对应缓冲器进行分割得到的,缓冲段与读请求一一对应;将完成数据包依次缓存至目的缓冲段的缓冲片内,以供读取;其中,缓冲片为对对应缓冲段进行分割得到的,缓冲片与完成数据包一一对应。通过本申请公开的上述技术特征,在得到完成数据包之后,将读请求对应的完成数据包缓存至目标数据段中,并且,完成数据包在数据段中缓存至与其一一对应的缓冲片中,由此,有效避免了现有技术中可能出现的完成数据包乱序到达请求者的情况。

Description

一种接收数据的处理方法及装置
技术领域
本发明涉及数据通信技术领域,更具体地说,涉及一种接收数据的处理方法及装置。
背景技术
PCI Express(快速外围组件互联,简称PCI-E)是第三代计算机及通信的外设IO总线标准,采用串行点对点方式进行互联。PCI-E协议分为三层:传输层、数据链路层及物理层;其中,传输层使用传输层包(Transaction Layer Packet,TLP)进行数据传输,并且,每个TLP都有一个唯一的包ID,用于区分不同的包。
请求者发送请求给完成者,如果完成者需要返回响应数据,则通过完成数据包将响应数据返回给请求者。其中,当请求为读请求时,完成者对读请求的响应通过分割传输(Split Transaction)进行,即针对于一个读请求的响应数据,将其分割成多个完成数据包进行传输。但是,由于PCI-E协议允许请求者能够并发的发送多个读请求,因此,在请求者接收完成数据包时,可能出现多个读请求对应的完成数据包乱序达到的情况,另外,由于一个读请求可能对应多个完成数据包,且PCI-E协议为了提高数据传输性能,允许读请求和完成数据包在传输过程中被阻塞,因此请求者接收完成数据包时,还可能出现一个读请求对应的多个完成数据包乱序达到的情况,进而导致请求者无法获取正确的响应数据。而现有技术中并不存在一种能够有效解决上述完成数据包乱序达到的问题的技术方案。
综上所述,如何提供一种能够有效避免完成数据包乱序到达请求者的情况的技术方案,是目前本领域技术人员亟待解决的问题。
发明内容
本发明的目的是提供一种接收数据的处理方法及装置,以有效避免现有技术中可能出现的完成数据包乱序到达请求者的情况。
为了实现上述目的,本发明提供如下技术方案:
一种接收数据的处理方法,包括:
获取响应读请求得到的完成数据包;
选取一空闲的缓冲段作为目的缓冲段,其中,所述缓冲段为对对应缓冲器进行分割得到的,所述缓冲段与所述读请求一一对应;
将所述完成数据包依次缓存至所述目的缓冲段的缓冲片内,以供读取;其中,所述缓冲片为对对应缓冲段进行分割得到的,所述缓冲片与所述完成数据包一一对应。
优选的,所述选取一空闲的缓冲段作为目的缓冲段,包括:
获取每个缓冲器被占用的缓冲段的数量;
由其被占用的缓冲段的数量不大于其他缓冲器被占用的缓冲段的数量的缓冲器中选取一个缓冲器作为目的缓冲器;
由所述目的缓冲器中选取一空闲的缓冲段作为目的缓冲段。
优选的,将所述完成数据包依次缓存至所述目的缓冲段的缓冲片内,包括:
将所述目的缓冲段对应的目的计数器的值设置为所述完成数据包的数量;每缓存一个所述完成数据包,则将所述目的计数器的值减1,并判断所述目的计数器的值是否为0,如果是,则确定缓存完成,如果否,则继续缓存下一个所述完成数据包。
优选的,还包括:
如果在响应所述读请求之后的预设时间段内并未获取到所述完成数据包,则输出获取失败的提示信息。
优选的,还包括:
接收到所述读请求后,将所述读请求的请求信息存储至对应的读请求状态表中,以供查询。
优选的,还包括:
将所述缓冲段的段分配信息按照其基址由小到大的顺序存储至对应的段分配表中,以供查询。
一种接收数据的处理装置,包括:
获取模块,用于获取响应读请求得到的完成数据包;
选取模块,用于选取一空闲的缓冲段作为目的缓冲段,其中,所述缓冲段为对对应缓冲器进行分割得到的,所述缓冲段与所述读请求一一对应;
缓存模块,用于将所述完成数据包依次缓存至所述目的缓冲段的缓冲片内,以供读取;其中,所述缓冲片为对对应缓冲段进行分割得到的,所述缓冲片与所述完成数据包一一对应。
优选的,选取模块包括:
选取单元,用于:获取每个缓冲器被占用的缓冲段的数量;由其被占用的缓冲段的数量不大于其他缓冲器被占用的缓冲段的数量的缓冲器中选取一个缓冲器作为目的缓冲器;由所述目的缓冲器中选取一空闲的缓冲段作为目的缓冲段。
优选的,缓存模块包括:
缓存单元,用于将所述目的缓冲段对应的目的计数器的值设置为所述完成数据包的数量;每缓存一个所述完成数据包,则将所述目的计数器的值减1,并判断所述目的计数器的值是否为0,如果是,则确定缓存完成,如果否,则继续缓存下一个所述完成数据包。
优选的,还包括:
提示模块,用于如果在响应所述读请求之后的预设时间段内并未获取到所述完成数据包,则输出获取失败的提示信息。
本发明提供的一种接收数据的处理方法及装置,其中,该方法包括:获取响应读请求得到的完成数据包;选取一空闲的缓冲段作为目的缓冲段,其中,所述缓冲段为对对应缓冲器进行分割得到的,所述缓冲段与所述读请求一一对应;将所述完成数据包依次缓存至所述目的缓冲段的缓冲片内,以供读取;其中,所述缓冲片为对对应缓冲段进行分割得到的,所述缓冲片与所述完成数据包一一对应。通过本申请公开的上述技术特征,在得到完成数据包之后,将读请求对应的完成数据包缓存至目标数据段中,并且,完成数据包在数据段中缓存至与其一一对应的缓冲片中,由此,在需要读取完成数据包时,可直接读取对应目的缓冲段中的完成数据包,以避免不同的读请求对应的完成数据包之间的乱序,且由于完成数据包与数据片一一对应,因此,可通过对数据片的依次读取得到对应的完成数据包,避免出现读请求对应的不同完成数据包之间的乱序,即,本申请公开的上述技术特征,有效避免了现有技术中可能出现的完成数据包乱序到达请求者的情况。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种接收数据的处理方法的流程图;
图2为本发明实施例提供的一种接收数据的处理方法中缓冲器的结构示意图;
图3为本发明实施例提供的一种接收数据的处理方法中读请求状态表的示意图;
图4为本发明实施例提供的一种接收数据的处理方法中段分配表的示意图;
图5为本发明实施例提供的一种接收数据的处理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,其示出了本发明实施例提供的一种接收数据的处理方法的流程图,可以包括以下步骤:
S11:获取响应读请求得到的完成数据包。
请求者发送读请求之后,如背景技术部分描述,可以将响应读请求得到的响应数据进行分割传输,即将响应数据分割成多个完成数据包,当然,如果响应数据较小,也可以不将其进行分割,而是形成一个单独的完成数据包,均在本发明的保护范围之内。
S12:选取一空闲的缓冲段作为目的缓冲段,其中,缓冲段为对对应缓冲器进行分割得到的,缓冲段与读请求一一对应。
其中,缓冲段与读请求一一对应,即一个缓冲段在同一时刻只能够存储一个读请求对应的响应数据。由此,当请求者发送多个读请求时,可以将读请求按照其时间的先后顺序分配对应的顺序的缓冲段,由此,可以依据读请求的先后顺序直接由顺序的缓冲段中读取到正确顺序的完成数据包,保证了读出的响应数据与读请求在先后次序上的一致性。
需要说明的是,缓冲器的数量可以为1个,也可以为多个,均在本发明的保护范围之内。将缓冲器进行分割得到缓冲段,缓冲段的数量可以根据实际需要进行确定,如当使用的缓冲器的大小均相同时,可以将全部缓冲器能够同时处理的读请求的数量与缓冲器的个数的比值作为缓冲器内缓冲段的数量,也可以使用不同大小的缓冲器,进而依据响应数据的类型对缓冲器进行分割得到缓冲段等,均在本发明的保护范围之内。
另外,通常情况下,可以将缓冲器分割成大小均相同的缓冲段,此时,每个缓冲段的大小为一个读请求对应的响应数据的最大值,以保证一个读请求的响应数据对应的完成数据包能够存储在一个缓冲段中;当然,也可以根据实际需要将缓冲器分割成不同大小的缓冲段,均在本发明的保护范围之内。
S13:将完成数据包依次缓存至目的缓冲段的缓冲片内,以供读取后供上层应用使用;其中,缓冲片为对对应缓冲段进行分割得到的,缓冲片与完成数据包一一对应。
其中,缓冲片与完成数据包一一对应,即一个缓冲片在同一时刻只能存储一个完成数据包。另外,完成数据包与缓冲片一一对应可以是依据完成数据包携带的序号实现的,将完成数据包按照其序号的顺序依次缓存至对应的缓冲片中,由此,可以直接由顺序的缓冲片中读取到正确顺序的完成数据包。
需要说明的是,可以将缓冲段分割成大小均相同的缓冲片,每个缓冲片的大小为一个完成数据包大小的最大值,以保证一个完成数据包能够存储在一个缓冲片中;当然,也可以根据实际需要将缓冲段分割成不同大小的缓冲片,均在本发明的保护范围之内。另外,任一缓冲器的结构示意图可以如图2所示,其中,11为缓冲器,111为一个缓冲段,而1111为一个缓冲片。
通过本申请公开的上述技术特征,在得到完成数据包之后,将读请求对应的完成数据包缓存至目标数据段中,并且,完成数据包在数据段中缓存至与其一一对应的缓冲片中,由此,在需要读取完成数据包时,可直接读取对应目的缓冲段中的完成数据包,以避免不同的读请求对应的完成数据包之间的乱序,且由于完成数据包与数据片一一对应,因此,可通过对数据片的依次读取得到对应的完成数据包,避免出现读请求对应的不同完成数据包之间的乱序,即,本申请公开的上述技术特征,有效避免了现有技术中可能出现的完成数据包乱序到达请求者的情况。
本发明实施例提供的一种接收数据的处理方法中,选取一空闲的缓冲段作为目的缓冲段,可以包括:
获取每个缓冲器被占用的缓冲段的数量;
由其被占用的缓冲段的数量不大于其他缓冲器被占用的缓冲段的数量的缓冲器中选取一个缓冲器作为目的缓冲器;
由目的缓冲器中选取一空闲的缓冲段作为目的缓冲段。
其中,由其被占用的缓冲段的数量不大于其他缓冲器被占用的缓冲段的数量的缓冲器中选取一个缓冲器作为目的缓冲器可以是随机选取,也可以是按照实际需要设置一定的规则进行选取,同理,由目的缓冲器中选取一空闲的缓冲段作为目的缓冲段可以是随机选取,也可以是按照实际需要设置一定的规则进行选取,均在本发明的保护范围之内。
由此,能够由缓冲器中选取中负载最轻的缓存器,进而由该缓存器否则缓存完成数据包,从而有效提高了缓冲资源的利用效率。
本发明实施例提供的一种接收数据的处理方法中,将完成数据包依次缓存至目的缓冲段的缓冲片内,包括:
将目的缓冲段对应的目的计数器的值设置为完成数据包的数量;每缓存一个完成数据包,则将目的计数器的值减1,并判断目的计数器的值是否为0,如果是,则确定缓存完成,如果否,则继续缓存下一个完成数据包。
通过目的计数器的值的变化,能够有效获知一个读请求对应的完成数据包是否缓存完毕,以保证一个读请求对应的完成数据包的完整性,提高了响应数据的读取效率及准确率。
本发明实施例提供的一种接收数据的处理方法中,还可以包括:
如果在响应读请求之后的预设时间段内并未获取到完成数据包,则输出获取失败的提示信息。
如果在响应读请求之后的预设时间段内并未获取到对应的完成数据包,则说明在得到完成数据包的过程中存在错误,此时,需要输出获取失败的提示信息,以提示工作人员尽快检测及修正,进一步保证了对于响应数据的顺利读取。
本发明实施例提供的一种接收数据的处理方法中,还可以包括:
接收到读请求后,将读请求的请求信息存储至对应的读请求状态表中,以供查询。
且,将缓冲段的段分配信息按照其基址由小到大的顺序存储至对应的段分配表中,以供查询。
具体来说,可以预先建立一个读请求状态表以记录请求信息,及预先建立一个段分配表以记录段分配信息。
其中,读请求状态表可以使用一个环形缓冲区记录,如图2所示,也可以使用其他的数据结构,例如链表等记录,均在本发明的保护范围之内。当读请求状态表如图3所示时,从读请求状态表的表头开始,表中的每一项依次对应于请求者发出的读请求,即请求者发出的读请求的先后顺序,与读请求在请求状态表中对应项的顺序一致。当请求者生成一个新的读请求并发出时,在读请求状态表中生成一个新的表项,插入到表的末尾。
其中,读请求状态表的表项中各字段含义如下:
Tag ID:该表项所记录的读请求的标签ID;
Buf_Base:该表项所记录的读请求的完成数据包所存储的缓冲器基址;
Seg_Base:该表项所记录的读请求的完成数据包所在缓冲器中的缓冲段基址;
Req_Len:该表项所记录的读请求的完成数据包的长度;
Req_State:该表项所记录的读请求的状态,可能包括:待接收(该读请求尚未收到任何完成者返回的完成数据包)、接收中(该读请求已经接收到一部分完成者返回的完成数据包,但尚未收到全部完成数据包)、接收完成(该读请求已经接收到所有完成者应当返回的完成数据包)、已读取(该读请求所接收到的完成数据包已经被上层驱动读取完毕);
Time_Out:该表项所记录的读请求的超时计数器。
而段分配表具体可以如图4所示,当然也可以使用其他的数据结构,例如链表等,均在本发明的保护范围之内。段分配表用于记录缓冲器的使用情况,具体来说,缓冲器中的各个缓冲段,依照其基址由小到大依次对应于段分配表中的各个表项。
其中,段分配表的表项中的各字段含义如下:
Seg_Base:该表项所记录的缓冲段基址;
Tag_ID:该表项所记录的缓冲段存储的完成数据包对应的读请求的标签ID,当该表项的Is_Free字段为“1”时,该字段无效;
Spc_Count:该表项所记录的缓冲段接收到的完成数据包计数,即对应计数器,初始值为该缓冲段所对应的读请求的完成数据包的数量;当该表项的Is_Free字段为“1”时,该字段无效;
Spc_Len[]:该表项所记录的缓冲段的各个缓冲片存储的完成数据包的长度,当该表项的Is_Free字段为“1”时,该字段无效;
Is_Free:当该字段的值为“1”时,表示该表项所记录的缓冲段是空闲的,当该字段的值为“0”时,表示该表项所记录的缓冲段存储了完成数据包。
需要说明的是,基于读请求状态表及段分配表实现本发明实施例提供的一种接收数据的处理方法时,具体可以为:
请求者生成并发送读请求后,在读请求状态表中增加一条表项用于记录该读请求,并且该读请求对应的请求状态为“待接收”;
接收完成数据包,并在接收到一个完成数据包后,对其进行判断,若接收到的完成数据包不是读请求对应的完成数据包,则进行其他逻辑处理并继续接收数据;若接收到的完成数据包是读请求对应的完成数据包,则根据完成数据包中的Tag ID在读请求状态表中进行查找;如果查找到的读请求的请求状态为“待接收”,则根据各个缓冲器中已被占用缓冲段的数量,选择一个缓冲段已被占用的缓冲段的数量较少的缓冲器,在其中分配一个空闲的缓冲段(缓冲段的Is_Free字段值为“1”),用于存储该读请求对应的完成数据包,同时,该读请求状态表中该读请求对应的请求状态更改为“接收中”;如果查找到的读请求的请求状态为“接收中”,则根据读请求状态表中记录的缓冲段基址查找对应的缓冲段,并将接收到的读请求完成数据包根据其序号,填入到缓冲段中对应的缓冲片内。同时,更新缓冲段中的计数器,将其值减1,代表该读请求待接收的完成数据包数量减少1。然后对读请求对应计数器的值进行判断,如果其值不为“0”则继续接收下一个完成数据包;如果其值为“0”,则表明已经接收到了该读请求的所有完成数据包,更新读请求状态表,将已经接收到所有完成数据包的读请求对应的表项中的请求状态更改为“接收完成”。
待上层驱动程序根据读请求状态表和段分配表,依照读请求状态表中读请求的次序,读取读请求的完成数据包,更新读请求状态表中已经读取的读请求的状态为“已读取”。同时,更新该读请求在段分配表中对应表项的Is_Free字段的值为“1”,表明该表项可以继续用于下一个读请求的记录。
与上述方法实施例相对应,本发明实施例还提供了一种接收数据的处理装置,如图5所示,可以包括:
获取模块11,用于获取响应读请求得到的完成数据包;
选取模块12,用于选取一空闲的缓冲段作为目的缓冲段,其中,缓冲段为对对应缓冲器进行分割得到的,缓冲段与读请求一一对应;
缓存模块13,用于将完成数据包依次缓存至目的缓冲段的缓冲片内,以供读取;其中,缓冲片为对对应缓冲段进行分割得到的,缓冲片与完成数据包一一对应。
通过本申请公开的上述技术特征,在得到完成数据包之后,将读请求对应的完成数据包缓存至目标数据段中,并且,完成数据包在数据段中缓存至与其一一对应的缓冲片中,由此,在需要读取完成数据包时,可直接读取对应目的缓冲段中的完成数据包,以避免不同的读请求对应的完成数据包之间的乱序,且由于完成数据包与数据片一一对应,因此,可通过对数据片的依次读取得到对应的完成数据包,避免出现读请求对应的不同完成数据包之间的乱序,即,本申请公开的上述技术特征,有效避免了现有技术中可能出现的完成数据包乱序到达请求者的情况。
本发明实施例提供的一种接收数据的处理装置中,选取模块可以包括:
选取单元,用于:获取每个缓冲器被占用的缓冲段的数量;由其被占用的缓冲段的数量不大于其他缓冲器被占用的缓冲段的数量的缓冲器中选取一个缓冲器作为目的缓冲器;由目的缓冲器中选取一空闲的缓冲段作为目的缓冲段。
本发明实施例提供的一种接收数据的处理装置中,缓存模块可以包括:
缓存单元,用于将目的缓冲段对应的目的计数器的值设置为完成数据包的数量;每缓存一个完成数据包,则将目的计数器的值减1,并判断目的计数器的值是否为0,如果是,则确定缓存完成,如果否,则继续缓存下一个完成数据包。
本发明实施例提供的一种接收数据的处理装置中,还可以包括:
提示模块,用于如果在响应读请求之后的预设时间段内并未获取到完成数据包,则输出获取失败的提示信息。
第一存储模块,用于接收到读请求后,将读请求的请求信息存储至对应的读请求状态表中,以供查询。
第二存储模块,用于将缓冲段的段分配信息按照其基址由小到大的顺序存储至对应的段分配表中,以供查询。
本发明实施例提供的一种接收数据的处理装置中相关部分的说明请参见本发明实施例提供的一种接收数据的处理方法中对应部分的详细说明,在此不再赘述。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (7)

1.一种接收数据的处理方法,其特征在于,包括:
获取响应读请求得到的完成数据包;
选取一空闲的缓冲段作为目的缓冲段,其中,所述缓冲段为对对应缓冲器进行分割得到的,所述缓冲段与所述读请求一一对应;
将所述完成数据包按照其携带的序号的顺序依次缓存至所述目的缓冲段的对应缓冲片内,以供读取;其中,所述缓冲片为对对应缓冲段进行分割得到的,所述缓冲片与所述完成数据包一一对应;
所述选取一空闲的缓冲段作为目的缓冲段,包括:
获取每个缓冲器被占用的缓冲段的数量;
由其被占用的缓冲段的数量不大于其他缓冲器被占用的缓冲段的数量的缓冲器中选取一个缓冲器作为目的缓冲器;
由所述目的缓冲器中选取一空闲的缓冲段作为目的缓冲段;
所述方法还包括:
将所述缓冲段的段分配信息按照其基址由小到大的顺序存储至对应的段分配表中,以供查询。
2.根据权利要求1所述的方法,其特征在于,将所述完成数据包依次缓存至所述目的缓冲段的缓冲片内,包括:
将所述目的缓冲段对应的目的计数器的值设置为所述完成数据包的数量;每缓存一个所述完成数据包,则将所述目的计数器的值减1,并判断所述目的计数器的值是否为0,如果是,则确定缓存完成,如果否,则继续缓存下一个所述完成数据包。
3.根据权利要求1所述的方法,其特征在于,还包括:
如果在响应所述读请求之后的预设时间段内并未获取到所述完成数据包,则输出获取失败的提示信息。
4.根据权利要求1所述的方法,其特征在于,还包括:
接收到所述读请求后,将所述读请求的请求信息存储至对应的读请求状态表中,以供查询。
5.一种接收数据的处理装置,其特征在于,包括:
获取模块,用于获取响应读请求得到的完成数据包;
选取模块,用于选取一空闲的缓冲段作为目的缓冲段,其中,所述缓冲段为对对应缓冲器进行分割得到的,所述缓冲段与所述读请求一一对应;
缓存模块,用于将所述完成数据包按照其携带的序号的顺序依次缓存至所述目的缓冲段的对应缓冲片内,以供读取;其中,所述缓冲片为对对应缓冲段进行分割得到的,所述缓冲片与所述完成数据包一一对应;
选取模块包括:
选取单元,用于:获取每个缓冲器被占用的缓冲段的数量;由其被占用的缓冲段的数量不大于其他缓冲器被占用的缓冲段的数量的缓冲器中选取一个缓冲器作为目的缓冲器;由所述目的缓冲器中选取一空闲的缓冲段作为目的缓冲段;
所述装置还包括:
第二存储模块,用于:将所述缓冲段的段分配信息按照其基址由小到大的顺序存储至对应的段分配表中,以供查询。
6.根据权利要求5所述的装置,其特征在于,缓存模块包括:
缓存单元,用于将所述目的缓冲段对应的目的计数器的值设置为所述完成数据包的数量;每缓存一个所述完成数据包,则将所述目的计数器的值减1,并判断所述目的计数器的值是否为0,如果是,则确定缓存完成,如果否,则继续缓存下一个所述完成数据包。
7.根据权利要求5所述的装置,其特征在于,还包括:
提示模块,用于如果在响应所述读请求之后的预设时间段内并未获取到所述完成数据包,则输出获取失败的提示信息。
CN201610066151.6A 2016-01-29 2016-01-29 一种接收数据的处理方法及装置 Active CN105721338B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610066151.6A CN105721338B (zh) 2016-01-29 2016-01-29 一种接收数据的处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610066151.6A CN105721338B (zh) 2016-01-29 2016-01-29 一种接收数据的处理方法及装置

Publications (2)

Publication Number Publication Date
CN105721338A CN105721338A (zh) 2016-06-29
CN105721338B true CN105721338B (zh) 2019-08-02

Family

ID=56155293

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610066151.6A Active CN105721338B (zh) 2016-01-29 2016-01-29 一种接收数据的处理方法及装置

Country Status (1)

Country Link
CN (1) CN105721338B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108733598B (zh) * 2018-05-07 2021-05-18 浪潮集团有限公司 一种数据传输方法和数据传输装置
CN111045817B (zh) * 2019-11-08 2023-09-26 瑞芯微电子股份有限公司 一种PCIe传输管理方法、系统和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1953461A (zh) * 2005-10-19 2007-04-25 辉达公司 编码数据包头以启用PCIe链路高带宽效率的系统和方法
US7228362B2 (en) * 2004-03-31 2007-06-05 Intel Corporation Out-of-order servicing of read requests with minimal additional storage
CN101882126A (zh) * 2010-07-13 2010-11-10 中国科学院计算技术研究所 多个HT总线到单个PCIe总线的桥接装置及其方法
CN103049240A (zh) * 2011-10-13 2013-04-17 北京同步科技有限公司 Pci-e设备及其接收数据重排序方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7228362B2 (en) * 2004-03-31 2007-06-05 Intel Corporation Out-of-order servicing of read requests with minimal additional storage
CN1953461A (zh) * 2005-10-19 2007-04-25 辉达公司 编码数据包头以启用PCIe链路高带宽效率的系统和方法
CN101882126A (zh) * 2010-07-13 2010-11-10 中国科学院计算技术研究所 多个HT总线到单个PCIe总线的桥接装置及其方法
CN103049240A (zh) * 2011-10-13 2013-04-17 北京同步科技有限公司 Pci-e设备及其接收数据重排序方法

Also Published As

Publication number Publication date
CN105721338A (zh) 2016-06-29

Similar Documents

Publication Publication Date Title
US6920534B2 (en) Virtual-port memory and virtual-porting
US9128925B2 (en) System and method for direct memory access buffer utilization by setting DMA controller with plurality of arbitration weights associated with different DMA engines
CN110365768A (zh) 分布式系统的数据同步方法、装置、介质、电子设备
CN105224255B (zh) 一种存储文件管理方法及装置
CN107835989A (zh) 共享存储控制器及使用共享存储控制器的方法
CN106503020B (zh) 日志数据处理方法及装置
JPH0682347B2 (ja) 分散処理システム及び分散処理連携方法
CN102148871B (zh) 存储资源调度方法和装置
CN103620570A (zh) 存储器控制器和这种存储器控制器的操作方法
CN101650698A (zh) 直接存储器访问的实现方法
CN102129412A (zh) 存取调度器
US20160062930A1 (en) Bus master, bus system, and bus control method
CN104346458B (zh) 数据存储方法和存储设备
CN101258476B (zh) 延迟的存储器访问请求仲裁
US9213545B2 (en) Storing data in any of a plurality of buffers in a memory controller
CN105721338B (zh) 一种接收数据的处理方法及装置
CN106293953B9 (zh) 一种访问共享显示数据的方法及系统
CN102567278A (zh) 一种片上多核数据传输方法和装置
CN112181887B (zh) 数据传输方法及装置
US9761296B2 (en) Smart in-module refresh for DRAM
TWI280506B (en) Multiple-input queuing system, buffer system and method of buffering data-items from a plurality of input-streams
CN104503924B (zh) 一种分层存储系统中的区域分配方法及装置
CN109656730A (zh) 一种访问缓存的方法和装置
CN108153494B (zh) 一种io请求处理方法及装置
CN108881493A (zh) 一种任务进度信息推送方法、装置及设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant