第一章 计算机系统概论

计算机组成原理第一章随堂笔记

采用自顶向下的方式,层层细化。

课程内容组织分为四篇:

  • 第一:概论;

  • 第二:计算机系统的硬件结构

  • 第三篇:CPU

  • 第四篇:CU

1.1 计算机系统简介

计算机系统由软件和硬件两部分组成。软件可以划分为系统软件和应用软件两种。

计算机系统结构是指 程序员所见到的计算机系统的属性,概念性的结构与功能特性。(指令系统、数据类型、寻址技术、I/O机理)。比如 有无乘法指令

计算机组成主要是 实现计算机体系结构所体现的属性。(具体指令的实现)。比如 如何实现乘法指令

1.2 计算机的基本组成

一、冯诺依曼计算机特点

  1. 有5大组成部分:运算器(ALU)、控制器(CU)、存储器、输入设备、输出设备。
  2. 指令和数据以同等的地位存于存储器,可以按地址寻访
  3. 指令和数据用二进制表示
  4. 指令由操作码和地址码组成(操作码指明指令具体要做什么操作,地址码指明要操作的数在内存中的地址。)
  5. 存储程序,程序存储在存储器中(核心特征)
  6. 以运算器为中心

    冯诺依曼计算机硬件框图

    存在的问题:以运算器为中心,运算器的性能成为这个系统的瓶颈;其次层次化结构不够清晰。

    二、计算机硬件框图

    现代计算机硬件框图

    层次化结构:

    系统复杂性管理的方法:(3Y)

  7. 层次化:Hierachy,将被设计的系统划分为多个模块或子模块。

  8. 模块化:Modularity,有明确定义的功能和接口
  9. 规则性:Regularity,模块更容易被复用

    三、计算机的工作步骤

  10. 上机前的准备

    • 建立数学模型
    • 确定计算方法
    • 编制解题程序
  11. 计算机的解题过程

    2.1. 存储器的基本组成:

    存储器的核心结构是存储体,存储体由若干个存储单元组成,存储单元由对个存储元件组成。

    存储单元存放了一串二进制代码,指令和数据都是存储在存储单元中。

    存储单元中二进制代码的组合称为存储字。存储单元中二进制代码的位数称为存储字长。

    每个存储单元都会有一个地址。通过这个地址实现对存储单元的访问。一个存储单元中存放了一个存储字。

    MAR:存储器地址寄存器,反映存储单元的个数。

    MDR:存储器数据寄存器,反映了存储字长。

    举个例子:

    假如MAR=4位,MDR=8位。那么存储单元个数为16(0000到1111)个,存储字长为8位。

    2.2 远算器的基本结构

    远算器最基本的功能就是完成运算,因此其核心为算术逻辑单元(ALU)。

    ACC:累加器,专门用来存放操作数或运算结果;X:操作数寄存器;MQ:乘商寄存器

    2.2.1 加法操作过程

    指令: 操作码(加) + 内存地址(M)

    初态: ACC中存入被加数

    其次: 在内存地址中取出加数存入X寄存器。[M] → X

    然后: 在运算器(ALU)中执行加法操作,并将结果存入累加器ACC中。[ACC] + [X] → ACC

    2.2.2 减法操作过程(基本同上)

    2.2.3 乘法操作过程

    指令: 操作码(乘) + 内存地址(M)

    初态: ACC中存入被乘数

    其次: 在内存地址中取出乘数存入MQ寄存器。[M] → MQ

    然后: 将ACC中的内容存入X寄存器。 [ACC] → X

    然后: 由于乘法运算是通过累加和移位的方式实现的。因此需要一个寄存器来保存累加的内容。并且在累加之前,把这个寄存器清零。这个寄存器就是ACC。因此:0 → ACC。

    然后: 在ALU中进行乘法操作,并且结果保存在两个寄存器里面。[x] * [MQ] → ACC // MQ

    2.2.4 除法操作过程

    指令: 操作码(除) + 内存地址(M)

    初态: ACC中存入被除数

    其次: 在内存地址中取出除数并存入X寄存器。[M] → X

    然后: 在运算器中进行除法操作。商保存在MQ寄存器中,余数保存在ACC寄存器中。[ACC] ÷ [x] → MQ

    2.3 控制器的基本结构

    控制器的功能:解释指令、保证指令的按序执行。

    完成一条指令过程:首先是取指令(把内存单元中的指令取出来送到控制器中),然后是分析指令(把操作码部分送到控制单元进行分析),然后是执行指令(由控制单元控制相应的执行部件完成这条执行所需要的操作)。

    功能决定结构,完成这些功能需要什么样的硬件结构:

    首先是取指令:PC(程序计数器)中存放了当前欲执行指令的地址,具有计数功能。

    然后是分析指令:IR(指令寄存器)存放当前欲执行的指令。控制单元可以从IR寄存器中把指令的操作码取出来进行分析。

    然后是执行指令:CU(控制单元),控制指令的执行顺序。

    因此控制器由3大部分组成:PC、IR、CU。核心是控制单元CU。

    由前面知道存储器、运算器、控制器共同组成了主机。那么主机完成一条指令的过程是什么呢?

    2.4主机完成一条指令的过程

    以取数指令为例

    取数指令的功能是将保存在存储体中的数据取到ACC中。

    由前面知道指令和数据存放在存储体中,当前欲执行的指令地址存放在PC中。因此:

  • 第一步:PC要把指令的地址送给MAR,
  • 第二步:再由MAR(存储器地址寄存器)送给存储体,
  • 第三步:在控制器的控制下,存储体把指定存储单元中保存的那条取数指令取出来送入到MDR(存储器数据寄存器),
  • 第四步:将取出来的指令送到IR中。
  • 第五步:将指令寄存器中保存的指令的操作码部分送给CU。经过译码以后CU就会有相应的信号控制执行部件去执行指令要求的操作。

    我们这条指令是取数指令,取数指令的功能是把保存在内存单元M当中的数据取到ACC寄存器。为了完成这个操作,在控制器的控制下要把指令当中的地址部分送给存储器,以便我们把存储的数据取出来。这个应该还是从IR出发。因为IR中保存了指令,包括操作码和内存地址。

  • 第六步:在IR(指令寄存器)中取出地址部分送到MAR

  • 第七步:再由MAR将地址送入到存储体
  • 第八步:在控制单元的控制下将指定存储单元中保存的数据取出来送入到MDR
  • 第九步:然后将MDR中保存的数据送入到ACC。

    第一步到第四步:取指令

    第五步:分析指令

    第六步到第九步:执行指令

    以存数指令为例

    存数指令是将ACC中的数据保存到存储体中。

    首先还是取指令:

  • 第一步:PC要把指令的地址送给MAR,

  • 第二步:再由MAR(存储器地址寄存器)送给存储体,
  • 第三步:在控制器的控制下,存储体把指定存储单元中保存的那条取数指令取出来送入到MDR(存储器数据寄存器),
  • 第四步:将取出来的指令送到IR中。

    然后是分析指令:

  • 第五步:将指令寄存器中保存的指令的操作码部分送给CU。经过译码以后CU就会有相应的信号控制执行部件去执行指令要求的操作。

    然后是执行指令:

  • 第六步:在控制单元的控制下将IR中保存的指令的地址部分取出来送到MAR

  • 第七步:再由MAR将地址送入到存储体(告诉存储体要有一条数据存进来,地址是多少)
  • 第八步:将ACC中的内容送入到MDR
  • 第九步:在控制器的控制下把MDR中的数据保存到存储体中。

    这样就知道了一个程序在计算机上的运行过程:

  • 将程序通过输入设备送至计算机

  • 程序首地址送入到PC
  • 启动程序运行
  • 取指令:PC=>MAR=>M=>MDR=>IR, (PC) + 1 → PC
  • 分析指令:OP(IR) => CU
  • 执行指令:AR(IR)=>MAR=>M=>MDR=>ACC
  • 打印结果
  • 停机

1.3 计算机硬件的主要技术指标

  • 机器字长
  • 运算速度:主频、核数、吉普森法、CPI(执行一条指令所需要的时钟周期数)、MIPS(每秒执行百万条指令)、FLOPS(每秒浮点运算次数)
  • 存储容量