机组学习笔记之——性能与功耗分析

先上一张计算机组成原理的总结图。

在这里插入图片描述
思维导图连接

概述

作为一名开发狗,经常拷问自己的灵魂三问?

  • 这个程序有哪里可以优化的吗?
  • 这次访问的时间有点长呐
  • 这次查询的速度有点慢呀

我们经常说的这些“优化”,执行时间长,查询速度慢都是和计算机性能相关的名词,如何用量化的指标进行表述出来,以及提升性能从哪些方面入手呢?希望通过我的学习和思考给你一些启发;

性能指标

  • 响应时间
    直观来说是由客户端发送请求,到结果返回所消耗的时间。即程序的执行时间,降低响应时间意味着计算机运算的更快。

  • 吞吐率
    吞吐率是指一定时间范围内所能处理的事情(计算机处理的数据和指令)。缩短程序的响应时间,让程序执行的更快,一般情况下能够提升吞吐率。

影响性能的因素

我们可以通过一个简单的公式来表示性能;
性能 = 1 时 间 \frac{1}{时间} 1,这里我们单纯使用时间还会存在两个问题,我们看下面这个指令结果:

  • 1 时间会不准,程序运行的时间=user用户态时间+sys内核态时间+程序切换的时间
  • 2 不同的硬件,主频会影响指令周期。即使相同的电脑也会存在降频的因素

$ time seq 1000000 | wc -l
1000000


real  0m0.101s
user  0m0.031s
sys   0m0.016s

我们总结出:程序CPU的执行时间=指令数* CPI * 时钟周期时间,我们在考虑优化的时候应该从这个三个方向进行出发;

  • 指令数:代码由编译器转换为指令,针对不同的硬件会有不同的表达方式
  • 每条指令的平均时钟周期 Cycle Per instruction CPI:通过“流水线”,“冒险预测”等方式尽可能的降低CPU Cycle
  • 时钟周期时间:不断的提升电脑主频,降低时钟周期时间

功耗:性能提升的拦路虎

我们上面讲到提升的性能的三个点,我们这里重点说下“时钟周期时间”(因为只有这块学习的深入些【笑哭】)。简单来说就是如何能让我们的CPU能够算的更快些,一方面我们想CPU中加入更多的晶体管,增加密度,另一方面是晶体管的打开和关闭能够更快一些,也就是提升主频。这两者都会面临的问题是耗电散热
直观来看,如果相同大小的CPU中堆积了更多的晶体管,晶体管散发的热量就会很大。通常我们会采取“风扇”,“水冷”等操作来降温。据说腾讯的服务器是放在山洞中,微软的是放在深海…

热量公式
功耗 ≈ \thickapprox 1 2 \frac{1}{2} 21 ×负载电容× 电 压 2 电压^2 2×开关频率×晶体管数量
在这里插入图片描述

我们单纯从“算的更快”这个角度已经有很大限制,转换思路我们从“搬的更多”来提升性能。增加计算机的核数,使程序并行计算已经成为当前比较流行的做法。如大数据分布式计算AI中的矩阵计算

在这里插入图片描述

综合以上的学习,对于性能的优化,我们学习了“摩尔定律”,“并行计算”之外,对于计算机组成原理的三大原则,进行添加解读:

  • 1、加速大概率事件,例如“缓存”,“局部性原理”。将热点数据以及邻近数据加载到内存当中。还有人工智能中的“GPU”,针对大量的矩阵运算进行加速。再说到JVM编译过程中的“热点编译”。总结一句话:非均匀分布的时间处理,都可以采用该策略,都会有优化空间
  • 2、流水线处理,由于CPU计算资源与存储资源的性能存在很大差异,流水线处理能够更有效的利用计算机资源。
  • 3、预测与冒险,对我们的程序执行做出提前的预判,提高程序的性能。如在做数组循环时,直观的预测访问当前元素时会访问下一个元素。

参考文献:
极客时间:深入浅出计算机组成原理
计算机组成与设计[硬件与软件接口] 1.6与1.7
创作不易,喜欢的话记得收藏哦!持续更新…

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值