|||
对极高数位计算适用的一种拟并行算法带来的芯片革命
史丰收这套算法有两个特点,先说乘法:一是用交叉相乘法推广,二是提前把进位用判读的办法处理了,防止了进位对前输出位的干扰。这样就把把从后往前算变成了掐头算。古代算法据说有之,但是谁也没有用过。一直到文革中,在陕西大荔县下乡的西北大学学生发现,一个叫做史丰收的毛头孩子会这个算法,但是讲不出来么算的。于是陕西教育厅一个吴江声的厅长叫把这个孩子接到西北大学培养。
其实这个孩子的心算,如果是6-7位的加减乘除运算,比按计算器的测试着速度还快,以后全世界都推广了个算法。
但是还没有说清楚的是,孩子的手脚还是当计数用了的,这就提出一个附加问题,这套算法对计算机有没有用处?
我们从计算机芯片设计角度考虑,就可以加上一点,把史丰收手脚并用计数看成多排算盘珠子,把来不及进位在分段计算的进位,可以在延迟的节拍中间整合,这样就更提高了算法的并行程度。
计算机CPU的设计是按照算法来的,这样的算法可以提高高精度数值计算的速度是很显著的。这在科学上有没有意义?我们在科学殿堂里面还会碰到一些这样的牛人,信誓旦旦的说这就不是科学!但是我们看到,美国最新的CPU设计方案里面已经加进去了依靠判断提前进位,解决进位延迟问题。相信有一天,我们会看到这种思路会在计算机设计上开花结果。
因为这种算法实际把结果是从高位一段一段算出来,输出来的,这样就解决了数字串行运算一个难题,实际上把它弄成了拟并行运算。到现在美国最新的芯片设计才摆脱旧的模式开始考虑提前进位的芯片设计,史丰收的算法是最形象,最直观,最生动的一种解决串行运算进位的方法,他不仅在提高大脑运算速度和能力方面有用,在计算机设计方面也是很有启发意义的,尤其现在并行计算已经到了瓶颈的情况下,也需要改变思维,考虑新的算法带来串行计算的意义。
他这种方法把从低位高位的串行运算变成了从高位到低位的拟并行运算,还不止这样的内部并行,由于计算结果是从高位输出的,那么输出的结果马上就可以接着和下面数据的高位进行下一部的处理。如果把计算芯片成组成一群像史丰收大脑这样的计算单元联合起来,前面算过的高位马上报给第二名接着算,这样,在处理密码的极长数据运算问题上,就可以把那个长数据砍成一段一段来算,先算头,后算尾,如同一个联合生产线,每个工序只算一位,就立刻传到下一道工序,一条线上面摆的机器越多,就加工哦那个越快。越是长的数据(一万位吧),越有优势。想象一千个处理器联合起来蚂蚁啃骨头,处理一个原来一个处理器计算的大数据,这种速度的提升是可怕的!一亿位的数据处理呢?这种算法得到的结果越奇异!
说道运算,就离不开进位,史丰收的通过判读提前进位是这种拟并行方法的保证,这一点也可以改进,因为计算机不像史丰收的脑子只能记三、四进位,计算机把进位也可以像矩阵一样的处理,就是说:研究史丰收算法必然得到第二条把串行运算变成拟并行的好处,这就可是以使得进位也变成拟并行,依靠判断提前得到的进位其实也是可以和主要数字的运算脱离的,就像本位数字一样进行从前高位向后面低位运算,而且进位也可以独立起来,就像中国老算盘那样,一个数字不一定只用一排数表示,可以用一排数字和他的几排不同节拍下的进位合起来表示,我过去对算盘上面两排珠子一直不得其解,现在考虑一下拟并行问题,几个手同时打算盘,显然算盘比日本一排珠子的设计要好!
这样的数就写出来不是一排,而是多排,一位数字的肩膀上还可以写上它的进位,进位的肩膀上还可以戴上进位,可以把这种数字的描述体系叫做肩膀数,或者叫算盘数系,这是一种在计算机里面容易应用的数系,在不同的节拍里面,基本排面的数字和他携带的进位包袱一同进行不断整理和运算,实际上构成了一套从前往后计算,计算机如同多个流水线处理信息的新算法,这套算法必然大大加快了CPU或者GPU的运算速度。
冯.诺依曼计算机出世70年了,不论用补码原码,CPU改动不是很大,而主要发展是在速度及多核并行上面。急需CPU的根本性设计变化。
可以毫不夸大说:史丰收速算法是直接凭大脑进行运算的方法,又称为快速心算、快速脑算。它打破人类传统一般情况下从低位算起的方法,运用进位规律,由高位算起,加快计算速度,把数字运算从串行发展到拟并行,也给当代应用数学提供了加速计算机串行运算速度的新路子。冰山只漏尖尖角,水下面还有大头,还有待开发,“这孩子”走的太早了。
我写这篇文章,其实30年前就写好了,但是被弄丢了,今天拿出来,一来纪念史丰收,二来希望这种算法在计算机上面的应用首先在中国开花结果。
希望芯片设计的盆油关心此事,80年代美国计算机芯片设计里面也提到提前判断进位,和分段运算,但是那时处理位数很少,关键设计者没有考虑类似中国算盘多一排珠子,甚者多两排珠子的进位的缓存作用,没有从数的结构上改革,也没有搞大型串行运算,30年来
我国cpu设计基本看美国,从属于美国,现在国力强了,这个串并行的算法可以进入芯片级的算法设计里面了.
总而言之,中国串行CPU 新概念有由部分组成
1、提前进位,加交叉相乘的史丰收算法逻辑。
2、类似中国算盘多排高档珠子的进位缓存。缓存数码和原来运算数字一样进入进位判断和交叉相乘的逻辑运算
3、数据分段运行,输出高位以后,接着进行串行处理下一个运算数据的高位,每节拍要整理落后的进位缓存,下一个数据高位也投入运行。
依此类推,位数越高,一拍之间,参加计算的数位越多。
对于极高字长位数码的运算,计算速度随着分段数千百倍提高。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-22 19:12
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社