1. 开篇词:为什么要学习计算机组成原理

1. 为什么要学习计算机组成原理

答:
方式一
1)是专业核心基础课,在课程体系中起着承上启下的关键作用。
在这里插入图片描述
2)移动互联时代发展的迫切需求:专业地位凸显
关键词:大数据、云计算、物联网、移动互联
举例:移动计算对信息处理终端在无线环境下的数据传输、数据处理和资源共享等应用提出了高效(资源占用少)、准确(可靠)、及时(响应执行速度快)等要求。
需求:大量 “懂软件的硬件工程师”、“懂硬件的软件工程师”、“懂安全的数据分析师”
3)我国信息产业发展的迫切需要
现状:核心产业受制于人,如:集成电路(CPU)、操作系统、数据库系统、办公软件。
自学:Wintel、“没有自主可控的电子信息产业,就没有真正意义上的信息安全。”
4)服务国家战略的迫切需要
什么是“互联网+”:信息技术与各种传统产业的深度“融合”,是产业的智能化。

方式二
大多数计算机专业的学生都从事了应用软件的开发工作。而应用软件开发的变化速度实在是太快了!十年前还在流行Java,这两年(2021年)流行了Go;深度学习框架前两年还在流行TensorFlow,现在却流行PyTorch,不过都可以使用1991诞生的Python进行编程。
随着自己学习能力不断跟近,工作经验的丰富,逐渐发现这些程序语言、框架就像是武功中的外功,是拳法招式,而包括计算机组成原理的在内的核心必修课,这些“底层知识”,才是内功,是内力。
弄懂计算机的底层原理,构建完整的计算机知识体系,意味着会有更长的时间可以收获学习知识的“利息”,长线投资可以带来“复利”,使得今后成长的道路越走越快。
《计算机组成原理》是入门和底层层面的第一课,是硬件和软件之间的“桥梁”。它既隔离了软件和硬件,也提供了让软件无需关心硬件,就能直接操作硬件的接口。对硬件有了原理性的理解后,就可以信赖硬件的可靠性,安安心心用高级语言来写程序。无论是Web开发、APP应用、还是应用程序开发都可以应付自如。
《计算机组成原理》是一个引导,向上有编译原理、操作系统、计算机网络,向下有数字电路。无论是计算机硬件原理,还是软件架构,在学习了计算机组成原理后对计算机方方面面都会有一个全局的了解。
在这里插入图片描述例如:
1)高级语言是如何对应着 CPU 能够处理的一条条指令的? 这个问题可以引导你学习《编译原理》;
2)开发的应用程序是如何加载运行的?这个问题可以让你深入理解《操作系统》。

2. 如何学好计算机组成原理

答:
1)构造观+系统观+工程观
构造观:掌握设计的方法
a. 设计功能部件:编码/解码器、运算器、控制器、存储器
b. 设计系统:简单的计算机系统
c. 仿真软件,例如开源的Logisim、商业软件Proteus
系统观:软硬件协同
a. 理解计算机系统的构成及各部分间的互相影响
b. 理解不同系统 或 不同计算机结构对程序的影响(包括功能、性能、可移植性等)。举例:数据表示、校验技术、运算器结构、存储器组织、寻址方式等对程序运行结果正确性、效率等方面的影响。
工程观:系统实现
a. 工程制约条件
b. 降低成本
c. 节能
d. 提高可靠性
e. 提高性能
2)多实践、多交流、多思考

