PC_算计机性能指标
文章目录
算计机性能指标
主要性能指标
- 这里主要指计算机总体的性能指标(而不仅仅讨论cpu性能)
机器字长
- 字长(机器字长/计算机字长):计算机一次运算(整数运算)所能够处理的二进制数据的位数
- 通常与:
- cpu的寄存器位数,
- 加法器有关
- 字长一般等于内部寄存器的大小(位数)
- 字长越长,数的表示范围就越大;计算精度越高
- 计算机字长通常选定为字节(8bit)的整数倍
- 还有其他带有字长二字的概念,但是机器字长和性能是密切相关的
- 通常与:
数据通路宽度
- 数据通路:
- 各个子系统通过数据总线链接形成的数据传输路径称为数据通路
- cpu内部数据通路是指:cpu内部的数据流经的路径和路径上的部件
- 主要是cpu内部进行数据运算,存储和传送的部件
- 这些部件的宽度基本要一致才可以相互匹配
- 机器字长等于cpu内部用于整数运算的运算器位数(ALU)和通用寄存器的宽度
- 数据通路宽度:数据总线一次能够并行传输数据的位数
- 是外部数据总线的宽度
- 它于cpu内部的数据总线宽度(寄存器大小)可能不同
主存容量
-
主存储器所能够存储信息的最大容量,通常用字节数或(字数 × \times ×字长)来衡量
-
MAR的位数反映了
- 存储单元的个数(上限),即可寻址范围的最大值
- 未必是实际存储器的容量
🎈运算速度
吞吐量
- 系统在单位时间内处理请求的数量
- 取决于:
- 信息输入内存的速度
- cpu取指令的速度
- 数据从内存读出/写入的速度
- 处理结果能够传输给外部设备的速度
- 几乎每一环节都关乎主存,系统吞吐量主要取决于主存的存取周期
吞吐率
- 单位时间内系统处理请求的数量,是评价计算机系统性能的综合参数
- 主频,CPI,主存容量都不是综合参数
响应时间
- 用户向计算机发送一个请求,系统对该请求做出响应并获得所需结果的等待时间
cpu时钟周期 T T T
- cpu中***最小的时间单位*
- 执行指令的每一个动作至少需要一个时钟周期
- 通常为节拍脉冲或者T周期(主频的倒数)
cpu时钟频率(主频 f f f)
-
机器内部主时钟的频率(时钟周期的倒数)
-
f = 1 T f=\frac{1}{T} f=T1
-
衡量机器速度的重要参数(但是也主要局限于同一个系列)
-
对于同一个计算机(或同型号),主频越高(比如超频),完成一个执行操作步骤所需要事件就越短,执行指令的速度就越快
-
时钟周期每指令CPI
-
CPI:(clock cycle per instruction)
-
执行一条指令所需要的时钟周期数
- 在其他条件不变的情况下,更低的cpi意味着更好的性能
-
为了是CPI更加有意义,往往是某个限定范围内的一个平均值
- 不同指令的指令周期数可能不同
- 对于一个程序/一台机器而言,其cpi指:
- 该程序或者该机器指令集中的所有指令执行所需要时钟周期数的的平均值
- 对于一个程序/一台机器而言,其cpi指:
- 不同指令的指令周期数可能不同
影响CPI的可能因素
- 系统结构
- 指令集
- 计算机组织
不影响CPI的因素
- 时钟频率
- 提高时钟频率可以加快执行速度(以更高频率执行同一个任务的耗时更短),但是不改变每条指令能够完成的工作
- 指令I原来需要3个时钟周期,提高评率后,仍然需要3个时钟周期
- 但是时钟周期应该频率的提高而缩短
- CPI关心的是执行完指令需要耗费的时钟周期数,而不关心时钟周期的长短!
- 因此我们讲,CPI也不是衡量cpu性能的唯一标准
- 提高时钟频率可以加快执行速度(以更高频率执行同一个任务的耗时更短),但是不改变每条指令能够完成的工作
cpu执行时间
-
运行一个程序所花费的时间:
-
c p u 执行时间 = c p u 时钟周期数 主频 = 指令条数 × C P I 主频 设指令条数为 n ; 指令的平均 c p i 为 p cpuExecutionTime = n p T = n p f cpu执行时间=\frac{cpu时钟周期数}{主频}=\frac{指令条数\times{CPI}}{主频} \\设指令条数为n;指令的平均cpi为p \\\text{cpuExecutionTime}=npT=\frac{n {p}}{f} cpu执行时间=主频cpu时钟周期数=主频指令条数×CPI设指令条数为n;指令的平均cpi为pcpuExecutionTime=npT=fnp
-
cpu性能(执行时间)取决于3个相互制约的要素:
- 主频(时钟频率)
- CPI
- 指令条数(指令集)
-
制约:
- 更改指令集,可以减少指令条数
- 但是同时可能引起cpu结构调整,可能导致时钟周期宽度增加(主频降低)
案例
- 机器M上执行一个程序p,最初的运行情况是20s,经过编译优化,程序p的cpi变为1.2倍,指令条数变为0.7倍,那么优化后的执行时间为多少?
- 解:
-
c
a
s
e
1
:
指令条数为
n
1
,
c
p
i
为
p
1
;
case1:指令条数为n_1,cpi为p_1;
case1:指令条数为n1,cpi为p1;
- t 1 = n 1 p 1 T = 20 s t_1={n_1p_1}T=20s t1=n1p1T=20s
-
c
a
s
e
2
:
指令数为
n
2
=
0.7
n
1
,
c
p
i
为
p
2
=
1.2
p
1
;
case2:指令数为n_2=0.7n_1,cpi为p_2=1.2p_1;
case2:指令数为n2=0.7n1,cpi为p2=1.2p1;
- t 2 = n 2 p 2 T = 0.7 × 1.2 n 1 p 1 T = 0.84 t 1 = 0.84 × 20 = 16.8 s t_2=n_2p_2T=0.7\times1.2n_1p_1T=0.84t_1=0.84\times20=16.8s t2=n2p2T=0.7×1.2n1p1T=0.84t1=0.84×20=16.8s
-
c
a
s
e
1
:
指令条数为
n
1
,
c
p
i
为
p
1
;
case1:指令条数为n_1,cpi为p_1;
case1:指令条数为n1,cpi为p1;
- 解:
- 机器M1和M2是同架构(相同指令集体系结构ISA),主频
f
1
,
f
2
f_1,f_2
f1,f2分别为1.2和1.5GHz
- 用基准程序P取测试两台机器,平均CPI p 1 , p 2 p_1,p_2 p1,p2分别为2和1
- 那么程序P在M1和M2上的运行时间 t 1 / t 2 = ? t_1/t_2=? t1/t2=?
- 解:
- 设p在该系列机器(同指令集架构)上对应的指令条数为n条
- t 1 = n p 1 f 1 t_1=\frac{np_1}{f_1} t1=f1np1
- t 2 = n p 2 f 2 t_2=\frac{np_2}{f_2} t2=f2np2
- t 1 t 2 = p 1 f 2 f 1 p 2 = 8 5 = 1.6 \frac{t_1}{t_2}=\frac{p_1f_2}{f_1p_2}=\frac{8}{5}=1.6 t2t1=f1p2p1f2=58=1.6
MIPS
-
(MillionInstructionPerSecond),每秒执行指令条数(百万条为单位)
-
设某程序 ( 任务 ) 执行了 n 条指令 ; 对应地耗费时钟周期 q 个 如果该任务的平均指令 C P I 为 p , 则有 q = n p 那么耗费时间就是有 t = q T M I P S = n × 1 0 − 6 q T = 1 0 − 6 p T = f p × 1 0 − 6 或者 : M I P S = f C P I × 1 0 − 6 = 1 C P I × T × 1 0 6 其中 1 0 − 6 将单位从 1 转换为百万 ( 1 0 6 ) 设某程序(任务)执行了n条指令;对应地耗费时钟周期q个 \\如果该任务的平均指令CPI为p,则有q=np \\那么耗费时间就是有t=qT \\ MIPS=\frac{n\times{10^{-6}}}{qT}=\frac{10^{-6}}{pT}=\frac{f}{p}\times 10^{-6} \\或者:MIPS=\frac{f}{CPI}\times{10^{-6}}=\frac{1}{CPI\times{T}\times{10^{6}}} \\其中10^{-6}将单位从1转换为百万(10^{6}) 设某程序(任务)执行了n条指令;对应地耗费时钟周期q个如果该任务的平均指令CPI为p,则有q=np那么耗费时间就是有t=qTMIPS=qTn×10−6=pT10−6=pf×10−6或者:MIPS=CPIf×10−6=CPI×T×1061其中10−6将单位从1转换为百万(106)
-
这种指标不适合对不同机器进行性能比较(不同机器指令集可能不同,M1机器的指令A可以完成的任务量S对于M2机器(比如精简指令)而言可能需要多条指令)
MFLOPS
-
每秒执行多少百万次浮点运算
- M I P S = 浮点操作次数 × 1 0 − 6 执行时间 MIPS=\frac{浮点操作次数\times{10^{-6}}}{执行时间} MIPS=执行时间浮点操作次数×10−6
-
还有其他类似的衡量指标
小结
- 当前设计高性能计算机的主要技术途径是:采用并行处理技术
- 因为提高主频和扩大主存容量对于性能的提升是很有限的
- 而使用并行处理技术,可以大幅度提高计算能力(比如超级计算机,采用大量的处理器来提高并行)
基准程序
- 基准程序(benchmarks)
- 专门用来进行性能评价的程序
- 能够很好的反映机器在运行实际负载时的性能;
- 可以通过在不同机器上运行相同的基准程序来比较不同机器上的运行时间,从而评测(比较机器间)的性能
- 不同场合应该选择不同的基准程序
- 局限性:
- 基准程序的性能可能和某一小段段代码密切相关,从而机器会被特别优化来执行该段代码从而获得欺骗性的性能评价,这种情况下的评价不具有全面性
单位问题(K,M,G…)
- 描述容量和文件大小:通常用2的幂表示
- 例如 : 1 K b = 2 10 b 例如:1Kb=2^{10}b 例如:1Kb=210b
- 描述速率/频率是,常用10的幂来表示
- 例如: 1 k b / s = 1 0 3 b / s 1kb/s=10^3b/s 1kb/s=103b/s
常见字母对应的数量级
- K = 1 0 3 K=10^3 K=103
- M = 1 0 6 M=10^{6} M=106
- G = 1 0 9 G=10^9 G=109
- T = 1 0 12 T=10^{12} T=1012
- P = 1 0 15 P=10^{15} P=1015
- E = 1 0 18 E=10^{18} E=1018
- Z = 1 0 21 Z=10^{21} Z=1021
-
千
=
1
0
3
千=10^3
千=103
- 万 = 1 0 4 万=10^4 万=104
-
百万
=
1
0
6
百万=10^6
百万=106
- 一亿 = 1 0 8 一亿=10^8 一亿=108
- 十亿 = 1 0 9 十亿=10^9 十亿=109
k与K
- 通常,小写的k.用来表示速率
- 大写的K用来表示存储容量/文件大小
- 其余字母不做上述大小写区分,(M,G,T,P,…)即,都应该大写
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了