计算机工作的本质




按下电源键,计算机开始工作了:
在这里插入图片描述

那么,问题来了: 这计算机的背后,究竟是怎么工作的呢?

下面就从图灵机开始,尝试用简单明了的语言描述这计算机工作的本质。



1、图灵机


图灵机,是一种计算模型,它于1936年,由英国数学家 A.C.图灵 提出。

图灵机是用机器来模拟人们用纸笔进行数学运算的过程,
它主要由以下几部分组成:

无限长纸带,模拟草稿纸
读写指针头,模拟笔
控制器,模拟人脑

图灵机可以做下面三个基本的操作:

读取指针头指向的符号
修改指向方框中的符号
将纸带向左或向右移动

比如 计算 1+0=1 :

读写头在纸带上读入1;
接着右移,在纸带上读入0;
接着右移,在纸带上读入+ ;
控制器给出答案是1,
于是右移,在纸带上写入 1
这样就完成了 1+0=1 的计算过程。

在这里插入图片描述

由此可见,图灵机是对计算的一种简单抽象的模型。




2、通用图灵机


如果把图灵机比做一个厨师,然后把图灵机过程比做做菜的过程,
比如煎蛋的过程:

鸡蛋捣碎
色拉油入锅
油热则放鸡蛋
加少许盐
铲出鸡蛋

那么,图灵机就可以看成是一个只会煎蛋的厨师了。

从这个角度看便知,图灵机的描述是有限的;
而我们也知道,一个真正的厨师是不应该只会煎蛋的,他应该还会做其他菜;
只要客人点了菜,厨师脑子里就有个对应的菜谱出来,然后厨师就按照脑子里的菜谱,把那道菜做出来。

那么,图灵机能否实现这种效果呢?

假如我们用某种方式将图灵机编码为字符串。我们用 表示图灵机 T 的编码。

然后尝试构造一个特殊的图灵机,它可以接受任意一个图灵机 T 的编码 ,然后模拟 T 的运作。

这样的图灵机,其实就是通用图灵机,
通用图灵机就像一个真正的厨师一样,它不仅仅会煎蛋,还能读懂其他很多菜谱做很多菜;只要传入菜谱,就能做出对应的菜肴。

在这里插入图片描述

通用图灵机展示了这样一个过程:
控制器动作/状态 和 数据对象都可以先保存到纸带上,图灵机就按程序一步一步运行直到给出结果,结果也保存在纸带上。

同时它也揭示了这样一个简单而朴素的道理:
任意的复杂计算,都能通过一个个简单的操作完成。




3、冯・诺依曼存储程序原理


存储程序原理,就是将程序像数据一样存储到计算机内部存储器中的一种设计原理;
当程序存入存储器后,按存储器存储程序的首地址执行程序的第一条指令,然后按照该程序的规定顺序执行其他指令,直至程序结束执行。




4、计算机工作的本质


聊到这里,有没有发现 “通用图灵机+ 存储程序原理” 感觉很熟悉了 ?
一台计算机,
安装了QQ,就能运行QQ聊天;
安装了Chrome,就能运行Chrome浏览网页;
安装了音乐播放器,就能运行音乐播放器听音乐;
… …
安装载入什么样的应用程序,就能执行对应的应用程序,输出相应的结果。

即:根据 “ 冯・诺依曼存储程序原理” ,
把应用程序存放到内部存储器(纸带),
然后靠 IP 指针来读写存储器的一行行代码,
然后解释执行代码,输出结果。

【注】
IP:instruction pointer 或者叫 PC: program counter
是一种寄存器,指向当前执行指令的下一条指令,这里可以对照图灵机理解为就是那个读写指针。

在这里插入图片描述

简而言之,计算机的工作原理,就是这四个字 : 取指执行

这就是计算机工作的本质。




【参考文档】

在线图灵机模拟器请戳:turingmachinesimulator

图灵paper原文 : ON COMPUTABLE NUMBERS, WITH AN APPLICATION TO THE ENTSCHEIDUNGSPROBLEM

发布了37 篇原创文章 · 获赞 24 · 访问量 3080

猜你喜欢

转载自blog.csdn.net/weixin_44648216/article/details/103863853