(1)由加法器、寄存器的位数决定;
(2)一般与内部寄存器的位数相等(字长);
(3)字长越长,表示数据的范围就越大,精确度越高;
(4)目前常见的有32位和64位字长。
(1)一般指运算器与存储器之间的数据总线位数。
(2)有些计算机内部与外部数据总线宽度不一致
主存容量:是指一台计算机主存所包含的存储单元总数。
存储带宽:指单位时间内与主存交换的二进制信息量,常用单位B/s(字节/秒)。(影响存储带宽的指标包括数据位宽和数据传输速率)
主频f 指CPU内核工作的时钟频率,即CPU内数字脉冲信号振荡的速率,与CPU实际的运算能力之间不是唯一的、直接关系;
时钟周期T 也称节拍周期,是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作;
f与T的关系 互为倒数,f越高,T就越小(f=100MHz时T=10ns,f=1GHz时T=1ns)。
外频 指CPU(内存)与主板之间同步的时钟频率(系统总线的工作频率);
倍频 CPU主频与外频之间的倍数;
主 频 = 外 频 × 倍 频 主频 = 外频 × 倍频 主频=外频×倍频
如:Pentium 4 2.4G CPU主频
2400 M = 133 M ( 外 频 ) × 18 ( 倍 频 ) 2400M = 133M(外频)× 18(倍频) 2400M=133M(外频)×18(倍频)
C P I = 程 序 中 所 有 指 令 的 时 钟 周 期 数 之 和 程 序 指 令 总 数 = ∑ ( 程 序 中 各 类 指 令 的 C P I × 程 序 中 该 类 指 令 的 比 例 ) CPI = \frac{程序中所有指令的时钟周期数之和}{程序指令总数} = ∑(程序中各类指令的CPI×程序中该类指令的比例) CPI=程序指令总数程序中所有指令的时钟周期数之和=∑(程序中各类指令的CPI×程序中该类指令的比例)
CPI举例
例1 某计算机指令系统中各类指令所占比例及CPI如下表所示,求程序的CPI。
指令类型 | CPI | 指令比例 |
---|---|---|
算术和逻辑 | 1 | 60% |
Load/Store | 2 | 18% |
转移 | 4 | 12% |
Cache缺失访存 | 8 | 10% |
解 根据公式可知
C P I = 1 ∗ 60 % + 2 ∗ 18 % + 4 ∗ 12 % + 8 ∗ 10 % = 2.24 CPI = 1 * 60\% + 2 * 18\% + 4 * 12\% + 8 * 10\% = 2.24 CPI=1∗60%+2∗18%+4∗12%+8∗10%=2.24
IPC(Instruction Per Clock)
每个时钟周期内执行的指令条数(并行)
实际上频率和IPC在真正影响CPU性能
准确的CPU性能判断应该是:
C P U 性 能 = I P C ( C P U 每 一 时 钟 周 期 内 所 执 行 的 指 令 多 少 ) × 频 率 ( M H z 时 钟 速 度 ) CPU性能 = IPC(CPU每一时钟周期内所执行的指令多少) × 频率(MHz时钟速度) CPU性能=IPC(CPU每一时钟周期内所执行的指令多少)×频率(MHz时钟速度)
-----由英特尔提出并被业界广泛认可
如果将英特尔用于企业级服务器的主频为800MHz的安腾处理器(英特尔最高系列CPU)与用于台式机的主频为1800MHz的奔腾4处理器进行对比,我们就会发现:主频仅为800MHz的安腾处理器在性能上竟然比主频高达1800MHz的奔腾4处理器还强大。
每秒钟CPU能执行的指令总条数(单位:百万条/秒)
M I P S = 指 令 条 数 执 行 时 间 × 1 0 6 = 指 令 条 数 所 有 指 令 C P U 时 钟 周 期 数 之 和 f × 1 0 6 MIPS = \frac{指令条数}{执行时间 × 10^6}= \frac{指令条数}{\frac{所有指令CPU时钟周期数之和}{f} × 10^6} MIPS=执行时间×106指令条数=f所有指令CPU时钟周期数之和×106指令条数 = f C P I × 1 0 6 \frac{f}{CPI × 10^6} CPI×106f(全性能公式)
MIPS应用举例
例2 某计算机主频为1GHz,在其上运行的目标代码包括2×105条指令,分4类,各类指令所占比例和各自CPI和例1中一致,求程序的MIPS。
解 根据CPU全性能公式:
M I P S = f C P I × 1 0 6 = 1 × 1 0 9 2.24 × 1 0 6 = 446.4 MIPS = \frac{f}{CPI × 10^6} = \frac{1 × 10^9}{2.24 × 10^6} = 446.4 MIPS=CPI×106f=2.24×1061×109=446.4
执 行 一 段 程 序 所 需 的 时 间 = C P U 时 间 + I / O 时 间 + 存 储 访 问 时 间 + 各 类 排 队 时 延 等 执行一段程序所需的时间 = CPU时间 + I/O时间 + 存储访问时间 + 各类排队时延等 执行一段程序所需的时间=CPU时间+I/O时间+存储访问时间+各类排队时延等
C P U 时 间 = 程 序 中 所 有 指 令 的 时 钟 周 期 数 之 和 × T = 程 序 中 所 有 指 令 的 时 钟 周 期 数 之 和 f CPU时间 = 程序中所有指令的时钟周期数之和 × T = \frac{程序中所有指令的时钟周期数之和}{f} CPU时间=程序中所有指令的时钟周期数之和×T=f程序中所有指令的时钟周期数之和
(回顾汇编语言课程中延时子程序的设计原理)
CPU时间的计算方法
(1)考虑CPI后的CPU时间
C P U 时 间 = 总 指 令 数 × ∑ i = 1 n ( C P I i × I C i 总 指 令 数 ) × 时 钟 周 期 时 间 = 总 指 令 数 × C P I × T CPU时间 = 总指令数 × \sum_{i = 1}^n (CPI_i × \frac{IC_i}{总指令数}) × 时钟周期时间 = 总指令数 × CPI × T CPU时间=总指令数×∑i=1n(CPIi×总指令数ICi)×时钟周期时间=总指令数×CPI×T
(2)考虑MIPS后的CPU时间
M I P S = 指 令 条 数 执 行 指 令 的 时 间 × 1 0 6 MIPS = \frac{指令条数}{执行指令的时间 × 10^6} MIPS=执行指令的时间×106指令条数
程 序 的 执 行 时 间 t = 指 令 数 量 M I P S × 1 0 6 程序的执行时间 t = \frac{指令数量}{MIPS × 10^6} 程序的执行时间t=MIPS×106指令数量
CPU时间应用举例
例3 在例2的基础上求程序的CPU时间。
解 方法1:利用CPI
C P U 时 间 = 2 × 1 0 5 × C P I f = 2 × 1 0 5 × 2.24 1 0 9 = 4.48 × 1 0 − 4 ( 秒 ) CPU时间 = \frac{2 × 10^5 × CPI}{f} = \frac{2 × 10^5 × 2.24}{10^9} = 4.48 × 10^{-4}(秒) CPU时间=f2×105×CPI=1092×105×2.24=4.48×10−4(秒)
方法2:利用MIPS
C P U 时 间 = 指 令 数 量 M I P S × 1 0 6 = 2 × 1 0 5 1 0 3 2.24 × 1 0 6 = 4.48 × 1 0 − 4 ( 秒 ) CPU时间 = \frac{指令数量}{MIPS × 10^6} = \frac{2 × 10^5}{\frac{10^3}{2.24} × 10^6} = 4.48 × 10^{-4}(秒) CPU时间=MIPS×106指令数量=2.24103×1062×105=4.48×10−4(秒)
1、如何合理利用时间指标评测计算机性能
2、f、CPI、MIPS、CPU时间在评价计算机性能方面的特点和不足?
3、如何科学合理测试计算机系统的综合性能?有哪些常用测试工具?测试结果能否真实反映计算机的实际性能?
计算机性能指标是确定的吗?
硬件或软件指标 | 影响什么 | 如何影响 |
---|---|---|
算法 | CPI、MIPS、CPU时间 | 影响指令数量和指令类型 |
编程语言 | CPI、MIPS、CPU时间 | 指令数量和指令类型 |
编译程序 | CPI、MIPS、CPU时间 | 影响指令数量和指令类型 |
指令集体系结构 | f/T、CPI、MIPS、CPU时间 | 全面影响 |