完成《计组》大题

main
InkSoul 2023-07-23 20:02:39 +08:00
parent b43d79330d
commit 63abe26988
20 changed files with 641 additions and 1 deletions

View File

@ -0,0 +1,582 @@
---
title: "《计组》大题"
date: 2023-07-23T11:15:49+08:00
---
## 换算单位及公式
* 1G = $2^{10}$M = $2^{20}$K当表示传输率时K = $10^3$;表示容量时K = $2^{10}$
* 1ns = $10^3$ms【毫秒】 = $10^6$us【微秒】=$10^9$ns【纳秒】 = $10^{12}$ps【皮秒】
* 1B【字节】 = 8bit【位】【比特】
* 存储容量 = 存储字数 * 字长
* 存储器的数据传输率 = 数据宽度/存储周期
* 数据线的宽度 = MDR的宽度 = 存储字长
* 地址线的宽度 = MAR的宽度 = 存储字数
* C语言中
* double = 8字节 = 64位
* float = 4字节 = 32位
* int = 4 字节
* char = 1字节
* short = 2字节
* long = 4字节
* 存储元存储二进制的电子元件每个存储元可存1bit
* 存储单元:每个存储单元存放一串二进制代码
* 存储字字:存储单元中二进制代码的组合
* 存储字长:存储单元中二进制代码的位数
* 机器字长:计算机一次能处理的二进制代码长度,可通过寄存器的位数判断机器字长
* 一定与机器字长相同的部件ALU通用寄存器
* 指令字长:指令的二进制长度
* 数据字长:数据总线一次能并行传送信息的次数
## 历年真题
![](../../images/《计组》大题/历年真题1.jpg)
1
A准备32位数据所需要的时间 = $\frac{4B}{2MB/S} = 2us$即最多每隔2us查一次
每次查询次数为$\frac{1s}{2us} = 5\times 10^5$
每秒CPU用于A输入输出的时间至少为$5\times10^5\times10\times4 = 2\times 10^7$个时钟周期
百分比 = $\frac{2 \times 10^7}{500M} = 4%$
2
中断响应和中断处理的时间 = 400$\times \frac{1}{500M} = 0.8us$
B准备32位数据需要的时间 = $\frac{4B}{40MB/S} = 0.1us$<中断处理时间
因此数据会被刷新B不适合采用中断IO方式
3
B每秒的DMA次数最多 = $\frac{40MB}{1000B} = 40000$次
CPU用于B输入输出时间 = $40000\times500 = 2\times10^7$个时钟周期
百分比 = $\frac{2\times10^7}{500M} = 4%$
---
![](../../images/《计组》大题/历年真题2.jpg)
1
传送一个ASCII码传输一个起始位7位数据位1个校验位1位停止位共1+7+1+1=10
1S可接收$\frac{1}{0.5\times10^{-3}}$= 20000个字符
2
时钟周期 = $\frac{1}{50M} = 20ns$
将字符送到端口的时间 = $\frac{0.5ms}{20ns} = 2.5\times10^4$个时钟周期
1000个字符所需时钟周期 = $1000\times(2.5\times10^4+10+15\times4) = 25070000$个
CPU的时间 = $1000\times(10+20\times4) = 90000$个时钟周期
关中断、保护断点和程序状态、识别中断源
---
![](../../images/《计组》大题/历年真题3.jpg)
1
1S内申请的中断次数 = $\frac{0.5MB}{4B} = 125000$次
CPU每次用于数据传送的时钟周期 = $5\times18 + 5\times2$ = 100个时钟周期
1S用于中断的开销 = 100$\times125000 = 12.5M$个时钟周期
因此百分比 = $\frac{12.5M}{500M} = 2.5%$
2
1SDMA次数 = $\frac{5MB}{5000B} = 1000$次
DMA的开销 = $1000\times500 = 0.5M$个时钟周期
百分比 = $\frac{0.5M}{500M} = 0.1%$
## 存储系统相关
![](../../images/《计组》大题/存储系统1.jpg)
1
主存块大小64B = $2^6B$ ,主存地址低6位为块内地址
Cache组数 = $\frac{32KB}{64B\times8} = 2^6$主存中地址6位为Cache组号
Tag位为32-6-6 = 20位
LRU位占3位$2^3$ = 8
采用直写方式,无修改位
2
0080 0000H 低6位全为0
因此S位于主存块的开始处
每块可容纳$\frac{64B}{4B} = 16个int$数据
Cache缺失次数 = $\frac{1024}{16} = \frac{2^{10}}{2^4} = 2^6 = 64$次
3
0010 0003H组索引为0让地址映射到指令Cache的第0组
Cache初始为空Cache行有效位为0Cache访问缺失
该主存块取出后存入指令Cache第0组的任意一行将主存地址有20位填入该行标记字段设置有效位修改LRU位
根据块内地址0000 11B从该行取出相应内容
---
![](../../images/《计组》大题/存储系统2.jpg)
1
CPU时钟周期 = $\frac{1}{800M} = 1.25ns$
总线时钟周期 = $\frac{1}{200M} = 5ns$
总线带宽 = $200M \times \frac{32}{8} = 800MB/S$
2
Cache块32BCache缺失时要一个读突发传送总线事务读取一个主存块
3
一次读突发传送总线事务 = 1次地址传送 + 32B数据传送 = 5ns+40+8$\times$5 = 85ns
4
Cache中1条指令用的时间 = 1.25$\times$4 = 5ns
Cache缺失的额外开销 = 平均访存次数 $\times$Cache缺失率$\times$1次总线突发时间 = 1.2$\times$5% $\times$ 85ns = 5.1ns
即执行时间 = 100$\times 15 + 5.1 = 1505.1ns$
---
![](../../images/《计组》大题/存储系统3.jpg)
1
页大小4KB即页内地址占12位
因此高18位表示虚页号低122位表示页内地址
2
8组3位表示组号
|TLB15位|3位组号|12位页内地址|
|---|---|---|
3
LRU最近最少使用
TLB组号 = 虚页号 mod TLB组数
TLB组号依次为2,4,0,7,3,4,4,4
4号组虚页号为12,4,12,20
替换虚页号4
4
虚页号增减32 - 30 = 2位TLBTag字符增加2位
TLB表位数增加2位
---
![](../../images/《计组》大题/存储系统4.jpg)
1
物理地址 = 实页号 + 页内地址 = 16+12 = 28位
2
全相联映射TLB用SRAM
3
Cache采用组相联映射1位LRU位1位脏位
Cache总容量 = $2^3\times2(20+1b+1b+1b+23B) = 4464b = 558B$
有效位用来指出所在Cache行中的信息是否有效
4
0008 C040的虚页号为0008H对应实页号0040H
物理地址0040040H组号010 = 2组
有对应项,但有效位=0因此Cache不命中
0007C60后12位 = 260H = 0010 0110 0000
组号011=3第3组
---
![](../../images/《计组》大题/存储系统5.jpg)
1
虚拟地址24位$2^{24} = 16MB$
物理地址20位$2^{20} = 1MB$
页面大小4KB = 页面偏移量占12位
因此高12位表示虚页号高8位表示页框号
2
Cache8行 = Cache块号占3位$2^3$ = 8
块大小32B = 块内偏移量占5位$2^5 = 32$
主存字块标记占20-8 = 12位
|主存字块标记12为|Cache字块标记3位|字块内标记5位|
|---|---|---|
3
001C60H = 0000 0000 0001 1100 0110 0000
虚页号为 0000 0000 0001 = 1且有效位为1 = 在主存中对应页框04
即物理地址为0000 0100 1100 0110 0000 = 04C60H
Cache字块号为011=3有效位为1值为105H不等于04CH
因此Cache未命中
4
024BACH = 0000 0010 0100 1011 1010 1100
TLB有2个组 = 高11位为TLB标记最低1位为TLB组号
虚页号为0000 0010 0100BTLB标记为0000 0010 010B = 012H组号为0
组0有效位 = 1标记 = 012的项 = TLB命中即在主存中
---
![](../../images/《计组》大题/存储系统6.jpg)
1
页大小8KB = 页内偏移地址为13位
A = B = 32 -13 = 19,D = 13,C = 24-13 = 11
Cache行数 = $\frac{64KB}{64KB\times2} = 512 $ => F = 9
主存块大小 = 64KB => G = 6
因此A=B=19,C=11,D=13,E=24-9-6=9,F=9,G=6
2
4099 = 00 0001 0000 0000 0011
cache组号 = 0 0000 0011 = 3
对应H字段内容为 0 0000 1000B
3
缺页更大缺页处理需要访问磁盘Cache缺失访问主存
4
直写策略同时写快速存储器而慢速磁盘速度更慢所以在Cache-主存层次用直写
在主存-外存层次,用回写策略
---
![](../../images/《计组》大题/存储系统7.jpg)
1
|有效位|脏位|替换控制位|标记位|
|---|---|---|---|
地址总长度28位$2^28$ = 256MB
块内地址6位$2^6 = 64$
cache块号3位$2^3 = 8$
所以Tag位数 = 28-6-3 = 19位1位有效位
所以cache行为
|有效位1位|19位标记位|64B存储的数据|
|---|---|---|
数据cache容量 = $8\times(64+\frac{20}{8})B = 532B$
2
a[0][3]地址 = $320+32\times4B = 101000000+001111100 = 110111100_B$=>cache行号为$110_B = 6$
a[1][1]地址 = $320+256\times4+1\times4 = 1348 = 10101000100_B$=>Cache行号为$101_B = 5$
3
数组A按行存放程序A按行存取
每个字块存16个int数型A的命中率 = $\frac{15}{16} = 93.7%$,B的命中率 = 0A更快
---
![](../../images/《计组》大题/存储系统8.jpg)
1
4KB = $2^{12}B$ =>虚拟地址高20位为虚拟页号
1行和30行都为00401H=>都在同一页中
2
Cache有$\frac{64}{4} = 16组 $=>组号占4位
主存块大小64B =>块内地址占6位
|22位Tag|4位组号|6位块内地址|
|---|---|---|
3
16行00401025H
025H = 0000 0010 0101B
页大小4KB =>虚地址与物地址低12位相同
组号为0000B = 0 =>对应cache组号为0命中
---
## 数据运算相关
![](../../images/《计组》大题/数据运算1.jpg)
1
X = $(134)_{10} = 1000 0110B =>R_1的内容为86H$
$y = (246)_{10} = 1111 0110B$
$x-y = 1000 0110 + 0000 1010 = 1001 0000$
=>$R_5的内容为90H$
x+y = 1000 0110 +1111 0110 = 0111 1100 = 7CH
=>$R_6的内容为7CH$
2
$m = 1000 0110_{[补]} = 1111 1010_{[原]} = -122$
$ n = 1111 0110_{[补]} = 1000 1010_{[原]} = -10$
3
n位加法器可实现
---
![](../../images/《计组》大题/数据运算2.jpg)
1
乘法可通过加法和移位实现
2
控制循环次数,控制加法和移位操作
3
a最长c最短
---
## 指令执行相关
![](../../images/《计组》大题/指令执行1.jpg)
1
10次16行的call指令
2
12行是条件转移指令
16行20行30行一定会使程序跳转执行
3
0040 1025 + 5 = 0040 102AH
目标地址 = PC+ 偏移量 => 偏移量 = 00401000H - 0040 102AH = FFFF FFD6H
小端方式
4
f(13) > $2^{32} - 1$,发生了溢出的错误结果,可将$f_1$的返回值类型改为double
5
乘积的高33位非全0或非全1OF = 1加一条溢出自陷指令
---
![](../../images/《计组》大题/指令执行2.jpg)
1
CISCM的指令长短不一不符合RISC的指令系统的特点
2
长度 = 0040 107FH -0040 1020H +1 = 60H = 96B
4
不能,$f_2$为浮点数其有阶码不能单纯靠左移实现power*2运算
---
![](../../images/《计组》大题/指令执行3.jpg)
1
ALU宽度16位可寻址大小 = $2^{20}B = 1MB$
指令寄存器长度 = 单条指令长度 = 16位
MAR20位MDR8位
2
R型$2^4 = 16$种操作
通用寄存器 = $2^2 = 4个$
I、J型2^6 -1 = 63种操作
3
01B2H = 0000 0001 1011 0010B
功能为R[3]$\leftarrow$ R[1]-R[2]
执行01B2HB052H - 0008H = B04AH,未溢出
执行01B3HB052H $\times$0008H = 8290H结果溢出
4
符号扩展
5
丁型指令
---
![](../../images/《计组》大题/指令执行4.jpg)
1
最多 $2^4$ = 16条指令操作码占4位
操作数占6位寻址方式占3位寄存器编号占3位=>$2^3$ = 8个通用寄存器
MAR需16位128KB = $2^{17}B$
字长为16位 => MDR至少为16位
2
PC的范围 0~$2^{16}-1$(存储器字长16位)
$R_n$的相对偏移量 $-2^{15}\backsim2^{15}-1$
主存地址空间$2^16$
因此转移指令的目标范围为0000H ~ FFFFH($0\backsim2^{16}-1)$
3
addR4,R5+
|OP|Ms|Rs|Md|Rd|
|---|---|---|---|---|
|0010|001|100|010|101|
十六进制为0010 0011 0001 0101B = 2315H
将R4内容所指的存储单元的数据与R5内容中所指的存储单元数据相加再将结果送入R5内容所指的存储单元中
R4 = 1234H1234H = 5678HD5 = 5678H5678 = 1234H
即5678H + 1234 = 68ACH之后R5自增
R5和存储单元5678H会改变R5的内容从5678H变为5679H5678H内容变为68ACH
---

