Real-time apps using multi-threads.
By Paul Evans, Imagination Technologies, www.imgtec.com
Consumer electronics devices are increasingly high performance, real time applications where high data rates and sophisticated real-time event handling are required. Delivering suitable real time performance can be achieved by using a variety of techniques, such as including multiple processors. A more effective solution (low power, low cost and small silicon area) is hardware multi threading which delivers real time response in a tight silicon and power budget.
But wait a minute! Aren't real-time and multi-threading diametrically opposed? If I have two processors in my system, one for real-time, say a DSP audio algorithm and the other for non-real-time, say running the user interface (UI) and communications (Ethernet) etc., then how could I ever combine them? How can hardware multi-threading offer the determinism required for real-time tasks to meet their schedule?
You are likely to quickly encounter problems using a conventional single threaded CPU if you schedule tasks with disparate event rates and activity patterns on a single thread using a common OS.
However, hardware multi-threading (distinct from software threading) allows separating real-time tasks with widely differing scheduling requirements into different software schedules. This means a subsystem based on a complex multi-functional OS such as Android can run on one hardware thread while a real-time data-driven DSP task runs on another. The DSP task might be based on a simple synchronous I0 driven scheduling strategy which would be completely independent of the interrupts and device drivers in the other subsystem.
How is this possible?
It requires a processor with three capabilities: 1) Multi-threading, 2) Simultaneous Multi-threading (SMT) and 3) Intelligent scheduling and prioritization.
Why hardware multi-threading and, not super-scalar?
In super-scalar you are launching multiple instructions from the same thread. Most standard programs do not inherently have a lot of fine-grained parallelism in them, so finding a 'close-by' second instruction to execute in the same cycle is difficult because it commonly isn't there. In multi-threading, you are launching multiple instructions from different threads or programs. Your system now looks like multiple processors running multiple OS or programs independently from each other, occasionally communicating. This makes programming a hardware multi-threaded processor, like the MetaCPU developed by Imagination, straightforward since you are not trying to write a program designed to handle parallelism; you're writing normal independent programs and just running them on the same silicon. Meta provides an inter-thread communication protocol to talk between the virtual processors.
But aren't these threads or virtual processors all fighting for the same resource?
Not really. Cache misses create space in time or idle resource. And a technique known assimultaneous multi-threading maximizes resource usage rather than creating resource conflicts as (we shall see).
Be sure to read the complete, online version of this article at www.ecnmag.comitopics/design-talk
|Printer friendly Cite/link Email Feedback|
|Publication:||ECN-Electronic Component News|
|Date:||Jun 1, 2012|
|Previous Article:||Barrier films in e-readers: their form and function.|
|Next Article:||Multi-output regulators include supervisory and watchdog timers.|