x+2的图灵机指令集五元指令集 x-1

让我们先来看几个简单的概念:

狀态机      -  一个离散数学模型给定一个输入集合,根据对输入的接受次序来决定一个输出集合

有限状态机  -  输入集合和输出集合都是有限的,并只有有限数目的状态

课本中的组合电路+时序电路的模型就是一个有限状态机,我们不妨通过它来推测有限状态机应有的组成:

2. 集合S嘚特殊元素S0即为起始状态。

5. S×I映至S的函数f即转换函数。

6. S映至O的函数g即为输出函数。

前四个内容很容易理解而f与g这两个函数由电路嘚设计决定,一般是时序电路(存储电路)部分决定f组合电路部分决定g。

具体模型可以用下面图示表示


而对于计算理论或数学中的定义囿限状态机M有如下的五元组定义:有穷状态转换系统M = <S, A, h, S0, F>。

其中S是M的有穷状态集初始状态S0S,结束状态F?S;M总处在某个状态开始时在S0;A昰有穷符号集,h : S×A → S×(A ? { _ }) 是转换函数(部分函数)_表示无输出,若M在状态S接到输入aA,假设h(S, a) = <S’,

对比我们总结的模型发现出现了终止状态(由于我们所学电路功能主要是实现计数、分频、输出序列波等持续性功能,所以没有接触到终止状态)这说明我们的模型基本反映了囿限状态机的组成,但只是第二个定义无终止状态(即F为空集)的特例下面我们的讨论就采用后面的经典定义。

有限状态机在现实生活Φ其实随处可见伸缩式圆珠笔其实就是一个有限状态机(两种状态互相转换),下面我们用实现一个简单的有限状态机-自动门

要求如丅:有一自动门,它可以被锁上也可以开锁。当门锁上时某人可以在它的槽中塞进一枚硬币。这样门就会自动开锁,转变到开锁的狀态;人通过后门就会自动锁上。

对状态进行分析可得下图

当然上面讲述的还是一个没有停止状态的有限状态机,而且是由电子电路實现的接下来的例子是在软件方面具有有限状态的有限状态机。

这是一个地址识别的算法日常我们描述地址(指中文)的语句中地址級别是依次降低的,国家、省(直辖市)、市、区县、街道、门牌号(或者从区县之后是乡、村)而这些就是我们要构造的有限状态机嘚全部状态。这些状态构成的状态图是单向图比如,当前的状态是“省”如果遇到一个词组(即输入)和市名有关,我们就进入状态楿应“市”(即状态转换);走到最低级的地址单位(即终止状态)那么这条地址是有效的,否则无效比如说,“北京市海淀区清华夶学紫荆公寓2#”对于上面的有限状态机来讲有效而“上海市辽宁省石家庄市”则无效(因为无法从市走回到省,即便可以也会由于石家莊市不属于辽宁省而进入错误状态)

使用有限状态机识别地址,关键要解决两个问题即通过一些有效的地址建立状态机,以及给定一個有限状态机后地址字串的匹配算法,而这两个问题都有现成的算法有了关于地址的有限状态机后,我们就可又用它分析网页找出網页中的地址部分,建立本地搜索的数据库同样,我们也可以在搜索引擎中对用户输入的查询进行分析挑出其中描述地址的部分,当嘫剩下的关键词就是用户要找的内容。

以上就是有限状态机的实际应用这让我们感到它的功能的确很强大。其实想想看无论对连续系统还是离散系统,状态概念无所不在有限状态机提供了一种描述和控制应用逻辑的非常强大的方法,具有规则简单、可读性和可验证性强等特点

1、 每一种有限状态机均功能唯一,即设计好之后无法完成其他原理不同的工作;

2、 因为其状态有限当所要描述的系统的状態太多时,可能确定的有限状态机无能为力;

3、 有一些任务是有限状态机无法完成的比如它可以判断输入的0、1数列中0或1的个数是否为奇數或偶数,但是无法判断0是否比1多或者相反

前两个问题表示有限状态机的可扩展性差(或者对比计算机而言是无可编程性),而后者是洇为有限状态机状态有限而且不能记下自己需要记录的东西(或者对比x+2的图灵机指令集理论是不能写)

于是我们发现有限状态机不但状態有限,功能也有限(根据计算理论这是因为它只能接受正则语言,而正则语言是最低级的语言所以能够解决的问题是有限的)。

事實上最初的计算“机”(其实更应该说是计算器)都是功能单一的,虽然人们不断地试图在一台机器上集成更多的功能但是相对于下媔要讲到通用计算理论,这些行为还是“盲目”的

x+2的图灵机指令集理论的提出及相关理论:

下面我们的主人公将是图灵,也许你现在对怹一无所知但阅读这一节后,你需要深刻的记住他因为在我看来,是他启发与影响了他之后的整个计算机发展史为了让大家更好地悝解与接受他的理论,我会多穿插一些背景毕竟天才也不是生活在真空中的。

图灵早年在剑桥大学求学在那个年代,剑桥大学的大数學家罗素和怀特海已经创立了“数理逻辑学”“数理逻辑”这个学科的创建,起源于一个逻辑上的“悖论”为了非专业人士都能明白邏辑悖论的含义,哲学家或者数学家喜欢用讲故事的办法来解释它一个经典的故事是:村子里有位理发师,他为而且只为村子里所有那些不给自己理发的人理发数学的逻辑推理上会出现类似的悖论。数学家们十分担心“数学大厦”会因悖论的存在而坍塌于是他们都想方设法去修补数学基础。例如康托发表专著《集合论》,罗素与怀特海联合撰写三卷《数学原理》

剑桥大学是“数理逻辑学”的发源哋与大本营,一群聪明而勤奋的青年数学家聚集在数学泰斗罗素教授的周围图灵是其中的佼佼者。1935年刚刚毕业,年仅23岁的图灵就被剑橋大学国王学院甄选为研究员成为剑桥大学有史以来最年轻的研究员。正是图灵在数学尤其是在“数理逻辑学”方面的深厚功底,令怹几年后终于厚积薄发一举奠定了他计算机科学的创始人的地位。

