跳转到内容

微处理器设计/性能指标

来自维基教科书,开放的书籍,开放的世界

性能指标

[编辑 | 编辑源代码]

性能指标是微处理器的测量值,有助于确定微处理器的性能水平。

多年来,计算机的速度慢得令人难以置信。人们花费了大量的时间和精力来寻找方法,使典型的批处理程序运行得更快——减少运行时间,或者换句话说,提高吞吐量。在此过程中,许多其他东西被牺牲了。

运行时间

[编辑 | 编辑源代码]

运行时间是指运行程序所需的时间。

我们将在后面的基准测试部分讨论准确测量运行时间的一些细微之处。

现在,让我们注意到,对于在任何计算机上运行的任何程序,

每个程序的时间 = 时钟周期 * 每条指令的周期数 * 每个程序执行的指令数

你会看到总时间涉及三个不同的因素。如果能够减少其中任何一个因素,那么时间就会缩短,让用户更开心。

唉,通常情况下,试图缩短一个因素会导致另一个因素变大。有时,CPU 设计师会专注于一个因素,试图将其缩小到最小,并希望由此产生的其他因素的增长足够小,以至于仍然有净改善。

时钟频率

[编辑 | 编辑源代码]

时钟频率(通常称为“时钟速度”)是最容易测量的性能指标之一,也是被过度强调的指标之一。

截至 2008 年,大多数 CPU 的时钟频率以 MHz 为单位。典型的 FPGA 软处理器运行速度约为 10 MHz(时钟周期为 100 ns),但我们将在本书后面的章节中解释将 FPGA 软处理器的时钟频率提高到 100 MHz 以上(时钟周期小于 10 ns)的技术。

每条指令的周期数

[编辑 | 编辑源代码]

从历史上看,所有早期的计算机在执行最简单的指令时都会使用许多时钟周期。在 RISC 革命期间,许多设计师专注于将这一因素降低到接近 1 个指令周期。我们将在本书后面的章节中讨论一些使用过的技术。从那时起,使用超标量执行和多核计算等技术的 CPU 进一步降低了这一指标。这种 CPU 可以在(平均)每条指令使用不到 1 个周期。

“CPI”是衡量给定时钟数内完成的指令数(平均)的吞吐量指标。一个 CPU 可以平均每周期完成 2 条指令(CPI 为 0.5),它可能有一个 20 级流水线,这不可避免地会导致指令获取到该指令完成之间有 20 个周期的延迟。在计算 CPI 时,我们忽略了这 20 个周期。

每个程序执行的指令数

[编辑 | 编辑源代码]

如果要运行的程序是二进制可执行文件,则此数字无法更改。

但是,一些 CPU 设计师有权设计新的指令集(或者至少向旧的指令集添加一些指令)。

早期的 CPU 设计师试图通过添加新的、更复杂的指令来减少此数字,这些指令执行更多的工作。(后来,这个想法被追溯地称为“CISC”。)当给定的程序(可能是基准程序)为这个新的指令集重新编译并执行时,它需要更少的总执行指令才能完成。唉,这些更复杂的指令通常需要更多周期才能执行——或者更糟糕的是,需要更长的时钟周期,这会减慢每条指令的速度——因此净效益并不像希望的那样大。在许多情况下,这种“RICH”指令实际上使运行时间变差(更长)。需要进行基准测试才能确定对指令集的这种更改是否值得。

一些证明它确实值得的例子

执行更多工作的更复杂的指令包括 ARM 处理器的“加载多个”和“存储多个”指令,其他处理器的“多媒体扩展”,大多数 DSP 使用的 MAC 指令等。

有时,可以对 CPU 进行调整,以便在程序中执行更少的指令,而无需增加复杂性——ARM 处理器使用的“每条指令都是条件指令”技术(“条件逻辑”无论如何都需要进行条件分支);“添加更多寄存器”和“寄存器窗口化”思想,它们都试图减少寄存器溢出/重新加载指令的数量;扩展数据总线的宽度,以便每条“加载”或“存储”指令可以传输更多数据(还可以启用更宽的指令);等等。

有一些芯片在单个“指令”的几个周期内完成的事情,任何冯·诺依曼 CPU 都需要数百个周期才能实现——例如,内容可寻址 RAM。

处理器时间

[编辑 | 编辑源代码]

在构建计算机集群时,任何一个芯片的原始 MIPS 都是无关紧要的。当有人需要 teraflop 的性能时,没有一个芯片可以做到。这个人被迫不断添加 CPU,直到他获得他想要的性能。有很多技巧(我们将在后面讨论)可以稍微减少一个程序在一个 CPU 上的运行时间,但会使该 CPU 贵得多。人们通常不会用少数几个运行时间最短的芯片来构建 teraflop 系统,而是使用运行时间稍长但数量众多的 CPU 来构建这样的系统。

在这样的系统中,如果 CPU 是专门为协调工作和快速同步而设计的,那就很有用。

在硬实时系统中,低延迟至关重要。

[1]

大多数移动电子产品中的 CPU——PDA、手机、笔记本电脑、无线键盘、MP3 播放器等——都是降频的。

为什么人们故意将它们降频到远低于其潜在运行时间性能的频率?因为将它们降频到更高的频率会浪费电池寿命。

对特定 CPU 的每一次时钟周期都会消耗(大约)一定量的能量。如果(假设)该 CPU 需要 900,000 个时钟周期才能解码一秒钟的 MP3,那么在播放 MP3 时,我们将 CPU 的频率降频到 0.9 MHz,就能最大限度地延长电池寿命。

假设我们有另一个 CPU 需要 4,000,000 个时钟周期才能解码一秒钟的 MP3。我们应该使用哪个 CPU?最大速度下的绝对最快 MIPS 等级无关紧要。“解码一秒钟的 MP3 所需的时钟周期”无关紧要。对于 MP3 播放器来说,更好的 CPU 是能提供最长电池寿命的 CPU,假设我们足够聪明,可以对每个 CPU 降频以提供其最长电池寿命。换句话说(由于解码 MP3 的“工作量”是固定的,电池中存储的能量也是固定的),更好的 CPU 是 MIPS/mW 比例更高的 CPU。

进一步阅读

[编辑 | 编辑源代码]
  1. "CISC、RISC 和 DSP 微处理器" 作者 Douglas L. Jones 2000 "DSP uP 的大多数引用数字不是 MIPS,而是 MIPS/$$、MIPS/mW" "为什么 RISC/CISC 趋于融合?"
华夏公益教科书