抽象机在Java微处理器中的应用研究

2022-03-24 09:11:27 | 浏览次数:

【摘 要】抽象机是软件程序编译器中所常用的部件,对于处理器性能的提升有着重要的作用。本文将从抽象机的设计出发,综合分析Java微处理器结构设计和指令流水线技术的工作原理,对抽象机在Java微处理器中的应用进行合理的设计与改进。对性能进行相应的仿真测试,使其使用过程等进行一定的模拟和验证,通过一系列的综合应用抽象机来提高Java微处理器的使用性能。

【关键词】抽象机 Java微处理器 指令流水线技术 仿真测试

【Abstract】Abstract machine is a commonly used part of the software programming,which palys an important role in improving the performance of processors.This paper will analyze the structure of Java microprocessors and the working principle of the instruction pipeline based on the design of the abstract machine.After these measures,the performance of the Java microprocessors will be emhanced.Besides,this paper will test the function through a series of simulation experiment which is confirmed the performance of the Java microprocessors is improved.

【Key words】Abstract machine Java processors Instruction pipelining simulation test

一、引言

一般而言,微处理器使用指令流水线的技术来实现对其使用性能的提升,我国自主开发的一些RISC处理器等也采用了指令流水线技术。这种流水线技术能够实现相关指令的重复执行,从而可以提高微处理器的使用性能。但是在实际的使用中,由于微处理器中的控制相关、数据相关及资源相关问题的存在,使得流水线出现的断流现象影响到微处理器的使用性能。随着科学技术的发展,微处理器的相关技术也得到了一定的改进,指令级并行技术在微处理器中得到了较多的应用,它在很大程度上超越了标量执行、乱序执行等方法,能够实现多条流水线并行执行,同时完成多条指令的处理,极大的提高了微处理器的工作效率。

在超标量执行允许程序的模块中,它附近的多条指令是在一个相同的流水段中进行处理的,这样一种方式能够实现两条以上指令的并行执行,而这仅限于它们按程序顺序依次连续出现的情况。乱序执行则允许指令穿越其它指令进入到另外的指令处理阶段,使指令能够以一种与原来的程序顺序有所差异的程序来进行处理。而预测执行程序则是以减少程序顺序上的限制来增加其可用的并发性。这些处理方式,都能够以比较任意的方式来处理一些指令,并且保证其程序外观上的顺序性。超标量执行技术的实现需要有额外的硬件来支持,通过一些并行译码器的应用、足够多的功能执行单元以及寄存器读写口、内存器口等外部元件来辅助其功能的实现,此外还需要有完善的路由网络来完成数据的传递。乱序执行则在某种程度上相对的减弱了执行顺序带来的约束,从而使得程序并发能力得以增强,其程序执行中仍需要一些额外工作来提供保证。预测执行能够有效的克服一些指令转移所带来的影响从而实现更大的并发性。从上述三种执行的分析,我们可以看到与指令相关问题的解决,对于指令并行能力的提升有着重要的影响。

本文中的Java微处理器中所使用的是堆栈结构,其产生的指令相关对于处理器性能有一定的影响。本文将从Java微处理器的理论框架出发,在当前一些基本流水线的应用分析基础上加入硬件抽象机的作用,使其在实践中具有现实可操作性和应用的现实性。同时,以Java微处理器的逻辑结构的分析等来解决流水线处理器中指令相关问题,充分发挥Java程序自身的内部指令级的并行能力,实现了Java微处理器性能的提升。

二、以硬件抽象机为基础的处理器设计

抽象机一般是应用在软件程序的编译器中的。它起到一种高级语言与真实的硬件处理器沟通桥梁的作用,并能够有效的减少一些与实际硬件处理器实现相关的细节。将抽象机应用到位处理器中,从指令提取开始,然后进行指令的标记以及抽象机的执行,再进行指令的调度及其执行,最后进行指令的结果的写回。这样一种框架结构设计,使一些具有标签的指令技术得到应用,是程序中的一些指令级并行被挖掘出来并得以应用。(工作流程如图1所示)

