另外,目前Soft Machines已经有了TSMC 28nm工艺生产的第一代产品原型,运行频率为500MHz,可以启动Linux系统,也就是说可以肯定Soft Machines已经脱离了纸面设计的阶段,至少有了可以完整工作的初步原型。但是Soft Machines的所有性能测试都是基于RTL仿真进行的,即便我们大度地假定这个RTL仿真是加入了完整正确时序信息的后仿真、并且忽视后仿真和实际流片之间的差距,这个测试方法也令人难以接受。目前Soft Machines手上只有500MHz的原型,在这个节点上使用简单的插值推算2GHz及其以上性能水平是很危险的做法。主频的跨越式提高往往需要借助结构设计与逻辑的变动,但是这样的变动也同时意味着IPC的值会同时发生变化。具体变动幅度有多大,只有做完了高主频设计、再重新进行测试评估才能知道。Soft Machines认为这样的仿真测试与真实设计之间只会有5%~10%的差距,在没有进一步证据予以佐证的情况下,笔者认为这一点存在不可回避的漏洞。
基于这一份公开数据,Soft Machines的VISC概念和原型系统是无法说服业界的,甚至由于数据的呈现方式上出现了重大错误,不由得让人怀疑这样的数据背后是不是有着某种掩饰性的考量,所以这次的性能披露非但没有说明什么问题,反而是令Soft Machines的公信力蒙受损失。
整数和浮点程序拥有截然不同的性能特征,其中关键的一点就是指令级并行度的富余程度,在过往的模拟器测试上,若采用相同的测试结构参数,整数测试集的指令级并行度上限相比浮点测试集有几倍的差距,因为浮点的指令级并行度上限很高,所以众多尝试发掘指令级并行度的设计往往能在浮点测试中取得较好成绩但是整数测试中表现不佳,这也是现代GPGPU长于并行计算而弱于分支判断的原因。
虽然测试数据无法令人信服,结构设计的要点也是存有模糊,但是笔者仍然坚持认为对于Soft Machines以及它的VISC产品抱持宽容态度。为什么呢?这要从微结构的发展历史与目前的行业现状来解释一番。
微结构设计和研发,直观地说,其实非常像是在一片泥泞不堪、布满深坑和陷阱的地域上寻找埋藏的宝藏。在上世纪八九十年代,业界刚刚开始迈过高性能微结构门槛的时候(九十年代初才诞生第一个基于CMOS的多发射设计),可以说整个业界对这片地域是所知不多的,当时的微结构,即便是量产化的工业级设计,背后的实验支持和理论分析都远没有今天这么雄厚,因此带有很强的探索性质。回头翻阅当时的发展历史不难看出,有无数疯狂的概念设计倒在了初步模拟实验的阶段,未能更进一步,颇具代表性的例子就是值预测(Value Prediction)技术的研究。这种技术期望于通过程序执行地址、循环执行次数等信息,在实际计算完成前就预测计算结果,但由于准确率确实不佳,至今未能得到主流认可,投入在这个方向上的大量经费和结构设计专家的人力资源可以说算是掉进坑里了。但是这些投入完全没有任何意义吗?
不尽然。这些不成功的设计有两个作用:其一,明确告诉后人,这里有坑,谨慎绕行;其二,从中可以抽取出有用的实验数据并加以分析,有可能得到意外收获。例如在值预测这个大坑旁边,光笔者所知就有至少两个被证明有价值的矿点:访存地址反别名分析(memory disambiguation)以及循环指令缓存(loop cache)的执行次数预测。
随着时间推移,越来越多的实验数据和理论分析积累,有一个大矿点被系统地发掘出来,其附近地域也被公认为安全地带。这个大矿点就是由上世纪60年代的CDC6600首创,IBM 360/91加强的硬件乱序多发射设计框架。在硬件乱序多发射优势尚不稳固的时候,亦有一批先驱者奔向其他可能的矿区开始试探性采掘,这里面有代表性的例子就是超长指令字(VLIW)结构。而随着Intel Itanium系列的失败,这片矿点就被公认为价值不如硬件乱序多发射,只在少量场合下继续使用。随着越来越多的资源投入到对硬件乱序多发射的开掘,这片矿区的身价进一步水涨船高,终超越了所有其他选择,并且在大多数应用场景下至今仍保持压倒性优势。截止到这个时间点上,硬件乱序多发射框架就变成了事实上的第一选择以及近乎是唯一选择。除了屈指可数的几个异类以外(全美达、NVIDIA丹佛、Intel安腾,IBM Power6),硬件乱序多发射变成了高性能CPU的立足点。脱离这个框架,踩在其他区域尝试探索起步的设计几乎后都宣告失败。只有踩在硬件乱序多发射圈定范围内的设计才能存活,颇有点《切尔诺贝利:晴空》那片辐射变异地带里安全区的味道。
Intel各代CPU核心的IPC增长幅度
从2005年前后开始,硬件乱序多发射的增长潜力开始放缓。从Dothan到Merom到Nehalem到近的Skylake,主体结构基本上没有出现多少变化,性能的增长只是来源于在同一个结构框架下的小幅调优,每年带来10%上下的改进,仅此而已。这片安全区仍然安全,能够保证设计框架的大方向不会出现重大错误,但是宝藏也挖空了。
从这个尺度上来说,在传统硬件乱序多发射框架以外进行探索的这些努力就显得特别珍贵。并不是每个研究机构、公司都有这样的信心去挑战传统硬件乱序多发射框架几十年积累下来的优势,尝试做出一些颠覆性的改变。在这几十年中,偏离硬件乱序多发射框架的“探路者”们其实数目不少,但是做得有声有色、一度曾让人燃起希望的则少之又少。像VISC这样的个例,尽管已经显露出有很大的不靠谱可能性,但是笔者仍然坚持推崇其探索的努力,在挑战传统这件事情上,失败是常态,成功是偶尔。
也有一些外界批评认为,VISC目前的第一代产品原型只能运行在500MHz的频率上,这是否说明其结构设计的流水化存在问题,使得频率暴降?这的确有可能,要让多个物理核心同时追踪较大范围的指令相关性,低频可能是不可避免的,但同时也要看到,作为原型设计推出的东西,而且又是第一代,往往不是以性能为第一设计考量。原型系统的第一目的是测试整个执行框架是否可工作、是否可行,时序只要收敛就好,并不太追求高频率,以原型系统的频率来评判其量产频率是不对的。如果Soft Machines后继的几代系统都只能工作在低频下,才能比较有力地说明其结构流水线确实存在问题。以新结构为卖点的创业公司尤为艰难,当年的全美达公司几乎一直处于烧钱状态,盈利很少,希望Soft Machines能坚持下去。同时笔者也希望Soft Machines如果万一也不幸走到失败地步,能够以更加开放一些的态度提供更加详细的结构设计资料和测试数据,为可能出现的下一个、下一批勇敢闯出安全区的人亮起一座灯塔。