关灯
护眼
第136章 打造算术逻辑单元
上一章 书架 目录 存书签 下一章
    在计算机中,二进制数是以补码的形式进行运算的。

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

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

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

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

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

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

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

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

    比如

    输入1,1,则输出1,0

    输入1,0,则输出0,1

    输入0,1,则输出0,1

    输入0,0,则输出0,0

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

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

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

    没错,就是这么简单。

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

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

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

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

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

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

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

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

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

    好吧,继续改进。

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

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

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

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

    “全加器”有多种设计。

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

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

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

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

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

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

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

    其功能也很简单。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    “咦居然值3024分”

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

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

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

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

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

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

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

    需要花费积分点,是否自动构建确认取消。

    江寒开心一笑。

    不错

    随后点击了确定。

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

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

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

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

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

    至于x86兼容机,就稍微麻烦一些,可能得努力一个月以上


目录 存书签 上一章 下一章
随便看看: 末日病娇萝莉三国之龙图天下重生之嫡女风华她的不二臣天降萌宝:老婆别跑!昭瑶而过签到从拳皇开始三千缘劫修仙攻略:开局我有六个风华绝代的师兄《重生之相府千金不好惹》团宠万人迷领了路人甲剧本后[网王]闪闪发光的龙马君穿越后我靠种地征服山大王末世重生之虚实之间落花人独立我才不要做替身gl重生团宠:疯批的小撩精是病娇!正道的光在恋综,爆红了都市修真:我,天庭之主!快穿女配:小戏精要体验生活