计算机组成原理-天大课件_第1页
计算机组成原理-天大课件_第2页
计算机组成原理-天大课件_第3页
计算机组成原理-天大课件_第4页
计算机组成原理-天大课件_第5页
已阅读5页,还剩180页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 第五章第五章 指令系统层指令系统层n指令系统层是硬件和软件之间的接口。n指令系统层定义了硬件和编译器之间的接口, 它是一种硬件和编译器都能理解的语言。5.1 5.1 指令系统层概述指令系统层概述5.1.1 5.1.1 指令系统层的性质指令系统层的性质 指令系统层定义计算机的存储模式、寄存器组织、合法的数据类型和指令等信息。 ISA层的另一个重要特性是大多数机器具有2个模式:内核模式和用户模式。5.1.25.1.2存储模式存储模式1.内存组织 所有计算机都把内存分成具有连续地址的单元目前单元长度多为8位 (一个字节)字节通常按照4个一组(32位)或8个一组(64位)组成字组成字,这样指令就可以

2、按照字对内存进行管理。许多体系结构要求字按照它们的自然边要求字按照它们的自然边界对齐界对齐。 大多数计算机的指令系统层具有单一的线性地址空间2.内存语义所有内存请求都被串行执行(一个操作完成以后再执行下一个操作)内存不保证操作次序介于两者之间的模式,硬件自动阻塞特定的内存操作(如RAW和WAR)。5.1.3 5.1.3 寄存器寄存器 ISA层的寄存器可以粗略地分成2类:专用寄存器和通用寄存器。专用寄存器专用寄存器包括:PC,SP和其他一些有专门用途的寄存器。通用寄存器通用寄存器用于保存重要的局部变量和中间保存重要的局部变量和中间计算结果计算结果,它们的主要用途是提供快速的手段 来访问哪些使用频

3、繁的数据(避免访存) 标志寄存器(标志寄存器(PSWPSW):):是一个可以同时在内核 状态和用户状态下使用的寄存器.该寄存器保存CPU需要的各种不同的状态位,其中最重要的是条件码。 N当结果是负数时设置 Z 当结果为零时设置 V当结果产生溢出时设置 C 当结果产生了最高位进位时设置 A当结果在第3位产生进位(辅助进位)时设置 P 当结果具有偶校验时设置 5.1.4指令指令 ISA层主要的特征是机器指令集,正是这些指令在控制计算机的运行。5.1.5 Pentium 4 5.1.5 Pentium 4 指令系统层概述指令系统层概述 Pentium 4 Pentium 4 有有3 3种操作模式:种

4、操作模式: 实模式实模式:所有8088之后增加的新特性都被关闭,这时Pentium 4 就像一台简单的8088。如果任何一个程序出错,整台计算机就会崩溃。 虚拟虚拟80868086模式:模式:用一种受保护的方式来运行老的8088程序。这时,有一个实际OS在控制整个计算机。为了运行老的8088程序,OS会创建一个特殊的独立的8088环境。与实际的8088不同的是当程序崩溃时,计算机不会崩溃,而只是通知OS。 保护模式:保护模式:Pentium 4才真的是一台Pentium 4。 在保护模式下,有4种可用的特权级别,它们由PSW的对应位控制。 第0级相当于其他计算机的内核模式,它可以完全控制计算机

5、,因而只由OS使用。 第3级用于运行用户程序,它阻塞用户程序对某些特殊的关键指令和控制寄存器的访问,以防止某些恶意的用户程序搞垮整个计算机。 级别1和2很少使用。 Pentium 4 Pentium 4具有很大的地址空间,具有很大的地址空间,它的内存分为16384个段,每个段都从地址0-232-1。按字节编址,地址长度32位。字节顺序-小端形式。The Pentium 4中主要寄存器5.1.6UltraSPARC 指令系统层概述UltraSPARC的内存结构简单而清晰,其可寻址的地址空间是一个可寻址的地址空间是一个2 26464字节的线字节的线性数组性数组。默认的字节顺序-大端形式,通过PSW

6、中设置一位可以转换成小端形式。 UltraSPARC有2组寄存器:32个64位的通用寄存器和32个浮点寄存器。 UltraSPARC III的通用寄存器 对程序员来说,任何时刻都只能看到32个R,但UltraSPARC确实有不止32个通用R,这种著名的寄存器窗口寄存器窗口特性特性是为了有效地支持过程调用而设计的(图5-5)。它的基本思想是用寄存器模拟栈,也就是说,就像一个栈有多个段一样,在UltraSPARC 中确实存在多个寄存器组。在任意时刻都只能精确地看到32个寄存器。当前窗口指针 CWP(current Window Pointer)记录当前使用的寄存器组。UltraSPARC III寄

7、存器窗口操作 UltraSPARC 体系结构是一个加载/存储体系结构。也就是说,能够直接访问存储器的唯一操作只有加载(LOAD)和存储 (STORE), 这类指令用于在寄存器和内存之间传递数据。所有的算术和逻辑运算指令的操作数都应该来自寄存器或者由指令本身提供,所有结果都必须保存在寄存器中。5.1.7 8051 5.1.7 8051 指令系统层概述指令系统层概述 (a) 8051芯片内部存储器组织 (b) 8051 的主要寄存器 8051 8051的内存模式非常简单的内存模式非常简单,具有一个64KB的程序地址空间和一个64KB的数据地址空间。 8051 8051采用一种与众不同的方式来处理寄

