27 | SIMD:如何加速矩阵乘法?
徐文浩
该思维导图由 AI 生成,仅供参考
上一讲里呢,我进一步为你讲解了 CPU 里的“黑科技”,分别是超标量(Superscalar)技术和超长指令字(VLIW)技术。
超标量(Superscalar)技术能够让取指令以及指令译码也并行进行;在编译的过程,超长指令字(VLIW)技术可以搞定指令先后的依赖关系,使得一次可以取一个指令包。
不过,CPU 里的各种神奇的优化我们还远远没有说完。这一讲里,我就带你一起来看看,专栏里最后两个提升 CPU 性能的架构设计。它们分别是,你应该常常听说过的超线程(Hyper-Threading)技术,以及可能没有那么熟悉的单指令多数据流(SIMD)技术。
超线程:Intel 多卖给你的那一倍 CPU
那时我和你说过,Pentium 4 失败的一个重要原因,就是它的 CPU 的流水线级数太深了。早期的 Pentium 4 的流水线深度高达 20 级,而后期的代号为 Prescott 的 Pentium 4 的流水线级数,更是到了 31 级。超长的流水线,使得之前我们讲的很多解决“冒险”、提升并发的方案都用不上。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
SIMD技术是一种利用单指令多数据流的并行计算方案,能够显著提高CPU的计算效率。本文首先介绍了超线程技术,将一个物理CPU核心“伪装”成两个逻辑CPU核心,实现指令的并行运行。然后详细解释了SIMD技术的原理和应用,通过对比循环计算和向量化计算的性能差异,阐述了SIMD技术的优势。文章还指出SIMD技术在处理大量数据并行计算时的优势,尤其在向量计算和矩阵运算方面具有重要应用价值。作者还回顾了SIMD技术的历史发展,指出其在个人电脑多媒体运算能力方面的重要作用。总的来说,本文深入浅出地介绍了超线程和SIMD技术在提升CPU性能方面的作用,为读者提供了有益的技术知识。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入浅出计算机组成原理》,新⼈⾸单¥68
《深入浅出计算机组成原理》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(40)
- 最新
- 精选
- 任鹏斌java有办法使用到SIMD指令集吗?
作者回复: 任鹏斌同学, 你好,可以啊,通过JNI,或者本身编译器会做自动向量化 可以去看看知乎上的这个回答 https://www.zhihu.com/question/267178154/answer/348228410
2019-12-26210 - Jason前几天研究AVX指令集,发现gcc和icc都是可以自动进行向量化优化的,自己编写向量化程序获得的性能提升远不如编译器的自动优化
作者回复: 是的,大部分情况下,依赖编译器是OK的,现代编译器已经非常强大了。不过要避免写一些反模式的代码,使得编译器优化不了。
2020-02-057 - 小先生我的理解是分别从线程和代码角度来避免冒险的可能,从而提高效率,不知道这样的理解是否正确
作者回复: 可以这样说,通过找两个完全不相关的指令,这样就没有冒险的问题存在,同时运行也不会发生冒险。
2019-09-023 - 曾经瘦过超线程技术是伪装成2个核心,在期中一个“线程”需要等待的时候去执行另一个“线程”,因此比较适合并发大量IO的操作2019-10-10131
- westfall那我们平时写的程序怎么直接使用SIMD指令呢?2019-10-21224
- 拯救地球好累---总结--- 为了提高没有依赖关系的指令间的并行性,引入了超线程技术。 超线程技术:在硬件层面为每个线程设立单独的PC寄存器、指令寄存器、条件码寄存器等线程相关硬件,从而让一个CPU物理核心中有多个逻辑核心的目的。这样当一个线程在流水线中停顿时,另一个线程就可以去执行指令。 从超线程技术中可以看到,软件层面概念的提出也会影响到硬件层面的设计,而结合硬件条件也能更好地指导软件设计。 为了针对可向量化的计算提供进一步的优化,引入了SIMD。 SIMD:利用单个指令读取并操作多个数据流的方式加大并行化程度。2019-10-2717
- 易儿易终于知道为什么挖矿烧显卡啦~2019-06-2718
- A君原来假cpu核就是用超线程技术实现的,假核数会是真核数的2倍,为什么不是3倍呢,原来它的造假的目的是为了填补流水线暂停的浪费,本来需要替补的地方就很少,容不下太多的线程空间,况且超线程只适合那种频繁访问磁盘,或经常待机的等待输入的程序,只有这些要比较长时间等待的指令才能发挥超线程的效果。 使用simd的前提是cpu支持mmx指令集,它的工作原理是cpu里有一组多个bit位的寄存器来存放一次读到的多条数据,然后对它们进行并行。2020-07-034
- WENMURAN加速矩阵乘法: 超线程:超线程CPU其实就是把一个月物理层面的CPU核心,伪装成两个逻辑层面的CPU核心。在硬件层面增加一部分指令,在内部维持两个指令的状态信息。比如有两个PC寄存器,指令寄存器和条件吗寄存器,这样就可以维护两条并行的指令。但事实上并不是真的运行两条指令,只是在一条指令停顿的时候运行另一条指令。 SIMD单指令多数据流:区别于单指令单数据流(简单的一步一步执行)和多指令多数据流(多核运行)。而SIMD为什么快,是因为他在取指令和执行指令的阶段都做到了并行2020-04-204
- prader261 超线程技术是在cpu中添加逻辑电路,使一个cpu核心伪装成2个或者多个cpu核心,在这个线程,需要等待的时候,cpu去计算别的线程需要计算的部分,这两个线程都在执行过程中,都没有停下。 2 SIMD(单线程多数据流)技术,是一种指令级的并行计算。一次从寄存器中取多个数据,如果这些数据的计算没有依赖关系可以同时并发计算,应用场景较多的是向量运算,也就是音频、视频技术,还有深度学习的计算等。2019-09-244
收起评论