Presentation is loading. Please wait.

Presentation is loading. Please wait.

computer organization principle

Similar presentations


Presentation on theme: "computer organization principle"— Presentation transcript:

1 computer organization principle
计 算 机 组 成 原 理 computer organization principle 主讲教师 丁纪凯

2 第5章 指 令 系 统

3 第5章 — 指令系统 本章要点 指令系统是计算机全部指令的集合,同硬件电路 的工作密切相关,是CPU的一个重要特性。本章重点
论述了指令的寻址方式,结合80X86 系列机和MIPS机 的指令系统讲解机器指令的组成,并根据两种典型的 CPU结构正确分析基本指令的执行过程。

4 第 5 章 指 令 系 统 5.1 指令与指令系统 5.2 介绍两类指令系统 5.3 指令流程

5 5.1 指令与指令系统 指令格式 1. 指令 指令是指示计算机执行某种基本操作的命令,CPU能执行的指令是用二进制代码表示的机器指令。 机器指令由操作码(opcode)和操作数(operand)两个字段组成。 操作码 操作数 操作码字段指出该指令的功能——执行何种操作。若操作码字段 有n位,则可表示2n条指令——有2n种不同的基本操作。 操作数字段(又称为“地址码”)指出该指令的操作对象 ,通常为 一个立即数(在指令代码中直接给出)、寄存器中内容、存储单元 的内容或I/O端口的内容:

6 (1) 若为立即数,则操作数字段即该立即数的二进制表示;
(2) 若为寄存器内容,则操作数字段即该寄存器的地址,以寄存器 地址的二进制编码表示.例如CPU有8个寄存器,则这8个寄存器地 址可用3位二进制码“000”~“111”表示之; (3) 若为存储器内容,则操作数字段即该存储器地址的二进制表示。 按指令执行过程,操作数有源操作数和目的操作数之分: 源操作数——参予操作的原始数椐, 目的操作数——指令执行后的结果数据。

7 2. 指令的地址码结构 按指令操作的不同,源操作数可以是1个,也可以是2个,而有的
2. 指令的地址码结构 按指令操作的不同,源操作数可以是1个,也可以是2个,而有的 指令无操作数,据此,按指令中地址码个数的不同,指令格式可分为:零地址指令 ; 一地址指令 ; 二地址指令 ; 三地址指令 ; (1)零地址指令 指令格式如下: 指令中只有操作码字段(op),而无操作数——地址码字段。 这类指令在如下两种情况下出现: ● 该条指令运行时不需要操作数; 例如 80x86系列中的空操作指令NOP和暂停指令HLT ● 指令有操作对象(操作数),但该操作数是指令操作码已指 定或隐含的,通常指定为累加器进行操作,称为“隐地址”——

8 例如80x86系列中的BCD修正指令DAA(机器码格式为27H),操 作码27H中己隐含约定操作数为AL,该指令实现BCD码加法操作后,
操作数由指令操作码隐含约定。 例如80x86系列中的BCD修正指令DAA(机器码格式为27H),操 作码27H中己隐含约定操作数为AL,该指令实现BCD码加法操作后, 对AL寄存器中的内容进行修正操作, 采用隐地址指令减少了指令的长度,简化了指令的结构。 (2) 一地址指令 ★ 指令格式如下: 该类指令的功能是: op (A)      或 (AC)op(A) AC 其中 op为操作码,表示该指令的功能; A为一个操作数的地址码——寄存器名(寄存器的编号)、 内存或I/O端口的地址; AC为累加器(在一地址指令中为“隐地址” );

9 (A)为地址码的内容,即A的寄存器、内存或I/O端口的中的 内容; (AC)为累加器AC中的内容;
★ 采用一地址指令的两种情况: 一种是单操作数指令,源与目的为同一操作数,由指令中地址 码A指定。 例如:80x86系列中的增量指令INC CL的机器码格式为 : FE C1 H即 f1 f21 f22 f23 f1字段FEH和f22字段000表示这是8位增量指令, f21字段 11 说明是寄存器操作数、f23字段001指出寄存器为CL。 一种是双操作数 — 一个操作数由指令的地址码A给出,另一 个操作数是隐含的,一般为累加器AC。

10 例如80x86系列中的乘法指令MUL CL的机器码格式为:
F6 E1H 即 f f21 f22 f23 f1字段的 和f22的100表示该指令为两个8位数相乘, f21的11表示是两个寄存器相乘,f23的001表示乘数为CL,执行 AL×CL,结果送AX的操作,其中被乘数AL和乘积AX在机器码格式 中无操作数字段表示。 (3) 二地址指令 指令格式如下: 该类指令的功能是: (A1)op(A2) A1

