向量指令的类型有哪些?


向量是一组标量数据元素的集合,所有元素类型相似,存储在内存中。向量元素是有序的,相邻元素之间具有固定的地址增量,称为步长。

向量处理器是一组硬件资源的集合,例如向量寄存器、功能流水线、处理单元和寄存器计数器,用于执行向量运算。

当算术或逻辑运算用于向量时,就会出现向量处理。它与标量处理不同,标量处理操作一个或一对数据。从标量代码到向量代码的转换称为向量化。

向量指令的类型

存在各种类型的向量指令,如下所示:

  • **向量-向量指令** - 从指定的向量寄存器中提取一个或两个向量操作数,通过功能流水线单元引入,并将结果存储到另一个向量寄存器中。这些指令由以下两个映射定义:

    f1 : vi → vj

    f2: vj x vk → vi

    **示例** - $V\:=\sin(v_{2})$ 和 v3 = v1 + v2 分别对应映射 f1 和 f2,其中对于 i = 1, 2, 3,V 为向量寄存器。

  • **向量-标量指令** - 如图所示,它显示了一个向量-标量指令,对应于以下映射:

    f3: s x vi → vj

    一个例子是标量积 s x v1 = v2,其中 V 的元素分别乘以标量 s 以产生长度相等的向量 v2

  • **向量-内存指令** - 这对应于向量加载或向量存储元素,在向量寄存器 (V) 和内存 (M) 之间,如下所示:

    f4: M → V 向量加载

    f5: V → M 向量存储

  • **向量归约指令** - 这些指令对应于以下映射:

    f6: vi → sj

    f7: vi x vj → sk

  • **收集和散射指令** - 这些指令使用两个向量寄存器来随机收集或散射内存中的向量元素,对应于以下映射:

    a: M → v1 x v0 收集

    fa: v1 x v0 → M 散射

    **收集**是一种操作,它使用自身被索引的索引来从内存中获取稀疏向量的非零元素。

    **散射**则相反,将向量存储到稀疏向量中,其非零项被索引。向量寄存器包含数据,向量寄存器用作索引,分别从随机内存位置收集或散射数据。

  • **掩码指令** - 在掩码指令中,它使用掩码向量来分别将向量包装或扩展到更短或更长的索引向量,相当于以下映射:

    f10: v0 x vm → v1

更新于:2021年7月30日

4K+ 次浏览

启动您的 职业生涯

完成课程获得认证

开始学习
广告