5.10 一条3个流水段的非线性流水线及其预约表如下:
(1) 写出流水线的禁止向量和初始冲突向量,并画出调度流水线的状态图。
(2) 求流水线的最小启动循环和最小平均启动距离。
(3) 通过插入非计算延迟流水段使该流水线达到最优调度,确定该流水线的最佳启动循环及其最小平均启动距离。
(4) 画出插入非计算延迟流水段后的流水线连接图及其预约表。
(5) 画出插入非计算延迟流水段后的流水线状态图。
(6) 在插入非计算延迟流水段前、后,分别计算流水线的最大吞吐率,并计算最大吞吐率改进的百分比。
5.11 对于一条非线性流水线,请证明其最小平均启动距离的范围是:
(1) 最小平均启动距离的下限是预约表中任意一行"×"的最多个数。
(2) 最小平均启动距离的上限是冲突向量中1的个数再加上1。
5.12 一条由4个流水段组成的非线性流水线的预约表如下,每个流水段的延迟时间都为10ns。
(1) 写出流水线的禁止向量和初始冲突向量。
(2) 并画出调度流水线的状态图。
(3) 求流水线的最小启动循环和最小平均启动距离。
(4) 在流水线中插入一个非计算延迟流水段后,求该流水线的最佳启动循环及其最小平均启动距离。
(5) 画出插入一个非计算延迟流水段后的流水线预约表。
(6) 画出插入一个非计算延迟流水段后的流水线状态图。
(7) 分别计算在插入一个非计算延迟流水段前、后的最大吞吐率。
(8) 连续输入10个任务,计算在插入一个非计算延迟流水段前、后的实际吞吐率。
5.13 在指令级并行度ILP较低时,为什么具有同样ILP的超标量处理机比超流水线处理机的运行效率要好?
5.14 下面一段程序在一台超标量处理机上运行,每个时钟周期发射两条指令。所有指令都要经过"取指令"、"译码"、"执行"和"写结果"四个阶段,其中,"取指令"、"译码"和"写结果"三个阶段的延迟时间都为一个时钟周期。在"执行"阶段,访问存储器部件和逻辑操作部件各延迟一个时钟周期,加法操作部件延迟两个时钟周期,乘法操作部件延迟3个时钟周期,4种操作部件各设置一个。加法部件和乘法部件都采用流水线结构,每一级流水线的延迟时间都为一个时钟周期。每个操作部件的输出都有直接数据通路连接到其它操作部件的输入端。
(1) 列出程序中可能出现的所有数据相关。
(2) 采用顺序发射顺序完成调度方法,画出流水线的时空图,并计算执行这个程序所用的时间。
(3) 采用顺序发射乱序完成调度方法,画出流水线的时空图和各操作的完成时间图,并计算执行这个程序所用的时间。
(4) 如果再增加一个能够存放7条指令的先行指令窗口,采用乱序发射乱序完成调度方法,画出流水线的时空图、各操作的发射时间图和完成时间图,并计算执行这个程序所用的时间。
5.15 在下列不同结构的处理机上运行8×8的矩阵乘法C=A×B,计算所需要的最短时间。只计算乘法指令和加法指令的执行时间,不计算取操作数、数据传送和程序控制等指令的执行时间。加法部件和乘法部件的延迟时间都是3个时钟周期,另外,加法指令和乘法指令还要各经过一个"取指令"和"指令译码"时钟周期,每个时钟周期为20ns,C的初始值为"0"。各操作部件的输出端有直接数据通路连接到有关操作部件的输入端,在操作部件的输出端设置有足够容量的缓冲寄存器。
(1) 处理机内只有一个通用操作部件,采用顺序方式执行指令。
(2) 单流水线标量处理机,有一条两个功能的静态流水线,流水线每个流水段的延迟时间均为一个时钟周期,加法操作和乘法操作各经过3个流水段。
(3) 多操作部件处理机,处理机内有独立的乘法部件和加法部件,两个操作部件可以并行工作。只有一条指令流水线,操作部件不采用流水线结构。
(4) 单流水线标量处理机,处理机内有两条独立的操作流水线,流水线每个流水段的延迟时间均为一个时钟周期。
(5) 超标量处理机,每个时钟周期同时发射一条乘法指令和一条加法指令,处理机内有两条独立的操作流水线,流水线每个流水段的延迟时间均为一个时钟周期。
(6) 超流水线处理机,把一个时钟周期分为两个流水级,加法部件和乘法部件的延迟时间都为6个流水级,每个时钟周期能够分时发射两条指令,即每个流水级能够发射一条指令。
(7) 超标量超流水线处理机,把一个时钟周期分为两个流水级,加法部件和乘法部件的延迟时间都为6个流水级,每个流水级能够同时发射一条乘法指令和一条加法指令。