CN111538677B - 数据处理方法及装置 - Google Patents

数据处理方法及装置 Download PDF

Info

Publication number
CN111538677B
CN111538677B CN202010340799.4A CN202010340799A CN111538677B CN 111538677 B CN111538677 B CN 111538677B CN 202010340799 A CN202010340799 A CN 202010340799A CN 111538677 B CN111538677 B CN 111538677B
Authority
CN
China
Prior art keywords
data
cache line
size
cache
determining
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
CN202010340799.4A
Other languages
English (en)
Other versions
CN111538677A (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.)
Xian Wanxiang Electronics Technology Co Ltd
Original Assignee
Xian Wanxiang Electronics Technology 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 Xian Wanxiang Electronics Technology Co Ltd filed Critical Xian Wanxiang Electronics Technology Co Ltd
Priority to CN202010340799.4A priority Critical patent/CN111538677B/zh
Publication of CN111538677A publication Critical patent/CN111538677A/zh
Application granted granted Critical
Publication of CN111538677B publication Critical patent/CN111538677B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0653Configuration or reconfiguration with centralised address assignment
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了一种数据处理方法及装置。其中,该方法包括:根据缓存器的缓存行的尺寸和宏块的尺寸,确定缓存行能够容纳的宏块的数量,其中,宏块是对数据划分的基本单位;确定数据所需的存储空间的大小;根据存储空间的大小,确定数据对应的缓存行的起始地址;根据数据在缓存行的起始地址,以及缓存行可容纳下的宏块的数量,对数据进行编码和解码处理。本发明解决了相关技术中编码处理方法,重复填充编码的缓存行,导致缓存数据变脏,利用率较低的技术问题。

Description

