【计算机架构】响应时间和吞吐量 | 相对性能 | 计算 CPU 时间 | 指令技术与 CPI | T=CC/CR, CC=IC*CPI

news2024/9/21 14:44:26

    

 目录

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

0x01 相对性能(Relative Performance)

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

0x03 CPU 时钟(Clocking)

0x04 CPU时间

0x05 指令计数和 CPI

0x06 性能摘要(Performance Summary)


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/.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【RabbitMQ】| 狮子带你(超详细)原生Java操作兔子队列

目录 一. &#x1f981; 前言二. &#x1f981; 原生Java操作RabbitMQⅠ. 简单模式1. 添加依赖2. 编写生产者3. 编写消费者 Ⅱ. 工作队列模式1. 编写生产者2. 编写消费者3. 实现 Ⅲ. 发布订阅模式1. 编写生产者2. 编写消费者 Ⅳ. 路由模式1. 编写生产者2. 编写消费者 Ⅴ. 通配符…

SpringCloud源码之Spring Cloud Common核心接口说明

spring cloud commons spring cloud提供的通用抽象包&#xff0c;组件的实现基本上都依赖于当前包的接口定义实现功能&#xff0c;下面就是梳理一下当前包中都提供了哪些比较重要的接口 1. 服务注册 1.1 DiscoveryClient DiscoveryClient 是一个顶级的接口类&#xff0c;用…

node项目的建立

文章目录 1.node项目的建立1.1项目初始化1.2 安装express1.3 初始化服务器 2.配置跨域2.1安装cors2.2cors的引入&#xff08;app.js中&#xff09; 3.初始化路由3.1新建文件3.2初始路由模块3.3app.js注册3.4 在postman测试 4.抽离路由处理模块3.1 在router_handler新建user.js3…

为什么LC谐振频率附近信号会被放大

这个是LC低通滤波电路&#xff0c; 它的增益曲线是这样的 很多同学不理解为什么谐振频率附近信号会被放大&#xff0c;今天就来聊一聊为什么谐振频率附近信号会被放大。 看到这个LC低通滤波电路&#xff0c;假设输入信号源内阻为Rs&#xff0c;L和C为理想电感和电容&#xff0…

Jmeter(五)_CSV Data参数化,Beanshell

一.CSV Data Set Config 准备好一个txt文件&#xff0c;写入如下内容&#xff0c;第一行可以不写&#xff0c;写了的话也会作为一组数据被运行&#xff1a; 然后把后缀名改为CSV&#xff0c;这样一个参数化文件就准备好了 然后打开jmeter&#xff0c;在需要使用这个参数化…

数据库系统-数据库查询实现算法

文章目录 一、一趟扫描算法1.1 算法概述1.2 算法逻辑&物理实现1.2.1 逻辑层面1.2.2 物理层面1.2.2.1 P11.2.2.2 P21.2.2.3 P31.2.2.4 P4 1.3 迭代器构造查询实现算法1.4 关系操作的一趟扫描算法1.4 基于索引的查询实现算法 二、两趟扫描算法2.1 两趟算法基本思想2.2 多路归…

Clickhouse分布式表引擎(Distributed)写入核心原理解析

Clickhouse分布式表引擎&#xff08;Distributed&#xff09;写入核心原理解析 Clickhouse分布式表引擎&#xff08;Distributed&#xff09;写入核心原理解析Clickhouse分布式表引擎&#xff08;Distributed&#xff09;查询核心原理解析 Distributed表引擎是分布式表的代名…

vue打包并部署到nginx上

一、打包vue项目 打包的命令依据项目的配置可能会有所不同&#xff0c;打包的命令可以在package.json中查看 项目中vue.config.js中的配置如下&#xff1a; proxy关系到我们项目部署到nginx上需要配置对应的反向代理 publicPath关系到我们部署时是否需要配置子路径 默认情况…

基于公共信箱的全量消息实现

作者 | 百度消息中台团队 导读 消息中台为百度App以及厂内百度系产品提供即时通讯的能力&#xff0c;提供包括私聊、群聊、聊天室、直播弹幕等用户沟通场景&#xff0c;并帮助业务通过消息推送触达用户。百度App存在需要以『低用户打扰』的形式触达全量用户的场景&#xff0c;而…

AcWing第 96 场周赛

