数据排序方法和装置的制作方法

文档序号:6604996阅读:108来源:国知局
专利名称:数据排序方法和装置的制作方法
技术领域
本发明涉及数据处理领域,特别涉及一种数据排序方法和装置。
背景技术
在进行数据处理时,数据按输入顺序进入处理模块,处理模块对各个输入的数据 处理时间不同,有些处理的快,有些处理的慢,只要处理完就立即返回查找结果,即数据处 理结果的返回顺序和输入的顺序不是一一对应的,因此对需要顺序返回的应用场景,需要 对返回结果进行排序,以使返回结果和查找请求的顺序一一对应。现有技术中的数据排序方法如下以报文处理为例,首先为报文添加序列号,然后对输入报文进行报文处理,报文处 理模块确保序列号和对应的报文处理结果一起返回。以序列号作为地址,把返回的处理结 果和1比特的有效标记一起写入排序RAM (Random AccessMemory,随机存取存储器)中。读 取处理后的结果,并把对应的有效标记清除,然后读地址指向排序RAM的下一个地址。在对现有技术进行分析后,发明人发现现有技术至少具有如下缺点为了保证读取的数据为当前处理所得到的处理结果,上述排序机制针对每个查找 结果需要对排序RAM进行2次写操作,一次写入处理后的结果和有效标记,一次输出返回结 果后还需要清除有效标记,不仅占用排序RAM的写带宽大,而且芯片的功耗大,实现起来较 复杂。

