计算是什么?计算机是什么?

1 阅读4分钟

1. 从信息论角度看计算

从信息论角度,可以把 计算 看成:对比特(0/1)序列进行有规则的转换与重排。

它包含几种基本操作:

  • 逻辑运算:例如 AND、OR、NOT,通过对输入比特进行规则组合产生输出比特;
  • 数据存储:在某个物理载体上(电容、电荷、磁性方向)稳定保持一个比特;
  • 数据传输:将比特从一个位置复制-移动到另一个位置(例如总线、网络)。 所以:
  • 从抽象层看,计算就是 对信息进行处理和变换;
  • 从物理层看,计算就是 对物理状态(电压、电荷、磁化方向)的改变和控制。

所谓的信息技术,其核心目标是大幅度降低信息的表示、存储、复制(传输)的成本。

2. 计算机 - 图灵机的表达

图灵机模型把计算抽象成:

  • 一个有限状态机;
  • 一个无限长的纸带(读写单元);
  • 一个读写头按规则移动并修改纸带上的符号。 这个模型告诉我们:
  • 计算的核心是 规则化的状态转换 和 读写操作;
  • “算法”就是一套 系统化的状态转移规则(如果读到 A,处于状态 S,就写 B、移动一格并切换到状态 T)。

在现实世界:

  • CPU + 内存 + I/O 等硬件,是图灵机在物理世界中的一种实现;
  • 寄存器/内存单元 ↔ 纸带上的格子;
  • 指令系统 ↔ 状态转移规则;
  • 程序 ↔ 具体的状态变化序列。

图灵机、算法是抽象层面;CPU、晶体管是具体物理实现。

为何计算必然伴随能量消耗?-- 信息与能量的关系

信息与能量:直观理解

从物理角度看,“信息”不是空洞的概念,而是 物理系统可区分的状态模式:

  • 一个比特(0 或 1)对应 两种可区分的物理状态;
  • 在 CPU 中可能是:
    • 电压高 / 低;
    • 电容中有无电荷;
    • 磁性方向等。 要 改变信息,其实就是 改变物理状态,这不能在现实世界中完全“无代价”发生:
  • 必须对系统做功(提供能量)使其跨越势垒;
  • 同时通常会有能量以热的形式散失到环境中。

朗道尔原理(Landauer’s Principle)

朗道尔原理指出: 在温度为 T 的环境中,每擦除 1 比特信息 至少要向环境散失的热量为: E = k T ln2 其中 k 是波尔兹曼常数。 关键点:

  • 这是一条 理论下限,告诉我们 “不可逆的信息擦除” 必然伴随最小热量产生;
  • “擦除”可以理解为:把一个比特不论原来是 0 还是 1,都强制重置为 0。
  • 这个操作减少了系统的信息熵(不确定性),但增加了环境的熵(以热的形式),以保持总熵不减。

虽然现实中 CPU 的每个操作的能耗远高于这个理论极限,但它揭示了一个本质: 在物理世界中,计算“不可能完全免费”,尤其是不可逆的逻辑操作(如 AND、OR、RESET)必然消耗能量并产生热。

理论与现实之间的联系

理论层面:

  • 任何以 不可逆逻辑 为基础的计算系统(大部分现有计算机)在执行时都必然:
    • 擦除中间比特;
    • 覆盖旧值;
    • 引入熵减少,从而必须耗散能量。

现实工程层面:

  • 我们并不会直接按照朗道尔极限设计 CPU,但它对我们有启示:
    1. 降低电压、减少开关次数、优化算法 确实可以减少能耗;
    2. 设计更“接近可逆”的计算方式在理论上有节能潜力(可逆计算、量子计算的一些思路就和这个有关)。

具体例子:

  • 一个排序算法,如果设计不当,需要大量中间数据拷贝与覆盖,擦除/重写信息越多,理论上能量下界越高;
  • 这在实际中体现为:更高的时间复杂度与空间复杂度往往也意味着更高的能耗(虽然中间还有硬件实现差异)。

计算从抽象上看是对信息的操作,从物理上看是对物理状态的控制和改变;而对物理状态的改变必然消耗能量并产生热。