计算机组成原理复习(1)——初始计算机系统

版权声明:本文为博主原创,未经博主允许不得转载。 https://blog.csdn.net/weixin_36904568/article/details/89647677

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进制

  1. 将阶码E和尾数F分别转换为十进制
  2. 阶码E = E-127
  3. 尾数F = 1+F
  4. 由符号位确定最后的值

10进制转换为2进制

  1. 先移动浮点到合适的位置(前一位为1)
  2. 将阶码E和尾数F分别转换为二进制
  3. 阶码E = E+127的二进制10000110
  4. 尾数F = F补0
  5. 由符号位确定最后的值
非规格化:E全是0

2进制转换为10进制

  1. 将尾数F转换为十进制
  2. 阶码E = 1-偏移量
  3. 由符号位确定最后的值

10进制转换为2进制

  1. 先移动浮点
  2. 将尾数F转换为二进制
  3. 阶码E = 0
  4. 尾数F = F补0
  5. 由符号位确定最后的值
特殊值:E全是1
  • 尾数为0:无穷大
  • 尾数不为0:NAN
浮点数的计算:
  1. 运算
    1. 加减
      1. 对阶:使得阶码相同。阶码较小的数将尾数F右移|EA-EB|位
      2. 求尾数的和或差
    2. 乘除:尾数相乘除,阶码相加减
  2. 结果规格化,尾数溢出判别:尾数溢出时需要调整阶码
  3. 舍入处理
  4. 阶码溢出判别

(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

校验的方法:

被校验的海明码的下标为所有校验位的下标之和,校验位由自身检验

检验步骤
  1. 根据数据位数,推测校验位数k
  2. 确定D和P在海明码H的位置
  3. 确定校验关系(如果是校验码位则是本身,如果是数据位则从最大的校验位开始找)
    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
  4. 确定Pi的校验关系串 Pi = DaDb…(即校验关系中包含Pi的D),求Pi
    P1:D0 D1 D3
    P2:D0 D2 D3
    P3:D1 D2 D3
    如果是偶校验,则看校验关系串中1的个数是否为偶数,是则Pi=0
    如果是奇校验,则看校验关系串中1的个数是否为奇数,是则Pi=0
  5. 根据P和D求出海明码H
  6. 检验:根据每个Pi和其校验关系进行校验得出Gi,再对所有Gi进行校验
    如果是偶校验,则Gi全为0表示正确
    如果是奇校验,则Gi全为1表示正确
循环冗余校验码:通信领域和磁介质

利用生成多项式,为k个数据位产生r个校验位来进行编码,编码长度为k+r。

  • 信息码(k位)
  • 校验码(r位)

数据位越多,校验能力越强。一般采用模2加减运算(不借位和进位)

猜你喜欢

转载自blog.csdn.net/weixin_36904568/article/details/89647677