2.66k likes | 2.81k Views
第一章 计算机系统概论. ( 1 )计算机系统的组成:分软件和硬件两部分 ( 2 )计算机系统的层次结构: ①从机器使用者的角度来说,粗分为应用软件、系统软件和硬件三个层次。 ②从程序设计员和机器硬件设计者的角度来说,细分为:高级语言虚拟机、汇编语言虚拟机、操作系统虚拟机、机器语言机器、微程序机器。. 高级语言级. 5 级. 编译(解释)程序. 汇编语言级. 4 级. 汇编程序. 操作系统级. 3 级. 操作系统. 机器指令 广义指令. 2 级. 一般机器级. 微程序. 微程序设计级. 1 级. 微程序直接由硬件执行.
E N D
第一章 计算机系统概论 (1)计算机系统的组成:分软件和硬件两部分 (2)计算机系统的层次结构: ①从机器使用者的角度来说,粗分为应用软件、系统软件和硬件三个层次。 ②从程序设计员和机器硬件设计者的角度来说,细分为:高级语言虚拟机、汇编语言虚拟机、操作系统虚拟机、机器语言机器、微程序机器。
高级语言级 5级 编译(解释)程序 汇编语言级 4级 汇编程序 操作系统级 3级 操作系统 机器指令 广义指令 2级 一般机器级 微程序 微程序设计级 1级 微程序直接由硬件执行 (2)计算机系统的层次结构
(3)冯·诺依曼结构计算机的特点 1.计算机的五大基本部件:运算器、控制器、存储器、输入设备和输出设备; 2.存储程序控制:程序和数据同时存入存储器中,并按地址寻址,计算机应在不需操作人员干预的情况下,自动逐条取出指令和执行任务。 3.采用二进制来表示指令和数据。
(4)硬件和软件的相互关系: • ①两者相辅相成,缺一不可。 • ②两者都用来实现逻辑功能,同一功能可用硬件实现,也可用软件实现。
(5) 计算机硬件的基本组成和功能: • ①运算器用来进行各种算术逻辑运算。 • ②控制器用来执行指令,送出操作控制信号。 • ③存储器用来存放指令和数据。 • ④输入和输出设备用来实现计算机和用户之间的信息交换。
(6)计算机系统性能评价指标: ①机器字长: CPU一次能处理二进制数据的位数。一般将参加运算的寄存器的宽度称为机器字长。 ②运行速度: a)主频:CPU主脉冲的时钟频率。 b)定点指令执行速度:每秒钟执行多少百万条定点指令数(MIPS)。 c)浮点操作运算速度:每秒钟执行多少浮点数操作(FLOPS)。 ③存储容量: a)主存容量:包含RAM和ROM两部分。以单元个数×存储单元宽度或字节数来表示。 b)辅存容量:磁盘容量,以字节为单位,如:80GB。
第二章 运算方法和运算器 • 了解真值和机器数的含义;了解无符号数的含义、用途和表示;了解定点数的表示方法;了解定点数的乘/除运算的基本思想;了解为何在运算中会发生溢出;了解如何判断定点数的各类运算时的溢出;了解浮点数的表示方法;了解串行加法器和快速并行加法器的不同;了解运算器(数据通路)的基本结构; • 理解为什么现代计算机都用补码表示定点数;理解算术逻辑单元ALU的功能和结构; • 能够在真值和不同的编码表示机器数之间进行转换;能够在真值与单精度格式浮点数之间进行转换。 • 掌握补码定点数的加/减运算过程;掌握浮点数的规格化方法;掌握如何计算浮点数表示范围;掌握IEEE754标准中单精度格式的表示; 掌握浮点数加减运算过程和方法。
X0 X1 X2……Xn-1 Xn 符号 量值 1. 定点数的表示方法 定点数:约定所有数据的小数点位置固定不变; 纯小数:小数点位于X0和X1之间, 纯整数:小数点位于Xn的右边,
阶码 尾数 基数 2.浮点数的表示 浮点数:把数的表示范围和精度分别表示,相当于数的小数点位置随比例因子的不同而在一定范围内可以左右浮动的数据;
总位数 符号位 阶码 尾数 32 1 8 23 64 1 11 52 80 1 15 64 单精度数 双精度数 临时浮点数 (2)IEEE浮点格式 阶码决定浮点数的表示范围,而尾数则决定浮点数的精度。
(3) 浮点数的规格化 为了提高数据的表示精度,同时为了便于浮点数之间的运算与比较,规定计算机内浮点数的尾数部分用纯小数形式给出,而且当尾数的值不为0时,其绝对值应>=0.5,这种表示方式被称为浮点数的规格化表示。 机器零:当一个浮点数的尾数为0时,不论其阶码为何值,该浮点数的值都为0。当阶码值比它能表示的最小值还小时,不管其尾数为何值,计算机都把该浮点数看成零值,通常称为机器零,此时该浮点数的所有位都清为0值。
IEEE754浮点数标准 • 32位规格化浮点数(尾数23位,阶码8位) 真值为:x=(-1)S×(1.M)×2(E-127) e=E-127 其中阶码E用移码表示,尾数域表示的值是1.M,最高位(总是1)隐含不存储。 • 64位规格化浮点数(尾数52位,阶码11位): 真值为:x=(-1)S×(1.M)×2(E-1023) e=E-1023
例1 若浮点数x的754标准存储格式为(41360000)16,求其浮点数的十进制数值。 • 解:将16进制数展开后,可得二制数格式为 • 0100 00010 011 0110 0000 0000 0000 0000 • 符号S阶码E(8位)尾数M(23位) 指数e=E-127=10000010-01111111=00000011=(3)10 包括隐藏位1的尾数 1.M=1.011 0110 0000 0000 0000 0000=1.011011 于是有 x=(-1)S×1.M×2e=+(1.011011)×23 =(+1011.011)2=(11.375)10
例2 • 将数(20.59375)10转换成754标准的32位浮点数的二进制存储格式。 解:首先分别将整数和分数部分转换成二进制数: 20.59375=10100.10011 • 然后移动小数点,使其在第1,2位之间 10100.10011=1.010010011×24 • e=4于是得到:S=0,E=4+127=131, M=010010011 • 其中E=(131)10=(10000011)2 • 最后得到32位浮点数的二进制存储格式为: 01000001101001001100000000000000 =(41A4C000)16
3.数的机器码表示 1.真值与机器数 为了区别一般书写表示的数和机器中数的编码,通常将前者称为真值,后者称为机器数或机器码。机器中最常用的编码方法有原码、补码、反码、移码。 机器数:数值数据在计算机内部用二进制编码表示的数称为机器数,即将正、负符号用一位二进制数码0和1来代替的数。 真值:机器数真正的值(即:原来带有正负号的数)称为机器数的真值。
0 =<X < 1 X [X]原= -1 < X <= 0 1 – X=1+|X| 0 =<X < 1 X Mod ( 2 – 2-n ) -n [X]反= (2 - 2 )+ X -1 < X<= 0 0 =<X < 1 X Mod 2 [X]补= 2 + X -1=< X <=0 定点小数的编码 (纯小数)原码,反码,补码的定义
例3 • 已知:x=+0.10010,y=-0.10010,分别求x,y的原码、反码、补码。 解:[x]原=010010, [x]反=010010, [x]补=010010 [y]原=110010, [y]反=101101, [y]补=101110
原反补码表示小结 正数的 原码,反码,补码表示均相同, • -符号位为 0,数值位同数的真值。 零的原码和反码均有2个编码,补码只一个编码 负数的 原码,反码,补码表示均不同, 负数符号位为 1,数值位:原码为数的绝对值; • 反码为每一位均取反; • 补码为反码再在最低位+1
模4补码(变形补码) 例:X=+0.1101, [X]补=00.1101 X=-0.1101, [X]补=11.0011 功能特点:易于检查加减运算中的溢出情况
n为有效数据的位数 4.整数的编码表示 • 例如:整数8位码: • X = +01110 [X]原= [X]反=[X]补=0 0001110 • X =-01110 [X]原= 1 0001110 • [X]反= 1 1110001 [X]补= 1 1110010
5.移码表示法 设n+1位纯整数X=X0X1X2…Xn(X0为符号位) 例:X=+10110,Y=-10110,则有 结论:对补码的符号位取反即得其对应的移码
移码的性质 • 最高位代表符号位,1 表示 正,0 表示负; • ‘0’有唯一的编码:[+0]移=[-0]移=1000…0 • 移码用于阶码的表示,两个移码容易比较大小,便于对阶。
例4. 已知:X=+0101101, Y=-1001101 写出 [X]补、[Y]补、[X]移、[Y]移 、 解:[X]补=00101101, [Y]补=10110011 [X]移=10101101, [Y]移=00110011
例5 • 设机器字长16位,定点表示,尾数15位,数符1位,问: (1)定点原码整数表示时,最大正数是多少?最小负数是多少? (2)定点原码小数表示时,最大正数是多少?最小负数是多少? (3)定点补码小数表示时,最大正数是多少?最小负数是多少? 解:(1)定点原码整数表示 最大正数值=(215-1)10=(+32767)10 最小负数值=-(215-1)10=(-32767)10 (2)定点原码小数表示 最大正数值=(1-2-15)10=(+0.111...11)2 最小负数值=-(1-2-15)10=(-0.111..11)2 (3)定点补码小数表示 最大正数值=(1-2-15)10=(+0.111...11)2 最小负数值=-1
关于数据表示范围小结 • 补码表示时数据的表示范围比原码、反码表示时数据的表示范围多一个最小负数。
关于数据表示范围小结 • 对n+1位定点整数X(包括1位符号位),用原码和反码表示时,其数据表示范围是: -(2n-1)≤ X ≤2n-1 • 用补码表示时,其数据表示范围是: -2n≤ X ≤2n-1 • 对于n+1位定点小数,用原码、反码表示时,其表示范围是: -(1-2-n)≤ X ≤1-2-n 用补码表示时,其表示范围是: -1≤ X ≤1-2-n
练习 1. 写出下列各数的原码、反码、补码、移码表示(8位二进制数)。 (1)-35/64 (2) 23/128 (3) -127 (4)-1(小数表示) (5)-1(整数表示) (6) –128 2. 机器字长为8位(含1位符号位),若机器数为81H,当它分别表示原码、补码、反码和移码时,等价的十进制整数分别是多少?
练习答案: 1.各数的原码、反码、补码、移码如下表所示: 2.等价的十进制数分别是: 原码:-1,补码:-127 反码:-126 移码:+1
作业 P63 1. 4
6.补码的加减运算 [X + Y]补= [X]补+ [Y] 补 [X-Y] 补= [X]补+ [-Y]补 [-Y] 补 = 对 [Y] 补 逐位取反,再在最低位加 1 溢出判断: 1) 正 + 正 得 负 或 负 + 负 得 正; 2) 数字位有向符号位的进位,但符号位不产生向更高位的进位; 3) 双符号位的值为 01或 10;
00 101100 1011 +11 1011 +00 0101 100 0110 01 0000 X+Y X-Y 例1 模4 补码计算 X=0.1011 y= -0.0101求[X+Y]补和[X-Y]补 解:[X]补= 00 1011, [Y]补= 11 1011 [-Y]补= 00 0101 (X+Y双符号位相同,不溢出; X-Y双符号位不同,溢出)
[x]补 1.0011 + [y]补 1.0101 [x]补 11.0011 + [y]补 11.0101 [x-y]补 10.1000 [x-y]补 110.1000 模2丢弃 模4丢弃 C=0, Cf=1,结果溢出 fs1=1, fs2=0,结果溢出 例 2 x=-0.1101,y=-0.1011,求x+y 解:[x]补=1.0011,[y]补=1.0101
作业 • P63 5(1)(3),6(2)(3)
7. 定点乘法运算 1.采用软件实现乘法运算 2.在原有数据通路的基础上增加一些硬件逻辑来实现(用加法和右移实现 )。 定点原码一位乘 定点补码一位乘 原码两位乘 补码两位乘 3.设置专门的乘法器(阵列乘法器)
原码一位乘 1.运算公式: 2.运算方法 若乘数的当前位=1,将被乘数和部分积求和。 若乘数的当前位=0,则跳过。 将部分积移位。 所有位都完成后,部分积即为最终结果。
解: [x]原=0.1001,[y]原=1.1101 高位部分积 低位部分积/乘数 说明 00.1001 00.0100 1 101 1 00.0100 00.0010 0 1 110 00.1011 00.0101 1 0 1 11 00.1110 1 00.0111 0 1 0 1 例1:x=0.1001,y=-0.1101,用原码一位乘法求x×y 00.0000 1 1 01 最低位为1,+x +00.1001 部分积,乘数右移一位 最低位为0,+0 +00.0000 部分积,乘数右移一位 +00.1001 最低位为1,+x 部分积,乘数右移一位 最低位为1,+x +00.1001 部分积,乘数右移一位
F加法器 C 乘 数 & & C/2 C F F B A A 部分积 & Cd B 被乘数 计数器 F/2 A 运算结果: [x×y]原=(0⊕1)+0.01110101 =1.01110101 x×y=-0.01110101 原码一位乘逻辑电路框图
例2 • 已知不带符号的二进制整数A=11011,B=10101,求每一部分乘积项aibj的值与p9p8…p0的值。 解:1 1 0 1 1 = A (2710)×1 0 1 0 1 = B (2110)————————————1 1 0 1 1a4b0=1, a3b0=1, a2b0=0, a1b0=1, a0b0=1 0 0 0 0 0a4b1=0, a3b1=0, a2b1=0, a1b1=0, a0b1=0 1 1 0 1 1a4b2=1, a3b2=1, a2b2=0, a1b2=1, a0b2=1 0 0 0 0 0a4b3=0, a3b3=0, a2b3=0, a1b3=0, a0b3=0 + 1 1 0 1 1a4b4=1, a3b4=1, a2b4=0, a1b4=1, a0b4=1 ————————————1 0 0 0 1 1 0 1 1 1 = PP = p9p8p7p6p5p4p3p2p1p0 = 1000110111 (56710)
解:[x]原=01111 ,[y]原=11101,符号位运算:0⊕1=1 • 例3. 设x=+15,y=-13,用带求补器的原码阵列乘法器求x.y=? 1 1 1 1×1 1 0 1————————————1 1 1 10 0 0 01 1 1 1+ 1 1 1 1————————————1 1 0 0 0 0 1 1乘积符号为1,算后求补器输出11000011, [x×y]原=111000011换算成二进制数真值是 x·y=(-11000011)2=(-195)10
例4:设x=-15,y=-13,用带求补器的补码阵列乘法器求出乘积x·y=? 并用十进制数乘法进行验证。 解:[x]补=10001 , [y]补=10011 , 乘积符号位运算:1⊕1=0 尾数部分算前求补器输出 |x|=1111 , |y|=1101 1 1 1 1×1 1 0 1————————————1 1 1 10 0 0 01 1 1 1+ 1 1 1 1————————————1 1 0 0 0 0 1 1乘积符号为0,算后求补器输出11000011,[x×y]补=011000011补码二进制数真值 x·y=0×28+1×27+1×26+1×21+1×20 =(+195)10十进制数乘法验证 x·y = (-15)×(-13) = +195
练习与作业 • P64 7(1)
8.定点除法运算 • 原码一位除:符号位和数值位分开运算。数值部分用无符号数除法实现。用加/减法和左移实现。 • 并行除法器:用可控加法/减法(CAS)单元实现。
8.定点除法运算 原码一位除 1.运算公式: 恢复余数法 加减交替法 2.运算方法
原码一位除法运算方法 • 恢复余数法(取数的绝对值) • 余数-除数;余数为Ri • 若Ri >0,则上商1,余数左移1位, Ri+1 =2 Ri -Y。 • 若Ri <0,则上商0,( Ri +Y)再左移。 Ri+1 =2( Ri +Y)-Y;即:Ri+1 =2( Ri +Y)-Y=2 Ri+Y • 继续;直到余数为0或精度足够。 • 加减交替法(不恢复余数法) • 被除数-除数;余数为Ri • 若Ri >0,则上商1,余数左移1位, Ri+1 =2 Ri -Y。 • 若Ri <0,则上商0,不恢复余数,直接对Ri左移,然后+Y,可得新的余数。 Ri+1 =2 Ri+Y
解: |x|补=00.1011, |y|补=00.1101, [-|y|]补=11.0011 0 0 0 0 0 00.1011 -y 11.0011 11.1110 11.1100 00.1101 +y 00.1001 01.0010 -y 11.0011 00.0101 00.1010 -y 11.0011 11.1101 例:x=0.1011,y=-0.1101,用原码加减交替法求x/y 被除数(高)/余数 被除数(低)/商 说明 x-y 0 0 0 0 0 余数<0,商上0 0 0 0 0 0 余数左移,+y 0 0 0 01 余数>0,商上1 0 0 0 1 0 余数左移,-y 余数>0,商上1 0 0 0 1 1 0 0 1 1 0 余数左移,-y 0 0 1 1 0 余数<0,商上0
11.1010 +y 00.1101 00.0111 余数 商 说明 0 0 1 1 0 11.1101 0 1 1 0 0 余数左移,+y 0 1 1 01 余数>0,商上1 最后得:[x/y]原=1+0.1101=1.1101 即: x/y=-0.1101,余数为:0.0111×2-4
并行除法器 • 1、可控加法/减法(CAS)单元原理:采用不恢复余数(加减交替)法 • P=0,作加法运算 • P=1,作减法运算
并行除法器 2、不恢复余数的阵列除法器被除数 x=0.x6x5x4x3x2x1(双倍长)除数 y=0.y3y2y1商数 q=0.q3q2q1余数 r=0.00r6r5r4r3除数右移