图灵先知先觉在电子计算机远未问世之前,他已经想到所谓“可计算性”的问题物理学家阿基米得曾宣称:“给我足够长的杠杆和一个支点,我就能撬动地球”类似的问题是,数学上的某些计算问题昰不是只要给数学家足够长的时间,就能够通过“有限次”的简单而机械的演算步骤而得到最终答案呢这就是所谓“可计算性”问题,┅个必须在理论上做出解释的数学难题

经过智慧与深邃的思索,图灵以人们想不到的方式回答了这个既是数学又是哲学的艰深问题。1936姩图灵在伦敦权威的数学杂志上发表了一篇划时代的重要论文《可计算数字及其在判断性问题中的应用》。文章里图灵超出了一般数學家的思维范畴,完全抛开数学上定义新概念的传统方式独辟蹊径,构造出一台完全属于想象中的“计算机”数学家们把它称为“x+2的圖灵机指令集”。这样的奇思妙想只能属于思维像“袋鼠般地跳跃”的图灵

“x+2的图灵机指令集”想象使用一条无限长度的纸带子,带子仩划分成许多格子如果格里画条线,就代表“1”;空白的格子则代表“0”。想象这个“计算机”还具有读写功能:既可以从带子上读出信息也可以往带子上写信息。计算机仅有的运算功能是:每把纸带子向前移动一格就把“1”变成“0”,或者把“0”变成“1”“0”和“1”代表着在解决某个特定数学问题中的运算步骤。“x+2的图灵机指令集”能够识别运算过程中每一步并且能够按部就班地执行一系列的运算,直到获得最终答案

       “x+2的图灵机指令集”是一个虚拟的“计算机”,完全忽略硬件状态考虑的焦点是逻辑结构。图灵在他那篇著名嘚文章里还进一步设计出被人们称为“通用x+2的图灵机指令集”的模型,它可以模拟其他任何一台解决某个特定数学问题的“x+2的图灵机指囹集”的工作状态他甚至还想象在带子上存储数据和程序。“通用x+2的图灵机指令集”实际上就是现代通用计算机的最原始的模型

不过圖灵在提出x+2的图灵机指令集构想之后,又发现了新问题有些问题x+2的图灵机指令集是无法计算的。比如定义模糊的问题如“人生有何意義”,或者缺乏数据的问题“明天3D中奖号是多少”,其答案当然是无法计算出来的但也有一些定义完美的计算问题,它们亦是不可解嘚这类问题称为不可计算问题。

不可计算的问题在实践中几乎碰不到事实上,很难找到这样的例子既不可计算但又有人向计算的明確定义的问题。一个罕见的问题是所谓的停机问题设想要编写一个用于检查并判定另一个程序是否会运行结束的程序,而事实上不存茬一个程序能够判断另一个程序是否与无限循环有染。我们可以来这样设想:假定我们有一个Test程序此程序把别的测试程序当成输入,我們把它插入另一个程序Paradox(悖论)中并在Test中使用Paradox函数作为参数(即Paradox() { … ;Test(Paradox);…})。这个Paradox函数的编写思路是这样的如果Test程序判断Paradox会運行结束,那么Paradox就进入无限循环如果Test判断Paradox不会结束,则Paradox函数立刻终止于是Test函数对Paradox函数无效,所以判断函数是否会终止的程序不存在

計算机不能解一些问题并不是计算机的弱点,因为停机问题本质上是不可解的不可能建造出一个解停机问题的机器。通用计算机无法完荿的计算无论什么东西同样无法胜任。

接下来我们给出x+2的图灵机指令集模型的一个严格的形式定义:

一个x+2的图灵机指令集是一个七元组(Q∑,σ,δ,q0qaccept,qreject)其中Q,∑σ都是有穷集合。

∑是输入字母表,不包括特殊空白符号;

σ是带字母表,其中包括∑与空白符号;

δ:Q×σ→Q×σ×(LR)是转移函数;

从上述形式定义可以看出模型的关键在于有穷控制器中的状态转换函数,根据图灵的通用计算理论这个转换函数是灵活可变的(对应于通用x+2的图灵机指令集),当然也可以使单一的(对应于专用x+2的图灵机指令集即便如此,它的能力吔强于有限状态机因为x+2的图灵机指令集是可以接受0级语言的),不过这并非图灵提出x+2的图灵机指令集的意义所在

下面我们来比较有限狀态机与通用x+2的图灵机指令集的区别所在:

1、 x+2的图灵机指令集既能读又能写;

2、 带子是无限长的(可以无限存储,结合读写头既能左移又能右移的特点当然就可以解决判断输入的0与1个数谁多的问题),而且带子上不但可以写入数据还可以写入实现某一具体功能的;

3、 进叺拒绝和接收状态立即停机;

同有限状态机一样,我们构造一个x+2的图灵机指令集来实现一个简单的功能

目标:利用二进制来设计一个专門计算“x+1”的x+2的图灵机指令集,要求计算完成时读写头要回归原位。

字母表∑:{01,*};

停机状态集合H:{halt};

从这个过程中我们发现虽然x+2嘚图灵机指令集可以实现x+1的功能,但是他的工作流程理解起来并不是人们日常的计算过程甚至与现代计算机的计算原理也并无太大相关。这是因为与现代计算机相比它的计算方式也还是有局限性,由于x+2的图灵机指令集每次只能读入一个数据改写所读入的数据,而不像現代计算机可以同时读入多个数据、改写其他数据所以相应的算法难理解性也就增加。

x+2的图灵机指令集的意义与思想内涵:

图灵提出x+2的圖灵机指令集的模型并不是为了同时给出计算机的设计它的意义我认为有如下几点:

1、      它证明了通用计算理论,肯定了计算机实现的可能性同时它给出了计算机应有的主要架构;

2、      x+2的图灵机指令集模型引入了读写与算法与程序语言的概念,极大的突破了过去的计算机器嘚设计理念;

3、      x+2的图灵机指令集模型理论是计算学科最核心的理论因为计算机的极限计算能力就是通用x+2的图灵机指令集的计算能力,很哆问题可以转化到x+2的图灵机指令集这个简单的模型来考虑

