基于TMS320C64x/DM64x的视频编码优化

TMSC64XX DSP混合汇编1       C/C++编译器的函数调用有一套严格的规则。除特定的支持函数外,任何调用或被C/C++函数调用的函数均必须遵守这些规则。不遵循这些规则可能破坏C/C++环境并导致程序错误。 函数如何调用      当一个函数(父函数)调用另一个函数(子函数)时需执行以下任务:      (1)按2节的寄存器使用规则把需传递的函数参数放入寄存器或堆栈。     阅读详情

  数字视频编码在诸如数字视频监控系统与视频会议系统等众多应用中发挥着重要作用。本文将对以TMS320C64x/DM64xDSP为基础的通用视频编码器优化技术进行介绍。基于DM64x的视频编码优化结合了多种技术,其中包括算法/系统优化、存储器缓冲优化、EDMA及高速缓存利用率优化等。

TMS320C64x/DM64x器件建立在德州仪器(TI)开发的第二代高性能VLIW架构(VelociTI.2)基础之上。该器件具有VLIW架构、2级存储器/高速缓存层次结构以及EDMA引擎等关键特性,从而使其成为计算强度较大的视频/影像应用(如视频编码与分析)的最佳选择之一。利用DM64x进行应用开发时,需要全面了解其特性与开销以实现最佳性能。下面以DM642为例在此列出其所有DSP关键特性:

1. 增强功能单元


DM64x的8个功能单元中的VelociTI.2扩展包括加速视频与影像应用性能的新指令。

2. L1/L2分级存储器结构

图1:视频编码结构图。


16KB直接映射的L1P程序高速缓存,带有32字节的高速缓存管线(8周期L1P高速缓存缺失损失)。


16KB双路关联L1D数据高速缓存,带有64字节的高速缓存管线(6循环L1D高速缓存缺失损失)。


256KBL2统一映射RAM/高速缓存(灵活的RAM/缓存分配)


L2四路关联高速缓存,带有128字节的高速缓存管线。

3. 位优先原则:低位优先(Little Endian),高位优先(Big Endian)。

4.64位外部存储器接口(EMIF):至异步与异步存储器的无胶合逻辑接口。

5.1024MB总的可寻址外部存储器空间。

6.增强型直接存储器存取(EDMA)控制器(64个独立通道)。

片上外设集包括:三个可配置的视频端口,一个10/100Mbps以太网MAC(EMAC),一个管理数据输入/输出(MDIO)模块,一个VCXO内插控制端口(VIC)。视频端口外设提供与通用视频解码器和编码器相连的无缝接口,以支持多种视频分辨率及标准,如ITU-BT.656、BT.1120、SMPTE125M/260M/274M/296M等。

上面的功能特性对包括视频编码在内的所有算法的执行都相当重要。二级存储器/高速缓存分级结构与EDMA引擎基本决定了视频编码器实现的架构。在算法实现过程中,我们需要弄清一些有关存储器/高速缓存层次结构以及EDMA引擎的基本概念。如果代码大于L1P,就可能发生L1P高速缓存缺失,CPU停止运行至到读取到所需代码。类似地,如果数据与L1D不符,就会出现L1D高速缓存缺失并且CPU停止运行。所有的L1P与L1D缺失问题均由L2高速缓存/SRAM来解决。如果代码与数据的大小均大于L2高速缓存的容量,那么就可能出现L2高速缓存缺失。与L1P/L1D高速缓存缺失损失相比,L2缺失损失通常更严重,因为L2高速缓存需要与速度较低的片外存储器相互传递数据/代码。

确保视频编码器最佳性能的两大重要因素是进行有利于高速缓存的程序分区(program partitioning)以及数据传输处理(如减少L1/L2缺失)。尽管L2 SRAM可用于解决L1D/L1P缺失问题,我们通常还是更倾向于采用EDMA来传输L2 SRAM与片外存储器之间的代码/数据,因为EDMA的传输效率通常高于L2高速缓存。

视频编码器系统/算法优化

