性能之殇(一)-- 天才冯·诺依曼与冯·诺依曼瓶颈

2018-11-12 / 阅读数:26786 / 分类: 操作系统

电子计算机与信息技术是最近几十年人类科技发展最快的领域,无可争议地改变了每个人的生活:从生活方式到战争方式,从烹饪方式到国家治理方式,都被计算机和信息技术彻底地改变了。如果说核武器彻底改变了国与国之间相处的模式,那么计算机与信息技术则彻底改变了人类这个物种本身,人类的进化也进入了一个新的阶段。

简单地说,生物进化之前还有化学进化。 然而细胞一经诞生,中心法则的分子进化就趋于停滞了:38亿年来,中心法则再没有新的变动,所有的蛋白质都由 20 种标准氨基酸连成,连碱基与氨基酸对应关系也沿袭至今,所有现代生物共用一套标准遗传密码。 正如中心法则是化学进化的产物,却因为开创了生物进化而停止了化学进化,人类是生物进化的产物,也因为开创了文化进化和技术进化而停止了生物进化——进化已经走上了更高的维度。

本文目标

上面的只是我的喃喃私语,下面我们进入正题。

本文的目标是在我有限的认知范围内,讨论一下人们为了提高性能做出的种种努力,这里面包含硬件层面的 CPU、RAM、磁盘,操作系统层面的并发、并行、事件驱动,软件层面的多进程、多线程,网络层面的分布式,等等等等。事实上,上述名词并不局限于某一个层面,计算机从 CPU 内的门电路到显示器上浏览器中的某行字,是层层协作才得以实现的;计算机科学中的许多概念,都跨越了层级:事件驱动就是 CPU 和操作系统协作完成的。

可能的文章列表

以下是可能的文章列表,我在撰写过程中可能会随时修改:

天才冯·诺依曼与冯·诺伊曼瓶颈

分支预测、流水线与多核 CPU

通用电子计算机的胎记:事件驱动

Unix 进程模型的局限

DPDK、SDN 与大页内存

现代计算机最亲密的伙伴:局部性与乐观

分布式计算、超级计算机与神经网络共同的瓶颈

天才 冯·诺依曼

冯·诺依曼1903年12月28日出生于奥匈帝国布达佩斯,1957年2月8日卒于美国,终年53岁。在他短暂的一生中,他取得了巨大的成就,远不止于世人熟知的“冯·诺依曼架构”。

约翰·冯·诺伊曼,出生于匈牙利的美国籍犹太人数学家,现代电子计算机与博弈论的重要创始人,在泛函分析、遍历理论、几何学、拓扑学和数值分析等众多数学领域及计算机学、量子力学和经济学中都有重大贡献。

除了对计算机科学的贡献,他还有一个称号不被大众所熟知:“博弈论之父”。博弈论被认为是20世纪经济学最伟大的成果之一。(说到博弈论,我相信大多数人第一个想到的肯定跟我一样,那就是“纳什均衡”)

冯·诺依曼架构

冯·诺依曼由于在曼哈顿工程中需要大量的运算,从而使用了当时最先进的两台计算机 Mark I 和 ENIAC,在使用 Mark I 和 ENIAC 的过程中,他意识到了存储程序的重要性,从而提出了存储程序逻辑架构。

“冯·诺依曼架构”定义如下:

以运算单元为中心

采用存储程序原理

存储器是按地址访问、线性编址的空间

控制流由指令流产生

指令由操作码和地址码组成

数据以二进制编码

优势

冯·诺依曼架构第一次将存储器和运算器分开,指令和数据均放置于存储器中,为计算机的通用性奠定了基础。虽然在规范中计算单元依然是核心,但冯·诺依曼架构事实上导致了以存储器为核心的现代计算机的诞生。

注:请各位在心里明确一件事情:存储器指的是内存,即 RAM。磁盘理论上属于输入输出设备。

该架构的另一项重要贡献是用二进制取代十进制,大幅降低了运算电路的复杂度。这为晶体管时代超大规模集成电路的诞生提供了最重要的基础,让我们实现了今天手腕上的 Apple Watch 运算性能远超早期大型计算机的壮举,这也是摩尔定律得以实现的基础。