硬件实现中的抽象机常在流水线的指令译码以及分析的阶段中,它所能实现的是带有标签指令的一种模式执行。就传统的处理器而言,其运行过程中,数据是先被输入到流水线中的,然后以流水线执行的形式产生出输出结果,该种结果以具体数值的形式体现出来,之后再被写回到相应的寄存器或者是内存中。硬件抽象机中所使用的是一种标签执行,不使用具体的数据。标签执行的环境下,当标签从抽象机或者是堆栈中被抹去之后,只能将模拟执行中新产生的标签再放回到抽象机中时才可以再次工作。这样一种模拟执行的方式与流水线执行有一些类似,但是这一过程中没有真实数据的参与,因此这一过程被称为一种虚拟的执行。在虚拟执行的过程中,通过对标签化转化的过程进行跟踪观察和分析和对实验数据的收集和统计分析来确定标签化转化的速度等,提高其运行的质量。

以硬件抽象机来完成模拟执行过程,是在流水线译码的阶段,是在分析标签状态以及标签间相互关系的基础上来实现的,在这一过程中可以通过对某一标签被使用的指令位置来识别相应程序块上的一些数据关系;以数据分析为基础来确定相应程序中的一些指令相关关系,并且以此来揭示指令级并行的可能性并且为后期流水段指令的调度等做好一些准备工作。在这种环境下,指令单元所完成的是一些基于标签的执行工作,其整个过程可以通过一些硬件来完成。对于指令流的处理方式上,更多的是以顺序的方式,但是就处理速度来将,比真实指令顺序执行的处理速度更快,能够更好的满足一些并行执行的现实需求。

以硬件抽象机的工作原理为基础,对其结构进行设计,使其在处理器中更好的完成相关指令的执行情况,从而提供其性能。在具体的设计中,要从指令流的执行情况,以标签形式或者指令流的形式来完成相关的执行工作,使程序指令得到更好的执行,提高抽象机的工作效能。在设计的基础上进行一定的模拟验证,从设计上来完善具体的执行性能,保证指令程序的运行正常,并且使其执行效果得到保证。通过硬件抽象机的应用,提高程序执行情况,使运行指令在系统内部得到有效的传输,并且不断提高指令流的执行效果,以执行效果来实现处理器性能的综合提高。

三、硬件抽象机的具体组成与工作过程

(一)硬件抽象机的组成部分

硬件抽象机由两个部分组成即指令标记单元及操作数标签堆栈(OTS),前者是将数据加载指令等生产者指令所产生出的结果标签放到操作数标签堆栈中,而数据存储指令等消费者指令则是在指令的标记过程中将OTS中所使用过的一些标签剔除。在这一过程中,指令标记技术能够在生产者指令与消费者指令间建立一种数据流的关系,为指令的传递及其具体的操作提供便利。操作数标签堆栈上的每一条指令,进入到指令单元时会分配到一个独有的标签,一个算数逻辑指令在被完成标记之后,在它被执行的时候,与之相应的指令输入的标签就会从OTS中弹出来,在执行完成之后会生成一个新的结果标签,该标签会被压入到OTS中去作为一个新的输入量来完成该种结果指令的传递。

(二)硬件抽象机的工作过程

硬件抽象机的堆栈处理器中操作数被特定的操作者使用以后,便被从执行堆栈中抹去。所以,一个数据加载指令的值只能为一个操作者指令所使用,这一操作中所形成的结果是能够以一个标签来作为唯一识别的。通过上面一种过程,Java字节码指令对之间消费者与生产者关系也可以用标签的形式识别出来,并且是一种类似于RISC处理其的执行,这样一种通过标签形式来完成的执行过程便是一个完整的模拟执行过程。

