[发明专利]多核处理芯片对视频处理任务的处理方法及其系统有效
申请号: | 201210034047.0 | 申请日: | 2012-02-15 |
公开(公告)号: | CN102609306A | 公开(公告)日: | 2012-07-25 |
发明(设计)人: | 师恩义;黄田;钱学锋 | 申请(专利权)人: | 杭州海康威视数字技术股份有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46;H04N5/14;G06F15/16 |
代理公司: | 上海一平知识产权代理有限公司 31266 | 代理人: | 成春荣;竺云 |
地址: | 310051 浙江省杭州*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 多核 处理 芯片 视频 任务 方法 及其 系统 | ||
技术领域
本发明涉及视频处理领域,特别涉及一种嵌入式视频处理技术。
背景技术
Netra平台高效的编解码运算能力来源于它的高清视频影像协处理器(HDVICP),其控制由一颗ARM-CORTEX-M3处理内核(称为VID)来完成。根据不同的芯片型号,HDVICP的个数可能不同。VID作为一个资源模块,必须统一管理所有的H DVICP,并提高其使用效率。
HDVICP可以独立工作,在多个HDVICP情况下,每个HDVICP在能力上都是对等的,除了访问DDR时具有一定的内部竞争关系,其工作流程也互不干扰。在目前系统中,HDVICP可以执行的但不限于以下的任务:
A1)视频压缩,支持标准264、海康264和MPEG4等视频压缩标准;
A2)视频解码,支持标准264、海康264和MPEG4等视频压缩标准;
A3)移动侦测;
A4)智能处理。
上述任务的执行请求和数据源来自于Netra平台的其它处理内核(如A8、C674、VPS),VID只是接收这些请求,选择一个HDVICP进行处理,最后把处理的结果进行返回。
VID上任何一个任务的处理流程都可以分为如下5部分:
B1)数据准备(T1),即将传递过来的数据和参数进行转换,并为HDVICP分配一些内存资源;
B2)预处理(T2),即配置HDVICP,为其加载代码和数据;
B3)HDVICP运算(T3),该阶段无需VID的任何干预,VID可以转移出来做其它事情;
B4)后处理(T4),即HDVICP运算完成后中断通知VID,VID恢复HDVICP的一些默认状态;
B5)数据返回(T5),即VID将运算后的数据进行组织,并返回给其它处理内核。
由上可知,除了在阶段2和阶段4中HDVICP和VID被同时占用外,其余阶段二者可以并行工作,如图1所示。
HDVICP所完成的工作是系统中运算量最大的环节,是提升性能的关键所在。常规的做法是,针对HDVICP要处理的每一种任务,在VID上为其建立一个线程,当该线程接收到该任务的处理请求时,查找一个空闲的HDVICP,使用完毕后再将其释放;如果查不到空闲的HDVICP,该线程只能休眠等待,直到查到为止。这种方法在系统负荷低时具有最快的响应速度,但本发明的发明人发现,当系统负荷高时会降低HDVICP的有效使用率,并且会导致优先级控制失效,这是因为:在系统负荷高时,HDVICP有很高的几率处于繁忙状态,导致线程查询不到空闲的HDVICP,被迫休眠。休眠的最短时间是1ms,但是,有可能在经过0.1ms后,HDVICP已经处于空闲状态了,任务线程多休眠的0.9ms就白白浪费了,而HDVICP每次工作的时间也仅有1个或几个ms,这0.9ms的浪费对于HDVICP来说是巨大的。对于优先级控制,由于HDVICP空闲后第一个醒来的线程总会优先获得HDVICP的使用权,这样为任务线程设置的优先级就失去了效力。
发明内容
本发明的目的在于提供一种多核处理芯片对视频处理任务的处理方法及其系统,针对HDVICP建立服务线程,主动查询需要处理的任务队列,提高了高负荷下HDVICP的使用率,并能够支持针对任务队列的优先级配置。
为解决上述技术问题,本发明的实施方式公开了一种多核处理芯片对视频处理任务的处理方法,该芯片包括多个用于视频处理的可编程模块,一个用于控制可编程模块的第一处理内核,和至少一个用于产生待处理任务的其他处理内核,该多核处理芯片对视频处理任务的处理方法包括以下步骤:
第一处理内核为不同类别的任务分别建立任务队列,供各其他处理内核加入待处理任务;
第一处理内核为每一个可编程模块分别建立服务线程,并为每个服务线程注册多个执行要素,每个执行要素包括一个任务队列;
各服务线程在空闲时按预先设定的优先级查询各任务队列,将查到第一个非空任务队列中的第一个任务交给对应的可编程模块处理。
本发明的实施方式还公开了一种多核处理芯片对视频处理任务的处理系统,该芯片包括多个用于视频处理的可编程模块,一个用于控制可编程模块的第一处理内核,和至少一个用于产生待处理任务的其他处理内核,该第一处理内核包括以下子单元:
任务建立子单元,用于为不同类别的任务分别建立任务队列,供各其他处理内核加入待处理任务;
线程建立子单元,用于为每一个可编程模块分别建立服务线程;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州海康威视数字技术股份有限公司,未经杭州海康威视数字技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210034047.0/2.html,转载请声明来源钻瓜专利网。