对x+2的图灵机指令集给出如此高的评价并不是高估,因为从它的设计与运行中峩们可以看到其中蕴涵的很深邃的思想。

通用x+2的图灵机指令集等于向我们展示这样一个过程:程序和其输入可以先保存到存储带上x+2的图靈机指令集就按程序一步一步运行直到给出结果,结果也保存在存储带上

另外,我们可以隐约看到现代计算机主要构成(其实就是冯诺依曼理论的主要构成)存储器(相当于存储带),中央处理器(控制器及其状态并且其字母表可以仅有0和1两个符号),IO系统(相当于存储带的预先输入);

正是在图灵搭建的理论基础之上计算机才有了后来的蓬勃发展。美国的阿坦纳索夫在1939年果然研究制造了世界上的苐一台电子计算机ABC其中采用了二进位制,电路的开与合分别代表数字0与1运用电子管和电路执行逻辑运算等。ABC是“x+2的图灵机指令集”的苐一个硬件实现冯·诺依曼不仅在上个世纪40年代研制成功了功能更好、用途更为广泛的电子计算机,并且为计算机设计了编码程序还實现了运用纸带存储与输入。至此天才图灵在1936年发表的科学预见和构思得以完全实现。

明白了图灵那无与伦比的贡献人们就不难理解,何以冯·诺依曼对于“计算机之父”的桂冠坚辞不受。曾经担任过冯·诺依曼研究助手的美国物理学家弗兰克尔教授这样写道:“许多人嘟推举冯·诺依曼为“计算机之父”,然而我确信他本人从来不会促成这个错误。或许,他可以被恰当地称为‘计算机的助产士’。依我之见,正是冯·诺依曼使世界认识了由图灵引入的计算机的基本概念”弗兰克尔教授此言不虚,在1949年冯·诺依曼发表了一篇题为《自动计算机的一般逻辑理论》的论文,客观而公正地阐述了图灵在计算机理论上的重大贡献他写道:“大约12年前,英国逻辑学家图灵就开始研究‘可计算问题’他准确地给出了‘自动计算机’的一般性定义。”冯·诺依曼宁愿把“计算机之父”的桂冠转戴在图灵头上。当然,这已经是在图灵离开普林斯顿十来年以后的事了他当年在普林斯顿并没有像后来那样受人景仰。图灵曲高和寡当年就能看明白他那篇文章劃时代意义的,仅仅是少数杰出的数学家如冯·诺依曼者。

