[小玄的书房] ** 计算机组成原理02 **

简介: [小玄的书房] ** 计算机组成原理02 **

通过CPU主频,谈谈“性能”是什么

什么是性能?时间的倒数

主要有两个指标:

第一个是响应时间(Response time) 或者叫 执行时间 (Execution time)。想要提高这个指标,可以理解为让计算机“跑的更快”。

1.png第二个是吞吐率(Throughput) 或者 宽带(Bandwidth),想要提升这个性能,你可以理解让计算机“搬的更多”。2.png

响应时间指的就是,我们执行一个程序,到底想要花多少时间。花的时间越少,自然性能就能越好。


而吞吐率就是指我们在一定的时间范围,到底能处理多少事情 。这里的“事情”,在计算机里就是处理的数据或者执行的程序指令。


和搬东西来对比,如果我们的响应时间短,跑的快,我们可以来回多跑几趟多搬几趟。所以说,缩短程序的响应时间,一般来说都会提升吞吐率。


除了缩短响应时间,我们还有别的办法:我们可以多找几个人一起来搬,这就类似现代的服务器都是8核,16核的。人多力量大,同时处理数据,在单位时间内可以处理更多的数据,吞吐率自然就上去了。


提升吞吐率的办法有很多。大部分时候,我们只要多加一些机器,多堆一些硬件就好了。但是响应时间的提升却没有那么容易,因为CPU的性能提升其实在10年就处于“挤牙膏”的状态,所以我们都慎重地来分析对待。


性能 = 1 / 响应时间


响应时间越短,性能的数值就越大。


计算机的计时单位:CPU时钟

有两个问题

第一个就是时间不“准”。

Wall Clock Time (Elapsed Time) :在运行程序期间,挂在墙上的钟走掉的时间。


但是,计算机可能同时运行着好多程序,CPU实际上不停地在各个程序之间切换,在这些走掉的时间里面,可能CPU切换去运行别的程序了。而且,有些程序在运行的时候,可能要从网络,硬盘去读取数据,要等网络和硬盘把数据读出来,给到内存和CPU。


所以说,要想准确统计某个程序的运行时间,进而去比较两个程序的实际性能,我们需要把这些时间刨掉。


在Linux下有一个叫time的命令,可以帮助我们统计。

它会返回三个值:

  1. real time : 也就是 Wall Clock Time
  2. user time : 也就是CPU在运行你的程序,让用户态运行指令的过程
  3. sys time :CPU在运行你的程序,在操作系统内核运行指令的程序。

程序实际花费的CPU执行时间(CPU time)就是user time + sys time 


其次,即使我们已经拿到了CPU时间,我们也不一定能过“直接比较”出两个程序的性能差异。

cpu(满载,降频),主板,内存这些因素也会影响,所以我们要对“时间”这个我们可以感知的指标进行拆解 ,把程序的CPU执行时间变成CPU时钟周期数(CPU Cycles) 和 时钟周期时间(Clock Cycle)的乘积。

程序的CPU执行时间 = CPU时钟数 * 时钟周期数

在CPU内部,有一个晶体振荡器(Oscillator Crystal)的东西,简称为晶振。晶振带来的每一次“滴答”,就是时钟周期时间。3.png简单的提升性能方案,就是缩短时钟周期时间,也就是提升主频。

CPU时钟周期数  = “指令数 * 每条指令的平均时钟周期数(Cycles Per Instruction ,CPI)”


所以,要提升解决性能问题,就是要优化这三者:

  1. 时钟准周期时间,就是计算机主频
  2. 每条指令的平均时钟周期数(CPI)
  3. 指令数


我们可以把自己想象成一个CPU。计算机主频就是你的打字速度,CPI相当于你在写程序时,熟悉各种快捷键,打同样的内容,需要敲击键盘的次数越少。指令数相当于你的程序设计得够合理,同样的程序要写的代码行数更少。


目录
相关文章
|
Linux Python
Linux Debian12使用VSCode和Python搭建flask开发环境
本文主要介绍了Linux Debian12使用VSCode和Python搭建flask开发环境的方法,并结合一个基础flask网页例子,测试是否运行正常。
391 2
Linux Debian12使用VSCode和Python搭建flask开发环境
|
9月前
|
Python Windows
Python实现常用办公文件格式转换
本文介绍了如何使用Python及其相关库(如`pandas`、`openpyxl`、`python-docx`等)实现办公文件格式间的转换,包括XLS转XLSX、DOC转DOCX、PPT转PPTX、Word转PDF及PDF转Word,并提供了具体代码示例和注意事项。
507 89
|
7月前
|
人工智能 数据挖掘 测试技术
大模型代肝,自动刷《崩铁》升级材料,Claude操纵计算机还能这么用!
Claude 3.5 Computer Use是首个提供公共测试的具备图形用户界面(GUI)操作能力的前沿AI模型,标志着GUI自动化领域的重要突破。它通过API调用实现端到端解决方案,能根据用户指令和视觉GUI状态生成操作,无需外部知识辅助。研究展示了其在网页搜索、工作流和生产力软件等任务中的卓越能力,并揭示了滚动导航等局限性。未来有望进一步优化并拓展应用领域。论文链接:https://arxiv.org/pdf/2411.10323。
247 38
|
前端开发 JavaScript API
前端JS读取文件内容并展示到页面上
前端JavaScript使用FileReader API读取文件内容,支持文本类型文件。在文件读取成功后,可以通过onload事件处理函数获取文件内容,然后展示到页面上。
386 2
前端JS读取文件内容并展示到页面上
|
10月前
|
关系型数据库 MySQL PostgreSQL
postgresql和mysql中的limit使用方法
postgresql和mysql中的limit使用方法
350 1
OpenStack技术栈-OpenStack环境初始化
文章介绍了如何配置网卡bond模式,搭建时间同步服务器,并提供了OpenStack环境初始化的步骤和建议。
165 1
OpenStack技术栈-OpenStack环境初始化
|
11月前
|
供应链 网络协议 数据安全/隐私保护
|
Java Spring API
Spring框架与GraphQL的史诗级碰撞:颠覆传统,重塑API开发的未来传奇!
【8月更文挑战第31天】《Spring框架与GraphQL:构建现代API》介绍了如何结合Spring框架与GraphQL构建高效、灵活的API。首先通过引入`spring-boot-starter-data-graphql`等依赖支持GraphQL,然后定义查询和类型,利用`@GraphQLQuery`等注解实现具体功能。Spring的依赖注入和事务管理进一步增强了GraphQL服务的能力。示例展示了从查询到突变的具体实现,证明了Spring与GraphQL结合的强大潜力,适合现代API设计与开发。
267 0
|
Linux
Linux中vi的常用命令和快捷键使用
Linux中vi的常用命令和快捷键使用
689 0
|
JSON JavaScript 前端开发
qml的文件结构及其对象基本属性
qml的文件结构及其对象基本属性
268 2