1、12计算机组成原理主讲:刘子良3 参参 考考 书书 目目 计算机组成原理教程 科学出版社,1988年。白中英,韩兆轩计算机组成与结构 清华大学出版社,1990年。王爱英计算机组成原理4计算机组成原理课课 程程 简简 介介 计算机组成原理是计算机科学与工程系所有专业的一门核心课程,它在先导课和后续课之间起着承上启下的和继往开来的作用。计算机组成原理教学具有知识面广、内容多、难度大、更新快的特点。本课程讲述计算机组成与结构方面的知识,包括:计算机系统概论、运算方法、运算器、存储系统、指令系统、处理器、系统总线、外围设备、输入输出系统。5计算机组成原理 主讲:刘子良第一章 概论 1.1 冯诺依曼体制
2、1.ENIAC概况 1)数据表示十进制 2)工作存储器只有20个单元,用于存放数据 3)编程先要人工对面板上6000多个电子开关进行机械定位,然后都转插线插头,插入与拨出方式来编制程序 4)ENIAC共用18000多个电子管,6000多个继电器,耗电140KW,占地170平米,重30吨,运算速度5000次/秒。ENIAC可靠运行时间大概不超过20分钟。6计算机组成原理 主讲:刘子良第一章 概论 1.1 冯诺依曼体制2.冯诺依曼体制 1)引进存储程序概念 2)计算机以运算器为核心的集中式控制 3)指令由操作码和地址码两部分组成,指令在计算机中最顺序执行的,并受PC的统一控制 4)提出计算机系统应
3、由:运算器、控制器、存储器、输入设备和输出设备五大部分组成。这些理论奠定了现代计算机的基本思想,在到目前为止,大多数计算机仍沿用这一体制,人们称其为冯诺依曼体制。7计算机组成原理 主讲:刘子良第一章 概论 1.2 计算机的基本组成 人们常提到的冯诺依曼机与原始的以运算器为中心的冯诺依曼机在结构上有很大的改进。现在已转向以存储器为中心的计算机组成方式。如图1.1所示。图1.1 计算机基本组成框图运算器存储器控制器数据结果地址指令输入设备输出设备反馈信息操作命令控制信号请求信号控制台控制信号请求信号8计算机组成原理 主讲:刘子良第一章 概论 1.2 计算机的基本组成从图1.1中我们可以看出,计算机
4、一般由以下几部分组成:输入设备、存储器、运算器、控制器、输出设备五大部分运算器与控制器统称为中央处理机CPU习惯将输入设备、输出设备统称为I/O设备输入设备输入设备 存储器存储器 运算器运算器 控制器控制器 输出设备输出设备I/O 设备CPU9计算机组成原理 主讲:刘子良第一章 概论 1.2 计算机的基本组成1.2.1 运算器基本结构 功能:完成算术运算和逻辑运算的装置 设置考虑:任意算术运算(加+、减-、乘*、除/)都可以通过相加和移位来解决。举证:这样一来,运算器的基本结构就确定下来,如图1.2所示。10计算机组成原理 主讲:刘子良第一章 概论 1.2 计算机的基本组成 运算器由:加法器、
5、移位门、寄存器组、输入选择门和数据总线组成。如图1.2所示。图1.2 运算器结构框图移位门加法器选择门A选择门B来自数据总线通用寄存器组 数据总线11计算机组成原理 主讲:刘子良第一章 概论 1.2 计算机的基本组成1.2.2 存储器的基本结构 功能:存放程序和数据装置,并满足计算机在执行过程中能够随机访问这些程序和数据。设置考虑(1):存 取 数据 一个一个地 程序 一条一条地 如何解决?取出参与操作设置一个存储体,并将存储体分成若干个单元。设置一个存储体,并将存储体分成若干个单元。12计算机组成原理 主讲:刘子良第一章 概论 1.2 计算机的基本组成设置考虑(2):访问按地址进行将第个单元
6、赋予编码,表征该单元地址放于何处?设地址寄存器MARMemory Address Register在地址寄存器和存储体之间是否加地址译码器呢?取决于地址给出方式给出方式直接给出编码给出-加地址译码器ADAddress Decode存(写入)存(写入)取(读出)取(读出)13计算机组成原理 主讲:刘子良第一章 概论 1.2 计算机的基本组成设置考虑(2)续:存、取存在两个问题。数据存放设置数据寄存器的MBRMemory Buffer Register区分加读写控制线路(R/W)控制于是,存储器的基本结构确定下来,如图1.3所示。14计算机组成原理 主讲:刘子良第一章 概论 1.2 计算机的基本组
7、成图1.3 存储器基本结构框图地址码地址寄存器地址译码器存储体 0号单元 1号单元4094 号 单 元4095 号 单 元代码缓冲寄存器数据或指令读令写令15计算机组成原理 主讲:刘子良第一章 概论 1.2 计算机的基本组成1.2.3 控制器的基本结构功能:全机指挥机构,执行方式有如下三种,按规定的操作去执行 自动地去执行 有秩序地去执行 下面,我们具体看一下各种执行方式。16计算机组成原理 主讲:刘子良第一章 概论 1.2 计算机的基本组成按规定的操作去执行在指令中就指令执行过程而言取出指令存放?设指令寄存器IRInstruction Register分析指令及译码过程 设置操作码译码器OD
8、C执行指令17计算机组成原理 主讲:刘子良第一章 概论 1.2 计算机的基本组成自动地执行设置程序计数器PCProgram Counter顺序PC存放程序首址,执行一条后,PC自动加1转移MARPC18计算机组成原理 主讲:刘子良第一章 概论 1.2 计算机的基本组成有秩序去执行指前一个操作结束,进行下一个操作如何判断?通过定时系统 设置相应的时序线路控制器的结构如图1.4所示19计算机组成原理 主讲:刘子良第一章 概论 1.2 计算机的基本组成图1.4 控制器结构图20计算机组成原理 主讲:刘子良第一章 概论 1.2 计算机的基本组成1.2.4 输入输出设备 输入/输出设备种类繁多,很难用一
9、种结构形式加以描述,通常可以将其描述为一般结构如图1.5所示。图1.5 外部设备的一般描述框图输入设备输入设备接口接口接口接口输出设备输出设备21计算机组成原理 主讲:刘子良第一章 概论 1.2 计算机的基本组成输入设备把程序和数据转化为计算机能识别和处理的数据形式的设备,输入的程序和数据存入计算机存储器中。输出设备是将计算机中的二进制信算转化为用户所需要的数据格式的设备。它将计算机中的信息(计算结果等)以十进制或字符、图形、表格等形式显示或打印出来。以上,我们简要的介绍了计算机各主要部件的功能,以及其基本构成在设置上的考虑,于是,留下的将是如何从硬件的角度,将计算机各部件连成一个计算机系统的
10、问题了。22计算机组成原理 主讲:刘子良第一章 概论 1.3 计算机系统的硬件组成 如何将计算机各个组成部件连接成为一个有机整体。为此,人们提出一种重要的组成系统技术总线总线。一、总线1.总线的概念 所谓总线,就是连接多个部件的一组共享信息传送线路,它能够分时接收和发送各部件信息。2.典型做法发送端:通过三态门将信息分时送入总线接收端:靠定时打入脉冲接收信息23计算机组成原理 主讲:刘子良第一章 概论 1.3 计算机系统的硬件组成3.实现举例:图1.6 计算机总线实现举例框图ABCCPACPBCPCABCSS控A控B控C24计算机组成原理 主讲:刘子良第一章 概论 1.3 计算机系统的硬件组成
11、二、小型机、微型机的典型结构1.以CPU为中心的双总线结构 如图1.7所示。图1.7 面向CPU的双总线结构CPUMEMI/O接口I/O接口I/O接口磁盘输入机打印机25计算机组成原理 主讲:刘子良第一章 概论 1.3 计算机系统的硬件组成以CPU为中心的双总线结构(续)(1)结构特点:两簇总线 1)CPU与内存之间交换信息的通路,即存储总线M-BUS。2)CPU与I/O设备之间交换信息的通路,即输入/输出总线I/O-BUS。(2)分析与结论 1)根据结构特点画关系图如图1.8所示。显而易见,内存与I/O设备之间交换信息都要通过CPU。因此,称其为面向CPU的双总线结构。MEM I/OCPU图
12、1.8 面向CPU的双总线结构关系图26计算机组成原理 主讲:刘子良第一章 概论 1.3 计算机系统的硬件组成以CPU为中心的双总线结构(续)2)既然内存与I/O设备要通过CPU交换信息,那么就必要要受到CPU的直接控制。这种结构的优点是同一时间内只能进行一种传送,因此控制线路简单,时间关系易于处理,可以采用同步控制方式。缺点是由于I/O设备与存储器交换信息要有CPU进行干预,因而当I/O设备工作频繁时要占用大量的CPU时间,从而降低了CPU的工作效率。因此,这种结构为多数低档小型机所采用。27计算机组成原理 主讲:刘子良第一章 概论 1.3 计算机系统的硬件组成2.单总线结构 单总线结构如图
13、1.9所示。CPUMEMI/O接口显示器I/O接口输入机I/O接口显示器图1.9 面向CPU的单总线结构关系图28计算机组成原理 主讲:刘子良第一章 概论 1.3 计算机系统的硬件组成以CPU为中心的单总线结构(续)(1)结构特点 靠一簇总线(包括地址总线、数据总线和各种控制线)来实现CPU、存储器、I/O设备这间的信息交换。(2)分析与结论 1)从单总线的传送方式可以看出,中央处理机不再是计算机的中心,CPU与其它设备一样,只不过是单总线上的一个子系统。2)采用单总线结构后系统功能增强。因为采用单总线传送方式允许I/O设备直接与存储器交换信息,除分配总线使用权时还要与CPU打交道外,基本上不
14、影响CPU,同时,外部设备寄存器和内存统一编码,这样中央处理机可以象访问内存一样访问外部设备。29计算机组成原理 主讲:刘子良第一章 概论 1.3 计算机系统的硬件组成以CPU为中心的单总线结构(续)(3)存在问题 1)单总线的工作不允许有两个主设备同时使用总线。因此,当I/O设备控制总线使用权时,CPU(它对总线使用的优先级别低于I/O设备)不能从主存中取出数据,因而降低了CPU的处理速度。2)由于所有设备都连在一簇总线上,总线负载很重,随着外设与中央处理机之间交换信息量增大,可使系统的吞吐量呈饱和状态,甚至无法胜任,从而使系统性能下降。3)单总线常采用异步互销应答方式,因此,控制逻辑比较复
15、杂。细节问题将在I/O控制一章作详细讨论。30计算机组成原理 主讲:刘子良第一章 概论 1.3 计算机系统的硬件组成3.面向存储器的双总线结构 双总线结构如图1.10所示。CPUMEMCACHEI/O接口磁盘I/O接口光电输入机I/O接口宽行打印机图1.10 面向存储器的双总线结构关系图31计算机组成原理 主讲:刘子良第一章 概论 1.3 计算机系统的硬件组成面向存储器的双总线结构(续)(1)结构特点 在内存上开了两个口子,一个通过高速缓冲存储器Cache(它存有存储器部分信息的副本)与中央处理机相连,专供它与CPU交换信息;另一个口子与原来的单总线相通,实现内存与其他设备的信息交换。(2)分
16、析与结论 1)依据结构特点来关系图1.11所示。CPU I/O DMEM图1.11 面向存储器的双总线结构关系图32计算机组成原理 主讲:刘子良第一章 概论 1.3 计算机系统的硬件组成面向存储器的双总线结构(续)显见,在这种结构中,存储器成为计算机的中心,所以把这种结构称为面向存储器的双总线结构。2)这种结构不是对单总线结构的否定,而是对它很好的补充。原因有二:第一,CPU通过专用总线与主存交换信息,不仅提高了处理机的速度,而且减轻了系统总线的负担,防止饱和。第二,主存与I/O设备交换信息,不必经过CPU,因此又保持了单总线的主要优点系统灵活性。3)系统程序日益庞大,信息存储成为构成系统的一
17、个核心问题,整个系统由早期以CPU为中心发展为以存储系统为中心。因此,这种双总线结构被广泛采用。33计算机组成原理 主讲:刘子良第一章 概论 1.3 计算机系统的硬件组成4.大中型计算机的典型结构 至于大、中型计算机,由于软件资源越来越丰富,存储系统己经成为计算机系统硬件组成的核心部件。同样,外部设备的增多,也使得输入/输出问题变得十分突出。为此,又提出一项组成系统的技术通道。图1.12给出了大、中计算机的代表性结构。34计算机组成原理 主讲:刘子良第一章 概论 1.3 计算机系统的硬件组成主存储器中央处理机通道A通道BI/O控制器I/O设备I/O控制器I/O设备I/O设备I/O控制器I/O设
18、备I/O控制器I/O设备I/O控制器I/O设备I/O设备单设备控制单元多设备控制单元图1.11 大型计算机系统典型结构框图35计算机组成原理 主讲:刘子良第二章 运算方法与运算器 运算方法:指算术(四则)运算和逻辑运算,在运算器的实现方法,而实现这两种运算的硬设备就是算术逻辑部件ALU(Arithmetic and Logic Unit),或称运算器。由于逻辑运算及实现经较简单,所以本章主要讨论计算机中算术四则运算以及运算器的逻辑结构。36计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述2.1.1 为什么要进行运算方法的研究 50年代初,人们对运算方法理论研究给予了极大的注意
19、,取得了不少至今还在应用的成果,那么为什么要开展对运算方法的研究呢,原因有:1)将一个实际数,用机器数(原码、补码、反码)等表示,产生机器本身特有的运算规律。2)计算机特定的运算方式定点运算,浮点运算。3)早期冯诺依曼型运算器只设加法器和寄存器。4)采用什么样的算法与运算器的结构密切相关,这两者的设计是互相影响的。综上考虑,从而开展了对运算方法的研究。37计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述2.1.2 一个实际数机内表示所面临的问题 通常,我们将一个数(连同符号)在机器中的数值化表示为机器数;而把原来的数值称为机器数的真值。一个实际数(如 )通常由数符、数码和小数
20、点三部分组成。因此,将一个实际数机内表示要解决的三个问题:75.838计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述一个实际数机内表示所面临的问题(续)1.符号的处理 通常符号处理有两种方法:一种是舍弃符号,采用无符号数表示;另一种是采用符号,并对符号加以处理;那么如何处理符号呢?途径只有一条,即符号数码化。0表示正,1表示负。这种表示源于定义。以原码表示为例:39计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述一个实际数机内表示所面临的问题之符号的处理(续)(1)X=+0.1011 X=+0.1011 符号数码化表示 X原=0.1011 从定义 X原=X
21、 1X=0 1-X 0=X-1 因为:1X=0 所以:X原=X=0.101140计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述一个实际数机内表示所面临的问题之符号的处理(续)(2)X=-0.1011 X=-0.1011 符号数码化表示 X原=1.1011 从定义 因为:0=X-1 所以:X原=1-X =1-(-0.1011)=1.101141计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述一个实际数机内表示所面临的问题之符号的处理(续)2.数码处理 (1)采用二进制数表示,如 (255)10=(11111111)2 优点:计算机中,数码是由电平的高低来表示
22、的,通常高电平代表“1”,低电平代表“0”,所以采用二进制方便,易实现。存在问题:二进制表示数码的效率太低,书写冗长。42计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述一个实际数机内表示所面临的问题之数码处理(续)(2)引进组合二进制数八、十六进制数 具体方法是:从最低有效位(LSD)开始,三位一划分组成八进制数;四位一划分组成十六进制数。如:110101111001 110101111001 6571Q 110101111001 D79H 这种“引进”,主要是为了书写方便而己,机器内表示并不区别。43计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述一个实
23、际数机内表示所面临的问题之数码处理(续)(3)BCD码 需注意:a.如果计算机以二进制进行运算和处理时,只要在输入输出处理机进行二/十进制转换即可。b.在商业统计中,仍产生二/十进制转换方案存在两个问题:第一转换时间就要占实际运算时间很大比例;第二,十进制的0.1,无法用二进制表示,且十进制数0.1+0.1=0.2,在二进制中无法得到确切的数值,这里有一个小误差。因此,商业计算机没有专门用于十进制计算电路,这时的十进制数一般采用BCD码。44计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述一个实际数机内表示所面临的问题之数码处理(续)十进制 ASCII码 BCD码 二进制数
24、十六进制数 000110000000000000 100110001000100011 90011100110011001910 100001010A 1111 F1000010由上式可见:A 由于ASCII码与BCD码低四位相同,转换方便。B BCD码中,不采用其它6个二进制数(1010-1111),需校正。45计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述一个实际数机内表示所面临的问题(续)3.小数点处理 可否数码化?如10110011,你能鉴别哪一位数码是表示小数点吗?显示不行,它无法与数位相区别。一般地,任意一个二进制数N都可以表示成:N=2E*(ms,m1,m2,
25、mn)其中:E叫做阶码,ms、m1、m2、m3、mn叫做原数,Ms为尾数符号。E代表小数点,它可分三种情况讨论。46计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述一个实际数机内表示所面临的问题之小数点处理(续)(1)E=0时,参与运算的数是纯小数,记作ms,m1,m2,m3,mn,为定点小数格式,如下所示。设机器字长有n+1位,则:原码定点小数表示范围为:-(1-2-n)-(1-2-n)补码定点小数表示范围为:-1-(1-2-n)X0 X1 X2 Xn数值部分(尾数)符号位小数点位置47计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述一个实际数机内表示所面
26、临的问题之小数点处理(续)(2)E=n时,参与运算的数是纯整数,记作ms,m1,m2,mn,为定点整数格式,如下所示。原码定点整数的表示范围为-(2n-1)-(2n-1)补码定点整数的表示范围为-2n-(2n-1)X最小正数=1X0 X1 X2 Xn数值部分(尾数)符号位小数点位置48计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述一个实际数机内表示所面临的问题之小数点处理(续)(3)E=m,且nm0,参与运算的数是浮点数,此时:N=M*rE 式中:r为浮点数阶码的底,与尾数的基数相同,通常r=2;E和M都是带符号的定点数,E叫做阶码(exponent),M叫做尾数(mant
27、issa)。在大多数计算机中,尾数为纯小数,常用原码或补码表示;阶码为定点整数,常用移码或补码表示。49计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述一个实际数机内表示所面临的问题(续)浮点数的一般格式如图2.1所示。浮点数的底是隐含的,在整个机器数中不出现。阶码的符号位为es,阶码的大小反映了在数N中小数点的实际位置;尾数的符号位为ms,它也是整个浮点数的符号位,表示了该浮点数的正负。es e ms m1位 k位 1位 n位 阶码E 尾数M图2.1 浮点数的一般格式 50计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述一个实际数机内表示所面临的问题(续)
28、浮点数的表示范围主要由阶码决定,有效数字的精度主要由尾数决定,下面分别来讨论这两个问题。1.浮点数的表示范围 设某浮点数的格式如图2.1所示,k和n分别表示阶码和尾数的位数(不包括符号位),尾数和阶码均用补码表示。当es=0,ms=0,阶码和尾数的数值位各位全为1(即阶码和尾数都为最大正数)时,该浮点数为最大正数:X最大正数=(1-2-n)*22 -1K51计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述一个实际数机内表示所面临的问题之浮点数的表示范围(续)当es=1,ms=0,尾数的最低位mn=1,其余各位为0(即阶码为绝对值最大的负数,尾数为最小正数)时,该浮点数为最小正
29、数:X最小正数=2-n*2-2 当es=0,阶码的数值位全为1;ms=1,尾数的数值全为0(即阶码为最大正数,尾数为绝对值最大的负数)时,该浮点数为绝对值最大负数:X绝对值最大的负数=-1*22-1KK52计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述K一个实际数机内表示所面临的问题(续)2.规格化浮点数 为了提高运算的精度,须要充分地利用尾数的有效数位,通常采取浮点数规格化形式,即规定尾数的最高数位必须是一个有效值。一个浮点数的表示形式并不是唯一的。例如:二进制数0.0001101可以表示为0.001101*2-1、0.01101*2-2、0.1101*2-3而其中只有0
30、.1101*2-3是规格化数,这就是如同十进制实数中的科学标识法一样。对于r进制的规格化浮点数的尾数M的绝对值应在下列范围内:1/r=|M|1,如果r=2,则有:1/2=|M|1。53计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述一个实际数机内表示所面临的问题(续)浮点数典型值见下表:浮点数代码真值阶码尾数最大正数0110.111122 1*(1-2-n)绝对值最大负数0111.000022 1*(-1)最小正数1000.00012-2*2-n规格化的最小正数1000.10002-2*2-1绝对值最小负数1001.11112-2*-2-n规格化的绝对值最小负数1001.01
31、112-2*(-2-1-2-n)KKKKKK54计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述2.1.3 负数如何处理 1.符号绝对值表示(sign-absolute)用二进制的最高位(最左边位)用来表示符号,例如0表示正数,1表示负数,而其余各位则用于表示该数的绝对值的大小。这种数据表示直观,但在机器中加、减运算不能直接采用它。例如:0.1000+(-0.1011)=-0.0011 若采用原码运算,设机器字长n=5位,其中一个符号位。则 0.1000 +1.1011 0.0011 55计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述负数如何处理之符号绝对
32、值表示(续)可见,显示的结果是正数。这种表示方法比较直观,缺点是设计硬件电路时,需要对最高位和其它位分别处理。另外,这种表示方法有两个0,+0与-0,同时存在。56计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述负数如何处理之符号(续)2.补码表示(twos complement)法 (1)编码方法:我们用四位二进制数来说明。如果考虑到正数和负数个数一样,则可将十六种组合一分为二,一半是正数,一半表示负数(我们暂时把0归为正数一类,显然不太严格)。0000 0 1000 -8 0001 1 1001 -7 0010 2 1010 -6 0011 3 1011 -5 0100
33、4 1100 -4 0101 5 1101 -3 0110 6 1110 -2 0111 7 1111 -157计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述负数如何处理之符号补码表示法(续)上图中可见,正数:从0 24-1(=7)负数:从-24-1(=-8)1 这种表示的最大好处是在于满足(+x)+(-x)=0的规则,而且很容易区分正数和负数,例:(+6)+(-6)=0110+1010=0000 其中0表示正数,1表示负数,这一点与符号绝对值表示相一致。58计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述负数如何处理之符号补码表示法(续)(2)采用补码表
34、示时,不管多少位二进制,所有位为1时,一定是十进制数-1。这样一来解决了补码数的扩充问题。例如:1011 11111011 0101 00000101 即可以简单地复制最高位。59计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述负数如何处理之符号补码表示法(续)(3)可将补码数作为无符号数处理,并将运算结果解释为二进制补码表示的带符号数:即-X补=X补+1。例如:(+77625)8=(0111111110010101)2 (-77625)8=(1000000001101011)2 于是,机器作为无符号数,其值为(100153)8,而解释为常符号数为(-77625)8 60计算
35、机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述负数如何处理之符号补码表示法(续)(4)在补码表示中,0表示法是唯一的,即 +0补=-0补=0.00.0 而 +0原=0.00.0 -0原=1.00.0 +0反=0.00.0 -0反=1.11.1 从数学上讲,零有两种表示对运算是不利的,这时ALU就必须增加另外的逻辑电路来寻找0这个数,因而当今的大多数机器都使用补码。61计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述负数如何处理之符号补码表示法(续)(5)采用补码运算,符号位做为代码可以与数位一起参加运算,无须单独设置符号处理线路。(6)目前,就大多数小/微型计
36、算机ALU,只设加法器。采用补码运算后,补码可以将“正数加负数”转化为正数加正数,同时,又可以将减法转化为加法运算,这样只设加法器就可以了。62计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述负数如何处理之符号 3.反码表示 反码也称1的补码(ones complement),和2的补码一样,它的最高位为符号位。0表示正,1表示负。其余各位为二进制数的基数减1。优点:具有对称性,生成容易。存在问题:(1)存在+0与-0之分。+0反=0.00.0,-0反=1.11.1。运算时需将 1.11.1换成0.00.0;(2)需加权操作,即反码运算若符号位有进位,则运算结果还要加1。在C
37、DC公司的某些机器中使用过,而在新的计算机设计中却很少使用。63计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述2.1.4 小数与实数表示 小数与实数一般采用浮点数表示,原因是:在定点数的机器中,机器指令的调用的所有操作数都是定点数。然而,实际需要计算机处理的数往往是混合数,所以在编程时须设定一个比例因子,把原始数缩小成定点小数或扩大成定点整数后再进行处理,这种方法存在两个缺点:第一,当只有小数而且很小时,大部分二进制数位,被0占用导致精度损失,同样若一个数的小数部分为0时,则有一半二进制位数被浪费。第二,这种表示法所能表示的范围与浮点数相比是比较小的。所以小数和实数一般采用
38、浮点数表示。64计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述小数与实数表示(续)先前,浮点常采用下列格式:由于指数的编码,尾数的格式和小数点的位置有规定有很大的随意性,因此,浮点数的表示法不是唯一的,不同的计算机有不同的规定,这就引起了相互间数据格式的不兼容性。为此,美国电气与电子工程协会(IEEE)制定了有关的工业标准(IEEE754)己被众多的计算机厂商所采用。附符 阶码 尾符 原数65计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述计算机组成原理 主讲:刘子良第二章 运算方法与运算器
39、 2.1 概述小数与实数表示(续)IEEE754标准有两点重要考虑:1.考虑到高级语言与机器语言之间的语言差距,二进制规格化数为:1.xx.x*2yyy.y 其中,x和y均为二进制数IEEE754标准 2.为便于软件移植,IEEE754规定了浮点数标准,包括:定义了单精度(32位),双精度(64位)两种格式,以及两种扩展格式。66计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述小数与实数表示-IEEE754标准考虑(续)(1)单精度浮点数,如下:X=(-1)s*(1.m)*2e-127 (2)双精度浮点数,如下
40、:X=(-1)s*(1.m)*2e-1023 由于在规格化二进制浮点数中,小数点前面的一位数总是1,故可将这个1省略,不出现在浮点数的格式中,我们称其为隐藏位(hidden bit)。S e(指数)m(尾数)31 30 23 22 0S e m 63 62 52 51 067计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述小数与实数表示(续)例:将十进制数178.125表示成单精度浮点数 注:IEEE754单精度(single-precision)浮点数格式 短实数:如下 其中:s(sign):符号;e(Exp
41、onent):阶码;f(Fraction):尾数;S e f31 30 23 22 068计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述小数与实数表示(续)IEEE754双精度(double-precision)浮点格式,长实数:扩充精度浮点数 Pentium中具有三种浮点数格式,临时实数:S e f63 62 52 51 0S e f79 78 64 63 069计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述计算机组成原理 主讲:刘子良第二章 运算方法与运算器 2.1 概述小数与实数表示
42、(续)解:首先将十进制数178.125表示成二进制实数。(178.125)10=(10110010.001)B 再将二进制实数表示成规格化形式:10110010.001=1.0110010001*27 因为指数等于7,另上偏移量127(=27,采用移码)之后 e=7+127=134=(10000110)B 因此,178.125的单精度浮点数为:0 10000110 01100100010000000000000 1 8 23注意小数点前面的注意小数点前面的1和小数点隐含和小数点隐含70计算机组成原理 主讲:刘子良计算机组成原理 主讲:刘子良2.2.1 补码加减运算 1.补码加法 两个补码表示的
43、数相加,符号位参加运算,且两数和的补码等于两数补码之和,即:X+Y补=X补+Y补 下面,我们看两个例子。第二章 运算方法与运算器 2.2 定点加减运算71计算机组成原理 主讲:刘子良计算机组成原理 主讲:刘子良例1:己知X补=0.1001,Y补=1.1101求X+Y补=?解:X补=0.1001 +)Y补=1.1101 10.0110 符号位产生的进位1,在模2的意义下,机器会自动将其舍弃,所以X+Y补=0.0110就是正确的运算结果。第二章 运算方法与运算器 2.2 定点加减运算72计算机组成原理 主讲:刘子良计算机组成原理 主讲:刘子良例2:己知X补=1.0011,Y补=0.0110求X+Y
44、补=?解:X补=1.0011+)Y补=0.0110 X+Y补=1.1001运算结果是以补码表示的负数。第二章 运算方法与运算器 2.2 定点加减运算73计算机组成原理 主讲:刘子良计算机组成原理 主讲:刘子良 2.补码减法 原则上讲:X补-Y补=X-Y补。可见,需要一个减法器,而现在只设加法器,那么,如何得到X-Y补呢?我们可以根据补码加法公式可推出。X-Y补=X+(-Y)补=X补+-Y补 这样一来,减法的问题归结到如何求-Y补的问题了,从负数引(3)的理论:-Y补=Y补+1。意思是说,-Y补等于对Y补连同符号在内求反加1。第二章 运算方法与运算器 2.2 定点加减运算74计算机组成原理 主讲
45、:刘子良计算机组成原理 主讲:刘子良例1:Y=0.1010Y补=0.1010 -Y补=1.0110例2:Y=-0.1010Y补=1.0110 -Y补=0.1010第二章 运算方法与运算器 2.2 定点加减运算75计算机组成原理 主讲:刘子良计算机组成原理 主讲:刘子良例3:己知X补=0.0010,Y补=1.1010求X-Y补=?解:X补=0.0010+)-Y补=0.0110 X-Y补=0.1000这就是运算求得的正确结果。第二章 运算方法与运算器 2.2 定点加减运算76计算机组成原理 主讲:刘子良计算机组成原理 主讲:刘子良例4:己知X补=1.1011,Y补=0.0110求X-Y补=?因为Y
46、补=0.0110,而-Y补=1.1010 可见,若Y补为一正数,则-Y补就变成一个负数了。所以:解:X补=1.1011+)-Y补=1.1010 X-Y补=11.0101 符号位的进位1在机器中将会自动舍弃,因为在以2为模的情况下,2=0(mod 2),故得出的就是正确的结果X-Y补。第二章 运算方法与运算器 2.2 定点加减运算77计算机组成原理 主讲:刘子良计算机组成原理 主讲:刘子良2.2.2 补码的溢出判断与检测方法 1.溢出的产生引例1:X补=0.1011 +)Y补=0.0111 X+Y补=1.0010引例2:X补=1.0101 +)Y补=1.1001 X+Y补=0.1110第二章 运
47、算方法与运算器 2.2 定点加减运算78计算机组成原理 主讲:刘子良计算机组成原理 主讲:刘子良补码的溢出判断与检测方法之溢出的产生(续)从引例1与引例2中,不难看出,两个正数相加,结果是一个负数(符号位为1),而两个负数相加,结果是一个正数I(符号为0),这显然是错误的。原因:运算结果超出了机器允许表示的范围,数值部分上扩充,从而改变了符号的性质,我们将这种现象称为溢出。例:显然,机器允许表示范围应该为+31到-32这间,大于31称之为上溢或正溢出,小于-32称之为下溢或负溢出。第二章 运算方法与运算器 2.2 定点加减运算 0 1 1 1 1 1 1 0 0 0 0 0符号位符号位数值部分
48、数值部分79计算机组成原理 主讲:刘子良计算机组成原理 主讲:刘子良 2.溢出的探测方法 方法I:设X补=X0,X1,X2.Xn,Y补=Y0,Y1,Y2.Yn其和(或差)为S补=S0,S1,S2.Sn。则溢出条件为:V=X0Y0S0+X0Y0S0 方法II:采用变形补码(双符号位补码)第二章 运算方法与运算器 2.2 定点加减运算80计算机组成原理 主讲:刘子良计算机组成原理 主讲:刘子良补码的溢出判断与检测方法之溢出的探测方法(续)观察下列算式:00.1001 11.0111 00.1101 11.0011 +00.0011 +11.1101 +00.1001 +11.0111 00.110
49、0 11.0100 01.0110 10.1010 可见,当结果两位符号的值不一致时表时溢出,若设两符号位Sf1和Sf2,则 V=Sf1 Sf2第二章 运算方法与运算器 2.2 定点加减运算81计算机组成原理 主讲:刘子良计算机组成原理 主讲:刘子良补码的溢出判断与检测方法之溢出的探测方法(续)方法3:采用双离位判断,设:数值部分最高位产生的进位为Cs;符号部分向上产生的进位为Cf;仍以上面四个标式为例。0.1001 1.0111 0.1101 1.0011 +0.0011 +1.1101 +0.1001 +1.0111 0.1100 1.0100 1.0110 0.1010 溢出条件为公式:
50、V=Cf Cs第二章 运算方法与运算器 2.2 定点加减运算 Cf=0 Cs=0 Cf=1 Cs=1 Cf=0 Cs=1 Cf=1 Cs=082计算机组成原理 主讲:刘子良计算机组成原理 主讲:刘子良2.2.4 补码定点加减运算的实现设A=A0,A1,A2.An,B=B0,B1,B2.Bn,则 A+B=A0,A1,A2.An+B0,B1,B2.Bn A-B=A0,A1,A2An+B0,B1,B2Bn+0.00.01且 A+B A A-B A实现线路如下图。第二章 运算方法与运算器 2.2 定点加减运算83计算机组成原理 主讲:刘子良计算机组成原理 主讲:刘子良补码定点加减运算的实现(续)第二章