1 / 54

计算机组成原理讲义 第2章 数据表示、运算和运算器部件

计算机组成原理讲义 第2章 数据表示、运算和运算器部件. 诀窍 详细内容请参阅王诚主编 “计算机组成原理”. 本章主要教学内容. ⒈围绕定点运算器的功能、组成、设计和实现来介绍。掌握各种数据在计算机内的表示、存储方式、完成运算所用的算法和实现这些算法所用的逻辑电路。 ⒉本章从数值化信息编码讲起,引出二进制编码,数制转换,插入部分检错纠错码知识。 ⒊介绍各种数据表示、数值数据算术运算的有关算法。 ⒋讲解在计算机中实现算术运算与逻辑运算所用的功能部件 —— 运算器部件。. 第2章 数据表示、运算和运算器部件. 2.1 数字化信息编码的概念和二进制编码知识

asasia
Download Presentation

计算机组成原理讲义 第2章 数据表示、运算和运算器部件

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 计算机组成原理讲义第2章 数据表示、运算和运算器部件 诀窍 详细内容请参阅王诚主编 “计算机组成原理”

  2. 本章主要教学内容 ⒈围绕定点运算器的功能、组成、设计和实现来介绍。掌握各种数据在计算机内的表示、存储方式、完成运算所用的算法和实现这些算法所用的逻辑电路。 ⒉本章从数值化信息编码讲起,引出二进制编码,数制转换,插入部分检错纠错码知识。 ⒊介绍各种数据表示、数值数据算术运算的有关算法。 ⒋讲解在计算机中实现算术运算与逻辑运算所用的功能部件——运算器部件。

  3. 第2章 数据表示、运算和运算器部件 2.1 数字化信息编码的概念和二进制编码知识 2.2 数据表示-采用的信息编码 2.3 二进制数值数据的编码与运算算法 2.4 运算器部件的组成与设计 2.5 浮点运算与浮点运算器

  4. 2.1 数字化信息编码的概念和二进制编码知识 2.1.1 数字化信息编码的概念 2.1.2 二进制编码和码制转换 2.1.3 检错纠错码

  5. 2.1.1 数字化信息编码的概念 ⒈所谓编码,就是用少量、简单的基本符号,选用一定的组合规则,以表示大量复杂多样的信息。 ⒉多重编码,是指当使用的基本符号较多时,往往还要采取措施,以便首先使用少量的简单符号来编码、以表示那些量大而复杂的基本符号,再用这些基本符号来表示信息。例如汉字编码。 ⒊二进制编码的优点: ①容易实现; ②运算简单; ③对应逻辑值。

  6. 2.1.2 二进制编码和码制转换 ⒈数制与进位记数法 ⑴基r数制:用r个基本符号通过排列起来的符号串表示数值,称为基r数制,称r为该数制的基。 ⑵有权基r数制:如果每一位的单位值都赋以固定的值Wi,则称Wi为该位的权,此时的数制为有权的基r数制。 ⑶r进位数制(r进制):如果基r数制符合“逢r进位”的规则,则每位的权为ri,称为r进制。 ⒉二进制编码与二进制数据 ⑴二进制编码方法; ⑵二进制数值数据的计算(十进制展开)。

  7. 2.1.2 二进制编码和码制转换(续) ⒊数制转换 ⑴二(八和十六)进制与十进制数据转换: ①整数部分:除以基数,取其余数,倒序排列。 ②小数部分:乘以基数,取其整数,正序排列。 ⑵二进制与八进制或十六进制数据转换: ①原理:一位八(十六)进制数可表示成3(4)位二进制数。 ②方法:从小数点所在位置分别向左、右对每3 位或4位进行分组,写出每一组对应值(注意补零问题)。

  8. 2.1.2 二进制编码和码制转换(续) ⒋二进制数的运算规则:算术运算和逻辑运算 ⑴加法运算规则 ⑵减法运算规则 ⑶乘法运算规则 ⑷除法运算规则 ⑸逻辑或运算规则(运算符为∨) ⑹逻辑与运算规则(运算符为∧) ⑺逻辑非运算规则(运算符为▔) ⑻逻辑异或运算规则(运算符为≮)

  9. 2.1.3 检错纠错码 ⒈检错纠错的有关概念和实现思路 ⑴实现原理:在合法的数据编码之间加进一些不允许出现的编码,使合法编码出现某些错误时,就成为非法编码。 ⑵(最小)码距:任意两个合法编码之间至少有几个二进制位不相同, ⑶常用的数据校验码是奇偶校验码、海明校验码、循环冗余码。 ⑷纠错码是对校验码的更进一步的发展和应用。

  10. 2.1.3 检错纠错码(续) ⒉三种常用的检错纠错码 ⑴奇偶校验码: ①原理:使原来合法码距由1正加到2; ②方法:正加一个二进制位成奇(偶)个“1”; ③特点:只能发现一位或奇数个位出错。

  11. 2.1.3 检错纠错码(续) ⑵海明校验码: ①原理:在k个数据位之外加上r个校验位,形成k+r位的新的码字,使新的码字的码距比较均匀地拉大。把数据的每一位分配在几个不同的偶校验位的组合中,当某一位出错后,就会引起相关的几个校验位的值发生变化; ②方法:见表2.2和表2.3; ③特点:能发现并纠正一位出错或发现两位出错。

  12. 2.1.3 检错纠错码(续) ⑶循环冗余码 ①原理:在k个数据位之外拼接r个校验位,关键是如何从k位信息位简单地得到r位校验位编码。以及如何判断k+r位码字是否正确; ②方法:由信息表达式及生成表达式生成模2余数表达式,并拼接在信息表达式之后; ③特点:能发现并纠正一位、多位出错,用于串行通信。

  13. 2.2 数据表示-采用的信息编码 2.2.1 逻辑数据的表示 2.2.2 字符数据的表示 2.2.3 数值型数据的表示

  14. 2.2.1 逻辑数据的表示 ⒈用来表示二值逻辑中的“是”与“否”或称“真”与“假”两个状态的数据。 ⒉在计算机中可用一个基二码、一个字或一个字节来表示单个逻辑数。

  15. 2.2.2 字符数据的表示 *用一定位数的基二码为每一个字符指定一个确定 的编码。 ⒈ASCII码和EBCDIC码 ⑴ASCII码:7位基二码表示的字符,见表2.8。 ⑵EBCDIC码:8位编码,主要用在IBM计算机中。

  16. 2.2.2 字符数据的表示(续) ⒉字符串的表示 ⑴连续的一串字符,占用主存中连续的多个字节,每个字节存一个字符。 ⑵注意其存放顺序(P.68 图2.4)。

  17. 2.2.2 字符数据的表示(续) ⒊中文(汉字)的编码表示 ⑴用两个字节表示一个汉字。将两个字节的最高位设定为1。128 * 128个。 ⑵注意与ASCII码的奇偶校验码有冲突。

  18. 2.2.3 数值型数据的表示 * 表示数量多少、数值大小的数据。 ⑴表示方法: ①带正负符号的十进制数形式,用于输入/输出。 ②二-十进制编码,即用4为基2码编码一位十进制数,多位十进制数表示成编码的数串。 ③二进制原、反、补码表示数据。 ⑵注意: ①数值数据有一定的表示范围和表示精度。 ②二进制数主要分成定点小数、整数与浮点数三类。

  19. 2.2.3 数值型数据的表示(续) ⒈定点小数的表示方法 ⑴指小数点准确固定在数据某个位置上的小数,实用上都把小数点固定在最高数据位的左边,小数点前边再设一位符号位。 N = NS.N-1N-2…N-m ⑵主要用在早期计算机中,在本课中主要通过定点小数讨论数值数据的不同编码方案,而且定点小数也被用来表示浮点数的尾数部分。

  20. 2.2.3 数值型数据的表示(续) ⒉整数的表示方法 ⑴小数点定位在数值最低位右面的一种数据。 ⑵整数被分成带符号和不带符号的两类。 ①带符号数: N = NS.NnNn-1…N2 N1 N0 ②不带符号数:N = Nn+1NnNn-1…N2 N1 N0 ⑶在计算机中,整数所占用的存储空间和所表示数值范围是不同的,如8位、16位、32位或64位。

  21. 2.2.3 数值型数据的表示(续) ⒊浮点数的表示方法 ⑴浮点数是指小数点在数据中的位置可以左右浮动的数据。表示成:N = M * RE ⑵在计算机中,表示浮点数要有符号位;而R规定位2、8或16,是确定常量不必表示出来。浮点数表示成:MS(1位) E(m位) M(n位) ⑶浮点数的规格化表示及处理: 规定计算机内浮点数的尾数部分用纯小数形式给出,而且尾数的值不为0时,其绝对值应大于或等于0.5。

  22. 2.2.3 数值型数据的表示(续) ⒊浮点数的表示方法(续) ⑷浮点数的规格化处理: 规格化的过程称为规格化处理。 ⑸常用浮点数的格式:P.71 ⑹隐藏位技术: 对短浮点数和长浮点数,在存储时,去掉最高位(规格化后必为1)的技术称为隐藏位技术。对临时浮点数,不使用隐藏位技术。

  23. 2.2.3 数值型数据的表示(续) ⒋十进制数的编码与运算 * 采用基二码对每个十进制数位进行重编码。 ⑴十进制有权码:每一位基2码有确定的权。 ①8421码(BCD码): 运算简单;转换方便;结果需修正。 ②其它有权码:见表2.9 ⑵十进制无权码:每一位基2码没有确定的权。 ①余三码:每个二进制代码都加上0011得到。 ②格蕾码:任两个相临代码只有1位状态不同。

  24. 2.2.3 数值型数据的表示(续) ⒋十进制数的编码与运算(续) ⑶十进制数的其它编码方法:见表2.11 ⑷数字串在计算机中的表示余存储 ①字符串形式:一个字节存放一个十进制的数位或符号位。不便于算术运算。 ②压缩的十进制数串形式:一个字节存放两个十进制的数位。便于算术运算。 注意符号位的表示以及所占位数必为偶数。 ③每种表示都需知道其起始地址和长度。

  25. 2.3 二进制数值数据的编码与运算算法 2.3.1 原码、反码、补码的定义 √ 2.3.2 补码加、减运算规则 √ 2.3.3 原码一位乘法的实现算法 √ 2.3.4 定点补码一位乘法的实现算法 2.3.5 原码一位除法的实现算法 √ 2.3.6 定点补码一位除法的实现算法 2.3.7 加速乘除法运算的有关算法介绍

  26. 2.3.1 原码、反码、补码的定义 ⑴编码方法是指如何能统一地表示正数、零和负数,并尽可能地有利于简化对它们实现算术运算用到的规则。 ⑵数据的正负符号用一位二进制0和1两个状态表示。 ⑶通常称表示一个数值数据的机内编码机器数,而把它所代表的实际值称为机器数的真值。 ⑷用定点小数引出数值的3种编码(原码、补码和反码)是最方便的。

  27. 2.3.1 原码、反码、补码的定义(续) ⒈定点小数的编码方法 ⑴原码表示法: 用机器数的最高一位代表符号,以下各位给出数值绝对值的表示方法。 定义见P.75 (2.9),其性质为: ①[x]原 = 符号位 + |X| ②零有两种表示:[+0.0]原=0000,[-0.0]原=1000 ③优缺点:乘除运算规则简单;加减运算不方便。

  28. 2.3.1 原码、反码、补码的定义(续) ⑵补码表示法: 用机器数的最高一位代表符号,以下各位给出数值按2取模结果的表示方法。 定义见P.76 (2.10),其性质为: ①[x]补 = 2 * 符号位 + X ②零有唯一表示:[+0.0]补 = [-0.0]补 = 0000 ③[X + Y]补 = [X]补 + [Y]补 MOD 2 (重要)

  29. 2.3.1 原码、反码、补码的定义(续) ⑵补码表示法:(续) * 由补码求真值: ①正数:X=[X]补; ②负数:数值部分求补,并加上符号。 * 补码的算术移位: 将符号位与数值位一起右移一次并保持原符号位的值不变,可实现除法。 * 由原码求补码: ①对正数或零:[X]补 = [X]原。 ②对负数:符号位不变,数值位变反末尾加1。

  30. 2.3.1 原码、反码、补码的定义(续) ⑵补码表示法:(续) * 变形补码: 模4补码或双符号位补码。 定义见P.77 (2.13),其性质为: ①数值与模2补码相同;符号位为00或11,若为01或10时表示溢出,01表正数相加产生上溢;10表负数相加产生下溢。 ②零有唯一编码,且能表示负1。 ③存储模4补码时,只存储一位符号位即可。

  31. 2.3.1 原码、反码、补码的定义(续) ⑶反码表示法: 用机器数的最高一位代表符号,数值位是对负数值各位取反、对正数与原补码具有相同的表示方法。 其定义见P.78 (2.14),其性质为: ①[x]反 = ((2 - 2-n) + X) MOD(2 - 2-n) ②零有两种表示:[+0.0]反=0000,[-0.0]反=1111 ③实现算术运算不方便,0有两个编码,不常用。

  32. 2.3.1 原码、反码、补码的定义(续) ⒉整数的编码方法 * 整数也用原、补和反码表示。 * 与小数有如下异同: ⑴小数点设在最低一位的右边,最高位为符号位。数值的范围及编码的取模值与所用的位数有关。 ⑵编码的定义、特性和相互转换方法均与定点小数类似,只是补码的取模值为2k或2k+1,k为二进制整数数值的位数。

  33. 2.3.1 原码、反码、补码的定义(续) ⒊浮点数的编码方法:Ms E M ⑴符号位Ms仍采用0表正、1表负的规则。 ⑵尾数M采用定点小数表示,可用原(补)编码。 ⑶阶码E多采用整数形式的移码表示: ①定义:P.79 (2.15) ②与补码的关系:变补码的符号为其反码。 ③性质:a.符号位与原、补码相反; b.只用于整数(浮点数阶码); c.移码加减运算结果需变符号修正; d.零有唯一编码1000…0(-2n)。

  34. 2.3.2 补码加、减运算规则 ⒈加减法运算规则: [X+Y]补=[X]补+[Y]补,[X-Y]补=[X]补-[Y]补=[X]补+[-Y]补 ⑴补码直接参与运算:包括符号与数值。 ⑵已知补码求其负数的补码:按位求反末尾加1。 ⒉运算溢出的表达方式: ⑴同符号补码相加,和的符号与加数符号相同; ⑵最高位向符号位的进位与符号位向更高位进位不同; ⑶双符号位运算时,两个符号位不同。

  35. 2.3.3 原码一位乘法的实现算法 ⒈乘积的符号为两数符号的异或值,数值为两数绝对值之积。 ⒉乘法算法实现: ⑴运算器只能完成对两个数的求和操作; ⑵用N位加法器实现两个N位数的乘法:每求得一次部分积之后使其右移一位。 ⑶加零或加被乘数的判断:每求一次部分积,使放乘数的寄存器执行一次右移操作,并使其最高位接收加法器最低位的移位输出。 ⑷乘积的符号为两数符号的异或值(半加和)。

  36. 2.3.4 定点补码一位乘法的实现算法 * 直接用补码相乘实现乘法运算。 ⒈方案一: 乘数为正数: [X*Y]补 = [X]补 * [Y]补 乘数为负数: 用[X]补乘[Y]补的数值位,再将乘积加上[-X]补。 ⒉方案二:比较法

  37. 2.3.5 原码一位除法的实现算法 ⒈原码恢复余数法和加减交替法实现,商的符号为两数符号的异或值,数值为两数绝对值之商。 ⒉除法算法实现: ⑴左移被除数(余数); ⑵上商要根据减法运输结果确定,为正上1,为负上0,且恢复余数(两种不同实现方法)。 ⑶上商是将商存入寄存器,并使其左移。寄存器的初始值可以是双倍字长被除数的低位部分,在实现部分余数左移时,将它的最高位移入部分余数的最低位。

  38. 2.3.6 定点补码一位除法的实现算法 * 运输规则见P.90

  39. 2.3.7 加速乘除法运算的有关算法介绍 ⒈定点双位乘法的实现方案 ⒉阵列乘法器 ⒊跳0跳1除法 ⒋用快速乘法器实现快速除法器

  40. 2.4 运算器部件的组成与设计 2.4.1 运算器部件的功能与组成概述 2.4.2 位片结构的运算器芯片Am2901 2.4.3 教学计算机运算器的设计与实现 2.4.4 教学计算机的运算器使用事例

  41. 2.4.1 运算器部件的功能与组成概述 ⒈运算器的功能: ⑴首要功能是完成数据的算术和逻辑运算。 由ALU实现:给出运算结果和结果的某些特征。 ⑵第二项功能是暂存运算数据和中间结果。 由通用寄存器实现:区别于专用寄存器。 ⑶第三项功能是用硬件完成乘除指令运算。 由乘商寄存器实现:能自行左右移位(专用)。 ⑷第四项功能是作为处理机内传送数据的通路。

  42. 2.4.1 运算器部件的功能与组成概述 ⒉运算器的控制与操作: ⑴正确地向运算器提供控制信号,解决正确向运算器提供参加运算数据的种种问题。 ⑵给出正确的数据来源何正确的控制信号,运算器就执行规定的操作功能。 ⑶在计算机整机运行过程中,运算器用到的控制信号是由计算机的控制器部件提供的。

  43. 2.4.2 位片结构的运算器芯片Am2901 ⒈Am2901的内部组成 ⒉Am2901的控制与操作

  44. 2.4.3 教学计算机运算器的设计与实现 ⒈Am2901的管脚信号 ⒉8位教学机的运算器部件的主体部分的设计与实现 ⒊16位教学机的运算器部件的主体部分的设计与实现 ⒋教学机的运算器部件的辅助组成部分的设计与实现 ⒌运算器的控制与操作

  45. 2.4.4 教学计算机的运算器使用实例 ⒈8位教学机的运算器部件实验 ⒉16位教学机的运算器部件实验

  46. 2.5 浮点运算与浮点运算器 ⒈浮点运算器是主要用于对计算机内的浮点数进行运算的部件。 ⒉浮点数通常由阶码和尾数两部分组成,阶码是正数形式,尾数是定点小数形式,执行的操作不相同。 ⒊浮点运算器总是由处理阶码和处理尾数的两部分逻辑线路组成。

  47. 2.5.1 浮点数的运算规则 * 浮点数形式:X = MX * 2EX * MX为浮点数的尾数,一般为小于1的规格化的二进 制小数,机器中多用原码(或补码)形式表示。 * EX为浮点数的阶码,一般为二进制整数,机器中多用移码(或补码)形式表示,给出的是一个指数的幂,其底数常用2,8或16。

  48. 2.5.1 浮点数的运算规则 ⒈浮点加减法的运算步骤:X=Mx*2Ex,Y=My*2Ey ⑴对阶操作:比较两个浮点数阶码的大小。 ⑵尾数加(减)运算。 ⑶规格化处理。 ⑷舍入操作:“0”舍“1”入或最低位置“1”。 ⑸判断结果的正确性:检查阶码是否溢出。

  49. 2.5.1 浮点数的运算规则 ⒉浮点乘除法的运算步骤: ⑴两个浮点数相乘,其乘积的阶码为相乘两数阶码之和,其尾数为相乘两数尾数之积。 ⑵两个浮点数相除,商的阶码为被除数阶码减去除数阶码之差,其尾数为被除数尾数除以除数之商。 ⑶乘除运算都可能出现结果溢出,或结果不满足规格化的问题,浮点数运算也有精度处理要求。

  50. 2.5.1 浮点数的运算规则 ⒉浮点乘除法的运算步骤(续) ⑴浮点数的阶码运算 ①移码运算:[X]移+[Y]移 = 2n+[X+Y]移 ②移码补码运算:[X]移+[Y]补 = [X+Y]移 [X]移+[-Y]补 = [X-Y]移 ⑵浮点数的尾数处理 ①截断处理:无条件去掉某些位。 ②舍入处理:按规则(例:P.124)修正尾数。 ⑶注意原码运算与补码运算的区别。

More Related