我们所提到的硬件抽象技术的应用和Java的指令折叠技术会出现一定的融合,这一过程中产生的一些指令代码等会通过指令折叠逻辑之后生成一些与RISC指令相似的指令。那些被标记之后带有一定标签的指令是可以用来调度执行的,并且标签使用过之后就会被释放,使其可以再重复应用。就执行的过程而言,指令标记技术的应用使得程序能够以数据流图(DFD)的形式来表达,对于操作数标签的记录和分析等可以等同于一种对指令间一些相关数据问题的分析,能够更好的揭示指令并行的问题,从而使指令能够以RISC等引擎执行。

从上述分析我们可以看出,抽象机的运行过程,是一个指令被标签化和执行的过程,通过标签输入或者输出来实现相关数据的传输和转化,从而使数据得以执行。通过仿真模拟运行,来发现抽象机运行中标签化运行情况以及指令的执行过程,并且进行比较分析,使其能够有效的应用到微处理器中。为了保证其正常运行,我们应该对其进行充分的实验和检验,综合考虑其标签化的过程时间、指令级并行情况等,选择性能更高者应用到处理器中,以保证处理器更好的发挥其作用。

(三)抽象机的优点

抽象机运行过程,是从指令流的执行情况,以标签的形式或者指令流的形式来完成相关的执行工作,使程序指令得到更好的执行,提高了抽象机的工作性能,保证了指令程序的运行正常,并且使其执行效果得到了保证。通过硬件抽象机的应用,提高程序执行情况,使运行指令在系统内部得到有效的传输,不断提高指令流的执行效果,以执行效果来实现处理器性能的提高。

四、Java 微处理器的组成和工作过程

(一)Java微处理器的工作原理

Java微处理器的流水线中内置有硬件抽象机,在工作中,硬件抽象机先成对的将指令标记,将Java字节转化成为一些带有标签的指令,然后再通过标签完成抽象的执行,从中发现一些堆栈的依赖问题并予以解决,将堆栈指令转化成为一些带有标签的以寄存器为基础的指令,从而把一些可以并行执行的指令转化成组合发射出去。(工作过程如图2所示)微处理器中,标签的匹配单元会根据它在堆栈寄存器文件中的标签映像的寄存器的值,实现对一些基于标签指令的操作数状态的有效跟踪。在这些基于标签指令的操作数处于就绪状态时,把它们添加到已经就绪序列中,然后通过硬件的逻辑将这些数据发射到RISC执行引擎执行中。微处理器中,指令一般是按照一定的顺序发射的,但是也允许乱序执行的现象,执行结果以及微处理器的状态更新会是按照一定的逻辑顺序来执行的。这种程序执行的逻辑顺序是一种程序执行的外部展现形式,能够有效的保证程序执行的正确性。

(二)Java微处理器的优点

通过理论分析和仿真实验验证,微处理器的这种结构形式,使指令在微处理器内部进行标签化的转化和执行,按照一定的程序,使各种指令被辨别执行,提高了微处理器的运作性能。同时,Java微处理器的结构能够有效的实现各种指令的顺序执行,使其对数据的传输和处理能力不断增强,使得微处理器的结构和性能更为完善。

五、抽象机与Java微处理器的结合

将抽象机与Java微处理器的优势有机结合,使其结构不断的优化,提高标签化的速度和指令执行的效果。对其结构进行设计时,要从微处理器的运行情况出发,对其结构形式进行合理的设计,使其能够满足数据和指令传输的要求。具体的应用中,将抽象机应用到Java微处理器,使得抽象机应用程序的调整以及指令的处理形式与Java微处理器的相关性能有机结合,从而提高微处理器指令执行的效果,从整体上提升Java微处理器的性能。(抽象机应用到Java微处理器如图3所示)

六、微处理器的软件模拟以及相关性能的评价

(一)微处理器结构的评价

