计算机组成原理(四)指令系统

4.1 指令格式

指令是指示计算机执行某种操作的命令,是计算机运行的最小功能单位。一台计算机的所有指令的集合构成该机的指令系统,也称为指令集。

4.1.1 指令的基本格式

一条指令通常要包括操作码字段和地址码字段两部分,根据指令操作数地址码的数目不同,可分为以下几种格式

  1. 零地址指令[^OP]
  • 不需要操作数,如空操作、停机、关中断等指令

  • 堆栈计算机,两个操作数隐含存放在栈顶和次栈顶,计算结果压回栈顶

  1. 一地址指令[^OP|A1]
  • 只需要单操作数,如加1、减1、取反、求补等[1]

  • 需要两个操作数,但其中一个操作数隐含在某个寄存器(如隐含在ACC)[2]

  1. 二地址指令[^OP|A1(目的操作数)|A2(源操作数)]
  • 常用于需要两个操作数的算术运算、逻辑运算相关指令[3]
  1. 三地址指令[^OP|A1|A2|A3(结果)]
  • 常用于需要两个操作数的算术运算、逻辑运算相关指令[4]
  1. 四地址指令[^OP|A1|A2|A3(结果)|A4(下址)]
  • 执行指令后,将PC的值修改位A4所指地址,A4=下一条将要执行指令的地址[4]

4.1.2 定长操作码指令格式

指令字长:一条指令的总长度(可能会变)

机器字长:CPU进行一次整数运算所能处理的二进制数据的位数(通常和ALU直接相关)

存储字长:一个存储单元中的二进制代码位数(通常和MDR位数相同)

我们所说的半字长指令、单字长指令、双字长指令是指指令长度是机器字长的多少倍

指令字长会影响取指令所需时间。如:机器字长=存储字长=16bit,则取一条双字长指令需要两次访存

定长操作码:指令系统中所有指令的操作码长度都相同,控制器的译码电路设计简单,但灵活性较低

可变长操作码:指令系统中各指令的操作码长度可变控制器的译码电路设计复杂,但灵活性较高

4.1.3 指令的操作类型

  1. 数据传送
  • LOAD 作用:把存储器中的数据放到寄存器中
  • STORE 作用:把寄存器中的数据放到存储器中
  1. 算术逻辑操作
  • 算术:加、减、乘、除、增1、减1、求补、浮点运算、十进制运算
  • 逻辑:与、或、非、异或、位操作、位测试、位清除、位求反
  1. 移位操作
  • 算术移位、逻辑移位、循环移位(带进位和不带进位)
  1. 转移操作
  • 无条件转移JMP
  • 条件转移JZ:结果为0;JO:结果溢出;JC:结果有进位
  • 调用和返回CALL和RETURN
  • 陷阱(Trap)与陷阱指令
  1. 输入输出操作
  • CPU寄存器与IO端口之间的数据传送(端口即IO接口中的寄存器)

4.1.4 扩展操作码指令格式

采用定长指令字结构和可变长操作码称为扩展操作码指令格式,不同地址数的指令使用不同长度的操作码

扩展操作码技术.png

在设计扩展操作码指令格式时,必须注意以下两点:

  1. 不允许短码是长码的前缀,即短操作码不能与长操作码的前面部分的代码相同。
  2. 各指令的操作码一定不能重复。

设地址长度为n,上一层留出m种状态,下一层可扩展出的状态数为:
m×2^n

4.2 指令的寻址方式

4.2.1 指令寻址

指令寻址:寻找下一条将要执行的指令地址

  1. 顺序寻址:通过程序计数器(PC)+“1”(指令字长)自动形成下一条指令的地址
  2. 跳跃寻址:跳跃寻址通过转移类指令,如CALL和JMP,导致PC值改变
指令寻址.png

4.2.2 数据寻址

数据寻址:确定本条指令的地址码指明的真实地址或有效地址(EA)

数据寻址.png
  1. 直接寻址:指令字中的形式地址A就是操作数的真实地址EA,即EA=A。优点:简单,指令执行阶段仅访问一次主存,不需专门计算操作数的地址。缺点:A的位数决定了该指令操作数的寻址范围。操作数的地址不易修改。


    直接寻址.png
  2. 间接寻址:指令的地址字段给出的形式地址不是操作数的真正地址,而是操作数有效地址所在的存储单元的地址,也就是操作数地址的地址,即EA=(A)。优点:可扩大寻址范围(有效地址EA的位数大于形式地址A的位数)。便于编制程序(用间接寻址可以方便地完成子程序返回)。缺点:指令在执行阶段要多次访存(一次间址需两次访存,多次寻址需根据存储字的最高位确定几次访存)。
