基本知识
现代计算机脱胎于冯诺依曼结构,其体系结构一般包括:主机(CPU,主存储器即内存)和外设(输入输出设备如键盘鼠标显示器,辅助存储器即硬盘)。
一个典型的实物计算机如下图所示:
内存的编址计算
内存按字编码是8位,按字节编码是16位或者32位
假设内存最小单位为X(8,16,32)位, 该内存由M片存储芯片构成,每片有N 个存储单元,每个存储单元可以存储Z位二进制数, 该内存起始地址为Addr0,结束地址为Addr1,那么有如下关系:
Addr1 = Addr0 + M * N * Z / X - 1
举例:
存储芯片共有28片,每片有16K个存储单元,每个存储单元可存储4位二进制数,16位编址,起始地址为0xAC000,求内存的结束地址?
= 0xAC000 + 28 * 16 * 1024 bit * 4 / 16 - 1
= 0xAC000 + 0x1BFFF
= 0xC7FFF
再举一个网上的例子:
内存按字节编址,地址从90000H到CFFFFH,若用存储容量为16K×8bit器芯片构成该内存,至少需要的存储 ( )片
计算过程:
- 内存总容量 = CFFFF + 1 - 90000 = 0x40000
- 按字节编址:X = 8
- 芯片N = 16K,Z = 8
- M = 0x40000 * X / (N * Z) = 0x40000 / 16K = 16
cache的访存时间计算
如果以h代表对cache的访问命中率(“1-h”称为失效率,或者称为未命中率)
t1表示cache的周期时间,t2表示内存的周期时间
以读操作为例,使用“Cache+主存储器”的系统的平均周期为t3。则:
t3 =t1 * h + t2 * (1-h)
举例:
设某计算机主存的读/写时间为l00ns,
有一个指令和数据合一的cache,已知该cache 的读/写时间为10ns
取指的命中率为98%,取数的命中率为95%。
在执行某类程序时,约有1/5指令需要存/取一个操作数。
假设指令流水线在任何时候都不阻塞,则设置cache后,每条指令的平均访存时间如何计算?
- 取指时间 = 2%*100 + 98%*10 = 11.8 ns
- 取数时间 = 1/5*(5%*100 + 95%*10) = 2.9 ns
- 平均时间 = 11.8 + 2.9 = 14.7 ns
流水线计算
设流水线周期为△t,单条指令执行的时间为T0=m*△t,指令条数为n
则流水线执行时间T = m*△t + (n-1)*△t
当n >> m 时,T ≈ (n-1)*△t
流水线吞吐率 TP(Though Put rate) = n / T (即指令条数/流水线执行时间)
Tp = n / T ≈ n / (n-1)*△t ≈ 1/△t
流水线加速比S = 不使用流水线的执行时间/使用流水线的执行时间
S = nm△t/(m+n-1)△t = nm/(m+n-1)
Smax = S(n->+∞)=m
-- EOF --
本文使用 文章同步助手 同步