二、程序如何执行
这篇文章我们通过图灵机和冯诺依曼模型来看看程序如何执行。
一、图灵机
图灵机的出现具体定义了计算机的边界、组成以及程序如何执行。图灵机的构造比较简单,它有一条无限长的纸带作为内存,纸带上有一个一个的格子,每个格子中可以写入字符,这些字符就相当于内存中的数据。图灵机通过读写头来获取和修改自带上的字符,读写头所在的模块中包括存储单元、控制单元和运算单元。那么图灵机是如何执行程序的呢?
我们以计算 10+20 的值为例来说一下。首先 10、20、+ 分别被我们卸载了纸带的格子中,然后读写头停止在 10 对应的单元格上,读取到 10 后将它放入存储设备中。接着,读写头向右移动一个格子,读取 20,同样放入存储设备中,读写头再次向右移动一个格子,读取到+号,这个+号传给控制单元,控制单元发现它是一个预设的控制符,因此不将它放入存储单元中。控制单元向运算单元发送通知,告知执行加运算。这时运算单元从存储单元读取到 10 和 20,并进行加运算。运算完成后将结果存入存储单元,并将结果发给控制单元,控制单元收到结果后控制读写向右移动一格,将结果写在纸带上。
二、冯诺依曼模型
图灵机虽然定义了计算机的组成和工作原理,单位给出具体的实现。因此冯诺依曼在图灵机的基础上提出了电子元件构造计算机,用二进制来计算与存储,并将计算机分解为 5 个部分:
1. 输入设备
2. 输出设备
3. 内存
4. CPU
5. 总线
这就是冯诺依曼模型。在这个模型中,程序和数据存储在内存中,它是线性排列的存储去,数据和程序以二级制的形式存储,单位是 bit。在内存中最小的存储单位是字节,一个字节对应一个内存地址。模型中的 CPU 主要用于计算和控制,它每次可以计算多个字节。如果 CPU 一次计算 4 个字节,那么它是 32 位的,如果一次计算 8 个字节,那么它是 64 位的。在 CPU 中有一个控制单元负责控制 CPU 工作,以及负责运算的逻辑运算单元。因为 CPU 远离内存,因此需要寄存器存储要计算的数据,它位于 CPU 中。寄存器包含通用寄存器、特殊寄存器和指令寄存器,通常我们只能通过程序操作通用寄存器。在 CPU 和内存之间存在一个特殊的设备,叫做总线。它用来控制 CPU 和内存以及其他设备之间的通信。一般来说总线分三种:
1. 地址总线,用来指定 CPU 要操作的内存地址
2. 数据总线,用来读写内存数据
3. 控制总线,用来发送和接收关键信号
前面这些设备的最终数据来源都是输入设备输入的,最终的归宿都是输出设备。
三、总结
本届主要计算了图灵机的结构和执行原理,以及冯诺依曼模型计算机的组成和 CPU 的原理。
版权声明: 本文为 InfoQ 作者【喵叔】的原创文章。
原文链接:【http://xie.infoq.cn/article/1339d182f58962055f11eaae0】。未经作者许可,禁止转载。
评论