前言
日升日落划为一天,地球绕日一圈为一年,一年大约为 365 天...这些都是进制的一种,我认为进制是对物理始末状态变化间的某种度量。
在数学上,1
是各种进制的基础,某数位达到多少就向更高位进1
,如日常生活常用的十进制,其数位上的数字只能是0~9
中的某一个,超过9
达到10
就得向高位进1
。
事实上,二进制与我们离得也很近。先来看看二进制的简单介绍吧。
二进制简介
二进制逢二进一,基数只有两个:0
和1
。它可以表示很多逻辑,如黑与白、开与关......
将二进制转十进制:
如\(A = 1101.1\),则\(Value(A) = 2^3 + 2^2 + 0 + 2^0 + 2^{-1}\)。
二进制转16进制的做法:从小数点开始向左和向右两个方向每4位数为1组替换为一个16进制数。反过来就是16进制转二进制的做法。如二进制101001.01转为16进制就是29.4。
二进制的应用可以说是已经与我们的生活紧密交织在一起了。只是我们一般看到的是它“加工”后的样子。计算机中的文本、图像、音视频都是二进制数据,其中单个的0
和1
被称为1比特。这些二进制数据会由处理芯片处理转换为输出设备(打印机、显示器、音响等)支持的信号格式。
那么二进制是为什么又如何应用在计算机上了呢?
二进制与电路的碰撞火花🎇
17世纪,莱布尼茨认为可以使用二进制替换十进制,并提出了二进制的逻辑运算法则。
到了19世纪中叶,英国数学家乔治·布尔(George Boole)提出了布尔代数。传统代数是处理数字的,而布尔代数用于处理某类事物(现称为集合)。布尔代数可用于集合运算(交∩、并∪)和逻辑运算(与AND、或OR、非NOT),它用1
代表全集,用0
代表空集。可惜当时白炽灯还未诞生,布尔没有将其研究与电路联系起来,但也为后续的发展的做了铺垫。
1937年,当时在MIT攻读硕士的克劳德·香农(Claude Shannon)在其划时代的硕士论文《继电器与开关电路的符号分析》中做出了决定性贡献。这篇论文首次证明,布尔代数可以完美地映射到由开关(如继电器)组成的电路中:电路的通(1)与断(0)状态能用布尔代数分析。他的工作为现代数字电路设计提供了核心原理。
继电器工作原理:继电器线圈的控制开关闭合后,线圈通电,通过电磁感应产生磁力,吸引被弹簧顶上去的金属片。
二进制编码的转折点🎉
尽管香农证明了布尔代数与开关电路的联系,但这一理论当时并未成为工程共识,电子工程界(尤其军事项目)更关注硬件实现(继电器和真空电子管),而非数学优化(二进制与十进制)。
说到真空管,得先说说电灯泡。
爱迪生发明高阻值碳灯丝真空白炽灯后,为了延长灯丝寿命,他在灯丝上固定一根铜丝,来阻止灯丝升华。虽然结果无效,但是他发现没有与灯丝直接连接的铜丝上竟然有电流!这就是爱迪生效应——热电子发射现象,被加热灯丝的电子发射到了铜丝上。
十几年后,弗莱明基于此接了一个电源,铜丝接正极,灯丝接负极,结果发现铜丝上的电流大大增加。但将正负极一换,电流就没了。于是具有单向导电性的真空电子二极管就诞生了。
又过了两年,德福雷斯特在铜丝与灯丝之间加了一线圈并通电,正极接铜丝,负极接灯丝和线圈,发现电流增加,若一换方向,电流就减小,也就是说通过该线圈可放大或控制产生的电流大小。这线圈被称为栅(shan)极。这个装置称为真空电子三极管。
+------------------+
| 阳极 (Plate) |
| (+电压) |
+------------------+↑栅极 (Grid)(-/+ 控制电压)↑
+------------------+
| 阴极 (Cathode)|
| ← 灯丝加热 → |
+------------------+↓电源负极
说回正题,促使计算机全面转向二进制编码的转折点是冯·诺依曼的一篇报告。1945年,冯·诺依曼在参与ENIAC后续项目EDVAC时,发表了《EDVAC报告草案》,明确提出了二进制系统的优点(见算术运算的原理):
- 使用真空管构建“全有或全无”的触发电路,具备两个稳定状态,这是最简单的设计。这种设计与人类神经元的工作方式类似,便于实现数字逻辑。
- 真空管的工作特性使二进制成为自然选择。非真空管设备通过“缩放”并行操作加速计算,但需更多元件。
- 二进制简化了乘法和除法操作,避免了复杂的十进制乘法表。所有内部运算建议使用二进制,输入输出部分负责十进制与二进制的转换。
- 二进制乘法可能需要约1000–1500步,而十进制仅约100步,但代价是设备复杂度增加。真空管设备反应时间快(约1微秒),可接受高步数运算。加法和减法更快,仅需30–50步。最优策略是减少元件数量,而不是增加并行度。
ENIAC是世界上第二台电子计算机、第一台通用计算机,使用真空电子管和十进制计数,没有存储,且体积十分庞大,主要由大量电子元件构成,其中包括17,468根真空管等。ENIAC的计算速度为每秒5000次加法或400次乘法,远超当时的机电计算机,运算速度是其1000倍、手工计算的20万倍。
更适合二进制的元件:晶体管
真空电子管的缺点显而易见:需要真空环境、需要加热。晶体管的出现解决了这些问题,并使计算机跨入全新时代。
在1947年,晶体管由约翰·巴丁、沃尔特·布拉顿和威廉·肖克利所发明。巴丁、布拉顿主要发明半导体三极管(锗);肖克利则是提出了更易生产的晶体管结构——晶体管PN结模型。1950年,肖克利实现理论、开发出了双极晶体管(Bipolar Junction Transistor,BJT),这也是现在通行的标准的晶体管。
BJT包含三个区域:发射区(Emitter)— 基区(Base)— 集电区(Collector)。发射区或发射极E
注入载流子(电子或空穴),基区或基极B
控制载流子流动,集电区或集电极C收集穿过基区的载流子。
通过参杂磷或硼,可以制造出N型半导体(载流子为电子)或P型半导体(载流子为空穴)。刚开始的时候,电子会从 N 型区域跑向 P 型区域,填补那些“空位”。这一过程会在交界处形成一个“电势墙”(也叫势垒),像是在门口立了一道“检查岗”。如果你给电路接上电源,并让电子顺着“检查岗”方向流动(正向偏置),电子就能顺利通过——电流形成了。如果你把电源反过来(反向偏置),电子会被势垒挡住。
相比真空管,晶体管可在低电压下工作,发热更少,但量变产生质变,现如今的超大规模集成电路需要借助辅助设备散热。
现在说的几纳米芯片工艺指的就是芯片上晶体管关键结构的尺寸。尺寸越小,优势越大。
阅读原文