编程必备基础知识|计算机组成原理篇(03):计算机的体系与结构
计算机组成原理(03):计算机的体系与结构
计算机基础方面的知识,对于一些非科班出身的同学来讲,一直是他们心中的痛,而对于科班出身的同学,很多同学在工作之后,也意识到自身所学知识的不足与欠缺,想回头补补基础知识。关于计算机基础的课程很多,内容繁杂,但无论是相关书籍还是大学课程,都有点脱离工作。特别地,计算机基础知识体系庞杂,想要从零学习或者复习都耗时耗力。
有鉴于此,本系列文章将带你更快的补足编程必备基础知识,涵盖计算机领域三大基础知识:计算机组成原理、操作系统、计算机网络,文章选取了作为程序员最应该掌握的那部分知识,取其精华,弃之于程序员不重要的那部分内容。
目的是:
- 帮助大家形成计算机知识的结构体系
- 帮助大家理解计算机底层原理
- 帮助大家在工作实践中借鉴其中的优秀设计
本篇是计算机组成原理之计算机的体系与结构。
欢迎关注、转发、收藏、评论
冯诺依曼体系
冯诺依曼体系,用一句话来概括就是:将程序指令和数据一起存储的计算机设计概念结构。
在前面学习计算机的发展历史的时候,我们知道,早期的计算机只能运行固定用途的程序,怎么理解?举个例子:有个计算机它只能运行数学运算的程序,那么它就不能运行文字处理的软件,也不能拿来玩游戏,如果要让它能够进行别的功能,就需要改变计算机的程序,而在当时,所谓的重写程序并不是指现在的重新编译一个程序那么简单,而是必须更改电路或者说更改结构,甚至重新设计这个机器。
这样就很坑爹了啊。如果说计算机只能用来打游戏,不能用来写代码,或者说只能用来写代码,不能用来玩游戏,那么我们就不能先玩一会游戏再写一会代码了,这样子是非常不合理的。于是冯诺依曼就想着将程序存储起来,然后在设计底层硬件的时候,不再是设计专有的电路,而是设计一个通用电路,当我们需要运行某种程序的时候,我们先把这段程序翻译成电路能够理解的语言,然后让通用电路去执行相关的逻辑。
这就是冯诺依曼体系的核心概念——存储程序指令,设计通用电路。
了解了冯诺依曼体系是怎样诞生的,如果能够理解冯诺依曼体系给计算机领域带来的巨大改变,我们就能明白冯诺依曼体系为什么这么重要了。由冯诺依曼体系所延伸的存储型计算机的概念,改变了之前糟糕的一切,皆由创造一种通用的指令集结构,并将所谓的运算转化为一串程序指令的运行,使整个计算机更有弹性。借助将指令当成一种特殊类型的计算数据,一台存储型的计算机可以轻易地改变其程序,并且在程序的控制下,改变运行的内容,改变的时候不需要重新设计电路,不需要重新改变计算机的结构,这就是冯诺依曼体系所带来的巨大贡献。
由冯诺依曼体系指导完成的计算机包含五大组件:
- 存储器:用来存放程序和数据
- 控制器:用来控制程序的流转和数据的输入运行,以及处理运算结果
- 运算器:主要运行算数运算和逻辑运算,并将中间结果暂存到运算器中
- 输入设备:用来将人们熟悉的信息形式转换为机器能够识别的信息形式,常见的有键盘,鼠标等
- 输出设备:可以将机器运算结果转换为人们熟悉的信息形式,如打印机输出,显示器输出等
我们现代所有使用的计算机,从本质上讲,都是冯诺依曼机,包括笔记本电脑、台式电脑、普通服务器、迷你计算机等等。由冯诺依曼体系所指导完成的计算机,必须有以下的几点功能:
- 能够把需要的程序和数据送至计算机中(由输入设备完成)
- 能够长期记忆程序、数据、中间结果及最终运算结果的能力(由存储器完成)
- 能够具备算术、逻辑运算和数据传送等数据加工处理的能力(由运算器、控制器完成)
- 能够按照要求将处理结果输出给用户(由输出设备完成)
冯诺依曼体系结构示意图:
我们可以看到,存储器和CPU是分开的,这就导致一个问题:CPU和存储器速率之间的问题无法调和。因为CPU是高速运算的,处理速率极快,而存储器没有CPU快,到CPU的数据传输速度慢,这会导致CPU经常空转等待数据传输,这样子是非常浪费资源的。
既然我们都知道了冯诺依曼体系存在的性能瓶颈,那么,如何解决呢?
现代计算机的结构
现代计算机在冯诺依曼体系结构基础上进行了修改,解决了CPU和存储设备之间的性能差异问题。下面是现代计算机的结构示意图:
可以看到,跟前面不一样的是,运算器、控制器和存储器组成了现代计算机的CPU。
存储器,从广义上,可以理解为存储数据的介质,包括磁带和硬盘。但是,这里的存储器主要是指围绕CPU的高速设备,包括寄存器和内存。现代计算机的结构,可以理解为以存储器为核心的结构。
关于存储器,还有很多需要理解的知识,我们会在后续文章里详细介绍。
总结
这一节,我们需要了解冯诺依曼体系的含义和它是如何产生的,还需要了解现代计算机的结构和特点以及它解决了什么问题。