高通骁龙(Qualcomm Snapdragon)CDSP HVX HTP 芯片简介与开发入门

1. Hexagon DSP/HVX/HTP 硬件演进

说到高通骁龙芯片大家应该不会陌生,其作为最为广泛的移动处理器之一,几乎每一个品牌的智能手机都会使用高通骁龙的处理器。

高通提供了一系列骁龙芯片解决方案。根据性能强弱分为了5个产品系列:从最高端的SM8xxx和SDM8XX系列,到中低端的SDM7XX, SDM6XX, SDM4XX系列。这些SOC上具有的信号处理芯片称为Hexagon DSP。低端系列可能只包含一个Hexagon DSP, 而高端系列通常有多个Hexagon DSP子系统。

各SOC上,相比于主控CPU而言, DSP具有典型的低主频(low clock)更高的指令级并行度(SIMD)。这使得DSP相比CPU具有更低的功耗和更高的计算能力。因此适合于将尽可能多的高计算密集型任务offload到DSP, 来减少整体的设备功耗。

随着Hexagon DSP的更新与发展,其在软硬件架构、主频和指令级上都有提升。下图一览表描述了Hexagon DSP/HVX/HTP 硬件架构的演进历史:

芯片代号

微架构

硬件演进(组成及命名变化)

MSM8996(SDM820)

v60

3 个 Hexagon DSPs: application, modem, and sensor:

Application DSP, Modem DSP, Sensor DSP

其中aDSP是Audio/Voice and Compute applications共享

MSM8998(SDM835)

v62

SDM660

v60

4 个 separate DSP, 每个都用于一个特定的应用领域:

sensor (sDSP), modem (mDSP), audio (aDSP), and compute (cDSP, dedicated for Compute applications, scalar core + HVX)

SDM670/SDM710

v65

Compute DSP + HVX

SDM845

v65

Computer subsystem:

Compute DSP + HVX

SM6150

V66

Computer subsystem:

Compute DSP + HVX 

(64-byte/512-bit mode will no longer be supported from Hexagon version v66 onwards)

SM8150

V66

Computer subsystem:

Compute DSP + HVX

SM8250

 V66

Computer subsystem:

Compute DSP + HVX

SM8350

V68

Computer subsystem:Hexagon Tensor Processor with Hexagon core + HVX + HMX

SM8450

V69

.....

【注】

1.客户在查阅相关文档的时候经常看到有aDSP, cDSP, HTP这三个名词, 对其较为迷惑。实际上,在SDM660之前,Audio/Voice 和 Compute application是共有的一块DSP芯片叫aDSP 。从SDM660开始aDSP这个名字就让给了audio DSP, 而我们的CDSP则作为Computer DSP的缩写。随着AI领域应用的涌现和需求到SM8350DSP芯片内部封装了一块专门用于AI MAC计算的协处理器HMX,专门面向深度卷积神经网络 (DCNN) 模型而打造。 添加了HMX之后的CDSP芯片更名为HTP(Hexagon Tensor Processor)。

本专栏文章围绕高通骁龙较新的平台,对其软硬件架构特性和如何在其上进行开发讲述。

2. HTP(Hexagon Tensor Processor)介绍

  HTP hardware Architecture包含4个模块:

(1)Scalar Processing V68 core with six hardware threads

(2)Hexagon ISA is extended with HVX instructions: 4 x HVX vector tightly coupled coprocessors

(3)HMX, 1x matrix tightly coupled coprocessor

(4)CDSP memory

通常我们将Hexagon Core特指Hexagon DSP里面的scalar 硬件处理线程。而  HVX(Qualcomm Hexagon eXtensions)则 是 Hexagon DSP 的向量处理单元。 目前高通骁龙Hexagon DSPs中只有CDSP(HTP)芯片上有HVX:

•添加宽向量(512 位或 1024 位)SIMD 支持

•Hexagon v6x 处理器架构的指令扩展支持在协处理器中实现向量操作

•适用于高性能成像、计算和机器学习应用

HMX作为HTP上专门用于深度学习MAC计算的硬件模块暂时不对客户开放进行可编程。客户只能通过QNN等高通提供的软件库接口进行调用。

HTP上客户可编程的只有Hexagon CDSP scalar core + HVX。而其中Scalar由于最多只能同时处理64bit数据,因 而最大并行度只有8 。HVX支持128Byte的向量寄存器(Vector Register)可以同时处理128Byte数据,而作为我们HTP上开发的重点。本专栏及在后续的文章中,将仍旧使用CDSP来作为Hexagon core + HVX的统称。用scalar代表标量thread以及scalar指令。 用HVX代表Vector thread以及Vector指令。

