计算机组成与设计阅读笔记

  • 大学教的是csapp, 内容有较多相似的地方, 但是换了个MPIS的体系结构. 所以我主要针对了不同点和自己感兴趣的地方做了笔记, 内容不全, 纯粹方便自己翻阅.

计算机体系结构

一个程序的CPU执行时间 = 一个程序的CPU时钟周期数 * 时钟周期时间或者=一个程序的CPU时钟周期数/时钟周期频率

CPI是指令的平均执行时钟周期

影响CPU性能有三个方面,完成某功能所需的指令数,每条指令的周期数以及处理器的时钟频率.

晶体管能耗正比于 1/2* 负载电容 * 电压 ^2, 功耗正比于 1/2 * 负载电容 * 电压^2 * 开关频率

由于特定改进的性能提升可能由所使用的改进特征的数量所限制. 收益递减定律.

秒数/程序 = 指令数/程序 * 时钟周期数/指令数 * 秒数/时钟周期数

mips的寄存器约定

10112

mips汇编语法

10113

MIPS的寻址模式, 可类比其他架构的寻址模式:

  1. 立即数寻址,操作数是位于指令自身中的常数
  2. 寄存器寻址,操作数是寄存器
  3. 基址寻址,操作数在内存,地址是指令中基址寄存器和常数的和
  4. PC相对寻址,地址是PC和指令中常数的和
  5. 伪直接寻址,跳转地址由指令中26位字段和PC高位相连而成

链接取数/条件存数机制的优点是可以通过它们来构造其他的注入原子比较和交换或原子取后加等同步原语.

ARMv7只有15个寄存器, 比MIPS的31个寄存器少, 因此他的寻址模式也叫为丰富, 设计了9中寻址方式:

10131

ARMv7的体系结构下:使用传统的存储在程序状态字体的4位条件码来决定条件分支是否执行. 这四个条件码是: 负值, 零, 进位, 溢出. 每条指令都有一个可选的执行条件,这个条件决定于调价码,而这些条件码可以被任何算术或逻辑指令设置. 每条指令开始的4位字段决定这条指令将执行空操作还是真实的指令操作,而这种选择也取决与条件码.

x86与ARM和MIPS在操作数的算术,逻辑和数据传输指令的不同之处在于

  1. x86的源操作数和目的数可以是同一个寄存器.
  2. x86指令中的一个操作数可以在存储器中.

一个程序所需的指令条数由编译器和指令集决定.

支持虚拟机的软件为虚拟机监视器(VMM)或者管理程序(hypervisor). VMM是虚拟机的核心. 它决定如何将虚拟资源映射到物理资源. VMM所需要的控制: 访问特权状态, I/O, 异常和中断.

处理器虚拟化的开销通常取决于工作量. 用户级处理器限制性程序因为没有虚拟化开销, 因为操作系统较少被调用,所以所有程序能以本来速度运行.而I/O密集型负载是个反例. 其次开销也取决于需要由VMM进行模拟的指令数目以及模拟速度的快慢.