Intel, AMD及VIA CPU的微架构(1)
2017-08-18 12:34
609 查看
Intel, AMD及VIA CPU的微架构
对x86平台的优化指引
对汇编程序员及编译器作者的优化指引
作者:Agner Fog。TechnicalUniversity of Denmark
1. 优化C++软件:对Windows,Linux及Mac平台的优化指引。
2. 优化汇编例程:对x86平台的优化指引。
3. Intel, AMD及VIA CPU的微架构:对汇编程序员及编译器作者的优化指引。
4. 指令表:Intel, AMD及VIA指令时延,吞吐率及微操作分解的列表。
5. 不同C++编译器及操作系统间的调用惯例。
可以从www.agner.org/optimize得到这些手册的最新版。版权声明如下(原文在第25章):
本系列手册的版权为AgnerFog所有。不允许公开发行与抄袭(mirroring)。但允许对有限受众,出于教育目的非公开发行。这些手册中的样例代码可以自由使用。在我死后,GNUFree Document License将自动生效。参考www.gun.org/copyleft/fdl.html。
当前的手册(2017)描述了Intel及AMD x86微处理器的微架构细节。不涉及Itanium处理器。本手册的目的是使汇编程序员及编译器作者能针对特定的微处理器优化软件。主要关注与一段代码执行所需时间相关的细节,比如不同执行单元的时延及流水线各部分的吞吐率。分支预测算法也被深入讨论。
微架构的学生对本手册也会有兴趣。但必须注意技术描述大多基于我自己的探索,局限于可测量部分。因此,流水线“机制”的描述局限于能够通过计算时钟周期或微操作测量的部分,以及可以从这些测量推测的部分。本手册中的技术性解释应该被视为预测微架构行为有用的模型。我没有办法确切知道它是否符合微架构的实际物理结构。提供这个信息的主要目的是使程序员及编译器作者可以优化代码。
另一方面,我从测量推导信息,而不是依赖于微处理器厂商公开的信息,提供了许多在别处找不到的新信息。微处理器厂商公开的技术细节通常是表面的,不完整的,有选择性的,有时是有误导的。
我的发现有时与微处理器厂商发布的数据不一致。这个矛盾的原因可能是,这样的数据是理论值,而我的数据是在特定一组测试条件下获得的实验值。我不声明本手册中所有的信息是精确的。有些时序很难或不可能精确测量,而且我无法得到微处理器厂商技术手册所基于的技术实现的内部信息。
测试主要在32位及64位保护模式下完成。大多数结果与处理器模式无关。在合适处,重要的区别会被标注。对更旧的处理器,远程跳转、远程调用与中断主要在16位模式下完成。调用门等,没有测试。详细的时序结果在手册4“指令表”中列出。
本手册中大多数信息基于我自己的研究。许多人给了我有用的信息与纠错,我非常感谢。只要我得到新的重要信息,我就会更新手册。因此,本手册比其他信息来源更详细、完备以及准确;并且它包含了许多别处没有的细节。
本手册不适合初学者。它假定读者熟悉汇编及微处理器架构。如果没有,在你开始进行复杂的优化前,请阅读关于这个主题的一些书,并获取一定的编程经验。参考在手册2:“优化汇编例程”中列出的文献,或者访问www.agner.org/optimize里的链接。
读者可以跳过描述旧微处理器设计的章节,除非你在嵌入式系统里使用这些处理器,或者你对微处理器的发展历史感兴趣。
请不要将你的编程问题发送给我,我不会帮你做你的家庭作业!如果你在相关的书籍及手册里找不到答案,你可以在互联网上有各种各样的论坛里找到答案。
表1.1 微处理器家族
这里的缩写是为了区分不同的微架构内核,不管商品名是什么。微处理器的商品名通常会混淆不同核心技术见的差异。名字Celeron用于缓存比标准版本少的P2及后续处理器。名字Xeon用于缓存比标准版本多的P2及后续高端处理器。名字PentiumD与PentiumExtreme Edition指多核的P4E。商标Pentium最早用于P5及P6微架构,但后来相同的名字被用于一些具有更新微架构的处理器。名字Centrino用于PentiumM,CoreSolo及CoreDuo处理器。CoreSolo与PentiumM相当相像。CoreDuo也像,但有两个核。
在Intelx86微处理器系列里,P1与PMMX是第五代处理器,它们的处理器内核非常相像。PPro,P2与P3都有第六代内核(P6)。这三个处理器几乎一样,除了每个新型号中添加了新指令。P4是第七代中的第一个处理器,在Intel文档里,出于掩盖的目的,不称第七代。相当意外,在P4里CPUID指令返回的家族号不是7而是15。后续的IntelCPU:PentiumM,Core及更新的Intel处理器都报告号码6,可能是为了与遗留的Intel软件兼容。当Intel从Core处理器重新开始世代编号时,混乱结束了。
名字Sempron用于更少缓存的Athlon64低端版本。Turion64是移动版本。Opteron是带有更多缓存的服务器版本。Intel与AMD处理器更新的世代都有不同核数的不同版本。
读者应该意识到不同的微处理器世代行为非常不一样。同样,Intel与AMD微架构也差异很大。对一个世代或品牌最优,对其他未必最优。
对x86平台的优化指引
对汇编程序员及编译器作者的优化指引
作者:Agner Fog。TechnicalUniversity of Denmark
1. 介绍
1.1. 关于本手册
这是五本手册系列中的第三本:1. 优化C++软件:对Windows,Linux及Mac平台的优化指引。
2. 优化汇编例程:对x86平台的优化指引。
3. Intel, AMD及VIA CPU的微架构:对汇编程序员及编译器作者的优化指引。
4. 指令表:Intel, AMD及VIA指令时延,吞吐率及微操作分解的列表。
5. 不同C++编译器及操作系统间的调用惯例。
可以从www.agner.org/optimize得到这些手册的最新版。版权声明如下(原文在第25章):
本系列手册的版权为AgnerFog所有。不允许公开发行与抄袭(mirroring)。但允许对有限受众,出于教育目的非公开发行。这些手册中的样例代码可以自由使用。在我死后,GNUFree Document License将自动生效。参考www.gun.org/copyleft/fdl.html。
当前的手册(2017)描述了Intel及AMD x86微处理器的微架构细节。不涉及Itanium处理器。本手册的目的是使汇编程序员及编译器作者能针对特定的微处理器优化软件。主要关注与一段代码执行所需时间相关的细节,比如不同执行单元的时延及流水线各部分的吞吐率。分支预测算法也被深入讨论。
微架构的学生对本手册也会有兴趣。但必须注意技术描述大多基于我自己的探索,局限于可测量部分。因此,流水线“机制”的描述局限于能够通过计算时钟周期或微操作测量的部分,以及可以从这些测量推测的部分。本手册中的技术性解释应该被视为预测微架构行为有用的模型。我没有办法确切知道它是否符合微架构的实际物理结构。提供这个信息的主要目的是使程序员及编译器作者可以优化代码。
另一方面,我从测量推导信息,而不是依赖于微处理器厂商公开的信息,提供了许多在别处找不到的新信息。微处理器厂商公开的技术细节通常是表面的,不完整的,有选择性的,有时是有误导的。
我的发现有时与微处理器厂商发布的数据不一致。这个矛盾的原因可能是,这样的数据是理论值,而我的数据是在特定一组测试条件下获得的实验值。我不声明本手册中所有的信息是精确的。有些时序很难或不可能精确测量,而且我无法得到微处理器厂商技术手册所基于的技术实现的内部信息。
测试主要在32位及64位保护模式下完成。大多数结果与处理器模式无关。在合适处,重要的区别会被标注。对更旧的处理器,远程跳转、远程调用与中断主要在16位模式下完成。调用门等,没有测试。详细的时序结果在手册4“指令表”中列出。
本手册中大多数信息基于我自己的研究。许多人给了我有用的信息与纠错,我非常感谢。只要我得到新的重要信息,我就会更新手册。因此,本手册比其他信息来源更详细、完备以及准确;并且它包含了许多别处没有的细节。
本手册不适合初学者。它假定读者熟悉汇编及微处理器架构。如果没有,在你开始进行复杂的优化前,请阅读关于这个主题的一些书,并获取一定的编程经验。参考在手册2:“优化汇编例程”中列出的文献,或者访问www.agner.org/optimize里的链接。
读者可以跳过描述旧微处理器设计的章节,除非你在嵌入式系统里使用这些处理器,或者你对微处理器的发展历史感兴趣。
请不要将你的编程问题发送给我,我不会帮你做你的家庭作业!如果你在相关的书籍及手册里找不到答案,你可以在互联网上有各种各样的论坛里找到答案。
1.2. 本手册涵盖的微处理器版本
以下是本手册讨论的x86微处理器家族:微处理器 | 微架构代码 | 缩写 |
Intel Pentium(没有名字后缀) | P5 | P1 |
Intel Pentium MMX | P5 | PMMX |
Intel Pentium Pro | P6 | PPro |
Intel Pentium II | P6 | P2 |
Intel Pentium III | P6 | P3 |
Intel Pentium 4 (NetBurst) | Netburst | P4 |
带有 EM64T, Pentium D等的Intel Pentium 4 | Netburst, Prescott | P4E |
Intel Pentium M, Core Solo, Core Duo | Dothan, Yonah | PM |
Intel Core 2 | Merom, Wolfdale | Core2 |
Intel Core i7 | Nehalem | Nehalem |
Intel第二代Core | Sandy Bridge | Sandy Bridge |
Intel第三代Core | Ivy Bridge | Ivy Bridge |
Intel第四代Core | Haswell | Haswell |
Intel第五代Core | Broadwell | Broadwell |
Intel第六代Core | Skylake | Skylake |
Intel Atom 330 | Diamondville | Atom |
Intel Bay Trail | Silvermont | Silvermont |
Intel Xeon Phi 7210 | Knights Landing | Knights Landing |
AMD Athlon | K7 | AMD K7 |
AMD Athlon 64, Opteron, etc., 64-bit | K8 | AMD K8 |
AMD Family 0x10, Phenom, 第三代Opteron | K10 | AMD K10 |
AMD Family 0x15, Bulldozer | Bulldozer | Bulldozer |
AMD Family 0x15, Piledriver | Piledriver | Piledriver |
AMD Family 0x15, Steamroller | Steamroller | Steamroller |
AMD Family 0x17, Ryzen | Zen | Ryzen |
AMD Bobcat | Bobcat | Bobcat |
AMD Kabini, Temash, etc. | Jaguar | Jaguar |
VIA Nano, 2000 series | Nano 2000 | |
VIA Nano, 3000 series | Isaiah | Nano 3000 |
这里的缩写是为了区分不同的微架构内核,不管商品名是什么。微处理器的商品名通常会混淆不同核心技术见的差异。名字Celeron用于缓存比标准版本少的P2及后续处理器。名字Xeon用于缓存比标准版本多的P2及后续高端处理器。名字PentiumD与PentiumExtreme Edition指多核的P4E。商标Pentium最早用于P5及P6微架构,但后来相同的名字被用于一些具有更新微架构的处理器。名字Centrino用于PentiumM,CoreSolo及CoreDuo处理器。CoreSolo与PentiumM相当相像。CoreDuo也像,但有两个核。
在Intelx86微处理器系列里,P1与PMMX是第五代处理器,它们的处理器内核非常相像。PPro,P2与P3都有第六代内核(P6)。这三个处理器几乎一样,除了每个新型号中添加了新指令。P4是第七代中的第一个处理器,在Intel文档里,出于掩盖的目的,不称第七代。相当意外,在P4里CPUID指令返回的家族号不是7而是15。后续的IntelCPU:PentiumM,Core及更新的Intel处理器都报告号码6,可能是为了与遗留的Intel软件兼容。当Intel从Core处理器重新开始世代编号时,混乱结束了。
名字Sempron用于更少缓存的Athlon64低端版本。Turion64是移动版本。Opteron是带有更多缓存的服务器版本。Intel与AMD处理器更新的世代都有不同核数的不同版本。
读者应该意识到不同的微处理器世代行为非常不一样。同样,Intel与AMD微架构也差异很大。对一个世代或品牌最优,对其他未必最优。
相关文章推荐
- Intel, AMD及VIA CPU的微架构(8)
- Intel, AMD及VIA CPU的微架构(6)
- Intel, AMD及VIA CPU的微架构(7)
- Intel, AMD及VIA CPU的微架构(9)
- Intel, AMD及VIA CPU的微架构目录
- Intel, AMD及VIA CPU的微架构(10)
- Intel, AMD及VIA CPU的微架构(12)
- Intel, AMD及VIA CPU的微架构(14)
- Intel, AMD及VIA CPU的微架构(3)
- Intel, AMD及VIA CPU的微架构(4)
- Intel, AMD及VIA CPU的微架构(13)
- Intel, AMD及VIA CPU的微架构(11)
- Intel, AMD及VIA CPU的微架构(2)
- Intel, AMD及VIA CPU的微架构(5)
- 哪些CPU支持AMD-V(Pacifica)或者Intel VT~~~~X86 virtualization
- 27款Intel和AMD的CPU实用性能定量比较
- 换CPU的品牌(比如INTEL换成AMD,当然连带主板)肯定要重装系统
- Intel 和 AMD CPU的基准测试表
- intel和AMD CPU性能对比(2016年CPU天梯图)组装电脑必读!
- intel和amd的cpu核心详细介绍