计算机组成原理-知识点随心记

知识点

Posted by Kingtous on September 29, 2019
本页面总访问量

指令系统

  • 堆栈

    push A
    push B
    ADD
    pop C
    
  • 累加器

    LOAD A
    ADD B
    STORE C
    
  • R-S

    LOAD R1,A
    ADD R1,B
    STORE C,R1
    
  • R-R

    • 只有store和add能访问内存
    LOAD R1,A
    LOAD R2,B
    ADD R3,R1,R2
    STORE C,R3
    

控制器的基本组成

  • 取指令(PC)
    • PC具有计数功能,$PC +1 \rightarrow PC$(1是指一个指令字节,实际可能加4,6等)
  • 分析指令(Intruction Register)
  • 执行指令(CU)

取数整个过程:

PC -> MAR ->存储体 -> MDR -> IR -> CU -> MAR(取指令数) -> 存储体 -> ACC

存数整个过程:

PC -> MAR ->存储体 -> MDR -> IR -> CU -> MAR(取地址) ->ACC -> MDR -> 存储体

机器字长

CPU一次能处理数据的位数

与CPU的寄存器的位数有关

运算速度

主频

  • 时钟频率

    每个时钟信号周期完成一步操作。并不是越高越快。

  • 吉普森法 其中$f_i$表示某种指令占全部操作的百分数,$τ_i$为其执行时间

Million Instruction Per Second

Cycle Per Instruction=$\frac{\mbox{测试程序的总时钟周期}}{\mbox{测试程序的指令总条数}}$

Instruction Per Cycle

Floating Point Operation Per Second

MFLOPS,GFLOPS,TFLOPS

加速比

  • 大概率事件优先

  • Amdahi定律(考研题)

    • 部件在计算机里越重要,加速比越大

      例题

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      
      # 定义
      # num_int 为程序int类型计算指令数
      # num_int_cyc 为int类型计算平均周期数
      num_int = 45000
      num_int_cyc = 1
      num_tran = 75000
      num_tran_cyc = 2
      num_float = 8000
      num_float_cyc = 4
      num_branch = 1500
      num_branch_cyc = 2
      computer_clock = 400000000 #MHz
      # 计算步骤
      all_num=(num_branch+num_float+num_tran+num_int)
      all_clock_cyc = num_int*num_int_cyc + num_tran*num_tran_cyc + num_float*num_float_cyc +num_branch*num_branch_cyc
      # 变量计算
      CPI = all_clock_cyc / all_num
      excution_time = all_clock_cyc / computer_clock
      MIPS = all_num / excution_time
      # 输出
      print("CPI:",CPI)
      print("MIPS:",MIPS/1000000,"MHz")
      print("excution_timeT:",excution_time*1000,"ms")
          
      """
      输出结果:
      CPI: 1.776061776061776
      MIPS: 225.21739130434784 MHz
      excution_timeT: 0.575 ms
      """
      

      ???授课PPT上的性能评价例题最后一题

  • 系统加速比依赖于

    • 可改进比例

      可改进系统运算时间比例。60s的程序中有20秒运算,比例则为20/60.

    • 部件加速比

芯片集成度:

  • 物理极限
  • 按几何级数递增的制作成本

提高访存速度的措施

  • 采用高速器件

    • SDRAM(同步DRAM)

      • 在系统时钟的控制下进行读出和读入

      • CPU无需等待

        普通L

        ​ $T_1$:CPU -> AddrBus

        ​ $T_2$: CPU -> R/W

        ​ $T_7$:CPU -> DBus

        ​ $T_8$: R/W

        ​ …

        而在$T_2$到$T_3$期间,原本有约定的等待时间,但在SDRAM上,CPU在这段等待时间内撤走,去做其他的事务

      • 突发访问

    • DDR SDRAM

      • 双倍数据率:在$T_7$的上升沿和下降沿都送一次数据
    • DDR2 SDRAM

      • 相比DDR SDRAM引脚变成了两面
    • RDRAM (Rambus)

      • 主要解决存储器带宽问题
    • Cache的DRAM

  • 采用层次结构 Cache-主存

  • 调整主存结构

    • 单体多字系统

      • 增加存储器的带宽
    • 多体并行系统

      • 高位交叉、顺序编址

        • 体号+体内地址 比如111101,可以增加前两位(已经增加,为11),代表多体的编号,从而实现并行
        • 总线存取周期为T,连续存储4个字所需的时间为$nT$
      • 低位交叉、各个个体轮流编址

        • 解释:111101,最后两位代表位数
        • 特点:在不改变存取周期的情况下,增加存储器的带宽(低位可以直接让其连续读,每+1都不在一个存储体内)

        • 例题
          • 四位低位交叉存储器,存取周期为T,总线传输周期为$\tau$,应满足$T=4\tau$
          • 连续存储4个字所需的时间为$T + (4-1)\tau$

​ ?双通道内存???,两根内存条, 服务器内存

高速缓冲存储器(Cache)

  • 命中

    • 主存块 调入缓存
    • 主存块与缓存块建立了对应的关系

    用标记记录对应相应的存储块

  • 未命中

  • Cache的命中率

    • 定义
    • 关系

      • 与Cache的容量和块长有关

      • 一般每块可取4-8个字

  • Cache-主存系统效率的概念


  • Cache的基本结构

    • 要保证Cache和主存的一致性

      • 写直达法
        • 既写入Cache又写入主存
      • 写回法
        • 写操作时只把数据写入Cache而不写入主存,当Cache数据被替换才写回主存