冯诺依曼体系结构理解
当前计算机主要是基于冯诺依曼体系结构设计的,下面就简单分析一下冯诺依曼体系结构的计算机是如何工作的,首先下面的图就是冯诺依曼体系结构图。
主要由五大部件组成
1.存储器用来存放数据和程序
2.运算器主要运行算数运算和逻辑运算,并将中间结果暂存到运算器中
3.控制器主要用来控制和指挥程序和数据的输入运行,以及处理运算结果
4.输入设备用来将人们熟悉的信息形式转换为机器能够识别的信息形式,常见的有键盘,鼠标等
5.输出设备可以将机器运算结果转换为人们熟悉的信息形式,如打印机输出,显示器输出等
冯诺依曼体系结构的指令和数据均采用二进制码表示;指令和数据以同等地位存放于存储器中,均可按地址寻访;指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数所在存储器中的位置;指令在存储器中按顺序存放,通常指令是按顺序执行的,特定条件下,可以根据运算结果或者设定的条件改变执行顺序;机器以运算器为中心,输入输出设备和存储器的数据传送通过运算器。
然而现在的计算机基本以存储器作为中心
但是由于运算器和控制器在逻辑关系和电路结构上联系十分紧密,通常将它们合起来统称为中央处理器,简称CPU,把输入输出设备简称为I/O设备,这样现代计算机可以认为由三大部分组成:CPU与主存储器可以称为主机,I/O设备称为外部设备
ALU叫做算数逻辑运算单元,用来完成算术逻辑运算。
CU(Control Unit)叫做控制单元,用来解释存储器中的指令,并发出各种操作命令来执行指令。
ALU和CU是CPU的核心部件。I/O设备也受CU控制,用来完成相应的输入,输出操作。
特点
与两个存储器相对应的是系统的4条总线:程序的数据总线与地址总线,数据的数据总线与地址总线。这种分离的程序总线和数据总线可允许在一个机器周期内同时获得指令字(来自程序存储器)和操作数(来自数据存储器),从而提高了执行速度,提高了数据的吞吐率。又由于程序和数据存储器在两个分开的物理空间中,因此取指和执行能完全重叠。
处理器有两个明显的特点:使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存,以便实现并行处理;具有一条独立的地址总线和一条独立的数据总线,利用公用地址总线访问两个存储模块(程序存储模块和数据存储模块),公用数据总线则被用来完成程序存储模块或数据存储模块与CPU之间的数据传输。两条总线由程序存储器和数据存储器分时共用。
冯·诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同,如英特尔公司的8086中央处理器的程序指令和数据都是16位宽。
特点
冯.诺依曼结构处理器具有以下几个特点:
1:必须有一个存储器;2:必须有一个控制器;3:必须有一个运算器,用于完成算术运算和逻辑运算;4:必须有输入设备和输出设备,用于进行人机通信。:另外,程序和数据统一存储并在程序控制下自动工作
功能
根据冯·诺依曼体系结构构成的计算机,必须具有如下功能:
把需要的程序和数据送至计算机中。
必须具有长期记忆程序、数据、中间结果及最终运算结果的能力。
能够完成各种算术、逻辑运算和数据传送等数据加工处理的能力。
能够按照要求将处理结果输出给用户。
为了完成上述的功能,计算机必须具备五大基本组成部件,
包括:
输入数据和程序的输入设备;
记忆程序和数据的存储器;
完成数据加工处理的运算器;
控制程序执行的控制器;
输出处理结果的输出设备。
瓶颈
将CPU与内存分开并非十全十美,反而会导致所谓的冯·诺伊曼瓶颈(von Neumann bottleneck):在CPU与内存之间的流量(资料传输率)与内存的容量相比起来相当小,在现代电脑中,流量与CPU的工作效率相比之下非常小,在某些情况下(当CPU需要在巨大的资料上执行一些简单指令时),资料流量就成了整体效率非常严重的限制。CPU将会在资料输入或输出内存时闲置。由于CPU速度以及内存容量的成长速率远大于双方之间的流量,因此瓶颈问题越来越严重。而冯·诺伊曼瓶颈是约翰·巴科斯在1977年ACM图灵奖得奖致词时第一次出现,根据巴科斯所言:
“……确实有一个变更储存装置的方法,比借由冯·诺伊曼瓶颈流通大量资料更为先进。瓶颈这词不仅是对于问题本身资料流量的叙述,更重要地,也是个使我们的思考方法局限在‘一次一字符’模式的智能瓶颈。它使我们怯于思考更广泛的概念。因此编程成为一种计划与详述通过冯·诺伊曼瓶颈的字符资料流,且大部分的问题不在于资料的特征,而是如何找出资料。”
在CPU与内存间的快取内存抒解了冯·诺伊曼瓶颈的效能问题。另外,分支预测(branch predictor)算法的建立也帮助缓和了此问题。巴科斯在1977年论述的“智能瓶颈”已改变甚多。且巴科斯对于此问题的解决方案并没有造成明显影响。现代的函数式编程以及面向对象编程已较少执行如早期Fortran一般会“将大量数值从内存搬入搬出的操作”,但平心而论,这些操作的确占用电脑大部分的执行时间。
中央处理器的体系架构可以分为:冯·诺依曼结构和哈佛结构
设计思路
使用冯·诺伊曼结构的中央处理器和微控制器有很多。除了上面提到的英特尔公司的8086,英特尔公司的其他中央处理器、ARM的ARM7、MIPS公司的MIPS处理器也采用了冯·诺依曼结构。
1945年,冯·诺依曼首先提出了“存储程序”的概念和二进制原理,后来,人们把利用这种概念和原理设计的电子计算机系统统称为“冯·诺依曼型结构”计算机。冯·诺依曼结构的处理器使用同一个存储器,经由同一个总线传输。
在DSP算法中,最大量的工作之一是与存储器交换信息,这其中包括作为输入信号的采样数据、滤波器系数和程序指令。例如,如果将保存在存储器中的2个数相乘,就需要从存储器中取3个二进制数,即2个要乘的数和1个描述如何去做的程序指令。DSP内部一般采用的是哈佛结构,它在片内至少有4套总线:程序的数据总线,程序的地址总线,数据的数据总线和数据的地址总线。这种分离的程序总线和数据总线,可允许同时获取指令字(来自程序存储器)和操作数(来自数据存储器),而互不干扰。这意味着在一个机器周期内可以同时准备好指令和操作数。有的DSP芯片内部还包含有其他总线,如DMA总线等,可实现单周期内完成更多的工作。这种多总线结构就好像在DSP内部架起了四通八达的高速公路,保障运算单元及时地取到需要的数据,提高运算速度。因此,对DSP来说,内部总线是个资源,总线越多,可以完成的功能就越复杂。超级哈佛结构(superHarvard architecture,缩写为SHARC),它在哈佛结构上增加了指令cache(缓存)和专用的I/O控制器。
冯·诺依曼理论的要点是:
数字计算机的数制采用二进制;计算机应该按照程序顺序执行。人们把冯诺依曼的这个理论称为冯诺依曼体系结构。从ENIAC到当前最先进的计算机都采用的是冯诺依曼体系结构。所以冯诺依曼是当之无愧的数字计算机之父。
根据冯诺依曼体系结构构成的计算机,必须具有如下功能:
把需要的程序和数据送至计算机中;必须具有长期记忆程序、数据、中间结果及最终运算结果的能力;能够完成各种算术、逻辑运算和数据传送等数据加工处理的能力;能够根据需要控制程序走向,并能根据指令控制机器的各部件协调操作;能够按照要求将处理结果输出给用户。
是什么结构要看总线结构的。51单片机虽然数据指令存储区是分开的,但总线是分时复用的,所以顶多算改进型的哈佛结构。ARM9虽然是哈佛结构,但是之前的版本也还是冯·诺依曼结构。早期的X86能迅速占有市场,一条很重要的原因,正是靠了冯·诺依曼这种实现简单,成本低的总线结构。处理器虽然外部总线上看是诺依曼结构的,但是由于内部CACHE的存在,因此实际上内部来看已经算是改进型哈佛结构的了。至于优缺点,哈佛结构就是复杂,对外围设备的连接与处理要求高,十分不适合外围存储器的扩展。所以早期通用CPU难以采用这种结构。而单片机,由于内部集成了所需的存储器,所以采用哈佛结构也未尝不可。处理器,依托CACHE的存在,已经很好的将二者统一起来了。
对于多任务操作系统来说,管理程序内存是一件非常重要的事情,而且仅仅是保护模式下的页面映射等等机制就已经足够复杂了,如果还要求将程序和数据分开管理,复杂度就太高了。这种时候冯诺依曼体系结构就有非常大的优势了。纯的(或者接近纯的)哈佛结构只用于非常简单的硬件系统,这种系统当中通常程序完全运行在ROM中,数据几乎完全存储于RAM中,这样的结构足够简单。而要支持多任务的处理器通常引入Cache层,在Cache层实现一个哈佛体系架构,这样可以兼顾性能和灵活性。
转自知乎 链接:https://www.zhihu.com/question/22406681/answer/109474052
实际上,绝大多数现代计算机使用的是所谓的“Modified Harvard Architecture”,指令和数据共享同一个 address space,但缓存是分开的。可以说是两种架构的一种折中吧。
在现实世界中很少有非常纯粹的概念,特别是在实际的应用里。教科书里的大多是理想化的模型,便于掌握某个概念的重点和本质,但实际中很难达到这种理想化的状态。
图灵机的理解
图灵的生平
艾伦·麦席森·图灵(Alan Mathison Turing,1912年6月23日-1954年6月7日),英国数学家、逻辑学家,被称为计算机科学理论之父,人工智能之父。
1931年,图灵考入剑桥大学国王学院,由于成绩优异而获得数学奖学金。
1936年5月,年仅24岁的图灵发表一篇题为《论数字计算在决断难题中的应用》的论文,论文中提出一种计算装置,后被称为“图灵机”,图灵机不是具体的计算机,而是一种计算概念、计算理论。
1938年在普林斯顿获博士学位,其论文题目为“以序数为基础的逻辑系统”,在数理逻辑研究中产生了深远的影响;同年图灵回到英国,在剑桥大学国王学院任研究员。
第二次世界大战期间,1939年图灵到英国外交部通信处从事军事工作,主要是破译敌方密码的工作。由于破译工作的需要,他参与了世界上最早的电子计算机的研制工作。他的工作取得了极好的成就,破译了德国人Enigma密码,于1945年获政府的最高奖——大英帝国荣誉勋章。
图灵破解密码
1945年,图灵结束了在外交部的工作,他试图恢复战前在理论计算机科学方面的研究,具体研制出新的计算机来。
1950年他发表论文《计算机器与智能》( Computing Machinery and Intelligence),为后来的人工智能科学提供了开创性的构思。提出著名的图灵测试。
1950年,1950年10月,图灵发表论文《机器能思考吗》。这一划时代的作品,使图灵赢得了“人工智能之父”的桂冠。此时,人工智能也进入了实践研制阶段。随着这几年AI技术的不断成熟,人们越来越认识到图灵思想的深刻性:它们至今仍然是人工智能的主要思想之一。
1954年6月7日,年仅41岁的图灵被发现死于家中的床上,床头还放着一个被咬了一口的苹果。这就是现在大名鼎鼎的苹果电脑公司logo的来源。
时代背景
从图灵的生平中,我们知道,他出生在20世纪初,1912年。
在世界国家格局上,这个时候刚刚爆发第一次世界大战(1913~1921),紧接着1939年至1945年第二次世界大战,大家知道,这两次世界大战倒逼了很多科技的发展,二战期间恰好是图灵青年时代。
在科技文明发展上,由于逻辑的数学化,促使了数理逻辑学科的诞生和发展。但同时这个时期数学上发生了第三次数学危机,具体介绍在下方。图灵在剑桥读大学期间,修读了“数学基础”课程,授课人是纽曼,纽曼整个课程包含对哥德尔不完备性定理的证明和尚未解决的判定性问题。
这些科技事件的背后,其实是人们在认知上,对可计算性理论的研究,图灵正是这个问题终结者。
随便提一下,爱因斯坦1905年提出狭义相对论,1927年年仅15岁的图灵为了帮助母亲理解相对论,还写过论文的摘要。
可计算性理论
在20世纪以前,人们普遍认为,所有的问题类都是有算法的,人们的计算研究就是找出算法来。1900年,当时著名的大数学家希尔伯特在世纪之交的数学家大会上给国际数学界提出了著名的23个数学问题。
其中第十问题是这样的:
存在不存在一种有限的、机械的步骤能够判断“丢番图方程”是否存在解?
“丢番图方程”指:有一个或者几个变量的整系数方程,它们的求解仅仅在整数范围内进行。
上面这个问题简单点解释是:随便给一个不确定的方程,是否通过有限的步骤运算,判断这个方程是否存在整数解。
这个问题在1970年,苏联一个数学家证明了其实很多数学问题,是没有答案,甚至没有答案的问题比有答案的问题还要多。
这里就提出来了有限的、机械的证明步骤的问题,其实就是算法。但在当时,人们还不知道“算法”是什么。实际上,当时数学领域中已经有很多问题都是跟“算法”密切相关的,因而,科学的 “算法” 定义呼之欲出。之后到了30年代的时候,终于有两个人分别提出了精确定义算法的方法,一个人是图灵,一个人是丘奇。而其中图灵提出来的图灵机模型直观形象。
图灵思考这个问题的方式和常人不一样,在写前面提到的论文《论可计算数及其在判定性问题上的应用》的时候,图灵在思考三个问题
世界上是否所有的数学问题都有明确的答案?
如果有明确的答案,是否可以通过有限步骤的计算得到答案?
对于那些有可能在有限步骤计算出来的学习问题,是否有一种假想的机械,让它不断运行,最后机器停下来的时候,那个数学答案就计算出来了?
图灵这样的天才考虑问题的认知是高屋建瓴的。
图灵首先考虑的是是否所有数学问题都用解,如果这个问题不解决,辛辛苦苦解题,最后发现无解,一切的努力都是浪费时间和精力。
对于存在答案的数学问题,只有部分是可以在有限步骤内完成,这样把计算机的边界确定下来了。
确定了边界之后,就要设计一种通用、有效、等价的机器,保证可以按照这个方法做事,最后得到答案。而图灵机就是图灵设计出来的这样的一个机器,严格来讲是一种数学模型、计算理论模型。
从图灵机提出到现在已经过去了80多年,今天所有的计算机,包括量子计算机都没有超出图灵机的理论范畴。
第三次数学危机与停机问题
第三次数学危机产生于十九世纪末和二十世纪初,当时正是数学空前兴旺发达的时期。首先是逻辑的数学化,促使了数理逻辑这门学科诞生。
早在19世纪末的时候,康托尔为集合论做了奠基性的研究。人们发现,运用集合这个概念可以概括所有的数学,也就是说集合是一切数学的基础。然而就当这座大厦即将完工的时候,一件可怕的事情发生了,罗素提出来的罗素悖论粉碎了数学家的梦想。
关于罗素悖论的一个通俗化版本是:
“村子里有一个理发师,他给自己定了一条规矩:‘不给那些所有给自己理发的人理发’。
现在就要问,这个理发师该不该给自己理发?”。
如果你尝试回答这个问题就会发现奇怪的事情:这个问题本身似乎是不可能的!
为什么要第三次数学危机呢?
因为有个很重要的概念:停机问题,停机问题是逻辑数学中可计算性理论中很重要的问题,也是第三次数学危机的解决方案。
停机问题通俗地说,停机问题就是判断任意一个程序是否能在有限的时间之内结束运行的问题。该问题等价于如下的判定问题:是否存在一个程序P,对于任意输入的程序w,能够判断w会在有限时间内结束或者死循环。
有人猜测图灵机模型是图灵在思考停机问题而顺带设计出来的,是很有道理的。
人工智能
图灵在剑桥大学国王学院期间,研究过一本叫做《量子力学的数学基础》的新书,这本书由年轻的匈牙利数学家约翰·冯·诺依曼所著。图灵意识到计算可以用确定性的机械运动来进行表示。其实我们现在的电子计算机虽然不是我们传统意义上的机械,但是CPU内部的电子运动等价于机械运动。
同时图灵也意识到人的思想、意识来自于量子力学中的测不准原理,这不光是微观世界,同时也是这个宇宙本身的规律。所以图灵意识到计算是确定性的,可判定的,而意识是不定的,不可计算的。
在AI人工智能有巨大发展的今天,很多人担心计算机是否会和人一样有意识,其实图灵在80多年前已经考虑过这个问题了。
前面提到,图灵在1950年写过一篇论文《计算机器与智能》,在这篇论文中,图灵测试一词被提出来:
指测试者与被测试者(一个人和一台机器)隔开的情况下,通过一些装置(如键盘)向被测试者随意提问。进行多次测试后,如果有超过30%的测试者不能确定出被测试者是人还是机器,那么这台机器就通过了测试,并被认为具有人类智能
这个测试有多难?目前我们所有的人工智能都没有完成这个测试。最近2018年3月份的谷歌I/O大会上演示的AI产品,据说“部分通过图灵测试”。这个部分到底有多少也未可知。
总结与启示
从人类科技发展的历史上来看,19世纪末到20世纪中期,是第二次工业革命和第三工业革命过渡的时期。第二次工业革命主要电和磁、内燃机的发明和使用,发展到这个时候科学家对世界的认知越来越多,越来越清晰,物理学和数学等自然科学发展迅速。这个时候的数学家发现很多现象可以用数学模型来表示,从物体的运动到星球的运动、从热能到动能的转换、从电到磁的转换等等。那问题来了是否所有的现象都可以用数学模型来表达呢?真是这个问题,让人们对数学很多根本性问题进行思考和研究。
中国有句古话说:乱世出英雄。在图灵的时代,在科学历史上出了很多的科学英雄,包括爱因斯坦、冯诺依曼、图灵、哥德尔等等,一方面是时代背景使然,一方面真是他们的天赋和努力让以信息化为代表的第三次工业革命的进程大大加快了。
程序=指令+数据
我们知道图灵机首次提出在图灵的一篇论文《论数字计算在决断难题中的应用》中提出,原论文题目为《On Computable Numbers, with an Application to the Entscheidungsproblem》,英文好的同学可以从https://www.cs.virginia.edu/~robins/Turing_Paper_1936.pdf 这个链接中查看原版的论文内容。
组成
网上有一张经典的图片来表达图灵机的构成,图如下:
图灵机的组成.png
这张图片什么意思?这么一个简单的机器/装置怎么会所有电子计算机的理论模型?
相信大家看到这张图后都有这样的疑问,它运算过程看作下列两种简单的动作:
在纸上写上或擦除某个符号;
把注意力从纸的一个位置移动到另一个位置;
逻辑结构上图灵机有四个部分组成
- 一个无限长的存储带,带子有一个个连续的存储格子组成,每个格子可以存储一个数字或符号
- 一个读写头,读写头可以在存储带上左右移动,并可以读、修改存储格上的数字或符号
- 内部状态存储器,该存储器可以记录图灵机的当前状态,并且有一种特殊状态为停机状态
- 控制程序指令,指令可以根据当前状态以及当前读写头所指的格子上的符号来确定读写头下一步的动作(左移还是右移),并改变状态存储器的值,令机器进入一个新的状态或保持状态不变。
当然这些只是理想的图灵机,因为现实中不存在无限长的存储带,更加图灵的理论这样的一台装置就能模拟人类所能进行的任何计算过程。是不是很神奇?我相信你肯定不相信,不过图灵是经过严格的数学证明,下面我们来看看图灵机的计算过程。
运行机制
图灵机工作步骤
准备
存储带子上的格子初始话 设置内部状态存储器当前状态 读写头设置初始在存储带上所做的格子位置 准备好控制指令,即控制程序。
反复执行以下步骤,直到停机
读写头读出当前格子的数字或符号 根据当前状态和读到的字母或符号找到对应的控制指令 根据控制指令,执行以下三个动作 1. 读写头在格子上擦除或写入一个数字或符号 2. 变更状态到一个新状态 3. 读写头向左或向右移动一格
估计你还是不明白,别急。看过《三体》的同学都知道三体人把地球人看做“虫子”,三体人的维度比地球三维世界高,就好像我们人类把看虫子一样。
下面,我们把虫子放到一个二维的世界中,以虫子为例,给大家来说明最简单的图灵机模型(注:该例子非原创)。
假设理想的情况一:
虫子所处的二维世界是一个无限长的纸带,这个纸带上被分成了若干小的方格,而每个方格都仅仅只有黑和白两种颜色。
假设虫子的感官只有眼睛,并且它的视力短的可怜,只能看到当前所处格子的颜色
虫子可以向前爬一个格子或向后爬一个格子
虫子的操作系统、程序为:我们假设黑色是食物区,虫子吃到食物后前移一格,白色是空白区,没有食物后退一格,
输入 | 输出 |
---|---|
黑色 | 前移一格 |
白色 | 后移一格 |
在这个情况中格子的颜色是虫子的输入信息,集合为IN={黑色,白色},输出集合为 OUT= {前移一格,后移一格}
从开始位置开始,虫子会怎么移动呢?
开始是黑色,虫子前移一格,到达第2格
第2还是黑色,虫子前移一格,到达第3格
第3格还是黑色,虫子前移一格,到达第4格
第4格为白色,虫子后移一格,回到第3格
可见,这条带子上,虫子在第4格和第3格来回移动循环不止。
假设理想的情况二
现实中虫子肯定不可能傻到无线循环,虫子会有饥饿、吃饱的感受,食物吃了后也会消失。因此我们在情况下中改进下模型。
虫子在黑色的格子时,如果是饥饿状态,吃掉食物把格子变成白色;如果是吃饱状态,后移一格
虫子在白色的格子时,如果是饥饿状态,停下来等食物长出来涂黑;如果是吃饱状态,前移一格
虫子的操作系统、程序为:
输入 | 当前状态 | 输出 | 下一个状态 |
---|---|---|---|
黑色 | 吃饱 | 后移一格 | 饥饿 |
黑色 | 饥饿 | 吃完食物格子变白(不移动) | 吃饱 |
白色 | 吃饱 | 前移一格 | 饥饿 |
白色 | 饥饿 | 等待食物长出来涂黑(不移动) | 吃饱 |
在这种情况中,输入集合为
IN={黑色,白色},
输出集合为
OUT= {前移一格,后移一格,吃掉食物涂白,等待食物长出来涂黑},
内部状态S={吃饱,饥饿}
二维纸带不变,从开始位置开始,虫子初始是饥饿状态,虫子会怎么移动呢?
第1格是黑色,虫子饥饿,吃掉食物格子变白,虫子新状态为吃饱
第1格为白色,虫子吃饱,虫子前移一格,到达第2格,虫子新状态为饥饿
第2格为黑色,虫子饥饿,吃掉食物格子变白,虫子新状态为吃饱
第2格为白色,虫子吃饱,虫子前移一格,到达第3格,虫子新状态为饥饿
第3格为黑色,虫子饥饿,吃掉食物格子变白,虫子新状态为吃饱
第3格为白色,虫子吃饱,虫子前移一格,到达第4格,虫子新状态为饥饿
第4格为白色,虫子饥饿,等待食物长出来涂黑,虫子新状态为吃饱
第4格为黑色,虫子吃饱,虫子后退一格,到达第3格,虫子新状态为饥饿
这时,第3格已经长出来食物,是黑色,因此流程和第5步的情况一样了
情况二,小虫的行为比情况以复杂了一些,但小虫最后仍然会落入无限循环当中。
刚才用二维虫子说明了图灵机的工作原理,相信你的第一个反映就是,这样的模型太简单了!
他根本说明不了现实世界中的任何问题!下面,我就要试图说服你,图灵机这个模型是伟大的!
其实虫子的所有决策和行为都可以抽象成一个图灵机模型。
为什么可以做这种抽象呢?
其实可以把二维虫子的模型进行更多扩展,以和现实世界基本或完全一致。因为二维虫子模型是以一切都简化的前提开始的,所以它的确是太太简单了。
然而,我们可以把二维虫子的输入集合、输出行动集合、内部状态集合进行扩大,这个模型就一下子实用多了。
二维虫子完全可以处于一个三维的空间中而不是简简单单的纸带。
二维虫子的视力很好,它一下子能读到方圆500米的信息。
二维虫子也可以拥有其他的感觉器官,比如嗅觉、听觉等等,而这些改变都仅仅是扩大了输入集合的维数和范围,并没有其他更本质的改变。
二维虫子可能的输出集合也是异常的丰富,它不仅仅能移动自己,还可以尽情的改造它所在的自然界。
进一步的,二维虫子的内部状态可能非常的多,而且控制它行为的程序可能异常复杂
那么二维虫子会有什么本事呢?这就很难说了,因为随着小虫内部的状态数的增加,随着它所处环境的复杂度的增加,我们正在逐渐失去对二维虫子行为的预测能力。
但是所有这些改变仍然没有逃出图灵机的模型:
"输入集合、输出集合、内部状态、固定的程序指令!"
就是这四样东西抓住了二维虫子信息处理的根本。
图灵完备
维基百科解释:
可图灵指在可计算性理论中,编程语言或任意其他的逻辑系统如具有等用于通用图灵机的计算能力。换言之,此系统可与通用图灵机互相模拟。
上面的解释比较抽象,通过上面的例子理解了什么是图灵机,图灵完备其实就很很简单理解了。
简单来说,能够抽象成图灵机的系统或编程语言就是图灵完备的;一切可计算的问题图灵机都能计算,因此满足这样要求的逻辑系统、装置或者编程语言就叫图灵完备的。
因此可见,二维虫子是图灵完备的。
Bitcoin的脚本由于没有条件分支,循环等控制指令,回到上面的虫子的例子,虫子就不能根据当前状态,判断选择移动还是吃食物等一系列的动作,因此不满足图灵机的模型,不是图灵完备的。
五、人也是图灵机?
大脑操作系统
我们人能不能也被这样的抽象呢?显然是可以的。
其实我们每一个会决策、会思考的人就可以被抽象的看成一个图灵机,也就是笑来老师一直说:每个人都有自己的操作系统,因为有元认知能力,还可以自己升级操作系统。
输入状态集合就是你所处的环境中能够看到、听到、闻到、感觉到的所有一起,可能的输出集合就是你的每一言每一行,以及你能够表达出来的所有表情动作。内部状态集合则要复杂得多。因为我们可以把任意一个神经细胞的状态组合看作是一个内部状态,那么所有可能的神经细胞的状态组合将是天文数字!这就是人类的记忆。只要图灵机具有了内部状态,它就相应的具有了记忆。
这样理解的话,还有两个问题:
图灵机的程序指令是固定的。但是人类有学习能力,也就是说人的大脑会进化,操作系统会升级,所以大脑的实际程序规则是不固定,似乎图灵机模型包含不了。
人类的很多现象似乎都能被图灵机包括:情绪、情感等
链接:https://www.jianshu.com/p/c07d83c4f3a1
来源:https://www.cnblogs.com/zhangyuxiang666/p/10785893.html