[推土机三世华丽转身聚焦AMD,Steamroller性能提升]益智推土机 AMD呕心沥血研发的“Bulldozer”推土机架构被誉为X86体系数十年来最大的革命,不过最终的测试中却是出师不利,根本无法和Intel同代产品相抗衡,只能打性价比这张牌,甚至一度寄期望于微软的线程调度补丁,不过打了补丁以后性能也没有显著改变下一个要期待的就是第三代推土机关键Steamroller了,让我们来做一番解析 推土机前赴后继“Bulldozer”推土机架构折戟沉沙以后也有很多分析,包含工艺不成熟、软件优化不足等等,最权威的测试分析以后认为是推土机的分支预计及指令缓存命中设计不够好,造成了架构失利 在这以后,AMD在今年的处理器及APU上开始使用第二代推土机关键Piledriver,号称IPC性能比第一代推土机提升15%,Trinity APU所反应出来的CPU性能测试也一度带来惊喜,不过最终的结果仍然是聊胜于无,改变并不大 现在第二代Piledriver关键的关键改变是在功耗降低上,AMD称活动状态下平均降低10-20%,因此一样的TDP功耗下频率变高了,这一点在Trinity APU及FX-8350频率达成4GHz上能够看得出来。
Pildriver的线程调度效率也改进了,另外还有指令域取及分支预计的优化,不过总体来看性能改变并不大 缓存改善 共享的L1指令缓存大小也提升了,不过AMD还是没有详细说明推土机使用的是每模块2路64KB L1指令缓存,每个内核势能使用一路,这么一来推土机的每个内核使用的L1指令缓存就比上一代的Phenom还要少,所以Steamroller增大L1指令缓存很有意义AMD称增大L1容量以后,指令缓存的命中失误率降低了30%,不过相关L1数据缓存的设计没有消息 另外,即使AMD不愿意称之为缓存,不过Steamroller现在确实增加了一个解码微操作的队列,一旦X86指令解码为微操作,寻址和解码操作就储存在这个队列里预取时,只要这个队列里有对应的寻址数据,那么Steamroller的前端就会关闭解码单元,只用这个队列来服务预取请求这和SNB架构里的decoded uop cache设计类似,当然看起来规模更小部分罢了AMD并不愿意公开这个队列里有多少微操作,只说它们对现在的指令命中率来说已经足够大了L1到L2缓存的接口也提升了,队列变大,并改进了逻辑性 最终,Steamroller在缓存前端引入了动态大小的L2缓存,能够依据缓存负载及命中率的高低,Steamroller的模块能够1/4隔断选择使用多少L2缓存,用不到的那些就会被关闭。
AMD认为这一设计在移动用户端的应用很有意义,比如视频解码时CPU只需要短时间工作而不需要太多的L2缓存应用,这一设计就能够降低功耗,提升续航时间可调缓存不会提升性能,它的出发点关键是降低能耗 Steamrollerz降低L2/L3缓存延迟上没有太大改变,依据AMD的说法,她们认为推土机架构中的L3缓存延迟过高并不是问题,最少在修复上没有列入高级优先权,而且消费级市场的处理器的L3缓存通常比较少,而服务器应用中对L3缓存延迟又不敏感,所以L3缓存延迟高低并没有太大意义 三代压路机来袭 Steamroller基础沿用了Bulldozer/Piledriver的架构设计,但在她们的基础上全方面进化不过根据Intel的Tick-Tock战略来看,Steamroller并不是“Tick”,因为28nm Bulk工艺跟32nm SOI工艺没有太大区分,不过它是“Tock”架构升级,即使大部分架构没有改变,从一些角度来看Steamroller是介于工艺转换和架构升级的两个极端中 推土机最大的问题之一就在于共享了预取和解码单元,Steamroller最终改变了这个弊端,每个模块中的内核全部有了自己的4发射指令解码单元,而且每个解码单元全部是并行操作而非之前那种每七天期循环运作。
即使双倍的解码单元并不意味着双倍的性能提升,因为4发射前端不可能总是100%利用,但它仍然是Steamroller架构中最大的改变 改用这个设计以后弊端也很显著,功耗及关键面积全部要上升,不过权衡以后这么做还是值得的,而且这个不足能够从其它方面填补,后面还会继续讲到Steamroller继承了Piledriver分支预计设计,不过性能做了改善,尤其是针对服务器负载,而且分支目标缓冲器更大,这么一来分支预计失败的几率就降低了20% 实施/浮点单元的改善 AMD将Steamroller模块中的共享浮点单元愈加合理化,FPU单元的实施能力并没有改变,不过关键面积总体上降低了MMX单元现在能够和128bit FMAC管线共享部分硬件AMD并没有提供太多介绍,只是说硬件共享只用于独有的MMX/FMA/FP操作,所以并不会带来性能处罚问题 管线资源的降低被认为是功耗和面积降低的关键原因整数单元的实施单元没有改变,不过其它方面的改善仍然提升了它的性能Steamroller架构中的整数和浮点单元寄存器文件更大,即使AMD没有明确说明有多大负载操作也被压缩了,所以物理寄存器文件只需要一个入口即可,这么能够提升寄存器文件的等效大小。
调度窗口的大小也提升了,这么能够更加好地利用现有的实施单元资源存放-载入仿佛也有提升,Steamroller在侦测互锁、取消Load操作及从Store单元读取数据方面做的比前两代更加好 未来前瞻 这部分关键讲未来的CPU设计了,而且和GPU相关,因为未来的AMD CPU设计会使用GPU那种高级自动化设计及高密度单元Libraries,简单来说就是AMD未来准备深入使用自动化的CPU设计,更少地降低人工电路设计 这种设计的好处是功耗和关键面积更低,在32nm推土机FPU单元上使用了这种设计以后功耗和面积降低了30%不过缺点也不是没有,频率不够高,高度自动化的设计达不到人工电路设计的频率,不过AMD认为这也是值得付出的代价,即使达不到最高频率,不过每个操作的功耗会降低15-30%Steamroller上还看不到太多高度自动化设计,不过2021年的Excavator处理器上就会看到。