第二章:计算机的构成

复习

  • 第一章:需要一台计算机,在研究其组成的方向上进行努力。

正文

供能

  首先,要使机器工作:需要供能。目前最容易获取广泛运用的能源:电能。

  • 需要供电(能源)

处理

  其次,计算,同处理事情的流程一样,需要:适用前提,已知条件和结果。由此,抽象出以下三点:

  • 可计算性(适用前提)
  • 输入数据(已知条件)
  • 输出结果(结果结论)

内部表示

  最后,考虑计算机内部计算处理的事情:

  • 如何处理与计算机的交互?
  • 信息和数据该怎么表示?
  • 处理时会不会有中间结果,需不需要暂时保留?

交互处理

  最初的计算机,只希望能快速计算。所以此处将问题最简化:能够输入数据就行。复杂交互处理不在考虑范围之内。

  由于采用电能,所以最终一切都需要用电信号表示。电信号目前只能分为两种:通电,不通电。

  我们需要区别这两种状态,并且,是在计算机一直供电的情况下,让计算机识别输入信号。

  阻挡是一个办法。

  最初的计算机科学家们,想到用纸带打孔。有孔洞,类似开关,电路接通,通电。没有孔洞,电路受阻,不通电。如下图:

paper_cut_off

  这就是最原始的方法,需要程序员做大量的打孔操作,让机器识别。

数据表示

  由于交互处理的前提,需要将所有信息都用通电和不通电表示。

假设

  1. 通电表示 a,不通电表示 b。那其他字母怎么办呢?行不通。
  2. 通电表示 1,不通电表示 0。那其他数字怎么办呢?似乎可以。

  玛雅人采用 20 进制;我们日常使用 10 进制;有些单位(一打)使用 12 进制。

  那么是否可以采用 2 进制?逢 2 进 1,将其他数字表示出来?

二进制十进制二进制十进制
0000001015
0001101106
0010201117
0011310008
0100410019

  回到假设 1:如果需要表示字母和其他符号,怎么办?进制只能表示数字。

  既然数字这个界限不能打破,那么是否可以抽一部分数字出来,专门用来表示其他字母或者符号?美国想出了这个方法,由此诞生 ASCII 码。详细了解请见参考资料。

思考题 1

  这个方法似乎也有些问题。例如,ASCII 码中规定 0100 0001(二进制,转换为十进制为 65)表示字母 A ,那真要表示 65 怎么办?以及,上述的假设 1,其他字母真的就表示不出来吗?

  这个方法可以解决问题。虽不完美,但目前没有想出更好的解决办法,就这样先用着。

  为了方便计算机学界交流,为这些知识起个术语:

  • 一个二进制的 0 或 1 称为 bit,比特,用 b 表示
  • 8 个二进制的 0 或 1 成为 Byte,字节,用 B 表示
    • 8 是人为规定的,二进制表示一个数据会非常长,表示 0-9 都需要 4 个 bit

中间结果

  毋庸置疑,需要保存中间结果。原因:

  • 我们希望一次性将所有计算任务都输入进去,等待计算机完成。而非计算一次输入一次。
  • 计算较为复杂时,中间结果不可丢弃,否则后续计算将出现错误。

  我们需要有某个东西,能够存放数据,即存放中间结果的二进制表示。我们姑且称为“存储器”。

体系结构

  处理完三个棘手的问题,得出新的结论,一台计算机需要有:

  • 输入设备(详见处理
  • 输出设备(详见处理
  • 存储器(详见中间结果
  • 核心的计算单元(核心功能)

  上述体系结构,被称为冯·诺依曼体系结构,至今仍在沿用(人类所有知识都来源于好奇心和解决问题)。如图所示:

Von_Neumann_Architecture

思考题 2

  如果未来发生了一场能源革命,发现一种新能源:另能。另能激活时,有 A、B、C 三种不同的形态,均可导通另路(类似电路)。

  那么计算机是否会发生革命?如果你是另能计算机设计者,会采用几进制?

  最后,冯·诺伊曼体系结构是否会随着技术发展而打破?

小结

知识点

  一个核心:计算机如何构成。达成这个目的,需要:

  • 能源
  • 输入
  • 输出
  • 计算处理
    • 二进制和 ASCII 码
      • 比特(bit)
      • 字节(Byte)
    • 存储器
    • 计算单元
  • 冯·诺伊曼体系结构

参考资料

  1. 计算理论:一个问题是否可以计算。偏数学领域,不在讨论范围之内。

  2. ASCII 码:American Standard Code for Information Interchange,美国信息交换标准代码。

  3. 二进制:数据的表示方法。

  4. 冯·诺依曼体系结构:现代电子计算机的基本体系结构。

  5. Сетунь:苏联诞生的三进制计算机。

思考题答案(仅供参考)

思考题 1

  1. 65 和 A 的表示原理相同。A 是一个字符,65 是 6 和 5 两个字符。表示 65,即表示 6 的 ASCII 代码,然后跟上 5 的 ASCII 代码:0011 0110(6) 0011 0101(5)。注意:此处只讨论这两个字节用于显示,而非用于计算或表示指令等。

  2. 可以用 a 和 b 进行进制排列。如 a 表示 a,b 表示 b,ba 表示 c,bb 表示 d,baa 表示 e,bab 表示 f,bba 表示 g 等。但此方法实质一样,并且违背现存符号体系,不采用。如果不采用进制排列,因元符号(不可再分的符号单位)只有通电与不通电,所以只能表示两个信息。目前没有突破采用进制以外的信息表示法(符号少,只能依靠排列增加信息数量)。

    请注意:此答案 2 并不严谨,但于初学者而言,容易理解且偏差不大。(苏联曾经诞生过三进制计算机)

思考题 2

  1. 会。因为元符号数量从 2 个增长为 4 个。
  2. 4 进制。未导通态 1 个加上导通态 3 个,共 4 个。可以表示为 0-3,此时每 1 位(四进制)可以表示 2 个比特位(二进制)。
  3. 科学和技术一直在进步。假设,某一天技术强大到所有输入和输出均可一个设备完成,则该体系也会随之淘汰。

协议

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。