苯甲酰氯的原料有哪些? 苯甲酰氯怎么合成
2023-07-25
很多朋友对从CPU优化技术层面讲解Arm,NEON不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。
一、SIMDArm NEON是一种SIMD(单指令多数据)扩展架构,适用于Arm Cortex-A和Cortex-R系列处理器。SIMD用一个控制器控制多个处理器,同时对一组数据(也叫“数据向量”)中的每个数据进行相同的操作,从而实现并行技术。SIMD特别适合一些常见的任务,如音频图像处理。大多数现代CPU设计都包含SIMD指令,以提高多媒体应用的性能。
SIMD运算示意图如上图所示,标量运算一次只能对一对数据进行乘法运算,而SIMD乘法指令一次可以对四对数据进行乘法运算。a .指令流和数据流按指令流和数据流的处理方式分类,可分为四类计算机:1 .弗林分类1示意图。SISD(单指令单数据)。
机器的硬件不支持任何形式的并行计算,所有指令都是串行执行的。单核执行单个指令流,并对存储在单个存储器中的数据进行操作,一次一个操作。早期的计算机都是SISD机器,比如沃诺艾曼架构,IBM PC等等。2.MISD(多指令单数据)
多个指令流用于处理单个数据流。实际上用多指令流处理多数据流更有效,所以MISD只是作为理论模型出现,并没有投入实际应用。3.MIMD(多指令多数据)
一台计算机有多个独立异步工作的处理器。在任意一个时钟周期内,不同的处理器可以在不同的数据段上执行不同的指令,即同时执行多个指令流,这些指令流分别对不同的数据流进行操作。MIMD体系结构可用于许多应用领域,如计算机辅助设计、计算机辅助制造、仿真、建模和通信交换。除了以上型号,NVIDIA生产的GPU引入了SIMT架构:
4.SIMT(单指令多线程)类似于CPU上的多线程,所有内核都有自己的执行单元,数据不同,命令相同。多线程有自己的处理单元,这不同于SIMD共享一个ALU。SIMT B. SIMD特点及发展趋势示意图1。SIMD的优点和缺点。SIMD发展趋势
以Arm架构下的下一代SIMD指令集SVE(Scalable Vector Extension,可扩展向量扩展)为例,这是一个全新的面向高性能计算(HPC)和机器学习开发的向量指令集。SVE指令集中有很多类似NEON指令集的概念,比如向量、通道、数据元素等等。SVE指令集还提出了一个新概念:可变向量长度编程模型。SVE可扩展模型
传统的SIMD指令集使用固定大小的向量寄存器,例如NEON指令集使用64/128位固定长度的向量寄存器。支持VLA编程模型的SVE指令集支持可变长度向量寄存器。因此,允许芯片设计者根据负载和成本选择合适的向量长度。
SVE指令集的向量寄存器的长度最小可支持128位,最大可支持2048位,增量为128位。SVE设计确保相同的应用程序可以在支持不同向量长度的SVE指令机上运行,而无需重新编译代码。2019年,Arm推出SVE2。在最新的Armv9基础上,扩展了更多的运算类型来完全替代NEON,同时增加了对矩阵相关运算的支持。二、 arm 1 SIMD指令集。arm处理器NEON的SIMD支持
默认情况下,Arm NEON单元包含在Cortex-A7和Cortex-A15处理器中,但在其他Armv7 Cortex-A系列处理器中是可选的。一些实施Armv7-A或Armv7-R架构配置文件的Cortex-A系列处理器可能不包含NEON单元。Armv7兼容内核有四种可能的组合:因此,我们必须首先确认处理器是否支持氖和VFP。可以在编译时和运行时检查它。霓虹灯发展史2。arm处理器2.1编译阶段检查的SIMD支持检查
检测氖单元存在的最简单方法。在Arm编译器工具链(armcc)4.0版和更高版本或GCC中,检查预定义的宏ARM_NEON或__arm_neon是否打开。与armasm等价的预定义宏是TARGET_FEATURE_NEON。2.2运行时检测在运行时检测氖单元需要操作系统的帮助。ARM架构故意不向用户模式应用程序公开处理器功能。在Linux下,/proc/cpuinfo以可读的形式包含这些信息,例如:
在Tegra(带FPU的双核Cortex-A9处理器)$/proc/CPU Info SWP Half Thumb Fast Mult VFP EDSP Thumb ee VFP vvvpv 3d 16 ARM Cortex-A9处理器带NEON单元$/proc/CPU Info SWP Half Thumb Fast Mult VFP EDSP Thumb ee NEON VFP v3由于/proc/CPU Info的输出是基于文本的,因此通常是查看辅助向量/proc/self/auxv的首选,它包含二进制格式的内核hwcap,您可以很容易地在
一些Linux发行版ld.so链接器脚本已经过修改,可以通过glibc读取hwcap,并为启用NEON的共享库添加额外的搜索路径。3.指令集关系在Armv7中,NEON与VFP指令集有如下关系:有NEON单元但没有VFP单元的处理器不能在硬件中进行浮点运算。
由于氖SIMD操作更有效地执行矢量计算,自ARMv7推出以来,VFP单位中的矢量模式操作已被放弃。因此,VFP单位有时被称为浮点单位(FPU)。VFP可以提供与IEEE-754完全兼容的浮点运算,而Armv7 NEON单元中的单精度运算与IEEE-754不完全兼容。霓虹灯无法取代VFP。VFP提供了一些在NEON指令集中没有等效实现的特殊指令。半精度指令仅适用于具有半精度扩展的氖和VFP系统。
在Armv8中,VFP已被氖取代。上述问题,如NEON不完全符合IEEE 754标准,以及VFP支持但NEON不支持的一些问题,在ARMv8中都得到了解决。三、NEONNEON是一种适用于Arm Cortex-A系列处理器的128位SIMD扩展结构,每个处理器内核都有一个NEON单元,因此可以实现多线程和并行的加速效果。1.氖1的基本原则。NEON指令执行过程
上图为氖单位加速计算流程图。其中向量寄存器中的每个元素同步执行计算,以加速计算过程。1.2 NEON计算资源NEON和Arm处理器资源的关系
-NEON单元,作为ARM指令集的扩展,使用独立于Arm原始寄存器的64位或128位寄存器进行SIMD处理,运行在64位寄存器的寄存器堆上。-NEON和VFP单元完全集成到处理器中,共享处理器资源用于整数运算、循环控制和缓存。与硬件加速器相比,这大大降低了面积和功耗成本。它还使用了一个更简单的编程模型,因为NEON单元与应用程序使用相同的地址空间。
NEON和VFP资源关系NEON寄存器与VFP寄存器重叠,Armv7有32个NEON D寄存器,如下图所示。氖寄存器2。NEON instruction 2.1自动矢量化矢量化编译器可以使用C或C源代码,以能够有效使用NEON硬件的方式进行矢量化。这意味着您可以编写可移植的C代码,并且仍然可以获得NEON指令带来的性能水平。
为了帮助矢量化,循环迭代的次数被设置为向量长度的倍数。GCC和ARM编译器工具链都可以为NEON技术启用自动矢量化。2.2 NEON汇编对于性能要求特别高的程序,更适合手工编写汇编代码。GNU汇编程序(gas)和Arm编译r工具链汇编程序(armasm)都支持NEON指令的汇编。
写汇编函数的时候,需要知道ArmEABI,它定义了如何使用寄存器。ARM嵌入式应用二进制接口(EABI)规定了哪些寄存器用于传递参数、返回结果或者必须保留,并规定了除Arm内核寄存器以外的32 D寄存器的使用。下图总结了寄存器的功能。寄存器功能2.3 NEON内部函数
NEON内在函数提供了一种写NEON代码的方法,比汇编代码更容易维护,并且仍然可以控制生成的NEON指令。内部函数使用与d和Q NEON寄存器相对应的新数据类型。数据类型支持创建直接映射到NEON寄存器的C变量。NEON内部函数的编写类似于使用这些变量作为参数或返回值的函数调用。编译器做一些通常与编写汇编语言相关的繁重工作,例如:
寄存器分配代码调度或重新排序指令
intrinsic 缺点
无法让编译器准确输出想要的代码,因此在转向NEON汇编代码时仍有一些改进的可能性。
NEON 指令简类型
NEON 数据处理指令可以分为正常指令、长指令、宽指令、窄指令和饱和指令。以Intrinsic 的长指令为例int16x8_t vaddl_s8(int8x8_t __a, int8x8_t __b);- 上面的函数将两个64位的D 寄存器向量(每个向量包含8个8位数字)相加,生成一个包含8个16位数字的向量(存储在128位的Q寄存器中),从而避免相加的结果溢出。
四、其他SIMD 技术
1. 其他平台上的SIMD 技术
SIMD 处理不是Arm 独有的,下图将其与x86 和Altivec 进行了比较。
SIMD 对比
2. 与专用DSP 对比
许多基于Arm 的SOC 中还包含DSP 等协处理硬件,因此可以同时包含NEON 单元和DSP。相对于DSP,NEON 的特点有:
五、总结
本节主要介绍基本SIMD 及其他的指令流与数据流的处理方式,NEON 的基本原理、指令以及与其他平台及硬件的对比。
黄飞
以上知识分享希望能够帮助到大家!
版权声明:本站所有作品图文均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系我们
推荐阅读
2023-07-25
2023-07-25
2023-07-25
2023-07-25
2023-07-25
2023-07-25
2023-07-25
2023-07-25
2023-07-25
2023-07-25
2023-07-25
2023-07-25
2023-07-25
2023-07-25
栏目热点
苯甲酰氯的原料有哪些? 苯甲酰氯怎么合成
LilyGoT手表键盘C3迷你电脑套件
索泰ZBOXEdgeCI342迷你电脑正式上市
谷歌在最新的视频预告片中展示了PixelWatch的独特设计
三星与设计师Juun.J合作推出限量版可折叠产品和配件
从2023年起Fitbit设备将需要Google帐户
TOKKCAMC2+智能WiFi独立日 夜视摄像头
三星正在与全球时尚品牌JUUN.J合作
OnePlusNordWatch的颜色选项通过泄露的渲染揭示
就在第一款Nothing手机发布之前一种新的TWS芽设计浮出水面