1. 数字计算机最基本的信息单元被称为1位(bit)。8个数位构成了一个字节(byte)。
计算机的字(word)由两个或多个相邻的字节组成。字的大小表示了一个特定的计算机体系结构能够处理的最有效的数据的大小。
8位字节可以被对分为两个4位,称为半字节。包含最小值的二进制数字的半字节称为低半字节,而另外的半个字节称为高半字节。
(注:关于高半字节和低半字节如何分辨:
例:10111111,其中1011为高半字节,1111为低半字节,因为在这个二进制数中,最小的二进制数字为最后一个1,因此包含此位的半字节,即后四个位1111为低半字节,而前面四位1011为高半字节。
但是这也取决于CPU的设计,因为10111111这个数,放在寄存器也可能是这样防置的:
11111011,现在包含最小值的二进制数字的半字节则为1011(包含最后一位1),因此低半字节为1011,高半字节为1111)
2. 位置编码系统的基本思想:任意数字的值可以通过某个奇数的乘幂来表示。通常也称为权重编码系统。
3. 十进制和二进制的分数转换:
如果在一个数制表示中,小数点右边包含循环重复的数字串的分数,而在另一种数制的表示中就不一定也具有重复的数字序列。
一般来说任意数制的相互转换,都先转换为10进制再转换为所要求的数制。但有一种例外,就是以2为指数幂组成的基数之间的数字转换。
4. 带符号整数的表示方法(最高位是符号位,余下的表示数字本身):
a) 符号幅值表示法:
一个带符号-幅值的数字的最左边的位(即高位)是一个符号,余下的位用来表示数值的幅值(或称绝对值)。
当处理运算的时候,要特别注意,幅值只能有7位,对符号位产生的进位必须舍弃。符号-幅值表示法有两种表示0的方式,10000000和00000000,这会造成逻辑和电路上的复杂性。
b) 反码表示法:
在十进制数的减法运算中,可以通过加上减数与全9组成的数字的差,再加回一个进位的方法来实现。
一个数的反码是通过将基数减去1,再减去该数得到。
利用反码表示法可以将减法运算转换成加法运算。反码表示法提供了一种表示负数的方法。
我们不想使用特殊的二进制位来表示符号(正如符号幅值表示法),因此记住:如果是一个负数,就应该将其转换为反码形式。转换后最左边的二进制位应该是1,表面是一个负数。如果一个数是正数,则无需转换成反码形式。
当进行减法运算时,将减数转换为反码形式,然后与被减数相加。如果最高位产生进位,将其加到最低位。
反码表示法的缺点是0有两种表示方法:00000000和11111111。现在已经停止使用反码,而采用另一种更有效的补码表示法。
c) 补码表示法:
补码体系相对于符号幅值表示法来说,优点是不再需要单独处理符号位,但仍然可以通过检测最高位的方法,了解一个数的符号。
补码是反码加1。求一个数的补码,只需简单的将二进制数字的各个位进行取反操作,然后再加1。
这样也简单化了加法和减法运算。减数在一开始就进行了加1操作,所以在减法运算中就无需处理高低两端进位循环的问题。只需简单舍弃所有与最高位有关的进位。需牢记,只有负数才需要转换成补码形式。
由一个数的二进制表示转换成十进制表示,对于正整数来说,只需简单的转换成十进制,对于负数的补码表示来说,首先对该数的每一位取反,然后加1.(即求出反码再加1),转换为十进制后,这个数值等于十进制数的绝对值,再加上这个数原本是一个负数,因此加上负号。
例:将11110111转换为十进制:
先取反:00001000,再加1:00001001,求出十进制的值:9,加上负号:-9
当使用补码表示法时,一个正数和一个负数相加不可能产生溢出。
检测溢出条件的法则:如果进入符号位和移出符号位的进位相等,那么没有溢出发生。如果不同,就有溢出发生,也就是出现一个错误。
用补码表示0只有一种表示方法:00000000。
补码的最大缺点是:由N位二进制数表示的数值的范围具有非对称性。
5. 定点运算的溢出判断:
1) 单符号位法:
a. 两操作数同号且和数的符号与操作数的符号不同。则表示产生了溢出。
b.
Cn——最高位(符号位)进位Cn-1——次高位进位。当OF=1时溢出。
当两数的符号位不相同时CN ,CN-1一定相同,没有溢出。
当两数的符号位相同时,当CN ,CN-1相异时,溢出 ;当CN ,CN-1相同时,没有溢出,符号位的进位丢失
2) 双符号位法:
符号位使用两位表示(正数:00,负数:11),并且参与运算。如果运算后符号位出现01或10时,表示产生溢出。最高符号位永远表示结果的正确符号。
6. 定点加法器、定点乘法器和定点除法器:
1) 加法器:
由n个全加器级联而成。M为方式控制输入线,当M=0时做加法运算,当M=1时做减法运算。
N位串行进位加法器的延迟时间t = n*2T + 3*3T = (2n+9)T
其中9T为最低位两级的异或门加上溢出异或门的总时间(每级异或门延迟3T),2T为每级进位链的延迟时间。其中T定义为一个与门和一个或门的延迟时间。
2) 乘法器:
a) 不带符号的阵列乘法器:
由产生被加数的部件:n*m个与门,和被加数求和部件: (m-1)*n个全加器组成。
令Ta为与门(ai*bj)的传输延迟时间,串行进位加法器的延迟时间是(n-1)2T
Tf为全加器(FA)的进位传输时间,用两级“与非”逻辑来实现FA的进位链功能,有Ta=Tf =2T
n*n位不带符号的阵列乘法器总的乘法时间估算为:
tm=Ta+(n-1)×6T+(n-1)×Tf =2T+(n-1)×6T+(n-1)×2T=(8n-6)T
b) 带符号的阵列乘法器:
由两个n位和一个2n位的求补器和n*n阵列乘法器以及符号运算电路构成
对带符号的阵列乘法器的结构来说,按其所用的数的表示方法而有所不同。
1.舍1入"法:
凡舍去部分的最高位为1,则在保留数的最低位加1。
凡舍去部分的最高位为0,则不必修正。
② “恒置1”舍入法:
只要有低位数字丢失,则在保留数的最低位置1。
③ IEEE754标准中,提供四种可选的舍入处理法:
就近舍入,朝0舍入,朝+∞舍入,朝-∞舍入。
5. 溢出及其处理
溢出只判断浮点数的阶码是否溢出,而不是判断浮点数的尾数。当阶码用补码表示时阶码的符号位为00、11时没有溢出。阶码的符号位为01、10时溢出。
2) 移码相加减(计算阶码用)
[Ex+ Ey]移=[Ex]移+[Ey]补=2n+1+[Ex+ Ey]移 (mod 2n+1)
[Ex – Ey]移=[Ex]移+[– Ey]补 (mod 2n+1)
移码双符号位的最高符号位恒用0参加加/减运算,若运算结果双符号位S0´S0 则:
3) 浮点乘法:
步骤如下:
1.对被乘数和乘数判零,若有操作数为零,则 乘积为零,无需运算。
2. 阶码相加(阶码用移码)
3. 尾数相乘
4. 结果规格化
4) 浮点运算器的流水线原理:
线性流水线时钟周期 τ=max{τi}+τl =τm+τl
式中max{τi}表示取所有过程段中所需的最长操作时间。τl为寄存器的延时。
从理论上说,一个具有 k级过程段的流水线处理n个任务所需的时钟周期数为:
Tk=k+(n – 1)
非流水线的硬件来处理n个任务所需的时钟周期数为:
TL=n×k
K级线性流水线的加速比CK
Ck=TL / Tk=(n×k) / [k+(n – 1)] 当n>>k时,Ck→k
可见,理论上k级线性流水线处理速度几乎是非流水线处理速度的k倍。
10. 用于数据记录和传递的编码方式:
a) 不归零编码(NRZ)
使用高和低来表示1和0.
b) 反转不归零编码(NRZI)
采用信号的转变,或者从高到低,或者从低到高的变化,来表示一个二进制数的1,没有变化则表示0。
c) 相位调制编码(PM)
对编码的每一位都提供一个信号转变,二进制数1由上升转变的信号给出,0则伴随一个下降转变的信号。
d) 改进的频率调制编码(MFM)
只对具有连续的0的编码才在位单元的边界提供信号跃变。
e) 运行长度限制编码(RLL)
是一对由字符编码组成的字进行分块的编码方式。
11. 错误检测与校正(由于时间关系,先跳过不看)