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

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逐条处理指令的方式,那怎么非冯化呢。

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

3Go 1 2 3 下一页