从算盘到微处理器的底层逻辑算盘到微处理器的底层逻辑

从算盘到微处理器的底层逻辑算盘到微处理器的底层逻辑
文章图片
如果你研究现代微处理器 , 你可能会注意到它与老式机械计算设备(如机械计算器)之间的相似之处 。 更具体地说 , 微处理器中的算术逻辑单元(ALU)与老式机械计算器有许多相似之处 。 ALU可以被认为是微处理器的计算器 。 它读取存储在寄存器(register)中的数字 , 执行加减或移位操作 , 并将结果存储回另一个寄存器 。
从算盘到微处理器的底层逻辑算盘到微处理器的底层逻辑
文章图片
微处理器内部的算术逻辑单元执行算术运算 。 寄存器名为r1,r2和r3 。
这些基本操作与计算器所执行的操作完全相同 。 它有三个寄存器来保存计算过程中使用的数字:
输入寄存器:一个5位的寄存器 , 你可以拉动杆来定义输入数字 。
累加寄存器:一个13位的寄存器 , 用于保存多次计算的结果 。
计数寄存器:一个8位数的寄存器 , 用来记录你做了多少加法 。
从算盘到微处理器的底层逻辑算盘到微处理器的底层逻辑
文章图片
奥德纳计算器 , 发明于1873年的俄罗斯
我不会在这里详细解释微处理器ALU或老式机械计算器 。 我们将穿越更远的时间回到算盘 。 这种不同形式的手动计算机器早在罗马时代之前就存在了 。
为什么要了解算盘和它的操作?因为理解算盘可以让你看到一些更深层次的东西 , 将几千年前处理数字的方法与现代微处理器的方法联系起来 。 现代微处理器是如此复杂 , 当你试图理解它们时 , 你很容易“误入歧途” 。
从算盘到微处理器的底层逻辑算盘到微处理器的底层逻辑
文章图片
算盘就像微处理器的ALU一样 。 现代计算机基于二进制数系统 , 其中每个数字称为位 。 下图演示的算盘可以处理最多四个十进制数字 。 算盘上的每一列代表数字中的一个数字 。
从算盘到微处理器的底层逻辑算盘到微处理器的底层逻辑
文章图片
典型算盘的图解 。 每一列代表十进制中的一个数字 。
从右边开始的第一列是个位 , 第二列是十位 , 第三列是百位 , 以此类推 。 这意味着 , 如果我想在算盘上表示数字4023 , 那么我就按上图所示排列珠子 。 有了这种安排 , 加减法就很容易执行了 。 如果我想加12 , 我只要在个位上多拉两颗珠子 , 在十位上多拉一颗珠子 。
从算盘到微处理器的底层逻辑算盘到微处理器的底层逻辑】加减法非常简单 , 所以让我们看看如何在算盘上做乘法 。 乘法运算的方式非常类似于老式机械计算器和早期微处理器的乘法运算方式 , 它们只有ALU , 没有专用的乘法硬件 。 用算盘乘法
我们将做一个简单的乘法:32×4 , 结果应该是128 。 为了执行此操作 , 我们为每一列指定特定的含义 。 前两列被转换为计数器寄存器 , 而第三列被定义为输入寄存器 。 最后 , 我们让最后两列作为累加寄存器 , 它将保存最终结果 。
从算盘到微处理器的底层逻辑算盘到微处理器的底层逻辑
文章图片
乘法可以被认为是进行多次加法运算 。 在本例中 , 我们将对4相加32次 。 乘以个位列
我们先给累加器加4次 。 单列中的四颗珠子向下移动 。 为了记录我们已经添加了四颗珠子的数量 , 我们从计数器上移动一颗珠子 。 实际上 , 我们从32开始倒数到0 。
我们在累加器中再加4 , 计数器减少到30 。 此时 , 累加器的值为8 。 我们还要再加30个4个 。
从算盘到微处理器的底层逻辑算盘到微处理器的底层逻辑