一种数据处理方法、装置和计算机可读介质与流程

文档序号:24550853发布日期:2021-04-06 12:03阅读:75来源:国知局
一种数据处理方法、装置和计算机可读介质与流程

本发明主要涉及信息技术领域,尤其涉及一种数据处理方法、装置和计算机可读介质。



背景技术:

在各种soc(systemonchip)系统的开发中,系统的调试是极为关键的步骤。coresight是arm公司提出的,用于对复杂的soc实现调试(debug)和数据trace(追踪)的架构。该架构包含了多个coresight组件。众多的coresight组件,构成了一个coresight系统。

在片上系统(soc系统)开发过程中,需要实现多核追踪,因此其数据量及其庞大,对需要追踪的数据进行一定的压缩能有效降低传输带宽,将压缩后的数据按照stp(systemtraceprotocol;系统追踪协议)v2版本协议进行组包,组包数据经atb总线协议口传送到coresight系统。通过coresight组件进行传输,最终通过tpiu(traceportinterfaceunit,追踪端口接口单元)接口传到片外分析仪,进行分析和后续的调试。

在追踪(trace)数据的压缩中,根据stp(版本例如为v2系列)只能选择固定的数据位宽。根据stp协议v2版本系列的规定,数据包可选范围为:d4(m)、d8(m)、d16(m)、d32(m)、d64(m)。d4(m)、d8(m)、d16(m)、d32(m)、d64(m)分别表示包括4个比特位、8个比特位、16个比特、32个比特位和64个比特位的数据和作为标志的操作码的数据包,例如:当传输32比特数据为0x001fffff,去掉高位0后实际需要传输21比特,但由于stp协议v2系列版本协议的局限性,此次传输依然需要使用d32数据包,由此浪费了11比特,没有达到最大压缩力度。



技术实现要素:

本发明要解决的技术问题是提供一种数据处理方法,实现数据处理效率的提高。

为解决上述技术问题,本发明提供了一种数据处理方法,包括以下步骤:

将待传输数据划分成n个小节并配置每个小节的半字节数,n为正整数;将所述n个小节分别按照x种段式进行组合,每种段式中包括一个或多个分段,其中x为正整数;基于每种所述段式,按照设定的规则生成与所述待传输数据对应的多个不同的数据包,并计算每个所述数据包的总半字节数;选择具有最小总半字节数的数据包进行传输。

在本发明的一实施例中,所述待传输数据基于组合数据得到,所述组合数据由根据特定的拼接方式将多种数据拼接形成。

在本发明的一实施例中,所述组合数据具有高位端和低位端,所述特定的拼接方式包括,将变化频次最低的数据放在所述组合数据的高位端。

在本发明的一实施例中,基于所述组合数据得到待传输数据的步骤包括:将当前的组合数据与前一次的组合数据进行逻辑运算,得到所述待传输数据

在本发明的一实施例中,将所述待传输数据划分成n个小节并配置每个小节的半字节数的步骤包括:将连续变化的比特位配置在同一小节内,连续没变化的比特位放在同一小节内。

在本发明的一实施例中,所述基于分成的所述分段和节,按照设定的规则生成与所述待传输数据对应的不同的数据包,并计算每个所述数据包的总半字节数的步骤包括:当划分形成的段式中包括多个分段时,在每个段式之间插入空数据包,每个空数据包的半字节数为1,每个空数据包内的各比特位的数据为零;将每个分段的数据转换成数据包中的子数据包,所述子数据包包括包头和包体,所述包体中包括转换后的数据,所述包头包括操作码,所述操作码与所述转换后的数据对应;基于所述子数据包形成所述数据包,并计算所述数据包的总半字节数。

在本发明的一实施例中,所述特定的拼接方式还包括,将变化频次最高的数据放在所述组合数据的低位端。

在本发明的一实施例中,数据的变化频次越低,在所述组合数据中的排位次序越高。

