前言
我们首先看看百度对计算机这一名词是如何解释的。
计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,
又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。
计算机从一开始的稀有到如今的普及。现如今,中国计算机用户的数量不断攀升,应用水平不断提高,特别是互联网、通信、多媒体等领域的应用取得了不错的成绩。
身边不止电脑是计算机,智能冰箱、洗衣机、小天才电话手表……都有着计算机的存在。
计算机的分类
- 终端设备(台式机、笔记本、手机……) 是我们日常用户使用的。
- 服务器 日常普通用户很少见到,但是时刻都在与服务器打交道。
- 嵌入式设备 主体功能不是用来“计算”,而是针对某些特定的场景使用,属于量身定做的“专用计算机”。
称之为计算机的理由:这些设备都遵守着“冯诺依曼”体系结构。
冯诺依曼体系结构
现代的计算机,大都遵守着冯诺依曼体系结构。
冯诺依曼核心设计思想主要体现在如下三个方面:
1.确定了计算机的五个基本组成部分:运算器、控制器、存储器、输入设备、输出设备。
CPU(运算器+控制器):主要及逆行各种算术运算以及各种逻辑判断。
存储器:分为内存和外存,用于存储数据。
输入设备:例如键盘、鼠标,通过输入设备对计算机发号施令。
输出设备:计算机对用户汇报结果的设备。
不同部件的速度以及内存大小对比
针对存储空间
硬盘 >>内存 >> CPU
针对数据访问速度
CPU >> 内存 >> 硬盘
CPU的基本工作流程
CPU主要负责进行计算,我们运行的每一个程序本质上都是通过CPU进行执行的。
为了描述CPU干活的效率,在任务管理器中有对CPU速度进行计算,当数字越大,则CPU运行速率越快。
由于工艺等方面的影响,单核心的CPU核心发展已经到达瓶颈,于是厂家引入了多核心CPU,以数量优势帮助系统完成任务。当每个CPU核心速度相同,数量增加的情况下,系统能够把要完成的任务拆分成多个部分,交给不同的核心完成。
这就构成了如今的“多线程”编程。
以我个人的电脑为例,现在我的CPU速度为3.78GHz,物理核心为16核,逻辑核心为32线程。
CPU和指令
指令:在CPU被设计的时候,给程序猿提供了一些“编程接口”,不同的CPU提供的指令是不同的。
指令是要先加载到内存中,然后才能被CPU读取并执行的。
在冯诺依曼体系结构中规定:一个程序,指令和依赖的数据,都是要存储在存储器中,当CPU需要执行的时候,会从存储器中调用相应的数据到内存中使用的。
因此,CPU执行程序,大致需要经历三个阶段。
1.取指令:把内存中的指令数据,读取到CPU的寄存器中。(寄存器速度比内存更快,但是由于成本问题,所占有的空间会小得多)
2.读指令:对寄存器中的指令进行解读,理解指令的意思。
3.执行指令。
指令的执行过程(举例)
在下列的指令集中,opcode的意思是操作码。每个CPU有自己的指令并用二进制表示;RAM地址和寄存器ID里面存放着指令要操作的数据。即数据存放在内存中的“地址”。如地址0,操作数00101110,首先CPU会到内存中的0号地址中寻找数据编号为00101110中所存储的数据,并将这个数据存储在寄存器A中。
为了记录每个操作要到内存中的哪个地址取指令,在CPU中设置了一个专门的程序计数器——PC。
当LOAD_A指令执行完之后,PC+1,顺序取指。只有当指令存在“跳转”指令的时候,PC才会跳转到对应的指令编号。
接下来的第二步,LOAD_B指令,和LOAD_A指令所需要做的事情相同,简单来说就是解析操作码0001知道接下来的操作内容,并到1号地址中获取操作数为1111的数据并放入到寄存器B中。
第三步操作:PC+1 来到2号地址,首先数据前四位操作码(opcode)为1000,即ADD指令,接着就如同ADD指令功能说明的一样,后四位0100是两个寄存器的ID(01和00)将结果存入到第二个寄存器(00)之后这条指令结束。
在第四步操作中,执行的是STORE_A的指令,在执行完这条指令后,数据存入到了13号地址中,因此13号地址数据变更为00010001. PC+1 往4号地址继续进行操作,如此往复……