数据序列产生方法及设备、转换方法及计算机技术

技术编号:2888321 阅读:132 留言:0更新日期:2012-04-11 18:40
一种编译器,其中将字节码转换为中间码,它使用对应于字节码的执行程序的地址,作为一操作码,并按对应于中间码的连续顺序执行此执行程序。中间码的长度恒定且操作码的位置也恒定。执行程序组相对于头的地址的偏移量作为操作码使用。此外,通过使用CPU中的空流水线,用于转移到下一中间码执行程序指令组的一部分指令组以及用于转移到再下一中间码执行程序指令组的一部分指令组能与原始中间码处理并行执行。(*该技术在2018年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及一编译器,特别是用于Java(Java是Sun微系统公司的注册商标)的即时(Just In Time-JIT)编译器。凭借因特网的普及Java得以广泛地作用,这是由于如附图说明图1所示字节码14的特点所决定的,此字节码是当服务器1中的Java编译器12编译Java源码10时而得到的。字节码14既与OS(操作系统)53无关也与硬件55,如客户机5中的CPU无关,因此能被连结在网络3上各种各样的客户机5执行。另一方面,因为字节码14必须要由客户机5重新解释,从而出现了执行速度下降的问题。客户机5可以是一般计算机,或者是称作网络计算机,还可以是存储容量小的家用信息处理机,或者是没有装备像硬盘这样的辅助存储设备的机器。字节码14是在客户机5中为WWW(万维网)浏览器提供的Java虚拟机(Java VM)52的本机码。当CPU,即硬件55实际执行字节码14时,使用了Java解释器54和Java JIT编译器56。当执行字节码14时,解释器54翻译字节码14并调用和执行为每个指令准备的执行程序。解释器的优点在于字节码14-读出,字节码14的执行就可应即开始,并且所包含的字节码的数量通常很小,为了执行仅需小的存储器容量。缺点是执行速率低,这是因为字节码只是在它执行前才被解码而出现以下问题造成的结果。(a)因为Java字节码以可变长格式提供,为CPU的多预取指优化难以实现。(b)难以提供基于规则的优化,以频繁地检测字节码。当使用复杂的规则或多规则时,为了对字节码序列应用规则,需要许多时间来检测字节码,这种处理是不实际的。(c)参数的读出只能在执行程序的头部发生,所以处理过程不能立即开始。(d)因为解码循环的存在,解码循环的处理时间附加到全部字节码14的处理时间上。因此,处理速度不可能增强以使超过解码循环处理速度。JIT编译器56预先或者在执行前即时将字节码14翻译成机器码并执行机器码。此方法的优点在于因编译器技术的使用而优化了机器码,被翻译的码执行速度高。然而,通常的优化编译器比解释器要求更多的存储器和更高的CPU能力。有一种使用线程码的技术,字节码14转换成一子程序调用而后才被执行,线程码是一子程序和一机器码构成的对,其中子程序是为每个字节码准备的用以处理对应的字节码,而机器码设置参数并根据字节码发出子程序调用。线程码是通过编译字节码成为具有最小长度的机器码而得到。线程码的执行快于解释器,同时比通常的优化编译器要较少的资源。然而,在这种情况下会出现下列问题。(a)为Java字节码例如用32位的RISC CPU,转换参数集和调用指令占用存储器的平均大小是字节码占用的四倍之多。(b)在基于规则的优化能对快速检测的字节码序列使用之前,程序的结构必须被分析以确认字节码序列不超过大多数基本块,因为这样,字节码序列的开销也许偏离优化的效果。(c)因为中间码也是机器码,一个已经预先执行过的执行程序可能从指令高速缓存中被清除。 在
技术介绍
中没有公开这样的Java字节码编译器,它能被结合到网络计算机和家用信息处理机中,并且在要求很少的资源时能执行高速处理。因此,本专利技术的第一个目的就是提供一编译器,它能在使用有限资源的同时以高速编译Java字节码。本专利技术的另一个目的是提供一编译器,它能实现基于规则的优化而无需分析程序的结构。本专利技术还有一个目的是为优化程序的执行,应用一种规则而不必考虑程序基本块的边界。本专利技术再一个目的是对对应于一字节码的执行程序提供一种指令结构,以充分利用CPU的能力。本专利技术的第一个特点是一种方法,用于把字节码转换成中间码,这里用与一个字节码对应的执行程序的地址作为操作码,并且以连续顺序执行此执行程序。中间码的长度是固定的,操作码的位的位置也是固定的。执行程序存储在存储器的连续区域中,而且执行程序相对于头地址的偏移量作为操作码来使用。因此,对应于中间码的执行程序地址产生和操作数产生都能高速实现。此外,通过使用CPU中的空流水线,用于移到下一中间码执行程序之指令组的一部分(操作数产生和转移),以及用于转移到再下一中间码执行程序之指令组的一部分(中间码预取指和执行程序地址计算)能与原始中间码处理并行执行。其结果是节省了解码和转移处理所要求的时间,而且执行的速度能够提高。另外,因为中间码不是指令而是数据,指令高速缓存可用于仅缓存执行程序组。因此,指令高速缓存比在
技术介绍
中能被更有效地使用。在那里是使用参数集和对执行程序的子程序调用来实现中间码的。本专利技术的第二个特点是采用表达方式(idioms)来实现基于规则的优化,不要求分析程序结构。具体地,当有字节码序列A,B,C和D,以及表达方式ABCD被定义时,字节码A被转换成中间码abcd,这里使用ABCD执行程序的地址作为操作码,而字节码B,C和D被转换成中间码b,c和d,使用了相应的执行程序的地址作为操作码。也就是,中间码按abcd,b,c和d的次序产生。如果当abcd的执行已经完成时,处理转移到d下面的位置,在那出现分支指令转移到b,c或d的情况也能被处理,在高速处理能被提供时,能确保相同的处理。中间码不能减少,但使用表达方式的基于规则的优化可以提供,无需分析程序结构。因为在有分支指令转移到表达方式化的码上时,通常的规则不能被使用,本专利技术扩展了该规则的使用范围。综上所述,大多数执行程序的每一个,都能被一个周期中能执行两个或更多指令的处理机来执行,包括有执行程序原始要求的指令;跟随执行程序后执行的转移到第二执行程序的部分指令;以及跟在第二执行程序后执行的转移到第三执行程序的部分指令。这两个执行程序共享为执行一个执行程序所要求的预处理,所以在一个执行程序中的指令可被平稳地优化,对转移和解码不会招致任何不利后果。此执行程序以及编译器的其它元素被存储在主存储器中,以便执行。在码序列中的每个码可以与每个执行程序对应以便调节处理流,并且用于转移到第二执行程序的部分指令可能包含为第二执行程序的操作数生成指令,以及为转移到第二执行程序的转移指令。同时,为转移到第三执行程序的部分指令可能包含用于相对第三执行程序取码的指令,以及用于计算第三执行程序地址的指令。在码序列中的每个码可以与每个执行程序对应以便调节处理流,并且一表达方式化的执行程序,它是许多执行程序的一个集,可能包含用于对应第二执行程序从码序列中取一码字的指令,为计算第二执行程序地址的指令,为第二执行程序的操作数生成指令,为转移到第二执行程序的指令,为从码序列中取对应第三执行程序一码的指令,和为计算第三执行程序地址的指令。当使用表达方式的优化不分析程序的结构而执行时,在上面所说的例子中,中间码按abcd,b,c和d的次序产生。在abcd前的中间码的执行程序中,执行预取b和b的执行程序的地址计算。然而,因为在abcd后将要处理的中间码是跟在d后的中间码,并且不是中间码b,所以预取址和地址计算必须再次执行。因此,表示方式执行程序要求上面所述的指令。另外,当第二类数据序列(中间码序列)根据第一类数据序列(字节码序列)而产生时,下列步骤要执行读出第一类数据;确定读出的第一类数据序列是否与预定的表达方式数据之一相同,每个预定的表达方式数据包含一组第一类数据;以及如果读出的第一类数据序列与表达方式数据相同,则转换读本文档来自技高网
...

【技术保护点】
用于根据第一类数据序列产生第二类数据序列的方法,包括以下步骤: 读出第一类数据: 确定读出的第一类数据序列是否与预定的表达方式数据之一相同,每个所说预定表达方式数据封装一组所述的第一类数据;并且 如果上述第一类读出数据序列等同于表达方式数据之一,则把上述读出的第一类数据序列中的第一个数据,转换为对应于所说的表达方式数据之一的第二类数据。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:绪方一则小松秀昭百濑浩之
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1