微体系结构历史梳理(一)引言

简介: 本文是2020年新型冠状病毒疫情期间在家学习的成果总结,主要梳理计算机微体系结构近60年的历史,参悟其中的关键技术和思想,并把握当下体系结构发展的潮流趋势。

计算机微体系结构,指的是计算机的核心部件中央处理器CPU的架构。目前市面上CPU的型号令人眼花缭乱,计算机的类型也千变万化,但其中也有相对不变的因素,例如CPU的架构。本文细数从1964年开始的计算机发展史,看56年来计算机公司的繁荣衰败,架构师的利弊权衡,学术研究的潮流动向。

1964 年前的计算机大多数是为政府的军事部门或者大公司定制的,几乎没有兼容性可言。而在1964年IBM发布了System 360系列计算机,该系列有多达14 个Model,并且相互之间全部兼容。用户可以根据实际需要从小型机逐步升级,同时不需要重新编写软件,这给市场带来了强烈的震撼。在我们现在看来,计算机的兼容性是一个几乎默认的事情。世面上种类繁多的计算机使用着种类繁多的芯片,但是都能运行Windows或Linux操作系统,安装软件只需要指定操作系统而不用指定计算机的型号。但是在当时,哪怕是同一家公司生产的计算机也不能做到相互兼容。IBM 360系列首次提出了指令集的概念,计算机的设计者和使用者约定好指令集,然后架构师想尽一切办法提高指令集的性能,而使用者使用这些指令编写代码。当计算机升级换代的时候,只要仍然支持原本的指令集,之前写好的软件就能顺利执行而不需要任何改动,这就是指令集兼容带来的好处。指令集的提出统一了当时计算机设计山头林立、各为其政的局面,在数据存储格式、IO设备接口、定点和浮点数字表示、ASCII和BCD编码、内存对齐、通用寄存器和累加器等方面制定了标准,有些后来被IEEE采纳,成为国际通用的标准。当年秦始皇统一天下之后重要的事情之一就是统一货币、文字、度量衡,IBM 360系列计算机担任的也正是这样的角色。计算机的通用性使得其使用更加方便,整个市场水涨船高,IBM也赚的盆满钵满,一举奠定了“蓝色巨人”的地位,统治计算机领域几十年。IBM 360系列计算机是计算机领域的里程碑,计算机有了发展的主线,即指令集。计算机快速发展的56年就这样开始了。

从1964年的IBM 360到1976 的Cray-1,计算机领域几乎一直是大型机和巨型机的天下。这一时期的计算机的体型、性能和价格都居高不下,是政府机关、企业部门的专用设备,但其中的技术在今天仍然值得学习和借鉴。同处这一时期的DEC 公司则是小型机领域的领头羊,从8 位的PDP-8 到16 位的PDP-11 再到32 位的VAX-11,DEC 公司的小型机饱受市场赞誉。但不幸的是,长江后浪推前浪,小型机市场逐渐被后起之秀微型机侵占,最终惨淡收场。1971 年Intel 公司推出了其第一款微处理器4004,当时还仅仅用于便携式计算器的计算单元。经过几代产品的打磨,1978 年的8086 最终架构稳定,成为Intel 后续几乎所有微处理器芯片的源头,今天Intel 最先进的微处理器仍然支持8086 指令。

1980 年到1995 年的这段时期,是微处理器性能飞速发展的时期。随着集成电路技术的发展,许多大型机中使用的技术逐渐可以在微处理器上实现,聚焦提升微处理器的种种技术和讨论就此拉开帷幕。科学家和工程师全力提升微处理器的性能,极尽可能的挖掘并利用程序的局部性和并行性。指令集作为硬件和软件的接口,首当其冲面临变革,RISC 从此成为微处理器设计的基本技术。随后,有关深入挖掘指令级并行的技术[1] 如雨后春笋一般被广泛的提升和讨论,伴随着摩尔定律的加持,技术也有了充分发挥的空间。然而好景不长,1990 年的一篇技术报告给当时的人们当头棒喝:理论上存在这样一个极限,足够多的晶体管彻底挖掘了程序中所有的指令级并行性。十年之后果然如此。这期间,新的负载出现使得人们开始转向研究挖掘数据级并行和线程级并行的技术。经过十几年的技术沉淀,出现了很多教科书级的微处理器设计。我们考察了1996 年到2003 年间主流的微处理器架构,包括MIPS R10000,DEC Alpha 21264,Intel Pentium 4,AMD Opteron 和IBM Power4。这些微处理器具有较为全面的指令级并行的技术,值得被体系结构的科研人员仔细研究。相关文献大多发表在体系结构的顶会MICRO 上,含金量很高。另外,对比同一时期同一技术思想在不同指令集架构的微处理器上实现也是一件非常有意思的事情。

最近二十年体系结构的研究出现了一些新的趋势。

首先,功耗逐渐成了一个大问题。晶体管的尺寸太小导致Dennard Scaling 定律失效,电压问题不再是一个仅依靠工艺进步就能解决的问题了。一方面移动设备的激增,例如笔记本电脑、平板电脑和智能手机,续航能力成了评价产品的重要指标。另一方面对于高计算密度的数据中心而言,电费支出逐渐占据了成本的大头。这对微处理器的功耗控制提出了更高的要求。

