Forerunner:首个面向“多未来”的推测执行技术

624bd3dd028ea53649842e8c793d8921.png

来源:微软研究院AI头条

编者按:10月26-29日,系统领域的全球顶会 SOSP 2021 在线上举办。在本届大会上,微软亚洲研究院研究员陈洋、郭众鑫、李润怀(实习生,浙江大学)、陈硕、周礼栋、张宪以及浙江大学周亚金教授共同提出了一种新颖的基于约束的推测执行技术——Forerunner,这是第一个面向“多未来”的推测执行技术。本篇论文获得了 Artifact Evaluation 全部三个最高级别徽章(即代码可评估、代码可获取和实验结果可复制)。今天将为大家从这项研究的底层思路和逻辑进行梳理总结。想要了解更多技术细节和更深入的实验数据,欢迎参阅论文原文。

在近日举行的系统领域全球顶会 SOSP 2021 上,微软亚洲研究院的研究员们在论文“Forerunner: Constraint-Based Speculative Execution for Ethereum”中,提出了一种全新的、基于约束(constraints)的推测执行(speculative execution)技术——Forerunner。这是首个面向“多未来”的推测执行技术,其技术特点是把利用预执行(pre-execution)来加速实际执行(actual execution)的手段进行了巧妙且基于通用约束的泛化。

297433d58db2f45dde3cc58c741c5dfe.png

论文链接:https://www.microsoft.com/en-us/research/publication/forerunner-constraint-based-speculative-transaction-execution-for-ethereum/

微软亚洲研究院的研究员们将 Forerunner 方法应用在了支持智能合约(smart contract)的以太坊(Ethereum)区块链中,以尝试对位于其系统核心的交易(transaction)执行环节进行加速。为了在最真实的场景下对技术效果进行评估,其中所有实验都是基于以太坊公链上实时产生的真实交易和区块(block)进行的。评估结果表明:经过泛化的推测执行技术能在真实系统中取得了可观的性能收益。这种对交易执行的加速能力可以用来提高以太坊核心层交易吞吐量。其主要的性能结果已经在 SOSP 的 Artifact Evaluation 中得到了独立的复现。

下面让我们来一起了解一下推测执行技术以及 Forerunner 的原理。

0caad2ce9c52603a1e64d4fdceb6c13c.png

基础:“推测执行” 

推测执行技术已经成功的应用于许多系统之中,每当有一段需要稍后才会执行的代码出现时,都可以使用这种技术。由于决定其执行结果的代码输入只有在执行发生时才会完全知道,所以通过对输入进行预测,可以在备用或空闲资源上预先执行代码。如果后来发现预测正确,则可以跳过实际执行,返回预执行结果,从而实现对实际执行的加速。但是,当预测结果错误时,预执行将不会起作用,并且会因为核对预测结果而引入额外的开销。推测执行过去多被应用于“单未来”环境中,在这种情况下,简单地押注最可能出现的那种未来,就是一种有效的策略。 

111b4f96d62f1bd96327ad01f766f5f0.png

c41065f8418e0e956649505d6745444e.png

04c586817aef32791898d57efd85afc3.png

图1:推测执行示意图

f4dce0b8f54408a8c0c1c7413ccf7730.png

问题:“多未来”推测执行

“多未来”的推测执行问题源于以太坊区块链交易处理中的机遇和挑战。作为可编程的区块链,以太坊交易能够触发任意智能合约代码的执行。因此,其执行环节是系统中的一个瓶颈。抽象的来说,以太坊是以“传播-共识-执行”模型来运作的。在这个模型中,交易首先通过 P2P 网络进行“传播”,然后通过去中心化的“共识”算法被接受到一个个区块中,然后由所有以太坊节点按区块链中的顺序“执行”。虽然“传播到执行”窗口为推测执行创造了自然的机会,但由于去中心化的“传播”和“共识”过程,使交易的进块时机和顺序存在很多不同的可能性,从而导致了“多未来”现象的产生。而且,通常没有任何一种可能的“未来”占有压倒性的概率优势。这就意味着,如果对每笔交易只做一种预测,无论每次押注在哪种可能的“未来”上,预测的总体准确度都不会很高。这种“多未来”的情况,是传统“单未来”推测执行技术无法有效应对的挑战。 

