李 男,庞建民,单 征
(解放军信息工程大学,河南 郑州 450002)
以龙芯[1]、申威[2]、飞腾等为代表的国产处理器的问世不仅显示出我国在自主核心芯片研发上的实力,也大大增强了国家的信息安全防护能力;同时,以神威、天河、曙光等为代表的国产超级计算机的计算能力在世界上也处于领先水平,2016年以来,在全球超级计算机500强榜单上,神威·太湖之光与天河二号三次携手夺得前两名。与国产硬件水平不断提升相比,其上支持的软件栈的数量和规模仍有待提高,面向国产平台借助二进制翻译手段进行软件移植的意义重大。
二进制翻译技术[3,4]是作为程序等价变换工具产生并发展起来的,被定义为一种机器上的指令序列到另一种机器上指令序列的等价转换过程。按照翻译方式可以分为三种[5]:解释执行,静态翻译和动态翻译[6]。动态二进制翻译采用了“查找→翻译→执行”的工作模型,如图 1所示,先在翻译缓存T-Cache(Translated Code Cache)中进行查找,如果命中,则进入执行阶段,否则进入翻译阶段。翻译阶段以基本块为单位进行,将翻译后的代码以翻译块TB(Translated Block)为单位存入到T-Cache中,执行阶段以TB为单位进行,一个TB执行完毕后检查是否存在块链,如果存在则继续执行代码,否则转入到查找阶段。T-Cache作为连接查找、翻译和执行三个过程的纽带,是构成动态二进制翻译的重要内容,也是优化工作的一个关注点。

Figure 1 Model of dynamic binary translator图1 动态二进制翻译器的工作模型
为了缓存翻译代码并提高其复用性,动态二进制翻译建立了一套T-Cache管理机制,将动态翻译产生的本地码以TB的形式存入缓存区T-Cache中,当程序运行过程中需要重复调用某TB时,翻译平台会在T-Cache中进行查找。……