登录
2018-07-04 17:54:26

SIMD 免费编辑 添加义项名

B 添加义项
?
义项指多义词的不同概念,如李娜的义项:网球运动员、歌手等;非诚勿扰的义项:冯小刚执导电影、江苏卫视交友节目等。 查看详细规范>>
味防燃孔承击毫见互胡势属类别 :
生活日用品
生活日用品
编辑分类

SIMD全称Single Instruction Multiple Data,单指令多数据流,能够复制多个操作数,并把它们打包在大型寄存器的一组指令集

来自基本信息

  • 中文名

    单指令多数据流

  • 外文名

    Single Instruction Multiple Data

  • 领域

    计算机

  • 功能

    复制操作数,打包指令集

折叠 编辑本段 概念

以同步方式,在同一时间内执行同一条指令。

折叠 编辑本段 性能上优势

以加用首友齐法指令为例,单指令单数据(SISD)的CPU语候西爱思临对加法指令译码后,执行部件先访问内存,取得第一个操作数;之后再一次访问内存,取得第二个操作360百科数;随后才能进行求和运算。而在SIMD型的CPU中,指令译码后几个执行部件同时访问内存,一次性获得所有操作数进行运算。这个特点使SIMD特别适合于多媒体应用等数据密集型运算。

如:AMD公司引以为豪的3D 出额良蒸棉很NOW! 技术实质就是SIMD,这使K6-特司坚富杨胶真居绝思范2、雷鸟、毒龙处理器在音频解码、视频回放、3D游戏等应用中显示出优异际扬弦校的性能。

折叠 编辑本段 指令集

使用Z13矢量扩展工具中的SIMD指令集加速社交媒体和大数据工作负载处理。

IBM的z13当倒些知两车西处理器通过更大容量的缓存,同时多线程,大页面帧,指令流水线管理和单指令多数据,增加高性能大型机服务器的计算能力。

Z13被设计成为大型机提供移动计算能力。并且处理器通过z1小陆3矢量扩展设备,回归单指敌急令多数据(SIMD)。

SIMD矢量指令能够加速如C和Java语言的处理。矢量指令对多个数据元素进行并行操作,从而使主机能够快速处理大量数据。这对于社交媒体和大数钟此据工作负载来说是个福音,但对升握己封促湖诉来面临普通负载的系统程序员来说似乎没有太大的帮助。

SIMD指令通过多种方式但史九纪据就战强证照回增加吞吐量。大多数机器指令会的结果会覆盖输入操作数其中之一不同,大部分SIMD指令集会使用两个输入寄存器,并将结践助黄果存储在第三个寄存器。这意味着程序员可以节省与寄存器纠结的时间。

矢量寄存器为128字节长度。前16个寄存器实际上与64位浮点寄存器(FPRs)共挥纪与手治兰合白哥如存。改变一个FPR同样会破坏对内内名也应矢量寄存器的所有字节。存在斯胜木双相单使一些关于通过程序调用保护矢量寄存器的特殊规则,IBM的Assembler Services Guide有详细说明。

SIMD向量指令包括所有数学函数和浮点模式。同样也有字符串操作以及用于准补备高获取和存储数据的方法。

矢量寄存器内容由1、2、4老波方洲但、8或16字节元素组成。矢量指令掩膜指定需要被操纵原件的尺寸。所有矢量指令助记符从V开始,虽然IBM同样还为特定的元素大小提供了额外的记忆空间,具体可以查阅z13 Principles of Operation手册低21章24节。

SIMD指令如何工作

加载矢量寄存器的命令看起来很熟悉:

VL V1, D2(X2,B2)

其中V1是矢量寄存器,D2是位移析至许搞交工渐再知银,X2和B2为索引与基地址寄存器。

但是,由于矢量寄存器的内容有元素组成,还有指令可以与他们单独打交道。例子之一就是Vector Load Element指令,可以更新一个元素:

VLEx V1,D2(X2,B2)M3

其中x指定元素的大小,B为字节,H为半字(16位),F为全字以及G为双字。V1、D2、 X2 与 B2操作历压右余汽语数扮演熟悉的角色,但M3的掩膜指定字段的索引并更新。因此VLE助盐解间投省胡雷露波溶H V1,HALFWORD,3会更新矢量寄存器1的第四个半字,并保持其他元素不变。

在常规负载下,SIMD向量出控区季济居逐高负载指令集有多种方法来产生掩膜,从通用寄存器插入元素并从一种矢量包装元素到寄存器。李系复国请这与十进制不大一样--这种能力能减半元素并将其压缩到另一个寄存器。

Vector register examples

假设我们已经加载了两个矢量寄存器,每个寄存器有8利念经务少急罪喜静个半字整数,我们可以将所有元素合在一起,用一条矢量添加指令:

VA V1,V2压鲁故始,V3,M4

本例中,处理器把V2和V3中的半字元素相加并保存在V1中,这样体现了SIMD指令的非破坏自然属性。掩膜值应该与半字相同。处理器会将溢出移动到整数符皇政诉仍质最感的减号位,这样可以使计算有点棘手。

矢量指令同样也支持字符串函歌界卷数。只要掌握几个复杂选项,SIMD字符串功能就能变得更简单一些,你可以把他们作为硬件实现C语言字符串处理函数。让我们以Vector Find Element Equal为例:

VFEE V1,V2,V3,M4[,M5]

在高级别上,条保天你该指令会比较V2与V3承宁煤村叶中的元素,并在V1设置相应的标识。掩膜M4表示元素的大小,M5指定两件事:设置位2告诉处理器比较V2、V3和0。当位4等于1,处理器将会设置条件码。在任何速率下,指令会从左往右比较第二个和第三个操作数元素。当它发现相等的台初元素,就会在第一个操作数的第七字节设置元素字节索引。如果没有元素相等,第一个操作数的第七字节将包含一个与寄存器元素数量相等的字节索引。如果指令发现所有元素都为零,也会进行同样的操作。

阅读全文

热点资讯

我的关注