计算机系统基础知识
1. 计算机系统硬件基本组成
计算机的基本硬件系统组成有运算器、控制器、存储器、输入设备和输出设备五大部分。运算器和控制器等被集成为中央处理单元。CPU负责对数据进行加工处理,能完成
- 运算器和控制器:集成为中央处理单元。CPU负责对数据进行加工处理,能完成算术运算、逻辑运算及控制功能。
- 存储器:分为内部存储器和外部存储器。前者速度快,容量小,一般用于存放程序,数据及中间结果。后者容量大,速度慢,可长期保存程序和数据。
- 输入设备和输出设备:输入设备用于输入原始数据及各种命令,输出设备用于输出处理结果。
2. 中央处理单元
1.CPU的功能
(1)程序控制:通过执行指令来控制程序的执行顺序。
(2)操作控制:一条指令功能的实现需要若干操作信号配合完成。CPU将操作信号送 至相关部件。
(3)时间控制:指令执行时操作信号的出现时间,持续时间以及出现次序。
(4)数据处理:CPU最根本的任务。
2.CPU的组成
主要有运算器、控制器、寄存器组和内部总线组成。
(1)运算器:由算术逻辑单元(ALU)、累加寄存器(AC)、数据缓冲寄存器(DR)和状态寄存器(PSW)组成。
(2)控制器:由指令寄存器(IR)、程序计数器(PC)、地址寄存器(AR)和指令译码器(ID)组成。
(3)寄存器组:分为通用寄存器和专用寄存器。运算器和控制器中的寄存器为专用寄存器,其作用固定。
3. 数据表示
1)原、反、补、移码
(1)原码:在原数据前添加符号位0+1-;
(2)反码:正数的反码与原码相同,负数除符号位按位取反;
(3)补码:正数的补码与原码相同,负数除符号位按位取反后加1;
(4)移码:原数据加一个偏移量,原数据为纯整数时为2n-1(n 为机器字长),相当于其补码的符号位取反,否则等于其补码。常用于浮点数中表示阶码。
2)定点数与浮点数
(1)定点数:小数点位置固定不变的数。小数点位置约定方式:定点整数(纯整数,小数点在最低有效数值位之后)和定点小数(纯小数,小数点在最高有效数值位之前)。
(2)浮点数:小数点位置不固定的数,表示范围更大。
在浮点数表示法中,阶码通常为带符号的纯整数,尾数为带符号的纯小数。浮点数格式如下:
阶符 | 阶码 | 数符 | 尾数 |
---|
注:浮点数的表示不唯一,小数点位置改变时阶码也会改变。浮点数能够表示的数值范围主要由阶码决定,所表示数值的精确度由尾数决定。
为了充分利用尾数表示更多的有效数字,通常采用规格化浮点数。**规格化就是将尾数的绝对值限定在[0.5,1]之间。**当尾数用补码表示时,注意以下问题:
- 若尾数M>=0,则其规格化的尾数形式是M=0.1xxx…x;其中x 可为0,也可为1,即将尾数限定在[0.5,1]之间。
- 若尾数M<0, 则其规格化的尾数形式是M=1.0xxx…x;其中x可为0,也可为1,即将尾数限定在[-1,-0.5]之间。
**如果浮点数的阶码(包括一位阶符)用R 位的移码表示,尾数(包括一位数符)用M 位的补码表示,则表示的浮点数范围为:
最大的正数:+(1-2-M+1)*2(2R-1);
最小的负数:-1*2(2R-1);
工业标准IEEE754的标准表示为:(-1)S2E(b0b1b2……bn);
- (-1)S为浮点数的数符,S=0时为正数,S=1时为负数;
- E为指数(阶码);
- (b0b1b2……bn)为尾数,其长度为P,用原码表示。
浮点数的运算:
加减运算:
- 对阶:使两个数的阶码相同,将阶码小的向阶码大的对齐;
- 尾数求和(差);
- 结果规格化并判断溢出:若所得尾数不是规格化的,需要先进行规格化。当尾数溢出,需调整阶码。
- 舍入处理:对结果右归时,尾数的最低位将因被移出而舍弃,这就需要舍入处理,减小运算误差。
- 溢出判断:以阶码为准,若阶码溢出,则运算溢出;若阶码下溢(小于最小值),则结果为0,;否则结果正确,无溢出。
乘除运算:
- 浮点数相乘:其积的阶码等于两乘数的阶码相加,积的尾数等于两尾数相乘。
- 浮点数相除:其商的阶码等于被除数的阶码减去除数的阶码,商的尾数等于被除数的尾数除以除数的尾数。
注:乘除运算的结果都需要进行规格化处理并判断阶码是否溢出。
4. 校验码
-
奇偶校验码:在校验码中加入一位校验位来检使编码中的1的个数为奇数(奇校验)或偶数(偶校验),从而使码距变为2。常用的奇偶校验码有3种,分别为:水平奇偶校验码,垂直奇偶校验码和水平垂直校验码。
注:只能检验出奇数位出错的编码,但不能发现偶数位出错的情况。 -
海明码:在数据位间的确定位置上插入k 个校验位,通过扩大码距来实现检错和纠错。
海明码的编码规则:
设k 个校验位为Pk,Pk-1…,P1,n 个数据位为 Dn-1,Dn-2,…,D0,对应的海明码为 Hn+kHn+k-1,…,H1。那么:
(1)Pi在海明码的第2i-1位置,即Hj=Pi,且j=2i-1,数据位依次从低到高占据海明码中剩下的位置。
(2)海明码中的任何一位都由若干个校验位来校验的。其对应关系为:被检验的海明码下标等于所有参与校验该位的校验位的下标之和,校验位由自身校验。对于n 位数据,所需校验位为k,则应满足2K>n+k+1;
对于8位数据,需4个校验位,编码过程如下:
(1)确定数据位与校验位在海明码中的位置:
H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12
D7 D6 D5 D4 P4 D3 D2 D1 P3 D0 P2 P1
(2)确定校验关系:
海明码 | 海明码的下标 | 校验位组 |
---|---|---|
H1(P1) | 1 | P1 |
H2(P2) | 2 | P2 |
H3(D0) | 3=1+2 | P1、P2 |
H4(P3) | 4 | P3 |
H5(D1) | 5=4+1 | P1、P3 |
H6(D2) | 6=4+2 | P2、P3 |
H7(D3) | 7=4+2+1 | P1、P2、P3 |
H8(P4) | 8 | P4 |
H9(D4) | 9=8+1 | P1、P4 |
H10(D5) | 10=8+2 | P2、P4 |
H11(D6) | 11=8+2+1 | P1、P2、P4 |
H12(D7) | 12=8+4 | P3、P4 |
(3)检验错误:
校验位与其所校验的位进行异或。若为奇校验,则所有的结果均为1无差错,若为偶校验,则所有的结果均为0无差错。若发生错误,所得结果的值为错误发生的海明码下标。
- 循环冗余校验码(CRC):利用生成多项式为k 个数据位产生r 个校验位来进行编码,其编码长度为k+r。CRC 的格式为:
n | n-1 | … | r+1 | r | r-1 | … | 1 |
---|---|---|---|---|---|---|---|
数据位 | … | … | … | 校验位 | … | … | … |
在求CRC 编码时,采用模2运算,模2运算的加减规则是按位进行的,不发生进位和借位。