个人主页:丷从心·
系列专栏:并行计算

2.1|背景知识
冯·诺依曼结构
- 主存和 C P U CPU CPU之间的分离称为冯·诺依曼瓶颈
2.2|对冯·诺依曼模型的改进
指令级并行
多发射
- 多发射处理器通过复制功能单元来同时执行程序中的不同指令
- 如果功能单元是在编译时调度的,则称该多发射系统使用静态多发射,如果是在运行时间调度的,则称该多发射系统使用动态多发射
- 一个支持动态多发射的处理器称为超标量
硬件多线程
同步多线程
- 同步多线程是细粒度多线程的变种,通过允许多个线程同时使用多个功能单元来利用超标量处理器的性能
- 通过指定优先线程能够在一定程度上减轻线程减速的问题,优先线程是指有多条指令就绪的线程
2.3|并行硬件
SIMD系统
- 典型的冯·诺依曼系统是单指令流单数据流系统
向量加法
- 有两个数组 x x x和 y y y,每个都有 n n n个元素,把 y y y中的元素加到 x x x中
for (i = 0;i < n;i++)
x[i] += y[i]
- 假如 S I M D SIMD SIMD系统中有 n n n个 A L U ALU ALU,能够将
x[i]和y[i]加载到第 i i i个 A L U ALU ALU中,然后让第 i i i个 A L U ALU ALU将x[i]和y[i]相加,最后将结果存储在x[i]中 - 在经典的 S I M D SIMD SIMD系统中, A L U ALU ALU必须同步操作,即在下一条指令开始执行之前,每个 A L U ALU ALU必须等待广播
向量处理器
向量寄存器
- 向量寄存器是能够存储由多个操作数组成的向量,并且能够同时对其内容进行操作的寄存器,向量的长度由系统决定
向量指令
- 只需要一次加载、一次加法和一次存储操作就能完成对长度为
vector_length的数据块的操作
交叉存储器
- 内存系统由多个内存“体”组成,每个内存体能够独立访问
- 在访问完一个内存体之后,再次访问它之前需要有一个时间延迟,如果向量中的各个元素分布在不同的内存体中,那么在装入 / / /存储连续数据时能够几乎无延迟地访问
步长存储器访问和硬件散射/聚集
- 程序能够访问向量中固定间隔的元素
- 散射 / / /聚集是对无规律间隔的数据进行读(聚集)和写(散射)
向量编译器
- 向量编译器擅长于识别向量化的代码
- 能识别出不能向量化的循环而且能提供循环为什么不能向量化的原因
可扩展性
- 向量处理器不能处理不规则的数据结构和其他的并行结构,这对可扩展性是个限制
图形处理单元(GPU)
- 通过在每个 G P U GPU GPU处理核中引入大量的 A L U ALU ALU来使用 S I M D SIMD SIMD并行
- 为了避免内存访问带来的延迟, G P U GPU GPU严重依赖硬件多线程
MIMD系统
- M I M D MIMD

最低0.47元/天 解锁文章
344

被折叠的 条评论
为什么被折叠?



