第5章指令级并行 指令集并行的基本概念及挑战 软件方法挖掘指令集并行 基本块内的指令集并行 硬件方法挖掘指令集并行 Scoreboard Tomasulo 跨越基本块的指令集并行 ·基于硬件的推测执行 ·以多发射和静态调度来挖掘指令集并行 以动态调度、多发射和推测执行来挖掘指令集 并行
2021/2/7 第5章 指令级并行 • 指令集并行的基本概念及挑战 • 软件方法挖掘指令集并行 – 基本块内的指令集并行 • 硬件方法挖掘指令集并行 – Scoreboard – Tomasulo • 跨越基本块的指令集并行 • 基于硬件的推测执行 • 以多发射和静态调度来挖掘指令集并行 • 以动态调度、多发射和推测执行来挖掘指令集 并行
◎系统结构的Fymn类(96 SISD: Single instruction stream, single data stream 单处理器模式 SIMD: Single instruction stream, multiple data streams 相同的指令作用在不同的数据 可用来挖掘数据级并行( Data level parallelism) A: Vector processors, SIMD instructions, and Graphics processing units MISD: Multiple instruction streams, single data stream No commercial implementation MIMD: Multiple instruction streams, multiple data streams 亚性款的三种结构可用米续摆子款数据级并行
系统结构的Flynn分类 (1966) • SISD: Single instruction stream, single data stream – 单处理器模式 • SIMD: Single instruction stream, multiple data streams – 相同的指令作用在不同的数据 – 可用来挖掘数据级并行(Data Level Parallelism) – 如:Vector processors, SIMD instructions, and Graphics processing units • MISD: Multiple instruction streams, single data stream – No commercial implementation • MIMD: Multiple instruction streams, multiple data streams – 通用性最强的一种结构,可用来挖掘线程级并行、数据级并行….. – 组织方式可以是松耦合方式也可以是紧耦合方式
Levels of parallelism 请求级并行 多个任务可被分配到多个计算机上并行执行 进程级并行 进程可被调度到不同的处理器上并行执行 线程级并行 任务被组织成多个线程,多个线程共享一个进程的地址空间 每个线程有自己独立的程序计数器和寄存器文件 数据级并行 单线程(逻辑上)中并行处理多个数据( SIMD/Vector execution) 个程序计数器,多个执行部件 指令级并行 针对单一指令流,多个执行部件并行执行不同的指令
Levels of Parallelism • 请求级并行 – 多个任务可被分配到多个计算机上并行执行 • 进程级并行 – 进程可被调度到不同的处理器上并行执行 • 线程级并行 – 任务被组织成多个线程,多个线程共享一个进程的地址空间 – 每个线程有自己独立的程序计数器和寄存器文件 • 数据级并行 – 单线程(逻辑上)中并行处理多个数据 (SIMD/Vector execution) – 一个程序计数器, 多个执行部件 • 指令级并行 – 针对单一指令流,多个执行部件并行执行不同的指令
Review:基本流水线 癒水线提喜的是指令带宽(吞吐率),而不是单条 相关限制了流水线性能的发挥 结构相关:需要更多的硬件资源 数据相关:需要定向,编译器调度 控制相关:尽早检测条件,计算目标地址,延迟转移, 预测 ·增加流水线的级数会增加相关产生的可能性 ·异常,浮点运算使得流水线控制更加复杂 ·编译器可降低数据相关和控制相关的开销 Load延迟槽 Branch延迟槽 Branch预测
2021/2/7 5 Review: 基本流水线 • 流水线提高的是指令带宽(吞吐率),而不是单条 指令的执行速度 • 相关限制了流水线性能的发挥 – 结构相关:需要更多的硬件资源 – 数据相关:需要定向,编译器调度 – 控制相关:尽早检测条件,计算目标地址,延迟转移, 预测 • 增加流水线的级数会增加相关产生的可能性 • 异常,浮点运算使得流水线控制更加复杂 • 编译器可降低数据相关和控制相关的开销 – Load 延迟槽 – Branch 延迟槽 – Branch预测
51指令级并行的基本概念及挑战 ILP:无关的指令重叠执行 流水线的平均cPI Pipeline CPi Ideal Pipeline CPI Struct stalls raw stalls War Stalls WAW Stalls Control Stalls Memory stalls 本章研究:减少停顿( stalls)数的方法和技术 基本途径 软件方法: ·GcC:17%控制类指令,5 instructions+1 branch 在基本块上,得到更多的并行性 挖掘循环级并行 硬件方法 动态调度方法 以MPS的浮点数操作为例
2021/2/7 6 5.1 指令级并行的基本概念及挑战 • ILP: 无关的指令重叠执行 • 流水线的平均CPI • Pipeline CPI = Ideal Pipeline CPI + Struct Stalls + RAW Stalls + WAR Stalls + WAW Stalls + Control Stalls + Memory Stalls • 本章研究:减少停顿(stalls)数的方法和技术 • 基本途径 – 软件方法: • Gcc: 17%控制类指令,5 instructions + 1 branch; • 在基本块上,得到更多的并行性 • 挖掘循环级并行 – 硬件方法 • 动态调度方法 – 以MIPS的浮点数操作为例