从Java 微处理器的结构来看,在一定的运行环境下,通过对踪迹处理器性能的仿真器的应用来模拟微处理器的流水线工作过程,以它来对一些基于堆栈的硬件抽象机中的Java指令并行处理器进行仿真模拟。我们可以看到,在仿真器中,与标签匹配的单元中我们通常假定它包含了64个标签项。在模拟的过程中,我们利用修改过的开源JVM解释器,以此来获得微处理器中软件测试程序的相关字节码的执行流。这种仿真器以接收到的Java字节码流作为输入,并且对这些代码在指令流水线上进行一定的调度并完成执行。在仿真模拟实验的过程中,我们通过对SPECjvm98和Linpack基准的程序系统进行测试,前者包含了Compress等七个程序,通过对他们的分别测试来反应Java程序的不同应用情况,而sl数据集的一个用Mm程序等是一种单线程的版本程序。在仿真实验中,我们使用了静态预测器,在出现预读取错误的情况下,仿真器会产生三个周期短的惩罚时间。在我们的实验中,对于指令调度的限制是在基本序块中来完成的,它支持一些指令的预取,并且使指令缓冲器及其数据的缓存器都假定为全部命中的状态的。这样一种模拟仿真实验,能够更好的还原微处理器内部指令的流转和执行过程,使得各项程序都能顺畅的执行,保证微处理器性能的实现。

(二)微处理器ILP的执行加强

为了验证该种加强,我们先假定在微处理器是一种4发射的处理器,在同一个指令发射窗口中,当指令间没有相互依赖关系时,在相同的周期内,处理器能够同时发射出条指令并保证其得到执行。但是当指令间存在一定的依赖关系时,前面指令执行结束之后后面的指令才能被发射出去并被执行。这样一种运行基准的测试程序,能够得到Java微处理器的指令及其执行的百分率,通过对相关数据统计和分析,我们可以来确定微处理器运行的质量及其相关性能指数。通过与国外一些文献的比较,我们可以看到Java微处理器在ILP执行上的一些优势,文献中使用Cache来完成对Java程序代码的储存和执行,使其在之后的使用过程中能够直接从Cache中读取出相应的数据和指令,能够在很大程度上提高指令执行效率,并且该种形式使用的是定序的多发射结构形式,以堆栈技术排歧技术的应用来提高处理器的执行效率。从文献的结果来看,能够实现三指令组并行执行的微处理器是比较少的,没有相关的四指令执行组。与文献相比,我们所采用的仿真实验结果,三指令的并行执行比例是比较高的,而四指令的执行组在总指令执行中所占的比例变化范围是较大的,通过这种数据的统计比较,我们可以看出程序的特征直接影响指令的执行比率,而这也使我们看到Java微处理器结构能够实现更多的指令级并行。

(三)微处理器性能加强

在微处理器模拟实验中,将Java字节码假定为一种单周期执行,以此来获得ILP的相关性能加速比。从实验中,我们可以获取Java 微处理器以及基础弹发射的Java堆栈处理器的相关数据来比较ILP的加速比。就实验结果而言,我们可以看到前者可以实现幅度较大的指令集增强,这也体现了Java微处理器能够有效的实现平均ILP性能的加速。当我们以另外一种实现来进行相同指令周期的仿真模拟实验时,可以看到处理器与单发射堆栈处理器的加速效果是更好的。从测试程序来看,Java微处理器所获得的CPI的加速比是在13%到78%之间的,就实验结果而言,Mpegaudio因为它比其他程序可以实现更多的指令被执行,从而可以实现更好的性能加速比。此外,Compress,Mpegaudio和Linpack等程序也是我们在实验时所要注意的,对他们的运行所产生的CPI加速比结果进行一定的比较分析,得出其运行的类型等,以此来选择适宜的计算机程序,使微处理器能够更好的运行。

七、结语

