时间:2016-09-12 12:03:55 来源: 复制分享
距离Intel著名的64bit处理器Core 2 Duo(酷睿2)发布已经整整十年,从普及型的E6400到旗舰级的Core2 Extreme X6800,这一系列由Intel 65nm工艺打造的处理器中有太多的经典产品。可以说,酷睿2是桌面平台处理器的转折点,引用Anandtech当年的评价就是:“这是半导体有史以来最振奋人心的产品”。
酷睿2的发布大幅改变了处理器的版图,过去Netburst家族以Northwood和Prescott核心为首的Pentium4和Pentium D处理器一味飙主频的路线已经走火入魔,半导体的发展方向一再偏离效率,带来了巨大的发热和功耗问题,在90nm遇到严重瓶颈后(进入90nm工艺后,业界发现之前摩尔定律一贯的工艺提升,功耗下降的规律失灵了,prescott处理器因为发热过大无法按既定路线突破4Ghz,甚至引发了散热器大规模换代),对手AMD的Athlon 64X2处理器同时在性能和效率加冕为王。
当时的intel被迫做出重大修正,微架构上抛弃了对主频飙升有利的超长流水线设计,引入大量来自Pentium PRO和Pentium M的技术,但并不是仅仅在Yonah的微架构上增加一些新功能或者译码器那么简单(在十年前盛传酷睿2仅仅是Yonah的增强版)。是时候来回顾一下酷睿2带来的震撼了。
十年前发布的Conroe有如下五款产品:
旗舰产品X6800主频高达2.93Ghz,支持更高的前端总线频率,芯片面积143平方毫米,比前代Pentium D的162平方毫米更小,由于不集成GPU,十年前的处理器比今天的产品小得多。
当年X6800的价格为999美元,跟今天8核的Core i7-5960X相当,而E6400则为224美元,和Core i5-6600一致,有意思的是,不知道是不是为了快点跟昨天说再见,intel把昨天还是次旗舰产品的3.4Ghz的Pentium D 945砍到比E6300还低的163美元,这是intel桌面处理器历史上独一无二的事件。
一切尽在预取(Prefetch)
CPU执行的指令来自译码器,数据取自高速缓存(Cache),在理想环境中,数据和指令都可以从底层缓存中获取(一级缓存,L1 Cache),延迟极低,不存在瓶颈。现实环境可没那么乐观,延迟完全靠猜,核心预测所需数据并且在用到它们之前放入底层缓存的能力决定了现实环境的延迟,这项技术就是预取。
酷睿2微架构增加了多重预取,这是过去在消费级处理器中从没出现过的,并且改进了预取算法,每个核心有两个数据和一个指令预取,加上二级缓存的两个预取,在双核酷睿2中总共有8个预取来维持处理器高效执行。
另一方面,预取还是为缓存索引做查找标签,数据预取这么做是为了避免程序运行的时候出现高延迟,数据预取是通过存储端口(store port)进行缓存索引,因为原则上载入操作(Load)的频度是存储操作(Store)的两倍,intel在酷睿2中巧妙的把存储端口这一相对空闲给利用起来。
缓存,多多益善离开了低延迟数据和指令存取,快速核心将会一文不值,所以最贵的SRAM作为一级缓存被用在离执行单元最近的位置,这里寸土寸金,限制了一级缓存的容量,所以CPU中的高速缓存都被设计成嵌套的结构,容量大得多的二级缓存(L2 Cache)被放在外围,一级缓存不命中(Cache Miss)就得到二级缓存甚至内存中查找数据,这些操作会带来延迟,影响执行速度。因此,缓存容量,多多益善,酷睿2拥有比前代产品以及竞争对手都要多的缓存。
酷睿2的缓存设计较前代Pentium4的变化体现在一级缓存大幅增加到32KB,,延迟降低到3个时钟周期,二级缓存则为双核共享的4MB,延迟降低到12~14时钟周期。对手AMD的K8虽然有更大容量的一级缓存,内置内存控制器的设计相比Pentium4有较大优势,但带宽偏小,二级缓存容量也有明显差距,实测表明,酷睿2一级缓存带宽为K8的2倍,二级缓存则达到2.5倍。
译码,四发射与融合译码器的作用是对指令进行解码,并且将这些长度为1~15字节不等的指令翻译成类RISC的定长指令便于执行,在酷睿2中,称之为微操作(micro-op)。预取配合译码是当代X86处理器设计的核心,酷睿2中有四组译码器,其中三组为简单译码器,一组是复杂译码器,前者能将指令翻译成一条微操作,功耗更低晶体管更少,而后者则可以转换出四条(长指令的利器)。这就是俗称的四发射,酷睿2是X86桌面处理器中引领了四发射的潮流。
此外,酷睿2加入了宏操作融合(Macro-op Fusion),这样两条常规X86指令(或者宏操作)会被同时译码以增加并发,同时允许一条微指令包含两条计算机指令,这使得四个译码器单周期最多可以解析5条指令,相当于增加了译码带宽,这样也降低了乱序执行(OoO)所需要的缓冲大小。在当时,经典的X86程序,20%的宏操作可以被这样融合,由此可以带来11%的性能提升。
另一项特别的技术是指令直接跟内存地址融合,在经典的RISC规范中,需要添加寄存器查找内存地址的指令,所以传统上要用到3条微操作:
但从Banias核心的Pentium M开始,由于有了新技术,表中的前两条微操作可以被融合,这称为微操作融合(micro-op fusion),在预译码阶段就辨识出可以融合的宏操作能够提升并发、降低对缓冲的压力,提高效能,配合SSE/SSE2效果更佳,这是酷睿2压倒AMD K8的主要原因。
AMD也有微操作跟宏操作,不过定义跟Intel是不同的,因为AMD的译码器是三组复杂译码器,通过直连路径(Direct PATH)可以像简单译码器那样快速处理,通过矢量路径(Vector Path)就是复杂译码器模式,差距在于,AMD没有宏操作融合,在执行SSE指令的时候需要更多的时钟周期,加上译码器数量3对4,译码并发3对5,在前端曾经风光无限的AMD K8已经输了一截。
乱序执行OOOE
预取、高速缓存和译码上的努力要通过乱序执行来发挥,乱序执行本身的增强靠的是增加执行单元和乱序记录缓存来实现。
对比AMD K8,酷睿2的乱序执行的优势体现在三点上,一是记录缓存96 ENTRY VS 72 ENTRY,酷睿2的前端有更高的并发,记录缓存也有4:3的优势。二是调度管理方面相比AMD拆分为24-ENTRY整型跟36-entry浮点,酷睿2为统一的32entry保留站,三是SSE执行单元数量达到三个,能够最大化利用到宏操作融合的优势,另外,酷睿2的SSE执行单元是128bit位宽,AMD只有64bit,在执行128bit SSE指令时候酷睿2有压倒性优势
存取也疯狂酷睿2强大的前端跟乱序执行带来的是更大的数据吞吐需求,Intel发现如果允许下一次载入(Load)在存储(Store)之前操作,就可以实现载入提速和降低延迟,其风险在于,存在需要载入尚待存储数据的可能(大约1~2%的几率),这时候就需要浪费20个时钟周期等待重新载入,为此,在酷睿2中加入预测器可以避免这一场景出现。
预测器(Predictor)允许在数据存储之前载入,同时冲突检测逻辑(Conflict logic)会扫描乱序缓冲区(Memory reorder Buffer MOB)查找问题,一旦发现立即执行重载入,在最坏的情况下性能会有所损失。根据Intel的说法性能提升幅度可以达到40%,实际执行环境中也能有10~20%的增速,在整型操作中优势尤为明显。
超线程不再,也没有内置内存控制器十年后的今天,超线程(HT)和内置内存控制器(IMC)是X86处理器的最基本属性,在当时,前任Pentium4引领过超线程的潮流,对手AMD则率先将内置内存控制器引入了PC领域,但酷睿2一个都没有。
同步超线程技术(Simultaneous Hyper-Threading SMT)需要在高速缓存中开出更大的缓冲区来满足多出一倍的资源的要求,酷睿2引领时代的前端设计已经是对当时工艺的极限的挑战,超线程实在是心有余而力不足,内置内存控制器AMD靠的是SOI工艺的的先天优势实现,一旦工艺允许,超线程自然会回来,内置内存控制器也不是问题,后来的nehalem不就是这么做的么?(原文以超线程优势体现在服务器上和有FB-DIMM内存为由洗地理由并不充分)
廉颇老矣尚能饭否?
在2006年,即使是最弱的E6300,都可以在很多测试中轻松放倒之前的旗舰产品Pentium XE 965,中坚产品E6600则成功击败AMD最新的旗舰产品FX-62,而旗舰产品X6800更是比E6300强了近一半。
今天的214美元产品I5-6600 VS当年同价位的E6400,十年来我们的CPU足足快了一倍,就连入门级产品G1620也轻而易举的战胜了E6400,但是不要忘记这是2.13Ghz的E6400跟一群主频接近4Ghz的产品作对比,事实上很多酷睿2用户后来升级到Sandy bridge后就再也没有换代过。
回顾十年前酷睿2发布后发现,在当今的skylake处理器中依旧延续了酷睿2的框架:四发射、操作融合、大容量共享高速缓存等,当然,随着工艺的进步,intel在nehalem加入了内存控制器、北桥功能和三级高速缓存,在Sandy Bridge中引入了微操作融合缓存(micro-op cache)和eDRAM,酷睿2的故事仍然没有结束。
而那个在酷睿2时代被一举拿下的对手AMD在十年间一蹶不振,K10和bulldozer麻烦不断,几乎完全退出了中高端领域的竞争,直到最近才借着新核心Zen喊出“我回来了”,然而仔细看Zen的PPT,仍然没有看到类似当年酷睿2那样石破惊天的变化,所以,AMD也许能重返中端,但论挑战似乎还很远。
展望未来后10至15年的半导体路线图在conroe十周年纪念的日子里正值国际半导体技术路线图报告(International Technology Roadmap for SemiconductorsITRS)出炉,这份由全球各大洲的半导体工业的专家共同起草的长达500页的双年报告,是广大从业者的重要参考。报告从设备调试、工艺集成、射频(RF)、微机电(MEMS)、光刻、封装测试、改善良品率等多方面深入探讨半导体工业的未来。
在过去,报告准确的预测过现在流行的finfet技术的流行,但也忽视过半导体的很多瓶颈,比如以下这份1993年的报告(也就是最早的报告):
实际的特征线宽的发展表面超越了1993年的预测,2001年就开始的130纳米工艺在预测中被放到了2004年,而这时候正是intel撞上了90nm大墙。互连层则落后不少,预测中2004年将采用6层互连,实际上2002年AMD消费级的Thoroughbred B处理器就用到了9层铜互连。功率问题恐怕是整个业界的始料未及,2001年40瓦的功耗早已被主频大战抛在脑后,正如本文开头所述,半导体偏离了正轨,让高功耗时代提早到来,经历过那个时代的玩家都知道,2001年的高端散热器放在2004年根本小菜一碟,因为根据长期预测,散热大规模引入热管可以等到2004年,这就是偏离的后果。
至于芯片大小方面,如果用熟知的CPU、GPU来判断的话1250平方毫米可能是天方夜谭了,毕竟就算到了今天,14/16nm时代,150亿晶体管,610平方毫米的NVIDIA P100处理器几乎到了认知极限。但这毕竟是整个行业的报告,就拿图像传感器来说,全幅CIS的尺寸大致是864平方毫米,业界量产的时间也正好是2000~2001年,如今,索尼已经能够量产33X44幅面的传感器(面积接近1500平方毫米),所以面积一说相当准确。
废话了这么一长串只是想表达,每一期的报告,都是相当有技术含量的存在,值得参考,那么,未来10年~15年会是怎么一个状况呢?
450毫米晶圆和2nm制程
450毫米晶圆(18寸)是十年前就在讨论的概念,然而由于这十年间半导体世界被各种障碍搞得团团转,以至于更大的晶圆都被人遗忘了,此次ITRS给出了新的时间表,2021年的DRAM工艺上会用到450毫米大晶圆,还要等五年。
到了2021年,DRAM的核心面积将缩小到780平方纳米,当今的数字为3480,2021将是最后的finfet(鳍式场效应晶体管),在2030年会看到2nm工艺。
今天的当红小生Finfet还有5年的发展期,进入7nm的时间表是2019年,2021年在5nm上终结。让Athlon64大红大紫的SOI工艺(绝缘体上硅)则会在2017年终结,末代皇帝将是10nm FDSOI,取代Finfet的将是VGAA(vertical gate all-around),2021年登场,预计会在2030年进入2nm制程,这时候的核心电压仅为0.4V。制程的未来之路是坎坷的,5nm以后会怎样仍然有很大变数。
NAND闪存,大家不要慌,不会有什么QLC了,前些年在刚引入TLC NAND(3bit)的时候业界还在预测QLC(4bit)的存在,经过这些年的发展可能业界自己对QLC的可行性已经失去信心,毕竟TLC已经是毒瘤般的表现,于是ITRS的预测中完全没有看到QLC的存在,万幸。
未来NAND仍然得靠3D堆叠来实现扩容,当前单封装密度为三星850EVO上48层堆叠的256Gbit,到了2022年可以达到128层1Tbit,2030年到512层4Tbit,这时候就会看到64TB的SSD了。
手持平台32核8K显示是未来?
ITRS对手持平台的预测是基于当前手机SOC蓬勃发展的,2016年6核CPU 12核GPU,26.9Gbps内存带宽,4.42瓦功耗的数据实际已经开始偏离效率,从2014年开始手机SOC对先进工艺的渴望就赶上了台式机CPU,以至于近年台积电不断表示10nm要比intel早,intel也毫不在乎。到2019年也许还能看到18核3.2Ghz,49GPU核心的怪物,但2024年真能看到3.8Ghz 32核CPU 189核GPU轻松实现8K应用的怪物么?值得怀疑,毕竟今天的表现都已经是对当前工艺的深度榨取。
传统意义上的摩尔定律早已消亡,但在今年的ITRS报告中依旧可以清楚的看到摩尔定律的影子,尤其是那张移动SOC的发展路线图,乐观程度堪比没有撞上90nm大墙时候的intel,这就是所谓的永生吧。