8、存采用一种与众不同的方式来处理寄存器。器。寄存器有4组,但在任何时刻只有一组是可见的。PSW中有一个2位的字段,决定哪个寄存器组当前正在使用。采用多寄存器组实际采用多寄存器组实际是为了实现快速的中断处理是为了实现快速的中断处理。8051寄存器的另一特殊的性质是它们出现在内存空间中。 位操作位操作5.2 5.2 数据类型数据类型 讨论数据在计算机内部的表示形式,即计算机硬件能够直接识别可以被指令系统直接调用的数据,包括数值数据和非数值数据两大类。5.2.1数值数据(大小、符号和小数点)一、一、进位计数制及相互转换进位计数制及相互转换二、二、数的符号表示数的符号表示1.1.真值和机器数真值和机器数

9、真值真值:带正、负号的数的实际值,如3,5等。机器数机器数:数在计算机中的二进制表示形式。 为了适合计算机存储与处理,机器数通常采用将真值按某种方式进行编码的形式。2.2.无符号数(整数)无符号数(整数) 机器数的所有二进位都用来表示数值,每一位的权值不同。 例例 10111001=127125124 123120=185 表示范围表示范围:n1位无符号整数的表示范围为02n1-1。(8位数,0255)102niiiaA3.3.有符号数有符号数 0正,1负,放在二进制数的最高位(符号位符号位),符号位和数值位一起编码:原码、反码、补码、移码(浮点数的阶码) 由真值求原码、补码、反码由真值求原码

10、、补码、反码 正数正数:原、反、补相同,都与真值相同原、反、补相同,都与真值相同。 负数:负数:原码,负号用原码,负号用1 1表示,数值部分不变表示,数值部分不变 (注意小数的符号位在小数点(注意小数的符号位在小数点 的左边)的左边) 反码,原码除符号外求反反码,原码除符号外求反 补码,原码除符号外求反加补码,原码除符号外求反加1 1(简便(简便 方法)方法)例 x=0.1011 x=- 0.1011 x=+1011 x=-1011 符号扩展符号扩展 8位二进制整数表示-1的补码 -1补= 假定十进制数66,按补码形式存放在一个8位寄存器中,该寄存器的内容用十六进制表示为:13(12)、假定编

11、译器规定int 和short类型长度分别为32位和16位,执行下列C语言程序 Unsigned short x=65530 Unsigned int y=x得到y的机器数为 A 0000 7FFAH B 0000 FFFAH C FFFF 7FFFAH D FFFF FFFAH移码移码 : 现在计算机中浮点数的阶码常采用移码表示。阶码之所以采用移码表示是因为移码有两个重要性质:一是移码值增大,对应的数值也大,这样便于浮点运算时的阶码比较;二是当阶码用移码表示时,浮点数的机器零和逻辑零表示相同。 例:200.1101+220.0110 如果对每个阶码都加上一个足够大的正常数,使所有的阶码都转化为

12、正整数,就可消除阶码符号的影响。 移码定义 : X移2nX, 2nX2n1 0 128 255 x移 128 0 127 x 数轴上的移码表示机器零真值xx补x移十进制二进制二进制十进制128127-1011271000000001111111000000010000000000000001011111111,00000001,00000011,11111110,00000000,00000010,111111100000000000000010111111110000000100000011111111101127128129255移码与真值、补码的对应关系由原码、补码、反码、移码求真值由原

13、码、补码、反码、移码求真值 正数正数 负数:原码的符号位负数:原码的符号位1 1改用负号改用负号“”表示,表示, 数值部分不变。数值部分不变。 反码,除符号位外求反得到原码,反码,除符号位外求反得到原码, 再由原码得出真值。再由原码得出真值。 补码除符号位外求反加补码除符号位外求反加1 1得到原码,得到原码, 然后由原码得出真值。然后由原码得出真值。 移码:移码:移码和补码除符号位相反移码和补码除符号位相反 外,其余各位相同。外,其余各位相同。 移码移码 补码补码 真值真值二进制数表示无符号数 原 码 补 码反 码移 码0000000000000001011111111000000010000

14、001111111101111111101127128129254255+0+1+127-0-1-126-1270+1+127-128-127-2-10+1+127-127-126-1-0128-127-10+1+126+127 0 0的表示:的表示:原码和反码有2种,补码和移码只有一种。 12(09),一个C 语言程序在一台32 位机器上运行。程序中定义了三个变量x,y 和z,其中x 和z为int 型,y 为short 型。当x = 127,y = -9 时,执行赋值语句z = x+y 后,x,y 和z 的值分别是 Ax = 0000007FH, y = FFF9H, z = 0000007

15、6H Bx = 0000007FH, y = FFF9H, z = FFFF0076H Cx = 0000007FH, y = FFF7H, z = FFFF0076H Dx = 0000007FH, y = FFF7H, z = 00000076H x x补补 0000007FH Y Y补补 FFF7H 0000007FH+FFFFFFF7H=00000076H 13(10).假定有4个整数用8位补码分别表示r1=FEH,r2=F2H,r3=90H,r4=F8H,若将运算结果存放在一个8位寄存器中,则下列运算会发生溢出的是() A.r1 x r2 B. r2 x r3 C. r1 x r4

