在本文中,我们将了解当机器使用不同的操作数访问方式时如何计算机器的平均操作数获取率。
示例-1:
下面给出使用不同操作数访问模式的假设机器。假设内存访问消耗 3 个时钟周期,算术计算消耗 2 个时钟周期,当数据存在于寄存器或指令本身时消耗 0 个时钟周期,机器的平均操作数提取率是多少?
Operand Accessing Mode | Frequency%(Probability) |
---|---|
Immediate Accessing Mode | 25 |
Register Accessing Mode | 28 |
Direct Accessing Mode | 18 |
Memory Indirect Accessing Mode | 14 |
Indexed Accessing Mode | 15 |
解决方案 :
在索引寻址模式下,如果没有指定,那么我们假设“基地址直接给指令,索引值存储到索引寄存器中”。现在,如果我们查看给定的操作数访问模式及其根据给定问题执行所需的周期数,我们可以看到 –
立即访问模式不需要参考或 0 周期。
寄存器访问模式需要一个 0-reg 引用或 0 个周期。
直接访问模式需要 1 个内存引用或 3 个周期。
内存间接访问模式需要 2 个内存引用。
要么
3*2 周期(1-内存引用有 3 个周期,所以 2-内存引用有 3*2 个周期)。
索引访问模式需要 1-reg 引用和 1-mem 引用和 1-算术计算。
要么
5个周期(1-内存引用有3个周期,1-算术计算有2个周期)。
Operand Accessing Mode | Frequency%(Probability) | No of Cycles |
---|---|---|
Immediate Accessing Mode | 25 | no reference (0 cycle) |
Register Accessing Mode | 28 | 0-reg reference (0 cycle) |
Direct Accessing Mode | 18 | 1-mem reference (3 Cycle) |
Memory Indirect Accessing Mode | 14 | 2-mem reference (3*2 Cycle) |
Indexed Accessing Mode | 15 | 1 -reg reference and 1-mem reference and 1-arithmetic calculation (0+3+2 Cycle) |
我们可以通过频率和周期数的乘积之和得到执行一条指令所需的总平均周期数。
执行一条指令所需的平均周期总数
= (0.25\times0) + (0.28\times0) + (0.18\times3) + (0.14\times6) + (0.15\times5)
= 2.13 Cycles
现在已知完成一个循环所需的时间为
= 1/1GHz = 1 nanosecond
执行一条指令所需的平均时间
= 2.13 ∗ 1 = 2.13 nanosecond
因此,= 1 条指令需要 2.13 纳秒。
需要 1 秒
= 1 / (2.13 * 10^(-9))
= 0.469483568 * 10^9 Instructions
= 469.483568 MIPS (Million Instructions Per Second).
In general we take operation fetch rate in MIPS.
示例 2 :
考虑下面给出使用不同操作数访问模式的假设机器。计算每个指令或 CPI 的周期。
Instruction Type | Frequency | Cycles Consumed for Instruction |
---|---|---|
ALU Instruction | 45% | 4 |
Load Instruction | 35% | 3 |
Store instruction | 10% | 2 |
Branch instruction | 10% | 2 |
解决方案 :
在计算机体系结构中,每条指令的周期数是处理器性能的一个方面:程序或程序片段的每条指令的平均时钟周期数。它是每个周期指令的乘法倒数。
鉴于——
ALU 指令消耗 4 个周期。
加载指令消耗 3 个周期。
存储指令消耗 2 个周期。
分支指令消耗 2 个周期。
因此,我们可以通过周期和频率的乘积来获得 CPI。
CPI = 4*0.45 + 3*0.35 + 2*0.1 + 2*0.1
= 6.85 Cycles/Instruction