在本发明的一实施例中,将每个分段的数据转换成数据包中的子数据包的步骤包括:当非最高位对应的分段中各比特位的数据全为零时,则该分段不形成数据包;当最高位对应的段式中各比特位的数据全为零时,用d(4)m的方式形成对应的子数据包;当最高位对应的分段中各比特位的数据不全为零且所述最高位对应的分段中包括t个比特位时,用d(t)m的方式形成对应的子数据包;d(4)m和d(t)m表示包体用4个、t个比特位表征转换后的数据且包头包括标志数据已转换结束的操作码,t为正整数;将除最高位对应的分段以外的每个分段中比该分段中的最高的非零数据位更高的数据位中的零数据去除,形成待转换数据;基于所述待转换数据包含的数据位,确定用d4、d8、d16、d32、d64的方式形成对应的子数据包;其中,d4、d8、d16、d32、d64分别表示包体用4、8、16、32、64个比特位表征转换后的数据的子数据包,所述d4、d8、d16、d32、d64的方式形成对应的子数据包的包头中包括与其包体中的数据对应的操作码,所述操作码的半字节数为1。

在本发明的一实施例中,数据处理方法还包括接收到所述传输的具有最小总半字节数的数据包后,对所述最小总半字节数的数据包进行解析;所述解析的步骤包括:根据划分形成所述分段的划分设置和所述小节的划分设置,对数据包进行解析。

在本发明的一实施例中,数据处理方法还包括接收到所述传输的具有最小总半字节数的数据包后,对所述最小总半字节数的数据包进行解析;所述解析的步骤包括:根据所述数据包中的空数据包个数,还原出所述数据的分段数;根据所述分段的划分设置、所述小节的划分设置、每个分段的子数据包中的包头中的操作码和包体中包括的所述转换后的数据还原出子数据包;基于所述还原出的子数据包还原出数据包;其中,当在所述接收到的所述具有最小总半字节数的数据包中出现两个连续的空数据包时,则根据所述分段的划分设置和所述小节的划分设置还原出包括零数据的子数据包。

本发明还提供一种数据处理装置,包括:存储器,用于存储可由处理器执行的指令;以及处理器,用于执行所述指令以实现前述任一项所述的方法。

本发明还提供一种存储有计算机程序代码的计算机可读介质,所述计算机程序代码在由处理器执行时实现前述任一项所述的方法。

与现有技术相比,本发明具有以下优点:通过将多种数据进行拼接,再将拼接后的划分成小节和段式,得到具有最小总半字节数的数据包,将其进行传输,从而实现以尽可能少的比特位资源实现数据的传输和处理。

附图说明

附图是为提供对本申请进一步的理解,它们被收录并构成本申请的一部分,附图示出了本申请的实施例,并与本说明书一起起到解释本发明原理的作用。附图中:

图1是本申请一实施例的数据处理方法的流程图。

图2是本申请一实施例的数据处理方法中按照设定的规则生成与所述待传输数据对应的不同的数据包,并计算每个所述数据包的总半字节数的步骤的流程图。

图3是本申请一实施例的将每个分段的数据转换成数据包中的子数据包的步骤流程图。

图4是本申请一实施例的数据处理的过程示意图。

图5是本申请一实施例的数据处理的解析过程的流程图。

图6是本申请一实施例的数据处理方法中对数据进行解析的过程示意图。

具体实施方式

为让本发明的上述目的、特征和优点能更明显易懂,以下结合附图对本发明的具体实施方式作详细说明。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其它不同于在此描述的其它方式来实施,因此本发明不受下面公开的具体实施例的限制。

如本申请所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其他的步骤或元素。

除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本申请的范围。同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

本申请中使用了流程图用来说明根据本申请的实施例的系统所执行的操作。应当理解的是,前面或下面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各种步骤。同时,或将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。

本申请的实施例描述一种数据处理方法、装置和计算机可读介质。

图1是本申请一实施例的数据处理方法的流程图。如图1所述,数据处理方法包括,步骤101,将所述待传输数据划分成n个小节并配置每个小节的半字节数。步骤102,将所述n个小节分别按照x种段式进行组合,每种段式包括一个或多个分段。步骤103,基于每种所述段式,按照设定的规则生成与所述待传输数据对应的多个不同的数据包,并计算每个所述数据包的总半字节数。步骤104,选择具有最小总半字节数的数据包进行传输。

