Cycles

来源:互联网 发布:美国公开政府数据法案 编辑:程序博客网 时间:2024/04/30 05:37

HW Cycles

1) Clock Cycle

时钟周期, 即晶体振荡器周期, 是计算机的最小时间单位. CPU的主频的倒数, 即为该CPU时钟周期的长度. 例如1GHz主频的CPU, 其时钟周期为1/1G = 0.000000001s = 1ns (纳秒), 时钟周期也称为T周期, CPU所处的状态被称为T状态.

2) Bus Cycle

总线周期, 指CPU访问总线设备(存储器, IO端口)所消耗的时间. 通常一个总线周期包括多个时钟周期(一般是4个)

3) Machine Cycle/Processor Cycle/Instruction Cycle

机器周期, 又称处理器周期, 指令周期, 指CPU执行一条指令所消耗的时间, 通常分为三部分: Fetch instruction(包含一个Bus cycle), decode instruction, execute instruction


SW Cycles

4) Timer interrupt cycle/clock tick cycle

定时器中断周期, 即定时器两次向CPU发起的时钟中断信号的时长, 定时器中断周期是OS调度任务的基本时间单位,时长一般是毫秒级, 比如Linux, 一般配置为10ms (频率为100Hz). 对于一个1GHz主频的CPU来说, 如果配置定时器频率为100Hz, 则每一次定时器中断周期可包含10ms / 1ns = 10,000,000个时钟周期, 假设一条指令执行需要10个时钟周期, 那么对于该系统来说每个时钟中断周期可以执行1,000,000条指令.

5) Jiffies

Linux中用来记录自系统启动以来, 发生的时钟中断(时钟滴答)次数, 因为1s钟增加的时钟滴答数为100(Hz), 因此可以计算出系统自启动以来的运行时间为jiffies / 100 (s)

jiffies为32位unsigned int, 在HZ = 100的情况下, jiffies最大可以表示计算器live的时间是497天, 因此jiffies存在着溢出的可能性. 在Linux中, 使用宏来解决这个溢出:

#define time_after(a,b)\(typecheck(unsigned long, a) && \ typecheck(unsigned long, b) && \ ((long)(b) - (long)(a) < 0))

原创粉丝点击