微处理器设计/性能
一位Wikibookian建议将微处理器设计/性能指标合并到本章,因为 请在讨论页面上讨论是否应该进行此合并。 |
时钟信号是一个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时间是完成指令所需时间和程序中指令数量的函数
有时我们可以单独改进3个组件中的一个,从而减少CPU时间。但很多时候我们会发现权衡——例如,一种增加指令计数但减少时钟周期的技术——我们必须测量总CPU时间才能确定该技术是否使整体性能更好或更差。
**Amdahl定律**是关于计算机性能和优化的定律。Amdahl定律指出,单个处理器组件速度的提高对整个处理器单元性能的影响相对较小。
从最一般的意义上讲,Amdahl定律可以用数学方式表述如下
其中
- Δ是程序加速或减速的倍数,
- Pk是可以改进(或减慢)的指令的百分比,
- Sk是加速倍数(其中1表示没有加速也没有减速),
- k表示每个不同百分比和加速的标签,以及
- n是系统更改导致的不同加速/减速的数量。
例如,如果我们在内存模块中进行速度改进,只有直接处理内存模块的指令才会体验到加速。在这种情况下,程序中加载和存储指令的百分比将是P0,这些指令加速的倍数将是S0。所有其他不受内存单元影响的指令将是P1,加速将是S1,其中
我们将S1设置为1,因为这些指令不会因内存单元的更改而加速或减速。
- SpecInt
- SpecFP
- "Maxim/Dallas 应用笔记 3593" 基准测试
- "Mod51 基准测试"
- EEMBC,嵌入式微处理器基准测试联盟