目录
1.机器字长,存储字长与指令字长
2.指令周期,机器周期,时钟周期
3.CPI,IPS,MIPS
4.翻译程序和汇编程序
5.计算机体系结构和计算机组成的区别和联系
6.基准程序执行得越快说明机器的性能越好吗?
1.机器字长,存储字长与指令字长
不同的机器三者在数值上可以相等也可以不等:
机器字长:CPU内部用于整数运算的数据通路的宽度(也就是CPU一次可以处理的二进制代码的位数)。通常等于ALU的宽度或通用寄存器的位数。
数据通路是指数据在指令执行过程中所经过的路径及路径上的部件,主要是CPU内部进行数据运算,存储和传送的部件,这些部件的宽度基本上要一致才能相互匹配。因此机器字长等于ALU的宽度或通用寄存器的位数。
存储字长:一个存储单元中包含的二进制代码的位数,它等于MDR的位数。
补充:MDR的位数:存储单元的位数 MAR的位数反映了最多可寻址的存储单元的个数,如MAR:10位,那么最多有2^10个存储单元,MAR的长度与PC的长度相等。
指令字长:一个指令字中包含的二进制代码的位数。
指令字长一般取存储字长的整数倍,若指令字长等于存储字长的2倍,则需要2个访存周期来取出一条指令,若指令字长等于存储字长,则只需要1个访存周期取指令,指令周期等于机器周期。
早期的存储字长一般与指令字长、字长相等,因此访问一次主存储器便可取出一条指令或一个数据。随着计算机的发展,指令字长、存储字长都可变,但必须都是字节的整数倍。
机器字长会直接影响加法器(ALU),内部总线宽度(数据通路的宽度)及寄存器的位数,进而影响数据的精度和表示范围;如果提高机器字长,一个数能表示的精度和范围就越高,但随之而来的是成本的增加
2.指令周期,机器周期,时钟周期
指令周期:CPU从主存中取出并执行一条指令所需的全部时间
取出并执行一条指令包括:取出指令-->分析指令-->执行指令,如下图所示:
对指令译码的过程就是分析指令的过程
机器周期:
机器周期又称CPU周期,一个指令周期常用多个机器周期表示。一个如上图所示,取指操作算一个机器周期,执行指令操作也算一个机器周期。
时钟周期:一个机器周期又包含若干时钟周期(也称为节拍、T周期或CPU时钟周期,它是CPU操作的最基本单位)
CPU上标注的主频,例如主频=3.0GHz,就表示每秒钟可以发送3.0G次的时钟周期
若想了解得更加详细,推荐看看这篇:指令执行过程
3.CPI,IPS,MIPS
CPU时钟周期:上面讲过,时钟周期是CPU工作的最小时间单位。
主频:机器内部主时钟的频率,即时钟周期的导数(1/CPU时钟周期)。对于同一型号的计算机,主频越高,完成指令的一个执行步骤所用时间越短,执行指令的速度越快。
CPI(Cycle Per Instruction):执行一条指令所需要的时钟周期数。不同指令的时钟周期数可能不同,因此对于一个程序或一台机器来说,其CPI指该程序或该机器指令集中的所有指令执行所需的平均时钟周期数,此时CPI是一个平均值。
指令执行速度:主频/平均CPI,主频表示CPU内部主时钟的频率,例如主频1.5GHz说明1s有1.5G=1.5*10^9个时钟周期。平均CPI表示一条指令的时钟周期数,所以 指令执行速度=主频/平均CPI,即1s执行的指令数。
用户CPU时间:总时钟周期数/主频,总时钟周期数=CPI(一条指令的时钟周期数)*指令条数,主频:1s的时钟周期数,所以用户CPU时间=总时钟周期数/主频
一定不要记,看题目理解即可!
IPC:表示每个时钟周期运行多少条指令,机CPI的倒数(1/CPI)。
IPS(Instructions Per Second):每秒执行多少条指令,IPS=主频/平均PCI。
CPU执行时间:CPU时钟周期数/主频=指令条数*CPI*时钟周期的长度=(指令条数*CPI)/主频
CPU执行时间取决于三个要素:CPI,主频和指令条数。三个条件下过户制约,例如,更改指令集可以减少程序所含指令条数,但同时可能引起CPU结构的调整,从而可能会增加时钟周期的宽度(降低主频)。
MIPS(Million Instructions Per Second):每秒执行多少万条指令。
MIPS=指令条数/(执行时间*10^6)=主频/(CPI*10^6)
MIPS 对不同机器进行性能比较是有缺陷的。因为不同机器的指令集不同,指令的功能也就不同,比如在机器M1上某条指令的功能也许在机器M2上要用多条指令来完成;不同机器的CPI 和时钟周期也不同,因而同一条指令在不同机器上所用的时间也不同。
FLOPS(Floating-point Operations Per Second):每秒执行多少次浮点运算。
注意:
在描述存储容量、文件大小等时,K、M、G、T通常用2的幂次表示,如1Kb=2^10b;在描述速率、频率等时,K、M、G、T通常用10的幂次表示。如 1kb/s=10^3b/s。通常前者用大写的K,后者用小写的k,但其他前缀均为大写,表示的含义取决于所用的场景。
例题:
1.程序P在机器M上的执行时间是 20s,编译优化后,P执行的指令数减少到原来的 70%,而 CPI增加到原来的1.2倍,则P在M上的执行时间是()
解答:
假设原来的指令条数为x,则执行时间=指令条数*每条指令的时钟周期数*时钟周期的长度=
x*CPI*1/f 得到:20=(x*CPI)/f 所以原来的CPI=20f/x
经过编译优化后,指令条数减少为原来的70%,即指令条数为0.7x,而CPI增加到原来的1.2倍,即24f/x,则现在P在M上的执行时间=(0.7x * 24f/x) / f =24*0.7=16.8s
2.假定计算机 M1和M2具有相同的指令集体系结构,M1的主频为2GHz,程序P在M1上的运行时间为 10s。M2采用新技术可使主频大幅提升,但平均 CPI也增加到 M1 的 1.5 倍,则 M2的主频至少提升到多少才能使程序P在M2上的运行时间缩短为6s?
解答:
程序P在M1上的时钟周期数=指令条数xCPI=CPU执行时间x主频=10s*2GHz=2*10^10。M2的平均CPI为 M1 的1.5倍,因此程序P在 M2 上的时钟周期数 =1.5*2*10^10=3x10^10。
要使程序 P在 M2上的运行时间缩短到6s,则M2 的主频至少应为:程序P所含时钟周期数/CPU执行时间=3x10^10/6s=5GHz
由此可见,M2的主频是 M1的 2.5 倍,但 M2 的速度却只是 M1 的 1.67 倍。
所以,这也可以看出主频高的CPU不一定比主频低的CPU快:
主频和实际的运算速度存在一定的关系,但目前还没有一确定的公式能够定量两者的数值关系,因为 CPU 的运算速度还要看 CPU 的流水线的各方面的性能指标(架构、缓存、指令集、CPU 的位数、Cache 大小等)。由于主频并不直接代表运算速度,因此在一定情况下很可能会出现主频较高的 CPU 实际运算速度较低的现象。
4.翻译程序和汇编程序
翻译程序有两种:一种是编译程序,它将高级语言源程序一次全部翻译成目标程序,只要源程序不变,就无须重新翻译。另一种是解释程序,它将源程序的一条语句翻译成对应的机器目标代码,并立即执行,然后翻译下一条源程序语句并执行,直至所有源程序语句全部被翻译并执行完。所以解释程序的执行过程是翻译一句执行一句,并且不会生成目标程序。
汇编程序也是一种语言翻译程序,它把汇编语言源程序翻译为机器语言程序。
编译程序与汇编程序的区别:若源语言是诸如C、C++、Java 等“高级语言”,而目标语言是诸如汇编语言或机器语言之类的“低级语言”,则这样的一个翻译程序称为编译程序。若源语言是汇编语言,而目标语言是机器语言,则这样的一个翻译程序称为汇编程序。
5.计算机体系结构和计算机组成的区别和联系
计算机体系结构是指机器语言或汇编语言程序员所看得到的传统机器的属性,包括指令集、数据类型、存储器寻址技术等,大都属于抽象的属性。
计算机组成是指如何实现计算机体系结构所体现的属性,它包含许多对程序员来说透明的硬件细节。例如,指令系统属于结构的问题,但指令的实现即如何取指令、分析指令、取操作数、如何运算等都属于组成的问题。因此,当两台机器的指令系统相同时,只能认为它们具有相同的结构,至于这两台机器如何实现其指令,则完全可以不同,即可以认为它们的组成方式是不同的。例如,一台机器是否具备乘法指令是一个结构的问题,但实现乘法指令采用什么方式则是一个组成的问题。许多计算机厂商提供一系列体系结构相同的计算机,而它们的组成却有相当大的差别。即使是同一系列的不同型号机器,其性能和价格差异也很大。
6.基准程序执行得越快说明机器的性能越好吗?
一般情况下,基准测试程序能够反映机器性能的好坏。但是,由于基准程序中的语句存在频度的差异,因此运行结果并不能完全说明问题。