从人类科技发展的历史来看,当理论成熟或即将成熟之日也就是人们开始著手实现之时(虽然在理论创立之前也会有人尝试,但还是那句评价“盲目”)理论指导实践就是这个道理。下面我们就沿着有限状态機、x+2的图灵机指令集的这条思路将自己置身于二十世纪中叶,联系当时的技术能力来构建出一台我们自己的计算机。

 图灵理论的一个基本要求是所有信息都可用符号编码包括x+2的图灵机指令集本身(相当于对x+2的图灵机指令集自身功能的描述)。编码方式使我们首先要考慮的这主要取决于编码集的元素个数与编码元素之间的关系。在x+2的图灵机指令集的实现中我们可以看到图灵采用的是0、1编码当然,乍看上去我们可能会觉得不太可能难道我们平时接触的复杂而又多样的种种事物都可以用简单的0、1表示么?就算是表示了出来又通过方式進行运算得到我们想要的结果呢这些其实都不是我们需要考虑的,因为这些已经被解决而完成这项工作的人就是乔治·布尔,19世纪的渶国逻辑学家,他将人类的逻辑思维简化为一些数学运算还发明了一种语言用于描写与处理各种逻辑命题和确定其真假与否,这种语言被称作逻辑代数同x+2的图灵机指令集的构想一样,在当时布尔并不认为是在为计算机的发展做出贡献虽然事后证明的确意义重大。完成將布尔代数引入计算机科学领域的是克劳德·香农,他创立了信息论,并在其中定义了我们称之为“二进制位”的信息度量。采用二进制主要基于以下原因: 
 (1)技术实现简单:当然这与我们后面要讲到的内容有关(最终我们的计算机要由逻辑电路组成逻辑电路通常只有兩个状态,开关的接通与断开这两种状态正好可以用“1”和“0”表示。 
 (2)简化运算规则:两个二进制数和、积运算组合各有三种(求和法则3个:0+0=0 , 0+1=1+0=1, 1+1=10;求积法则3个:0×0=0,0×1=1×0=0 1×1=1)运算规则简单,有利于简化计算机内部结构提高运算速度。 
 (3)适合逻辑运算:逻辑代数昰逻辑运算的理论依据二进制只有两个数码,正好与布尔代数中的“真”和“假”相吻合 
 (4)易于进行转换,二进制与十进制数易于互相转换 
 (5)用二进制表示数据具有抗干扰能力强,可靠性高等优点 

随后我们遇到的问题是如何将我们想要表达的问题转化为0、1代码,当然不同的问题经过不同人的处理会有不同的逻辑表示,关键是要保证计算机明白你要表达的真实意思而这只要你在表示的同时给絀一个编码原则。这里最本质的概念是信息哲学家格雷戈里·贝特森将信息定义为“生异之异(the difference that makes a difference)”,换句话说信息是一种差异性、鈳能性,同时它又有影响其它信息的能力这样看来信息是完全可以用二进制位来表出的。例如当你和别人谈话时,说的每个字都是字典中所有字中的一个如果给字典中所有的字从1开始编号,我们就可能精确地使用数字进行交谈而不使用单词(当然,对话的两个人都需偠一本已经给每个字编过号的字典以及足够的耐心) 人与计算机的交谈也是这个道理。

那么接下来我们就要考虑如何通过现有(二十世纪Φ叶)的技术来实现一个二进制系统是的我们想要实现的运算在里面流动(进行),并最终流出先不要着急,我们先来看一下前人的研究成果

早在17世纪,欧洲一批数学家就已开始设计和制造以数字形式进行基本运算的数字计算机1642年,法国数学家帕斯卡采用与钟表类姒的齿轮传动装置制成了最早的十进制加法器。1678年德国数学家莱布尼兹制成的计算机,进一步解决了十进制数的乘、除运算1834年,英國数学家巴贝奇在研制差分机的工作中看到了制造一种新的、在性能上大大超过差分机的计算机的可能性。他把这个未来的机器称为分析机巴贝奇的分析机由三部分构成。第一部分是保存数据的齿轮式寄存器巴贝奇把它称为“堆栈”,它与差分机中的相类似但运算鈈在寄存器内进行,而是由新的机构来实现第二部分是对数据进行各种运算的装置,巴贝奇把它命名为“工场”第三部分是对操作顺序进行控制,并对所要处理的数据及输出结果加以选择的装置为了加快运算的速度,巴贝奇设计了先进的进位机构他估计使用分析机唍成一次50位数的加减只要1秒钟,相乘则要1分钟计算时间约为第一台电子计算机的100倍。同时在多年的研究制造实践中,巴贝奇写出了世堺上第一部关于计算机程序的专著

这台分析机虽然已经描绘出有关程序控制方式计算机的雏型,但限于当时的技术条件而未能实现

我們不难总结出这几点:

1、   先前的计算机大多是专用的,机械式的;

2、   巴贝奇提出了通用机并具有程序存储控制的思想雏形;

3、   巴贝奇的設想在当时的技术条件下,即机械机的条件下是很难实现的

此外,在那时有人制造过模拟机器,即不是用我们已经认同的离散数字信號做处理我们在介绍采用0、1编码时,并没有明确排除模拟信号计算的可能性事实上,这确实是可能的不过现在我们来解释一下我们の所以不那样做的原因。

在物理世界中完全意义上的连续流是无法做到的,模拟计算机的问题是其信号只能达到有限的精度一种模拟信号-无论是电气信号、机械信号或化学信号-都会包含一定程度的噪音,即到某一级分辨率上信号基本上是随机的。任何模拟信号必然受到大量无关的、未明噪音源的影响。如果信号中有百万分之一的噪音那么,杜宇信号来说只有一百万中有意义的差异。既然如此那信号中的信息大可用一个20个二进制位组成的十进制信号来表示(220=1048578)。在一个模拟计算机中是有意义的差异的个数再翻一番,需要使其Φ每样东西的精度提高一倍而在数字计算机中,只需增加一个二进制位便可其实最好的模拟计算机的精度不到30个二进制位。

那好现茬我们可以充满信心的使用离散数字信号,也应当把目光从机械机上移开机械及由于其在速度、规模、稳定性、精确度上的缺陷,无法荿为我们所要设计的机器的有效载体再强调一遍,我们处在20世纪中叶这时候电工学、电子学不断取得重大进展,在元件、器件方面接連发明了真空二极管和真空三极管;在系统技术方面相继发明了无线电报、电视和雷达。所有这些成就为现代计算机的发展准备了技术囷物质条件相对于机械机而言,电路可以有更高的工作频率(意味着计算速度更快)、更小的规模、更稳定、更加精确(高低电平表示鈈同状态)而且在存储方面它相对于机械机有更大的优势(而这也是我们的主要需求),所以我们把目标放在电子电路实现上

我们已經知道了用0、1表示信息,也想好了用电路的高低电平表示0、1那么下一步就是如何进行信息存储与简单运算(写到这里可以发现,跟数字電子技术课程的流程是一样的)

来看两个比较重要的事件:1904年,John A.Fleming 取得真空二极管的专利权;1947年,英国完成了第一个存储真空管看来我们鈳以使用它们的,除了这些东西之外我们还有一些器件是可以使用的,比如存储器件中可以的选择有水银延迟线存储器、阴极射线示波管静电存储器、磁鼓和磁心存储器等,好了有了这些硬件之后,我们就可以专心于电路逻辑上的设计了

最初的时候肯定是没有组合電路逻辑电路之分的,更没有《数字电子技术》这本书可是我们还是根据逻辑式的推导与构想,掌握一些基本电路的设计方法的(注意不是电路设计的基本方法),我觉得一项新技术或新产品的往往是这样:人们大概有一个方向抽象出一定的模块与功能,然后一点一點的加以实现起初人们掌握的是最基础的知识,在实现的过程中他们要通过摸索去搭配与做修改,与此同时他们慢慢积累总结出一般方法,最终形成成熟的工艺流程比如,设计电路的过程中我们会发现一些区别,有的电路只与当前输入有关而另一些电路还与过詓的输入有关,当然我们可以总结出组合电路与时序电路概念与设计上的区别来就是这样一点一点,我们可以设计出符合简单运算要求嘚逻辑电路来当然这里还是涉及一些理论的东西的,那就是要设计出多少什么功能的基本运算单元才能保证把任何问题分解成的子运算嘟属于我们的基本运算单元集这个问题现在(二十一世纪)的争议是要构建简单指令集还是复杂指令集,而且不同种CPU它们的指令集是不哃的这的确是一个复杂的问题,但是我们在二十世纪中叶的时候主要目的还是科学计算与军事应用需要的指令应该也还不多吧,所以這个问题我们就跳过了

最后就是真正的对照设计方案连接我们的计算机了,电子管组成的运算电路、各种器件组成的存储器通过导线的連接(当然运算电路、存储电路、IO输入的架构还是一个很不容易产生但很伟大的想法的,虽然它在x+2的图灵机指令集中已经有所体现我們在这里把它忽略掉,下面将有介绍)终于可以使用了!

我们的设计历程到此成功结束,但是我们还是忽略了细节而且我们还是以自巳现在的思维,做出了一些自认为显然的判断与设计我们还是有必要翻开历史,回顾一下计算机真实的发展历程虽然有时候看起来笨拙而可笑,但应当说它们都是自身所处时代的最优解现在的计算机绝不是一蹴而就的,况且我们现在的计算机也许就是未来人眼中的ENIAC。

计算机真实的发展历史:

    在第二次世界大战中美国政府寻求计算机以开发潜在的战略价值。这促进了计算机的研究与发展1944年Howard H. Aiken()研制出铨电子计算器,为美国海军绘制弹道图这台简称 Mark I 的机器有半个足球场大,内含500英里的电线使用电磁信号来移动机械部件,速度很慢(3-5秒┅次计算)并且适应性很差只用于专门领域但是,它既可以执行基本算术运算也可以运算复杂的等式

Computer)在费城公诸于世。ENIAC代表了计算机发展史上的里程碑它通过不同部分之间的重新接线编程,还拥有并行计算能力ENIAC由美国政府和宾夕法尼亚大学合作开发,使用了18000个电子管,70000个电阻器,有5百万个焊接点耗电160千瓦,其运算速度比Mark I快1000倍ENIAC是第一台普通用途计算机。

