浮点运算步骤
如下
先表示为浮点数补码形式(阶码、尾数)
① 0操作数的检查
②比较阶码大小并完成对阶(小阶向大阶对齐。阶小的尾数向右移位,每右移一位,阶码加1 )
③尾数进行加运算(减法转为补码加)
[x+y]补=[x]补+[y]补
[x-y]补=[x]补+[-y]补
④结果规格化
⑤舍入处理
浮点运算流水线
提高并行性的两个渠道:
-
空间并行性:多个独立的操作部件,并且使这些部件并行工作
-
时间并行性:改善操作流程
如流水线技术
流水技术原理?
实现:
- 把一个任务分解为几个有联系的子任务。
- 每个子任务由一个专门的功能部件实现
注意:
-
在流水线中的每个功能部件之后都要有一个缓冲寄存器,或称为锁存器
-
流水线中各段的时间应该尽量相等,否则将会引起“堵塞”和“断流”的现象
-
流水线需要有装入时间和排空时间,只有当流水线完全充满时,才能充分发挥效率。
设过程段 \(S_i\)所需的时间为\(τ_i\),缓冲寄存器的延时为\(τ_t\)
线性流水线的时钟周期定义为
\(τ=max\{τ_i\}+τ_t=τ_m+τ_t\)
流水线处理的频率为 \(f=\frac{1}{τ}\)。
也就是说:
时钟周期应以最长的执行时间为准,否则用时长的流水段的功能将不能正确完成。
考研真题:某计算机的指令流水线由四个功能段组成,指令流经各功能段的时间(忽略各功能段之间的缓存时间)分别是90ns、80ns、70ns和60ns,则该计算机的流水线时钟周期至少是
( A )
A. 90ns B. 80ns C. 70ns D. 60ns
各段时间均相等的流水线
各段时间均相等的流水线时空图
具有k 级过程段的流水线处理 n 个任务需要的时钟周期数为
\(T_k=k+(n-1)\)
装入时间是指第一个任务进入流水线到输出流水线的时间。
流水线各段时间相等(都是△t)(忽略缓冲时间)
1、具有k 级过程段的流水线处理 n 个任务需要的时钟周期数为
\(T_k=k+(n-1)\)
2、非流水线的硬件来处理这n个任务,时间上只能串行进行,则所需时钟周期数为
\(T_L=n*k\)
3、k级线性流水线的加速比(完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比):
Ck = n·kΔt
{k+(n-1) } Δt
= n·k
k+(n-1)
注意:
如果不忽略缓冲时间,流水线各环节需要增加缓冲时间
二、流水线的各段时间不完全相等时(忽略缓冲时间)
装入时间是指第一个任务进入流水线到输出流水线的时间。
注意:
如果不忽略缓冲时间,流水线各环节需要增加缓冲时间
题目:
例题:若指令流水线把一条指令分为取指、分析和执行三部分,且三部分的时间分别为\(t_{取值}=2ns,t_{分析}=2ns\),t-{执行}=1ns,则100条指令全部执行完毕需( 203 )ns。
解:一条k段流水线完成n个连续任务所需要的时间为
(2+2+1)+ (100-1) × 2 = 5 + 198 = 203ns
流水线的各段时间不完全相等时(忽略缓冲)
一条k段流水线完成n个连续任务
所需要的时间为
顺序执行n个任务所需要的时间:
流水线的实际加速比为