计算机原理(CPU是如何进行工作的?)
目录
程序 = 指令 +数据
CPU的基本组成原理
① 逻辑门
1.电子开关 —— 机械继电器(Mechanical Relay)
2.门电路(Gate Circuit)
②.算术逻辑单元 ALU(Arithmetic & Logic Unit)
①算术单元(Arithmetic Unit)
②逻辑单元(Logic Unit)
③ALU 符号
⑤控制单元 CU(Control Unit)
CPU 的基本工作流程
1.取码阶段
2.解码阶段
3.执行阶段
现代的计算机, 大多遵守 冯诺依曼体系结构。因此冯诺依曼体系结构的讲解是十分重要的。
在 冯诺依曼体系结构中 , · CPU 中央处理器 : 进行算术运算和逻辑判断.由 运算器 加 控制器构成·存储器 : 分为外存和内存 , 用于存储数据 ( 使用二进制方式存储 ) ·输入设备 : 用户给计算机发号施令的设备 . ·输出设备 : 计算机个用户汇报结果的设备 . 针对存储空间 硬盘 > 内存 >> CPU 针对数据访问速度 CPU >> 内存 > 硬盘
程序 = 指令 +数据
在冯诺依曼体系中 , 指令(一组预规定的动作)和数据都表现为一种特殊的数据,都需要存储在内存中,而内存是由电子元件组装而成 , 以二进制形式来存储文件。 因此: 指令需要利用编码表规定来转换为操作码(opcode),才能存储在内存中。
广义数据又分为 数据与非数的数据(例如:音乐,图片,字符串...)。
①数据在内存中的存储,有限范围内的整数表示:正码,反码,补码。 有限范围的小数表示 : IE标准。 ②在计算机中进行”非数数据”的存储,则需要把非数数据通过 各种编码表 ——> 数类型数据。 编码表: 字符串 -> 字符 Unicode 编码 图片 RGB编码 ......... 所有程序的执行,本质上都是计算 + 读取 + 存入。 读取: 内存( memory ) -> 寄存器 (register) 存入 : 寄存器 (register ) -> 内存( memory )
CPU的基本组成原理
(1) 逻辑算数运算器 : 与 、或、 非、加、减、乘、除、取余
(2) 控制器 :① 寄存器 (register):临时存储数据的存储单元(每个都只能保存一个整型数、但是不止一个)
②现代的高级CPU为了提升性能 ,一般都带有缓存(CPU内的缓存)缓存会划分等级 L1/L2/L3缓存
① 逻辑门
1.电子开关 —— 机械继电器(Mechanical Relay)
在发展过程中 , 逐渐由 机械继电器 ——> 真空管 ——> 晶体管 (具体工作原理可以通过数字电路技术来了解)。
2.门电路(Gate Circuit)
非门、 与门、或门、异或门 .. (具体原理可以通过学习数电来了解)
②.算术逻辑单元 ALU(Arithmetic & Logic Unit)
ALU 是计算机中进行算数、逻辑运算的核心部件,是cpu的核心,是计算机的数学大脑。接下来,我用上一节构建的 逻辑门来完成自己的一个 ALU ,去学习理解它的工作模式,以便作为我们进一步理解现代计算机工作原 理的基石。
算数:加法、减法、乘法、除法、取余
逻辑: 与、或、非
①算术单元(Arithmetic Unit)
算数单元,负责计算机里的所有数字操作,比如四则运算,当然它能做的远远不止这些。 大家通过图片来感受一下一个8位(bits)的加法器(adder)的实现过程。 半加器:通过一个异或门与与门来构成
全加器:通过两个半加器 和一个或门
8位数加法器:七个全加器 与一个半加器构成
②逻辑单元(Logic Unit)
逻辑单元主要用来进行逻辑操作,最基本的操作就是 与、或、非操作,但不只是一位 (bit) 数的比较。
③ALU 符号
通过图解,我们了解到通过基本的逻辑门电路,可以做出了一个 8 位 (bits) ALU。 当然现代的计算机中的 ALU 部件非常强 大,复杂度远远超过了我们的想象,32 位 甚至 64 位基本已经普及全球了。
⑤控制单元 CU(Control Unit)
CU 可以驱动 ALU 进行具体 的计算工作,
CPU 的基本工作流程
cpu 就是在不停的执行着 取码 -> 解码 - >执行的过程。
1.取码阶段
CU 根据寄存器的值 ,去内存的响应位置,把数据(指令) 读取到IR寄存器中
一般正常情况下 PC寄存器中的值自动 +1
2.解码阶段
CU 按照预先的指令集 解读指令数据(opcode + 操作数)
例如: 0010 1110
人为规定 : 0010 是 opcode
查询指令表: 知道 0010 代表的意思: 从后边地址指定内存处,将数据读取到 A寄存器
地址: 0b1110 ->14
3.执行阶段
LOAD 指令 应该由CU执行 ,所以按照规定执行指令:
从内存的14地址处,将数据读取到A寄存器中。