暑期系列:计算机组成原理

Author Avatar
NENEIIII Aug 11, 2021
  • Read this article on other devices

1 计算机系统简介

  • 硬件:主机、外设等

  • 软件:程序

    image-20210809162200577

2 计算机基本组成

graph LR
A[运算器] -->B(CPU)
C[控制器] -->B
B -->E
D[存储器] -->E(主机)
F[输入设备] -->H(I/O设备)
G[输出设备] -->H
style A fill:#ccf
style C fill:#ccf
style D fill:#ccf
style F fill:#ccf
style G fill:#ccf
image-20210809164028137

一条指令[操作码|地址码]的完成过程:

  • 取指令:从MAR–>IR (PC 指向下一条指令的地址)

  • 指令译码:ID获取指令类别和操作数

  • 指令执行:

  • 访存取数:根据指令地址码访问主存取到对应操作数

  • 结果写回:CPU内部寄存器 || 主存..

3 计算机硬件主要技术指标

  • 机器字长:CPU一次能处理的数据位数(取决于CPU寄存器位数)
  • 运算速度

    CPI 执行一条指令所需时钟周期数
    MIPS 每秒执行百万条指令
    FLOPS 每秒浮点运算次数

  • 主存容量(内存)

    64K × 32位 :MAR 16个 存储字长32位
    1KB = 2 13 b

  • 辅存容量(外存) :1GB = 2 30 B 、1B = 8b(bit)

4 存储器

层级

image-20210811163455754

主存储器

  1. 与CPU通过总线直接相连image-20210811163634876

  2. CPU与主存的读写过程

    1. 读出:CPU将该字地址送至MAR经地址总线送至主存–>发读命令–>主存读出内容后送至数据总线上由MDR送至目的地

    2. 存入:CPU将该字地址送至MAR经地址总线,将字送入MDR—>发写命令–>主存将数据总线上信息写入对应地址

  3. 技术指标

    存储容量:存在二进制代码的总位数

    存取时间:访问时间(读出时间或写入时间)

    存取周期:进行连续两次存储器操作所需最小间隔时间

    带宽:每秒从存储器进出信息的最大数量 [b/s 字节/s]

5 I/O系统

  • 发展过程

    CPU与I/O串行:程序查询方式

    CPU…并行:中断 | DMA

    通道结构

    I/O处理机

  • I/O接口

    image-20210810121018260
    • 设置原因:

      选择设备

      实现数据缓冲(匹配速度)

      串并转换

      电平转换

      传输控制命令

      反映设备状态(”忙“”就绪“”中断请求“)

  • 程序查询方式image-20210810121310702

  • 中断方式

    保护现场[出栈]

    中断服务

    恢复现场[进栈]

    中断返回

  • DMA方式image-20210810121731326

6 计算机的运算方法

原码

补码:正数与其原码相同 | 负数是原码除符号位外取反加一

反码:原码除符号位外取反

移码:与补码符号位相反image-20210810122335503

  • 定点表示:小数点位置不变

定点数x=xnxn-1…x2x1 [xn为符号位]

若X为纯小数:小数点位于xn与xn-1之间

若X为纯整数:小数点位于x1的右边

  • 浮点表示:任意二进制数N = 2^e.Mimage-20210810150919742

  • 相关运算

    乘法:靠一些移位和加减🚬

    [但是我感觉第二步就是一般整数乘法的算法就ok?]

    image-20210810151735175

除法:加减交替法

image-20210810160616306

结果为负数[11 1110] –> 商0、下一步 +Y、余数左移[11 1100]

结果为正数[00 1001] –> 商1、下一步 -Y、余数左移[01 0010]

结果为正数[00 0101] –> 商1、下一步 -Y、余数左移[00 1010]

结果为负数[11 1101] –> 商0、下一步 +Y、余数左移[11 1010]

结果为正数[00 0111] –> 商1 –> 最终商:01101 余数:00 0111(0.0111)

结果:0.0111 * 2-4 + 0.1101

浮点数加减:🚬🚬🚬image-20210810162244763

  1. 对阶:小向大看齐image-20210810162550317

    image-20210810162635081
  2. 尾数相加image-20210810162729690

  3. 结果规格化

    溢出[双符号位不相等]:右归->小数点左移 若没给出双符号位,则不会溢出

    未溢出:左归直到是image-20210810163050894

    image-20210810164422809
  4. 舍入处理:丢弃最高位0舍1入image-20210810164709244

  5. 阶码溢出判断image-20210810164824784

    image-20210810165907725

[补码–>原码:除符号位减1再取反]

7 指令系统^ 详见

  • 机器指令

  • 操作类型|操作数

  • 寻址方式

8 CPU

  • CPU结构image-20210811154301863

    寄存器种类

    通用寄存器:存放操作数

    数据寄存器:存放操作数

    地址寄存器:存放地址

    条件码寄存器:存在条件码

  • 指令周期:取出并执行一条指令所需的全部时间

  • 指令流水image-20210811155328449
    ![测试用](./computer consistency/image-20210811155339260.png)

  • 中断系统

    1. 引起中断的因素

      人为设置中断

      程序性事故(溢出、除法非法、操作码无法识别)

      硬件故障

      I/O设备

      外部事件(键盘 。。)

    2. 中断过程^ 详见
      [^ ]:OneNote微机原理-中断

      中断请求: 中断请求信号 –>CPU INTR口

      中断源识别: 中断类型号 –>高优先级先,同优先级按FCFS,低可被高打断

      中断响应

      1. 一条指令的最后一个时钟周期CPU检测INTR信号
      2. 向中断源发出INTA中断响应信号
      3. 断点保护(入栈)
      4. 获取中断服务程序首地址:【查询中断向量表:中断类型号|中断服务程序的入口地址

      中断服务

      1. 保护现场
      2. 中断服务
      3. 恢复现场
      4. 中断返回

      中断返回:弹出堆栈中断点信息