【计算机架构】程序指令计数 | 功耗计算 | 电力功耗 | 安德尔定律(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]. 

相关文章
|
1月前
|
算法 数据挖掘 调度
隐语实训营-第3讲:详解隐私计算框架的架构和技术要点
主要介绍隐语的隐私计算架构,并对每个模块进行拆解、分析,以期望不同使用者找到适合自己的模块,快速入手。
50 4
|
1月前
|
存储
嵌入式微处理器的系统架构中指令系统
嵌入式微处理器的系统架构中指令系统
16 0
|
2月前
|
机器学习/深度学习 数据处理 数据安全/隐私保护
|
1月前
|
分布式计算 算法 调度
课3-详解隐私计算框架的架构和技术要点
隐语架构涵盖产品、算法、计算、资源和硬件五层,旨在实现互联互通和跨域管控。产品层包括SecretPad等,简化用户和集成商体验。算法层涉及PSI/PIR、SCQL和联邦学习,提供隐私保护的数据分析和学习。计算层如RayFed、SPU、HEU等,支持分布式计算和密态处理。资源层的KUSCIA用于跨机构任务编排,硬件层涉及FPGA等加速器。互联互通支持黑盒和白盒模式,确保不同平台协作。跨域管控则强调数据流转控制,保护数据权益。
|
2月前
|
运维 监控 数据管理
Apollo与微服务架构:构建可扩展的应用程序
Apollo与微服务架构:构建可扩展的应用程序
|
1月前
|
机器学习/深度学习 算法 安全
隐私计算训练营第三讲-详解隐私计算的架构和技术要点
SecretFlow 是一个隐私保护的统一框架,用于数据分析和机器学习,支持MPC、HE、TEE等隐私计算技术。它提供设备抽象、计算图表示和基于图的ML/DL能力,适应数据水平、垂直和混合分割场景。产品层包括SecretPad(快速体验核心能力)和SecretNote(开发工具)。算法层涉及PSI、PIR、数据分析和联邦学习(水平、垂直、混合)。此外,SecretFlow还有YACL密码库和Kusica任务调度框架,Kusica提供轻量化部署、跨域通信和统一API接口。
59 0
|
23天前
|
前端开发 安全 JavaScript
计算机软件从 CS 模式到 BS 架构迁移背后的动因
计算机软件从 CS 模式到 BS 架构迁移背后的动因
29 0
|
1月前
|
算法
隐私计算实训营 第1期-详解隐私计算框架的架构和技术要点
本文简要介绍了隐语技术架构的五层结构:产品层、算法层、计算层、资源层和硬件层。每层分别涉及模块功能、定位和人群画像,旨在使不同角色的用户能轻松理解和使用,降低隐私计算的入门难度。此外,隐语产品设计具有开放性和前瞻性,易于集成。
|
1月前
|
存储 人工智能 缓存
计算机架构:漫游CPU的奥秘世界(一)
计算机架构:漫游CPU的奥秘世界
62 0
|
1月前
|
存储 设计模式 前端开发
请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
【2月更文挑战第26天】【2月更文挑战第89篇】请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。