View File

@ -223,4 +223,62 @@ date: 2023-07-22T13:59:04+08:00
* 各种IO控制方式的对比和例题
* ![](../../images/《计组》输入输出系统/IO控制方式对比.png)
* ![](../../images/《计组》输入输出系统/IO例题.jpg)
* ![](../../images/《计组》输入输出系统/IO例题.jpg)
## 思维导图
* 结构
* CPU
* 程序查询
* 中断
* DMA
* 接口
* 按字传输型,每次传输一个字
* DMA型每次传输一整块
* 传输总线
* 并行
* 多位一起传
* 串行
* 一位一位传
* 可能会有附加的校验位、起始位、结束位
* 设备
* 无指挥
* IO设备按自己的节奏往IO缓冲区冲入数据
* CPU不及时取走数据可能导致数据丢失
* 有指挥
* IO设备会根据CPU的智慧往IO缓冲区冲如数据
* CPU从缓冲区中取走一个字的数据后会智慧IO设备输入下一个字的数据不会有数据丢失的问题
* 重点
* CPU每次介入的动作
* 程序查询方式
* 每次检查IO接口数据是否准备完毕
* 一次程序查询的时间开销,需要执行多少条指令/多少个时钟周期
* CPU介入的频率取决于查询程序上CPU的时间频率
* 中断控制方式
* 中断响应(隐指令)
* 时间开销
* 通常以时钟数作为条件
* 中断服务程序
* 时间开销
* 时钟数
* 指令总数结合CPI
* CPU介入的频率
* 取决于IO接口发来中断的频率
* DMA控制方式
* 预处理
* 让DMA接口输入一块数据
* 后处理
* 一整块数据传输完成后DMA接口给CPU中断CPU处理中断
* CPU介入频率
* 每传一块介入一次
* 数据丢失问题
* 程序查询方式
* 当IO缓冲区大小有限时每一次数据冲入后CPU都要及时把数据取走防止丢失
* 若CPU每次查询的时间开销太久可能导致IO接口数据覆盖
* 中断控制方式
* 判断是否会数据丢失中断处理的时间总共花了多少是否大于IO接口冲入一次数据的时间
* 若中断处理时间太久可能导致IO接口数据覆盖
* DMA控制方式
* 不会数据丢失

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 342 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 379 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 343 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 300 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 424 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 557 KiB