计算机的”性能“

2023-11-12

前言

性能这个词在很多领域都出现过,比如一个跑车的性能,一个家电的性能,一个电脑的性能,其实在我看来一个东西的性能,就是他在某一方法的能力,比如跑车最重要的就是速度,一个计算机则是他的运行速度,在计算机组成原理中理解计算机怎么运行,为什么要解决的事情的时候,很多时候就是他的性能

什么是性能

计算机的性能有两个标准来衡量,第一个是响应时间或者执行时间,要提升响应时间这个指标,可以理解为让计算机跑的更快,还有一个则是吞吐率或者带宽,吞吐率则为跑的更快

所以说计算中执行一个程度需要花费的时间越少,则他的性能就越好,而吞吐率则是在一段时间内,能做多少事情,这里的事情是指数据的数量

用搬砖来做比较的话,如果我们时间响应时间就是一趟的时间,而吞吐量则是一次能搬多少砖,同样的我们还可以多找些人来一起干,这里就出现了我们的多核CPU,这里我们可以发现,提示吞吐量我们需要去堆一些硬件就可以上去,而响应时间提升却没那么容易

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

时间虽然是一个很自然的用来衡量性能的指标,但是用时间来衡量的时候,却有两个问题

  1. 时间可能不准,就像你在掐秒表一样,就是我们在用的时间是开始的时间减去结束的时间,称为 Wall Clock Time ,就是在运行程序期间,挂在墙上的钟走掉的时间。但是我们程序在运行的时候会牵扯到程序之间的切换,内存中去取数据,所以我们要得到准确时间,则要将这些时候去除掉,在linux在有一个命令-time,可以帮我们统计出来程序实际花费的时间。
    我们简单运行一下 time 命令。它会返回三个值,第一个是 real time,也就是我们说的 Wall Clock Time,也就是运行程序整个过程中流逝掉的时间;第二个是 user time,也就是 CPU 在运行你的程序,在用户态运行指令的时间;第三个是 sys time,是 CPU 在运行你的程序,在操作系统内核里运行指令的时间。而程序实际花费的 CPU 执行时间(CPU Time),就是 user time 加上 sys time。

  2. 其实我们拿到了准确的时间,他的运行还受运行频率的影响,降频和超频下运行速度是不一样的,不光有CPU我们还收到主板,内存的影响,所以我们将时间拆机为CPU时钟周期数和时钟周期时间,是这样的计算的

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

这样CPU的运行时为:CPU时钟周期*每个时钟周期的时间

下面我们来说一下什么是时钟周期时间,他就是一个最小的时钟间隔,比如1.8GHz,就表示在1秒针可以执行的1.8G条命令,更准确的描述的话就是我们生活中时钟每走一次的最小单位,他就是,在他的时钟内部,有一个叫晶振的东西,我们将晶振作为CPU的时间,他每次运作就是时钟的周期时间,所以1.8GHz的时钟周期时间就为1/1.8GHz,所以当我们时钟周期越快,我们的CPU就被逼着走的更快

所以我们看上面的公式,我们要提高时钟周期时间,最好的方式只有更换一个CPU,但是对于我们来说是无能为力的,所以我们将目光放在了另一个数值上,就是时钟周期数上
我们可以将时钟周期数分解为 指令数*每条指令的平均时钟周期数

           程序的 CPU 执行时间 = 指令数×CPI×Clock Cycle Time     

所以我们的公式就变成了上述的公式,所以我们要优化性能,就只能从这三个入手

  1. 其中Clock Cycle Time我们说过了,这个取决于计算机的硬件
  2. CPI是平均时钟周期数,现代通过流水技术,让一条指令需要的CPU Cycle尽可能的少
  3. 指令数,代表执行我们的程序到底需要多少条指令、用哪些指令。这个很多时候就把挑战交给了编译器。同样的代码,编译成计算机指令时候,就有各种不同的表示方式。

我们可以将自己想象为一个CPU,你的主频就是就是你的打字速度,CPI就是你会使用各种快捷键来减少指令,指令数代表着你写的逻辑够合理,能减少很多时间,这时候从外在上来看你的性能是十分好的

跑分作弊是怎么做到的?

在我看来,跑分作弊可能就是让他在运行相应程序的时候给与更高的优先级和响应中断,同时可能在跑分的时候CPU达到超频运行以达到更高的分数

怎么样去提升计算机的性能呢?

我们上面说了计算机的性能为:指令数*CPI(平均指令周期)*时钟周期时间

