深入浅出计算机组成原理
徐文浩
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第二期 | 世界上第一个编程语言是怎么来的?
特别加餐 | 我的一天怎么过?
深入浅出计算机组成原理
登录|注册

结束语 | 知也无涯,愿你也享受发现的乐趣

徐文浩 2019-09-11
00:00
06:49
讲述:徐文浩 大小:6.26M
你好,我是徐文浩。伴随着无数个不眠之夜,“深入浅出计算机组成原理”专栏终于来到了结束语。
去年 11 月份,极客时间找到我,我开始构思这个专栏。本以为今年 4、5 月份就能把专栏写完。结果,一方面因为创业过程中时间总是不够用,另一方面,写出有价值内容的并不是一件容易的事情,直到 9 月 10 号的凌晨,我才写完这最后一篇结束语。原本计划的 45 讲,也在这个过程中变成了近 60 讲。现在回过去看,写这个“深入浅出计算机组成原理”专栏,是一个远比想象中要困难的挑战,但同时也是一个有趣的发现之旅。

完成比完美更好

Facebook 的文化里面喜欢用各种小标语,其中有一条我很喜欢:“Done is better than perfect”。翻译成中文就是,“完成比完美更好”。写这个专栏的时候,我对这一点的体会特别深刻。在学习更多深入知识的时候,我希望你也可以抱有这样的态度。
在初期构思专栏的时候,我期望写成一个完美的专栏。不过随着时间的推移,我发现其实并没有什么完美可言。
一方面,组成原理的知识点很多,如果每一个都写下来,没有个一两百讲怕是讲不完。更何况有那么多大师的教科书珠玉在前,只是做解读知识点、覆盖已有的知识点,我觉得价值不大。思来想去,我希望尽可能找到最重要、最核心的知识点,以及能和大多数工程师日常工作有结合的知识点,希望能够从应用中多给你一些启发。
另一方面,写专栏和我们写程序一样,都是有 deadline 的。无论是在系统发版之后的午夜里,还是去美国出差的飞机上,乃至偶尔忘带了录音笔的时候,总是要打起精神想尽方法,写出一篇让自己满意的文章来。同时,也有不少同学给我挑出了错漏或者不准确的部分,一起把这个专栏打磨地更“完美”。
不知道正在读结束语的你,有没有在过去 5 个月里坚持学习这个专栏呢?有没有认真阅读我每一节后的推荐阅读呢?有没有尝试去做一做每一讲后面的思考题呢?
如果你能够坚持下来,那首先要恭喜你,我相信能够学完的同学并不太多。如果你还没有学完,也不要紧,先跟着整个课程走一遍,有个大致印象。与其半途而费,不如先囫囵吞枣,硬着头皮看完再说。新的知识第一遍没有百分百看懂,而随着时间的推移,慢慢领悟成长了,这才是人生的常态。而我所见到的优秀的工程师大都会经历这样的成长过程。
我们这个行业,经常喜欢把软件开发和建筑放在一起类比,所以才会有经典的《设计模式》这样的书。甚至有不少人干脆从《建筑的永恒之道》里面去寻找灵感。然而,建筑能够在历史上留下长久的刻印,但是软件却完全不同。无论多么完美的代码都会不断迭代,就好像新陈代谢一样。几年过去之后,最初那些代码的踪影早已经没有了。软件工程师放弃了追求永恒,而是投身在创作的快乐之中。
希望在日后的学习过程中,你也能抱着“日拱一卒、不期速成”的心态坚持下去,不断地学习、反思、练习、再学习,这样的迭代才是最快的成长之路。

知也无涯,愿你享受发现的乐趣

