小熊奶糖(BearCandy)
小熊奶糖(BearCandy)
发布于 2026-10-11 / 4 阅读
0
0

计算机组成原理:CPI、MIPS、IPC与执行时间全解析

计算机组成原理:CPI、MIPS、IPC与执行时间全解析

一、核心概念辨析

概念对 说明
CPI 与 平均CPI 微观单条指令:执行某一条特定指令所需的时钟周期数(如加法指令 CPI=1),无需加"平均"。宏观整体程序:程序包含不同比例的各类指令,评价整体性能时,必须使用加权平均值。因此"CPU的CPI"默认指代平均CPI。
平均指令周期 与 IPC 平均指令周期(对应CPI):执行一条指令平均需要的时钟周期数(或时间)。数值越大,CPU越慢。IPC (Instructions Per Cycle):每个时钟周期平均执行的指令条数。数值越大,CPU越快。关系:互为倒数,IPC = 1 / CPI。
平均指令周期 与 CPU执行时间 平均指令周期:执行一条指令平均花的时间(单位:\mu s/条 或 ns/条)。CPU执行时间:执行整个程序的总耗时。关系:CPU执行时间 = 指令总数 \times 平均指令周期。
平均指令周期 与 MIPS MIPS是速度指标(百万条/秒),平均指令周期是时间指标(秒/条),二者互为倒数。平均指令周期 = 1 / MIPS。直接计算时,1 / MIPS 的结果单位就是微秒(\mu s)。

二、公式与单位汇总表

指标名称 核心公式 基础单位 单位换算/备注
时钟周期 (T) T = \frac{1}{主频(f)} 秒 (s) 1s = 10^3ms = 10^6\mu s = 10^9ns
CPI CPI = \frac{总时钟周期数}{总指令数} 周期数/条 无量纲
平均指令周期 = \frac{总时间}{总指令数} 或 = \frac{1}{MIPS} 秒/条 通常为 \mu s/条 或 ns/条
MIPS MIPS = \frac{主频(f)}{CPI \times 10^6} 百万条/秒 速度指标,注意 10^6
IPC IPC = \frac{1}{CPI} 条/周期 速度指标
CPU执行时间 = 指令总数 \times CPI \times 时钟周期 秒 (s) 最终结果常写为 ms, \mu s 或 ns
CPU执行时间 = \frac{指令总数}{MIPS \times 10^6} 秒 (s) 需注意 10^6 的换算

三、易混淆/相似公式对比

对比项 公式 说明
CPI vs IPC CPI = \frac{周期数}{指令数} 做一件事要几个周期
IPC = \frac{指令数}{周期数} 一个周期能做几件事
IPC = 1 / CPI 互为倒数
平均指令周期(周期数) vs 平均指令周期(时间) 单位是"周期数/条":它等于 CPI
单位是"时间(\mu s 或 ns)/条":它等于 CPI \times 时钟周期(即平均指令执行时间)
主频 vs 时钟周期 主频单位是 Hz(如 1GHz),时钟周期单位是秒(如 1ns)
倒数关系:时钟周期 = \frac{1}{主频}。主频越高,时钟周期越短。

四、真题避坑:文字陷阱解析

题目场景:程序由 M 条指令组成。原算术逻辑指令占 43%,其中 25% 需要额外用 LOAD 指令取数。现在引入一种"寄存器-存储器型"新指令,将 LOAD 和算术合并。同时转移指令 CPI 变为 3。求新系统的平均 CPI。

🚨 陷阱剖析:"增加"实际是"替换"

前提是"程序由 M 条指令组成",编译器优化时,是把原来的 [1条LOAD + 1条算术指令] 替换成了 [1条新指令]。程序的总指令数 M 固定不变,只是内部比例重新洗牌。

正确解题推演(以 M=100 为基准):

步骤 内容
1. 原比例 算术逻辑 43\%(其中 10.75\% 被新指令替换),LOAD 21\%,STORE 12\%,转移 24\%。
2. 替换后新比例洗牌 新指令:10.75\%(继承原有算术逻辑的份额,CPI=2)剩余算术逻辑:43\% - 10.75\% = 32.25\%(CPI=1)剩余LOAD:21\% - 10.75\% = 10.25\%(CPI=2)STORE:12\%(CPI=2)转移指令:24\%(CPI=3,注意题目末尾的变化)
3. 计算新CPI CPI_{新} = (10.75\% \times 2) + (32.25\% \times 1) + (10.25\% \times 2) + (12\% \times 2) + (24\% \times 3)CPI_{新} = 0.215 + 0.3225 + 0.205 + 0.24 + 0.72 = \mathbf{1.7025}

五、考试防坑口诀

口诀 说明
1 求 MIPS 换算时:千万别忘了乘以或除以 10^6(MIPS 是"百万"条)。
2 看到"平均指令周期":先看单位,是求"时间"(\mu s/条)还是"周期数"(CPI)。
3 看到"速度"求"时间":直接倒数,MIPS 的倒数就是 \mu s/条。
4 遇到程序优化题:牢记"源逻辑不变,总指令数 M 不变",只改变内部比例。

平均指令周期与 MIPS 的倒数关系推导

已知定义

  • MIPS:每秒执行的百万条指令数。单位:\text{百万条/秒}
  • 平均指令周期:执行一条指令的平均耗时。单位:\text{秒/条} 或 \mu s/\text{条}

推导过程

假设程序总指令数为 N,总执行时间为 T(秒)。

1. 由 MIPS 定义得出每秒执行指令数:

MIPS = \frac{N}{T \times 10^6}

2. 将总时间 T 用 N 和 MIPS 表示:

T = \frac{N}{MIPS \times 10^6} \text{ (秒)}

3. 计算平均指令周期(总时间 ÷ 总指令数):

\text{平均指令周期} = \frac{T}{N} = \frac{\frac{N}{MIPS \times 10^6}}{N} = \frac{1}{MIPS \times 10^6} \text{ (秒)}

4. 进行单位换算(1\text{ 秒} = 10^6 \mu s):

\text{平均指令周期} = \frac{1}{MIPS \times 10^6} \times 10^6 = \frac{1}{MIPS} \text{ (}\mu s\text{)}

核心公式

\text{平均指令周期(}\mu s/\text{条)} = \frac{1}{MIPS}


评论