计算机组成原理笔记

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机体系结构(Computer Architecture)主要研究硬件和软件功能的划分,确定硬件和软件的界面,哪部分功能由硬件系统来完成,哪部分功能由软件系统来完成。

计算机组成原理(Computer Organization)是依据计算机体系结构,在确定且分配了硬件子系统的概念结构和功能特性的基础上,设计计算机各部件的具体组成,以及它们之间的连接关系,实现机器指令级的各种功能和特性,这点上说计算机组成原理是计算机体系结构的逻辑实现。

计算机实现(Computer Implementation)是计算机组成的物理实现,包括中央处理器、主存储器、输入输出接口和设备的物理结构,所选用的半导体器件的集成度和速度,器件、模块、插件、底板的划分,电源、冷却、装配等技术,生产工艺和系统调试等各种问题。

总之,就是将完成逻辑设计的计算机组成方案转换成真实的计算机,也就是将满足设计、运行、价格等各项要求的计算机系统真正地制作并调试出来。

计算机组成原理
【考查目标】
1. 理解单处理器计算机系统中各部件的内部工作原理,组成结构以及相互连接方式,具有完整的计算机系统的整机概念.
2. 理解计算机系统层次化结构概念,熟悉硬件与软件间的界面,掌握指令集体系结构的基本知识和基本实现方法
3. 能够运用计算机组成的基本原理和基本方法,对有关计算机硬件系统中的理论和实际问题进行计算,分析,并能对一些基本部件进行简单设计.
一, 计算机系统概述
(一) 计算机发展历程
第一台电子计算机ENIAC诞生于1946年美国宾夕法尼亚大学.ENIAC用了18000电子管,1500继电器,重30吨,占地170m2,耗电140kw,每秒计算5000次加法.冯•诺依曼(VanNeumann)首次提出存储程序概念,将数据和程序一起放在存储器,使编程更加方便.50年来,虽然对冯•诺依曼机进行很多改革,但结构变化不大,仍称冯•诺依曼机.
一般把计算机的发展分为五个阶段:
发展阶段时间硬件技术速度/(次/秒)
第一代1946-1957 电子管计算机时代40 000
第二代1958-1964 晶体管计算机时代200 000
第三代1965-1971 中小规模集成电路计算机时代 1 000 000
第四代1972-1977 大规模集成电路计算机时代10 000 000
第五代1978-现在超大规模集成电路计算机时代100 000 000 ENIAC(Electronic Numerical Integrator And Computer)电子数字积分机和计算机
EDVAC(Electronic Discrete Variable Automatic Computer)电子离散变量计算机
组成原理是讲硬件结构的系统结构是讲结构设计的
摩尔定律微芯片上的集成管数目每3年翻两番.处理器的处理速度每18个月增长一倍.
每代芯片的成本大约为前一代芯片成本的两倍
新摩尔定律全球入网量每6个月翻一番.
数学家冯·诺依曼(von Neumann)在研究EDVAC机时提出了“储存程序”的概念.以此为基础的各类计算机通称为冯·诺依曼机.它有如下特点:
①计算机由运算器,控制器,存储器,输入和输出五部分组成
②指令和数据以同等的地位存放于存储器内,并可按地址寻访
③指令和数据均用二进制数表示
④指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置
⑤指令在存储器内按顺序存放
⑥机器以运算器为中心,输入输出设备与存储器间的数据传送通过运算器完成
图中各部件的功能
·运算器用来完成算术运算和逻辑运算并将的中间结
果暂存在运算器内
·存储器用来存放数据和程序
·控制器用来控制,指挥程序和数据的输入,运行以及
处理运行结果
·输入设备用来将人们熟悉的信息转换为机器识别的
信息
·输出设备将机器运算结果转为人熟悉的信息形式
运算器最少包括3个寄存器(现代计算机内部往往设有通用寄存器)和一个算术逻辑单元(ALU Arithmetic Logic Unit).其中ACC(Accumulator)为累加器,MQ(Multiplier-Quotient Register)为乘商寄存器,X为操作数寄存器,这3个寄存器在完成不同运算时,说存放的操作数类别也各不相同.
计算机的主要硬件指标
(4.a) 主机完成一条指令的过程——以取数指令为例
(4.b) 主机完成一条指令的过程——以存数指令为例
(二) 计算机系统层次结构
1. 计算机硬件的基本组成
计算机硬件主要指计算机的实体部分,通常有运算器,控制器,存储器,输入和输出五部分.
CPU是指将运算器和控制器集成到一个电路芯片中.
2. 计算机软件的分类
计算机软件按照面向对象的不同可分两类:
系统软件:用于管理整个计算机系统,合理分配系统资源,确保计算机正常高效地运行,这类软件面向系统.(包括:标准程序库,语言处理程序,OS,服务程序,数据库管理系统,网络软件)
应用软件:是面向用户根据用户的特殊要求编制的应用程序,这类软件通常实现用户的某类要求.
3. 计算机的工作过程
(1)计算机的工作过程就是执行指令的过程
指令由操作码和操作数组成:
操作码指明本指令完成的操作
操作码地址码
地址码指明本指令的操作对象
.
(3)指令的读取为了纪录程序的执行过程,需要一个记录读取指令地址的寄存器,称为指令地址寄存器,或者程序计数器.指令的读取就可以根据程序计数器所指出的指令地址来决定读取的指令,由于指令通常按照地址增加的顺序存放,故此,每次读取一条指令之后,程序计数器加一就为读取下一条指令做好准备.
(4)执行指令的过程在控制器的控制下,完成以下三个阶段任务:
1)取指令阶段按照程序计数器取出指令,程序计数器加一
2)指令译码阶段分析操作码,决定操作内容,并准备操作数
3)指令执行阶段执行操作码所指定内容
(三) 计算机性能指标
1. 吞吐量,响应时间
(1) 吞吐量:单位时间内的数据输出数量.
(2) 响应时间:从事件开始到事件结束的时间,也称执行时间.
2. CPU时钟周期,主频,CPI,CPU执行时间
(1) CPU时钟周期:机器主频的倒数,T C
(2)主频:CPU工作主时钟的频率,机器主频Rc
(3)CPI:执行一条指令所需要的平均时钟周期
(4)CPU执行时间:
T CPU=In×CPI×T C
In执行程序中指令的总数
CPI执行每条指令所需的平均时钟周期数
T C时钟周期时间的长度
3. MIPS,MFLOPS
(1)MIPS:(Million Instructions Per Second)
Te:执行该程序的总时间=指令条数/(MIPS×)
In:执行该程序的总指令数
Rc:时钟周期Tc的到数
MIPS只适合评价标量机,不适合评价向量机.标量机执行一条指令,得到一个运行结果.而向量机执行一条指令,可以得到多个运算结果.
(2) MFLOPS: (Million Floating Point Operations Per Second)
MFLOPS=Ifn/(Te×)
Ifn:程序中浮点数的运算次数
MFLOPS测量单位比较适合于衡量向量机的性能.一般而言,同一程序运行在不同的计算机上时往往会执行不同数量的指令数,但所执行的浮点数个数常常是相同的.
特点:
1.MFLOPS取决于机器和程序两方面,不能反映整体情况,只能反映浮点运算情况
2.同一机器的浮点运算具有一定的同类可比性,而非同类浮点操作仍无可比性
当前微处理器的发展重点
①进一步提高复杂度来提高处理器性能
②通过线程进程级的并发性提高处理器性能
③将存储器集成到处理器芯片来提高处理器性能
④发展嵌入式处理器
软件开发有以下几个特点
1)开发周期长
2)制作成本昂贵
3)检测软件产品质量的特殊性
计算机的展望
一、计算机具有类似人脑的一些超级智能功能
要求计算机的速度达1015/秒
二、芯片集成度的提高受以下三方面的限制
•芯片集成度受物理极限的制约
•按几何级数递增的制作成本
•芯片的功耗、散热、线延迟
计算机辅助设计CAD 计算机辅助制造CAM
计算机辅助工艺规划 Computer Aided Process Planning CAPP
计算机辅助工程 Computer Aided Engineering CAE
计算机辅助教学 Computer Assisted Instruction CAI
科学计算和数据处理
工业控制和实时控制
网络技术应用
虚拟现实
办公自动化和管理信息系统 Computer Aided Design
CAD,CAM,CIMS Computer Aided Manufacturing
多媒体技术 Computer Integrated Manufacturing System
人工智能,模式识别,文字/语音识别,语言翻译,专家系统,机器人…
二, 数据的表示和运算
(一) 数制与编码
1. 进位计数制及其相互转换 1)进位计数制
进位计数制是指按照进位制的方法表示数,不同的数制均涉及两个基本概念:基数和权. 基数:进位计数制中所拥有数字的个数.
权:每位数字的值等于数字乘以所在位数的相关常数,这个常数就是权. 任意一个R 进制数X,设整数部分为n 位,小数部分为m 位,则X 可表示为:
X =a n-1r n-1
+ a n-2r n-2
+ ┅ + a 0r 0
+ a -1r -1
+ a -2r -2
+ ┅ + a -m r -m
(X)r =
∑--=m
n i i
i
r
K 1
2)不同数制间的数据转换
(1)二,八,十六进制数转换成十进制数
利用上面讲到的公式: (N)2=∑Di •2i ,(N)8=∑Di •8i , (N)16=∑Di •16i ,进行计算.
(2)十进制数转换成二进制数
通常要对一个数的整数部分和小数部分分别进行处理,各自得出结果后再合并. ◆ 对整数部分,一般采用除2取余数法,其规则如下:
将十进制数除以2,所得余数(0或1)即为对应二进制数最低位的值.然后对上次所得商除以2,所得余数即为二进制数次低位的值,如此进行下去,直到商等于0为止,最后得的余数是所求二进制数最高位的值. ◆ 对小数部分,一般用乘2取整数法,其规则如下:
将十进制数乘以2,所得乘积的整数部分即为对应二进制小数最高位的值,然后对所余数的小数部分部分乘以2,所得乘积的整数部分为次高位的值,如此进行下去,直到乘积的小数部分为0,或结果已满足所需精度要求为止.
(3)二进制数,八进制数和十六进制数之间的转换
八进制数和十六进制数是从二进制数演变而来的: 由3位二进制数组成1位八进制数; 由4位二进制数组成1位十六进制数.
对一个兼有整数和小数部分的数以小数点为界,小数点前后的数分别分组进行处理,不足的位数用0补足. 对整数部分将0补在数的左侧,对小数部分将0补在数的右侧.这样数值不会发生差错. 2. 真值和机器数
真值:数据的数值通常以正(+)负(-)号后跟绝对值来表示,称之为“真值”.
机器数:在计算机中正负号也需要数字化,一般用0表示正号,1表示负号.把符号数字化的数成为机器数. 3. BCD 码(Binary Coded Decimal 以二进制编码的十进制码)
在计算机中采用4位二进制码对每个十进制数位进行编码.4位二进制码有16种不同的组合,从中选出10种来表示十进制数位的0~9,用0000,0001,…,1001分别表示0,1,…,9,每个数位内部满足二进制规则,而数位之间满足十进制规则,故称这种编码为“以二进制编码的十进制(binary coded decima1,简称BCD)码”.
在计算机内部实现BCD 码算术运算,要对运算结果进行修正,对加法运算的修正规则是: 如果两个一位BCD 码相加之和小于或等于(1001)2,即(9)10,不需要修正;
如相加之和大于或等于(1010)2,或者产生进位,要进行加6修正,如果有进位,要向高位进位.
4. 字符与字符串
在计算机中要对字符进行识别和处理,必须通过编码的方法,按照一定的规则将字符用一组二进制数编码表示.字符的编码方式有多种,常见的编码有ASCII码,EBCDIC码等.
1)ASCII码(American Standard Code for Information Interchange 美国信息交换标准码)
ASCII码用7位二进制表示一个字符,总共128个字符元素,包括10个十进制数字(0-9),52个英文字母(A-Z 和a-z),34专用符号和32控制符号.
2)EBCDIC码为Extended Binary Coded Decimal Interchange Code的简称,它采用8位来表示一个字符.
3)字符串的存放
向量存储法:字符串存储时,字符串中的所有元素在物理上是邻接的.
串表存储法:字符串的每个字符代码后面设置一个链接字,用于指出下一个字符的存储单元的地址.
5. 校验码Check Digit
数据校验码是一种常用的带有发现某些错误或自动改错能力的数据编码方法.其实现原理,是加进一些冗余码,使合法数据编码出现某些错误时,就成为非法编码.
这样,可以通过检测编码的合法性来达到发现错误的目的.合理地安排非法编码数量和编码规则,可以提高发现错误的能力,或达到自动改正错误的目的.
码距:码距根据任意两个合法码之间至少有几个二进制位不相同而确定的,仅有一位不同,称其码距为1. 1)奇偶校验码(Parity Bit)WIKI
(开销最小,能发现数据代码中一位出错情况的编码,常用于存储器读写检查或ASCII字符或其它类型的信息传输的检查)P216
它的实现原理,是使码距由1增加到2.若编码中有1位二进制数出错了,即由1变成0,或者由0变成1.这样出错的编码就成为非法编码,就可以知道出现了错误.在原有的编码之上再增加一位校验位,原编码n位,形成新的编码为n+1 位.增加的方法有2种:
奇校验:增加位的0或1要保证整个编码中1的个数为奇数个.
偶校验:增加位的0或1要保证整个编码中1的个数为偶数个.
2)海明校验码(Hamming Code)P100
实现原理,在数据中加入几个校验位,并把数据的每一个二进制位分配在几个奇偶校验组中.当某一位出错就会引起有关的几个校验组的值发生变化,这不但可以发现出错,还能指出是哪一位出错,为自动纠错提供了依据.
假设校验位的个数为r,则它能表示2r个信息,用其中的一个信息指出“没有错误”,其余2r-1个信息指出错误发生在哪一位.然而错误也可能发生在校验位,因此只有
k=2r-1-r个信息能用于纠正被传送数据的位数,也就是说要满足关系:
2r k+r+1
3)CRC校验码(Cyclic Redundancy Check 循环冗余校验)P144
CRC校验码一般是指k位信息之后拼接r位校验码.关键问题是如何从k位信息方便地得到r位校验码,以如何从位k+r信息码判断是否出错.
将带编码的k位有效信息位组表达为多项式:
式Ci中为0或1.
若将信息位左移r位,则可表示为多项式M(x).xr.这样就可以空出r位,以便拼接r位校验位.
CRC码是用多项式M(x).xr除以生成多项式G(x)所得的余数作为校验码的.为了得到r位余数,G(x)必须是r+1位.
设所得的余数表达式为R(x),商为Q(x).将余数拼接在信息位组左移r位空出的r位上,就构成了CRC码,这个码的可用多项式表达为:
M(x)·xr+R(x)=[Q(x)·G(x)+R(x)]+R(x)
=[Q(x)·G(x)]+[R(x)+R(x)]
=Q(x)·G(x)
因此,所得CRC码可被G(x)表示的数码除尽.
将收到的CRC码用约定的生成多项式G(x)去除,如果无错,余数应为0,有某一位出错,余数不为0.
(二) 定点数的表示和运算
1. 定点数的表示
1)无符号数的表示
无符号数就是指正整数,机器字长的全部位数均用来表示数值的大小,相当于数的绝对值.
对于字长为n+1位的无符号数的表示范围为: 0-1
2)带符号数的表示 (真值范围-n-1n)
带符号数是指在计算机中将数的符号数码化.在计算机中,一般规定二进制的最高位为符号位,最高位为“0”表示该数为正,为“1”表示该数为负.这种在机器中使用符号位也被数码化的数称为机器数.
根据符号位和数值位的编码方法不同,机器数分为原码,补码和反码.
(1)原码表示法
机器数的最高位为符号位,0表示正数,1表示负数,数值跟随其后,并以绝对值形式给出.这是与真值最接近的一种表示形式.
原码的定义:
(2)补码表示法
机器数的最高位为符号位,0表示正数,1表示负数,其定义如下:
(3)反码表示法
机器数的最高位为符号,0表示正数,1表示负数.反码的定义:
原码补码反码

