[发明专利]指令翻译装置和方法、指令处理装置和处理器有效
申请号: | 201010597808.4 | 申请日: | 2010-12-21 |
公开(公告)号: | CN102541611A | 公开(公告)日: | 2012-07-04 |
发明(设计)人: | 李中升;沈莉;王飞;漆锋滨;吴佩华;肖谦 | 申请(专利权)人: | 无锡江南计算技术研究所 |
主分类号: | G06F9/45 | 分类号: | G06F9/45 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 骆苏华 |
地址: | 214083 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 指令 翻译 装置 方法 处理 处理器 | ||
技术领域
本发明涉及计算机领域,特别涉及指令翻译装置和方法、指令处理装置和处理器。
背景技术
编译过程是将源代码(通常为高阶语言)翻译为能直接被计算机或虚拟机执行的目标代码(通常为低阶语言或机器语言)的过程。且经过翻译后的目标代码的功能与源代码的功能相同,最后计算机通过处理器执行目标代码来得到源代码所要实现的功能。
一般来讲,编译器就是将高级语言翻译成机器语言的程序。其工作流程为:源代码(source code)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→目标代码(object code)→链接器(Linker)→可执行程序(executables)。而编译器又包括编译器前端(frontend)、编译器分析(compileranalysis)和编译器后端(backend)。
编译器前端主要负责解析输入的源代码,由语法分析器和语意分析器协同工作。语法分析器负责把源代码中的“单词”找出来,语意分析器把这些分散的单词按预先定义好的语法组装成有意义的表达式,语句,函数等等。编译器前端同时还负责语义的检查,例如检测参与运算的变量是否是同一类型的,简单的错误处理。编译器分析主要是对由前端生成并传递过来的中间代码进行分析,而编译器后端主要是负责分析,优化中间代码并生成机器代码。
随着计算机编程技术的迅猛发展,越来越多的逻辑运算被应用在源程序中。由于现有的编译器中只能识别出简单的单逻辑操作,例如:a|b、a^b、a&b,故现有技术在对含有逻辑运算的指令进行编译时,往往会将其翻译成多条汇编指令,其无法用一条逻辑指令来表示多个逻辑运算,例如:对于逻辑运算表达式c=(a|b)^b,编译器在翻译时,则需要将其拆分成两条相应的单逻辑运算tmp1=a|b,c=tmp1^b。
当逻辑运算比较复杂,涉及的操作数比较多时,如果仍将其翻译成多条汇编指令,计算机的处理器要执行多条汇编指令才能完成多操作数的逻辑运算,因而处理逻辑运算的效率会明显的降低,同时处理器的功耗也会增加。
申请号为200710047697.8的中国专利申请,公开了一种利用中间指令集的二进制翻译方法,其设计了一套中间指令集来作为将一套物理指令翻译成另一套物理指令的中间层,隔开了源机器及目标机器。但对于提高处理器处理逻辑运算的效率方面并未涉及。
发明内容
本发明解决的问题是,现有技术处理器处理逻辑运算的效率低,处理器的功耗大。
为解决上述技术问题,本发明提供一种指令翻译装置,包括,
拆分单元,用于将逻辑运算指令拆分为多条单逻辑运算指令;
转换单元,用于将单逻辑运算指令转换成具有预定格式的中间指令,所述预定格式包含逻辑值、源操作数和目标操作数,所述中间指令的源操作数为所述单逻辑运算指令的源操作数,所述中间指令的目标操作数为所述单逻辑运算指令的目标操作数,所述中间指令的逻辑值为对所述单逻辑运算指令的源操作数进行单逻辑运算生成的真值表中的值组合;
合并单元,用于合并预定指令及其定值点指令生成具有所述预定格式的合并指令;其中,所述预定指令是指源操作数具有定值点指令的中间指令,所述预定指令的定值点指令是指对该预定指令的源操作数进行赋值的中间指令;所述合并指令的逻辑值通过数组索引所述预定指令及其定值点指令的逻辑值获得,所述合并指令的源操作数包括所述预定指令及其定值点指令的源操作数的并集,且不包括所述定值点指令的目标操作数;所述合并指令的目标操作数为所述预定指令的目标操作数;
若没有可合并的中间指令则将所述生成的合并指令作为目标指令输出,否则将所述生成的合并指令作为中间指令。
可选的,所述合并指令的逻辑值通过数组索引所述预定指令及其定值点指令的逻辑值获得包括:
将所述定值点指令转换成定值点数组,所述定值点数组的下标为所述定值点指令的源操作数,所述定值点数组的元素分别为所述定值点指令的逻辑值中与所述定值点数组的下标取值对应的值;
将所述预定指令转换成预定数组,所述预定数组的下标为所述预定指令的源操作数,所述预定数组的元素分别为所述预定指令的逻辑值中与所述预定数组的下标取值对应的值;
建立合并数组,所述合并数组的下标为所述合并指令的源操作数,所述合并数组的元素分别为与所述合并数组的下标取值对应的值,其通过数组索引所述预定数组及定值点数组的元素获得;
将所述合并数组的元素组合成所述合并指令的逻辑值。
可选的,所述目标指令为二进制码。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于无锡江南计算技术研究所,未经无锡江南计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010597808.4/2.html,转载请声明来源钻瓜专利网。