冯·诺伊曼瓶颈

冯·诺依曼架构为计算机大提速铺平了道路,却也埋下了一个隐患:在内存容量指数级提升以后,CPU 和内存之间的数据传输带宽成为了瓶颈。

上图是 i9-7980XE 18 核 36 线程的民用最强 CPU,其配合超频过的 DDR4 3200MHz 的内存,测试出的内存读取速度为 90GB/S。看起来很快了是不是?看看图中的 L1 Cache,3.7TB/S。

我们再来算算时间。这颗 CPU 最大睿频 4.4GHz,就是说 CPU 执行一个指令需要的时间是 0.000000000227273 秒,即 0.22ns(纳秒),而内存的延迟是 68.1ns。换句话说,只要去内存里取一个字节,就需要 CPU 等待 300 个周期,何其的浪费 CPU 的时间啊。

CPU L1 L2 L3 三级缓存是使用和 CPU 同样的 14 纳米工艺制造的硅半导体,每一个 bit 都使用六个场效应管(通俗解释成三极管)构成,成本高昂且非常占用 CPU 核心面积,故不能做成很大容量。

除此之外,L1 L2 L3 三级缓存对计算机速度的提升来源于计算机内存的“局部性”,相关内容我们之后会专门讨论。

接下来

下一篇文章,我们将讨论分支预测、流水线与多核 CPU,看看那些上古大神们为了提升性能都迸发出了什么奇思妙想,搞出了什么奇技淫巧。

WRITTEN BY

程序员,Swift Contributor,正在写《iOS 可视化编程与 Auto Layout》。

评论:

2020-01-02 15:10

dpdk就是绕过内存??

LQ

2019-10-16 10:25

您好,文章很精彩,想转载在Qunar技术沙龙上,不知是否可以。公众号ID:QunarTL

2019-10-23 15:58

@LQ:可以,保留原作者姓名和链接即可。

Johnson

2018-12-20 13:56

一个小小的7980xe也敢称最强民用CPU?你当2990wx是摆着好看的?

2018-12-20 14:08

@Johnson:2990wx 的内存性能很差。

开发者头条

2018-11-26 09:58

感谢分享!已推荐到《开发者头条》:https://toutiao.io/posts/2rjvsg 欢迎点赞支持!使用开发者头条 App 搜索 1908 即可订阅《Swift、Laravel、前端》

发表评论:

昵称

邮件地址 (选填)

个人主页 (选填)

