Embedded Processors, Part Two

Share This article

In Part One we provided an overview of the embedded processor market and reviewed the key players and their products. In this segment, we’ll drill deeper into variations on the embedded theme, such as Java chips and various types of custom embedded processors. We’ll also look at unique microarchitectural features and programming constructs that differentiate embedded processors from mainstream CPUs. Finally, we’ll cover some methods of measuring embedded processor performance, which is no easy feat.

Java Chips

One class of processor that seems perpetually just over the horizon is Java chips. These are (or were planned to be) specially designed processors that executed Java bytecode natively, without an interpreter or compiler. Apart from being spectacularly ironic (the whole point of Java was to be CPU independent!), it’s also stupendously difficult. Java runs poorly on all of today’s microprocessors. This isn’t because the good Java processors aren’t here yet. It’s because Java is innately difficult to run, regardless of what hardware it runs on. So far, Java has heroically resisted all attempts to improve its performance.

Not that many haven’t tried. Sun itself, the original percolator of Java, proposed but then abandoned plans for a whole series of Java processors. MicroJava, PicoJava, and UltraJava were announced around 1998, with first silicon expected by 1999. Apart from a few sample prototypes, nothing ever came of the MicroJava 701, the first chip in the planned series. Sun then tried licensing PicoJava to a handful of Japanese vendors, but again nothing came of it. UltraJava never even got off the drawing board.

There’s also been plenty of activity outside Sun. PTSC, Nazomi Communications (originally named Jedi Technology), and others have all toyed with hardware acceleration for Java. PTSC’s Ignite-1 processor did a good job of accelerating the easy parts of Java. It’s stack-based, like Java itself (and like HP calculators), so fundamental functions work smoothly and efficiently. But where all processors fall short is in accelerating the difficult parts of Java, such as garbage collection and task threading. It is precisely these sorts of functions that give Java its portability and power, and that also make it practically impossible to function entirely in hardware.

Java Accelerators

In the end, every company has retreated from the goal of an “all-Java” processor and fallen back on providing “hardware assists” for Java, while leaving the complex and awkward functions to software. As accelerators, these work fine. Just don’t assume that they really run Java bytecode natively. Six examples of these accelerators are provided in the following table.

ARM’s Jazelle bolts onto a special ARM9 core, so this has the advantage of being ARM compatible, if that’s interesting to you. On the downside, Jazelle uses some of the ARM processor’s resources in handling Java, so performance on normal (non-Java) code will suffer. Nazomi’s Jstar is similar in concept: it’s a coprocessor for an existing processor. One advantage of Nazomi is that its accelerators can theoretically work with any processor, although MIPS is the only one it currently supports. InSilicon’s JVXtreme is much the same– it can be used in tandem with most other CPUs. Its small size makes it cheap to manufacture in volume, but also limits its performance because there’s not much hardware there to provide an assist.

MachStream from Parthus promises better performance than any of the above coprocessors, but you pay for it in larger circuit size and increased memory usage. Both DeCaf (from Aurora VLSI) and Xpresso (from Zucatto) are closer to being standalone processors, although they can be used as coprocessors if you wish. Because both can be used standalone, they’re pretty big as these things go. On the other hand, both promise better performance than their more lightweight competitors.

This is probably about as far as Java processors will go. Some very bright minds have looked at the problem and there’s just not much more help that hardware can give. Java was invented to be hardware independent, and it looks as though it’s succeeded.

Use of this site is governed by our Terms of Use and Privacy Policy. Copyright 1996-2015 Ziff Davis, LLC.PCMag Digital Group All Rights Reserved. ExtremeTech is a registered trademark of Ziff Davis, LLC. Reproduction in whole or in part in any form or medium without express written permission of Ziff Davis, LLC. is prohibited.