所以我们要想提高性能,就只能从上面的三个参数入手,指令数和CPI都不是那么容易搞定的,所以人们看上了时钟周期时间

功耗:CPU的人体极限

于是从1978年的8086CPU开始,他的主频从5MHZ开始一直到2000年已经达到了1.4GHZ,按照这个速度,我们现在的计算机主频应该已经达到了10GHZ以上了,但是我们现在电脑的主频却只有3GHZ左右,这又是为什么呢?下图为CPU主频的变化
在这里插入图片描述

因为当时人们发现将主频做到2.4GHz,却比不上1.4GHz的处理器。这其实就是功耗搞的鬼,一个3.8GHz的他的功耗达到了130瓦,而现在使用ARM架构的iphone X只有4.5瓦

我们的CPU,他的结构其实为超大型集成电路,这些电路都是由一个个晶体管组成,里面的晶体管不断的”打开“和“关闭来”完成运算,而我们提升主频就是加快他的打开和关闭速度,由于晶体管之间的距离变远会影响电信号的传输速度,所以在有限的空间内我们还可以通过添加更多的晶体管来完成运算,但是我们盲目的提高主频和晶体管数量,就会导致功耗增加,在功耗增加后晶体管就会发热,发热会导致CPU出错。所以我们晶体管的频率是有限的,以下有一个公式来表示功耗

功耗 ~= 1/2 ×负载电容×电压的平方×开关频率×晶体管数量

那么我们提升性能使,要增加晶体管的数量,同样面积下要将晶体管做的尽可能的小,这个就是平时我们所说的提升“制程”。从 28nm 到 7nm,相当于晶体管本身变成了原来的 1/4 大小。

但是由于功耗增加,我们就要降低我们电路的电压,将电压降低5,就会将功耗降低1/25

事实上,从 5MHz 主频的 8086 到 5GHz 主频的 Intel i9,CPU 的电压已经从 5V 左右下降到了 1V 左右。这也是为什么我们 CPU 的主频提升了 1000 倍,但是功耗只增长了 40 倍。

阿姆达尔定律

通过上面的描述我们知道了CPU在响应时间上慢慢的会到一个极限,所以我们开始将目光转向了吞吐率,我们将CPU做到了4核,8核,虽然响应时间没有变,但是一次运输的数据量上去了,这就是通过并行来提高效率

但不是所有问题都可以通过并行去解决的,我们要满足几个条件

  1. 这个问题本来就可以分解为多个小问题去解决
  2. 能分解的问题确定能汇总在一起
  3. 在汇总这个阶段,是没有办法并行解决的,还需要按顺序来

这其实就引出我们用的一个定律:阿姆达尔定律

优化后的执行时间 = 受优化影响的执行时间 / 加速倍数 + 不受影响的执行时间

比如在计算向量的一小段的点积,需要 100ns,加法需要 20ns,总共需要 120ns。这里通过并行 4 个 CPU 有了 4 倍的加速度。那么最终优化后,就有了 100/4+20=45ns。即使我们增加更多的并行度来提供加速倍数,比如有 100 个 CPU,整个时间也需要 100/100+20=21ns。其中加法就是不受影响的执行时间