我们在进行CDSP开发的时候,除了学会使用具体的指令完成自己想要的功能之外,还有一个重要的点就是对数据进行读写。因此有必要理解CDSP开发中的数据通路。

CDSP 内存模块框图:

标量寄存器(Scalar registers):

       Hexagon 标量处理核心包括32个32bit的通用寄存器 R0-R31. 32个32bit的控制寄存器C0-C31.

向量寄存器:

       HVX处理核心包括32个1024bit的数据向量寄存器 V0-V31. 4个128bit的 预测寄存器Q0-Q31.

将CDSP的内存存储结构总结如下:

Level

Type

Description

0

标量寄存器;向量寄存器

Hexagon core: 6个硬件标量线程; Hexagon Vector eXtensions: SIMD 处理单元有4个向量硬件线程

1

数据L1; 指令L1;

数据L1用于标量指令寄存器获取数据; 指令L1用于获取标量、向量线程指令.

2.1

统一的L2

L2 cache 可以配置一部分成为L2TCM用于用户直接使用

2.2

VTCM

HVX片上内存,适合于Vector线程,速度比DDR快

3

DDR(Ion-mem)

DDR使用AXI协议与L2进行数据存取

3. CDSP编程开发入门——手机端运行一个独立程序

为了开始使用骁龙SOC上的CDSP进行算法移植功能模块的开发,高通给出了如下的开发总体流程。

步骤1:首先第一步就是需要安装Hexagon SDK软件开发包。Hexagon SDK可以从高通的Qualcomm Developer Network (QDN)网站上下载。

[注]对于早期的SDK版本,开发者可以从高通开发者网站上下载到。由于高通的骁龙硬件平台更新后,相应的编译工具也必须要更新到指定的SDK版本。 因此建议客户尽可能安装最新的SDK版本。

安装完成以后,可以从如下的路径获取到入门相关文档和示例:

(1). SDK说明文档入口:C:\Qualcomm\Hexagon_SDK\<Latest_Version>\docs\index.html

(2). CDSP开发指令与工具文档:C:\Qualcomm\Hexagon_SDK\<Latest_Version>\tools\HEXAGON_Tools\x.x.xx\Documents\Hexagon_Document_Bundle.pdf

(3). SDK示例:

C:\Qualcomm\Hexagon_SDK\<Latest_Version>\examples

对于新版本的SDK, 还提供了如下功能更为丰富以及体现新特征的示例以及文档:

C:\Qualcomm\Hexagon_SDK\<Latest_Version>\addons\compute\examples。

C:\Qualcomm\Hexagon_SDK\<Latest_Version>\addons\compute\docs\index.html.

步骤2:安装好CDSP开发的SDK之后,要编译运行一个SDK自带的example用以确保本地完整的开发工具都已经准备妥当。下面以SDK3.5.4例讲解如何运行一个example的步骤。 这些步骤在上面列出的说明文档中也有介绍:

2.1. 打开一个windows DOS界面. 运行环境配置脚本完成一些环境变量的配置:C:\Qualcomm\Hexagon_SDK\3.5.4>setup_sdk_env.cmd

2.2. 编译example benchmark。由于ARM作为主控芯片,CDSP是作为子系统计算芯片。他们具有不同的ISA,因此需要分别编译安卓端和CDSP端的库。 而作为一个可独立运行的示例,安卓端也同时应当准备一个可执行文件,去调用安卓端的库:

编译安卓端库以及可执行文件:

C:\Qualcomm\Hexagon_SDK\3.5.4\examples\common\benchmark>make tree V=android_ReleaseG_aarch64

编译完成之后应当得到如下的文件夹路径以及编译结果:

C:\Qualcomm\Hexagon_SDK\3.5.4\examples\common\benchmark\android_ReleaseG_aarch64\ship\libbenchmark.so    ----->android端库

C:\Qualcomm\Hexagon_SDK\3.5.4\examples\common\benchmark\android_ReleaseG_aarch64\ship\benchmark         ------->可执行文件

编译CDSP端库:

C:\Qualcomm\Hexagon_SDK\3.5.4\examples\common\benchmark> make tree V=hexagon_Release_dynamic_toolv83_v66

