0%

计组chp4-MARIE

参考的书《计算机组成与体系结构》第4版(黑皮书)(The Essentials of Computer Organization and Architecture)。注:目前仅记录考试需要用到的部分。

4.2CPU

作用

  • 取指fetch
  • 译码decode
  • 执行execute指令

组成

  • 数据通路datapath
    • ALU:arithmetic and logic unit算术逻辑单元
    • register寄存器/存储单元
    • bus数据总线
  • 控制单元control unit

寄存器

寄存器中存放的数据易于CPU访问,可以使用 D 触发器来实现。

ALU

算术逻辑单元 (ALU) 按照控制单元的指示执行逻辑和算术运算。

控制单元

控制单元根据程序计数器寄存器和状态寄存器中的值确定执行哪些action

4.3总线

分类

  • 点对点总线point-to-point
  • 多点总线multipoint

组成

  • 数据线data lines:传送位bit
  • 控制线control lines:控制数据流的方向+设备的访问控制
  • 地址线address lines:确定数据源或目标的位置

总线仲裁

在主从配置中,不止一个设备可以是总线主机,并发的总线主机请求必须进行仲裁

  • daisy chain:根据优先级
  • centralized parallel:集中并行:每个设备直接连接到一个仲裁电路。
  • distributed using self-detection:使用自我检测进行分布式:设备在它们之间决定哪一个获得总线。
  • distributed using collision-detection:分布式使用冲突检测:任何设备都可以尝试使用总线。如果它的数据与另一个设备的数据冲突,它会重试

4.4时钟

  • clock cycle时钟周期= 1 / 频率。在一个时钟周期内,CPU仅完成一个最基本的动作

  • clock frequency时钟频率:决定执行所有操作的速度

  • 指令周期数CPI:平均每条指令耗费的时钟周期数

    • CPI = 执行程序所需的时钟周期数 / 所执行的指令条数
  • 运行程序所需的CPU时间:

    • CPU时间 = 执行程序所需的时钟周期数 * 时钟周期时间
    • image-20220425115633772

4.6存储器

  • memory由类似于寄存器的可寻址addressable存储单元storage cells的线性阵列linear array组成
  • 按字节寻址或字寻址
  • memory由RAM芯片构成,通常以长度×宽度来表示

地址表示

eg.假设一个memory由16个2K×8位芯片组成,则:

  • 假设按字节(8bit)寻址,则memory=$16×2K=2^4×2×2^{10}=2^{15}$,即每个地址需要15位来表示
  • 由16个芯片=$2^4$,即需要4位来选择芯片
  • 需要(15-4=)11位来表示选中芯片内的偏移量
    • 高阶交错high-order interleaving:高4位来选择芯片
    • 低阶交错:低4位
  • ps:注意存储器的寻址方式(按字or字节)

4.7中断

Interrupts, higher-priority更高优先级

被触发triggered

  • I/O请求request
  • 算术错误arithmetic errors
  • 遇到无效指令invalid instruction

4.8MARIE

MARIE架构特性:

  • 二进制及补码表示

  • 存储程序、固定字长、指令

  • 主存可字寻址,总容量4K字

  • 1字=16位

  • 16位指令=4位操作码+12位地址

  • 16位ALU

  • 7个寄存器,用于控制和数据移动(没特别提到就是16位)

    • AC,累加器accumulator
    • MAR,内存地址寄存器memory address register,12位
    • MBR,内存缓冲寄存器memory buffer register
    • PC,程序计数器program counter,12位,存储指令的地址
    • IR,指令寄存器instruction register
    • InREG,输入寄存器input register,8位
    • OutREG,输出寄存器output register,8位

    image-20220425173012333

    RTL寄存器传输语言,用M[X]表示存储在寄存器X中的实际数字值

指令集架构

instruction set architecture:ISA,是硬件与软件之间的接口,MARIE模型只包含13条指令,每条指令由一系列更小的指令组成(即微操作microoperations)

一些基本的MARIE指令:计算机组成和体系结构【4】MARIE机器_(∪.∪ )…zzz的博客-CSDN博客_marie汇编语言image-20220425173510839

  • AC:累加寄存器
  • Load:将地址X中的值存入AC
  • Store:将AC中的值存到地址X中
  • Add:AC+=地址X中的值
  • Subt:AC-=地址X中的值
  • Skipcond:如果AC中的值大于0则跳过下一条指令
  • Jump:将X装入PC(程序计数器,即转到X作为下一条指令)
  • Clear:AC=0
  • ADDI X:(间接寻址),将地址X中的值作为地址Y,AC+=地址Y中的值

4.9指令处理

取指-译码-执行周期

  1. 从内存中取指并放入IR
  2. 进入IR后,解码
  3. 如果涉及操作数,则取出操作数放入MBR

image-20220425174337925

中断指令

4.10一个简单的程序

假设部分地址及其内容:image-20220425174615886

Load 104指令执行的具体情况-寄存器的变化:image-20220425174650038

  1. 取指
    1. 从PC中取出指令放到MAR;
    2. 将MAR中的指令地址中的指令内容(hex)传入IR;
    3. PC++(程序计数器自动更新下一条指令的位置)
  2. 解码
    1. 将IR中的指令的地址部分(IR[11-0]共12位)传入MAR
    2. 解码操作数(IR[15-12])
    3. 获取操作数:将MAR中的内容传入MBR
  3. 执行指令,将MBR中的值放入AC

作业

10.存储寻址

image-20220427135202104

首先关注题中是否提到是按字还是按字节寻址

  1. 需要的RAM芯片数量:根据主存容量的长和宽共同确定
  2. 地址位数=幂次数
    1. 芯片的地址位好像不需要考虑按什么编址?就一行算一个存储单元
    2. emmm那就是看有多少行吧
  3. 存储体:主存按行分模块
    1. n路交叉表示将主存分为n块
    2. 本题好像没说啥就直接按照芯片分块了?
  4. 高/低位交叉编址
    1. 块字段+偏移字段
    2. 一个位置返回一个字

22.指令的16进制表示

前4位是操作码如LOAD,后12是操作数如地址

image-20220427135809473

  • Load A: Load=0001=0x1, A=0x108→0x1108
  • Halt没有操作数,则为0
  • HEX 0001没有操作码

23.符号表

symbol table,就是用一个符号表示一个地址以上一题为例:

A 108
One 109
S1 106
S2 103

24.AC寄存器

与指令执行,直接寻址,间接寻址有关