1699 字
5 分钟
计算机组成原理
2026-01-11

一、计算机性能指标#

1.1 存储器的性能指标#

存储器的容量=存储器单元个数×存储字长(8bit/1Byte)\text{存储器的容量}=\text{存储器单元个数}\times\text{存储字长}(8bit/1Byte)

在存储容量相关题中:1K=2101K=2^{10}=1024

1.2 CPU的性能指标#

  1. CPU时钟周期CLKCPU\text{时钟周期}CLK
  2. CPU主频:f=1CPU时钟周期f = \frac{1}{CPU\text{时钟周期}}
  3. 执行一条指令所需要的时钟周期数:CPI=周期数Nc指令数IN=i=1ni指令数Ii总指令数InCPI = \frac{\text{周期数} N_c}{\text{指令数} I_N} = \sum_{i=1}^{n} \frac{i\text{指令数} I_i}{\text{总指令数} I_n}
  4. 每秒执行的指令总数:IPS=主频f平均CPI,MIPS=fCPI×106IPS = \frac{\text{主频}f}{\text{平均}CPI}, MIPS = \frac{f}{CPI \times 10^6}
  5. 程序执行时间:tcpu=Ncf=IN×CPIft_{cpu} = \frac{N_c}{f}= \frac{I_N \times CPI}{f}

二、二进制、八进制、十进制、十六进制转换#

表示符号:

二进制八进制十进制十六进制
BODH/0x

三、原码、补码、反码、移码表示#

转化关系图

四、浮点表示法,IEEE754标准#

4.1 浮点数的表示#

浮点数表示为:N=re×M,M<1N = r^e \times M , |M|<1 尾数M,指数E,基数r

4.2 IEEE754#

短浮点数和长浮点数表示规格:

类型数符阶码(移码)尾数数值(原)总位数偏置值
短浮点数182332127
长浮点数11152641023

尾数隐含了最高数位1

短浮点数x的真值表示为:

x=(1)S×(1.M)×2E127,指数e=E127x = (-1)^S \times (1.M) \times 2^{E-127}, \text{指数}e=E-127

五、存储容量的扩充#

相联cache地址格式:

标记索引偏移地址总位数=总块数×块大小Cache组数=行数每组行数偏移字段位数=log2块大小索引位数=log2Cache组数标记位数=地址总位数偏移位数索引位数\begin{align} | \text{标记} | \text{索引} | \text{偏移} | \\ \text{地址总位数}=\text{总块数} \times \text{块大小} \\ Cache\text{组数}=\frac{\text{行数}}{\text{每组行数}} \\ \text{偏移字段位数}=\log_2\text{块大小} \\ \text{索引位数}=\log_2 Cache\text{组数} \\ \text{标记位数}=\text{地址总位数}−\text{偏移位数}−\text{索引位数} \end{align}

六、Cache命中率#

在一个程序执行期间,设NcN_c表示Cache完成存取的总次数,设NmN_m表示内存完成存取的总次数,则:

h(命中率)=NcNc+Nm h(\text{命中率}) = \frac{N_c}{N_c+N_m}

tct_c表示命中时Cache的访问时间,设tmt_m表示未命中时内存的访问时间,则:

ta(cache/内存系统的平均访问时间)=htc+(1h)tmt_a(cache/\text{内存系统的平均访问时间}) = ht_c + (1-h)t_m

内存系统的目标是让tat_a接近于tct_c。设t=tmtct=\frac{t_m}{t_c},则:

e(访问效率)=tctc+(1h)tm=1r+(1r)he(\text{访问效率}) = \frac{t_c}{t_c+(1-h)t_m} = \frac{1}{r+(1-r)h}

七、Cache的地址映射#

  1. 全相联映射:主存的数据块可复制到 cache 的任意一行
  2. 直接映射:主存的数据块可复制到cache的固定某一行
    • cache总行号i和主存j,在某m块号上,存在关系:i=jmodmi=j \mod m
  3. 组相联映射:主存的数据块可复制到cache固定某一组中的任意一行

八、页面替换算法#

常用的替换算法有随机(RAND)算法、先进先出(FIFO)算法、近期最少使用(LRU)算法和最不经常使用(LFU)算法。其中最常考查的是LRU算法。

  1. 先进先出算法(FIFO):选择最早调入的行进行替换。它比较容易实现,但也未依据程序访问的局部性原理,因为最早进入的主存块也可能是目前经常要用的。

  2. 近期最少使用算法(LRU):依据程序访问的局部性原理,选择近期内长久未访问过的Cache行作为替换的行,平均命中率要比FIFO的高,是堆栈类算法。

九、寻址方式#

9.1 指令寻址#

寻找要处理的指令

  1. 顺序方式:PC给出下条指令地址
  2. 跳跃方式:本条指令给出下条指令地址,PC的内容需相应改变

9.2 数据寻址#

寻找操作数的地址

十、流水线#

10.1时空图#

12条指令输入道五个过程段的指令流水线:

10.1 吞吐率#

单位时间内流水线所完成指令输出结果的数量

  • 最大吞吐率: 设m段的流水线各段时间为t\blacktriangle t
tpmax=1tt_{pmax}=\frac{1}{\blacktriangle t}
  • 实际吞吐率: 连续处理n条指令的吞吐率为:
Tp=n(m+n1)tT_p=\frac{n}{(m+n-1) \cdot \blacktriangle t}

10.2 加速比#

加速比等同于m段的等功能的非流水线流水线的耗时之比