16、D. r2 x r4三、数的小数点表示三、数的小数点表示 定点数(整数) 浮点数 定点数的表示范围定点数的表示范围(假设计算机字长为n+1位)原码(反码):小数 整数 补码(移码): 小数 整数浮点数浮点数 浮点表示法就是一个数的小数点的位置不固定,可以浮动。 对于任一数N可表示成:nX210nnX21)21 (120nX12) 12(nnXnX211122nnXmRMRNeE其中,(Exponent)是指数,被称为浮点数的阶码,(Mantissa)称为浮点数的尾数或有效数,尾数的符号表示数的正负。 (Radix)是阶码的底,又称为尾数的基值。基值 在计算机中可以为2、8、或者16,是个常数,

17、在系统中是事先隐含约定的,不需用代码表示。 浮点数用一对定点数(阶码(整数、补或移码)和尾数(小数(原或补码)表示,基值(数)隐含。 例: 200.0110100=210.0011010 = 2-10.1101000 规格化浮点数(唯一、提高计算精度) 尾数:正数,0.1 负数(原码)1.1 负数(补码)1.0 规格化操作:当运算结果尾数不满足规格化条件时,需将尾数左移以实现规格化,尾数每左移一位(小数点位置不动)阶码减1,直至尾数满足规格化条件为止。 典 型 数 据机 器 数 形 式(从左到右依次为数符、阶符、l位阶码、n位尾数) 真 值最大正数最小正数(非规格化)最小正数(规格化)最大负数

18、(非规格化)最大负数(规格化)最小负数0 0 111 11110 1 111 00010 1 111 10001 1 111 00011 1 111 10001 0 111 1111 2 12(1 2 )ln (2 1)22ln(2 1)122l(2 1)22ln(2 1)122l 2 12(1 2 )ln 阶码和尾数均采用原码表示表示范围表示范围: 例:已知16位的浮点数格式如下:数符1位,阶码4位(移码表示),尾数11位(原码表示),基值为2,计算此规格化浮点数的下列真值: 最大正数 最小正数 最大负数 最小负数 浮点数阶码的位数决定数的表示范围,尾浮点数阶码的位数决定数的表示范围,尾数的

19、位数决定数的精度。数的位数决定数的精度。)21 (211718221822)21 (2117 IEEE754IEEE754标准标准:阶码用移码,尾数用原码, 基值为2(单精度格式:数符1位,阶码8位,尾数23位) 阶码值的范围为1254,它的偏移值为127,最大阶码真值为127,最小阶码真值为126 原码表示的非0规格化浮点数的尾数的最高有效位一定为1,IEEE754标准中利用这一点,规定规格化浮点数规格化浮点数在小数点的左边有一隐含位(作为二进制整数的个位)。由于该位为1,不需要存储,在运算时,自动加上该位参加运算。因此,使单精度浮点数的尾数的有效位为24位。此时规格化浮点数的尾数为1.f(

20、f为尾数,1为隐含位)。所以,规格化非零数的阶码真值e为-126, 127,则阶码值E为1,254,所表示的规格化浮点数为2E127(1.f)=(-1)s 2E-127(1f)。 IEEE 754标准的单精度规格化浮点数的表示范围 最大正数 2127(2223) 非0最小正数2126 最大负数2126 最小负数2127(2223) 零、正负无穷大数、非数、非规格化数表示符号符号偏移阶码偏移阶码尾数尾数 值值正零正零负零负零正无穷大正无穷大负无穷大负无穷大非数非数(N(Na aN)N)正规格化非零数正规格化非零数负规格化非零数负规格化非零数正非规格化数正非规格化数负非规格化数负非规格化数0 01

21、 10 01 10 0或或1 10 01 10 01 10 00 0255 255 (全(全1 1)255 255 (全(全1 1)255 255 (全(全1 1)0 0 E E 2552550 0 E E 2552550 00 00 00 00 00 0 0 0f ff ff f 0 0f f 0 00 00 0 - N Na aN N2 2E-127E-127(1.f)(1.f)-2-2E-127E-127(1.f)(1.f)2 2-126-126(0.f)(0.f)-2-2-126-126(0.f)(0.f)以IEEE754标准的单精度数据格式表示 0.75 0.750.11201.12

22、1 IEEE 754单精度浮点数的数值为: (-1)S2E -127(1f) 则1.121 (-1)12126-127(1 .1000 0000 0000 0000 0000 000) 0.75的IEEE754标准单精度数据格式为: 1 01111110 1000 0000 0000 0000 0000 000 14(10).假定变量i,f,d的数据类型分别为int, float, double(int用补码表示,float和double用IEEE754单精度和双精度浮点数据格式表示),已知i=785,f=1.5678e3,d=1.5e100,若在32位机器中执行下列关系表达式,则结果为真的是

23、()(I) i=(int)(float)i (II)f=(float)(int)f(III)f=(float)(double)f (IV)(d+f)-d=f A.仅I和II B. 仅I和III C. 仅II和III D. 仅III和IV说明说明: 1)后边一个括号优先级高; 2)两个不同类型的数相加时,会将低类型(暂时)转变为高类型,再运算。 (I) i=(int)(float)i /经过两次类型转换后相同,结果为真。 (II)f=(float)(int)f /f的类型为float,int(f)小数点以后被舍掉,会有精度损失,即使再进一步转换为float,损失亦无法弥补; (III)f=(fl

24、oat)(double)f /同1的解释,低精度先变为高精度,再变为低精度,结果为真 (IV)(d+f)-d=f /d+f的结果为double类型,而f为float类型,因此肯定不成立。 13(11)、float型数据通常用IEEE754单精度浮点数格式表示。若编译器将float型变量分配在一个32位浮点寄存器FR1中,且x=-8.25,则FR1的内容是A.C104 0000H B.C242 0000H C.C184 0000H D.C1C2 0000H解:X=-8.25=-1000.01=-1.00001*23 3=130-127 1 10000010 0000100 00000000 00

25、00000=C1040000H 0 01111110 10110000000000000000000的十进制数值是多少? 偏移阶码E(01111110)2(126)10 阶码1261271 规格化的尾数是1.1011 该浮点数的数值是1.101121 0.11011 (0.84375)10 14(12)、float 类型(即IEEE754标准单精度浮点数格式)能表示的最大正整数是 A B. C. D. 十进制数据类型:十进制数据类型:BCD码(binary code decimal format )用一个4位二进制编码来表示一个十进制数位(如8421码),用一个字节压缩存放两个十进制数位。10

26、31262-21041272-21031272-21041282-2例 0011 0111, 0010 1000. 辅助进位位(第3位的进位)5 52 22 2 非数值数据类型非数值数据类型 字符类型字符类型: :ASCII 、 UNICODE 字符串字符串: :(连续的字符流),拷贝、搜索、编辑等 布尔值布尔值: : 位图位图: : 指针指针: :一个机器地址5.2.3 Pentium 4的数据类型Pentium 4的数值数据类型 (表示支持该类型)5.2.4 UltraSPARC 的数据类型UltraSPARC III的数值数据类型 (表示支持该类型)5.2.5 8051的数据类型8051

27、的数值数据类型 (表示支持该类型)5.35.3指令格式指令格式 基本指令格式基本指令格式 操作码操作码 地址码地址码指令长度指令长度5.3.15.3.1指令格式设计原则指令格式设计原则1. 指令长度短指令优于长指令 (1) 需要存储空间少 (2) 减少指令长度可以快速处理 内存带宽:每秒能够读写多少位。如果一个指令cache的带宽是t bit/s,平均指令长度是r位,那么这个cache每秒至多可以传送t/r条指令。R越小,单位时间传送的指令条数越多(执行指令的上限) 缺点:译码和重叠执行变得困难2.必须有足够的空间表示所有的操作类型 n位操作码,计算机最多可以有 种操作。3.地址字段中位的数量

28、 n2 粒度:给一个地址可以寻址的位数 现代计算机能够对所有的字节进行寻址,但是所有的内存在进行一次访问时都会读出一个、两个有时是四个字。 8 8 8 8 32 32 32 320 12232-1012230-15.3.25.3.2扩展操作码扩展操作码 定长操作码:作码长度一致,位于指令的固定字段) 扩展操作码:操作码和地址码之间如何平衡 opcode address k n2k2n扩展操作码扩展操作码使用4位操作码和三个4位地址字段的指令共允许15条三地址指令、14条2-地址指令、31条1-地址指令和16条零地址指令的扩展操作码方式。标记为xxxx, yyyy, 和zzzz 的是4-位 的地

29、址字段。 例:设机器指令字长16位,指令中地址字段的长度4位,如果指令系统中已有11条三地址指令,72条二地址指令和64条零地址指令,问最多能规定多少一地址指令? 例:某指令系统指令字长16位,每个操作数的地址码长6位,指令分为无操作数、单操作数和双操作数三类。若双操作数指令为K种,无操作数指令为L种,问单操作数指令最多可能为几种?642)2)722)112(4444xLxK6642)2)2( 可使用两种方法来利用变长操作码: 1)所有指令的长度保持相等所有指令的长度保持相等,给需要使用最多的位定义其他信息的指令分配最短的操作码。 2)通过给常用的指令分配较短的操作码,不常用的指令分配较长的操