发明内容
本发明实施例提供了一种数据排序方法和装置。所述技术方案如下一种数据排序方法,所述方法包括根据多个待处理数据的到达顺序,为所述多个待处理数据添加序列号,其中,所述 序列号数量与所述待处理数据的处理结果在存储器中的存储地址相对应;根据所述序列号,为所述多个待处理的数据添加有效标记,并且在所述序列号达 到最大值溢出后,更换所述有效标记;处理所述多个待处理数据,得到多个处理结果;根据所述序列号,并将所述处理结果及其对应的有效标记写入所述存储器中;根据所述有效标记,读取所述存储器中的处理结果。一种数据排序装置,所述装置包括序列号添加模块,用于根据多个待处理数据的到达顺序,为所述多个待处理数据 添加序列号,其中,所述序列号数量与所述待处理数据的处理结果在存储器中的存储地址 相对应;有效标记添加模块,用于根据所述序列号,为所述多个待处理的数据添加有效标 记,并且在所述序列号达到最大值溢出后,更换所述有效标记;处理模块,用于处理所述多个待处理数据,得到多个处理结果;
写入模块,用于根据所述序列号,并将所述处理结果及其对应的有效标记写入所 述存储器中;读取模块,用于根据所述有效标记,读取所述存储器中的处理结果。本发明实施例提供的技术方案的有益效果是 本发明通过用不同的有效标记对应不同序列的序列号(起码相邻序列的报文所 对应的有效标记不同),因此在读取报文处理结果之后,不需要通过删除有效标记的方式来 避免报文处理结果被错误的多次读出,节省了有效标记的清除这一步骤,降低了排序RAM 的读写次数,节省了芯片的功耗和资源。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可 以根据这些附图获得其他的附图。图1是本发明实施例1提供的一种数据排序方法的流程图;图2是本发明实施例2提供的一种数据排序方法的流程图;图3是本发明实施例3提供的一种数据排序装置的结构示意图;图4是本发明实施例3提供的又一种数据排序装置的结构示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方 式作进一步地详细描述。实施例1为了降低排序RAM的写带宽和芯片功耗,简化排序过程,本发明实施例提供了一 种数据排序方法,参见图1,该方法包括101 根据多个待处理数据的到达顺序,为该多个待处理数据添加序列号,其中,该 序列号数量与该待处理数据的处理结果在存储器中的存储地址相对应;102 根据该序列号,为该多个待处理的数据添加有效标记,并且在该序列号达到 最大值溢出后,更换该有效标记;103 处理该多个待处理数据,得到多个处理结果;104 根据该序列号,并将该处理结果及其对应的有效标记写入该存储器中;105 根据该有效标记,读取该存储器中的处理结果。需要说明的是,本发明实施例中所述的有效标记用于标识该地址中的数据是否经 过本次处理。在本发明实施例所提供的数据排序方法中,由于不同的有效标记对应于不同序列 的序列号(起码相邻序列的报文所对应的有效标记不同),因此在读取报文处理结果之后, 不需要通过删除有效标记的方式来避免报文处理结果被错误的多次读出,节省了有效标记 的清除这一步骤,降低了排序RAM的读写次数,节省了芯片的功耗和资源。实施例2
为了降低排序RAM的写带宽和芯片功耗,简化排序过程,本发明实施例提供了一 种数据排序方法,以报文处理为例,待处理数据为报文,且存储器为排序RAM进行说明,参 见图2,该方法包括201 按照报文的到达顺序,为报文添加序列号和有效标记;
具体地,序列号的递增可以由计数器实现,每到达一报文,其添加的序列号递增, 递增的幅度可以由系统设定,本发明实施例对此不做具体限定。例如参见表1,为第一个到达的报文A添加序列号00,第二个到达的报文B添加 序列号01,第三个到达的报文C添加序列号10,第四个到达的报文D添加序列号11,当为第 五个到达的报文E添加序列号时,由于该序列号到达最大值溢出,所以未第五个到达的报 文E添加溢出转圈后的序列号00,以此类推。需要说明的是,这里举例所用的序列号是2bit数据,序列号的大小与排序RAM的 大小相同,其中,该排序RAM的大小根据系统的运算和处理速度设置,由此,使得排序过程 中不会出现其他周期的处理结果存到当前排序RAM的情况。其中,有效标记添加的具体方法为根据该序列号,为多个待处理的数据添加有效 标记,并且在序列号达到最大值溢出后,更换有效标记;优选地,序列号达到最大值溢出后,将有效标记取反;例如,参见表1,可以为报文A、B、C、D都添加有效标记01,当序列号到达最大值溢 出,有效标记则取反,为报文E添加的有效标记即为10。表 1 其中,在本发明实施例中,有效标记(valid flag)在初始化时大小为2bit,记为 01 (初始化时,有效标记也可以为10),当序列号到最大值溢出时,有效标记取反,当初始值 为01时,取反后变成10,当初始值为10时,取反后变成01。设置该有效标记是为了在后续 的步骤中用来判断排序RAM中的数据是否有效。需要说明的是,该序列号和有效标记的添加位置可以有多种,可以添加在报文头 上,也可以添加在报文的其他位置,只要不影响到报文的数据即可。202 处理上述多个报文,并得到处理结果;其中,对报文进行的处理可以有多种,本发明实施例不做具体限定。在本发明实施例中,报文A、B、C、D经过处理后,返回处理结果分别为A’、B’、C’、 D,。203:根据每个处理结果对应的序列号,确定处理结果在排序随机存取存储器中对 应的地址,并将处理结果和其对应的有效标记写入该地址;
其中,排序RAM是先入先出的存储器,所以最先进入的数据的地址最低,例如,参 见表2,处理结果A’对应的序列号为00,则将A’和其有效标记01存入排序RAM的00位 置,处理结果B’对应的序列号为01,则将B’和其有效标记01存入排序RAM的01位置,以 此类推,不再赘述。表 2 其中,该排序RAM的宽度与处理结果和有效标记的宽度和相同,深度与序列号的 深度相同。例如处理结果的宽度为32bit,有效标记为2bit,序列号的深度为4bit,则该 排序 RAM 为 34*4bit。204 根据所述有效标记,判断排序RAM中与序列号对应的地址中的处理结果是否 有效,具体的,由于报文中写入的有效标记在报文所对应的序列号溢出时发生改变,因 此,可以根据有效标记来判断所述报文所属的序列号序列,进而判断所述报文的处理结果 是否有效。如果是,执行步骤205;如果否,执行步骤204;205 输出该处理结果,并把读地址指向下一个地址,执行步骤204 ;进一步的,在本发明实施例中,判断排序RAM中与序列号对应的地址中的处理结 果是否有效,包括查询本地保存的映射关系,判断该处理结果的有效标记和寄存器值所对 应的状态是否指示所述处理结果为经过本次处理的报文。需要说明的是,该本地保存的映射关系为寄存器与有效标记之间的映射关系,该 映射关系只需步骤204之前建立即可,其具体实现方式可以为建立映射表等,本发明实施 例对此不做具体限定。例如参见表3,设寄存器REG A的初始值为REG A = 0,有效标记valid flag的 初始值为 valid flag = 01,则当 REG A = O 时、valid flag = Ol 时,或 REG A = Uvalid flag = 10时,根据表内的映射关系,其对应的状态为有效,则表示排序RAM该地址中的数据 为经过本次处理的报文,当 REG A = O、valid flag = 10,或 REGA = 1,valid flag = Ol 时,根据表内的映射关系,其对应的状态为无效,则表示排序RAM该地址中的数据不是经过 本次处理的报文,为了方便起见,本发明实施例中,将经过本次处理的处理结果称为有效, 不是经过本次处理的处理结果称为无效。表 3
其中,该寄存器与排序随机存取存储器读地址关联。具体地,设置寄存器REG A,设 其为lbit,初始化时,设该寄存器REG A为0,当排序RAM的读地址转到最大值溢出后,将该 寄存器取反,如原来是1,取反后,就为0 ;原来是0,取反后,就为1。当然,可以理解的是,也 可以设定多个有效标记,分别对应更多的序列号序列,在序列号达到最大值溢出的时候,根 据情况选用各种有效标记,进一步的区分不同的报文的处理结果。需要说明的是,该寄存器REG A是根据排序RAM的读地址达到最大值溢出来进行 取反变化的,即当读取完排序MM中所有的值后,寄存器REG A取反,而有效标记都是根据 序列号到达最大值溢出来进行取反变化的,序列号到达最大值溢出后,开始新的序列号周 期,例如序列号在11时到达最大值溢出,下一个输入报文的序列号记为00,而此时,给输 入报文添加的有效标记取反,01变成10,对于序列号未到达最大值溢出前的处理结果,假 设序列号为01,其对应的有效标记应为01,而对于序列号到达最大值溢出后的处理结果, 假设序列号01,其对应的有效标记应为10。需要说明的是,有效标记在本发明实施例中取2b i t,而该有效标记还可以为 lbit,也可以为其他比特值,本发明实施例不做具体限定,当有效标记的大小为Ibit时,则 有初始化时1比特的有效标记为0(初始化时,有效标记也可以为0),当序列号到最大值而 溢出转圈后,有效标记取反,如1就变成0,0就变成1。而进行报文处理返回处理结果后,以 序列号作为地址,把处理结果和1比特的valid flag—起写入排序RAM中。对寄存器的设 置、原理和上述实施例中相同,不再赘述。另外,Validflag 标志可以扩展到 m 个 bits,REG A 为 η 个 bits。Valid flag 的 取值可以是al、a2、ax,当序列号到最大值而溢出转圈后,valid flag依次取下一个值,从 al开始取,转到ax后再从al开始取;REG A的取值可以是bl、b2、b3、bx,初始化为bl,排 序RAM的读地址转到最大值溢出后,依次取下一个值,转到bx后再从bl开始取。例如,参见表4,为第16个到达的数据添加的序列号为1111,其对应的有效标记为 al,对应的REG A为bl,则为第17个到达的数据添加序列号为溢出转圈后的0000,其对应 的有效标记为a2,对应的REG A为b2,则为第33个到达的数据添加序列号0000,此时有效 标记valid flag取a3,REG A为b3,以此类推,不再赘述。初始化时,排序RAM中的有效标记也可以写成一个非al的一个值,读地址指向排 序RAM的地址0000 (序列号的最小值),判断RAM的处理结果是否有效,无效则等待有效处 理结果返回,有效则读走处理结果,把读地址指向下一个地址单元。REG A = bl时,valid flag = al表示排序RAM内的处理结果有效,REGA = bx时,valid flag = ax表示RAM的 处理结果有效。表 4 在本发明实施例所提供的数据排序方法中,由于不同的有效标记对应于不同序列 的序列号(起码相邻序列的报文所对应的有效标记不同),因此在读取报文处理结果之后, 不需要通过删除有效标记的方式来避免报文处理结果被错误的多次读出,节省了有效标记 的清除这一步骤,降低了排序RAM的读写次数,节省了芯片的功耗和资源。实施例2为了降低排序RAM的写带宽和芯片功耗,简化排序过程,本发明实施例提供了一 种数据排序装置,参见图3,该装置包括序列号添加模块301,用于根据多个待处理数据的到达顺序,为该多个待处理数据 添加序列号,其中,该序列号数量与该待处理数据的处理结果在存储器中的存储地址相对 应;该序列号添加模块301具体用于根据待处理数据的到达顺序,每到达一个待处理 数据,该序列号递增,为该待处理数据添加该序列号。有效标记添加模块302,用于根据该序列号,为该多个待处理的数据添加有效标 记,并且在该序列号达到最大值溢出后,更换该有效标记;处理模块303,用于处理该多个待处理数据,得到多个处理结果;写入模块304,用于根据该序列号,并将该处理结果及其对应的有效标记写入该存 储器中;读取模块305,用于根据该有效标记,读取该存储器中的处理结果。参见图4,该有效标记添加模块302包括第一添加单元302a,用于当该序列号未达到最大值时,为该待处理数据添加初始 化时的有效标记;第二添加单元302b,用于当该序列号到达最大值溢出时,将该有效标记取反,为该 待处理数据添加取反后的有效标记。该装置还包括寄存器设置模块306,用于设置与该存储器读地址关联的寄存器,当该存储器的读 地址达到最大值溢出时,将该寄存器的值取反。该装置还包括映射关系建立模块307,用于建立该寄存器与该有效标记之间的映射关系。该读取模块305包括判断单元305a,用于根据该映射关系,判断该处理结果的有效标记和当前寄存器值所对应的状态是否指示该处理结果有效;如果是,则触发用于读取该处理结果的读取单元305b,并触发用于将读地址指向 下一个地址的地址转移单元305c ;如果否,触发该判断单元305a。 本实施例提供的装置,与方法实施例属于同一构思,其具体实现过程详见方法实 施例,这里不再赘述。在本发明实施例所提供的数据排序装置中,由于不同的有效标记对应于不同序列 的序列号(起码相邻序列的报文所对应的有效标记不同),因此在读取报文处理结果之后, 不需要通过删除有效标记的方式来避免报文处理结果被错误的多次读出,节省了有效标记 的清除这一步骤,降低了排序RAM的读写次数,节省了芯片的功耗和资源。本发明实施例可以利用软件实现,相应的软件程序可以存储在可读取的存储介质 中,例如,计算机的硬盘、缓存或光盘中。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和 原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
一种数据排序方法,其特征在于,所述方法包括根据多个待处理数据的到达顺序,为所述多个待处理数据添加序列号,其中,所述序列号数量与所述待处理数据的处理结果在存储器中的存储地址相对应;根据所述序列号,为所述多个待处理的数据添加有效标记,并且在所述序列号达到最大值溢出后,更换所述有效标记;处理所述多个待处理数据,得到多个处理结果;根据所述序列号,并将所述处理结果及其对应的有效标记写入所述存储器中;根据所述有效标记,读取所述存储器中的处理结果。
2.如权利要求1所述的方法,其特征在于,根据多个待处理数据的到达顺序,为所述多 个待处理数据添加序列号,具体包括根据待处理数据的到达顺序,每到达一个待处理数据,所述序列号递增,为所述待处理 数据添加所述序列号。
3.如权利要求1所述的方法,其特征在于,根据所述序列号,为所述多个待处理的数据 添加有效标记,并且在所述序列号达到最大值溢出后,更换所述有效标记具体包括当所述序列号未达到最大值时,为所述待处理数据添加初始化时的有效标记;当所述 序列号到达最大值溢出时,将所述有效标记取反,为所述待处理数据添加取反后的有效标 记。
4.如权利要求1所述的方法,其特征在于,所述方法还包括设置与所述存储器读地址关联的寄存器,当所述存储器的读地址达到最大值溢出时, 将所述寄存器的值取反。
5.如权利要求4所述的方法,其特征在于,根据所述有效标记,读取所述存储器中的处 理结果之前包括建立所述寄存器与所述有效标记之间的映射关系。
6.如权利要求4所述的方法,其特征在于,根据所述有效标记,读取所述存储器中的处 理结果具体包括根据所述映射关系,判断所述处理结果的有效标记和当前寄存器值所对应的状态是否 指示所述处理结果有效;如果是,则读取所述处理结果,并将读地址指向下一个地址; 如果否,重复上述判断的过程。
7.一种数据排序装置,其特征在于,所述装置包括序列号添加模块,用于根据多个待处理数据的到达顺序,为所述多个待处理数据添加 序列号,其中,所述序列号数量与所述待处理数据的处理结果在存储器中的存储地址相对 应;有效标记添加模块,用于根据所述序列号,为所述多个待处理的数据添加有效标记,并 且在所述序列号达到最大值溢出后,更换所述有效标记;处理模块,用于处理所述多个待处理数据,得到多个处理结果; 写入模块,用于根据所述序列号,并将所述处理结果及其对应的有效标记写入所述存 储器中;读取模块,用于根据所述有效标记,读取所述存储器中的处理结果。
8.如权利要求7所述的装置,其特征在于,所述序列号添加模块具体用于根据待处理 数据的到达顺序,每到达一个待处理数据,所述序列号递增,为所述待处理数据添加所述序 列号。
9.如权利要求7所述的装置,其特征在于,所述有效标记添加模块包括第一添加单元,用于当所述序列号未达到最大值时,为所述待处理数据添加初始化时 的有效标记;第二添加单元,用于当所述序列号到达最大值溢出时,将所述有效标记取反,为所述待 处理数据添加取反后的有效标记。
10.如权利要求7所述的装置,其特征在于,所述装置还包括寄存器设置模块,用于设置与所述存储器读地址关联的寄存器,当所述存储器的读地 址达到最大值溢出时,将所述寄存器的值取反。
11.如权利要求10所述的装置,其特征在于,所述装置还包括映射关系建立模块,用于建立所述寄存器与所述有效标记之间的映射关系。
12.如权利要求10所述的装置,其特征在于,所述读取模块包括判断单元,用于根据所述映射关系,判断所述处理结果的有效标记和当前寄存器值所 对应的状态是否指示所述处理结果有效;如果是,则触发用于读取所述处理结果的读取单元,并触发用于将读地址指向下一个 地址的地址转移单元;如果否,触发所述判断单元。
全文摘要
本发明公开了一种数据排序方法和装置,属于数据处理领域。该方法包括根据多个待处理数据的到达顺序,为该多个待处理数据添加序列号,根据该序列号,为该多个待处理的数据添加有效标记,并且在该序列号达到最大值溢出后,更换该有效标记;处理该多个待处理数据,得到多个处理结果;根据该序列号,并将该处理结果写入该存储器中;根据该有效标记,读取该存储器中的处理结果。还公开了一种数据排序装置。在读取报文处理结果之后,不需要通过删除有效标记的方式来避免报文处理结果被错误的多次读出,节省了有效标记的清除这一步骤,降低了排序RAM的读写次数,节省了芯片的功耗和资源。
文档编号G06F7/24GK101866277SQ201010213299
公开日2010年10月20日 申请日期2010年6月18日 优先权日2010年6月18日
发明者洪荣峰 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1