Mat*_*ons 25 cpu computer-architecture
我一直在学习更多关于处理器如何工作的知识,但我无法找到关于每个周期指令的直接答案。
例如,我的印象是四核 CPU 每个周期可以执行 4 条指令,因此以 2Ghz 运行的四核 CPU 每秒可以执行 80 亿次操作。是这种情况吗?
我敢肯定它过于简单化了,但是如果有指南或其他我可以用来让自己直截了当的东西,我绝对愿意接受想法。
Kev*_*nko 38
我喜欢用洗衣的比喻来思考它。CPU 指令就像一大堆衣服。您需要为每个负载使用洗衣机和烘干机。假设每个运行需要 30 分钟。那就是时钟周期。旧 CPU 会先运行洗衣机,然后运行烘干机,每次都需要 60 分钟(2 个周期)来完成每件衣物。
管道: 管道是指您同时使用两者——您先清洗一个负载,然后在干燥时清洗下一个负载。第一次加载需要 2 个周期才能完成,但第二个加载在 1 个周期后完成。因此,除了第一次加载外,大多数加载只需要一个周期。
超标量:将 所有衣物带到自助洗衣店。获取 2 个垫圈并将它们都装入。完成后,找到 2 个烘干机并同时使用它们。现在,您可以在 60 分钟内清洗和烘干 2 件衣物。即 2 个周期中的 2 个负载。每次加载仍需要 2 个周期,但您现在可以执行更多操作。现在平均时间是每个周期 1 个负载。
带流水线的超标量: 清洗前 2 个负载,然后在干燥时,用接下来的 2 个负载加载垫圈。现在,前 2 次加载仍需要 2 个周期,然后在 1 个周期后完成接下来的 2 个加载。因此,大多数情况下,您在每个循环中完成 2 次加载。
多芯:将一半的衣物交给母亲,她也有 2 台洗衣机和 2 台烘干机。两个人一起工作,你可以完成两倍的工作。这类似于超标量,但略有不同。您不必自己将所有衣物移入和移出每台机器,她可以与您同时进行。
这太棒了,我们可以在相同的时间内比以前多洗八倍的衣服,而无需制造更快的机器。(时钟速度加倍:洗衣机只需 15 分钟即可运行。)
现在,让我们谈谈事情是如何出错的:
管道气泡: 您有一个污渍没有在洗涤中出现,因此您决定再次洗涤它。现在干衣机只是坐在那里,等着做点什么。
Cache Miss:运送脏衣服的卡车堵在路上。现在您有 2 台洗衣机和 2 台烘干机,但您没有完成任何工作,因为您必须等待。
根据出错的频率,我们不可能每个周期都完成 4 次加载,因此实际完成的工作量可能会有所不同。
分支预测:嗯,你开始在干净的衣服上洗衣服,以防以后弄脏它们,这样它们就已经干净了......好吧,这就是类比分解的地方......
Lud*_*erl 23
在 CISC 架构(x86、68000、VAX)中,一条指令功能强大,但需要多个周期来处理。在旧架构中,周期数是固定的,现在每条指令的周期数通常取决于各种因素(缓存命中/未命中、分支预测等)。有表格可以查找那些东西。通常还可以方便地实际测量特定情况下某条指令需要多少个周期(请参阅性能计数器)。
如果您对 Intel 的详细信息感兴趣,Intel 64 and IA-32 Optimization Reference Manual是一本非常好的读物。
RISC(ARM、PowerPC、SPARC)架构意味着通常一条非常简单的指令只需要几个(通常只有一个)周期。
但无论是 CISC 还是 RISC,都有超标量架构。CPU 不是在处理一条又一条指令,而是同时处理许多指令,非常像流水线。
结果是:如果您只是查找程序中每条指令的周期,然后将它们全部加起来,您最终会得到一个数字方式到高。假设您有一个单核 RISC CPU。处理单条指令的时间永远不会少于一个周期的时间,但整体吞吐量很可能是每个周期的几条指令。
| 归档时间: |
|
| 查看次数: |
18597 次 |
| 最近记录: |