# 计算机体系结构

# 数据的表示


# 进制转换

  • n 进制,逢 n 进一
  • 基数:
    • 进制中允许使用的数码的个数
  • 位权:
    • 不同位置数码代表的数值
  • 十进制
位权 10310^3 10210^2 10110^1 10010^0
位数 4(千位) 3(百位) 2(十位) 1(个位)
  • (123)10(123)_{10}= 3×\times10010^0+2×\times10110^1+1×\times10210^2=3+20+100=123

  • 十转二:(24)10(24)_{10}= 242^4+232^3=(11000)2(11000)_2

  • 二进制

位权 232^3 222^2 212^1 202^0
位数 4(八) 3(四) 2(二) 1(个)
  • 二转十:(110)2(110)_2=0×\times202^0+1×\times212^1+1×\times222^2=0+2+4=66

  • 八进制

位权 838^3 828^2 818^1 808^0
位数 4(五百一十二) 3(六十四) 2(八) 1(个)
  • 八转十:(127)8(127)_8=7×\times808^0+2×\times818^1+1×\times828^2=7+16+64=8787

  • 十六进制

位权 16216^2 16116^1 16016^0
位数 3(二百五十六) 2(十六) 1(个)
  • 十六进制表示,逢十六进一;1-9,10A,11B,12C,13D,14E,15F
  • 十六进制的 10-15 与二进制转换
    十六进制 二进制
    A 1010
    B 1011
    C 1100
    D 1101
    E 1110
    F 1111

详细视频讲解:https://www.bilibili.com/video/BV1Nx411Y7AD?from=search&seid=3265629291592620858

# 原码、反码、补码和移码

  • 原码
    • 原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。例如:假设用 8 位表示一个数值,则 +11 的原码是 00001011-11 的原码是 10001011
  • 反码
    • 反码通常是用来由原码求补码或者由补码求原码的过渡码。反码表示法和原码表示法一样是在数值前面增加了一位符号位(即最高位为符号位),正数的反码与原码相同负数的反码符号位为 1 ,其余各位为该数绝对值的原码按位取反。例如: +11 的反码是 00001011-11 的反码为 11110100
  • 补码
    • 补码表示法和原码表示法一样是在数值前面增加了一位符号位(即最高位为符号位),正数的补码与原码相同负数的补码是该数的反码末尾加 1 ,这个加 1 就是 “补”。例如: +11 的补码是 00001011-11 的补码为 11110101
    • 注意:其中负数补码转原码,符号位保留,其余各位取反 + 1。
  • 移码
    • 移码(又叫增码)是符号位取反的补码,一般用指数的移码减去 1 来做浮点数的阶码,引入的目的是为了保证浮点数的机器零为全 0。

# 校验码

  • 码距
    • 在一个编码系统中,任意两个合法编码之间至少有多少个二进制位不同
  • 奇偶效验码
    • 通过在编码中增加 1 的个数为奇数或者偶数从而使码距为 2。
  • 海明码
    • 利用奇偶性来检错和校验的方法。假设有 m 位信息码,加入 k 位校验码,则 m+k+1\leq2k2^k

# 处理器组成


# 运算器

  • 运算器通常是由 ALU(算术 / 逻辑单元,包括累加器、加法器等)、通用寄存器(不包含地址寄存器)等组成。

  • ALU进行算数运算和逻辑运算。

    • 支持基本的算术运算、按位逻辑运算、移位操作、多倍精度运算、复杂运算
    • 其中复杂运算包括: 单周期运算、流水线运算、迭代运算

    alu

  • 累加器 AC暂时存放 ALU 运算的结果信息

  • 数据缓冲寄存器 :用来暂时存放由内存储器读出的一条指令或一个数据字。反之,当向内存存入一条指令或一个数据字时,也暂时将它们存放在数据缓冲寄存器中。状态条件寄存器(PSW)保存由算术指令和逻辑指令运算的状态和程序的工作方式。

# 控制器

  • 控制器的组成包含程序计数器(PC)、指令寄存器(IR)、指令译码器、时序部件等。
  • 程序计数器(PC) :存放的是下一条指令的地址。
  • 指令寄存器(IR) :用来保存当前正在执行的一条指令。
  • 指令译码器 :指令中的操作码经过指令译码器译码后,即可向操作控制器发出具体操作的特定信号。
  • 时序部件 :为指令的执行产生时序信号。

# 总线

  • 微型计算机通过系统总线将各部件连接到一起,实现了微型计算机内部各部件间的信息交换。
  • 数据总线 DB 用于传送数据信息。
  • 地址总线 AB 是专门用来传送地址的,地址总线的位数决定了 CPU 可直接寻址的内存空间大小。一般来说,若地址总线为 n 位,则可寻址空间为 2n2^n 字节。
  • 控制总线 CB 用来传送控制信号和时序信号。