图1给出了通用视频编码算法结构图,MPEG2、H.263及MPEG4等许多视频编码标准都可从该算法结构图衍生而来。在图1中,DCT与量化(Q)去除了视频的空间冗余;运动估计(ME)降低了视频的时间冗余;VLC进行熵编码(entropycoding),以将数据有效地进行分组。

通常,视频编码器的实现是以宏模块(MB)为基础。这就是说,只有在当前MB完成所有处理步骤后,视频编码器才读取下一个MB。这种靠直觉进行操作的方法存在两大缺点:

1.视频编码器的整体代码尺寸通常大于L1P。在每个MB读取阶段,代码都需要在L1P和L2P之间进行交换,这会造成严重的高速缓存缺失问题。


2.用EDMA从外部视频帧存储器向内部存储器传输小块数据(如一个MB)的效率不高。

为了避免造成大量高速缓存缺失损失和CPU停止响应问题,我们可将算法分为三个小循环/模块,每部分都能在L1P中容下。每个循环中每次同时操作M个宏模块(MB串),而不是只操作一个宏模块。M是宏模块串的大小,只受可用L1D大小的限制。M越大,就能获得的越高的EDMA数据吞吐量性能。

三个小循环为:


1. 宏模块编码环路


2. 运动估计环路


3. 宏模块重建环路

正如上面强调指出的那样,每次都读取M个宏模块,一起经过三个环路中的一个来处理。举例来说,在宏模块编码循环中,如果将M个宏模块读入内部存储器,那么将对其进行DCT转换、量化以及熵编码。只有当宏模块编码环路结束时,这一组宏模块才离开L1D。相应的程序包括DCT、量化以及VLC内核,其会在所有M个宏模块在L1P中完全处理之后才脱离该环路。EDMA引擎驱动的乒乓存储器缓冲方案有助于减少执行一组宏模块时环路初始的设置时间,同时还可确保最小化的CPU停止周期,这是由于传输与处理并行进行的原因。

视频编码器的存储器缓冲方案

为了获得最佳性能,许多与关键内核相关的查找表格、状态变量以及数据缓冲都必须位于内部存储器之中。除了上述基本数据所占用的存储器之外,部分TMS320DM64x仍有足够的内部存储器可容纳整个视频帧,以供编码器处理。但有的器件则不行,因为内部SRAM在不同的C64x/DM64x器件间有所差异。有些应用只需运行视频编码器,而其它应用则要运行其他算法,其中包括视频编码等。为了针对大多数视频应用情况下的所有DM64x器件提供通用的视频缓冲方案,全部视频帧应位于外部存储器,而非内部存储器中。EDMA每次将M个MB带从外部视频缓冲传输到内部缓冲。正如我们在上一节中谈到的那样,M只受L1D大小的限制。

图片群(GOP)是视频编码中的重要概念,因为其确定了每个视频帧的编码方案。通常,在GOP中定义所有视频编码标准的I帧和P帧。B帧只包含在高级视频编码配置文件(profile)中,如MPEG4高级简单配置文件以及MPEG2主配置文件等。对于I帧而言,我们可采用类似JPEG的编码方案来去除空间冗余。对于P帧来说,我们采用前向运动估计(forward motion estimation),并以此前的I/P作为参考。对于B帧而言,前向ME(forward ME)不仅需要此前的I/P帧,而且还需要随后的I/P帧用于后向ME(backward ME)。视频编码器必须在两个P帧之间对所有B帧进行缓冲,这是由于B帧采用双向ME方案的缘故。图2给出了视频帧的数据依赖性。

图2:视频编码器中视频帧的数据依赖性。

我们已经熟知,对于B帧GOP而言,视频捕获/显示的顺序不同于视频编码顺序。例如,GOP= IBBP BBP BBP BBP BB的顺序适用于捕获/显示,而GOP编码顺序则为GOP'= IPBB PBB PBB PBB……。视频编码算法分区的关键在于使CPU负载尽可能暂时不变。

EDMA的使用