从很多学习《计算机组成原理》的学生经历来看,觉得这门课难、不会用,对此我也深有感触,可以归纳为:
1)广。计算机组成原理中的概念非常多,例如有逻辑门、CPU时钟、触发器、锁存器、寄存器、二进制、十六进制。而且每个概念的信息量也非常大。
2)。计算机组成原理中的很多概念,阐述开来就是计算机学科的另外一门核心课程。例如计算机的指令是怎么从C、Java 这样的高级语言,变成计算机可以执行的机器码的?如果展开并深入讲解这个问题,就会变成《编译原理》这样一门核心课程。
3)学不能致用。计算机组成原理本身的属性,很多人在学习时常常沉溺于概念和理论中,无法和自己日常的开发工作联系起来,以此来解决工作中遇到的问题。一个学习规律是:学东西是要拿来用的,不用就会忘记。学习没有成就感,就很难有动力坚持下去。
综上所述,希望通过学习本人的《计算机组成原理》课程,成为“内家高手”,制定的目标是:
1)将知识点与日常工作、生活以及计算机行业的发展联系起来;
2)让你看懂学会记住计算机组成原理的核心内容;
3)从“为什么”的角度出发,理解知识点,而不是死记硬背“是什么”。
准备这样做:
1)通过应用开发和架构设计的实际案例,用程序和案例去消化理解知识点。例如为什么 Disruptor 这个高性能队列框架里要定义很多没有用的占位变量呢?答:为了确保我们唯一关心的参数,能够始终保留在 CPU 的高速缓存里面,而高速缓存比我们的内存要快百倍以上。写一些程序来验证知识点,通过把对应的知识点,变成一个个性能对比的示例代码程序记录下来,把知识点融汇贯通。
2)通过日常生活去理解计算机的组成部件。计算机部件都不是凭空发明的,而都是来自现实生活的抽象。例如:计算机各部件是如何工作的 --> 在应用程序开发中会遇到什么问题 --> 这些问题产生的根源是什么,从而实现知识 --> 应用 --> 知识的闭环学习和实践过程。硬件和软件架构的开发设计思路是相似的。例如:CPU的几部组成门电路是与、或、非、异或,而面向对象程序开发中的Function是由基本的Command组成的,CPU中的冒险和分支预测就像接力赛跑中的交接棒。
3)穿插计算机硬件的发展史的成功与失败(历史渊源),更易记住“为什么”、知识点。例如:Intel Pentium 4受超长流水线带来的散热和功耗问题,造成失败;而移动时代使ARM开始崛起。无论是计算机芯片,还是云计算数据中心,都需要围绕功耗和散热这个问题展开。
最后的最后,请记住这条学习规律:“学习总不会是一件轻松的事”。

3. 有没有计算机组成原理的学习地图

在这里插入图片描述计算机组成原理,英文叫Computer Organization。Organization是“组织机构”的意思。
上图将计算机组成原理的知识点分为四部分,按顺序分别是计算机的基本组成(第1章,4.1,6.1,第8章,9.1,9.2,9.8)、计算机的指令和运算(第2、3、5章)、处理器设计(第6、7章)、存储器和I/O系统(4.2-4.6,9.3-9.7)。
1)计算机的基本组成
五大基本组成部件:运算器、控制器、存储器、输入设备、输出设备
计算机的两大核心指标:性能和功耗
2)计算机的指令和运算
指令部分:
a. C、Java、Python程序是如何运行的?程序通过编译器和汇编器生成一条条机器指令。
b. 操作系统是如何链接、装载、执行程序的?指令的控制是由控制器来完成的。
运算部分:
a. 由二进制到编码:数据在计算机中的表示
b. 用数字电路实现加、减、乘、除
c. 运算部件:ALU(Arithmetic Logic Unit),算术逻辑部件,运算器
d. 浮点数(Floating Point)运算:对编码、存储和计算才能深入理解;人工智能时代的重要数据表示形式。
3)处理器设计
自学部分:锁存器、触发器、寄存器
CPU时钟:为什么需要CPU时钟(CPU Clock)?寄存器和内存是怎么组成的?
数据通路:计算机数据通路是怎么构造的?从性能和功耗的角度,理解 面向流水线设计的CPU、数据和控制冒险、分支预测
通信控制:异常和中断发生的机制、并行执行(SIMD)
4)存储器和I/O系统
自上而下的存储系统的层次结构:CPU高速缓存(Cache)、内存、SSD硬盘和机械硬盘的工作原理、性能差异,实际应用中的问题。
CPU和存储器的通信:什么是IO_WAIT?如何通过DMA来提升程序性能?
数据完整性:RAID、Erasure Code、ECC、HDFS。

问题:

  1. 你对于计算机组成原理的认识是怎样的?
  2. 在之前工作中,哪些地方用到了计算机组成原理相关的知识呢?

4. 参考资料

1)UC Berkeley
a. CS61c: Machine Structure
b. CS150: Components and Design Techniques for Digital System
c. CS152: Computer Architecture and Engineering
2)北京大学
a. 计算机组成
3)教材
a. 计算机组成原理,谭志虎,人民邮电出版社,9787115558015,2021年3月第一版
4)补充阅读
a. 计算机是怎么跑起来的,(日)矢泽久雄,人民邮电出版社,9787115392275
b. 程序是怎样跑起来的,(日)矢泽久雄,人民邮电出版社,9787115385130

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶老师讲大数据

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值