深入浅出计算机组成原理
徐文浩
bothub创始人
立即订阅
13019 人已学习
课程目录
已完结 62 讲
0/4登录后,你可以任选4讲全文学习。
入门篇 (5讲)
开篇词 | 为什么你需要学习计算机组成原理?
免费
01 | 冯·诺依曼体系结构:计算机组成的金字塔
02 | 给你一张知识地图,计算机组成原理应该这么学
03 | 通过你的CPU主频,我们来谈谈“性能”究竟是什么?
04 | 穿越功耗墙,我们该从哪些方面提升“性能”?
原理篇:指令和运算 (12讲)
05 | 计算机指令:让我们试试用纸带编程
06 | 指令跳转:原来if...else就是goto
07 | 函数调用:为什么会发生stack overflow?
08 | ELF和静态链接:为什么程序无法同时在Linux和Windows下运行?
09 | 程序装载:“640K内存”真的不够用么?
10 | 动态链接:程序内部的“共享单车”
11 | 二进制编码:“手持两把锟斤拷,口中疾呼烫烫烫”?
12 | 理解电路:从电报机到门电路,我们如何做到“千里传信”?
13 | 加法器:如何像搭乐高一样搭电路(上)?
14 | 乘法器:如何像搭乐高一样搭电路(下)?
15 | 浮点数和定点数(上):怎么用有限的Bit表示尽可能多的信息?
16 | 浮点数和定点数(下):深入理解浮点数到底有什么用?
原理篇:处理器 (18讲)
17 | 建立数据通路(上):指令+运算=CPU
18 | 建立数据通路(中):指令+运算=CPU
19 | 建立数据通路(下):指令+运算=CPU
20 | 面向流水线的指令设计(上):一心多用的现代CPU
21 | 面向流水线的指令设计(下):奔腾4是怎么失败的?
22 | 冒险和预测(一):hazard是“危”也是“机”
23 | 冒险和预测(二):流水线里的接力赛
24 | 冒险和预测(三):CPU里的“线程池”
25 | 冒险和预测(四):今天下雨了,明天还会下雨么?
26 | Superscalar和VLIW:如何让CPU的吞吐率超过1?
27 | SIMD:如何加速矩阵乘法?
28 | 异常和中断:程序出错了怎么办?
29 | CISC和RISC:为什么手机芯片都是ARM?
30 | GPU(上):为什么玩游戏需要使用GPU?
31 | GPU(下):为什么深度学习需要使用GPU?
32 | FPGA和ASIC:计算机体系结构的黄金时代
33 | 解读TPU:设计和拆解一块ASIC芯片
34 | 理解虚拟机:你在云上拿到的计算机是什么样的?
原理篇:存储与I/O系统 (17讲)
35 | 存储器层次结构全景:数据存储的大金字塔长什么样?
36 | 局部性原理:数据库性能跟不上,加个缓存就好了?
37 | 高速缓存(上):“4毫秒”究竟值多少钱?
38 | 高速缓存(下):你确定你的数据更新了么?
39 | MESI协议:如何让多核CPU的高速缓存保持一致?
40 | 理解内存(上):虚拟内存和内存保护是什么?
41 | 理解内存(下):解析TLB和内存保护
42 | 总线:计算机内部的高速公路
43 | 输入输出设备:我们并不是只能用灯泡显示“0”和“1”
44 | 理解IO_WAIT:I/O性能到底是怎么回事儿?
45 | 机械硬盘:Google早期用过的“黑科技”
46 | SSD硬盘(上):如何完成性能优化的KPI?
47 | SSD硬盘(下):如何完成性能优化的KPI?
48 | DMA:为什么Kafka这么快?
49 | 数据完整性(上):硬件坏了怎么办?
50 | 数据完整性(下):如何还原犯罪现场?
51 | 分布式计算:如果所有人的大脑都联网会怎样?
应用篇 (5讲)
52 | 设计大型DMP系统(上):MongoDB并不是什么灵丹妙药
53 | 设计大型DMP系统(下):SSD拯救了所有的DBA
54 | 理解Disruptor(上):带你体会CPU高速缓存的风驰电掣
55 | 理解Disruptor(下):不需要换挡和踩刹车的CPU,有多快?
结束语 | 知也无涯,愿你也享受发现的乐趣
免费
答疑与加餐 (5讲)
特别加餐 | 我在2019年F8大会的两日见闻录
FAQ第一期 | 学与不学,知识就在那里,不如就先学好了
用户故事 | 赵文海:怕什么真理无穷,进一寸有一寸的欢喜
FAQ第二期 | 世界上第一个编程语言是怎么来的?
特别加餐 | 我的一天怎么过?
深入浅出计算机组成原理
登录|注册

01 | 冯·诺依曼体系结构:计算机组成的金字塔