数据处理方法及装置
技术领域
本发明涉及数据处理领域,具体而言,涉及一种数据处理方法及装置。
背景技术
现有图像编解码算法,通常要将图像分解为宏块(macro block),之后再以宏块为单位进行相应的编码算法。当在通用处理器上实现相应的图像编码算法时,考虑到目前通用处理器大多支持多个核心,一般需要通过开启多线程/多进程的方式,并将线程/进程调度到不同的处理器核心。
现有设计中,受硬件设计复杂度及成本的限制,高速缓冲存储器(cache)都是以多路组相连的方式使用和管理的,即,高速缓冲存储器分成多个组,每个组分成多个缓存行(cache line),缓存行是高速缓冲存储器的最小单位,缓存行尺寸是指缓存行的大小,也是高速缓冲存储器的基本单位。即使只读取一个字节数据,高速缓冲存储器也会加载整个缓存行。通常,缓存行的大小为64字节或128字节,X86和ARM体系的处理器,通常一级缓存行大小为64字节。
现有技术中按照宏块来进行线程的划分并不合理,以16×16划分宏块为例,当加载第一个数据时,假设该数据对应到位于某缓存行第一个字节位置,则该缓存行被连续的64字节填充,而对于当前线程,只有前16字节是有用的,紧接着的(64-16=48)字节分属于随后的三个宏块,换句话说,运行在不同处理器核心中的线程处理不同的宏块,但是,根据缓存行的划分,每个核心的缓存行都对应到了相同的地址上,这种情况下,当一个核心写入数据时,会导致整个缓存行的数据变脏,也就需要整个缓存行刷新到内存,对于别的核心来说虽然修改的数据是自己不关心的部分,但是整个缓存行里有被修改的部分,就必须重新填充,否则别的核心在写数据时,会把前一个核心写入的数据冲掉。极端情况下,如果随后的三个宏块正在另外的三个处理器核中进行处理,因为每个处理器核有自己的一级高速缓冲存储器,则会导致各核心的缓存行需要重复填充四次才能满足不同线程/进程的需要,考虑更加恶劣的场景,当程序需要写入数据时,会频繁的引起高速缓冲存储器数据变脏,而导致其他核心的缓存行重新填充,极大的降低了高速缓冲存储器的利用率。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种数据处理方法及装置,以至少解决相关技术中编码处理方法,重复填充编码的缓存行,导致缓存数据变脏,利用率较低的技术问题。
根据本发明实施例的一个方面,提供了一种数据处理方法,包括:根据缓存器的缓存行的尺寸和数据划分的宏块的尺寸,确定所述缓存行能够容纳的所述宏块的数量,其中,所述宏块是对所述数据进行划分后进行处理的基本单元;确定所述数据所需的存储空间的大小;根据所述存储空间的大小,确定所述数据对应的缓存行的起始地址;根据所述数据在所述缓存行的起始地址,以及所述缓存行能够容纳的所述宏块的数量,对所述数据进行编码和解码处理。
可选的,确定所述数据所需的存储空间的大小包括:确定所述数据的数据量;确定所述数据的数据量存储在所述缓存器的所述缓存行中所需的缝隙空间;根据所述数据的数据量和所述缝隙空间的大小确定所述数据所需的存储空间的大小。
可选的,根据所述存储空间的大小,确定所述数据对应的缓存行的起始地址包括:确定所述数据在所述缓存行的预设地址;从所述预设地址开始遍历整个所述缓存行的位置,作为起始位置,计算每个起始位置缓存的所述数据进行交换操作的所用时间;确定最短的所述所用时间对应的所述缓存行的起始位置为所述缓存行的起始地址。
可选的,计算每个起始位置缓存的所述数据进行交换操作的所用时间包括:获取预设的起始位置,并记起始时间;对所述数据进行交换操作,完成交换操作记为结束时间,其中,对所述数据进行交换操作包括:遍历所述起始位置至所述起始位置之后所述缓存行尺寸的一半的前一个位置,与当前位置之后所述缓存行尺寸的一半的位置进行交换,直至所述缓存行尺寸的一半的前一个位置与所述缓存行的最后一个位置交换完毕,记结束时间;根据所述起始时间和所述结束时间确定所述交换操作所用时间。
可选的,根据所述数据在所述缓存行的起始地址,以及所述缓存行能够容纳的所述宏块的数量,对所述数据进行编码和解码处理包括:根据所述缓存行能够容纳的所述宏块的数量,对所述缓存行进行分线程任务划分;根据所述分线程任务,对所述数据进行编码和解码处理。
可选的,所述数据为图像数据,确定所述数据所需的存储空间的大小包括:通过计算公式,确定所述图像数据所需的存储空间的大小,所述计算公式如下:S=W″×H′+lcls,式中,S为所述图像数据所需的存储空间,lcls为所述缓存行的尺寸;其中,/>W为所述图像的宽度,lbw为所述宏块的尺寸;/>其中,H为所述图像的高度。
可选的,根据所述存储空间的大小,确定所述数据对应的缓存行的起始地址之后,还包括:在第一缓存行中从所述起始地址开始存放所述图像的第一行数据,在第二缓存行中从所述起始地址之后W″的位置开始存放所述图像的第二行数据,在第N缓存行中从第N-1缓存行中的起始位置之后W″的位置,开始存放所述图像的第N行数据,其中,所述图像数据由所述第一行数据,第二行数据,至所述第N行数据组成。
根据本发明实施例的另一方面,还提供了一种数据处理装置,包括:第一确定模块,用于根据缓存器的缓存行的尺寸和数据划分的宏块的尺寸,确定所述缓存行能够容纳的所述宏块的数量,其中,所述宏块是对所述数据进行划分后进行处理的基本单元;第二确定模块,用于确定所述数据所需的存储空间的大小;第三确定模块,用于根据所述存储空间的大小,确定所述数据对应的缓存行的起始地址;处理模块,用于根据所述数据在所述缓存行的起始地址,以及所述缓存行能够容纳的所述宏块的数量,对所述数据进行编码和解码处理。
根据本发明实施例的另一方面,还提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述中任意一项所述的数据处理方法。
根据本发明实施例的另一方面,还提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述中任意一项所述的数据处理方法。
在本发明实施例中,采用根据缓存器的缓存行的尺寸和数据划分的宏块的尺寸,确定缓存行能够容纳的宏块的数量,其中,宏块是对数据进行划分后进行处理的基本单元;确定数据所需的存储空间的大小;根据存储空间的大小,确定数据对应的缓存行的起始地址;根据数据在缓存行的起始地址,以及缓存行能够容纳的宏块的数量,对数据进行编码和解码处理的方式,通过缓存行包括的宏块数量和数据所需的缓存空间大小,确定数据在缓存行的起始地址,根据该起始地址对数据进行编码和解码处理,达到了使数据对齐缓存行中的宏块进行编码和解码处理,尽可能读写完整的宏块数据的目的,从而实现了避免缓存数据变脏,提高缓存行的利用率的技术效果,进而解决了相关技术中编码处理方法,重复填充编码的缓存行,导致缓存数据变脏,利用率较低的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种数据处理方法的流程图;
图2是根据本发明实施例的一种数据处理装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例,提供了一种数据处理方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的一种数据处理方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,根据缓存器的缓存行的尺寸和数据划分的宏块的尺寸,确定缓存行能够容纳的宏块的数量,其中,宏块是对数据进行划分后进行处理的基本单元;
步骤S104,确定数据所需的存储空间的大小;
步骤S106,根据存储空间的大小,确定数据对应的缓存行的起始地址;
步骤S108,根据数据在缓存行的起始地址,以及缓存行能够容纳的宏块的数量,对数据进行编码和解码处理。
通过上述步骤,采用根据缓存器的缓存行的尺寸和数据划分的宏块的尺寸,确定缓存行能够容纳的宏块的数量,其中,宏块是对数据进行划分后进行处理的基本单元;确定数据所需的存储空间的大小;根据存储空间的大小,确定数据对应的缓存行的起始地址;根据数据在缓存行的起始地址,以及缓存行能够容纳的宏块的数量,对数据进行编码和解码处理的方式,通过缓存行包括的宏块数量和数据所需的缓存空间大小,确定数据在缓存行的起始地址,根据该起始地址对数据进行编码和解码处理,达到了使数据对齐缓存行中的宏块进行编码和解码处理,尽可能读写完整的宏块数据的目的,从而实现了避免缓存数据变脏,提高缓存行的利用率的技术效果,进而解决了相关技术中编码处理方法,重复填充编码的缓存行,导致缓存数据变脏,利用率较低的技术问题。
上述缓存行的尺寸可以为上述缓存行可以存储的数据量大小,上述宏块的尺寸可以为宏块一行包含的像素个数的大小,也即是宏块宽度。根据缓存器的缓存行的尺寸和宏块的宽度,确定缓存行能够容纳的宏块的数量;可以将缓存行的尺寸除以宏块的宽度,将最后得到的数据向下取整,例如,缓存行的尺寸除以宏块的尺寸,最终结果为3.2,则取3,若为4.9,则取4,也即是确定缓存行中可以完整包括的宏块的数量。在存储时只在缓存行中完整的宏块中的进行数据存储,从而保证了每个数据的的起始地址都是在完整的宏块中的起始地址,在编码和解码时可以快速找到,从而给人提高了数据的编码和解码的速度。
在对不同的数据进行编码和解码的处理过程中,由于数据量不同,占用的缓存行也不同,在缓存器中存储的数据不同,对该数据的缓存地址也不同。因此需要先确定数据所需的存储空间大小,也即是该数据进行缓存所占用的缓存行的数据量的大小。
根据存储空间的大小确定数据对应的缓存行的起始地址,可以是根据默认地址进行确定,上述默认地址可以是上述缓存行具有的用户起始缓存的默认地址,也可以是缓存器当前存储数据的默认地址,上述默认地址可以为预设值,也可以是缓存器根据存储情况输出的可以存储的默认地址。根据该起始地址,以及存储空间的大小,对该默认地址进行调整,以使数据的起始地址为宏块的起始地址。
根据起始地址,以及缓存行包括的宏块数量分配缓存行和宏块,对数据进行编码和解码处理,从而避免数据在进行缓存时出现失误和遗漏的情况,使数据对齐缓存行中的宏块进行编码和解码处理,尽可能读写完整的宏块数据的目的,从而实现了避免缓存数据变脏,提高缓存行的利用率的技术效果,进而解决了相关技术中编码处理方法,重复填充编码的缓存行,导致缓存数据变脏,利用率较低的技术问题。
需要说明的是,缓存行可以为多个,一个缓存行可以容纳一个或多个宏块,上述起始地址可以在任一缓存行的任意位置。
可选的,确定数据所需的存储空间的大小包括:确定数据的数据量;确定数据的数据量存储在缓存器的缓存行中所需的缝隙空间;根据数据的数据量和缝隙空间的大小确定数据所需的存储空间的大小。
上述数据在进行缓存时,除了存储本身的数据,在换缓存行中由于缓存行的尺寸不同,在每个缓存行中存储的数据也不同,导致需要一定的缝隙空间,也是数据进行缓存所必须的,因此根据该数据的数据量确定在缓存行的缝隙空间,确定缝隙空间的代销和数据的数据量大小之和为数据所需的存储空间的大小,从而有效避免只考虑数据量大小不考虑实际的存储情况,导致数据无法存储或者数据遗失的情况。
可选的,根据存储空间的大小,确定数据对应的缓存行的起始地址包括:确定数据在缓存行的预设地址;从预设地址开始遍历整个缓存行的位置,作为起始位置,计算每个起始位置缓存的数据进行交换操作的所用时间;确定最短的所用时间对应的缓存行的起始位置为缓存行的起始地址。
由于缓存行中的宏块是虚拟的编程不可见,因此需要遍历缓存行的位置,作为起始地址,计算在该起始地址的数据的交换操作的所用时间,由于起始地址不是宏块的起始地址的情况下,需要先进行寻址,从而降低交换操作的速度,使交换操作的时间更长,因此确定最短的所用时间对应的缓存行的位置为缓存行的起始地址。上述交换操作还可以是其他的可以确定缓存和读取的速度的操作。
可选的,计算每个起始位置缓存的所述数据进行交换操作的所用时间包括:获取预设的起始位置,并记起始时间;对数据进行交换操作,完成交换操作记为结束时间,其中,对数据进行交换操作包括:遍历起始位置至起始位置之后缓存行尺寸的一半的前一个位置,与当前位置之后缓存行尺寸的一半的位置进行交换,直至缓存行尺寸的一半的前一个位置与缓存行的最后一个位置交换完毕,记结束时间;根据起始时间和结束时间确定交换操作所用时间。
上述交换操作需要对数据的每一个地址进行读取,因此,可以最大程度上检测数据的缓存操作的编码写入和解码读出的速度,从而更全面的对起始地址进行确定,以确定缓存操作最快的地址,作为起始地址,最大程度上提高了数据缓存的编码和解码效率。
可选的,根据数据在缓存行的起始地址,以及缓存行能够容纳的宏块的数量,对数据进行编码和解码处理包括:根据缓存行能够容纳的宏块的数量,对缓存行进行分线程任务划分;根据分线程任务,对数据进行编码和解码处理。
由于缓存行为多个,不同的缓存行可根据分线程任务同时进行缓存,进一步提高了数据缓存的编码和解码处理的效率。
上述数据可以为文本数据,字节,数据块等多种型数据形式,在本实施例中,主要针对图像数据,可选的,数据为图像数据,确定数据所需的存储空间的大小包括:通过计算公式,确定图像数据所需的存储空间的大小,计算公式如下:
S=W″×H′+lcls
式中,S为图像数据所需的存储空间,lcls为缓存行的尺寸;
其中,/>W为图像的宽度,lbw为宏块的尺寸;/>其中,H为图像的高度。
上述符号为向上取整,例如,符号内计算结果为3.2,则取4,计算结果为4.9,则取5,以确定存储该数据所需的宏块数量,有效避免数据缓存出现数据遗失的情况。
通过上述公式,可以有效计算包括缝隙空间和数据量的图像数据所需的存储空间,进而根据图像数据所需的存储空间,确定数据对应的缓存行的起始地址,根据数据在缓存行的起始地址,以及缓存行包括的宏块的数量,对数据进行编码和解码处理。达到了使数据对齐缓存行中的宏块进行编码和解码处理,尽可能读写完整的宏块数据的目的,从而实现了避免缓存数据变脏,提高缓存行的利用率的技术效果,进而解决了相关技术中编码处理方法,重复填充编码的缓存行,导致缓存数据变脏,利用率较低的技术问题。
可选的,根据存储空间的大小,确定数据对应的缓存行的起始地址之后,还包括:在第一缓存行中从起始地址开始存放图像的第一行数据,在第二缓存行中从起始地址之后W″的位置开始存放图像的第二行数据,在第N缓存行中从第N-1缓存行中的起始位置之后W″的位置,开始存放图像的第N行数据,其中,图像数据由第一行数据,第二行数据,至第N行数据组成。
在具体存放过程中,每个缓存行之间都需要一个开始缓存的地址,对每一个缓存行都从前一个缓存行的起始地址之后W″的位置开始存放图像,保证了图像数据在每一个缓存行都能后对齐宏块的起始地址,尽可能读写完整的宏块数据,从而避免了缓存数据变脏,提高缓存行的利用率。
需要说明的是,本实施例还提供了一种可选的实施方式,下面对该实施方式进行详细说明。
现有图像编解码算法,通常要将图像分解为8×8、16×16、32×32……等的宏块(macro block),之后再以宏块为单位进行相应的编码算法,以16:9 1080p图像为例,原始图像的分辨率为1920×1080,按照16×16划分宏块,结果为:1920/16=120;1080/16=67.5=68,即全图划分为120×68个宏块,编码算法以宏块为单位对图像进行处理。
当在通用处理器上实现相应的图像编码算法时,考虑到目前通用处理器大多支持多个核心,一般需要通过开启多线程/多进程的方式,并将线程/进程调度到不同的处理器核心,以提高处理器利用率,加快编码速度。
因为编码的最小单位一般是宏块,因此,根据宏块分配线程/进程是比较常用的做法,每个线程/进程分配若干个宏块,处理结束后进行线程/进程之间的同步,完成整幅画面的编码。
然而,上述划分办法,并未考虑到处理器高速缓冲存储器的充分利用。
现代处理器为了解决内存访问速度远远跟不上处理器主频提升的问题,在处理器与内存访问总线之间,增加了一级、二级甚至三级缓存,其中一级缓存靠近处理器核心,访问速度最快,但是容量最小,二级、三级缓存容量增加,速度下降,但即使是三级缓存,访问速度也远大于随机存取存储器RAM(Random Access Memory)。
本实施方式根据处理器一级高速缓冲存储器的管理特征,提出了不同的线程划分策略,避免过多的高速缓冲存储器冲突,从而提高高速缓冲存储器命中率,减少高速缓冲存储器填充次数,以加快编码速度。
本实施方式针对现有技术中基于宏块进行线程划分会降低高速缓冲存储器利用率的问题,提供了一种图像编码中新的多线程实现方式,其主要实现是:在图像编码中按照缓存行的尺寸分配内存来划分图像编解码中的的多线程,该方法能够避免各个核心中的线程填充相同地址的缓存行,从而杜绝了线程处理中各个处理器核心中的缓存行需要重复填充的问题,提高了高速缓冲存储器利用率。
现有设计中,受硬件设计复杂度及成本的限制,高速缓冲存储器(cache)都是以多路组相连的方式使用和管理的,即,高速缓冲存储器分成多个组,每个组分成多个缓存行(cache line),缓存行是高速缓冲存储器的最小单位,缓存行的尺寸是指缓存行的大小,也是高速缓冲存储器的基本单位。即使只读取一个字节数据,高速缓冲存储器也会加载整个缓存行。通常,缓存行的大小为64字节或128字节,X86和ARM体系的处理器,通常一级缓存行大小为64字节。
根据以上分析可知,现有技术中按照宏块来进行线程的划分并不合理,以16×16划分宏块为例,当加载第一个数据时,假设该数据对应到位于某缓存行第一个字节位置,则该缓存行会被连续的64字节填充,而对于当前线程,只有前16字节是有用的,紧接着的(64-16=48)字节分属于随后的三个宏块,换句话说,运行在不同处理器核心中的线程处理不同的宏块,但是,根据缓存行的划分,每个核心的缓存行都对应到了相同的地址上,这种情况下,当一个核心写入数据时,会导致整个缓存行的数据变脏,也就需要整个缓存行刷新到内存,对于别的核心来说虽然修改的数据是自己不关心的部分,但是整个缓存行里有被修改的部分,就必须重新填充,否则别的核心在写数据时,会把前一个核心写入的数据冲掉。极端情况下,如果随后的三个宏块正在另外的三个处理器核中进行处理,因为每个处理器核有自己的一级高速缓冲存储器,则会导致各核心的缓存行需要重复填充四次才能满足不同线程/进程的需要,考虑更加恶劣的场景,当程序需要写入数据时,会频繁的引起高速缓冲存储器数据变脏,而导致其他核心的缓存行重新填充,极大的降低了高速缓冲存储器的利用率。
有鉴于此,本实施方式提供了一种图像编码中的多线程实现方式,其主要思想是:在图像编码中按照缓存行的尺寸分配内存来划分图像编解码中的多线程。但是,由于在软件编程中,高速缓冲存储器针对程序来说是透明的,因此,无法通过软件直接控制高速缓冲存储器的使用,为此,本实施方式中需要根据高速缓冲存储器的特征,通过分析计算推导出缓存行的对齐地址,争取能够按照缓存行对齐的地址分配图像存储空间,进而使宏块对齐缓存行,在一次高速缓冲存储器填充时,尽可能多的读入完整的宏块一行数据,这样就可以减少缓存失误miss。
基于上述考虑,本实施方式所提供的图像编码中的线程划分方法,主要包括以下步骤:
步骤101、确定一级高速缓冲存储器的大小,最重要的是确定缓存行的大小,以及每组有多少个缓存行,这些参数一般可以通过处理器的专用寄存器读出。
步骤102、根据一级缓存行的大小,计算可以一次放入缓存行中的宏块个数(仅宏块的一行数据),例如,当缓存行的大小为64字节,按照16×16划分的宏块一行为16字节,理想条件下,一个缓存行可以刚好纳入4个宏块的一行。
步骤103、计算图像所需分配存储空间,为调整图像每行像素的起始地址能够对齐缓存行,需要增加对齐的缝隙空间,计算方法如下(除法均为整除,也即是÷的结果向上取整):
1)设图像宽度为W,高度H,记缓存行的大小为cls,记宏块宽度为bw;
2)W’=(W+bw-1)÷bw×bw;W”=(W’+cls-1)÷cls×cls;
3)H’=(H+bw-1)÷bw×bw;
4)S=W”×H’+cls;
S即为增加了对齐空隙后的整帧图像分配存储空间。
步骤104、分配S字节空间,设起始地址为F,探测所分配存储空间,找出对应缓存行的起始地址。
1)F’=F+n(n=0…cls-1),记起始时间tn0;
2)读取F’,与F’+cls÷2交换,读取F’+1,与F’+1+cls÷2交换,……读取F’+cls÷2-1,与F’+cls-1交换;
3)F’=F’+cls;
4)重复第2)、3)步,直至S字节空间全部处理完成;
5)记结束时间tn1;
6)tn=tn1-tn0;
7)重复第1)~6)步,分别得出t0,t1,……t(cls-1),比较所得的t,取t最小时的值为n,即为对齐高速缓冲存储器line的偏移量;
步骤105、从F+n起始地址存放图像第一行数据,第二行图像数据从F+n+W”开始,以此类推,每一行图像都从上一行第一个像素偏移W”地址开始存放。
步骤106、根据步骤102所计算出的一个缓存行所能包含的宏块个数,按照该数量划分线程/进程任务,进程以缓存行为单位进行编解码运算。
图2是根据本发明实施例的一种数据处理装置的示意图,如图2所示,根据本发明实施例的另一方面,还提供了一种数据处理装置,包括:第一确定模块22,第二确定模块24,第三确定模块26和处理模块28,下面对该装置进行详细说明。
第一确定模块22,用于根据缓存器的缓存行的尺寸和数据划分的宏块的尺寸,确定缓存行能够容纳的宏块的数量,其中,宏块是对数据进行划分后进行处理的基本单元;第二确定模块24,与上述第一确定模块22相连,用于确定数据所需的存储空间的大小;第三确定模块26,与上述第二确定模块24相连,用于根据存储空间的大小,确定数据对应的缓存行的起始地址;处理模块28,与上述第三确定模块26相连,用于根据数据在缓存行的起始地址,以及缓存行能够容纳的宏块的数量,对数据进行编码和解码处理。
通过上述装置,采用第一确定模块22根据缓存器的缓存行的尺寸和数据划分的宏块的尺寸,确定缓存行能够容纳的宏块的数量,其中,宏块是对数据进行划分后进行处理的基本单元;第二确定模块24确定数据所需的存储空间的大小;第三确定模块26根据存储空间的大小,确定数据对应的缓存行的起始地址;处理模块28根据数据在缓存行的起始地址,以及缓存行能够容纳的宏块的数量,对数据进行编码和解码处理的方式,通过缓存行包括的宏块数量和数据所需的缓存空间大小,确定数据在缓存行的起始地址,根据该起始地址对数据进行编码和解码处理,达到了使数据对齐缓存行中的宏块进行编码和解码处理,尽可能读写完整的宏块数据的目的,从而实现了避免缓存数据变脏,提高缓存行的利用率的技术效果,进而解决了相关技术中编码处理方法,重复填充编码的缓存行,导致缓存数据变脏,利用率较低的技术问题。
根据本发明实施例的另一方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述中任意一项的数据处理方法。
根据本发明实施例的另一方面,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述中任意一项的数据处理方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (9)

