第七章、指令系统

第七章、指令系统

计算机组成原理—CPU

image-20230911221500507

指令系统在计算机中的地位

1、图解

2、指令系统是硬件和软件的接面

image-20230911221700080

7.1、机器指令

1、指令的格式是什么

这是重点!2、操作码、地址码、寻址方式是机器指令需要考虑的内容是

!作为了解3、指令的字长

4、固定字长、可变字长

7.1.1、指令的一般格式

image-20230911222610274

1、操作码

1、反映机器做什么操作

2、长度固定

1、用于指令子擦汗给你个比较长的情况,RISC

2、例如:IBM370 操作码8位

2、长度可变

1、操作码分散在指令字的不同字段中

2、扩展操作码技术

1、使用保留码点的方式

2、操作码的位数岁地址位数的减少而增加

3、图示

image-20230911224350195

4、短操作码一定不是长操作码的前缀,否则很难识别指令

5、使用1111作为操作码扩展的标记

6、经常出现的操作,用短操作码存储,不经常的操作,用长操作码进行存储

2、地址码

1、四地址

image-20230911225131804

2、PC代替一个地址码字段,增加地址码字段长度,减少地址码字段个数,增大了取值范围

2、三地址

1、程序计数器是PC

image-20230911225310085

3、二地址

image-20230911225855989

4、一地址

image-20230911225912106

5、零地址

1、堆栈类的指令,只需操作码,不需要地址

2、就无需地址码

7.1.2、指令字长

image-20230911230156870

1、指令字长固定

1、指令字长 == 存储字长

2、指令字长可变

1、按字节的倍数变化

7.1.3、小结

1、当用一些硬件资源代替指令中的地址码字段后

1、可以扩大指令的寻址地址

2、可以缩短指令字长

3、这是在固定字长中的

4、减少访存的次数

2、当指令的地址字段为寄存器时

1、可以缩短指令字长

2、

image-20230911230648564

3、指令阶段不访存

7.2、操作数类型和操作类型

7.2.3、操作数类型

1、地址:无符号 正数(绝对地址)、有符号数(相对地址)

2、数字:定点数、浮点数、十进制数

3、字符:ASCII

4、逻辑数:逻辑运算

7.2.2、数据在存储器中的存放方式

1、例子

image-20230911231127791

2、大端存储:

3、小端存储:

1、字节编址,数据在存储器中的存放方式(存储字长64位,机器字长32位)

1、从任意位置开始存储

1、图示

image-20230911231404091

2、优点

1、不浪覅存储资源

3、缺点

1、除了访问一个字节外,访问其他任何类型的字节,都有可能花费两个存储周期的时间。

2、读写控制比较复杂

2、从第一个存储字的起始位置开始访问

1、图示

image-20230911231849667

2、优点

1、无论什么访问类型的数据,在一个周期内都可以完成

2、读写控制很简单

3、缺点

1、浪费了宝贵的存储资源

3、边界对准方法—从地址的整数倍位置开始访问

1、图示

image-20230911232739805

1、双字的字长是8个字节,存储时,起始地址从地址编码是8的倍数的时候开始

2、半字,两个字节,存储时,从偶数的存储地址开始存

3、一个字,长度为4个字节,存储是,从地址编码是4的倍数开始存储

2、结论

1、数据吃饭的起始地址是数据长度(安装字节进行计算)的整数倍

2、这个方案是前两个的折中,即在一个周期内完成更多工作,也减少存储内存的浪费

7.2.3、操作类型

1、数据传送

1、内容

image-20230911233024492

2、算数逻辑操作

1、加减乘除、增1、减1、求补、浮点运算、是静止运算、与或非、异或、位操作、位测试、位清楚、位求反

3、移位操作

1、算数移位、逻辑移位、循环移位(带进位和不带进位)

4、转移

1、无条件转移JMP(直接转移到目标地址)
2、条件转移

1、结果为零转(Z=1) JZ

2、结果溢出转(O=0) JO

3、结果有进位转(C=) JC

