一种接收数据的处理方法及装置的制造方法

文档序号:9931222阅读:276来源:国知局
一种接收数据的处理方法及装置的制造方法
【技术领域】
[0001 ]本发明涉及数据通信技术领域,更具体地说,涉及一种接收数据的处理方法及装置。
【背景技术】
[0002]PCI Express(快速外围组件互联,简称PC1-E)是第三代计算机及通信的外设1总线标准,采用串行点对点方式进行互联。PC1-E协议分为三层:传输层、数据链路层及物理层;其中,传输层使用传输层包(Transact1n Layer Packet,TLP)进行数据传输,并且,每个TLP都有一个唯一的包ID,用于区分不同的包。
[0003]请求者发送请求给完成者,如果完成者需要返回响应数据,则通过完成数据包将响应数据返回给请求者。其中,当请求为读请求时,完成者对读请求的响应通过分割传输(Split Transact1n)进行,即针对于一个读请求的响应数据,将其分割成多个完成数据包进行传输。但是,由于PC1-E协议允许请求者能够并发的发送多个读请求,因此,在请求者接收完成数据包时,可能出现多个读请求对应的完成数据包乱序达到的情况,另外,由于一个读请求可能对应多个完成数据包,且PC1-E协议为了提高数据传输性能,允许读请求和完成数据包在传输过程中被阻塞,因此请求者接收完成数据包时,还可能出现一个读请求对应的多个完成数据包乱序达到的情况,进而导致请求者无法获取正确的响应数据。而现有技术中并不存在一种能够有效解决上述完成数据包乱序达到的问题的技术方案。
[0004]综上所述,如何提供一种能够有效避免完成数据包乱序到达请求者的情况的技术方案,是目前本领域技术人员亟待解决的问题。

【发明内容】

