Skip to main content

Pipelining in Solana The Transaction Processing Unit

· 6 min read
Davirain

为了达到亚秒级的确认时间和 Solana 成为世界上第一个网络规模区块链所需的交易能力,仅仅快速达成共识是不够的。该团队必须开发一种方法来快速验证大量交易块,同时在网络上快速复制它们。为了实现这一目标,Solana 网络上的事务验证过程广泛使用了 CPU 设计中常见的一种称为管道的优化。

当存在需要通过一系列步骤处理的输入数据流并且每个步骤都有不同的硬件负责时,流水线是一个合适的过程。解释这一点的典型比喻是洗衣机和烘干机,它按顺序洗涤/烘干/折叠多批衣物。清洗必须在干燥之前进行,干燥之前必须进行折叠,但这三个操作中的每一个都由单独的单元执行。

为了最大限度地提高效率,人们创建了一系列阶段的管道。我们将洗衣机称为第一阶段,烘干机称为第二阶段,折叠过程称为第三阶段。为了运行管道,需要在第一批衣物添加到烘干机后立即将第二批衣物添加到洗衣机中。同样,第三个负载在第二个负载放入烘干机并且第一个负载被折叠之后添加到洗衣机。通过这种方式,人们可以同时处理三批衣物。给定无限负载,管道将始终以管道中最慢阶段的速率完成负载。

“我们需要找到一种方法让所有硬件始终保持忙碌状态。这就是网卡、CPU 核心和所有 GPU 核心。为此,我们借鉴了 CPU 设计的经验”,Solana 创始人兼首席技术官 Greg Fitzgerald 解释道。 “我们在软件中创建了一个四级交易处理器。我们称之为 TPU,我们的交易处理单元。”

在 Solana 网络上,管道机制——交易处理单元——通过内核级别的数据获取、GPU 级别的签名验证、CPU 级别的存储和内核空间的写入来进行。当 TPU 开始向验证器发送块时,它已经在下一组数据包中获取,验证了它们的签名,并开始记入令牌。

验证器节点同时运行两个管道进程,一个用于领导者模式,称为 TPU,另一个用于验证器模式,称为 TVU。在这两种情况下,管道化的硬件是相同的:网络输入、GPU 卡、CPU 内核、磁盘写入和网络输出。它对该硬件的作用是不同的。 TPU 的存在是为了创建分类帐条目,而 TVU 的存在是为了验证它们。

“我们知道签名验证将成为瓶颈,但我们也可以将这种与上下文无关的操作卸载到 GPU,”Fitzgersald 说道。 “即使卸载了这一最昂贵的操作,仍然存在许多额外的瓶颈,例如与网络驱动程序交互以及管理限制并发性的智能合约中的数据依赖性。”

在这个四级管道中的 GPU 并行化之间,在任何给定时刻,Solana TPU 都可以同时处理 50,000 个事务。 “这一切都可以通过一台现成的计算机来实现,价格不到 5000 美元,”Fitzgerland 解释道。 “不是超级计算机。”

通过将 GPU 卸载到 Solana 的事务处理单元上,网络可以影响单个节点的效率。实现这一目标一直是 Solana 自成立以来的目标。

“下一个挑战是以某种方式将块从领导节点发送到所有验证节点,并且以一种不会拥塞网络并导致吞吐量缓慢的方式进行,”Fitzgerald 继续说道。 “为此,我们提出了一种称为 Turbine 的区块传播策略。

“通过 Turbine,我们将验证器节点构建为多个级别,其中每个级别的大小至少是其上一级的两倍。通过这种结构,这些不同的级别,确认时间最终与树的高度成正比,而不是与树中的节点数量成正比,后者要大得多。每当网络规模扩大一倍时,您都会看到确认时间略有增加,但仅此而已。”