vault backup: 2026-07-04 12:43:14

This commit is contained in:
2026-07-04 12:43:14 +08:00
parent 36c88d8b9b
commit c6ace7dba1
4 changed files with 44 additions and 4 deletions

View File

@@ -316,6 +316,8 @@ graph TB
**计算公式**
$$存储容量 = 存储单元数 \times 存储字长$$
其中**存储单元数**是存储器中有多少个可寻址的位置由地址线位数决定如20位地址线→2²⁰个单元**存储字长**是每个单元能存多少位数据由数据线位数决定如8位数据线→每单元8位
**单位换算**
- 1KB = 1024B
- 1MB = 1024KB
@@ -343,10 +345,16 @@ $$存储容量 = 存储单元数 \times 存储字长$$
$$MIPS = \frac{主频}{CPI \times 10^6}$$
其中**主频**是CPU时钟频率单位Hz如2GHz=2×10⁹Hz**CPI**是每条指令需要的时钟周期数,**10⁶**是将Hz转换为MHz的换算系数。MIPS表示每秒执行多少百万条指令。
$$CPI = \frac{时钟周期数}{指令条数}$$
其中**时钟周期数**是执行所有指令总共花费的时钟周期,**指令条数**是指令总数。CPI越小说明每条指令需要的周期越少CPU效率越高。
$$执行时间 = CPI \times 指令条数 \times 时钟周期$$
其中**时钟周期**=1/主频如主频2GHz→时钟周期0.5ns。这个公式说明执行时间由三个因素决定指令效率CPI、指令数量、和CPU速度时钟周期
### 1.3.4 其他指标
- **主频**CPU时钟频率GHz

View File

@@ -199,9 +199,13 @@ graph TB
$$存储容量 = 存储单元个数 \times 存储字长$$
其中**存储单元个数**是存储器中可寻址的位置总数(由地址线位数决定),**存储字长**是每个单元的位数(由数据线位数决定)。
**字节表示**
$$存储容量 = 存储单元个数 \times 存储字长 / 8$$
除以8是因为1字节=8位将位数转换为字节数。
> [!example] 示例
> 24位地址线按字节寻址
> - 寻址范围:$2^{24} = 16M$ 个字节
@@ -241,6 +245,8 @@ graph LR
**容量计算**
$$芯片容量 = 2^{地址线位数} \times 数据线位数$$
其中**地址线位数**决定了能寻址多少个存储单元n根地址线→2ⁿ个单元**数据线位数**决定了每个单元能存多少位数据。
存储芯片就像一个小型仓库:地址线告诉仓库你要哪个格子的东西,数据线传送你拿到的东西,译码驱动根据地址找到对应的格子,存储矩阵是存放所有东西的格子,读/写电路控制是取东西还是放东西,片选线选择是哪个仓库。
一个存储芯片有10根地址线和4根数据线容量 = 2^10 x 4 = 1024 x 4 = 4096位 = 512字节。
@@ -422,13 +428,17 @@ Cache就像办公桌上的常用文件架CPU找文件很快但文
**命中率**
$$H = \frac{N_c}{N_c + N_m}$$
其中 $N_c$ 为Cache命中次数在Cache中找到数据的次数$N_m$ 为Cache未命中次数需要去主存取数据的次数$H$ 的值在0~1之间越接近1越好。
**平均访问时间**
$$T_a = HT_c + (1-H)T_m$$
其中 $T_c$ 为Cache访问时间$T_m$ 为主存访问时间,$H$ 为命中率。公式含义:命中时花 $T_c$ 时间,未命中时花 $T_m$ 时间,加权平均。
**访问效率**
$$e = \frac{T_c}{T_a} = \frac{1}{H + (1-H)r}$$
其中 $r = T_m / T_c$主存与Cache访问时间之比
其中 $r = T_m / T_c$主存与Cache访问时间之比$r$ 越大说明主存越慢Cache的价值越大。$e$ 越接近1说明Cache效果越好。
> [!example] 示例
> Cache命中率95%Cache访问时间10ns主存访问时间100ns
@@ -609,7 +619,7 @@ Windows的虚拟内存系统主存是电脑的8GB内存辅存是硬盘上
$$带宽 = \frac{数据总线宽度}{存取周期} = \frac{32位}{200ns} = 160M位/秒 = 20MB/s$$
**解题思路**:带宽 = 数据总线宽度 / 存取周期。注意位和字节的换算160M位/秒 = 160/8 MB/s = 20MB/s。这道题的关键是记住公式并注意单位换算,避免混淆位(bit)和字节(Byte)。
其中**数据总线宽度**是每次存取的数据位数本题32位=4字节**存取周期**是连续两次存取的最小时间间隔本题200ns。注意位和字节的换算160M位/秒 = 160÷8 MB/s = 20MB/s。
### 真题2Cache组相联映射作业原题

View File

