序一
这是一本对计算机系统领域开创性的部分经典文献进行深入分析的书,令人耳目一新。对于一个研究者来说,需要在充分了解现状的基础上去尝试创新和评价创新,因此阅读文献是一项基本功。但是,一方面文献太多,另一方面学者的时间太少,形成一对矛盾。面对这一矛盾,很多学者按照类似高速缓存的LRU(Least Recently Used)替换算法的方法去选择文献阅读,也就是只看或主要看最近新发表的文献。这样做的一个潜在后果是,我们一直在追逐最前沿的研究,而在提出新概念、发现新问题、进行原创性研究方面贡献不多,甚至忘记学科的“初心”,缺乏对学科全局视图的了解和把握。
在我们国家的计算机学科中,较多的人从事应用层的研究或开发,而从事计算机系统结构研究或开发的比例不高,形成一个倒立的金字塔,导致“头重脚轻”。即使对这比例不高的从事计算机系统结构研究的人而言,计算机系统方面的开创性文献,由于年代久远,很多人也没有时间或机会亲自阅读。但是,很多原汁原味的精华,只有在亲自研读原文的过程中才能体会。现有教科书的转述或综述,或者网络上一些只言片语、良莠混杂、真假难辨的快餐式评述,因为难以兼顾系统性、深刻性、准确性、可读性,往往很难把原始文献中那宝贵的精华完整准确地保留下来、传播出去。
在新时期,我们国家的发展将更加注重质量,从外延式扩张转变为内涵式发展。对计算机学科来说,计算能力的提升方式也将有一个转变,就是从主要依靠摩尔定律增加可用的硬件资源(即通过工艺进步不断地增加片上晶体管密度),转变为主要依靠体系结构的创新提高性能(即在资源总量不变的前提下通过结构的优化获得性能或能量效率的提升)。在这样的形势下,我们国家需要在计算机系统结构领域有更多的原创性成果。刘宇航、包云岗编著的这本书为我们未来进行原创性研究提供了很好的材料。全书体量很大,显然需要付出极大的体力和脑力,刘宇航、包云岗作为青年学者,已经积累了丰富的研究经验和工程经验,能够经年累月沉下心来,在工作之余认真仔细推敲原始文献,并给出自己的独特见解,这是非常难能可贵的。很欣喜看到老一辈科学家求真、求实、创新、创造的精神能够被年轻一代传承发扬。
计算机系统结构学科是一个抽象的大厦,这座大厦的全部重力最终要落到一些关键的基座或顶梁柱上,本书所评述解析的十余篇开创性文章就是这些基座或顶梁柱的重要部分。当然,通过十余篇文章很难把一个学科的全部信息滴水不漏地完整覆盖,但是抓住这些关键少数,就抓住了撑起整个学科空间的基干(类似于线性空间的基或正交基)。
这本书最早的一篇文献发表于1936年,比我出生还要早两年,还有一些文章发表于20世纪50年代和70年代,等等。我们现在阅读这些文章是幸运的,因为我们处在历史长河的当前坐标上,我们可以回顾、咀嚼、检验之前的判断或预见是否正确,之前的设计对后来的影响,这些会增加我们的智识,在我们的头脑中存储一些既往的创新范式,给未来的创新提供借鉴。
这样一本书可以作为计算机系统结构专业的参考书,甚至可以直接作为高级研修或研讨课的教材。在此,给读者提供以下建议:
(1)注意原创性思维或意识的培养。纵观全书的十余篇文章,我们发现大部分文章的结论至今仍然适用,比如现在的计算机仍然是约翰·冯·诺依曼提出的程序存储式的五位一体(包括运算器、控制器、存储器、输入、输出)结构。我们除了记住这些总结凝练之后的知识要点,更重要的是观察历史先驱如何破冰启航,如何从无到有来构思或构造出这些概念和结构。在本书第3章,约翰·冯·诺依曼在关于EDVAC的报告中从头到尾一直参考或类比生物神经系统,这样的参考或类比需要敏锐的洞察力,也需要很强的迁移落实到电子工程上的能力。这些是需要我们仔细体会的。
(2)注意文献之间的联系和比较,建立整体观。我们国家很多学者做的是增量式创新(Incremental Innovation),在看到已发表的某个文献的研究后,将其作为基准(Baseline),在上面加入自己的一个想法,取得若干个百分点的某种指标的提升。这种研究确实是创新,但往往受限于既有的框架,属于局部性的渐进式创新,往往不是全局性的颠覆式创新。要想改变这种状况,可能要从人才培养阶段就提倡建立“整体观”,注意文献之间的联系和比较,比如本书第10章论述的存储墙问题就是记忆问题,短时记忆、长时记忆对于思考速度有很大的影响,影响到第3章EDVAC的设计,影响到第1章所论述的“机器能否思考”,影响到第13、14章所论述的微处理器的未来,等等。有了整体观,我们就打通了脉络,看到的不再是孤立的一篇篇文献,而是相互联系贯通的一篇大文章,这样书就读薄了、读活了。
(3)注意设计能落实贯彻新思想的可以运行的系统(Runnable System)。对于计算机体系结构研究者,除了要强调思想和观念的作用(比如本书第11章所述的数据流的思想),还要强调能够实实在在地、合理地、经济高效地设计出能运行的系统,这是计算机体系结构研究者区别于纯粹意义上的哲学家、数学家、物理学家的地方。有了新思想不容易,有了新思想之后落实贯彻新思想也不容易,本书第3、6、11、12章在这方面给我们提供了优秀的示范。比如第3章给出了存储程序式计算机的详细设计,这是1945年撰写的一份报告,没有先例可循;又如第11章给出了数据流处理器的初步架构,这是1974年发表于第二届国际计算机体系结构会议(ISCA)的文章,在那个时候数据流的思想是很新的,具体怎样实现,并没有可参照之物,但麻省理工学院的丹尼斯等人结合头脑中的灵感和合理的逻辑推演论证,给出了理论上可以运行的考虑周到的具体计算系统。
最后,祝愿中国计算机体系结构学科在人才培养、研究创新(尤其是原创性基础研究)方面取得更大的进步,为新时期的国家发展做出更大贡献。
中国科学院院士