微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 MBZUAI团队突破性技术:让x86程序瞬间"变身"ARM,性能还比苹果原生方案更快

MBZUAI团队突破性技术:让x86程序瞬间"变身"ARM,性能还比苹果原生方案更快

2025-06-24 10:14
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2025-06-24 10:14 科技行者

这项由阿联酋穆罕默德·本·扎耶德人工智能大学(MBZUAI)的Ahmed Heakl、Sarim Hashmi、Abdulrahman Mahmoud等研究团队与康奈尔大学合作完成的研究,发表于2025年6月的arXiv预印本平台(论文编号:arXiv:2506.14606v1),感兴趣的读者可以通过https://ahmedheakl.github.io/Guaranteed-Guess/网站了解更多详情。

当你换了一部新手机,发现旧手机里的很多应用都无法直接运行时,你会感到多么沮丧?这正是目前计算机世界面临的一个巨大挑战。随着ARM处理器在数据中心和个人电脑中越来越受欢迎,大量为x86架构编写的老程序就像"水土不服"一样无法直接运行。研究团队开发了一个名为"Guaranteed Guess"(简称GG)的神奇工具,它就像一位精通多国语言的翻译专家,能够把x86程序的"语言"准确翻译成ARM程序能理解的"语言",而且翻译后的程序运行起来比苹果公司的Rosetta 2解决方案还要快73%。

这个问题的复杂性远超我们的想象。想象一下,x86处理器就像一位博学的教授,一句话能表达很多复杂的意思,而ARM处理器则像一位直率的工匠,喜欢把复杂的事情分解成简单明了的步骤。当你要把教授的演讲稿转换成工匠能理解的操作手册时,不仅需要理解每句话的深层含义,还要保证转换后的内容在实际操作中完全正确。

一、硬件世界的大变革:为什么这项研究如此重要

近年来,计算机硬件世界正在经历一场前所未有的变革。传统的摩尔定律——即芯片性能每两年翻倍的规律——正在逐渐失效,这就像一辆高速行驶的汽车开始减速一样。与此同时,机器学习和人工智能应用的爆发式增长对计算能力的需求却在急剧攀升,这就形成了一个矛盾:需求在增长,但传统的性能提升方式却在放缓。

在这种背景下,ARM架构处理器凭借其出色的能效比开始崭露头角。ARM处理器就像省油的混合动力汽车,虽然单次加速可能不如大排量跑车,但在长途旅行中却能以更低的能耗达到相似的效果。数据显示,到2024年,x86架构仍然占据超过80%的数据中心市场份额,但ARM预测其市场份额将在2025年底达到50%。这种转变的速度让人惊讶,就像电动汽车在短短几年内从稀罕物变成了街头常见的交通工具。

然而,硬件架构的转换带来了一个棘手的软件兼容性问题。许多企业和机构拥有大量为x86架构开发的遗留程序,这些程序往往缺乏源代码,无法重新编译适配ARM架构。这就像你有一大堆老式磁带,但现在的设备都只支持数字音频格式,你需要一种方法把这些珍贵的内容转换到新的格式上。

目前的解决方案主要有两种:一种是像苹果Rosetta 2这样的虚拟化技术,它在程序运行时实时进行转换,就像配备了同声传译员;另一种是模拟器技术,如QEMU,它创建一个虚拟的x86环境让老程序以为自己还在原来的硬件上运行。这两种方案都能工作,但都有明显的缺陷:虚拟化和模拟都会带来性能损耗和内存开销,就像通过翻译进行对话总是比直接对话慢一些。

二、GG技术的核心原理:让AI成为最好的程序翻译师

研究团队开发的GG系统采用了一种全新的思路:让大型语言模型充当程序翻译师。这听起来可能很神奇,但实际上非常合理。现代大型语言模型已经证明了它们在理解和生成各种形式文本方面的强大能力,而计算机程序本质上也是一种特殊的"语言"。

整个GG系统的工作流程就像一个专业的翻译工作室。首先,研究团队需要为这位AI翻译师准备丰富的训练材料。他们从AnghaBench和The Stack这两个大型代码库中收集了130万个C/C++程序样本,这些程序就像是翻译师的教材。然后,他们使用编译器将每个程序分别编译成x86和ARM两种版本,创建了大量的"双语对照"样本。