1682e69533c57bce1b518f35ee4b3010.png

图2:以太坊交易执行的“多未来”特性示意图

e1cd9791bdc20ca7c0afc440d6bf4626.png

思路:“跨未来”加速

直观上来说,为了应对“多未来”挑战必须找到一种方法,使其能够利用一个或很少的预执行来覆盖大部分的可能性空间。这在本质上需要实现“跨未来”的加速。换言之,就是要利用在预测的某个”未来“中实施的预执行结果,来加速在其他可能发生的”未来“中的执行。从这种意义上来看,传统的推测执行技术实施的是”同未来“加速。虽然通过“跨未来”方式得到的加速并不一定能与“同未来”方式获得的加速结果相匹敌。但可以通过进行合理地预测,让预执行所基于的“ 未来”与实际会发生的“未来” 更加相似,进而获得更高的加速度。 

一旦我们有机会基于预测出的多种“未来”而进行多次预执行,那么就可以引入另一种“跨未来”的加速方式。从某种意义上说,这是对刚刚描述的”一对多“想法的对偶。它是指尽可能利用已有的多个预执行来更好地加速实际发生的真实”未来“。这种”多对一“想法大致上是将各个预执行拆分开来,并将拆分后的部件重新组装在一起,以尽可能接近真实的未来。目标是使用更高的相似性来实现更高的加速比。理想情况下,它应该允许基于几个实际发生的预执行,组合拼接出大量的预执行,以增加完全命中实际的”未来“,或是非常接近它的可能性。 

e0bdeba133993ef5cb7ba6f5b155745a.png

eed2d58c18fd98565f5708b575aba1da.png

图3:“一对多”加速及“多对一(多)”加速示意图

64dbfcf87a7d57feb3f8493b83e74c12.png

“未来“间的连结:控制/数据-等价性

为了实现“跨未来“加速,研究员们需要找出可能发生的诸多“未来”的内在相似性,使得在一个“未来”中完成的计算可用于加速在另一个“未来”的执行。这其中的关键是把在每个可能在“未来”中的执行视为指令跟踪(instruction trace)序列,并利用其结构上的等价性来实现“跨未来”加速。 

微软亚洲研究院的研究员们提出的这种指令序列在结构上的等价性被称为 CD-Equivalence,其中 C 和 D 分别是控制流(control flow)和数据流(data flow)的首字母。当且仅当它们的指令序列具有相同的控制流和数据流时,两个指令跟踪序列是控制/数据-等价的(CD-Equivalent)。这意味着,两者执行的所有指令以及它们的顺序是完全相同的,并且对应指令间的数据依赖也是完全一致的。CD-Equivalence 能将所有可能发生的“未来”划分到各个等价类中。在每个类的任一“未来”中的执行都会产生等价(CD-Equivalent)的指令跟踪序列。这就说明如果能以某种方式,将任一指令跟踪序列转化为一个可执行程序,它就可以在同属一个等价类的所有“未来”中产生与原始交易的代码相同的执行结果。这种基于跟踪序列的程序有一个非常重要的特性:它本质上是针对给定等价类完全展开(unroll)和内联 (inline)后的一条直线型指令序列,而且指令间的数据依赖关系也是单一且完全确定的。这使得它具有高度的可优化性。因此,可以通过基于某个预测出的“未来”,进行一次预执行并跟踪记录其指令序列,再通过激进的优化将其特化为一条更短、更有效的快速路径(fast path)程序。这条快速路径能够加速同属一个等价类的所有”未来”。为了刻画一个快速路径的适用范围,研究员们会生成一组针对给定等价类的约束条件(constraints),来判定一个给定的“未来”是否属于这个等价类。 

选择 CD-Equivalence 的另一个非常重要的原因是基于对以太坊上真实交易(transactions)的关键观察:这些交易在多种不同“未来”中的执行之间,往往具有基于 CD-Equivalence 的等价性。研究员在论文中用一个具体的例子对此进行了进一步阐释。换言之,CD-Equivalence 能够把以太坊真实场景的“未来”空间划分为较少的几个等价类,使得少数几个预执行就能覆盖住全部或是大部分的可能性空间。 

1a1c8dd55dc87b561c5c2607e0cc9af9.png

