计算机组成原理(指令)

1、“821.2016T1(1)”,表示821真题,2016年的题,T1是 选择题/填空题/大题 的第一题,其他类似标记也是相通

2、个人小白总结自用,不一定适用于其他人,请自行甄别

3、有任何疑问,欢迎私信探讨,看到后会及时回复

4、另外,想要获取 NUDT 计算机相关的资料,建议加官方QQ群756084430,群里有超级热心的吴彦祖和刘亦菲~

选择题

  1. 2017.T5算术右移指令:符号位不变,算术右移1位,最低位移到进位标志位
  2. 2005.T4跳跃指令给出的转移目标地址是:隐含的条指令的地址

    原本PC顺序执行已经+1,而跳跃指令再次改变了PC的值

  3. 取出指令后,程序计数器PC的内容是:条指令的地址
  4. 计算机区分指令还是数据的2种方法

    不同的指令周期,取指周期就是指令,执行周期就是数据

    地址来源区分,来自PC寄存器的,是主存的指令地址,来自指令译码器的指令地址码部分的是数据

  5. 扩展操作码的设计,是为了在相同的指令位数下,有更多的指令数量(来源慕课)

    慕课题目

  6. 能区分指令和数据的部件:控制器(控制器能通过总线和指令周期区分地址和非地址数据(来源慕课)

  7. 2013.T8)Add R4, 100(R1) 用到了:

    寄存器直接寻址R4

    立即数寻址100

    寄存器间接寻址(R1)

  8. 寄存器寻址(源操作数不在存储器),立即数寻址(源操作数在指令中,而指令取自存储器,所以源操作数也来自存储器)
  9. 程序控制指令:转移/分支/跳转指令、跳指令、子程序调用和返回指令、循环控制指令
  10. 转移指令和跳越指令的区别:

    转移指令:让CPU执行指令的顺序发生变化,包括无条件转移和条件转移2种

    跳越指令:通常只跳越一条指令。跳越指令中隐含(实际上没有)了一个地址,即下下条地址,跳越指令不需要目标地址字段

填空题

  1. 微指令的指令格式3种:水平型微指令、垂直型微指令、混合型微指令
  2. 微指令编码的4个方式:直接控制法、字段直接编码法、字段间接编码法、垂直编码法

    字段直接编码法,重要原则:能同时进行的微操作,是相容微操作,组合在不同字段(821.16.T4、821.13.T7、821.11.T5(答案有误))

  3. PC+1的相对寻址,通常用在转移指令
  4. 一个指令周期 = 若干个机器周期

    取指周期、间指周期、执行周期、中断周期

    取指、译码、执行、访存、写结果

  5. 取指阶段的微操作:

    T0:PC->MAR

    T1:MAR->MDR, PC+1->PC           // M(MAR)->MDR

    T2:MDR->IR

  6. 执行阶段微操作:

    T0:SP->MAR

    T1:MAR->MDR

    T2:MDR->PC, SP+1->SP

简答题

计算机采用二进制表达信息的原因:(3点)

  1. 制造2种稳定状态的物理元器件比较容易
  2. 二进制的编码、计数、运算方式比较简单
  3. 二进制的1/0对应逻辑的真/假,方便逻辑电路的实现

指令系统&操作系统

  1. 指令系统:是软硬件的接口和界面(软件通过指令系统调用硬件)
  2. 操作系统:是软硬件的资源管理

指令的3种冒险,以及相关的解决方式,要求画出解决前后的流水线时空图(九三P56)

大题

  1. MIPS标准的5级流水线:

    取指令IF

    指令译码ID

            读(指令)寄存器的内容

    执行EX

    访存MEM

    结果写回WB

            写到寄存器中

  2. 同一个时钟周期

    WB&ID、ID&IF可在同一个时钟周期

        产生,数据冒险

    1个时钟周期,分为0.5个周期

        前半周期写,后半周期就可以读出写的内容

        所以,这就支持,上一个指令的WB与本条指令的ID在同一个时钟周期里面

  3. 5级流水线,为了统一,减少工作量的判断,所有的指令,每一级都需要经过,只是可能没有具体操作

    比如Add没有MEM访存阶段,但是还是要经过MEM阶段

  4. 5级流水线的每一级,耗时都是一样的(未特别说明的情况下)

    所以,一级流水线的消耗时间 = 一条指令的执行时间 / 5

  5. 流水线,执行程序

    消耗总时间 = 一条指令执行的时间 + (指令个数 - 1) x 一级流水线的消耗时间

    8个指令进入5级流水线

            在不阻塞的情况下,需要:5 + (8-1) = 12个时钟周期

                    5,第一个指令所需的时钟周期

                    8-1,减掉第一个指令,其余指令都只要1级流水线,消耗1个时钟周期,即可完成指令

                    1级流水线,消耗1个时钟周期

  6. 非流水线,执行程序

    消耗总时间 = 一条指令执行的时间 x 指令个数

  7. 加速比 = 非流水线 / 流水线

    理想情况下,流水线比非流水线处理快多少倍,就是求加速比

  8. 流水线时空图

    指令编号

    时钟周期

    1

    2

    3

    4

    5

    6

    I1

    IF

    ID

    EX

    MEM

    WB

    12

    IF

    ID

    EX

    MEM

    WB

  9. 看程序和汇编代码判断编址单位

    看每条指令地址之间的间隔

  10. 程序左移的位数,可以看出:

    数组中1个元素的大小

补充知识点

6种寻址方式

2种汇编指令格式比较

2种汇编指令格式AT&TIntel
字母只能小写大小写不敏感
格式指令 操作数 目的操作数
从左到右
指令 目的操作数 操作数
操作数要求寄存器加前缀 %
立即数加前缀 $
/
内存寻址() 小括号[] 中括号
指定数据长度byte ptr
word ptr
dword ptr

 

3种常用指令举例

数据传送mov1、将寄存器、内存地址的数据,复制到其他地方
2、不可以直接将内存的数据复制到内存
 
pushESP寄存器的值-4,然后将数据放到对应的堆地址的内存中入栈 
pop放到对应的堆地址的内存中的数据出栈,然后ESP寄存器的值+4 
算术与逻辑运算add/sub加/减subtract
inc/dec自增1/自减1increase/decrease
imul1、带符号整数乘法
2、所保存的目的地址必须是寄存器
integer multiply
idiv1、带符号整数除法,只需要一个操作数,作为除数
2、被除数在EDX:EAX,商放在EAX,余数放在EDX
integer divide
and/or/xor逻辑与、逻辑或、逻辑异或1&&2=1/true
not每一位 1 0 互换/翻转 
neg取负negative
shl/shr逻辑左移、逻辑右移shift left/right
控制流指令jmp无条件转移 
je/jne/jz/jg/jge/jl/jle条件转移jcondition
cmp/test1、cmp 比较两个操作数的值
2、test 按位与
compare
1&2=0
call/ret1、call 子程序的调用
2、ret 返回
return

x86处理器通用寄存器

 

  • 20
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值