【计算机架构】如何计算 CPU 时间

    

 目录

0x00 响应时间和吞吐量(Response Time and Throughput)

0x01 相对性能(Relative Performance)

0x02 执行时间测量(Measuring Execution Time)

0x03 CPU 时钟(Clocking)

0x04 CPU时间

0x05 指令计数和 CPI

0x06 性能摘要(Performance Summary)

0x07 功率趋势(Power Trends)


0x00 响应时间和吞吐量(Response Time and Throughput)

响应时间 (Response time):完成任务所需的时间

吞吐量 (Throughput):每个单位时间内完成的总工作量 (比如: tasks/transactions... per hours)

存在多种因素可以对响应时间和吞吐量造成影响,包括但不限于:

  • 处理能力:通过升级到更快的处理器或添加更多处理器,可以减少响应时间并增加吞吐量。这是因为更快或更强大的处理器可以在更短的时间内处理更多的任务。
  • 系统负载:如果系统过载,处理过多的任务或用户,将会对响应时间和吞吐量产生负面影响。这是因为系统可能无法处理工作负荷,导致响应时间更长,吞吐量降低。
  • 网络延迟:如果网络延迟较高,响应时间和吞吐量可能会受到影响。这是因为数据传输需要更长的时间,从而导致响应时间变长和吞吐量降低。

换更快的处理器?添加更多的处理器?本章我们更关注的是 响应时间 (Response time) 。

0x01 相对性能(Relative Performance)

📚 定义:性能 =  1 / 执行时间

 \textrm{ Performance }= 1\, /\, \textrm{Execution Time}

X 比 Y 快 n 倍:

\frac{\textrm{Performance}_X}{\textrm{Performance}, _Y}=\frac{\textrm{Execution time}_Y}{ {\textrm{Execution time}}_X}=n

💭 举个例子:运行程序所需时间,在 A 机器上为 10s,在 B 机器上为 15s 

E_B/E_A=15s/10s=1.5

因此,A 比 B 快 1.5 倍。

0x02 执行时间测量(Measuring Execution Time)

执行时间测量 (Measuring Execution Time) 指的是在计算机程序中测量代码执行所需的时间。这通常是通过在代码开始和结束时记录时间戳来实现的,然后计算时间戳之间的差异来计算程序执行所需的时间。

执行时间测量通常是性能优化和调试代码的重要工具。通过测量程序中不同部分的执行时间,开发人员可以确定哪些部分需要进行优化,以使程序更加高效。

在实际应用中,执行时间测量可以使用多种不同的技术和工具来实现,例如内置的计时器函数、性能分析工具、代码覆盖率工具等等。不同的方法适用于不同的场景和需求。

总的反应时间 (Elapsed time):

  • 总响应时间,包括所有方面 (Processing, I/O, OS overhead, idle time)
  • 确定系统性能

CPU 时间 (CPU time):

  • 用于处理给定作业的时间 (Discounts I/O time, other jobs’ shares) 
  • 包括用户 CPU 时间和系统 CPU 时间
  • 不同的程序受 CPU 和系统性能的影响不同

0x03 CPU 时钟(Clocking)

CPU Clocking(CPU 时钟)指的是计算机 CPU 内部的时钟系统。这个时钟系统会以固定的速率来发出脉冲信号,这些信号会让 CPU 的不同部件在每个时钟周期内执行相应的操作。

数字硬件的操作受到固定速率时钟的控制:

时钟周期 (Clock period):时钟信号一个完整的循环所需要的时间。

时钟频率 (Clock Rate):每秒钟时钟信号产生的周期数。

0x04 计算CPU时间(T=CC/CR)

性能可以通过减少时钟周期数、增加时钟速度来改善。

硬件设计人员通常需要在时钟速度和时钟周期数量之间进行权衡。

🔺 CPU Time 计算公式如下:

CPU 时间 = CPU 时钟周期数 × 时钟周期
                 = CPU 时钟周期数 ÷ 时钟频率

📜 简化记忆:

  • 求 CPU 时间: T=\frac{CC}{CR}, T=CC\times CCT
  • 求时钟频率 (Clock Rate) :CR=\frac{CC}{T}
  • 求时钟周期 (Clock Cycle) :CC=T\times CR

💭 举个例子:

计算机 A 有 2GHz 的时钟, 10s 的CPU 时间,请设计计算机 B,目标达到 10s 的 CPU 时间。可以使用更快的时钟,但会导致 1.2 × 时钟周期,问计算机 B 的时钟应该多快?

