有没有什么方法可以确定,或者我可以找到Haswell,Sandy Bridge,Ivy Bridge和Skylake Intel处理器的分支目标缓冲区大小的任何资源?Haswell,Sandy Bridge,Ivy Bridge和Skylake的BTB大小?
回答
由昂纳雾检查软件优化资源,http://www.agner.org/optimize/
BTB应在“英特尔,AMD和威盛CPU的微架构:一个优化指南汇编程序员和编译器的制造商”,http://www.agner.org/optimize/microarchitecture.pdf
3.7英特尔Sandy Bridge和常春藤桥的分支预测
BTB组织。根据非官方的传闻,Sandy Bridge的分支目标缓冲区比Nehalem大 。目前还不知道它是否有一个级别,如Core 2和更早的处理器,还是Nehalem的两个级别。它可以处理每个16字节的 代码最多四条调用指令。如果每16个字节的代码有多于3个分支指令,则条件跳转效率较低。
3.8分支预测英特尔的Haswell,Broadwell微架构和SKYLAKE微架构
BTB组织。分支目标缓冲区的组织是未知的。它似乎相当大。
英特尔可以以“英特尔64和IA-32架构优化参考手册” http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html围绕“3.4.1分支预测最优化”,但仍没有尺寸描述的一些数据。
这看起来很奇怪,但1998-2000年在cpuid中没有关于BTB的信息:http://www.installaware.com/forums/oldattachments/02142006163/tstcpuid.c(Gerald J. Heim,德国蒂宾根大学)。 ,但仍不能在http://www.felixcloutier.com/x86/CPUID.html或从英特尔员工一些公开资料中所列...
* This table describes the possible cache and TLB configurations * as documented by Intel. For now AMD doesn't use this but gives * exact cache layout data on CPUID 0x8000000x. * * MAX_CACHE_FEATURES_ITERATIONS limits the possible cache information * to 80 bytes (of which 16 bytes are used in generic Pentii2). * With 80 possible caches we are on the safe side for one or two years. * * Strange enough no BHT, BTB or return stack data is given this way...
应该有一些BTB性能监控单元(PMU)专柜,并有实验得到BTB大小从运行特殊的测试程序,由马特·Godbolt检查http://xania.org/201602/haswell-and-ivy-btb
结论
从这些结果,似乎常春藤桥(因此可能Sandy Bridge)对于无条件分支的BTB查找使用几乎相同的策略,虽然具有更大的表大小:4096个条目分为1024种4种方式。
对于Haswell而言,它似乎是一种确定集合的新方法,同时还有一种新的方法来驱逐条目。
多的他对分支预测的帖子和事件:在较新的Intel处理器
- http://xania.org/201602/bpu-part-one静态分支预测 - 第二部分
- http://xania.org/201602/bpu-part-three的BTB当代英特尔芯片)
- http://xania.org/201602/bpu-part-four分支目标缓冲器,第2部分
他的代码是公开的,基于昂纳的测试:https://github.com/mattgodbolt/agner:https://github.com/mattgodbolt/agner/blob/master/tests/btb_size.py,https://github.com/mattgodbolt/agner/blob/master/tests/branch.py
- 1. MIPS integer Sandy Bridge
- 2. 通过Sandy-Bridge CPU进行优化?
- 3. 英特尔Sandy Bridge CPU中TLB的大小是如何确定的?
- 4. 类似于非Sandy Bridge/Xeon处理器的RAPL
- 5. 将代码加载到GPU(英特尔Sandy Bridge)
- 6. 将渲染设备从Sandy Bridge GPU更改为主GPU
- 7. 基于Intel Ivy Bridge的PC上的MacOS 10.8 i3-3220
- 8. Android Cocos2dX JNI Bridge
- 9. Appcelerator ios&windows bridge
- 10. PHP/Java Bridge java.lang.NoSuchMethodException
- 11. OrientDB PHP/Gremlin Bridge
- 12. Ivy Bridge架构的GNU Fortran编译器优化标记
- 13. activerecord和mongo/mongo-mapper bridge
- 14. 使用SSE/AVX在Ivy Bridge上进行最大SIMD整数乘法?
- 15. Ivy Bridge上的RDRAND指令的延迟和吞吐量是多少?
- 16. 使用Php-Java Bridge
- 17. Java <-> C Bridge
- 18. WebView JavaScript Bridge文档
- 19. PHP/Java Bridge错误
- 20. Php - > Node.js transport/bridge
- 21. 如何安装Java Access Bridge?
- 22. Java Socket Bridge无法连接
- 23. Portletfaces Bridge,空指针异常
- 24. 如何访问React Native Bridge?
- 25. 境界API Bridge文档
- 26. Codigniter和Wordpress Bridge for图片上传
- 27. Scripting Bridge和com.apple.iWork.Pages - 可以工作吗?
- 28. 什么型号专用寄存器控制Ivy Bridge Xeon上的RAM纠错?
- 29. 如何使PHP Java Bridge的工作
- 30. KVM/Bridge:没有到主机的路由
分支预测似乎是“秘密武器”是CPU公司没有公布有关细节的一部分。可能是因为害怕帮助他们的竞争对手。我们所知道的大部分内容似乎都基于基于关于事物如何工作的理论的实验测试。绝对有趣的是有多少可能弄清楚。 –
..和如何实现开源OOO CPU内核良好的分支预测像https://github.com/ucb-bar/riscv-boom/blob/master/src/main/scala/bpd_pipeline.scala HTTP:/ /riscv.org/wp-content/uploads/2016/01/Wed1345-RISCV-Workshop-3-BOOM.pdf#page=20 https://ccelio.github.io/riscv-boom-doc/第3章 – osgx