| DSA | |
| ALP | SOC |
| DLP | SIMD vector subword GPU-SIMT |
| TLP | multiprocessor SMP multi core |
| ILP | pipeline s-scalar speculate |
| BLP(bit level parallelism) | common-64b |
HBM
HBM:HBM(High Bandwidth Memory)是一款新型的CPU/GPU 内存芯片(即 “RAM”),其实就是将很多个DDR芯片堆叠在一起后和GPU封装在一起,实现大容量,高位宽的DDR组合阵列。
HBM DRAM 3D图形:
- DRAM通过堆叠的方式,叠在一起,Die之间用TVS方式连接
- DRAM下面是DRAM逻辑控制单元, 对DRAM进行控制
- GPU和DRAM通过uBump和Interposer(起互联功能的硅片)连通
- Interposer再通过Bump和 Substrate(封装基板)连通到BALL
- 最后BGA BALL 连接到PCB上。
上图是 Synopsys 提供的 DDR、LPDDR、GDDR 和 HBM 的对比。您可以从最大 I/F BW 一栏看到其他厂商的能力,它们与 HBM2 不在一个数量级上。如此高的带宽,在高度并行计算、科学计算、计算机视觉和人工智能等应用中,简直是令人耳目一新的节奏。
SIMD
SIMD:一条指令可同时应用于多个不同的数据流。指令可以通过流水线等方式顺序执行,也可以由多个功能单元并行执行。
- Array processor:这些处理器接收一条(相同的)指令,但每个并行处理单元都有自己独立的存储器和寄存器文件。
- Pipelined processor:它们接收一条(相同)指令,但随后从中央资源读取数据,各自处理数据片段,然后将结果写回同一中央资源。在 Flynn 1972 年论文的图 5 中,该资源是主存储器:对于现代 CPU 而言,该资源现在通常是寄存器文件
弗林在 1972 年撰写论文时,许多系统都将主内存作为流水线读写的资源。当所有 "流水线 "读写的资源是寄存器文件而非主存储器时,就会产生 SIMD 的现代变体。例如 Altivec、NEON 和 AVX。
这种基于寄存器的 SIMD 的另一个名称是 "packed SIMD",另一个名称是寄存器内 SIMD(SWAR)。当应用谓词时,它就变成了关联处理(如下所示)
- Associative processor:这些处理器接收一条(相同的)指令,但在每个并行处理单元中,会根据该单元的本地数据独立决定是否执行或跳过该指令。在现代术语中,这被称为 "预设"(屏蔽)SIMD。
关联处理器的现代术语是 "预设"(或屏蔽)SIMD。例如 AVX-512。
一些现代设计(尤其是 GPU)具有上述子类别中多个类别的特征: 当今的 GPU 既是 SIMT,也是关联式的,即 SIMT 阵列中的每个处理元素也是 "谓 "的
SIMT
Array processor的现代术语是 "单指令多线程"(SIMT)。这是 Flynn 1972 年分类法中的一个独特分类,是 SIMD 的一个子类。它的特点是并行子元素有自己独立的寄存器文件和内存(高速缓存和数据内存)。Flynn 的原始论文列举了 SIMT 处理器的两个历史性实例: SOLOMON 和 ILLIAC IV。
SIMT:单指令多线程(SIMT)是并行计算中使用的一种执行模式,它将单指令多数据(SIMD)与多线程相结合。它与 SPMD 的不同之处在于,所有 "线程 "中的所有指令都是同步执行的。SIMT 执行模型已在多个 GPU 上实现,并适用于图形处理器(GPGPU)上的通用计算
MISD
多条指令在一个数据流上运行。这是一种不常见的架构,一般用于容错。异构系统在同一数据流上运行,必须就结果达成一致。例如航天飞机的飞行控制计算机。
MIMD
多个自主处理器同时对不同数据执行不同指令。MIMD 架构包括多核超标量处理器和分布式系统,使用一个共享内存空间或一个分布式内存空间
SPMD
多个自主处理器同时在不同的数据上执行相同的程序(但在独立的点上执行,而不是像 SIMD 那样步调一致)。也称为单进程、多数据--SPMD 使用这一术语在技术上是不正确的,因为 SPMD 是一种并行执行模式,它假定多个处理器合作执行一个程序。SPMD 是最常见的并行编程方式。SPMD 模型和术语是由 RP3 团队的 Frederica Darema 提出的
MPMD
多个自主处理器同时运行至少两个独立的程序。通常情况下,此类系统会选择一个节点作为 "主机"("显式主机/节点编程模型")或 "管理器"("管理器/工作器 "策略),运行一个程序,并将数据外包给所有其他节点,这些节点都运行第二个程序。然后,其他节点直接将结果返回给管理器。索尼 PlayStation 3 游戏机及其 SPU/PPU 处理器就是一个例子
SCI
Scalable Coherent Interconnect:可扩展一致性接口或可扩展一致性互连 (SCI) 是一种用于共享内存多处理和消息传递的高速互连标准。目标是良好的扩展性,提供系统范围的内存一致性和简单的接口;即一种用没有固有可扩展性和性能限制的总线替换多处理器系统中现有总线的标准
SCI 可用于构建具有不同类型交换拓扑结构的系统,从集中式交换到完全分布式交换:
- 在中心交换机中,每个节点都通过一个小环(本例中为双节点环)与交换机相连。
- 在分布式交换系统中,每个节点都可以连接到任意长度的环上,所有或部分节点都可以连接到两个或多个环上。
二维环是环在两个维度上的组合。要在两个维度之间进行切换,需要节点具有较小的切换能力。这可以扩展到三维或更多维。折叠环的概念也可应用于环形拓扑结构,以避免任何长连接段。
SCI Cache coherence
缓存一致性可确保多处理器系统中的数据一致性。早期系统中应用的最简单方法是在上下文切换之间清除缓存内容,并对两个或多个处理器共享的数据禁用缓存。当缓存和内存之间的性能差异小于一个数量级时,这些方法是可行的。现代处理器的缓存速度比主存储器快两个数量级以上,如果没有更先进的数据一致性方法,处理器的性能将无法达到最佳状态。基于总线的系统使用窃听(窥探)方法,因为总线本身就是广播的。具有点对点链接的现代系统使用带有窥探过滤选项的广播方法来提高性能。由于广播和窃听本身是不可扩展的,因此 SCI 不使用这两种方法。
取而代之的是,SCI 采用基于目录的分布式高速缓存一致性协议,节点链接列表包含共享特定高速缓存行的处理器。每个节点都有一个该节点主内存的目录,每行内存都有一个标签(与高速缓存行长度相同)。内存标签包含一个指向链表头部的指针和一行的状态代码(三种状态--原点、新鲜、消失)。与每个节点相关联的还有一个用于保存远程数据的高速缓存,其目录包含指向共享高速缓存行的链表节点的前向和后向指针。缓存的标签有七种状态(无效、仅新鲜、头部新鲜、仅脏、头部脏、中部有效、尾部有效)。
分布式目录具有可扩展性。基于目录的缓存一致性的开销占节点内存和缓存的固定百分比。内存的这一比例约为 4%,高速缓存的这一比例约为 7%