Ice Lake架构深度解析 Intel的雅典娜女神
本文经超能网授权转载,其它媒体转载请经超能网同意。
ice lake是intel下一代平台的架构代号,随着台北电脑展上的演示,它终于揭下来神秘的面纱。而前不久intel内部的第二季度财报会议上,ceo已经宣布ice lake处理器已经正式向oem厂商出货,戴尔方面也迅速行动,延期了一个月多的、采用新ice lake处理器的xps 13 7390也迅速上架接受预定并将于近日发货。这意味着intel的第一代量产级10nm产品(不算cannon lake唯一的那款10nm i3)终于要在市场上亮相了,在此之际,小编编译、整理了目前有关于ice lake架构的相关解析文章,探寻其背后的改进之处。
继上一次intel更新他们的桌面级处理器的架构已经过去了将近5年的时间了,不得不说,skylake是一代非常成功的架构,也可能是从p6以来intel使用时间最长的一代处理器架构,支撑intel走到现在还在主流和服务器市场上面占据着上风。
首先我们要理清一点,ice lake是整个处理器架构的代号,而现在的intel处理器架构中包括了内核、gpu、以及uncore部分的其他io单元,所以本文并不只是针对cpu的内核微架构进行解析,而是对于整个体系结构。
注:如果没有说明来源,本文图片均来自于wikichip和anandtech。
ice lake处理器结构图sunny cove内核微架构:ipc平均提升18%
sunny cove内核结构图前端缓冲区:加大加大加大
x86处理器的内核主要可以简单地分成两个部分,前端部分与后端执行部分,前端部分主要完成“取指译码”的工作,后端主要为指令的具体执行单元,前后端之间有缓冲区,用于存放解译融合完毕的微指令。intel很早就在内核中引入了“微指令融合”的技术来提高效率,融合过的微指令会进入缓冲区然后被分配给后端执行部分进行具体的执行。intel目前认为,如今程序更多的瓶颈位于访存和前端指令分派上,sunny cove的前端部分改进就体现了这一理念,所以这次缓冲区就被扩大了不少。
缓冲区部分对比架构haswellskylakeice lake乱序重排缓冲区192224352访存load队列大小7272128访存store队列大小425672超 能 网 制 作
可以看到intel这次把乱序重排缓冲区(reorder buffer,主要是用于乱序执行后将执行的微指令根据原本顺序提交的指令缓冲区)大小做到了可以容纳352条微指令,直接提升了128条/57%之多,而haswell到skylake才仅仅提升了32条。同样在访存上面也进行了不小的提升,load(加载)队列增加了56,store(存储)队列增加了16,比haswell到skylake的改变都明显要多。
缓存对比架构haswellskylakeice lake单核心一级数据缓存大小32kb32kb48kb单核心一级指令缓存大小32kb32kb32kb单核心二级缓存大小256kb256kb512kb微指令缓存1.5k μops1.5k μops2.25k μops超 能 网 制 作
再来看缓存部分,新的内核终于增加了万年没变动过的一级数据缓存,从32kb到48kb,虽然只增加了12kb,但是要知道,32kb的一级指令缓存+32kb的一级数据缓存的设计,从core系列的第一代架构——core微架构上面就开始使用了,一直沿用到现在,同时一级数据缓存的带宽也增加了。而每个内核附带的二级缓存直接提升一倍,达到512kb的大小,这也是从nehalem架构把二级缓存内置进每个核心、单独设立共享l3缓存以来在内核缓存上发生的最大幅度变动了。
skylake与sunny cove内核架构对比图,左skylake,右sunny cove
前端部分的改进较小,主要是改进了预取器与分支预测器的性能,增加了微指令缓存的大小使得其能够满足每周期5(6)指令的发射。
后端:更宽
上skylake,下icelake,注意看port
后端也有不小的改变,sunny cove的执行端口相比skylake多了两个,达到了10个之多。并且端口的用途更为精细化,有专门用于读取和存储地址的端口,并且专用于存取数据的端口数量均为两个。
然后在执行单元中,sunny cove新增了支持avx-512指令的单元,其实这类单元在skylake-server上便已经加入,同时引入的还有cannon lake上面加入的idiv这个硬件整数除法器,同时还加入了新的mulhi单元,专用于乘法指令的处理。
avx-512计算单元的引入使得sunny cove内核一次可以处理1条512-bit的指令或者2个256-bit的指令。
内核互联方面,桌面级ice lake仍将采用ringbus也就是环形总线的设计,而服务器端将延续skylake-server的mesh总线设计。
指令集与ai加速
指令集随着新单元的加入也同时进行了扩充,在加密解密、ai加速、通用计算、特定计算等方面都新加入了不少指令,尤其是avx-512指令集。
对于近几年大热门的人工智能,intel一方面在uncore部分加入了自家的“高斯网络加速器(gaussian network accelerator)”这样类似于手机soc上面常见的ai硬件加速电路,还通过引入avx512vnni指令集,使用avx-512单元来进行ai相关的加速计算,intel将这种加速称为"dl(deep learning) boost"。这是一种很聪明的取巧办法,专用计算单元的引入可以保证一定的加速性能,而新指令集的加入同时也可以更加充分地利用上新的cpu特性。
加密解密指令集上面的改动诸如aes的吞吐量加大、加入新的针对sha算法的一系列指令等,总之在编译器进行适当优化的前提下,ice lake的加密解密性能是比skylake强不少的。
小结
简单归纳一下sunny cove微架构的改进点:
改进了预取器与分支预测器的性能
一级数据缓存增大50%
一级缓存存储带宽增大100%
二级缓存增大100%
微指令缓存增大50%
每周期能够加进乱序重排缓冲区的微指令多了25%
乱序重排缓冲区大了57%
后端执行端口多了25%
支持avx-512等新指令集
综合以上的改进,sunny cove相对于skylake在ipc上面取得了平均18%的进步,而对于broadwell或者说haswell,则是有47%的进步幅度,在针对avx-512进行优化过的测试中,最高可以比上代移动低压处理器快2~2.5倍。在摩尔定律前进缓慢的今天,这个数字已经非常高了。
题外话,其实很多改进在cannon lake上面就已经有了,比如avx-512、相关的指令集变动和缓存带宽增加等,还有些改动是从skylake-server架构上面下放而来的,比如ai加速的指令集其实已经在服务器端处理器上出现了。但因为cannon lake实际被intel放弃,所以继承了cannon lake改进点的sunny cove内核架构才能在相比较skylake时得到平均18%的ipc进步,如果一切正常,intel的10nm没有延期,ice lake应该是cannon lake的下一代,对比起来就没那么大的进步幅度了。
第11代图形架构
ice lake的核显首次达到了1tflops的计算性能,还增加了不少的功能特性,可谓改进颇多。intel用了"the most powerful version"来形容这代核显的性能,怎么做到的呢?
借助10nm工艺,暴力堆叠规模
intel的10nm工艺在晶体管密度上的提升幅度是真的很大,14nm时代最多配备24组eu的核显,在ice lake上面直接就翻了2.67倍,最大可以达到64组eu,并且频率也不低,最高可以跑到1100mhz,比以前只低了50mhz,此时核显整体的fp32计算量已经达到了1.15tflops。鉴于此,相比于八代酷睿处理器上搭载的第9代核显,intel官方宣称可以提供平均约1.8倍的帧率。
你一定想问第10代去哪里了对不对,其实还是在夭折了的cannon lake上面,而且唯一一颗的核显还是被屏蔽了的。
目前在移动低压版ice lake处理器上面,intel一共提供了g1、g4和g7三种配置的核显,分别有32/48/64组eu,低端的g1命名仍为"uhd",而g4和g7都以"iris plus"的品牌出现。
除了通过制程进步来堆叠eu数量之外,内部架构的优化也同样重要。
内部架构优化
与第九代核显的对比表格如图,出处:周末杂谈,icelake cpu的助手,gen11核显简介
首先通过增加单个slice中含有的子slice来扩大规模,使得每周期的计算次数增加。
其次是在缓存系统上做文章,扩大了三级缓存的容量,intel方面公布的是eu的三级缓存有3mb,并且还有0.5mb的本地共享内存。另外还有通过处理器的内存控制器升级,能够用上更高的内存带宽。
新接口版本和加强的硬件编码电路
上个月让小编最难受的一件事情就是买了一台1440p,144hz刷新率的显示器,用hdmi连接笔记本的时候,在1440p下面最高只能输出60hz,究其原因,就是老的第9代核显支持的hdmi版本只能到1.4,最高只能提供4k@30hz的输出,1080p下面最大是120hz,而小编的笔记本并没有提供usb-c或者dp输出。
而ice lake终于解决了这个痛点,支持了hdmi 2.0b和dp 1.4 hbr3,这两个就不用多说了吧,反正就是最高分辨率和帧数提升顺便还能支持一下hdr。
另外,在视频硬件编码部分,也就是intel quicksync特性使用的独立硬件电路上,新核显也有比较大的改进,现在支持两条hevc 10-bit同时进行编码,在yuv444的情况下最高支持两条4k60帧视频流,或者一条yuv422的8k30帧视频流。
可变速率着色(vrs)
vrs全称variable rate shading,是一种新的允许gpu根据画面区域的重要性调整着色精度的技术,具体效果我们之前的新闻有介绍过,可以看一下:来对比一下vrs可变速率着色技术带来的性能提升吧 3dmark将添加该技术基准测试一文中的图片对比。
vrs可以在不重要的画面上面节约一定的gpu资源,使这部分gpu资源参与更加重要的部分画面的渲染中,从而提高了整体的帧数,目前nvidia已经在turing核心中加入了相关的支持。而intel也没有落后,在第11代核显中提供了这项特性,并且他们宣布将与epic合作,将这项特性加入到虚幻引擎中去,目前文明六已经支持了该技术,并且根据intel的数据,帧数最大提高了30%。
小结
gpu部分的改进主要还是规模增加了很多,架构上属于小改动,主要改进了缓存系统,不过第11代核显的进步还是比较明显的。
可能以后在1080p低画质下面核显也不再是鸡肋了,能够30帧打打游戏了。
uncore部分
uncore部分指的是处理器上除了内核和gpu的其他部分,在顶上的结构示意图中就是system agent的那部分,自从intel在nehalem把内存控制器和pci-e控制器移入cpu内部之后就没有什么大的变化,但是这次intel在上面加入了个新东西,还升级了不少老部件。
thunderblot 3
原来阻挡人们使用thunderblot(以下简称tb)设备的一大原因就是这个接口的使用成本略高,当tb3开始以usb type-c接口的形式出现之后,使用率确实高上去不少,但是还有其他的拦路虎,其中一个就是tb需要主板搭载额外的芯片来使用,这个控制芯片并不便宜。终于在ice lake上面,intel把tb控制器整合到了处理器里面,并且再也不会占据掉处理器提供的pci-e总线数量或者是与pch一起挤原本就已经拥挤不堪的dmi 3.0总线,而是在环形总线上面拥有了自己的位置。
而且intel大方的一下子就提供了4个之多的tb3接口,每个都是pci-e 3.0 x4的满规格,也就是说,ice lake处理器其实一共拥有32条pci-e 3.0通道,不过其中一半都是以tb3形式提供的,当然这些接口是支持usb模式的,当运行于usb 2.0状态时,会绕回到pch上进行通信。
当然也不是所有的厂商都会给足四个tb3接口,具体怎么配置还是得看oem厂商,毕竟其他的配套芯片诸如usb pd所需要的独立ic都是会增加成本的,而tb接口还需要额外的retimer芯片,不过intel已经减半了所需的retimer,两条tb3只需要1个retimer就可以了。
不过将tb控制器集成到cpu内部也使得整个system agent的io部分更为复杂了,上面是一张详细的原理图,一个type-cio路由(图上名为cio router)拥有两条pci-e 3.0 x4与cpu相连,而cpu内部的显示控制引擎(图上的display engine)也要与这个type-cio路由相连,以控制type-c接口所处的状态,并决定发送的信号。同时还有usb的xhci也要跟type-cio连接,还要管理整个的内存统一性……
复杂的结构所导致的就是整体的延迟会增加,intel将原因归结在电源控制上面,原本分离式的芯片很容易管理电源状态,但是整合进来之后每一个部分都有自己的电源状态需要管理,需要更为精细化的电源管理系统,而这就增加了总体的延迟。不过更为精细化的电源管理还是有好处的,那就是可以提高能耗效率,intel方面称满载的一个tb3接口的芯片外加链路层将使用300mw的功率,四个加起来也只有1.2w。
值得一提的是,intel已经做好了对于usb4的兼容,不过考虑到目前usb4仍处于草案阶段,不排除未来的修改使得兼容失效。不过目前只是针对ice lake的移动版本进行架构分析,当然也不排除intel在桌面级的ice lake上面同样保留内部tb控制器。
题外话,tb3据说在cannon lake上面也是有的,但是夭折了。
内存控制器
现在内存控制器原生支持ddr4 3200/lpddr4x 3733内存,原来skylake上面的内存控制器顶多只能支持到ddr4 2666,还是八代的coffee lake以后的事情了。而随着ddr4内存的发展,默频上3000的内存条也开始出现了,内存控制器直接支持到ddr4 3200是一件不错的事情。而且随着处理器内核数量的增加,内存带宽也逐渐要开始成为处理器性能的一个瓶颈所在了,在我们的测试中,内存带宽对于游戏性能的影响还是比较明显的。
此前intel的移动低压平台只能使用lpddr3作为内存,而支持lpddr4/x的一个好处就是可以在更低的功耗下面带来更强的性能,尤其是对于此次图形性能有比较大提升的ice lake来说,有着非常大的实际意义,因为内存带宽直接影响到gpu的实际表现。
gna
前面在讲内核的ai加速时提到了uncore部分加入了gna这个针对ai的硬件加速单元,目前并不知道太多有关于它的细节,就连具体名字都有两种说法,在intel官方针对windows machine learning的介绍网页中,它的全名为gaussian network accelerator,而在很多介绍ice lake架构的文章中,它的名字又成了gaussian neural accelerator。
目前已知的是该单元的功耗非常低,甚至会在soc其余部分关闭的情况下继续工作,旨在提供稳定的ai加速性能,应用场景为语音识别之类。
图像处理单元
ice lake上面的图像处理单元(image process unit)升级到了第4代,是的,你大概没有听说过intel的cpu上面还有个图像处理单元,但它从skylake开始就一直存在,不过只有在移动双核型号上有,属于dsp(数字信号处理器)范畴,为设备的相机提供影像处理功能。
ice lake上的ipu可以提供4k@30fps的视频拍摄能力,还有更好的硬件降噪能力,支持更多的相机,还支持将两个不同的相机比如一个抓ir信息一个抓rgb信息的两个相机模拟成一个设备来看待。
intel方面称,他们正在向软件开放更多的ipu寄存器,以向应用提供更好的便利性,并且提供了对机器学习的支持。另外值得一提的是,intel将之前pch上集成的mipi接口转移到了cpu上,未来可以用于接驳ai加速设备。
小结
uncore部分可谓是发生了天翻地覆的改变,可以说是ice lake相对于之前skylake变化最大的地方了,内建tb3控制器肯定会给未来的使用带来非常大的方便,小编个人非常喜欢这个改进。而其他的可以归于常规性质的功能性更新。
pch改进
目前的ice lake平台上pch和cpu是封装在同一块基板上的,pch的提升同样是ice lake整个平台的提升。同样的,ice lake cpu通过dmi 3.0 x4总线与pch相连,提供的带宽等同于pci-e 3.0 x4。
重新引入fivr
fivr其实早在haswell架构中就已经被引入了,但是从skylake开始又把它给去掉了,因为在当时fivr确实表现不佳,导致了整体功耗和发热的增大。不过在ice lake上面,它又回归到了cpu和pch的内部。intel官方表示这么做可以节约整个平台的面积,并且简化oem的电源设计。新的fivr有着更高的电源效率,与整个平台的节能特性息息相关。看上去intel也是解决了fivr身上的一些毛病才放心将它集成进cpu和pch内部的。
cnvi 2
其实intel在这两年已经在出货的芯片组里面都加入了cnvi方案的wi-fi模块,这种方案将wi-fi网卡的部分电路转移到了芯片组的内部,而仍在外面充当一个射频模块的wi-fi网卡就可以做的非常小了,比如m.2 2230或者以1216规格直接焊在主板上。pch内部的网卡与在外面的rf模块通过一条intel专有的cnvi链路进行连接。
ice lake的pch上面这条特别的cnvi链路升级到了第二个版本,即cnvi 2。
当然,支持的wi-fi标准还是由在外面的wi-fi网卡所决定的,方便oem自定义,intel此举是为了打破人们升级wi-fi路上的屏障(你倒是推动一下ax路由器降价啊),目前intel有两张支持wi-fi 6标准的无线网卡:ax200/201。
关于wi-fi 6具体的提升之处,可以参考我们之前的文章:超能课堂(188) wifi 6凭什么可以如此“六”?。
io
这块就简单罗列一下数据。
6个usb 3.1(5gbps)/10个usb 2.0
16条pci-e 3.0,一般会有8条用于两个nvme接口
3个sata 3.0
emmc 5.1
intel没有提到ufs的支持。
小结
pch的变化并不是很大,主要是常规的功能性提升。
封装、睿频与功耗多种功耗目标与不同封装方式
目前ice lake-u和ice lake-y是两种目标tdp不同的系列,分别针对15~28w和7~12w来设计的,未来的移动标压级tdp约为45w,而桌面级目前未知。
此次率先发布的11款低压和超低压也采取了两种不同的封装,u系列没有怎么变,还是老样子,而超低压就与往常不一样了,intel使用了更加紧凑的封装方式,同时底部触点也相对更加紧密。
动态调节 2.0
新的动态调节2.0技术变化点看图就可以了,大致意思就是ice lake处理器不会像之前那样只能睿频18秒之后就回到基础频率,而是慢慢的降下来,整个过程比原先长了8秒。新技术还使用了机器学习来预测cpu将会吃到哪种类型的负载,然后智能调节功耗预算来尽可能地延长睿频时间。
总结
总的来看,ice lake是一代变化非常大的架构,无论是内核还是外面的各种组件。人们都说intel挤牙膏,但怎么说呢,竞争对手所给的压力不够也是intel挤牙膏的一个原因,但更多的原因恐怕是来自于这几年intel在制程工艺上面遇到的难题,本来在intel的tick-tock战略中,cannon lake是作为skylake的制程升级版出现的,然而由于10nm的难产,tick-tock战略彻底失效,变成了pao——制程-架构-优化战略之后,计划以10nm初代的角色推出,结果10nm比pao战略的计划还要晚,但是竞争对手的zen和zen+架构开始给intel压力了,没办法,skylake加两个核用14nm++再顶一顶吧。这一顶就是将近两年过去了,cannon lake也被彻底的放弃了,上面的许多优化被ice lake所继承了下来。
从整体架构来看,ice lake在单线程性能上面继续冲高,而测试成绩也都印证了这一点:基础频率和加速频率都比前代更低的情况下单线程成绩能够将将打平,已经很不容易了。多核的话,ringbus极限应该是十核左右,如果不采用mesh架构,那么桌面版未来的intel ice lake处理器还是会不敌amd的zen 2/3。
而在扩展性上面,ice lake还是比较良心的,tb3控制器的加入使得usb和tb设备不再需要挤占原本就有些不够的pci-e 3.0总线,并且还预留了与usb4的兼容,在未来ice lake的优化版或者升级版上我们有望看到正式的usb 4支持。
ice lake也会是未来一段时间中intel主力的架构,只不过等它来到桌面级还需要一段时间。intel目前的产品线也是非常的混乱,有机会我们会单开一篇文章来捋一捋。
上一篇: 萧伯纳是谁?爱尔兰剧作家萧伯纳生平简介