计算机组成原理
指令流水线
-
指令流水线的基本概念
时间上的并行技术:流水线技术
空间上的并行技术:超标量处理机
假设一条指令的执行过程分为如下5个阶段(功能段或流水段)
- 取指(IF):从指令存储器或Cache中取指令
- 译码/读寄存器(ID):操作控制器对指令进行译码,同时从寄存器堆中取操作数
- 执行/计算地址(EX):执行运算操作或计算地址
- 访存(MEM):对存储器进行读/写操作
- 写回(WB):将指令执行结果写回寄存器堆
为了利于实现指令流水线,指令集应具有如下特征:
- 指令长度应尽量一致,有利于简化取指令和指令译码操作。
- 指令格式应尽量规整,尽量保证源寄存器的位置相同。
- 采用LOAD/STORE型指令,其他指令不能访问存储器,这样可把LOAD/SZTORE指令的地址计算和运算指令的执行步骤规整在一个周期中。
- 数据和指令在存储器中”按边界对齐“存放。
-
流水线的基本实现
- 流水线设计的原则
- 指令流水段个数以最复杂指令所用的功能段个数为准
- 流水段的长度以最复杂的操作所花的时间为准
- 流水线的逻辑结构
- 流水线的时空图表示
- 流水线设计的原则
-
流水线的冒险与处理
- 结构冒险
- 数据冒险
- RAW
- 延迟执行相关指令
- 采用转发(旁路)技术
- load-use数据冒险处理
- WAR
- WAW
- RAW
- 控制冒险
-
流水线的性能指标
-
流水线的吞吐率(n是任务数,$T_k$是处理完n个任务所用的总时间,k为流水线的段数)
$$ TP = \frac{n}{T_k} $$$\Delta t$为时钟周期。在输入流水线中的任务连续的理想情况下,一条$k$段流水线能在$k+n-1$
$$ TP = \lim\limits_{n\to \infty} \frac{n}{(k+n-1)\Delta t} = \frac{1}{\Delta t} $$ -
流水线的加速比
$$ S = \frac{T_0}{T_k} $$一条k段流水线完成n个任务所需的时间为$T_k=(k+n-1)\Delta t$。顺序执行n个任务时,所需的总时间为 $T_0=kn\Delta t$
$$ S = \frac{kn\Delta t}{(k+n-1)\Delta t} $$$$ S_{\lim\limits_{n\to \infty}} = k $$
-
-
高级流水线技术
- 超标量流水线技术(多发射技术)
- 超长指令字技术
- 超流水线技术
多处理器的基本概念
- SISD,SIMD,MIMD的基本概念
- 单指令流单数据流(SISD)结构
- 单指令流多数据流(SIMD)结构
- 多指令流单数据流(MISD)结构(不存在)
- 多指令流多数据流(MIMD)结构
- 硬件多线程的基本概念
- 细粒度多线程
- 粗粒度多线程
- 同时多线程
- 多核处理器的基本概念
- 共享内存多处理器的基本概念
- 统一存储访问(UMA)多处理器
- 非统一存储访问(NUMA)多处理器