间接寻址.png
  1. 寄存器寻址:在指令字中直接给出操作数所在的寄存器编号,即EA =Ri,其操作数在由Ri所指的寄存器内。优点:指令在执行阶段不访问主存,只访问寄存器,指令字短且执行速度快,支持向量/矩阵运算。缺点:寄存器价格昂贵,计算机中寄存器个数有限。
寄存器寻址.png
  1. 寄存器间接寻址:寄存器Ri中给出的不是一个操作数,而是操作数所在主存单元的地址,即EA=(Ri)。特点:与一般间接寻址相比速度更快,但指令的执行阶段需要访问主存(因为操作数在主存中)。
寄存器间接寻址.png
  1. 隐含寻址:不是明显地给出操作数的地址,而是在指令中隐含着操作数的地址。优点:有利于缩短指令字长。缺点:需增加存储操作数或隐含地址的硬件。
隐含寻址.png
  1. 立即寻址:形式地址A就是操作数本身,又称为立即数,一般采用补码形式。立即寻址特征为#。优点:指令执行阶段不访问主存,指令执行时间最短。缺点:A的位数限制了立即数的范围。
立即寻址.png
  1. 基址寻址:将CPU中基址寄存器(BR)的内容加上指令格式中的形式地址A,而形成操作数的有效地址,即EA=(BR)+A。优点:可扩大寻址范围(基址寄存器的位数大于形式地址A的位数);用户不必考虑自己的程序存于主存的哪一空间区域,故有利于多道程序设计,以及可用于编制浮动程序(整个程序在内存里边的浮动)。
基址寻址.png

基址寄存器是面向操作系统的,其内容由操作系统或管理程序确定。在程序执行过程中,基址寄存器的内容不变(作为基地址),形式地址可变(作为偏移量)。当采用通用寄存器作为基址寄存器时,可由用户决定哪个寄存器作为基址寄存器,但其内容仍由操作系统确定。

  1. 变址寻址:有效地址EA等于指令字中的形式地址A与变址寄存器IX的内容相加之和,即EA= (IX)+A,其中IX可为变址寄存器(专用),也可用通用寄存器作为变址寄存器。优点:在数组处理过程中,可设定A为数组的首地址,不断改变变址寄存器IX的内容,便可很容易形成数组中任一数据的地址,特别适合编制循环程序。

变址寄存器是面向用户的,在程序执行过程中,变址寄存器的内容可由用户改变(IX作为偏移量),形式地址A不变(作为基地址)。

  1. 相对寻址:把程序计数器PC的内容加上指令格式中的形式地址A而形成操作数的有效地址,即EA=(PC)+A,其中A是相对于PC所指地址的位移量,可正可负,补码表示。优点:操作数的地址不是固定的,它随着PC值的变化而变化,并且与指令地址之间总是相差一个固定值,因此便于程序浮动(一段代码在程序内部的浮动)。相对寻址广泛应用于转移指令。
相对寻址.png
  1. 堆栈寻址:操作数存放在堆栈中,隐含使用堆栈指针(SP)作为操作数地址。

堆栈是存储器(或专用寄存器组)中一块特定的按“后进先出(LIFO)”原则管理的存储区,该存储区中被读/写单元的地址是用一个特定的寄存器给出的,该寄存器称为堆栈指针(SP)。

总结.png

4.3 CISC和RISC的基本概念

CISC(Complex Instruction Set Computer ):一条指令完成一个复杂的基本功能。

RISC(Reduced Instruction Set Computer):一条指令完成一个基本“动作”;多条指令组合完成一个复杂的基本功能。

80-20规律:典型程序中80% 的语句仅仅使用处理机中20% 的指令

CISC和RISC对比.png

  1. 指令含义:完成一条指令需要3次访存:取指—读A1—写A1

  2. 指令含义:完成一条指令需要2次访存:取指—读A1

  3. 完成一条指令需要访存4次,取指—读A1—读A2—写A1

  4. 完成一条指令需要访存4次,取指—读A1—读A2—写A3

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,324评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,356评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,328评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,147评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,160评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,115评论 1 296
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,025评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,867评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,307评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,528评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,688评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,409评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,001评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,657评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,811评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,685评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,573评论 2 353

推荐阅读更多精彩内容