30、作码来使平平均指令长度达到最小。均指令长度达到最小。 通过对每条指令都使用需要的最少的位进行编码,使所有指令的平均长度达到最小也是可能的。5.3.3 Pentium 4 5.3.3 Pentium 4 的指令格式的指令格式 Pentium 4指令格式5.3.4 UltraSPARC 的指令格式最初的SPARC指令格式5.3.5 8051 5.3.5 8051 的指令格式的指令格式8051指令格式5.45.4寻址寻址 5.4.1 5.4.1 寻址方式寻址方式. .有效地址的概念有效地址的概念 形式地址:指令中地址字段内容 有效地址:主存地址或寄存器编号2 2数据寻址和指令寻址数据寻址和指令寻址

31、数据寻址是指获得操作数的有效地址的方法。 指令寻址是指确定将要执行的下一条指令的地址的方法。通常有两种方法: 顺序寻址:PC增量的方式自动形成下一条指令的地址。 转移寻址:需要提供转移地址装入PC,转移完成后,按照新的转移地址去执行。转移地址的形成和操作数地址相同。5.4.2 立即寻址# 立即寻址是寻址的最简单形式。在这种方式中由指令直接给出操作数,又称为立即数。把4存入R1的立即寻址指令5.4.3 直接寻址A 指令的地址字段含有操作数的有效地址,根据该地址可以直接读取操作数。5.4.4 寄存器寻址R 指令的地址字段给出寄存器号(寄存器地址),操作数在指定的寄存器中。5.4.5 寄存器间接寻址

