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