数(mod )
(mod()) 小
数(mod 2) (mod(2-))
0 =0.0000=1.0000 =0.0000 =0.0000=1.1111
负数原码求反+1 负数每位求反
移码移码表示中零也是唯一的
真值的移码和补码仅差一个符号位.若将补码的符号位由0改为1或从1改为0即可得到真值的移码
乘法运算可用移码和加法来实现,两个n位数相乘,总共要进行n次加法运算和n次移位运算
·三种机器数的最高位均为符号位.符号位和数值位之间可用“.”(对于小数)或“,”(对于整数)隔开
·当真值为正时,原码,补码和反码的表示形式均相同,即符号位用“0”表示,数值部分与真值部分相同
·当真值为负时,原码,补码和反码的表示形式不同,其它符号位都用“1”表示,而数值部分有这样的关系,即补码是原码的“求反加1”,反码是原码的“每位求反”.
1)定点数的位移运算
左移,绝对值扩大;右移,绝对值缩小.
算术移位规则
码制添补代码
正数0
负数原0

右移添0
左移添1 反 1
算术移位:带符号数移位;
逻辑移位:无符号数移位;
2)原码定点数的加/减运算;
对原码表示的两个操作数进行加减运算时,计算机的实际操作是加还是减,不仅取决指令中的操作码,还取决于两个操作数的符号.而且运算结果的符号判断也较复杂.
例如,加法指令指示做(+A)+(-B)由于一操作数为负,实际操作是做减法(+A)-(+B),结果符号与绝对值大的符号相同.同理,在减法指令中指示做(+A)-(-B)实际操作做加法(+A)+(+B),结果与被减数符号相同.由于原码加减法比较繁琐,相应地需要由复杂的硬件逻辑才能实现,因此在计算机中很少被采用.
3)补码定点数的加/减运算;
(1) 加法
整数 [A]补 + [B]补= [A+B]补(mod 2n+1)
小数 [A]补 + [B]补= [A+B]补(mod 2)
(2) 减法
整数 [A]补 - [B]补= [A+(-B)]补=[A]补+ [-B]补(mod 2n+1)
小数 [A]补 - [B]补= [A+(-B)]补=[A]补 + [-B]补(mod 2)
无需符号判定,连同符号位一起相加,符号位产生的进位自然丢掉
4)定点数的乘/除运算
(1)一位乘法
<1>原码定点一位乘法
两个原码数相乘,其乘积的符号为相乘两数的异或值,数值两数绝对值之积.
设 [X]原=X0 X1 X2 …Xn
[Y]原=Y0 Y1 Y2 …Yn
[X·Y]原=[X]原·[Y]原= (X0⊕Y0)∣(X1 X2 …Xn)·(Y1 Y2 …Yn) 符号∣表示把符号位和数值邻接起来.
原码两位乘和原码一位乘比较
原码一位乘原码两位乘
符号位
操作数绝对值绝对值的补码
移位逻辑右移算术右移
移位次数n
最多加法次数n
<2>定点补码一位乘法
有的机器为方便加减法运算,数据以补码形式存放.乘法直接用补码进行,减少转换次数.具体规则如下: [X·Y]补=[X]补(-Y0 + 0. Y1 Y2… Yn )
<3>布斯法
“布斯公式”: 在乘数Yn后添加Yn+1=0.按照Yn+1 ,Yn相邻两位的三种情况,其运算规则如下:
(1) Yn+1 ,Yn =0( Yn+1 Yn =00或11),部分积加0,右移1位;
(2) Yn+1 ,Yn =1( Yn+1 Yn =10) ,部分积加[X]补,右移1位;
(3) Yn+1 ,Yn =-1( Yn+1 Yn =01) ,部分积加[-X]补,右移1位最后一步不移位.
(2)两位乘法
Yi-1 Yi C 操作
0 0 0 0 0 1 0 1 0
0 1 1
1 0 0 1 0 1 1 1 0 1 1 1 +0, 右移2位 0→C +X, 右移2位 0→C +X, 右移2位 0→C +2X, 右移2位 0→C +2X, 右移2位 0→C -X, 右移2位 1→C -X, 右移2位 1→C +0, 右移2位 1→C
<2>补码两位乘法
Yn-i-1 Yn-i Yn-i+1 [Pi+2]