32、(R) 指令的地址字段给出寄存器号,操作数的有效地址在指定的寄存器中。 计算数组元素之和的一段普通汇编程序5.4.6 变址寻址 A(R) 操作数的有效地址等于变址寄存器(显式或隐式)的内容与指令中的形式地址(偏移量)之和。计算有1024个元素的两个数组(A AND B)的OR的一段汇编程序5.4.7 基址变址寻址 操作数的有效地址等于变址寄存器的内容、基址寄存器内容与指令中的形式地址(可选)之和。LOOP: MOV R4,(R2+R5) AND R4,(R2+R6) MOV R4,A(R2)的一种可能的表示法5.4.8堆栈寻址1.逆波兰表达式 中缀表达式:x+y 后缀表达式(逆波兰表达式):x

33、y+ 中缀表达式及其相应的逆波兰表达式的一些例子2.逆波兰表达式求值(8+2*5)/(1+3*2-4)825*+132*+4_/ 使用栈对逆波兰表达式求值5.4.9 转移指令的寻址方式 转移指令和过程调用指令也需要寻址方式来指定目标地址 前面讨论的直接寻址、寄存器间接寻址、变址寻址都可用于转移指令,但常用的是 PC相对寻址:指令中带符号的偏移量加到PC得到目标地址(变址寻址) 16(09) 某机器字长16位,主存按字节编址,转移指令采用相对寻址,由两个字节组成,第一字节为操作码字段,第二字节为相对位移量字段。假定取指令时,每取一个字节PC自动加1。若转移指令所在主存地址为2000H,相对位移量

34、字段的内容为06H,则该转移指令成功转移后的目标地址是: A 2006H B 2007H C 2008H D 2009H (R)+ -(R) 一个简单的三地址计算地址计算机的指令格式设计5.4.10操作码和寻址方式的关系(正交性) 从软件的观点来看,指令和地址应该是有规律的结构 一个简单的二地址计算机的指令格式设计5.4.11 Pentium 4 的寻址方式 Pentium 4 的32-位寻址方式. Mx 表示x 处的内存字 for (i=0;in;i+) ai=0访问 ai5.4.12 UltraSPARC 的寻址方式LOAD、STORE:变址寻址,计算2个寄存器的和作为间接地址5.4.13

35、 8051的寻址方式 5种基本寻址方式: 隐式使用累加器模式 寄存器寻址 直接寻址 寄存器间接寻址 立即寻址 特殊的寻址方式5.4.14寻址方式讨论 寻址方式比较 例:某计算机的指令系统有寄存器寻址、寄存器间接寻址、变址寻址、和相对寻址等寻址方式,设当前指令的地址码部分为0002H,正在执行的指令所在地址为1000H,如下所示 1000H 寄存器寻址、寄存器间接寻址、变址寻址所使用的寄存器的内容为0003H,问 (1)当执行取数指令时,如为寄存器间接寻址方式,操作数地址是多少? 如为变址寻址方式,操作数地址是多少? OP 0002H (2)当执行转移指令时,转移地址又是多少?1003H例:设(

36、R)1000H,(1000H)2000H,(2000H)3000H,(Rx)1000H,指令中地址字段的内容为1000H,问在以下寻址方式下访问到的操作数的值是什么? 1)寄存器间接寻址 2)变址寻址 3)间接寻址已知存储器的值如下: 地址 内容 10H 20H 20H 30H 30H 40H 40H 50H 50H 60H给出下面每条指令的执行结果。 MOV R0, #10H MOV R1, #20H MOV R2, 20H ADD R0,(R1) MOV R3, 20H(R1) AND R3, 10H(R1) OR R2, R3 43(10)某计算机字长为16位,主存地址空间大小为128K

37、B,按字编址。采用单字指令格式,指令各字段定义如下: 转移指令采用相对寻址方式,相对偏移用补码表示,寻址方式定义如下: Op Ms Rs Md Rd15 12 11 9 8 6 5 3 2 0 源操作数 目的操作数Ms/Md寻址方式寻址方式助记符助记符含义含义 000B寄存器直接Rn操作数=(Rn)001B寄存器间接(Rn)操作数=(Rn)010B寄存器间接、自增(Rn)+操作数=(Rn)(Rn)+1) (Rn)011B相对D(Rn)转移目标地址=(PC)+(Rn) 注:(X)表示存储地址X或寄存器X的内容请回答下列问题: (1)、该指令系统最多可有多少条指令?该计算机最多有多少个通用寄存器?