图4:CD-Equivalence 示意图

6a38c2f7cfc51ebba7e7e0fc1dbcfd93.png

关键技术:多指令序列的程序特化和记忆化

Forerunner 的关键技术是将两种新颖的方法进行有机结合。它们是一种新的多指令序列的程序特化和一种新的记忆化。Forerunner 首先会对预执行进行跟踪(tracing),进而得到指令序列,然后利用程序特化技术(Specialization)生成由约束检查代码和快速路径代码组合而成的“加速程序”,最后再利用记忆化技术(Memoization)在“加速程序”的各个代码段上添加“近道“(shortcut)” 。“近道“会根据预执行中记住的信息生成。而“加速程序“在其执行过程中,则可以利用”近道“跳过部分代码段,从而进一步提高加速效果。

Forerunner的关键技术有以下几个亮点:

(1)特化生成的”加速程序“其代码长度比原始跟踪序列短得多,平均而言,仅为其十分之一;

(2)特化过程中的一个关键创新是将特化后的代码转换到一种简化后的中间语言上。这种新的中间语言能在一个极大简化后的虚拟机上执行,其效率远超支持原始代码的复杂虚拟机。这使得本来就更短的”加速程序“代码还能被更高效的执行

(3)”加速程序“ 的执行是无需回滚的。在确信给定的”未来“可以通过其快速路径加速之前,”加速程序“ 不会进行任何外部可见的更改。这意味着,在发现无法加速的情况,可以立即用原始代码执行,而无需任何回滚的操作;

(4)研究员们提出的创新的方法能够对多个快速路径所对应的多组约束检查进行合并式检查。这确保了约束检查的成本不会随着所需要涵盖的等价类的数量而增加

(5)抄”近道“机制非常灵活和强大。它可以利用在预执行中记住的信息跳过“加速程序”的不同部分。它是实现前面提到的“多对一”加速的关键。在评估中,研究员们观察到抄“近道“机制可以跳过 80% 以上的”加速程序“代码。在做出完美预测的最佳情况下,抄“近道“机制可以跳过几乎所有计算指令,这非常接近传统方法的行为和执行的效率,使得论文中提出的方法可被视为对传统推测执行技术的一种泛化。

(6)论文中提出的特化和记忆化过程本身也非常高效,可以确保在实际执行发生之前,就及时生成好相应的“加速程序”。 

3c60b859838881de245d88de7f617536.png

图5:Forerunner 关键技术示意图

fb824ef11ed7e4fc6ab4c5141eb94713.png

基于以太坊的实现和评测

为了验证本文的方法,研究员们将 Forerunner 具体实现为以太坊节点的交易执行加速器,并测量实现的加速比。这个加速器能在真实的以太坊节点中稳定运行,并且可以正确处理所有真实世界中的以太坊交易和智能合约代码。本次实验评估工作的亮点在于:它是在真实运行的以太坊公网节点中,在实时发生的区块链交易上进行效果测量的。这种评估方式将技术暴露于真实的代码和数据、真实中的“未来”不确定性,以及真实情况中能用于预执行和其他预处理的时间约束下,这对于评估一项推测执行技术的真实有效性至关重要。在这样的评测中,如果本文的技术不能在实时系统中正确且快速地完成从预测到特化和记忆化等所有工作,那它们就不会得到任何的加速效果。

研究员们的主要评估持续了10天,包括其间真实发生在以太坊公网中的所有1300万笔交易。评估结果表明,Forerunner 技术在所有这些交易实现的平均加速为6.1。值得一提的是,在以太坊实测中,因为各种原因,有大约5%的交易没有被用于性能评测的节点提前听到,因此研究员们完全没有机会对它们进行任何预执行以及后继的加速。如果将这些未提前听到的交易排除在计算之外,Forerunner 实现的有效平均加速比应为8.4。相比之下,传统方法只能实现2.1的有效平均加速比。这是因为传统的“单未来”方法无法应对以太坊中大量的“多未来”交易,它只能加速占比大约50%的“单未来”交易。而 Forerunner 则可以加速几乎所有的“多未来”的交易,使得能被加速的交易占比提升到98.41%。这在本质上打破了“多未来”场景中加速比提升的“天花板”,为进一步的性能优化打开了空间。 

83b89ac1b547c9c662e17fecc4b3a26f.png

03b1b4626f45dc94180590b6e6249560.png

总结与展望

Forerunner 提出了一种解决了“多未来”难题的有效方法,研究员们希望它能够让推测执行成为高通量区块链系统设计中的一个必备组成部分。其未来的工作将主要分为三个方面:

(1)进一步优化 Forerunner,使其能以更低的开销获得更高的加速比;

(2)推动 Forerunner 在具有影响力的公链、联盟链系统中落地,并发现和解决这个过程中进一步暴露出来的技术问题;

(3)将 Forerunner 的核心思想和带来的启发,推广到推测执行以外的更多的技术场景中,进而可以应用到区块链以外的更多系统中。 

未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)大脑研究计划,构建互联网(城市)大脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。每日推荐范围未来科技发展趋势的学习型文章。目前线上平台已收藏上千篇精华前沿科技文章和报告。

  如果您对实验室的研究感兴趣,欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”

df90afd986d28b76639ca7e228f09bb0.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/483453.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux的基础知识——信号的概念

1.计算机信号的特点 \qquad简单;不能携带大量信息;满足某个特设条件才发送 2.信号的机制 \qquadA与B两个进程,A向B发送一个信号,此时B进程正在执行自己的程序,在收到信号时,会暂停程序的执行,先…

Gartner发布对2022年及以后IT组织和用户的十大预测

来源:Gartner中国编辑:蒲蒲Gartner于近日发布对2022年及以后的十大战略预测。Gartner的十大预测从三个方面探讨了企业和IT领导人在持续中断和不确定性中获得的经验教训。这三个方面分别是:朝以人为本的方向推进、努力提高韧性以及超越期望的能…

王道计算机网络 传输层整理 超详细版

传输层是主机才有的层次。 传输层的功能 1、传输层提供进程和进程之间的逻辑通信。(网络层提供主机之间的通信) 逻辑通信:传输层之间的通信好像是沿着水平方向传送数据,但事实上这两个传输层之间并没有一条水平方向的物理连接。…

这个最基本的生命细节才被揭开——25毫秒核孔穿梭

来源:生物通细胞中的所有蛋白质都是由复杂的分子机器组装而成的。这些核糖体的前体在细胞核中产生,然后通过所谓的核孔进入细胞。波恩大学和苏黎世联邦理工大学的研究人员首次在活细胞中拍摄了这个基本过程。他们的实验提高了对核糖体是如何产生的理解。…

计算机网络——基本介绍

1.计算机网络的概念 \qquad计算机网络是一个将分散的,具有独立功能的计算机系统,通过通信设备与线路连接起来,由功能完善的软件实现资源共享和信息传递的系统。 \qquad这里的计算机系统,也可以成为端系统,其包括但不限…

王道计算机网络 应用层整理 超详细版

应用层概述 应用层对应用程序的通信提供服务。 应用层协议定义: 应用进程交换的报文类型(请求/响应) 各种报文类型的语法,如报文中的各个字段及其详细描述。 字段的语义,即包含在字段中的信息的含义。 进程何时、…

Facebook正式改名Meta,一个元宇宙新纪元由此开始

All in Metaverse,扎克伯格豪赌一个未来。来源:硅星人文:Juny 编辑:Lianzi美西时间早上7点,硅谷的天刚蒙蒙亮。Facebook硅谷总部前公司标志牌被蒙上了一层幕布。工作人员在标志牌前拉起了屏障,静静等待着…

计算机网络——标准化工作及相关组织

1.标准的分类 \qquad法定标准:由权威机构制定的,正式的,合法的标准,比如OSI标准;事实标准:某些强势产品在经过时间之后,这些产品的协议和技术就成为了标准,比如TCP/IP协议。 2.标准…

AI学会灌水和造假!Google新研究揭露了AI现实应用的陷阱

来源:Google AI、新智元作者:Alex DAmour、atherine Heller今天,机器学习(ML)模型得到了大规模的使用,而且影响力也越来越大。然而,当它们被用于现实世界的领域时,往往表现出意想不到…

Vue封装下拉框组件时,为document绑定原生事件addEventlistener(click“),切换页面之后事件还未被摧毁...

