注意事项:
序号有点问题,影响不大,内容都是各种资料整合和我自己归纳总结的,不喜勿喷,感觉扔回收站可惜了,所以分享出来,能有帮上你的忙就最好不过了,更多复习资料,可以去看我的合集。
5. 指令系统
a) 理解指令格式的基本概念;掌握指令操作码扩展方法(比如教材例 5.1 及 PPT 上 相关例题);
指令格式=操作数 OP+地址数 An
所谓的指令操作码扩展方法:是将原本地址码的位数给 OP 操作码,让操作码变大从而扩展,指令条数看的是 OP 操作码的大小。
- 上一个地址剩下的‘1’对于下一个地址来说=21=2 条指令
考试例题:
- 零地址的运算类指令即堆栈运算指令,参加的两个操作数来自堆栈的栈顶和次栈顶。
- 一条指令有 128 位,按字节编址。读取这条指令后, PC 的值自动加 16
-
- 按字节编址,128/8=16,一条指令有16个字节长度,所以PC值要自动加16
- 一个计算机系统采用32位单字长指令,地址码为12位,如果定义了250条二地址指令,那么一地址指令()条。
-
- 250<28,因此二地址指令的操作码为8位,现定义了250条二地址指令,采用扩展操作码技术,留下6(256-250=6)个扩展窗口,每个扩展窗口可以扩展212=4K条一地址指令,故可扩展6*4K=24K条一地址指令。
b) 掌握指令寻址方式特别是操作数寻址方式,能够计算各种寻址方式下的有效地址 或操作数。(立即数寻址、直接寻址、间接寻址;寄存器寻址、寄存器间接寻址、 相对寻址;基址寻址、变址寻址,8 种?)
形式地址 A: 指令字中的地址
有效地址 EA: 操作数的真实地址 w
- 概念:
- 立即数寻址:eg:mov,AL,5:将 5 送到 AL 寄存器中,指令中直接给出了操作数=立即数=5
-
- 有效地址计算方法:不需要寻址
- 直接寻址:指令的地址码 直接给出 操作数所在 主存 的存储单元地址,A=EA,EA 就是有效地址,A 是地址码
-
- 有效地址计算方法:指令中形式指令部分就是有效地址,EA=A
- 间接寻址:地址码 给出的地址 是 有效地址 EA 的地址,读取其中的内容,指向真正的数据地址
-
- 有效地址计算方法: 不懂
- 直接寻址和间接寻址都是在主存里面找 操作数
- 寄存器寻址: ,在寄存器里面找操作数,类似直接寻址
-
- 有效地址计算方法:指令中的形式地址直接指出寄存器的编号,操作数存储于寄存器中,即 Ri=EA,有效地址即为寄存器编号。
- 寄存器间接寻址: ,寄存器里面放 EA,再通过 EA 去主存里面找操作数
-
- 有效地址计算方法:指令中的形式地址为寄存器的编号,寄存器的内容是操作数的有效地址。EA=(Ri)
- 变址寻址: EA=首地址(Rx) +偏移量 A
-
- 计算有效地址:变址地址有效地址 = 主存中的首地址 +变址寄存器中储存的主存应该偏移的量=变址地址+指令中的形式地址
- 变化的,寄存器,偏移量,变质寄存器
- 在程序执行过程中,基址寄存器的内容不能改变而变址寄存器的内容可以改变
- 基址寻址:
-
- 计算有效地址:基址地址有效地址 = 基址寄存器中的首地址 +偏移量=基址地址+形式地址 EA=(Rx)+A
- 基本的,主存,首地址,基址寄存器
- 相对寻址: ,EA 在主存中向上或者向下偏移的量就是相对偏移量
-
- 计算有效地址:EA=当前 PC 值+相对偏移量+形式地址
- 有三个值,注意
c) 指令格式的设计(操作码+二地址+一地址+零地址,每种地址数的分配和计算)。
字长 16 位=主存容量:64K=地址位一共 16 位
例题:
- 字长16位,主存64K,指令单字长单地址,80条指令。寻址方式有直接、间接、相对、变址。请设计指令格式。
-
- 解:80条指令→OP字段需要7位( 2^7=128 )
4种寻址方式→寻址方式特征位2位
单地址位长度:16-7-2 =7位
- 解:80条指令→OP字段需要7位( 2^7=128 )
- 设某指令系统指令字长16位,每个地址码为6位。若要求设计二地址指令15条、一地址指令34条,问最多还可设计多少条零地址指令?
-
- 解: 二地址指令的地址码占12位,故操作码为4位,所以最多有 24=16种编码,用去15种,就剩下1种编码1111还没用
-
-
- 初始指令数量= 2 操作数
-
-
- 单指令剩余状态数:1*26-34=30
- 零地址指令最多:30*26 条指令
- 某机器指令码长度16位,地址码长度都为6位,包含一地址指令、二地址指令和零地址指令。一地址指令最多能有多少条?此时二地址指令和零地址指令各为多少条?
-
- 一地址指令最多能有(24-1)×26-1=959条。此时二地址指令只有一条,零地址指令最多可有26=64条。
- 题干说的要一地址最多,所以二地址指令分配一条,给零地址指令留1个扩展窗口。
- 24-1:OP的四位全部用作一地址指令的条数,并给二地址指令留一条。
- (24-1)×26:再把第一个地址码的6位用作一地址指令的OP。
- (24-1)×26-1:最后剩下一个全1用作零地址的扩展窗口,所以要减去1.
6. 中央处理器
a) 了解 CPU 的组成及相关寄存器的作用;(PC、IR、MDR、MAR)
CPU 的组成:
- 控制器:取指令、计算下一条指令的地址、对指令译码、产生相应的操作控制信号序列,形成完成指令所需要的数据通路,控制指令执行的步骤和数据流动的方向
- 运算器:运算器是执行部件,由算术逻辑单元和各种寄存器组成。运算器接受控制器的命令执行功能
CPU 中各种寄存器及其功能:
- PC:程序计数器。用于存放下一条指令的地址,当取完一个字节以后,PC的值会自动加一,为取在下一条指令做准备。
-
- 思考:为什么不直接存放下一条指令而存放下一条指令的地址呢?
- 如果存放地址的话可以很方便的自动加一定位到下一条指令的地址,但是如果存放的是指令的话,那只能在每一天指令的后面加上下一条指令的内容,导致指令长度过长,同时不便于程序转移。
- IR:指令寄存器。用于存放当前正在执行的指令。
- MAR:主存地址寄存器。存在于CPU中,存放的是 将要访问主存的地址。注意,MAR之中存放的只有地址,即存储单元的索引地址。
- MDR:主存数据寄存器。存在于CPU中,存放的是 某一个存储单元。
b) 掌握指令执行的一般流程、指令周期的基本概念;(指令周期、CPU 周期/机器周期、时钟周期)
指令周期:将一条命令从取出到执行完成所需的全部时间
- 取指令,修改 PC 值,
- 指令译码,就是破译指令
- 是否分支?
-
- 是:计算分支地址,修改 PC 值
- 否:开始取操作数,执行指令,存操作数(执行阶段)
- 是否中断、异常?
-
- 异常:中断响应,保存断点,打回重做
- 不异常:取下一条命令,循环执行
c) 掌握单总线结构的计算机从 取指到执行完毕 整个过程的 数据通路建立过程 及相关 控制信号 产生过程;(取指令阶段)(数据流和控制流)
解题方法:
例题:单总线,写 ADD,R1,(R2)的微操作序列?
题目的含义是:
- ADD:加法运算
- R1:R1 的内容
- (R2):R2 内容对应的地址,先转化一步才能得到 R2 的内容
- (R1)+((R2)) -> R1:将R1 的内容加上R2 的内容得到的结果再存入 R1 的地址
具体解法:
- 取指:固定第一步套路:直接写就有分
-
- PC -> MAR:PCout,MARin
- M(MAR) -> MDR:具体数值,MARin
- MDR -> IR:MDRout,IRin
- (PC)+1 -> PC:+1
-
-
- 这一步一般情况下,是取出了 R1 的内容存入了 IR 的地址
-
- 译码:根据实际情况调整,
-
- (R2)-> MAR:R2out,MARin
- M(MAR) -> MDR:R,MARin
- MDR -> LB:MDRout,LBin
- (R1) -> LA:R1out,LAin
- (LA)+(LB)-> R1:+,移码器 out(反正就是一个存结果的东西,不一定是移码器),R1in
d) 掌握微程序控制器的基本概念,理解微指令及其编码方法(直接表示法和编码表 示法),了解硬布线和微程序控制器的各自特点。(微程序、微指令、微命令、微操作的概念)(编码表示法:互斥、兼容的关系)
微操作:执行部件收到微命令后进行的操作
微命令:控制部件向执行部件发出的各种控制信号
微指令:一个 CPU 周期或者时钟周期中,一组实现一定操作功能的微命令组合
微程序:实现一条指令功能的若干条微指令的集合
微操作 <- 微命令 -> 微指令 -> 微程序
三、复习资料:
教材+PPT+学习通作业(不要去网上找资料,帮助不大)