Expedited Real-time Threads (or XRTs) are a safe subset of Java that are validated before execution using data-sensitive analysis. XRTs run at frequencies up to 50 KHz (20 microsecond periods) achieving the same latency and jitter performance as programs written in C.
XRTs support a limited, safe, exception-free programming model. The data structures used by XRTs must have constant "shape" (that is, the pointers must all be final), but the data is mutable.
XRTs and Metronome real-time garbage collection together provide a comprehensive real-time programming environment consisting entirely of standard Java. Tasks at frequencies of up to 1 KHz are handled by Metronome. From 1 KHz up to 50 KHz or more, XRTs can be used.
XRTs were previously called "Eventrons" in our initial research prototype.
SOFTWARE
XRTs are available for download from IBM alphaWorks.
PUBLICATIONS
Daniel Spoonhower, Joshua Auerbach, David F. Bacon, Perry Cheng, and David Grove,
Eventrons: A Safe Programming Construct for High-Frequency Hard Real-Time Applications.
Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (Ottawa, Ontario, June 2006), ACM SIGPLAN Notices, volume 41, number 6, pp. 283-294.
PDF
XRT Visualization
Visualization of XRT execution using the "oscilloscope" view of TuningFork, which is used for viewing very high-frequency events. The XRT is running at 22.05 KHz and generating unbuffered audio. Each "strip" shows 181 microseconds of execution, or four 45 microsecond periods of XRT. Each blue bar represents an execution of the XRT, and the red blips are the Metronome "beat" scheduler.
100 strips are shown, allowing the visualization of 18 milliseconds of data. It can easily be seen that there are a number of XRT executions which either begin late or take too long to execute. These are due to interference from the Linux clock interrupt handler.
