如题所述
模块
在着手设计下一代x86处理器核心的时候,AMD的工程师们认为必须实现核心功耗与面积的优化,而且PC应用的发展也让工程师们必须寻找一条新的路子,能够在不同核心之间实现峰值带宽的最大化,并通过共享模块来充分利用每一平方毫米的核心面积。
最终结果就是能够高效优化资源的双核心模块化。整数管线、一级数据缓存等频繁使用的功能在每个核心里都有单独的功能单元,预取、解码、浮点管线、二级缓存等功能单元则在两个核心里共享使用。这种设计可以让每个核心都能在需要的时候使用更大的、更高性能的功能单元,比每个核心都拥有自己独立的小型功能单元更节省核心面积。
这种设计理念的一个直接体现就是核心面积。八核心推土机是AMD公司历史上制造的最大规模芯片,集成了大约12亿个晶体管,但通过功能单元的合理分配,以及32nm SOI新工艺的应用,核心面积被控制在仅仅为315平方毫米,比六核心、45nm工艺的Phenom II X6还要小9%,比四核心、32nm HKMG工艺的Sandy Bridge也只大了46%。 推土机中的浮点单元也经过了完全重新设计,可以在不同核心之间共享资源。每个推土机模块内都有共享的两个128位乘法累加单元(FMAC),可以每个核心执行128位指令,或者每个模块执行256位指令。
推土机浮点单元还改进支持了大量新的指令集。Phenom II X6仅有128位浮点,Intel Sandy Bridge增加了SSSE3/SSE4.1/SSE4.2、128/256位AVX、每周期两个128位AVX、每周期128位AVX+SSE。推土机不但将这些照单全收,还独家支持FMA4乘加指令、XOP扩展操作指令(曾经的SSE5)。
那么指令集都有什么用呢?下边简单列举几个:
SSSE3/SSE4.1/SSE4.2(Intel、AMD共有):视频编码与转码、生物统计算法、文字密集型应用。
AESNI PCLMULQDQ(Intel、AMD共有):AES加密应用、安全网络交易、磁盘加密(微软BitLocker)、数据库加密(Orocle)、云安全。
AVX(Intel、AMD共有):浮点密集型应用,诸如信号处理与地震、多媒体、科学计算、金融分析、3D建模。
FMA4/XOP(AMD独有):高性能计算应用,诸如数字应用、多媒体应用、音频算法。
指令集的变化自然需要软件的支持才能发挥效力,尤其是FMA、XOP两大独家指令。如果软件还在使用老的浮点指令,推土机的特点显然就发挥不出来。在操作系统和软件程序完善之前,可以运行一下AMD提供的两个XOP、AVX补丁程序,再跑分就会有明显的不同。
其实,这两个小程序正是网上传闻的所谓“鸡血补丁”,而且有时候确实能“鸡血”一下,比如让FX-8150 wPrime32M运算时间从15秒钟缩短到10秒钟。 前端(Front End)的任务是驱动处理管线、确保核心随时获取所需信息。在推土机中,每个前端配合一个模块,并负责为其中的两个核心分配线程。AMD在这里也做了大刀阔斧的改进,涉及不相关预测和拾取管线、预测定向指令预取器等等。一个预测队列可以管理一级、二级分支目标缓冲(存储目标地址)所需的直接、间接分支。推土机模块可以在每个时钟周期内解码最多四条指令,而K10 Phenom II只有三条。换句话说,推土机从三发射变成了四发射,就像Intel Sandy Bridge。
预测管线会生成一个拾取地址队列。拾取管线则在每个时钟周期内从指令缓存里拉取32个字节加入拾取队列,再送往解码器。
推土机和Sandy Bridge一样使用了物理寄存器文件(PRF)。这是一个单独的位置,用于保持执行指令的寄存器结果。这种设计可以消除不必要的数据移动和复制,只保留一个拷贝而不用对数据进行广播。 推土机的每个核心都有64KB一级数据缓存、64KB一级指令缓存、32-entry全关联数据页表缓存(DATA TLB)、完整乱序载入/保存单元,后者可以在每个时钟周期内载入两个128位或载入一个128位指令。
每个模块配备2MB 16路关联二级缓存、124-entry二级页表缓存,可同时处理指令和数据请求。推土机支持最多23个二级缓存不命中,用于保持内存系统一致性。
最后,一颗推土机处理器的所有模块与核心共享8MB 64路关联三级缓存。
Turbo Core 2.0智能超频技术
智能超频(动态加速)这种技术最早是Intel在45nm Lynnfield上搞出来的,叫做Turbo Boost(中文名睿频),Sandy Bridge上进化为第二代,可根据应用负载升降不同核心的频率,从而兼顾对频率、线程明暗度不同的应用与整体性能、功耗。AMD Phenom II X6六核心首次引入自己的智能超频技术Turbo Core,但还不是很完善。Llano APU也部分加入了这种技术,并且支持CPU、GPU两个核心的加速。现推土机迎来了真正的第二代。
推土机大大改进了电源管理技术,在核心级别上支持CC6电源状态,在模块级别上可通过CC6支持二级缓存的电源门控(Power Gating)。有了电源门控,空闲核心就可以几乎完全断电,从而给其它核心留出更大的加速空间。
推土机有三种运行模式:原始预设的基准频率、全部核心开启的加速频率、半数核心开启的加速频率。
全部核心加速:如果多余的热设计功耗(TDP)空间允许,推土机可以对所有的核心进行加速,适合那些需要尽可能高频率的线程密集型应用,最高能超500MHz。
AMD宣称,Turbo Core技术在这种情况下可以带来4-7%的性能提升。
半数核心加速:这种情况下半数核心完全关闭,另外一半核心则更大幅度地加速,适合那些对多线程不太敏感、但需要高频率的应用。相比第一代,加速幅度明显更高了,理论上最高可达1GHz。
AMD宣称,Turbo Core技术在这种情况下可以带来5-12%的性能提升。
虽然AMD没有就此技术发布专用的监控工具,但事实上已经有很多硬件类工具提供了支持,既有AMD自家出品的监控超频软件OverDrive,也有第三方的TMonitor、HWiNFO32/64、SIV等等。利用它们可以随时查看每个核心的实时工作频率,而且加速核心的频率会以红色显示。
需要特别强调的是,推土机并不是简单的全部或者半数核心以同样的幅度加速,而是实现了真正的异步频率,每个核心都可以有自己独立的运行速度,利用任何监视工具都可以清楚地看出来。这一方面得益于推土机本身架构的改进(切换速度比K10快得多),另一方面也得益于Windows 7操作系统在线程分配上的优化。