脉动阵列
![]() | 此条目可参照英语维基百科相应条目来扩充。 (2024年7月21日) |
此条目需要补充更多来源。 (2024年7月21日) |
在平行计算机架构中,脉动阵列是紧密耦合的数据处理单元(DPU)的同质网络,称为单元或是节点。每个节点或是 DPU 会用上游接收来的数据,独立计算结果,储存在自身,然后再将结果传递到下游。脉动阵列最早应用于巨人计算机,这是一台早期用在第二次世界大战期间破解德国洛伦兹密码的计算机。 [1] 由于 Colossus 是机密,孔祥重和Charles Leiserson 独立发明或重新发明了脉动阵列:用在带状矩阵上的密集线性代数计算(矩阵乘积、求解线性方程式、 LU 分解等)。早期的应用包括计算“整数的最大公约数”和“多项式求解”。 根据费林分类法,脉动阵列有时候被归类为为多指令单数据 (MISD) 架构。不过这是有争议的,正如本文后面所讨论的,我们可以提出强而有力的论述,将它与其他四种 费林分类 区分开来: SISD 、 SIMD 、 MISD 、 MIMD 。
平行输入的资料流经直接连结的处理器节点,这些节点会将输入资料组合、处理、合并或排序成为结果。由于资料的类波传播很像人体循环系统的脉搏,因此从医学术语当中借用了“脉动”这个词。这个名称来自心脏收缩,犹如心脏般地泵送血液。
应用
[编辑]脉动阵列通常会针对特定的运算来实作硬件线路,例如:乘法与加法,来执行大量的 平行计算、卷积神经网络、 相关_(概率论)、 矩阵乘法 或其它的资料排序。它也常常被用在 动态规划 算法,可用于 DNA 与蛋白质的 序列分析.
架构
[编辑]一个脉动阵列通常包含一个单体系统上的大型基本运算节点图谱 (可能由硬件或是软件实作)。这些节点通常是固定不变且一模一样,不过中间的连接是可编程化的。相较之下,取决于阵列大小和设计参数,更通用的“前端”处理器采用复杂且单独可编程的节点,这些节点可能是整合在一起的,也可能是分开的。另一个区别是脉动阵列依赖同步资料传输,而前端则倾向于异步工作。
相对于一般的冯诺伊曼架构(指令存放在共同内存,寻址模式与执行顺序由 CPU 的程式计数器控制) ,脉动阵列的各别节点是由资料的到来所触发,而且使用一致的方式处理资料。每个节点中的实际资料处理,可以是硬件写死的,也可以由微指令控制。
相对于冯诺伊曼架构是由程式计数器来驱动指令流 (instruction-stream) ,脉动阵列则是由资料计数器来驱动资料流 (data-streams) 。由于脉动阵列通常会传送与接收多个资料流,而我们又需要多个资料计数器来产生资料流,所以脉动阵列是一种资料平行运算模式。