流水线

想拥有亚秒级的确认时间以及能让Solana成为世界上第一个Web规模的区块链所需要的交易能力,仅快速达成共识是不够的。 团队必须开发一种方法来快速验证大量交易,同时在网络上快速复制它们。 为了实现这一点,Solana网络上的事务验证过程充分利用了CPU设计中称为流水线的常见优化。


当需要按一系列步骤处理输入数据,并且每个步骤需要使用不同的硬件时,运用流水线处理是非常合适的。 用一台洗衣机和烘干机作为比喻来解释这一现象,使用过程中,依次需要洗涤/烘干/折叠衣物。 而且,衣物必须在干燥之前进行洗涤,在折叠之前进行干燥,但是这三个操作中的每一个步骤都由一个单独的装置执行。


为了最大程度地提高效率,创建了阶段性的流水线。 我们将洗衣机称为一个阶段,将烘干机称为另一个阶段,将折叠过程称为第三阶段。 为了进行流水线操作,在将第一部分的衣物添加到烘干机之后,立刻将第二部分的衣物添加到洗衣机。 同样,在第二部分的衣物放入烘干机中并且将第一部分衣物折叠,同时将第三个部分的衣物添加到洗衣机中。 这样,一个人可以同时处理三份衣物。 假设有无限制的衣物,那么这些衣物会以流水线中最慢阶段的速率持续完成清洗。


“我们需要找到一种使所有硬件一直运作的方法。 这就是网卡,CPU核心和所有GPU核心。 为此,我们从CPU设计中借鉴了一页内容”,Solana创始人兼CTO Greg Fitzgerald解释说。 “我们在软件中创建了一个四阶段交易处理器。 我们将其称为TPU,即我们的交易处理装置。”


在Solana网络上,流水线机制(事务处理装置)在内核层获取数据,在GPU层验证,然后在CPU层存储,在内核空间进行记录。当TPU开始向验证人发送数据块时,它已经被下一组数据包提取,完成验证签名并开始进行通证记录。


当验证人同时运行两个流水线时,其中一个在领导者模式下使用的称为TPU,另一个在验证人模式下使用的称为TVU。 在这两种情况下,流水线化的硬件都是相同的,并且网络输入,GPU卡,CPU内核,写入磁盘以及网络输出都是相同的。 当硬件不同时, TPU来创建分类帐条目,而TVU用来验证它们。


Fitzgersald表示:“我们知道签名验证将成为一个瓶颈,但我们可以将这种上下文无关的操作转移到GPU上。” “即使在完成这项开销最大的操作之后,仍然存在许多其他瓶颈,例如与网络驱动程序进行交互以及在智能合约中管理限制并发性的数据依赖性。”


在四阶段流水线中的GPU并行化之间,Solana TPU可以在任何时候同时进行50,000个事务。Fitzgerland解释说:“这一切都可以通过低于5000美元的现成计算机来实现。” “不需要一些超级计算机。”


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


Fitzgerald继续说道:“下一个挑战是以某种方式将区块从领导者节点传送到所有验证人节点,并以一种不会造成网络拥塞也不会放慢吞吐量的方式来做到这一点。” “为此,我们提出了一种称为Turbine的区块传播策略。


“借助Turbine,我们将验证人节点分为多个级别,其中底下的级别至少是其上面级别数量的两倍。 通过这种结构和不同的级别,确认时间最终与树的高度成比例,而不与树中更多的节点数成正比。 每当网络规模扩大一倍时,确认时间中仅仅会看到一个小小的颠簸。”


除了像流水线这类的技术实现以外,还有一些其他关键的创新使Solana的全网规模区块链功能成为可能。 为了更深入地了解它们,您可以在Solana博客上阅读它们:

使Solana的网络成为可能的8个创新

历史证明 (POH):共识之前的时序;
Tower BFT:PBFT 的 PoH 优化版本;
Turbine:区块传播协议;
Gulf Stream :无内存池事务转发协议;
Sealevel: 平行的智能合约运行时
流水线—用于验证优化的事务处理装置
Cloudbreak :水平缩放的帐户数据库;
Archivers :分布账本存储
流水线