首页 > 其他分享 >计算机底层知识的“第一课”

计算机底层知识的“第一课”

时间:2024-02-25 10:11:20浏览次数:20  
标签:学习 计算机 硬件 第一课 原理 CPU 组成 底层

为什么你需要学习计算机组成原理?

计算机底层知识的“第一课”

其实在看完各个大学的计算机课程设计之后。,你会发现,它们都有差不多十来门核心课程。其中,“计算机组成原理”是入门和底层层面的第一课。

虽然计算机系的学生毕业后大多从事软件开发工作,但计算机是由硬件设备如 CPU、内存和显示器组成的。计算机组成原理的重要性在于它作为连接软件和硬件的桥梁。它不仅隔离了软件和硬件,还提供了一个让软件能够直接操作硬件而无需关心硬件细节的接口。

因此,通过对计算机组成原理的理解,人们可以信赖硬件的可靠性,从而放心地使用高级语言编写程序。无论是编写操作系统、编译器等底层代码,还是开发 Web 应用、手机 App 等应用层代码,都能够获得内心的信心。

此外,计算机组成原理还作为学习其他核心课程的导引。通过学习组成原理,可以进一步学习与数字电路相关的课程,也可以拓展至编译原理、操作系统等核心课程。若想深入理解并设计自己的计算机,了解体系结构是必不可少的,而计算机组成原理则是体系结构的入门课程。

img

所以说,无论你想要学习计算机的哪一门核心课程,之前你都应该先学习一下“计算机组成原理”,这样无论是对计算机的硬件原理,还是软件架构,你对计算机方方面面的知识都会有一个全局的了解。

学习这门“第一课”的过程,会为你在整个软件开发领域中打开一扇扇窗和门,让你看到更加广阔的天地。比如说,明白了高级语言是如何对应着 CPU 能够处理的一条条指令,能为你打开编译原理这扇门;搞清楚程序是如何加载运行的,能够让你对操作系统有更深入的理解。

理论和实践相结合

说了这么多计算机组成原理的重要性,但到底该怎么学呢?接下来跟你分享我的心得。

我自己对计算机硬件的发展历史一直很感兴趣,所以,我读了市面上很多组成原理相关的资料。

互联网时代,我们从来不缺少资料。无论是 Coursera 上北京大学的《计算机组成》开放课程,还是图灵奖作者写的《计算机组成与设计:硬件 / 软件接口》,都珠玉在前,是非常优秀的学习资料。不过“买书如山倒,读书如抽丝”。从业这么多年,周围想要好好学一学组成原理的工程师不少,但是真的坚持下来学完、学好的却不多。大部分买来的书,都是前面 100 页已经发黄了,后面 500 页从来没有打开过;更有不少非科班出身的程序员,直接说“这些书根本看不懂”。

对这些问题,我都深有感触。从自己学习和工作的经验看,我找到了三个主要原因。

第一,广。组成原理中的概念非常多,每个概念的信息量也非常大。比如想要理解 CPU 中的算术逻辑单元(也就是 ALU)是怎么实现加法的,需要牵涉到如何把整数表示成二进制,还需要了解这些表示背后的电路、逻辑门、CPU 时钟、触发器等知识。

第二,深。组成原理中的很多概念,阐述开来就是计算机学科的另外一门核心课程。比如,计算机的指令是怎么从你写的 C、Java 这样的高级语言,变成计算机可以执行的机器码的?如果我们展开并深入讲解这个问题,就会变成《编译原理》这样一门核心课程。

第三,学不能致用。学东西是要拿来用的,但因为这门课本身的属性,很多人在学习时,常常沉溺于概念和理论中,无法和自己日常的开发工作联系起来,以此来解决工作中遇到的问题,所以,学习往往没有成就感,就很难有动力坚持下去。

考虑到这些,在构思之初,我就给自己定了一个交付目标:我要把这些知识点和日常工作、生活以及整个计算机行业的发展史联系起来,教你真正看懂、学会、记住组成原理的核心内容,教你更多地从“为什么”这个角度,去理解这些知识点,而不是只是去记忆“是什么”。

第一,我把组成原理里面的知识点,和我在应用开发和架构设计中遇到的实际案例,放到一起进行印证,通过代码和案例,让你消化理解。

比如,为什么 Disruptor 这个高性能队列框架里,要定义很多没有用的占位变量呢?其实这是为了确保我们唯一关心的参数,能够始终保留在 CPU 的高速缓存里面,而高速缓存比我们的内存要快百倍以上。

第二,我会尽可能地多举一些我们日常生活里面的例子,让你理解计算机的各个组件是怎么运作的。在真实的开发中,我们会遇到什么问题,这些问题产生的根源是什么。让你从知识到应用,最终又回到知识,让学习和实践之间形成一道闭环。

计算机组成中很多组件的设计,都不是凭空发明出来,它们中的很多都来自现实生活中的想法和比喻。而底层很多硬件设计和开发的思路,其实也和你进行软件架构的开发设计和思路是一样的。

比如说,在硬件上,我们是通过最基本的与、或、非、异或门这些最基础的门电路组合形成了强大的 CPU。而在面向对象和设计模式里,我们也常常是通过定义基本的 Command,然后组合来完成更复杂的功能;再比如说,CPU 里面的冒险和分支预测的策略,就好像在接力赛跑里面后面几棒的选手早点起跑,如果交接棒没有问题,自然占了便宜,但是如果没能交接上,就会吃个大亏。

