Java Reference
In-Depth Information
Full implementations of the RTSJ specification can be too large for some
embedded systems and not all of its capabilities are required for every real-time
application. So some Java real-time systems use subsets of the RTSJ or they use
independent extensions to obtain a smaller memory footprint.
Real-time programming in Java, and in general, involves a number of com-
plex topics and techniques. See the topic by Dibble [5] and the other real-time
references for more information [6-13].
24.5 Java real machines
Until this chapter we have always assumed that Java program files provide byte-
code instructions to Java Virtual Machine programs running on conventional
processors. However, there is nothing to block the development of a Java Real
Machine that executes bytecodes directly in hardware. Sun Microsystems proved
this in the late 1990s with its picoJava and since then several independent Java
hardware implementations have hit the market.
The JVM specification requires a stack-based processing scheme rather than
the register approach common in conventional hardware (see the JVM discussions
in the Web Course supplements section for more information about the JVM
design). The language designers wanted Java to run on a wide range of processors,
including simple embedded types with few registers, and so decided the stack
approach was the most portable.
Java processors cover a wide range of designs and purposes. A standalone Java
chip provides all the capabilities needed to act as a general-purpose computer.
The processor executes the bytecodes directly. Most of the current processors
actually execute only a subset of the full Java instruction set. For example, a chip
might leave out the floating-point instructions since for many applications, such
as for a micro-controller, floating-point instructions may or may not be needed.
Another approach is to add a Java co-processor to a conventional processor.
The Java co-processor in some designs translates the bytecodes into the instruction
set of the conventional processor and accelerates the running of Java programs.
In a “companion processor” approach, the Java hardware takes over the execution
of Java bytecodes completely whenever a Java program runs while the operating
system and non-Java code run separately in the conventional processor.
AJava processor may refer to a core ,which is a circuit that can be added to
a FPGA (Field-Programmable Gate Array) or ASIC/SoC (Application Specific
Integrated Circuit/System-on-a-Chip). In some cases a core acts as the primary
processor while in others it acts as a co-processor to speed up Java programs. Such
cores are not generally available on silicon but are sold as intellectual property,
in the form of RTL (Register Transfer Language) descriptions of the circuits, to
those who make the chips.
The JVM uses an 8-bit instruction word and currently about 200 of the pos-
sible 256 instructions are used in the class bytecodes [4]. Some instructions are
Search WWH ::




Custom Search