1. 计算机系统的基本组成
计算机系统由硬件和软件组成
基本硬件
- 运算器
- 控制器
- 存储器
- 输入设备
- 输出设备
中央处理器CPU
(1)定义
CPU是计算机系统的核心部件,负责获取、编译、执行指令
(2)功能
- 程序控制:控制程序执行顺序
- 操作控制:CPU可以产生、运输每条指令的操作信号
- 时间控制:控制操作信号的出现时间、持续时间等
- 数据处理:对数据进行算术运算和逻辑运算
- 响应中断和异常
(3)组成
1:运算器——执行部件
- 算术逻辑单元ALU:处理数据
- 累加寄存器AC:用于计算时暂存数据和存放运算结果
- 数据缓冲寄存器DR:用于读写内存时暂存指令或数据字
- 状态条件寄存器PSW:保存条件码,包括状态标志和控制标志
2:控制器
- 指令控制逻辑:取指令、编译指令、执行指令
- 指令寄存器IR:用于暂存指令(内存→数据缓冲寄存器DR→指令寄存器IR)
- 程序计数器PC:用于保存程序的起始地址或下一条指令的地址
- 地址寄存器AR:用于保存CPU访问的内存单元的地址
- 指令译码器ID:对指令的操作码字段进行分析解释
- 时序控制逻辑:为每条指令按时间顺序提供控制信号
- 总线控制逻辑:为多个功能部件服务的信息通路的控制电路
- 中断控制逻辑:控制中断请求
3. 寄存器组
- 专用寄存器(运算器和控制器中的寄存器)
- 通用寄存器
(4)多核CPU
CPU的内核是重要组成部分,多核CPU在单芯片上由多个内核,可以满足用户同时进行多任务处理的要求。
- AMD:双核
- Intel:双芯
2. 计算机系统的数据表示
机器数:数值在计算机中的表示,采用二进制
(1)按符号分类
- 有符号数:正数或负数,最高位表示符号位
- 无符号数:正数,没有符号位
- 纯整数:小数点在最低位之后
- 纯小数:小数点在最高位之前
有符号数的编码方法(码制)
1:原码 [X]原
正数:“0”+X二进制
负数:“1”+X二进制
0:0 0000000 或1 0000000
- 纯整数
- 正整数 X∈(0, 2n-1-1):X
- 负整数 X∈(-(2n-1-1),0):2n-1+|X|
- 纯小数
- 正小数 X∈(0,1):X
- 负小数 X∈(-1,0):20+|X|
2:反码 [X]反
正数:“0”+X二进制
负数:“1”+X二进制取反
0:0 0000000 或 1 1111111
- 纯整数
- 正整数 X∈(0, 2n-1-1):X
- 负整数 X∈(-(2n-1-1),0):2n-1+X
- 纯小数
- 正小数 X∈(0,1):X
- 负小数 X∈(-1,0):2-2-(n-1)+X
3:补码 [X]补
正数:“0”+X二进制
负数:“1”+X二进制取反+1
0:0 0000000
- 纯整数
- 正整数 X∈(0, 2n-1-1):X
- 负整数 X∈(-2n-1,0):2n+X
- 纯小数
- 正小数 X∈(0,1):X
- 负小数 X∈(-1,0):2+X
4:移码 [X]移(假设偏移2n-1)
正数:“1”+X二进制
负数:“0”+X二进制取反+1
- 纯整数:2n-1+X
- 纯小数:1+X
(2)按小数点的位置分类
1:定点数(小数点的位置固定不变)
- 纯整数:小数点在最低有效位之后
- 纯小数:小数点在最高有效位之前
2:浮点数(小数点的位置不固定,范围大)
表示:2阶码E×尾数F
规格化:F限制范围为[-0.5,-1]或[0.5,1]
IEEE:
表示:数符(-1)S 2阶码E尾数F(E用移码表示,F用原码表示)
分类:
- 单精度:浮点数字长为32位
- 符号位:1位
- 阶码位:8位,偏移量为27-1
- 尾数位:23位
- 双精度:浮点数字长为64位
- 符号位:1位
- 阶码位:11位,偏移量为210-1
- 尾数位:52位
- 扩充精度:浮点数字长为80位
- 符号位:1位
- 阶码位:15位,偏移量为214-1
- 尾数位:64位
规格化:E有0也有1(尾数必须在1到2之间)
2进制转换为10进制
- 将阶码E和尾数F分别转换为十进制
- 阶码E = E-127
- 尾数F = 1+F
- 由符号位确定最后的值
10进制转换为2进制
- 先移动浮点到合适的位置(前一位为1)
- 将阶码E和尾数F分别转换为二进制
- 阶码E = E+127的二进制10000110
- 尾数F = F补0
- 由符号位确定最后的值
非规格化:E全是0
2进制转换为10进制
- 将尾数F转换为十进制
- 阶码E = 1-偏移量
- 由符号位确定最后的值
10进制转换为2进制
- 先移动浮点
- 将尾数F转换为二进制
- 阶码E = 0
- 尾数F = F补0
- 由符号位确定最后的值
特殊值:E全是1
- 尾数为0:无穷大
- 尾数不为0:NAN
浮点数的计算:
- 运算
- 加减
- 对阶:使得阶码相同。阶码较小的数将尾数F右移|EA-EB|位
- 求尾数的和或差
- 乘除:尾数相乘除,阶码相加减
- 加减
- 结果规格化,尾数溢出判别:尾数溢出时需要调整阶码
- 舍入处理
- 阶码溢出判别
(3)校验码
把数据可能出现的编码分为合法编码和错误编码,合法编码用于传输数据,错误编码用于检测数据传输时是否出错。
设计错误编码/校验码
码距指两个合法编码之间不同的二进制位,如果码距为1,则编码发送错误时容易转化为另一个合法编码,无检错能力。
奇偶校验码
在编码中增加一位校验码,从而码距为2。
- 奇校验:编码中1的个数为奇数,当编码的奇数位出错时,编码中的1变成偶数个,出现错误
- 偶校验:编码中1的个数为偶数,当编码的偶数位出错时,编码中的1变成奇数个,出现错误
分类:
- 水平奇偶校验码
- 垂直奇偶校验码
- 水平垂直校验码
海明码
在n位数据之间的特定位置上插入k个校验码,扩大码距。(2k-1>=n+k)
原始数据位Dn-1Dn-2…D0+校验位PkPk-1…P1=海明码Hn+kHn+k-1…H1
校验位的位置:
若校验位为Pi(1<i<k),数据位为Dk,则海明码为Hj(j=2i-1)
H1=P1 H2=P2 H4=P3 H8=P4… H3=D0 H5=D1 H6=D2 H7=D3
校验的方法:
被校验的海明码的下标为所有校验位的下标之和,校验位由自身检验
检验步骤
- 根据数据位数,推测校验位数k
- 确定D和P在海明码H的位置
- 确定校验关系(如果是校验码位则是本身,如果是数据位则从最大的校验位开始找)
H1=P1
H2=P2
H3=D0=H2+H1=P2+P1
H4=P3
H5=D1=H4+H1=P3+P1
H6=D2=H4+H2=P3+P2
H7=D3=H4+H2+H1=P3+P2+P1 - 确定Pi的校验关系串 Pi = DaDb…(即校验关系中包含Pi的D),求Pi
P1:D0 D1 D3
P2:D0 D2 D3
P3:D1 D2 D3
如果是偶校验,则看校验关系串中1的个数是否为偶数,是则Pi=0
如果是奇校验,则看校验关系串中1的个数是否为奇数,是则Pi=0 - 根据P和D求出海明码H
- 检验:根据每个Pi和其校验关系进行校验得出Gi,再对所有Gi进行校验
如果是偶校验,则Gi全为0表示正确
如果是奇校验,则Gi全为1表示正确
循环冗余校验码:通信领域和磁介质
利用生成多项式,为k个数据位产生r个校验位来进行编码,编码长度为k+r。
- 信息码(k位)
- 校验码(r位)
数据位越多,校验能力越强。一般采用模2加减运算(不借位和进位)