单发射与多发射
1流水线(pipeline)技术:是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。流水线是Intel首次在486芯片中开始使用的。流水线的工作方式就象工业生产上的装配流水线。在CPU中由5—6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5—6步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,因此提高CPU的运算速度。经典奔腾每条整数流水线都分为四级流水,即指令预取、译码、执行、写回结果,浮点流水又分为八级流水。
2吞吐率:指的是计算机中的流水线在特定的时间内可以处理的任务或输出数据的结果的数量。流水线的吞吐率可以进一步分为最大吞吐率和实际吞吐率。它们主要和流水段的处理时间、缓存寄存器的延迟时间有关,流水段的处理时间越长,缓存寄存器的延迟时间越大,那么,这条流水线的吞吐量就越小。因为,在线性流水线中,最大吞吐率Tpmax=流水线时钟周期△T/1=max(T1,...Ti,..Tm)+T1/1,而其中,m是流水线的段数,i是特定过程段执行时间。如果,一条流水线的段数越多,过程执行时间越长,那么,这条流水线的理论吞吐率就越小。
3单发射与多发射
单发射处理机的指令执行在一个时钟周期内只从存储器中取出一条指令,并且只对一条指令进行译码,只执行一条指令,只写一个运算结果。
在单发射处理机中,取指令部件和指令译码部件只各设置一套,而操作部件可以只设置一个多功能操作部件,也可以设置多个独立的操作部件。例如,定点算术逻辑部件ALU、取数存数部件LSU、浮点加法部件FAD、乘除法部件MDU等。单发射处理机在指令一级通常采用流水线结构;而在操作部件中,有的机器采用流水线结构,也有的机器不采用流水线结构。
单发射处理机的设计目标是每个时钟周期平均执行一条指令,即它的指令级并行度ILP的期望值1。实际上,它就是一台有k段流水线的普通标量处理机。由于数据相关、条件转移和资源冲突等原因,实际的ILP不可能达到1。通过优化编译器对指令序列进行重组(recorganizer),以及采用软件与硬件相结合的方法处理数据相关、条件转移和资源冲突等,可以使ILP接近于1。但是,单发射处理机的ILP不可能大于1。
图 单发射与多发射处理机的指令执行时空图
多发射处理机在一个基本时钟周期内同时从指令Cache中读出多条指令,同时对多条指令进行译码。为了实现在一个时钟周期同时多发射条指令,通常需要有多个取指令部件,多个指令译码部件和多个写结果部件。
4SIMD:(Single Instruction Multiple Data,单指令多数据流)能够复制多个操作数,并把它们打包在大型寄存器的一组指令集。
以同步方式,在同一时间内执行同一条指令。
以加法指令为例,单指令单数据(SISD)的CPU对加法指令译码后,执行部件先访问内存,取得第一个操作数;之后再一次访问内存,取得第二个操作数;随后才能进行求和运算。而在SIMD型的CPU中,指令译码后几个执行部件同时访问内存,一次性获得所有操作数进行运算。这个特点使SIMD特别适合于多媒体应用等数据密集型运算。
MIMD:(MultipleInstructionStreamMultipleDataStream多指令多数据流),它使用多个控制器来异步地控制多个处理器,从而实现空间上的并行性。