IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> neon优化-01 -> 正文阅读

[嵌入式]neon优化-01


在开发算法的过程中会需要使用neon进行算法加速,记录自己学习neon的笔记

开始

1.关于armv8 neon的编程环境简单介绍

1.1寄存器环境, 指令的语法

armv8 寄存器介绍:

  • 31x64-bit的通用寄存器X0/X8/X16/X24;总共是X0到X30(31个)每个是64bit
  • 32x128-bit的向量寄存器V0/V8/V16/V24,每组都是8个,每个都是128 bit

stack pointer

  • SP
  • WSP

Zero registers

  • WZR
  • XZR

V0-V31(总计32x16bytes的数据)寄存器的数据是可以以不同的形式pack 的,16bytes or 8bytes;称之为lanes;
mul v0.u8, v0.u8, v1.u8

寄存器的环境介绍

1.2.指令集

指令的语法
指令的语法规则

  • 代表数据的类型(signed, unsigned, float, poly)[ S U F P]
  • 代表的是指令的操作,例如[mul] [add]
  • 指定具体的目标函数, 例如pairwise operations
  • 数据包的形式,[8B, 16B, 4H, 8H, 2S, 4S, 2D],B=byte, H=halfword(16 bit), S=wors(32-bit), D=double(64-bit)

1.3.编写代码和调试

要想编写自己的程序现在好需要知道更多的指令的含义,能够调试代码,在指令不支持的情况下怎么实现功能。

  • 数据类型 uint8x8_t,uint8x16_t, float32x4_t, float64x2_t
  • 数据加载和存储 vld_u8(uint8_t*), vst_u8(uint8_t*, uint8x8_t)
  • 算数运算 vadd_u8(uint8x8_t, uint8x8_t)
  • 数据类型转换 vcvt_f32_u32(uint32x32_t)
  • 更多的类型包括 移动寄存器数据 压缩函数 Lane 函数

2.编程例子

2.1.内联函数

使用neon环境搭建

#include “arm_neon.h”
gcc -march=armv8-a

使用嵌入式汇编的写法虽然较为难入门,但是它实现的方式上更加的灵活,是不是也更加的高效率呢?
并不会直接的看出来使用哪些操作去优化代码,但是可以通过objdump和gdb去反汇编查看获得灵感。嵌入汇编的书写形式如下:
inline assembly

2.2.嵌入汇编

  • 利用gprof进行性能分析
1 gcc -test.c -pg -o test #会在当前目录中生成gmon.out文件
2  ./test
3 gprof ./test gmon.out 
  • 介绍使用gdb进行调试

在这里插入图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-09 10:23:46  更:2021-08-09 10:25:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/12 8:25:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码