编译完成之后应当得到如下的文件夹路径以及编译结果:

C:\Qualcomm\Hexagon_SDK\3.5.4\examples\common\benchmark\hexagon_Release_dynamic_toolv83_v66\ship\libbenchmark_skel.so    ----->DSP端库

步骤3:准备好手机跑example需要的代码文件之后,我们还需要准备好手机运行环境。高通设置了安全机制,使得所有CDSP的程序在骁龙手机上运行的时候都需要进行签名, 否则会出现.so库签名失败的log。高通提供了多种签名方式。在这里,我们讲解一种在进行算法模块指令代码开发阶段采用的测试签名方式。

客户做测试签名的手机必须是开发机型,即no-fused device。如果从市场门店购买的手机,通常已被开启了secure boot, 因此无法使用测试签名。 如何查看手上的手机是否fused, 每个手机厂商都有自己的快捷键码。同时下面也提供了一种方式:

C:\adb_fastboot_drivers>fastboot getvar secure

secure: no

Finished. Total time: 0.002s

拿到测试机之后,用下面的步骤进行给手机签名。被签名的手机则可以跑任意的CDSP库:

3.1. C:\Qualcomm\Hexagon_SDK\ 3.5.4>adb push C:\Qualcomm\Hexagon_SDK\3.5.4\tools\elfsigner\getserial\CDSP\android_Release\getserial    /data/local/tmp

3.2. C:\Qualcomm\Hexagon_SDK\3.5.4>adb shell chmod 777 /data/local/tmp/getserial

3.3. C:\Qualcomm\Hexagon_SDK\3.5.4>adb shell /data/local/tmp/getserial

####################Serial number (see below)###########################

Serial Num : 0x5d9a2fe3

####################Serial number (see above)###########################

注释:stdout会出现一串手机序列号。这里以我的手机为例

3.4.C:\Qualcomm\Hexagon_SDK\3.5.4\tools\elfsigner>python elfsigner.py -t 0x5d9a2fe3

Logging to C:\Qualcomm\Hexagon_SDK\3.5.4\tools\elfsigner\output\Elfsigner_log.txt

        Attention:

        Use of this tool is conditioned upon your compliance with Qualcomm

        Technologies'(and its affiliates') license terms and conditions;

        including, without limitations, such terms and conditions addressing

        the use of such tools with open source software.

        Agree? [y/n]:

        y

Signing a file may take up to 3 minutes due to network connectivity. Please wait patiently.

------------------------------------------------------------

Signing complete! Output saved at C:\Qualcomm\Hexagon_SDK\3.5.4\tools\elfsigner\output\testsig-0x5d9a2fe3.so

3.5. C:\Qualcomm\Hexagon_SDK\3.5.4\tools\elfsigner>adb push C:\Qualcomm\Hexagon_SDK\3.5.4\tools\elfsigner\output\testsig-0x5d9a2fe3.so    /vendor/lib/rfsa/adsp

步骤4:将编译好的库用adb推送到手机端,运行。

4.1在C:\Qualcomm\Hexagon_SDK\3.5.4\examples\common\benchmark路径下新建一个windows bat脚本,命名为runv.bat,填入如下的命令行:

adb root

adb remount

adb shell rm -rf /data/local/tmp/runtime

adb shell mkdir /data/local/tmp/runtime

adb shell mkdir /data/local/tmp/runtime

adb push  ./android_ReleaseG_aarch64/ship/benchmark /data/local/tmp/runtime

adb push  ./android_ReleaseG_aarch64/ship/libbenchmark.so /data/local/tmp/runtime

adb push  ./hexagon_Release_dynamic_toolv83_v66/ship/libbenchmark_skel.so  /vendor/lib/rfsa/adsp

adb shell mkdir /data/local/tmp/runtime/data

echo chmod 755 /data/local/tmp/runtime/benchmark  > tmp

echo cd /data/local/tmp/runtime >> tmp

echo export LD_LIBRARY_PATH=./ >> tmp

echo ./benchmark -f epsilon -w 256 -h 64 -P 255  -L 10 -l 10 -s  >> tmp

echo exit >> tmp

adb shell < tmp

:del tmp

4.2运行脚本C:\Qualcomm\Hexagon_SDK\3.5.4\addons\compute\examples\benchmark>runv66.bat。 如果前面的步骤一切正常的话,此处运行完之后终端窗口会有类似如下的success提示:

C:\Qualcomm\Hexagon_SDK\3.5.4\examples\common\benchmark>