第三,在知识点和应用之外,我会多讲一些计算机硬件发展史上的成功和失败,让你明白很多设计的历史渊源,让你更容易记住“为什么”,更容易记住这些知识点。

比如说,奔腾 4 的失败,就是受限于超长流水线带来的散热和功耗问题,而移动时代 ARM 的崛起,则是因为 Intel 的芯片功耗太大,不足以在小小的手机里放下足够支撑 1 天的电池。计算机芯片的兴盛和衰亡,往往都是因为我们的计算机遇到了“功耗墙”这个散热和能耗上的挑战。而现代的云计算数据中心的设计到选址,也是围绕功耗和散热的。理解了这些成功和失败背后的原因,你自然记住了这些背后的知识点。

最后,在这三种帮助你理解“为什么”的方法之上,我会把整个的计算机组成原理通过指令、计算、CPU、存储系统和 I/O 串起来。通过一个程序的执行过程进行逐层分解,让你能对整个系统有一个全貌的了解。

我希望这个专栏,不仅能够让你学好计算机组成原理的知识,更能够成为引领你进入更多底层知识的大门,让你有动力、有方法、更深入地去进一步学习体系结构、操作系统、编译原理这样的课程,成为真正的“内家高手”。

“人生如逆旅,我亦是行人”。学习总不会是一件太轻松的事情,希望在这个专栏里,你能和我多交流,坚持练完这一手内功。

标签:学习,计算机,硬件,第一课,原理,CPU,组成,底层
From: https://www.cnblogs.com/zcticu/p/18032092

相关文章

  • 读人工不智能:计算机如何误解世界笔记02_Hello,world
    1. Hello,world1.1. “Hello,world”是布赖恩·克尼汉和丹尼斯·里奇于1978年出版的经典著作《C程序设计语言》中的第一个编程项目1.2. 贝尔实验室可以说是现代计算机科学界中的智库,地位好比巧克力界的好时巧克力1.3. 计算机科学界的大量创新都起源于贝尔实验室1.3.1. 激......
  • 让计算机“思考”
      1、用计算机进行的模拟实验称为计算机模拟2、伪随机数(具有周期性)指的是通过公式产生的3、随机数的种子指的是生成尾随基数的公式中使用的参数4、计算机没有思考功能,但有记忆功能程序就如同是由计算机执行的各种指令,罗列起来的文章,而控制就是指CPU和各种设备之间配合进......
  • 《程序是怎样跑起来的》——第12章 让计算机“思考”
    一、作为工具”的程序和为了“思考”的程序1、程序就如同是由计算机执行的各种指令罗列起来的文章。计算机内部的CPU,通过对该文章的内容进行解析和运行,来控制连接到计算机的各种外围设备。具体来说,控制就是指CPU和各种设备之间配合进行数据的输入输出处理。2、程序的使用目的......
  • 让计算机“思考”
    本章会主要学习六小节的内容,主要内容是用程序来表示人类的思考方式和习惯,活用记忆功能以达到更接近人类的判断。通过编写程序来实现人类的思考方式和习惯,这些程序被设计成可以理解和处理各种信息和数据,并作出类似与人类的判断。编写程序来表示人类的思考方式和习惯,设计很多方面的......
  • 计算机进行小数运算时出错的原因
    通过此章的学习我了解的计算机出错的几个重大原因,以及什么是浮点数,让我对计算机有了更加深刻的认知和理解,我也了解到如何在实际程序中确认和如何避免计算机出错计算机运算出错的原因计算机之所以会出现运算错误,是因为“有一些十进制数的小数无法转换成二进制数”。代码清单3-1......
  • 计算机网络概述
    计算机网络概念计算机网络主要是由一些可编程的、通用的硬件互联而成,而这些硬件并非用来实现某一特定目的(例如传输数据或者视频信号)。这些可编程的硬件能够用来传送多种不同类型的数据,并能支持广泛的和日益增长的应用。计算机网络由若干节点和连接这些节点的链路组成。网络......
  • 读人工不智能:计算机如何误解世界笔记01_技术沙文主义
    1. 人工智能的学术范畴1.1. 知识表示与知识推理1.2. 逻辑学1.3. 机器学习1.4. 自然语言处理1.5. 搜索1.6. 规划1.7. 力学1.8. 伦理学2. 广义人工智能2.1. GOFAI2.1.1. GoodOld-FashionedArtificialIntelligence,老式人工智能2.2. 好莱坞版本的人工智......
  • 计算机网络体系结构1.3标准化及相关组织
    计算机网络标准化及相关组织标准化工作:标准分类:法定标准\事实标准法定标准:有权威机构指定的正式的\合法的标准.(可以是国内的法定标准,亦可以是国际的法定标准)-->>OSI参考模型事实标准:某些公司的产品在竞争中占据了主流,时间长了,这些产品中的协议和技术就成了标......
  • 计算机网络(项目驱动)(微课版)
       主 编:刘春红张同光   出版单位:清华大学出版社   ISBN:   ISBN:   出版时间:2024.7   CIP:   定价:¥ 一本高校计算机专业的网络课程可以选用作为实验教材。一本院校的非计算机专业,二本、高职高专等高校的网络课程都可以直接选用为网络教材使用......
  • 《程序是怎样跑起来的》第十二章:让计算机“思考”
    读完《程序是怎样跑起来的》的第十二章我对于计算机如何实现“思考”有了更深的理解。这一章主要探讨了计算机如何进行算法分析和设计,以及机器学习等高级功能让我重新认识了计曾机当后的复性和智慧。在之前的章节中,我了解到了计算机的基本构成和运行原理,包括CPU、内存、输入输出设......