原则性的性能提升方式
  1. 加速大概率事件:就是当人们发现一个方法能大概率提升性能的时候,就去多研究它,。最典型的就是,过去几年流行的深度学习,整个计算过程中,99% 都是向量和矩阵计算,于是,工程师们通过用 GPU 替代 CPU,大幅度提升了深度学习的模型训练过程。本来一个 CPU 需要跑几小时甚至几天的程序,GPU 只需要几分钟就好了。Google 更是不满足于 GPU 的性能,进一步地推出了 TPU。(运行时编译热点代码的机制,缓存)
  2. 通过流水线提升性能:其实就是上面的并行的思想,将一个产品变成一个个细分的任务,同时生产,最大化效率(并发编程)
  3. 通过预测提升性能:猜测下一步会做什么,提起准备,典型的例子就是在一个循环访问数组的时候,凭经验,你也会猜到下一步我们会访问数组的下一项。(浏览器的访问 )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机的”性能“ 的相关文章

  • 计算机组成原理3(集中式总线判优控制、总线通信控制)

    文章目录 一 集中式总线判优控制1 链式查询方式2 计数器定时查询方式3 独立请求方式 二 总线通信控制1 概念解释2 四种通信方式 一 集中式总线判优控制 总线控制用来做什么的 xff1f 答 xff1a 总线判优控制解决多个部件同时申请
  • 《计算机组成原理》第6章:总线

    第6章 xff1a 总线 6 1 总线概述 总线的定义 总线是一组能为多个部件分时共享的公共信息传送线路 分时和共享是总线的两个特点 分时是指同一时刻只允许有一个部件向总线发送信息 xff0c 如果系统中有多个部件 xff0c 则它们只能分
  • 计算机组成原理知识点(第七章: 指令系统)

    第七章 指令系统 1 概念 人们习惯把每一条机器语言称为机器指令 而又将全部机器指令的集合称为机器的指令系统 2 指令的一般格式 操作码 指令是由操作码和地址码两部分构成的 操作码说明所要完成的功能 地址码说明了要在哪里完成这个操作 操作码
  • 计算机基本组成原理(简要笔记)

    计算机体系 一 冯 诺依曼体系结构 从Linux 服务器开发视角来看计算机 都是符合冯 诺依曼体系结构的 1 1 4大部分 1 1 1 输入 输出设备 输入设备 向计算机输入数据 比如通过摄像头 MIC 将图像 声音等转成二进制数据给计算机
  • 2.4总线操作和定时

    文章目录 一 引子 二 介绍 1 总线周期 2 总线定时规范 三 同步定时方式 1 过程 2 特点 3 优缺点 优点 缺点 四 异步定时方式 1 介绍 2 三种方式 1 不互锁方式 2 半互锁方式 3 全互锁方式 3 优缺点 优点 缺点 五
  • 虚拟存储器

    文章目录 虚拟存储器 一 虚拟存储器概述 二 页式虚拟存储器 例题分析 三 段式与段页式虚拟存储器 虚拟存储器 一 虚拟存储器概述 1 引入原因 高速的主存容量满足不了要求 虚拟存储器 在操作系统及辅助硬件的管理下 由主存和大容量外存所构成
  • 各个硬件的工作原理

    前情回顾 主存储器的基本组成 存储体 用于存放数据的东西 由一系列的存储元件构成 可以存放二进制的 0 和 1 运算器的基本组成 控制器的基本组成 计算机的工作过程 案例分析 执行指令0 执行指令1 执行指令2 执行指令3 执行指令4 总结
  • 浮点的加减计算方法

    浮点的计算方法 1 计算步骤 2 基本要素 2 1 浮点数 2 2 规格化浮点数 2 3 偏置指数 2 4 IEEE浮点数 2 5 特点 3 计算实例 4 舍入机制 扩展 乘除计算步骤 1 计算步骤 浮点数格式 单精度 符号位1位 阶码8位
  • 编码:8421 BCD码(彻底弄懂+6是什么意思,为什么要加6)

    一 解释一下什么是8421 首先要理解的是4bit表示1个十进制位 8421代表的是权值分配 8421码用0000 0001 1001分别表示0 1 2 9的数字 为什么13不是1101 答 不在映射表 8421码的1010 1111没意义
  • 动态链接,程序内部的共享单车

    前言 在之前说过 程序的编译过程是 编译 汇编 链接 前面的两种方式我们已经充分的理解过了 现在我们来说说我们的链接过程 我们很多时候要做到代码的复用 我们就需要链接不同的库 这么来说 我们链接的过程就有点像生活中标准化 模块化的生产 我们
  • 【笔记】CPU的结构和功能(一)

    一 CPU的结构 1 CPU的功能 2 CPU结构框图 3 CPU的寄存器 用户可见寄存器 控制和状态寄存器 4 控制单元和中断系统 二 指令周期 1 指令周期的基本概念 2 指令周期的数据流 取指周期数据流 间址周期的数据流 执行周期的数
  • 计算机指令——从纸带说起

    前言 其实很多时候我都会感叹计算机的伟大 通过一个个电路就完成了如今各种系统 通过各种各样的语言就能够指挥设备完成不同的动作 当写下第一个hellow world的时候我就在想他什么怎么出现 今天搞明白其中的原理 我在这和大家分享 打孔卡
  • 计算机组成原理笔记03

    计算机组成原理笔记03 做题笔记1 内容 教材的思维导图 课后练习 计算部分 中国大学MOOC计算机组成原理 计算部分 1 教材的思维导图 在看题之前 最好先看这篇定点运算 写的特别清晰明了 2 课后练习 3 2 选择题 1 一个C语言程序
  • [计算机组成原理] 以低字节地址为字地址

    以低字节地址为字地址 就是小端存储模式 数据低位 或者说低字节 存储在内存低地址 以高字节地址为字地址 就是大端存储模式 数据低位 或者说高字节 存储在内存高地址 现在看一个例题 这个题目有一个需要明确的地方 什么是第一 第二 第三字节 对
  • 计算机组成原理实验二 存储系统预习报告

    实验一 静态RAM 一 实验目的 掌握静态随机存储器 RAM 工作特性及数据的读写方法 基于信号时序图 了解读写静态随机存储器的原理 二 实验预习 1 阅读实验指导书 然后回答问题 实验所用的静态存储器由一片 6116 2K 8bit 构成
  • 计算机组成原理 总线与微命令实验

    总线与微命令实验 实验环境 计算机组成原理实验环境 实验目的 理解总线的概念和作用 连接运算器与存储器 熟悉计算机的数据通路 理解微命令与微操作的概念 实验要求 做好实验预习 读懂实验电路图 熟悉实验元器件的功能特性和使用方法 按照实验内容
  • 计算机组成原理——单周期CPU

    单周期CPU 项目代码 实验原理 MIPS指令 rom coe文件 代码 顶层模块SingleCycleCPU display外围模块 PC instructionMemory Alu模块 DataMemory ControlUnit 旧的
  • 【计算机组成原理】实验4:存储器读写实验

    实验内容 一 实验原理 存储器是计算机的存储部件 用于存放程序和数据 存储器是计算机信息存储的核心 是计算机必不可少的部件之一 计算机就是按存放在存储器中的程序自动有序不间断地进行工作 本系统从提高存储器存储信息效率的角度设计数据通路 按现
  • 【计组】学习笔记1.1:8421码和ASCII码

    8421码 8421码即BCD码 由于人们习惯日常使用十进制数 而计算机处理时使用的是二进制数 而两种数制相互转换十分麻烦 因此产生了8421码映射关系 其映射运算例如 1001转化为十进制数9 1 8 0 4 0 2 0 1 8 0 0
  • 补码加减运算及判断溢出方法

    一 补码加减运算 二 判断溢出方法 1 符号位判溢出方法 对于加减运算 两个异号数相加或者两个同号数相减 结果的绝对值一定比任何一个数的绝对值要小 不会发生上溢出 两个异号数相减或者两个同号数相加的绝对值肯定比任何一个数要大 可能发生溢出