TMS320C64x器件的增强型DMA(EDMA)控制器是一种高效率的数据传输引擎,每个EDMA周期都可处理多达8个字节,从而可在CPU速率为600MHz时实现每秒2.4GB的总数据吞吐量。为了使我们的视频编码器应用能充分受益于传输引擎的带宽,充分利用可用的总线宽度非常重要。换言之,我们应该尽量使用32位大小的传输单元。为了有效利用EDMA,我们应当很好地了解EDMA的传输过程。在EDMA通信方面,每次数据传输都由传输请求(TR)发起,该请求包含执行传输所需的所有信息,如源地址、目标地址、传输属性、传输单元的数量等。TR根据优先级的不同分为不同的队列。如果TR达到队列头(head of queue),那么它将转移到EDMA传输控制器队列寄存器中,该寄存器执行由TR定义的实际数据移动。

传输控制器(TC)是EDMA引擎处理TR并执行实际数据移动的部分。在TC中,TR被转移至传输请求队列之一,等待处理。传输优先级决定了该队列应被提交到哪个队列,一共有四个队列,对应于四种优先级,每种深度为16项。这四种队列分别为紧急(Q0)、高(Q1)、中(Q2)以及低(Q3)。可对每个TMS320C64X传输请求发出者进行编程,使其可发出任意优先级的TR。地址生成/传输逻辑一次只能为每个优先队列的一个TR提供服务。传输逻辑可并行处理不同优先级的传输。为了最大化视频编码器中的数据传输带宽,只要可能,就应在所有四种优先级上对传输进行分配。TC包含四组队列寄存器,每种对应一个优先级队列,监控传输过程。在特定队列的寄存器组中,其会保持传输的当前源地址、目标地址以及数量等。这些寄存器不在器件的存储器映射中,对CPU不可用。传输过程中的实际数据移动发生在寄存器中。

EDMA也能通过使用CPU发出的QDMA请求执行非同步传输。换言之,QDMA传输是通过CPU实现同步的。在视频编码器中,EDMA传输由算法的数据流实现同步,而非通过外部事件实现。QDMA更适合发出单个的独立传输,以便快速移动数据,而不适合像其它EDMA通道那样执行周期性或重复性传输。每次发出的传输请求均由EDMA处理。根据优先级对请求进行排队,最先处理优先级较高的请求。由于EDMA的结构使然,要通过不同的队列提出传输请求(但根据优先级提交)。所有QDMA传输都采用帧同步提交。因此,QDMA总是请求传输数据的完整帧。对于任何QDMA提交而言,发出的请求只有一个。良好的视频编码器应并行采用所有三种优先级队列(低、中和高)以便在外部存储器与内部片上缓冲之间进行数据传输。

高速缓存优化

最大化高速缓存的效率是实现总体视频编码性能目标的关键因素之一。高效的高速缓存可减少由于存储器活动而造成的CPU停止响应,从而提高处理器的吞吐量。正如我们在第一节中介绍的那样,包括DM64x等在内的TM320C64xDSP使用高效的二级存储器架构实现片上程序与数据存取。在这种结构层次中,CPU直接与专用一级程序(L1P)和数据(L1D)高速缓存相连。L1高速缓存工作的速度与CPU相同。直接映射的L1P高速缓存是只读的,而却可对双路关联相关高速缓存L1D进行读写。将L1存储器与称作L2的二级片上存储器连接。L2是一种统一的存储器块,其包括程序与数据。L2高速缓存作为L1和片外存储器之间连接的桥梁。如欲获得本高速缓存架构的详细文档,敬请参阅C6000外设参考指南(SPRU190f)。

 
TMS320DM6467数字媒体SoC架构与视频处理优化 数字信号处理器(DSP)与ARM架构的异构多核SoC是现代嵌入式媒体处理的核心技术。TMS320DM6467作为典型代表,通过C64x+ DSP核心处理计算密集型算法,ARM926EJ-S负责系统控制,实现高效的视频编解码任务分工。其关键技术包括VLIW指令集、多级缓存架构和专用视频加速引擎(HDVICP),可显著提升H.264/MPEG2等视频标准的处理效率。在视频会议、数字媒体处理等场景中,合理配置双核通信机制和缓存一致性策略尤为重要。通过共享内存和硬件中断实现核间协作,结合EDMA数据传输和电源管理技 阅读详情

相关推荐

深入解析TMS320DM647/DM648 DSP子系统:内存架构与性能优化实战