在计算机技术不断发展的背景下,综合应用新技术对微处理器结构进行科学设计,使其性能不断提升。抽象机所具有的一些性能特点使其能够完成微处理器相关的功能需求,将其应用于Java微处理器中,使指令执行速度不断增强,从而提高其使用性能。在Java微处理器的结构设计上,从堆栈抽象机的工作流程来分析,对于微处理器中所使用的抽象机指令级并行情况进行一种仿真的验证,使处理器可以实现78%到173%的指令级并行上的增强,并且能够实现处理器性能的平均值的提高。

以抽象机的应用原理作为基本出发点进行综合的设计,保证其结构设计等能够更好地满足微处理器的运行需求。从抽象机运行的过程来分析其中的指令执行形式和过程,注重指令执行的效果,以提高抽象机的运行效率。在Java微处理器的设计中,从结构的设计出发,将抽象机与微处理器有机结合,以抽象机的工作流程来提高微处理器中指令级并行执行的量。在结构设计完成时,要应进行一定的实验,测试不同系统下微处理器的运行情况,从而为微处理器的运行选择最佳的运行系统环境,提高其综合运行的质量。

从技术扩展的角度出发,硬件抽象机的应用能够与动态指令的翻译有机结合,从而实现处理器执行引擎的有效利用,是不同的机器代码得以动态执行。对于基于硬件抽象机的微处理器的具体设计方法,我们可以根据指令集计算机的执行和处理器情况来利用一些高性能的处理器内核从而实现一些结构上的兼容。在微处理器元件的选择上,从扩展的角度出发,结合计算机技术的发展方向等使其具有一定的扩展性,使其指令级的执行等能够被执行,从而提高微处理器的性能。

参考文献:

[1]Hai-chen Wang,Xiang-Mo Zhao,Hai-Sheng Wang,An abstract machine-based dynamatic translation technique in java processors[J],2010(1)

[2]H.C.Wang,C.K.Yuen, Exploiting an abstract-machine-based framework in the design of a Java ILP processor[J], Journal of Systems Architecture: the EUROMICRO Journal,2009(1)

[3]王永文,张民选. 高性能微处理器微体系结构级功耗模型及分析[J].计算机学报,2004(10)

[4]王海晨,赵祥模.抽象机在Java微处理器中的应用研究[J].计算机技术与发展,2011(6)

[5]王祚栋,魏少军.微处理器功能验证的模拟加速方法[J].计算机辅助设计与图形学学报,2005(8)

[6]张良,易江芳,佟冬,程旭,王克义. 使用局部建模的微处理器测试程序自动生成方法[J].电子学报,2011(7)

[7] McGhan H,Connor M O’.PicoJava:A Direct Execution Engine for Java Bytecode[J].IEEE Computer,1998.31:22~3O.

[8]Embedded Java Processor[C]∥Proceedings of the 27th Inter—national Symposium on Computer Architecture.[S.1.]:[S.n.],2000:294-305.

[9]Connor M O’,Michael J.picoJava-I:The Java Virtual Ma—chine in Hardware[J].IEEE Micro,1997,17:45—53.

[10]Diehl S,Hartel P,Sestofi P.Abstract machines for program—ming language implementation[J].Future Generation Corn—puter Systems,2000,16:739-751.

[11]Lee J,Smith A J.Branch prediction strategies and branch target buffer design[J].IEEE Computer,1984,17:6-22.

[12]Hu S L,Kim I,Lipasti M H.et a1.An approach for imple—menting eficient superscalar cisc processors[C]∥In Proc.Of the 12th International Symposium on High-Performance Com·-puterArchitecture(HPCA一12).Austin,TX:[S.n.],2006.

作者简介:马畅翼,女,1994年生,山东省日照市人,曲阜师范大学计算机科学学院学生。主要研究数据挖掘技术在生物信息学方面的应用,用粒子群算法解决了SNP互作模式识别的问题。

推荐访问: 微处理器 抽象 研究 Java