其次,安全问题日渐突出。出现了许多针对体系结构的安全漏洞,例如“熔断”和“幽灵”,以及近期发现的由于DVFS 功耗控制所引发的漏洞。这些安全问题无法从软件层面避免,本质上来说是体系结构设计时就埋下的隐患。因此有关体系结构安全方面的研究也越发热门。

如同多媒体应用的出现促进了微处理器在向量指令方面的增强一样,新兴负载也在持续推动着计算机体系结构的发展。新的应用例如网络分析、人工智能、游戏、图形图像设计和虚拟货币,对算力提出了更高的要求。通用处理器在解决这些问题上并不能达到令人满意的结果,专用芯片再次被提升日程。针对具体的应用如何优化性能和功耗成为芯片设计们新的考验,由此诞生了各类加速芯片,例如GPU、TPU、FPGA、ASIC等。更进一步地,如果能够降低传统芯片设计的高门槛和巨大的前期投入,那么在面对新兴负载时就能快速反应,芯片便捷开发的概念逐渐散播开来。

单核微处理器的性能发展逐渐缓慢,人们开始寻求新的提升性能的方法。一个基本的想法就是使用多个微处理器核心,片上多处理器的就此诞生。片上网络的重要性也日渐凸显,同样要从性能和功耗两方面考虑。同样的,既然可以互连多个微处理器核,那么互连多个微处理器的想法也是顺理成章,这就是并行计算机。一般而言,为了简化系统的编程复杂度、提高通信的效率,在小规模的并行机上大多采用共享内存空间的方法。但由于各个微处理器都有自己的Cache,修改其中的数据如果不能尽可能的传播给其他微处理器就会引发数据不一致的问题,继而引发了有关Cache 一致性方面的研究。

最近二十年是互联网企业大发展的时期,为了更好的提供企业级的数据存储和计算的能力,Google、Amazon、Facebook、腾讯、阿里、百度都各自建立起自己的数据中心,云存储、云计算的概念被广泛的讨论。对数据中心而言,又有了许多新的问题,例如如何进一步提高计算效率和计算密度、更好的散热、管理设备故障、整合异构资源、协调分布式系统等问题等待着人们去解决。

从1964年到2020年,希望梳理的历史能够成为一面明镜。

[1] John L. Hennessy and David A. Patterson. Computer Architecture, Sixth Edition: A Quantitative Approach. Morgan Kaufmann Publishers Inc., 2017.

相关文章
|
4月前
|
设计模式 前端开发 Java
KnowStreaming系列教程第二篇——项目整体架构分析
KnowStreaming系列教程第二篇——项目整体架构分析
41 0
|
测试技术 数据库 安全
带你读《C++代码整洁之道:C++17 可持续软件开发模式实践》之二:构建安全体系
如果想用C++语言编写出易维护的、扩展性良好的以及生命力强的软件,那么,对于所有的软件开发人员、软件设计人员、对现代C++代码感兴趣或想降低开发成本的项目领导者来说,本书都是必需品。如果你想自学编写整洁的C++代码,那么本书也是你需要的。本书旨在通过一些示例帮助各个技术层次的开发人员编写出易懂的、灵活的、可维护的和高效的C++代码。即使你是一名资深的开发工程师,在本书中也可以找到有价值的知识点。
|
7月前
|
存储 缓存 负载均衡
《大型网站技术架构:核心原理与案例分析》读书笔记
《大型网站技术架构:核心原理与案例分析》读书笔记
|
开发框架 JSON 缓存
从三层架构说起,谈谈对历史项目的小改造
任何框架无论封装的如何优秀,关键还是在于局中 “玩游戏” 的开发者,框架只是提供了基本的开发规则,要大家共同的遵循,这其中最难的就是团队小伙伴达成一致的思维认知和共识。约定由于配置,任何框架不可能面面俱到,过渡设计框架务必会失去部分灵活性(物极必反的道理想必大家都知...
192 1
从三层架构说起,谈谈对历史项目的小改造
|
架构师 程序员 微服务
|
监控 安全 网络协议
架构:第一章:项目架构的演变历史
架构:第一章:项目架构的演变历史
109 0
架构:第一章:项目架构的演变历史
|
存储 运维 负载均衡
【分布式技术专题】「架构实践于案例分析」总结和盘点目前常用分布式技术特别及问题分析
【分布式技术专题】「架构实践于案例分析」总结和盘点目前常用分布式技术特别及问题分析
188 0
【分布式技术专题】「架构实践于案例分析」总结和盘点目前常用分布式技术特别及问题分析
|
数据安全/隐私保护
阐述佛萨奇2.0项目系统开发逻辑技术讲解方案
阐述佛萨奇2.0项目系统开发逻辑技术讲解方案
117 0
|
数据采集 存储 监控
谈谈基于DGI框架的数据治理
在大数据和数据科学时代,大多数组织都意识到数据在加速结果方面的潜在力量。然而,大多数人面临的挑战是,不断变化的客户期望和相关需求,以确保准确和可访问的数据,以指导决策,以满足客户的不同需求。
谈谈基于DGI框架的数据治理
|
缓存 前端开发 NoSQL
笔记整理:技术架构涵盖内容和演变过程总结
单体架构 2. 应用与数据库分离 3. 使用缓存抗量 4. 多应用部署和Nginx反向代理 5. 数据库读写分离 6. 应用分组部署 7. 应用分库设计 8. RPC 分布式部署 9. 应用细分和网关引入 10. 低代码编程和可复用
277 0
笔记整理:技术架构涵盖内容和演变过程总结

热门文章

最新文章