picoJava is a
microprocessor
A microprocessor is a computer processor where the data processing logic and control is included on a single integrated circuit, or a small number of integrated circuits. The microprocessor contains the arithmetic, logic, and control circ ...
specification dedicated to
native execution of
Java bytecode
In computing, Java bytecode is the bytecode-structured instruction set of the Java virtual machine (JVM), a virtual machine that enables a computer to run programs written in the Java programming language and several other programming langua ...
without the need for an
interpreter or
just-in-time compilation
In computing, just-in-time (JIT) compilation (also dynamic translation or run-time compilations) is a way of executing computer code that involves compilation during execution of a program (at run time) rather than before execution. This may co ...
. The aim is to speed bytecode execution up by up to 20 times, compared to standard Intel
CPU with a
Java virtual machine.
GNU Compiler Collection
The GNU Compiler Collection (GCC) is an optimizing compiler produced by the GNU Project supporting various programming languages, hardware architectures and operating systems. The Free Software Foundation (FSF) distributes GCC as free softwar ...
has been available until version 3.2.3 as machine definition 'pj,' probably first patch was for version 2.9.
GNU Binutils
The GNU Binary Utilities, or , are a set of programming tools for creating and managing binary programs, object files, libraries, profile data, and assembly source code.
Tools
They were originally written by programmers at Cygnus Solutions.
...
is still available as machine definition 'pj,' as of Binutil version 2.28.
GNU Debugger
The GNU Debugger (GDB) is a portable debugger that runs on many Unix-like systems and works for many programming languages, including Ada, C, C++, Objective-C, Free Pascal, Fortran, Go, and partially others.
History
GDB was first written ...
was once implemented, but code might be lost.
Sun Microsystems provided
instruction set simulator
An instruction set simulator (ISS) is a simulation model, usually coded in a high-level programming language, which mimics the behavior of a mainframe or microprocessor by "reading" instructions and maintaining internal variables which represent t ...
worked with
GDB
The GNU Debugger (GDB) is a portable debugger that runs on many Unix-like systems and works for many programming languages, including Ada, C, C++, Objective-C, Free Pascal, Fortran, Go, and partially others.
History
GDB was first written by ...
as SCSL
open source code
Open-source software (OSS) is Software, computer software that is released under a Open-source license, license in which the copyright holder grants users the rights to use, study, change, and Software distribution, distribute the software an ...
.
This approach results in the fastest Java runtime performance with a small
memory footprint
Memory footprint refers to the amount of main memory that a program uses or references while running.
The word footprint generally refers to the extent of physical dimensions that an object occupies, giving a sense of its size. In computing, the ...
and competitive performance on code not written in the Java language.
The picoJava specification does not include any
memory
Memory is the faculty of the mind by which data or information is encoded, stored, and retrieved when needed. It is the retention of information over time for the purpose of influencing future action. If past events could not be remembered ...
or
I/O interface
In computing, input/output (I/O, or informally io or IO) is the communication between an information processing system, such as a computer, and the outside world, possibly a human or another information processing system. Inputs are the signals ...
logic, so that developers can add their own logic to customize memory and an
interface
Interface or interfacing may refer to:
Academic journals
* ''Interface'' (journal), by the Electrochemical Society
* '' Interface, Journal of Applied Linguistics'', now merged with ''ITL International Journal of Applied Linguistics''
* '' Int ...
.
Products
picoJava was originally designed to be used in consumer electronic products that run Java applications.
Sun Microsystems never released a product based on this technology; however, Sun have licensed the technology to companies such as Fujitsu, NEC and Siemens. The
Verilog
Verilog, standardized as IEEE 1364, is a hardware description language (HDL) used to model electronic systems. It is most commonly used in the design and verification of digital circuits at the register-transfer level of abstraction. It is als ...
code of picoJava was later released under SCSL
open source code
Open-source software (OSS) is Software, computer software that is released under a Open-source license, license in which the copyright holder grants users the rights to use, study, change, and Software distribution, distribute the software an ...
, but the download page is currently not available.
In 2000
Fujitsu released the ''J-Starter Kit'', a development system featuring a picoJava Architecture processor.
The open-source version of picoJava has been implemented in an
FPGA.
See also
*
Jazelle
Jazelle DBX (direct bytecode execution) is an extension that allows some ARM processors to execute Java bytecode in hardware as a third execution state alongside the existing ARM and Thumb modes. Jazelle functionality was specified in the ARMv5TE ...
*
MAJC
MAJC (Microprocessor Architecture for Java Computing) was a Sun Microsystems multi-core, multithreaded, very long instruction word (VLIW) microprocessor design from the mid-to-late 1990s. Originally called the UltraJava processor, the MAJC proces ...
Notes
References
* McGhan, Harlan; O’Connor, Mike (October 1998). "PicoJava: A Direct Execution Engine For Java Bytecode". ''
Computer'', Volume 31, Issue 10: pp. 22–30.
* O’Connor, J. Michael;
Tremblay, Marc (March/April 1997). "picoJava-I: The Java Virtual Machine in Hardware". ''
IEEE Micro
''IEEE Micro'' is a peer-reviewed scientific journal published by the IEEE Computer Society covering small systems and semiconductor chips, including integrated circuit processes and practices, project management, development tools and infrastruc ...
'', Volume 17, Issue 2: pp. 45–53.
* Hangal, Sudheendra; O'Connor, J. Michael (May/June 1999). "Performance analysis and validation of the picoJava processor." ''
IEEE Micro
''IEEE Micro'' is a peer-reviewed scientific journal published by the IEEE Computer Society covering small systems and semiconductor chips, including integrated circuit processes and practices, project management, development tools and infrastruc ...
'', Volume 19, Issue 3.
External links
picoJavaat Sun Community Source Licensing (SCSL)
Java virtual machine
{{Compu-hardware-stub