奇书网

字:
关灯 护眼
奇书网 > 重生学神有系统 > 第136章 打造算术逻辑单元

第136章 打造算术逻辑单元

    在计算机中,二进制数是以补码的形式进行运算的。


    这样做的目的,是为了用统一的方式,来进行有符号数的加减法运算,使得硬件复杂度最小化。


    关于补码的运算规则比较复杂,这里不多展开。


    江寒首先要实现的,是最简单的“半加器”。


    其功能十分简单,就是实现两个二进制位的加法。


    之所以叫“半加器”,是因为输入只有两个,不考虑其他运算产生的进位。


    它的两个输入位,只允许传入两个1位的二进制数:1或者0。


    输出的运算结果,也有两个二进制位。


    一个叫sum位,表示“和”;另一个则是carry位,保存着“进位”信息。


    比如……


    输入:【1,1】,则输出【1,0】


    输入:【1,0】,则输出【0,1】


    输入:【0,1】,则输出【0,1】


    输入:【0,0】,则输出【0,0】


    输出中,前面的是carry位,后面的是sum位。


    如果单看sum位的取值,这不就是把输入进行了xor(异或)运算的结果吗?


    再看carry位,它的取值也很有规律,就是个and(与)逻辑。


    没错,就是这么简单。


    只要将一个“异或门”,并联上一个“与门”,一只半加器就做成了。


    做好了这只半加器后,江寒又将其改造了一下。


    为了缩减工艺难度,统一基本元器件的种类,可以只用“与非门”,去实现所有的逻辑运算。


    江寒很快就完成了这个计划。


    毕竟一只“半加器”的构造,实在很简单。


    当然,这里也可以使用“异或门”或其他什么门,效果都差不太多,没什么本质的区别。


    江寒试着将这只半加器扔进了“回收站”。


    也不知道,这么简单的“半加器”,到底值多少积分?


    结果没什么惊喜,只有可怜的1.6分,远远不能保本。


    好吧,继续改进。


    接下来,江寒将“半加器”改造成了“全加器”。


    和“半加器”相比,“全加器”只多了一个输入位。


    也就是说,输入端包含了3个二进制位。


    之所以这么做,是考虑到了来自其他数位的进位。


    “全加器”有多种设计。


    最简单的设计,可以用两个“半加器”,加上一个“或门”来实现。


    多个“全加器”级联,就成了“多位全加器”,也叫“加法器”。


    随后,江寒还实现了另一个基本运算器件:“增量器”。


    “增量器”的功能只有一个,给输入的数据加1。


    随后,在以上工作的基础上,就可以打造出可运算n位二进制数的“加法器”了。


    但在实现之前,江寒再次打开“商品列表”,买了几张“空白图纸”。


    这玩意是他前几天翻阅元件列表时,无意中发现的。


    其功能也很简单。


    将其与任何作品一起回收,系统都会自动生成对应的图纸,并将其收纳于【图纸列表】中。


    说实话,江寒对这个功能还是挺欣赏的。


    尽管要多花一些积分,但至少省了手绘图纸的麻烦。


    江寒将一只“与非门”和空白图纸一起扔进了【回收站】。


    点击了确认以后,作品与空白图纸同时消失。


    几乎与此同时,图纸列表更新了,多出了一个《与非门》的条目。


    这样,以后再构建复杂元器件时,就不用每一个“与非门”都手搓了。


    代价只是稍微多花一点点积分而已。


    江寒试验了一下,发现自动构建一个“与非门”,需要花费27.2分。


    这个电路只需要5个晶体管,价值25分;导线等等算0.2分。


    这样,江寒只需要额外多花费不到8%的积分,就可以自动化生产基本部件,从而避免了大量的重复性机械劳动。


    接下来,他又将“半加器”、“全加器”、“增量器”……全都制作成了图纸,留待以后使用。


    没办法,谁还没有一点儿收集癖呢?


    接下来,江寒就让系统帮忙,大批量生产“与非门”。


    点开图纸列表,然后手指飞速点动:【与非门】、【确认】、【与非门】、【确认】……


    十分钟后,工作台上已经出现了一大堆“与非门”电路。


    与手工打造相比,自动构建的与非门有一个明显的优点:规格、造型都极为统一。


    这无疑是一件很好的事情。


    接下来,江寒将这些“与非门”连接成了“加法器”。


    这是一只32位的加法器,最多支持32位有符号数的加法。


    接下来,江寒开始进行今天的最后一个大工程,打造一只“算数逻辑单元”,也就是alu。


    其包括32+32位的输入(x,y),和32位的输出(out)。


    此外,内部还实现了一些函数,并设计了6个输入标志位:zx、nx、zy、ny、f、no。


    每个标志位分别实现不同的基本指令。


    如zx表示输入的x置0,nx表示对输入x取反,no表示对结果按位取反……


    f为0时,执行add指令,做加法运算;


    f为1时,则执行and指令,进行位与运算……


    通过这些标志位的不同组合,还可以实现更加复杂的功能。


    6个标志位,最多允许处理2^6,也就是64种不同的指令。


    此外还有两个状态位:zr和ng,根据运算结果,将它们置0或1。


    这个alu可实现的功能,包括输入数相加、相减、位与、位或、取反、取相反数、自加1,自减1、清0、置1、置-1……


    随后,江寒利用刚才生产的一系列“与非门”,将其手工搭建了出来。


    经过反复测试,所有功能都能正确执行,这也就意味着,这只超简易的alu,到这里就算打造成功了。


    接下来,当江寒试着将其扔进回收站时……


    “咦?居然值3024分?”


    而成本才不过1800多分,也就是说,每台净赚将近1200!


    虽然回报率很可观,但用这玩意来刷分,并不会比“无线电发送装置”更有效率。


    因为,打造起来实在太麻烦了,足足3个多小时,才能打造出一个。


    而且,每时每刻都要极度小心、细心、耐心,无论哪个地方,都不能出一点点小问题,否则,都会导致全盘失败!


    不过,江寒很快就想到了一个可能性。


    江寒将其和一张“空白图纸”一起扔进了“回收站”,卖掉。


    然后去图纸列表里看了一眼。


    【需要花费积分1890+1238点,是否自动构建?确认取消。】


    江寒开心一笑。


    不错!


    随后点击了【确定】。


    只多花了不到100分,就将alu再次购买了回来,还额外获得了一张图纸。


    接下来,就是继续提高设计复杂度,做出真正的cpu来!


    当然,这不是一朝一夕之功。


    今天已经很累,就先到这里。


    以后每天晚上来做一点,估计几天之后,一个简单的晶体管计算机就能出炉了。


    至于x86兼容机,就稍微麻烦一些,可能得努力一个月以上……
『加入书签,方便阅读』
内容有问题?点击>>>邮件反馈
热门推荐
斗破苍穹 甲申天变 可笑,我走后,你连皇位都坐不稳 大奉打更人 记忆曝光:我被直播审判,全华夏泪崩了 牧者密续