体系梳理01:计算机组成原理之迷思

(1)面对基础知识,我们该如何看待

基础知识并不是实际的硬件,但它却是可靠的模型。作为软件工程师,我们学习基础知识,并非为了制造硬件,而是把控我们所写的代码。因为代码是依靠计算机才得以运行的,只要知识足够值得我们信赖,就可以相信我们的代码在这样一个模型中的实际运行情况,也就意味着我们可以进行预测。这样就意味着在掌握了这样一个模型后,我们可以构筑符合我们期望的代码,或是在代码实际运行不是我们所期望的那样时,可以做到有的放矢。

(2)计算机的抽象概念

计算机的抽象概念如同一个集合,将所有符合定义的设备网罗其中。

冯·诺依曼体系结构确立了我们现在每天使用的计算机硬件的基础架构,学习计算机组成原理,可以说是学习和拆解冯·诺依曼体系结构这样一个基础模型,以及其各个部件在实际落地中的技术设计。

冯·诺依曼体系有五大部件:处理器单元(也叫做运算器单元)、控制器单元、存储器单元、输入设备和输出设备。处理器单元和控制器单元共同组成了现代计算机中的CPU。

其中:

1.处理器单元包含两大主要部件——算术逻辑单元(Arithmetic Logic Unit,ALU)和处理器寄存器(Processor Register)。前者用来做各种算术和逻辑运算,后者用来临时存储运算过程中产生的数据。二者协力完成各种数据的处理或者计算工作。

2.控制器单元包含两大主要部件——指令寄存器(Instruction Register)和程序计数器(Program Counter)。前者用来临时存储程序指令的内存地址,后者则用来变更程序指令的内存指令。二者协力控制程序的流程,通常来说就是不同条件下的分支和跳转。

3.存储器单元一般来说可以分为内存和更大容量的外部存储,用来存储数据(Data)和指令(Instruction)。程序读取的数据、计算得到的结果,都要放在内存里。内存越大,能加载的东西自然也就越多。

4.输入输出设备一般多种多样,拥有各自对应的输入和输出机制。现在无论是使用什么样的计算机,其实都是和输入输出设备在打交道。

任何一台计算机的任何一个部件都可以归到运算器、控制器、存储器、输入设备和输出设备中,而所有的现代计算机也都是基于冯·诺依曼体系这样一个基础架构来设计开发的。

所有的计算机程序,都可以抽象为从输入设备读取输入信息,通过运算器和控制器来执行存储在存储器里的程序,最终把结果输出到输出设备里。而我们所撰写的所有程序——无论是低级语言的还是高级语言的,也都是基于这样一个抽象框架来进行运作的。

整个计算机组成原理,都是围绕着计算机是如何组织运作展开的。

(3)计算机的实体组成

首先一台现代计算机需要有三大件,CPU,内存和主板。

存放在内存里的程序和数据,需要被CPU读取,CPU计算完成后,还需要把数据写回到内存中。但是,CPU和内存之间是不能直接交换信息的,也就是说,在硬件层面上,CPU和内存无法拼接成一个更大的实体,它们需要一个中介,也就是主板来进行通信。

主板是一个有着各种各样、数量繁多的插槽的配件,不仅CPU和内存要插在主板上才能互相通信,其余各种各样的设备也都需要插在主板上才能和CPU和内存进行通信。可以说,主板提供了一个标准的平台,让不同类型、不同厂家的硬件,只要在符合了插槽标准的情况下,都可以和其他设备进行通信。

主板的芯片组(Chipset)和总线(Bus)解决了CPU和内存之间如何通信的问题。芯片组控制了数据传输的流转,也就是数据从哪里到哪里的问题。总线则是实际数据传输的高速公路。因此,总线速度决定了数据能够传输得多快。

在有了这三大配件后,还需要电源来提供电力来让计算机运行,同样的,电源在主板上也会有一个插槽。然后,我们还需要配上一个硬盘,让各种数据能够持久地保存下去。

CPU、内存、硬盘、主板和电源这五种部件构成了一个初具雏形的计算机,但这样的计算机是不能够为我们人类所使用的,因为还缺少各类输入(Input)/输出(Output)设备。一般来说,有了鼠标和键盘这样的输入设备,我们才能输入文本,进行各种操作,有了显示器这样的输出设备,我们才能看到计算机输出的各种图像、文字。

还有一种特殊的设备,叫做显卡(Graphics Card),使用图形界面操作系统的计算机,显卡都是必不可少的。显卡之所以特殊,是因为显卡里面有着除CPU之外的另一种“处理器”,即GPU(Graphics Processing Unit,图形处理器),它也可以做各种运算。

同样的,各类输入和输出设备以及显卡也都是插在主板上的。

到此,一台可以供我们正常使用的计算机就算正式出来了。但为了让计算机的寿命更长,我们还要给这台计算机装上一个机箱来阻隔灰尘等杂物,再配上风扇来给高速运作的设备进行散热。

如此,一台基本的计算机就算完成了。

而对于手机、服务器这类的设备,较于个人计算机来说,会在主板的设计和硬件的集成度上做出不同的调整。但都是遵循了基本的冯·诺依曼体系的,如果详细区分,可以辨认出,这里面的设备承担了冯·诺依曼体系中一个或者多个部件的功能,一个设备既可以是A部件,也可以是B部件,只要其符合定义即可。

(4)计算机实体发展线索

现代计算机都是冯·诺依曼计算机,是存储程序计算机。也就是它们都遵循“可编程”和“存储程序”两个设计思路。

计算机是由各种门电路组合而成的,然后通过组装出一个固定的电路板,来完成一个特定的计算程序,对于“不可编程”的计算机而言,程序在计算机硬件层面是写死了的,做不了任何固定计算逻辑之外的事情,一旦需要修改功能,就要重新组装电路。

不能存储程序的计算机,整个计算机就是一个巨大的插线板,通过板子上不同的插头或者接口的位置插入线路,来实现不同的功能。这样的计算机虽然是可编程的,但编写好的程序不能存储下来供下一次加载使用,不得不每次要用到和当前不同的程序的时候,重新插板子,重新编程,而当我们想要使用上次的程序时,又要重新插线。

不可编程限制了计算机用途,不可存储限制了程序规模,同样限制了计算机的用途,并且让技术人员将大量时间浪费在无意义的重复工作上。

这两点的提出都旨在增加使用计算机的效率。在计算机设计的世界里,所谓的效率,主要体现在两个方面:性能和功耗。但其实都是性能这样一个点。计算机五大部件的设计和发展都遵循提升性能和降低功耗的方向前进。

(5)掌握知识点的方法

1.通过提问来串联知识点和提升代码把握度

每学问一个知识点,都要从两个方面进行提问:

  • 我写的程序,是怎样从输入的代码,变成运行的程序,并得到最终结果的?
  • 整个过程中,底层硬件层面到底经历了哪些步骤,哪些地方的性能是可以优化的?

2.通过示例代码来验证自己掌握的模型的可信度

计算机组成中大量原理和设计,都对应着“性能”这个词,因此把对应的知识点变成一个个性能对比明确的示例代码,可以很好的帮助我们把握住知识点和代码的优化关键。

3.通过对照计算机硬件发展的历史,来观察现代计算机用到的各种技术的由来和取舍。

  • 20
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值