文章目录
主存储器的性能指标
在前面说过,主存储器和CPU
之间进行数据传输的时候,是需要MAR
和MDR
作为中间商来进行传输的,并且还说了MAR
和MDR
就是为了主存而设计的。
最终我们得到MAR,MDR
和主存储器单元之间的关系:
MAR
的位数表明了主存储器存储单元的个数。
MDR
的位数表明了主存储器存储单元的存储字长。
在铺垫完这么多以后,我们最终引出衡量主存储器性能指标的一个参数:
主存储器容量
对于一个主存储器的容量,在理论角度上,我们可以根据MAR
和MDR
的位数来进行估算:
主存储器的容量= 存储单元的个数*存储字长
。
这个公式也很好理解,一个存储单元的存储字长表明这个存储单元可以存储多少比特的数据,而存储单元的个数表明了有多少个这样的存储单元。但是需要注意的是,这里得到的主存储器的容量是,当前配置的MAR
和MDR
的背景下,支持的主存储器的最大容量。也就是说假设MAR
有32
位,其支持存储2
的32
次方个不同的地址,但是主存储器可能只有2
的16
次方个存储单元,所以说我们通过公式计算出的主存储器容量是根据MAR
和MDR
的配置下能够得到的主存储器的最大容量,但是实际的主存储单元的容量可能很小,但是在实际计算中我们好像可以忽略这种情况,就按照公式理想化来计算存储器的容量。
计算机中的容量单位
8bit=1Byte
1024Byte=1KB
1024KB=1MB
1024MB=1GB
1024GB=1TB
2 10 字节 = K , 2 20 字节 = M B , 2 30 字节 = G B , 2 40 字节 = T B \color{red}{2^{10}字节=K,2^{20}字节=MB,2^{30}字节=GB,2^{40}字节=TB} 210字节=K,220字节=MB,230字节=GB,240字节=TB
CPU的性能指标
需要注意是,当描述数据传输的速度或者指标时,
K
=
K
i
l
o
=
千
=
1
0
3
,
M
=
M
i
l
l
i
o
n
=
百万
=
1
0
6
,
G
=
G
i
g
a
=
十亿
=
1
0
9
,
T
=
T
e
r
a
=
万亿
=
1
0
12
\color{red}{K=Kilo=千=10^3,M=Million=百万=10^6,G=Giga=十亿=10^9,T=Tera=万亿=10^{12}}
K=Kilo=千=103,M=Million=百万=106,G=Giga=十亿=109,T=Tera=万亿=1012,这时这几个标志表示的一般是数量单位,其一般用于描述主频,IPS,FIPS
。
CPU主频(时钟频率):
CPU
内数字信号脉冲震荡的频率,一秒
内CPU
可以发出的脉冲信号的个数,其单位为HZ
,1000HZ
的意思就是1
秒内CPU
可以发出1000
个脉冲信号,3GHZ
表示CPU一秒
内可以发出30亿
个脉冲信号。
CPU时钟周期:
CPU
发出的一个脉冲信号就是一个时钟周期,所以主频也是1
秒内CPU
发出的时钟周期的个数,时钟周期本质是时间,其单位可以是秒,微秒,纳秒…时钟周期是CPU
执行操作的最小时间单位,可以理解为CPU在一个时钟周期内可能可以进行多个微操作,但是如果只执行一个微操作的话,那么也需要消耗1个时钟周期,这个微操作的实际耗时可能是0.5个时钟周期。这时候计算机在处理的时候,在前0.5个周期可能就啥也不干,后面的0.5个周期再进行对应的微操作。
时钟周期(脉冲)的作用
首先需要知道,CPU
是在连续不断的发出脉冲信号的,也就是说CPU
不断的处于某个时钟周期之内,前面我们说一条指令的执行由众多微操作组成,而微操作的执行是需要CPU
进行指挥的,所以对应的也就是需要消耗时钟周期,所以时钟周期可以看作是在一个固定时间内,CPU
对某个硬件进行指挥操作,下一个时钟周期的时间内就可能对其他的硬件进行指挥操作,并且需要注意的是,一条指令中的任意一个微操作,最少都要消耗一个时钟周期。
CPU主频(时钟频率)和时间周期之间存在如下的关系:
C P U 主频 ( 时钟频率 ) = 1 时钟周期 \color{red}{CPU主频(时钟频率)=\frac{1}{时钟周期}} CPU主频(时钟频率)=时钟周期1
1
表示1
秒。
时钟周期表示一个时钟周期持续的时间
最终得到的结果就是一
秒内能够容纳多少个时钟周期,也就是主频。
CPI(Clock cycle Per Instruction):执行一条指令所需要的时钟周期数
注:CPI应该侧重理解其作为平均值的情况。
因为指令运行需要的CPI
不是稳定的,单独讨论某条指令的CPI
意义不大,所以我们一般是对CPI
取平均值,即
即将所有指令的时钟周期相加然后取平均值,得到平均执行一条指令需要的时钟周期(CPI
),平均CPI
又称做有效CPI
。
执行某条指令需要的时间
=
该条指令的
C
P
I
×
时钟周期
\color{red}{执行某条指令需要的时间=该条指令的CPI \times 时钟周期}
执行某条指令需要的时间=该条指令的CPI×时钟周期
执行计算机中任意一条指令需要的时间
=
平均执行一条指令的
C
P
I
×
时钟周期
\color{red}{执行计算机中任意一条指令需要的时间=平均执行一条指令的CPI \times 时钟周期}
执行计算机中任意一条指令需要的时间=平均执行一条指令的CPI×时钟周期
需要注意的是,平均CPI可以是计算机的,也可以是程序的,一个是计算机执行一条指令平均需要的时钟周期数,一个是执行该程序的指令平均需要的时钟周期数。但是非常需要注意的是,在求一个程序或者计算机的平均CPI时,必须要集中的运行完整个计算机的所有指令或者程序的**所有指令
**。
CPU执行时间(运行整个程序的耗时)=CPU时钟周期数/主频=(指令条数CPI)/主频=CPU时钟周期数单个时钟周期持续的时间
注意,CPU执行时间的单位是秒,微妙,小时这类时间单位,并不是CPU执行该程序需要的时间周期数,所以在计算出CPU需要的时钟周期数以后,还需要根据主频来计算出具体的时间。
注:这里的CPU
时钟周期数指的是执行这个程序需要的时钟周期数。
IPC(instruction per cycle):每个时钟周期执行的指令数,IPC是CPI的倒数,从名称上就能看出。例如CPI=3说明平均执行一条指令需要3个时钟周期,那么IPC就等于 1 3 \color{red}{\frac{1}{3}} 31 ,说明每个时钟周期平均执行 1 3 \color{red}{\frac{1}{3}} 31 条指令。
IPS(Instruction Per Second):每秒执行多少条指令,可用来衡量标量机的性能
I P S = 主频 平均 C P I \color{red}{IPS=\frac{主频}{平均CPI}} IPS=平均CPI主频
FLPOS(Float-point Operations Per Second):每秒执行多少次浮点运算,一般用来衡量计算机的运算速度,可用于衡量向量机的性能。
对于IPS
和FLOPS
还可能出现这样的KIPS,MIPS,KFLPS,MFLPS,GFLOPS,TFLOPS
。
3KIPS
的意思就是每秒执行3000
条指令
GFLOPS
的意思为每秒执行十亿
次浮点运算。
在2021年考研大纲中,还新增了这些:
P
F
L
O
P
S
,
E
F
L
O
P
S
,
Z
F
L
O
P
S
,
P
=
1
0
3
T
(
千万亿
)
,
E
=
1
0
3
P
(
百万万亿
)
,
Z
=
1
0
3
E
(
十亿万亿
)
\color{red}{PFLOPS,EFLOPS,ZFLOPS,P=10^3T(千万 亿),E=10^3P(百万万亿),Z=10^3E(十亿万亿)}
PFLOPS,EFLOPS,ZFLOPS,P=103T(千万亿),E=103P(百万万亿),Z=103E(十亿万亿)
从P开始,初始单位变成千,百万,十亿,然后后缀是万亿。
对应的分别是
1
0
15
,
1
0
18
,
1
0
21
\color{red}{10^{15},10^{18},10^{21}}
1015,1018,1021
计算机系统的整体(综合)性能指标
机器字长:机器字长是计算机进行一次定点整数运算所能处理的二进制数据的最大位数,机器字长越长,数的表示范围越大,计算机精度越高,机器字长有时候也称作字长。
题目可能会说机器字长为4字节,这时候需要注意,机器字长的单位一般是位或者bit,所以需要进行转换,4字节对应转换后的机器字长为32位。
机器字长=通用寄存器宽度=ALU宽度,因为机器字长是CPU(运算器)进行一次定点整数运算所能处理的二进制数据的位数,而CPU中进行数据处理的硬件是运算器,运算器的数据一般来自寄存器。并且因为CPU内部传输数据是使用内部总线来进行传输的,所以机器字长和内部数据总线的宽度也有点关系,机器字长本质就是整数运算的最大位数,而ALU是进行整数运算的,所以机器字长一定=ALU宽度=通用寄存器宽度。
注意:n位微机,n位计算机,n位CPU指的都是该计算机的机器字长为n。
为什么机器字长越长,数的表示范围越大,计算机精度越高。
假设当前机器的机器字长为4位,这时要运算两个8位二进制数据的和:
例如:
10101100
10100010
因为机器字长为4位
,所以CPU(运算器)
每次最多只能处理4
位的二进制数据,所以需要计算两次,多次的计算机就可能导致数据精度丢失,并且因为机器字长一般等于内部寄存器的长度,所以数的表示范围越大。
数据通路带宽:数据总线一次所能并行传送信息的位数
可以将总线理解成一条马路,带宽就是马路一排最多能够容纳的人数。
注:这里说的CPU数据通路宽度是指CPU外部数据总线的宽度,CPU内部的数据总线宽度和CPU外部数据总线的宽度可能是不同的。
为什么CPU内部数据总线的宽度和CPU外部总线的宽度可能是不同的?
假设主存储器的存储字长为16bit
,本次指令需要将主存某个位置的数据放到CPU
的某个寄存器中,数据总线宽度为8
,这时候数据总线就需要传输两次才能将主存的数据传输到对应位置的寄存器,而CPU
内部的数据总线的宽度可能刚好是16
,只需要一次传输就可以将寄存器里的数据传输到对应的位置。
吞吐量:系统在单位时间内处理请求的数量
这里的请求是一个比较宽泛的概念,其可以是指令,也可以是操作,得看具体的场景,
响应时间:从用户发出请求开始,到计算机对该请求做出响应所需要的等待时间。
基准程序:基准程序本质上是一个软件,其实就是市面上常用的一些跑分软件,例如鲁大师,这些基准程序让计算机运行这一串代码,通过这串代码来评判计算机某个硬件的性能指标。
性能指标总结
机器字长一般不作为衡量计算机运算能力的参数么?
在处理二进位较长的数据的时候,机器字长越大的计算机其运算能力一定更优,因为CPU一次能够处理的二进制位更长,那么整体来看处理速度的次数也就越少。但是这种情况其并不能代表大多数计算机的运算能力,因为一台计算机并不是只处理二进制位较长的数据,所以机器字长不能很好的衡量计算机的运算能力。
相同型号的计算机,主频越高,指令中微操作的执行速度越快,指令的执行速度也越快。
这个是正确的,因为正常情况下的两台计算机,主频越高的,时钟周期时间越短,自然对应执行指令的时间也就越短。
CPU的主频越高,能否说明CPU的性能越好?
不能,
CPU
的主频越高,说明CPU
发送脉冲信号的速度更快,对应也就是时钟周期的持续时间很短,但是一条指令的运行,在不同CPU
的背景下,运行的时间是不同的,即使是同一条指令,使用相同的CPU
重复执行一次,也可能花费不同的时钟周期,例如在当前时钟周期中,CPU
需要访问主存,但是主存现在正处于其他工作,这时候就可能导致这条指令/微操作需要花费更多的时钟周期。
假设A计算机的CPI和B计算机的CPI相同,但是A计算机主频要高于B计算机,能否说明A计算机的性能高于B计算机。
不同,
A
计算机和B
计算机的CPI
相同,说明两个计算机运行指令需要的平均时钟周期数相等,A
计算机的主频高于B
计算机,说明单位时间内A
计算机可以产生发出更多的脉冲信号,即更多的时钟周期,而IPS
等于主频/CPI
,这也说明A
计算机在单位时间内能够执行更多的指令,但是这并不能说明A
计算机的性能一定优于B
计算机,因为两台计算机的指令系统不同,指令的具体实现方式都不同,例如A
计算机实现乘法指令是通过加法指令叠加实现的,而B
计算机是实现了一条具体的乘法指令,当两台计算机都执行乘法指令的时候,A
计算机可能就需要执行若干次的加法指令,而B
计算机就只需要执行一次乘法指令。
A计算机和B计算机都使用基准程序进行跑分,A计算机的分数更高,能够说明A计算机的性能一定优于B计算机吗?
基准程序可以对CPU
的整体性能进行评估,也可以对单个硬件进行性能评估,所以说得看具体的评估情况,因为不同的计算机其性能的侧重点不同,并且基准程序的测评也存在缺陷,因为基准程序的测试代码中,可能只有某个部分代码和性能测试密切相关,,而计算机的设计者可能会针对这些代码进行优化,这样就可能导致性能测评结果不准确,例如基准程序可能根据循环语句来判断主存的性能,通过循环来反复的访问主存,但是计算机的硬件者可以对这一类循环代码进行特殊优化,将循环中用到的数据放到cache或者寄存器中,这样就不用每次都访问主存,所以这样基准程序的这部分代码就不能准确的测试出计算机的内存性能。
计算机的CPI受哪些因素影响?
1.指令系统
2.计算机组织
3.计算机系统结构
计算机组织()
需要非常注意的是,CPI和主频无关,主频上升,时钟周期变短,不会导致CPI变化。
计算机专业术语 (系列机,兼容,固件,软件可移植性)
简单理解:
(
1
)
(1)
(1)系列机
系列机:系列机是一组体系结构大致相同的计算机系统。
例如:联想的系列机:拯救者y6000p ,拯救者y7000p。
系列机具有以下特点:
在一组系列机内,后出现的计算机一般在硬件和软件的性能进行了提高,这很好理解,从拯救者y6000p开始一直到拯救者y9000p,计算机的性能得到了提高,并且软件和硬件之间的兼容性也更加稳定。
既然是一个系列的机器,那么其体系结构一定是大致相同的,可能会有一些变动。所以系列机的一个非常重要的特点就是向后兼容,这里的向后兼容不好理解,应该理解为时间上向后兼容,即后出现的机器兼容以前机器的指令系统。简单理解就是后出现的机器兼容以前机器的指令系统。
(
2
)
(2)
(2)兼容
硬件或软件的通用性,通常指同一系统不同型号的计算机。
(
3
)
(3)
(3)软件可移植性
从字面理解:可移植性,这里的性应该理解为概率,是一种可能,即可以进行移植的可能。所以软件可移植性指把使用在某个系列计算机中的软件直接或者进行很少的修改,直接移植到另一个系列计算机中也能正常使用的可能性。
需要注意是,这里的软件可移植性针对的是不同系列的计算机,并不是系列机,因为同一个系列的计算机其软件和硬件一般不会做太大的改变,这时候对同一个系列的机器进行这种软件可移植性判断没有太大意义。
固件后面再回来理解。 ( 4 ) (4) (4)固件
计算机的字
难点题目
首先需要明确,CPU速度提高%50并不是意味CPU的运行时间减少了%50,举个例子来说:人在跑步,跑道长度90m,人的速度为20m/s,则跑完需要4.5s,速度提升50%,则每秒跑30m,则需要3秒,发现时间只变为了原来的
2
3
\color{red}{\frac{2}{3}}
32 ,如果想要时间变成一半,则需要速度变为原来的2倍。将例子中的人换成CPU,跑道换成程序需要运行的时间。
本题答案为D。