11 (4) 三地址指令 指令格式如下: 该类指令的功能是: (A2)op(A3) A1 其中, op为操作码,表示该指令的功能; A2为第一个源操作数的地址码——寄存器名、内存或I/O端口 的地址,也可以是立即数; A3为第二个源操作数的地址码——寄存器名、内存或I/O端口 A1为目的操作数(操作结果)的地址码——寄存器名、内存或 I/O端口的地址; (A2)为地址码的内容,即A2的寄存器、内存或I/O端口的中的 内容; (A3)为地址码的内容,即A3的寄存器、内存或I/O端口的中的

12 上述零地址、一地址和二地址指令的特点是: 指令代码短、硬件实现简单以及执行速度快。一般用于结构较简
单而且字长较短的小型机和微型机中。 三地址指令的特点是: 指令代码长、指令功能强、便于编程。一般用于结构较复杂而且 字长较长大型机中。

13 3. 指令的操作码 其操作码的编码也不同。通常,希望用尽可能短的操作码字段来表达 全部的指令。指令操作码的编码可以分为规整型和非规整型两类。
3. 指令的操作码 指令系统中的每一条指令都有一个唯一确定的操作码,指令不同, 其操作码的编码也不同。通常,希望用尽可能短的操作码字段来表达 全部的指令。指令操作码的编码可以分为规整型和非规整型两类。 (1)规整形(定长编码) 简单的编码方法,操作码字段的位数和位置是固定的,其位数 应当有足够长。 若一指令系统有m条指令,则指令中操作码字段的位数为N位 应满足m≤2N ,即 N≥log2 m 该方法有利于简化硬件设计,减少指令译码时间。 广泛应用 于大中型计算机中。

14 中操作码位数都一样为8位。8位操作码最多可有256条指令。
例 IBM370机(字长32位),在它的半字长,单字长,1个半字长指令 中操作码位数都一样为8位。8位操作码最多可有256条指令。 (2) 非规整形(变长编码) 操作码字段位数不同,且分散在指令字的不同位置上,能有效 压缩指令中操作码字段的平均长度,但将增加指令译码和分析的难 度,使控制器的设计复杂化。 最常用的非规整型编码方式是扩展操作码法。让地址码长度 长的指令(如三地址指令)的操作码字段短些,操作数地址码长度 短的指令(如一或零地址指令)的操作码字段长些。 例 PDP-11机(字长16位)的指令分为单字长、两字长、三字 长三种,操作码字段占4~16位不等,可遍及整个指令长度。

15 例 1 指令格式如下所示,其中op为操作码, A1、A2 均为寄存器地址码,
试分析该指令的特点。 OP A1 A2 解:(1) 单字长(2字节)二地址指令 (2) OP采用7位,可有27=128条指令 (3) 源和目的操作数都是寄存器,即(reg1)op(reg2)→reg1 寄存器代码均用4位表示,可分别指定16个reg之中一个。 例2 某计算机指令长度为16位,每个地址码为4位,采用扩展操作码的方 法设计指令系统,要求有15条三地址指令,15条二地址指令,15条一 地址指令和16条零地址指令。 解:若采用定长编码方法,三地址指令只能有16条,利用扩展操作码法可在指令长度不变情况下,使指令总数大大超过16条。

16 指令的编码:0000 XXXX YYYY ZZZZ ~1110 XXXX YYYY ZZZZ 共15条;
设计方法是在设计一类指令中至少留下一个编码作为扩展窗口,与下一个 地址码组成一个更多位数操作码。 (1)采用操作码4位设计三地址指令,取 指令的编码:0000 XXXX YYYY ZZZZ ~1110 XXXX YYYY ZZZZ 共15条; (2)用1111作为扩展窗口,取用操作码8位设计二地址指令,取 指令的编码: YYYY ZZZZ~ YYYY ZZZZ 共15条; (3)用 作为扩展窗口,取用操作码12位设计一地址指令,取 指令的编码: ZZZZ~ ZZZZ 共15条; (4)用 作为扩展窗口,取用操作码16位设计零地址指令,取 指令的编码: ~  共16条;

