日报标题:别说 CPU 好像没什么进步,追赶英特尔的人已经在冒冷汗了
先讲一个最近发生在我们自己身上的事。
背景:
有的同行知道,我们正在做一套与 Intel 有一定竞争关系的原型系统,Intel 在最近两代的 Xeon CPU 里面实现的几个 Xeon CPU 专用的技术点,我们也实现了,目前暂时勉强处于并跑状态(但估计很快就要被甩下了:(
Intel 最近把他们的实现方案和技术考虑发了一篇论文出来,同样的一个技术,Intel 的实现在 2007 年模拟器评估的时候就做到了 0.125%的 overhead,2015 年推进实际产品里面的量产版本比这个更低。这个技术在我们的平台上刚好是我在负责做的,当时我看到这个公开的数字倒抽了一口冷气,因为单就 overhead 来说我们要落后 10-40 倍,当时算了一下我们的 overhead 大致上是 1.5%~5%左右。
于是很想知道 Intel 是怎么做的。他们公开的那个 0.125% overhead 的方法,是从一篇上世纪 90 年代初的一篇 wisc-madison 的老论文里面挖出来的,而且那篇论文与我们所说的这项技术并没有很明显的直接关系。如果 Intel 的人不把这个发现的价值重新评估一遍,可能它就永远埋在故纸堆里了。当时看到 Intel 这个实现方法的来源的时候,震惊不亚于看到 0.125%这个数字。
面对一个技术的需求,能够直接挖到一篇二十多年前不太起眼的一篇不太相关的论文,然后直接开干,可能性太小了,比较合理的推测是,他们内部试验 / 讨论了很多很多种方法,最终在这篇二十多年前的不太相关的论文里面获得了实现灵感,然后找到了这个 0.125%的方法。由衷佩服。
然后花了一个星期的时间复现了这个方法,测到了 Intel 没有完全公开的一些数据,发现这个方法的效果比预料的还要好一些。
我想说的是,在我工作的 microarchitecture 这个领域里,Intel 并不是在挤牙膏,而是一直在努力探索。只有当你成为 Intel 的追赶者或者竞争者的时候才能感到他们的努力和强大。眼下的我仅仅是在一个学术研究机构里面面临一些不太直接的技术竞争罢了,都会有这种感到冒冷汗的时候,对于其他工业界的前辈和同行们来说估计压力要直接的多,也大得多。
普通人感觉 Intel 进步很小,是因为单线程性能的进步空间已经越来越小了。ILP wall 已经是写进教科书里的问题,《量化研究方法》的两位超 S 级作者已经给出了未来的 CPU 不太可能再继续激进追求 ILP 的断言,激进追求 ILP 的上世纪 90 年代已经过去了。微结构的未来在其他地方,比如多核,比如能耗,比如异构,比如 cache & memory hierarchy,等等。
直到目前为止,Intel 的微结构仍然在许多地方保持领先,比如 front-end 的单线程 instruction supply 仍然领先 IBM Power8/AMD Bulldozer 及其后继系列至少一个身位。