CN116860428A - 一种数据处理方法、编解码加速器和相关设备 - Google Patents
一种数据处理方法、编解码加速器和相关设备 Download PDFInfo
- Publication number
- CN116860428A CN116860428A CN202210312378.XA CN202210312378A CN116860428A CN 116860428 A CN116860428 A CN 116860428A CN 202210312378 A CN202210312378 A CN 202210312378A CN 116860428 A CN116860428 A CN 116860428A
- Authority
- CN
- China
- Prior art keywords
- data
- target
- processed
- data distribution
- information
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title abstract description 22
- 238000012545 processing Methods 0.000 claims abstract description 207
- 238000000034 method Methods 0.000 claims abstract description 66
- 238000013507 mapping Methods 0.000 claims description 61
- 238000004590 computer program Methods 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 abstract description 13
- 230000008569 process Effects 0.000 description 34
- 238000010586 diagram Methods 0.000 description 13
- 125000002842 L-seryl group Chemical group O=C([*])[C@](N([H])[H])([H])C([H])([H])O[H] 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 7
- 230000003993 interaction Effects 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请实施例公开了一种数据处理方法、编解码加速器和相关设备,用于降低运算负担,节约算力资源。本申请实施例方法包括:解析待处理数据,得到待处理数据对应的目标模板序号和目标数据分布序号。根据目标模板序号,确定待处理数据对应的目标处理模板;根据目标数据分布序号,确定待处理数据对应的目标数据分布信息。根据目标数据分布信息,确定待处理数据中定长字段对应的第一内存开销;根据目标数据分布信息、目标处理模板和待处理数据,计算待处理数据中变长字段对应的第二内存开销。根据第一内存开销和第二内存开销,申请用于存储编解码待处理数据的输出数据的目标内存空间。
Description
技术领域
本申请实施例涉及计算机领域,尤其涉及一种数据处理方法、编解码加速器和相关设备。
背景技术
在计算机科学中,编码和解码发挥着重要作用,在计算机通信、存储等场景中,序列化和反序列化作为编解码的一种具体实现,得到了广泛的应用。其中,序列化是指当数据需要传输或者存储时,将内存中分散的数据结构转换为按照特定方式排布的、连续的字节流的过程,而反序列化的功能则与之相反。
在一种数据处理方法中,采用多次分配扩容的内存分配方式,进行序列化或者反序列化。具体来说,预先分配一块内存缓冲区用于进行序列化或者反序列化,在执行过程中,如果出现内存不足的情况,会重新申请更大的内存缓冲区,并将原内存缓冲区中的数据集中拷贝到该更大的内存缓冲区中,再释放原内存缓冲区。
在这种方法中,可能会出现多次申请内存并再次调用编解码加速器进行序列化或者反序列化,增加了运算负担,浪费了算力资源。
发明内容
本申请实施例提供了一种数据处理方法、编解码加速器和相关设备。在这种数据处理方法中,对待处理数据进行解析,得到目标模板序号和目标数据分布序号,根据目标数据分布序号对应的目标数据分布信息,确定待处理数据中定长字段对应的第一内存开销;根据目标模板序号对应的目标处理模板和目标数据分布信息,确定待处理数据中变长字段对应的第二内存开销。最后根据第一内存开销和第二内存开销,确定输出数据的目标内存空间。这样能够精确计算出输出数据所需要的内存空间,进行一次内存申请即可,降低了运算负担,节约了算力资源。
本申请实施例第一方面提供了一种数据处理方法,包括:
编解码加速器获取到待处理数据之后,会对待处理数据进行解析,得到待处理数据所对应的目标模板序号和目标数据分布序号。根据目标模板序号,能够获取到待处理数据对应的目标处理模板,该目标处理模板指示了待处理数据的属性信息,包括待处理数据的类型、定义等信息。根据目标数据分布信息,能够获取待处理数据对应的目标数据分布信息,该目标数据分布信息指示的是待处理数据的数据分布情况,也即待处理数据的结构体,简单来说,即为待处理数据中各部分数据的排布情况。目标数据分布信息还可以绑定该信息所对应的定长字段的内存开销,因此根据目标数据分布信息,能够确定待处理数据中定长字段对应的第一内存开销。在得到第一内存开销和第二内存开销之后,编解码加速器根据这两个内存开销能够计算出用于存储编解码待处理数据之后得到的输出数据的目标内存空间的大小,并申请目标内存空间。
从以上技术方案可以看出,本申请实施例具有以下优点:
根据目标数据分布序号对应的目标数据分布信息,确定待处理数据中定长字段对应的第一内存开销;根据目标模板序号对应的目标处理模板和目标数据分布信息,确定待处理数据中变长字段对应的第二内存开销。最后根据第一内存开销和第二内存开销,确定输出数据的目标内存空间。这样能够精确计算出输出数据所需要的内存空间,进行一次内存申请即可,降低了运算负担,节约了算力资源。
在第一方面一些可选的实施例中,在解析待处理数据之前,编解码加速器能够获取到指示注册信息的存储位置的第一地址信息,并根据第一地址信息获取到初始注册信息。注册信息包括M个处理模板和N个数据分布信息,M和N均为正整数。编解码加速器会建立这M个处理模板与N个数据分布信息之间的对应关系,使得一个处理模板对应至少一个数据分布信息。编解码加速器还可以基于多种方式,确定每个处理模板中每个定长字段的内存开销。具体来说,在实际应用中,编解码加速器可以对处理模板中的成员进行分析,并计算各个模板中每个定长字段的内存开销,由此确定每个处理模板中每个定长字段的内存开销。也可以由处理器或者终端设备在注册处理模板时,直接注明每个定长字段的内存开销,使得编解码加速器可以直接获取处理模板中每个定长字段的内存开销。除此之外,还可以通过其他的方式确定每个处理模板中各个定长字段的内存开销,具体此处不做限定。例如,在配置过程中,注明成员数量少的处理模板中每个定长字段的内存开销,其他未注明内存开销的定长字段由编解码加速器在获取到处理模板之后进行计算,由此获取到每个处理模板中每个定长字段的内存开销。编解码加速器根据每个定长字段的内存开销和M个处理模板与N个数据分布信息之间的对应关系,能够确定出这N个数据分布信息中每个数据分布信息所对应的定长字段的内存开销。
本申请实施例中,建立注册信息所包括的M个处理模板和N个数据分布信息之间的对应关系,由于一个处理模板中可以包括多种类型的成员,因此一个处理模板可以对应多个数据分布信息,这为本申请实施例实现以非侵入式的方式进行序列化和/或反序列化提供了技术支持,也即提升了技术方案的可实现性。其中,非侵入式是指不需要使用指定的输入数据结构,便可以实现序列化和/或反序列化功能。这是因为,注册信息中的处理模板囊括了多种情况,编解码加速器根据待处理数据的数据分布信息,便能确定与之对应的处理模板,也就确定了待处理数据的处理方式。同时,如果一个处理模板可以对应多个数据分布信息,也可以减少注册的处理模板的数量,从而降低了内存消耗。另外,根据数据分布信息与处理模板之间的对应关系,和每个处理模板中每个定长字段的内存开销,能够确定的每个数据分布信息所对应的定长内存开销,也即将数据分布信息与定长内存开销进行绑定,使得编解码加速器在后续的处理过程中,能够根据待处理数据的目标数据分布信息快速确定出待处理数据对应的定长内存开销,提升了处理效率。
在第一方面一些可选的实施例中,待处理数据对应的目标数据分布信息包含于N个数据分布信息中。在数据分布信息与定长内存开销绑定的情况下,编解码加速器可以直接将目标数据分布信息对应的定长内存开销,确定为待处理数据中定长字段对应的第一内存开销。
本申请实施例中,将数据分布信息与定长内存开销进行绑定,使得编解码加速器在数据处理过程中,不需要再进行计算,节约了运算资源。同时,够根据目标数据分布信息直接快速确定出待处理数据对应的定长内存开销,也提升了处理效率。
在第一方面一些可选的实施例中,在解析待处理数据之前,编解码加速器能够获取指示注册信息的存储位置的第一地址信息,并根据第一地址信息获取注册信息。该注册信息包括M个处理模板,M为正整数。然后确定这M个处理模板中每个处理模板所包括的每个定长字段的内存开销。编解码加速器确定每个定长字段的内存开销的方式,在上文已经介绍过,此处不再赘述。
在第一方面一些可选的实施例中,如果编解码加速器在解析待处理数据之前,仅仅确定了每个处理模板中每个定长字段的内存开销,那么在确定待处理数据中定长字段对应的第一内存开销时,编解码加速器需要根据目标数据分布信息和目标处理模板,确定待处理数据中包括的至少一个定长字段,然后根据至少一个定长字段中每个定长字段的内存开销,确定第一内存开销。
本申请实施例中,确定第一内存开销的方式有多种,可以根据实际应用的需要选择,提升了本申请技术方案的灵活性。
在第一方面一些可选的实施例中,目标数据分布信息指示待处理数据的成员分布情况,目标处理模板指示待处理数据的属性信息。其中,待处理数据的属性信息包括待处理数据中各个数据成员的类型、处理方式等信息。编解码加速器根据待处理数据的分布情况、待处理数据的属性信息和待处理数据,能够确定待处理数据包括的变长字段,从而计算出变长字段对应的第二内存开销。
本申请实施例中,在处理过程中,编解码加速器会结合待处理数据自身的信息精确计算变长字段对应的第二内存开销,使得计算结果准确,提升了本申请技术方案的准确度。
在第一方面一些可选的实施例中,在解析待处理数据之前,编解码加速器会获取M个处理模板对应的M个地址信息和M个模板序号,并建立这M个地址信息和M个模板序号之间的映射关系,得到第一映射表。编解码加速器在解析待处理数据得到目标模板序号之后,就可以根据目标模板序号查询第一映射表,得到目标处理模板对应的第二地址信息。然后根据第二地址信息,从内存中获取目标处理模板。
本申请实施例中,在编解码加速器中存储指示地址信息和模板序号之间映射关系的第一映射表,通过查询第一映射表的方式,从内存中获取目标处理模板,并不在编解码加速器本地存储各个处理模板,减少了本地资源的占用。
在第一方面一些可选的实施例中,在解析待处理数据之前,编解码加速器还会获取N个数据分布信息对应的N个地址信息和N个数据分布序号,并建立这N个地址信息与N个数据分布序号之间的映射关系,得到第二映射表。编解码加速器在解析待处理数据得到目标数据分布序号之后,就可以根据目标数据分布序号查询第二映射表,确定目标数据分布序号对应的第三地址信息。然后根据第三地址信息,从内存中获取目标数据分布信息。
本申请实施例中,在编解码加速器中存储指示地址信息和数据分布序号之间映射关系的第二映射表,通过查询第二映射表的方式,从内存中获取目标数据分布信息,并不在编解码加速器本地存储各个数据分布信息,减少了本地资源的占用。
在第一方面一些可选的实施例中,编解码加速器可以通过多种方式申请目标内存空间,可以通过编解码加速器外部的内存管理加速器,申请目标内存空间。除此之外,还可以通过其他的方式申请目标内存空间,例如,通过编解码加速器内部的内存管理模块,申请目标内存空间,具体此处不做限定。
本申请实施例中,编解码加速器申请目标内存空间的方式有多种,可以适应不同的情况,提升了本申请技术方案的灵活性。
本申请实施例第二方面提供了一种编解码加速器,包括:
处理单元,用于解析待处理数据,得到待处理数据对应的目标模板序号和目标数据分布序号。
获取单元,用于根据目标模板序号,获取待处理数据对应的目标处理模板。
获取单元,还用于根据目标数据分布序号,获取待处理数据对应的目标数据分布信息。
处理单元,还用于:
根据目标数据分布信息,确定待处理数据中定长字段对应的第一内存开销。
根据目标数据分布信息、目标处理模板和待处理数据,计算待处理数据中变长字段对应的第二内存开销。
根据第一内存开销和第二内存开销,申请目标内存空间,目标内存空间用于存储编解码待处理数据得到的输出数据。
编解码加速器用于执行第一方面所述的方法,其有益效果如第一方面所示,此处不再赘述。
本申请实施例第三方面提供了一种数据处理系统,该处理系统包括编解码加速器,该编解码加速器用于执行第一方面所述的方法,其有益效果如第一方面所示,此处不再赘述。
本申请实施例第四方面提供了一种计算机可读存储介质,计算机可读存储介质中保存有程序,当计算机执行该程序时,执行第一方面的方法。
本申请实施例第五方面提供了一种计算机程序产品,其特征在于,当计算机程序产品在计算机上执行时,该计算机执行第一方面的方法。
附图说明
图1a为应用本申请实施例提供的数据处理方法的一个系统架构示意图;
图1b为应用本申请实施例提供的数据处理方法的另一个系统架构示意图;
图2为本申请实施例提供的数据处理方法的一个流程示意图;
图3为本申请实施例提供的处理模板和数据分布信息的一个对应关系示意图;
图4为本申请实施例提供的数据处理系统的一个结构示意图;
图5为本申请实施例提供的数据处理方法的一个示意图;
图6为本申请实施例提供的编解码加速器的一个结构示意图;
图7为本申请实施例提供的编解码加速器的另一个结构示意图。
具体实施方式
本申请实施例提供了一种数据处理方法、编解码加速器和相关设备。在这种数据处理方法中,对待处理数据进行解析,得到目标模板序号和目标数据分布序号,根据目标数据分布序号对应的目标数据分布信息,确定待处理数据中定长字段对应的第一内存开销;根据目标模板序号对应的目标处理模板和目标数据分布信息,确定待处理数据中变长字段对应的第二内存开销。最后根据第一内存开销和第二内存开销,确定输出数据的目标内存空间。这样能够精确计算出输出数据所需要的内存空间,进行一次内存申请即可,降低了运算负担,节约了算力资源。
下面结合附图,对本申请的实施例进行描述。本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,其目的在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。另外,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
首先,对本申请实施例可能涉及的专有名词和相关概念进行说明。
1.元数据(metadata)。
元数据,又可以被称为中介数据、中继数据等,是用来描述数据的数据,主要是用于描述数据的属性信息,以支持包括指示存储位置、历史数据、资源查找和文件记录等功能。在数据结构的相关应用中,元数据可以描述数据的名称、关系等。
2.侵入式和非侵入式的序列化/反序列化。
传统的序列化/反序列化采用的是侵入式的方式,即需要使用指定的输入数据结构,将原始数据进行移动、拷贝,才能实现序列化/反序列功能,限定性较强。非侵入式的方式与之相反。本申请实施例提供的数据处理方法,在配置时就注册了多种处理模板和数据分布类型,能够灵活适应不同的情况,支持非侵入式的方式进行序列化和反序列处理。
接下来,请参阅图1a和图1b,图1a和图1b为本申请实施例提供的数据处理方法应用的系统架构示意图。
以处理器进行注册信息的配置为例进行说明,如图1a所示,处理器102进行注册信息的配置,将注册信息存储至内存103中,并将注册信息的地址信息发送编解码加速器101,使得编解码加速器101根据地址信息从内存103中获取注册信息,为动态编解码提供了基础。编解码加速器101获取待处理数据之后,根据待处理数据的描述信息,访问内存103,获取待处理数据所对应的注册信息,基于该注册信息对待处理数据进行处理,得到输出数据。在处理过程中,编解码加速器101根据待处理数据对应的注册信息和待处理数据自身,能够确定待处理数据中定长字段和变长字段的内存开销,从而得到输出数据所需要的目标内存空间,以向内存103申请该目标内存空间。
可选的,可以如图1a所示,由编解码加速器101直接向内存103申请目标内存空间,具体来说,可以是由编解码加速器101中的内存管理模块,向内存103申请目标内存空间。在实际应用中,编解码加速器101还可以通过其他方式申请目标内存空间,例如,如图1b所示,编解码加速器101向内存管理加速器104申请目标内存空间,再有内存管理加速器104向内存103进行申请。
接下来,请参阅图2,图2为本申请实施例提供的数据处理方法的一个流程示意图,包括以下步骤:
201.解析待处理数据,得到待处理数据对应的目标模板序号和目标数据分布序号。
处理器通过多种方式触发编解码加速器进行数据处理,具体来说,处理器可以按照约定好的协议,向编解码加速器发送数据包。编解码加速器解析数据包,获取待处理数据,触发对待处理数据的处理过程。除此之外,处理器还可以基于其他的方式触发编解码加速器,具体此处不做限定。例如,处理器调用编解码加速器的接口,基于约定好的协议,将待处理任务描述信息的地址信息(包括首地址和长度)写入编解码加速器对应的寄存器中,实现触发编解码加速器处理任务。其中,待处理任务描述信息用于描述待处理数据。编解码加速器对待处理任务描述信息进行解析,以获取待处理数据。
获取到待处理数据之后,编解码加速器会对待处理数据进行解析,得到待处理数据对应的目标模板序号和目标数据分布序号。目标模板序号用于指示待处理数据对应的目标处理模板,目标数据分布序号则用于指示待处理数据对应的目标数据分布信息。
202.根据目标模板序号,获取待处理数据对应的目标处理模板。
在解析待处理数据,得到目标模板序号之前,编解码加速器会获取注册信息,该注册信息包括M个处理模板,M为正整数。具体来说,处理器或者终端设备配置初始注册信息之后,会将初始注册信息的地址信息存储至编解码加速器的寄存器中,初始注册信息是编码文件。编解码加速器会对初始注册信息进行预处理,并计算解码后的注册信息所需要的内存空间,并申请该内存空间。之后,编解码加速器解析编码文件,将解码后的注册信息存放至申请的内存空间中,并将解码后的注册信息对应的第一地址信息(包括首地址和长度)存到编解码加速器的内部映射表中。编解码加速器对初始注册信息进行预处理,能够将初始注册信息转化为编解码加速器所能理解的格式,便于后续的处理顺利进行。
在接下来的处理过程中,编解码加速器根据第一地址信息,从内存中获取注册信息并为注册信息中的M个处理模板配置第一映射表,具体来说,编解码加速器会为M个处理模板设置M个模板序号,并获取这M个处理模板所对应的M个地址信息。然后建立这M个地址信息和M个模板序号之间的映射关系,得到第一映射表。地址信息包括首地址和长度。
示例性的,第一映射表可以如表1所示:
表1
示例性的,表1中的地址信息0x10002000表示,0号处理模板的首地址为0x10002000。其中,首地址是采用16进制表示的内存地址。可以理解的是,原始注册信息经过编解码加速器的解码处理之后,编解码加速器定义了解码后注册信息中各个处理模板的长度,因此,在第一映射表中,并不需要存储各个处理模板的长度,只需要存储模板序号和地址信息之间的映射关系即可。
建立了第一映射表,在解析待处理数据得到目标模板序号之后,编解码加速器就可以基于目标模板序号查询第一映射表得到目标处理模板对应的第二地址信息。然后根据第二地址信息,从内存中获取目标处理模板。
本申请实施例中,在编解码加速器中存储指示地址信息和模板序号之间映射关系的第一映射表,通过查询第一映射表的方式,从内存中获取目标处理模板,并不在编解码加速器本地存储各个处理模板,减少了本地资源的占用。
203.根据目标数据分布序号,获取待处理数据对应的目标数据分布信息。
编解码加速器获取的注册信息中还包括N个数据分布信息,N为正整数。编解码加速器会为这N个数据分布信息配置第二映射表,具体来说,编解码加速器会为N个数据分布信息设置N个数据分布序号,并获取这N个数据分布信息所对应的N个地址信息。然后建立这N个地址信息和N个数据分布序号之间的映射关系,得到第二映射表。
示例性的,第二映射表可以如表2所示:
表2
数据分布序号 | 地址信息 |
0 | 0x08049324 |
1 | 0x00100ABD |
2 | 0x00025009 |
示例性的,表2中的地址信息0x08049324表示,0号数据分布信息的首地址为0x008049324。其中,首地址是采用16进制表示的内存地址。可以理解的是,原始注册信息经过编解码加速器的解码处理之后,编解码加速器定义了解码后注册信息中各个数据分布信息的长度,因此,在第二映射表中,并不需要存储各个数据分布信息的长度,只需要存储数据分布序号和地址信息之间的映射关系即可。
需要注意的是,表1和表2只是对模板序号与地址信息之间的映射关系,以及数据分布序号与地址信息之间的映射关系的一个示例,并不意味着实际应用中一定存在这样一张表。
建立了第二映射表,在解析待处理数据得到目标数据分布序号之后,编解码加速器就可以基于目标数据分布序号查询第二映射表得到目标数据分布信息对应的第三地址信息。然后根据第三地址信息,从内存中获取目标数据分布信息。
本申请实施例中,在编解码加速器中存储指示地址信息和数据分布序号之间映射关系的第二映射表,通过查询第二映射表的方式,从内存中获取目标数据分布信息,并不在编解码加速器本地存储各个数据分布信息,减少了本地资源的占用。
204.根据目标数据分布信息,确定待处理数据中定长字段对应的第一内存开销。
编解码加速器可以基于不同的方式确定待处理数据中定长字段的第一内存开销,下面分别对不同的情况进行说明。
1)数据分布信息与定长内存开销绑定。
编解码加速器根据第一地址信息,从内存中获取注册信息,该注册信息中包括M个处理模板和N个数据分布信息,M和N均为正整数。其中,处理模板指示待处理数据的属性信息,包括待处理数据中各个成员的类型、名称、长度和注释等信息。数据分布信息指示待处理数据中各个成员的排布情况。
这M个处理模板中的每个处理模板对应至少一个数据分布信息。示例性的,假设处理模板1包括5个成员,为成员0至成员4,那么处理模板1和数据分布信息之间的对应关系可以如图3所示。请参阅图3,图3为本申请实施例提供的处理模板和数据分布信息的一个对应关系示意图。
如图3所示,数据分布信息1至数据分布信息3均对应于处理模板1,各个数据分布信息中的成员均包含于处理模板1的成员中,也就是说,处理模板1的成员是全集,与处理模板1对应的各个数据分布信息的成员是该全集的子集。
本申请实施例中,一个处理模板可以对应多个数据分布信息,这为本申请实施例实现以非侵入式的方式进行序列化和/或反序列化提供了技术支持,也即提升了技术方案的可实现性。其中,非侵入式是指不需要使用指定的输入数据结构,便可以实现序列化和/或反序列化功能。这是因为,注册信息中的处理模板囊括了多种情况,编解码加速器根据待处理数据的数据分布信息,便能确定与之对应的处理模板,也就确定了待处理数据的处理方式。同时,如果一个处理模板可以对应多个数据分布信息,也可以减少注册的处理模板的数量,从而降低了内存消耗。
编解码加速器还会确定每个处理模板中每个定长字段的内存开销。
编解码加速器可以通过多种方式确定定长字段的内存开销的方式有多种,例如每个定长字段的成员所占用的内存开销在配置的时候直接注明了,那么编解码加速器就可以直接获取到该内存开销。或者,在注册的时候没有注明,编解码加速器对各个定长字段的成员进行分析,计算得到各个定长字段的成员的内存开销。除此之外,编解码加速器还可以基于其他的方式确定各个定长字段的,具体此处不做限定。例如,处理模板中一部分定长字段的成员的内存开销在配置过程中注明,另一部分定长字段的成员的内存开销由编解码加速器对该部分定长字段成员进行分析后确定,由此确定出处理模板中每个定长字段成员的内存开销。
以图3所示的处理模板1为例,假设在处理模板1包括的5个成员中,成员0、成员2和成员3的类型是定长字段,成员1和成员4的类型是变长字段。那么编解码加速器会确定成员0、成员2和成员3各自的内存开销。
编解码加速器确定出各个定长字段的内存开销之后,会根据每个定长字段的内存开销,和M个处理模板与N个数据分布信息之间的对应关系,确定N个数据分布信息中每个数据分布信息对应的定长内存开销。在图3所示实施例中,假设处理模板1中定长字段成员0、成员2和成员3对应的内存开销分别为4字节、8字节和4字节。那么编解码加速器能够确定与处理模板1对应的数据分布信息1、数据分布信息2和数据分布信息3对应的定长内存开销分别为12字节、0字节和4字节,也即将数据分布信息与定长内存开销进行了绑定。
在数据分布信息与定长内存开销绑定的情况下,编解码加速器可以直接将目标数据分布信息对应的定长内存开销,确定为待处理数据中定长字段对应的第一内存开销。举例来说,假设待处理数据对应的目标数据分布信息为图3所示的数据分布信息1,那么编解码加速器可以确定待处理数据中定长字段对应的第一内存开销为12字节。
本申请实施例中,将数据分布信息与定长内存开销进行绑定,使得编解码加速器在数据处理过程中,不需要再进行计算,节约了运算资源。同时,够根据目标数据分布信息直接快速确定出待处理数据对应的定长内存开销,也提升了处理效率。
2)数据分布信息与定长内存开销不绑定。
在数据分布信息与定长内存开销不绑定的情况下,编解码加速器在获取到注册信息之后,只需要确定M个处理模板中,每个处理模板所包括的每个定长字段的内存开销。具体过程在上文“1)数据分布信息与定长内存开销绑定”中已经说明,此处不再赘述。
在这种情况下,在编解码加速器获取到待处理数据所对应的目标数据分布信息和目标处理模板之后,会根据目标数据分布信息和目标处理模板,确定待处理数据对应的至少一个定长字段,然后根据至少一个定长字段中每个定长字段的内存开销,确定待处理数据中定长字段对应的第一内存开销。
举例来说,假设目标处理模板为图3所示的处理模板1,目标数据分布信息为图3所示的数据分布信息3,且在处理模板1包括的5个成员中,成员0、成员2和成员3的类型是定长字段,其内存开销分别为4字节、8字节和4字节;其他成员的类型是变长字段。那么编解码加速器根据处理模板1和数据分布信息3,能够确定待处理数据中成员0和成员3是定长字段,也即确定第一内存开销为8字节。
本申请实施例中,确定第一内存开销的方式有多种,可以根据实际应用的需要选择,提升了本申请技术方案的灵活性。
205.根据目标数据分布信息、目标处理模板和待处理数据,计算待处理数据中变长字段对应的第二内存开销。
目标数据分布信息指示待处理数据的成员分布情况,目标处理模板指示待处理数据的属性信息。其中,待处理数据的属性信息包括待处理数据中各个数据成员的类型、处理方式等信息。
变长字段需要根据待处理数据所包括的具体内容进行分析,才能确定其所对应的第二内存开销。因此,编解码加速器获取待处理数据,目标数据分布信息和目标处理模板之后,会根据目标数据分布信息查询目标处理模板,确定待处理数据中各个成员的类型,在确定是变长字段的情况下,结合待处理数据本身,确定出各个变长字段的内存开销,从而确定第二内存开销。
示例性的,假设目标处理模板为图3所示的处理模板1,目标数据分布信息为图3所示的数据分布信息3,且在处理模板1包括的5个成员中,成员1和成员4的类型是变长字段,其他成员的类型是变长字段。那么编解码加速器按照数据分布信息3,查询处理模板1,确定各个成员的类型。确定只有成员1为变长字段,再结合待处理数据自身,得到该变长字段对应的内存开销,也即得到了第二内存开销。
本申请实施例中,在处理过程中,编解码加速器会结合待处理数据自身的信息精确计算变长字段对应的第二内存开销,使得计算结果准确,提升了本申请技术方案的准确度。
206.根据第一内存开销和第二内存开销,申请目标内存空间,目标内存空间用于存储编解码待处理数据得到的输出数据。
编解码加速器得到第一内存开销和第二内存开销之后,能够确定输出数据对应的目标内存开销。示例性的,假设第一内存开销为8字节,第二内存开销为16字节,那么,编解码加速器便能确定目标内存开销为8+16=24字节。因此,目标内存空间对应的空间大小即为24字节,该目标内存空间便用于存储编解码待处理数据得到的输出数据。
编解码加速器可以通过多种方式申请目标内存空间,可以通过编解码加速器外部的内存管理加速器,申请目标内存空间。除此之外,还可以通过其他的方式申请目标内存空间,例如,通过编解码加速器内部的内存管理模块,申请目标内存空间,具体此处不做限定。
本申请实施例中,编解码加速器申请目标内存空间的方式有多种,可以适应不同的情况,提升了本申请技术方案的灵活性。
在一些可选的实施例中,在步骤206之后,编解码加速器将输出数据存储至目标内存空间之后,还会向处理器发送中断请求,以告知处理器数据处理完成,使得处理器从内存中获取输出数据。其中,中断请求中可以携带目标内存空间的地址信息。
在前面的说明中,是以编解码加速器为执行主体,对本申请实施例提供的数据处理方法进行的说明。接下来,在系统的角度,对本申请实施例提供的数据处理方法进行说明。请参阅图4,图4为本申请实施例提供的数据处理系统的一个结构示意图。
如图4所示,数据处理系统400包括编解码加速器401、处理器402、内存403和内存管理加速器404。本申请实施例提供的数据处理方法,关注软硬件交互框架设计,在编解码加速器、处理器和内存之间设置不同用途的交互接口。
编解码加速器401向处理器402提供注册接口,处理器402可以利用该注册接口,在编解码执行前进行交互环境和注册信息的配置操作,从而支持编解码加速器401实现以非侵入式的方式,根据注册信息自主访问内存403获取待处理数据,并根据注册信息指定的编解码算法程序,实现动态编解码特性。其中,交互环境包括输入/输出的队列空间,注册信息的输入/输出空间等。
编解码加速器401还向处理器402提供写接口,处理器402可以利用该写接口将注册信息对应的地址信息,和待处理任务的描述信息对应的地址信息,写入编解码加速器401对应的寄存器中,以供后续编解码加速器401访问内存403取数据使用。
编解码加速器401还向处理器402提供触发接口,处理器402可以利用该触发接口,在将注册信息对应的地址信息,和待处理任务的描述信息对应的地址信息,写入编解码加速器401后,触发编解码加速器401开始处理注册信息或者待处理任务所对应的待处理数据。
编解码加速器401还可以设置有中断通知接口,在注册信息处理完成或者待处理数据处理完成之后,编解码加速器401可以通过中断通知接口向处理器402发送中断请求,以通知处理器402获取注册回执或者输出数据。
编解码加速器401上还设置有访存接口,通过访存接口,实现主动访问内存403获取注册信息、待处理任务描述信息等。并在待处理任务为批任务(又称为批量任务)的情况下,将批任务中每个子任务的编解码输出数据、以及编解码批任务完成后将输出描述信息写入内存403。在待处理任务为单个任务的情况下,将单个任务的输出数据和该输出数据的描述信息写入内存403。
编解码加速器401上还设置有申请内存接口,编解码加速器401基于注册信息预处理确定的定长字段对应的第一内存开销,和基于处理过程中确定的变长字段对应的第二内存开销,精确计算目标内存空间,通过申请内存接口,向内存管理加速器404申请目标内存空间。
在一些可选的实施例中,数据处理系统中也可以不包括内存管理加速器,由编解码加速器内部的内存管理模块实现内存管理加速器的功能。
接下来,以数据处理系统中包括内存管理加速器为例,对本申请实施例提供的数据处理方法进行更详细的说明,请参阅图5,图5为本申请实施例提供的数据处理方法的示意图。
配置了本申请实施例提供的编解码加速器(Ser/DeSer加速器)的设备上,以需要执行编解码批任务为例进行说明,可以按照以下步骤进行操作:
首先,在编解码任务执行前,需要先进行注册信息的配置。在处理器(centralprocessing unit,CPU)软件侧,需要执行以下步骤完成注册信息的输入,即对应图5中步骤501和步骤502。
501.处理器准备交互环境,并封装环境信息和编解码信息为注册信息。
其中,准备交互环境是指准备软硬件交互环境,包括供CPU存放注册输入信息的缓存空间Buffer1、存放编解码批任务描述信息的缓存空间Buffer2,供Ser/DeSer加速器存放注册输出信息的缓存空间Buffer3、存放编解码批任务输出描述信息的缓存空间Buffer4。
在一些可选的实施例中,Buffer2和Buffer4也可以不注册。在注册buffer2的情况相爱,编解码任务触发时,告知编解码加速器处理下一个;在不注册buffer2的情况下,编解码批任务时,需要告知编解码加速器批任务描述信息的地址信息。在注册buffer4的情况下,输出数据直接存放至指定地址即可。在不注册buffer4的情况下,批任务描述信息中,需要携带输出数据的地址信息。
封装环境信息是指,按照Ser/DeSer加速器给定注册信息格式,CPU需要将Buffer2和Buffer4缓存空间信息(首地址+长度),写入Buffer1内。
封装编解码信息是指,按照Ser/DeSer加速器给定注册信息格式,CPU需要将需要使用的编解码算法信息(程序入口、类型等),写入Buffer1内;按照Ser/DeSer加速器指定编码格式(如JSON等),对序列化输入数据结构Ser_InStruct、反序列化输出数据结构DeSer_OutStruct和序列化/反序列化模式描述Schema等进行编码,将它们的编码数据首地址和长度信息,写入Buffer1内。其中,注册信息中的处理模板包括序列化输入数据结构和/或反序列化输出数据结构,数据分布信息包括序列化/反序列化模式描述。
502.处理器触发编解码加速器获取注册信息。
CPU可以调用Ser/DeSer加速器接口,将上述注册信息(首地址和长度)写到对应加速器寄存器中,实现触发加速器处理注册信息。
在Ser/DeSer加速器侧,在接收到注册信息并被CPU触发后,启动规则注册模块,执行以下步骤完成信息注册,即对应图5中步骤503至步骤505。
503.编解码加速器访问buffer1获取注册信息。
编解码加速器根据寄存器中注册信息的首地址和长度,访Buffer1取注册信息并进行以下解析:
首先,将Buffer2和Buffer4缓存空间信息(首地址+长度)存储到相应寄存器中,然后预处理Ser_InStruct、DeSer_OutStruct和Schema等编码文件,计算解码后的空间大小。需要注意的是,编解码加速器访问buffer1获取的注册信息是处理器或者终端设备所配置的初始注册信息,预处理得到的解码文件是在后续处理中所使用的注册信息。
504.编解码加速器申请内存。
编解码加速器计算得到解码后的空间大小之后,通过内存申请模块申请内存空间,该内存空间存储的是解码后的注册信息。然后分别将Ser_InStruct、DeSer_OutStruct和Schema的解码数据内存首地址和长度存到加速器内部映射表中,也即将第一地址信息存到内部映射表中。
编解码加速器还会启动存储计算模块,分别综合Ser_InStruct和Schema、DeSer_OutStruct和Schema,计算基于它们进行序列化、反序列化时的固定内存开销(如元数据字段、定长字段等),并进行缓存。
505.编解码加速器封装注册信息回执,写入buffer3。
Ser/DeSer加速器封装注册解析结果(如Schema的解析结果、映射表序号等),或者直接写入Buffer3,或者并利用内存申请模块申请注册回执空间进行存储,再将回执空间首地址和长度存入Buffer3;可基于中断通知CPU取注册回执,或等待CPU轮询或定时查询主动获取。
编解码加速器反馈注册回执有多重作用,一方面可以告知CPU,注册完成,CPU可以释放相关内存,以减少内存占用。另一方面,CPU能够根据注册回执反馈序号,如果序号≥0,则认为注册成功;如果小于0,则表示注册失败,客户端需要重新注册,提升了注册的成功率。
注册完成后,可利用Ser/DeSer加速器进行动态编解码。在CPU软件侧,创建任务,执行如下步骤,对应图5中步骤506和步骤507。
506.处理器创建任务并写入buffer2。
CPU会封装任务信息,也即将N个子任务描述信息(包括任务使用编解码算法类型、Ser_InStruct序号、DeSer_OutStruct序号、Schema序号、待编解码数据首地址、长度等),封装为批任务描述信息Work Metadata(包括批任务数量、子任务描述信息列表等),写入Buffer2中。
507.处理器触发编解码加速器进行编解码。
处理器可以调用Ser/DeSer加速器接口,将批任务描述信息Work Metadata的首地址和长度写到对应加速器寄存器中,实现触发加速器处理任务。
508.访存获取编解码输入。
编解码加速器获取到批任务描述信息Work Metadata的首地址和长度之后,会启动数据获取模块,访问Buffer2,获取到Work Metadata。然后解析Work Metadata,缓存各子任务描述信息到加速器内部接收队列。
509.编解码加速器访存获取目标处理模板和目标数据分布信息。
动态规则装载模块按序调度多个子任务,并解析各子任务描述信息,查询编解码加速器本地映射表,装载相应的编解码算法、Ser_InStruct、DeSer_OutStruct、Schema等信息到核心处理模块中的执行单元,并访存取到编解码加速器本地缓存中。
510.取编解码输入数据。
基于上述缓存的Ser_InStruct、DeSer_OutStruct、Schema等信息,核心处理模块中各执行单元根据子任务描述信息中待编/解码数据地址,从内存中获取编解码输入数据,即待处理数据。
511.编解码加速器申请内存。
若子任务需要进行拷贝,对于编码任务,拷贝分发模块会通知核心处理模块申请拷贝所需输出内存,并在编码结束后调用该模块进行输出数据拷贝;对于解码任务,拷贝分发模块通知核心处理模块,在解码过程中进行相应内存申请与拷贝。
调用存储计算模块,在注册阶段已缓存的固定内存开销的基础上,计算输出内存开销,也即目标内存空间。利用内存申请模块申请目标内存空间。
512.写输出数据到输出空间。
编解码加速器还会使用指定算法进行编解码,得到输出数据,然后将输出数据存入目标内存空间。
513.编解码加速器封装输出数据描述信息,写入buffer4。
在批任务所把包括的N个子任务均完成后,输出通知模块将各子任务输出描述信息(如DeSer_OutStruct序号、输出数据地址、长度等)封装输出批任务描述信息OutputMetadata(包含批任务数量、子任务描述信息列表等)写入Buffer4,并可基于中断通知CPU取Output Metadata,或等待CPU轮询或定时查询主动获取。
接下来,对本申请实施例提供的编解码加速器和相关设备进行说明。
请参阅图6,图6为本申请实施例提供的编解码加速器600的一个结构示意图,包括:
处理单元601,用于解析待处理数据,得到待处理数据对应的目标模板序号和目标数据分布序号。
获取单元602,用于根据目标模板序号,获取待处理数据对应的目标处理模板。
获取单元602,还用于根据目标数据分布序号,获取待处理数据对应的目标数据分布信息。
处理单元601,还用于根据目标数据分布信息,确定待处理数据中定长字段对应的第一内存开销;根据目标数据分布信息、目标处理模板和待处理数据,计算待处理数据中变长字段对应的第二内存开销;根据第一内存开销和第二内存开销,申请目标内存空间,目标内存空间用于存储编解码待处理数据得到的输出数据。
在一些可选的实施例中,获取单元602,还用于:获取第一地址信息,第一地址信息指示注册信息的存储位置,注册信息包括M个处理模板和N个数据分布信息,M个处理模板中每个处理模板对应至少一个数据分布信息,M和N均为正整数;根据第一地址信息,获取M个处理模板和N个数据分布信息。
处理单元601,还用于确定每个处理模板中每个定长字段的内存开销;根据每个定长字段的内存开销,和M个处理模板与N个数据分布信息之间的对应关系,确定N个数据分布信息中每个数据分布信息对应的定长内存开销。
在一些可选的实施例中,目标数据分布信息包含于N个数据分布信息。处理单元601,具体用于确定目标数据分布信息对应的定长内存开销,为第一内存开销。
在一些可选的实施例中,获取单元602,还用于获取第一地址信息,第一地址信息指示注册信息的存储位置,注册信息包括M个处理模板,M为正整数;根据第一地址信息,获取M个处理模板。
处理单元601,还用于确定M个处理模板中每个处理模板包括的每个定长字段的内存开销。
在一些可选的实施例中,处理单元601,具体用于根据目标数据分布信息和目标处理模板,确定待处理数据对应的至少一个定长字段;根据至少一个定长字段中每个定长字段的内存开销,确定第一内存开销。
在一些可选的实施例中,目标数据分布信息指示待处理数据的成员分布情况,目标处理模板指示待处理数据的属性信息。
处理单元601,具体用于根据待处理数据的成员分布情况、待处理数据的属性信息和待处理数据,确定待处理数据包括的变长字段;计算变长字段对应的第二内存开销。
在一些可选的实施例中,获取单元602,还用于获取M个处理模板对应的M个地址信息和M个模板序号。
处理单元601,还用于建立M个地址信息与M个模板序号之间的映射关系,得到第一映射表。
获取单元602,具体用于根据目标模板序号,从第一映射表中确定目标处理模板对应的第二地址信息;根据第二地址信息,从内存中获取目标处理模板。
在一些可选的实施例中,获取单元602,还用于获取N个数据分布信息对应的N个地址信息和N个数据分布序号。
处理单元601,还用于建立N个地址信息与N个数据分布序号之间的映射关系,得到第二映射表。
获取单元602,具体用于根据目标数据分布序号,从第二映射表中确定目标数据分布信息对应的第三地址信息;根据第三地址信息,从内存中获取目标数据分布信息。
在一些可选的实施例中,处理单元601,具体用于通过内存管理加速器或者内存管理模块,申请目标内存空间。
编解码加速器600可以执行前述图1a至图5所示实施例中编解码加速器所执行的操作,此处不再赘述。
请参阅图7,图7为本申请实施例提供的编解码加速器的一个结构示意图。
如图7所示,编解码加速器700包括规则注册模块、数据获取模块、动态规则装载模块、核心处理模块、拷贝分发模块、存储计算模块、存储申请模块和输出通知模块。
其中,规则注册模块用于:访存获取CPU注册到加速器中的交互环境、编解码等配置信息,解析、存储到申请的内存空间中,并缓存注册信息包括的处理模板的内存地址和数据分布信息的内存地址到加速器本地映射表中,以供编解码时快速查询、获取。
数据获取模块用于:基于CPU写入加速器寄存器中的批任务描述信息首地址和长度信息,访问已注册的交互环境相应内存空间,获取批任务描述信息并对其进行解析,将各子任务描述信息缓存到本地接收队列,等待加速器调度处理。
动态规则装载模块用于:调度加速器本地接收队列中多个子任务,解析各子任务描述信息,查询加速器本地映射表,装载所需算法、数据结构、模板等编解码信息到核心处理模块中的执行单元。
核心处理模块用于:核心处理模块中各执行单元根据子任务描述信息中待编/解码数据地址,和已装载的子任务编解码信息,访存取数据;调用存储计算模块,精确计算输出内存开销,调用内存申请模块申请输出内存;使用已装载的算法进行编解码并存入输出空间。
存储计算模块用于:在注册处理时,基于注册的编解码信息,计算、缓存编解码时输出数据中固定部分(包括元数据、定长字段等)的内存开销,降低后续编解码内存开销计算;在编解码处理时,根据子任务描述信息,查询获取本地缓存的固定部分输出开销,并基于子任务的待编解码数据对输出数据中的变长字段的内存开销进行精确计算,综合二者确定精确的输出内存需求。其中,序列化是在缓存中进行的,这样也避免多次写内存,避免性能不好。存储申请模块:对于注册处理时解析编解码信息,或编解码处理时编解码输出,该模块会基于存储计算模块计算所得内存开销,与外部内存管理加速器交互,申请输出内存。
拷贝分发模块用于:根据子任务描述信息,若需要进行拷贝,对于编码任务,该模块会通知核心处理模块,利用存储计算模块申请拷贝所需输出内存,并在编码完成后调用自己进行输出数据拷贝;对于解码任务,该模块会通知核心处理模块,在解码过程中进行相应内存申请与拷贝。
输出通知模块用于:待批任务完成,该模块会将各子任务输出描述信息封装到输出批任务描述信息中,并将其写入到已注册的交互环境相应内存空间之中,发送中断通知CPU取输出数据,或等待CPU轮询或定时查询主动获取。
编解码加速器700可以执行前述图1a至图6所示实施例中编解码加速器所执行的操作,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (21)
1.一种数据处理方法,其特征在于,包括:
解析待处理数据,得到所述待处理数据对应的目标模板序号和目标数据分布序号;
根据所述目标模板序号,获取所述待处理数据对应的目标处理模板;
根据所述目标数据分布序号,获取所述待处理数据对应的目标数据分布信息;
根据所述目标数据分布信息,确定所述待处理数据中定长字段对应的第一内存开销;
根据所述目标数据分布信息、所述目标处理模板和所述待处理数据,计算所述待处理数据中变长字段对应的第二内存开销;
根据所述第一内存开销和所述第二内存开销,申请目标内存空间,所述目标内存空间用于存储编解码所述待处理数据得到的输出数据。
2.根据权利要求1所述的方法,其特征在于,在所述解析待处理数据之前,所述方法还包括:
获取第一地址信息,所述第一地址信息指示注册信息的存储位置,所述注册信息包括M个处理模板和N个数据分布信息,所述M个处理模板中每个处理模板对应至少一个数据分布信息,M和N均为正整数;
根据所述第一地址信息,获取所述M个处理模板和所述N个数据分布信息;
确定所述每个处理模板中每个定长字段的内存开销;
根据所述每个定长字段的内存开销,和所述M个处理模板与所述N个数据分布信息之间的对应关系,确定所述N个数据分布信息中每个数据分布信息对应的定长内存开销。
3.根据权利要求2所述的方法,其特征在于,所述目标数据分布信息包含于所述N个数据分布信息;
所述根据所述目标数据分布信息,确定所述待处理数据中定长字段对应的第一内存开销,包括:
确定所述目标数据分布信息对应的定长内存开销,为所述第一内存开销。
4.根据权利要求1所述的方法,其特征在于,在所述解析待处理数据之前,所述方法还包括:
获取第一地址信息,所述第一地址信息指示注册信息的存储位置,所述注册信息包括M个处理模板,M为正整数;
根据所述第一地址信息,获取所述M个处理模板;
确定所述M个处理模板中每个处理模板包括的每个定长字段的内存开销。
5.根据权利要求4所述的方法,其特征在于,所述根据所述目标数据分布信息,确定所述待处理数据中定长字段对应的第一内存开销,包括:
根据所述目标数据分布信息和所述目标处理模板,确定所述待处理数据对应的至少一个定长字段;
根据所述至少一个定长字段中每个定长字段的内存开销,确定所述第一内存开销。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述目标数据分布信息指示所述待处理数据的成员分布情况,所述目标处理模板指示所述待处理数据的属性信息;
所述根据所述目标数据分布信息和所述目标处理模板,计算所述待处理数据中变长字段对应的第二内存开销,包括:
根据所述待处理数据的成员分布情况、所述待处理数据的属性信息和所述待处理数据,确定所述待处理数据包括的所述变长字段;
计算所述变长字段对应的所述第二内存开销。
7.根据权利要求2至6中任一项所述的方法,其特征在于,所述方法还包括:
获取所述M个处理模板对应的M个地址信息和M个模板序号;
建立所述M个地址信息与所述M个模板序号之间的映射关系,得到所述第一映射表;
所述根据所述目标模板序号,获取所述待处理数据对应的目标处理模板,包括:
根据所述目标模板序号,从所述第一映射表中确定所述目标处理模板对应的第二地址信息;
根据所述第二地址信息,从内存中获取所述目标处理模板。
8.根据权利要求2至7中任一项所述的方法,其特征在于,所述方法还包括:
获取所述N个数据分布信息对应的N个地址信息和N个数据分布序号;
建立所述N个地址信息与所述N个数据分布序号之间的映射关系,得到所述第二映射表;
所述根据所述目标数据分布序号,获取所述待处理数据对应的目标数据分布信息,包括:
根据所述目标数据分布序号,从所述第二映射表中确定所述目标数据分布信息对应的第三地址信息;
根据所述第三地址信息,从内存中获取所述目标数据分布信息。
9.根据权利要求1至8中任一项所述的方法,其特征在于,所述申请目标内存空间,包括:
通过内存管理加速器或者内存管理模块,申请所述目标内存空间。
10.一种编解码加速器,其特征在于,包括:
处理单元,用于解析待处理数据,得到所述待处理数据对应的目标模板序号和目标数据分布序号;
获取单元,用于根据所述目标模板序号,获取所述待处理数据对应的目标处理模板;
所述获取单元,还用于根据所述目标数据分布序号,获取所述待处理数据对应的目标数据分布信息;
所述处理单元,还用于:
根据所述目标数据分布信息,确定所述待处理数据中定长字段对应的第一内存开销;
根据所述目标数据分布信息、所述目标处理模板和所述待处理数据,计算所述待处理数据中变长字段对应的第二内存开销;
根据所述第一内存开销和所述第二内存开销,申请目标内存空间,所述目标内存空间用于存储编解码所述待处理数据得到的输出数据。
11.根据权利要求10所述的编解码加速器,其特征在于,所述获取单元,还用于:
获取第一地址信息,所述第一地址信息指示注册信息的存储位置,所述注册信息包括M个处理模板和N个数据分布信息,所述M个处理模板中每个处理模板对应至少一个数据分布信息,M和N均为正整数;
根据所述第一地址信息,获取所述M个处理模板和所述N个数据分布信息;
所述处理单元,还用于:
确定所述每个处理模板中每个定长字段的内存开销;
根据所述每个定长字段的内存开销,和所述M个处理模板与所述N个数据分布信息之间的对应关系,确定所述N个数据分布信息中每个数据分布信息对应的定长内存开销。
12.根据权利要求11所述的编解码加速器,其特征在于,所述目标数据分布信息包含于所述N个数据分布信息;
所述处理单元,具体用于确定所述目标数据分布信息对应的定长内存开销,为所述第一内存开销。
13.根据权利要求10所述的编解码加速器,其特征在于,所述获取单元,还用于:
获取第一地址信息,所述第一地址信息指示注册信息的存储位置,所述注册信息包括M个处理模板,M为正整数;
根据所述第一地址信息,获取所述M个处理模板;
所述处理单元,还用于确定所述M个处理模板中每个处理模板包括的每个定长字段的内存开销。
14.根据权利要求13所述的编解码加速器,其特征在于,所述处理单元,具体用于:
根据所述目标数据分布信息和所述目标处理模板,确定所述待处理数据对应的至少一个定长字段;
根据所述至少一个定长字段中每个定长字段的内存开销,确定所述第一内存开销。
15.根据权利要求10至14中任一项所述的编解码加速器,其特征在于,所述目标数据分布信息指示所述待处理数据的成员分布情况,所述目标处理模板指示所述待处理数据的属性信息;
所述处理单元,具体用于:
根据所述待处理数据的成员分布情况、所述待处理数据的属性信息和所述待处理数据,确定所述待处理数据包括的所述变长字段;
计算所述变长字段对应的所述第二内存开销。
16.根据权利要求11至15中任一项所述的编解码加速器,其特征在于,所述获取单元,还用于获取所述M个处理模板对应的M个地址信息和M个模板序号;
所述处理单元,还用于建立所述M个地址信息与所述M个模板序号之间的映射关系,得到所述第一映射表;
所述获取单元,具体用于:
根据所述目标模板序号,从所述第一映射表中确定所述目标处理模板对应的第二地址信息;
根据所述第二地址信息,从内存中获取所述目标处理模板。
17.根据权利要求11至16中任一项所述的编解码加速器,其特征在于,所述获取单元,还用于获取所述N个数据分布信息对应的N个地址信息和N个数据分布序号;
所述处理单元,还用于建立所述N个地址信息与所述N个数据分布序号之间的映射关系,得到所述第二映射表;
所述获取单元,具体用于:
根据所述目标数据分布序号,从所述第二映射表中确定所述目标数据分布信息对应的第三地址信息;
根据所述第三地址信息,从内存中获取所述目标数据分布信息。
18.根据权利要求10至17中任一项所述的编解码加速器,其特征在于,所述处理单元,具体用于通过内存管理加速器或者内存管理模块,申请所述目标内存空间。
19.一种数据处理系统,其特征在于,所述系统包括编解码加速器,所述编解码加速器用于执行权利要求1至9中任一项所述的方法。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有指令,当所述指令在计算机上运行时,使得所述计算机执行权利要求1至9中任一项所述的方法。
21.一种计算机程序产品,其特征在于,当所述计算机程序产品在计算机上执行时,所述计算机执行权利要求1至9中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210312378.XA CN116860428A (zh) | 2022-03-28 | 2022-03-28 | 一种数据处理方法、编解码加速器和相关设备 |
PCT/CN2023/080127 WO2023185401A1 (zh) | 2022-03-28 | 2023-03-07 | 一种数据处理方法、编解码加速器和相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210312378.XA CN116860428A (zh) | 2022-03-28 | 2022-03-28 | 一种数据处理方法、编解码加速器和相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116860428A true CN116860428A (zh) | 2023-10-10 |
Family
ID=88199009
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210312378.XA Pending CN116860428A (zh) | 2022-03-28 | 2022-03-28 | 一种数据处理方法、编解码加速器和相关设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116860428A (zh) |
WO (1) | WO2023185401A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981884B (zh) * | 2012-11-22 | 2016-03-30 | 用友优普信息技术有限公司 | 序列化装置和序列化方法 |
CN110489417B (zh) * | 2019-07-25 | 2023-03-28 | 深圳壹账通智能科技有限公司 | 一种数据处理方法及相关设备 |
CN111813783B (zh) * | 2020-07-27 | 2024-03-26 | 南方电网数字电网研究院有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN113742056A (zh) * | 2020-11-19 | 2021-12-03 | 北京沃东天骏信息技术有限公司 | 一种数据存储方法、装置、设备及计算机可读存储介质 |
CN113886087A (zh) * | 2021-10-19 | 2022-01-04 | 深圳市领创星通科技有限公司 | 一种应用内存管理方法、装置、设备及存储介质 |
-
2022
- 2022-03-28 CN CN202210312378.XA patent/CN116860428A/zh active Pending
-
2023
- 2023-03-07 WO PCT/CN2023/080127 patent/WO2023185401A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023185401A1 (zh) | 2023-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109426574B (zh) | 分布式计算系统,分布式计算系统中数据传输方法和装置 | |
CN108510082B (zh) | 对机器学习模型进行处理的方法及装置 | |
US10067791B2 (en) | Methods and apparatus for resource management in cluster computing | |
US8117615B2 (en) | Facilitating intra-node data transfer in collective communications, and methods therefor | |
US8996469B2 (en) | Methods and apparatus for job state tracking in cluster computing | |
US9804889B2 (en) | Methods and apparatus for state objects in cluster computing | |
CN111107022B (zh) | 数据传输优化方法、设备及可读存储介质 | |
CN111736907B (zh) | 一种自适应低延迟内存计算引擎的数据分析方法 | |
CN114218175A (zh) | 一种资源跨平台共享方法、装置、终端设备及存储介质 | |
CN116860428A (zh) | 一种数据处理方法、编解码加速器和相关设备 | |
CN110955461B (zh) | 计算任务的处理方法、装置、系统、服务器和存储介质 | |
CN107102901B (zh) | 一种任务处理方法和装置 | |
CN111724262B (zh) | 一种应用服务器后续包查询系统及其工作方法 | |
CN110231983B (zh) | 数据并发处理方法、装置及系统、计算机设备及可读介质 | |
CN114399773A (zh) | Ocr识别系统构建方法和装置、ocr识别方法、设备、介质 | |
CN114610508A (zh) | 一种前端大数据计算处理方法和系统 | |
CN114741166A (zh) | 一种分布式任务的处理方法、分布式系统及第一设备 | |
CN114063943A (zh) | 数据传输系统、方法、装置、介质和设备 | |
CN115292053B (zh) | 移动端cnn的cpu、gpu、npu统一调度方法 | |
CN113835852B (zh) | 任务数据的调度方法及装置 | |
Tardieu et al. | X10 for productivity and performance at scale | |
CN116185497B (zh) | 命令解析方法、装置、计算机设备和存储介质 | |
JP2013539577A (ja) | インタラプト・ベースのコマンド処理 | |
CN113254476B (zh) | 请求的处理方法和装置、电子设备和存储介质 | |
US11397586B1 (en) | Unified and compressed statistical analysis data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |