一种Java处理器的体系结构设计与研究
发布时间:2020-06-14 19:46
【摘要】:随着普适计算和移动计算的发展,嵌入式系统得到越来越广泛的应用。各种嵌入式设备的不断涌现,对系统的可移植性和开发效率提出了更高的要求。与传统的开发语言C/C++相比,java语言由于其具有可移植性,安全性能高以及简单易学等一系列优势,得到了越来越广泛的应用。 然而由于java语言固有的解析执行的特点,其执行效率也限制了其在实时领域的应用。即使目前java虚拟机都引入了即时编译技术(JIT),然而该技术是以消耗更多的内存为代价的。在嵌入式系统内存稀缺的状况下,该技术实际给系统带来的好处也是值得商榷的。同时java程序需要在实际执行前,完成class文件加载和解析等一些列操作,也在一定程度上限制了系统的执行效率。因此如何设计一种能够提高java程序运行效率的方案,成为现在研究的热点和难点。 实时java平台主要由执行引擎和支持实时性的软件环境组成。执行引擎有多种实现方式,包括基于软件的解析执行;即时编译;java硬件加速器以及java处理器等。根据国家自然科学基金项目---高可靠实时系统的计算平台(SoPC)研究(基金号:60703106)[1]。本研究小组设计并实现了一种Java处理器引擎——Jpor32(Java Processor Optimized for RTSJ)。该实时java平台主要包括:class文件转换器;Java处理器的实现以及相关类库的实现。 在本文中,将详细论述如何将不适合在硬件平台直接执行的class文件转换为一种适合在硬件环境下执行的文件。同时基于该种可执行文件的结构,设计出一种高效的硬件执行引擎来代替传统的java虚拟机的执行,已达到加速java执行的目的。同时还详细描述了基于该平台的垃圾收集库的具体实现。
【学位授予单位】:复旦大学
【学位级别】:硕士
【学位授予年份】:2011
【分类号】:TP368.1
【图文】:
代替java虚拟机是不现实的,因此在我们的设计中,整个传统的java虚拟机将被粗略的划分为:dass文件转换器部分和硬件执行引擎部分,下两章节将详细的描述这两部分的具体实现。图2一1是整个java虚拟机的结构框架图。类加载子系统需要完成定位和导入二进制文件外,还必须完成校验类的正确性,为类变量分配初始化的内存,以及符号解析等一系列动作。而这些步骤必须严格按照如下的顺序进行191:1.装载—装载相应的二进制数据。2.链接—执行验证,准备,解析等过程。首先其需要确保导入类型的正确性,为类变量分配内存以及将相关的域初始化为默认值。并且需要将符号引用转换为直接引用。c/‘伏、/了/犷t、心争r丫卜rr不下卜rr,rrr丫r丫卜卜‘r,李‘‘于护几卜‘‘去...,‘..,琴代丁卜.卜.几卜..几.t.卜巨卜﨑﨑口.﨑﨑口..甘.卜.﨑..卜卜j毛一、夏生5轰aCksr勺atlVC一11C畜!lods导;Ick、rLzn走i一 11edata公rCaSA丫户7(211、1亡刀了clh(夕‘li
加载阶段存储在方法区,而在实际执行getfield指令时,虚拟机需要以index为关键字在方法区中属于该类的数据结构中查找该域的实际偏移量,从而最终完成取数据操作。图2一2是heap区和method区常见的一种联系方式。 2.3Java栈在Java程序中每一个线程都会对应于一个属于自己的栈。栈中不仅包括了方法的局部变量,入口和返回参数区域,以及方法调用需要保存的相关数据,更为重要的是 javabytecode都是基于栈操作的,因此与传统的基于寄存器的体系结构不同,栈充当
本文编号:2713268
【学位授予单位】:复旦大学
【学位级别】:硕士
【学位授予年份】:2011
【分类号】:TP368.1
【图文】:
代替java虚拟机是不现实的,因此在我们的设计中,整个传统的java虚拟机将被粗略的划分为:dass文件转换器部分和硬件执行引擎部分,下两章节将详细的描述这两部分的具体实现。图2一1是整个java虚拟机的结构框架图。类加载子系统需要完成定位和导入二进制文件外,还必须完成校验类的正确性,为类变量分配初始化的内存,以及符号解析等一系列动作。而这些步骤必须严格按照如下的顺序进行191:1.装载—装载相应的二进制数据。2.链接—执行验证,准备,解析等过程。首先其需要确保导入类型的正确性,为类变量分配内存以及将相关的域初始化为默认值。并且需要将符号引用转换为直接引用。c/‘伏、/了/犷t、心争r丫卜rr不下卜rr,rrr丫r丫卜卜‘r,李‘‘于护几卜‘‘去...,‘..,琴代丁卜.卜.几卜..几.t.卜巨卜﨑﨑口.﨑﨑口..甘.卜.﨑..卜卜j毛一、夏生5轰aCksr勺atlVC一11C畜!lods导;Ick、rLzn走i一 11edata公rCaSA丫户7(211、1亡刀了clh(夕‘li
加载阶段存储在方法区,而在实际执行getfield指令时,虚拟机需要以index为关键字在方法区中属于该类的数据结构中查找该域的实际偏移量,从而最终完成取数据操作。图2一2是heap区和method区常见的一种联系方式。 2.3Java栈在Java程序中每一个线程都会对应于一个属于自己的栈。栈中不仅包括了方法的局部变量,入口和返回参数区域,以及方法调用需要保存的相关数据,更为重要的是 javabytecode都是基于栈操作的,因此与传统的基于寄存器的体系结构不同,栈充当
【参考文献】
相关期刊论文 前2条
1 柴志雷;高丽强;陈章龙;涂时亮;;一种用于硬实时Java处理器的类转换器设计及实现[J];小型微型计算机系统;2006年12期
2 叶新栋;柴志雷;涂时亮;;一种Java处理器的体系结构设计与研究[J];小型微型计算机系统;2011年03期
本文编号:2713268
本文链接:https://www.wllwen.com/kejilunwen/jisuanjikexuelunwen/2713268.html