@@ -29,6 +29,8 @@
**表示范围**n位
$$0 \sim 2^n - 1$$
其中 $n$ 为二进制位数。比如16位无符号数范围0 ~ 2¹⁶-1 = 0 ~ 65535。
> [!example] 示例
> 16位无符号数0 ~ 65535
@@ -57,9 +59,13 @@ $$0 \sim 2^n - 1$$
**整数原码**
$$[x]_{原} = \begin{cases} 0,x & 2^n > x \geq 0 \\ 2^n - x & 0 \geq x > -2^n \end{cases}$$
其中 $x$ 为真值,$n$ 为数值部分位数不含符号位。正数原码直接在符号位填0后跟数值负数原码符号位填1数值部分为 $2^n - x$(即模减去真值的绝对值)。
**小数原码**
$$[x]_{原} = \begin{cases} x & 1 > x \geq 0 \\ 1 - x & 0 \geq x > -1 \end{cases}$$
正小数原码就是本身;负小数原码为 $1-x$即1减去真值等价于1加上绝对值
> [!example] 示例
> - x = +1110 → [x]原 = 0,1110
> - x = -1110 → [x]原 = 1,1110
@@ -87,9 +93,13 @@ $$[x]_{原} = \begin{cases} x & 1 > x \geq 0 \\ 1 - x & 0 \geq x > -1 \end{cases
**整数补码**
$$[x]_{补} = \begin{cases} 0,x & 2^n > x \geq 0 \\ 2^{n+1} + x & 0 > x \geq -2^n \end{cases}$$
其中 $x$ 为真值,$n$ 为数值部分位数。正数补码和原码相同;负数补码为 $2^{n+1} + x$(即模 $2^{n+1}$ 加上真值等价于原码取反加1。8位补码的模是 $2^8 = 256$。
**小数补码**
$$[x]_{补} = \begin{cases} x & 1 > x \geq 0 \\ 2 + x & 0 > x \geq -1 \end{cases}$$
正小数补码就是本身;负小数补码为 $2+x$模为2即取反加1
> [!example] 示例
> - x = +1010 → [x]补 = 0,1010
> - x = -1010 → [x]补 = 2^5 + (-1010) = 100000 - 1010 = 1,0110
@@ -112,9 +122,13 @@ $$[x]_{补} = \begin{cases} x & 1 > x \geq 0 \\ 2 + x & 0 > x \geq -1 \end{cases
**整数反码**
$$[x]_{反} = \begin{cases} 0,x & 2^n > x \geq 0 \\ (2^{n+1}-1) + x & 0 \geq x > -2^n \end{cases}$$
其中 $x$ 为真值,$n$ 为数值部分位数。正数反码和原码相同;负数反码为 $(2^{n+1}-1)+x$等价于原码除符号位外每位取反。反码是补码减1补码=反码+1
**小数反码**
$$[x]_{反} = \begin{cases} x & 1 > x \geq 0 \\ (2-2^{-n}) + x & 0 \geq x > -1 \end{cases}$$
其中 $n$ 为小数部分位数。负小数反码为 $(2-2^{-n})+x$,即 $1.111...1$n个1加上真值。
> [!example] 示例
> - x = +1101 → [x]反 = 0,1101
> - x = -1101 → [x]反 = 1,0010
@@ -135,6 +149,8 @@ $$[x]_{反} = \begin{cases} x & 1 > x \geq 0 \\ (2-2^{-n}) + x & 0 \geq x > -1 \
**整数移码**
$$[x]_{移} = 2^n + x \quad (-2^n \leq x < 2^n)$$
其中 $x$ 为真值,$n$ 为数值部分位数,$2^n$ 是偏移量。移码=补码符号位取反本质是把所有数都加上偏移量变成正数这样直接比较二进制大小就能比较真值大小。8位移码偏移量为128。
> [!example] 示例
> - x = +1010 → [x]移 = 1,1010
> - x = -1010 → [x]移 = 0,0110

View File

@@ -190,15 +190,21 @@ graph TB
**吞吐率**(单位时间完成的指令数):
$$TP = \frac{n}{k + (n-1)}$$
其中 $n$ 为指令条数,$k$ 为流水线段数,每段假设时间相同为 $\Delta t$。当各段时间不同时,吞吐率受限于最慢的段:
其中 $n$ 为指令条数,$k$ 为流水线段数,每段假设时间相同为 $\Delta t$。分母 $k+(n-1)$ 是完成n条指令所需的时钟周期数第一条需要k个周期建立流水线之后每条只需1个周期当各段时间不同时,吞吐率受限于最慢的段:
$$TP_{max} = \frac{1}{\max(\Delta t_i)}$$
**加速比**(非流水线时间 / 流水线时间):
其中 $\max(\Delta t_i)$ 是所有流水线段中最长的执行时间,它决定了流水线的时钟周期下限。
**加速比**(不使用流水线的时间 / 使用流水线的时间):
$$S = \frac{nk}{k + (n-1)}$$
其中分子 $nk$ 是不用流水线时n条指令各需k段串行执行的总时间分母是流水线方式的总时间。$S$ 越大说明流水线加速效果越好,理想极限为 $k$(段数)。
**效率**(流水线各段的利用率):
$$E = \frac{S}{k} = \frac{n}{k + (n-1)}$$
其中 $S$ 为加速比,$k$ 为段数。效率=加速比/段数,表示流水线中每个段的平均利用率。$E$ 越接近1越好。
流水线性能像工厂的生产效率:吞吐率是单位时间完成的任务数,加速比是流水线比非流水线快多少倍,效率是流水线的利用率。
假设流水线有4个阶段执行100条指令吞吐率100/(4+99)=0.97条/周期加速比100×4/(4+99)=3.88效率3.88/4=97%。