考研408总结【计组】---数据的表示和运算(上)

2,639 阅读5分钟

这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战

考研倒计时:46天

参考资料: 王道计算机组成考研

下面主要来总结计组数据表示和运算这一章,个人感觉计组这一门最最最头疼的一章,头大~

本篇先总结数值与编码,重点会计算校验码。然后是ALU,总结加法器的功能原理以及OF/SF/CF/ZF这四个标志位的含义,大题会经常考到,利用加法器来与加减法运算进行结合,或者与if语句判断进行结合。

后面会用一两篇总结定点数的运算和浮点数的运算。(瘫~)

数值与编码

image.png

  • 首先掌握不同进制数之间的相互转换

除基取余法(整数部分的转换):从上到下是---最低位到最高位

乘基取整法(小数部分的转换):从上到下是---最高位到最低位

  • 知道常见的校验码

这里可以与计算机网络的差错控制相结合

码距:如1100和1101之间的码距为1,1001和0010之间的码距为3(因为只有一位没有变化)

奇偶校验码

奇校验码:整个校验码(有效信息位和校验位)中“1”的个数为奇数

偶校验码:整个校验码(有效信息位和校验位)中“1”的个数为偶数

缺点:只能发现奇数位的出错,不能纠正错误!

海明码

纠错理论:L-1=D+C且D>=C

编码最小码距L越大,其检测错误的位数D越大,纠正的错误的位数C越大,且纠错能力恒小于等于检错能力。

求海明码的步骤:

1. 确定海明码的位数
$n+k<=2^k-1$

2. 确定校验位的分布
规定校验位Pi放在$2^{i-1}$的位置上

3. 分组以形成校验关系

4. 校验位取值

每一组进行异或得到的值为相应的Pi值

5. 最后进行校验

比如S3S2S1的值为001,说明第一位出错,即H1出错。

循环冗余校验码

基于线性编码理论

需要一个生成多项式 ,比如生成多项式x3+x2+1x^3+x^2+1对应的二进制数为1101 ,而1011对应的多项式为x3+x+1x^3+x+1

求CRC码步骤:

1. 移位
信息码后面加R位的0.  校验位R为生成多项式的最高次数


2. 相除

这里是模2除法,和算术除法不同的是,不借位,不会对其他位造成影响,所以可以通过异或进行运算。

余数最高位为1,商为1. 最后得到一个余数。

3. 检错和纠错

将数据与生成多项式的二进制码进行相除,比如得到010,说明C2出错。

运算器ALU

image.png

ALU的核心部件是加法器

一位加法器

全加器FA是最基本的加法单元,有加数AiA_i,加数BiB_i与低位传来的进位Ci1C_{i-1}共三个输入,有本位和SiS_i与向高位的进位CiC_i共两个输出。

进位表达式:Ci=AiBi+(Ai异或Bi)Ci1C_i = A_iB_i+(A_i异或B_i)C_{i-1}

  • 串行加法器:只有一个全加器,器件少成本低,但运算速度慢
  • 并行加法器:运算时间主要由进位信号传递时间决定,进位分为串行进位(行波进位)与并行进位(先行进位)。

并行进位又可分为单级先行进位方式(组内并行、组间串行)和多级先行进位方式(组内并行、组间并行)

带标志的加法器

以下电路原理图片来源啧啧卡 image.png 无符号数加法器只能用于两个无符号数相加,不能进行带符号整数的加减运算。

在这个带标志的加法器我们可以实现带符号数的加减运算。

需要注意的tip:

  • SF和其他位结合可以判断溢出,SF和OF结合可以判断大小
  • SF为Fn1F_{n-1}
  • OF=Cn异或Cn1OF=C_n异或C_{n-1}
  • 进位/借位CF=Cout异或CinCF=C_{out}异或C_{in}

算术逻辑单元

下图需要注意的是ALUop有两位,可以对应八种操作 image.png

补码加减运算部件

控制端Sub=0做加法:X+Y = 【x】补+【y】补

sub=1做减法:X+反Y+1 = 【x】补+【-y】补

需要注意的tip:

  • 无符号整数的二进制相当于正整数的补码表示,所以此部件也可以用来无符号数的加减运算。
  • 对于有符号整数x和y,输入的是x和y的补码
  • ZF=1表示结果为0,无符号和有符号都有意义
  • CF可以表示无符号数运算的进位/借位。CF=1表示无符号加法的溢出,即进位输出Cout;减法时,CF=1表示有借位,不够减。总之CF=1表示溢出。但是对于带符号数无意义
  • OF=最高位异或次高位。OF=1表示溢出。对于无符号OF以及SF没有意义。
  • 前面提到SF和OF结合可以判断大小,当OF=0无溢出的时候,SF=1表示为负,即第一个数比第二个数小。联想到if语句:if(i<n)。具体可以结合2013年等408大题!

部分内容待补充完善~

如有误,请多指正!