1.一种数据处理方法,其特征在于,包括:
根据缓存器的缓存行的尺寸和数据划分的宏块的尺寸,确定所述缓存行能够容纳的所述宏块的数量,其中,所述宏块是对所述数据进行划分后进行处理的基本单元;
确定所述数据所需的存储空间的大小;
根据所述存储空间的大小,确定所述数据对应的缓存行的起始地址,其中,在所述数据为图像数据的情况下,根据所述存储空间的大小,确定所述数据对应的缓存行的起始地址之后,还包括:在第一缓存行中从所述起始地址开始存放所述图像的第一行数据,在第二缓存行中从所述起始地址之后W″的位置开始存放所述图像的第二行数据,在第N缓存行中从第N-1缓存行中的起始位置之后W″的位置,开始存放所述图像的第N行数据,其中,所述图像数据由所述第一行数据,第二行数据,至所述第N行数据组成,所述W″由所述图像的宽度、所述宏块的尺寸和所述缓存行的尺寸确定;
根据所述数据在所述缓存行的起始地址,以及所述缓存行能够容纳的所述宏块的数量,对所述数据进行编码和解码处理。
2.根据权利要求1所述的方法,其特征在于,确定所述数据所需的存储空间的大小包括:
确定所述数据的数据量;
确定所述数据的数据量存储在所述缓存器的所述缓存行中所需的缝隙空间;
根据所述数据的数据量和所述缝隙空间的大小确定所述数据所需的存储空间的大小。
3.根据权利要求2所述的方法,其特征在于,根据所述存储空间的大小,确定所述数据对应的缓存行的起始地址包括:
确定所述数据在所述缓存行的预设地址;
从所述预设地址开始遍历整个所述缓存行的位置,作为起始位置,计算每个起始位置缓存的所述数据进行交换操作的所用时间;
确定最短的所述所用时间对应的所述缓存行的起始位置为所述缓存行的起始地址。
4.根据权利要求3所述的方法,其特征在于,计算每个起始位置缓存的所述数据进行交换操作的所用时间包括:
获取预设的起始位置,并记起始时间;
对所述数据进行交换操作,完成交换操作记为结束时间,其中,对所述数据进行交换操作包括:遍历所述起始位置至所述起始位置之后所述缓存行尺寸的一半的前一个位置,与当前位置之后所述缓存行尺寸的一半的位置进行交换,直至所述缓存行尺寸的一半的前一个位置与所述缓存行的最后一个位置交换完毕,记结束时间;
根据所述起始时间和所述结束时间确定所述交换操作所用时间。
5.根据权利要求1所述的方法,其特征在于,根据所述数据在所述缓存行的起始地址,以及所述缓存行能够容纳的所述宏块的数量,对所述数据进行编码和解码处理包括:
根据所述缓存行能够容纳的所述宏块的数量,对所述缓存行进行分线程任务划分;
根据所述分线程任务,对所述数据进行编码和解码处理。
6.根据权利要求1所述的方法,其特征在于,所述数据为图像数据,确定所述数据所需的存储空间的大小包括:
通过计算公式,确定所述图像数据所需的存储空间的大小,所述计算公式如下:
S=W″×H′+lcls
式中,S为所述图像数据所需的存储空间,lcls为所述缓存行的尺寸;
其中,/>W为所述图像的宽度,lbw为所述宏块的尺寸;
其中,H为所述图像的高度。
7.一种数据处理装置,其特征在于,包括:
第一确定模块,用于根据缓存器的缓存行的尺寸和数据划分的宏块的尺寸,确定所述缓存行能够容纳的所述宏块的数量,其中,所述宏块是对所述数据进行划分后进行处理的基本单元;
第二确定模块,用于确定所述数据所需的存储空间的大小;
第三确定模块,用于根据所述存储空间的大小,确定所述数据对应的缓存行的起始地址,其中,在所述数据为图像数据的情况下,根据所述存储空间的大小,确定所述数据对应的缓存行的起始地址之后,还包括:在第一缓存行中从所述起始地址开始存放所述图像的第一行数据,在第二缓存行中从所述起始地址之后W″的位置开始存放所述图像的第二行数据,在第N缓存行中从第N-1缓存行中的起始位置之后W″的位置,开始存放所述图像的第N行数据,其中,所述图像数据由所述第一行数据,第二行数据,至所述第N行数据组成,所述W″由所述图像的宽度、所述宏块的尺寸和所述缓存行的尺寸确定;
处理模块,用于根据所述数据在所述缓存行的起始地址,以及所述缓存行能够容纳的所述宏块的数量,对所述数据进行编码和解码处理。
8.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至6中任意一项所述的数据处理方法。
9.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至6中任意一项所述的数据处理方法。
CN202010340799.4A 2020-04-26 2020-04-26 数据处理方法及装置 Active CN111538677B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010340799.4A CN111538677B (zh) 2020-04-26 2020-04-26 数据处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010340799.4A CN111538677B (zh) 2020-04-26 2020-04-26 数据处理方法及装置