38、存储器地址寄存器(MAR)和存储器数据寄存器(MDR)至少各需多少位? (2)、转移指令的目标地址范围是多少? (3)、若操作码0010B表示加法操作(助记符为add),寄存器R4和R5的编号分别为100B和101B,R4的内容为1234H,R5的内容为5678H,地址1234H中的内容为5678H,地址5678H中的内容为1234H,则汇编语言为add(R4),(R5)+ (逗号前为源操作数,逗号后为目的操作数)对应的机器码是什么(用十六进制表示)?该指令执行后,哪些寄存器和存储单元的内容会改变?改变后的内容是什么? (1)OP4位,最多可有16条指令 寄存器编号3位,最多有8个通用寄存器

39、按字编址,容量 64K字,MAR至少需要16位, 字长16位,MDR也至少16位 (2)转移指令的目标地址范围64K (3)add (R4),(R5)+对应的机器码为: 0010 001 100 010 101B=2315H (R5)=5679H (5678)=5678+1234=68ACH 44(09)某计算机字长16位,采用16位定长指令字结构,部分数据通路结构如图所示图中所有控制信号为1时表示有效,为0时表示无效,如MDRinE为1表示允许数据从DB打入MDR,MDRin为1表示允许数据从内总线打入MDR,假设MAR的输出一直处于使能状态。加法指令“ADD (R1), R0 ”的功能为:

40、(R0)(R1) (R1)即将R0的数据与R1的内容所指的存储单元的数据相加,并将结果送入R1的内容所指的存储单元保存。 下表给出了上述指令取指和译码阶段每个节拍(时钟周期)的功能和有效控制信号,请按表中描述的方式用表格列出指令执行阶段每个节拍的功能和有效控制信号。时钟 功能有效控制信号C1MAR (PC)PCout , MARinC2MDR M(MAR)PC ( PC)+1MemR, MDRinEPC+1C3IR (MDR)MDRout, IRinC4指令译码无时钟时钟 功能功能 有效控制信号有效控制信号C5MAR (R1) R1out, MARinC6MDR M(MAR) A (R0) M

41、emR ,MDRinER0out , AinC7AC (MDR)+(A) MDRout ,Add,ACinC8MDR (AC)Acout , MDRinC9M(MAR) (MDR) MDRoutE, MemWA (R0)也可在C7: AC (MDR)+(A)之前单列的一个时钟周期内执行。 参考答案一 A MDRAC (A)+(R0)参考方案二: 将以R1为地址的存储单元的内容取出后送A,再与RO的内容相加送AC.44(12)、某16位计算机中,带符号整数用补码表示,数据Cache和指令Cache分离。题44表给出了指令系统中部分指令格式,其中Rs和Rd表示寄存器,Mem表示存储单元地址,(x)

42、表示寄存器x或存储单元x的内容。名称指令的汇编格式指令含义加法指令ADD Rs,Rd(Rs)+(Rd) Rd算术/逻辑左移SHL Rd2*(Rd) Rd算术右移SHR Rd(Rd )/2 Rd取数指令LOAD Rd, Mem(Mem ) Rd存数指令STORE Rs,Mem(Rs) Mem该计算机采用5段流水方式执行指令,各流水段分别是取指(IF)、译码/读寄存器(ID)、执行/计算有效地址(EX)、访问存储器(M)和结果写回寄存器(WB),流水线采用“按序发射、按序完成”方式,没有采用转发技术处理数据相关,并且同一寄存器的读和写操作不能在同一个时钟周期内进行。请回答下列问题:(1)若int型

43、变量x的值为-513,存放在寄存器R1中,则执行指令“SHR R1”后,R1中的内容是多少?(用十六进制表示)(2)若某个时间段内中,有连续的4条指令进入流水线,在其执行过程中没有发生任何阻塞,则执行这4条指令所需的时钟周期数为多少?(3)若高级语言程序中某赋值语句为x=a+b,x、a和b均为int型变量,它们的存储单元地址分别表示为x、a和b。该语句对应的的指令序列及其在指令流水线中的执行过程如题44图所示。I1 LOAD R1,aI2 LOAD R2,bI3 ADD R1,R2I4 STORE R2,【x】指令1234567891011121314I1IF ID EXMWBI2IFIDEX

44、MWBI3IFID EXM WBI4IFIDEXM WB则这4条指令的执行过程中,I3的ID段和I4的IF段被阻塞的原因各是什么?(4)若某高级语言程序中赋值语句为x=2*x+a,x和a 均为unsigned int类型变量,它们的存储单元地址分别表示为x、a,则执行这条语句至少需要多少个时钟周期?要求模仿题44图画出这条语句对应的指令序列及其在流水线中的执行过程示意图。解:1)-513=- 0000 0010 0000 0001 补码:1111 1101 1111 1111=FDFFH 右移一位:1111 1110 1111 1111=FEFFH 2)执行4条指令所需时钟周期数:5+(4-1

45、)=8 3)I3的ID段被阻塞的原因:写后读相关 I4的IF段被阻塞的原因:I4与I3存在结构相关12345678910 11 12 13 14 15 16 17I1 IF ID EX MWBI2IF ID EX MWBI3IFID EX MWBI4IFID EX MWBI5IFID EX MWB I1 LOAD R1,X I4 ADD R1, R2 I2 LOAD R2,a I5 STORE R2,X I3 SHL R1 5.5. 5.5. 指令类型指令类型5.5.1 数据移动(传送)指令 把数据从一个地方复制到另一个地方是所有操作的基础。复制指创建一个和原有对象完全相同的对象。 寄存器 寄