4、跳过一条指令 SKP

3、调用和返回

1、例子

image-20230913093132813

4、陷阱(Trap)与陷阱指令

1、意外事故的中断

2、一般不提供给用户直接使用,在出现事故时,由CPU自动产生并执行(隐指令)

3、设置供用户使用的陷阱指令

5、输入输出

1、输入:端口中的内容,输入到CPU的寄存器中

2、输出:将CPU寄存器的内容,输出到端口中

7.3、寻址方式

问题:为什么在指令方式中要设置多种类型的寻址方式

1、寻址地址:确定本条指令操作数地址,下一条要执行指令指令地址

2、如何找到指令和数据操作的地址

3、寻址方式:指令寻址、数据寻址

7.3.1、指令寻址

1、顺序

1、取完当前指令,再取下一条指令,所以PC+1,再赋给下一条指令

2、其中+1是要看指令的字长,也有可能是可变字长

2、跳跃

1、由转移指令指出

2、图示

image-20230913094137768

7.3.2、数据寻址

image-20230913094401017

1、形式地址:指令字中的地址

2、有效地址:操作数的真实地址

3、约定(方便讲解):指令字长=存储字长=机器字长

1、立即寻址

1、形式地址A就是操作数

2、图示

image-20230913094709532

3、由#号是立即寻址的特征,后面会跟一个立即数

4、指令执行阶段不访存,因为此时已经把操作数拿到CPU中了

5、A的位数限制了立即数的范围

2、直接寻址

1、EA=A:有效地址由形式地址直接给出

2、图示

image-20230913095036026

3、直接给出内存单元中的地址,然后根据主存,操作数把数据传入ACC寄存器

4、执行阶段访问一次存储器

5、A的位数就决定了该指令操作数的寻址范围

6、操作数的地址不容易修改(必须修改A)

3、隐含寻址

1、将操作数隐含到操作码中

2、图示

image-20230913095451189

3、ADD是加法,需要两个操作数,其中一个操作数隐含在ACC寄存器中,通过A地址去主存单元中拿到操作数,去和ACC寄存器单元中的另外一个操作数进行计算,然后返回给ACC

4、间接寻址

1、一次间接寻址

1、EA=(A) 有效地址由形式地址间接提供

2、@是间接寻址的特征

2、一次寻址图示

image-20230913095757946

3、形式地址A中保留了EA操作数的地址,通过A去主存中寻找EA操作数的地址,找到后再给A拿去寻找真正所需的地址

4、执行指令阶段2次访存

5、可扩大寻址范围

6、方便编制程序(可以改变EA的地址,从而改变操作数的内容)

2、多次间接寻址

1、多次间接地址图示

image-20230913100125849

2、基本流程和一次间接寻址一样,只不过多了几次地址的寻找和跳转

3、间接寻址编程举例

image-20230913100507383

5、寄存器寻址

1、EA=Ri 有效地址即为寄存器编号

2、寄存器寻址图示

image-20230913100726346

3、执行阶段不访存,指访问寄存器,执行速度较快

4、寄存器个数优先,可缩短指令字长

6、寄存器间接寻址

1、EA=(Ri) 有效地址在寄存器中

2、寄存器间接寻址图示

3、就是形式地址Ri在保存在寄存器中,寄存器中保存了主存中Ri操作数的地址,又跑去主存中寻找操作数,然后进行传递然后运算

4、有效地址在寄存器中,操作数在存储器中,执行阶段需要访存

5、非常便于编写循环程序

7、基址寻址

1、采用专门寄存器作基址寄存器

1、EA=(BR)+A

2、基址寻址图示

image-20230913101619688

3、就是用一个BR基址寄存器,再加上形式地址A,然后通过一个加法器,把地址完整融合,再通过这个完整地址去主存寻址操作数

4、可以扩大寻址范围

5、有利于多道程序的编写

6、BR内容由∃系统或管理程序来确定

7、在程序的执行过程中BR的内容是不变的,形式地址A可以改变