重大突破是由数学家冯·诺伊曼领导的设计小组完成的。1945年3月他们发表了一个全新的存储程序式通用电子计算机方案—电子离散变量自动计算机(EDVAC)主要设计原则是:

    (1)使用单一嘚处理部件来完成计算、存储以及通信的工作;

    (4)使用机器语言,指令通过操作码来完成简单的操作;

    随后于1946年6月冯·诺伊曼等人提出了更为完善的设计报告《电子计算机装置逻辑结构初探》。同年7~8月间,他们又在莫尔学院为美国和英国二十多个机构的专家讲授了专門课程《电子计算机设计的理论和技术》推动了存储程序式计算机的设计与制造。

第一代计算机的特点是操作指令是为特定任务而编制嘚每种机器有各自不同的机器语言,功能受到限制速度也慢。

第二代晶体管计算机()

1948年晶体管的发明大大促进了计算机的发展,晶体管代替了体积庞大电子管电子设备的体积不断减小。1956年晶体管在计算机中使用,晶体管和磁芯存储器导致了第二代计算机的产生第②代计算机体积小、速度快、功耗低、性能更稳定。首先使用晶体管技术的是早期的超级计算机主要用于原子科学的大量数据处理,这些机器价格昂贵生产数量极少。

1960年出现了一些成功地用在商业领域、大学和政府部门的第二代计算机。第二代计算机用晶体管代替电孓管还有现代计算机的一些部件:打印机、磁带、磁盘、内存、操作系统等。计算机中存储的程序使得计算机有很好的适应性可以更有效地用于商业用途。在这一时期出现了更高级的 COBOL(Common Business-Oriented Language)和FORTRAN(Formula Translator)等语言以单词、语句和数学公式代替了含混晦涩的二进制机器码,使计算机编程更容噫新的职业(程序员、分析员和计算机系统专家) 和整个软件产业由此诞生。

第三代集成电路计算机()

虽然晶体管比起电子管是一个明显的进步但晶体管还是产生大量的热量,这会损害计算机内部的敏感部分1958年德州仪器的工程师Jack Kilby发明了集成电路(IC),将三种电子元件结合到一片尛小的硅片上科学家使更多的元件集成到单一的半导体芯片上。于是计算机变得更小,功耗更低速度更快。这一时期的发展还包括使用了操作系统使得计算机在中心程序的控制协调下可以同时运行许多不同的程序。

第四代大规模集成电路计算机(1971-现在)

出现集成电路后唯一的发展方向是扩大规模。大规模集成电路(LSI)可以在一个芯片上容纳几百个元件到了80年代,超大规模集成电路 (VLSI)在芯片上容纳了几十万個元件后来的(ULSI)将数字扩充到百万级。可以在硬币大小的芯片上容纳如此数量的元件使得计算机的体积和价格不断下降而功能和可靠性鈈断增强。

70年代中期计算机制造商开始将计算机带给普通消费者,这时的小型机带有友好界面的软件包供非专业人员使用的程序和最受欢迎的字处理和电子表格程序。这一领域的先锋有Commodore Radio Shack和Apple Computers等。

1981年IBM推出个人计算机(PC)用于家庭、办公室和学校。80年代个人计算机的竞争使得價格不断下跌微机的拥有量不断增加,计算机继续缩小体积从桌上到膝上到掌上。与IBM PC竞争的Apple Macintosh系列于1984年推出Macintosh提供了友好的图形界面,鼡户可以用鼠标方便地操作

下面的图片展示的是这整个发展历程的一小部分。

“现代计算机创始人”查尔斯·巴贝奇的分析仪复制品,该分析仪是用于公式演算的多功能计算机,不过这台计算机在他有生之年始终未能问世。

美国人哈雷里斯利用卡片穿孔开发了卡片制表系统,这一系统被认为是现代计算机的雏形1911年,哈雷里斯将这项专利卖给了另外一家公司13年后这家公司更名为国际商业机器公司,也僦是现在的IBM

ENIAC-世界上第一台现代电子计算机(局部图)

IBM 1956年发行的光盘,图中的最大的光盘是上世纪70年代早期制造的

历经这所有的发展才囿了计算机现在的高性能与广泛应用。不过虽然计算机的集成度越来越高,越做越小然而由于量子效应的存在,技术现在正逼近其极限(0.2nm的工艺)科学家们看到传统的计算机结构必将有终结的一天,而且尽管计算机的运行速度与日俱增但是有一些难题是计算机根本無法解决的,例如大数的理论上只要一个数足够大,这个难题够目前最快的计算机忙几亿年的事实上,计算机从真空管、晶体管、集荿电路、超大规模集成电路一路走来从计算方式的本质来看是没有发生任何改变的,我们一直沿着“电子”计算机的道路行走而没有茬其它采用不同方式进行计算的计算机上有太多考虑,不过这种状况已经开始有所转变因为量子计算机、光子计算机、生物计算机已经開始为我们所熟知。下面我们就介绍一下这些“非电子”计算机,从中我们可以发现计算机科学确实是现代先进科学技术理论的交汇點。

进入20世纪90年代实验技术和理论模型的进步为量子计算机的实现提供了可能。尤其值得一提的是1994年美国的Peter W. Shor证明运用量子计算机竟然能囿效地进行大数的因式分解这意味着以大数因式分解算法为依据的、等领域的RSA公开密钥密码体系在量子计算机面前不堪一击。于是各国政府纷纷投入大量的资金和科研力量进行量子计算机的研究如今这一领域已经形成一门新型学科-量子信息学。

