cpu的最小生命单位就是时钟周期,而一个机器周期包括若干个时钟周期,至于指令周期,则包含了若干个机器周期。如果按粒度排序,则是指令周期>=机器周期>=时钟周期。

1 指令周期

我们的一个程序会被翻译成若干条机器指令,不同机器指令执行所需要的时间称为指令周期。

指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期数也不同。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,如乘法指令,则需要两个或者两个以上的机器周期。通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。

计算机计算速度指的是(计算机的计算速度如何衡量)(1)

2 机器周期

在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期

一般情况下,一个机器周期由若干个时钟周期构成。一个机器周期内包含的时钟周期个数由该机器周期内完成动作所需的时间决定。

由于CPU内部操作的速度较快,而CPU访问一次存储器的时间较长,因此机器周期通常由存取周期来确定。

当然,CPU的流水线结构设计可以利用指令运行的不同阶段使用的CPU硬件互不相同,并发的运行多条指令,从而提高时间效率,整体上减少指令周期的时间。

3 时钟周期

时钟周期是最计算机操作的最小单位时间,由计算机的主频决定,是主频的倒数。

通常将一个时钟周期定义为一个节拍。

工作脉冲是控制器的最小时间单位,起定时触发作用,一个时钟周期有一个工作脉冲。

时钟周期也可称为振荡周期、节拍脉冲或T周期,是处理操作最基本的单位。

如果晶振的输出没有经过分频或倍频就直接作为cpu的工作时钟,则时钟周期就等于晶振的振荡周期;如果晶振的输出经过分频或倍频后作为CPU的工作时钟,则时钟周期就就是分频或倍频后的。

状态周期是CPU从一个状态转换到另一状态所需要的时间。简单地说每个状态周期Ts 分为两个震荡周期(时钟周期)。

4 CPI

平均指令周期(Cycles per Instruction,CPI)就是所有类型的机器指令所需的时钟周期数的加权平均。

其中, 是指令类型 i 的指令数目, 是该指令类型的周期数, 是总指令数。

例:某个测试程序的指令数如下:

指令类型

指令数量

时钟周期

整数运算

45000

1

数据传输

32000

2

浮点数运算

15000

2

控制转移

8000

2

备注:现代流水线技术减少了每个指令的机器周期及对应的时钟周期;

则平均指令周期为

=1.55 个时钟周期

是说一个机器指令加权平均需要1.55个时钟周期。

5 实例

假设一个处理器的时钟频率为500MHz,每4个时钟周期组成一个机器周期(计算机周期),执行一条指令平均需要三个机器周期,则该处理器的一个机器周期是多少ns?平均执行速度为MIPS是多少? .

CPU的MIPS(每秒百万条指令)即最高速率 = CPU指令周期 的倒数 ÷ 1M * 1个机器(计算机)周期执行的指令数。

时钟周期 = 1 / 500 × 1000000000 = 2 ns机器周期 = 时钟周期 × 4 = 8 ns指令周期 = 机器周期 × 3 = 24 ns平均执行速度为:1 ÷ 指令周期 = 1 ÷ 24 × 1000000000 ÷ 1000000 = 41.67 MIPS

是说每秒能够执行41.67百万条指令。

6 基准程序测试法

基准程序测试法,利用能反映计算机典型运行情况的一组标准化程序对计算机进行测试,其结果用来评价不同计算机的相对性能的方法。

基准测试程序试图为评估机器性能提供客观和公平的标准。 但是要做到完全公平并不容易。 其中涉及许多因素,包括硬件,体系结构,编译优化,编程环境,测试条件和解决问题的算法。 标准的测试程序集应提供一组控制测试条件和步骤的规范,包括测试平台环境,输入数据,输出结果和性能指标。 不同的基准测试程序具有不同的目标: 某些测试CPU性能,某些测试文件服务器性能,某些测试输入和输出接口以及某些测试网络通信速度。 根据用途不同,测试程序可以分为特殊用途和通用用途。

6.1 Dhrystone基准程序

1984年由Rheinhold Weiker提出,目的是测量和比较各种计算机的性能。它侧重于测量整数指令的有效性。Dhrystone用C语言写的版本共有100条语句,程序中没有浮点指令,可装入大多数计算机的高速缓存。

6.2 Linpack基准程序

1976年由美国田纳西大学杰克·唐加拉(JackDongarra)教授开发的一组求解密集线性方程组的程序包。用以衡量计算机系统的数值计算能力,其基本单位是FLOPS(每秒执行多少次浮点操作),世界超级计算机500强排行榜就是采用该基准程序进行评测排序的。

6.3 Whetstone基准程序

Whetstone这是一个全面的基准测试程序,旨在比较不同计算机的浮点性能。它最初是用Algol-60编写的,后来又用Fortran重写了。 这些块语句在虚拟计算机上转换为称为Whetstone的指令,因此命名为Whetstone基准程序。 该基准测试程序包括整数运算和浮点运算,涉及到数组下标索引,子例程调用,参数传递,条件传递以及三角函数和超越函数等。

Whetstone是一套基准程序,用来测试CPU的处理性能,它的基本原则是:在程序编译后生成的机器指令中,各种指令出现的频率与统计数据中指令出现的频率相符合。

Whetstone的程序比较简单,由8个模块组件,每个模块循环一定次数、执行一种基本运算。以下是每个模块的简单描述:

数组元素(浮点),循环12次

数组参数(浮点),循环14次

条件判断(if then else),循环345次

整型计算,循环210次

三角函数(sin, cos, etc.),循环32次

程序调用(浮点),循环899次

数组操作(赋值),循环616次

标准函数(exp, sqrt, etc.),循环93次

整个测试执行若干次,第一次执行100次循环,之后每次递增10次循环,即第二次执行110次循环。测试结果是每组循环的平均时间和所有循环的平均KWIPS值(Thousands of Whetstone Instruction mixes Per Second)。

6.4 SPEC基准程序

SPEC是标准绩效评估合作的首字母缩写。它是由NCGA(国家计算机图形协会)在1980年代成立的。该小组的创始人来自HP,DEC,MIPS和SUN。他们有一组基准测试程序来评估新机器的性能。第一组基准测试程序称为SPEC89,其中包含10个程序。SPEC92扩展了20个程序,6个整数程序和14个称为SPECint92,SPECfp92的浮点程序。SPEC随后发布了一些新的基准测试程序(例如SPEC95,SPEChpc96,SPECweb96,SPEC2000等)。SPEC最初专注于测试CPU性能,现在强调开发反映实际应用程序(例如实际负载等)的基准程序,并已扩展到客户端/服务器计算,商业应用程序和I/O子系统。

6.5 TPC基准程序

1989年由事务处理性能委员会(TransactionProcessingPerformanceCouncil,TPC)制定并发布的一种商用基准测试程序组。TPC至今已经推出了4套基准程序,其中早期发布的TPC-A和TPC-B已被废弃不用,TPC-C用于测试在线事务处理系统,TPC-D用于测试决策支持系统。

-End-

,