assembly - 现代 CPU 与 GPU 可以完成多少级流水线?

标签 assembly gpu cpu cpu-architecture

我红了 these slides GPU 通常比 CPU 具有更深的流水线。

GPUs have much deeper pipelines (several thousand stages vs 10-20 for CPUs)



我想找到更多数字,但尝试使用谷歌搜索并找不到任何数字。我注意到这个 wikipedia article注意到 Pentium 4 prescott 是深度流水线化的。

定性地说,流水线怎么可以有 3 个以上的级别?考虑到获取/解码/执行周期,这只有 3 件事吗?是不是有多个功能单元,例如有1个以上的解码器,所以一次可以解码1条以上的指令?如何一次从内存中将超过 1 件事变为红色?

请记住在您的答案中包含有关流水线级别的数字。

最佳答案

好吧,让我们从最后开始:

How can more than 1 thing be read from memory at once?



它总是如此。具有 64 位数据总线的处理器不会一次从内存中读取一个字节,而是一次读取八个字节。此外,解码指令不仅限于一次内存读取。

Is it that there's multiple functional units, for example there are more than 1 decoders so more than 1 instruction can be decoded at a time?



某些处理器可能会为此进行一些并行处理,但并非必须如此。处理器在内存读取之间有很多时间,它可以在这段时间内解码多条指令,直到可以完成下一次内存读取。

处理器中流水线的限制因素实际上是执行在代码中来回跳转。如果代码总是按顺序运行,那么管道可能会很长。处理器试图预测执行的去向,但任何错误的预测都会使流水线中完成的其余工作变得毫无用处。

图形处理器执行的代码需要更多的数学运算,更少的跳转,因此它们可以使用更长的管道。

关于assembly - 现代 CPU 与 GPU 可以完成多少级流水线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22586394/

相关文章:

r - 在 R xgboost 包上拟合模型后,如何释放 GPU 内存?

python - 为什么 sklearn 在 CPU 上比 Theano 在 GPU 上更快?

gpu - 为什么我们使用 CPU 而不是 GPU 进行光线追踪?

c# - 如何在 C# 中获取每个内核的 CPU 负载?

assembly - `rep ret`是什么意思?

string - 不使用预定义函数在程序集中打印字符串

c++ - 如何正确调用命令缓冲区的 vulkan.hpp 构造函数?

cpu - 流水线处理器中时钟寄存器的用途是什么

linux - 循环 0xb7 汇编但不会链接

assembly - 将 .data 部分中定义的整数移至寄存器