x86 SIMD指令集参考手册/教程?

18

我正在研究使用这些内容来改善一些代码的性能,但是似乎很难找到有关在*mmintrin.h头文件中定义的函数的好文档,请问谁可以给我提供有关这方面的信息?

编辑:特别感兴趣的是如何入门的基础教程。


3
“关闭?为什么?这个问题不相关吗?给出的两个答案不够有用吗?” - ZEE
现在SSE标签维基中有一些链接:https://stackoverflow.com/tags/sse/info - Peter Cordes
2个回答

17

https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html网站上可找到实用的在线Intel Intrinsics Guide - 它涵盖从MMX到各种SSE版本再到AVX2 等等的所有Intel SIMD技术。

您还可以从Intel获取以下PDF文档:

  • Intel® 64和IA-32架构软件开发人员手册,第2卷A:指令集参考,A-M(253666-021)

  • Intel® 64和IA-32架构软件开发人员手册,第2卷B:指令集参考,N-Z(253667-021)

  • Intel® SSE4编程参考 (D91561-001)


1
非常有用,但花了我一些时间才弄清楚如何在Linux上运行这个东西。这是我第一次看到文件名中有空格和括号的shell脚本。 - BD at Rivenhill
2
英特尔指令集指南对于初学者来说晦涩难懂且毫无用处。难道没有更加教育性和适合初学者的内容(可能包含一些hello world示例)吗? - Nanashi No Gombe
1
内置函数指南的链接已不再可用,重定向到 https://www.intel.com/content/www/us/en/developer/overview.html。请注意更新链接。 - OmnipotentEntity
2
@OmnipotentEntity:先前的链接是指一个你可以在 Mac/Linux/Windows 上本地安装的东西,如果那个已经彻底消失了,答案就应该简化为只谈论在线指南,在那里搜索可以通过 JavaScript 进行。 - Peter Cordes
1
我很抱歉,我真的没有意识到这两个链接最初指向了两个不同的东西。我认为之前的编辑只是在更改第三个链接时没有更改第一个链接。感谢您的纠正。 - OmnipotentEntity

10

这是我找到的最好的MMX/SSE编程介绍。(我已经用SSE2编程5年了,但我仍然认为这篇教程在概念上是最清晰易懂的。)

http://www.tommesani.com/Docs.html

这不是指令的完整列表;因此,一旦你准备学习更多,请像@PaulR建议的那样开始阅读英特尔内部函数的指南。

需要记住的一个重要事项是,MMX/SSE在数据移动(洗牌或任意排列或单个元素的改变)方面往往受到严重限制。这是CPU硅片设计的限制。散射-聚集指令仅在几年前才添加,可能甚至在客户计算机上不可用。

有许多与MMX/SSE类似的向量化技巧,就像 http://www.hackersdelight.org/ 推荐利用位并行操作的技巧一样。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接