在嵌入式数字信号处理(DSP)系统中,内存架构是决定整体性能的关键。其核心在于通过多层次缓存(如L1、L2)和高效的内存控制器,解决处理器与存储器之间的速度鸿沟,即“内存墙”问题。理解缓存一致性、直接内存访问(DMA)和内存映射原理,对于实现高带宽、低延迟的数据处理至关重要。这些技术能显著提升视频编码、音频处理等实时流媒体应用的效率。本文以德州仪器TMS320DM647/DM648系列DSP为例,深入剖析其C64x+ Megamodule核心与复杂的内存子系统(包括L1P、L1D、L2及IDMA),并探讨如

weixin_31858171的博客 246

tms320dm6446内核启动分析 分类: DSP ...

关于达芬奇DM6446,里面内部有两个部分,一个是ARM926ejs的核,还有一个是C64+DSP的视频处理核,而我需要关心的重点是arm926ejs的核(bootload和linux内核) 从bootloader可知,第一阶段主要是负责检测arm926ejs的相关硬件平台(主要是内存等),而第二阶段主要将内核映象以及根文件映象拷贝进入到RAM中运行! 硬件存储地址...

weixin_30788239的博客 278

深入解析TMS320DM6446:ARM+DSP+硬件加速的嵌入式视频处理核心

在嵌入式系统与多媒体处理领域,异构计算架构通过整合不同特性的处理核心来优化性能与能效。其核心原理在于让通用处理器、专用数字信号处理器和固定功能硬件单元各司其职,协同工作。这种分工带来了显著的技术价值:通用CPU擅长运行操作系统和复杂逻辑控制,DSP则凭借其超长指令字和单指令多数据流能力,高效处理视频编解码等规则计算密集型任务,而专用硬件加速单元能进一步卸载固定流水线操作,实现近乎零开销的处理。该架构广泛应用于对实时性、功耗有严格要求的场景,如网络摄像机、工业视觉设备和数字视频录像机。本文以经典的TMS320

weixin_30905981的博客 844

TI C6000系列DSP的流水线介绍和软件流水优化

本文主要介绍C6000系列DSP的流水线操作,从指令的fetch,指令译码到执行阶段,介绍了Fetch packet和execute packet以及延时slot和latency的概念,最后比较了C62x/C64x/67x等系列DSP的流水线的区别并介绍了TI的增强VLIW架构的含义。 流水线的概念 计算机流水线是Intel首次在486芯片中开始使用的。在CPU中把指令的执行分成若干个不

yuyin86的专栏 2662

深入解析TMS320DM647/DM648 DSP:架构、缓存配置与视频处理实战

数字信号处理器(DSP)是嵌入式多媒体系统的核心,其性能直接决定了视频编码、音频处理等实时应用的效率。DSP通过其独特的硬件架构,如VLIW(超长指令字)和专用计算单元,实现了极高的指令级并行度和计算密度,特别擅长处理规则且计算密集的信号处理算法。在视频处理领域,DSP的价值在于能够高效执行编解码、滤波、变换等核心运算,满足高清视频流对实时性和功耗的严苛要求。其应用场景广泛覆盖了安防监控、视频会议、医疗影像等设备。本文以经典的TMS320DM647/DM648处理器为例,深入剖析其C64x+内核的**VLI

weixin_29195615的博客 278

ARM+DSP异构架构视频处理实战:以TMS320DM816x为例

在嵌入式系统与实时处理领域,异构计算架构通过整合不同架构的处理单元,实现了性能与功耗的平衡。其核心原理在于将通用控制任务与专用计算任务解耦,由通用处理器(如ARM)负责系统管理与调度,而专用处理器(如DSP)则专注于执行计算密集型算法。这种分工协作的技术价值在于显著提升了特定场景(如视频编解码、音频处理)的处理效率与实时性。在视频处理、智能安防、工业视觉等应用场景中,异构计算已成为主流方案。本文聚焦于经典的ARM+DSP异构处理器TMS320DM816x,深入剖析其如何利用ARM Cortex-A8、C67

weixin_29172201的博客 246

arm64位FFmpeg与X264库

arm64位FFmpeg与X264库