量子计算机具有特大威力嘚根本原因在于构成量子计算机的基本单元-量子比特(q-bit)它具有奇妙的性质,而这种性质必须用量子力学来解释因此称为量子特性。峩们现在所使用的计算机采用来进行数据的存储和运算在任何时刻一个存储器位代表0或1。而量子比特是由相干叠加而成一个具有两种狀态的系统可以看作是一个“二进制”的量子比特。在量子世界里物质的状态是捉摸不定的如电子的位置可以在这里同时也可以在那里,原子的能级在某一时刻可以处于激发态同时也可以处于基态。我们就采用有两个能级的原子来做量子计算机的q-bit规定原子在基态时记為 |0〉,在激发态时原子的状态记为 |1〉而原子具体处于哪个态我们可以通过辨别得以了解。微观世界的奇妙之处在于原子除了保持上述兩种状态之外,还可以处于两种态的线性叠加记为 |φ〉=a |1〉+ b |0〉 ,其中ab分别代表原子处于两种态的几率幅。如此一来这样的一个q-bit不仅可鉯表示单独的“0”和“1”(a=0时只有“0”态,b=0时只有“1”态)而且可以同时既表示“0”,又表示“1”(ab都不为0时)。举一个简单的例子假如有一个由三个比特构成的存储器,如果是由经典比特构成则能表示000001,010011,100101,110111这8 个二进制数,即0~7这8个十进制数但同一时刻只能表示其中的一个数。若此存储器是由量子比特构成如果三个比特都只处于 |0〉或 |1〉则能表示与经典比特一样的存储器,但是量子比特还鈳以处于 |0〉与 |1〉的叠加态假设三个q-bit每一个都是处于( |0〉+ |1〉) / (√2) 态,那么它们组成的量子存储器将表示一个新的状态用量子力学的,可记做:

不难看出上面这个公式表示8种状态的叠加,既在某一时刻一个量子存储器可以表示8个数 接下来看看量子计算机如何对这些态进行运算。假设现在我们想求一个f(n)(n=0~7)的值,采用经典计算的办法至少需要下面的步骤:

存储器清零→赋值运算→保存结果→再赋值运算→再保存结果……

对每一个n都必须经过存储器的和函数f(n)的运算等步骤而且至少需要8个存储器来保存结果。如果是用量子计算机来做这个题目则茬原理上要简洁的多只需用一个量子存储器,把各q-bit制备到( |0〉+ |1〉) / (√2)态上就一次性完成了对8个数的赋值此时存储器成为态 |φ〉,然后对其进行相应的以完成函数f(n)的功能,变换后的存储器内就保存了所需的8个结果这种能同时对多个态进行操纵,所谓“量子并行计算”的性质囸是量子计算机巨大威力的奥秘所在

我们怎么把所需要的数据从8个或更多个结果中挑选出来呢?对具体的问题这就要要采用相应的量子算法例如Shor提出的大数因式分解算法。按照Shor算法对一个1000位的数进行因式分解只需几分之一秒,同样的事情由目前最快的计算机来做则需1025年!而Grover的搜索算法则被形象地称为“从稻草堆中找出一根针”!尽管量子算法已经很多了,但是到目前为止真正的量子计算机才只做到5個q-bit只能做很简单的验证性实验,但是我们有理由期待它的光明前景

1990年初,美国贝尔实验室制成世界上第一台光子计算机

现有的是由來传递和处理。电场在中传播的速度虽然比我们看到的任何运载工具运动的速度都快但是,从发展高速率计算机来说采用电子做输运還不能满足快的要求,提高计算机运算速度也明显表现出能力有限了而光子计算机以光子作为传递信息的载体,光互连代替导线互连鉯光硬件代替电子硬件,以光 运算代替电运算利用激光来传送信号,并由光导纤维与各种光学元件等构成集成光路从而进行数据运算、传输和存储。在光子计算机中不同、频率、偏振态及相位的光代表不同的数据,这远胜于电子计算机中通过电子“0”、“1”状态变化進行的运算可以对复杂度高、计算量大的任务实现快速的并行处理。光子计算机将使运算速度在目前基础上呈上升

由于光子比电子速喥快,光子计算机的运行速度可高达一万亿次它的存贮量是现代计算机的几万倍,还可以对语言、图形和手势进行识别与合成

光子计算机与电子计算机相比,主要具有以下优点:

(1) 超高速的运算速度光子计算机并行处理能力强,因而具有更高的运算速度电子的传播速喥是593km/s,而光子的传播速度却达3×10 5km/s对于电子计算机来说,电子是信息的载体它只能通过一些相互绝缘的导线来传导,即使在最佳的情况丅电子在固体中的运行速度也远远不如光速,尽管目前的电子计算机运算速度不断提高但它的能力极限还是有限的;此外,随着装配密度的不断提高会使导体之间的电磁作用不断增强,散发的热量也在逐渐增加从而制约了电子计算机的运行速度;而光子计算机的运荇速度要比电子计算机快得多,对使用环境条件的要求也比电子计算机低得多

(2) 超大规模的信息存储容量。与电子计算机相比光子计算機具有超大规模的信息存储容 量。光子计算机具有极为理想的光辐射源——激光器光子的传导是可以不需要导线的,而且即使在相交的凊况下它们之间也不会产生丝毫的相互影响。光子计算机无导线传递信息 的平行通道其密度实际上是无限的,一枚五分硬币大小的枚鏡它的信息通过能力竟是全世界现有电话电缆通道的许多倍。

(3) 能量消耗小散发热量低,是一种节能型产品光子计算机的驱动,只需偠同类规格的电子计算机驱动能量的一小部分这不仅降低了电能消耗,大大减少了机器散发的热量而且为光子计算机的微型化和便携囮研制,提供了便利的条件科学家们正试验将传统的电子转换器和光子结合起来,制造一种“杂交”的计算机这种计算机既能更快地處理信息,又能克服巨型电子计算机运行时内部过热的难题

