Amdahl定律(阿姆达尔定律)

简介: Amdahl定律(阿姆达尔定律)

Amdahl 定律是计算机系统中的一个重要定律,核心思想是:我们对计算机系统的某一部分加速的时候,该加速部分对系统整体性能的影响取决于该部分的重要性和加速程度。也就是说,比如一个应用程序A,当系统执行他的时候所需要的时间是T,那么系统执行的时候可能是好几部分在执行他,假设系统某一部分执行所需要的时间为t,t与T的比值是a(t / T = a,也就是说 t = aT), 而该部分性能提升了k倍,那么所需要的时间就变成了 t’ = aT / k。这时候总的执行时间为


T(总) = T - t + t'  

T(总) = T - t + t' 
    = T - aT + aT / k 
      = (1 - a) *T + (aT) / k
      = (1 - a + a/k) * T  

这个时候,加速比就是:S = T / T(总)

          T                   1
s =------------------  =  ---------------
   (1 - a + a/k ) * T      (1 - a + a/k)

假如说:系统中某个部分运行程序耗时比例为60%,他的加速因子为3(k = 3),那么我们可以获得的加速比为

1 / (1 - 0.6 + 0.6 / 3) = 1 / 0.6 = 1.6667

说明,我们对系统一个部分作出重要改进,提速三倍,但是整体的速度却只提速1.6667,明显小于这一部分的提速。这就是Amdahl 的主要观点,要想显著加速整个系统,必须提升全系统中相当大部分的速度。


细节: 表示相对性能:性能提升最好的表示方法就是用比例,T(old) / T(new),如果速度有所改进,那么该比值就会大于1,比如时间由4变成了2,那么比值就是2,我们可以用 ”2.0X“来表示2倍。


Amldahl定律有一个有趣的情况就是考虑k趋向于无穷的时候,这就意味着,我们可以取系统的某一部分将其加速到一个点,在这个点上,这部分花费的时间可以忽略不计,那么就是S(k -> oo) = 1 / (1 - a)。举个例子:

如果60%的系统能够加速到不花时间的程度,我们获得的净加速比仍只有1 / (1 - 0.6) = 1 / 0.4 = 2.5X。


Amdahl定律描述了改善任何过程的一般原则,除了可以用在加速计算机系统方面,还可以用在公司试图降低刀片制作成本,或者学生提高自己的学分绩点平均值等方面。我们常常把性能提升2倍或者更高的比例因子,这么高的比例因子只有通过优化系统的大部分组件才可以获得。


练习题1: 假设你是卡车司机,你要将货物从A 运送到B,全程2500km,在限速范围内,你估计平均速度为100km/h,那么整个过程需要25小时

1). 你听新闻说在你送货的某一段路上取消了限速,这使得行程中1500km可以以150km/h速度行驶,那么这对整个行程的加速比是多少?

2). 你可以为自己的卡车买个新的涡轮增压器,使自己的卡车跑得更快,使得不限速的那段路程跑得更快,如果想让整个行程的加速比为1.67X,那么你必须以多块的速度通过加速的那段路段?


练习题2: 公司的市场部向你承诺,下一个版本的软件性能将改进2X,这项任务被分配给你,你已经确认只有80%的系统能被改进,那么,这80%这一部分需要被改进多少(即k取多少)才能达到整体性能目标?


练习题答案请参考Amdahl定律练习题答案


参考书籍:《深入理解计算机系统(第三版)》

相关文章
|
缓存 编译器
软件体系结构 - 指令集架构
软件体系结构 - 指令集架构
485 0
|
存储 NoSQL Redis
容器部署日志分析平台ELK7.10.1(Elasisearch+Filebeat+Redis+Logstash+Kibana)
容器部署日志分析平台ELK7.10.1(Elasisearch+Filebeat+Redis+Logstash+Kibana)
1376 0
|
网络协议
伪头部校验
伪头部校验
1254 6
|
存储 缓存 算法
【软考:软件设计师】 3 计算机组成与体系结构(二)详解存储系统 | 输入输出与总线
【软考:软件设计师】 3 计算机组成与体系结构(二)详解存储系统 | 输入输出与总线
1351 0
|
存储 Unix Serverless
【C语言】常用函数汇总表
本文总结了C语言中常用的函数,涵盖输入/输出、字符串操作、内存管理、数学运算、时间处理、文件操作及布尔类型等多个方面。每类函数均以表格形式列出其功能和使用示例,便于快速查阅和学习。通过综合示例代码,展示了这些函数的实际应用,帮助读者更好地理解和掌握C语言的基本功能和标准库函数的使用方法。感谢阅读,希望对你有所帮助!
1684 8
|
机器学习/深度学习 分布式计算 算法
【大数据分析&机器学习】分布式机器学习
本文主要介绍分布式机器学习基础知识,并介绍主流的分布式机器学习框架,结合实例介绍一些机器学习算法。
|
Java Maven
maven子模块无法继承父模块的jar包解决方案
maven子模块无法继承父模块的jar包解决方案
664 120
【5分钟+】计算机系统结构:CPU性能公式
【5分钟+】计算机系统结构:CPU性能公式
1830 0
【5分钟+】计算机系统结构:CPU性能公式
|
算法
Modbus-RTU数据帧
Modbus-RTU数据帧
891 0
|
块存储 芯片 内存技术
计算机组成原理(4)-----Cache的原理及相关知识点(1)
计算机组成原理(4)-----Cache的原理及相关知识点
1659 2

热门文章

最新文章