setting clocks to power level 255, Deprecated power level NOT used 1

src - allocated 16384

dst - allocated 16384

ref - allocated 16384 (via malloc)

calling epsilon on a 256x64 image...

run time of epsilon: 10319 microseconds for 10 RPC iterations, each with 10 iterations inside the DSP.

Last iteration DSP-measured time (for 10 iterations): 157 uSec, 220417 cycles (RPC overhead 641 uSec), apparent clock rate 1403 MHz

Average DSP execution time = 157 uSec, Average RPC overhead = 874 uSec

return value from epsilon: 0

- success

4. 术语表

术语

解释

CDSP

Compute Digital Signal Processor 

HVX

Hexagon Vector eXtension

HMX

Hexagon Matrix eXtension

 作者:sallyISshanli

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/40210.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数学建模】 数据处理与拟合模型

文章目录 数据处理与拟合模型1. 数据与大数据1.1 什么是数&#xff1f;什么是数据&#xff1f;1.2 数据与大数据1.3 数据科学的研究对象 2. 数据的预处理2.1 为什么需要数据预处理2.2 使用pandas处理数据的基础2.3 pandas常用方法总结2.4 数据的规约1) 维度规约2) 数值规约3) 数…

WAF的新选择,雷池 SafeLine-安装动态防护使用指南

什么是 WAF WAF 是 Web Application Firewall 的缩写&#xff0c;也被称为 Web 应用防火墙。 区别于传统防火墙&#xff0c;WAF 工作在应用层&#xff0c;对基于 HTTP/HTTPS 协议的 Web 系统有着更好的防护效果&#xff0c;使其免于受到黑客的攻击&#xff1b; 通俗来讲&#…

推动高效能:东芝TB67H301FTG全桥直流电机驱动IC

在如今高度自动化的时代&#xff0c;电子产品的性能和效率成为了工程师们关注的焦点。东芝的TB67H301FTG全桥直流电机驱动IC应运而生&#xff0c;以其卓越的技术和可靠性&#xff0c;成为众多应用的理想选择。无论是在机器人、家用电器、工业自动化&#xff0c;还是在其他需要精…

小型语言模型SLM:趋势和用例

前言 近年来&#xff0c;GPT 和 BERT 等大型语言模型 (LLM) 不断发展&#xff0c;参数数量从数亿飙升至 GPT-4 等后继者的一万亿以上。然而&#xff0c;不断增长的参数规模引出了一个问题&#xff1a;对于企业应用来说&#xff0c;参数规模越大就一定越好吗&#xff1f; 答案…

Java8 新特性stream、forEach常用方法总结

1、去重 List<Long> list new ArrayList<>();list.add(1L);list.add(2L);list.add(3L);list.add(3L);list.stream().distinct().collect(Collectors.toList()); 2、筛选出符合条件的数据 1&#xff09;单条件筛选 筛选出性别为男的学生&#xff1a; List<…

35 智能指针

目录 为什么需要智能指针&#xff1f;内存泄露智能指针的使用及原理c11和boost中智能指针的关系RAII扩展学习 1. 为什么需要智能指针&#xff1f; 下面我们先分析一下下面这段程序有没有什么内存方面的问题&#xff1f; int div() {int a, b;cin >> a >> b;if (…

Ubuntu无法安全地用该源进行更新,所以默认禁用该源。

解决方案 1. 获取并添加缺失的 GPG 公钥 可以使用 apt-key 命令来添加缺失的公钥。根据错误信息&#xff0c;缺失的公钥是 3B4FE6ACC0B21F32。 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F322. 更新软件包列表 添加公钥后&#xff0c;更…

centos7 修改mysql的datadir流程

旧目录&#xff1a;/var/lib/mysql/ 新目录&#xff1a;/data/mysqlData/ 1、先将 cp my.cnf /etc/my.cnf 然后再yum install mysql-community-server开始安装mysql… (第一次安装的话&#xff0c;一般只执行第一步就可以了) 2、修改datadir的值 3、创建新目录 4、删除旧目录…

分享一款超火的的发型stable diffusion提示词!

前言 1、女性发型 Tag短发侧刘海高马尾麻花辫甜美卷发半扎发侧分卷发半扎马尾发波浪空气刘海波波头高马尾空气刘海自然波浪卷复古波浪卷发短发齐刘海矮扎丸子头露出额头小波浪刘海披肩卷发英文Short Hair with Side BangsHigh Ponytail BraidSweet CurlsHalf-Up HairSide-Part…