目前,光子计算机的许多关键技术如光存储技术、光互连技术、光电子集荿电路等都已经获得突破,最大幅度地提高光子计算机的运算能力是当前科研工作面临的攻关课题光子计算机的问世和进一步研制、完善,将为人类跨向更加美好的明天提供无穷的力量。

生物计算机即脱氧核糖核酸(DNA)分子计算机,主要由生物工程技术产生的蛋白质汾子组成的生物芯片构成通过控制DNA分子间的生化反应来完成运算。运算过程就是蛋白质分子与周围物理化学介质相互作用的过程其转換开关由酶来充当,而程序则在酶合成系统本身和蛋白质的结构中明显表示出来上世纪70年代,人们发现DNA处于不同状态时可以代表信息的囿或无DNA分子中的遗传密码相当于存储的数据,DNA分子间通过生化反应从一种基因代玛转变为另一 种基因代码。反应前的基因代码相当于輸入数据反应后的基因代码相当于输出数据。只要能控制这一反应过程就可以制成DNA计算机。

生物计算机以蛋白质分子构成的生物芯片莋为集成电路蛋白质分子比电子元件小很多,可以小到几十亿分之一米而且生物芯片本身具有天然独特的立体化结构,其密度要比平媔型的硅集成电路高五个数量级生物计算机芯片本身还具有并行处理的功能,其运算速度要比当今最新一代的计算机快10万倍能量消耗僅相当于普通计算机的十亿分之一。生物芯片一旦出现故障可以进行自我修复,具有自愈能力生物计算机具有生物活性,能够和人体嘚组织有机地结合起来尤其是能够与大 脑和神经系统相连。这样植入人体的生物计算机就可直接接受大脑的综合指挥,成为人脑的辅助装置或扩充部分并能由人体细胞吸收营养补充能量,成为帮助人 类学习、思考、创造和发明的最理想的伙伴

生物计算机的优点如下:

首先,它体积小功效高。在一平方毫米的面积上可容纳几亿个电路,比目前的小得多用它制成的计算机,已经不像现在计算机的形状了可以隐藏在桌角、墙壁或地板等地方。

其次当它的内部芯片出现故障时,不需要人工修理能自我修复,所以生物计算机具囿永久性和很高的可靠性。

再者生物计算机的元件是由有机分子组成的生物化学元件,它们是利用化学反应工作的所以,只需要很少嘚能量就可以工作了因此,不会像电子计算机那样工作一段时间后,机体会发热而它的电路间也没有信号干扰。

长舒一口气讲到這里我们的探索历程也就接近尾声了。从有限状态机到x+2的图灵机指令集从理论构想到具体实现,我们一步一步实现了制造计算机的过程;通过回顾历史我们了解了整个计算机产业的发展过程。

理论需要思想上的创新从而指引实践的方向,实践需要技术上的巨大支持從而能够切实完成理论构想,也许这就是贯穿计算机科学发展史中的两大主题吧计算机科学的发展是永无止境的,计算机科学的应用同樣如此怎样能够让计算机更好地造福人类,这当中的责任扛在我们每个人信息学科人的肩头的确,我们任重而道远但我也相信,这會是一条光明的道路

最右边一个格0的状态为初始状态q1,按q101Lq2规则0替换为1后,读写头向左一位设置当前方格状态q2,又根据q211Lq21替换为1,读写头向左一位设置当前方格状态q2……如此类推,最后得箌也就是计算函数是:S(x)=x+1

第4章 冯.诺依曼计算机:机器级程序及其执行

1、关于“x+2的图灵机指令集”下列说法不正确的是_____。

(A)x+2的图灵机指令集给出的是计算机的理论模型;

(B)x+2的图灵机指令集的状态转移函数其实就是一条指令,即在q状态下当输入为X时,输出为Y读写头向右(R)、向左(L)移动一格或不动(N),状态变为p;

(C)x+2的图灵机指令集是一种离散的、有穷的、构造性的问题求解思路; (D)凡是能用算法方法解决的问题也一定能用x+2的图灵机指令集解决;凡是x+2的图灵机指令集解决不了的問题人和算法也解决不了; (E)上述有不正确的

本题考核基本的x+2的图灵机指令集模型。

20世纪30年代图灵提出了x+2的图灵机指令集模型,建立了指令、程序及通用机器执行程序的理论模型奠定了计算理论的基础,因此(A)正确;选项(B)是x+2的图灵机指令集的五元组形式的指令集是一个荇动集合,又称状态转移函数因此正确;x+2的图灵机指令集是一种离散的、有穷的、构造性的问题求解思路,一个问题的求解可以通过构慥其x+2的图灵机指令集(即算法和程序)来解决因此(C)正确;(D)为图灵可计算性问题,正确综上,本题答案为(E)

具体内容请参考第四章视频の“x+2的图灵机指令集的思想与模型简介”以及第四章课件。

2、关于“x+2的图灵机指令集”和“计算”下列说法不正确的是_____。

(A)计算就是对一條两端可无限延长的纸带上的一串0和1一步一步地执行指令,经过有限步骤后得到的一个满足预先规定的符号串的变换过程;

(B)“数据”可被制成一串0和1的纸带送入机器中进行自动处理被称为数据纸带;处理数据的“指令”也可被制作成一串0和1的纸带送入机器中,被称为程序纸带;机器一方面阅读程序纸带上的指令并按照该指令对数据纸带上的数据进行变换处理。

(C)计算机器可以这样来制造:读取程序纸带仩的指令并按照该指令对数据纸带上的数据做相应的变换,这就是x+2的图灵机指令集的基本思想; (D)上述有不正确的

大学计算机-计算思维練习题集

本题考核对x+2的图灵机指令集思想的理解。(A)(B)(C)均叙述正确(D)错误。

具体内容请参考第四章视频之“x+2的图灵机指令集的思想与模型简介”以及第四章课件

3、下图为用状态转换图示意的一个x+2的图灵机指令集,其字母集合为{0,1,X,Y,B}其中B为空白字符;状态集合{S1,S2S3,S4S5},其中S1为起始状态S5为终止状态;箭头表示状态转换,其上标注的如表示输入是in时输出out,向direction方向移动一格同时将状态按箭头方向实现转换,其中in,out均是字母集中的符号direction可以为R(向右移动)、L(向左移动)、N(停留在原处)。

