在现实世界,管线以很多不同的形式诠释着自己的概念,例如工业生产线或滑雪缆车。它也被用于图像渲染领域。
一条管线由很多阶段组成。例如在输油管线中,直到第二阶段的油被运送到第三阶段之后,第一阶段的油才有地方去。这暗示了管线的速度取决于最慢的阶段,无论其它阶段有多快。
最好的情况下,一个非管线系统在分为n条管线后将获得n倍加速。这种加速表现是使用管线的主要原因。例如,只有一个座位的滑雪缆车是低效的;增加更多的座位可以适当地给升到山顶的滑雪者数量提供加速。管线的各阶段独立运行,但直到最慢的阶段完成其任务它们都将闲置。如若一个汽车生产线上的方向盘安装阶段需要三分钟而其它每个阶段都只要两分钟,最快的生产率也就是三分钟一辆车了。在方向盘安装未完成时,其它阶段都不得不闲着。对于这种特殊的管线,方向盘阶段就是瓶颈,因为它决定了整个生产速度。
这种管线结构也见于实时计算机绘图领域。实时渲染管线可被粗略分为三个概念性阶段——应用段、几何段和光栅化段。这一结构是渲染管线的引擎核心。它可以被用于实时计算机绘图应用中。这些阶段又各自内含管线,也就是说它们包括了一些小阶段。我们将概念阶段(应用段、几何段和光栅化段)与功能性阶段以及管线性阶段区别开来。一个功能性阶段有某种需要完成的任务但却不指定管线中任务执行的方式。一个管线性阶段,从另一方面说,在运行时与所有其它管线性阶段完全没区别。为了满足更高需求,一个管线性阶段可能会被平行化。例如,几何段可能会被分为五个功能性阶段,但是只有被调用的绘图系统才能决定将其分为多少个管线性阶段。一个特定的调用方式可能会将两个功能性阶段合并成一个管线性阶段,同时将另一个耗时较久的功能性阶段拆分开为多个管线性阶段,甚至将其平行化。
最慢的管线性阶段决定了渲染速度,也就是图片的更新率。这种速率可以用每秒帧数(fps)也就是每秒渲染的图片数量来计量。它也可以被表示为赫兹(Hz),也就是刷新率1/s的简化符号。应用产生图片的耗时通常千变万化,取决于展示每一帧所需的计算复杂性。每秒帧数既可衡量特定帧,也可用于某使用阶段的平均表现。赫兹被用于硬件,比如显示器,一般被定为固定率。鉴于我们在同管线打交道,将所有被渲染数据通过整条管线的耗时相加是不足以得到刷新率的。这当然是管线结构所带来的特点。管线允许一些阶段被平行运行。如果我们可以定位瓶颈,也就是管线的最慢阶段,并且测量到数据通过那个阶段的耗时,我们就可能算出渲染速度。假设瓶颈阶段用了20ms(毫秒)执行,渲染率就应该是1/0.020=50Hz。但是只有当输出设备能以这种速度更新时,这才是真的;不然真实的输出率将变慢。在其它的管线领域,术语吞吐量将代替渲染速度。
网友评论