logologo

第五章:计算机组成

Apr 23, 2023

知识点

计算机主要由中央处理单元(CPU),主存储器和输入/输出子系统这三大系统组成。

中央处理单元

CPU 用于数据的运算。由算术逻辑运算单元(ALU)、控制单元、寄存器组、快速存储定位组成。

  • 算术逻辑单元(ALU):对数据进行逻辑运算、位移运算、算术运算
  • 寄存器:存放临时数据的高速独立的存储单元
  • 控制单元:控制各个子系统操作

主存储器

存储单元的集合,每一个存储单元都有唯一标识:地址地址用位模式表示;内存地址用无符号二进制整数定义

存储器类型:

  • 随机存取存储器(RAM)易失性
    • SRAM:数据不需要刷新,速度快价格高
    • DRAM:内存单元周期性刷新,速度慢价格低
  • 只读存储器(ROM)非易失性
  • 可编程只读存储器(PROM)
  • 可擦除可编程只读存储器(EPROM)
  • 电只读存储器(EEPROM)

高速缓存存储器:比主存快,比 CPU 及其他内部寄存器慢

输入/输出子系统

  • 非存储设备:使得 CPU/内存可以与外界通信,不存储信息
  • 存储设备:辅助存储设备,分为 磁介质光介质
    • 磁介质:利用单个点有没有磁性来表示逻辑位 0 和 1,以此来存储数据;磁带、磁盘
    • 光介质:利用光反射的原理,在没遇到坑的时候只会反射一次,遇到坑的时候会反射两次,以此来区分 0 和 1。
      • CD-ROM:只读光盘,坑是事先刻好的
      • CD-R:可刻录光盘,只能刻录一次
      • CD-RW:可重写光盘,可以反复刻录/清除,价格贵于 CD-R

子系统的互连

  • 数据总线:用于以字为单位传输数据。每根线可以传输 1 位的数据,故数据总线的线路数就会等于计算机的字长(例如说 64 位的计算机的数据总线就会有 64 条)
  • 地址总线:用于传输地址。同样的为了能同时传输 n 位的数据,需要 n 根线。而这里的 n 则取决于地址空间。当地址空间最大为 2^n 时,就需要 n 根线。
  • 控制总线:用于传输控制命令。当计算机的控制命令一共有 2^m 个的时候就需要 m 根线。

之后是 I/O 设备连入计算机的方式。计算机会提供像 SCSI,火线,USB,HDMI 等控制器用于 I/O 设备的连接。计算机会将总线分支接入控制器,再由控制器跟外部 I/O 设备连接。

在这里有一个总线连接的特例,就是控制总线。控制总线会分成 CPU 跟 I/O 设备,CPU 跟主存两路。当指令不涉及输入/输出的时候,CPU 只需要跟主存通信即可;而当指令涉及输入/输出的时候,CPU 就需要跟 I/O 设备通信。

为此有两种方法用来区分开 I/O 和主存:

  • I/O 独立寻址:简单地讲就是,针对 I/O 设备有专门的指令,而其他指令就只针对主存。举个例子就是,读取数据上,可以设计读取主存数据的命令为 read,读取输入设备数据的命令为 input,以此区分两者。
  • I/O 存储器映射寻址:简单地讲就是,将 I/O 设备的寄存器地址映射到主存中,这样就可以靠地址来区分主存和 I/O 设备了。例如说还是输入这块,命令就只有 read 一个,但根据命令后面接的地址的不同来区分是读取主存还是读取 I/O 设备。

程序执行

程序执行的本质是一系列指令的执行。CPU 会一直重复取指令->译码->执行这三个动作。

  • 取指令:控制单元命令系统将下一条指令取到 CPU 的指令寄存器中,被复制的指令的地址会置入程序计数器中(一般不会改变计数器的值),复制成功后程序计数器加一,指向其下一条指令。
  • 译码:控制单元负责将指令寄存器中的指令翻译成一系列二进制可执行代码
  • 执行:根据译码的结果执行相应的操作

输入/输出操作

有些操作会涉及到输入/输出,但 CPU 的速度远快于输入/输出设备。故需要一些方法来同步两者(以输入为例):

  • 程序控制输入/输出:简单的讲就是非阻塞操作。CPU 在发出输入请求之后会不断问询输入设备有没有数据,直到有数据为止。
  • 中断控制输入/输出:简单的讲就是阻塞操作。CPU 在发出输入请求之后会中断,直到输入设备有数据之后再通知 CPU 接收数据。
  • 直接存储器存取(DMA):简单的讲就是加中间件。新增一个叫 DMA,这个相当于专门用于跟输入设备打交道的 CPU。

不同的体系结构

  • CISC:复杂指令集计算机,也就是用大量的底层指令的计算机,这种设计可以减少程序设计上的负担,但会增加译码的负担。

    • 现在的 CISC 计算机会加入一个中间过程,将复杂指令转化为多个微操作,CPU 只执行微操作。于是就需要一个中间结构来做这个过程(也就是微内存),使用微操作的程序设计叫做微程序设计。
  • RISC:精简指令集计算机,相对于 CISC 而言,其使用了少量简单的指令。

  • 流水线:流水线的设计目的是改善指令的执行效率。一般而言 CPU 是一直取指令->译码->执行->取指令。

  • 并行处理:简单的讲就是通过添置多个控制单元,多个 ALU,多个寄存器来做到并行执行指令。

    • SISD:单指令流,单数据流
    • SIMD:单指令流,多数据流
    • MISD:多指令流,单数据流
    • MIMD:多指令流,多数据流

输入操作必须总是从输入设备读数据到内存:输出操作必须总是从内存写数据到输出设备。

浙ICP备2021022773号    2022-PRESENT © ZhengKe