CN106610860A - 半导体装置的操作方法和半导体系统 - Google Patents

半导体装置的操作方法和半导体系统 Download PDF

Info

Publication number
CN106610860A
CN106610860A CN201610880639.2A CN201610880639A CN106610860A CN 106610860 A CN106610860 A CN 106610860A CN 201610880639 A CN201610880639 A CN 201610880639A CN 106610860 A CN106610860 A CN 106610860A
Authority
CN
China
Prior art keywords
code
interpreter
loop
intermediate representation
loop code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201610880639.2A
Other languages
English (en)
Inventor
李锺源
朴峻模
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN106610860A publication Critical patent/CN106610860A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/48Incremental compilation

Abstract

本发明提供一种半导体装置的操作方法和半导体系统。半导体装置的操作方法,包括:从由编译器生成的原始中间表示(IR)搜索循环代码;确定循环代码是否满足预定条件;当确定循环代码满足所述预定条件时,使用与编译器分离的解释器计算循环代码,其中,解释器包括解释器框架;将计算循环代码的结果存储到解释器框架中;使用用于访问所述结果的访问代码替代原始IR中的循环代码,以生成更新的IR。

Description

半导体装置的操作方法和半导体系统
本申请要求于2015年10月26日提交到韩国知识产权局的第10-2015-0148715号韩国专利申请的优先权,所述韩国专利申请的公开通过引用全部包含于此。
技术领域
本发明构思涉及一种半导体装置的操作方法和半导体系统。
背景技术
在计算机编程中,源代码是包括用编程语言(源语言)编写的指令的计算机程序或软件的文本文件版本。编译器是将源代码变换为另一计算机语言(目标语言)的目标代码的计算机程序。例如,目标代码典型地具有被称为对象代码的二进制形式。在编译器理论中,循环优化是通过减少与循环有关的开销从而增加执行速度的处理。因此,任何循环或迭代需要被优化以减少通过编译源代码而生成的目标代码的执行时间。例如,可将基于递推链(CR)的循环简化技术应用在目标代码内以简化循环,并可因此减少目标代码的执行时间。然而,在特定环境下可能不能应用这项技术。因此,需要不基于CR的优化循环的技术。
发明内容
发明构思的示例性实施例提供一种半导体装置的操作方法、计算机可读记录介质和半导体系统,即使当循环的迭代次数被除在循环中的归纳变量之外的变量影响时,其也能够优化循环。
根据本发明构思的一个示例性实施例,提供一种半导体装置的操作方法,包括:从由编译器生成的原始中间表示(IR)搜索循环代码;确定循环代码是否满足预定条件;当确定循环代码满足所述预定条件时,使用与编译器分离的解释器计算循环代码;将计算循环代码的结果存储到解释器的解释器框架中;使用用于访问所述结果的访问代码替代原始IR中的循环代码以生成更新的IR。
根据本发明构思的一个示例性实施例,提供一种半导体装置的操作方法,包括:编译器编译源代码以生成中间表示(IR);在原始IR中搜索循环代码;生成扩展IR(EIR)代码,其中,EIR代码与包括在循环代码中的IR代码对应并且包括与IR代码的算符对应的扩展算符,与编译器分离的解释器通过执行扩展算符来计算EIR代码,使用用于访问计算EIR代码的结果的访问代码替代原始IR中的循环代码,以生成更新的IR;编译器编译更新的IR。
根据本发明构思的一个示例性实施例,提供一种半导体装置的操作方法,包括:通过使用编译器执行第一编译,生成包括关于虚拟寄存器的虚拟寄存器信息的原始中间表示(IR),在原始IR中搜索循环代码,生成扩展IR(EIR)代码,其中,EIR代码与包括在循环代码中的IR代码对应且包括关于与虚拟寄存器独立地被分配至存储器的解释器框架的解释器框架信息;使用访问解释器框架并且与编译器分离地执行的解释器计算EIR代码;将作为计算EIR代码的结果的结果值存储到解释器框架中;使用用于访问所述结果值的访问代码替代原始IR中的循环代码,以生成更新的IR;使用编译器对更新的IR执行第二编译。
根据本发明构思的一个示例性实施例,提供一种包括指令的计算机可读记录介质,所述指令使处理器:从由编译器生成的中间表示(IR)搜索循环代码;确定循环代码是否满足预定的条件的集合,生成与编译器分离地计算循环代码的解释器架构和解释器框架,其中,解释器架构包括计算循环代码的解释器,解释器框架用于存储从循环代码的计算获得的中间值;使用解释器计算循环代码,将作为计算循环代码的结果的结果值存储到解释器框架中,并使用用于访问结果值的访问代码替代IR中的循环代码。
根据本发明构思的一个示例性实施例,提供一种半导体系统,包括:编译器,用于从源代码生成原始中间表示(IR);解释器,用于接收扩展IR(EIR)代码,其中,EIR代码与包括在原始IR中的循环代码中的IR代码对应,并且使用与IR代码的算符对应的扩展算符,其中,解释器通过执行EIR代码来计算循环代码,并使用用于访问计算循环代码的结果的访问代码替代原始IR中的循环代码。
根据本发明构思的一个示例性实施例,提供一种优化计算机程序的方法,包括:将源代码编译为原始中间表示(IR);确定原始IR中的循环代码是否满足条件;当所述确定的步骤确定循环代码满足所述条件时,执行循环代码以生成结果值,使用用于访问所述结果值的访问代码替代原始IR中的循环代码以生成更新的IR,并将更新的IR编译为目标代码;当循环代码不满足所述条件时,将原始IR编译为目标代码。
附图说明
从下面结合附图的具体实施方式中,发明构思的示例性实施例将被更加清楚地理解。
图1是示出根据发明构思的示例性实施例的半导体装置的操作方法的示意图。
图2是示出根据发明构思的示例性实施例的解释器架构的示意图。
图3是示出根据发明构思的示例性实施例的扩展中间表示(EIR)代码的示意图。
图4至图11是示出根据发明构思的示例性实施例的操作方法的示意图。
图12是示出根据发明构思的示例性实施例的操作方法的流程图。
图13是示出根据发明构思的示例性实施例的半导体装置的操作方法的流程图。
图14是可适用根据发明构思的示例性实施例的半导体装置的操作方法和半导体系统的示例性电子系统的框图。
图15至图17是示出可适用根据发明构思的示例性实施例的半导体装置的操作方法的示例性半导体系统的示意图。
具体实施方式
图1是示出根据发明构思的示例性实施例的半导体装置的操作方法的示意图。
参照图1,半导体系统1接收源代码并输出目标代码,并且半导体系统1包括前端50、解释器架构100和后端150。在一个实施例中,半导体系统1包括一个或多个处理器和半导体存储器。在一个实施例中,前端50、解释器架构100和后端150是存储在存储器中的可由一个或多个处理器执行的计算机程序。在另一实施例中,前端50、解释器架构100和后端150中的各个分别由多个处理器中的不同处理器实施,或者由单个处理器实施。
源代码是用编程语言编写的代码。例如,源代码可用可被编译的语言(诸如,C语言)编写。然而,发明构思不限于任何特定的编程语言的源代码。
目标代码是具有可被计算机系统执行的形式(例如,二进制形式)的代码。例如,目标代码可以是对象代码或机器代码。目标代码根据目标平台(例如,目标代码将被执行的平台)的类型可以以各种方式被表示。
前端50通过分析源代码生成原始中间表示(IR)20。原始IR 20可是程序的内部表示或中间表示。原始IR 20与源代码不同且可从源代码获得。在一个实施例中,前端50管理符号表和数据结构,其中,数据结构将源代码中的符号表的各种符号映射为诸如位置、类型和范围的信息。在一个实施例中,前端50管理包括用于源代码中的每个标识符的与关于源代码中的标识符的声明或外观的信息关联的入口的数据结构,且数据结构由编译器使用以编译源代码。
解释器架构100接收由前端50生成的原始IR 20。解释器架构100从原始IR 20搜索循环代码,计算循环代码的结果值,并输出通过使用访问结果值的访问代码替代循环代码而获得的更新的IR 22。例如,如果循环代码重复地执行用于返回值的函数并将该值加到变量,则循环代码的结果值可以是变量的最终值。
解释器架构100使用解释器110来计算或执行循环代码。解释器110通过执行与原始IR 20对应的扩展IR(EIR)10来计算循环代码,且EIR 10可以是用于解释器区域中的处理的表示,其中,解释器区域不同于编译器区域(诸如,前端50和后端150)。稍后将参照图2和图3详细地描述EIR 10。
后端150从由前端50生成的原始IR 20或者从由解释器架构100生成的更新的IR22收集程序信息,并优化原始IR 20或更新的IR 22。例如,原始IR 20或者更新的IR 22的优化可包括诸如内联展开、死码删除、循环变换和寄存器分配的处理。在一个实施例中,内联扩展使用被调用的函数的函数体替代函数名(function name)。在一个实施例中,死码删除移除被确定为不影响程序结果的代码。循环变换的示例包括将循环代码分解为多个更小的循环、将更小的循环合并为单个更大的循环、将内部的循环与外部的循环进行交换、重构循环代码以在多处理器系统上有效运行等。后端150从优化的IR 20或IR 22生成目标代码(例如,机器代码),并输出目标代码。例如,目标代码可从更新的IR代码22或者从原始IR代码20生成。
图2是示出根据发明构思的示例性实施例的解释器架构的示意图。
参照图2,解释器架构100包括解释器110、EIR代码列表120、解释器框架(IF)130和映射表(MT)140。
解释器110计算循环代码。循环代码被包括在由前端50生成的原始IR 20中。在一个实施例中,解释器110解释与原始IR 20对应的EIR 10,而不是直接解释原始IR 20。为此,解释器110可包括:包括扩展算符的扩展算符集合114。扩展算符是包括在原始IR 20中的代码(例如,EIR 10的代码或算符)。稍后将参照图8详细地描述扩展算符集合114。
解释器110可接收EIR 10,具体地,可接收包括EIR代码的EIR代码列表120。也就是,解释器110可接收多个EIR代码,并可最终通过顺序地执行多个EIR代码来计算循环代码。稍后将参照图3详细地描述EIR 10的结构。
解释器110生成作为计算或执行循环代码的结果的结果值30。结果值30可存储到解释器框架130中,并可被用于生成访问代码以替代原始IR 20的循环代码。例如,在与解释器框架130对应的虚拟寄存器(VR)230中,可生成访问代码作为存储结果值的代码。在一个示例性实施例中,虚拟寄存器230代表在连续的存储器位置中逻辑上实施的一个或多个域。稍后将参照图10详细地描述访问代码。
在一个示例性实施例中,与编译器分离地执行解释器110。更具体地说,包括解释器110的解释器架构100可响应于从原始IR 20中发现可计算的循环代码而被执行,其中,可计算的循环代码是可被结果值替代的循环代码。换句话说,如果没有从原始IR 20发现可计算的循环代码,则在编译时间期间包含解释器110的解释器架构100不被执行。在一个实施例中,当解释器不被执行时,原始IR 20直接转到后端150。
可计算的循环代码可以是满足预定的条件的集合的循环代码。在一个示例性实施例中,通过确定以下项中的至少一项来确定从原始IR 20中发现的循环代码是否满足预定的条件的集合:从原始IR 20中发现的循环代码是否是最内层的循环、该循环代码是否被设置为没有任何分支代码的单个基本块、以及该循环代码是否包括单个预编译头块和单个退出块。在一个示例性实施例中,通过确定循环代码是否不包括任何存储器访问代码(例如,访问存储器的指令)或者函数调用代码(例如,调用函数的指令),来确定从原始IR 20中发现的循环代码是否满足预定的条件的集合。在一个示例性实施例中,如果循环代码包括存储器访问代码或函数调用代码,则不满足条件。
在一个示例性实施例中,解释器110在编译时间期间计算循环代码。也就是,可在编译器的前端50和后端150之间插入解释器110。更具体地说,解释器110可接收由前端50生成的原始IR 20,使用访问代码替代在原始IR20内的与循环代码对应的IR代码以生成更新的IR 22(替代的IR),并可因此输出替代的IR 22。可由编译器在后端150处理替代的IR 22。结果,可生成目标代码。当不能执行上面描述的优化时,可由编译器在后端150通过编译原始IR 20来生成目标代码。
将参照图2在下文中描述解释器框架130和映射表140。
解释器框架130是解释器110用来计算循环代码的存储空间。也就是,解释器110将值写入解释器框架130,或者从解释器框架130读取值,且该值可以是用于计算EIR代码的变量的初始值、中间值(用于在计算期间使用)和最终值(通过计算获得的)。
解释器框架130与由编译器使用的虚拟寄存器230区分开来。在一个示例性实施例中,解释器框架130与虚拟寄存器被独立地分配至存储器。例如,存储器可包括代表虚拟寄存器230的第一部分和代表解释器框架130的与第一部分不同的第二部分。如果IR代码包括虚拟寄存器信息,则与IR代码对应的EIR代码可包括关于被分配以与在IR代码中使用的虚拟寄存器对应的解释器框架的解释器框架信息。
解释器框架130可包括多个单位框架,且单位框架可具有预定大小。在一个示例性实施例中,单位框架具有4字节大小,但发明构思不限于此。
如果单位框架的大小是4字节且将被解释器110处理的操作数的大小是8或16字节,则多个连续的单位框架可被匹配给单个值或者单个虚拟寄存器。例如,如果解释器框架110包括互相连续的第一单位框架和第二单位框架,则第一单位框架和第二单位框架可被匹配给单个值或者单个虚拟寄存器。
映射表140存储解释器框架130与虚拟寄存器230之间的映射关系。稍后将参照图7详细地描述映射表140的结构。在一个示例性实施例中,映射表140被存储到存储器空间或可被解释器110访问的存储空间中。
图3是示出根据发明构思的示例性实施例的EIR代码的示意图。
图3示出原始IR 20和EIR 10两者的实施例。
原始IR 20由编译器在前端50生成且包括具有算符(OPR)24和虚拟寄存器信息(或者虚拟寄存器编号(VRN))26的IR代码。编译器使用虚拟寄存器230来处理用于计算原始IR20的变量的初始值、中间值(用于在计算期间使用)和最终值(通过计算获得的)。
EIR 10被生成为与原始IR 20对应,并包括具有扩展算符(EOPR)14和解释器框架信息(或者解释器框架编号(IFN))16的EIR代码。解释器110使用解释器框架(IF)130来处理用于计算EIR 10的变量的初始值、中间值(用于在计算期间使用)和最终值(通过计算获得的)。
在一个示例性实施例中,EIR 10包括原始IR 20的原始版本。也就是,EIR 10可包括IR 12。
如上面参照图2描述的,可由映射表140管理虚拟寄存器230与解释器框架130之间的映射关系。
图4至图11是示出根据发明构思的示例性实施例的操作方法的示意图。
图4以C语言形式示出将通过根据图1的示例性实施例的操作方法处理的源代码300。
参照图4,源代码初始化整数类型变量m和n,源代码包括作为循环代码的“while”语句,且包括返回变量n的值的代码。变量m可以是归纳变量,而变量n可以是局部变量。归纳变量可以是在循环的每次迭代增加或减少固定量的变量。
值得注意的是,“while”语句包括循环条件“m<n”,变量m是值在“while”循环中增加的归纳变量,且变量n的值在“while”循环中变量m的影响下变化。也就是,图4的源代码包括归纳变量m和非归纳变量n,“while”循环的迭代次数不仅受归纳变量m的影响,也受非归纳变量n的影响。换句话说,“while”循环的迭代次数由归纳变量m和非归纳变量n两者来确定。
基于递归链(CR)的循环简化方法不能应用于循环代码的迭代次数受除归纳变量之外的变量所影响的情况。例如,基于递归链(CR)的循环简化方法不能应用于图4中描述的循环代码。然而,根据发明构思的一个实施例,即使当循环代码的迭代次数被除在循环代码中的归纳变量之外的变量所影响时,也可通过使用结果值替代循环代码而有效地减少与循环对应的目标代码的执行时间。
图5示出可包括通过编译图4的源代码而获得的原始IR 20或IR代码的IR 310。
参照图5,“v100”、“v101”、“v102”和“v103”指示VRN,其中,VRN代表已被分配至存储器的虚拟寄存器230,“Mul”(例如,乘法算符)、“Sub”(例如,减法算符)、“Add”(例如,加法算符)和“BLT”(例如,小于分支(branch on less than)算符)代表在原始IR 20中使用的算符。
通常,一旦由前端50生成原始IR 20的代码,则后端150将虚拟寄存器230映射到真实的存储器空间,并生成最终的目标代码。然而,在发明构思的一个示例性实施例中,从图5的原始IR 20的代码之中首先搜索可计算的循环代码。然后,如果在图5的原始IR 20的代码之中存在可计算的循环代码,则通过删除可计算的循环代码并插入访问可计算的循环代码的结果值的访问代码而获得更新的IR 22,且更新的IR 22被传输到后端150。例如,循环代码被从原始IR 20移除,并被访问代码替代以生成更新的IR 22。
参照图5,以标签“L1:”开始的循环是最内层的循环,该循环被设置为单个基本块,并包括单个预编译头块和单个退出块。因为以标签“L1:”开始的循环不包括存储器访问代码或函数调用代码,所以以标签“L1:”开始的循环与可由解释器架构100计算的可计算的循环代码对应。在一个实施例中,当循环代码是一个或多个外部循环内的最内部的循环时或者当循环代码不位于另一循环之中时,循环代码是最内层的循环。在一个实施例中,当循环代码不包括多个分支时,循环代码具有单个退出块。在一个实施例中,当循环代码分支到不多于一个标签时,循环代码具有单个预编译头块。
因此,原始IR 20被转变成为可由解释器110处理的EIR 10。原始IR 20的转变包括分配与虚拟寄存器v100、v101、v102或v103对应的解释器框架130,以及为算符Mul、Sub、Add或BLT选择扩展算符。
参照图6,“F[i]”表示解释器框架130。为了方便起见,解释器框架130在图6中被示出为由从0逐渐增加的索引i所代表,但是,解释器框架130的结构不限于图6所示的结构,而是可根据解释器框架130的预期用途而变化。
为将图5的原始IR 20的VRN转变为IFN,解释器框架F[0]、F[1]、F[2]和F[3]可被分配以分别与虚拟寄存器v100、v101、v102和v103对应。因为虚拟寄存器v104和v105未在图5的原始IR 20中被使用,所以没有解释器框架针对虚拟寄存器v104和v105被分配。
参照图7,映射表140包括VRN列和IFN列,并存储虚拟寄存器230与解释器框架130之间的映射关系,即,虚拟寄存器v100、v101、v102和v103与解释器框架F[0]、F[1]、F[2]和F[3]之间的映射关系。在图7中示出了示出虚拟寄存器230与解释器框架130之间的映射关系的映射表140,但是示出虚拟寄存器230与解释器框架130之间的映射关系的数据的形式不限于图7中示出的形式,而是可以变化。
参照图8,解释器110包括核112和扩展算符集合114。在一个实施例中,核112是多核处理器的处理核。
核112解释EIR 10并使用包括在EIR 10的代码中的算符和操作数计算循环代码。
扩展算符集合114与包括在原始IR 20中的算符对应并包括可由解释器110计算的扩展算符。例如,原始IR 20的算符“Mul”、“Div”(例如,除法算符)、“Add”、“Sub”、“Mov”(例如,移动算符)、“Const”和“BLT”可分别与EIR 10的扩展算符“IMul”、“IDiv”、“IAdd”、“ISub”、“IMov”、“IConst”和“IBLT”对应。
在本示例性实施例中,EIR 10的算符通过它们在IR 20的各自对应的算符的名称的前端添加字符“I”来命名,但发明构思不限于此。也就是,EIR 10的算符可以除在此阐述的方式之外的各种方式来命名。例如,EIR 10的算符可具有与它们在IR 20的各自对应的算符相同的名称。
图9示出可与EIR 10对应的EIR 320,其中,EIR 10依次与图5的原始IR 20对应。
参照图5和9,原始IR 20的VRN“v100”、“v101”、“v102”和“v103”被分别转变为EIR10的IFR“F[0]”、“F[1]”、“F[2]”和“F[3]”,原始IR 20的算符“Mul”、“Add”、“Sub”和“BLT”被分别转变成为EIR 10的扩展算符“IMul”、“IAdd”、“ISub”和“IBLT”。
解释器110计算EIR 10,从而生成原始IR 20的循环代码的最终结果值30。
图10示出了根据发明构思的示例性实施例的访问代码。
作为用于替代原始IR 20的循环代码的代码的访问代码,包括用于访问由解释器110获得的结果值30的代码。更具体地说,如果通过使用图9的EIR 10计算原始IR 20的循环代码而获得的结果值30为“10000”,则解释器110将“10000”的结果值存储到与虚拟寄存器v103对应的解释器框架F[3]中。
此后,循环代码被从原始IR 20中删除,访问代码330被插入到原始IR 20中。在本示例性实施例中,访问代码330为“v103MovConst 10000”,该访问代码是用于将常数值“10000”存储到虚拟寄存器v103中的代码,但发明构思不限于此。访问代码330的形式不限于图10中示出的形式,而是可以变化。
更具体地说,如图11的左部所示,从原始IR 20中删除循环代码,且如图11的右部所示,作为替代,插入用于将结果值w2存储到存储器中的代码“str w2,[x20,#60]”。
根据发明构思的一个实施例,可通过使用结果值替代循环代码而有效地减少与循环对应的目标代码的执行时间。此外,如上面已经提到的,即使当循环代码的迭代次数受除归纳变量之外的变量所影响时,使用结果值替代循环代码也是可行的。
图12是示出根据发明构思的示例性实施例的操作方法的流程图。
参照图12,确定关于循环代码是否可计算(S1201)。更具体地说,可通过确定以下项中的至少一项来确定循环代码是否可计算:循环代码是否是最内层的循环、循环代码是否被设置为没有任何分支代码的单个基本块、以及循环代码是否包括单个预编译头块和单个退出块。
此后,确定循环代码是否包括可计算的指令(S1203)。例如,可通过检查循环代码是否包括任何存储器访问代码或函数调用代码来执行该确定。
此后,确定包括在循环代码中的归纳变量的初始值(S1205)。在一个示例性实施例中,确定归纳变量的初始值包括将归纳变量的初始值存储到解释器框架130中。
此后,初始化解释器架构100(S1207)。在一个示例性实施例中,初始化解释器架构100包括映射虚拟寄存器230和解释器框架130,并将解释器框架130初始化为任意的常数值。
此后,使用解释器架构100的解释器110计算(例如,解释)循环代码(S1209),将通过计算获得的结果值30存储到解释器框架130中,并从IR 20中删除循环代码(S1211)。删除循环代码可包括使用用于访问结果值30的访问代码替代原始IR 20中的循环代码。
图13是示出根据发明构思的示例性实施例的操作半导体装置的方法的流程图。
参照图13,将EIR 10的EIR代码添加到解释器架构100(S1301),并确定解释器架构100是否支持EIR代码。如果解释器架构100不支持EIR代码,则输出错误消息,并终止解释器架构100的操作(S1303)。
当检查EIR代码而确定解释器架构100支持它们时,将循环代码的所有IR代码添加到解释器架构100(S1305)。例如,该方法可尝试将多个EIR代码添加到解释器架构100,并假设它们都被支持,然后该方法将进行到步骤S1307。
此后,初始化解释器框架130(S1307),且确定EIR代码是否可计算(S1309)。如果EIR代码由于,例如,初始化失败,而不可计算,则输出错误消息,并终止解释器架构100的操作(S1317)。
此后,使用解释器110处理循环代码中的每个EIR代码(S1311),同时确定是否满足循环代码的退出条件(S1313)。
响应于确定满足循环代码的退出条件(即,循环的迭代已经完成),获得作为计算循环代码的结果的结果值30(S1315)。
根据发明构思的一个实施例,通过使用结果值替代循环代码,可有效地减少与循环对应的目标代码的执行时间。此外,如上面已经提到的,即使当循环代码的迭代次数被除归纳变量之外的变量所影响时,使用结果值替代循环代码也是可行的。
图14是可适用根据发明构思的示例性实施例的半导体装置的操作方法和半导体系统的示例性电子系统的框图。
参照图14,电子系统1100包括控制器1110、输入/输出(I/O)装置1120、存储装置1130、接口1140和总线1150。控制器1110、I/O装置1120、存储装置1130和/或接口1140可经由总线1150互相连接。总线1150可以是经其而传输数据的路径。例如,可由控制器1110可执行前端50、解释器架构100和后端150的功能。例如,控制器1110可执行图12或图13的一个或多个步骤。例如,控制器1110可被用于实施半导体装置系统1的全部或部分。
控制器1110可包括微处理器、数字信号处理器、微控制器和执行与微处理器、数字信号处理器或微控制器相似的功能的逻辑元件中的至少一个。I/O装置1120的示例包括键区、键盘、显示装置等。存储装置1130可存储数据和/或命令。接口1140将数据传输到通信网络或从通信网络接收数据。接口1140可以是有线的或无线的接口。接口1140的示例包括天线、有线的或无线的收发机等。
尽管未特别示出,但是半导体系统1100还可包括用于提高控制器1110的操作的操作存储器,诸如,高速动态随机存取存储器(DRAM)和/或静态随机存取存储器(SRAM)。
半导体装置1110可适用于个人数字助理(PDA)、便携式计算机、网络平板、无线电话、移动电话、数字音乐播放器、存储卡或能够在无线环境中传输和/或接收信息的任何类型的电子产品。
图15至图17是示出可适用根据发明构思的示例性实施例的半导体装置的操作方法的示例性半导体系统的示意图。
更具体地说,图15示出平板计算机1200,图16示出笔记本计算机1300,图17示出智能电话1400。根据发明构思的示例性实施例的半导体装置中的至少一个可在平板计算机1200、笔记本计算机1300和智能电话1400中被使用。
根据发明构思的示例性实施例的半导体装置还可在除在此阐述的装置之外的各种集成电路(IC)装置中被使用。
也就是,根据发明构思的示例性实施例的半导体装置(例如,1)的示例包括平板计算机1200和笔记本计算机1300,但发明构思不限于此。
根据发明构思的示例性实施例的半导体系统可被设置为计算机、超级移动个人计算机(UMPC)、工作站、上网本计算机、PDA、便携式计算机、无线电话、移动电话、电子书、便携式多媒体播放器(PMP)、便携式游戏机、导航装置、黑盒子、数码相机、3维电视机、数字录音机、数字音频播放器、数字图片记录仪、数字图片播放器、数字视频录像机或数字视频播放器。
可将上面描述的方法存储到作为可保持并存储由指令执行装置使用的指令的有形装置的计算机可读存储介质中。计算机可读存储介质可以是,例如,但不限于,电存储装置、磁存储装置、光存储装置、电磁存储装置、半导体存储装置或前述内容的任何适当的组合。计算机可读存储介质的更具体的示例的非详尽列表包括以下项:便携式计算机软磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式致密盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码装置(诸如,穿孔卡或在具有记录在其上的指令的凹槽中的凸起结构)和前述内容的任何适当的组合。
前述内容是发明构思的示例性实施例的示例,且不被解释为限制于此。尽管已描述了一些示例性实施例,但是本领域技术人员将容易地理解,在实质上不脱离本发明构思的情况下,在示例实施例中进行许多修改。因此,所有这样的修改意在被包括在本发明构思的范围内。

Claims (20)

1.一种半导体装置的操作方法,包括:
从由编译器生成的原始中间表示(IR)搜索循环代码;
确定循环代码是否满足预定条件;
当确定循环代码满足所述预定条件时,使用与编译器分离的解释器计算循环代码,其中,解释器包括解释器框架;
将计算循环代码的结果存储到解释器框架中;
使用用于访问所述结果的访问代码替代原始中间表示中的循环代码,以生成更新的中间表示。
2.如权利要求1所述的操作方法,其中,确定循环代码是否满足预定条件的步骤包括:确定以下项中的至少一项:循环代码是否是最内层的循环、循环代码是否被设置为单个基本块、以及循环代码是否包括单个预编译头块和单个退出块。
3.如权利要求1所述的操作方法,其中,确定循环代码是否满足预定条件的步骤包括:确定循环代码是否不包括任何存储器访问代码或函数调用代码。
4.如权利要求1所述的操作方法,在计算循环代码之前还包括:
确定包括在循环代码中的归纳变量的初始值。
5.如权利要求4所述的操作方法,其中,确定归纳变量的初始值的步骤包括:将确定的初始值存储到解释器框架中。
6.如权利要求1所述的操作方法,其中,解释器使用与包括在原始中间表示中的代码中的算符对应的扩展算符计算循环代码。
7.如权利要求1所述的操作方法,其中,解释器框架与由编译器使用的虚拟寄存器独立地被分配至存储器。
8.如权利要求7所述的操作方法,其中,解释器还包括:映射表,存储解释器框架与虚拟寄存器之间的映射关系。
9.如权利要求7所述的操作方法,其中,解释器框架包括:第一单位框架和第二单位框架,其中,第一单位框架和第二单位框架互相连续,并且第一单位框架和第二单位框架被映射到单个值或单个虚拟寄存器。
10.如权利要求7所述的操作方法,其中,访问代码包括:将存储在解释器框架中的所述结果存储到与解释器框架对应的虚拟寄存器中的代码。
11.如权利要求1所述的操作方法,其中,循环代码包括:至少一个归纳变量和至少一个非归纳变量,并且循环代码的迭代次数由所述至少一个归纳变量和所述至少一个非归纳变量两者确定。
12.如权利要求11所述的操作方法,其中,循环代码的循环条件包括:所述至少一个归纳变量和所述至少一个非归纳变量两者。
13.一种半导体装置操作方法,包括:
通过编译器编译源代码以生成原始中间表示(IR);
在原始中间表示中搜索循环代码;
生成扩展中间表示(EIR)代码,其中,扩展中间表示代码与包括在循环代码中的中间表示代码对应并且包括与中间表示代码的算符对应的扩展算符;
通过与编译器分离的解释器通过执行扩展算符,来计算扩展中间表示代码;
使用用于访问计算扩展中间表示代码的结果的访问代码替代原始中间表示中的循环代码,以生成更新的中间表示;
通过编译器编译更新的中间表示。
14.如权利要求13所述的操作方法,其中,扩展中间表示代码还包括:中间表示代码。
15.如权利要求13所述的操作方法,其中,扩展中间表示代码包括:关于与由编译器使用的虚拟寄存器独立地被分配至存储器的解释器框架的解释器框架信息。
16.如权利要求13所述的操作方法,其中,访问代码包括:关于与存储所述结果的解释器框架对应的虚拟寄存器的虚拟寄存器信息。
17.一种优化计算机程序的方法,所述方法包括:
将源代码编译为原始中间表示(IR);
确定原始中间表示中的循环代码是否满足条件;
当所述确定的步骤确定循环代码满足所述条件时,执行循环代码以生成结果值,使用用于访问所述结果值的访问代码替代原始中间表示中的循环代码以生成更新的中间表示,并将更新的中间表示编译为目标代码;
当循环代码不满足所述条件时,将原始中间表示编译为目标代码。
18.如权利要求17所述的方法,其中,所述执行的步骤由解释器执行。
19.如权利要求17所述的方法,其中,当循环代码被确定为不包括任何存储器访问代码或函数调用代码时,循环代码满足所述条件。
20.如权利要求17所述的方法,其中,当循环代码被确定为是最内层的循环或者被确定为包括单个退出点时,循环代码满足所述条件。
CN201610880639.2A 2015-10-26 2016-10-09 半导体装置的操作方法和半导体系统 Pending CN106610860A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020150148715A KR20170047957A (ko) 2015-10-26 2015-10-26 반도체 장치의 동작 방법 및 반도체 시스템
KR10-2015-0148715 2015-10-26

Publications (1)

Publication Number Publication Date
CN106610860A true CN106610860A (zh) 2017-05-03

Family

ID=58558820

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610880639.2A Pending CN106610860A (zh) 2015-10-26 2016-10-09 半导体装置的操作方法和半导体系统

Country Status (3)

Country Link
US (1) US20170115973A1 (zh)
KR (1) KR20170047957A (zh)
CN (1) CN106610860A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116841622A (zh) * 2023-09-01 2023-10-03 上海燧原智能科技有限公司 一种地址自增访存指令的生成方法、装置、设备及介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101832594B1 (ko) * 2016-02-18 2018-02-26 라인 가부시키가이샤 중간 언어 파일의 로딩 속도 개선을 위한 방법 및 시스템

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN86107764A (zh) * 1985-12-17 1987-07-01 国际商用机器公司 通过双色布石进行寄存器分配和指定
US20090288075A1 (en) * 2008-05-19 2009-11-19 Yonghong Song Parallelizing non-countable loops with hardware transactional memory
US20120167069A1 (en) * 2010-12-24 2012-06-28 Jin Lin Loop parallelization based on loop splitting or index array
CN103348317A (zh) * 2011-11-07 2013-10-09 辉达公司 减少64位计算机程序循环中符号扩展指令的需求驱动算法
CN103942158A (zh) * 2014-02-17 2014-07-23 上海新储集成电路有限公司 一种具有智能优化循环指令模块功能的自学习系统
CN103970580A (zh) * 2014-05-05 2014-08-06 华中科技大学 一种面向多核集群的数据流编译优化方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933635A (en) * 1997-10-06 1999-08-03 Sun Microsystems, Inc. Method and apparatus for dynamically deoptimizing compiled activations
US8677337B2 (en) * 2008-05-01 2014-03-18 Oracle America, Inc. Static profitability control for speculative automatic parallelization
US8799884B2 (en) * 2008-08-13 2014-08-05 Qualcomm Incorporated Software application performance enhancement
US20130205282A1 (en) * 2012-02-07 2013-08-08 Microsoft Corporation Transferring program execution from compiled code to interpreted code
EP3060984A4 (en) * 2013-10-24 2017-05-31 Intel Corporation Conjugate code generation for efficient dynamic optimizations
US9639382B2 (en) * 2014-05-15 2017-05-02 Microsoft Technology Licensing, Llc. Interactive viewer of intermediate representations of client side code
US9619214B2 (en) * 2014-08-13 2017-04-11 International Business Machines Corporation Compiler optimizations for vector instructions
US9569190B1 (en) * 2015-08-04 2017-02-14 International Business Machines Corporation Compiling source code to reduce run-time execution of vector element reverse operations

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN86107764A (zh) * 1985-12-17 1987-07-01 国际商用机器公司 通过双色布石进行寄存器分配和指定
US20090288075A1 (en) * 2008-05-19 2009-11-19 Yonghong Song Parallelizing non-countable loops with hardware transactional memory
US20120167069A1 (en) * 2010-12-24 2012-06-28 Jin Lin Loop parallelization based on loop splitting or index array
CN103348317A (zh) * 2011-11-07 2013-10-09 辉达公司 减少64位计算机程序循环中符号扩展指令的需求驱动算法
CN103942158A (zh) * 2014-02-17 2014-07-23 上海新储集成电路有限公司 一种具有智能优化循环指令模块功能的自学习系统
CN103970580A (zh) * 2014-05-05 2014-08-06 华中科技大学 一种面向多核集群的数据流编译优化方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116841622A (zh) * 2023-09-01 2023-10-03 上海燧原智能科技有限公司 一种地址自增访存指令的生成方法、装置、设备及介质
CN116841622B (zh) * 2023-09-01 2023-11-24 上海燧原智能科技有限公司 一种地址自增访存指令的生成方法、装置、设备及介质

Also Published As

Publication number Publication date
KR20170047957A (ko) 2017-05-08
US20170115973A1 (en) 2017-04-27

Similar Documents

Publication Publication Date Title
Yoon et al. Cache‐efficient layouts of bounding volume hierarchies
CN104067282B (zh) 状态机晶格中的计数器操作
CN103518190B (zh) 对于动态语言的散列表的硬件支持
US11803404B2 (en) Deep learning algorithm compiling method, device, and related product
US5659723A (en) Entity/relationship to object oriented logical model conversion method
CN105051680B (zh) 用于在处理器内部的硬件并行执行道上处理指令的处理器及方法
US7844422B2 (en) Method and system for changing a description for a state transition function of a state machine engine
CN106796522A (zh) 用于更新源代码文件的系统和方法
CN110287335A (zh) 基于知识图谱和用户长短期偏好的个性化景点推荐方法及装置
CN110020307A (zh) 一种客户端视图的绘制方法和装置
CN106095698B (zh) 面向对象的缓存写入、读取方法及装置
CN106716361A (zh) 用于运行时例程冗余跟踪的编译器高速缓存
CN107644286A (zh) 工作流处理方法及装置
Áfra et al. Stackless Multi‐BVH Traversal for CPU, MIC and GPU Ray Tracing
US7831589B2 (en) Method for retrieving constant values using regular expressions
US20220114429A1 (en) Method and device for generating operation data and related product
CN107315827A (zh) 一种电子阅读中的关联推荐的方法及其装置
KR102295799B1 (ko) 결제 이력을 기초로 메타버스 환경을 구성하는 인터페이스 디자인을 변경시키는 메타버스 서비스를 운영하기 위한 메타버스 서비스 운영 서버 및 그 동작 방법
Przigoda et al. Ground setting properties for an efficient translation of OCL in SMT-based model finding
CN107220171A (zh) 一种虚拟机的测试方法及装置
CN109933678A (zh) 艺术品推荐方法、装置、可读介质及电子设备
CN106610860A (zh) 半导体装置的操作方法和半导体系统
CN107766036A (zh) 一种模块的构建方法、构建装置及终端设备
CN110428359A (zh) 用于处理感兴趣区域数据的装置和方法
CN100414514C (zh) 用于存储器访问指令向量化的方法和设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20170503