基于SSE技术的CCSDS译码复杂度的研究及改进

时间:2022-04-23 01:32:40

基于SSE技术的CCSDS译码复杂度的研究及改进

【摘要】随着人们对图像压缩算法的要求越来越高,实时性和复杂度成为衡量算法好坏的重要标准。Intel所的Pentium III以上的处理器增加了一些新的指令集:Streaming SIMD Extensions(单指令多数据流扩展指令集,简称SSE)。这些新指令集极大地提升了计算机在图形、动画、音频和视频等方面的性能。同时增加了8个128位寄存器(xmm0-xmm7),能同时处理4个单精度浮点变量,大大提升浮点计算效率。空间数据系统咨询委员会(CCSDS)于2005年11月了一套用于空间领域的图像压缩算法标准,其基本单元包括离散小波变换(DWT)和位平面编码器(BPE),其中小波变换使用了9/7小波。该算法主要用于空间领域,比如在航天器上,这对算法的实时性有着严格的要求。因此,对CCSDS算法复杂度的研究十分重要,简单、快速且内存占用率小的算法将越来越满足空间领域的需求。

本文详细介绍了CCSDS算法的基本原理以及SSE技术的指令集和运算的基本特点,并使用Intel VTuneTM Performance Analyzer软件分析研究程序译码过程中的时间复杂度,从中得出浮点运算较多的离散小波反变换(IDWT)是整个程序中占用时间最多的模块。

【关键词】图像压缩;SSE;CCSDS;时间复杂度;小波反变换

1. 前言

(1)图像压缩编码的目的是在保证图像质量的前提下,用尽可能少的比特数来表示数字图像中所包含的信息。从信息论的角度来讲,图像压缩编码属于“信源编码”。图像信息之所以能够压缩,在于原始图像中存在着大量的信息冗余,如时间冗余、空间冗余、信息熵冗余、谱间冗余、几何结构冗余、视觉冗余和知识冗余等等。图像编码技术是在信道和存储容量有限的条件下,解决由于图像数据量庞大带来的存储和传输困难的主要措施,在军事和民用的许多领域中都具有重要的研究价值。

(2)在图像编码领域,由于具有描述非平稳信号的独特优点,小波变换可将图像信号分解成不同空间分辨率、不同频率特征和方向性特征的子图像信号,这便于在失真编码中综合考虑人的视觉特性,同时也利于图像的逐渐浮现传输。另外,它作用于图像的整体,在有效去除图像的全局相关性的同时,使量化误差分散到整个图像中,避免了JPEG方法带来的“马赛克”方块效应。所有的这些优势使得它成为一种极有前途的编码方法,它所具备的高压缩潜力也正不断为各国学者的研究成果所证实。近年来涌现出来的一些基于小波变换的压缩算法,结合特定的量化和编码方法,普遍能够在高压缩比下获得比JPEG更为理想的压缩性能。其中最为突出的是Shapiro提出的内嵌零树(EZW)编码方法、Said与Pearlman提出的基于多级树集合分裂(SPIHT)编码方法以及由Taubman提出的EBCOT编码方法。EBCOT编码方法已经成为最新静止图像压缩国际标准JPEG2000的标准量化方法。

2. 本文简要介绍了数据系统咨询委员会(CCSDS)空间数据压缩标准,并在此基础上重点研究了CCSDS算法程序的译码复杂度

2.1作为数据压缩的一种,CCSDS图像压缩算法具备如下基本特点:

(1)减少传输带宽;

(2)降低存储和缓存需求;

(3)在给定传输速率下减少传输时间。

2.2同时,作为应用于特殊领域的图像压缩算法,CCSDS算法还具有如下独有特点:

(1)该算法被明确指定用于航天器上;

(2)根据航天应用的侧重点不同,可以从算法的性能和复杂性之间均衡;

(3)该算法复杂性比较低,有利于快速和低功耗硬件实现;

(4)算法的选项很少,在实际应用时不需要很强的背景知识。

2.41999年2月,Intel了最新款处理器Pentium III处理器,从本质上说,Pentium III处理器只不过是一个运行在更高速度的Pentium II处理器,另外再增加了一些新的指令集:Streaming SIMD Extensions(单指令多数据流扩展指令集,或者称为SSE)。这些新指令集的增加并不会影响原来的程序运行,因为Pentium III处理器采用的是完全兼容于原来Pentium II处理器的IA-32构架。而且,它极大地提升了计算机在高级图形、三维动画、数据流音讯、视频、语音识别应用等方面的性能。

2.5目前,人们对图像压缩算法的要求越来越高,因此,对图像压缩算法的研究日趋重要。当前对图像压缩算法的评价不仅仅停留在实现上,并且很大程度上取决于该算法的效率与复杂程度。

图2测试用图

图3系统各可执行文件所占资源

2.6对于前文所叙述的CCSDS算法,一个空间数据系统咨询委员会(CCSDS)提出的用于空间领域的数据压缩标准,其算法的重要性不言而喻。对于一个算法来说,一般情况下,都是分为编码和译码两个部分,且两个过程互为逆过程。CCSDS算法也不例外,分为编码和译码两个过程。对于这个算法,应用于深空通信领域,对解碼的要求比较高,这是因为在对编码过的码流进行译码的过程,需要非常高的实时性,这样才能给人们带来“第一手”信息,让人们掌握永不过时的信息。否则,在这个信息万变的时代,只会永远落在别人身后,错失发展的时机。

2.7性能测试所使用的工具:Intel VTuneTM Performance Analyzer(以下简称VTune)。VTune是Intel一个功能强大的性能分析软件。主要包括三个小工具:

(1)Performance Analyzer:性能分析,找到软件性能比较热的部分,一般也就是性能瓶颈的关键点,说明我们收集资料发现问题。

(2)Intel Threading Checker:用于查找线程错误,能够检测资源竞争、线程死锁等问题。程序在并行化后,可以通过Threading Checker检测一下有没有多线程相关的错误。

(3)Intel Threading Profiler:线程性能检测工具,多线程化有可能会有负载比平衡,同步开销过大等等线程相关的性能问题。该工具可以发现每一个线程每一时刻的状态。

本章主要介绍了本文的核心内容,即基于SSE技术的CCSDS解碼复杂度的研究与改进。首先是对原CCSDS算法程序进行性能分析,得出该程序存在的热点问题;然后对热点问题进行分析,得出占用时间资源较多的模块为IDWT,并以此为切入点,在代码上采用SSE指令系统对IDWT模块进行优化,此间还介绍整个过程的操作流程以及具体步骤,并最后得出结论:使用SSE技术对CCSDS算法程序进行优化,不改变译码图像质量的前提下,IDWT模块译码时间节约可达86%以上,而整个CCSDS解碼时间节约可高达75%以上。因此,SSE技术用于该CCSDS算法程序中,对于译码速度的提高有着重要的贡献,以此可以提高解碼的效率以及实时性。

上一篇:浅析高层建筑设计需要注意的问题 下一篇:论建筑电气设计的影响