跳转到内容

微处理器设计/性能

来自Wikibooks,开放世界中的开放书籍

时钟周期

[编辑 | 编辑源代码]

时钟信号是一个1位信号,在“1”和“0”之间以一定的频率振荡。当时钟从“0”转换到“1”时,称为**正沿**,当时钟从“1”转换到“0”时,称为**负沿**。

从一个正沿到下一个正沿所花费的时间称为**时钟周期**,表示一个**时钟周期**。

1秒内可以容纳的时钟周期数称为**时钟频率**。要获得时钟频率,我们可以使用以下公式

时钟频率以每秒周期数为单位测量。

每指令周期数

[编辑 | 编辑源代码]

在许多微处理器设计中,执行单个指令时,通常会经历多个时钟周期。因此,经常需要统计执行单个指令所需的周期数。这个数字称为处理器的**每指令周期数**或CPI。

由于所有处理器都可能使用不同的CPI,因此仅通过比较时钟频率无法准确地比较多个处理器。比较**每秒指令数**更有用,它可以这样计算

现代处理器中最常见的计量单位之一是“MIPS”,代表每秒百万条指令。一个具有5 MIPS的处理器每秒可以执行500万条指令。另一个常见的指标是“FLOPS”,代表每秒浮点运算次数。MFLOPS是百万FLOPS,GFLOPS是十亿FLOPS,TFLOPS是万亿FLOPS。

指令计数

[编辑 | 编辑源代码]

在微处理器性能测量中,“指令计数”是在程序运行期间执行的指令数。典型的基准程序的指令计数以百万或十亿计——即使程序本身可能非常短,但这些基准程序都有重复数百万次的内部循环。

一些微处理器设计人员可以自由地向指令集中添加或删除指令。通常,减少指令计数的唯一方法是添加指令,以便可以以使用更少指令的方式重写这些内部循环——这些指令每条指令执行“更多工作”。

有时,与直觉相反,我们可以通过使用在内部循环中可能每条指令执行“更少工作”的指令来提高整体CPU性能(即减少CPU时间),但这些指令可以在更短的时间内完成。

CPU时间

[编辑 | 编辑源代码]

**CPU时间**是CPU完成特定程序所需的时间。CPU时间是完成指令所需时间和程序中指令数量的函数

有时我们可以单独改进3个组件中的一个,从而减少CPU时间。但很多时候我们会发现权衡——例如,一种增加指令计数但减少时钟周期的技术——我们必须测量总CPU时间才能确定该技术是否使整体性能更好或更差。

Amdahl定律

[编辑 | 编辑源代码]

**Amdahl定律**是关于计算机性能和优化的定律。Amdahl定律指出,单个处理器组件速度的提高对整个处理器单元性能的影响相对较小。

从最一般的意义上讲,Amdahl定律可以用数学方式表述如下

其中

  • Δ是程序加速或减速的倍数,
  • Pk是可以改进(或减慢)的指令的百分比,
  • Sk是加速倍数(其中1表示没有加速也没有减速),
  • k表示每个不同百分比和加速的标签,以及
  • n是系统更改导致的不同加速/减速的数量。

例如,如果我们在内存模块中进行速度改进,只有直接处理内存模块的指令才会体验到加速。在这种情况下,程序中加载和存储指令的百分比将是P0,这些指令加速的倍数将是S0。所有其他不受内存单元影响的指令将是P1,加速将是S1,其中

我们将S1设置为1,因为这些指令不会因内存单元的更改而加速或减速。

基准测试

[编辑 | 编辑源代码]
华夏公益教科书