主流 02.2
二 - 择一
ZerOne主流 02.2|二 - 择一 · ZerOne
01. 还是沙子
“计算机只认识 0 与 1”,大概是计算机领域流传最广的半句真话。
我承认,这句话也不全错;但它极易让人误会——总让人觉得 CPU 里住着数十亿个傻子。
事实上,计算机连 0 和 1 也不认识——芯片中并没有微小的数字到处乱跑。
真正存在的是电压、电荷以及电路呈现出的不同物理状态。
所谓 0 与 1,只是人类为两类能够被电路可靠区分的状态取的代号。在常见的数字电路中,它们通常表现为两个不同的电压范围。
毕竟我们总不能指望一个原料是沙子的玩意直接理解数学意义上的 0 与 1不是吗?
因此,二进制真正重要的,从来不是 “零” 和 “一” ,而是 “二” ——机器只需要可靠地区分两种状态。
02. 为什么是“二”?
既然二进制真正重要的是 “二” ,那么问题也就来了——为什么偏偏是二?why?
三难道犯了什么错吗?这么看其实十进制也相当不错——毕竟咱已经使用了相当长时间的十进制了,并且暂时没有因为手指太多而导致文明原地爆炸。
如果只考虑能够表示多少种状态,那么对比二进制,三进制看起来甚至更有优势:一个比特只能在两种状态中选择,而一个三进制位却能在三种状态中选择;
同样是 n 个位置,二进制能够组成 2ⁿ 种状态,三进制则能够组成 3ⁿ 种状态。
不过可惜,芯片不是画在纸上的进制表,所以不是你说想要什么就可以要什么的(摊手)。
理想总是与现实有点小矛盾,两人并不总是喜欢达成一致。
在相近的可用电压范围内,把信号划分成两类,就像把一条路分成两个足够宽的车道;
如果划分成三类,那么每一类能够容忍的误差便会更小:噪声、温度变化、制造偏差和信号衰减,都可能让电路把一种状态认成另一种状态。
状态越多,单个位置能够表达的信息确实越多;但电路也必须变得更加精确和复杂。
当然,困难并不等于不可能。
华为公开的一项 三进制逻辑门专利申请,便是尝试使用不同的电压与晶体管阈值表示三种逻辑状态,并实现三进制逻辑值的加一与减一。
申请提出,这种结构可用于简化三进制逻辑电路、减少晶体管数量并降低功耗。
不过截至本文写作时,我能从公开资料中确认的,只是华为提出了这项技术方案。
这并不等于三进制处理器已经大规模量产,也并不足以说明通用三进制处理器已经具备大规模量产条件。
因此,至少在公开层面,这条路仍处于探索阶段。
但有趣的是,华为公开的另一项研究又选择了完全不同的方向。
韬(τ)定律并没有试图为电路增加第三种逻辑状态。它以时间缩微为目标,通过 LogicFolding 等方法,将原本铺在平面上的部分电路分配到垂直堆叠的有源层中,从而缩短信号传播路径。
一个试图让每个位置多表达一种状态,另一个则试图让不同位置之间少走一段路。
三进制改变的是机器使用的“字母表”。
LogicFolding 改变的则是书写这些字母的电路在物质世界中的排列方式。
两者解决的并不是同一个问题,却共同说明了一件事情:
工程中很少存在脱离条件的唯一正确答案。其真正需要寻找的,是具体约束下更合适的取舍。
总的来说,使用二进制并不是因为 “二” 最聪明,而是因为在现代数字电路中,“二” 通常最不容易被机器认错。