💡 解答:已知 \textrm{Clock Rate}_A=2\textrm{GHz},\, \, \textrm{CPU Time}_A=10s计算 \textrm{Clock Rate}_B

* 根据上述公式 T=\frac{CC}{CR }那么 CR=\frac{CC}{T}

根据题意,使用更快时钟导致 1.2 倍 CC,并且目标 CPU 时间 T 为 6s,可列出公式:

\textrm{Clock Rate}_B=\frac{\textrm{Clock Cycles}_B}{\textrm{CPU Time}_B}=\frac{1.2\times\textrm{ Clock Cycles}_A}{6s}

此时我们需要计算 A 的时钟周期,根据公式 T=\frac{CC}{CR },那么时钟周期 CC=T\times CR

\textrm{Clock Cycles}_A=\textrm{CPU Time}_A\times \textrm{Clock Rate}_A=10s\times 2\textrm{GHz}={\color{Blue} 20\times 10^9}

此时我们已经得到了 CC_A,带入即可计算出 \textrm{ClockRate}_B

\textrm{CR}_B=\frac{1.2\times \textrm{CC}_{B(A)}}{\textrm{T}_B}= \frac{1.2\times {\color{Blue} 20\times 10^9}}{6s}=\frac{​{\color{Blue} 24\times10^9}}{6s}={\color{Red} 4}\textrm{\, GHz}

0x05 指令计数 IC 和 每条指令所需的时钟周期数 CPI

\textrm{IC} (Instruction Count),指的是 指令计数

\textrm{CPI} (Cycle Per Instrution),指的是 每条指令所需的时钟周期数。即 平均执行周期数

是指在一个程序中,每个时钟周期所执行的平均指令数。这两个概念都是计算机性能评估中的关键指标。通过减少指令计数或降低 CPI,可以提高计算机系统的性能。

 📃 简化记忆:

  • {\color{Blue} CC} = \textrm{ IC}\times\textrm{ CPI}
  • T ={\color{Blue} IC\times CPI}\times CCT=\frac{​{\color{Blue} IC\times CPI}}{CR}

Execution time = (Instruction count * CPI) / Clock rate

程序的指令计数是由程序本身、指令集架构 (ISA) 和编译器所决定的。每个指令的平均时钟周期数取决于CPU硬件。如果不同的指令具有不同的CPI,则平均 CPI 受指令组合的影响。

💭 CPI 计算例子:

计算机 A 的周期时间 = 250ps,CPI = 2.0,计算机 B 的周期时间 为 500ps,CPI = 1.2

ISA 相同,哪台计算机更快?快多少?

💡 题解:根据题意得知:CT_A=250ps,CPI_A=2.0CT_B=500ps,CPI_B=1.2

既然要比谁更快,那么我们分别计算出 A, B 的 CPU Time:

\textrm{CPU Time}_A=IC\times CPI_A\times \textrm{CycleTime}_A=l\times 2.0\times 250ps=l\times 500ps

\textrm{CPU Time}_B=IC\times CPI_B\times \textrm{CycleTime}_B=l\times 1.2\times 500ps=l\times 600ps

\textrm{CPU Time}_A < \textrm{CPU Time}_B,因此 A 速度更快。

下面计算快多少:

\frac{\textrm{CPU Time}_B}{\textrm{CPU Time}_A}=\frac{l\times 600ps}{l\times 500ps}=1.2

0x06 关于CPI 的更多细节

如果不同的指令类别需要不同的时钟周期数:

 \textrm{ClockCycle}=\sum_{i=1}^{n}(IC_i\times CPI_i)

 加权平均 CPI (Avg):

CPI=\frac{\textrm{Clock\, Cycles}}{\textrm{IC}}=\sum_{i=1}^{n}(\textrm{CPI}_i\times \frac{IC_i}{IC})

💭 例子:Alternative compiled code sequences using instructions in classes A, B, C:

💡 解读:Sequence 1 中  IC=2+1+2=5

根据公式:\textrm{ClockCycle}=\sum_{i=1}^{n}(IC_i\times CPI_i)

再根据图表给出的 IC, CPI 即可计算出 Clock Cycles:

\textrm{Clock Cycles}=IC\times CPI=(2\times 1)+(1\times 2)+(2\times 3)={\color{Blue} 10}

然后通过公式计算平均:CPI=\frac{\textrm{Clock\, Cycles}}{\textrm{IC}}=\sum_{i=1}^{n}(\textrm{CPI}_i\times \frac{IC_i}{IC})

 \textrm{Avg. CPI}=\frac{\textrm{CC}}{IC}=\frac{​{\color{Blue} 10}}{5}={\color{Red} 2.0}

