This paper describes in a general way the process we went through to determine the goals, principles, audience, content and style for writing comments in source code for the java platform at the java Software division...
详细信息
作者:
Cardoso, João M PNeto, Horácio CINESC
University of Algarve Rua Alves Redol n. 9 3rd. Floor 1000 Lisboa Portugal INESC
IST Rua Alves Redol n. 9 3rd. Floor 1000 Lisboa Portugal
This paper presents a new approach to synthesize to reconfigurable hardware (HW) user-specified regions of a program, under the assumption of "virtual HW" support. The automation of this approach is supporte...
详细信息
This paper presents a new approach to synthesize to reconfigurable hardware (HW) user-specified regions of a program, under the assumption of "virtual HW" support. The automation of this approach is supported by a compiler front-end and by an HW compiler under development. The front-end starts from the java bytecodes and, therefore, supports any language that can be compiled to the JVM (java Virtual Machine) model. It extracts from the bytecodes all the dependencies inside and between basic blocks. This information is stored in representation graphs more suitable to efficiently exploit the existent parallelism in the program than those typically used in high-level synthesis. From the intermediate representations the HW compiler exploits the temporal partitions at the behavior level, resolves memory access conflicts, and generates the VHDL descriptions at register-transfer level that will be mapped into the reconfigurable HW devices.
Using java in embedded systems is plagued by problems of limited runtime performance and unpredictable runtime behavior. The java Multi-Threaded Processor (JMTP) provides solutions to these problems. The JMTP architec...
详细信息
Using java in embedded systems is plagued by problems of limited runtime performance and unpredictable runtime behavior. The java Multi-Threaded Processor (JMTP) provides solutions to these problems. The JMTP architecture is a single chip containing an off-the-shelf general purpose processor core coupled with an array of java Thread Processors (JTPs). Performance can be improved using this architecture by exploiting coarse-grained parallelism in the application. These performance improvements are achieved with relatively small hardware costs. Runtime predictability is improved by implementing a subset of the java Virtual Machine (JVM) specification in the JTP and trimming away complexity without excessively restricting the java code a JTP can handle. Moreover, the JMTP architecture incorporates hardware to adaptively manage shared JMTP resources in order to satisfy JTP thread timing constraints or provide an early warning for a timing violation. This is an important feature for applications with quality-of-service demands. In addition to the hardware architecture, we describe a software framework that analyzes a java application for expressed and implicit coarse-grained concurrent threads to execute on JTPs. This framework identifies the optimal mapping of an application to a JMTP with an arbitrary number of JTPs. We have tested this framework on a variety of applications including IDEA encryption with different JTP configurations and confirmed that the algorithm was able to obtain desired results in each case.
This paper presents a sound type system for a large subset of the java bytecode language including classes, interfaces, constructors, methods, exceptions, and bytecode subroutines. This work serves as the foundation f...
详细信息
This paper presents a sound type system for a large subset of the java bytecode language including classes, interfaces, constructors, methods, exceptions, and bytecode subroutines. This work serves as the foundation for developing a formal specification of the bytecode language and the java Virtual Machine's bytecode verifier. We also describe a prototype implementation of a type checker for our system and discuss some of the other applications of this work. For example, we show how to extend our work to examine other program properties, such as the correct use of object locks.
Presents an experiment in understanding how learners of the java programming language comprehend its concepts, such as classes, inheritance, interfaces, etc., in lectures and exercises. The authors used an empirical t...
详细信息
The programminglanguagejava has become too important to be ignored by embedded system designers. The bottleneck for launching java into the high volume embedded system market is that the traditional ways to execute ...
详细信息
Jalapeno is a virtual machine for java servers written in java. A running java program involves four layers of functionality: the user code, the virtual-machine, the operating system, and the hardware. By drawing the ...
详细信息
Jalapeno is a virtual machine for java servers written in java. A running java program involves four layers of functionality: the user code, the virtual-machine, the operating system, and the hardware. By drawing the java / non-java boundary below the virtual machine rather than above it, Jalapeno reduces the boundary-crossing overhead and opens up more opportunities for optimization. To get Jalapeno started, a boot image of a working Jalapeno virtual machine is concocted and written to a file. Later, this file can be loaded into memory and executed. Because the boot image consists entirely of java objects, it can be concocted by a java program that runs in any JVM. This program uses reflection to convert the boot image into Jalapeno's object format. A special MAGIC class allows unsafe casts and direct access to the hardware. Methods of this class are recognized by Jalapeno's three compilers, which ignore their bytecodes and emit special-purpose machine code. User code will not be allowed to call MAGIC methods so java's integrity is preserved. A small non-java program is used to start up a boot image and as an interface to the operating system. java's programming features - object orientation, type safety, automatic memory management - greatly facilitated development of Jalapeno. However, we also discovered some of the language's limitations.
An integral part of implementing functional languages is closure conversion - the process of converting code with free variables into closed code and auxiliary data structures. Closure conversion has been extensively ...
详细信息
This paper presents a combined pointer and escape analysis algorithm for java programs. The algorithm is based on the abstraction of points-to escape graphs, which characterize how local variables and fields in object...
详细信息
This paper presents a combined pointer and escape analysis algorithm for java programs. The algorithm is based on the abstraction of points-to escape graphs, which characterize how local variables and fields in objects refer to other objects. Each points-to escape graph also contains escape information, which characterizes how objects allocated in one region of the program can escape to be accessed by another region. The algorithm is designed to analyze arbitrary regions of complete or incomplete programs, obtaining complete information for objects that do not escape the analyzed regions. We have developed an implementation that uses the escape information to eliminate synchronization for objects that are accessed by only one thread and to allocate objects on the stack instead of in the heap. Our experimental results are encouraging. We were able to analyze programs tens of thousands of lines long. For our benchmark programs, our algorithms enable the elimination of between 24% and 67% of the synchronization operations. They also enable the stack allocation of between 22% and 95% of the objects.
java programs perform many synchronization operations on data structures. Some of these synchronizations are unnecessary;in particular, if an object is reachable only by a single thread, concurrent access is impossibl...
详细信息
java programs perform many synchronization operations on data structures. Some of these synchronizations are unnecessary;in particular, if an object is reachable only by a single thread, concurrent access is impossible and no synchronization is needed. We describe an interprocedural, flow- and context-insensitive data-flow analysis that finds such situations. A global optimizing transformation then eliminates synchronizations on these objects. For every program in our suite of ten java benchmarks consisting of SPECjvm98 and others, our system optimizes over 90% of the alias sets containing at least one synchronized object. As a result, the dynamic frequency of synchronizations is reduced by up to 99%. For two benchmarks that perform synchronizations very frequently, this optimization leads to speedups of 36% and 20%.
暂无评论