Sp=nmt(m+n1)t=nmn+m1S_p = \frac{nm \blacktriangle t}{(m+n-1) \blacktriangle t} = \frac{nm}{n+m-1}

十一、总线带宽#

总线数据传输率(总线带宽)=数据总线宽度(B)×总线时钟频率(MHz)完成一次数据传送所用时钟周期数\text{总线数据传输率(总线带宽)}= \frac{\text{数据总线宽度}(B) \times \text{总线时钟频率}(MHz)}{\text{完成一次数据传送所用时钟周期数}}

十二、波特率#

每秒传输的比特位数称为波特率,每个比特占用的时间是波特率的倒数。

波特率=字符比特位×数据传输速率\text{波特率} = \text{字符比特位} \times \text{数据传输速率}

十三、磁盘技术指标#

概念#

磁盘读取顺序为:盘片->磁道->扇区

存储容量:一个磁盘所能存储的字节总数内部数据传输率=磁盘转速(n转/s)×一道磁盘的容量平均存取时间=寻道时间+等待时间,等待时间=磁盘旋转一周时间/2\begin{align} \text{存储容量:一个磁盘所能存储的字节总数} \\ \text{内部数据传输率}=\text{磁盘转速(}n\text{转/s)} \times \text{一道磁盘的容量} \\ \text{平均存取时间}=\text{寻道时间} + \text{等待时间}, \text{等待时间}=\text{磁盘旋转一周时间}/2 \end{align}

例题#

磁盘组有6片磁盘,每片有两个记录面,最上最下两个面不用。存储区域内径为22cm,外径为33cm,道密度为40 道/cm,内层位密度为400位/cm,转速为6000转分。问:
(1)共有多少柱面?
(2)盘组总存储容量是多少?
(3)内部数据传输率是多少?\

(1)柱面(磁道数量)=r存储半径×道密度=(16.511)×40=220(2)总存储容量=一道磁道容量×磁道数量×有效记录面=2πr×内层位密度×磁道数量×有效记录面=2×3.14×11×400×220×10=7598800B(3)内部数据传输率=一道磁道容量×转速=2×3.14×11×400×600060=345400B/s\begin{align} (1)\text{柱面(磁道数量)}&= r_{\text{存储半径}} \times \text{道密度} \\ &=(16.5 - 11) \times 40 \\ &= 220\text{道} \\ (2)\text{总存储容量} &= \text{一道磁道容量} \times \text{磁道数量} \times \text{有效记录面} \\ &= 2πr \times \text{内层位密度} \times \text{磁道数量} \times \text{有效记录面} \\ &= 2 \times 3.14 \times 11 \times 400 \times 220 \times 10 \\ &= 7598800B \\ (3)\text{内部数据传输率} &= \text{一道磁道容量} \times \text{转速} \\ &= 2 \times 3.14 \times 11 \times 400 \times \frac{6000}{60}\\ &= 345400B/s \end{align}

十四、显示器刷存带宽#

  1. 计算每帧图像的数据量(位)
传输容量(bit=水平像素数×垂直像素数×颜色深度(位/像素)\text{传输容量(}bit\text{)}=\text{水平像素数}×\text{垂直像素数}×\text{颜色深度(位/像素)}
  1. 计算刷存带宽(位/秒)
带宽(bit/s=每帧数据量×刷新率\text{带宽(}bit/s\text{)}=\text{每帧数据量}×\text{刷新率}

十五、多级中断#

中断处理过程分为5个阶段:中断请求、中断判优、中断响应、中断处理、中断返回。

  1. 中断请求: 中断请求触发器(INTR):记录中断源的触发器,一个中断源对应一个 INTR,置1代表提出中断请求。可分散在各个中断源中,也可集中到CPU 的中断系统内。
  2. 中断判优:
    • 软件判优:用程序检测优先级大小。
    • 硬件判优:根据不同的优先排队电路判优,速度快,成本高
  3. 中断响应:
    • 中断响应条件: ① CPU 收到中断请求信号 ② CPU 开中断,即中断允许触发器 EINT=1
    • 中断响应时间:一条指令执行完毕,CPU发出查询中断信号
  4. 中断处理
    • 保护现场:保护程序断点以及通用寄存器、状态寄存器。过程需要关中断,防止被其他中断打断。断点可以存入堆栈。
    • 中断服务:寻找中断服务程序入口地址(向量地址),并视不同中断源执行不同中断服务程序。
    • 恢复现场:退出服务程序前,将原程序中断时的现场恢复到原来寄存器中。
  5. 中断返回:执行中断返回指令,堆栈弹出断点地址给PC,CPU转移到原来程序断点继续运行。

例题:
中断服务程序的最后一条指令是(C)
A.转移指令
B.出栈指令
C.中断返回指令
D.开中断指令

中断处理过程可以嵌套进行,优先级高的设备可以中断优先级低的中断服务程序

在什么条件和什么时间,CPU 可以响应I/0 的中断请求?
解:CPU 响应 I/0 中断请求的条件和时间是:
当中断允许状态为 1(EINT=1),且至少有一个中断请求被查到,则在一条指令执行完时,响应中断

中断向量可提供(C)
A、被选中的设备的地址
B、传送数据的起始地址
C、中断服务程序的入口地址
D、主程序的断点地址

为了便于实现多级中断,保存现场信息最有效的方法是采用堆栈

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

计算机组成原理
https://blog.harena.tech/posts/principlesofpc/
作者
Harena 晴れ
发布于
2026-01-11
许可协议
CC BY 4.0

部分信息可能已经过时