17 4. 汇编语言指令 汇编语言是一种符号语言,其特点是用符号形式表示计算机指令, 用指令助记符代替机器指令的操作码、用标识符代替地址码。这是一
4. 汇编语言指令 汇编语言是一种符号语言,其特点是用符号形式表示计算机指令, 用指令助记符代替机器指令的操作码、用标识符代替地址码。这是一 种面向具体计算机的语言。 汇编语言与机器语言相比、除保留了机器语言的优点外,还具有 易懂、易写、易记、易调试和易修改等优点。与高级语言相比,具有 执行速度快、节省内存和控制精确等优点。不同的CPU有不同的汇编语 言。 80x86系列CPU的汇编语言指令分析: (1) 8086CPU部分指令助记符表

18

19

20 (2)8086汇编语言指令中所用到的寄存器

21 (3) 80X86汇编语言指令中所用到的存储器操作数表示为:
[DISP] / [ REG] / [REG+DISP] 其中, DISP为16位或32位立即数(对8086只能是16位立即数); REG为16位或32位寄存器(对8086只能是16位寄存器),可形 成寄存器间接寻址、基址寻址和变址寻址,也可以用二个寄存器形成 基址变址寻址。

22 5.1.2 寻址方式 指令的寻址方式是指“指令中操作数的表示形式”。 指令中的操作数—操作对象通常来源于:
寻址方式 指令的寻址方式是指“指令中操作数的表示形式”。 指令中的操作数—操作对象通常来源于: 立即数 — 操作数即指令代码中的地址码部分; 寄存器 — 操作数在寄存器中(即指令代码中的地址码部分所指 出的寄存器中的内容); 内存单元— 操作数在内存单元中(即指令代码中的地址码部分 所指出的内存单元中的内容); I/O端口(I/O接口中存放信息的寄存器)— 操作数在I/O端口中 (即指令代码中的地址码部分所指出的I/O端口中的内容);

23 前两种操作数的表示比较简单, 立即寻址指立即数操作数,即指令中的地址码部分; 寄存器寻址指寄存器操作数,即由代表寄存器编号的二进制值表 示地址码; 存储器(内存)寻址指存储器操作数,即指令地址码给出内存单 元的地址,由于内存单元的地址一般较长,通常以其有效地址表示。 而有效地址又有多种表示,因此“存储器寻址”又有多种表示形式。 I/O端口操作数的地址较短,比“存储器寻址”简单些。 计算机指令的寻址方式可归纳为如下几种: 立即寻址 ; 隐含寻址 ; 寄存器寻址 ; 直接寻址 ; 寄存器间接寻址 ; 存储器间接寻址 ; 变址寻址 ; 基址寻址 ; 相对寻址 ;

24 1. 立即寻址 操作数直接由指令中的地址码给出,该操作数的寻址方式称为“立 即寻址”。 指令格式为:
该指令是一条三地址指令, 指令中的op1为操作码; Rd为存放目的 操作数的寄存器的编号、Rs1为一个源操作数的寄存器的编号、imm 为另一个源操作数,是一个立即数; 该指令功能是: (Rs1) op1 imm Rd 这里的一个源操作数imm为立即寻址。 若 op1为AND逻辑与的操作码,指令功能是: (Rs1)AND imm Rd 通常立即寻址的操作数用于对寄存器赋值,进行初始化,也用于要 求有立即数参予的一些数据运算(算术和逻辑运算)的指令中。

25 注意: 立即数只能作为源操作数,不能作为目的操作数。
在汇编语言指令中,通常直接用数字表示操作数, 例如:ADD AL,20H ; 例如:有的计算机中,在常数前加上#表示立即数, ADD AL,#20H ; 2. 寄存器寻址 操作数是一个寄存器中存放的数据,寄存器的编号由指令中对应的 地址码给出。 三地址指令的格式为: 地址码字段Rs1、Rs2和Rd都是寄存器寻址的操作数。把指令中的 地址码——寄存器号Rs1、Rs2和Rd作为指针,直接指向对应寄存器 中的操作数。若寄存器号Rs1、Rs2和Rd字段各为n位二进制代码,可 以有2n个寄存器作为操怍数。

26 3. 直接寻址 指令中的地址码字段X即内存操作 数的地址,据此代码,从对应内存中 取出内存操作数参予运算。
该指令功能是: (Rs1) op1 (Rs2) Rd 3. 直接寻址 操作数在存储器中,存储器的地址在指令中由代码直接給出。 寻址过程示意图如下: 指令中的地址码字段X即内存操作 数的地址,据此代码,从对应内存中 取出内存操作数参予运算。 操作数的地址是指令代码的组成部分,适用于访问固定的存储单元。 当内存容量很大时,地址码会很长。在汇编语言指令中,直接寻址中 的内存地址可直接在指令中用数字給出,有的计算机中在数字前后加上一个符号[ ]。