0 0 0 0 0 1 0 1 0
0 1 1
1 0 0 1 0 1 1 1 0 1 1 1 +0, 右移2位 +[X]补, 右移2位 +[X]补, 右移2位 +2[X]补, 右移2位 -2[X]补, 右移2位 -[X]补, 右移2位 -[X]补, 右移2位 +0, 右移2位
当乘数由1位符号位和以n(奇数)位数据位组成时,求部分积的次数为(1+n)/2,而且最后一次的右移操作只右移一位.
若数值位本身为偶数n,可采用下述两种方法之一:
①可在乘数的最后一位补一个0,乘数的数据位就成为奇数,而且其值不变,求部分积的次数为1+(n+l)/2,即n/2+1,最后一次右移操作也只右移一位.
②乘数增加一位符号位,使总位数仍为偶数,此时求部分积的次数为n/2+1,而且最后一次不再执行右移操作.
(3)补码除法
笔算除法和机器除法的比较
笔算除法机器除法
商符单独处理符号位异或形成心算上商
余数不动低位补“0”减右移一位的除数余数左移一位低位补“0”减除数
2 倍字长加法器 1 倍字长加法器
上商位置不固定在寄存器最末位上商
1>恢复余数法
被除数(余数)减去除数,如果为0或者为正值时,上商为1,不恢复余数;如果结果为负,上商为0,再将除数加到余数中,恢复余数.余数左移1位.
2>加减交替法
当余数为正时,商上1,求下一位商的办法,余数左移一位,再减去除数;当余数为负时,商上0,求下一位商的办法,余数左移一位,再加上除数.
<2>定点补码一位除法(加减交替法)
1〉如果被除数与除数同号,用被除数减去除数;若两数异号,被除数加上除数.如果所得余数与除数同号商上1,否则,商上0,该商为结果的符号位.
2〉求商的数值部分.如果上次商上1,将除数左移一位后减去除数;如果上次商上0,将余数左移一位后加除数.然后判断本次操作后的余数,如果余数与除数同号商上1,如果余数与除数异号商上0.如此重复执行n-1次(设数值部分n位).
3〉商的最后一位一般采用恒置1的办法,并省略了最低+1的操作.此时最大的误差为2-n.
5)溢出概念和判别方法
当运算结果超出机器数所能表示的范围时,称为溢出.显然,两个异号数相加或两个同号数相减,其结果是不会溢出的.仅当两个同号数相加或者两个异号数相减时,才有可能发溢出的情况,一旦溢出,运算结果就不正确了,因此必须将溢出的情况检查出来.判别方法有三种:
1〉当符号相同的两数相加时,如果结果的符号与加数(或被加数)不相同,则为溢出.
2〉当任意符号两数相加时,如果C=Cf,运算结果正确,其中C为数值最高位的进位,Cf为符号位的进位.如果C≠Cf ,则为溢出,所以溢出条件=C⊕Cf .
3〉采用双符号f s2f s1.正数的双符号位为00,负数的双符号位为11.符号位参与运算,当结果的两个符号位甲和乙不相同时,为溢出.所以溢出条件= fs2⊕fs1 ,或者溢出条件= fs2fs1 + fs2fs1
(三) 浮点数的表示和运算
1. 浮点数的表示
1)浮点数的表示范围;
浮点数是指小数点位置可浮动的数据,通常以下式表示:
N=M×R E
其中,N为浮点数,M(Mantissa)为尾数(可正可负),E(Exponent)为阶码(可正可负),R(Radix)称为“阶的基数(底)”,而且R为一常数,一般为2,8或16.在一台计算机中,所有数据的R都是相同的,于是不需要在每个数据中表示出来.因此,浮点数的机内表示一般采用以下形式:
浮点数的机内表示一般采用以下形式:
Ms E M
1位 n+1位 m位
Ms是尾数的符号位,设置在最高位上.
E为阶码(移码),有n+1位,一般为整数,其中有一位符号位,设置在E的最高位上,用来表正阶或负阶.
M为尾数(原码),有m位,由Ms和M组成一个定点小数.Ms=0,表示正号,Ms=1,表示负.为了保证数据精度属数通常用规格化形式表示:当R=2,且尾数值不为0时,其绝对值大于或等于(0.5)10.对非规格化浮点数,通过将尾数左移或右移,并修改阶码值使之满足规格化要求.
浮点数的表示范围以通式N=M×R E设浮点数阶码的数值位取m位,尾数的数值位取n位
2)IEEE754标准(Institute of Electrical and Electronics Engineers美国电气和电子工程协会)
S 阶码(含阶符) 尾数
数符小数点位置
根据IEEE 754国际标准,常用的浮点数有三种格式:
符号位S阶码尾数总位数
短实数 1 8 23 32
长实数 1 11 52 64
临时实数 1 15 64 80
单精度格式32位,阶码为8位,尾数为23位.另有一位符号位S,处在最高位.
由于IEEE754标准约定在小数点左部有一位隐含位,从而实际有效位数为24位.这样使得尾数的有效值变为1.M .
例如,最小为x1.0…0,,最大为x1.1…1.规格化表示.故小数点左边的位横为1,可省去.
阶码部分采用移码表示,移码值127,1到254经移码为-126到+127.
S(1位) E(8位) M(23位) N(共32位)
符号位0 0 0
符号位0 不等于0 (-1)S·2-126·(0.M) 为非规格化数
符号位1到254之间- (-1)S·2E-127·(1.M) 为规格化数
符号位255 不等于0 NaN(非数值)
符号位255 0 无穷大
0 有了精确的表示,无穷大也明确表示.对于绝对值较小的数,可以采用非规格化数表示,减少下溢精度损失.非规格化数的隐含位是0,不是1.
2. 浮点数的加/减运算
加减法执行下述五步完成运算:
1)“对阶”操作比较两浮点数阶码的大小,求出其差ΔE,保留其大值E,E=max(Ex, Ey).当ΔE≠0时,将
阶码小的尾数右移ΔE位,并将其阶码加上ΔE,使两数的阶码值相等.
2)尾数加减运算执行对阶之后,两尾数进行加减操作.
3)规格化操作规格化的目的是使得尾数部分的绝对值尽可能以最大值的形式出现.
4)舍入在执行右规或者对阶时,尾数的低位会被移掉,使数值的精度受到影响,常用“0”舍“1”
入法.当移掉的部分最高位为1时,在尾数的末尾加1,如果加1后又使得尾数溢出,则
要再进行一次右规.
5)检查阶码是否溢出阶码溢出表示浮点数溢出.在规格化和舍入时都可能发生溢出,若阶码正常,加/减运算正
常结束.若阶码下溢,则设置机器运算结果为机器零,若上溢,则设置溢出标志.
定点数和浮点数可从如下几个方面进行比较
①当浮点机和定点机中的位数相同时,浮点数的表示范围比定点数大得多
②当浮点数位规格化数时,其相对绝对远比定点数高
③浮点数运算要分阶码部分和尾数部分,而且运算结果都要求规格化,故浮点运算步骤比定点运算的步骤多,运
算速度比定点运算的低,运算线路比定点运算的复杂
④在溢出的判断方法上,浮点数是对规格化的阶码进行判断,而定点数是对数值本身进行判断
总之,浮点数在数的表示范围,数的精度,溢出处理和程序编程方面(不取比例因子)均优于定点数.但在运算规则即硬件成本方面又不如定点数。

相关文档
最新文档