我在这些幻灯片中表示,GPU通常比CPU具有更深的流水线性。
GPU有更深的管道(对于CPU有几千个阶段和10-20个阶段)
我想找到更多的数字,但尝试谷歌,但找不到任何。我注意到这个维基百科文章注意到奔腾4普雷斯科特是深流水线。
定性地说,流水线怎么会有三个以上的层次呢?考虑到提取/解码/执行周期,这仅仅是3件事?它是有多个功能单元,例如有超过一个解码器,以便一个以上的指令可以在一次解码?一件以上的东西怎么能同时从记忆中变红呢?
请记住在你的答案中包含关于流水线级别的数字。
发布于 2014-03-23 13:50:04
我不知道Crawfis教授是如何为GPU获得数千个流水线级的。虽然GPU通常对依赖操作具有较高的延迟时间(按22个周期计算),但部分原因是在计算结果时没有提供结果(即没有结果转发),部分原因是在子操作序列中处理了类似SIMD的操作块(通常有四个子操作,因此每个子操作只需要四分之一宽)。不幸的是,GPU微体系结构的细节很难找到。
一个中等长度管道的例子可能有助于弄清楚一条管道如何能够超过几个阶段。MIPS R4000 (1990年代初推出)有一个用于简单整数操作的八阶段流水线:
理论上,就像装配线一样,每一个工作单元都可以分成较小的工作单元。然而,就像在装配线上一样,即使工人的数量增加,精细的部门也可以降低吞吐量。(想象一条装配线,每一阶段都会产生一个螺旋。虽然这将允许许多螺丝刀工作在一个单一的螺丝钉,插入和拆除螺丝刀的开销将使这非常低效。在处理器管道中,闩锁和其他开销具有类似的效果。)与传统的工业装配线不同的是,加工流水线也必须处理变化,一个分支错误预测可能与装配过程中向工人沟通不当的变化大致类似;这个问题可能在质量控制检查员发现问题、整个装配线需要停止、所有有缺陷的部分装配产品被移除、生产线重新启动时才会被发现。
关于更现代的例子,请考虑以下几点:
请注意,所有这些现代的微体系结构在某些阶段之间都有缓冲,因此指令不会像简单的管道设计那样简单地流过管道或阻塞。此外,有些操作需要一个以上的周期来执行,有些操作可能不是完全流水线的。
发布于 2014-03-23 03:07:30
好吧,让我们从结尾开始:
怎么能同时从内存中读出一件以上的东西呢?
一直都是。具有64位数据总线的处理器不是一次从内存中读取一个字节,而是一次读取8个字节。此外,解码指令并不局限于只读取一个内存。
它是有多个功能单元,例如有超过一个解码器,以便一个以上的指令可以在一次解码?
有些处理器可能对此有一些并行处理,但不必这样做。处理器在内存读取之间有这么多时间,以至于它可以在一段时间内解码多个指令,直到下一个内存读取可以完成为止。
处理器中管道的限制因素实际上是代码中的执行来回跳跃。如果代码总是按顺序运行,则管道可能很长。处理器试图预测执行的方向,但任何错误的预测都会使管道中完成的其余工作毫无用处。
图形处理器执行的代码是更多的数学和更少的跳跃,所以他们可以使用更长的管道。
发布于 2014-03-23 03:02:00
从内存中提取花费更长的时间,一个时钟周期,否则,报告假定从核心访问。。
例如,NVIDIA (Tesla) GPU数据是使用32个线程处理的,称为warp,你会看到的
当翘曲中的线程发出设备内存操作时,由于内存延迟较长,该指令将花费很长的时间,可能会花费数百个时钟周期。
因此,如果内存提取需要数百个周期,那么流水线可以使处理器忙着执行。
https://stackoverflow.com/questions/22586394
复制相似问题