也因此,他得到了法师协会大量的扶持,名声斐然。
接下来,在需要对数据进行规整化批量输入的机械上,大量采用了这种穿孔卡。穿孔卡片又逐渐进化为穿孔纸带,更方便制作、输入,也就是目前兰恩和康拉德眼前摆着的这种。
在对中继器计算机进行最初的设计时,康拉德为了尽最大可能整合市面上的已有技术,选择了使用穿孔纸带作为输入的方式。
在伊扎德一号中,程序是以微指令的方式存在的,将程序通过穿孔机刻在穿孔纸带上,在计算机的输入部分输入穿孔纸带上的程序,然后在一个类似计算器上的键盘中,输入数据。
满足条件后,机器会自动计算。
穿孔带大概有三厘米宽,上面可以用穿孔机,在每一个长度上,同时在八个位置做出“穿孔”或者“不穿孔”的动作:每一次穿孔,就是八位二进制数。
其中,前两位数作为控制指令,后六位数作为内存地址。
计算机读取程序完毕后,可以按照程序的控制,从数字键盘上读取浮点数,然后送入算术逻辑单元进行运算。
康拉德在一张纸上写完了程序,迫不及待的递给兰恩:“兰恩你帮我检查一遍,确保不出错。”
“好的。”
接过这张潦草的,写满了简单指令的纸,兰恩忽然有些感慨:
自己这是在debug吧
“兰恩”
“噢噢,不好意思有点走神。”听到康拉德发现异状后的催促,兰恩不好意思的说道。
他迅速的将程序检查了一遍。
“没有问题,康拉德,我们可以开始制作纸带了。”
康拉德真是个很棒的程序员,这就是所谓的“一次编译通过”啊,兰恩想。
“太棒了”听到兰恩确认的话,康拉德瞬间行动起来。他以刚刚一倍的速度,将纸带装在穿孔纸带机上,然后郑重又谨慎的敲下了第一个字符。
斥力符文运作,吭哧一下,在坚韧的特制纸带上,将第一排孔打好。
然后康拉德敲打的越来越熟练,手速越来越快。
兰恩在一旁看着他的输入,防止出错。他还准备等纸带打好,再用纸带对照着纸上的程序检查一遍,确保万无一失。
伴随着斥力符文吭哧吭哧的声音,一条长长的、布满了规则且富有韵律孔洞的、淡青色的纸带,从机器里慢慢的吐了出来。
第123节迟到第一更
“完成了。”
兰恩上前,将纸带小心翼翼的接到手里。
看着手中这条半尺长的穿孔纸带,他心情很好,尤其是检查后发现完全正确后。
康拉德早已经跑到一边,将能源接上伊扎德一号,待初始化完成后,打开输入设备穿孔纸带读带机。
兰恩走过去,认准手中穿孔纸带的方向,将纸带小心的卡入,打开开关。
纸带被缓缓的吞了进去,与此同时,伴随着幽幽的蓝光和连成一片的咔哒咔哒声,伊扎德一号里面的符文回路也开始工作。
在玻璃盖子下面的符文回路中,随着8赫兹注1的时钟控制器运作,穿孔纸带上的孔洞被解码器读取,存入两个寄存器中。随着微指令被解析,机器中断,操作面板上一个发光符文亮起。
“我来。”
康拉德兴奋地抢过了操纵权,他拿过刚刚兰恩准备好的数据纸张,走到十进制输入键盘前,输入第一个浮点数,然后按一下旁边的小杆。
穿孔带又移动了一格,康拉德依次输入后面的数据。
随着所有的十八个数据输入完毕,在微序列器控制下,寄存器通过总线,按照穿孔带输入的地址,从内存中取出了刚刚输入的数据。然后,按照穿孔带输入的指令,将数据送入了算术运算单元,进行加减乘除操作,运算结果被放回内存。
由于此次计算的是3x3矩阵的乘法,因此机器执行的是乘法间隔加法的操作。
随着连成一片规律的响声,幽幽的蓝光中,这台机器像活着一样,将数据按照程序进行精密而准确的运算,宛若一台编织数据的织布机。
可惜第一个程序不是输出“你好,世界”兰恩遗憾的想到。
不过也不能对这台非图灵完全的机器要求太多,诶不对,现在应该叫艾伦完全或者麦席森完全。
而且“你好”世界这句话,也是等高级语言出来后才有的,现在为时太早。毕竟现在使用在穿孔纸带上的控制程序,直接使用的微指令,抽象层次上还不如汇编语言。
对于兰恩来说,面前这台伊扎德一号中继符文计算机,最大的遗憾,是没有设计条件分支和无条件分支,更遑谈分支预测或者动态执行等先进技术。
其次,就是对于结果为0的异常处理做的不好,这是个不小的隐患。
而最后一点,就是数据的来源问题。由于穿孔纸带无法直接设常数,所以所有的数据,要么是用户从十进制输入面板上输入的数据,要么是计算机计算出的中间数据。
接下来,可以考虑将数据输入改成同样使用穿孔纸带,这样可以提前一次性将数据读入内存。而不是现在这样,总要让高速的计算机中断下来,等待缓慢的人工输入,这是对性能的巨大浪费
在兰恩放飞思绪的时候,计算机已经将穿孔纸带吞入完毕。
结果被显示在十进制显示面板上,面板很粗陋,直接用十个一列的发光符文对应单个数字,七列符文的阵列组成一个七位浮点数的输出。面板上一共有十二个显示单元,支持同时显示十二个数据结果。
“算完了”,康拉德说道。
然后他在手中的纸上,记下最后一个数字:“我们验算下。”
兰恩看到他抄起一张纸,开始手动计算刚刚的矩阵乘法结果。
“完全正确,我们的设计没问题。”
同样的矩阵乘法运算,康拉德的计算速度,明显比面前这台伊扎德一号慢三倍以上。
“不错再来个4
gu903();