fbpx
维基百科

向量处理器

向量处理器,又称数组处理器,是一种实现了直接操作一维数组(向量)指令集的中央处理器(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; } 

参阅 编辑

向量处理器, 本條目存在以下問題, 請協助改善本條目或在討論頁針對議題發表看法, 此條目可参照英語維基百科相應條目来扩充, 2022年8月8日, 若您熟悉来源语言和主题, 请协助参考外语维基百科扩充条目, 请勿直接提交机械翻译, 也不要翻译不可靠, 低品质内容, 依版权协议, 译文需在编辑摘要注明来源, 或于讨论页顶部标记, href, template, translated, page, html, title, template, translated, page, translated, page, 标签,. 本條目存在以下問題 請協助改善本條目或在討論頁針對議題發表看法 此條目可参照英語維基百科相應條目来扩充 2022年8月8日 若您熟悉来源语言和主题 请协助参考外语维基百科扩充条目 请勿直接提交机械翻译 也不要翻译不可靠 低品质内容 依版权协议 译文需在编辑摘要注明来源 或于讨论页顶部标记 a href Template Translated page html title Template Translated page Translated page a 标签 此條目没有列出任何参考或来源 2022年8月8日 維基百科所有的內容都應該可供查證 请协助補充可靠来源以改善这篇条目 无法查证的內容可能會因為異議提出而被移除 向量处理器 又称数组处理器 是一种实现了直接操作一维数组 向量 指令集的中央处理器 CPU 與之相比 标量处理器一次只能处理一个数据 向量处理器可以在特定工作环境中极大地提升性能 尤其是在数值模拟或者相似领域 向量处理器最早出现于1970年代早期 并在1970年代到1990年代期间主导了超级计算机的设计方向 尤其是多个克雷 Cray 平台 由于90年代末标量处理器设计性能提升 而價格快速下降 基于向量处理器的超级计算机逐渐让出了主导地位 克雷YMP向量電腦的處理器板现在 绝大多数商业化的CPU实现都能够提供某种形式的向量处理的指令 用来处理多个 向量化的 数据集 也就是所谓的SIMD 单一指令 多重数据 常见的例子有 VIS MMX SSE AltiVec 和 AVX 向量处理技术也能在游戏主机硬件和图形加速硬件上看到 在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 gt 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 参阅 编辑并行计算 取自 https zh wikipedia org w index php title 向量处理器 amp oldid 74385520, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。