1 <script>2 export default {3 props: ["lists"],4 data() {5 return {6 isactive: false,7 actveName: "",8 selContent: "请选择"9 }; 10 }, 11 mounted() { 12 console.log("我被创建了&q…

查找算法详解

1、查找的基本概念 查找也即检索。 文件&#xff1a;由记录组成的集合&#xff0c;即含有大量数据的元素线性组合而成。 记录&#xff1a;由若干数据项组成的数据元素&#xff0c;这些数据项也常称作记录中的数据域&#xff0c;用以表示某个状态的物理意义。 关键字&#xff1…

高文院士:中国在AI领域有哪些长板和短板

10月25日&#xff0c;在第四届世界声博会暨2021科大讯飞全球1024开发者节上&#xff0c;中国工程院院士高文通过线上方式发表演讲来源&#xff1a;笑看国际风云、央广网、集微网、中国科学报10月25日&#xff0c;第四届世界声博会暨2021科大讯飞全球1024开发者节在安徽合肥开幕…

SpringBoot学习笔记(16)----SpringBoot整合Swagger2

Swagger 是一个规范和完整的框架&#xff0c;用于生成&#xff0c;描述&#xff0c;调用和可视化RESTful风格的web服务 http://swagger.io Springfox的前身是swagger-springmvc,是一个开源的API doc框架&#xff0c;可以将我们的Controller接口的方法以文档的形式展现&#xff…

Jeff Dean亲自揭秘谷歌下一代AI架构:通用、稀疏且高效,网友不买帐:毫无新意...

来源&#xff1a;机器之心在这波 AI 浪潮中&#xff0c;人工智能技术经过十几年的爆发式发展&#xff0c;已经在各个领域有着极为广泛的应用&#xff0c;如医疗、科学研究、汽车等。但是随着技术发展的缓慢&#xff0c;以深度学习为代表的人工智能技术瓶颈开始凸显。今年 8 月份…

排序算法笔记(Java)

package datastructure;import java.util.Arrays; import java.util.Scanner;public class Sort {static int len; //声明全局变量&#xff0c;用于记录arr的长度public static void main(String[] args) {Scanner sc new Scanner(System.in);String str sc.nextLine();Strin…

计算机网络——时延、时延带宽积、RTT和利用率

1.什么是时延 \qquad数据&#xff08;报文/分组/比特流&#xff09;从网络的一端传送到网络另外一端所需的时间。也叫延迟或者迟延&#xff0c;单位是s 2.时延的种类 2.1 发送时延&#xff08;传输时延&#xff09; \qquad从发送分组的第一个比特算起&#xff0c;到该分组的最…

强人工智能与泛心论

来源&#xff1a;哲社院后台原载于《科学经济社会》2021年第39卷第3期第52~59页作者简介&#xff1a;陈敬坤&#xff0c;1981年1月生。哲学博士&#xff0c;山西大学哲学社会学学院副教授&#xff0c;曾赴比利时布鲁塞尔自由大学、美国匹兹堡大学等作学术访问。研究领域主要为心…

第一章 Linux是什么

Linux是核心与系统调用接口两层中间的操作系统不同硬件的功能函数并不相同&#xff0c;IBM的Power CPU与Inter的x86架构不同&#xff0c;所以同一套操作系统是不能在不同的硬件平台上面运行的。也就是说&#xff0c;每种操作系统都是在他专门的硬件机器上面运行的。不过&#x…

计算机网络——分层结构,协议,接口和服务

1.为什么要分层&#xff1f; \qquad当有两台主机&#xff0c;A向B通过网络发送文件&#xff0c;在发送文件前需要完成这么几件事情&#xff1a;1&#xff09;A必须将数据通信的通路进行激活&#xff1b;2&#xff09;要告诉网络如何识别目的主机B&#xff1b;3&#xff09;A要查…

官宣!全球首富马斯克:创办这所“新大学”!

埃隆马斯克&#xff08;Elon Musk&#xff09;是特斯拉和SpaceX的创始人兼首席执行官。来源&#xff1a;青塔编辑&#xff1a;nhyilin美国《福布斯》杂志10月26日称&#xff0c;得益于特斯拉股价大涨&#xff0c;特斯拉CEO埃隆马斯克的财富跃升至近3000亿美元&#xff0c;不仅是…