27 addr为一个存放另一源操作数的内存单元地址 ,以立即数表示的;
例如: 指令 JUMP ; AND AL, [2000H] ; 直接寻址的三地址指令的格式为: op1为操作码,表示执行的操作; Rd为存放目的操作数的寄存器; Rs1为一个存放源操作数的寄存器; addr为一个存放另一源操作数的内存单元地址 ,以立即数表示的; 该指令功能是: (Rs1) OP1 mem (addr) Rd

28 4. 寄存器间接寻址 指令功能为 (BL) AND mem(2000H) AL mem(2000H)表示地址为2000H的内存单元的内容;
例:指令AND AL,BL, [2000H]; 指令功能为 (BL) AND mem(2000H) AL mem(2000H)表示地址为2000H的内存单元的内容; 该指令的机器指令中,Rd为寄存器AL的编号,Rs1为寄存器BL的 编号;addr为立即数2000H表示的内存地址; 4. 寄存器间接寻址 操作数在内存中,内存地址在 寄存器中,指令中給出寄存器的 编号。 寻址过程示意图如下:

29 该寄存器中取出内容(R) ——X,即内存操作数的地址,据此地址可从 对应内存中取出操作数。
由于寄存器的内容可以攺变,所以这种寻址方式具有很强的寻址能 力。 在汇编语言指令中,表示寄存器间接寻址中的寄存器通常用寄存器 名,并在其前后加上符号( )或[ ]。 例如: AND R1, (R2),R3 ; MOV AX, [ BX ] ; 寄存器间接寻址的三地址指令的格式为:

30 Rd为存放目的操作数的寄存器,指令中以寄存器的编号表示; Rs1为存放内存操作数的存储单元地址的寄存器 ,指令中给出寄 存器的编号;
op1为操作码,表示执行的操作; Rd为存放目的操作数的寄存器,指令中以寄存器的编号表示; Rs1为存放内存操作数的存储单元地址的寄存器 ,指令中给出寄 存器的编号; Rs2为一个存放源操作数的寄存器;指令中以寄存器的编号表示; 该指令功能是: mem [(Rs1)] OP1 (Rs2) Rd 例:指令 AND R1,(R2),R3 , 指令功能为 mem [(R2)] AND (R3) R1 编号 R2的寄存器中的内容(R2)为内存地址,取出该地址对应的 内存单元中的内容是一个源操作数,表示为 mem [(R2)] ,这个 源操作数的寻址方式为寄存器间接寻址。

31 寻址过程示意图如下: 5. 存储器间接寻址 指令中给出的地址码字段A是存放操作数地址的存储单元的地址, 即操作数地址的地址。
5. 存储器间接寻址 指令中给出的地址码字段A是存放操作数地址的存储单元的地址, 即操作数地址的地址。 寻址过程示意图如下: 指令中,地址码字段A給出内存地址,由A 找到内存单元2,取出其内容X,再以X为地址 找到内存单元1,该内存单元1中存放的数即参 予操作的操作数。 存储器间接寻址方式的寻址能力很强,但由于多次访问存储器而影 响指令执行的速度。 在汇编语言指令中,内存地址A用数字加上符号( ) )表示。

32 Rd 、Rs2为存放目的操作数、源操作数的寄存器,指令中均以寄存 器的编号表示;
例如:指令 ADD R2, ( 2000 )、 AND R1, @(R2), R3 存储器间接寻址的三地址指令的格式为: op1为操作码; Rd 、Rs2为存放目的操作数、源操作数的寄存器,指令中均以寄存 器的编号表示; Rs1为存放操作数地址的存储单元的地址的寄存器 ,指令中给出寄 存器的编号; 该指令功能是: mem [mem(Rs1)] OP1 (Rs2) Rd

33 例: 指令AND R1,@ (R2), R3 ; 器R3,从该寄存器中取出内容 (R3)为一个源操作数;
指令功能为: mem [mem(R2)] AND (R3) R1 指令中,Rs2字段为寄存器R3的编号,由此字段可找到对应的寄存 器R3,从该寄存器中取出内容 (R3)为一个源操作数; Rd为存放目的操作数寄存器R1的编号 ; Rs1字段为寄存器R2的编号,由此编号找到对应的寄存器 R2,从该寄存器中取出内容(R2)为A即一级内存操作数的地址, 可从内存地址A的内存中取出操作数地址X,然后再由地址 X 的内 存单元取出参加运算的操作数。 由Rs1字段给出的R2二次寻址求得内存操作数mem [mem(Rs1)] 作为一个源操作数,这个源操作数的寻址方式即为存储器间接寻址。