冯 诺依曼与冯 诺依曼计算机,性能之殇(一)-- 天才冯·诺依曼与冯·诺依曼瓶颈...相关推荐

  1. 转 性能之殇:从冯·诺依曼瓶颈谈起

    为提高性能做出的种种努力,包括硬件层面的 CPU.RAM.磁盘,操作系统层面的并发.并行.事件驱动,软件层面的多进程.多线程,网络层面的分布式等. 本文共分为七个部分: 1.天才冯·诺依曼与冯·诺依曼 ...

  2. 信阳师范学院计算机老师,信阳师范学院计算机与信息技术学院导师教师师资介绍简介-冯岩...

    信阳师范学院计算机与信息技术学院导师教师师资介绍简介-冯岩本站小编 Free考研考试/2020-11-14 一.基本资料 姓名:冯岩 职称/学位:教授/博士 研究方向:小波分析及其应用.机器学习 主讲 ...

  3. 性与潜能:性能量是一切天才的创造力源泉

    人类对刺激的反映,可能会激起高速率的震撼,那是人人皆知的所谓热忱.创造性想象力.强烈的欲望等.能够引起精神发应的刺激是-- 1.性表现的欲望. 2.爱情. 3.对利.权势的获取及金钱的炙热欲望. 4. ...

  4. 冯诺依曼计算机的设计思路和逻辑组成是什么,冯 诺依曼计算机的设计思想和逻辑组成是什么...

    设计思想:用二进制来代表计算机中的数据及逻辑表示. 逻辑组成:运算器,控制器,存储器,输入和输入设备. 冯.诺依曼计算机的工作原理,"存储程序控制"原理的基本内容: 1.采用二进制 ...

  5. 软件是计算机什么及相关文档的总称,1冯-诺依曼原理的基本思想是什么.doc

    文档介绍: 2.什么是计算机硬件.计算机软件?各由哪几部分组成?它们之间有何联系? 答:人们通常把构成计算机的物理装置称为计算机的硬件,其主要功能是:存放控制计算机运行的程序和数据,对信息进行加工处理 ...

  6. 川大计算机专业导师冯子亮,川大计算机学院硕导名单_跨考网

    姓名 职称 招生专业 研究方向 电子邮箱 陈兴蜀 教授 计算机科学与技术 信息安全/云计算与并行计算 chenxsh@scu.edu.cn 郭兵 教授 计算机科学与技术 嵌入式实时系统 guobing ...

  7. 华中科技大学计算机学院领导,冯丹:华中科技大学计算机学院院长

    冯丹,1970年5月生,教授,博士生导师,长江学者特聘教授,国家杰出青年基金获得者.华中科技大学计算机学院院长,武汉光电国家实验室(筹)信息存储与光显示功能实验室主任,信息存储系统教育部重点实验室主任 ...

  8. 华中科技大学计算机学院冯丹简历,华中科技大学计算机学院副院长冯丹教授来我校讲学的通知...

    课程题目:智能存储技术 主讲人:华中科技大学计算机学院副院长冯丹教授 时间:2007年7月20-21日 早上8:30-12:30    下午2:00-6:00 面向对象:本科生.研究生.青年教师 地点 ...

  9. 计算机谱子佛系少女,佛系少女简谱-冯提莫-听完仿佛整个人都变年轻了

    佛系少女 - 冯提莫 词:申名利/朱鸽 曲:朱鸽 编曲:朱鸽 吉他:朱家明 和声:皎月/朱鸽 rap编配:朱鸽/冯提莫 录音:朱鸽/浔浔 混音:殇小谨 母带:Leonard Fong 冯剑平 监制:暗 ...

最新文章

  1. KBEngine服务器环境搭建
  2. Hibernate,get,load,find方法解析
  3. c语言用getchar函数输入两个字符c1,c语言:用getchar函数读入两个字符给c1,c2,用putchar和printf输出。思考问题...
  4. openface 和openpose(pytorch)剪枝之路
  5. 分布式系统Paxos算法
  6. mybatis的简单查询用语句吗_面试官:Mybatis中的TypeHandler你用过吗?
  7. Javascript在页面加载时的执行顺序(转载)
  8. 小程序 mpvue 生命周期一览
  9. 【译】组织好你的Asp.Net MVC解决方案
  10. Socket即时通讯
  11. Unity3d C#使用Highlighting System 5.0高光插件的详细使用教学和脚本动态操作
  12. 数据同步工具之DataX理论
  13. 有关php地英语文章,实用英语短句-PHP教程,其它文章
  14. 迪厅装修后地板清洁与保养
  15. 研究日记:虚拟歌姬自动调教之歌曲音频切割的问题
  16. 购房贷款 等额本息 等额本金
  17. C语言static关键字的作用(有三个作用)
  18. 礼堂椅影院椅安装步骤方法
  19. 布拉格天空飞过荆棘鸟
  20. Vue 2 即将成为过去

热门文章

  1. 半监督学习:semi-supervised learning 直推学习:transductive learning 主动学习:active learning
  2. 面对服务器层出不穷的攻击,我们该如何迎刃而解
  3. ECNA 2017 Problem J: Workout for a Dumbbell 模拟
  4. 三国杀移动版虎牢关模式神吕布技能是什么?
  5. English--辅音
  6. C# DevExpress 皮肤控件记住设置
  7. 保姆级二进制安装高可用k8s集群文档(1.23.8)
  8. 基于(ztmap)BIM的数字孪生建造智慧机房管理后台展示系统
  9. 中国国内可用API合集
  10. 2012网易校园招聘笔试题