每周期指令数与增加的周期数

每周期指令数与增加的周期数

增加每周期指令数或者增加循环次数两者都是处理器制造商的有效设计选择。我理解理论,但如果我能举出一些现实生活中的例子,我会更清楚。

那么,有人能给我举一些例子来说明这两种设计选择的好处吗?比如哪种应用程序/应用程序类型/流程可以利用更高的 IPC 计数,哪种可以利用更高的循环计数。

答案1

计算机架构师

提高 IPC 所需的工程努力比单纯提高时钟频率要多得多。例如,为了提高 IPC,引入了流水线、缓存、多核等,这些技术变得非常复杂,需要很多晶体管。

尽管最大时钟频率受给定设计的关键路径长度限制,但如果幸运的话,您可以无需任何重构即可提高时钟频率。即使您必须缩短路径长度,变化也不会像上述技术那样深刻。

然而,对于目前的处理器来说,时钟频率已经达到了经济极限。此时,速度的提升完全源于 IPC 的增加。

程序员

从程序员的角度来看,这目前还是一个问题,因为他必须调整自己的编程风格以适应计算机架构师创建的新系统。例如,为了利用高 IPC 值,并发编程将变得越来越不可避免。

答案2

我实际上已经设计了几个处理器(很多年前),并且在权衡方面有一点经验。

为了增加每周期指令数(或者更有可能的是,减少每条指令的周期数)通常必须“投入硬件”来解决问题——增加更多的门、锁存器和多路复用器。超过某个点(大约十年前就超过了)后,您必须“流水线化”并同时执行多个指令。这种复杂性的增加不仅增加了基本成本(因为芯片的成本与其占用的面积有关),还增加了错误通过初始设计审查并导致必须“重新设计”的坏芯片的可能性——这对成本和进度造成了重大影响。此外,复杂性的增加会增加负载,以至于在没有更多硬件的情况下,周期的长度实际上会增加。您可能会遇到添加硬件减慢速度的情况。(事实上,我曾经见过这种情况。)

此外,“流水线”可能会遇到由于频繁(和意外)分支和其他类似问题而导致流水线“中断”的情况,从而导致处理器运行缓慢。因此,这种做法的效率是有限的。

为了加快单个周期,你需要做以下三件事之一:

  1. 使用更快的技术(如果技术可用,这是“不需思考的”,但新的、更快的技术并不像以前那样频繁出现)
  2. 以某种方式从“关键路径”中删除逻辑(可能通过从指令集中删除复杂指令或在软件级别添加其他限制)。
  3. 减少通过最慢的数据路径的传播延迟(这通常意味着再次“投入硬件”来解决问题 - 并且有可能适得其反并减慢速度)。

因此,这需要很多权衡,并且有点像在雷区中跳踢踏舞。

相关内容