深入浅出计算机组成原理
徐文浩
bothub 创始人
70432 人已学习
新⼈⾸单¥68
登录后,你可以任选4讲全文学习
课程目录
已完结/共 62 讲
深入浅出计算机组成原理
15
15
1.0x
00:00/00:00
登录|注册

02 | 给你一张知识地图,计算机组成原理应该这么学

数据的完整性和访问性能
DMA
IO_WAIT
CPU和存储器之间的通信
机械硬盘
SSD硬盘
内存
CPU高速缓存
存储器的层次结构
SIMD
指令的并行执行
异常和中断
分支预测
数据和控制冒险
面向流水线设计的CPU
数据通路
内存
寄存器
CPU时钟
浮点数
ALU
二进制和编码
控制器
操作系统
汇编器
编译器
功耗
性能
输出设备
输入设备
存储器
控制器
运算器
有节奏地坚持
学习不是死记硬背
课外阅读
深入学习书籍
入门书籍
通过和计算机硬件发展的历史做对照
写一些示例程序来验证知识点
学会提问自己来串联知识点
存储器和I/O设备
处理器设计
计算机的指令和计算
计算机的基本组成
课后思考
总结延伸
给松鼠症患者的学习资料
学习计算机组成原理
计算机组成原理
计算机组成原理知识地图

该思维导图由 AI 生成,仅供参考

了解了现代计算机的基本硬件组成和背后最基本的冯·诺依曼体系结构,我们就可以正式进入计算机组成原理的学习了。在学习一个一个零散的知识点之前,我整理了一份学习地图,好让你对将要学习的内容有一个总纲层面的了解。
建议保存后查看大图
从这张图可以看出来,整个计算机组成原理,就是围绕着计算机是如何组织运作展开的

计算机组成原理知识地图

计算机组成原理的英文叫 Computer Organization。这里的 Organization 是“组织机构”的意思。计算机由很多个不同的部件放在一起,变成了一个“组织机构”。这个组织机构最终能够进行各种计算、控制、读取输入,进行输出,达成各种强大的功能。
在这张图里面,我们把整个计算机组成原理的知识点拆分成了四大部分,分别是计算机的基本组成、计算机的指令和计算、处理器设计,以及存储器和 I/O 设备。
首先,我们来看计算机的基本组成
这一部分,你需要学习计算机是由哪些硬件组成的。这些硬件,又是怎么对应到经典的冯·诺依曼体系结构中的,也就是运算器、控制器、存储器、输入设备和输出设备这五大基本组件。除此之外,你还需要了解计算机的两个核心指标,性能和功耗。性能和功耗也是我们在应用和设计五大基本组件中需要重点考虑的因素。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文总结了计算机组成原理的重要性以及学习方法。文章提供了一张知识地图,帮助读者了解整个计算机组成原理的学习大纲,并总结了学习计算机组成原理的三种方法。这些方法包括提问自己来串联知识点、编写示例程序验证知识点以及通过计算机硬件发展的历史做对照。文章还推荐了一些入门书籍和深入学习书籍,以及课外阅读材料,帮助读者更好地掌握知识点并将其应用于实际工作中。最后,文章鼓励读者有节奏地坚持学习,并与他人交流,共同成长。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入浅出计算机组成原理》
新⼈⾸单¥68
立即购买
登录 后留言

