From c6ace7dba1b1be3dbd98ac57d138c47e25942cf1 Mon Sep 17 00:00:00 2001 From: ChoChoX Date: Sat, 4 Jul 2026 12:43:14 +0800 Subject: [PATCH] vault backup: 2026-07-04 12:43:14 --- .../学习笔记/01_计算机系统概论_补充版.md | 8 ++++++++ 计算机组成原理/学习笔记/04_存储器_补充版.md | 14 ++++++++++++-- 计算机组成原理/学习笔记/06_运算方法_补充版.md | 16 ++++++++++++++++ .../学习笔记/08_CPU结构与功能_补充版.md | 10 ++++++++-- 4 files changed, 44 insertions(+), 4 deletions(-) diff --git a/计算机组成原理/学习笔记/01_计算机系统概论_补充版.md b/计算机组成原理/学习笔记/01_计算机系统概论_补充版.md index f9ff827..bb78bc8 100644 --- a/计算机组成原理/学习笔记/01_计算机系统概论_补充版.md +++ b/计算机组成原理/学习笔记/01_计算机系统概论_补充版.md @@ -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) diff --git a/计算机组成原理/学习笔记/04_存储器_补充版.md b/计算机组成原理/学习笔记/04_存储器_补充版.md index 6d14fc8..7fb292d 100644 --- a/计算机组成原理/学习笔记/04_存储器_补充版.md +++ b/计算机组成原理/学习笔记/04_存储器_补充版.md @@ -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。 ### 真题2:Cache组相联映射(作业原题) diff --git a/计算机组成原理/学习笔记/06_运算方法_补充版.md b/计算机组成原理/学习笔记/06_运算方法_补充版.md index 40bbe29..499c07d 100644 --- a/计算机组成原理/学习笔记/06_运算方法_补充版.md +++ b/计算机组成原理/学习笔记/06_运算方法_补充版.md @@ -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 diff --git a/计算机组成原理/学习笔记/08_CPU结构与功能_补充版.md b/计算机组成原理/学习笔记/08_CPU结构与功能_补充版.md index f7c55f9..33ff63a 100644 --- a/计算机组成原理/学习笔记/08_CPU结构与功能_补充版.md +++ b/计算机组成原理/学习笔记/08_CPU结构与功能_补充版.md @@ -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%。