【408】【计算机组成原理】04 指令系统

虚拟存储等放在操作系统再讲,到时候要结合cache、内存、磁盘三者之间如何协同工作。

指令系统这个章节选择题基本是考概念,大题基本上都是给一段CISC或者RISC的程序片段结合cache与虚拟存储一起考察,因此在学这章的时候一定要明确这个指令的存放在什么位置,什么时候读取这个指令以及如何实现指令的读取。这个章节是机组整本书的关键,能够串联起整本书的知识,因此等学完这本书之后再n刷这章的题目(特别是大题)会豁然开朗。

一、何为指令系统

指令系统可以理解为武侠小说里的不同流派,在这里主要有两种派系RISC与CISC。两种门派看家本领各不相同(对待指令的方式),但是最终的结果都是一样的。CISC是开山鼻祖,存在多种指令操作(超多武林秘籍),因此对应的电路更为复杂,因此只能选择微指令程序的方式来完成指令操作,支持变长指令,并且数据一定是小端存储。RISC对应的是精简指令集,可以理解为CISC的简化版,操作有限,一般采用五段式流水线完成指令操作,仅支持定长指令(因为定长指令才适合流水线)。

CISC的代表是x86架构(Intel与AMD都是x86的代表企业),RISC的代表是MIPS架构(对应的是ARM)。在做题时第一件事情就是要区分题目所给的指令是RISC还是CISC,同时我们也要对相关汇编语言有一些了解。
 

二、指令格式

对于一条指令,我们将其划分为3段 操作码,寻址方式,地址码。

根据地址码的个数我们将其分为0地址指令,1地址指令,二地址指令,三地址指令...

对于扩展操作码指令格式,要注意它是定长指令格式的一个分支,只是操作码的长度可变。这里可能会考一个指令的划分或者求一下能够划分出多少个指令,这个点看王道书应该能够解决,本身不是难点,但是要学习这个划分的思想,如何划分出不重复的串,在计网的可变长子网划分中还要运用。

三、寻址方式

王道书列举了多个寻址方式,我很明确的告诉各位一定要倒背如流!每一种都要掌握,千万不要有侥幸心理!其实本质就三个大类:立即数、内存、寄存器。

提示几个点:

1.哪一种方式适合数组

答:变址寻址方式,因为变址寄存器存储的是偏移量,将数组的首地址存储之后加上偏移量就能找到每个元素。注意 在基址寻址中,基址寄存器存储的是首地址,而且仅面向操作系统,程序员无法操作。

2. 如何实现指令跳转?(如jle指令)

可以通过相对寻址的方式实现,一般跳转指令的末尾会指明一个偏移量,这个偏移量的表现形式为补码的形式(一定要小心,跳转指令跳转的是地址,而内存地址没有负数,注意这个偏移量的范围,如果太负了(数值太小)会越界),系统会将这个偏移量存放在寄存器中并随后与PC的数值进行加的操作同时还要加“1“(这个”1“指的是一条指令的编码单位数,如指令为32位,按照字节编址,那么这里的编码单位数就是4,为什么要加这个“1”?是因为不管在任何情况下,读取指令后pc自动加“1”,一定要记得这个点,考过无数次)。

3. 在一条不进行写操作的指令的生命周期内,可能不会涉及到访存,因为地址转化、数据读取都在cache、TLB中完成(页表在内存里,快表不在内存里是个特殊的硬件)。

三、CISC与RISC

这个要自己去掌握两种指令集随对应的汇编语言,防止考试看不懂题目。考察比较多的就是跳转指令(无条件跳转与有条件跳转,在控制冒险里还要和跳转指令打交道)。以及学会区分CISC与RISC,就看指令是不是定长,或者根据RISC的访存操作只能由load与store指令来完成(一定小心)。有个细小的点各位可能会忽略,在RISC指令集的机器中寄存器的数量要多于CISC的,因为RISC的数据不能立刻存储到内存中,要等store指令,所以我们要把数据先存放在寄存器里。因此从这个角度出发也能很好理解为什么寄存器的数量会多。

四、程序的机器级代码

这个点目前只考大题,王道的4.3节写的比较详细,一定要掌握指令的语法,甚至包括x86中寄存器的含义(比如EBX是基地址寄存器,EDX是数据寄存器,ESI或EDI是变址寄存器,EBP是堆栈底部指针,指明了一个程序在内存堆栈的栈底,ESP指明了程序在内存中堆栈的栈顶指针。这部分内容是操作系统的程序的内存映像)。有些重要指令如 jmp ,jle,cmp,call,ret要重点理解机制,以及在五段式流水线中对控制冒险的影响。王道的4.3.2对这些寄存器与指令的运行过程描述的十分详细,我就不抄书了(要提醒一句,王道给的4.3.2的call与add的栈帧图里低地址在下面,高地址在上方,所以上面是栈底,下面是栈顶)。

以上就是王道第四章。

五段式流水线与硬布线在cpu的章节讲

  • 26
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值