中,等候他的进一步调遣!
“调取两个‘异或’,三个‘与门’,一个‘或门’芯点!”程远的手指在托盘上划过“按照设计图上的形状,拼装出一个‘一位全加器’!”
芯点们精准地遵循着程远的指示,落到了另一侧的硅晶板上。随后程远的手指轻动,将这些芯点的“引脚”们一一连接了起来。他每绘制一条连接线,都需要付出一枚信息光点作为代价。
很快地,一组“一位全加器”算路成型!
随后,程远如法炮制,并将其它的大部分芯点加工后一一连接了起来……
“成型!”望着面前的一串有层次感的,可以真正实现整数加法运算的算路,程远满意地点了点头。
他自己并没有使用“三十二位超前进位加法器”,因为这个算路的结构过于复杂,拼装时的消耗也很大。但是他稍微取了个巧……他将“四位超前进位加法器”与“波纹进位加法器”的原理组合了一下,最终制作出了一串性能适中,结构又相对简单的算路——对于他当前的腕表所能够的时钟频率而言,这个算路的性能已经完全足够!
毕竟,在设计时,人们无法做到鱼与熊掌兼得,这时就要考虑到tradeoff,或者说需要作出一些取舍,以便在资源有限的情况下,让它们发挥出最大的效能。
“平均制作每个全加器算路……大概需要耗费一百六十枚最基础的信息光点。其中算路本身只包含四十枚光点,大约有四分之三在加工过程中消耗掉了。”程原的意念从通道中传来“消耗还是蛮大的啊,你刷一个小时的题目攒出来的信息光点,刚刚只够写完a——也就是‘逻辑运算单元’中的一小部分。而要实现整个cu,你还至少需要实现‘存储单元’和‘控制单元’几大块呢。”
“饭要一口一口吃。”程远乐呵呵地说道“我今天的效率比昨天已经高出一截啦。再说,有了加法运算功能,其它的功能距离实现也就不远了。”
程原不置可否地点了点头。其实从严格的意义上来讲,程远的说法并没有错。
在cu中,实现“减法”的方法其实异常简单——只需要将被减去的数字转换为“负数”,再将它扔进加法电路中,就能实现减能了。而将数字转换为“负数”的方法也很简单——在计算机领域中,人们已经形成了约定,用二进制数字的首位来表示符号……只要将这个数字中的每一位取反一下,它就可以直接变为对应的负数了。[1]
而乘法算路稍微复杂一点,但它的底层也是依赖于加法算路的。举个最简单的例子,如果要将一个数字乘上9,那只需要对这个数字连续执行九次加法,那自然就可以得到结果啦。
咳咳,当然在实际情况中,人们自然是不可能用这种笨方法的。实际上,人们会让cu使用一点类似于“小学生速算技巧”的手段比如,小学生速算12乘11,那可以将数字分解为12(10+1),相当于1210+121,这相当于一次移位运算和一次加法运算,计算起来就非常的简单了。而在cu中,也是同样的道理,只不过计算机使用的是2进制——在它的眼中,2,4,8这些数字才是人们眼中的“10”一样的整数。而之前的乘9运算,cu便会聪明地将它分解为乘(8+1)……它对cu来说,同样也只需要一次移位运算和一次加法运算!
这便是最基础的乘法算路的原理。
当然,比起加减乘法来说,除法的难度确实要高上一截……但是没关系,程远可以直接参考乃至照搬地球位面中前人的设计图!
甚至……对于程远来说,只要允许他使用判断、循环和取反操作,那即使这个cu只支持“加法”,甚至是只支持“+1”运算,程远都可以通过软件算法将自然数的加减乘除功能实现出来!
只不过,这个算法的效率会