在步骤101,将待传输数据划分成n个小节(seg)并配置每个小节的半字节数(nibble数),n为正整数。在一实施例中,将所述待传输数据划分成n个小节并配置每个小节的半字节数的步骤例如包括:将连续变化的比特位配置在同一小节内,连续没变化的比特位放在同一小节内。

在一些实施例中,待传输数据可基于组合数据得到。待传输数据也可为不同字段本身单独构成的数据。在组合数据的情形中,可根据特定的拼接方式将多种数据拼接形成组合数据。多种数据例如为soc系统运行时需要追踪的不同字段的数据,例如id号、存储地址、数据长度、触发信号、控制信号等类型的不同字段的数据。对这些数据进行追踪(trace)以便后续对系统的运行情况进行监测和功能调试。在一实施例中,例如对axi总线协议数据中不同的类型的命令数据进行追踪。具体的,需要追踪的命令有awlens,awsize,awaddr,awburst,awid等。如前述,如果直接采用stp协议对数据进行追踪传输,则只能选择固定的数据位宽。例如如果awaddr的数据为40个比特位,如果直接采用stp协议,则需要采用d64(m)格式的数据包进行传输。此时则浪费了较多的传输资源。

根据特定的拼接方式将多种数据拼接形成组合数据之后,基于所组合数据得到待传输数据。在一实施例中,基于所述组合数据得到待传输数据的步骤例如包括,将当前的组合数据(即拼接后形成的组合数据)与前一次传输的组合数据进行逻辑运算,得到所述待传输数据。该逻辑运算例如为异或运算。

可与逻辑运算相关的是,在拼接形成组合数据时,也可按照特定的拼接规则对数据进行拼接。例如,设组合数据具有高位端和低位端,所述特定的拼接方式可包括,将变化频次最低的数据放在所述组合数据的高位端。在另一些实施例中,拼接形成组合数据的方式例如还包括,将变化频次最高的数据放在所述组合数据的低位端。进一步地,可将拼接规则设定为数据的变化频次越低,在所述组合数据中的排位次序越高。例如,逻辑运算的类型为异或,则在拼接数据时,将变化频次最低的数据放在所述组合数据的高位端,则在异或后,基于与前次传输的数据相比未变化的数据位,将得到一些零比特位的待传输数据。

在步骤102,将所述n个小节分别按照x种段式进行组合,每种段式中包括一个或多个分段,其中x为正整数。x的数值可根据实际需求进行设定。

在步骤103,基于划分形成的每种段式,按照设定的规则生成与所述待传输数据对应的多个不同的数据包,并计算每个所述数据包的总半字节数。

在一些实施例中,基于分成的所述分段和节,按照设定的规则生成与所述待传输数据对应的不同的数据包,并计算每个所述数据包的总半字节数的步骤包括,步骤201,当划分形成的段式中包括多个分段时,在每个段式之间插入空数据包(null包),每个空数据包的半字节数为1,每个空数据包内的各比特位的数据为零。步骤202,将每个分段的数据转换成数据包中的子数据包,所述子数据包包括包头和包体,所述包体中包括转换后的数据,所述包头包括操作码,所述操作码与所述转换后的数据对应。步骤203,基于所述子数据包形成所述数据包。

在步骤202,将每个分段的数据转换成数据包中的子数据包的步骤包括,步骤301,当非最高位对应的分段中各比特位的数据全为零时,则该分段不形成数据包;当最高位对应的段式中各比特位的数据全为零时,用d(4)m的方式形成对应的子数据包;当最高位对应的分段中各比特位的数据不全为零且所述最高位对应的分段中包括t个比特位时,用d(t)m的方式形成对应的子数据包。d(4)m和d(t)m表示包体用4个、t个比特位表征转换后的数据且包头包括标志数据已转换结束的操作码,t为正整数。包头包括标志数据已转换结束的操作码因转换至最高位对应的分段。

步骤302,将除最高位对应的分段以外的每个分段中比该分段中的最高的非零数据位更高的数据位中的零数据去除,形成待转换数据。

