CPU 时钟频率,时钟周期,机器周期,指令周期,附:程序耗时测试

时钟频率 1GHz CPU为1000,000,000次每秒。10亿次/秒

时钟周期(振荡周期,Clock Cycle)为(1/10亿)秒,1纳秒.

是计算机中最基本的、最小的时间单位,在一个时钟周期内,CPU仅完成一个最基本的动作。

机器周期(CPU周期)一般由12个时钟周期组成

在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。

例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作(注意:每一个基本操作都是由若干CPU最基本的动作组成)。完成一个基本操作所需要的时间称为机器周期。通常用内存中读取一个指令的最短时间来规定CPU周期。

指令周期(Instruction Cycle):是指计算机从取指到指令执行完毕的时间,1-4个机器周期

对于一个指令周期来说,我们取出一条指令,然后执行它,至少需要两个 CPU 周期。取出指令至少需要一个 CPU 周期,执行至少也需要一个 CPU 周期,复杂的指令则需要更多的 CPU 周期。而一个CPU周期是若干时钟周期之和。

Generally for most processors , it takes twelve clock cycles for one machine cycle to complete . And one instruction cycle might take one or maximum four machine cycles to execute the one instruction

指令周期到时钟周期计算

一个Add指令的执行时间约为43个时钟周期。

  To execute the SAL instruction:

  add A, B, C

      Fetch instruction (add) from memory address PC.
      Increment PC to address of next instruction.
      Decode the instruction and operands.
      Load the operands B and C from memory.
      Execute the add operation.
      Store the result into memory location A.

  Execution Time

  Suppose each memory access (fetch, load, store) requires 10 clock cycles
  and that the PC update, instruction decode, and execution each require 1 clock cycle.
  The total number of cycles to execute the add instruction is:

  10+1+1+10+10+1+10 = 43 cycles/instruction.

执行时间测试(Java):

测试机器:Macbook: 2.3 GHz 8-Core Intel Core i9
执行Add 10亿次,平均耗时2500ms.

2.3GHz CPU每秒23亿个时钟周期,2.5秒约57亿个时钟周期;
执行10亿次+1和 说明循环中(fetch,load,store)没有每次都执行。

package com.eric.time;

import java.util.Date;

public class TimeCalc {
    public static void main(String[] args) {
        double i = 0;
        long start = new Date().getTime();
        while (i < 1000000000) {
            i = i + 1;
        }
        long end = new Date().getTime();
        System.out.println(end - start);
    }
}

你可能感兴趣的:(CPU 时钟频率,时钟周期,机器周期,指令周期,附:程序耗时测试)