【计算机组成原理】从CPU执行时间聊如何做性能优化

简介: 衡量性能的指标有什么?针对CPU执行时间,我们可以从哪些部分优化?
  1. 衡量性能的指标有什么?
  2. 针对CPU执行时间,我们可以从哪些部分优化?

衡量性能的指标:

  1. 响应时间。执行一个程序需要花费多少时间。
  2. 带宽(也称为吞吐率)。在一定时间内,能处理多少事情。

这里我们主要讨论的是响应时间。

一般情况下,我们把性能定义为时间的倒数,性能 = 1/响应时间,这时候我们就要用时间衡量性能的指标,这时候就需要统计程序的运行时间。

通常我们计算一个程序的运行时间都是在程序开始的时候记录一个时间,程序运行结束的时候记录一个时间, 最后两者求差值。

但是这个计算方式是有一些问题的,假设计算机同时运行着多个程序,那么CPU实际上是在不停的在各个程序之间进行切换。这我们计算的这个时间内,CPU可能切换到其他程序上面。运行程序还涉及到从硬盘网络等途径读取数据。要准备的统计某个程序运行时间,比较两个程序的实际性能,我们要把这些时间刨除掉。

即使我们可以通过系统操作命令,获取程序在CPU上实际花费的时间,也就是程序的CPU运行时间。

但是这时候还有一些不可控的因素,那就是CPU的变化呀,众所周知,现在不同的CPU的主频是不同的,就好比摩托车和自行车的速度是不一样的。同一块的CPU运行同一个程序,也不能保证每次运行的状态都是一样的,满载和降频的情况下,运行程序花费的时间肯定也是不一样的。就像明天就要交作业的你和半个月后要交作业的你,这状态肯定不一样的。

那么此时此刻,我们就需要一个更小的单位,表示CPU运行时间,而且能体现出来不同状态的CPU工作情况。这就是就引入了一个新的东西:CPU时钟

此时的程序CPU执行时间就表示为下面的公式:

$$ 程序的CPU执行时间 = CPU时钟周期数\times时钟周期时间 $$

时钟周期时间可以理解为CPU的最小时间间隔,CPU的最小时间间隔又与主频相关,主频可以理解为CPU在一秒时间内,可以执行的简单指令数量。那么时钟周期时间=1/主频。这就好像我们用钟表计时的时候,秒针跑完一圈花费一分钟,秒针走了60次,最小时间间隔是一秒。

时钟周期数可以理解为程序运行时需要多少CPU的时间间隔,程序又可以分解为一条条的指令,然后我们就可以吧时钟周期数分解为“指令数x每条指令的平均时钟周期数(Cycles Per Instruction,简称CPI)”,需要注意一点,不同的指令需要的时钟周期数是不一样的。

这时候CPU执行时间就可以变成这样三个部分的乘积:

$$ 程序的CPU执行时间=指令数 \times CPI \times Clock Cycle Time $$

那么,现在再看怎么提升性能,就很简单了,只要针对这三部分做调整:

  1. 时钟周期时间,可以通过提升CPU的主频缩短时钟周期时间,但是提升主频后会增大热量,带来散热的问题,会降低CPU的稳定性。
  2. 每条指令的平均时钟周期数CPI,就是一条指令到底需要多少CPU Cycle。我们要尽可能减少每一条指令需要的CPU Cycle。
  3. 指令数,代表执行我们的程序到底需要多少条指令、用哪些指令。这个很多时候是编译器做优化。同样的代码,编译成计算机指令时候,就有各种不同的表示方式。
目录
相关文章
|
2月前
|
编解码 测试技术
【自己动手画CPU】计算机数据表示
【自己动手画CPU】计算机数据表示
105 0
|
1月前
|
存储 缓存 人工智能
计算机的CPU
计算机的CPU
21 1
|
5月前
|
缓存 测试技术 数据中心
【计算机架构】计算 CPU 动态功耗 | 集成电路成本 | SPEC 基准测试 | Amdahl 定律 | MIPS 性能指标
【计算机架构】计算 CPU 动态功耗 | 集成电路成本 | SPEC 基准测试 | Amdahl 定律 | MIPS 性能指标
250 0
|
5月前
|
算法 编译器
【计算机架构】响应时间和吞吐量 | 相对性能 | 计算 CPU 时间 | 指令技术与 CPI | T=CC/CR, CC=IC*CPI
【计算机架构】响应时间和吞吐量 | 相对性能 | 计算 CPU 时间 | 指令技术与 CPI | T=CC/CR, CC=IC*CPI
266 0
|
4月前
|
机器学习/深度学习 并行计算 Android开发
Int8量化算子在移动端CPU的性能优化
Int8量化算子在移动端CPU的性能优化
|
1月前
|
存储 人工智能 并行计算
计算机架构:漫游CPU的奥秘世界(二)
计算机架构:漫游CPU的奥秘世界
52 0
|
1月前
|
存储 人工智能 缓存
计算机架构:漫游CPU的奥秘世界(一)
计算机架构:漫游CPU的奥秘世界
62 0
|
4月前
|
JavaScript 前端开发 Java
关于对计算机发展史、冯诺依曼体系、CPU基本工作流程以及关于编程语言的简单认识
关于对计算机发展史、冯诺依曼体系、CPU基本工作流程以及关于编程语言的简单认识
|
4月前
|
存储 缓存 C语言
内存与CPU:计算机默契交互的关键解析
内存与CPU之间的密切互动是计算机运行的关键。从RAM到Cache,内存的物理结构和读写过程都影响着计算机的性能。指针在内存中的作用至关重要,就像楼房模型和数组一样,帮助我们理解内存的工作原理。了解内存的重要性,是深入了解计算机运行的第一步。
内存与CPU:计算机默契交互的关键解析
|
4月前
|
存储 缓存 Java
揭秘计算机指令执行的神秘过程:CPU内部的绝密操作
本文介绍了计算机指令和CPU如何执行指令。它解释了计算机指令可以被视为CPU所理解的语言,不同的CPU支持不同的指令集。文中重点介绍了MIPS指令集作为示例。同时,还描述了CPU的内部处理过程,包括控制单元、算术逻辑单元和数据单元。文章最后讨论了CPU和内存之间通过地址和数据总线进行的数据传输。
105 1

热门文章

最新文章