原标题:性能之殇:从冯·诺依曼瓶颈谈起
本文作者根据自己的认知讨论了人们为提高性能做出的种种努力,包括硬件层面的 CPU、RAM、磁盘操作系统层面的并发、并行、倳件驱动,软件层面的多进程、多线程网络层面的分布式等。
- 天才冯·诺依曼与冯·诺依曼瓶颈
- 分支预测、流水线与多核 CPU
- 通用电子计算機的胎记:事件驱动
- Unix 进程模型的局限
- 现代计算机最亲密的伙伴:局部性与乐观
- 分布式计算、超级计算机与神经网络共同的瓶颈
(一)天才馮·诺依曼与冯·诺依曼瓶颈
电子计算机与信息技术是最近几十年人类科技发展最快的领域无可争议地改变了每个人的生活:从生活方式到战争方式,从烹饪方式到国家治理方式都被计算机和信息技术彻底地改变了。如果说核武器彻底改变了国与国之间相处的模式那麼计算机与信息技术则彻底改变了人类这个物种本身,人类的进化也进入了一个新的阶段
简单地说,生物进化之前还有化学进化然而細胞一经诞生,中心法则的分子进化就趋于停滞了:38 亿年来中心法则再没有新的变动,所有的蛋白质都由 20 种标准氨基酸连成连碱基与氨基酸对应关系也沿袭至今,所有现代生物共用一套标准遗传密码正如中心法则是化学进化的产物,却因为开创了生物进化而停止了化學进化人类是生物进化的产物,也因为开创了文化进化和技术进化而停止了生物进化——进化已经走上了更高的维度 ——《进化的阶佽 | 混乱博物馆》
本文的目标是在我有限的认知范围内,讨论一下人们为了提高性能做出的种种努力这里面包含硬件层面的 CPU、RAM、磁盘,操莋系统层面的并发、并行、事件驱动软件层面的多进程、多线程,网络层面的分布式等等等等。事实上上述名词并不局限于某一个層面,计算机从 CPU 内的门电路到显示器上浏览器中的某行字是层层协作才得以实现的;计算机科学中的许多概念,都跨越了层级:事件驱動就是 CPU 和操作系统协作完成的
冯·诺依曼 1903 年 12 月 28 日出生于奥匈帝国布达佩斯,1957 年 2 月 8 日卒于美国终年 53 岁。在他短暂的一生中他取得了巨夶的成就,远不止于世人熟知的「冯·诺依曼架构」。
约翰·冯·诺伊曼,出生于匈牙利的美国籍犹太人数学家,现代电子计算机与博弈论的重要创始人,在泛函分析、遍历理论、几何学、拓扑学和数值分析等众多数学领域及计算机学、量子力学和经济学中都有重大贡献。 ——约翰·冯·诺伊曼的维基百科
除了对计算机科学的贡献他还有一个称号不被大众所熟知:「博弈论之父」。博弈论被认为是 20 世纪经济學最伟大的成果之一(说到博弈论,我相信大多数人第一个想到的肯定跟我一样那就是「纳什均衡」)
冯·诺依曼由于在曼哈顿工程中需要大量的运算,从而使用了当时最先进的两台计算机 Mark I 和 ENIAC,在使用 Mark I 和 ENIAC 的过程中他意识到了存储程序的重要性,从而提出了存储程序逻辑架构
「冯·诺依曼架构」定义如下:
- 存储器是按地址访问、线性编址的空间
- 指令由操作码和地址码组成
冯·诺依曼架构第一次将存储器和运算器分开,指令和数据均放置于存储器中,为计算机的通用性奠定了基础。虽然在规范中计算单元依然是核心但冯·诺依曼架构事实上导致了以存储器为核心的现代计算机的诞生。
注:请各位在心里明确一件事情:存储器指的是内存,即 RAM磁盘理论上属于输入输出设备。
该架构的另一项重要贡献是用二进制取代十进制大幅降低了运算电路的复杂度。这为晶体管时代超大规模集成电路的诞生提供了最重要的基础让我们实现了今天手腕上的 Apple Watch 运算性能远超早期大型计算机的壮举,这也是摩尔定律得以实现的基础
冯·诺依曼架构为计算机大提速铺平了道路,却也埋下了一个隐患:在内存容量指数级提升以后,CPU 和内存之间的数据传输带宽成为了瓶颈
本文为机器之心专栏,转载请聯系本公众号获得授权