Skylake处理器技术揭秘
- 来源:微型计算机 smarty:if $article.tag?>
- 关键字:Skylake,英特尔,Core M smarty:/if?>
- 发布时间:2015-11-06 17:24
探寻进化的根源
从本刊2015年8月下刊登的《第六代酷睿处理器Skylake首发测试》一文中,可以看到,Skylake处理器无论是在同频性能、核芯显卡性能,还是在超频能力上都全面领先上代产品,是英特尔“Tick-Tock”发展战略中名副其实的Tock级产品。然而让人遗憾的是,在Skylake处理器发布上市的很长时间里,英特尔并未公开其采用了哪些设计与新技术,令Skylake处理器获得了全面升级。直到最近,在英特尔技术峰会上,Skylake处理器内部架构的神秘面纱终于被揭开。
Skylake是英特尔的第二代14nm处理器产品,自2012年起就开始设计。从英特尔的Tick-Tock的发展步伐来看,Skylake属于Tock步骤—也就是工艺不变,架构大升级。之前英特尔在Broadwell(Tick步骤,工艺改变,架构微调)上就已经使用过14nm工艺。相比Broadwell,Skylake在处理器的底层部分做出了大量改进,并引入了大量面向新计算平台需求的特性和功能。下面在进行深入的技术架构介绍前,首先还是让我们再了解一下Skylake处理器的基本情况。
模块化设计 四大类Skylake处理器简介
从组成来看,Skylake处理器主要分为四类产品:Skylake-Y、Skylake-U、Skylake-H、Skylake-S。英特尔的图片非常详细地解释了Skylake家族的核心情况。首先介绍的是Skylake-Y和Skylake-U,这两个系列是专门用于移动平台的产品。它们的TDP从最低4.5W到最高不过28W。
Skylake-Y系列的产品名称是Core M系列,它的配置方案是“2+2”,也就是2个CPU核心搭配2个GPU模块,并且处理器内部就包含了I/O平台芯片(相当于主板南桥芯片)。在封装方式上,两者都采用BGA封装,其中Skylake-Y的芯片基板PCB最小,尺寸为20mm长、16.5mm宽,采用BGA1515封装,也就是芯片基板PCB的触点有1515个。Skylake-U系列稍大一些,采用的是BGA1356封装。Skylake-U系列中,有一款“2+3e”方案配置的产品,它的处理器核心依旧是2个,但是拥有3个GPU模块,并且搭载了64MB的eDRAM,理所应当的,它的功耗也最高,TDP达到了28W左右。需要额外注意的是,Skylake-Y系列产品目前只支持DDR3L或者LPDDR3,没有加入对DDR4的支持。原因有可能是电力原因或者DDR4需要更多的走线,并且Skylake-Y面对的超轻薄市场对DDR4看起来还不算太敏感,这样做也是很正常的,未来的新型号的Skylake-Y有可能加入对DDR4L的支持。
其次就是Skylake-H,Skylake-H系列采用的是BGA1440接口,显然不是给玩家使用的,它主要面向OEM厂商、注重性能的笔记本电脑、移动工作站等设备,它的芯片基板PCB面积是目前所有的Skylake家族中最大的,达到了42mm长和28mm宽。和刚才的Skylake-U类似,Skylake-H也提供了一个“4+4e”的搭配,四个CPU核心搭配4个GPU模块,并且还配备了高达128MB的eDRAM缓存,这个配置是目前整个Skylake家族中图形性能最强悍的方案。
接下来是Skylake-S,这个系列采用的是LGA封装,也就是我们常见的可零售的台式机处理器,面向桌面电脑、一体机、小体积设备等。这个系列目前有两个配置,分别采用了“2+2”和“4+2”方案,接口全部使用LGA1151,PCB基板长宽都为37.5mm。TDP功耗方面,以35W和65W为主,主打超频、高性能的K系列处理器TDP功耗可达91W。
上述分类情况,基本上就确定了某个系列的产品性能基准情况。比如Skylake-S对应的桌面平台目前看起来不可能有太好的图形性能,毕竟只有2个GPU模块。Skylake-H的“4+4e”版本拥有最强的图形性能,部分高性能移动工作站可能会很喜欢它。当然,不排除未来英特尔处于市场考虑,更改某些系列的模块配置方案,比如加入更多的CPU核心或者GPU模块等。目前英特尔四个系列、五个核心共发布了48款Skylake处理器产品,如果加上尚未发布的赛扬、奔腾以及至强系列,并考虑未来市场需求的更改,这个数据可能会大幅度提升,甚至接近100款。
全面升级Skylake整体架构总览
乍眼一看,Skylake的核心架构图,其内部设计和之前的Broadwell核心架构差别不大,但是实际上细节上,Skylake改善了几乎每个区域的功能、带宽和功耗控制等单元。首先,Skylake在IA架构上允许对代码进行优化以获得更多的指令级并行,并且允许在同一个时钟周期内执行更多的操作进入、退出队列。不仅如此,Skylake还将连接核心、缓存、核芯显卡以及系统部分之间通讯的环状总线位宽提升至128bit,这样可以使得内核数据传输速度更快。对内核而言,环形总线的升级有助于提升数据效率,尤其对高速缓存未命中有比较明显的正面影响。不过,这些改善可能在目前的软件中无法体现出具体的应用效果,但是在诸如大数据、金融运算等行业应用中,还是有很大意义的。
其次,Skylake在内存上设计了DDR3L和DDR4双内存控制器(或一个内存控制器提供双支持),不过Skylake-Y系列例外(前文曾提及)。需要说明的是,在任何情况下,Skylake都只能使用一种类型的内存并启动相应的内存控制器,不可能实现混合内存。第三,在PCI-E通道方面,Skylake-H和Skylake-S拥有16个PCI-E3.0通道连接用于设备和处理器的直连,这和英特尔之前的处理器类似。根据处理器和主板的规格不同,16个PCI-E3.0通道可以被拆分成两个PCI-Ex8或者一个PCI-Ex8搭配2个PCI-Ex4。请注意,在早期一些报道中宣称Skylake可以提供20个PCI-E3.0通道,但是现在这个消息被证明是不实的。
更多的PCI-E通道主要是面向多GPU配置的系统,比如SLI或CorssFire方案。在SLI配置方面,英伟达的GPU做出了一些限制,也就是至少需要PCI-Ex8才能启用SLI,但是CrossFire并没有这样的限制,这就使得多GPU系统变得很微妙。比如你可以在Skylake-S系统上配置双路SLI系统,但是也可以组建3路CrossFireGPU。至于Skylake-U或者Skylake-Y,这些处理器一般情况下都不会搭配独立显卡,因此,这些处理器的PCI-E通道往往被用作其他支持PCI-E的设备,比如存储系统(诸如M.2SSD)等。
在说完了PCI-E通道后,再来看看有关CPU和芯片组之间的连接情况。目前Skylake使用的是DMI3.0总线连接处理器和芯片组。DMI3.0是前代DMI2.0的升级版本,其速度从之前的5GT/s(约2GB/s)升级至目前的8GT/s(大约3.93GB/s)。实现DMI3.0也需要一定的额外条件,尤其是主板和芯片组之间的距离不能过长,最长不得超过7英寸,这是为了保证高速信号在长距离传输中的稳定性和完整性。至于Skylake-U或者Skylake-Y,由于处理器基板上同时包含了处理器和南桥,因此整体连接界面就不管主板厂商什么事情了。这个传输通道早在Haswell时代就确定了,带宽大概在4GB/s左右,功耗大概是1pJ/bit。
最后再来看看有关集成的FIVR的内容。从Haswell时代开始,FIVR调压模块从主板上移植到处理器内部。Haswell和Broadwell这样做的原因是考虑减少主板成本和能耗。因此我们在之前的Z87、Z97等顶级主板上最多只能看到8~12相供电设计,和之前动辄20相的供电电路相比完全不可同日而语。不过这样带来了一个副作用,虽然FIVR内置对移动平台来说提升了能耗比,但是对高频率CPU来说带来了一个新的热源。而在超频时,FIVR的温度和输出的电能质量反而严重影响了处理器的超频能力,甚至主板的设计方案。比如Broadwell-Y型处理器,FIVR的集成,使得Intel需要在处理器基板下方设置测量晶体管,从而增加了处理器的厚度。因此,支持Boradwell-Y的主板都要求开孔以避免处理器无法安装(其桌面版本处理器无此问题)。而在Skylake处理器上,CPU不再内置FIVR,因此主板厂商需要自行设计供电系统,这会导致主板成本略微上升。同时,我们也在100系主板产品中看到,20相以上的供电电路又回来了。
重点在于提升并行性能
Skylake在架构上的改进传说中用于提升处理器单线程性能的“CPU逆向超线程技术”并未出现在Skylake处理器上,与人们的猜测相反,Skylake处理器在技术架构上重点加强的却是提升处理器的并行运算性能。
指令集并行是处理器设计的核心因素之一—如果你能组合一组指令并将其一次性处理完成(考虑相关性问题),那么并行的难题就会迎刃而解而且性能会得到有效提升。但是问题在于,很多指令需要其他执行的数据或者依靠其他指令才能正常执行,这就是相关性问题,所以并行性一直都是很多设计人员的重点关注对象。在CPU架构设计上,一个最好的结果是,有这样一个无序的架构,当不同的分支代码执行的时候,它们可以被调度器分配在不同的组中,这样可以实现一定程度上的并行性。
所以,Skylake在增加并行性上做出了很多尝试。首先是乱序执行的窗口,Skylake相对于Haswell增加了16.7%,这使得英特尔的微指令架构可以拥有更大的空间来增加队列和安排,达到更大的并行性。其次,这样做也使得动态的加载和读取会在数据可用时,有更大的空间将其排列在队列之前等待处理。在micro-ops微指令方面,英特尔目前升级了架构,IA核心允许派遣的微指令从之前Haswell的4个提升到了6个,这使得队列派遣速度更快,并且派遣队列中的执行单元数量也相应增加到了6个。另外,执行单元部分则提升了单元数量、降低了延迟,节能方面也增加了空闲关闭的功能。在处理有关AES-GCM、SES-CBC指令时,速度相比前代产品增加了17%和33%。
处理器核心前端(micro-ops微指令的分配和推送)的主要改进在于更好的分支预测和更快、更有效率的预取,以及增加了动态缓冲区等。分支预测也是一个提高处理器性能的主要因素,在某些情况下,处理器可以预测指令的结果,然后跳过执行指令。但是太多的分支预测会浪费电能,分支预测太少则又会增加处理时间和延迟。分支预测一般是处理器设计的核心问题,目前我们只知道Skylake改善了分支预测设计,英特尔拒绝给出更详细的信息。
在处理器前端还有一些小的调整,比如执行单元的延迟降低,除法器的增强等—尤其是除法器,这是一种难以通过指令提高性能或者改进的基本计算单元。一般来说,在编写科学计算代码时,通常建议最好少使用除法器,Skylake的增强能够在一定程度上解除瓶颈效应。另外,Skylake的浮点乘法计算器相对Broadwell来说增加了一点延迟,恢复到和Haswell相当的水平。据分析,这是一个设计上的权衡,CPU在企业应用上会有更好的表现。
此外在之前的一些Skylake介绍中,我们没有提及的一个内容就是有关Skylake的缓存,Skylake的二级缓存从之前处理器的8级关联减少至目前的4级。这是非常奇怪的,因为自从SandyBridge开始,英特尔就在使用8级关联的L2缓存。一般情况来说,缓存关联越多,会提高存储访问的效率,更大的L2关联在很多算法中会提高数据命中率。不过,降低关联性也可以在数据存取时降低功耗并且避免某些关联区变成“死区”(关联超过一定程度后,并不会直接带来数据命中率的上升)。所以从8路关联到4路关联,英特尔依旧是在做权衡,如果你直接比较Skylake和Haswell,就会发现L2缓存的带宽翻了一倍,缓存和页面的延迟也降低了,最终的结果是性能比Haswell更好,功耗却变得更低。
另一个处理器后端的改变在于超线程性能的提高。在一些基准测试中已经可以体现出来这一点变化,比如Skylake处理器的CINEBENCH单线程、多线程性能都比前几代好。超线程的改进和micro-ops微指令的回退紧密相关,回退是放弃使用操作并释放队列的意思。实际上,在超线程架构中,回退是一个瓶颈。在超线程运算中,CPU往往会遇到这样的情况:有需要处理的新的数据指令,但是由于老的指令没有清除,因此新的指令无法进入处理。而Skylake上新的回退机制将允许每个核心的每个线程在每个周期内回退四个micro-ops微指令,这将对一些企业级、密集型工作任务带来实实在在的性能提升。
最后,从架构上来看,Skylake看起来还是很像Haswell,并没有太大的调整,比如Skylake更深的缓冲区很难直接感受到性能的提高,尤其是软件在一开始就充满缓冲区时。很多改进都直接针对纯粹的性能角度(L2缓存和浮点部分除外),所以必须有特定的工作负载用户才能体会到差距。
规格更高第九代核芯显卡
英特尔的核芯显卡目前牢牢占据了显卡市场首位。在Skylake上出现的是第九代核芯显卡。和第八代核心显卡相比,第九代核芯显卡主要在EU单元的数量上做出了提升。比如之前的产品核芯显卡型号最高的GT3只有48个EU单元,但是在Skylake上,英特尔还增加了GT4,让核芯显卡的EU单元数量提升到了72个。目前GT1的EU单元数量为12个、GT2是24个、GT3是48个,GT4是72个,性能上限更高了。
不仅如此,英特尔还对EU单元的内部进行了改进,英特尔宣称新的核芯显卡拥有更快速的像素后端处理,几乎可以达到8像素/每周期的填充或者混合速度,un-slice的几何部分则改善了三角形的剔除率和删除冗余顶点的能力。英特尔宣称,Skylake的核心显卡中每周期填充率是之前产品的1.33倍到2倍,这无疑加强了核芯显卡在高分辨率以及大尺寸纹理应用的游戏中的性能。新一代核芯显卡的功能还包括无损图像压缩、压缩整个图形子系统允许更少的数据传输等,这些都将节约功耗和带宽。此外,英特尔在图形方面非常重要的升级是提供尽可能多的频率、功耗方案,允许部分核心只有在需要的时候才会供电,或者在视频播放等情况下有更高的效率。
同时,Skylake的核芯显卡还可以支持16bit浮点模式,虽然目前16bit浮点模式使用的得多,但是由于计算精度下降,因此计算速度和功耗表现都比32bit模式更为出色。Skylake的核芯显卡可以每周期完成两个16bit的浮点计算。在功能方面,新的核芯显卡现在支持ASTC压缩格式,最高x16 MSAA,Post depth test coverage mask、浮点原子、MPO、纹理过滤等新功能,这些新功能的加入使得Skylake的核芯显卡对游戏和图形支持更为完善,能够实现更多的效果。功耗方面,Skylake的核芯显卡在功耗上除了频率自动调节外,还在一些细节上也做出了改进。比如允许媒体模块单独运行,而不启用整个slice模块,如在播放高清视频、视频转换、无线显示时。此外还允许slice和Un-slice模块以不同的频率运行,在slice和EU上都设计了功率门控电路,整体功耗控制将更为出色。
大幅缩短频率调整时间Skylake的节能设计
目前,各种各样的功率控制电路和设计已经都被用在Skylake中了,无论是硬件禁用还是频率调整等,都可以有效地提高能耗比,节约能源。此外,Skylake中还设置了四个电源轨(powerrails,用于探测和控制整个CPU部分的电能消耗),而之前的Haswell和Broadwell处理器则只设置了一个。
Skylake中最重要的功耗控制管理单元是分组控制单元(简称PCU)。PCU实际上是一个单片机,它通过监测和估算功耗需求,对比每一个单独区域的功耗消耗、需求的比值来确定是否调整频率、电压甚至关闭某个部分。举例来说,一个“4+2”配置的Skylake处理器拥有大约12个电源门控区域。这里有多种频率调节方式分别给不同用途的区域,比如核心区域、非核心区域、集成显卡、eDRAM等。
在Skylake的节能设计中,Speed Shift可称作是最重要的功能了。Speed Shift是从Speed Step演化而来的功能。传统的频率控制是通过操作系统和软件来监控处理器和任务状态,并根据一些列算法计算处理器的性能、功耗需求,然后再反馈给处理器。由于存在几层软件和硬件的沟通,因此传统的功耗控制拥有大约30ms的延迟时间。在全新的SpeedShift中这个延迟被大幅度降低了,Speed Shift不再经过操作系统和软件控制,而是直接通过硬件来对处理器进行测算和调配,响应和控制速度更为迅速。据英特尔的数据,传统实现P-States大概需要30ms,而Speed Shift时间只需要大约1ms。也就是说,在1ms左右的时间,处理器就可以从最低频率飙升到最高频率,在迅速完成工作后又瞬间降回低频,整体过程行云流水,大大提高了处理器的工作效率。
全新架构难以拒绝
总的来看,根据本刊对Skylake处理器的评测和本文对Skylake架构的详细解读,让人们看到了一个锐意进取、全面改革的英特尔。Skylake几乎在所有层面都针对之前的Haswell以及Broadwell做出了改进,无论是全新的CPU架构、GPU架构还是新的节能设计、Speed Shift功能,都在向人们展示着Skylake的优异和出色。目前PC市场整体处于下滑态势,Skylake的出现,对PC市场来说是一次显而易见的利好,它的优秀设计和功耗表现,吸引了那些有升级或全新装机需求的用户关注。对笔记本电脑而言,Skylake的优秀特性和极高的能耗比,使得笔记本厂商能够更容易设计出轻薄、可靠、超长续航时间的产品,值得用户为此升级换代。
Tips:多层覆盖显示MPO
在Skylake的核芯显卡上,英特尔实现了MPO(Multiplane Overlay)支持。在典型环境中,用户看到的图像需要加载至内存,然后进行相应的处理,接下来再写回内存,最后再交给显示控制器,显示在显示器上。这个过程路径漫长、过程复杂,在电能表现和效率上都不算太好。
MPO就是为了解决这个问题而出现的。MPO将目前的屏幕分为三个“飞面”,然后将其传送给桌面窗口管理器。这些分出来的“飞面”,全部都是独立分开的,互不干扰。借助于MPO,每一个飞面都有各自的缓冲区,在显示控制器上也由各自的固定功能硬件来处理,不需要GPU开启高功耗模式。MPO也允许数据以NV12格式动态处理,在最终显示之前都不要求解压缩成RGB格式,这在很大程度上节约了带宽和功率。当显示切换时,MPO直接可以控制显示控制器切换不同“飞面”的显示,不再经由内存、CPU或者GPU绕一圈,更为直截了当。在MPO启用后,英特尔测试显示,在1440p显示屏上播放1080p24fps视频的时候带来了17%的能耗降低。目前高分辨率显示屏越来越多,但是缺乏点对点的高清晰内容,因此这项功能在接下来的时间中还大有用武之地。
文/林子涵
