【计算机架构】程序指令计数 | 功耗计算 | 电力功耗 | 安德尔定律(Amdahl‘s Law)

简介: 【计算机架构】程序指令计数 | 功耗计算 | 电力功耗 | 安德尔定律(Amdahl‘s Law)

 


0x00 程序的指令计数

程序的指令计数(Instruction Count)由程序本身、ISA(指令集架构)和编译器决定。这表示一个程序中包含的指令数量受到程序编写方式、计算机体系结构和编译器的影响。

每条指令的平均周期数(Average cycles per instruction,CPI)是由CPU硬件决定的。不同的指令可能需要不同的时钟周期数来执行,因此平均CPI受指令混合(instruction mix)的影响。

指令混合是指程序中不同类型的指令的比例。某些指令可能需要更多的时钟周期来执行,而其他指令可能需要较少的周期。平均CPI是这些不同指令的CPI的加权平均,其中权重由它们在指令混合中的相对频率决定。我们可以用以下公式来计算:

举个例子:

计算机 A: 周期时间 = 250ps,CPI = 2.0 • 计算机 B: 周期时间 = 500ps,CPI = 1.2 • 相同的ISA • 哪台计算机更快,快多少?

更多细节:如果不同指令类别需要不同的周期数,那么:

加权平均 CPI 为:

其中, 属于相对频率 (Relative frequency) 。

因此,对于性能计算,我们可以把公式总结如下:

单处理器性能:

0x01 功耗计算

对于 CMOS 芯片,传统的主要能耗在于开关晶体管,称为动态功耗。

对于移动设备,能量更好的度量标准:

对于固定任务,减慢时钟频率(切换频率)可以减小功耗,但不能减小能耗。

电容负载取决于连接到输出的晶体管数量和技术,技术决定了电线和晶体管的电容。

降低电压有助于减小功耗和能耗,因此从 5V 降至 1V。

为了节省能量和动态功耗,大多数CPU现在会关闭不活动模块的时钟(例如浮点运算单元)。

举个例子:假设电压减小15%导致频率减小15%,对动态功耗的影响如何?

我们根据公式:

现在,我们有一个 15% 的电压减小,这意味着新的电压将是原电压的0.85倍,而频率也减小了15%,即新频率是原频率的 0.85 倍。将这些值代入公式中:

现在,我们可以计算新动态功耗与原动态功耗之间的比例:

容量项和 1/2 会在分子和分母中互相抵消,所以:

新的动态功耗 / 原动态功耗 =

新的动态功耗 / 原动态功耗 = 0.614125

所以,通过减小电压15%并导致频率减小 15%,动态功耗减小到原来的约 61.41%。

0x02 电力功耗(Power consumtion)

因为即使晶体管关闭时,漏电流仍然会流动,所以静态功耗也变得重要。

在晶体管尺寸更小的处理器中,漏电流增加。即使关闭了晶体管,增加晶体管的数量也会增加功耗。在2006年,漏电目标为总功耗的25%;高性能设计为40%。非常低功耗系统甚至会降低非活动模块的门电压以控制漏电带来的损失。

在做出设计折衷决策时,通常应该优先考虑常见情况而非不太常见的情况。例如,如果在计算机系统中指令提取和解码单元的使用频率高于乘法器,那么应该首先对前者进行优化。又如,如果一个数据库服务器每个处理器都有50个磁盘,那么存储可靠性可能比系统可靠性更重要,因此应首先对其进行优化。

通常,常见情况比不太常见情况更为简单,而且可以更快地完成。这意味着可以通过优化常见情况来提高性能,即使这可能会对不太常见的情况产生一些影响。举例来说,当将两个数字相加时,溢出的情况非常罕见,因此通过优化不发生溢出的常见情况来提高性能可能更为有效。这种方式可能会减慢处理溢出的速度,但整体性能会因为优化常见情况而得到改进。在评估常见情况以及通过加速常见情况来提高性能时,我们需要考虑到 安德尔定律