daqinzl的专栏 525

TMS320DM6435 DSP芯片深度解析:从VLIW架构到视频处理实战

在嵌入式系统与数字信号处理领域,VLIW架构和缓存一致性是提升处理器并行计算效率与系统稳定性的核心概念。VLIW通过编译器静态调度多条指令并行执行,显著提高了指令级并行度,尤其适合图像处理、音视频编解码等规则数据流计算。缓存一致性则确保了多主设备(如CPU、DMA)访问共享内存时数据的正确性,是构建可靠实时系统的基石。这些技术共同支撑了高性能嵌入式处理器在安防监控、工业视觉等场景中的应用。本文以经典的TMS320DM6435数字媒体处理器为例,深入剖析其C64x+内核的VelociTI.2 VLIW架构设计

weixin_29183637的博客 279

深入解析TMS320DM6446 DSP架构:C64x+ CPU与内存映射实战指南

在嵌入式系统与数字信号处理(DSP)领域,理解处理器核心架构与内存系统是进行高效编程和性能优化的基础。C64x+ CPU作为德州仪器(TI)经典DSP架构的核心,其双数据通路、八个功能单元的并行设计,以及软件流水循环缓冲(SPLOOP)等增强特性,为实时音视频处理、通信算法等计算密集型任务提供了强大的指令级并行能力。内存映射与缓存层次结构的设计,则直接决定了数据吞吐效率和系统实时性。通过合理配置L1/L2缓存及内存属性寄存器(MAR),工程师可以在性能与确定性之间取得平衡,并有效管理多核间的缓存一致性问题。

weixin_33778544的博客 395

TMS320C64x/C64x+ DSP CPU and Instruction Set

2010年7月TI更新的版本,新加了一些说明和指令,非常有用

达芬奇DM64系列详解

达芬奇DM64系列详解

TMS320DM6467 DSP内存架构与优化实践

数字信号处理器(DSP)的内存架构设计是系统性能优化的核心环节。TMS320DM6467作为TI经典的DaVinci系列SoC,其ARM+DSP异构架构通过统一内存映射实现高效资源共享。该架构采用L1/L2缓存分级设计,支持灵活的内存配置模式,特别适合视频编解码等数据密集型应用。在工程实践中,开发者需要掌握缓存一致性维护、DMA传输优化等关键技术,通过合理的内存区域划分和访问模式优化,可显著提升实时信号处理性能。本文以DM6467为例,详解DSP内存子系统的设计原理与调优方法,为嵌入式系统开发提供实用参考。

weixin_30667649的博客 332

TMS320DM642视频采集例程

TMS320DM642视频采集例程 ,完整的工程

基于TI TMS320DM6467无操作系统Camera Link智能图像分析平台

1、板卡概述   该板卡是我公司推出的一款具有超高可靠性、效率最大化、无操作系统的智能视频处理卡,是机器视觉开发上的首选。   它集成 ARM9和 C64x+ DSP内核,性能比普通 DaVinci处理器提升数倍。 DM6467能以十倍的性能和十分之一的价格同时进行多种格式 HD编码转换。其内置高清视频协处理器( HD-VICP),特别适用于高清视频处理。带有 H.264 X-HD编解码器,

LISIRUI12345的专栏 1492

嵌入式系统/ARM技术中的CRC在TMS320C64x+DSP上的高效实现

摘 要: 介绍循环冗余校验CRC在TMS320C64x+系列DSP上的软件实现。 给出了该实现方法的理论推导过程并提供了相应的软件实现代码。   1 CRC常规实现方法   CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。   GCRC16(X)=X16+X12+X5+1   CRC通常由硬件实现,图1说明由硬件移位寄存器实现的3GPP CRC16。   图1中,表示异或(XOR)运算, 异或运算在移位寄存器中的位置与生成多项式相对应。CRC运算前,移位寄存器清零,随后数据位被移入

基于CANoe的车载以太网测试

以太网测试 CANoe

Yafet 4546
上一篇: 如何写一份好的工程师简历
下一篇: ADI Blackfin的Mem DMA高速通信
embeddedsoft
博客等级 码龄20年 51粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值