Publications (2)

Publication Number Publication Date
CN111538677A CN111538677A (zh) 2020-08-14
CN111538677B true CN111538677B (zh) 2023-09-05

Family

ID=71979043

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010340799.4A Active CN111538677B (zh) 2020-04-26 2020-04-26 数据处理方法及装置

Country Status (1)

Country Link
CN (1) CN111538677B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113741976B (zh) * 2021-08-25 2024-06-11 武汉大学 缓存颠簸消除方法、装置、设备及存储介质
CN116418994A (zh) * 2021-12-29 2023-07-11 华为技术有限公司 一种图像编码方法以及装置

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1645928A (zh) * 2005-02-03 2005-07-27 清华大学 用于压缩视频信号解码的图像存储方法
CN101826056A (zh) * 2009-02-20 2010-09-08 Arm有限公司 数据处理设备和方法
CN102207919A (zh) * 2010-03-30 2011-10-05 国际商业机器公司 加速数据传输的处理单元、芯片、计算设备和方法
CN103533366A (zh) * 2012-07-03 2014-01-22 展讯通信(上海)有限公司 用于视频运动补偿的缓存方法与装置
CN103885886A (zh) * 2012-12-20 2014-06-25 华为技术有限公司 一种全局数据的地址分配方法及相关装置
CN105376583A (zh) * 2015-04-07 2016-03-02 佛山世寰智能科技有限公司 一种按行交错划分任务和数据的多核并行视频解码方法
CN105491377A (zh) * 2015-12-15 2016-04-13 华中科技大学 一种计算复杂度感知的视频解码宏块级并行调度方法
CN108418589A (zh) * 2018-03-05 2018-08-17 华中科技大学 一种单层非易失存储器的动态编解码方法
CN109799897A (zh) * 2019-01-29 2019-05-24 吉林大学 一种减少gpu二级缓存能耗的控制方法及装置
CN111052096A (zh) * 2017-08-30 2020-04-21 美光科技公司 缓存行数据

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4180547B2 (ja) * 2004-07-27 2008-11-12 富士通株式会社 動画像データ復号装置、および復号プログラム

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1645928A (zh) * 2005-02-03 2005-07-27 清华大学 用于压缩视频信号解码的图像存储方法
CN101826056A (zh) * 2009-02-20 2010-09-08 Arm有限公司 数据处理设备和方法
CN102207919A (zh) * 2010-03-30 2011-10-05 国际商业机器公司 加速数据传输的处理单元、芯片、计算设备和方法
CN103533366A (zh) * 2012-07-03 2014-01-22 展讯通信(上海)有限公司 用于视频运动补偿的缓存方法与装置
CN103885886A (zh) * 2012-12-20 2014-06-25 华为技术有限公司 一种全局数据的地址分配方法及相关装置
CN105376583A (zh) * 2015-04-07 2016-03-02 佛山世寰智能科技有限公司 一种按行交错划分任务和数据的多核并行视频解码方法
CN105491377A (zh) * 2015-12-15 2016-04-13 华中科技大学 一种计算复杂度感知的视频解码宏块级并行调度方法
CN111052096A (zh) * 2017-08-30 2020-04-21 美光科技公司 缓存行数据
CN108418589A (zh) * 2018-03-05 2018-08-17 华中科技大学 一种单层非易失存储器的动态编解码方法
CN109799897A (zh) * 2019-01-29 2019-05-24 吉林大学 一种减少gpu二级缓存能耗的控制方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Adapting cache line size to application behavior;Alexander V. Veidenbaum;《Proceedings of the 13th international conference on Supercomputing》;全文 *

