Assembly REP指令是否被视为向量操作?

Assembly REP指令是否被视为向量操作?,assembly,x86,simd,Assembly,X86,Simd,我试图理解SIMD和向量指令的概念。 如果我理解正确: 向量指令是对一维数据数组(=向量)进行操作的指令,而不是对单个数据项进行操作的标量指令 SIMD指令实际上是单指令多数据指令,看起来和矢量指令一样。。。我真的不知道有什么区别,如果有 REP指令对数据数组进行操作,因此看起来它们实际上是SIMD/向量指令。我没有看到任何文章将它们描述为向量指令,我知道REP指令不是x86的SIMD扩展的一部分 我的问题是: REP被认为是向量运算吗 REP是否被视为SIMD指令 向量指令和SIMD指令之

我试图理解SIMD和向量指令的概念。 如果我理解正确:

  • 向量指令是对一维数据数组(=向量)进行操作的指令,而不是对单个数据项进行操作的标量指令
  • SIMD指令实际上是单指令多数据指令,看起来和矢量指令一样。。。我真的不知道有什么区别,如果有
REP指令对数据数组进行操作,因此看起来它们实际上是SIMD/向量指令。我没有看到任何文章将它们描述为向量指令,我知道REP指令不是x86的SIMD扩展的一部分

我的问题是:

  • REP被认为是向量运算吗
  • REP是否被视为SIMD指令
  • 向量指令和SIMD指令之间有实际区别吗

  • 通过谷歌快速搜索我的第三个问题,我发现:

    矢量处理体系结构现在被认为是独立于SIMD计算机的,因为矢量计算机通过流水线处理器一次处理一个字的矢量(尽管仍然基于单个指令),而现代SIMD计算机同时处理矢量的所有元素

    在我读过的实际文章中,我没有看到提到的差异,而且向量和SIMD术语可以互换使用,因此我认为没有实际差异……

    “向量”和“SIMD”的含义大致相同,但在常见用法中,这些术语通常指向不同的实现方法。这种区别源于计算术语的历史。“矢量”和“SIMD”指令集都基于这样一个概念,即在操作序列中没有数据相关性的情况下,对多个数据元素执行相同的操作。当没有数据依赖关系时,可以按任何顺序执行操作,包括同时执行

    从历史上看,“向量”是较旧的术语,“向量”指令被认为是通过单个功能单元对一系列元素执行某些操作的单个指令。“单一功能单元”作为一个概念与矢量化无关——这是在晶体管非常昂贵(20世纪60年代中期至90年代中期)时矢量机的实现方式。最近的“向量”体系结构使用单个向量指令跨多个功能单元进行流水线操作。例如,NEC SX Aurora TSUBASA处理器具有256个元素向量寄存器和32个向量功能单元,每个256个元素向量向每个向量功能单元发送8个元素

    我不知道“SIMD”一词是何时首次使用的,但我不记得在20世纪90年代中期以前它曾被广泛使用,当时“SIMD”指令最初被开发为对现有寄存器宽度内的较小数据大小执行多个并行操作的一种手段。例如,“英特尔MMX指令集”(1997)使处理器能够对64位寄存器的内容执行独立的8/16/32位操作。后来的SIMD指令集(SSE等)提供了比任何单一支持的数据类型都宽的新寄存器,以允许在寄存器内64位宽的独立字段上进行操作。指令集的设计支持跨整个SIMD寄存器宽度同时执行操作,但这不是必需的。例如,AMD已经生产了几代处理器,它们支持比功能单元并行性更宽的SIMD寄存器上的指令。例如,AMD的第一代EPYC处理器支持256位SIMD指令,但这些指令在两个连续周期内分配到128位宽的功能单元。ARM的可伸缩向量扩展进一步解耦了向量宽度和并行功能单元数量的概念


    x86体系结构中的“REP”指令为“字符串指令”和“in/out”指令提供类似向量的功能提供了有限的能力。它们不是一种通用的机制,我相信许多英特尔处理器设计人员都希望能够从指令集中删除它们。论坛讨论中有一些有趣的历史笔记

    您是在谈论x86吗?如果是这样,请标记它并删除rep标记,或者您正在谈论rep标记中列出的内容?如果它是x86指令,那么它不是关于数组,而是关于将下一条指令重复若干次,这通常是为了处理一块数据,但我称之为尝试将向量标签附加到它上的拉伸。不要再担心向量之类的标签了。一般来说,它们的定义在读者的理解范围内,因此,这样一个术语的每个用户/读者都有不同的定义。如果是x86,请查看intels文档,如果他们有一章或一节标题为矢量指令,则只有该章中的指令才是矢量指令,因为该术语在该上下文中。我知道它没有被称为SIMD或矢量文档中的说明,我只是不知道为什么,因为它回答了这些类型说明的描述。哦,好的,我明白了。。。您说REP指令不是专门用于向量操作的(尽管它经常被用于),所以它不是“实”向量(或SIMD)指令,但它可以像常规向量指令一样用于向量。我说的对吗?
    rep
    不是指令。它是一个前缀,不能单独使用。它是原始8086 CPU的一部分,远远早于SIMD普及。因此,在David Patterson的文章中,当他比较SIMD和向量处理时,他实际上在谈论