34 操作数在内存中,操作数的地址由两部分组成:一 是寄存器中的
6. 变址寻址 操作数在内存中,操作数的地址由两部分组成:一 是寄存器中的 数据,二是指令中給出的一个地址码,两者相加之和即为存放操作数的内存单元地址。 寻址过程示意图如下: 指令中,R字段为寄存器号,A为 一个立即数的代码,操作数的地址为 ( R ) + A, 当寄存器中的内容进行 加1或减1操作后寻址时,可以用来对 一个内存数组进行访问。 在汇编语言指令中,变址寻址操作数的表示通常为A ( R )或[R+A]。 例如:指令 ADD R2 , 100 ( R1 )。 ADD R2 , [R1+100]

35 7. 基址寻址 8. 相对寻址 操作数在内存中,操作数的地址由两部分组成:一是寄存器中的数
7. 基址寻址 操作数在内存中,操作数的地址由两部分组成:一是寄存器中的数 据,二是指令中給出的一个地址码,两者相加之和即内存操作数的地 址。若寄存器中的数值是固定的,而地址码的值是可变化的,这种寻 址方式称为” 基址寻址 “。 基址寻址与变址寻址的指令在形式上相似,其区别是变址寻址中, R中的值是可变 的;而基址寻址中,R中的值是固定的。 8. 相对寻址 操作数在内存中,操作数的地址是程序计数器PC值加上一个偏移量 A,而该偏移量在指令代码中,这种寻址方式称为”相对寻址”。 寻址过程示意图如下:

36 A可以为正值,也可以为负值。通常A值小于内存地址值;
操作数的地址为 PC+A; 所以相对寻址能以较短的地址码来访问内存。 在汇编语言指令中,一般用 A( PC ) 表示操作数的地址。 例: ADD A,2000H ( PC ) 指令功能为: (AC)+ mem [ (PC)+2000H ] AC

37 指令中不给出操作数,根据指令中操作码即可确定操作数的存储
9. 隐含寻址 指令中不给出操作数,根据指令中操作码即可确定操作数的存储 位置,操作数隐含在操作码中,这种寻址方式称为”隐含寻址”。 例:指令 PUSH AX 源操作数是AX,目的操作数为堆栈指针SP指出的内存单元, 是隐含的。 在大多数计算机中,累加器A、AL与AX常用作隐含寻址中的操 作数。 例: 指令 ADD #3 该指令中源操作数为立即数 3,目的操作数为A是隐含的。 例: 指令MUL BL 乘数为BL,被乘数为AL,也是隐含的。

38 5.2 介绍两类指令系统 5.2.1 80x86系列指令系统 系统。8086指令是变字长指令,不同指令的操作码和寻址方式不同,指
80x86及其兼容芯片是应用最多的处理器芯片,属于CISC型的指令 系统。8086指令是变字长指令,不同指令的操作码和寻址方式不同,指 令长度也不一致,每条指令由1~6个字节组成。以8086CPU为例说明 CISC芯片分析指令编码的特点。 最常用的两操作数的传送、加、减、与、或指令的编码格式如图 所示。 操作码 —— 反映该指令的功能 ; 类型 —— 反映操作数的类型(字长等); 寻址方式 —— 反映操作数的寻址方式,寄存器操作数的编码也在 其间;

39 操作数 —— 操作数中的立即数、内存操作数中的位移量部分。 对于实现“寄存器与寄存器,寄存器与存储器之间”的上述操作的指
操作数 —— 操作数中的立即数、内存操作数中的位移量部分。 对于实现“寄存器与寄存器,寄存器与存储器之间”的上述操作的指 令而言, 上述8086指令编码格式可细化为以下图所示的格式。 第一字节中 6位 OPCODE可表示64个不同的操作 ; D 位表示数据传送的方向:D=0,寄存器为源操作数,D=1,寄存器 为目的操作数 ; W 位表示操作数是字还是字节:W=1,为字操作,W=0,为字节操作 第二字节中3位 REG 字段的编码如表 :

40 器或是存储器,其指令代码由第二个字节中的MOD字段和R/M字段决定, 如下表所示。
两个操作数中有一个是寄存器,其编码由上表所示;另一个是寄存 器或是存储器,其指令代码由第二个字节中的MOD字段和R/M字段决定, 如下表所示。 MOD = 00、01和10时,另一操作数为存储器操作数; MOD = 11时,另一操作数为寄存器操作数;