0x07 性能摘要(Performance Summary)

\textrm{CPU Time}=\frac{\textrm{Instructions}}{\textrm{Program}}\times \frac{\textrm{Clock Cycles}}{\textrm{Instruction}}\times \frac{\textrm{Seconds}}{\textrm{Clock Cycle}}

性能摘要 (Performance Summary) 是指对计算机系统、软件或应用程序性能进行评估、分析和总结的过程。在性能摘要中,可以考虑多种性能指标,如执行时间、吞吐量、响应时间、负载等。通常,性能摘要的目的是发现瓶颈、评估系统的优化潜力、指导系统设计和优化、以及进行比较评估等。在实践中,性能摘要是计算机系统开发和维护中非常重要的一环,可以帮助提高系统的性能、可靠性和稳定性。

性能取决于 算法 (影响 IC,可能影响 CPI)、编程语言 (影响 IC,CPI)、编译器(影响 IC,CPI)、指令集架构(影响 IC,CPI,Tc)。

🔺 计算公式总结: 

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

📜 参考资料 

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/8071.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构与算法】并查集

文章目录一、并查集的概念二、并查集的实现2.1 find()的实现2.2 路径压缩算法2.3 join()的实现三、并查集的应用3.1 例题&#xff1a;合并集合3.2 例题&#xff1a;连通块中点的数量四、总结一、并查集的概念 并查集是一个树形结构&#xff0c;所谓的并查&#xff0c;就是当我…

关于神经网络的权重信息和特征图的可视化

目录 1. 介绍 2. 隐藏层特征图的可视化 2.1 AlexNet 网络 2.2 forward 2.3 隐藏层特征图可视化 2.4 测试代码 3. 训练参数的可视化 3.1 从网络里面可视化参数 3.1.1 测试代码 3.1.2 参数的字典信息 3.1.3 参数可视化 3.2 从保存的权重参数文件(.pth)里面可视化参数…

汉诺塔与二进制、满二叉树的千丝万缕

汉诺塔(Tower of Hanoi)源于印度传说中&#xff0c;大梵天创造世界时造了三根金钢石柱子&#xff0c;其中一根柱子自底向上叠着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定&#xff0c;在小圆盘上不能放大圆盘&#xff0c;在三…

数据挖掘(2.3)--数据预处理

目录 三、数据集成和转换 1.数据集成 2.数据冗余性 2.1 皮尔森相关系数 2.2卡方检验 3.数据转换 四、数据的规约和变换 1.数据归约 2数据离散化 三、数据集成和转换 1.数据集成 数据集成是将不同来源的数据整合并一致地存储起来的过程。 不同来源的数据可能有不同…

【ESP32+freeRTOS学习笔记之“ESP32环境下使用freeRTOS的特性分析(2-多核环境中的任务)”】

目录1、ESP32的双核对称多处理SMP概念2、涉及任务task的特殊性2.1 创建任务的特殊函数2.2 xTaskCreatePinnedToCore&#xff08;&#xff09;函数的解释3、任务的删除4、总结1、ESP32的双核对称多处理SMP概念 最初的FreeRTOS&#xff08;以下简称Vanilla FreeRTOS&#xff09;…

线性表——顺序表

文章目录一&#xff1a;线性表二&#xff1a;顺序表1&#xff1a;概念与结构1&#xff1a;静态顺序表2&#xff1a;动态顺序表2&#xff1a;动态顺序表的代码实现1&#xff1a;结构2&#xff1a;接口实现1&#xff1a;初始化2&#xff1a;释放内存3&#xff1a;检查容量4&#…

Linux下最小化安装CentOS-7.6(保姆级)

文章目录安装包开始安装一、 新建一个虚拟机二、配置安装CentOS7.6二、开始安装CentOS三、配置CentOS并下载基本信息安装包 链接&#xff1a;https://pan.baidu.com/s/1DodB-kDy1yiNQ7B5IxwYyg 提取码&#xff1a;p19i 开始安装 一、 新建一个虚拟机 1、 打开VMWare&#x…

刷题笔记【5】| 快速刷完67道剑指offer(Java版)

本文已收录于专栏&#x1f33b;《刷题笔记》文章目录前言&#x1f3a8; 1、合并两个有序链表题目描述思路一&#xff08;递归&#xff09;思路二&#xff08;双指针&#xff09;&#x1f3a8; 2、树的子结构题目描述思路一&#xff08;递归&#xff09;&#x1f3a8; 3、二叉树…

Redis分布式锁系列

