• 计算机系统基础知识

    • 计算机系统硬件的基本组成

      计算机硬件由运算器、控制器、存储器、输入设备、输出设备组成;

      运算器、控制器和存储器合起来为CPU;

      输入设备与输出设备为外设;

      存储器为记忆设备,分为外部存储器和内部存储器。

    • 中央处理单元

      ​ 负责获取程序的指令、并对指令进行编码、执行指令。

      • CPU功能

        • 程序控制。CPU通过控制指令的执行来控制程序的执行顺序;

        • 操作控制。CPU产生每条操作指令的操作信号,并将操作信号送往对应的部件,控制对应的部件按指令的功能进行操作;

        • 时间控制。CPU对各种操作的时间进行控制,指令执行过程中操作信号的产生、持续时间、已经出现的时间顺序进行严格的控制。

        • 数据处理。CPU对数据进行数据运算和逻辑运算,对数据加工处理,以便于处理结果被使用。

      • CPU组成

      CPU组成

      CPU主要是由运算器、控制器、寄存器组、内部总线等组成;

      • 运算器

      ​ 运算器由算数逻辑单元、累加寄存器、数据缓冲寄存器、状态条件寄存器组成。进行数据加工处理,用于计算机的算数计算和逻辑计算。

      ​ 主要功能有两点:

      1. 执行所有的算数运算。进行加、减、乘、除以及附加运算。

      2. 执行所有的逻辑运算和进行逻辑测试。或、与、非、零值测试与数值比较。

        • 算数逻辑单元(ALU)

          ​ 负责数据处理,算数运算和逻辑运算。

        • 累加寄存器(AC)

        • 数据缓冲寄存器(DR)

        • 状态条件寄存器

      • 控制器

      ​ 控制整个CPU工作,决定了运行过程的自动化。

      ​ 控制器包括指令控制逻辑、时序控制逻辑、总线控制逻辑、中断控制逻辑。

      ​ 指令控制逻辑:

      ​ 完成获取指令、分析指令、执行指令等操作。即取指令、指令译码、按指令执行码执行、形成下一条执行码地址。

      ​ 时序控制逻辑:

      ​ 为每一条指令按时间顺序提供应有的控制信号。

      ​ 总线控制逻辑:

      ​ 为多个功能部件服务的信息通路的控制电路。

      ​ 中断控制逻辑:

      ​ 控制各种中断请求,并按系统的优先级进行排队,然后逐一交给CPU执行。

      • 寄存器组

      ​ 分类:

      ​ 专用寄存器:运算器和控制器中的寄存器为专用寄存器,功能不能更改。

      ​ 通用寄存器:功能可以由人员控制。

      • 多核CPU
    • 数据表示
      • 权值表示法(R进制转十进制)

      ​ 以小数点为准位,小数点左侧高位的标示位从低位向高加一,由侧由0减一;

      ​ 例如:

      1
      2
      3
      数  值:  7 6 1 . 1 1
      标示位: 2 1 0 -1 -2
      (761.11)8 = 7*8^2 + 6*8^1 + 1*8^0 + 1*8^-1 + 1*8^-2
      • 进制转化(十进制转R进制 除R取余法)

        除R取余,逆向输出。(辗转相除法)

        • 二进制与八进制互转

          8进制一个数由3位2进制表示;

          从低位向高位,每3位为一组。

          8进制转2进制,将每一位用二进制表示即可。

        • 二进制与十六进制互转

        ​ 16进制一个数由4位2进制表示;

        ​ 从低位到高位,每4位为一组。

        ​ 16进制转2进制,将每一位用二进制表示即可。

      • 数据运算

        • 原码

          一个数据8位,对于有符号位,最高位为符号位。0表示正数,1表示负数;

          原码就是将数表示为二进制数;

        • 反码

          正数的反码,等于它的原码;

          负数的反码,在原码的基础上,符号位不变,其他位取反;

        • 补码

          正数的补码,等于它的原码;

          负数的补码,在反码的基础上 加1;

        • 移码

      ​ 在补码的基础上,符号位取反;

      ​ 总结:

      正数 三码合一;

      ​ 计算机计算都是按 补码 进行计算。

      • 数据表示

        • 定点数

          小数点位置不变的数。

          定点整数:小数点位置在最低有效位置之后(纯整数)

          定点小数:小数点位置在最高有效位置之前(纯小数)

        • 浮点数

          小数点位置不固定的数,能表示更大范围。

          • 表示方法:

            ​ N = 2 ^ E * F

            ​ E: 阶码

            ​ F: 尾数

          • 组成部分

            ​ 阶符 阶码 数符 尾数

          • 格式化

            ​ 将尾数的绝对值限定在[0.5, 1]之间。

            ​ 工业标准IEEE 754: (-1)^S 2^E (b0b1b2…bp)

          IEEE 754浮点数对照

          ​ 当S为0时表示正数,1表示负数;

          ​ E为指数,即阶码,用移码表示;

          ​ (B0b1b2…bp) 为尾数,长度为P,用原码表示。

          ​ 阶码计算:指数 + 浮点数指定的偏移量(例如单精度偏移量为127)

          ​ 例子:将176.0625转化为单精度浮点数

          ​ 176.0625将10进制转为2进制:

          ​ 整数部分: 176除2取余为: 10110000

          ​ 小数部分: 0.0625乘2取整为: 0001

          ​ 转化后为: (10110000.0001)2 小数点不占位

          ​ 格式化处理: 1.01100000001 * 2^7(b0可以为1)

          ​ 将b0的尾部拓展单精度23位: 01100000001000000000000

          ​ 阶符号为0,正7,阶码要求偏移量,127 + 7 = 134,即10000110

          ​ 最后表示为:

          ​ 0 10000110 01100000001000000000000

          • 浮点数计算

            第一步: 浮点数进行加减运算时,先进行对阶,低位向高位对,尾数右移;

            第二步: 尾数求差和;

            第三步:结果进行格式化并溢出判断;如果尾数溢出,则需要调整阶码;

            第四步:阶码溢出判断。如果阶码溢出,则运算结果溢出,如果阶码下溢,则结果位0,否则结果正确。

          • 浮点数乘除法

            乘法: 其结果阶码等于阶码相加,尾数相乘;

            除法: 其结果阶码等于被除数减除数的阶码,尾数相除;

    • 校验码
      • 作用

        检测传输的数据是否出错

        码距:是指在一个编码系统中,任意两个合法编码之间至少有多少个不同的二进制位;

      • 分类

        • 奇偶校验码

        • 海明码

          通过在数据位的特定位置插入K个校验位,通过扩大码距进行校错和纠错。

          编码过程:

          A. 设海明码为n位,则K的取值应满足下面条件:

          ​ 2^k - 1 >= n + k

          ​ 求出k的最小值即可.

          B. 编码规则

          ​ 则添加的海明码位为k个,分别为P1,P2,P3…Pk, 原始数据为: D0, D1,…,D(n-1),设生成的海明码为H1,H2….H(n+k).

          ​ 将海明码位k个与数据n分别对应到生成的海明码H中,其中H和P的对应关系为:

          ​ Pi = H(2^(i - 1))

          ​ 即: P1 = H1

          ​ P2 = H2

          ​ P3 = H4

          ​ …

          C. 校验规则

          ​ 海明码中的任何一位都是由若干校验位进行校验;

          ​ 校验位由自身校验(海明码位P);

          ​ 被校验的海明码位(数据位D)的下标等于所有参与校验该位的校验位的下标之和.

          D. 对应关系表

          海明码校验关系表

          如果再用奇校验,则将各位取反即可;

          • 错误检测

            G1 = P1 ⊕ D0 ⊕ D1 ⊕ D3 ⊕ D4 ⊕ D6

            G2 = P2 ⊕ D0 ⊕ D2 ⊕ D3 ⊕ D5 ⊕ D6

            G3 = P3 ⊕ D1 ⊕ D1 ⊕ D3 ⊕ D7

            G4 = P4 ⊕ D4 ⊕ D5 ⊕ D6 ⊕ D7

            如果采用偶校验,则G1G2G3G4全部为0,则校验成功,如果不是全部为0,则存在校验失败,找到对应为1的进行数据修正.(如果奇校验,则相反1)

          • 数据位出错查判

            例如,校验后的G1G2G3G4 = 0101

            说明G1和G4出现问题,但是G0和G3没有问题,可以排除D0, D1, D3, D4, D6,D7,这个可以在G2G3中的到,则出问题的就是D5,即H(10)

          • 根据数据求海明码

            • 求出P1, P2, P3, Pk的值根据公式

            • 将数据填充到H1至H(k+n)中

        • 循环冗余校验码(CRC)

        ​ 利用生成多项式,为k个数据生成r个校验位来进行编码.

        ​ 组成:

        CRC 校验码由信息码生成,校验码越长,校验能力越强.CRC编码采用模2运算.