当前位置: 华文问答 > 数码

【计算机组成原理】阅读笔记一

2022-09-18数码

计算机组成原理

计算机组成原理学习笔记。阅读书籍为唐朔飞老师【计算机组成原理】第3版(笔记中的截图均来自第2版pdf)

概论

概论主要介绍计算机系统的基本组成、应用与发展,对整体内容进行结构性介绍。

1. 计算机系统概论

1.1 计算机系统简介

1.1.1 计算机的软硬件概念

计算机系统包括硬件和软件。

  • 硬件指计算机的实体部分,即看得见摸得着的部分。
  • 软件指摸不着的内部程序,包括系统软件和应用软件。
  • 系统软件:用来管理计算机系统。例如:标准程序库、语言处理程序(翻译高级语言程序的编译程序等)、操作系统、服务程序、数据库管理系统、网络软件等。
  • 应用软件:用户根据任务需要编制的各种程序。
  • 1.1.2 计算机系统的层次结构

    高级程序语言,经过编译系统后,翻译得到汇编语言程序;

    汇编语言程序,经过汇编系统后,得到机器语言程序;

    机器语言程序会被解释为机器指令;

    硬件执行机器指令。

    1.1.3 计算机组成和计算机体系结构

    计算机体系结构是指哪些能够被程序员所见到的计算机系统的属性,即概念性的结构与功能特性。

    计算机组成是指如何实现计算机体系结构所体现的属性,包含了许多对程序员而言是透明的硬件细节。

    指令系统体现了计算机的属性,这是计算机体系结构的问题,但是指令的实现(如何取指令、分析指令、取操作数、运算、送结果等)这是属于计算机组成问题。

    因此,两台机器指令系统相同时,认为它们具有相同的结构,但是这两台机器是如何实现的这个指令系统,则可以完全不同。

    1.2 计算机的基本组成

    1.2.1 冯诺依曼计算机的特点

  • 计算机由 运算器、存储器、控制器、输入设备和输出设备 五大部分组成。
  • 指令 数据 以同等地位存放于存储器内,并可按地址寻访。
  • 指令和数据均用 二进制 数表示。
  • 指令由 操作码 地址码 组成,操作码用来表示操作的性质,地址码用来表示操作数载存储器中的位置。
  • 程序存放在存储器 中,这是核心特点。
  • 机器以 运算器 为中心:输入输出设备与存储器间的数据传送通过运算器完成。
  • 1.2.2 计算机的硬件框图

    典型的冯诺依曼计算机是以运算器为中心的,但是现代计算机已转化为以存储器为中心了,如下图所示。以运算器为中心,会导致运算器成为计算机系统的瓶颈。

  • 运算器完成算术运算和逻辑运算,将运算中间结果保存在运算器内。
  • 存储器用来存放数据和程序。
  • 控制器用来控制、指挥程序和数据的输入、运行以及处理运算结果。
  • 输入设备将人们熟悉的信息形式转换为机器能识别的信息形式。如键盘鼠标。
  • 输出设备将机器运算结果转换为人们熟悉的信息形式。如打印机、显示器。
  • 由于运算器和控制器在逻辑关系和电路结构上联系十分紧密,大规模集成电路制作工艺的出现,将运算器和控制器集成在同一个芯片上,即中央处理器CPU,输入与输出设备简称为I/O设备。

    因此现代计算机可认为包括三部分:CPU、I/O设备与主存储器(Main Memory)。CPU与主存储器合起来又可称为主机,I/O设备可称为外部设备。

    现代计算机组成框图如下图所示。

  • 主存储器:存储器中的一类,用来存放程序和数据,可直接与CPU交换信息。存储器除了主存外,还包括辅助存储器,也称外存。
  • 算数逻辑单元(ALU):简称算逻部件,用来完成算术逻辑运算。
  • 控制单元(CU):用来解释存储器中的指令,发出各种操作命令来执行指令。
  • ALU和CU是CPU的核心部件。
  • 1.2.3 计算机的工作步骤

    用计算机解决问题包括:上机前的准备和上机运行。下面用一个例子来描述整个过程。

    上机前的准备 包括:

  • 建立问题的数学模型;
  • 确定问题的计算方法;
  • 编制解决问题的程序。
  • 【例如】:计算{ax^{2}+bx+c}\ 。

    首先,建立数学模型,已建立好了,上述公式就是解决某个问题的。

    其次,确定上述公式的计算方法:

    直观的结果可分为如下8步:

  • 将x\ 取至运算器中;
  • 乘以x\ ,得到x^{2}\ ,存在运算器中;
  • 乘以a\ ,得到ax^{2}\ ,存在运算器中;
  • 将ax^{2}\ 送至存储器中;
  • 取b\ 至运算器中;
  • 乘以x\ ,得到bx\ ,存在运算器中;
  • 将ax^{2}\ 从存储器中取出与bx\ 相加,得ax^{2}+bx\ ,存在运算器中;
  • 取c\ 与ax^{2}+bx\ 相加,得结果。
  • 若是将上式子改写为:(ax+b)x+c\ ,则只需要5步:

  • 将x取至运算器中;
  • 乘以a\ ,得ax\ ,存在运算器中;
  • 加b\ ,得ax+b\ ,存在运算器中;
  • 乘以x\ ,得(ax+b)x\ ,存在运算器中;
  • 加c\ ,得(ax+b)x+c\ ,存在运算器中。
  • 为了更快地解决问题,选择5步的计算方法,至此计算方法确定了。

    最后,编制程序。此处的程序指机器语言程序(高级语言程序最终都会被翻译为机器语言的)。我们要在某机器上运行(ax+b)x+c\ 的运算程序,需要知道该机器的相关信息。假设该机器的指令字长为16位,其中操作码占6位,地址码占10位。机器指令格式如下图:

    其中,操作码表示机器所执行的各种操作,如取数、存数、加减乘除、停机、打印等。地址码表示参加运算的数字在存储器内的位置。下图表示了操作码与具体操作的对应表。

    在编写上述程序之前,需要先将a、b、c、x \ 存到存储器的相应单元内。

    现在可以编写程序了。

    至此,面向某机器的机器语言程序就编写完成了,可以进行下一步的上机运行了。

    上机运行

    为了更清楚地描述计算机内部的运行过程,我们需要了解一个更细化的计算机组成框图。

    在介绍程序运行过程之前,得先熟悉一下主存储器、运算器、控制器、I/O四部分。

    主存储器

    主存储器包括存储器M、各种逻辑部件及控制电路等。

    存储体M由许多存储单元组成,每个存储单元又包含若干个存储元件,每个存储元件能存储一个二进制码0/1。存储字就是一个存储单元内存储的这串二进制码,二进制码的长度就是就是存储字长。存储字长可以是8位、16位、32位(8的倍数)。每个存储单元都有一个唯一的地址号,不会与其余存储单元冲突。

    主存的工作就是按存储单元的地址号来对存储单元进行读写。这种方式就是按地址存取。为了实现按地址访问的方式,主存中配置了两个寄存器MAR和MDR。

    MAR(Memory Address Register)是存储器地址寄存器,用来存放欲访问的存储单元的地址。MAR的位数与存储单元的个数是相关的,如MAR有10位,那么存储单元就有2^{10}\ 个存储单元。

    MDR(Memory Data Register)是存储器数据寄存器,用来存放从存储单元中取出/写入的数据。MDR的位数与存储单元的位数,即存储字长是相等的。

    随着硬件技术地发展,主存都制成大规模集成电路的芯片,MAR与MDR也都集成在了CPU芯片中。

    运算器

    运算器最少包括3个寄存器:ACC、MQ、X。当然现代计算机内部往往设有通用寄存器组。ACC是累加寄存器,MQ是乘商寄存器,X为操作数寄存器。

    下面是个寄存器所存放的各类操作数。

    控制器

    控制器是计算机的神经中枢,由它指挥各部件自动、协调地工作。控制器中包括PC、IR、CU。控制器完成一条指令,具体包括3步:

  • 取指:从PC寄存器中取出指令的地址,去相应的地方得到相应的指令放到IR寄存器中。其中,PC寄存器存放待执行指令的地址。IR寄存器存放待执行指令。
  • 分析:从IR寄存器中取出待执行的指令,分析操作码和地址码。OP(IR)代表操作码,Ad(IR)代表地址码
  • 执行:分析当前指令所需完成的操作,并发出各种微操作命令序列。
  • I/O

    I/O包括各种I/O设备及其相应的接口。每种I/O设备都由接口与主机联系,它接收CU发出的控制命令,并完成相应的操作。

    熟悉完上述四部分,下面根据下图描述一下计算机完成一条取数指令(从存储体中取某个数到ACC中)的全过程。

  • PC中存放着指令的地址,将其送到MAR;
  • 根据MAR中的地址,去存储体中获得具体的指令,并放到MDR中;
  • MDR中的指令送入IR中;
  • OP(IR)即IR存放的指令中的操作码部分送入CU,CU进行分析,分析后得知这是取数指令;
  • Ad(IR)送给MAR;
  • 根据MAR中的地址,去存储体获得具体的数据,并放到MDR中;
  • 将MDR中的数据送入ACC寄存器。
  • 上面机器的运行过程就是执行一条指令的过程:从存储体中取一个数到ACC的过程。执行(ax+b)x+c\ 的机器语言程序,就是机器顺序执行一条条指令的过程。

  • 将程序通过输入设备送至计算机;
  • 程序首地址 ----> PC;
  • 启动程序运行;
  • 取指令:PC -> MAR -> M -> MDR -> IR, (PC) + 1 -> PC;
  • 分析指令:OP(IR) -> CU; 分析出这是一条取数指令。
  • 执行指令:Ad(IR) -> MAR -> M -> MDR -> ACC; 执行取数指令。
  • ...
  • 一条条指令顺序执行下去
  • 1.3 计算机硬件的主要技术指标

    1.3.1 机器字长

    机器字长是指CPU一次能处理数据的位数,通常与CPU的寄存器位数有关。

    字长越长,数的标识范围越大,精度越高。

    机器字长对硬件的造价也有较大的影响。

    1.3.2 存储容量

    存储容量包括主存容量和辅存容量。

    主存容量是指主存中存放二进制码的总位数:存储单元的个数乘以存储字长。MAR的位数可以反应存储单元的个数,MDR的位数反应存储字长。

    现代计算机以字节数来描述容量的大小。一个字节为8位。

    1.3.3 运算速度

    计算机的运算速度与许多因素有关:机器的主频、操作类型、主存速度等。

    评价运算速度的方式:

  • 吉普森法:考虑每条指令的执行时间以及它们在全部操作中所占的百分比。
  • MIPS:1秒钟能执行几百万条指令。
  • CPI:执行一条指令所需的时钟周期。
  • FLOPS:每秒钟的浮点运算次数。