1.压力测试出的内存泄漏及解决&#xff08;可跳过&#xff09; 使用jmeter对查询产品分类列表接口进行压力测试&#xff0c;出现了堆外内存溢出异常。 我们设置的虚拟机堆内存100m&#xff0c;并不是堆外内存100m 产生堆外内存溢出&#xff1a;OutOfDirectMemoryError 原因是…

某大厂面试题:说一说Java、Spring、Dubbo三者SPI机制的原理和区别

大家好&#xff0c;我是三友~~ 今天来跟大家聊一聊Java、Spring、Dubbo三者SPI机制的原理和区别。 其实我之前写过一篇类似的文章&#xff0c;但是这篇文章主要是剖析dubbo的SPI机制的源码&#xff0c;中间只是简单地介绍了一下Java、Spring的SPI机制&#xff0c;并没有进行深…

SQL——数据查询DQL

基本语句、时间查询&#xff08;当天、本周&#xff0c;本月&#xff0c;上一个月&#xff0c;近半年的数据&#xff09;。 目录 1 查询语句基本结构 2 where 子句 3 条件关系运算符 4 条件逻辑运算符 5 like 子句 6 计算列 7 as 字段取别名 8 distinct 清除重复行 9 …

linux mysql

安装 下载包 wget https://cdn.mysql.com/archives/mysql-8.0/mysql-8.0.31-1.el8.x86_64.rpm-bundle.tar解压 tar -zxvf mysql-8.0.31-1.el8.x86_64.rpm-bundle.tar -C /usr/local/mysql安装openssl-devel插件 yum install openssl-devel安装rpm包 使用rpm -ivh安装图中r…

【Unity项目实战】从零手戳一个背包系统

首先我们下载我们的人物和背景资源,因为主要是背包系统,所以人物的移动和场景的搭建这里我们就不多讲了,我这里直接提供基础项目源码给大家去使用就行 基础项目下载地址: 链接: https://pan.baidu.com/s/1o7_RW_QQ1rrAbDzT69ApRw 提取码: 8s95 顺带说一下,这里用到了uni…

AttributeError: module transformers has no attribute LLaMATokenizer解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

AES加密

来源&#xff1a;链接: b站up主可厉害的土豆 &#xff08;据评论区说图片中有计算错误&#xff0c;但是过程是对的。只是了解过程问题不大&#xff0c;专门研究这一块的话自己可以看视频算一下&#xff09; 准备 首先&#xff0c;明文是固定长度 16字节 128位。 密钥长度可以…

TCP协议一

TCP数据报格式 TCP通信时序 下图是一次TCP通讯的时序图。TCP连接建立断开。包含大家熟知的三次握手和四次握手。 在这个例子中&#xff0c;首先客户端主动发起连接、发送请求&#xff0c;然后服务器端响应请求&#xff0c;然后客户端主动关闭连接。两条竖线表示通讯的两端&…

houjie-cpp面向对象

houjie 面向对象 面向对象&#xff08;上&#xff09; const 在一个函数后面放const&#xff0c;这个只能修饰成员函数&#xff0c;告诉编译器这个成员函数不会改数据 const还是属于函数签名的一部分。 引用计数&#xff1a;涉及到共享的东东&#xff0c;然后当某个修改的时候&…

Mysql的学习与巩固:一条SQL查询语句是如何执行的?

前提 我们经常说&#xff0c;看一个事儿千万不要直接陷入细节里&#xff0c;你应该先鸟瞰其全貌&#xff0c;这样能够帮助你从高维度理解问题。同样&#xff0c;对于MySQL的学习也是这样。平时我们使用数据库&#xff0c;看到的通常都是一个整体。比如&#xff0c;你有个最简单…

【Paper】2019_Resilient Consensus Through Asynchronous Event-based Communication

Wang Y, Ishii H. Resilient consensus through asynchronous event-based communication[C]//2019 American Control Conference (ACC). IEEE, 2019: 1842-1847. 文章目录I. INTRODUCTIONII. EVENT-BASED RESILIENT CONSENSUS PROBLEMA. Preliminaries on graphsB. Event-base…

基于Java+ SpringBoot+Vue 的网上图书商城管理系统(毕业设计,附源码,教程)

您好&#xff0c;我是程序员徐师兄&#xff0c;今天为大家带来的是 基于Java SpringBootVue 的网上图书商城管理系统&#xff08;毕业设计&#xff0c;附源码&#xff0c;教程&#xff09;。 &#x1f601; 1.Java 毕业设计专栏&#xff0c;毕业季咱们不慌忙&#xff0c;几百款…