这个准备过程非常精细。研究团队不仅使用了无优化的编译选项(-O0),还使用了激进优化的编译选项(-O2)。无优化版本就像是直译,保持了源程序的原始结构,比较容易理解;而优化版本则像是意译,编译器会重新组织代码结构以提高性能,理解起来更具挑战性。这种双重训练确保AI翻译师能够处理各种复杂情况。

为了让AI更好地理解汇编语言,研究团队还对语言模型的词汇表进行了特殊扩展。汇编语言中有很多专门的指令和寄存器名称,如果使用通用的词汇表,一个简单的指令可能被拆分成很多小片段,就像把"refrigerator"拆分成"re-fri-ge-ra-tor"一样不利于理解。通过添加汇编专用词汇,模型能够更准确地理解指令的含义。

三、测试保证:确保翻译的准确性

GG系统最独特的地方在于它不仅仅依赖AI的"猜测",还建立了严格的测试验证机制。这就像翻译完一篇文档后,还要请母语使用者检查翻译的准确性一样。

系统的验证过程分为两个层面。第一个层面是代码覆盖率测试,就像检查翻译是否遗漏了原文的任何部分。研究团队使用GNU的gcov工具来测量测试用例是否覆盖了程序的所有代码行。在HumanEval基准测试中,他们达到了98.81%的覆盖率,在BringupBench测试中达到了97.32%的覆盖率。这意味着几乎每一行翻译后的代码都经过了实际执行验证。

第二个层面是功能正确性测试,这是最严格的验证标准。翻译后的程序必须通过完整的单元测试套件,就像翻译后的食谱必须能够做出同样美味的菜肴一样。只有当所有测试用例都通过时,这个翻译才被认为是成功的。部分正确不算正确,这种严格的标准确保了翻译质量的可靠性。

研究团队在两个不同难度的测试集上验证了GG的性能。HumanEval-C包含164个相对简单的编程问题,每个程序平均约1200个令牌。BringupBench则是一个更具挑战性的测试集,包含65个大型裸机程序,代码行数从85行到5751行不等,平均每个程序需要10500个令牌。这两个测试集就像是翻译考试的基础题和高难度题,全面检验了AI翻译师的能力。

四、令人印象深刻的实验结果

GG系统的表现超出了研究团队的预期。在基础的x86到ARMv8翻译任务中,使用无优化编译的程序(-O0)时,GG达到了99.39%的准确率。这意味着在164个测试程序中,只有1个程序的翻译存在问题。即使是在更具挑战性的ARMv5和RISC-V64架构上,准确率也分别达到了93.71%和89.63%。

更有趣的是,研究团队发现了不同架构之间的"相似度"与翻译准确率之间的关系。通过计算x86与其他架构在指令层面的相似性,他们发现ARMv8与x86的相似度最高(40.19%),其次是ARMv5(25.09%),最后是RISC-V64(21.41%)。这种相似度的排序完全对应了翻译准确率的排序,这就像学习一门新语言时,与母语越相似的语言越容易掌握。

当面对编译器优化后的程序时,翻译的难度显著增加。在-O2优化级别下,ARMv8的翻译准确率下降到45.12%,ARMv5下降到50.30%。这种下降是可以理解的,因为编译器优化会重新排列指令顺序、合并操作、优化寄存器使用等,就像把一篇文章的句子重新组织以提高表达效率,但这也使得翻译变得更加困难。

在更复杂的BringupBench测试中,GG在无优化程序上达到了49.23%的准确率。虽然这个数字看起来不如HumanEval的结果那么亮眼,但考虑到BringupBench程序的复杂性——它们包含内部库、交叉链接组件和复杂的控制流,这个结果已经相当不错了。

五、与苹果Rosetta 2的直接对比:性能优势显著

为了证明GG的实用价值,研究团队在苹果M2 Pro芯片上进行了一项引人注目的对比实验。他们将同样的程序分别用三种方式运行:原生ARM64编译版本、通过Rosetta 2运行的x86版本,以及使用GG翻译的版本。

