向量处理器,又称数组处理器,是一种实现了直接操作一维数组(向量)指令集的中央处理器(CPU)。與之相比,标量处理器一次只能处理一个数据。向量处理器可以在特定工作环境中极大地提升性能,尤其是在数值模拟或者相似领域。向量处理器最早出现于1970年代早期,并在1970年代到1990年代期间主导了超级计算机的设计方向,尤其是多个克雷(Cray)平台。由于90年代末标量处理器设计性能提升,而價格快速下降,基于向量处理器的超级计算机逐渐让出了主导地位。

并行向量处理机
处理器类型
上级分类處理器 编辑
用途高性能计算、​超级计算机 编辑
相對概念标量处理器 编辑
克雷YMP向量電腦的處理器板

现在,绝大多数商业化的CPU实现都能够提供某种形式的向量处理的指令,用来处理多个(向量化的)数据集,也就是所谓的SIMD(单一指令、多重数据)。常见的例子有 VIS, MMX, SSE, AltiVecAVX。向量处理技术也能在游戏主机硬件图形加速硬件上看到。在2000年,IBM东芝索尼合作开发了Cell处理器,集成了一个标量处理器和八个向量处理器,应用在索尼的PlayStation 3游戏机和其他一些产品中。

其他CPU设计还可能包括多重指令处理多重(向量化的)数据集的技术——也就是所谓的MIMD(多重指令、多重数据)——并实现了VLIW。此类设计通常用于特定应用场合,而不是面向通用计算机的市场化产品。在富士通的 FR-V VLIW/vector 处理器中,组合使用了两种技术。

基本特点

编辑

平行向量处理机最大的特点是系统中的CPU是专门定制的向量处理器(VP)。系统还提供共享存储器以及与VP相连的高速交叉开关。

来自现实世界的例子: x86 架构中的向量指令应用

编辑
// 改自英文維基 Vector_processor
//SSE simd function for vectorized multiplication of 2 arrays with single-precision floatingpoint numbers
//1st param pointer on source/destination array, 2nd param 2. source array, 3rd param number of floats per array
void mul_asm(float* out, float* in, unsigned int leng){
      unsigned int count, rest;

      //compute if array is big enough for vector operation
      rest  = (leng*4)%16;
      count = (leng*4)-rest;

     // vectorized part; 4 floats per loop iteration
      if (count>0){
      __asm __volatile__  (".intel_syntax noprefix\n\t"
      "loop:                 \n\t"
      "sub ecx,16            \n\t" // decrease address pointer by 4 floats
      "movups xmm0,[ebx+ecx] \n\t" // loads 4 floats in first register (xmm0)
      "movups xmm1,[eax+ecx] \n\t" // loads 4 floats in second register (xmm1)
      "mulps xmm0,xmm1       \n\t" // multiplies both vector registers
      "movups [eax+ecx],xmm0 \n\t" // write back the result to memory
      "jnz loop              \n\t"
      ".att_syntax prefix    \n\t"
        : : "a" (out), "b" (in), "c"(count), "d"(rest): "xmm0","xmm1");
      }

      // scalar part; 1 float per loop iteration
      if (rest!=0)
      {
       __asm __volatile__  (".intel_syntax noprefix\n\t"
      "add eax,ecx           \n\t"
      "add ebx,ecx           \n\t"

      "rest:                 \n\t"
      "sub edx,4             \n\t"
      "movss xmm0,[ebx+edx]  \n\t" // load 1 float in first register (xmm0)
      "movss xmm1,[eax+edx]  \n\t" // load 1 float in second register (xmm1)
      "mulss xmm0,xmm1       \n\t" // multiplies both scalar parts of registers
      "movss [eax+edx],xmm0  \n\t" // write back the result\n\t"
      "jnz rest              \n\t"
      ".att_syntax prefix    \n\t"
        : : "a" (out), "b" (in), "c"(count), "d"(rest): "xmm0","xmm1");
      }
      return;
}

参阅

编辑

📚 Artikel Terkait di Wikipedia

OpenVG

1.0 Specification BitBoys Press Release — Bitboys Introduces Vector Graphics Processor for Mobile Devices HUONE Press Release — HUONE announces OpenVG

SAXPY

Y)是一个在 Basic Linear Algebra Subprograms(BLAS)数据包中的函数,并且是一个并行向量处理机(vector processor)中常用的计算操作指令。SAXPY是标量乘法和矢量加法的组合: y = α x + y , {\displaystyle \mathbf

AMD平台安全处理器

AMD平台安全处理器(英語:AMD Platform Security Processor),公司称其为AMD安全技术(英語:AMD Secure Technology),作为可信执行环境子系统自2013年起引入AMD处理器中。AMD开发人员手册称该系统“能够创建、监测和维持安全环境”和“涵盖了管

AVX指令集

高级向量扩展指令集(英語:Advanced Vector Extensions,简称AVX)是x86架构微处理器中的SIMD扩展指令集,由英特尔在2008年3月提出,并在2011年第一季度发布的Sandy Bridge系列处理器中首次支持。AMD在随后的2011年第三季度发布的Bulldozer系列

晶心科技

2022年:ASPENCORE媒體集團全球電子成就獎(WEAA)「年度傑出創新企業」、EE Awards金選產品獎「台灣區年度最佳IP/Processor」以及「亞洲區最佳開發工具」、RISC-V國際協會「RISC-V日本2022產品獎」、Embedded Computing 「DesignBest

酷睿

i3。 隨後的性能改進趨向於增加新功能大於深遠的改變,例如在2011年1月首次發佈32納米的Sandy Bridge上添加了Advanced Vector Extensions指令集擴展。發展也慢慢對虛擬化提供更好支持,以及向更高級別發展。 通過諸如英特爾主動管理技術之類功能的不斷發展來實現系統集成和管理功能。

软核微处理器

(原始内容存档于2007-10-08).  MicroBlaze Soft Processor: Frequently Asked Questions 互联网档案馆的存檔,存档日期2011-10-27. István Vassányi. "Implementing processor arrays on FPGAs". 1998

Cell (微處理器)

SPE、PPE 和主存控制器连接在一起的是一个名为 Element Interconnect Bus 的总线,这是数据传输的主要通道。 Power Processor Element(簡稱為PPE):PPE 包含一個64位元雙執行緒PowerPC結構的RISC內核,並支援PowerPC的虛擬記憶體子系統。它具有32KB的