扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在加州举行的年度高性能处理器研讨会Hot-Chips 23上,IBM、Intel、AMD等各大巨头都没有公布全新的产品或者技术,而是继续翻出老一套进行深入宣传和“布道”,AMD最重点的当然就是“推土机”了。
推土机的核心架构图我们已经见识过很多次了,但这种来自AMD官方、详细标注各个模块名称和相对大小的却不多见,而且它第一次公开了推土机处理器的核心面积:八核心型号为315平方毫米。做为对比,32nm Gulftown六核心为240平方毫米,32nm Sandy Bridge四/双核心为216/149平方毫米,45nm Phenom II X6/X4分别为346/258平方毫米。
推土机处理器全部核心缩微图
从图上可以清晰地看到推土机的四个模块(八个核心)、四组2MB二级缓存、四组2MB三级缓存、四条HT总线、DDR3内存控制器、北桥模块、I/O输入输出等等。六核心和四核心型号都是在此基础上屏蔽部分模块(核心)和缓存而来的。
推土机处理器核心其中一个模块缩微图一张架构图和架构特性简介:推土机的家族编号为Family 15h,是AMD K8以来的首个全新设计处理器架构,最大特点就是每两个整数核心加一个浮点核心组成一个模块,进行资源的共享。
首先,推土机处理器代表的是一个新的平台,它的桌面版本Zambeizi将改用新接口Socket AM3+,可支持低电压内存,为HT 3.0每个链接提供了最高2.0A ILDT电流,从而将HT总线速度提升到最高5.2GT/s,IDDR电流也增加到最高4.0A。
主板Socket AM3+插座具备向下兼容性,即新主板仍可安装Socket AM3接口的Phenom II/Athlon II系列处理器,但反过来不行,也就是AM3插座的主板无法使用AM3+推土机处理器。
推土机将主要搭配990FX、990X、970北桥芯片和SB950南桥芯片,理论上也向下兼容8系列芯片组,但老主板需要硬件改造或者BIOS刷新才行,而且可能无法发挥推土机的全部实力。因为老主板可能不支持IOMMU技术,未来AMD“Next-Generation GPU”下一代显卡具备X86内存寻址特性,它可以和CPU一样调用系统内存,CPU通过MMU内存控制器访问内存,而GPU则是通过IOMMU实现内存调用。
这种新技术允许系统设备在虚拟内存中进行寻址,也就是将虚拟内存地址映射为物理内存地址,让实体设备可以在虚拟的内存环境中工作,这样可以帮助系统扩充内存容量,提升性能。
另外推土机处理器还集成了两个72-bit DDR3-1866内存控制器通道,可以支持Unbuffered DIMM内存。
FX-8150结构图:这是AMD官方文档第一次明确提及FX-8150的型号命名,最终证实了它的存在,只是这里并未提及频率规格,仅仅在总体架构上做了简单示意。负责各个模块、核心同步的系统请求队列(SRQ)其实也不是新技术,从AMD第一代双核心Athlon 64 X2就有了。
内存控制器方面,此次也做了改进和调整,推土机处理器每个核心die具备两个DDR3内存控制器,每个控制器可以协调内存调用顺序,进而达到更好的性能,这点特别对于多核心die和多芯片系统使用内存有很大帮助,可以解决内存的性能瓶颈。
DDR3内存控制器除了支持DDR3-1866以外,还具备新的省电特性,支持低电压DDR3内存,具备快速自刷新、addr/cmd/bank三态无效以及让PX电路待机操作等等。
推土机的8MB三级缓存既可以共享使用,也可以独立被使用,同时还具备ECC保护功能,如果是单bit数据则有校正的功能,如果是双bit的话,则有检测的功能。
同时还具备Probe Filter探测过滤功能,处理器内部北桥模块可以对数据传输进行优化过滤,以提升系统性能。
2007年8月,AMD抢先宣布了SSE5指令集(之前从SSE到SSE4均为Intel制定),当时表示该指令集将于2009年推出的Bulldozer处理器中采用。但Intel随即表示,不会支持SSE5。转而在2008年3月,Intel宣布了Sandy Bridge微架构(Intel Tick-Tock策略:45nm Nehalem - 32nm Westmere - 32nm Sandy Bridge),其中将引入全新的AVX指令集。4月份,Intel公布了AVX指令集规范,随后开始不断进行更新。迫于竞争压力,AMD不得不选择支持Intel提出的AVX(高级矢量扩展)指令集,同时采用AVX架构重新改写AMD的SSE5指令集,重定义为XOP(eXtended Operations指令扩展),CVT16(半精度浮点转换)以及FMA4(4操作数乘加)。
正是由于指令集方面的变动,AMD付出了惨重代价的,最终导致了Bulldozer处理器推迟了数年之久。根据AMD的高级架构师Dave Christie的说法,AMD在2007年宣布的SSE5指令集主要包括以下几项革新:3操作数指令甚至4操作数指令,置换与条件移动指令,乘加指令以及其他一系列解决现有SSE指令集缺陷的新指令。
而Intel在2008年4月公布的AVX指令集中,同样包含了SSE5指令集的多项新特性,包括3操作数指令/4操作数指令支持,乘加指令以及部分置换指令等,但实现形式与SSE5不同。并且,AVX指令集还加入了一些SSE5中没有的新特性:SIMD浮点指令长度加倍,为旧版SSE指令增加3操作数指令支持,为未来的指令扩展预留大量OpCode空间等。
由于SSE5和AVX指令集功能类似,并且AVX包含更多的优秀特性,因此AMD决定支持AVX指令集,避免让软件开发者因为要面对两套不同指令集而徒增开发难度。
不过,由于AVX指令集的制定权在Intel手中,未来还可能进行修改。AMD只能保证,其首款支持AVX指令集产品支持目前的最新版本:2009年1月发布的AVX第五版规范。并且,FMA乘加指令只支持到2008年8月的AVX第三版规范。
再来看FMA的问题。AMD此前在SSE5中就对FMA乘加指令进行了深入的开发,而Intel在2008年12月对AVX中的该指令定义进行了大幅度修改,仅支持3操作数乘加。AMD对此并不赞同,因此将保留旧版定义,并将其重新命名为FMA4(4操作数乘加)。在应用初期,AMD处理器中支持的FMA4将和Intel处理器FMA指令拥有不同的CPUID标签。而未来AMD也准备支持Intel的新版FMA定义,让其和FMA4并存。
和FMA的分歧类似,SSE5中还有一些和AVX并不包含的指令功能。AMD当然不舍得全盘放弃SSE5,因此将其中的特色功能采用AVX的指令架构重新定义,命名为XOP指令集扩展。
XOP保留的原SSE5指令包括:
Horizontal integer add/subtract水平整数加减
Integer multiply/accumulate整数乘加
Shift/rotate with per-element counts矢量元素转移/旋转
Integer compare整数比较
Byte permute置换
Bit-wise conditional move条件转移
Fraction extract片段提取
Half-precision convert半精度转换
简单来说,未来的AMD处理器将支持:
1. Intel的AVX指令集(FMA指令为低版本)。
2. XOP指令集扩展:即SSE5指令集中不被AVX包含的部分,采用AVX架构重写。
3. FMA4指令,未来可能兼容Intel的新版FMA指令。
AMD表示,支持这些新版指令的AMD64 SimNow!模拟器已经推出。2011年的Bulldozer是首款支持这批新指令集的AMD处理器。
当然这并不意味着AMD将会放弃SSE5,Christie 表示SSE5指令:“是和软件开发商们经过数月的讨论共同推出的,是基于他们的需求推出的。”因此SSE5指令中未在AVX出现的新功能,将会在AMD新的XOP、CVT16以及FMA4 等指令集中看到。
推土机的每个核心都有自己的16KB 4路关联一级缓存(总共为128KB),每个模块有自己的2MB 16路关联二级缓存(两个核心共享),然后所有模块与核心分享最多8MB 16路关联三级缓存。三个级别缓存的缓存行(cacheline)都是64字节的。
推土机FX处理器核心Die
另外推土机处理器还集成了两个72-bit DDR3-1866内存控制器通道,以及四个16-bit接收、16-bit发射HyperTransport总线链接。
中间夹着一个共享的浮点核心
推土机架构的首要理念就是每个模块由两个核心组成,对于整数管线、一级数据缓存等等分别予以执行,而对于浮点管线、二级缓存则由两个核心共享合作完成。AMD表示,这种做法能够让每个核心在需要的时候完成更多功能、发挥更高性能,同时节省核心面积,比每个核心都单独割裂开来效率更高。
下边来看推土机每个模块的具体组成,首先是两个核心共享的前端:
在共享前端,首先处理器对数据进行预测和判断,推土机处理器提供了优化的计算过程,比如分离的预测和获取管线、直接预测的指令预取、2路的64KB指令缓存、32Byte获取、两级的指令TLB结构以及融合的分支计算。
两个独立的整数核心
而数据和指令经过共享前端之后,会选择进入整数和浮点计算单元,整数单元提供了诸多特性,比如线程终止逻辑、基于物理寄存器文件PRF的寄存器重命名、每个核心统一的协调器、联路预测16KB一级数据缓存、32输入全关联数据TLB、全面乱序加载和存储。
浮点计算单元则提供了协处理器组织、上级核心完成报告、双128bit浮点乘加FMAC计算管线、双128bit封装整数管线、PRF寄存器重命名、单浮点协调器。
二级缓存和数据预取器也是两个核心共享的
共享的二级缓存是16联路结构,提供了L2 TLB和页面助跑器、多数据预取、针对内存系统并发的23个二级缓存数据纠正。
电源管理方面,推土机增加了新的核心状态Core C6(简称CC6),可在某个核心空闲的时候借助功率门控(Power Gating)将其彻底关闭。
当模块内的两个核心全部空闲时,缓存和寄存器状态都转储到CC6保留空间内,然后关掉Core VSS,恢复的时候则重新载入CC6保存的状态,继续执行。
处理器通过核心电源状态(Core P-States)定义多个频率和电压运行点,其中高频率电源状态可以带来更高的性能,但需要更高的电压和功耗;硬件和操作系统会根据核心当前所处的具体电源状态来提供所需的性能,但如果可能的话,会尽量使用更低频率的电源状态,以节省功耗。
推土机将支持AMD的第二代Turbo Core动态加速技术,在处理器低于功耗和发热量极限的时候自动提升频率、电压,直到达到功耗和发热量极限再降回来。
另外从曲线图上还可以隐约看出,AMD给推土机设想的电压最低应该只有0.7V,最高也不过1.3V左右,但因为GlobalFoundries 32nm工艺的不成熟,我们看到大量推土机样品的实际常规电压都达到了1.4V以上,不过据说刷了最新BIOS之后已经可以降到1.2V。
第二代Turbo Core技术的两大特点:一是在多线程敏感应用中支持所有核心同时加速,只要热设计功耗允许就行;二是在频率敏感应用中可以让半数模块进入C6关闭状态,另一半模块则以更大的幅度加速,最多可以提速1GHz。