结果令人印象深刻。GG翻译的程序在执行时间上比Rosetta 2快了73%,从13.94毫秒降低到8.03毫秒,几乎接近原生ARM程序的7.39毫秒。在能耗方面,GG的表现更加出色,CPU能耗比Rosetta 2低了47%,从7.50焦耳降低到5.09焦耳,与原生程序的5.07焦耳几乎相同。

内存使用方面的对比最为惊人。GG翻译的程序只使用了1.03MB内存,与原生程序完全相同,而Rosetta 2需要2.49MB内存,相差141%。这种巨大的差异说明了静态翻译相对于动态翻译的根本优势:GG执行的是一次性翻译,翻译完成后程序就是原生的ARM代码,不需要额外的运行时开销;而Rosetta 2需要在程序运行时持续进行翻译工作,这就像边开车边看地图,总是需要额外的精力和资源。

六、深入分析:为什么有些翻译会失败

研究团队对翻译失败的案例进行了详细分析,这些分析就像医生诊断病情一样有助于改进系统。他们发现翻译失败主要源于几个方面。

最常见的问题是上下文窗口限制。就像翻译一本厚书时,如果每次只能看到其中的几页,就可能丢失重要的上下文信息。在BringupBench的测试中,17%的失败案例都是因为程序太长,超出了模型能够处理的上下文长度。这个问题在技术上是可以解决的,通过增加模型的上下文窗口或者开发更智能的代码分割技术。

另一类常见错误是数据流推理错误。AI在翻译时可能会产生重复的函数定义、错误的寄存器标签、或者不正确的立即数值。这就像翻译时可能会重复某个句子、用错代词、或者搞错数字一样。虽然从语法上看起来正确,但在实际执行时就会出现问题。

特别有趣的是,研究团队发现许多看似"错误"的翻译实际上在功能上是正确的。例如,使用不同的寄存器名称、调整栈帧偏移量、重新排序可交换操作数等,这些都不会影响程序的最终功能。这就像同一个意思可以用不同的方式表达,只要传达的信息正确,表达方式的差异并不重要。

七、技术创新点:多个维度的突破

GG系统的成功来自于多个技术创新的综合应用。首先是专门的词汇表扩展。通过添加汇编语言专用的操作码和寄存器名称,模型的词汇密度(每个词汇包含的信息量)显著提高。具体来说,Qwen模型的词汇密度提高了2.65%,DeepSeek模型提高了6.9%。这种改进看似微小,但在处理长程序时效果会被放大。

其次是上下文窗口的动态扩展技术。GG使用了RoPE(Rotary Position Embedding)外推技术,将训练时的16k令牌上下文窗口扩展到推理时的32.7k令牌。这就像给翻译师配备了更大的显示器,能够同时看到更多的内容,从而做出更准确的翻译决策。

第三个创新是多样化的训练数据策略。研究团队不仅使用了不同优化级别的程序,还混合了来自不同源头的代码。AnghaBench提供了大量的算法实现,而The Stack则提供了更多样化的编程风格。这种多样性确保了模型能够处理各种不同类型的程序。

最后是beam search解码策略的应用。与只考虑最可能的翻译不同,beam search允许模型同时探索多个可能的翻译路径,最终选择最优的结果。在实验中,使用8个beam的搜索策略将准确率从98.18%提升到99.39%,这1.21%的提升在实际应用中意义重大。

八、量化优化:让技术更实用

为了使GG技术能够在资源受限的环境中部署,研究团队还探索了模型量化的可能性。量化就像把高清电影压缩成标清版本,虽然质量有所下降,但文件大小大幅减小,更容易传输和存储。

实验结果显示,即使将模型从32位浮点数压缩到4位整数,翻译准确率也只下降了不到4%。这意味着GG可以在手机、嵌入式设备等资源受限的环境中运行,而不需要依赖云端服务器。这种灵活性对于实际部署非常重要,特别是在一些对数据安全要求较高或者网络连接不稳定的环境中。

九、错误分析:从失败中学习

