Qualcomm多年来一直在研究其内部的DSP核心。最初开发蜂窝调制解调器,最近也作为应用协处理器来使用,从而将多媒体任务从智能手机和平板电脑的CPU中卸载掉。现在,它的Hexagon v6 DSP核心,已经在Qualcomm的骁龙™ 820 SoC上实现了,这将大大提高高级成像和计算机视觉任务的性能。作为一款多功能的车载SoC,拥有强大的内置DSP是不可或缺的,它是计算机成像和视觉计算技术的基础。这将大大提升芯片处理能力,特别是多媒体音视频的处理将更加得心应手。
图1 骁龙 820 框图,包含Hexagon v6 DSP的第一个SoC
骁龙™ 820 SoC集成了许多能够相互通信的异构处理内核和通过高速缓存等连接的其他应用处理器资源。包括下一代Kryo ARMv8指令集CPU,,还有其他一些关键的进步如能够实现嵌入式视觉和成像功能,例如Adreno™ 530 GPU和Spectra ISP(image signal processing)核心(图1);同时也是第一颗集成Hexagon v6 DSP的芯片。
Hexagon 680第六代架构QDSP6及其多线程演进
Qualcomm Hexagon 680 DSP(数字信号处理器)经过不断的优化和改进,目前集成于骁龙820处理器的是“Hexagon”是Qualcomm第六代DSP的产品名字,也被称为QDSP6。第六代架构可以进一步细分为不同的进化版本。DSP除了视频处理,播放高质量音视频之外,传统Camera后处理,包括摄像头数据处理,动态增强,色彩调整,HDR等,Hexagon 680 DSP均可以支持。
Hexagon 680是一个主时钟驱动的多线程体系结构(除了初始v1),Hexagon v2是一个六线程设计,Hexagon v3最初也是一样,但是后来缩减到四个线程。Hexagon v4和v5同时支持多达三个同步线程,每个线程使用峰值性能三分之一(也就是说一个600MHz的核心,它的每个线程200MHz)。
相对于系统架构的计算能力,Hexagon v5(骁龙800处理器)主要集中在两个主要的增强功能:一个新添加的字节操作向量操作选项,扩展现有的16和32位操作数的选择。第二个就是浮点算法支持。Hexagon v5进化出超越其前代的基础“循环”的线程处理,一个称为DMT(dynamic multithreading)的更先进的方法。在这个较新的实现中,一个尚未就绪的线程(由于缓存丢失、中断等)会自动跳过,从而导致在给定的核心时钟速率下对其他线程的更高的有效性能。
由于架构和光刻技术的进步,每代的Hexagon往往比其上一代拥有更高的时钟速率,v6也是同样如此。Qualcomm Hexagon 680的时钟速率高达2GHz,转化为每个线程500MHz的峰值速度(所有四个线程被使用)。
Hexagon 680的两个新特性
Hexagon 680 DSP首先是一个完全独立的、用于传感器处理的DSP。它被巧妙地命名为“低功率岛”(low power island),用于改善“始终开启”用例中的电池续航时间,包括计步器或活动计数器,以及传感器辅助定位(当GPS信号不够强时,你手机的传感器可以提供更精确的定位)。
其次,以Hexagon向量扩展(HVX)的形式为Hexagon DSP提供更新水平的功率。这个增加的硬件在与Qualcomm Spectra相机图像信号处理器(ISP)配合使用时,支持先进的成像及计算机视觉(Computer Vision)。例如,在弱光情况下,骁龙820将通过ISP和DSP自适应地增亮视频和照片中较暗的区域,使其不会显得过暗。借助于Hexagon 680,骁龙820在执行该操作时是前几代骁龙处理器速度的3倍,且能耗仅为10%。
强大的矢量扩展引擎HVX—计算机视觉构建基础
Hexagon 680 DSP内置了1024bit的SIMD(single instruction, multiple data)矢量数据寄存器,即新增的HVX(Hexagon Vector Extensions)向量支持。每次可以处理4条VLIM(very large instruction word)向量指令,每个循环可以处理多达4096bit数据。由于Hexagon采用VLIW的方法,每个线程在给定的时钟周期里可以执行多达四个同步指令的“槽”;其中多达一半的“槽”提供给SIMD,使其能够有更大的潜在的计算能力。在基层,每个线程都是标量的性质,同时支持定点(QDSPv5)和浮点算术运算。每个线程的“引擎”包含一组32位寄存器,标量单元都具有共同的并且可变大小的L1数据和指令高速缓存,以及一个统一的L2高速缓存。
图2 由Qualcomm Hexagon 680 DSP核心支持的线程可以指向标量或矢量处理单元(左图);后者存储中间结果及互相通讯,并且其余的核心通过共享L2实现统一的高速缓存(右图)。
由Qualcomm Hexagon 680 DSP核心支持的线程可以指向标量或矢量处理单元,标量单元可以把控制权交给HVX向量处理“引擎”的核心(图2左)。如图2右所示,两个HVX单元互相沟通,通过共享的L2高速缓存的核心部分,并绕过L1缓存。凭借它们共享的L2缓存方案,Hexagon 680可以作为一个预处理器的ISP。其中每个HVX单元还包含一组32个1024位的寄存器;这个寄存器可以分成两组,即各32个512位的寄存器来使用。因此利用两个HVX单元,Hexagon V6可以在两个同步硬件线程中操作1024位向量,或者在多达四个同步硬件线程中操作512位向量。对于标量单元,每个HVX单元是一个四矢量槽VLIW体系结构,允许最多四个向量运算的VLIW指令包。
HVX是支持8位,16位和32位SIMD操作数的定点计算,但不支持浮点计算。据Qualcomm官方介绍,这考虑到晶体管数量和功耗原因。正因为省去浮点计算的支持,使得更小和更节能的设计成为可能。我们认为,许多先进的图像处理和计算机视觉算法不需要浮点运算,并且可以交替使用浮点来支持内置的Hexagon v6标量单元。
强大的矢量运算能力和优化的功耗设计,通过集成于骁龙820的Hexagon 680 DSP将在更广泛的最新用户体验中起到重要作用,敬请关注骁龙820处理器的最新动态,并请参考Qualcomm Adreno 530和Qualcomm Spectra ISP中带来的视觉提升。
SDK:专业软件开发福音
前面主要为大家描述了820为计算视觉设计的硬件基础,要发挥820强大的功能,那么软件是必不可少的,Qualcomm为专业开发人员提供了强大的软件SDK开发套件--Hexagon DSP SDK和FastCV Computer Vision SDK。能够帮助嵌入式开发者快速方便的访问Hexagon DSP嵌入式计算资源和计算机视觉(CV)库, 迅速高效的缩短开发周期。
针对移动设备,高效的处理能力在丰富多彩的多媒体体验方面是至关重要的,因为它影响生产成本、功耗、满足消费者对高性能的需求的能力。 Hexagon™ SDK设计的目的是使设备制造商和独立软件供应商优化多媒体的功能和性能。这些优化使音频、成像、嵌入式视觉和异构计算在嵌入到骁龙200和800处理器 平台的Hexagon DSP上提高速度,创建引人注目的多媒体用户体验,通过降低功耗和提高在音频、嵌入式视觉、视频和计算密集型程序方面的性能。
Hexagon SDK是一个软件开发包,能够使嵌入式开发者访问Hexagon DSP嵌入式计算资源。使用Hexagon SDK,具有尖端专业知识从事Native层编程的开发者在更短的时间内(数周而不是典型的6到9个月,在通过修改源代码的级别上)可以利用世界一流、基 于硬件的多媒体特性来交付产品和开发交互式用户体验。SDK是旨在帮助确保多媒体处理效率,这意味着流动性增加、低延迟和优良的应用性能。它还可以帮助你克服比如电量和处理能力不足方面的障碍。Hexagon SDK也可以把CPU上的高计算负载转移到使用共享远程代码对象的异构计算环境中。
Hexagon DSP上的功能开发通过OEM生态系统已经被广泛的部署到设备和电脑、高清电视和汽车的消费品制造商。这就使得移植你手机上的应用到其他设备上成为可能。因为引人注目的多媒体应用为设备提供重要的产品差异化,它们迎合了设备制造商对竞争优势的要求。
对于移动设备而言,相机的功能远不止拍照摄像,作为补充,FastCV SDK提供了一个针对移动设备优化的计算机视觉(CV)库,包括最常用的视觉处理功能,供各种移动设备甚至消费市场手机使用。借助FastCV,您可以在基于摄像头的应用中增加手势识别、人脸识别与跟踪、文字识别与跟踪、增强现实(Augmented Reality,AR)等功能。
中间件开发人员可以利用FastCV构建框架,来开发关于计算机视觉应用;Qualcomm的增强现实(AR)SDK是一个极好的例子。高级CV应用开发人员还可以在应用中直接使用FastCV功能。
加入Qualcomm开发者社区就可以根据你的习惯和项目选择不同的开发套件(支持主流Windows, Linux, Mac OS开发环境),开发出你希望的应用。令人激动的是,根据FastCV SDK许可协议,其授权不收取任何费用。
附录
Hexagon DSP SDK下载地址
https://developer.qualcomm.com/software/hexagon-dsp-sdk