41 R/M = 000~011 :为不带位移量的基址变址寻址 100、101和111 :为不带位移量的寄存器间接寻址 110 :为直接寻址
MOD = 00时 R/M = 000~ :为不带位移量的基址变址寻址 100、101和111 :为不带位移量的寄存器间接寻址 :为直接寻址

42 MOD = 01时, R/M = 000~011 :为带8位位移量的基址变址寻址 100~111 :为带8位移量的寄存器间接寻址 MOD = 10时, R/M = 000~011 :为带16位位移量的基址变址寻址 100~111 :为带16位移量的寄存器间接寻址 MOD = 11时,另一操作数为寄存器操作数: 8位寄存器为AL、BL、CL、DL、AH、BH、CH和DH 16位寄存器为AX、BB、CX、DX、SP、BP、SI和DI

43 例5-1 查表写出指令 MOV [BX + 2340H] , AX 的机器指令。
解: 源操作数AX为寄存器,目的操作数[BX +2340H]为存储器操作数。 该指令为16位操作; 机器指令共4字节, MOV指令的操作码为100010,各字段的取值分别为:D=0 ; W=1 第2字节中 MOD = 10 ; REG = 000 ; R/M = 111 , 指令机器码为: 为书写方便,机器指令可以十六进制数表示为: H

44 例5-2 查表写出指令 ADD [BX +2340H] , AX 的机器指令。
解:只需改变操作码即可,加法指令的操作码为000000,其余字段 不变。 则该指令的机器码如下: 指令的十六进制数机器码为: H

45 例5-3 查表写出指令 AND [BX +2340H] , AX 的机器指令 。
解:只需改变操作码即可,该指令的操作码为001000,其余字段不变。 则该指令的机器码如下: 指令的十六进制数机器码为: H

46 解:只需改变操作码即可,该指令的操作码为001010,其余字段不变。 则该指令的机器码如下:
例5-4 查表写出指令 SUB [BX +2340H] , AX 的机器指令。 解:只需改变操作码即可,该指令的操作码为001010,其余字段不变。 则该指令的机器码如下: 指令的十六进制数机器码为: H

47 例5-5 查表写出指令 MOV [BX +2340H] ,1234H 的机器指令 。 解: 该指令是将16位数送内存[BX +2340H];
该指令为6字节指令,其机器码如下: 指令的十六进制数机器码为: C H

48 5.2.2 MIPS处理器的指令系统 1. MIPS处理器 MIPS处理器是MIPS技术公司推出的一种RISC芯片。自1986年来陆续
推出R2000处理器、R3000处理器、R8000、、R10000、和R12000等型号 处理器。 MIPS处理器的主要特征: (1) 指令系统简单; (2) 采用流水技术,依靠优化编译器进行指令序列的重新安排,以 防止流水线中出现的相互冲突; (3) 使用较多寄存器,32个通用寄存器、一对存储64位数据的寄存 器Hi,Lo以及异常PC寄存器epc。32个通用寄存器分别表示为$0到 $31,其中$0固定为0。Hi,Lo寄存器用于存放定点乘法的结果。

49 (4) 采用“比较与转移”指令,比较和转移这两个动作在一条指令内
便可完成,如beq $1, $2, 1000。 (5) 没有状态寄存器。 2. MIPS系列微处理器的指令系统 MIPS处理器指令系统的主要特点是MIPS处理器的指令系统简单; 采用32位字长的等字长指令; (1) 指令格式有三种——寄存器型(R型)、立即数型(I型)和转移 型(J型): ◆ R类型的指令:该类型指令从寄存器堆中读取两个源操作数,计 算结果写回寄存器堆; ◆ I类型的指令:该类型指令使用一个16位的立即数作为一个源操 作数;

50 ◆ J类型的指令:该类型指令使用一个26位的立即数作为跳转的目 标地址;
三类指令格式为: rs: 源操作数1的寄存器编号; rt: 源操作数2的寄存器编号; rd: 目的操作数的寄存器编号; shamt: 移位次数(移位指令); funct: 功能码,操作码的扩展,指定操作类型; immediate:立即数; target: 目标地址;

51 (2)从操作功能分,MIPS的指令种类有:
算术运算指令 ; 逻辑运算指令 ; 数据传送指令 ; 条件转移指令 ; 无条件跳转指令 ; 特殊指令 ; 异常指令 ; 协处理器指令等;

