冲击固有思维——非冯诺依曼体系

14-06-19 SpeedVan
很久没上jdon了,回来看了下,回过贴,提到一个词:非冯诺依曼。(尽管我是JAVA向的,但我热衷的还是函数和逻辑式。在我每次的探索中,总发现指令一直是约束程序员思维的东西,但我每次都否定不了,正因为冯诺依曼体系。发现这一点后,我到达了新天地——非冯诺依曼体系。以下用“冯”代表冯诺依曼体系,“非冯”代表非冯诺依曼体系)

很多人心里都有这样的想法,“冯”就是真理,无论我们搞什么理论都建立在它之上。曾经各种语言的比较,都没有从计算机体系上找问题,各种效率论来拒绝人们的进步的探索。为什么?因为这块基石不是那么容易撬动,同时这是大多数程序员依赖的东西,否定它就等于否定自己的知识基石。只要这块基石动不了或不敢动,那么不适合“冯”的语言就要面对这快巨石,一种语言要面对巨石,而另一种不需要面对巨石,这胜负一开始就决定了(巨石不单单是效率问题)。

在“非冯”势力中,有两种比较普遍的说法来指出“冯”的问题所在(同时这样问题,与指令式和函数、逻辑式之间的问题有着巨大的关系)。

说法一:“冯”是指令向的,传统“冯”是流式处理,效率问题使得并行“冯”的出现,但问题依然存在:

1、仍然需要指出执行顺序的程序计数器。

2、共享储存。

说法二:这种说法几乎就跟语言对比相似之极。

1、指令与数据混合储存,内存都存了指令和数据都在一起。提高了复杂性。

2、存储和指令执行都是一维性的。

3、同时软件和硬件完全分离,使得存在冯.依曼语义间隔。(指令的高级语言都有问题,更别说函数和逻辑了)

这些问题促使了“冯·诺依曼体系结构-非诺依曼化”。

“冯·诺依曼体系结构-非诺依曼化”

这东西其实是jdon上一直承认着,只是不知道而已,就是多核计算和多计算机并行计算。而在此基础上我们一直进行着并行计算的探索和研究。实际上,还有一种手段进行非“冯”化:只要数据准备准备好,就可以计算,而非一步步执行,这方式是从根本上非“冯”化,但仍在研究中(倘若存在,函数和逻辑可以完全击垮指令)。

非“冯”化最具代表性的就是“哈佛结构”。

后话:冯诺依曼体系就是指令横行的世界,函数与逻辑要在上面运行,必须要绕不少弯路,本来非常简单的问题,却要巨大的消耗。所以,乖乖接受指令的统治吧。

10
banq
2014-06-19 13:14
2014-06-19 12:11 "@SpeedVan"的内容
非“冯”化最具代表性的就是“哈佛结构” ...

这个要学习一下。

liseri
2014-06-22 16:25
非冯体系一直都存在啊,比如模拟电路也可以计算,模拟电路肯定是非冯的,就算是数字体系也一直有FPGA等非冯模式;我认为非冯可以有两种思路,一是电路层面,二是逻辑控制层面;电路层面例如上面提到的模拟计算机机,还有量子计算机,这种是颠覆是大革命;逻辑控制层面来说,程序语言或者说指令,说白了,就是电路执行的配置文件,整套的配置体系是个系统工程,需要权衡电路与逻辑配置文件的编写两者。电路有什么并行串行之分,你想让他一步一步执行就是串行,如果你能充分控制,能并行则并行么,否则要流水干什么,否则为什么有CISC和RISC的二分天下。当然有这种想法是极好的,各行各业,就算只说计算机领域,什么大数据的,都在分布化,并行化,自组织化,涌现化,其实质是系统科学。建议你看看这方面的书,或许会对你有启发。

SpeedVan
2014-06-22 21:46
2014-06-22 16:25 "@liseri"的内容
非冯体系一直都存在啊,比如模拟电路也可以计算,模拟电路肯定是非冯的,就算是数字体系也一直有FPGA等非冯模式;我认为非冯可以有两种思路,一是电路层面,二是逻辑控制层面;电路层面例如上面提到的模拟计算机机,还有量子计算机,这种是颠覆是大革命; ...

一、理所当然。的确一直存在,但不要忘记我们一直活在“冯”的基石上。现在人们在这基石活得太久了,于是出现在此基石上拿效率来评价函数和逻辑系语言。(我过去很这样比较着,觉得自己可笑)

二、死性不改。人们都在追求计算机的速度,但一直在冯上面提并行速度,我觉得是在死马当活马医一样——哪怕看起来活了,其实还是死了。现代CPU已经类哈佛结构了,速度爽不爽?但计算机体系呢?死死的一个“冯”,没任何改变。

三、成也萧何败也萧何。现在编程领域为指令式所统治,我认为很大原因是“冯”。统治就容易忽视其他,甚至忘记。指令式适合是因为“冯”,而也是因为“冯”,计算机才会快不起来。

也正因为这三点,才提出“非冯”。

ice13
2014-06-23 14:45
对这个问题没什么研究,今天看到感觉挺新鲜,也百度了一下哈佛结构。但有个问题我一直没弄明白:即使是把指令和数据分开存取,还是没能摆脱cpu的流式处理,最多就是把效率提高一倍。

非“冯”化,如果不能解决cpu逐条处理指令的方式,那怎么非冯化呢。

“只要数据准备准备好,就可以计算,而非一步步执行,这方式是从根本上非“冯”化” 这种方式让人充满遐想,现实中是否有这方面的基础研究呢?