步骤303,基于所述待转换数据包含的数据位,确定用d4、d8、d16、d32、d64的方式形成对应的子数据包。其中,d4、d8、d16、d32、d64分别表示包体用4、8、16、32、64个比特位表征转换后的数据的子数据包,所述d4、d8、d16、d32、d64的方式形成对应的子数据包的包头中包括与其包体中的数据对应的操作码。

为更具体的展示本申请的数据处理方法,例如在步骤101,根据特定的拼接方式拼接形成的当前的组合数据(curr_data)为:

curr_data=0x12345677_12345678_12345677_12345678

设前一次的组合数据(last_data)为:

last_data=0x12345678_12345678_12345678_12345678

将当前的组合数据和前一次的组合数据进行异或,得到的结果m为:

m=curr_data⊕last_data=0x000000f_00000000_0000000f_00000000

m即为得到的待传输数据。

接下来,在步骤101,将所述待传输数据划分成n个小节并配置每个小节的半字节数。在步骤102,将所述n个小节分别按照x种段式进行组合,每种段式中包括一个或多个分段。

在该示例中,在步骤101,假设将需要压缩的数据m配置为8小节(seg)。为简化起见,设定每个小节均为4个半字节(nibble)。

而后,在步骤102,将所述n个小节分别按照x种段式进行组合,每种段式中包括一个或多个分段。例如,在本示例中,设按照8种段式进行组合。

图4是本申请一实施例的数据处理的过程示意图。对于前述的按照8种段式进行组合的方式,例如图4中的区域401所框示的自由组合方式。图4的401区域分别展示8种段式对应的组合方式。在实际划分时,可根据需要确定划分形成的段式数量。例如,也可为6段式、10段式、12段式等。在确定划分形成的段式后,对一些使用较为频繁的划分方式,也可将其总结为划分的程式。例如图4中的8段式,可总结为:

①1段式的分段(part1)由所有小节(seg)组成;

②2段式中的第一个分段(part1)由前一半的小节(seg)组成,第二个分段(part2)由后一半的小节(seg)组成;

③3~8段式组合方式如下:

如果需要组合成x段式(3≤x≤8),当x为奇数时,y=x,当x为偶数时,y=x-1,z=(8/y)向下取整;

part1=seg1+…+segz

part2=seg(z+1)+…+seg[2z]

……

part(x-1)=seg[(x-2)z+1]+…+seg[(x-1)z]

partx=seg[(x-1)z+1]+…+segn

接下来,在步骤103,基于每种所述段式,按照设定的规则生成与所述待传输数据对应的多个不同的数据包,并计算每个所述数据包的总半字节数。具体的,根据前述的步骤201至步骤203,得到多个不同的数据包,如图4中的区域402所框示。而后计算得到不同的数据包的总半字节数(即总nibble数),本实施例的各种段式对应的数据包的总半字节数(总nibble数)如图4中的区域403所框示。

而后,在步骤104,选择具有最小总半字节数的数据包进行传输。在图4中,例如经过一比较器404后,得出最小的总半字节数(总nibble数),并确定最小的总半字节数对应的数据包,在图4中,例如为405所框示的4段式的划分方式形成的数据包,此即为处理后的数据,对该处理后的数据可进行传输。因为此时的数据具有最小的总半字节数(总nibble数),因而可以用最少的比特位资源,实现数据的传输。

在本申请的一实施例中,,还包括接收到所述传输的具有最小总半字节数的数据包后,对所述最小总半字节数的数据包进行解析。具体的,根据划分形成所述分段的划分设置和所述小节的划分设置,对数据包进行解析。图5是本申请一实施例的数据处理的解析过程的流程图。

更具体的,对于经过步骤101至步骤104,以及其中细节的处理步骤201至步骤203和步骤301至步骤303之后的具有最小总半字节数的数据包,在接收到所述传输的具有最小总半字节数的数据包后,对所述最小总半字节数的数据包进行解析以获取处理前的数据的步骤,包括,步骤501,根据所述数据包中的空数据包个数,还原出所述数据的分段数。步骤502,根据所述分段的划分设置、所述小节的划分设置、每个分段的子数据包中的包头中的操作码和包体中包括的所述转换后的数据还原出子数据包。其中,当在所述接收到的所述具有最小总半字节数的数据包中出现两个连续的空数据包时,则根据所述分段的划分设置和所述小节的划分设置还原出包括零数据的子数据包。步骤503,基于还原出的子数据包还原出数据包。

