前言
当前计算机技术获得了迅猛发展,广泛的应用于人们的日常生活中,给人类的生活带来了巨大的便利,随着社会发展,越来越多的人对计算机产生了浓厚的兴趣,下面我就带大家来揭开计算机的神秘面纱,学习计算机是如何工作的!
计算机的发展史
关于计算机的发展史,不得不说,如果让我来写,我可能写三天三夜也写不完,历史是人类宝贵的财富,而将计算机和历史联系在一起又能产生怎样的火花呢?下面这篇文章就会告诉我们:
来自 涛歌依旧 的:《古今计算机发展简史》
古今计算机发展简史
冯诺依曼体系
现代计算机之父----冯诺依曼
约翰·冯·诺依曼(John von Neumann,1903年12月28日-1957年2月8日),美籍匈牙利数学家、计算机科学家、物理学家,是20世纪最重要的数学家之一。冯·诺依曼是罗兰大学数学博士,是现代计算机、博弈论、核武器和生化武器等领域内的科学全才之一,被后人称为“现代计算机之父”、“博弈论之父”。
那什么是冯诺依曼体系呢?
冯诺依曼结构图如下:
- CPU 中央处理器: 进行算术运算和逻辑判断.
- 存储器: 分为外存和内存, 用于存储数据(使用二进制方式存储).
- 输入设备: 向计算机输入数据和信息的设备.
- 输出设备: 计算机硬件系统的终端设备.
什么是CPU(中央处理器)
CPU是计算机的心脏,负责执行提供给它们的指令,它的主要任务是执行算术运算和逻辑运算,并将指令协调在一起。
算数逻辑单元ALU
ALU 是计算机中进行算数、逻辑运算的核心部件,是计算机的数学大脑。ALU的基本功能包括加,减,乘,除四则运算,与,或,非,异或等逻辑运算,以及移位,求补等操作。
算数单元
算数单元:算数单元就是负责计算机里的所有数字操作,比如四则运算等。
接下来我们通过实现一个8位数加法器来理解算数单元。
半加器:
全加器:
上面介绍了半加器和全加器,8位数加法器就是由半加器和全加器组合而成的,如下图所示:
逻辑单元
逻辑单元:逻辑单元主要用来进行逻辑操作,最基本的操作就是与、或、非、异或操作,它还能做简单的数值测试,比如利用许多个“或门”来检测一个8位数是否为“0”。
判断一个8位数不为0:
判断一个8位数为0:
ALU符号
一个8位的ALU可能会需要数百个逻辑门,所以科学家们用一个特殊的符号来代表它,它的形状就像一个大写的V。
寄存器和内存
AND-OR锁存器:
之所以叫“锁存”,是因为它锁定了一个值,放入数据的动作叫“写入”,拿出数据的动作叫“读取”。
但是它有两条输入线,为了方便使用,我们希望它只有一条输入线,所以就出现了“门锁”这个概念,对于门锁来说,当允许写入线被置为0时,数据输入线不论是1还是0,数据输出不变,而当允许写入线被置为1时,数据输入1,输出就为1,数据输入0,输出就为0。
寄存器就是由一组锁存器构成的,如下图所示为一个8位寄存器:
内存(RAM)的构建基本原理和寄存器是一致的:
控制单元CU
控制单元:控制单元CU是CPU部件之一,有时也安装于CPU外部,其基本功能是从内存取指令、分析指令和执行指令。
控制单元结构:
从上图可以看出控制单元CU分为输入信号和输出信号。
输入信号:指令寄存器、标志、时钟、来自系统总线的控制信号(中断请求)。
输出信号:CUP内部的控制信号、到系统总线的控制信号(读写,中断响应)。
指令
指令:所谓指令,即指导 CPU 进行工作的命令,主要有操作码 + 被操作数组成。其中操作码用来表示要做什么动作,被操作数是本条指令要操作的数据,可能是内存地址,也可能是寄存器编号等。
如下图所示:
CPU的工作流程
CUP的操作流程如下:
- 取码阶段:CU根据PC寄存器的值,去内存的响应位置,把数据(指令)读取到 IR 寄存器中,正常情况下,PC寄存器中的值自动+1;
- 解码阶段:CU按照预先设定的指令集解读指令数据(opcode+操作数),例如上述的:0010 1110,人为规定:0010是opcode,查询指令表,知道0010代表的意思是,从后边地址指定内存处,将数据读取到A寄存器,1110代表地址为14的内存处;
- 执行阶段:LOAD指令应该由CU执行,所以按照规定执行指令:从内存的14地址处,将数据读取到A寄存器中。
关于PC寄存器:
- 由于硬件中PC在自动+1,所以我们的代码变成的指令才能顺序的的往下去执行
- 代码中的一条语句,很可能是需要多条指令才能完成的
- PC寄存器中的值在这个指令周期中很关键,可以控制执行哪里的指令
- 通过CPU中预先规定的指令,可以修改PC中的值(带条件修改),进而影响执行流
CPU的中断模式
在正常模式下,CPU可以顺序执行,可以分支执行,但总归只能按照既定的顺序执行,但现实中,很多时候需要暂时中断CPU的当前执行流,先让CPU去做其他工作,再回头来继续原来的执行流。
CPU中提供了一种机制让CPU停下:
- 保存当前的PC的值到内存的某个位置
- 修改PC的值,让执行其他执行流
- 其他执行流执行结束之后,通过刚才保存的PC值恢复到PC寄存器
- 继续原来的执行流
中断的应用:
- IO设备的处理
- 操作系统中用来作进程调度
编程语言
程序:所谓程序,就是一组指令以及这组指令要处理的数据。狭义上来说,程序对我们来说,通常表现为一组文件。
程序 = 指令 + 指令要处理的数据
总结
以上就是今天要讲的内容,本文仅仅简单介绍了CPU,实际上计算机中的结构是非常复杂的,要花费更多的时间才能学习透彻,如果觉得本文对你有帮助的话,就留下你的👍吧!