版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章数据的表示与指令系统设计
・内容提要:
指令系统是计算机系统中硬件与软件界面的重栗标志。数
据是指令系统所处理的对象,它的类型与表示方式对于一台计算
机来说是非常重要的。在此首先对计算机中的数据类型与表示作
以简单的介绍,然后讲述指令系统的设计方法、CISC与RISC计
算机的特点等。
国
第二章数据的表示与
指令系统设计
2.1数据的类型与表示
2.2指令系统设计
2.3CISC和RISC计算机比较
2.1数据的类型与表示
2.11数据类型
2.12数据表示
2.13定点数与浮点数
2.14向量数据表示
2.15自定义数据表示
2.1.1数据类型
在计算机中数据有三种,一种是用户定义的数据;另一种是系
统数据;第三种是指令字。
数据类型与数据不同,它除了一组数值的集合之外,还包括作
用于该数值集合上的操作集。比如整型数据类型是指整型数据和相
应的算术运算操作集;
布尔数据类型是指布尔数据(真和假)和相应的运算:“与”、
“或”、“非”、“异或”等。
从系统结构的观点出发,数据类型可分为基本数据、结构数据
和抽象数据类型。本节主要讨论基本数据类型和结构数据类型。
L基本数据类型
基本数据类型是指可由计算机直接表示,通过指令直接操作的数据。
包括:
二进制位、二进制位串、整数、自然数(正整数)、实数(浮点数)、
布尔数和字符。
二进制位是二进制数的基本单位,可对其进行各种算术/逻辑运算。
二进制位串是指若干位二进制数,可对其进行各种算术/逻辑运算和
移位操作,其位数称为长度,常用痰示;当68时,称为一个字节,也
称为字节数据。
布尔数也是一位二进制数,其值有“真”和“假”,可对其进行
“与”、“或”、“非”、“异或”等布尔操作。
字符是符号的数字化表示,目前采用的主要是ASCII码,用7位二进
制串表示一个字符;在一些大的系统中,常采用EBCDIC码,是用8位二
进制串表示一个字符。
至于整数、自然数(正整数)、实数(浮点数),是按照数学习惯
所用到的数据类型。除了用二进制表示的数据之外,还可以使用十进制
数,但是在计算机中都是用二进制位串来表示的,可对其进行各种算术
运算和移位操作,也可按照逻辑数进行逻辑运算。
2,结构数据类型
结构数据类型是由一组相互关联的数据元素复合而成的数据类型,
相互之间的关联称为数据结构。结构数据类型一般不能直接由硬件表示
和识别,需要通过映象的方式存储到存储器的一维空间中去。常见的向
量、数组、字符串、堆栈、队列、记录等都属于结构数据类型。
其中向量、数组、字符串、记录等一般由用户定义和使用;堆栈可
以由用户定义和使用,也可以由操作系统定义和使用;队列通常只在操
作系统中定义和使用。除此之外,还有图、表、树及链表等,也是在操
作系统中定义和使用。
2.1.2数据表示
1.数据表示
(1)数据表示是指计算机硬件所能直接表示和识别数据的形式。
它研究的是由硬件直接表示和识别,指令系统可以直接调用的数据类型。
因此数据表示与数据类型有着密切的关系。比如:
要直接识别和处理整型数据,计算机就必须有相应的指令和整型数
据运算部件;
若要直接识别和处理浮点数,就必须要有浮点运算的指令和浮点运
算器;
若要直接识别和处理布尔型数据,就必须要有逻辑运算指令和进行
逻辑运算的部件等。
属于数据表示的数据类型一般是最常用,也是比较简单的数据类型,
比如:
整型数据、实型数据、布尔数据、字符串、堆栈等;
在向量机中,向量也可以被硬件直接识别,通过向量指令来调用。
■n
(2)数据结构研究的主要是面向系统软件和面向应用领域所需要处理
的数据类型,它研究数据类型的逻辑结构与物理结构之间的关系与算法。除
了数据表示所研究的数据之外,其它数据一般都属于数据结构所要研究的内
容。
数据表示和数据结构分别是数据类型的子集。它确定哪些数据用数据表
示实现,哪些数据用数据结构实现,实质上是硬软件之间的主要界面之一,
也是计算机系统设计中硬软件分配中的一项重要的内容。
2.确定数据表示的原则
通过以上分析,已经知道数据表示的重要性。那么,如何确定哪些数据
类型用数据表示来实现呢?以下有四个方面的意见,供读者参考。
①有利于提高数据处理能力,缩短程序的运行时间;
②可减少CPU与主存之间的数据传送量;
③通用性强,利用率高;
④还要综合考虑系统结构的复杂性、可实现性以及总的性能价格比。
下面通过实例,进一步说明在计算机中数据表示的重要性。
【例2.1]比较用定点机实现浮点运算和浮点机运算的效果。
设有一台定点机,在进行科学运算时的速度是每秒1千万次。如
果用来实现32位的浮点运算,平均每次要执行100条以上的指令,访
问存储器的次数也要增加100倍。这就是说,实际的运算速度至少下
降100倍。如果用同档次(主频相同,字长都是32位)的浮点机运算,
虽然浮点运算的指令周期一般是定点运算指令周期的3倍,那么在浮
点机上进行浮点运算的速度仍然要比定点机进行浮点运算快33倍以
上。
S]
【例2.2]比较普通计算机实现向量运算和向量机运算的效果。
设在普通计算机上实现两个200x200矩阵的加法运算。如果用普
通的计算机实现二维矩阵运算,一般需要编写双重循环程序,其中内循
环200次,外循环200次,这就是说,需要执行40000次加法指令。如果
一台向量机有200个处理器,且具有向量数据表示,那么对于200x200
矩阵的加法运算,仅需要执行200次运算就可以了;如果向量机有
200x200=40000个处理器,那么仅执行一次运算指令就可以完成全部
运算。显然,用向量机求解要比普通计算机快得多。另外,在普通计算
机上运算时访问存储器的次数(访存周期)至少为4x40000次;而在
200个处理器的向量机上,访问存储器的次数(访存周期)可估算为
4x200次,在200x200个处理器的向量机上,访问存储器的次数(访
存周期)仅为4次。为了便于比较,没有考虑其它辅助指令。
2.1.3定点数与浮点数
1.定点数
所谓定点数就是小数点位置固定的数据。为了便于管理常把小数点置于
数据有效位的末尾或最高位之前。前者就是纯整数,后者为纯小数。在数据
表示中,可采用原码、补码、反码以及移码等形式,其中最常用的是补码。
2.浮点数
在科学计算中,浮点运算是大量使用的一种运算方式。对于浮点机来说
,由于它具有浮点数据表示,因此可对浮点数据直接处理。浮点数/V的一般
表示形式为:
N=mXre其中:e=〃(2.1)
m
其中6是尾数值,可以是整数或小数(一般为纯小数),常用原码或
补码表示;
e是阶码,整数,可以用原码、补码或移码表示,用的较多的是移码;
乙”是尾数的基数,可以是二进制、八进制、十进制或十六进制数表示;
心是阶码的基数,一般用二进制数表示。
,在多数情况下,尾数和阶码为二进制数,即〃=2,(=2;其长度分别
用丽g表示,也就是二进制数的位数(不包括符号位)。
浮点数的一般格式如图2.1所示,由尾数、尾符、阶码、和阶符组成。
图2.1浮点数的一般格式
尾数/77是规格化的纯小数,长度为夕,符号用a表示,长度为1位;阶码用
e表示,整型数据,长度为0符号用工表示。在实际应用中,阶码常用移码
表示,这样可表示浮点数/V的范围如下:
Q八q、
3.「egI冲W-1(2.2)
mm'/77'm
例如当p=23,t7=7,4=%=2,尾数用原码,纯小数表示,阶码用移码,整
数表示,规格化浮点数/V的表示范围为:
2T.2%\N\<(1-2-?*3.22^
即2;295sd-2?.2127
3.IEEE754标准
IEEE754标准规定,每一个浮点数由三部分组成,即符号位S、
阶码E和尾数M,有四种基本格式:
①单精度格式(32位):符号5=1位,阶码后8位,尾数摩=32位。
②扩展单精度格式:符号位,阶码应11位,尾数闻=31位。
③双精度格式(64位):符号5=1位,阶码后11位,尾数闻=52位。
④扩展双精度格式:符号外1位,阶码应15位,尾数座63位。
同
IEEE754标准约定,尾数闻为纯小数,闻的左面隐含一个整数1,
即1.M;阶码用移码表示,移码值为127,从而使阶码值的范围由-
126〜+127移至11〜254。其中单精度和双精度格式如图2.2所示。
1823
SEM
(a)单精度格式
11152
SEM
(b)双精度格式
图2.2IEEE754标准浮点数据格式
在IEEE754标准中,阶码。和255表示特殊数值。下面仅以32位单精度
浮点数为例,说明各字段的作用及取值范围。
若尺0,M=0,则心0;
若石=0,M丰3贝I,N=(-I)sx2-126x(0.〃)为非规格化数据;
若1WW254,贝IN=(-I)sx2^127x(i.M),为规格化数据;
若昆255,MQ贝I心NaN(Notanumber),为非数值数据;
若氏255,M=0,则N=(-1)SS无穷大数据。
由此可见,IEEE754标准使。有了精确的表示;同时,定义了无穷大数
据,当a/0时,结果为±8;当0/0时,结果为NaN;对于绝对值较小的数据,
为了避免下溢,允许使用非规格化数据(DenormalNumber)。
表2.1IEEE754标准单精度与双精度数据特征
非规格化数
字长
单精度双精度
据和正负零的隐含特征
符号位11
位是0,而不是L
阶码位811
IEEE754单精度和尾数位2352
双精度数据的特征总位数3264
如表2.1所示。下面移码值1271023
阶码取值范围726〜+1277022〜+1023
举例说明IEEE754最小规格化数2-1262-1022
标准浮点数据的表最大规格化数2+1282+1024
十进制数范围10-38〜10+38]0・308〜10+308
示
最小非规格化数10^510.324
■亘
【例2.3】用IEEE754标准格式表示十进制数9。
解:首先把十进制数9转换为二进制数,即1001;由此得降:0.001,
尺10000010,S=0;按照IEEE754标准格式得:
01000001000100000000000000000000,
用十六进制表示为41100000H。下面再转换成十进制:
N=(-1)Sx2E-127x(l.M)=(-1)0x2130-127x(1.125)
=1.125x8=9
说明:M=二进制(0.001)二十进制(0.125)
【例2.4】把IEEE754标准格式的数据C0A00000H转换成十进制数。
解:C0A00000H=11000000101000000000000000000000Bo
由此得S=l,E=(10000001)2=12910,M=(0.01)2=(0.25)10;贝h
N=(-1)Sx2E-127x(l.M)=(-1)1x2129-127x(1.25)
=-1.25x22=-5
2.1.4向量数据表示
1.向量数据表示
在科学计算中,向量运算是一种经常遇到的数值计算。在
非向量计算机中,对于向量运算一般是通过循环程序来实现的
o例如向量加法计算:
c[=4+超8,i=4,5,,11
用FORTRAN语言编写DO循环程序如下:
DO101=4,11
10C(I)=A(I)+B(I-8)
若在向量机上实现并行运算,数据表示必须满足并行运算
的需要。为了实现向量数据表示,必须为每一个向量设置必要
的参数,即基地址、位移量和向量长度,其示意如图2.3所示。
图2.3向量数据
在设计指令时,既要说明指令的功能,又要指出必要的参数。
指令格式如下:
向量加XAYBZC
其中XKZ表示三个寄存器,分别存放源向量4断目的向量C
的位移量;4B、C字段分别存放三个向量的基地址和各向量的长度。
设向量存放如图2,4所示,其中4、4、q分别表示三个向量的基地
址,儿、[、。表示参加运算的向量元素的位移量。参加运算的向量起
始地址=基地址+位移量,分别用儿、4、c表示;参加运算的向量有效
长度=向量长度-位移量,分别用儿、Be、G表示。这样,在*K存
段所指示的寄存器中存放的内容应当为4,-4和4;在4B、和片段中存
放的向量长度分别为12、4和12。整个运算只要一条向量指令就可以实现,
指令如下:
C(4:ll)=A(4:ll)+B(-4:3)
美JMMLLb
4)G
小G
位移量3位移量Cd=4
力2C2
AjG
'身心岫M_______________,拉晚曲hl心卬见1川.
45-4j
’4=4GCs=4
自a
(立移量坨=-4
念B.2G
B-i
Ai有效长度一苴1411MD.有效长度
.=l2-4=8
A氏Cse
儿BG
DRT-I斗厂G
小(|B:Go
山।比CH
源向量/源向量B目的向量C
图2.4向量数据表示参数
2.稀疏向量的压缩
在向量处理中经常遇到大量零元素的稀疏向量,为了节省存储
空间,通常采用压缩的向量表示。在压缩时首先生成一个有序位向
量,也称为瑞量,用来记录各向量元素的状态。然后把向量中非零
元素存入指定的存储区域中,并把菊量中的相应位置1,作为标志
,如图2.5所示。
S]
图2.5稀疏向量的压缩
这样既节省存储空间,又缩短实际运算向量的长度,加快向量处理
速度。
2向量在力向量的生命周期内与压缩向量一起保存。这样,在运算
结束之后仍可根据有序位向量恢复到原来的稀疏向量。
2.1.5自定义数据表示
在高级语言中,是通过表达式来表示数值运算的。同一表达式可
对不同类型的数据进行运算。但是,数据类型必须用类型说明语句事
先说明。例如:
REALX,Y,Z
Z=X+Y
为了减少高级语言与机器语言之间的差距,在系统结构中提出了
自定义数据的概念,即由数据本身说明自己的类型。这样,可减少重
复指令,简化指令系统。
目前,自定义数据的表示形式有两种,一种是带标志符的数据表
示,另一种是数据描述符表示。
L带标志符的数据表示
是对每一个数据附加标志符,其格式如图2.6所示。其中标志符用来
说明数据的类型,比如整型数据、浮点数据、十进制数据以及字符等。
采用带标志符数据表示,可简化指令系统,方便程序设计,简化编译
过程。但是要设置标志符,增加字长和存储器容量;由于要识别数据类型
,可能减缓指令执行的速度;另外,还需要设置专门的指令完成标志符的
初始化,即增加了另一类指令及执行时间。
标志符数据
图2.6带标志符的数据格式
同
2.数据描述符
主要用来描述复杂的和多维结构的数据类型,比如向量、矩阵、记录等。
其格式如图2.7所示。
其中描述符标志位用来说明该数据是一个数据描述符;特征标记说明该
数据块的类型和性质;其余部分给出数据块的长度和起始地址。描述符用来
对数据块进行说明,因此可视为程序的一部分;在访问时增加了一层寻址过
程;
描述符用来说明一个数据块,而带标志符的数据是每个数据都设有标志
符。因此,对于数组或其它数据块,使用描述符数据表示要比带标志符数据
表示的效率高得多。
382020
描述符
特征标记数据块长度数据块起始地址
标志位
图2.7带描述符的数据格式
口
例如在B6700计算机中,就是通过描述符对数据块进行访问的。它
的字长是48位,另设3位标志符。当标志符为000或010时,表示该数据
是单精度或双精度数据,即51位带标志符的数据表示;当标志符为101时,
表示该数据是描述符。在数据描述符中,前8位是特征标记,说明数据块
的属性,中间20位说明数据块的长度,末尾20位说明数据块的起始地址。
需要说明的是在B6700计算机中,数据块中的数据也保持51位,包
括3位标志符,以说明该数据属于哪一种类型。其示意如图2.8所示。
口
图2.8描述符数据块举例
3.描述符应用举例
[^12.51通过描述符构成3x3的二维数组。
解:设3x3的二维数组如图2.9(a)所示。则使用描述符表示的二维
数据结构如图2.9(b)所示,经过二重描述符构成了3x3的二维数据结构
。从图中可以看出,在用描述符表示数组时,数组中各元素可以不连续
存产
S2
单述符
iol~~Fsi
二兀素向盘
2
101s2
1012
S,S」
1012
s4
(a)3X3一维数组(b)一维数据结构
图2.9描述符应用举例a
2.2指令系统设计
“2.2.1指令系统的发展与其风格
->2.2.2指令系统的设计要求与分类
〜2.2.3地址分配与寻址方式
2.2.4按内容寻址方式
;,二.2.2.5指令格式与优化设计
2.2.6指令系统结构举例
2.2.1指令系统的发展与其风格
所谓指令,就是指示计算机进行某项工作的命令,所有指令的集合
称为指令系统。计算机全部功能的实现都体现在指令系统中。
1.从简单指令到复杂指令系统
在早期的计算机中指令与硬件结构紧密相关,用二进制代码表示。以
后使用助记符,产生了汇编语言及汇编程序。汇编语言指令与机器语言指
令一一对应,体现的仍是计算机系统的基本属性。
随着高级语言的出现和硬件技术发展,人们希望提高指令的功能,简
化从高级语言到机器语言的编译过程;希望汇编语言指令与高级语言的语
句尽量接近,甚至也能一一对应,直接支持高级语言中的语句。于是把多
条指令的功能合并到一条指令中,使指令复杂化。这样,就形成了所谓的
复杂指令系统计算机(CISC)。
2.CISC风格与微程序控制器
CISC风格主要是指复杂的指令系统和为之配置的微程序控制器,其指
令结构复杂,数量多。执行一条指令的主要途径有两个:一是为每一条指
令设置相应的译码器和必要的驱动电路;二是通过微程序实现一条复杂指
令的功能。前者电路复杂,以至难以实现;后者是建立微程序控制器。即
一条指令分为若干个步骤,每一步对应于一条微指令,若干条微指令顺序
排列,构成该指令的微程序。每一条指令都有自己的微程序,存入ROM;
执行时,即从ROM中找出,逐条取出,译码,执行。
这种ROM与相应的译码器、控制电路合称为微程序控制器。20世纪60
年代末及以后的各类计算机多采用这种技术,称为CISC风格。
3.简单指令系统与RISC风格
在进入20世纪70年代以后,CISC计算机迅速发展。但是人们逐渐
发现了两个问题。
①随着指令的功能的增强,微程序的指令代码增加,在微处理
器芯片中占据的面积越来越大。
②在CISC计算机庞大的指令系统中,仅有少数指令经常使用。
统计表明,CPU在80%的时间内执行的仅是(10〜20)%的指令。
因此,再增加指令的复杂度,增大ROM面积,设计庞大的微程序控
制器,对提高计算机系统的整体性能不再有多大的效果。
于是,人们把经常使用的少数指令集中起来,加以简化,用硬件电
路直接译码和执行,即不再使用微程序控制器思想。这样就萌发了简化
指令系统计算机思想,即RISC风格。
2.2.2指令系统的设计要求与分类
1.指令系统的设计要求
从使用和管理的角度来看,任何一类计算机指令系统中的指令可分成两种类
型。
一种是提供给一般用户的指令,比如算术逻辑运算指令、数据传送指令、控制
转移指令以及常用的系统管理指令等。
另一种是系统管理员使用的指令,不提供给普通用户使用,因此也称为特权
指令,比如专用I/O指令、停机等待指令、存储器保护指令、系统状态控制指令以
及诊断指令等。
在设计指令系统时,为使高级语言源程序易于翻译成机器语言程序,一般应
注意以下3个方面的问题。
(1)正交性:又称为分离原则或互不干涉性,即指令码中不同含义的字段相
互独立,互不相关。比如,操作码、操作数、地址码并行排列,互不重叠或交叉。
(2)规整性:对类似的操作数有相同的规定。比如,对于字操作数和字节操
作数设置相同的运算规则,设置相同的条件码;对于所有的通用寄存器设置相同
的使用原则,尽量不设置约束条件。
(3)对称性:对于操作数或通用寄存器应当尽量具有对称性。
比如,能进行R1-R1-R2运算,最好也能进行R2-R2-R1运算;又
如设有X-A+BxC功能,最好也设有X-(A+B)xC功能。
(4)可扩充性:对于操作码的译码状态不要用完,应当留出
一部分,以便以后扩充时使用。比如有16条指令,操作码不应当仅
用4位,而应当多用1〜2位。
2.指令系统结构分类
指令系统体现的是计算机系统结构的基本属性,不同的系统结构
配置不同的指令系统。因此,很难用统一的标准进行分类,但是人们
仍然确定了几个原则:
(1)按照CPU中存放操作数的部件,指令系统可以分为累加器
型、通用寄存器型和堆栈型。这种分类方式与ALU的结构密切相关。
①累加器型:在早期的计算机中设有专用累加器,因此在二
操作数指令中,有一个操作数隐含在累加器中,或者必须使用累加器。
②堆栈型,累加器隐含在堆栈的栈顶,进行运算时源操作数必须压栈,
运算结果也在栈顶中。比如Intel80x87采用的就是这种类型的指令系统。
③通用寄存器型,设置大量的寄存器,所有通用寄存器都可存放源/
目的操作数,都可执行I/O操作。
三种类型指令系统的计算机如表2.2所示;以Z=X+Y的运算为例,各类
计算机所使用的主要指令如表2.3所示。
(2)根据指令中操作数(或地址)的个数,指令可分为无操作数、单操
作数、二操作数、三操作数、四操作数及多操作数等,也称为无地址、
地址、二地址、三地址、四地址及多地址指令。
表2.2三种不同类型指令系统计算机
存放操作数访问显式操作
机器型号存放结果1=1
的主要部件的地址数的过程表2.3三种类型计算机执行Z=X+Y所用的指令
PDP-8
累加器累加器存/取累加器堆栈结构累加器结构通用寄存器结构
MC6809PUSHXLOADXLOADRyX
B5500/6500
PUSHYADDYLOADR2,Y
堆栈HP3000堆栈压栈/弹栈ADDSTOREZADDR1,R,
Intel80x87POPZSTOREZ,Rj
IBM360/370寄存器
存/取寄存器或
通用寄存器VAX-11或
存涵器存储器
RISC机
ai
在表示操作数时,一种是固定长度编码方式;另一种是通过地址描述
符所表示的变字长编码方式。其示意如图2.10所示。
操作码
操作码操作数
操作码操作数1操作数2
操作码源操作数1源操作数2目的操作数
操作码源操作数1源操作数2目的操作数下•指令地址
(a)固定长度编码格式
保作码地址描述符1地址码字段1•••地址描述符〃地址码字段n
(b)变字长编码格式
图2.10按操作数的个数分类指令格式
(3)根据ALU指令的操作数能否存放在主存储器中,指令又可以分为
两种类型:
①ALU指令只能对通用寄存器中的数据进行操作,而不能对存储器
中的数据进行操作;
②允许ALU指令对存储器中的数据直接进行操作,即存放源/目操作
数。
3.通用寄存器型指令系统分类
在通用寄存器型指令系统结构中,目标结果可以存放在寄存器中,也可以
存放在存储器中。因此,该类指令系统又可分为寄存器--寄存器型、寄存
器--存储器型和存储器一-存储器型三种。在寄存器--寄存器型的结构中,
除了专用访问存储器的指令外,其它指令一律不能对存储器进行读/写操作
,参加运算的源/目操作数只能在寄存器中。
在寄存器--存储器型的结构中,有一个操作数可以在存储器中。
在存储器--存储器型的结构中,允许两个操作数都可以在存储器中。
三种类型指令系统结构及典型计算机如表24所示。
表2.4三种类型指令系统结构及典型计算机
ALU指令中访ALU指令可使
结构类型计算机举例
存操作数个数用操作数个数
2IBM360/370中的RR型指令
0Reg—Reg
3SPARC、MIPS、HP等RISC机
2PDP-11、旧M360/370中的RX型指令
1Reg—Mem
3IBM360/370中的RS型指令
2Mem—Mem2PDP-11、IBM360/370中的SS型指令
3Mem—Mem3VAX-11系列机
亘
2.2.3地址分配与寻址方式
访问主存,可分为两种方式,一种是按地址访问,另一种是按内容访问。指
令由两部分组成,一部分是操作码,另一部分是操作数或地址码,这就奠定了按
地址访问的基本方式。
1.编址方式
对于CPU来说,可访问的地址可能是寄存器、存储器、堆栈及I/O接口等部件。
对于这些部件怎样寻址,涉及到编址方式。笼统而言,可分为三种,即隐含编址、
独立编址和统一编址。
(1)隐含编址
寄存器包括累加器、通用寄存器和其它专用寄存器。例如累加器AX、通用寄
存器RI、R2、堆栈指针SP、状态标志寄存器PSW等,在指令中使用隐含寻址方式。
其中寄存器由专用标识符表示,比如指令ADDAX,BX、LOADRI,R2、MOV
SP,2000H.PUSHPSW和POPDX等。
(2)独立编址
对于存储器和I/O端口寻址可分为两种方式,一种是独立编址,另一种是统一
编址。
所谓独立编址也称为分离编址,即将I/O端口地址与存储器分开。这样,就需
要对I/O端口设置专门的指令,实现数据的输入输出。比如指令:
INAX,PORT和OUTPORT,AX
回
(3)统一编址
统一编址也称为混合编址,是把I/O端口地址与存储器地址合为一体,
统一编址,即一个I/O端口和主存储器中的每一个字节单元一样有统一的
编号;通过相同的指令进行数据传送,进行输入输出操作。比如指令:
MOVAX,[BX]访问存储器
MOVAX,[DX]访问I/O设备
2.物理地址与虚拟地址
早期计算机的编程地址与实际的存储器(包括I/O设备)地址一致,即有
多少位地址,就有多大编程空间和实际的寻址空间。以后,编程地址不再
与实际可访问地址一致。
最初,实际地址空间大于编程空间,比如Intel8086有20位地址,实
际地址空间为1MB,而编程地址空间仅64KB;
以后,编程地址空间远大于实际的地址空间,比如Intel80386有32位
地址线,实际地址空间仅为4GB,而编程地址为64TB。
由于64TB可编程空间是虚构出来的(实际上是由软件来实现,在外存
中存储),因此称为虚拟存储器,其地址称为虚拟地址;实际主存空间称
为物理存储器,其地址称为物理地址。
3.地址分配
在不同的计算机中,对于字长有不同的规定,比如8位,16位,32
位,甚至64位等。
为了使数据存放规整,常以字节为单位编址。
单字节数据,起始地址任意的;
双字节数据以偶地址开始存放;
四字节数据,地址末2位为00;
八字节数据,地址末3位为000;
十六字节数据,地址末4位为0000。
通常,把一个多字节数据的存储区域称为一
个小段,多字节数据应当按段存放。
多字节数据存放时可以低字节在前,高字节
在后;也可以高字节在前,低字节在后;
例如,存放数据2A6890B3H。其示意如图2.11所示。
地址数据
XXOOHB3H
90H
A低字节在先
68H
XX03H2AH
•••
YYOOH2AH
68H
A高字节在先
90H
YY03HB3H
,
图2.11数据存放格式
口
4•寻址方式
寻址方式大体上可按照两种类型来划分,一种是面向对象的寻址方式,
另一种是面向地址的寻址方式。
所谓面向对象的寻址方式,主要是指面向寄存器、存储器和堆栈等,
由不同的指令来实现,其地址可以隐含,也可以显式说明。
所谓面向地址的寻址方式,是按地址访问存储器或者I/O端口,其地
址一般显式说明。这里主要介绍的是面向地址的寻址方式。
在面向地址的寻址方式中,主要有立即数、直接(绝对)地址、寄存器、
寄存器间接地址、自增/自减寻址、变址寻址、相对(或带偏移)寻址等。下
面给出CISC计算机常用的几种寻址方式,其示意如图2.12所示。
(a)立即数
(b)直接地址
(c)寄存器寻址
(d)寄存器间接寻址
(e)存储器间接寻址
⑴寄存器白增/自减寻址
自增/自减
»操作数地址⑻基址变址寻址
若比例因子=1,为基址+变址寻址
若基址=0,为变址寻址
若变址=0,为基址寻址
图2.12CISC面向地址的寻址方式
(h)偏移/相对寻址
操作数地址(i)变出基址/偏移寻址
1.2,4,8
»操作数地址⑴口增/自减变址寻川
比例因子
1,2,4,8
图2.12CISC面向地址的寻址方式(续)
2.2.4按内容寻址方式
按内容寻址(访问)在数据库中经常使用,是通过软件的办法来实现的。
随着硬件技术的发展,在CPU中也设置了按内容访问存储器,以提高查找
数据的速度。该存储器也称为联想存储器,一般容量较小,主要存储一些
急需或者关键的数据,以提高CPU的速度,比如Cache结构存储器中的快表。
访问时,在比较数寄存器CR中设置比较内容;在MR中设置屏蔽字,Mj
为1,Cj参与比较;否则,不参与比较。然后,参与比较(查找)的内容与存
储器中的内容同时比较。如果全都不一致,说明没有找到;如果与某一字
一致,比如Wi(Bij),则将指示寄存器IR中的相应位(li)置1;若有多个字一
致,则将多位都置1;这样,可在IR寄存器中得到查找的结果。如果需要继
续查找其它内容,可将IR中的内容送寄存器R1〜Rn暂存。
上述按内容寻址中,除了比较“相等”之外,还可实现“大于”、
“大于等于”、“小于”及“小于等于”等形式的比较。
联想存储
m位
器如图2.13IRRiR„
所示,有n个
字,每一个••••••
字m位;设B"、
有比较数寄〃字《W;1/
存器CR、屏
蔽寄存器MR、••••••
指示寄存器
IR和暂存寄M,指示寄存器"一二,
屏蔽寄存器"1百存寄存器
存器R1〜Rn。MR
下面举例C;
说明联想存CR比较数寄存器
储器的使用。
图2.13联想存储器的结构
■
【例2.6】某校人事处需要统计35岁以上,50岁以下的教授,可用联
想存储器来实现,其结构如图2.14所示。
姓名年龄性别职称IRRi
黎明34男教授100
方芳41女副教授000
胡东东55男教授010
••••••••••••
宋新亮50男教授111
沙江江52女高工000
李国庆39男教授111
第二次第一次“与”结
比较比较果
MR00…011-100…011-1
0350教授
第•次比较关犍字
教授
CR00…05000-0第二次比较关键字
图2.14联想存储器应用举例
口
首先确定参加比较的内容:“年龄”和“职称”,将屏蔽寄存器MR中
的相应字段置全1,然后开始比较。
第一次比较:“年龄N35”与"职称二教授”,选中李国庆、宋新亮和
胡东东,且在IR寄存器中的相应位置1;
第二次比较:先把IR寄存器中的内容送入R,比较条件:“年龄
W50”与“职称二教授”,选中李国庆、宋新亮和黎明,且在IR寄存器中的
相应位置1。
最后将寄存器IR和七相“与”,其结果送Ft2,选中李国庆和宋新亮。
【例2.7]设有如下程序,设置一个快表,以提高转移程序执行
的速度。
L00P1:MOVDX,1000H
LOOP2:MOVCX,256H
DECCX
JNZLOOP2
DECDX
JNZLOOP1
解:设置一个如图2.15所示的存储表,使之与条件判断和目标地址
的生成电路同时工作。首先用程序计数器PC中的内容查表,即按内容访
问,取出转移目标地址。同时,进行条件判断,若条件成立,确认取出
的地址正确;否则,作废该地址,并以实际计算出的地址取代之。
由程序分析可知,采用这种方式的错误概率仅为1/1000H和1/256H。因
此,可有效地提高程序运行的速度。目前,这种技术已被广泛采用,这
种表称为“快表”。
本指令地址转移目标地址
JNZLOOPI指1令地址LOOPIJ也址
JNZL00P2指令地址LOOP2地址
图2.15快表不意图
2.2.5指令格式与优化设计
1.指令格式
指令的格式由两部分组成,即操作码和地址码。根据地址码的个数,指令
可分为无地址、单地址、二地址、三地址、四地址及多地址等格式。在表示操
作数的地址时有两种编码方式,一种是固定长度编码方式,另一种是变字长编
码方式,如图2」0所示。
在实际使用有三种:
①变字长编码方式,根据操作数改变指令字长,具有降低指令集平均指
令长度的优点;但是指令长度和执行时间不统一。多数CISC计算机采用这种编
码方式。
②固定长度编码方式,即操作码与操作数和为一体,指令字长固定,可
降低硬件电路的复杂度,有利于提高译码效率。RISC计算机多采用这种编码方
式。
③把二者结合起来的混合方式,提供一定类型的指令字长,以兼顾上述
两种优点。
举例:IBM370指令格式
在IBM370计算机中,大部分指令采用的是8位操作码,仅有少数(比如启
动,测试和暂停I/O设备等)指令的操作码可扩展为16位。其中8位操作码指令
有五种基本指令格式,如图2.16―所示。
操作码
RR型(RJOP(R)-R]
(OPC)R1R22
844
操作码
RX型R.xB(RI)OPM[(B2)+(X2)+D2]-0
(OPC)22o2
844412
操作码
RS型R3BM[(B)+D]OP及其它
(OPC)Ri2o222
844412
操作码
SI型IMKB)+DJOPI->M[(BJ+DJ
(OPC)B.□
88412
型操作码U[(B1)+DJOPM[(B2)+DZ
SS(OPC)L,L?B,D.B?D,
844412412-M幽)+DJ
图2.16IBM370计算机指令格式
其中R「RrR3分别表示源/目标操作数寄存器,BrB2表示基址寄存器,DPD2表示位移量。操作码
的高两位标志箱令的长度与格式,其余6位标志不同的指令,最多可有64条。高两位的作用如下:
00:RR格式,指令字长16位;
01:RX格式,指令字长32位;
10:RS或SI格式,指令字长32位;
11:SS格式,指令字长48位。
这里,R表示寄存器,S表示存储器,X表示变址寻址,I表示立即数。指令长度有16位、32位和48位三
种形式,其中包含一地址、二地址和三地址指令。
2.优化编码
优化编码是根据字符在报文传送中出现的频率,选用不同的编码长度。
这样,可缩短报文传送中字符的平均编码长度。--霍夫曼编码。在计算机
中,用来对指令的操作码进行编码。
(1)霍夫曼树
是将要编码的字符按出现的频率排序,每一个字符(频率)视为一个叶结
点。然后,再按以下步骤进行,频率相等的字符可以任意排列。
①每次选择频率最小的两个频率相加,构成一个新的结点,并用线
段与另外两个结点连接,如图2.16所示;
②新的结点再与其它叶结点按频率顺序排列,重复①的过程,直至
全部频率都处理完毕,最后形成一个频率为1的根结点;
③从根结点开始向下延伸,对两个分支分别用1和0(或。和1)来表示,
直至遍历完全部叶结点为止;
④从根结点开始,沿边线记录编码值,以生成每一个字符的编码。
【例2.8]设有7条指令,其操作码分别表示为%、I]、[2、4、J15、
16,使用的频率依次为0.40,0.30,0.15,0.05,0.04,0.03,0.03,用霍夫
曼树对其编码。
解:首先将I。、L、12、
4J【5、16按使用的频
率排列,然后挑选使用频
率最少的两个相加,成为
一个叶结点,并用线段与
其它两个结点连接,继续
执行上述①〜④的步骤,
其过程如图2.17所示。最
后得出每一条指令的操作
码,如表2.5所示。但是
,由图2.17可以看出,在
沿分支指定1和0时,顺序
可以改变,因此图中所示图2.17用霍夫曼树进行编码
的编码值不是唯一的。
(2)扩展霍夫曼编码
如果完全按照霍夫曼编码设置操作码,则过于凌乱。因此,一般使用
霍夫曼扩展编码,表2.5所示。这样,既保留了霍夫曼编码的优点,又不
使编码的类型(长度)过多。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上学期六年级级部工作计划范文
- 宣传部年度工作计划报告范文
- 生物教学任务工作计划范文
- 对下学期的学习计划
- 2024年某酒店个人财务工作计划范文
- 2021年销售年度计划
- 有关幼儿大班安全工作计划
- 下半年幼儿园教研工作计划
- 适用于新教材2025版高考政治一轮总复习课时规范练58部编版
- 小学-第一学期班务计划
- GB/T 3077-2015合金结构钢
- GB/T 25915.5-2010洁净室及相关受控环境第5部分:运行
- GB/T 15895-2021化学试剂1,2-二氯乙烷
- 2023年上海各区初三数学一模卷
- 苏教版四年级(上学期)科学1给动物分类教学课件
- 《应用医古文》课件
- IATF16949标准培训教材课件
- 中职生法制教育课件
- 微生物课件-3 -4真菌酵母菌
- 手术与切口分类及愈合评级1课件
- 高血压护理业务学习
评论
0/150
提交评论