计算机的性能指标
导读
大家好,很高兴又和大家见面啦!!!
在上一篇内容中我们介绍了计算机系统中存储器与CPU的工作原理:
- 存储器的工作原理:
- 取址:从
MAR
中取出需要访问的地址信息 - 寻址:在存储体中寻找
MAR
提供的地址 - 取值:将存储体中指定地址中的数据取出存放入
MDR
中
- 取址:从
- CPU的工作原理:
- 取址阶段:
P
C
→
M
A
R
→
存储体
→
M
D
R
→
I
R
PC→MAR→存储体→MDR→IR
PC→MAR→存储体→MDR→IR
-
(
P
C
)
→
M
A
R
(PC)→MAR
(PC)→MAR:将
PC
中存储的当前欲执行指令的地址信息传输给MAR
,PC
自动+1,存储下一次执行的指令地址信息; - ( M A R ) → 存储体 (MAR)→存储体 (MAR)→存储体:将MAR中存储的地址信息传输给存储体
-
(
存储体
)
→
M
D
R
(存储体)→MDR
(存储体)→MDR:将指定地址处的数据取出,存入
MDR
中 -
(
M
D
R
)
→
I
R
(MDR)→IR
(MDR)→IR:将
MDR
中的数据传输给IR
-
(
P
C
)
→
M
A
R
(PC)→MAR
(PC)→MAR:将
- 分析阶段:
I
R
→
C
U
IR→CU
IR→CU
-
O
P
(
I
R
)
→
C
U
OP(IR)→CU
OP(IR)→CU:将
IR
中的指令信息传输给CU
进行分析
-
O
P
(
I
R
)
→
C
U
OP(IR)→CU
OP(IR)→CU:将
- 执行阶段:
I
R
→
M
A
R
→
存储体
→
M
D
R
→
A
L
U
IR→MAR→存储体→MDR→ALU
IR→MAR→存储体→MDR→ALU
- A d ( I R ) → M A R Ad(IR)→MAR Ad(IR)→MAR:将IR中的数据地址信息传输给MAR
- ( M A R ) → 存储体 (MAR)→存储体 (MAR)→存储体:将MAR中的地址信息传输给存储体,当此时为写信号时,会直接在指定地址中写入对应数据;
-
(
存储体
)
→
M
D
R
(存储体)→MDR
(存储体)→MDR:当此时为读信号时,会将指定地址中的数据取出并存入
MDR
-
M
D
R
→
A
L
U
MDR→ALU
MDR→ALU:当数据涉及到运算时,
MDR
会将数据传输给ALU
来进行相应的运算
- 取址阶段:
P
C
→
M
A
R
→
存储体
→
M
D
R
→
I
R
PC→MAR→存储体→MDR→IR
PC→MAR→存储体→MDR→IR
在CPU
中所有的部件都是通过控制信号进行控制,因此CPU
可以通过程序运行的不同阶段来识别指令与数据;
通过前面的一系列的介绍,现在我们算是已经对计算机系统有了一个初步的认识,但是我们应该如何来判断计算机系统的好坏呢?在今天的内容中,我们将会学习计算机的一系列的性能指标,通过这些性能指标,我们就能判断计算机优劣;
一、字长
字长是指计算机进行一次整数运算(即定点整数运算)所能处理的二进制数据的位数,通常与CPU的寄存器位数、加法器有关。因此,字长一般等于内部寄存器的大小,字长越长,数的表示范围就越大,计算精度越高。
计算机字长通常选定为字节(8位)的整数倍。
1.1 字、字长、机器字长、指令字长与存储字长的区别与联系
在通常所说的“某16位或32位机器”中,这里的16/32指的是字长,也称为机器字长。
所谓的字长通常是指CPU内部用于整数运算的数据通路的宽度,因此字长等于CPU内部用于整数运算的运算器位数和通用寄存器的宽度,它反映了计算机处理信息的能力。
字和字长的概念不同,字用来表示被处理信息的单位,用来度量数据类型的宽度,如x86机器中将一个字定义为16位。
指令字长:一个指令字中包含的二进制代码的位数
存储字长:一个存储单元存储的二进制代码的长度
它们都必须是字节的整数倍。
指令字长一般取存储字长的整数倍,若指令字长等于存储字长的2倍,则需要2个访存周期来取出一条指令;若指令字长等于存储字长,则取指周期等于机器周期。
早期的存储字长一般与指令字长、字长相等,因此访问一次主存便可取出一条指令或一个数据。随着计算机的发展,指令字长、字长都可变,但必须都是字节的整数倍。
二、数据通路带宽
数据通路带宽是指数据总线一次所能并行传送信息的位数。这里所说的数据通路宽度是指外部数据总线的宽度,它与CPU内部的数据总线宽度按(内部寄存器的大小)有可能不同。
注:各个子系统通过数据总线连接形成的数据传送路径称为数据通路。
三、主存容量
主存容量指的是主存储器(内存)所能存储信息的最大容量,通常以字节来衡量,也可用字数×字长(如512K×16
位)来表示存储容量。
其中,MAR的位数反映了存储单元的个数,MDR的位数反映了存储单元的字长。
四、运算速度
4.1 吞吐量与响应时间
吞吐量是指系统在单位时间内处理请求的数量。它取决于信息能多块地输入内存,CPU能多快地取指令,数据能多快地从内存取出或存入,以及所得结果能多快地从内存送给一台外部设备。几乎每步都关系到主存,因此系统吞吐量主要取决于主存的存取周期。
响应时间是指用户向计算机发送一个请求,到系统对该请求做出响应并获得所需结果的等待时间。通常包括CPU时间(运行一个程序所花费的时间)与等待时间(用于磁盘访问、存储器访问、I/O操作、操作系统开销等的时间)。
4.2 主频和CPU时钟周期
主频也叫做CPU时钟频率,指的是机器内部主时钟的频率,也就是数字脉冲信号振荡的频率,是衡量机器熟读的重要参数。对于同一个型号的计算机,其主频越高,完成指令的一个执行步骤所用的时间越短,执行指令的速度越快。
CPU时钟周期,通常是指节拍脉冲或T周期,即主频的倒数,它是CPU中最小的时间单位,执行指令的每个动作至少需要1个时钟周期。
注:CPU时钟周期 = 1 / 主频,主频通常以Hz(赫兹)为单位,1Hz表示每秒1次。
4.3 CPI
CPI(Cycle Per Instruction),即执行一条指令所需的时钟周期数。
不同的指令的时钟周期数可能不同,因此对于一个程序或一台机器来说,其CPI指该程序或该机器指令集中的所有指令执行所需的平均时钟周期数,此时CPI是一个平均值。
4.4 CPU执行时间
CPU执行时间是指运行一个程序所花费的时间。
C
P
U
执行时间
=
C
P
U
时钟周期数
/
主频
=
(指令条数
×
C
P
I
)
/
主频
CPU执行时间=CPU时钟周期数/主频=(指令条数×CPI)/主频
CPU执行时间=CPU时钟周期数/主频=(指令条数×CPI)/主频
上式表明,CPU的性能(CPU执行时间)取决于三个要素:
- 主频(时钟频率)
- 每条指令执行所用的时钟周期数(CPI)
- 指令条数
主频、CPI和指令条数是相互制约的。例如,更改指令集可以减少程序所含指令的条数,但同时可能引起CPU结构的调整,从而可能会增加时钟周期的宽度(降低主频)。
4.5 IPS
IPS(Instructions Per Second)
即每秒执行的指令条数。
I
P
S
=
指令条数
/
执行时间
=
主频
/
平均
C
P
I
IPS=指令条数/执行时间=主频/平均CPI
IPS=指令条数/执行时间=主频/平均CPI
在实际使用中,我们通常是计算的每秒能够执行多少百万条指令,即MIPS,这里的M指的是million
,百万的意思。
M
I
P
S
=
指令条数
/
(
执行时间
×
1
0
6
)
=
主频
/
(
C
P
I
×
1
0
6
)
MIPS=指令条数/(执行时间×10^6)=主频/(CPI×10^6)
MIPS=指令条数/(执行时间×106)=主频/(CPI×106)
MIPS在对不同的机器进行性能比较是有缺陷的,因为不同机器的指令集不同,指令的功能也就不同,比如在机器M1上执行某条指令的功能也许在机器M2上要用多条指令来完成;不同机器的CPI和时钟周期也不同,因而同一条指令在不同机器上所用的时间也不同。
FLOPS
FLOPS(Floating-point Operations Per Second)
即每秒执行多少次浮点运算。
F
L
O
P
S
=
浮点操作次数
/
执行时间
FLOPS=浮点操作次数/执行时间
FLOPS=浮点操作次数/执行时间
MFLOPS(Million Floating-point Operations Per Second)
,即每秒执行多少百万次浮点运算
M
F
L
O
P
S
=
浮点操作次数
/
(
执行时间
×
1
0
6
)
MFLOPS=浮点操作次数/(执行时间×10^6)
MFLOPS=浮点操作次数/(执行时间×106)
GFLOPS(Giga Floating-point Operations Per Second)
,即每秒执行多少十亿次浮点运算
G
F
L
O
P
S
=
浮点操作次数
/
(
执行时间
×
1
0
9
)
GFLOPS=浮点操作次数/(执行时间×10^9)
GFLOPS=浮点操作次数/(执行时间×109)
TFLOPS(Tera Floating-point Operations Per Second)
,即每秒执行多少万亿次浮点运算
T
F
L
O
P
S
=
浮点操作次数
/
(
执行时间
×
1
0
12
)
TFLOPS=浮点操作次数/(执行时间×10^{12})
TFLOPS=浮点操作次数/(执行时间×1012)
此外还有:
P
F
L
O
P
S
=
浮点操作次数
/
(
执行时间
×
1
0
15
)
PFLOPS=浮点操作次数/(执行时间×10^{15})
PFLOPS=浮点操作次数/(执行时间×1015)、
E
F
L
O
P
S
=
浮点操作次数
/
(
执行时间
×
1
0
18
)
EFLOPS=浮点操作次数/(执行时间×10^{18})
EFLOPS=浮点操作次数/(执行时间×1018)、
Z
F
L
O
P
S
=
浮点操作次数
/
(
执行时间
×
1
0
21
)
ZFLOPS=浮点操作次数/(执行时间×10^{21})
ZFLOPS=浮点操作次数/(执行时间×1021)
注:在描述存储容量、文件大小等时,K、M、G、T通常用2的幂次来表示,如
1
K
b
=
2
10
b
1Kb=2^{10}b
1Kb=210b
在描述速率、频率等时,k、M、G、T通常用10的幂次来表示,如
1
k
b
/
s
=
1
0
3
b
/
s
1kb/s=10^3b/s
1kb/s=103b/s。
通常前者用大写K,后者用小写k,但其他前缀均为大写,表示的含义取决于使用的场景。
五、基准程序
基准程序(Benchmarks)是专门用来进行性能评价的一组程序,能够很好地反映机器在运行实际负载时的性能,可以通过在不同机器上运行相同的基准程序来比较在不同机器上的运行时间,从而评测其性能。对于不同的应用场合,应该选择不同的基准程序。
使用基准程序进行计算机性能评测也存在一些缺陷,因为基准程序的性能可能与某一小段的短代码密切相关,而硬件系统设计人员或编译器开发者可能会针对这些代码片段进行特殊的优化,使得执行这段代码的速度非常快,以至于得不到准确的性能评测结果。
一般情况下,基准测试程序能够反映机器性能的好坏。但是优于基准程序中的语句存在频度的差异,因此运行结果并不能完全说明问题。
六、几个专业术语
6.1 系列机
具有基本相同的体系结构,使用相同基本指令系统的多个不同型号的计算机组成的一个产品系列。
6.2 兼容
指软件或硬件的通用性,即运行在某个型号的计算机系统中的硬件/软件也能应用于另一个型号的计算机系统是,称这两台计算机在硬件或软件上存在兼容性。
6.3 软件可移植性
指吧使用在某个系列计算机中的软件直接或进行很少的修改就能运行在另一个系列计算机中的可能性。
6.4 固件
将程序固化在ROM中组成的部件称为固件。固件是一种具有软件特性的硬件,吸收了软/硬件各自的优点,其执行速度快于软件,灵活性优于硬件,是软/硬件结合的产物。
6.5 透明性
在计算机领域中,站在某类用户的角度,若感觉不到某个事物或属性的存在,即“看”不见某个事物或属性,则称为“对该用户而言,某个事物或属性是透明的”。
在CPU
中,IR/MAR/MDR
对各类程序员都是透明的。
结语
在今天的内容中我们介绍了计算机中的一些性能指标:
- 内存的性能指标有:字长、主存容量、吞吐量
- 数据传输的性能指标有:数据通路带宽
- 速度的性能指标有:响应速度、主频、CPU时钟周期、CPI、CPU执行时间、IPS、FLOPS
- 对计算机性能进行评测的程序:基准程序
我们还简单了解了系列机、兼容、固件、软件可移植性、透明性这些专业术语。
今天的内容到这里就全部结束了,在下一篇内容中我们将进入第二章的学习,我们会在下一个篇章中介绍《数制与编码》的相关内容,大家记得关注哦!如果大家喜欢博主的内容,可以点赞、收藏加评论支持一下博主,当然也可以将博主的内容转发给你身边需要的朋友。最后感谢各位朋友的支持,咱们下一篇再见!!!