用Python轻松转换Markdown文件为PDF文档

Markdown&#xff0c;以其简洁的语法和易于阅读的特性&#xff0c;成为了许多作家、开发者和学生记录思想、编写教程或撰写报告的首选格式。然而&#xff0c;在分享或打印这些文档时&#xff0c;Markdown的纯文本形式可能无法满足对版式和布局的专业需求。而将Markdown转换为PD…

【经验篇】Spring Data JPA开启批量更新时乐观锁失效问题

乐观锁机制 什么是乐观锁&#xff1f; 乐观锁的基本思想是&#xff0c;认为在大多数情况下&#xff0c;数据访问不会导致冲突。因此&#xff0c;乐观锁允许多个事务同时读取和修改相同的数据&#xff0c;而不进行显式的锁定。在提交事务之前&#xff0c;会检查是否有其他事务…

Linux和windows网络配置文件的修改

Linux和windows网络配置文件的修改 网络配置文件是计算机网络管理中至关重要的一部分。正确配置网络文件可以确保计算机与网络设备之间的通信顺畅&#xff0c;避免网络故障。本文将详细介绍网络配置文件的修改方法&#xff0c;包括常见命令、使用方法举例&#xff0c;以及一些…

《雅思口语真经总纲1.0》话题实战训练笔记part1——Work or study(必考)

《雅思口语真经总纲1.0》笔记——第四章&#xff1a;口语素材大全&#xff08;part1、part2、part3回答准则及练习方法&#xff0c;不包括范例答案&#xff09;★★★★★ 文章目录 Work or study&#xff08;必考&#xff09;Are you a student or do you have a job?2024063…

无线物联网题集

测试一 未来信息产业的发展在由信息网络向 全面感知和 智能应用两个方向拓展、延伸和突破。 各国均把 物联网作为未来信息化战略的重要内容,融合各种信息技术,突破互联网的限制,将物体接入信息网络。 计算机的出现,开始了第四次工业革命,开始了人机物的高度融合&#xff08;&…

Witness Table 的由来

“Witness Table” 是 Swift 中的一个术语&#xff0c;源于编译原理和类型系统的概念。它被用来表示一种机制&#xff0c;通过这个机制&#xff0c;编译器可以确保某个类型确实实现了它声明遵循的协议中的所有方法和属性。下面是对这个术语的详细解释&#xff1a; 1. 术语来源…

实战大数据:分布式大数据分析处理系统的开发与应用

&#x1f482; 个人网站:【 摸鱼游戏】【网址导航】【神级代码资源网站】&#x1f91f; 一站式轻松构建小程序、Web网站、移动应用&#xff1a;&#x1f449;注册地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交…

第15届蓝桥杯Python青少组选拔赛(STEMA)2023年8月真题-附答案

第15届蓝桥杯Python青少组选拔赛&#xff08;STEMA&#xff09;2023年8月真题 题目总数&#xff1a; 11 总分数&#xff1a; 400 一、单选题 第 1 题 单选题 以下不符合 Python 语言变量命名规则的是&#xff08; &#xff09;。 A. k B. 2_k C. _k D. ok 答案 B …

VirtualBox 虚拟机的网络通过宿主机的网络进行冲浪

虚拟机与宿主机通过桥接模式处在同一个网络中 1.说明2.操作步骤2.1.虚拟机设置网络2.2.手动指定虚拟机的IP 1.说明 A.虚拟机 ubuntu-20.04 B.宿主机网络 Wireless LAN adapter WLAN:Connection-specific DNS Suffix . : lanIPv4 Address. . . . . . . . . . . : 192.168.111…

超强总结Kafka详解

一、Kafka简介 Kafka是什么 Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff08;消息引擎系统&#xff09;&#xff0c;它可以处理消费者在网站中的所有动作流数据。 这种动作&#xff08;网页浏览&#xff0c; 搜索和其他用户的行动&#xff09;是在现代网络上的许多社…

使用elasticsearch完成多语言搜索的三种方式

文档目标&#xff1a; 基于elasticsearch&#xff0c;实现不同语言搜索特定语言的文档数据&#xff1b;比如输入中文的内容&#xff0c;搜索中文文档数据&#xff0c;输入英文搜索英文文档数据&#xff0c;日韩文类似 方案概述&#xff1a; 方式一&#xff1a;不同的语言使用不…