Intel原子核:令Intel脱胎换骨的设计
长期以来,Intel对于功耗/性能比遵循这样一个定律:一项提升CPU性能1%的设计,其带来的功耗增长不能超过2%,否则就必须放弃。但不幸的是,这样一个定律最终将Intel带进了NetBurst架构的死胡同,高耗低能的奔腾4和其衍生家族就因此而诞生。
到了现在的“原子核”,Intel重新修改了定律,新的定律规定每提升CPU性能1%,其功耗提升不能超过1%。这个规定对比“笨死”时代的定律称得上是一次革命性的改革,这个新定律也将被用于Intel新架构(比如Nehalem)的设计指导,而Atom则是首个使用的产品。
虽然Atom一开始是按照单指令发射跟顺序执行的简单架构设计,但很快奥斯丁团队就将其升级为双指令并发,可惜仍然保持顺序执行部分。

现在的x86处理器都支持指令的乱序执行,这个机制就好比你需要系鞋带跟关掉电视,这时你可以选择先系好鞋带再去关掉电视,因为这么做会比较顺手。CPU的乱序执行也是同个道理,CPU可以先处理掉手头可用的指令而无需按顺序等待尚未送往缓存里的数据,从而节省时间提高效率。但乱序执行的一大弊端就是指令的重新排序电路需要占用额外的管芯面积以及增加能耗。当然乱序执行可以有效提升性能但我们要知道这次Intel的目的可不是性能第一,只需要“够用”就好,因此Atom只需顺序执行即可,Atom是Intel自奔腾1之后的又一款顺序执行架构CPU。
顺序执行架构虽然造成性能下降但却节省了大量的能耗跟复杂的电路设计,而如果用乱序执行的话,性能是上去了,但是相应的能耗跟晶体管负担是45nm制程下的Atom所无法承受的。要知道Intel也是在奔腾pro之后才让乱序执行成为了可能,或许以后更小的制造工艺能让Atom集成乱序执行引擎,但我认为未来5年内是不大可能的。
双指令并发与顺序执行
奥斯丁小组先是采纳了单指令发送+顺序执行的核心设计,后来又将其升级为超标量双指令并发,也就是说同时可以发送两条指令至流水线。相比之下,目前大部分台式x86 CPU可以同时发送3~4条指令。
为了保证Atom的双发指令发送器充盈,Intel为其配备了两个解码器。这些解码器从一级缓存中拾取运算指令,通过解读指令包含的1跟0排序来翻译指令给CPU的命令。虽然每个解码器的能力都是一样的,但是每条指令均有两条编译路径可选:一快一慢。

早期的x86 ISA(指令集架构)在对不同长度的指令支持方面陷入困境。小熊在线www.beareyes.com.cn
比方说我事先告诉你每十秒会给你一个橘子要比每十秒给你1~3个橘子要简单,前种情况就好比固定长度指令集,而后者就像是不定长度指令集,很不幸x86 ISA经常需要面对后者。
Atom的慢速解码通道并不具备任何猜测解码能力,每条指令都需要被手动排序,也就是说指令的每个bit都需要耗时去仔细查看,不过这样做能够保证解码过程的正确性。每一条被检测过的指令还会被打上标签,这样下次需要编译的时候就可以直接被送往较快的快速通道里。
快速解码通道明显带有猜测解码功能,再加上前面缓慢通道的“标签”功能协助,快速通道每个时钟可以发送两条指令,而慢速通道每三个时钟才能发送一条。
Intel从Banias(奔腾M)身上看到猜测运算机制所带来的额外能耗不是电池供电的设备所能够承受的,因此权衡利弊,Atom将对猜测运算方面做诸多妥协。
