性能指标

吞吐量和响应时间

  • 吞吐量 指系统在单位数件内处理请求的数量,主要取决于主存的存储周期
  • 响应时间 指从用户向计算机发送一个请求,到系统对该请求做出响应并获得所需结果的等待时间。通常包括CPU时间(运行一个程序所花费的时间)与等待时间(用于磁盘访问、存储器访问、IO操作、操作系统开销等时间)

CPU Clock

  • 主频(CPU时钟频率) 机器内部主时钟的频率,是衡量机器速度的重要参数。主频的倒数是CPU时钟周期。对于同一个型号的计算机,其主频越高,完成指令的一个执行步骤所需的时间越短,执行指令的速度越快
  • CPU时钟周期 通常为节拍脉冲或T周期,即主频的倒数,它是CPU中最小的时间单位,每个动作至少需要1个时钟周期
  • CPI(Clock cycle Per Instruction):执行一条指令所需的时钟周期数
  • CPU执行时间指运行一个程序花费的时间

CPU执行时间=CPU时钟周期数/主频=(指令条数*CPI)/主频 上式表明,CPU的性能(CPU执行时间)取决于三个要素:1. 主频(时钟频率);2. 每条指令执行所用的时钟周期数(CPI);3. 指令条数

指令周期

原文地址:http://media4.open.com.cn/l603/fushi/0903/jisuanjzcyl/web/lesson/char8/j2.htm?tdsourcetag=s_pctim_aiomsg

一、指令周期的基本概念

CPU每取出并执行一条指令所需的全部时间叫指令周期,也即CPU完成一条指令的时间叫指令周期,如下图所示。图中的取指阶段完成取指令和分析指令的操作,又叫取指周期;执行阶段完成执行指令的操作,又叫执行周期。在大多数情况下, CPU就是按取指-执行-再取指-再执行……的顺序自动工作的。

img

由于各种指令操作功能不同,因此各种指令的指令周期是不相同的。例如无条件转移指令JMP X, 在执行阶段不需访问主存,而且操作简单,完全可以在取指阶段的后期将转移地址X送至PC, 以达到转移的目的。这样, JMP X指令的指令周期就是取指周期。又如一地址格式的加法指令ADD X,在执行阶段首先要从X所指示的存储单元中取出操作数,然后和ACC的内容相加,结果存于ACC,故这种指令的指令周期在取指和执行阶段各访问一次存储器,其指令周期就包括两个存取周期。再如乘法指令,其执行阶段所要完成的操作比加法指令多得多,故它的执行周期超过了加法指令,如下图所示。

img

此外,当遇到间接寻址的指令时,由于指令字中只给出操作数有效地址的地址,因此,为了取出操作数,需先访问一次存储器,取出有效地址,然后再访问存储器,取出操作数。这样,间接寻址的指令周期就包括取指周期、间址周期和执行周期三个阶段,其中间址周期用于取操作数的有效地址,因此间址周期介于取指周期和执行周期之间,如下图所示。

img

由第五章可知,当CPU采用中断方式实现主机与I/O交换信息时,CPU在每条指令执行阶段结束前, 都要发中断查询信号,以检测是否有某个I/O提出中断请求。如果有请求,CPU则要进入中断响应阶段,又称中断周期。在这阶段, CPU必须将程序断点保存到存储器中。这样,一个完整的指令周期应包括取指、间址、执行和中断4个子周期,如下图所示。由于间址周期和中断周期不一定包含在每个指令周期内,故图中用菱形框判断。

img

总之,上述4个周期都有CPU访存操作, 只是访存的目的不同。取指周期是为了取指令,间址周期是为了取有效地址,执行周期是为了取操作数(当指令为访存指令时),中断周期是为了保存程序断点。这4个周期又可叫CPU的工作周期,为了区别它们,在CPU内可设置4个标志触发器,如下图所示。

img

图中的FE、IND,EX和INT分别对应取指、间址、执行和中断4个周期,并以“1”状态表示有效;它们分别由1→FE、1→IND、1→EX和1→INT4个信号控制。 设置CPU工作周期标志触发器对设计控制单元十分有利。 例如,在取指阶段,只要设置取指周期标志触发器FE为1, 由它控制取指阶段的各个操作,便获得对任何一条指令的取指命令序列。又如在间接寻址时,间址次数可由间址周期标志触发器IND确定,当它为“0”状态时,表示间址结束。再如对于一些执行周期不访存的指令(如转移指令,寄存器类型指令),同样可以用它们的操作码与取指周期标志触发器的状态相“与”,作为相应微操作的控制条件。