Also Published As

Publication number Publication date
CN111538677A (zh) 2020-08-14

Similar Documents

Publication Publication Date Title
KR100668302B1 (ko) 비디오 디코더/엔코더에서의 메모리 맵핑 장치 및 그 방법
CN111538677B (zh) 数据处理方法及装置
TWI544751B (zh) 重新製作資料的格式以降低視訊編碼器與緩衝器之間的頻寬
CN101309405B (zh) 参考数据载入的方法及装置
US20060182181A1 (en) Apparatus and method for controlling data write/read in image processing system
US20070076511A1 (en) Method and apparatus for mapping memory
US20090132759A1 (en) Information processing apparatus and method for controlling information processing apparatus
US9918098B2 (en) Memory management of motion vectors in high efficiency video coding motion vector prediction
US7515761B2 (en) Encoding device and method
CN103003804B (zh) 存储器管理装置、图像处理装置及集成电路
US10198359B2 (en) Systems and methods for addressing a cache with split-indexes
CN101365136A (zh) 帧内预测的方法及装置
CN107801044B (zh) 后向适应装置与相关方法
CN100474929C (zh) 一种运动补偿数据载入装置及方法
CN103634604A (zh) 一种面向多核dsp运动估计的数据预取方法
TW317619B (zh)
CN105681815A (zh) 提高去块效应滤波模块重构数据存储速度的方法
US20090168882A1 (en) Speculative motion prediction cache
CN108897618A (zh) 一种异构内存架构下基于任务感知的资源分配方法
CN101715127B (zh) 一种环路滤波方法和环路滤波系统
KR100891116B1 (ko) 대역폭 인식 움직임 보상 장치 및 그 방법
CN101662684A (zh) 用于视频图像编解码的数据存储的方法及装置
KR100846791B1 (ko) 비디오 데이터 저장 방법 및 장치
US20150229921A1 (en) Intra searches using inaccurate neighboring pixel data
US20180108331A1 (en) Merged access units in frame buffer compression

Legal Events

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