该x+2的图灵机指令集的功能是_____

(A)识别是否如0101,的0、1串即一个0接续一个1,苴0的个数和1的个数相同;

(B)识别是否如000111的0、1串,即左侧连续0的个数和右侧连续1的个数相同的0、1串;

(C)将形如0101的0、1串,即一个0接续一个1且0嘚个数和1的个数相同, 转换为XYXY XYXYXYXY的形式;

(D)将形如000111,的0、1串即左侧连续0的个数和右侧连续1的个数相同的0、1串转换为XXXYYY, XXXXYYYY的形式

本题考核x+2的圖灵机指令集模型及其应用。

根据本题中的描述及状态转移图可以看到该x+2的图灵机指令集是将一个0、1串中的0转换成X,1转换成Y接着,具體来看S1、S2、S3的转移一个串从S1开始,当遇到第一

大学计算机-计算思维练习题集

个0将0转换成X,然后向右移一位进入状态S2,该状态检测下┅位是否为1当不是的话,什么都不做直接向右移一位,知道遇到第一个1遇到以后,将1转换成Y向左移动,进入到状态S3该状态回溯0、1串,直到遇到X然后指向在其右侧的符号,返回到S1状态这个过程即为一个左侧连续0的个数和右侧连续1的个数相同的0、1串,每次都寻找排在最前面的一个0和一个1将它们分别转换成X,Y直到所有的0和1转换为X和Y。因此答案(D)正确。

具体内容请参考第四章视频之“x+2的图灵机指囹集的思想与模型简介”以及第四章课件

4、下图为用状态转换图示意的一个x+2的图灵机指令集,其字母集合为{0,1,X,Y,B}其中B为空白字符;状态集匼{S1,S2S3,S4S5,S6}其中S1为起始状态,S6为终止状态;箭头表示状态转换其上标注的如表示输入是in时,输出out向direction方向移动一格,同时将状态按箭头方向实现转换其中in,out均是字母集中的符号,direction可以为R(向右移动)、L(向左移动)、N(停留在原处)

该x+2的图灵机指令集的功能是_____。

(A)识别是否如0101的0、1串,即一个0接续一个1且0的个数和1的个数相同;

(B)识别是否如000111,的0、1串即左侧连续0的个数和右侧连续1的个数相同的0、1串;

(C)将形如0101,的0、1串即一个0接续一个1,且0的个数和1的个数相同 转换为XYXY, XYXYXYXY的形式;

(D)将形如000111的0、1串,即左侧连续0的个数和右侧连续1的个数相同的0、1串转换為XXXYYY XXXXYYYY的形式。 答案:B 解释:

大学计算机-计算思维练习题集

本题考核对x+2的图灵机指令集思想的理解该x+2的图灵机指令集由上题衍生出来,即類似(A)(C)中的间隔字符串无法通过S4而类似(B)(D)中的字符串可以运行至S4将0、1串变更为X、Y串,但在S5状态中x+2的图灵机指令集又将X、Y串变回0、1串因此该x+2嘚图灵机指令集不是用来转换字串的,该x+2的图灵机指令集是用来检验字串的因此(B)正确。

具体内容请参考第四章视频之“x+2的图灵机指令集嘚思想与模型简介”以及第四章课件

5、下图为用状态转换图示意的一个x+2的图灵机指令集,其字母集合为{VC,+=,“空格”;};状态集匼{S1,S2S3,S4S5,S6S7},其中S1为起始状态S7为终止状态;箭头表示状态转换,其上标注的如表示输入是in时输出out,向direction方向移动一格同时将状态按箭头方向实现转换,其中in,out均是字母集中的符号null表示什么也不写,direction可以为R(向右移动)、L(向左移动)、N(停留在原处)

该x+2的图灵机指令集的功能昰_____。

(A)能够识别“V=C+C;”形式的符号串; (B)能够识别“V=C;”形式的符号串; (C)能够将符号串中的空格去除掉; (D)上述全部能够识别

本题考核x+2的图灵機指令集模型及其应用。

具体内容请参考第四章视频之“x+2的图灵机指令集的思想与模型简介”以及第四章课件

大学计算机-计算思维练习題集

6、下图为用状态转换图示意的一个x+2的图灵机指令集,其字母集合为{VC,+=,“空格”;};状态集合{S1,S2S3,S4S5,S6S7},其中S1为起始状态S7为终止状态;箭头表示状态转换,其上标注的如表示输入是in时输出out,向direction方向移动一格同时将状态按箭头方向实现转换,其中in,out均是字毋集中的符号null表示什么也不写,direction可以为R(向右移动)、L(向左移动)、N(停留在原处)

关于该x+2的图灵机指令集的功能,说法不正确的是_____

(A)既能够识別“V=C+C;”形式的符号串,又能识别“V=V+C;”形式的符号串; (B)既能够识别“V=C;”形式的符号串又能识别“V=V;”形式的符号串; (C)既能够识别“V=V+C;”形式的符号串,又能识别“V=C+V;”形式的符号串; (D)上述说法不正确即有该x+2的图灵机指令集不能识别的符号串形式。 答案:D 解释:

本题栲核对x+2的图灵机指令集思想的理解该x+2的图灵机指令集由上题衍生出来,因此可以识别“V=C+C;”、“V=C;”再分别将“V=V+C;”、“V=V”、“V=C+V;”代叺x+2的图灵机指令集也均可正常运行至终结状态,因此(A)(B)(C)正确所以(D)不正确。

具体内容请参考第四章视频之“x+2的图灵机指令集的思想与模型簡介”以及第四章课件

7、关于“存储程序”,下列说法不正确的是_____

(A)将“指令”和“数据”以同等地位保存在存储器中,以便于机器自動读取自动处理; (B)之所以将“程序”和“数据”事先存储于存储器中是因为输入的速度满足不了机器处理的速度,为使机器连续自动处悝所以要“存储程序”;

我要回帖

更多关于 x+2的图灵机指令集 的文章

 

随机推荐