摘要:假定有某种类型的任务,共可分成n个子任务,每个子任务需要时间t,则完成该任务所需的时间即为n×t。若以传统的方式,则完成k个任务所需的时间是knt;而使用流水线技术执行,则花费的时间是(n+k-1)×t。也就是说,除了第一个任务需要完整的时间外,其他都通过并行完成,节省下了大量的时间,只需一个子任务的单位时间就够了。
参数计算
假定有某种类型的任务,共可分成n个子任务,每个子任务需要时间t,则完成该任务所需的时间即为n×t。若以传统的方式,则完成k个任务所需的时间是knt;而使用流水线技术执行,则花费的时间是(n+k-1)×t。也就是说,除了第一个任务需要完整的时间外,其他都通过并行完成,节省下了大量的时间,只需一个子任务的单位时间就够了。
另外要注意的是,如果每个子任务所需的时间不同,则其速度取决于其执行顺序中最慢的那个(也就是流水线周期值等于最慢的那个指令周期),要根据实际情况进行调整。
例如:若指令流水线把一条指令分为取指、分析和执行3部分,且3部分的时间分别是取指2ns,分析2ns,执行1ns。那么,最长的是2ns,因此100条指令全部执行完毕需要的时间就是:
(2+2+1)+(100-1)×2=203ns
另外,还应该掌握几个关键的术语:流水线的吞吐率、加速比。流水线的吞吐率(ThoughPutrate,TP)是指在单位时间内流水线所完成的任务数量或输出的结果数量。完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比称为流水线的加速比(speedupratio)。
例如,在上述例子中,203ns的时间内完成了100条指令,则从指令的角度来看,该流水线的吞吐率为,加速比为500/203=2.46(如果不采用流水线,则执行100条指令需要500ns)。
相关推荐:
软考备考资料免费领取
去领取