52 5.3 指令流程 5.3.1 指令执行过程 过程就是按序从主存储器取出指令然后执行指令的过程。
5.3 指令流程 指令执行过程 组成计算机程序的指令序列存放在主存储器中。计算机执行程序的 过程就是按序从主存储器取出指令然后执行指令的过程。 CPU执行指令的过程分为:取指令、指令分析、指令操作执行等三个 阶段: (1)取指阶段 除转移类指令外,程序中的指令是按顺序执行的, CPU按PC(存 放待取指令在主存中的地址)中的地址从主存中取出指令,当取出一 条指令后,PC中内容更新为下一条指令的地址(实际过程是CPU每从 主存中取出一个指令字节,PC中的内容就自动加1,若一条指令为4个 字节,则取出该指令后,PC+4,指向下一条指令地址),

53 若取出的指令为转移类指令(转移指令、调用指令和返回指令)
, 执行该类指令时,将转移的目标地址送PC,以使CPU能取出并执行 目标地址的指令。 (2)指令分析(译码)阶段 在取指阶段,主存中取出的指令经数据寄存储器DR,存入指令 寄存器IR中。在本阶段将指令送指令译码器ID译码、分析、识别, 产生同该指令相对应的指令信号,经操作控制器(协同时序产生 器),产生执行该指令所需要的满足一定时序关系的一组操作控制 信号。 (3)执行操作阶段 完成指令规定的各种操作,形成稳定的运算结果,并将其存储 起来。

54 5.3.2 三种周期 在指令执行过程中,涉及到三种周期的时间概念: (1) 指令周期 指从一条指令的启动到下一条指令的启动的间隔时间。
三种周期 在指令执行过程中,涉及到三种周期的时间概念: (1) 指令周期 指从一条指令的启动到下一条指令的启动的间隔时间。 亦即CPU执行一条指令所需要的全部时间,包括取指令、译码和 执行指令所需的时间。 指令周期的长短取决于指令的功能。不同指令的指令周期的长短 不一样,例如访内指令的指令周期会大于非访内指令。 (2) 机器周期(又称CPU周期) 一条指令的执行需要经过若干个操作阶段。机器周期是指令执行 中每一步操作所需的时间。 一般用CPU完成一个运算操作所需时间作为机器周期的基本时间, 代表大多数指令操作步骤的时间。

55 通常以从主存中读取一个指令字的最短时间规定为机器周期。
(3) 时钟周期 时钟周期是CPU主频的周期(通常称为节拍脉冲或T周期),它 是CPU处理操作的最基本单位。 三种周期的关系通常可表示为: 早期的CPU而言: 一个指令周期由若干个机器周期组成,机器周期的个数随指令 不同而不同; 一个机器周期又包含若干个时钟周期; 近代的新型计算机的CPU采用了并行处理技术,使CPU的平均指 令周期可以小于一个时钟周期。

56 5.3.3 典型的CPU结构类型 指令执行过程和CPU的类型及具体指令的类型有关。介绍典型的单总线 结构类型的CPU。
一种单总线结构如左图示意图所示。 R0~Rn-1:n个通用寄存器GR,是一种多累加 器结构。R0~Rn-1中任一个都可作为源操作 数和目的(结果)操作数; ALU:算术逻辑部件,输入端A由寄存器Y输入,输入端B直接来自内部总线,可由其它送 入总线的寄存器提供,ALU的输出送寄存器Z,通过内部总线BUS送目的寄存器(由指令指定);

57 SR: 状态寄存器,保存运算结果的有关标志位;
MAR:主存地址寄存器,存放被访问信息在主存中的地址; MDR:主存数据寄存器,存放从主存取出的信息以及欲写入主存的信 息; ABUS、DBUS:CPU同主存之间的地址总线和数据总线即芯片总线 (片总线); IR:指令寄存器,主存取出的指令代码经MDR存于其中; ID:指令译码器, 由IR送指令译码器ID译码; 操作控制器:指令由 ID译码后送入,操作控制器根据ID送来的指令信 号和时序产生器输出的时序信号,产生指令执行时所需要 的操作控制信号C0~Ci-1 ; C0~Ci-1:共i个操作控制信号,按指定时序送CPU、主存和I/O接口中的 相关部件,以完成指定的数据处理;

58 总线BUS:是寄存器与寄存器、寄存器与ALU之间传送信息的公共通路,
这一通路在CPU中称为“数据通路”,这是一种称为单总线的数 据通路。 在任一时刻,总线上可以有多个部件同时接收数据,但只能 有一个部件向同一条总线发送数据,否则会在总线上产生总 线冲突,因此必须对连接到总线上的各部件(寄存器等)进 行输出端控制。 2、 控制信号 CPU中各部件信息的输入和输出除输入输出的数据信号外,还需要 有相应的输入控制信号和输出控制信号这些控制信号包括: Rnout:Rn寄存器的输出控制信号,当Rnout有效时,Rn中的数据输出 到总线;(n=0,1,2,…)

