Hexagon 680 DSP内置了一个1024bit的SMID矢量数据寄存器,高通称之为Hexagon Vector Extensions—Hexagon矢量扩展,简写为HVX。HVX每次可以处理四条VLIW向量指令,每个循环可以处理多达4096bit数据,需要注意的是,一般实际应用中的指令比DSP支持的大指令宽度要小很多,不过借助于SIMD和系统的特性,单个指令可以一次操作多个数据,因此在计算中很多数据可以被一次性填充进入处理过程,实现效能的大化。另外,HVX为了实现上下文切换功能,还设计了32个向量寄存器。规格方面,HVX支持32位的定点十进制数的操作,但不支持浮点计算,这应该是考虑到晶体管数量和功耗的原因,一般情况下也没有浮点计算的需求。总的来看,这样的规格和性能足以满足4K视频以及20M像素摄像头的处理需求了。高通还展示了HVX底层设计的一些细节。HVX内部拥有L1数据和指令缓存,4个并行的VLIW标量处理单元,单元的运行频率为500MHz,还有共享的L2缓存。此外,HVX中还有两组独立的矢量单元,这样设计实际上是为了执行多线程任务,比如同时处理音频和图像处理,矢量单元可以独立进行计算。
与此同时,在存储系统方面,矢量单元和向量单元共享L2缓存。但HVX的L2实际上在一个周期内就可以完成负载的处理,因此有些人也认为这就是一个更为宽松的L1缓存。从应用中来看,Hexagon 680可以直接将数据从摄像头传递至L2缓存(速度为1.2Gp/秒),并将其传输给ISP开始处理,以避免占用DRAM,同时也可以降低能耗。此外,高通还为设计了了一个SMMU(System Memory Management Unit),它可以自动管理那些不可复制的数据,并使得多个并发应用共享CPU资源,实现效能提升。
首先来看看有关Hexagon 680的SIMD架构和之前NEON架构的对比。NEON用作浮点和加速处理已经有很长一段时间了,也一直是ARM架构处理器增强浮点计算、矢量计算的重要组建。相对于HVX来说,NEON就显得特别“小气”。因为在一个单独的“核”下面,NEON只支持128bit的单个SIMD管道,相比4路的、1024bit-SMID的HVX显然要差太远了。不仅如此,HVX的SIMD的计算还拥有512KB的L2(相当于L1)缓存支持,相比之下,NEON之前在高通的处理器中应用时,只能使用32KB的L1指令缓存和L1数据缓存。显然,更大的缓存容量能够隐藏DRAM延迟,减少数据调用、等待时间并显著提高计算效率。Hexagon 680在相同的视频编辑工作下,大概能够达到之前NEON三倍的效率,并降低了功耗。
此外,四个标量的线程也使得很多计算可以由HVX直接处理完成而不需要CPU的辅助,这也可以降低能耗并使得开发人员能够更方便的使用HVX。高通展示了有关Hexagon 680中HVX的计算能力测试结果。根据测试来看,HVX的性能随着线程数量增加,测试成绩增加非常显著,高可超过14000分。另外,在DMIPS上,三个线程后,DMIPS的性能增加速度放缓,但是依旧逼近14000分。高通认为,目前很多应用程序同时需要矢量和标量计算,在HVX的加持下,很多应用可以考虑转移到HVX上来计算,这样就释放了大量的CPU资源,CPU可以转去做更为重要的一些工作,对GPU来说也是如此。