1332 字
7 分钟
5.8第五章总结

5.8 本章小结#

本章开头提出的问题的参考答案如下。

  1. 指令和数据均存放在内存中,计算机如何从时间和空间上区分它们是指令还是数据?

    指令和数据在计算机中均以二进制形式共存于同一内存,内存本身无法区分二者。计算机通过CPU的工作阶段时间上区分指令与数据:取指发生在取指阶段,取操作数则发生在执行阶段。在空间上,CPU根据当前阶段将读出的内容送至不同部件:取指阶段的数据锁存至指令寄存器供译码,执行阶段的数据写入通用寄存器并送入ALU运算。因此,指令与数据的区分并不由内存决定,而由CPU的控制信号在特定时序下引导其流向不同寄存器来实现。

  2. 什么是指令周期和时钟周期?它们之间有何关系?

    指令周期是指CPU从内存中取指并完成执行所需的全部时间。在多周期CPU中,它包含多个时钟周期;在单周期CPU中,则恰好等于一个时钟周期。时钟周期是主时钟的一个节拍,也是CPU操作最基本的时序单位。因此,指令周期与时钟周期的关系取决于处理器结构。

  3. 什么是微指令?它和第4章谈到的指令有什么关系?

    微指令是微程序控制方式中的基本控制单元。控制单元发出的最基本控制信号称为微命令,一组用于完成特定微操作的微命令构成一条微指令;若干微指令按序排列形成微程序,用以解释并执行一条机器指令。在微程序控制器中,每条机器指令通常对应一个微程序,而该微程序由多条微指令组成,每条微指令可并行发出多个微命令。

  4. 什么是指令流水线?指令流水线相对于传统体系结构的优势是什么?

    指令流水线是一种将指令执行划分为若干有序阶段,并让多条指令的各个阶段在时间上重叠执行的技术。每个阶段由专用功能部件完成;当前一条指令进入下一阶段时,后续指令便可进入当前阶段,从而实现功能部件的持续利用。与非流水线结构相比,它并不缩短单条指令的执行延迟,但能显著提升单位时间内完成的指令数(吞吐率)。由于仅需增加少量流水线寄存器等硬件即可获得数倍的吞吐率提升,因此成为现代处理器广泛采用的并行处理技术。

5.9 常见问题和易混淆知识点#

  1. 流水线越多,并行度就越高。是否流水段越多,指令执行越快?

    并非流水段越多,指令执行就越快。原因如下:

    1. 流水段增加会引入更多的流水线寄存器,其延迟限制了时钟周期的进一步缩短;同时,段数增多也导致单条指令从进入至流出所需的时钟周期数增加。此外,存在数据或控制冒险时,流水线需要插入停顿,而段数越多,潜在的性能损失就越显著。
    2. 随着流水段数的增加,用于处理结构冲突、数据冒险和控制转移的控制逻辑急剧复杂化,不仅增加硬件开销,还可能成为新的性能瓶颈。
  2. 读后写(WAR)相关和写后写(WAW)相关的概念

    非按序执行的流水线中,由于允许后进入流水线的指令超越先进入的指令先完成执行,因此不仅可能发生 RAW相关,也可能发生WAR和WAW相关。

    1. 读后写(Write After Read, WAR)相关。指当前指令需先读取寄存器的值,后续指令才能向该寄存器写入。若执行顺序颠倒,即写操作发生在读操作之前,则当前指令将读到错误的新值。在下列指令中,寄存器R1可能存在此类相关:当I2在I1读取R1之前写入该寄存器时,I1会错误地读取I2写入的新值。
    I1 add R3, R1, R2 # (R1)+(R2)→R3
    I2 sub R1, R4, R5 # (R4)-(R5)→R1

    在WAR相关中,指令I2的目的操作数是指令I1的源操作数。

    1. 写后写(Write After Write, WAW)相关。指当前指令应先写入寄存器,后续指令再写入同一寄存器,以保证最终结果为后者;若执行顺序颠倒,导致后一条指令先完成写操作,则寄存器的最终值将违背程序语义。在下列指令中,寄存器R1可能存在此类相关:当I2在I1之前写入R1时,R1的最终值将错误地变为I1的结果,而非I2的结果。
    I1 add R1, R2, R3 # (R2)+(R3)→R1
    I2 sub R1, R4, R5 # (R4)-(R5)→R1

    在WAW相关中,指令I2和指令I1的目的操作数相同。

评论