59 Rnin: Rn寄存器的输入控制,当Rnin有效时,总线上的数据输入Rn;
IRout:IR的输出控制,当IRout有效时,IR上数据输出到总线; IRin: IR的输入控制,当IRin有效时,总线上数据输入IR; PCout:PC的输出控制,当PCout有效时,PC上数据输出到总线; PCin: PC的输入控制,当PCin有效时,总线上数据输入PC; Yin: Y寄存器的输入控制,当Yin有效时,总线上数据输入Y; PC+1:PC寄存器更新控制,当PC+1有效时,PC值增量; MARin:MAR输入控制,当MARin有效时,总线上地址信息送入MAR; MDRout:MDR输出控制,当MDRout有效时,MDR上数据输出到总线; MDRin:MDR输入控制,当MDRin有效时,总线上数据送入MDR; Zout: Z寄存器的输出控制,当Zout有效时,Z上数据输出到总线;

60 ADD:ALU加法操作控制,ADD有效时ALU对A、B两端输入数据进行加法运算;
Read:读主存信号,当Read有效时,CPU读主存; Write:写主存信号,当Write有效时,CPU写主存;

61 5.3.4 指令流程举例——单总线结构CPU 1. 运算指令的执行过程 分析基于图5-13所示的单总线结构CPU的指令流程。
1. 运算指令的执行过程 指令:ADD R3,R1,R2 ; ( R1)+(R2)→R3 ① 送指令地址 指令地址在PC寄存器中,首先把PC值送存储地址寄存器MAR,并从此 地址读内存。 PC→MAR 读存储器(read) ② 计算下一条指令的地址 下一条指令地址 = 当前PC值 + 当前指令字节数 ; 若取单字节指令(下面的指令都是单字节指令), 则 PC+1→PC ③ 读入指令 指令代码从内存储器中读出,通过DBUS送CPU进行译码以决定该指令 的操作。

62 DBUS→MDR→IR 读内存操作; 若运算结果要求存放在某一内存单元,则在第⑥步也需有一次访存— 写内存操作。
④ 源操作数寄存器R1送ALU的输入寄存器Y R1→Y 通过单总线 ⑤ 源操作数寄存器R2送ALU的输入,同Y相加输出到ALU寄存器Z R2+Y→Z ⑥ 结果送指定寄存器R3 Z→R3 若有一个源操作数是内存操作数,则在第④步中还需进行一次访存— 读内存操作; 若运算结果要求存放在某一内存单元,则在第⑥步也需有一次访存— 写内存操作。

63

64 指令:LOAD R1,mem ; (mem)→R1,
2. 访问存储器指令的执行过程 (1)读存储器指令 指令:LOAD R1,mem ; (mem)→R1, mem为内存地址值,以mem为地址的内存单元中的数据送寄存器R1。 ① 取指令 PC→MAR 读存储器(read) PC+1→PC ② 指令读入译码 DBUS→MDR→IR 译码 ③ 计算地址,读内存 IR(地址段)→MAR 读存储器(read); DBUS→MDR

65 ④ 写回,存结果 (2)写存储器指令 为地址的内存单元。 ① 取指令 ② 指令读入译码 DBUS→MDR→IR 译码 ③ 计算地址 写内存
④ 写回,存结果 MDR→R1 (2)写存储器指令 指令: STORE R1,mem ; R1→(mem), R1内容存入以mem 为地址的内存单元。 ① 取指令 PC→MAR 读存储器(read) PC+1→PC ② 指令读入译码 DBUS→MDR→IR 译码 ③ 计算地址 写内存 IR(地址段)→MAR R1→MDR 写存储器(write) 在写存储器时,CPU通过IR(地址段)→MAR提供内存地址,通过 R1→MDR提供写入的数据。

66 上述各指令执行时所需的控制信号如下表所示。
3. 控制指令的执行过程 指令:BR offs ; PC+offs→PC ,offs为相对转移地址 ① 取指令 PC→MAR 读存储器(read) PC+1→PC ② 指令读入译码 DBUS→MDR→IR 译码 ③ 计算地址 PC→Y,Y+IR(地址段offs)→Z ④ 转移 Z→PC 上述各指令执行时所需的控制信号如下表所示。

67 单总线结构CPU的指令流程

68 Thank You !


Download ppt "computer organization principle"

Similar presentations


Ads by Google