重读《编码》:软件是如何驱动硬件的?

974 阅读2分钟

这段时间看了许多计算机基础的书,但对于计算机为什么可以用软件来操作硬件,还是觉得迷迷糊糊。重读《编码》,才终于明白了。我真的太爱这本书了,白痴福音!

概念

位宽 vs 字长(P207 )

  • 位宽 = 地址访问数量 = 2^地址输入端的个数 = 可寻址内存大小
  • 字长 = 每个地址下储存的bit数量,数据通路宽度,每次加减运算时可处理几位的数字

指令 vs 操作码

  • 指令:大部分指令包括操作码和数据。特殊指令Halt只有操作码
  • 操作码:又名指令码,大部分操作码都对应操作数(即需要操作的数据,可以是内存地址、立即数、寄存器、标志位)
  • LOD A, [1005h] ; 将[1005]地址上的数据LOAD到A累加器,LOAD A是操作码,[1005h]是操作数
操作码opcode代码
Load10h
Store11h
Add20h
HaltFFh

硬件 vs 软件

  • 硬件:有形组件,包括键盘、显示屏、CPU、储存器等。(对照书中的硬件包括继电器、电线、开关以及灯泡)
  • 软件:计算机存储器里的数据和指令集合。

主要框架

  • 计算机做什么:输入 - 计算 - 输出
  • 计算机的构成:处理器,储存器,I/O系统

硬件:如何实现计算

  • 逻辑电路:继电器,逻辑门(AND,OR,NAND,NOR,XOR,XAND等),再到加法器(加减乘除)
  • 存储器:利用电路环路实现储存
  • 自动化运行以及地址跳转:clock

如何实现编程(软件操纵硬件)

  • 继电器:电生磁,电流可以控制开关
  • 汇编语言:用助记符标注二进制的操作,这种助记符即为操作码,主要管理控制信号电流(读写开关,控制选择器等)

计算机为什么可以用软件操作硬件

  • 写代码,敲键盘键,点击鼠标,都可以理解为操作开关把代码(数据和指令集合 - 二进制 - 高低电压)写入内存,点击保存后则存入外存。
  • 软件,其实就是存储器里保存的高低电压(分两种:一种是控制信号,控制着电路的通或断,另一种是数据)。
  • 软件的运行,是自动化运行的高低电压,最后实现计算