[0005]本发明的目的是提供一种接收数据的处理方法及装置,以有效避免现有技术中可能出现的完成数据包乱序到达请求者的情况。
[0006]为了实现上述目的,本发明提供如下技术方案:
[0007]—种接收数据的处理方法,包括:
[0008]获取响应读请求得到的完成数据包;
[0009]选取一空闲的缓冲段作为目的缓冲段,其中,所述缓冲段为对对应缓冲器进行分割得到的,所述缓冲段与所述读请求一一对应;
[0010]将所述完成数据包依次缓存至所述目的缓冲段的缓冲片内,以供读取;其中,所述缓冲片为对对应缓冲段进行分割得到的,所述缓冲片与所述完成数据包一一对应。
[0011 ]优选的,所述选取一空闲的缓冲段作为目的缓冲段,包括:
[0012]获取每个缓冲器被占用的缓冲段的数量;
[0013]由其被占用的缓冲段的数量不大于其他缓冲器被占用的缓冲段的数量的缓冲器中选取一个缓冲器作为目的缓冲器;
[0014]由所述目的缓冲器中选取一空闲的缓冲段作为目的缓冲段。
[0015]优选的,将所述完成数据包依次缓存至所述目的缓冲段的缓冲片内,包括:
[0016]将所述目的缓冲段对应的目的计数器的值设置为所述完成数据包的数量;每缓存一个所述完成数据包,则将所述目的计数器的值减I,并判断所述目的计数器的值是否为O,如果是,则确定缓存完成,如果否,则继续缓存下一个所述完成数据包。
[0017]优选的,还包括:
[0018]如果在响应所述读请求之后的预设时间段内并未获取到所述完成数据包,则输出获取失败的提不?目息。
[0019]优选的,还包括:
[0020]接收到所述读请求后,将所述读请求的请求信息存储至对应的读请求状态表中,以供查询。
[0021]优选的,还包括:
[0022]将所述缓冲段的段分配信息按照其基址由小到大的顺序存储至对应的段分配表中,以供查询。
[0023]一种接收数据的处理装置,包括:
[0024]获取模块,用于获取响应读请求得到的完成数据包;
[0025]选取模块,用于选取一空闲的缓冲段作为目的缓冲段,其中,所述缓冲段为对对应缓冲器进行分割得到的,所述缓冲段与所述读请求一一对应;
[0026]缓存模块,用于将所述完成数据包依次缓存至所述目的缓冲段的缓冲片内,以供读取;其中,所述缓冲片为对对应缓冲段进行分割得到的,所述缓冲片与所述完成数据包一一对应。
[0027]优选的,选取模块包括:
[0028]选取单元,用于:获取每个缓冲器被占用的缓冲段的数量;由其被占用的缓冲段的数量不大于其他缓冲器被占用的缓冲段的数量的缓冲器中选取一个缓冲器作为目的缓冲器;由所述目的缓冲器中选取一空闲的缓冲段作为目的缓冲段。
[0029]优选的,缓存模块包括:
[0030]缓存单元,用于将所述目的缓冲段对应的目的计数器的值设置为所述完成数据包的数量;每缓存一个所述完成数据包,则将所述目的计数器的值减I,并判断所述目的计数器的值是否为O,如果是,则确定缓存完成,如果否,则继续缓存下一个所述完成数据包。
[0031]优选的,还包括:
[0032]提示模块,用于如果在响应所述读请求之后的预设时间段内并未获取到所述完成数据包,则输出获取失败的提示信息。
[0033]本发明提供的一种接收数据的处理方法及装置,其中,该方法包括:获取响应读请求得到的完成数据包;选取一空闲的缓冲段作为目的缓冲段,其中,所述缓冲段为对对应缓冲器进行分割得到的,所述缓冲段与所述读请求一一对应;将所述完成数据包依次缓存至所述目的缓冲段的缓冲片内,以供读取;其中,所述缓冲片为对对应缓冲段进行分割得到的,所述缓冲片与所述完成数据包一一对应。通过本申请公开的上述技术特征,在得到完成数据包之后,将读请求对应的完成数据包缓存至目标数据段中,并且,完成数据包在数据段中缓存至与其一一对应的缓冲片中,由此,在需要读取完成数据包时,可直接读取对应目的缓冲段中的完成数据包,以避免不同的读请求对应的完成数据包之间的乱序,且由于完成数据包与数据片一一对应,因此,可通过对数据片的依次读取得到对应的完成数据包,避免出现读请求对应的不同完成数据包之间的乱序,即,本申请公开的上述技术特征,有效避免了现有技术中可能出现的完成数据包乱序到达请求者的情况。
【附图说明】
[0034]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0035]图1为本发明实施例提供的一种接收数据的处理方法的流程图;
[0036]图2为本发明实施例提供的一种接收数据的处理方法中缓冲器的结构示意图;
[0037]图3为本发明实施例提供的一种接收数据的处理方法中读请求状态表的示意图;
[0038]图4为本发明实施例提供的一种接收数据的处理方法中段分配表的示意图;
[0039]图5为本发明实施例提供的一种接收数据的处理装置的结构示意图。
【具体实施方式】
[0040]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0041]请参阅图1,其示出了本发明实施例提供的一种接收数据的处理方法的流程图,可以包括以下步骤:
[0042]Sll:获取响应读请求得到的完成数据包。
[0043]请求者发送读请求之后,如【背景技术】部分描述,可以将响应读请求得到的响应数据进行分割传输,即将响应数据分割成多个完成数据包,当然,如果响应数据较小,也可以不将其进行分割,而是形成一个单独的完成数据包,均在本发明的保护范围之内。
[0044]S12:选取一空闲的缓冲段作为目的缓冲段,其中,缓冲段为对对应缓冲器进行分割得到的,缓冲段与读请求一一对应。
[0045]其中,缓冲段与读请求一一对应,即一个缓冲段在同一时刻只能够存储一个读请求对应的响应数据。由此,当请求者发送多个读请求时,可以将读请求按照其时间的先后顺序分配对应的顺序的缓冲段,由此,可以依
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1