说实话,从构思到写作这个专栏,这整个过程对我来说,还是有些忐忑的。组成原理是一门离大部分工程师的日常工作比较远的话题,却又是一个很多经典教材会讲的主题。“到底从什么角度去切入讲解”,我在构思文章的时候常常问自己。
组成原理其实是一门类似于“计算机科学 101”的课程,固然我可以在里面讲 VHDL 这样的硬件编程语言,不过说实话,这样的知识对于大部分的人意义并不大。我期望,能够通过这个专栏,让你体会到计算机科学知识是真的有用的,能够让你把学专栏的过程变成一个发现之旅。
比如,在学习 HDD 硬盘原理的时候,你能知道为什么用它来记录日志很好,但是拿来作为 KV 数据库就很糟糕;在学习 CPU Cache 的时候,你实际用代码体会一下它有多快,为什么 Disruptor 里面的缓存行填充这样的小技巧,能够把性能发挥到极致。
除此之外,撰写整个专栏的过程,也是我对自己的一个发现之旅。
虽然在过去开发大型系统的时候,已经体会到掌握各种计算机科学基础知识的重要性,但是,这个专栏还是给了我一个系统性地、对基础知识回顾和整理的机会,在忙碌的日常工作之外,在离开学校那么多年后,重新把基础的理论知识和实际的系统开发做了一一印证。
在这个过程中,对我自己是一个温故而知新的过程,我自己新学到不少过去不了解的知识点,也因此重新找到了很多新的技术兴奋点。乃至在专栏写了一半的时候,我特地在出差的空隙跑了一趟计算机历史博物馆,去感受创造新事物的那种激动人心的感觉。
不过,在这整个过程中,我也深深体会到了内容创作的难。
过去这 10 个月里,持续地写稿、画图、写实验程序,在编辑的反馈下再改稿和录音,对我也是一个全新的体验。没有思路、时间不够、工作和写稿压力太大的时候,抓狂、发脾气、骂人都发生过。如果没有编辑在背后一直督促着,只靠自律,我想我无论如何也不可能写完这样一个规模的专栏。
但是,我相信只有不断地逼迫自己走出习惯的舒适区,去尝试、体验新的挑战,才会进一步的成长。而很多未来的机会,也孕育在其间。就像史蒂夫·乔布斯说的,我们未来生活的可能性就是靠这些点点滴滴串联起来的。
也许你今天只是在学校写简单的课程管理系统,可能会觉得有些无聊。抽一些时间出来,去了解计算机科学的底层知识,可能会让你找到求知的乐趣,无形中,这也为你去解决更有挑战的问题做好了铺垫。就像我自己在过去研究底层的数据系统、写技术博客的时候,也没有想到会有机会写上这样一个 20 万字以上的专栏。
就像罗曼·罗兰说的那样,“对爱的渴望,对知识的追求,对人类苦难不可遏制的同情,是支配我一生的单纯而强烈的三种情感”。
我希望,在学习成长的过程中,你能够摆脱一些功利性,不用去回避遇到的痛苦和挫败感,多从这个过程中找到获得知识的快乐。
希望这个专栏能够给你带来发现的乐趣,也能够为你在未来的生活里铺垫上那小小的一步。相信这个专栏不是你学习的终点,也也不是我探索和发现新主题的终点。说不定,在不久的未来我们还会有缘再见。
对了,我在文章末尾放了一个毕业调查问卷。在这 5 个月的学习过程中,如果你对这个专栏或者我本人有什么建议,可以通过这个问卷给我反馈,我一定会认真查看每一封的内容。期待你的反馈!
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《深入浅出计算机组成原理》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(52)

  • 胖头小C
    感谢老师这么认真的对待这个课程,学到了很多,这不是结束,只是我进入精彩计算机世界的开始

    作者回复: 👍 希望能让你喜欢计算机这个世界

    2019-09-11
    14
  • leslie
    同时学习的课程有点多,工作很忙:其实后面为了学习都只能强行把晚上的睡眠砍到4-5小时左右才挤出时间来学习,不过只是追上了部分;勉强到结束的时候学完了6成多,至少和自己工作相关的入门篇、存储与IO系统、应用篇以及答疑与加餐算是完全学完了。
          更多的时候其实是把课程在当作一本参考书在用吧:例如虚拟机:不同的课程讲解的出发点不同,可是要想真正掌握用好就必须从各方面去学习,而不是单纯的学会用Vmware或者Docker;老师的课程中推荐的一些书籍同样补充了,不过顾上了课程就实在顾不上书籍了。
         其实真正碰到问题的时候各方面知识不懂是根本无从去分析的尤其是当你是Team的最后一人是:不光需要分析还要找出问题的出在哪儿,整体知识没有完整的理解是无从一个人给出其它人方向的。其实原理篇的任何一块真正去扩展都能扩展出上百篇。
          就像老师所说的像做建筑一样去设计已经不现实,况且现在的建筑其实大多都是框架搭好其它都是一块块拼接上去;程序架构已经从最早的单机走到了今天的分布式。希望老师下次能够授课时能相对空点:其实部分问题我是变通的去问了其它刚好知识上有所涉及的老师,只是为了解惑;因为越是对行业了解的深越知道什么才是源,才更困惑。
          感谢老师的辛勤教诲,希望后续还是有些更深层的每日一科、或者微课对某些东西进一步扩展和深化讲解吧;愿老师一切顺利。

    作者回复: 谢谢支持。虽然我对自己安慰说"Done is better perfect",不过这个专栏在时间安排上对我的确是一个很大的挑战,很长一段时间顾不上答疑,也不好意思奢望大家谅解,只好在接下来的时间抓紧时间补上回复。

    如果之后有机会会有更充分一点的时间来写新的内容。

    2019-09-11
    6
  • Zain Lau
    100天,最后冲刺北邮!

    作者回复: 加油👍 不不过考研冲刺的时候还是要多看教科书和历年考题啊。

    2019-09-11
    1
    3
  • oatlmy
    老师,请问您是怎么知道有此类论文的?比如对于无锁化,你又是怎么定位到一篇论文的?

    作者回复: 主要靠搜索吧,然后可以进一步看其他材料或者论文里面的引用。其实具体是哪一篇论文没有那么重要。

    论文有个好处是整体结构都是八股文,可以有一个清晰的脉络把整个主题讲完。而且论文的篇幅一般都在10页以内,其实是很适合作为学习一个特定主题的阅读材料的。

    2019-09-15
    1
  • 小肚腩era
    在老师开启专栏的时间就订了,但是中间有一段时间中断了,因为读到指令运算那一部分,感觉就像自己又回到了前不久的课堂,觉得有点枯燥,但是工作之余,想起自己又订阅了这个专栏,于是就咬咬牙,强迫自己读下去,但没有想到,后面的内容是如此的有趣,在此十分感谢老师给予了我们如此优质的内容和知识,真的谈得上是“深入浅出”,老师每节课后的推荐阅读都大概有看一下,但可能水平不够,还是无法理解读懂,我想着,等学完整个专栏,再回头来看一遍,正所谓温故知新,好的东西肯定是要多读多思考的。老师的这个专栏,真的是我在极客时间订阅的课程里面,算得上宝藏的一门专栏了,所以还是要感谢老师,谢谢您!学无止境,知也无涯,还是要一直学习,不断提高自己~

    作者回复: 谢谢支持!

    2019-09-14
    1
  • 焰火
    感谢浩哥

    作者回复: 谢谢大家一路陪伴

    2019-09-11
    1
  • 易儿易
    坚持看完,收获颇丰,谢谢老师!

    作者回复: 👍

    2019-09-11
    1
  • 许童童
    感谢老师,从老师的专栏中真的学到了很多。再次感谢。

    作者回复: 谢谢大家一路以来的支持

    2019-09-11
    1
  • 逍遥法外
    每次一读完一个专栏的最后一篇,都有种伤感的感觉,就像将要和一个老友离别一样。可是那句“江湖再见”却又不得不说。感谢老师这十个月的努力,也感谢自己的坚持学习。这个专栏对我的提升我个人感觉是肉眼可见的。最后祝徐老师一切顺利,身体健康

    作者回复: 谢谢你,能坚持下来不容易

    2019-09-11
    1
  • -W.LI-
    感谢老师,没看推荐阅读(尝试了下,太枯燥难懂了),老师的专栏比较通俗易懂。

    作者回复: 可以尝试先挑里面的一两篇论文试试,读一次10页左右的论文,容易客服对于各种底层技术“高大上”的恐惧心里

    2019-09-11
    1
  • 冯嘉晖
    发来贺电!!

    作者回复: 谢谢长久以来的支持!

    2019-09-11
    1
  • iron_man
    买了一直没看,最近看并行编程的书籍,一些概念不清楚,就来看看这个课程,因为大部分东西都了解,所以看的很快,大概2周左右全部看完,收获还是很多的。
    觉得徐老师有当一名真的老师的潜质,课程由浅入深,逻辑清晰,比喻形象,很多问题也剖析的非常到位。
    不过这个专栏这个算是打一个基础,建立了支点,每个单独的课程,都可以扩展开来,进一步深入研究,所以我准备2刷,花更多时间和精力来扩展一下,另外说一下,课程中的扩展学习资料很好,大都是一手的论文或教材张杰,内容质量肯定没得说
    it行业的大厦建立在硬件基础上,计算机组成原理,还是有必要花心思学习的,不然学习建立在上层的操作系统,应用程序,不能真正理解某些设计的基础。
    总而言之,感谢徐老师的这个专栏,也感谢极客时间提供的平台,希望徐老师后续有机会再分享一些别的技术内容
    2019-11-27
  • 曾经瘦过
    囫囵吞枣,硬着头皮看完了第一遍。对大体的知识点都有了一些了解,了解了这些知识。这不是第一个买的专栏,但是第一个从头到尾完整看完的专栏,虽然掌握的很差,总算是看完了。准备2刷 3刷 巩固知识,好好研究下案例,能够学以致用
    2019-11-01
  • 韩俊臣
    本专栏不是我第一个买的,但是是第一个完成的,感谢作者的心血,祝作者本人和极客时间都越来越好!
    2019-10-29
  • 拓山
    finally, 跟随徐老师完成了整片课程。说说我的心得:
    1、高屋建瓴的将计算机组成原理知识和工程实践经验结合起来,让人阅读的酣畅淋漓。我个人的一些工程技术点是隔离的,不成体系的,虽然也想串起来,但苦于没有合适入口,进展不大,学习了徐老师的课程,对我个人帮助极大。这里很感谢徐老师指引了一条道路
    2、体系化的读完了《编码》一文,读完此书,实在是让我扼腕叹息为啥大学时不知道这本书,也建议后面的同学好好读读《编码》,它对计算机体系结构的精细化描述可为大道至简,大赞!

    再说说课程的一些感受:
    1、本课程最精彩的部分当属前35讲,个人收获最大(由于我在工作上经常接触存储、I/O系统,因此对这部分课程感受不是很强烈)
    2、徐老师的每一个章节简明扼要的阐述了知识点,但细节部分和扩充章节还是需要大家多多学习,多阅读经典书籍和课程。
    3、CS专业课程的同学在学习徐老师课程时,还是要结合教程,看不懂的章节和知识点要多多翻阅资料,不要想着省事。
    2019-10-25
  • 随心而至
    感谢徐老师的辛勤付出,下面说下自己的几点感受
    1.徐老师的课程可谓是深入浅出,高屋建瓴。
    从理论上的运算器,控制器,存储器,输入设备,输出设备,到物理上的CPU,GPU,TPU, HDD,SSD, 输入输出设备;再将CPU,GPU,TPU, HDD,SSD, 输入输出设备的面纱揭开,让我们一睹其芳容。整体上的脉络清晰明了,由点及面。

    2.徐老师的课程每一节都很精彩。
    有趣。处理器模块中CPU, CISC和RISC,GPU,FPGA和ASIC,TPU,虚拟机,读的时候就像在看计算机的发展史,妙趣横生。
    有料。每一节都会解决一两个关键知识点,不多也不少,多了不容易说清楚,少了料就不够了。对于没讲完的点,或分成几讲,娓娓道来;或提供链接,自行参考。

    3.对于个人发展,基础扎实,核心知识牢靠,才可以走的更远。
    很喜欢这句话,Software comes and goes, Hardware is forever。
    出去面试,面试官总是喜欢自上而下地问,我想这是为了更加清晰地判断我们所处的能力层级,但我们学习更加适合自下而上地学。
    举个不恰当地比方,hardware像个基石,像是地基,而构建在其上software更像是一座座摩天大楼。
    以前,我总喜欢从这栋楼,跑到那栋楼去欣赏高处的风景,但没有在意自己脚下的土地。
    坐享其成总是容易的,可能出于畏惧,出于无知,出于懒惰,大学里对于CS里这些基础课程不上心,反而喜欢去熟悉一个个编程语言的拼写,现在看来真是蠢极了。

    既然知识就在那里,早学晚学都要学,为何不现在去学,既可以收获精神上的满足,也可以获的物质上的奖励,何乐而不为,这里不是终点,这里只是开始。

    再次谢谢徐老师。
    2019-10-25
  • prader
    感谢老师。
      完成比完美重要。
    2019-10-19
  • elephant
    追完,打卡。谢谢老师
    2019-10-17
  • 柳柳木
    受益很多,感谢徐老师的受教。
    2019-10-15
  • 天天
    感谢🙏
    2019-10-15
收起评论
52
7
返回
顶部