2、采用通用寄存器作为基址寄存器

1、Ro是一个基址寄存器

2、通用寄存器的基址寄存器图示

image-20230913101843524

3、和上面专门寄存器作基址寄存器的步骤一样,只是寄存器变成了通用的

4、用户可以指定哪个通用寄存器作为基址寄存器

5、基址寄存器的内容由操作系统确定

6、在程序的执行过程中R0内容不变,形式地址A可以改变

8、变址寻址

1、EA = (IX)+A IX是变址寄存器(专用),通用寄存器也可以作为变址寄存器

2、变址寄存器图示

image-20230913102134881

3、内容和上面基址寻址的步骤是一样的

4、可扩大寻址范围

5、IX的内容由用户给定

6、程序执行过程中IX内容可变,形式地址A不可变

7、便于处理数组问题

8、例子

image-20230913102629782

9、相对寻址

1、内容

1、EA = (PC)+A

2、A是相对于当前指令的位移量(可正可负,补码)

3、相对寻址图示

image-20230913102917051

4、直接使用PC作为寻址,形式地址A作为PC地址的偏移量,PC+A的地址,形成完整地址,就能得到操作数

5、A的位数决定操作数的寻址范围

6、程序浮动

7、广泛用于转移指令

2、相对寻址的例子

image-20230913104817700

3、按字节寻址的相对寻址举例

image-20230913104821293

10、堆栈寻址

1、特点

1、硬堆栈:多个寄存器

2、软堆栈:指定的存储空间

3、都是先进后出(一个出入口),栈顶地址由SP寄存器指出

4、进栈(SP)-1 —>SP

5、出栈(SP)+1 —>SP

6、栈对寻址图示

image-20230913105237123

2、堆栈寻址举例

image-20230913105455783

3、SP的修改与主存编址方法有关

image-20230913105640405

7.4、指令格式举例

7.4.1、要考虑各种因素

1、指令系统的兼容性

1、新旧系统指令的兼容

2、其他因素

1、操作类型:包括指令个数及操作的难易程度

2、数据类型:确定那些数据类型可以参与操作

3、指令格式:指令字长是否固定;操作码位数、是否采用扩展操作码技术;地址码位数、地址个数、寻址方式类型;

4、寻址方式:指令寻址、操作数个数

5、寄存器个数:寄存器的多少直接影响指令执行的时间

3、IBM360

1、指令格式

image-20230913110841024

2、X:变址寄存器

3、B:基址寄存器

4、D:是偏移地址

4、Intel8086

image-20230913111015836

5、例子

image-20230913115706340

7.5、RISC技术

1、精简指令集计算机

7.5.1、RISC的产生和发展

1、80—20规律

1、典型程序中80%的语句仅仅使用处理机20%的指令

2、执行频度高的简单指令,因复杂指令的存在,执行速度无法提高

3、能否用20%的简答指令组合不常用的80%的指令功能

7.5.2、RISC的主要特征

1、选用使用频率较高的一些简单指令,复杂指令的功能由简单指令来组合

2、指令长度固定、指令格式种类少、寻址方式少

3、只有LOAD、STORE指令访存

4、CPU中有多个通用寄存器

5、采用流水技术,一个时钟周期内完成一条指令

6、采用组合逻辑实现控制器

7.5.3、CISC的主要特征

1、系统指令复杂庞大,各种指令使用频度相差大

2、指令长度不固定、指令格式种类多、寻址方式多

3、访存指令不受限制

4、CPU中设有专用寄存器

5、大多数指令需要多个时钟周期执行完毕

6、采用微程序控制器

7.5.4、RISC和CISC的比较

1、RISC更能充分利用VLSI芯片的面积

2、RISC更能提高计算机运算速度指令格式、寻址方式少、通用寄存器多,采用组合逻辑,便于实现指令流水

3、RISC便于设计、可降低成本提高可靠性

4、RISC不易实现指令系统兼容

7.5.5、现代处理器中

1、RISC

2、CISC

3、RISC与CISC相结合

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