一位全加器电路图
大家好!我带领大家进入了一个神秘的数字世界,那就是计算机内部的CPU世界。你们知道吗,CPU虽然看似高端神秘,但它的制造原理其实与我们的日常生活息息相关。
想象一下,如果给我足够多的开关,我能否制造出CPU来?答案是肯定的,但这个“足够多”的数量是相当庞大的。而本文的目的,就是要带大家具体看看这些开关是如何在CPU中实现其计算单元之一的——加的。
我们来了解下半加器。半加器是对两位二进制数进行加法操作的元器件,它具有两个输入端A和B,以及一个输出端S和一个进位数C。我们观察A、B与S、C的关系,很容易就能找到它们之间的关系表达式。
有了表达式,我们就可以开始画出其电路图了。将这个电路进行封装,模拟其效果,我们会发现模拟的结果与真值表中的是一致的。
半加器虽然能进行加法操作,但它不能处理进位。这时候,全加器就派上用场了。全加器与半加器相似,但多了一个接收进位输入的端。这样,全加器每一次都会考虑来自低位的进位。
当我们需要对一个字节的信息进行加法操作时,我们只需将8个全加器串联起来即可。无论是16位、32位还是更多位的加,只需按照这个原理串联对应数量的全加器即可。
这种串联式全加器存在一个问题,那就是高位运算需要等待低位是否有进位,因此会有延迟。为了解决这个问题,我们有了超前进位加。超前进位加的进位是通过统一的超前进位逻辑计算出来的,因此其门延迟与加法的位宽度无关。
虽然超前进位加的门延迟优势明显,但如果位数过多,电路会变得非常复杂。在实际应用中,我们通常会采用多个小规模的超前进位加拼接成一个较大的加。
从基本电路到门电路,再到半加器、全加器和加,我们的CPU就像是在搭积木。虽然使用基础的电路可以实现操作,但使用封装后的电路可以使得操作更加简单。封装也意味着需要更多的电路,可能会导致速度变慢。
我们主要通过逻辑电路实现了不带符号的整数加法运算。那么,如果整数是带符号的加法运算或减法运算逻辑电路该怎么实现呢?这需要我们进一步思考和探索。
本文内容只是关于CPU内部加实现的一部分。若想了解更多关于计算机组成的秘密,比如RISC和CISC孰优孰劣、源码解析、科技故事等,欢迎关注我们的公众号“小牛呼”,我们下期再见!
参考资料:
1. 一个8位二进制CPU的设计和实现,踌躇月光
2. 《深入理解计算机系统》
3. 《编码:隐匿在计算机软硬件背后的语言》
4. 《深入浅出计算机组成原理》
5. 其他网络资源,如各技术博客、论坛等
感谢您的阅读!希望这篇文章能对您有所启发和帮助。如果您喜欢这篇文章,请点赞支持我们!