【☎第三章附录3,如何优化《异星工厂》中的逻辑电路延迟?】
说是优化,但其实只是以信号电路特性的角度出发,从我们造出金碧辉煌的依托答辩结构中剔除所有不需要的答辩罢了()。 作为附加内容不会特别深入到算法层面(比如用移位优化乘法,用德摩根律优化按位操作,用查表优化加减法等),主要只涉及如何优化逻辑电路的延迟。
总结了一下,我主要以以下几条原则来优化工厂里的逻辑电路延迟:
1,如果把三极管的VDD供电端也看作布尔值输入端,那么它本身就相当于一个与门(是的,“与门”其实也常用作“单路开关”)。再加上工厂的信号电路永远不会短路/没有噪音/没有信号丢失/没有衰减,且默认带电阻接地;所以我们上面用两个判断器搭的“三极管”实际上是个“传输门”。在某些情况下完全可以用这个传输门替代与门。
2-1,【并联三极管结构】(或门/与非门)的门延迟通常都比【串联三极管结构】(与门/)的门延迟更低。且并联三极管逻辑门的各个引脚延迟都是一致的,都是一个逻辑门的延迟T。而串联三极管结构因为串联次序的不同,不同针脚之间可能会有n tick的延迟差异,总延迟会在T~T+n之间波动(n是你串联三极管的个数)。
2-2,所以我们可以用【德摩根律】和【单引脚取反】来大幅简化逻辑门,甚至基本可以把所有逻辑门都简化成并联三极管的结构,以此来降低延迟;或者得到一个更加稳定可控的延迟。
*(3,虽然一般是非法操作,但在《异星工厂》中你可以把n个输出引脚直接并联在一起来替代或门OR GATE。【*但要时刻记住,在《图灵完备》和现实世界mos电路里不可以这样做!】)
——但考虑到,lz我希望能在《异星工厂》中做出一个可以在《图灵完备》里正常运行、完全同构的逻辑电路,lz我将主要以前几条原则来优化逻辑电路,括号里的第3条仅作为演示——实际上你不应该在任何地方随意并联逻辑门的输出。
因为加法器延迟最高的元件是XOR异或门,延迟是与门的两倍。所以优先考虑优化XOR元件。
根据上一章结尾的分析,一个开关(传输门)实际上相当于一个与门,而非门开关则实际上相当于一个定制与门:
(*↑↑↑左下角定制与门引脚画反了,,算了不重要==)
而因为传输门的输出有三种:0(VSS)、1(VDD)、0(高阻抗),传输门的输出可以直接并联(*但要确保不会在并联后的总线上同时输出VSS和VDD,否则还是会短路)。
↓试一下,在图灵完备中这个结构是可以运行的:
然后用开关(TG传输门)替换AND与门,这样就可以并联传输门的输出:
↑↑↑但唯一的缺点是当输出同时为1时输出的是高阻抗而不是VSS。可以再加两个开关,实现“A=1且B=1时,输出VSS”:
↑↑↑可以看到,正常输出!当A=B时,总线上总有引脚可以输出接地电压0=VSS。这个XOR门正常运转,且延迟只有4。
试着在异星工厂里应用一下:
成功!延迟只有3~4tick,甚至可以和延迟最低的NAND门一战!
因为我们在工厂里造出的元件不区分VSS和高阻抗,所以只使用简单结构xor即可,不需要我们上面在图灵完备里优化过的复杂结构xor。但要注意这个xor比较特殊,它【没有直接与电源总线VDD连接】。
它是一个纯机械开关,不需要电源总线来驱动。但如果没有布尔输入也永远不会启动。
↑↑↑顺手做一个XNOR同或门。原理同上,传输门输出直接并联来组个小总线,然后把NOR和AND分别拆分成基于传输门的结构,最后补一个传输门用于输出VSS,大功告成!
试了一下,如果想要实现低延迟XNOR,很难不借助非门来完成“A=0且B=0时输出1”的逻辑。在XOR的逻辑之上使用非门总会让延迟超过5tick。所以最终延迟最低的XNOR同或门组成方式只能是并联NOR和AND。
这么着急弄XNOR是为了以后做超前进位加法器CLA。图灵完备里XNOR延迟比XOR低2tick,依此可以把大量AND串联运算转化为NAND并联运算,大幅降低总延迟。不过异星工厂中因为电路特性,反而是XOR延迟比XNOR低2tick。希望能据此做出延迟更低的加法器。
敬请期待。