二、指令周期的数据流

为了便于分析指令周期中的数据流,假设CPU中有存储器地址寄存器MAR、存储器数据寄存器MDR、程序计数器PC和指令寄存器IR。

1. 取指周期的数据流

img

上图是取指周期的数据流。PC中存放现行指令的地址,该地址送到MAR并送至地址总线, 然后由控制部件CU向存储器发出读命令,使对应MAR所指单元的内容(指令)经数据总线送至MDR,再送至IR,与此同时CU控制PC内容加1,形成下一条指令的地址。

2. 间址周期的数据流

img

间址周期的数据流如上图所示。一旦取指周期结束,CU便检查IR中的内容,以确定其是否有间址操作, 如果需间址操作,则MDR中指示形式地址的右N位将被送至MAR,又送至地址总线,此后CU向存储器发读命令,并获取有效地址并存至MDR。

3. 执行周期的数据流

由于不同的指令在执行周期的操作不同,因此执行周期的数据流是多种多样的, 可能涉及到CPU内部寄存器间的数据传送、或对存储器(或I/O)进行读写操作、或对ALU的操作,因此,无法用统一的数据流图表示。

4. 中断周期的数据流

CPU进入中断周期要完成一系列操作, 其中PC当前的内容必须保存起来,以待执行完中断服务程序后可准确返回到该程序的间断处,这一操作的数据流如下图所示。

img

图中由CU把用于保存程序断点的存储器特殊地址(如堆栈指针的内容)送往MAR,并送到地址总线上, 同时将PC的内容(程序断点)送到MDR,并命令存储器写,最终使程序断点经数据总线存入存储器。此外,还需将中断服务程序的入口地址送至PC,为下一个指令周期的取指周期作好准备。

RISC指令集的五个周期

RISC(reduced instruction set computer,精简指令集计算机)简称为精简指令集。RISC把执行指令的精力主要放在了经常使用的指令上面。本文主要介绍了在RISC指令集中一条指令的五个主要执行CC(Clock Cycle,时钟周期)的主要涵义以及内容。

这五个时钟周期分别为:IF(Instruction fetch,取指令),ID(Instruction decode/register fetch cycle,指令解码),EX(Execution/effective address cycle,执行),MEM(Memory access,内存访问), WB(Write-back cycle,写回)。

IF:根据PC(program counter,程序计数器)中所存储的内存地址,在内存中找到该地址所指向的指令,并将该指令存储在寄存器中。同时,PC指向下一条指令,完成这个操作要求PC加4(以32位指令集为例,如果是64位则要加8)。

ID : 操作从IF阶段获取来的指令。将指令解码,最终找到指令所需要的寄存器中存储的数据。如果该指令只一条跳转指令,那么在这一阶段需要根据跳转指令的意义对获取的值进行比较,如果比较结果为true则执行跳转,如果比较结果为false则不执行跳转,继续下一条指令的执行;如果指令需要对指令中某些位进行填充,也在ID阶段完成,比如对高四位进行填充以满足指令结果是32位;计算可能跳转的指令的地址。

EX : ALU(Arithmetic Logic Unit,算术逻辑单元)对ID阶段的结果进行计算。在ID阶段已经获得了指令计算所需要的寄存器的值,那么在EX阶段需要根据指令的意义对这些寄存器的值进行计算。计算根据指令的不同变得不同。主要有三种类型的ALU计算:1. ALU根据ID中补充的地址,对有效的地址单元进行计算,最终得到所需要的内存的地址;2. 根据指令的意义,对从寄存器中获取的值,进行操作,比如对两个寄存器的值进行相加;3. 根据寄存器的值以及补充的值,计算出立即数的结果。

MEM:如果当前指令是Load指令,那么,根据EX计算出的内存地址,从内存中获取对应的值;如果当前指令是store,那么,根据EX计算出的内存地址和寄存器的值,将寄存器的值存入该内存地址中。其他的指令一般不会设计内存的访问。

WB:将计算出来的最终的寄存器的值写入到register file(寄存器文件)中。这部操作包括从内存中获取的值以及通过算术运算得到的结果。

以上五个时钟周期便是一条RISC指令执行的主要步骤。