前言

内容:

  • 指令系统
  • 存储系统

中论

指令系统

计算机的指令由操作数和操作码组成

  • 操作数:参加运算的数据以及所在的单元地址
  • 操作码:决定要完成的操作

计算机指令执行过程:

​ 取指令–>分析指令–>执行指令

指令寻址的方式[指令寻址:下一条欲执行指令的地址(始终由程序计数器PC给出)]

顺序寻址:PC = ( PC ) + 1,1指的是一个指令的字长

跳跃寻址:由转移指令指出 PC 的值

数据寻址(指令操作数)的方式[数据寻址:确定本条指令的地址码指明的真实地址]

==立即寻址==:指令的地址码字段不是地址,而是操作数本身。

==直接寻址==:在指令的地址字段中直接指出操作数在主存的地址。【操作数的地址】

==间接寻址==:指令地址码字段指向的存储单元中存储的是操作数的地址。【操作数的地址的地址】

==寄存器寻址==:地址码是寄存器的编号

基址寻址:基址寄存器的内容机上指令中形式地址而形成操作数的有效地址

变址寻址:变址寄存器的内容机上指令中形式地址而形成操作数的有效地址。

CISC和RISC

CISC:复杂指令系统。由微程序实现。

RISC:简单指令系统。由硬件实现(通用寄存器、硬布线逻辑控制)。==适合采用流水线==

流水线

流水线原理:将指令分成不同段,每段由不同的部分去处理。

RISC的流水线技术

  1. 超流水线技术。增加级数、提高主频,以时间换取空间。
  2. 超标量技术。多条流水线,以空间换取时间。
  3. 超长指令字。软硬结合。

流水线时间计算

流水线周期:执行最长的时间段为流水线周期。

流水线执行时间:一条指令总时间+(总指令数-1)*流水线周期。

流水线吞吐率计算:指令条数/流水线执行时间。

流水线加速比计算:不使用流水线执行时间/使用流水线执行时间。

存储系统

两级存储:Cache-主存、主存-辅存(虚拟存储体系)

局部性原理:总的来说,CPU在运行时所访问的数据会趋向于一个较小的局部空间地址内

  • 时间局部性:相邻的时间会访问一个数据项
  • 空间局部性:相邻的地址空间被连续访问

高速缓存Cache

  • 由控制部分和存储器组成。前者判断是否命中Cache,后者存储数据。
  • 直接与CPU交互,位于CPU和主存之间。
  • 地址映射:CPU传输的是主存单元的地址,不是Cache的地址,所以需要将主存地址转成Cache地址进行判断。==这种转换由硬件自动完成映射==
    • 直接映像:将Cache分成等块,主存也分成等块。数据只能放在相同块号的Cache中。地址变换简单,但容易造成资源浪费。
    • 全相联映射:主存中任意一块都能与Cache中的任意一块对应。地址变化复杂,最不容易发生块冲突。
    • 组组相连映像:前两种的结合。先分块(直接映像)后分组(权向量映像),即主存和Cache中的组号相同才能命中,同一组号内的所有块可以任意调换。
  • 替换算法:是Cache尽可能高的命中
    • 随机替换算法
    • 先进先出算法(FIFO)
    • 近期最少使用算法(LRU)
    • 优化替换算法
  • CPU读取一次数据的平均时间 = Cache命中率×读取Cache时间+未命中率×读取主存时间

后记

补充:

Flyynn分类法根据计算机在执行程序的过程中的==指令流和数据流==的不同组合,将计算机分为4类。多核计算机属于MIMD(多指令、多数据)。

连伟人的一生都充满了那么大的艰辛,一个平凡的人吃点苦又算得了什么呢? ——————《平凡的世界》