46、存器, 寄存器 存储器, 存储器 寄存器, 存储器 存储器5.5.2 双操作数指令 双操作数指令使用2个操作数产生一个结果。算术运算(整数、浮点数加减乘除)和逻辑运算指令1.补码加减运算(定点)1)依据的关系式 x补y补x+y补 xy补x补y补 y补是将y补连同符号位一起求反加12)算法: 参加运算的操作数用补码表示。 符号位参加运算 对于两数相加减的各种情况,计算机都执行求和操作。当操作码为加运算时,两数直接相加;当操作码为减运算时,将减数连同符号位一起求反加1与被减数相加。 运算结果以补码表示。例1 已知:x=0.1001,y0.0110, 求x+y?解:x补0.1001 y补1.1010

47、 x补 0.1001 +y补 1.1010 x+y补 1 0.0011 x+y=0.0011例2 已知: x=0.1001,y0.0101, 求x+y?解:x补1.0111 y补1.1011 x补 1.0111 +y补 1.1011 x+y补 1 1.0010 x+y=0.1110例3 已知:x=0.1001,y0.0110,求xy?解:x补0.1001 y补0.0110 y补1.1010 x补 0.1001 +y补 1.1010 x-y补 1 0.0011 xy=0.0011例4 已知:x=0.1001,y0.0110,求xy?解:x补1.0111 y补1.1010 y补0.0110 x补

48、1.0111 +-y补 0.0110 x-y补 1.1101 xy=0.00113 3)溢出概念和判别方法)溢出概念和判别方法 运算结果超出机器数所能表示的数据范围判别方法: 单符号位 OVR=an-1 bn-1 sn-1+ an-1 bn-1 sn-1 双符号位 OVRsf1 sf2 用cn-1和cn判断 OVRcn-1 cn 43(11).假定在一个8位字长的计算机中运行如下类C程序段: unsigned int x=134; unsigned int y=246; int m=x int n=y unsigned int z1=x-y; unsigned int z2=x+y; int

49、k1=m-n int k2=m+n 若编译器编译时将8个8位寄存器R1-R8分别分配给x、y、m、n、z1、z2、k1和k2,请回答下列问题(带符号数用补码表示)(1)执行上述程序段后,寄存器R1、R5和R6的内容(十六进制表示)(2)执行上述程序段后,变量m和k1的值(十进制表示)(3)上述程序段涉及带符号整数加减、无符号整数加减运算,这四种运算能否利用同一个加法器辅助电路实现?(简述理由)(4)计算机内部如何判断带符号整数加减运算的结果是否发生溢出?上述程序段中哪些带符号整数运算语句的执行结果会发生溢出?无符号 x=134 R1=1000 0110=86H Y=246 R2=1111 01

50、10=F6H有符号 m=x R3=86H=-122 n=y R4=F6H=-10(无符号整数转换为有符号整数,位模式不变,值可能改变)无符号 z1=x-y R5=1000 0110-1111 0110 =1001 0000=90H z2=x+y R6=1000 0110+1111 0110 =0111 1100=7CH 无符号数和有符号数都是以补码形式存储的,在不考虑溢出情况下,加减运算没有区别,只是输出时有符号数的最高位为符号位;有溢出时,两者有区别。可用同一个加法器实现,但溢出判别电路不同。 有符号k1=m-n R7=-112 k2=m+n 溢出 带符号整数加减运算结果的溢出判断:三种方法

51、 2.2.浮点数的加减运算浮点数的加减运算 对阶:小阶向大阶看齐 求和/差: 规格化:向左规格化(非规格化数)、向右规格化(尾数溢出) 舍入:0舍1入和恒置1 溢出判断:阶码溢出判断 13(09),浮点数加、减法运算过程一般包括对阶、尾数运算、规格化、舍入和判溢出等步骤。设浮点数的阶码和尾数均采用补码表示,且位数分别为5位和7位(均含两位符号位)。若有两个数 则用浮点数加法计算X+Y的最终结果是 A.00111 1100010 B.00111 0100010 C.01000 0010001 D.发生溢出3.逻辑运算 AND 从字中提取位 OR 把位组合到字中 Mask10110111 1011

52、1100 11011011 10001011 A00000000 11111111 00000000 00000000 B(MASK)-00000000 10111100 00000000 00000000 A AND B10110111 10111100 11011011 10001011 A11111111 11111111 11111111 00000000 B(MASK)-10110111 10111100 11011011 00000000 A AND B00000000 00000000 00000000 01010111 C-10110111 10111100 11011011

