计算机组成原理

Posted Keep--Silent

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机组成原理相关的知识,希望对你有一定的参考价值。

文章目录

第1章计算机系统概述

*1.1计算机发展历程

*1.1.1计算机硬件的发展

*1.1.2计算机软件的发展

1.2计算机系统层次结构

1.2.1 计算机系统的组成

计算机系统 = 硬件 + 软件

1.2.2计算机硬件

  • 冯诺伊曼基本思想
    1. 工作方式:存储程序
    2. 硬件系统五大部分:运算器、存储器、控制器、输入输出设备
    3. 指令和数据以同等地位存储在存储器中
    4. 指令和数据用二进制代码表示
  • 计算机功能部件
    1. 输入设备
    2. 输出设备
    3. 存储器
      • 划分:分为主存(内存)和辅存(外存),辅存调入主存后才可以使用
      • 工作方式:按地址存取方式
      • 原理
      • 地址寄存器MAR
        • 通过译码后找到所选的存储单元
        • 用于寻址,位数对应存储单元的个数,(10位代表1024个存储单元
      • 数据寄存器MDR
        • 用于暂存从寄存器中读写的信息
        • 位数和存储字长相等
      • 补充:现代计算机的MAR和MDR实际位置在CPU中
    4. 运算器
      • 计算机的执行部件,用于算术运算和逻辑运算
      • 组成:核心是ALU
        • 通用寄存器
        • 累加器ACC
        • 乘商寄存器MQ
        • 操作数寄存器X
        • 变址寄存器IX
        • 基址寄存器BR
        • 程序状态寄存器PSW
    5. 控制器
      • 计算机的指挥中心
      • 组成:程序计数器PC,指令寄存器IR和控制单元CU
      • PC存放当前欲执行的指令,与主存的MAR有一条之间通路
      • 运算器和控制器集成,为CPU;CPU和主存构成主机;除主机外,为外设
      • 冯诺依曼结构模型机

1.2.3 计算机软件

  • 系统软件和应用软件
    • 系统软件:用来管理整个计算机系统
    • 应用软件:按任务需要编制成的各种程序
  • 三个级别的语言
    • 划分
      • 高级语言
      • 汇编语言
      • 机器语言
    • 翻译程序
      • 编译程序(编译器):高级语言程序 → \\rightarrow 汇编语言程序或者机器语言程序
      • 汇编程序(汇编器):汇编语言程序 → \\rightarrow 机器语言程序
      • 解释程序(解释器):源程序中的执行属性逐条翻译成机器指令并立即执行
  • 软硬件的逻辑功能等价性
    • 含义:某一功能,软硬件实现都可
    • 作用:计算机系统设计的重要依据

1.2.4计算机系统的层次结构

  • 划分
    • 第1级是微程序机器层,这是一个实在的硬件层,它由机器硬件直接执行微指令。
    • 第2级是传统机器语言层,它也是一个实际的机器层,由微程序解释机器指令系统。
    • 第3级是操作系统层,它由操作系统程序实现。操作系统程序是由机器指令和广义指令组成的,这些广义指令是为了扩展机器功能而设置的,是由操作系统定义和解释的软件指令,所以这一层也称混合层。
    • 第4级是汇编语言层,它为用户提供一种符号化的语言,借此可编写汇编语言源程序。这一层由汇编程序支持和执行。
    • 第5级是高级语言层,它是面向用户的,是为方便用户编写应用程序而设置的。该层由各种高级语言编译程序支持和执行。
  • 说明
    • 上层是下层的扩展,下层是上层的基础
    • 纯硬件叫裸机,3~5是虚拟机

1.2.5计算机系统的工作原理

  • "存储程序"的各种方式
  • 源程序到可执行文件
    1. 预处理阶段:预处理器(cpp)对源程序中以字符#开头的命令进行处理,例如将#include命令后面的.h文件内容插入程序文件。输出结果是一个以.i为扩展名的源文件 hello.i。
    2. 编译阶段:编译器(ccl)对预处理后的源程序进行编译,生成一个汇编语言源程序hello.s。汇编语言源程序中的每条语句都以一种文本格式描述了一条低级机器语言指令。
    3. 汇编阶段:汇.编器(as)将hello.s 翻译成机器语言指令,把这些指令打包成一个称为可重定位目标文件的hello.o,它是一种二进制文件,因此用文本编辑器打开会显示乱码。
    4. 链接阶段:链接器(ld)将多个可重定位目标文件和标准库函数合开为一个可执仃目怀又件,或简称可执行文件。本例中,链接器将hello.o和标准库函数 printf 所在的可重定位目标模块printf.o合并,生成可执行文件hello。最终生成的可执行文件被保存在磁盘上。
  • 程序执行过程
    • 过程
      1. 在图1.6中,shell程序将用户从键盘输入的每个字符逐一读入CPU寄存器(对应①),
      2. 然后保存到主存储器中,在主存的缓冲区形成字符串"./hello"(对应②)
      3. 接收到Enter键时,shell调出操作系统的内核程序,由内核来加载磁盘上的可执行文件hello到主存中(对应③)
      4. 内核加载完可执行文件中的代码和数据(这里是字符串"hello,world!\\n")后,将hello 的第一条指令的地址送至PC,CPU随后开始执行hello程序,它将已加载到主存的字符串"hello,world!\\n"中的每个字符从主存取到CPU的寄存器中(对应④)
      5. 然后将CPU寄存器中的字符送到显示器(对应⑤)
    • 说明
      • 程序的执行过程就是数据在 CPU、主存储器和I/O设备之间流动的过程,所有数据的流动都是通过总线、IO接口等进行的。
      • 在程序的执行过程中,必须依靠操作系统的支持。特别是在涉及对键盘、磁盘等外部设备的操作时,用户程序不能直接访问这些底层硬件,需要依靠操作系统内核来完成。
  • 指令执行过程
    1. 取指令:PC → \\rightarrow MAR → \\rightarrow M → \\rightarrow MDR → \\rightarrow IR
    2. 分析指令:OP(IR) → \\rightarrow CU
    3. 执行指令:Ad(IR) → \\rightarrow MAR → \\rightarrow M → \\rightarrow MDR → \\rightarrow ACC

1.3计算机的性能指标

1.3.1计算机的主要性能指标

  1. 字长
    字长是计算机进行一次整数运算所能处理的二进制数据的位数(与寄存器位数有关),字长越长,数的范围越大,计算精度越高。(选定八进制的整数倍)
    机器字长、指令字长、存储字长。
  2. 数据通路带宽
  • 定义:数据总线一次所能并行传送信息的位数
  • 说明:指的是外部数据总线宽度,可能与CPU内部数据总线宽度(寄存器位数)不同
  1. 主存容量
    以字节衡量,或者以字数*字长衡量
  2. 运算速度
    1. 吞吐量和响应时间
      • 吞吐量。系统在单位时间处理请求的数量
      • 响应时间
    2. 主频和CPU时钟周期
      • 主频f。是时钟周期的倒数
      • CPU时钟周期。CPU中最小时间单位
    3. CPI,(Clock cycle Per Instruction)。执行一条指令所需的时钟周期数
      C P I = ∑ i = 1 n ( 第 i 种指令所需时钟周期数 ∗ 第 i 种指令数量 ) ∑ i = 1 n 第 i 种指令数量 CPI=\\cfrac\\displaystyle \\sum_i=1^n (第i种指令所需时钟周期数*第i种指令数量)\\displaystyle \\sum_i=1^n 第i种指令数量 CPI=i=1ni种指令数量i=1n(i种指令所需时钟周期数i种指令数量)
    4. CPU执行时间。运行一个程序所花费的时间
      C P U 执行时间 = C P U 时钟周期数 主频 = 指令条数 ∗ C P I 主频 CPU执行时间=\\cfracCPU时钟周期数主频=\\cfrac指令条数 * CPI主频 CPU执行时间=主频CPU时钟周期数=主频指令条数CPI
    5. MIPS ,(Million Instruction Per Second)。单位:百万指令/s,每秒执行多少百万条指令
      M I P S = 指令条数 执行时间 ∗ 1 0 6 = 主频 f C P I ∗ 1 0 6 MIPS=\\cfrac指令条数执行时间*10^6=\\cfrac主频fCPI*10^6 MIPS=执行时间106指令条数=CPI106主频f
    6. MFLOPS、GFLOPS、TFLOPS、PFLOPS、EFLOPS、ZFLOPS
      • MFLOPS(Million Floationg-point Operations Per Second),每秒执行多少百万浮点运算。
        M F L O P S = 浮点操作次数 执行时间 ∗ 1 0 6 MFLOPS=\\cfrac浮点操作次数执行时间*10^6 MFLOPS=执行时间106浮点操作次数
      • G F L O P S = 浮点操作次数 执行时间 ∗ 1 0 9 GFLOPS=\\cfrac浮点操作次数执行时间*10^9 GFLOPS=执行时间109浮点操作次数
      • T F L O P S = 浮点操作次数 执行时间 ∗ 1 0 12 TFLOPS=\\cfrac浮点操作次数执行时间*10^12 TFLOPS=执行时间1012浮点操作次数
      • P F L O P S = 浮点操作次数 执行时间 ∗ 1 0 15 PFLOPS=\\cfrac浮点操作次数执行时间*10^15 PFLOPS=执行时间1015浮点操作次数
      • E F L O P S = 浮点操作次数 执行时间 ∗ 1 0 18 EFLOPS=\\cfrac浮点操作次数执行时间*10^18 EFLOPS=执行时间1018浮点操作次数
      • Z F L O P S = 浮点操作次数 执行时间 ∗ 1 0 21 ZFLOPS=\\cfrac浮点操作次数执行时间*10^21 ZFLOPS=执行时间1021浮点操作次数
  3. 基准程序
    • 专门用来评价新年的一组程序
    • 不同的应用场合,应该选择不同的基准程序
    • 存在缺陷,基准程序的性能与某一小段的短代码密切相关

1.3.2几个专业术语

  1. 系列机
    • 具有基本相同的体系结构
    • 相同基本指令系统
    • 不同型号
    • 同一个产品系列
  2. 兼容:软硬件在另一型号计算机上应用
  3. 软件可移植性:很少修改就能在另一型号计算机上应用
  4. 固件
    • 程序固化在ROM的部件为固件
    • 速度快于软件,灵活性优于硬件

第2章数据的表示和运算

2.1数制与编码

2.1.1 进位计数制及其相互转换

  1. 进位计数法
    1. 二进制
    2. 八进制
    3. 十六进制
  2. 不同进制数之间读转换
    1. 2 → \\rightarrow 8/16
    2. 任意 → \\rightarrow 10
    3. 10 → \\rightarrow 任意
  3. 真值和机器数

*2.1.2 BCD码

  1. 8421码
  2. 余3码
  3. 2421码

2.1.3定点数的编码表示

  1. 机器数的定点表示
    1. 定点小数。是纯小数, X = x 0 . x 1 x 2 . . . x n ,    x 0 是符号位 X=x_0.x_1x_2...x_n,\\;x_0是符号位 X=x0.x1x2...xn,x0是符号位
    2. 定点整数。是纯整数, X = x 0 x 1 x 2 . . . x n X=x_0x_1x_2...x_n X=x0x1x2...x以上是关于计算机组成原理的主要内容,如果未能解决你的问题,请参考以下文章

      计算机组成原理 取指令与指令译码实验

      计算机组成原理 取指令与指令译码实验

      计算机组成原理 取指令与指令译码实验

      关于计算机组成原理的Cache-主存地址映象问题

      王道计算机组成原理笔记15 主存与CPU的链接

      王道计算机组成原理笔记14 主存简单模型和寻址概念