随机推荐

  • IT自由职业者的成功秘诀

    From http www csdn net article 1970 01 01 293774 导读 原文作者Greg Jorgensen是一位典型的程序员 他从1974年开始编程 曾在耐克和苹果等公司任职 他专攻修复和完善受损 被遗弃和
  • 阿里云k8s服务之间偶尔获取不到dns解析安装ACK NodeLocal DNSCache

    1 背景 feign RetryableException No route to host Host unreachable executing POST http osale thirdparty empty detect 服务突然会中
  • IT精英简历

    IT精英简历 马化腾眼下 一个34岁的中国人在世界和中国经济界可谓抢尽风头 在刚刚过去的2004年年底 他被美国 时代周刊 Time 和有线新闻网 CNN 评为2004年全球最具影响力的25名商界领袖之一 荣膺香港理工大学第四届紫荆花杯杰出
  • vue2.0 element-ui中的el-select选择器无法显示选中的内容

    我使用的是element ui V2 2 3 代码如下 当我选择值得时候 el select选择器无法显示选中的内容 但是能触发change方法 并且能输出选择的值 select vue文件
  • 动态修改iframe高度,从而自适应内容真实高度

    项目中遇到这样的情况 需要用到iframe iframe中的内容也是自己写的页面 由于页面中元素是异步加载出来的 并不能提前预知其高度 这样就不能设置iframe的高度 导致iframe会出现滚动条 用户体验不好 所以我需要能根据内容动态改
  • 41-C语言-蛇形矩阵-输出从1到n的矩阵

    问题 蛇形矩阵 构建蛇形矩阵 之后 根据条件相应输出 思路 蛇形矩阵 初始值a 0 0 为1 之后开始进行趟数变更 蛇形矩阵趟数 斜着来 斜杠 第一趟为a 0 1 和a 1 0 每一趟中的范围为0到tang次 如第一趟中a 0 1 已经赋值
  • 试题 算法训练 印章

    问题描述 共有n种图案的印章 每种图案的出现概率相同 小A买了m张印章 求小A集齐n种印章的概率 输入格式 一行两个正整数n和m 输出格式 一个实数P表示答案 保留4位小数 样例输入 2 3 样例输出 0 7500 数据规模和约定 1 n
  • 神舟电脑上的神器----“control center 管理软件”

    前言 现在有许许多多的人都爱上了神舟电脑的 物美价廉 那么在使用神舟电脑的时候 我们有哪些值得知道的事情 我认为用神舟电脑而不知道 神舟电脑上的控制中心 control center 管理软件 将没有比这个更加遗憾的事情了 正文 现在我们来
  • 2、ESXI安装出错

    ESXI安装错误提示 解决办法 按ALT F1健进入命令行模式 用户名为root 密码为空 然后输入 esxcli system settings advanced set o VSAN FakeSCSIReservations i 1 重
  • unity种四种光源

    unity 中的光 unity中一共有四种光源分别为 Directional light 方向光 类似太阳的日照效果 Point light 点光源 类似蜡烛 Spotlight 聚光灯 类似手电筒 Area Light 区域光 无法用作实
  • 【c++设计模式】——模板方法模式

    模板方法模式的定义 定义一个操作中的算法对象的骨架 稳定 而将一些步骤延迟到子类 定义一个虚函数 让子类去实现 template method使得子类可以不改变 复用 一个算法结构即可重定义该算法的某些步骤 在理解模板方法模式的时候 我们需
  • 深入 Docker:容器和镜像

    在本专栏往期的 Flux7 系列教程 里 我们已经简单地探讨了 Docker 的基本操作 而在那篇教程中 我们一直是简单地将容器当成是 正在运行的镜像 并没有深入地区分镜像和容器到底是什么 有什么区别 因此本次翻译 深入 Docker 容器
  • 服务器固态硬盘接口区别,s s d固态硬盘和服务器配件硬盘的区别

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 s s d固态硬盘 区别于机械硬盘 固态硬盘 Solid State Drives 简称固盘 固态硬盘 Solid State Drive 用固态电子存储芯片阵列而制成的硬盘 由控制单元 和存储
  • docker cgroups 资源限制

    cgroups资源限制技术 1 什么是cgroups cgroups是linux内核提供的一种机制 这种机制可以通过需求把一系列系统任务 及其子任务整合到按资源划分的不同组内 从而为系统资源管理提供统一的框架 通俗来说 cgroups可以限
  • nginx 301 Moved Permanently错误

    问题场景 今天在利用nginx的alias和index参数做实验时 问题描述 通过curl访问出现301错误 原因分析 起初我以为是路径写错了 然后把alias的路径更改 发现问题还是存在 我又以为是用户权限问题 我把运行nginx的用户修
  • ❤️DDOS攻击详解❤️——万物互联时代的巨大威胁!安全领域最棘手的问题之一

    DDOS全称Distributed Denial of Service 翻译成中文是 分布式拒绝服务 DDOS攻击是安全领域最难解决的问题之一 由于其攻击方式的特殊性 始终没有一个完美的解决方案 随着万物互联时代的临近 网络设备的数量呈指数
  • Hadoop(五)Yarn

    Hadoop 五 Yarn 一 Yarn基本理论 1 Yarn架构 2 Yarn工作机制 3 Yarn调度器 4 Yarn常用命令 5 Yarn参数配置 二 tool接口 一 Yarn基本理论 1 Yarn架构 Resource Manag
  • 坏掉的打字机 & 布尔零点计数

    坏掉的打字机 贝博士发明了一种能够自动输出数字并求和的打字机 但这台打字机出了一些故障 它除了输出数字以外还会随机地输出其他字符 艾小姐让贝博士不要着急 她写了一段程序 能够让这台打字机即使在这样的情况下也能输出正确答案 那么 你知道艾小姐
  • 好用到爆,GitHub 星标 32.5k+的命令行软件管理神器,功能真强大

    前言 废话 本来打算在公司偷偷摸摸给星球的用户写一篇编程喵整合 MongoDB 的文章 结果在通过 brew 安装 MongoDB 的时候竟然报错了 原因很简单 公司这台 Mac 上的 homebrew 环境没有配置好 刚好 Java 程序
  • 计算机的”性能“

    前言 性能这个词在很多领域都出现过 比如一个跑车的性能 一个家电的性能 一个电脑的性能 其实在我看来一个东西的性能 就是他在某一方法的能力 比如跑车最重要的就是速度 一个计算机则是他的运行速度 在计算机组成原理中理解计算机怎么运行 为什么要