全部留言(179)

  • 最新
  • 精选
  • 二星球
    置顶
    徐老师好,请教一个困扰自己很久的问题:线程切换是如何触发的,就是这个触发时间点是怎么产生的(也即触发线程调度的时间点),是通过中断么?如果是中断,那么这个中断又是怎么发生的?

    作者回复: 杨怀同学你好,这个问题还真是一两句话讲不清楚。线程切换更多是 操作系统 层面实现的问题。我推荐你可以去看 刘超 老师在极客时间的专栏《趣谈Linux操作系统》。 我这里简单讲一下,线程切换不是由中断触发的,而是由操作系统控制在用户态触发进行切换的。切换并没有确定的时间。 而我们在组成原理里面说的中断,一般指的是硬件的中断,是硬件设备会向我们的CPU发出信号,这个是直接通过硬件电路层面来触发。就好像一个电路引脚的信号从高电平变成了低电平,导致CPU收到的电信号就发生了变化,通常是改变了特定寄存器里面的值(中断寄存器),再触发一系列的处理逻辑。

    2019-04-26
    2
    48
  • Sola
    置顶
    把地图背下来,然后去补充阅读推荐书目,自己复述整理,自测理解度。再找朋友,看能不能给他解释清楚计算机组成的一些概念。

    作者回复: 👍“教别人”是一种非常高效的学习方式,自己有没有弄清楚,在教别人的过程中,会体会得明明白白的。

    2019-04-26
    7
    80
  • 须臾即
    置顶
    按老师说的方法,学到的知识用代码的形式写下来,同时附上配套readme.md,做些说明,作为一个git库,形成一个带源码的个人笔记。 只是这需要老师带带路,看过一些资料,但是怎么通过代码来利用这些知识还是有一层隔膜。

    作者回复: 须臾即 同学你好,在后面的具体内容里面,我会给出一些代码示例,大家也可以想一想,怎么通过写点代码,用软件模拟的方式去理解计算机内部的硬件实现机制。 比如全家器和半加器,我们完全可以通过只使用bit数组的与、或、非、异或来实现一遍,更方便我们理解全加器和半加器的硬件电路实现。

    2019-04-26
    2
    52
  • 悲秋病酒
    南京大学袁春风老师的《计算机系统基础》一书也很不错,主干内容和csapp一脉相承,在中国大学mooc上也有公开课,不喜欢翻译版的同学可以学习这个本土教程,和老师讲的内容也非常贴切

    作者回复: 👍,感谢分享给大家。

    2019-05-03
    48
  • KR®
    老师好细心 默默照顾到我们这些非计算机科班出身的同学!! 暖暖的!

    作者回复: 希望这个专栏能对大家有所帮助!

    2019-04-26
    2
    45
  • 编码者
    之前花在应用层面的时间太长,天天搬砖,学习各种应用框架,用不同的方式在搬砖。时间越久感觉自己的技术能力越废,因为都只是浮于表面的。很多东西还是需要深入理解,对于程序员来说,我的前进目标是:从键盘敲hello world,到最终显示在显示器上,这中间的每一个过程,都要心中有数。

    作者回复: 👍加油

    2019-04-26
    2
    43
  • Only now
    编码多年,这些知识本科是掌握很扎实的,甚至初参加工作还能说的头头是道,但是现在几乎都模糊了,不知道老师是怎么一直保护知识清晰的?

    作者回复: 其实并没有什么特别好的方法。一方面,是遇到了更多的疑难问题,更复杂的系统,在实践中需要去用更底层更本质的理解计算机运作的方式去处理问题,自然要回头把这些基础知识捡起来;另一方面,是不是抽点时间回头看看一些“大部头”的教科书也会很有自我满足感。

    2019-04-26
    26
  • n0thing
    工作多年,作为一名运维人员,经常与底层打交道,越来越觉得这些基础知识的重要性,os内核,组成原理,网络等,起初学习只是为了快速定位故障原因,后来发现潜移默化的帮助太大了,在学习新开源软件,了解设计原理,优化参数等方面帮助非常大。以前学习的比较零散,30岁了重新梳理知识点,可以带着工作问题更有针对性的学习,希望坚持下去

    作者回复: 👍加油,坚持到底就是胜利

    2019-04-26
    19
  • 古夜
    我是一个码农,可好奇底层的代码运行原理了

    作者回复: 👍好奇心是一个优秀程序员必然会有的特质

    2019-04-26
    19
  • 喜欢吃鱼
    已经研一了,越到后面觉得基础越重要。深刻的理解到了计算机科学的道和术,基础知识是道,而那些高大上的技术是术,术是不断更新变化的,而道层面的东西是基本不变的、,道与术的顺序不可颠倒。接下来好好学习这个专栏。

    作者回复: 👍加油

    2019-04-26
    2
    18
收起评论
显示
设置
留言
99+
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部