"Traditionally real-time was measured from the perspective of human patience, and if you pushed a button and got information within a second that was real-time," agrees David Barnett, vice president of Real-Time Innovations, a systems integrator in Sunnyvale, Calif. "But a real-time system is one that behaves deterministically, responding predictably to inputs or changes in the environment. Typically these are cyber-physical systems, used to manage a physical process.
"Observers often confuse real-time computing with high-speed computing, such as financial trading or sports betting," adds Barnett. "The difference between high-speed computing and real-time computing is that with high-speed computing you are talking about averages -- you can say on average an operation takes a millisecond. But one time in a thousand it takes much longer. With real-time computing you are confident the operation took place within the deadline, or you know it didn't happen."
Deterministic responses are not accidental, and require a real-time operating system (RTOS), of which there are several dozen on the market -- although, as with many established industries, there are three leaders.
"Wind River with VxWorks is the overall leader," says Barnett, "and then there's Green Hills Software with Integrity, popular in aerospace and defense; and QNX from QNX Software Systems, owned by BlackBerry, popular in automotive and healthcare." Wind River also has a real-time version of Linux.
"Determinism must be baked in; you will not see it on a desktop," says Grant Courville, director of product management at QNX. "You have to care about every CPU cycle and every microsecond. It has to be designed for consistency."
While NI was able to make a real-time version of Linux (NI Linux Real-Time), the effort involved was not trivial, notes Jamie Smith, NI's director of product marketing for embedded systems. "We did an evaluation at the kernel level, dug in and did extensive modifications and testing. The team was fairly large. But this brings real-time computing to the hands of engineers who are not embedded software engineers."
Of course, there will be variations between the time it takes the system to perform the same task at separate moments, and this tolerance is called jitter.
"It determines how good an RTOS is, but it is also very hardware dependent," says Dubal. "Ours is usually two-digit nanoseconds."
Barnett says that with modern processors, jitter is usually measured in microseconds, which is good enough for most applications.
Jitter is not worth talking about with general-purpose programming environments like Java, since they are optimized around a typical case, Barnett adds. "If it is out of memory and needs to do garbage collection to free up memory, it stops to do that, and blocks out all other processing. In real-time computing you devote a little extra work to things like that on every cycle, to avoid longer delays later."
Sign up for CIO Asia eNewsletters.