0x03 安德尔定律(Amdahl's Law)

Amdahl's Law(安德尔定律)是一项关于计算机性能优化的重要原则,由计算机科学家 Gene Amdahl 于 1967 年提出。该定律强调了在优化计算系统时需要关注性能的瓶颈,特别是涉及并行计算的情况。

安德尔定律的核心思想是,当你尝试提高一个系统中某个部分的性能时,性能提升会受到系统中其他部分的限制,尤其是在多处理器或多核系统中。这意味着无论你花多少时间和资源来提高一个部分的性能,整个系统的性能提升会受到那个部分的限制。

最佳期望:

举个例子:新的 CPU 速度快了 10 倍,服务器受 I/O 限制,因此 60% 的时间用于等待I/O操作。

显然,人类天性倾向于被速度提高 10 倍所吸引,而忽视了只是提高了 1.6 倍的现实。


📌 [ 笔者 ]   王亦优
📃 [ 更新 ]   2022.
❌ [ 勘误 ]   /* 暂无 */
📜 [ 声明 ]   由于作者水平有限,本文有错误和不准确之处在所难免,
              本人也很想知道这些错误,恳望读者批评指正!

📜 参考资料 

C++reference[EB/OL]. []. http://www.cplusplus.com/reference/.

Microsoft. MSDN(Microsoft Developer Network)[EB/OL]. []. .

百度百科[EB/OL]. []. https://baike.baidu.com/.

比特科技. C++[EB/OL]. 2021[2021.8.31]. 

相关文章
|
2月前
深挖计算机的根:汇编语言与计算机架构之间不可告人的秘密
【8月更文挑战第31天】本文深入探讨了汇编语言与计算机架构之间的重要联系。通过解析汇编语言的基本概念及其与硬件的直接映射关系,文章展示了它在计算机体系中的独特地位。以一个简单的“Hello, World!”汇编程序为例,详细说明了汇编语言如何操作底层硬件。尽管现代软件开发中较少使用汇编语言,但掌握它有助于理解计算机工作原理,对于性能优化和系统编程至关重要。
36 2
|
9天前
|
网络协议 安全 中间件
系统架构设计师【第2章】: 计算机系统基础知识 (核心总结)
本文全面介绍了计算机系统及其相关技术,涵盖计算机系统概述、硬件、软件等内容。计算机系统由硬件(如处理器、存储器、输入输出设备)和软件(系统软件、应用软件)组成,旨在高效处理和管理数据。硬件核心为处理器,历经从4位到64位的发展,软件则分为系统软件和应用软件,满足不同需求。此外,深入探讨了计算机网络、嵌入式系统、多媒体技术、系统工程及性能评估等多个领域,强调了各组件和技术在现代信息技术中的重要作用与应用。
21 3
|
2月前
|
机器学习/深度学习 算法 数据库
阿里云服务器架构区别解析:从X86计算、Arm计算到高性能计算架构的区别参考
在我们选择阿里云服务器的架构时,选择合适的云服务器架构对于提升业务效率、保障业务稳定至关重要。阿里云提供了多样化的云服务器架构选择,包括X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器以及高性能计算等。本文将深入解析这些架构的特点、优势及适用场景,以供参考和选择。
阿里云服务器架构区别解析:从X86计算、Arm计算到高性能计算架构的区别参考
|
2月前
|
数据可视化 NoSQL Serverless
现代化 Web 应用构建问题之Serverless架构的Web站点费用计算如何解决
现代化 Web 应用构建问题之Serverless架构的Web站点费用计算如何解决
37 1
|
2月前
|
运维 安全 Linux
计算机架构“寒武纪爆发”,操作系统进化迸发中国浪潮
计算机架构“寒武纪爆发”,操作系统进化迸发中国浪潮
|
2月前
|
存储 算法 前端开发
JVM架构与主要组件:了解Java程序的运行环境
JVM的架构设计非常精妙,它确保了Java程序的跨平台性和高效执行。通过了解JVM的各个组件,我们可以更好地理解Java程序的运行机制,这对于编写高效且稳定的Java应用程序至关重要。
39 3
|
27天前
|
缓存
计算机X86架构
【9月更文挑战第7天】计算机的基本工作原理,重点阐述了CPU(中央处理器)及其内部结构,包括运算单元、数据单元和控制单元的功能。文中还解释了内存、总线(地址总线和数据总线)的作用,并简述了x86架构与操作系统交互的关键部分及基本指令集。
|
2月前
|
弹性计算 运维 Serverless
揭秘ADB Serverless架构:如何实现无服务器计算的神奇魔法?
【8月更文挑战第27天】随着云计算的演进,Serverless架构作为一种新兴计算模式崭露头角。阿里云函数计算(简称ADB)提供了一种无需管理服务器即可运行代码的服务。本文通过案例探讨ADB Serverless模式的实现方式。首先介绍Serverless架构的基础概念,即事件驱动模型,使开发者仅需关注业务逻辑,减轻了基础设施构建与维护的负担。ADB采用分布式、无状态的设计,确保高可用性和弹性伸缩能力。以一个简单的Web应用为例,展示了如何利用ADB快速实现根据用户输入返回问候语的功能,突显出其简化开发流程、提高性能与可扩展性的优势。
35 0
|
2月前
|
XML 分布式数据库 数据库
【计算机三级数据库技术】第13章 大规模数据库架构--附思维导图
文章概述了分布式数据库、并行数据库、云计算数据库架构和XML数据库的基本概念、目标、体系结构以及与传统数据库的比较,旨在提供对这些数据库技术的全面理解。
30 1
|
8天前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
下一篇
无影云桌面