研究团队对翻译错误进行了细致的分类分析,这些分析为未来的改进指明了方向。他们发现,虽然语法错误相对较少,但语义错误仍然是主要挑战。

一类典型的错误是立即数值错误。例如,正确的指令应该是"asr r2, r2, #2"(算术右移2位),但AI翻译成了"asr r2, r2, #1"(算术右移1位)。这种错误看起来微小,但会导致完全不同的计算结果,就像菜谱中把"2勺盐"写成"1勺盐",做出来的菜味道会完全不同。

另一类错误是寄存器管理错误。AI可能会在需要保存某个寄存器值的时候覆盖了它,或者在错误的地方使用了某个寄存器。这就像在烹饪过程中用错了容器,可能导致原本准备的食材丢失或混乱。

还有一类错误是指令序列错误。编译器优化后的代码往往有复杂的指令依赖关系,AI可能会误解这些关系,导致指令顺序错误。这就像按照错误的顺序执行菜谱步骤,即使每个步骤本身都是正确的,最终结果也可能出问题。

十、未来展望:技术的潜在影响

GG技术的成功标志着在解决跨架构程序兼容性问题上的重要进展。随着ARM处理器在数据中心的快速普及,这种技术的商业价值将越来越明显。企业不再需要担心迁移到新架构会导致大量遗留程序无法使用,这将大大加速硬件架构的更新换代。

从技术发展的角度看,GG代表了AI在系统软件领域应用的一个成功案例。这证明了大型语言模型不仅能够处理自然语言,也能够理解和生成结构化的程序代码。这为AI在编译器、调试器、代码优化等传统系统软件领域的应用开辟了新的可能性。

当然,目前的技术还有改进空间。研究团队指出,对于编译器激进优化后的程序,翻译准确率仍有待提高。未来的工作可能会结合符号执行、程序分析等传统编译器技术,形成AI与传统方法相结合的混合方案。

此外,测试保证机制虽然提供了功能正确性验证,但仍然依赖于测试用例的质量和覆盖率。在实际应用中,可能需要结合形式化验证等技术,提供更强的正确性保证。

说到底,GG技术展示了AI在解决传统计算机科学难题方面的巨大潜力。它不仅解决了一个重要的实际问题,也为AI技术的应用探索了新的方向。随着硬件架构继续演进,这类技术将变得越来越重要。对于普通用户而言,这意味着在享受新硬件带来的性能提升和能效改善的同时,不必担心软件兼容性问题。对于整个计算机行业而言,这代表着向更灵活、更高效的计算生态系统迈进的重要一步。

归根结底,MBZUAI团队的这项研究不仅仅是一个技术突破,更是对未来计算方式的一次有益探索。它告诉我们,在AI技术日趋成熟的今天,许多看似复杂的技术难题都有了新的解决思路。也许在不久的将来,跨架构程序翻译会变得像使用在线翻译工具一样简单和可靠。

Q&A

Q1:什么是CISC和RISC架构?为什么需要在它们之间转换程序? A:CISC(x86)就像一位博学教授,一条指令能完成很多复杂操作;RISC(ARM)像直率工匠,喜欢把复杂事情分解成简单步骤。随着ARM处理器因省电高效在数据中心普及,大量x86老程序需要转换才能在ARM上运行,这就像把教授的演讲稿改写成工匠操作手册。

Q2:GG比苹果Rosetta 2好在哪里?性能差距有多大? A:GG是一次性翻译,翻译完就是原生ARM程序;Rosetta 2是边运行边翻译,持续消耗资源。实测显示GG比Rosetta 2快73%,省电47%,内存占用少141%。就像提前把外语电影配好中文音轨vs现场同声传译的区别。

Q3:GG技术现在可以使用吗?准确率如何? A:研究团队承诺会开源代码和模型。目前在简单程序上准确率达99.39%,复杂程序达49.23%。虽然还不完美,但已经展现了巨大潜力。感兴趣的开发者可以关注https://ahmedheakl.github.io/Guaranteed-Guess/获取最新进展。

分享至
0赞

好文章,需要你的鼓励

推荐文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-