一、选择题(2*15=30分)
P12-13 计算机设计的主要方法
- 由上往下(适用于专用机)
- 由下往上(软件与硬件会脱节)
- 从中间开始(从硬件和软件的交汇面开始,是一种较好的交互式设计方法)
P18 冯诺依曼结构的主要特点
- 计算机以运算器为中心
- 在储存池中,指令与数据同等对待.
- 存储器是按地址访问并且按顺序线性编址的一维结构,且每个单元的位数是固定的
- 指令的执行是顺序的
- 指令由操作码和地址码组成
- 指令与数据均以二进制表示,采用二进制运算
P35 对指令系统的基本要求
- 完整性:在一个有限空间内,对于可解的问题,系统提供的指令足够使用
- 规整性:
- 对称性:操作码的设置要使操作可以从A->B,也可以从B->A
- 均匀性:指令的长度,数量等要相同
-
一般只要求有限的规整性
- 正交性:指指令中各个不同字段在编码时互不相关,互相独立
- 高效率:指使用频率高的指令的执行速度要快
- 兼容性:指系统在设计指令时要向下兼容,只可增加新指令,不可删除或更改旧指令
P37 指令操作码的优化
- 指令由两部分组成
- 操作码
- 地址码
- 优化是指如何用最短位数来表示指令的操作信息和地址信息
- 操作码
- 赫夫曼(哈夫曼)编码
- 赫夫曼树
- 等长拓展码
- 定长拓展码
- 赫夫曼(哈夫曼)编码
- 操作码
P58 P73 P77 流水线与冲突
-
ADD.D F1.F2,F3 数据相关(先写后读),可能导致数据冲突(也叫RAW(写后读)冲突)
- SUB,D F0,F1,F2
-
名相关(包含反相关以及输出相关)
-
ADD.D F0.F1.F2 反相关(先读后写),可能导致WAR(读后写)神突)
- SUB,D F1,F2,F3
-
ADD.D F1.F0.F4 输出相关(先写后写),可能导致WAW(写后写)冲突)
- SUB,D F1,F2,F3
-
P130
- 通过寄存器换名解决WAW,WAR冲突
二、名词解释题(2*10=20分)
- P1 RISC:精简指令集 CISC :复杂指令集
- P4(SISD\SIMD\MISD\MIMD)
- SISD:单指令流单数据流
- SIMD:单指令流多数据流
- MISD:多指令流单数据流
- MIMD:多指令流多数据流
- (S:Single(单个),M:Mulitiple(多个))
- P7 Amdahl定律
- 当对系统中的某个部件进行改进后,所能获得的整个系统的性能的提高受限于该部件的执行时间占总执行时间的百分比.
- 作用:计算对系统中的某个部件改进后所能获得的加速比的大小
- 加速比 = 系 统 性 能 ( 改 进 后 ) 系 统 性 能 ( 改 进 前 ) \frac{系统性能(改进后)}{系统性能(改进前)} 系统性能(改进前)系统性能(改进后)= 总 执 行 时 间 ( 改 进 后 ) 总 执 行 时 间 ( 改 进 前 ) \frac{总执行时间(改进后)}{总执行时间(改进前)} 总执行时间(改进前)总执行时间(改进后)
- P32 寻址方式:指系统中如何形成所要访问的地址
- P90 习题3.1(通过时间、排空时间、线性流水线、非线性流水线、吞吐率)
- 通过时间:第一个任务从进入流水线到流出结果的时间
- 排空时间:最后一个任务从进入流水线到流出结果的时间
- 线性流水线:各段串行连接,没有反馈回路的流水线.(每段只通过一次)
- 非线性流水线:各段除了串行连接,还有反馈回路.
- 吞吐率:指单位时间内流水线所完成的任务数量或输出的结果的数量.
- P102 分段开采技术:当向量的长度大于向量寄存器的长度时,必须把长向量分成长度固定的段,然后循环分段处理,每次循环只处理一个向量段.
- P112 指令集并行(ILP):指令间的并行关系,使用他,计算机可以并行执行两条或两条以上的指令
三、简答题(5*2=10分)
P91习题3.2 简述流水线技术的特点:
- 可以把一个处理过程分解为若干个子过程,每个子过程由一个专门的功能部件来实现
- 各段时间应该尽量相同,保证不会引起堵塞和断流
- 每段流水线后都有一个缓冲寄存器(锁存器),称为流水线寄存器.作用是在相邻的两端之间传送数据,避免互相打扰
- 流水线适用于大量重复的时序过程,只有在输入端不断提供任务,才能充分发挥流水线效率
- 流水线需要有通过时间和排空时间
P110习题4.3(P98) 可采用那些方法提高向量处理机的性能?
- 使用循环开采技术,加快循环的处理
- 提供多个功能部件,使其并行工作
- 采用链接技术,加快一串向量指令的执行
- 采用多处理器机系统,进一步提高性能
四、计算题(1-2每小题5分,3-5每小题10分,共40分)
Amdahl定律
前置技能:
F e Fe Fe:可改进比例(可改进部分的执行时间在总执行时间中占的比例)(总小于1)
S e Se Se:部件加速比(改进前所需的执行时间与改进后执行时间的比)(总大于1)
T 0 T_0 T0:改进前整个程序的执行时间
T n T_n Tn:改进后执行时间
1 − F e 1-Fe 1−Fe:不可改进比例
总执行时间:
T
n
T_n
Tn =
T
0
T_0
T0(1 - Fe +
F
e
S
e
\frac{Fe}{Se}
SeFe)
整个系统加速比:
S
n
S_n
Sn =
T
0
T
n
\frac{T_0}{T_n}
TnT0 =
1
T
0
(
1
−
F
e
+
F
e
S
e
)
\frac{1}{T_0(1 - Fe + \frac{Fe}{Se})}
T0(1−Fe+SeFe)1
CPU性能公式
前置技能
CPU时间 = 执行程序所需时钟周期数 * 时钟周期时间
C P I CPI CPI:每条指令的平均时钟周期数
I C IC IC:常量
I C i IC_i ICi:程序执行过程中第 i i i种指令出现的次数
C P I i CPI_i CPIi:执行第 i i i种指令所需的平均时间周期数
n n n:指令的种数
C P I = 执 行 程 序 所 需 时 钟 周 期 数 所 执 行 的 指 令 条 数 CPI = \frac{执行程序所需时钟周期数}{所执行的指令条数} CPI=所执行的指令条数执行程序所需时钟周期数
C P I = 时 钟 周 期 数 I C = ∑ i = 1 n ( C P I i ∗ I C i ) I C = ∑ i = 1 n ( C P I i ∗ I C i I C ) CPI = \frac{时钟周期数}{IC} = \frac{\sum_{i=1}^{n}(CPI_i * IC_i)}{IC} = \sum_{i=1}^{n}(CPI_i * \frac{IC_i}{IC}) CPI=IC时钟周期数=IC∑i=1n(CPIi∗ICi)=∑i=1n(CPIi∗ICICi)
流水线性能分析
衡量流水线性能的指标有吞吐率,加速比以及效率
1. 吞吐率
前置技能
T P TP TP:流水线的实际吞吐率
n n n:任务数
T k T_k Tk:处理完 n n n个任务所用的时间
T P m a x TP_{max} TPmax:最大吞吐率
k k k:流水线段数
Δ t i \Delta t_i Δti:第 i i i段的时间
基本公式
T
P
=
n
T
k
TP = \frac{n}{T_k}
TP=Tkn
- 各段时间相等的流水线
T P = n ( k + n − 1 ) Δ t TP = \frac{n}{(k+n-1)\Delta t} TP=(k+n−1)Δtn
T P m a x = lim n → ∞ n ( k + n − 1 ) Δ t = 1 Δ t TP_{max} = \lim_{n\rightarrow \infty} \frac{n}{(k+n-1)\Delta t} = \frac{1}{\Delta t} TPmax=limn→∞(k+n−1)Δtn=Δt1
T P = n k + n − 1 T P m a x TP = \frac{n}{k+n-1}TP_{max} TP=k+n−1nTPmax
- 各段时间不完全相等的流水线
T P = n ∑ i = 1 k Δ t i + ( n − 1 ) m a x ( Δ t 1 , Δ t 2 , . . . , Δ t k ) TP = \frac{n}{\sum_{i=1}^{k}\Delta t_i + (n-1) max (\Delta t_1 , \Delta t_2 , ...,\Delta t_k)} TP=∑i=1kΔti+(n−1)max(Δt1,Δt2,...,Δtk)n
T P m a x = 1 m a x ( Δ t 1 , Δ t 2 , . . . , Δ t k ) TP_{max} = \frac{1}{max(\Delta t_1 , \Delta t_2 , ...,\Delta t_k)} TPmax=max(Δt1,Δt2,...,Δtk)1
T P = n k + n − 1 T P m a x TP = \frac{n}{k+n-1}TP_{max} TP=k+n−1nTPmax
2. 加速比
指用顺序处理方法处理任务所用的时间与使用流水线处理任务所用的时间之比
加 速 比 = 顺 序 处 理 方 法 处 理 任 务 所 用 的 时 间 使 用 流 水 线 处 理 任 务 所 用 的 时 间 加速比 = \frac{顺序处理方法处理任务所用的时间}{使用流水线处理任务所用的时间} 加速比=使用流水线处理任务所用的时间顺序处理方法处理任务所用的时间
前置技能
T s T_s Ts:顺序处理方法处理任务所用的时间
T k T_k Tk:使用流水线处理任务所用的时间
S S S:加速比
S m a x S_{max} Smax:最大加速比
k k k:流水线数
n n n:任务数
S = T s T k S = \frac{T_s}{T_k} S=TkTs
S = n k k + n − 1 S = \frac{nk}{k+n-1} S=k+n−1nk
S m a x = lim n → ∞ n k k + n − 1 = k S_{max} = \lim_{n \rightarrow \infty} \frac{nk}{k+n-1} = k Smax=limn→∞k+n−1nk=k
不完全流水线
- 太长了咕咕咕
3. 效率
效 率 = 设 备 使 用 时 间 整 个 运 行 时 间 效率 = \frac{设备使用时间}{整个运行时间} 效率=整个运行时间设备使用时间
前置技能
E E E:效率
k k k:流水线数
n n n:任务数
E m a x E_{max} Emax:最高效率
E = n k + n − 1 E = \frac{n}{k+n-1} E=k+n−1n
E m a x = lim n → ∞ n k + n − 1 = 1 E_{max} = \lim_{n \rightarrow \infty} \frac{n}{k+n-1}=1 Emax=limn→∞k+n−1n=1
E = T P ∗ Δ t E = TP * \Delta t E=TP∗Δt
各段时间相等时
E = S k E = \frac{S}{k} E=kS
题目
P8 例1.1
P9 例1.3
P91习题3.6
解:
1.
由公式:
T P = n ∑ i = 1 k Δ t i + ( n − 1 ) m a x ( Δ t 1 , Δ t 2 , . . . , Δ t k ) TP = \frac{n}{\sum_{i=1}^{k}\Delta t_i + (n-1) max (\Delta t_1 , \Delta t_2 , ...,\Delta t_k)} TP=∑i=1kΔti+(n−1)max(Δt1,Δt2,...,Δtk)n得
共有10条指令(任务) n = 10 n = 10 n=10
∑ i = 1 k Δ t i \sum_{i=1}^{k}\Delta t_i ∑i=1kΔti 即所有段的时间加起来
m a x ( Δ t 1 , Δ t 2 , . . . , Δ t k ) max (\Delta t_1 , \Delta t_2 , ...,\Delta t_k) max(Δt1,Δt2,...,Δtk) 即从所有段中选取需要最多的时间的段
效 率 T P = 10 ( 50 n s + 50 n s + 100 n s + 200 n s ) + 9 ∗ 200 n s = 1 220 效率TP = \frac{10}{(50ns+50ns+100ns+200ns) + 9 * 200ns} = \frac{1}{220} 效率TP=(50ns+50ns+100ns+200ns)+9∗200ns10=2201
流水线瓶颈在第4段
- 细分瓶颈段
- 证件多个瓶颈段,使其并行执行
计算:再不睡人要没了,5000多字了(翻译:咕咕咕)
P63 例3.2
P104 例4.5
解:
不会
QED