# 地址总线总结

  • 地址总线的 位数 决定了 CPU 可直接寻址的内存空间大小,如 8 位微机的地址总线为 16 位 ,则其最大可寻址空间为: $$2^16}=64KB$$ 16 位微机的地址总线为 **20 位 **,其可寻址空间为 $$2{20 =1MB$$
  • 一般来说,若地址总线为 n 位,则可寻址空间为2n2^n 字节

# 指令系统


  • 指令系统是中央处理器所有指令的集合,通常一条指令可分解为操作码和地址码两部分,操作码确定指令的操作类型,地址码确定指令所要处理操作数的位置。

# 寻址方式

  • 指令系统中采用不同寻址方式的目的是扩大寻址空间并提高编程灵活性。常见的寻址方式如图所示:

    xzfs

  1. 立即寻址方式 :通常直接在指令的地址码部分给出操作数。
  2. 内存寻址
    • 直接寻址方式:在指令中直接给出参加运算的操作数或运算结果所存放的主存地址。
    • 间接寻址方式:在指令中给出操作数地址的地址。
    • 变址寻址方式:变址寻址就是变址寄存器中的内容加地址码中的内容即可完成寻址。
  3. 寄存器寻址
    • 寄存器直接寻址:指令在执行过程中所需要的操作数来源于寄存器。
    • 寄存器间接寻址:寄存器存放的是操作数在主存的地址。

# RISC 和 CISC

  • RISC 和 CISC 都是当今 CPU 的两大开发技术

  • RISC ,即精简指令集计算机,属于 CPU 的一种设计模式,对指令数目和寻址方式做了精简

    • 采用 定长指令格式
    • 需要较大的存储空间
    • 常见的精简指令集微处理器有 ARC、ARM、AVR 等
  • CISC ,即复杂指令集计算机,特点是指令数目多而复杂,每条指令字长不等

    • CISC 指令系统丰富,使用频率差别大,处理特殊任务效率高
    • 高级语言实现简单,效率高
    • 常见的复杂指令集有 VAX、PDP-11、x86 等

    zljs

# 流水线

  • 流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。即可以同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度。

# 执行指令的三大阶段

  1. 取指
  2. 分析
  3. 执行
  4. 流水线指令执行时间
    • 标准算法T=第一条指令执行所需时间 +(指令条数-1)× 流水线周期
    • 关于流水线的周期,我们需要知道的是,流水线周期为指令执行阶段中执行时间最长的一段。例如指令流水线把一条指令分为取指令、分析和执行 3 个部分,且 3 个部分的时间分别是取指令 2ns、分析 2ns 及执行 1ns。那么最长的是 2ns,因此 100 条指令全部执行完毕所需要的时间就是(2ns+2ns+1ns)+(100-1)×\times 2ns=203ns。
  5. 流水线的技术指标
    • 吞吐率 :指的是计算机中的流水线在特定的时间内可以处理的任务数量。
                     TP=n/TkTP=n/Tk
      (n 为指令条数,TK 为流水线方式时间),其中理论上的最大吞吐率是:1 / 流水线周期。
    • 加速比 :完成一批任务,不使用流水线所用的时间与使用流水线所用的时间之比称为流水线的加速比。
                     S=TS/TkS=TS/Tk
      (TS 为顺序执行时间,TK 为流水线方式时间)。流水线的效率指的是流水线的设备利用率。
  6. 流水线周期等于执行时间最长给的那个指令周期
  7. 未采用流水线执行时间=(t取指+t分析+t执行×总指令数)未采用流水线执行时间=(t_{取指}+t_{分析}+t_{执行}\times总指令数)

# 存储系统


# 存储方式

  • 存储器中数据常用的存取方式有顺序存取、直接存取、随机存取和相联存取等四种。
  • 顺序存取
    • 存储器的数据是以记录的形式进行组织,对数据的访问必须按特定的线性顺序进行。磁带存储器的存取方式就是顺序存取。
  • 直接存取
    • 共享读写装置,但是每个记录都有一个唯一的地址标识,共享的读写装置可以直接移动到目的数据块所在位置进行访问。访问时间与数据位置有关。磁盘存储器采用的这种方式。
  • 随机存取
    • 存储器的每一个可寻址单元都具有唯一地址和读写装置,系统可以在相同的时间内对任意一个存储单元的数据进行访问,而与先前的访问序列无关。主存储器采用的是这种方式。
  • 相联存取
    • 也是一种随机存取的形式,但是选择某一单元进行读写是取决于其内容而不是其地址。 Cache 采用该方法进行访问。相联存储器是 Cache 一部分, Cache 中有按内容寻址的相联存储器,用于存放与 Cache 中数据相对应的主存地址,可以快速检索、判断 CPU 读取的某个字当前是否存在于 Cache 中。

# 相关术语

  • 位 (bit): 一个二进制表示 1 个 bit
  • 字节 (B,Byte): 1B=8bit1B=8bit
  • 字: 表示 CPU 一次处理的二进制位数,通常为字节的整数倍
  • 存储容量: 存储器可容纳的二进制信息的大小

# 4.3 存储设备

  • 传统意义上存储器分为 RAM 和 ROM。
    1. RAM 和 ROM
      • RAM 是随机存储器,数据可读可写,一旦掉电,数据将消失。ROM 是只读存储器,掉电后数据依然保存。
    • RAM 有静态和动态两种:
      • 静态 RAM 只要上电后信息不丢失,无须刷新电路过程,消耗较多功率,价格也较高。常作为芯片中的 Cache 使用。
      • 最常用的动态 RAM 需要上电后,再定时刷新电路才能保持数据,而动态 RAM 集成度高、存储密度高、成本低,功耗低,适于作大容量存储器。常用在内存中。
    1. Cache
      • 在计算机执行时,需要从主存中读取指令和数据,需要将外存的数据读入内存中,这些读取的过程都是造成计算机性能下降的瓶颈,为了尽可能减少速度慢的设备对速度快的设备的约束,可以利用高速缓存 Cache 技术。
    2. 磁盘
      • 与计算机技术一样,存储技术也在不断发展,在现代计算机中,最常见的存储介质包括机械硬盘、光盘、磁带,固态硬盘 SSD 等。

# 存储计算

  • 实际的存储器总是由一片或多片存储芯片 + 控制电路构成的。
    芯片数量存储器容量/存储芯片容量芯片数量≥存储器容量/存储芯片容量
  • 如果存储器 有 256 个存储单元 ,那么它的地址编码为 0~255 ,对应的二进制数是 00000000~11111111 ,需要用 8 位二进制来表示,也就是地址宽度为 8 位,需要 8 根地址线。存储器中所有存储单元的总和称为这个存储器的存储容量,存储容量的单位是 B、KB、MB、GB 和 TB 等。
    • 例如:按某存储器字节编址,地址从 A4000H 到 CBFFFH,则表示有 (A4000-CBFFF)+1 个字节,即 28000H 个字节,转换为十进制是 160KB。若用 16K×4bit 的存储器芯片构成该内存,共需 160K ×\times 8/16K ×\times 4=20 片。

存储器地址编码=(最大地址最小地址)+1存储器地址编码=(最大地址-最小地址)+1

随机存储传输率=1/存储器周期随机存储传输率=1/存储器周期

非随机存储读写N位所需要的平均时间=平均存取时间+N/数据传输率非随机存储读写N位所需要的平均时间=平均存取时间+N为/数据传输率

  • 平均存取时间

    T=H×T1+(1H)T2T=H\times T_1+(1-H)T_2

    其中 Cache 的命中率为 H,Cache 的访问周期为 T1T_1 , 主存的访问周期为 T2T_2

  • 命中率

    H=N1/(N1+N2)H=N_1/(N_1+N2)

    其中 Cache 的访问次数为 N1N_1 , 主存的访问次数为 N2N_2 ,H 为命中率

# 系统可靠性

  • 计算机系统是一个复杂的系统,而且影响其可靠性的因素也非常繁复,很难直接对其进行可靠性分析。但通过建立适当的数学模型,把大系统分割成若干子系统,可以简化其分析过程。
  1. 串联系统
    • 假设一个系统由 n 个子系统组成,当且仅当 所有的子系统都能正常工作时,系统才能正常工作,这种系统称为串联系统,如图所示:

      clxt

    • 设系统各个子系统的可靠性分别用 R1R_1R2R_2 ,…,RnR_n 表示,则系统的可靠性:

      • R = R1R_1 ×\times R2R_2 ×\times×\times RnR_n
  2. 并联系统
    • 假如一个系统由 n 个子系统组成,只要 有一个子系统能够正常工作,系统就能正常工作,如图所示:

      blxt

    • 设系统各个子系统的可靠性分别用 R1R_1R2R_2 ,…,RnR_n 表示,则系统的可靠性:

      • R = 1-(1-R1R_1×\times (1- R2R_2×\times×\times (1 - RnR_n

# 磁盘阵列 RAID

  • RAID 0需要两块以上磁盘,每个磁盘划分不同的区块,数据采用交叉存取和并行传输这种 磁盘利用率高(100%)读写速度最快 ,但由于没有数据差错控制,因此很容易发生数据错误
  • RAID 1 :磁盘成对组成,每个工作磁盘均有对应的映射,上面保存着与工作盘完全相同的数据, 具有最高的安全性磁盘利用率为 50‰
  • RAID 3 :把奇偶校验码(只能查不能纠错)存在一个独立的磁盘,如果一个磁盘失效,其上的数据可以通过其亻也盘上数据进行异或运算得到,读盘涑度快,但写入速度慢。适用于图像处理等要求高吞吐率的场合,磁盘利用率:n1/nn-1/n.
  • RAID 5 :各块磁盘进行条带化分割,相同的条带进行分布式奇偶校验,检验数据平均分配在每一块硬盘上。磁盘利用率:n1/nn-1/n
  • 组合 RAID 技术 :RAID1+0 以及 RAID0+1,是 RAID0 与 RAID1 组合形式,它提供 RAID1 的安全保障同时提供 RAID0 近似的访问速度。RAID1+0 拥有更高的数据安全性在企业中更常使用。