徐文浩 2019-04-24
学习计算机组成原理,到底是在学些什么呢?这个事儿,一两句话还真说不清楚。不过没关系,我们先从“装电脑”这个看起来没有什么技术含量的事情说起,来弄清楚计算机到底是由什么组成的。
不知道你有没有自己搞过“装机”这回事儿。在 2019 年的今天,大部分人用的计算机,应该都已经是组装好的“品牌机”。如果我们把时钟拨回到上世纪八九十年代,不少早期的电脑爱好者,都是自己采购各种电脑配件,来装一台自己的计算机的。

计算机的基本硬件组成

早年,要自己组装一台计算机,要先有三大件,CPU、内存和主板。
在这三大件中,我们首先要说的是 CPU,它是计算机最重要的核心配件,全名你肯定知道,叫中央处理器(Central Processing Unit)。为什么说 CPU 是“最重要”的呢?因为计算机的所有“计算”都是由 CPU 来进行的。自然,CPU 也是整台计算机中造价最昂贵的部分之一。
CPU 是一个超级精细的印刷电路版,图片来源
第二个重要的配件,就是内存(Memory)。你撰写的程序、打开的浏览器、运行的游戏,都要加载到内存里才能运行。程序读取的数据、计算得到的结果,也都要放在内存里。内存越大,能加载的东西自然也就越多。
内存通常直接可以插在主板上,图片来源
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《深入浅出计算机组成原理》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(53)

  • 仁者
    我理解的是冯·诺依曼机侧重于硬件抽象,而图灵机侧重于计算抽象。另外还有个问题是,冯·诺依曼体系体系结构距今以及几十年了,如今是否有更优的体系结构被提出(不考虑它是否能真正应用于实际,就好比键盘的编排)

    作者回复: 这个理解很到位。后面这个问题从今天看,我们还没有看到真正颠覆性的新的体系结构出现,更多地是针对硬件的变化和应用场景的变化的优化。但是过去几年随着深度学习,IOT等的发展,体系结构又有了一波新的大发展,也许未来会有新的变化呢。

    2019-04-24
    1
    58
  • Amanda
    两者有交叉但是不同,根据了解整理如下:
    - 图灵机是一种思想模型(计算机的基本理论基础),是一种有穷的、构造性的问题的问题求解思路,图灵认为凡是能用算法解决的问题也一定能用图灵机解决;
    - 冯诺依曼提出了“存储程序”的计算机设计思想,并“参照”图灵模型设计了历史上第一台电子计算机,即冯诺依曼机。
    ps:有看到一种有争议说法:冯诺依曼机是图灵机的实现,感觉这有点过于片面,所以上述姑且改为参照

    作者回复: 👍总结得很好啊

    2019-04-24
    37
  • 逍觉迷遥
    课后题回答:
    图灵机和冯诺依曼机并不是两种计算机,他们只是描述的侧重点不同而已!
    冯诺依曼机侧重于"程序存储"与"二进制执行",并提出实现这两点必须的五个部分:控制器,处理器,存储单元,输入和输出设备。这个体系基本奠定了近现代计算机的硬件基础,所以冯诺依曼被称为"计算机之父"!
    图灵机则是一个理想状态,它侧重于计算与逻辑。图灵提出的是一种关于计算机科学计算与逻辑的构想,理论上图灵机可以模拟人类所有的计算过程。所以,图灵被称为"计算机科学之父"!
    所以,一个侧重的是组成结构,一个侧重的是逻辑运算,他们两者共同构成了现在的计算机!

    作者回复: 逍觉迷遥同学你好,做个小小的纠错哦,图灵机不能模拟“所有”的计算过程,其实是解决的就是哪些“可计算”,哪些“不可计算”的问题。

    2019-04-24
    33
  • 米小亮
    冯诺依曼确定了当代计算机体系结构,即五大部件(运算器、控制器、存储、输入设备、输出设备);程序存储;二进制运算方式;构建了一个可编程、可存储的计算机硬件体系,为软件编程构建了逻辑抽象的计算机模型。
    阿兰图灵确定了利用当代计算机的计算极限,即冯诺依曼机只能解决1.有解的可计算的数学问题2.能够在有限步骤得到解;为软件编程确立的问题域边界。

    作者回复: 图灵机其实也是一个很有意思的话题。我上大学的时候,对应着图灵机也有一门课程,叫做”可计算性理论“。在我看来,图零机是一个抽象的”思维实验“,而冯诺依曼机就是对应着这个”思维实验“的”物理实现“。相互之间颇有理论物理学家和实验物理学家的合作关系的意思,可谓是一个问题的一体两面。

    2019-04-24
    25
  • 星尘
    应该是部分cpu集成了gpu。不是主板集成了显卡。

    作者回复: 星尘同学你好,你说得没错。现在都是CPU里面直接集成了一个GPU芯片,一般我们叫它”核心显卡“,不过在之前更多是在主板上集成一块显卡,很多时候我们叫它”板载显卡“。太久没有装电脑了,技术已经更新换代了。:-)

    2019-04-24
    18
  • Tomcat
    图灵机偏重的抽象模型是“可计算”和“不可计算”这个计算机的边界,相当高瞻远瞩!而冯诺依曼体系结构的计算机则是对“可计算”式计算机的种实现,侧重于硬件的抽象。
    另外,冯诺依曼是图灵的博士生导师,图灵可以说是青出于蓝而胜于蓝!他直接告诉了世人可计算的边界,如果你真的懂图灵机,就不会太过于担忧人工智能会取代人类这种荒谬的论断。
    冯诺依曼,爱因斯坦和图灵是20世纪最聪明的人,据说,冯诺依曼比爱因斯坦更聪明。著名物理学家诺贝尔奖获得者费米在美国氢弹计划中计算了一个晚上的问题,冯诺依曼只用心算就得出了一样的答案!
    回到图灵本人,他之所以有这么高的觉悟,一是他师从冯诺依曼,希尔伯特等顶尖的人族,二是他绝顶聪明,三是时代的机遇。所以,我们如果想更优秀,就应该与最优秀的人在一起,这个非常重要。

    作者回复: 😊 做个小小的纠错,图灵的导师是丘奇,而不是冯诺伊曼。

    2019-04-24
    11
  • William
    图灵在计算理论上的贡献很大,研究的是可计算性理论,类似于计算机是否可行,他阐明了计算机在数学上的概念,邱奇图灵论题,图灵机,停机问题等等。想再刷一遍《模仿游戏》了。
    101页的英文Draft也是可以看很久了...

    作者回复: William你好,Draft我是推荐给硬核用户来看的,与其说是了解知识,不如说是为了破除”迷信“,如果没有太多时间,的确不一定有必要看,或者看看wikipedia对应的条目就好。

    2019-04-24
    8
  • cpw
    外置存储如机械硬盘、SSD硬盘,归属存储系统还是属于输入输出设备?,本专栏是归属到存储系统,就在极客时间的许式伟的架构课里面是归属到输入输入设备。但我看很多书里面说发都不一,不知道哪个老师说的才是对的。

    作者回复: 如果广义上来说,磁盘既是存储设备,又是输入输出设备。在Wikipedia里面,把 Mass Storage,作为和Memory以及Input/Output并列的一项,也是因为这一点。

    作为存储系统,它和寄存器,高速缓存,内存乃至网络存储构成了一个存储系统的金字塔。作为设别,它又是通过I/O设备的方式和机器通信的。

    2019-04-24
    6
  • 在彼处
    图灵机是将程序写到磁带上,通过读取磁带上的程序执行指令。冯诺依曼体系是讲程序存储到内存中,CPU执行指令时候从内存中读取。不同之处就是存储程序的方式不同,不知道我的理解对不对

    作者回复: 在彼处同学你好,虽然图灵机的”思维实验“是用一个纸带来抽象停机问题,但是并不是磁带和内存的差别哦。可以先搜索wiki看一些资料对这个问题有一个更明确的了解。

    2019-04-24
    6
  • 魏宇靖
    图灵机是抽象理论计算机,而且不像冯诺依曼计算机一样可以 存储。所以讲实际的冯诺依曼计算机发展迅速,但随着AI的发展图灵机这种更接近人脑的思考方式应该会越来越被人们注意

    作者回复: 魏宇靖同学你好,图灵机和冯诺伊曼机是对我们现在每天用的计算机的不同角度的抽象,有兴趣可以回头搜索一下补一下”可计算性理论“的课程哦。

    2019-04-24
    5
  • Eason Tai
    想听听大佬对于 图灵机 和 lambada 的理解和认识

    作者回复: Eason Tai同学你好,这个命题有点大啊😊。图灵机是一个很有意思的抽象问题,背后对应着一门<可计算性理论>的课程,其实就是告诉我们什么样的问题是计算机解决得了的,什么样的问题是解决不了的。而lambda算子是构造图灵机表示的一个数学的形式化系统。想要和实践结合的话,最好是去刷一刷sicp这本书,也就是<计算机程序的构造与解释>。刷了这本书的习题也是让自己功力大进的一个好办法。

    2019-04-28
    4
  •        鸟人
    请问WiFi 网络也是输入输出设备么?

    作者回复: wifi网络适配器也是一个输入输出设备呀。

    2019-04-24
    4
  • 安之若素,岁月静好
    我记得,有冯诺依曼结构,还有个哈弗结构。两者区别是冯结构程序存储与数据存储是合并在一起的,哈弗结构两者是分开的。现代处理器,追求更高性能,多级流水线,并行执行,分支预测,多级cache等技术的应用,很难单纯的划分为冯架构或哈弗架构,两者界限模糊了

    作者回复: 👍哈弗结构算是冯诺依曼结构的一个特殊形式吧,把指令和数据分开存储,不过现在很少见有人提了。

    2019-04-29
    3
  • 黄小妖
    不好意思 上条没编辑完 就被submit。 在文中老师有提到“上面的算术逻辑单元和这里的控制器单元,共同组成了我们说的 CPU。” 难道不应该是处理器单元和控制器单元组成 CPU吗?

    我在网上概念上写 CPU包括运算逻辑部件、寄存器部件和控制部件。是否就是文中老师写的 处理器单元和控制单元?

    电脑小白,正在自学计算机,对概念有点不清楚,看网上也是有很多种说法,望老师不嫌弃~

    作者回复: 黄小妖同学,你说得很好。其实我们在说计算机的五大组成部分的时候,有时候容易把不同粒度的东西混在一起。

    一般我们认为CPU包含了运算器和控制器的功能,而这里的 运算器(Arithmetic Unit)呢,有时候又叫做“处理器单元”(Processing Unit)。然而处理器单元里面完成“运算”这个核心功能的部分呢,其实就是ALU(算术逻辑单元)。所以有时候我们会说 ALU + CU = CPU。

    实际上,运算器除了ALU之外,还包含一系列的寄存器。而控制器其实也应该包含指令寄存器和PC寄存器。

    可以说几种说法都对,不过更准确的教科书式的说法,应该还是 运算器 + 控制器 = CPU。

    2019-04-28
    3
  • Null
    冯诺依曼机和图灵机应该是一体的,共同运作,本章讲了现在的计算机是由冯诺依曼机原理进行运作的,又有图灵机的出现,推断说明两者应该是互赖的

    作者回复: Null同学你好,冯诺依曼机和图灵机可谓是计算机的一体两面,如果我们把“图灵机”当成是“灵魂”代表了计算机最抽象的本质,那么“冯诺伊曼机”就是“肉体”代表了计算机最具体的本质。

    2019-04-24
    3
  • 于东燃
    我想问下蓝牙在计算机的位置和通讯方式,它是属于io设备吗?

    作者回复: 于东燃同学你好,”蓝牙“是一个协议。在我看来,对计算机来说,里面有对应的”蓝牙适配器“,你可以认为这个适配器是一个I/O设备。”蓝牙适配器“本身再通过蓝牙协议和你的蓝牙耳机之类进行通信。

    2019-04-24
    3
  • 拯救地球好累
    ---总结---
    个人电脑组成:CPU、内存、主板、输入设备、输出设备、(硬盘、显卡、显示器、机箱、风扇等)
    手机组成:SoC(包含CPU、内存等)
    这类计算机的共性:遵循冯诺依曼体系结构(存储程序计算机)
    存储程序计算机的两个核心点:可编程的、可存储
    存储程序计算机五大部件:运算器、控制器、存储器、输入设备、输出设备
    据此,学习组成原理应当从五大部件着手,弄清楚各部件内部工作机制和部件间的协调机制,应当尝试能对应用代码在计算机中的运行情况进行分析。
    ---作业---
    对于图灵机和冯诺依曼机,前者是解决可计算问题的抽象,后者是基于前者思想在组成上相对更具体化的抽象。

    作者回复: 👍

    2019-09-16
    2
  • DreamItPossible
    从各自要解决问题的角度出发来解答

    图灵机是为了解决哪些问题是可计算的,哪些问题是不可计算的提出的一种计算模型,侧重于如何实现计算。

    冯诺依曼机是为了解决不可编程计算机和非存储计算机的缺陷而提出的,具有可编程和存储程序的优点,描述了一种计算机的可能实现模型,侧重于计算机如何组成。
    2019-06-25
    2
  • hamster
    个人感觉图灵机模型和冯诺依曼结构的最明显区别就是图灵机模型设计存储程序和运行程序是在同一个模块内进行的,但很想了解一下把存储和运算分开会给计算机性能带来什么影响。

    作者回复: Dr. drc同学你好,

    现代计算机的存储和运算就是分开的,这个也是后来CPU里面引入高速缓存的原因之一。也是很多程序性能优化的核心挑战之一。

    可以看一下其他同学的回答重新消化理解一下。

    2019-05-02
    2
  • 太多的借口
    南北桥那个应该给张图比较好,然后指出来,“南” 在图片的上方或者下方,要不然怎么知道哪个视角下是所谓的 南

    作者回复: 👍这个建议好,我看稍后是否能往里加上一张图。

    2019-04-28
    2
收起评论
53
返回
顶部