53、01010111 (A AND B) OR C 5.5.3单操作数指令 只有一个操作数并产生一个结果(移位和循环移位) 00000000 00000000 00000000 01110011 A 00000000 00000000 00000000 00011100 A 右移右移2位位 11000000 00000000 00000000 00011100 A 循环右移循环右移2位位 11111111 11111111 11111111 11110000 A 00111111 11111111 11111111 11111100 A 没有符号没有符号扩展的右移扩展的右移 11111111 11

54、111111 11111111 11111100 A 有符号扩展的右移 将一个正数左移k位,如果不考虑溢出,结果就等于原来的数乘以2k;将一个正数右移k位,结果就等于原来的数除以2k11111111 11111111 11111111 11111110 -1 的反码的反码11111111 11111111 11111111 11111100 -1 左移左移1位位 =-311111111 11111111 11111111 11111000 -1 左移左移2位位 =-711111111 11111111 11111111 11111111 -1的补码的补码11111111 11111111 11

55、111111 11111111.111111 -1 右移右移6位位=-1 18n=16n+2n移位分为逻辑移位、循环移位和算术移位。移位分为逻辑移位、循环移位和算术移位。 逻辑移位:逻辑移位:左移低位补0,右移高位补0 循环移位:循环移位:(前已述) 算术移位:算术移位:数的符号不变,左移2(不溢出),右移/2(不考虑舍入) 原码原码:符号不变,左移低位补0(不能溢出,最高数值位不能为1 )右移高位补0 补码:补码:左移时,数值位同符号位一起逐位左移,低位空位补0(在不产生溢出的情况下,正数,最高数值位不能为1,负数,最高数值位不能为0),右移时,符号位同数值位一起逐位右移,高位空位补符号位。

56、 例:补码D4H、A6H左右移位结果 CLR,INC,NEG CLR,INC,NEG5.5.4 比较和条件转移指令 条件转移指令测试某些条件,如果条件满足,则转移到一个特定的内存地址。 测试条件:符号位,溢出位,进位位,零位等 比较指令则比较2个字或2个字符是否相等,如果不等还要判断哪个比较大 从小到大: Unsigned Signed 001 100 (smallest) 001 101 010 110 011 111 100 000 101 001 110 010 111 011 (largest)5.5.5过程调用指令 过程(子程序或方法)是执行某个任务的指令集合,可以被程序的其他部分调

57、用。当被调用的过程完成了它的任务后,必须返回到调用之后的语句。 返回地址可以放在以下三种位置:内存、寄存器或栈。 递归:过程调用自身的能力5.5.6循环控制指令 按照固定的次数重复执行一组指令 for(i=0;in;i+) statements (a)循环结束时测试 (b)循环开始时测试 5.5.7 I/O指令 忙等待的程序控制 I/O.中断驱动 I/O.直接内存访问(DMA) I/O.I/O方式:在主机与I/O设备之间采用的不同的控制方式实现数据传送。 (1)(1)程序控制程序控制I/OI/O 通过直接执行I/O程序控制主机与外设之间的信息传送。其过程简述如下:先由主机通过启动指令启动外设工

58、作,启动后主机用测试指令不断查询外设工作是否完成,一旦外设工作完成,就可进行数据传送。 用于低端微处理器(如嵌入式系统)和必须对外界变化作出快速响应的系统(实时系统)。 简单终端的设备寄存器 程序控制I/O举例 22(11)某计算机处理器主频为50MHz,采用定时查询方式控制设备A的I/O,查询程序运行一次所用的时钟周期数至少为500,。在设备A工作期间,为保证数据不丢失 ,每秒需对其查询至少200次,则CPU用于设备A的I/O的时间占整个CPU时间的百分比至少是 A.0.02% B.0.05% C.0.20% D.0.50%解:主频50MHz,50M个时钟周期 查询程序运行一次500时钟周期

59、,每秒查询200次,共100000时钟周期 100000/50M=0.2%优点:优点:控制简单 缺点:缺点:CPU把大部分时间浪费在等待设备做好准备的循环上(这种策略称为忙等待), CPU与外设只能串行工作,效率低且只能进行数据传送,无法检测设备故障(可能进入“死机”局面)。 (2)(2)中断驱动中断驱动I/OI/O CPU启动I/O设备,并告诉它当设备准备好时就产生一个中断。这时CPU可以继续工作。当设备准备好时(输入、输出完成),通过设置设备寄存器中的中断使能位,硬件会给软件一个中断信号。CPU接到中断信号后,为设备服务。 (3)DMA I/O (3)DMA I/O 直接存储器存取(Dir

60、ect Memory Access -DMA)是在外设和主存之间开辟一条直接数据通道,当设备的数据传送准备好后,在专门硬件DMA控制器的控制下,实现高速外设与主存之间的成批数据交换。 在DMA方式下,CPU与DMA控制器共享总线,通常有3种工作方式。 1)CPU暂停方式(独占总线方式):CPU响应DMA请求后,让出总线给DMA控制器使用,直到数据全部传送完毕,DMA控制器再把总线交还给CPU。 2)周期挪用(周期窃取)方式:在DMA控制器占用总线周期传送数据期间,若CPU在此期间并不需要使用总线,它可继续执行指令;若 CPU也要使用总线,则让出一个总线周期给DMA控制器使用,DMA控制器利用此

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论