SpeedVan
2014-06-23 18:14
2014-06-23 14:45 "@ice13"的内容
对这个问题没什么研究,今天看到感觉挺新鲜,也百度了一下哈佛结构。但有个问题我一直没弄明白:即使是把指令和数据分开存取,还是没能摆脱cpu的流式处理,最多就是把效率提高一倍。

非“冯”化,如果不能解决cpu逐条处理指令的方式,那怎么非冯化呢。 ...

哈佛只是非冯中的一种,要注意流式读取和流式执行区别。正因为指令和数据加以区别,所以并不需要得到结果才读取下一条指令。有点类似强一致性与弱一致性的区别。

数据准备好就执行的是数据流计算机

[该贴被SpeedVan于2014-06-23 18:20修改过]

SpeedVan
2014-06-23 18:29
可参考这文库的资料数据流机和规约机

liseri
2014-06-27 00:35
1、赞同你的“统治就容易忽视其他”,任何事物都有其现实性与历史惯性。

2、还是我说的“如果你能充分控制,能并行则并行么”,人类思维方式的外在表现就是串行的,叫并发的也可以,其实质中当然有并行如联想、发散等高级功能,问题是人类自己对这些的机理都闹不清楚,目前还不具备充分控制并行的工程基础,至于对这方面的阐述性理论学说便是系统科学。

3、如果中国人在这方面开创了先河,那么中国就真正崛起了。

4、现在国内外许多人在搞这个,上海有个院士领导的团队搞什么拟态计算,不知道是不是吹的。

5、系统科学的核心之一便是研究自下而上的涌现,光靠院士不行,理解“贴主”心中所想,加油!

SpeedVan
2014-06-27 09:54
2014-06-27 00:35 "@liseri"的内容
1、赞同你的“统治就容易忽视其他”,任何事物都有其现实性与历史惯性。

2、还是我说的“如果你能充分控制,能并行则并行么”,人类思维方式的外在表现就是串行的,叫并发的也可以,其实质中当然有并行如联想、发散等高级功能,问题是人类自己对这些的机理 ...

人类思维方式表现是不是串行我不敢确定,但我们认为我们不是上帝的话,就无法把世界串起来。如我们分头做事的时候,我无法将我的思维切入到你的思维里。一直困扰并行的是干扰问题,现在唯一能解决这问题的是光连接技术。

拟态计算论文没找到,百科上说“计算结构作为高阶函数”、“计算结构的函数化是拟态计算的本质”。高阶函数是可被计算,同时也是可计算,计算结构如何可计算?这方面自身资料实在少,计算结构会不会有其他定义也不得而知,期待相关论文出现。

banq
2014-06-27 10:20
2014-06-27 09:54 "@SpeedVan"的内容
计算结构如何可计算?这方面自身资料实在少 ...

可计算性这个概念主要由Alonzo Church提倡,它的λ演算,也就是 Lambda Calculus ,可见What is Lambda Calculus and should you care?

我从我自己理解胡言乱语几句,将结构进行可计算化,实际就是将能够进行逻辑化的都实现逻辑化,逻辑重要特点是什么?不是我们受教育讲的“矛盾”,而是“一致性”,逻辑的一致性是高于矛盾的(和谐高于阶级斗争),而一致性都是动态流式,比如1+1=2,这个计算公式是流式的,也体现了逻辑一致性。再比如道生一,一生二,二生三,三生万物,这是一个相生的流式表达式,体现了逻辑相生方面的一致性,在数学上可表示为加法或乘法。

是否可以得出:凡是逻辑一致性的都是可计算的,流式都是可计算的。因为流式是动态的,可计算本身表现为动态,所以,这些概念应该没有问题。

流式动态和结构静态是两个相对的概念,比如设计模式结构模型是属于结构静态,而行为型模式属于流式动态。面向对象属于结构静态,而函数属于流式动态。

Google的搜索引擎是结构静态的,以“有容乃大”见长,但是facebook twitter则以流式动态见长,以每个人为核心,博主随着时间不断发帖,这种时间流的形式是动态的,实际证明社交媒体威力要超过Google搜索引擎,Google也在改变自己的结构思维,积极地靠拢流式计算,比如google推出的pipeline统一了大数据批处理和流处理,google过去推出的Map/reduce是一种结构计算,因为google需要解决大量结构上的数据,对实时性要求不高,google搜索到的都是一天前或很久以前的数据,因为他们缺乏流式动态思维。不过现在明白过来开始追赶。

以上都是江湖言谈,与正统学术无关。

[该贴被banq于2014-06-27 10:20修改过]

liseri
2014-06-27 12:45
2014-06-27 09:54 "@SpeedVan"的内容
高阶函数是可被计算,同时也是可计算,计算结构如何可计算?这方面自身资料实在少,计算结构会不会有其他定义也不得而知,期待相关论文出现。 ...

1、我个人认为计算结构可以包括除了数据外的所有元素,包括电路和逻辑(或算法),那么计算结构可计算就可以理解为,算法可变,算法可自动生成,甚至电路或电路的抽象层可变,可根据计算环境的变化而变。冯和图灵的那套东西就是算法与数据的分离,真正的生物计算从来都是算法既是数据,数据又是算法,两者相互联系不断发展,最终衍生出智能。百科中说“通用和专用计算机的体系结构是拟态计算机执行机构与应用和环境无关的应用特例”,将环境做为计算要素包含进来是系统科学的核心之一,也是智能领域的较新发展方向之一。

2、shi啊,谷歌学术不能用了,我以前搜过,拟态方面的论文还是不少的。

px96004
2014-07-11 14:24
非冯的话,咋编程呢?

也能用C 和 JAVA么?

猜你喜欢