CN117714711A - 解码方法、解码系统、电子设备及可读存储介质 - Google Patents
解码方法、解码系统、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN117714711A CN117714711A CN202410160588.0A CN202410160588A CN117714711A CN 117714711 A CN117714711 A CN 117714711A CN 202410160588 A CN202410160588 A CN 202410160588A CN 117714711 A CN117714711 A CN 117714711A
- Authority
- CN
- China
- Prior art keywords
- command
- target data
- decoding
- memory
- register
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 84
- 238000010586 diagram Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 102100035964 Gastrokine-2 Human genes 0.000 description 1
- 101001075215 Homo sapiens Gastrokine-2 Proteins 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本公开提供一种解码方法、解码系统、电子设备及可读存储介质,主机端连续地针对每一份目标数据执行多个第一操作;其中,针对目标数据执行的多个第一操作包括:将目标数据写入解码端的第一内存;将目标数据对应的目标命令写入解码端的第一内存,使解码端从第一内存中读取目标命令并执行目标命令,从而对目标数据的解码。本公开中,主机端连续不断地将每一份待解码的目标数据及其对应的目标命令写入解码端的第一内存,使解码端可以连续不断地从第一内存中读取目标命令并执行目标命令,从而实现对每一份目标数据的连续解码,主机端不需要等待解码端完成解码操作,解码端也不需要等待主机端下发配置信息,因此具有更高的解码效率。
Description
技术领域
本公开涉及数据处理技术领域,尤其涉及一种解码方法、解码系统、电子设备及可读存储介质。
背景技术
相关技术中,主机端在利用解码端对目标数据(比如待解码的视频帧)进行解码时,主机端需要先准备待解码的当前视频帧和解码端的硬件解码器的寄存器配置信息;然后主机端将当前视频帧下发给解码端,并利用寄存器配置信息对解码端的硬件解码器的寄存器进行配置;接着硬件解码器基于寄存器配置信息对当前视频帧进行解码,同时主机端需要等待硬件解码器完成解码操作;当硬件解码器完成当前视频帧的解码操作后,主机端接着针对下一个视频帧执行相同流程,从而实现视频帧的依次解码。
然而在上述解码方式中,主机端并没有充分利用解码端的解码能力,导致解码效率偏低。
发明内容
本公开的目的是提供一种解码方法、解码系统、电子设备及可读存储介质,旨在提升解码效率。
根据本公开的第一方面,提供一种解码方法,所述方法应用于主机端,所述方法包括:
针对多份目标数据中的每一份目标数据执行多个第一操作后,针对下一份目标数据执行所述多个第一操作,直到针对所有目标数据完成所述多个第一操作;其中,针对每一份目标数据执行的多个第一操作包括:
将当前目标数据写入解码端的第一内存;
将所述当前目标数据对应的目标命令写入所述第一内存,使所述解码端从所述第一内存中读取所述目标命令并执行所述目标命令,所述目标命令是所述解码端在对所述当前目标数据进行解码时所需执行的命令。
本公开一种可行的实现方式中,所述将所述当前目标数据对应的目标命令写入所述第一内存,包括:
将所述当前目标数据对应的多个目标命令组成命令包,并将所述命令包写入所述第一内存;所述多个目标命令中包括跳转命令,所述跳转命令用于解码端根据该跳转命令携带的存储地址跳转至另一个命令包,所述跳转命令携带的存储地址是下一份目标数据的命令包在所述第一内存中的存储地址。
本公开一种可行的实现方式中,针对当前目标数据执行的多个第一操作还包括:
根据上一份目标数据的命令包在所述第一内存中的存储地址,在所述第一内存中查找所述上一份目标数据的命令包,并将所述当前目标数据的命令包在所述第一内存中的存储地址,写入查找到的命令包中的跳转命令。
本公开一种可行的实现方式中,所述多个目标命令中还包括写寄存器命令、等待命令、中断清除命令及读寄存器命令;所述写寄存器命令、等待命令、中断清除命令、读寄存器命令及跳转命令按照顺序被组成所述命令包;
其中,所述写寄存器命令用于所述解码端的处理单元对解码器的寄存器进行配置;所述等待命令用于所述处理单元等待所述解码器完成对一份目标数据的解码操作;所述中断清除命令用于所述处理单元将解码器的中断消息发送给所述主机端;所述读寄存器命令用于所述处理单元将结果寄存器中的解码结果读取至所述第一内存;所述跳转命令用于所述处理单元跳转至下一份目标数据的命令包。
本公开一种可行的实现方式中,多份目标数据中的最后一份目标数据的命令包中包括结束命令。
本公开一种可行的实现方式中,针对当前目标数据执行的多个第一操作还包括:
在将所述当前目标数据的命令包写入所述第一内存后,将所述解码端的第一寄存器的第一计数值加1,以使得所述解码端根据所述第一寄存器的第一计数值和第二寄存器的第二计数值进行解码使能;所述第二寄存器是所述解码端的寄存器,所述第二计数值用于表示所述解码端已经处理的命令包数量。
本公开一种可行的实现方式中,对每一份目标数据执行的多个第一操作属于第一线程内的操作;所述针对多份目标数据中的每一份目标数据执行多个第一操作后,针对下一份目标数据执行所述多个第一操作,直到针对所有目标数据完成所述多个第一操作,包括:
通过执行所述第一线程,从而针对每一份目标数据执行所述多个第一操作,并在针对每一份目标数据执行所述多个第一操作后,针对下一份目标数据执行所述多个第一操作,直到针对所有目标数据完成所述多个第一操作。
本公开一种可行的实现方式中,所述方法还包括:
通过执行第二线程,从而针对每一份目标数据执行多个第二操作;
其中,对每一份目标数据执行的多个第二操作包括:
等待中断消息,所述中断消息用于表征一份目标数据被解码完成;
在接收到所述中断消息后,从所述第一内存中读取解码结果。
根据本公开的第二方面,还提供一种解码方法,所述方法应用于解码端,所述方法包括:
接收主机端的第一写入操作,所述第一写入操作用于所述主机端将待解码的目标数据写入所述解码端的第一内存;
接收所述主机端的第二写入操作,所述第二写入操作用于所述主机端向所述第一内存写入目标数据对应的命令包;
从所述第一内存中依次读取每个命令包,并通过执行读取的每个命令包,对每个命令包对应的目标数据进行解码。
本公开一种可行的实现方式中,每个命令包中包括跳转命令,跳转命令中携带有下一份目标数据的命令包在所述第一内存中的存储地址;
所述从所述第一内存中依次读取每个命令包,包括:
在处理到当前命令包中的跳转命令后,根据该跳转命令中的存储地址,从所述第一内存的相应地址处读取下一个命令包。
本公开一种可行的实现方式中,所述方法还包括:
接收所述主机端的第三写入操作,所述第三写入操作用于所述主机端将下一份目标数据的命令包在所述第一内存中的存储地址写入上一份目标数据的命令包中的跳转命令。
本公开一种可行的实现方式中,所述方法还包括:
接收所述主机端的更新操作,所述更新操作用于所述主机端在每向所述第一内存写入一个命令包后,将所述解码端的第一寄存器的第一计数值加1。
本公开一种可行的实现方式中,所述方法还包括:
在每处理完一个命令包后,将所述解码端的第二寄存器的第二计数值加1;
所述在处理到当前命令包中的跳转命令后,根据该跳转命令中的存储地址,从所述第一内存的相应地址处读取下一个命令包,包括:
在处理到当前命令包中的跳转命令后,从所述第一寄存器读取所述第一计数值,并所述从第二寄存器读取所述第二计数值,在所述第一计数值大于所述第二计数值的情况下,根据该跳转命令中的存储地址,从所述第一内存中读取下一个命令包。
本公开一种可行的实现方式中,每个命令包中包括按照顺序排列的写寄存器命令、等待命令、中断清除命令、读寄存器命令及跳转命令;所述通过执行读取的每个命令包,对每个命令包对应的目标数据进行解码,包括:
针对读取的命令包中的每个命令,通过所述解码端的处理单元执行该命令包中的写寄存器命令,从而对所述解码端的解码器的寄存器进行配置;通过所述处理单元执行该命令包中的等待命令,从而等待所述解码器完成对一份目标数据的解码操作;通过所述处理单元执行该命令包中的中断清除命令,从而将所述解码器的中断消息发送给所述主机端;通过所述处理单元执行该命令包中的读寄存器命令,从而将结果寄存器中的解码结果读取至所述第一内存;通过所述处理单元执行该命令包中的跳转命令,从而跳转至下一份目标数据的命令包。
根据本公开的第三方面,还提供一种解码系统,包括主机端和/或解码端,所述主机端用于实现本公开第一方面所述的解码方法,所述解码端用于实现本公开第二方面所述的解码方法。
根据本公开的第四方面,还提供一种电子设备,所述电子设备包括存储器和处理器;
所述存储器用于存储程序;
所述处理器用于运行所述存储器存储的所述程序,以实现本公开第一方面所述的解码方法,或者实现本公开第二方面所述的解码方法。
根据本公开的第五方面,还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有程序,所述程序被处理器执行时用于实现本公开第一方面所述的解码方法,或者实现本公开第二方面所述的解码方法。
附图说明
图1为相关技术中解码方法的示意图;
图2为本公开一实施例提供的解码方法的流程示意图;
图3(a)为本公开另一实施例提供的解码方法的流程示意图;
图3(b)为本公开另一实施例提供的解码方法的流程示意图;
图3(c)为本公开另一实施例提供的解码方法的流程示意图;
图4(a)为本公开一实施例提供的第一线程的示意图;
图4(b)为本公开另一实施例提供的第一线程的示意图;
图4(c)为本公开另一实施例提供的第一线程的示意图;
图5为本公开一实施例提供的命令包的示意图;
图6为本公开一实施例提供的第二线程的示意图;
图7为本公开另一实施例提供的解码方法的流程示意图;
图8为本公开一实施例提供的解码系统的结构示意图;
图9是本公开一实施例提出的电子设备的结构框图。
具体实施方式
在介绍本公开实施例之前,应当说明的是:
本公开部分实施例被描述为处理流程,虽然流程的各个操作步骤可能被冠以顺序的步骤编号,但是其中的操作步骤可以被并行地、并发地或者同时实施。
本公开实施例中可能使用了术语“第一”、“第二”等等来描述各个特征,但是这些特征不应当受这些术语限制。使用这些术语仅仅是为了将一个特征与另一个特征进行区分。
本公开实施例中可能使用了术语“和/或”,“和/或”包括其中一个或更多所列出的相关联特征的任意和所有组合。
应当理解的是,当描述两个部件的连接关系或通信关系时,除非明确指明两个部件之间直接连接或直接通信,否则,两个部件的连接或通信可以理解为直接连接或通信,也可以理解为通过中间部件间接连接或通信。
为了使本公开实施例中的技术方案及优点更加清楚明白,以下结合附图对本公开的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本公开的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
相关技术中,主机端在利用解码端对目标数据进行解码时,解码效率偏低。如图1所示,以待解码的视频帧为例,相关技术中的解码方法主要包括以下步骤:
S110:主机端准备待解码的当前视频帧,并准备解码端的硬件解码器的寄存器配置信息;
S120:主机端将当前视频帧下发给解码端,并利用寄存器配置信息对解码端的硬件解码器的寄存器进行配置;
S130:硬件解码器基于寄存器配置信息对当前视频帧进行解码,同时主机端需要等待硬件解码器完成解码操作;
S140:当硬件解码器完成当前视频帧的解码操作后,向主机端上报中断消息,主机端接着针对下一个视频帧执行相同流程,从而实现视频帧的依次解码。
在上述解码方式中,当主机端准备视频帧和寄存器配置信息时,硬件解码器将处于空闲状态,主机端并没有充分利用解码端的解码能力,导致解码效率偏低。
为了提升解码效率,本公开提供了一种解码方法,该解码方法应用于主机端(即Host端)。如图2所示,该解码方法包括以下步骤。
S210:针对多份目标数据中的每一份目标数据执行多个第一操作后,针对下一份目标数据执行多个第一操作,直到针对所有目标数据完成多个第一操作。
其中,目标数据是指待解码的数据。例如,目标数据可以是待解码的视频数据、待解码的图像数据、待解码的音频数据或者待解码的文本数据,本公开对于目标数据的具体类型不做限定。
本公开中,步骤S210具体是指:在针对一份目标数据执行完多个第一操作后,不需要等待解码端反馈该份目标数据的解码结果和对应的中断消息,而继续针对下一份目标数据执行多个第一操作,从而实现对多份目标数据连续不断地执行目标操作。
具体而言,针对每一份目标数据执行的多个第一操作包括:
第一操作a:将当前目标数据写入解码端的第一内存;
第一操作b:将当前目标数据对应的目标命令写入第一内存,使解码端从第一内存中读取目标命令并执行目标命令;目标命令是解码端在对当前目标数据进行解码时所需执行的命令。
例如,解码端可以是显卡或图形处理器GPU,解码端的第一内存可以是显卡或GPU上的GDDR显存。
为便于理解,如图3(a)所示,主机端针对当前的一份目标数据,主机端首先执行第一操作a,从而将当前目标数据写入解码端的第一内存;主机端接着执行第一操作b,从而当前目标数据对应的目标命令写入第一内存;主机端然后开始对下一份目标数据执行相同的第一操作。需要说明的是,对于第一操作a和第一操作b两者的执行顺序,本公开不做限定。例如在另一些实施例中,主机端针对每份目标数据,也可以先执行第一操作b,再执行第一操作a。或者在另一些实施例中,主机端针对每份目标数据,可以同时执行第一操作a和第一操作b。
按照本公开提供的解码方法,主机端连续不断地将每份目标数据及其对应的目标命令写入解码端的第一内存,换言之,主机端在向解码端的第一内存写入目标数据和目标命令期间,不需要等待解码端解码完之前已经写入的目标数据,如此,解码端可以源源不断地获得主机端写入的目标数据和目标命令。需要说明的是,由于解码端的解码速率通常会低于主机端的写入速率,因此解码端的第一内存中通常会一直剩余有未解码的目标数据和未处理的目标命令,所以解码端可以持续不断地执行第一内存中剩余的目标命令,从而持续不断地对第一内存中剩余的目标数据进行解码。可见,按照本公开提供的解码方法,主机端和解码端通常均不会出现空闲状态,因此主机端和解码端的利用率均得到提高,相应地,解码效率也得以提升。
在一些具体实施方式中,每一份目标数据对应的目标命令中包括写寄存器命令(简称为WREG),WREG中携带了针对解码器的寄存器配置信息,比如寄存器配置信息包括:该份目标数据在第一内存中的存储地址、该份目标数据的数据长度、该份目标数据的数据格式、解码器使能信息等。WREG的作用是:解码端的处理单元通过执行WREG,从而利用WREG中携带的寄存器配置信息对解码器的相应寄存器进行配置,进而使得解码器基于寄存器配置信息对第一内存中的相应目标数据进行解码。具体而言,解码端可以是显卡或GPU,解码端的处理单元可以是视频处理单元(VPU,Video Processing Unit),解码端的VPU具体通过VCMD(video core command)执行WREG。
在一些具体实施方式中,对每一份目标数据执行的多个第一操作属于第一线程内的操作。本公开的上述步骤S210可以细化为:通过执行第一线程,从而针对每一份目标数据执行多个第一操作,并在针对每一份目标数据执行多个第一操作后,针对下一份目标数据执行多个第一操作,直到针对所有目标数据完成多个第一操作。
为便于理解,示例性地,如图4(a)所示,第一线程中包括第一操作a和第一操作b。主机端通过循环地执行第一线程中的第一操作a和第一操作b,从而连续不断地将每份目标数据及其目标命令写入解码端的第一内存。或者,主机端通过循环地执行第一线程,从而连续不断地将每份目标数据及其目标命令写入解码端的第一内存。
在一些具体实施方式中,对于上述第一操作b,其可以具体细化为:将当前目标数据对应的多个目标命令组成命令包,并将命令包写入第一内存。其中,多个目标命令中包括跳转命令,跳转命令用于解码端根据该跳转命令携带的存储地址跳转至另一个命令包,跳转命令携带的存储地址是下一份目标数据的命令包在第一内存中的存储地址。
具体而言,每份目标数据分别对应一个命令包,每份目标数据的命令包中包括跳转命令(简称为JMP),该JMP中携带了下一份目标数据的命令包在第一内存中的存储地址。JMP的作用是:解码端的处理单元通过执行JMP,从而根据JMP中携带的存储地址,从第一内存的该存储地址处读取出下一个命令包,进而可以开始执行下一个命令包中的命令。具体而言,解码端可以是显卡或GPU,解码端的处理单元可以是VPU,解码端的VPU具体通过VCMD执行JMP。
在一些具体实施方式中,主机端在针对当前目标数据生成跳转命令前,提前分配到用于存储下一份目标数据的命令包的第一内存地址,从而在为当前目标数据生成跳转命令时,可以将该第一内存地址写入到该跳转命令中。
或者在另一些具体实施方式中,如图3(b)和图4(b)所示,针对当前目标数据执行的多个第一操作还可以包括:
第一操作c:根据上一份目标数据的命令包在第一内存中的存储地址,在第一内存中查找上一份目标数据的命令包,并将当前目标数据的命令包在第一内存中的存储地址,写入查找到的命令包中的跳转命令。
本公开在实施期间,针对当前一份目标数据,主机端分配到第一地址和第二地址,其中第一地址是第一内存中用于存储该份目标数据的地址,第二地址是第一内存中用于存储该份目标数据的命令包的地址。主机端通过执行第一操作a,将当前目标数据写入第一内存的第一地址处;主机端通过执行第一操作b,将当前目标数据对应的多个目标命令组成命令包,并将该命令包写入第一内存的第二地址处;主机端通过执行第一操作c,从第一内存中查找出上一份目标数据的命令包,并将上述第二地址写入该命令包的跳转命令中。
需要说明的是,对于第一操作c与第一操作a、第一操作b的执行顺序,本公开不做限定。但在较优的实施例中,可以先执行第一操作a和第一操作b,然后执行第一操作c。还需要说明的是,本公开按照上述方式将当前的命令包的存储地址写入上一个命令包的跳转命令,主机端不需要提前被分配下一份目标数据的命令包的存储地址,可以减轻多进程(即主机端中运行有多个解码进程时)对第一内存的竞争,有助于提升多进程情况下的解码效率。
在一些具体实施方式中,如图5所示,每一份目标数据的多个目标命令包括:写寄存器命令WREG、等待命令STALL、中断清除命令CLRINT、读寄存器命令RREG及跳转命令JMP,这些目标命令按照图5所示的顺序被组成命令包。图5中的每一行目标命令表示一个命令包,相邻两个命令包之间通过跳转命令JMP被联系起来。
其中,写寄存器命令用于解码端的处理单元对解码器的寄存器进行配置;等待命令用于处理单元等待解码器完成对一份目标数据的解码操作;中断清除命令用于处理单元将解码器的中断消息发送给主机端;读寄存器命令用于处理单元将结果寄存器中的解码结果读取至第一内存;跳转命令用于处理单元跳转至下一份目标数据的命令包。
本公开在实施期间,解码端的处理单元在从第一内存中读取到一个命令包后,按照命令包中多个目标命令的顺序,处理单元首先执行命令包中的写寄存器命令WREG,从而将WREG中携带的存储地址(即目标数据在第一内存中的存储地址)、目标数据的数据长度、目标数据的数据格式、解码器使能信息等写入解码器的相应寄存器,使得解码器根据寄存器中配置的存储地址和数据长度,从第一内存的相应地址处读取目标数据,并根据寄存器中配置的数据格式,对目标数据进行解码。
处理单元然后执行命令包中的等待命令STALL,从而等待解码器返回中断消息,该中断消息用于表示一份目标数据解码完成。具体而言,解码器解码完一份目标数据后,会将解码结果存储在一个寄存器(本公开中将该寄存器称为结果寄存器)中,并向处理单元上报中断消息,表示解码器已经完成了一份目标数据的解码。
处理单元接着执行命令包中的中断清除命令CLRINT,从而将解码器返回的中断消息上报给主机端。具体而言,主机端可以通过第二线程来等待解码端的中断消息,主机端的第二线程在等待中断消息期间,并不影响主机端的第一线程向解码端的第一内存写入后续目标数据及其命令包。
处理单元接着执行命令包中的读寄存器命令RREG,从而将结果寄存器中的解码结果读取至第一内存。具体而言,主机端的第二线程在接收到中断消息后,可以从解码端的第一内存中读回解码结果。
处理单元最后执行命令包中的跳转命令JMP,从而根据跳转命令JMP中携带的存储地址,从第一内存中读取到下一个命令包。
需要说明的是,对于上述中断清除命令CLRINT和读寄存器命令RREG的执行顺序,本公开不做限定。例如,可以先执行读寄存器命令RREG,再执行中断清除命令CLRINT。或者也可以同时执行中断清除命令CLRINT和读寄存器命令RREG。
在一些具体实施方式中,多份目标数据中的最后一份目标数据的命令包中包括结束命令。具体而言,最后一份目标数据的命令包中的最后一个命令是结束命令END,而不是跳转命令JMP。本公开在实施期间,当解码端的处理单元在对命令包中的命令进行依次执行时,如果执行到一个跳转命令JMP,则根据跳转命令JMP中携带的存储地址,从第一内存中读取到下一个命令包;如果执行到一个结束命令END,则直接结束解码操作。
在一些具体实施方式中,如图3(c)和图4(c)所示,针对当前目标数据执行的多个第一操作还可以包括:
第一操作d:将解码端的第一寄存器的第一计数值加1,以使得解码端根据第一寄存器的第一计数值和第二寄存器的第二计数值进行解码使能。其中,第二寄存器是解码端的寄存器,第二计数值用于表示解码端已经处理的命令包数量。
本公开在实施期间,针对当前一份目标数据,主机端通过执行第一操作a,将当前目标数据写入第一内存的第一地址处;主机端通过执行第一操作b,将当前目标数据对应的多个目标命令组成命令包,并将该命令包写入第一内存的第二地址处;主机端通过执行第一操作c,从第一内存中查找出上一份目标数据的命令包,并将上述第二地址写入该命令包的跳转命令中;主机端通过执行第一操作d,将解码端的第一寄存器的第一计数值加1。
其中,主机端需要在执行完第一操作b之后,才执行第一操作d。或者,主机端需要在执行完第一操作b和第一操作c之后,才执行第一操作d,在此情况下,当第一计数值大于第二计数值时,就可以触发解码端的处理单元继续处理下一个命令包。
本公开在实施期间,解码端的处理单元在每处理到一个命令包的跳转命令时,会将解码端的第二寄存器的第二计数值加1,然后判断第一寄存器的第一计数值是否大于第二寄存器的第二计数值,如果大于,则根据该命令包中的跳转命令携带的存储地址,从第一内存中读取下一个命令包。本公开中,第一寄存器和第二寄存器均位于解码端,解码端的处理单元根据第一寄存器的第一计数值与第二寄存器的第二计数值的大小关系进行解码使能,而不需要主机端每次通过PCIE总线进行使能,从而可以提升使能效率,以进一步提升解码效率。
在一些具体实施方式中,主机端还可以通过执行第二线程,从而针对每一份目标数据执行多个第二操作。
具体而言,针对每一份目标数据执行的多个第二操作包括:
第二操作a:等待中断消息,中断消息用于表征一份目标数据被解码完成;
第二操作b:在接收到中断消息后,从第一内存中读取解码结果。
为便于理解,示例性地,如图6所示,第二线程中包括第二操作a和第二操作b。主机端通过多次执行第二线程中的第一操作a和第一操作b,从而等待每份目标数据各自对应的中断消息,并从第一内存中读取每份目标数据各自对应的解码结果。
本公开还提供了一种应用于解码端的解码方法,需要说明的是,应用于解码端的解码方法与应用于主机端的解码方法基于同一发明构思,为了避免重复,本公开对于应用于解码端的解码方法仅做简要介绍,相关之处可参考前述应用于主机端的解码方法。如图7所示,该解码方法包括以下步骤。
S710:接收主机端的第一写入操作,第一写入操作用于主机端将待解码的目标数据写入解码端的第一内存;
S720:接收主机端的第二写入操作,第二写入操作用于主机端向第一内存写入目标数据对应的命令包;
S730:从第一内存中依次读取每个命令包,并通过执行读取的每个命令包,对每个命令包对应的目标数据进行解码。
本公开中,主机端连续不断地将每份目标数据及其对应的目标命令写入解码端的第一内存,换言之,主机端在向解码端的第一内存写入目标数据和目标命令期间,不需要等待解码端解码完之前已经写入的目标数据,如此,解码端可以源源不断地获得主机端写入的目标数据和目标命令。需要说明的是,由于解码端的解码速率通常会低于主机端的写入速率,因此解码端的第一内存中通常会一直剩余有未解码的目标数据和未处理的目标命令,所以解码端也可以持续不断地执行第一内存中剩余的目标命令,从而持续不断地对第一内存中剩余的目标数据进行解码。可见,按照本公开提供的解码方法,主机端和解码端通常均不会出现空闲状态,因此主机端和解码端的利用率均得到提高,相应地,解码效率也得以提升。
在一些具体实施方式中,每个命令包中包括跳转命令,跳转命令中携带有下一份目标数据的命令包在第一内存中的存储地址。本公开中,从第一内存中依次读取每个命令包,包括:在处理到当前命令包中的跳转命令后,根据该跳转命令中的存储地址,从第一内存的相应地址处读取下一个命令包。
在一些具体实施方式中,解码方法还包括:接收主机端的第三写入操作,第三写入操作用于主机端将下一份目标数据的命令包在第一内存中的存储地址写入上一份目标数据的命令包中的跳转命令。
在一些具体实施方式中,解码方法还包括:接收主机端的更新操作,更新操作用于主机端在每向第一内存写入一个命令包后,将解码端的第一寄存器的第一计数值加1。
在一些具体实施方式中,解码方法还包括:在每处理完一个命令包后,将解码端的第二寄存器的第二计数值加1。本公开中,在处理到当前命令包中的跳转命令后,根据该跳转命令中的存储地址,从第一内存的相应地址处读取下一个命令包,包括:
在处理到当前命令包中的跳转命令后,从第一寄存器读取第一计数值,并从第二寄存器读取第二计数值,在第一计数值大于第二计数值的情况下,根据该跳转命令中的存储地址,从第一内存中读取下一个命令包。
在一些具体实施方式中,每个命令包中包括按照顺序排列的写寄存器命令、等待命令、中断清除命令、读寄存器命令及跳转命令;本公开中,通过执行读取的每个命令包,对每个命令包对应的目标数据进行解码,包括:
针对读取的命令包中的每个命令,通过解码端的处理单元执行该命令包中的写寄存器命令,从而对解码端的解码器的寄存器进行配置;通过处理单元执行该命令包中的等待命令,从而等待解码器完成对一份目标数据的解码操作;通过处理单元执行该命令包中的中断清除命令,从而将解码器的中断消息发送给主机端;通过处理单元执行该命令包中的读寄存器命令,从而将结果寄存器中的解码结果读取至第一内存;通过处理单元执行该命令包中的跳转命令,从而跳转至下一份目标数据的命令包。
本公开还提供了一种解码系统,如图8所示,该解码系统包括主机端和/或解码端。其中,如果解码系统中包括主机端,则该主机端用于实现上述任一实施例中提供的应用于主机端的解码方法。如果解码系统中包括解码端,则该解码端用于实现上述任一实施例中提供的应用于解码端的解码方法。
此外,如图8所示,如果该解码系统中包解码端,则解码端中具体包括处理单元和解码器,处理单元用于实现上述任一实施例中提供的应用于解码端的解码方法。
请参阅图9,图9是本公开一实施例提出的电子设备的结构框图,该电子设备900包括处理器910以及存储器920以及一个或多个应用程序,其中一个或多个应用程序被存储在存储器920中并被配置为由一个或多个处理器910执行,一个或多个程序配置用于执行上述解码方法。
处理器910可以包括一个或者多个处理核。处理器910利用各种接口和线路连接整个电子设备900内的各个部分,通过运行或执行存储在存储器920内的指令、程序、代码集或指令集,以及调用存储在存储器920内的数据,执行电子设备900的各种功能和处理数据。可选地,处理器910可以采用数字信号处理(DigitalSignalProcessing,DSP)、现场可编程门阵列(Field-ProgrammableGateArray,FPGA)、可编程逻辑阵列(ProgrammableLogicArray,PLA)中的至少一种硬件形式来实现。处理器910可集成中央处理器(CentralProcessingUnit,CPU)、图像处理器(GraphicsProcessingUnit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器910中,单独通过一块通信芯片进行实现。
存储器920可以包括随机存储器(RandomAccessMemory,RAM),也可以包括只读存储器(Read-OnlyMemory)。存储器920可用于存储指令、程序、代码、代码集或指令集。存储器920可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等。存储数据区还可以存储电子设备900在使用中所创建的数据等。
最后应当说明的是:以上实施例仅用于说明本发明的技术方案而非对其保护范围的限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:本领域技术人员阅读本发明后依然可对发明的具体实施方式进行种种变更、修改或者等同替换,但这些变更、修改或者等同替换,均在发明待批的权利要求保护范围之内。
Claims (17)
1.一种解码方法,所述方法应用于主机端,所述方法包括:
针对多份目标数据中的每一份目标数据执行多个第一操作后,针对下一份目标数据执行所述多个第一操作,直到针对所有目标数据完成所述多个第一操作;其中,针对每一份目标数据执行的多个第一操作包括:
将当前目标数据写入解码端的第一内存;
将所述当前目标数据对应的目标命令写入所述第一内存,使所述解码端从所述第一内存中读取所述目标命令并执行所述目标命令,所述目标命令是所述解码端在对所述当前目标数据进行解码时所需执行的命令。
2.根据权利要求1所述的方法,所述将所述当前目标数据对应的目标命令写入所述第一内存,包括:
将所述当前目标数据对应的多个目标命令组成命令包,并将所述命令包写入所述第一内存;所述多个目标命令中包括跳转命令,所述跳转命令用于解码端根据该跳转命令携带的存储地址跳转至另一个命令包,所述跳转命令携带的存储地址是下一份目标数据的命令包在所述第一内存中的存储地址。
3.根据权利要求2所述的方法,针对当前目标数据执行的多个第一操作还包括:
根据上一份目标数据的命令包在所述第一内存中的存储地址,在所述第一内存中查找所述上一份目标数据的命令包,并将所述当前目标数据的命令包在所述第一内存中的存储地址,写入查找到的命令包中的跳转命令。
4.根据权利要求2所述的方法,所述多个目标命令中还包括写寄存器命令、等待命令、中断清除命令及读寄存器命令;所述写寄存器命令、等待命令、中断清除命令、读寄存器命令及跳转命令按照顺序被组成所述命令包;
其中,所述写寄存器命令用于所述解码端的处理单元对解码器的寄存器进行配置;所述等待命令用于所述处理单元等待所述解码器完成对一份目标数据的解码操作;所述中断清除命令用于所述处理单元将解码器的中断消息发送给所述主机端;所述读寄存器命令用于所述处理单元将结果寄存器中的解码结果读取至所述第一内存;所述跳转命令用于所述处理单元跳转至下一份目标数据的命令包。
5.根据权利要求2所述的方法,多份目标数据中的最后一份目标数据的命令包中包括结束命令。
6.根据权利要求2所述的方法,针对当前目标数据执行的多个第一操作还包括:
在将所述当前目标数据的命令包写入所述第一内存后,将所述解码端的第一寄存器的第一计数值加1,以使得所述解码端根据所述第一寄存器的第一计数值和第二寄存器的第二计数值进行解码使能;所述第二寄存器是所述解码端的寄存器,所述第二计数值用于表示所述解码端已经处理的命令包数量。
7.根据权利要求1至6任一所述的方法,对每一份目标数据执行的多个第一操作属于第一线程内的操作;所述针对多份目标数据中的每一份目标数据执行多个第一操作后,针对下一份目标数据执行所述多个第一操作,直到针对所有目标数据完成所述多个第一操作,包括:
通过执行所述第一线程,从而针对每一份目标数据执行所述多个第一操作,并在针对每一份目标数据执行所述多个第一操作后,针对下一份目标数据执行所述多个第一操作,直到针对所有目标数据完成所述多个第一操作。
8.根据权利要求7所述的方法,所述方法还包括:
通过执行第二线程,从而针对每一份目标数据执行多个第二操作;其中,对每一份目标数据执行的多个第二操作包括:
等待中断消息,所述中断消息用于表征一份目标数据被解码完成;
在接收到所述中断消息后,从所述第一内存中读取解码结果。
9.一种解码方法,所述方法应用于解码端,所述方法包括:
接收主机端的第一写入操作,所述第一写入操作用于所述主机端将待解码的目标数据写入所述解码端的第一内存;
接收所述主机端的第二写入操作,所述第二写入操作用于所述主机端向所述第一内存写入目标数据对应的命令包;
从所述第一内存中依次读取每个命令包,并通过执行读取的每个命令包,对每个命令包对应的目标数据进行解码。
10.根据权利要求9所述的方法,每个命令包中包括跳转命令,跳转命令中携带有下一份目标数据的命令包在所述第一内存中的存储地址;
所述从所述第一内存中依次读取每个命令包,包括:
在处理到当前命令包中的跳转命令后,根据该跳转命令中的存储地址,从所述第一内存的相应地址处读取下一个命令包。
11.根据权利要求10所述的方法,所述方法还包括:
接收所述主机端的第三写入操作,所述第三写入操作用于所述主机端将下一份目标数据的命令包在所述第一内存中的存储地址写入上一份目标数据的命令包中的跳转命令。
12.根据权利要求10所述的方法,所述方法还包括:
接收所述主机端的更新操作,所述更新操作用于所述主机端在每向所述第一内存写入一个命令包后,将所述解码端的第一寄存器的第一计数值加1。
13.根据权利要求12所述的方法,所述方法还包括:
在每处理完一个命令包后,将所述解码端的第二寄存器的第二计数值加1;
所述在处理到当前命令包中的跳转命令后,根据该跳转命令中的存储地址,从所述第一内存的相应地址处读取下一个命令包,包括:
在处理到当前命令包中的跳转命令后,从所述第一寄存器读取所述第一计数值,并所述从第二寄存器读取所述第二计数值,在所述第一计数值大于所述第二计数值的情况下,根据该跳转命令中的存储地址,从所述第一内存中读取下一个命令包。
14.根据权利要求9所述的方法,每个命令包中包括按照顺序排列的写寄存器命令、等待命令、中断清除命令、读寄存器命令及跳转命令;所述通过执行读取的每个命令包,对每个命令包对应的目标数据进行解码,包括:
针对读取的命令包中的每个命令,通过所述解码端的处理单元执行该命令包中的写寄存器命令,从而对所述解码端的解码器的寄存器进行配置;通过所述处理单元执行该命令包中的等待命令,从而等待所述解码器完成对一份目标数据的解码操作;通过所述处理单元执行该命令包中的中断清除命令,从而将所述解码器的中断消息发送给所述主机端;通过所述处理单元执行该命令包中的读寄存器命令,从而将结果寄存器中的解码结果读取至所述第一内存;通过所述处理单元执行该命令包中的跳转命令,从而跳转至下一份目标数据的命令包。
15.一种解码系统,包括主机端和/或解码端,所述主机端用于实现权利要求1至8任一项所述的解码方法,所述解码端用于实现权利要求9至14任一项所述的解码方法。
16.一种电子设备,所述电子设备包括存储器和处理器;
所述存储器用于存储程序;
所述处理器用于运行所述存储器存储的所述程序,以实现权利要求1至8或9至14任一项所述的解码方法。
17.一种计算机可读存储介质,所述计算机可读存储介质中存储有程序,所述程序被处理器执行时用于实现权利要求1至8或9至14任一项所述的解码方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410160588.0A CN117714711B (zh) | 2024-02-05 | 2024-02-05 | 解码方法、解码系统、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410160588.0A CN117714711B (zh) | 2024-02-05 | 2024-02-05 | 解码方法、解码系统、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117714711A true CN117714711A (zh) | 2024-03-15 |
CN117714711B CN117714711B (zh) | 2024-04-30 |
Family
ID=90151943
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410160588.0A Active CN117714711B (zh) | 2024-02-05 | 2024-02-05 | 解码方法、解码系统、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117714711B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05150977A (ja) * | 1991-09-05 | 1993-06-18 | Yamaha Corp | 信号処理装置 |
JP2000181703A (ja) * | 1998-12-18 | 2000-06-30 | Matsushita Electric Ind Co Ltd | 情報処理装置 |
US20100185835A1 (en) * | 2006-09-06 | 2010-07-22 | Silicon Hive B.V. | Data Processing Circuit With A Plurality Of Instruction Modes, Method Of Operating Such A Data Circuit And Scheduling Method For Such A Data Circuit |
CN115220789A (zh) * | 2022-06-24 | 2022-10-21 | 北京联盛德微电子有限责任公司 | 一种用于多寄存器的操作命令触发调度方法及单元 |
WO2023169267A1 (zh) * | 2022-03-08 | 2023-09-14 | 华为技术有限公司 | 一种基于网络设备的数据处理方法及网络设备 |
CN117270771A (zh) * | 2023-09-19 | 2023-12-22 | 平头哥(上海)半导体技术有限公司 | 加速单元、存储控制芯片、固态硬盘和数据读取方法 |
-
2024
- 2024-02-05 CN CN202410160588.0A patent/CN117714711B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05150977A (ja) * | 1991-09-05 | 1993-06-18 | Yamaha Corp | 信号処理装置 |
JP2000181703A (ja) * | 1998-12-18 | 2000-06-30 | Matsushita Electric Ind Co Ltd | 情報処理装置 |
US20100185835A1 (en) * | 2006-09-06 | 2010-07-22 | Silicon Hive B.V. | Data Processing Circuit With A Plurality Of Instruction Modes, Method Of Operating Such A Data Circuit And Scheduling Method For Such A Data Circuit |
WO2023169267A1 (zh) * | 2022-03-08 | 2023-09-14 | 华为技术有限公司 | 一种基于网络设备的数据处理方法及网络设备 |
CN115220789A (zh) * | 2022-06-24 | 2022-10-21 | 北京联盛德微电子有限责任公司 | 一种用于多寄存器的操作命令触发调度方法及单元 |
CN117270771A (zh) * | 2023-09-19 | 2023-12-22 | 平头哥(上海)半导体技术有限公司 | 加速单元、存储控制芯片、固态硬盘和数据读取方法 |
Also Published As
Publication number | Publication date |
---|---|
CN117714711B (zh) | 2024-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111651384B (zh) | 寄存器的读写方法、芯片、子系统、寄存器组及终端 | |
KR20050075722A (ko) | 프로세서 시스템, dma 제어 회로, dma 제어 방법,dma 제어기의 제어 방법, 화상 처리 방법, 및 화상처리 회로 | |
CN110427337B (zh) | 基于现场可编程门阵列的处理器内核及其运行方法 | |
US20230267000A1 (en) | Processing apparatus and system for executing data processing on a plurality of pieces of channel information | |
US20070022249A1 (en) | Information processing apparatus and its data processing method capable of forming descriptor queue | |
US20240045593A1 (en) | Apparatus and method for accessing data, processing apparatus and computer system | |
CN110688160A (zh) | 一种指令流水线处理方法、系统、设备及计算机存储介质 | |
CN114879968A (zh) | 一种基板管理控制芯片中视频处理的方法和装置 | |
CN117714711B (zh) | 解码方法、解码系统、电子设备及可读存储介质 | |
US20230267079A1 (en) | Processing apparatus, method and system for executing data processing on a plurality of channels | |
WO2024093062A1 (zh) | 并行译码的方法、处理器、芯片及电子设备 | |
JP5233078B2 (ja) | プロセッサ及びその処理方法 | |
CN114816769A (zh) | 一种向量处理器处理方法及系统 | |
CN110856195B (zh) | 射频组件的配置系统及方法 | |
JPH1091430A (ja) | 命令解読装置 | |
JP2006163552A (ja) | マルチプロセッサシステムとそのシステムにおけるプログラム実行方法 | |
CN111562983A (zh) | 内存优化方法、装置、电子设备及存储介质 | |
CN116795442B (zh) | 一种寄存器配置方法、dma控制器及图形处理系统 | |
JP2002312005A (ja) | プログラマブルコントローラ | |
CN117435259B (zh) | Vpu的配置方法、装置、电子设备及计算机可读存储介质 | |
JP3059674U (ja) | 中央処理装置のデータアクセス回路 | |
JP2011150636A (ja) | マイクロプロセッサ及びその制御方法 | |
US6832309B2 (en) | Generation of modified commands repeatedly from feedback or base command | |
US20050114626A1 (en) | Very long instruction word architecture | |
US20020144087A1 (en) | Architecture of method for fetching microprocessor's instructions |
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 |