读书笔记:《计算机系统概论》——第五章:LC-3结构


指令集架构(Instruction Set Architecture,ISA)

ISA定义了软件编程所需要的必要而完整的描述,具体来说,ISA定义了3个东西:操作码的集合、数据类型和寻址模式
指令:由操作码和操作数组成。在LC-3中,定义了15条指令,每条指令均占16个bit;指令可以分为三类:运算、数据搬迁、控制
操作码:每个指令都有唯一的4bit操作码(bit[15:12]),而不同的操作码对应不同的指令格式
LC-3中几个重要的寄存器:
  • 通用寄存器(General Purpose Register,GPR):R0~R7共8个,每个均为16bit
  • IR、PC:上一章已经讲过,IR用来存放本次执行的指令,PC用来存放下一条指令所在的内存地址
  • 条件码:LC-3中有3个位寄存器,为N、Z、P,一旦GPR的数据发生变化,条件码的对应一位就会发生变化:写入正数时,N置1;写入0时,Z置1;写入负数时,P置1。条件码的作用是可以根据条件码的变化来控制指令执行的顺序。

指令介绍

运算操作指令在LC-3中只有3个:ADD、AND、NOT。
这几个指令有几个惯用的用法:
  • 寄存器清零:和0做AND操作
  • 减法:NOT第二个操作数后+1(即取补码)与第一个操作数ADD
数据搬迁指令在LC-3中有7个:LD、SD、LDR、STR、LDI、STI、LEA
  • PC相对寻址:LD和SD。DR←M[PC+PCoffset9];SD同理。范围较小,但速度快
  • 间接寻址:LDI和STI。DR←M[M[PC+PCoffset9]];STI同理。范围为全内存,但速度慢
  • 基址偏移寻址:LDR和STR。DR←M[baseR+offset6];STR同理。范围为全内存,速度快
  • 立即数寻址:LEA。DR←PC+PCoffset9。常用作对寄存器初始化地址。
控制指令:BR、JMP、TRAP
  • 条件跳转指令:BR。若条件码N/Z/R对应位发生变化,则PC←增量PC+PCoffset9。注意,这个跳转是有范围的。
  • 无条件跳转指令:BR,其中nzp位均置1.
  • 循环控制的两种方法:计数器方法(知道要循环多少次);哨兵法(事先不知道循环多少次,放一个哨兵字,若哨兵字出现,则跳出循环)
  • JMP:BR的跳转地址有局限性,而JMP无。
  • TRAP:跳转至某个既定程序的入口,执行完毕后,执行下一条指令。既定的程序的入口用trapvector陷入矢量来表示位置。

LC-3数据通路总结

读书笔记:《计算机系统概论》——第五章:LC-3结构_第1张图片

  1. 全局总线:黑粗箭头即为全局总线(Global Bus),16bit,同时只能有一个数据传输,故需要控制单元控制各部分向全局总线传递数据。
  2. 内存:由控制单元发送读/写使能信号,控制内存的读或写操作;同样MAR和MDR也由控制单元发送控制信号控制数据的写入。
  3. ALU和寄存器:ALU有两个输入,一个来自寄存器(SR1信号作为地址),一个来自寄存器(SR2信号作为地址)或立即数(由指令bit[5]作为SR2MUX的选择信号);ALU的操作结果是放在某个GPR中,这是由指令中DR这个3bit的地址信号确定的。当GPR发生变化后,ALU的输出会经过全局总线送给LOGIC单元对条件码进行置位。
  4. PC:PC的输入为PCMUX选择器,PCMUX输入包括PC+1(正常执行)、利用offset计算的PC值(控制指令)、MDR(控制指令)
  5. MAR:因为有各种寻址模式,通过分析MARMUX的输入可以很容易理解各种寻址模式。

你可能感兴趣的:(读书笔记)