对于图4所述的具体的示例得到的,四段式的数据包对应的处理后的待传输数据“fd00fc0”,其解析和还原的过程例如图6所示。图6是本申请一实施例的数据处理方法中对数据进行解析的过程示意图。

具体地,对于接收到的最小总半字节数的数据包数据“fd00fc0”,在步骤501,获取其中的空数据包(null包)个数,还原出数据的分段数。在“fd00fc0”中,包括3个空数据包,每个空数据包占1个nibble(半字节)。因为在之前的数据处理过程中,在两个分段之间插入空数据包。故基于3个空数据包可还原出数据包“fd00fc0”包括4个分段。在图6中,例如601区域至602区域所框示。区域602中的‘part1_enc’指之前经过编码(encode)的第一个分段。‘part2_enc’、‘part3_enc’、‘part4_enc’分别指经过编码(encode)的第二个、第三个和第四个分段。

在步骤502,基于所述分段的划分设置、所述小节的划分设置、每个分段的子数据包中的包头中的操作码和包体中包括的所述转换后的数据还原出每个分段(part)的子数据包。操作码是根据传输协议,例如stp协议确定。在图6中,例如602区域至603区域所框示,或是601区域、602区域至603区域所框示。此处的解析的过程为前后关联的过程。区域603框示的已解码后的各个分段。

而后在步骤503,基于所述还原出的子数据包还原出数据包。图6中,例如拼接得到原来的数据m,例如图6中的604所框示。在一实施例中,该还原的过程例如还包括,将拼接得到的数据包的数据与前一次传输的数据包的原始数据进行逻辑运算,例如异或运算,得到本次接收到的数据包的数据对应的原始数据,即在最初拼接步骤中形成的数据。

本申请的技术方案,通过将多种数据进行拼接,再将拼接后的划分成小节和段式,并计算不同的划分方式对应的总半字节数,得到具有最小总半字节数的数据包,将其进行传输,从而实现以尽可能少的比特位资源实现数据的传输和处理。

本发明还提供一种数据处理装置,包括:存储器,用于存储可由处理器执行的指令;以及处理器,用于执行该指令以实现前述任一项的方法,来实现数据处理功能。

本发明还提供一种存储有计算机程序代码的计算机可读介质,该计算机程序代码在由处理器执行时实现如前述任一项的方法,来实现数据处理功能。

上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述发明披露仅仅作为示例,而并不构成对本申请的限定。虽然此处并没有明确说明,本领域技术人员可能会对本申请进行各种修改、改进和修正。该类修改、改进和修正在本申请中被建议,所以该类修改、改进、修正仍属于本申请示范实施例的精神和范围。

同时,本申请使用了特定词语来描述本申请的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本申请至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一替代性实施例”并不一定是指同一实施例。此外,本申请的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。

本申请的一些方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“系统”。处理器可以是一个或多个专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理器件(dapd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、处理器、控制器、微控制器、微处理器或者其组合。此外,本申请的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。例如,计算机可读介质可包括,但不限于,磁性存储设备(例如,硬盘、软盘、磁带……)、光盘(例如,压缩盘cd、数字多功能盘dvd……)、智能卡以及闪存设备(例如,卡、棒、键驱动器……)。

计算机可读介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等等、或合适的组合形式。计算机可读介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行系统、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机可读介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、射频信号、或类似介质、或任何上述介质的组合。

同理,应当注意的是,为了简化本申请披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本申请实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本申请对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。

虽然本申请已参照当前的具体实施例来描述,但是本技术领域中的普通技术人员应当认识到,以上的实施例仅是用来说明本申请,在没有脱离本申请精神的情况下还可作出各种等效的变化或替换,因此,只要在本申请的实质精神范围内对上述实施例的变化、变型都将落在本申请的权利要求书的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1