竞赛 - AcWing 一、完美数 4876. 完美数 - AcWing题库 1、题目 如果一个正整数能够被 2520 整除&#xff0c;则称该数为完美数。 给定一个正整数 n&#xff0c;请你计算 [1,n]范围内有多少个完美数。 输入格式 一个整数 n。 输出格式 一个整数&#xff0c;表示 [1,n] 范…

C++:Article : 链接器(三):库与可执行文件的生成

链接器&#xff1a;库与可执行文件 1. 静态库1.1 静态链接下&#xff0c;可执行文件如何生成 2. 动态库2.1 动态库特点以及与静态库使用方式差异2.2 动态库和静态库使用时间 3. load-time dynamic linking&#xff08;加载时动态链接&#xff09;3.1&#xff1a;阶段一&#xf…

【工具】FFmpeg|超大视频本地有损压缩,500MB变25MB(支持 Windows、Linux、macOS)

参考&#xff1a; 如何将一分钟长的1080p视频压缩至5MB以内&#xff1f;-知乎-滔滔清风近期HEVC扩展备用安装方法-B站-悲剧天下 总共三个步骤&#xff0c;安装FFmpeg、运行指令、打开视频。 亲测 500MB 变 25MB。 1 安装FFmpeg 对于不需要看教程可以自行完成安装的同学们&am…

MySQL基础案例——数据表的基本操作:创建表和修改表

目录 案例目的&#xff1a; 创建表&#xff1a; 创建offices&#xff1a; 创建employees表&#xff1a; 修改表&#xff1a; 将 employees 的 mobile 字段移动到 officeCode 字段后&#xff1a; 将 birth 字段名称改为 employee_birth: 修改 sex 字段&#xff0c;数据类…

TryHackMe-Looking Glass(boot2root)

Looking Glass 穿过镜子。仙境挑战室的续集。 端口扫描 循例nmap 又是一堆ssh&#xff0c;跟之前的玩法一样 找到正确的ssh端口之后后给了一段密文&#xff0c;要求输入secret才能进入ssh 这看起来非常像凯撒密码 唯一可识别的信息是Jabberwocky&#xff0c;我们找到了它 它…

IDA简单使用

今天来简单介绍一下逆向中常用到的另一个静态分析工具IDA&#xff0c;还是昨天那个打印demo&#xff08;64位&#xff09;&#xff1a; #include #include char a[] "https://www.vultop.com/"; int main(int argc, char* argv[]) { printf("%s", a)…

什么是微服务

目录 一、微服务介绍 1. 什么是微服务 2. 微服务由来 3. 为什么需要微服务&#xff1f; 3.1 最期的单体架构带来的问题 3.2 微服务与单体架构区别 3.3 微服务与SOA区别 4. 微服务本质 5. 什么样的项目适合微服务 6. 微服务折分与设计 6.1 微服务设计原则 7. 微服务…

linux gcc + openocd + stlink + cubeMX + cortex Debug

文章目录 运行环境&#xff1a;1.1 gcc1)下载并解压gcc2)环境配置 2.1 openocd1)下载并解压openocd2)环境配置&#xff08;没有权限就加sudo&#xff09; 3.1 stlink1)下载并双击安装stlink 4.1 cubeMX1)下载并解压cubeMX2)生成makefile工程 5.1 cortex Debug1)setting设置2)la…

冷链物流运转 3D 可视化监控,助力大数据实时监控

智慧物流是以信息化为依托并广泛应用物联网、人工智能、大数据、云计算等技术工具&#xff0c;在物流价值链上的 6 项基本环节&#xff08;运输、仓储、包装、装卸搬运、流通加工、配送&#xff09;实现系统感知和数据采集的现代综合智能型物流系统。随着冷链信息化、数字化发展…

史上最全! 瑞芯微RK3568核心板评估板资源分享!

▎瑞芯微RK3568芯片 高性能处理器&#xff1a;采用四核A55架构CPU&#xff0c;G52 GPU&#xff1b;内置NPU&#xff0c;可提供1T算力 高可靠性设计&#xff1a;支持DDR及CPU Cache全链路ECC 内置自研ISP图像处理器&#xff1a;8M30fps处理能力&#xff0c;强大的HDR功能&#…

Springboot Netty 实现自定义协议

Netty是由JBOSS提供的一个java开源框架&#xff0c;现为 Github上的独立项目。Netty提供异步的、事件驱动的网络应用程序框架和工具&#xff0c;用以快速开发高性能、高可靠性的网络服务器和客户端程序。 也就是说&#xff0c;Netty 是一个基于NIO的客户、服务器端的编程框架&…