• About Jakob Engblom and this blog
Observations from Uppsala Computer Simulation, Virtual Platforms, Embedded Programming, Multicore and More (by Jakob Engblom)

When Multicore makes Things Simpler, like IMA

2007 December 6 10:23 / 4 Comments / Jakob

Most of the time when talking about the impact of multicore processing on software, we complain that it makes the software more complicated because it has to cope with the additional complexities of parallelism. There are some cases, however, when moving to multicore hardware allows a software structure to be simplified. The case of Integrated Modular Avionics (IMA) and the honestly idiotic design of the ARINC 653 standard is one such case.
The idea behind IMA is to make it easier to write safety-critical software by allowing a single processor to run code certified at different safety levels. The problem is that the current regulations require that every set of programs that can run together and share some computer system have to be verified to the level of the most critical program in the set. This makes excellent sense — you do not want a failure in the non-critical entertainment program to mess up the very important flight control software, right?

But since it is rarely the case that you can partition your system in such a way that the programs at the same level of integrity nicely fill up a single available processor, you risk either having underutilized processors or to overqualify your software. Enter the IMA vision and the ARINC 623 standard. The idea here is to have a powerful and correct operating system temporally divide a processor into multiple logical partitions, where each partition is isolated from the other partitions. Inside each partition, you then have programs of a single level of criticality. But each partition can have a different level. Very similar to classic virtualization in this respect.

However, the problem with this comes in implementation and efficiency. Basically, to ensure that partitions cannot starve each other out of CPU resources or otherwise peek or change each other’s state, you have to clean out the entire CPU state each time you change partition. This means cleaning out caches, TLBs, and making sure all memory operations have completed. On a single processor, this is obviously at odds with any kind of performance engineering. And this happens several times per second.

Now that airborne systems are starting to be built using multicore processors, the solution chosen by Green Hills and other providers is to divide the multicore complex temporally as well. So you need to do a synchronized total state clean across all cores when changing partition. And inside each partition, you have to write parallel software. So you get the worst of both worlds: huge inefficiencies and overheads, along with the complexities of writing parallel software.

One word: ridiculous.

The obvious solution here is instead to take advantage of the fact that multicore is making processor cores cheap and plentiful. The fundamental assumption behind IMA, that processors are few and expensive resources, is not really true any more. Instead, it makes perfect sense to engineer a system so that each safety level gets its own physical CPU to run on.

This brings several benefits:

  • Slightly increased safety, since you have physical separation that is not dependent on a software OS kernel.
  • Better resource utilization, since wasteful cache flushes and TLB flushes are avoided.
  • Simpler software engineering, since you do not have to write parallel code.
  • Lower clock frequencies and lower power consumption, since each processor core can be slower.
  • Simpler software structure, without the extra baggage of a supervisor OS scheduling partitions.
  • If you need timing assurances for some software, you can put that on a specially simplified processor without caches or complex performance-enhancing features. The ARM966 core is a good example of this, or assigning DSPs or specialized math processors to compute-intensive algorithms.

Some detail notes:

  • If some program does require the full power of a multicore device to run, this solution still makes sense. In every case where you use IMA, you are wasting performance doing switching between partitions.
  • You do need hardware where you can assign particular resources to each core on a multicore device — there are usually shared resources on a chip that need to be properly maintained.
  • The best off-the-shelf hardware to buy would seem to be a classic AMP design like a TI OMAP or some automotive devices. Shared-memory-default designs like Intel and AMD processors seem utterly unsuitable.
  • Hardware hypervisors on a multicore chip would be very helpful to implement the control over shared hardware resources in the case that multiple cores can indeed access the same hardware.
  • A simple existing example of this kind of design the Freescale 5514 and 5516 automotive processors, with two separate CPU cores. One is intended to handle interrupts and other low-latency hardware interfaces, and one does the heavy computations. The result is greater performance on both accounts with simpler software and cheaper hardware.

I filed this under “futile rants”, since I do not believe that we can change out of the IMA thinking mode for a long time to come. But you could always hope. I really think aggressive use of appropriately sized processor cores is a brilliant way ahead for real-time software system design.

Tweet
Posted in: embedded software, embedded systeme, multicore computer architecture, multicore software, programming / Tagged: ARINC 653, Green Hills, heterogeneous, Integrated Modular Avionics

4 Thoughts on “When Multicore makes Things Simpler, like IMA”

  1. Jakob on 2008 March 4 at 13:17 said:

    See http://jakob.engbloms.se/archives/83 for a denial-of-service attack that has some implications on this idea. You need to ensure memory access fairness between cores to be really safe. Did not think of that when I wrote this post… but I still think it can be solved with some appropriate chip system architecture.

  2. Pingback: Observations from Uppsala » Blog Archive » Real-time control when cores become free

  3. Pingback: Observations from Uppsala » Real-time control when cores become free

  4. Pingback: Observations from Uppsala » Wind River Blog: “IMA on Simics”

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Post Navigation

← Previous Post
Next Post →

Recent Posts

  • Wind River Blog: Simics 4.8 is Here
  • A Few Electrons too Many
  • Wind River Blog: Visuality NQ CIFS Server on Simics
  • Everything in the Cloud?
  • Wind River Blog: TCF and Simics
  • Off-Topic: Moving Bad Piggies Save Games
  • Two Cores, Four Cores, Eight Cores – Mobile Variety
  • Bliss: Failing to Pivot for Ideology
  • Wind River Blog and Movie: Demo of Simics Debugging
  • Simulation vs Reality in Schlock Mercenary
  • Programming like Lego
  • Does ISA Matter for Performance?
  • Wind River Blog: Debugging Simics using Simics
  • Wind River Blog: Simics and Flying Piggies
  • Dragons can be Useful – when AT Models Make Sense

Categories

  • appearances (30)
  • articles (21)
  • blogging (10)
  • books (6)
  • business issues (31)
  • computer architecture (35)
  • conferences (34)
  • EDA (50)
    • ESL (35)
  • embedded (78)
    • embedded software (57)
    • embedded systeme (50)
  • general research (6)
  • history (32)
    • general history (7)
    • history of computing (26)
  • off-topic (94)
    • biking (5)
    • board games (1)
    • computer games (3)
    • desktop software (35)
    • food and drink (1)
    • funny (12)
    • gadgets (24)
    • Politics (3)
    • popular culture (5)
    • trains (5)
    • transportation (10)
    • travel (10)
    • websites (3)
  • parallel computing (92)
    • multicore computer architecture (51)
    • multicore debug (22)
    • multicore software (65)
  • programming (107)
  • review (8)
  • security (19)
  • teaching (7)
  • testing (9)
  • uncategorized (12)
  • virtual things (129)
    • computer simulation technology (68)
    • virtual machines (17)
    • virtual platforms (98)
    • virtualization (14)
  • Wind River Blog (40)

Tags

ARM blog commentary Cadence Checkpointing clock-cycle models Communications of the ACM computer architecture conference cycle accuracy debugging DML Domain-specific languages embedded freescale G900 heterogeneous homogeneous IBM Intel iPod lego linux mobile phones multicore off-topic office 2007 operating systems p4080 podcast commentary power architecture rant research reverse debugging reverse execution S4D SiCS Multicore days Simics simulation software tools Sun SystemC video virtualization Vista Windows

1

  • F-Secure Blog

Blogs and news

  • Andras Vajda's blog (on multicore)
  • Embedded in Academia (John Regehr)
  • Grant Martin
  • Jack Ganssle
  • My Wind River Blog
  • Security Now podcast
  • Secworks (Joachim Strömbergson)
  • Simon Kågström
  • Synopsys View from the Top
  • Worse Than Failure

Archives

  • May 2013 (2)
  • April 2013 (1)
  • March 2013 (4)
  • February 2013 (1)
  • January 2013 (3)
  • December 2012 (2)
  • November 2012 (2)
  • October 2012 (1)
  • September 2012 (6)
  • August 2012 (4)
  • July 2012 (4)
  • June 2012 (3)
  • May 2012 (4)
  • April 2012 (2)
  • March 2012 (3)
  • February 2012 (1)
  • January 2012 (6)
  • December 2011 (2)
  • November 2011 (3)
  • October 2011 (4)
  • September 2011 (5)
  • August 2011 (4)
  • July 2011 (3)
  • June 2011 (4)
  • May 2011 (7)
  • April 2011 (1)
  • March 2011 (3)
  • February 2011 (5)
  • January 2011 (1)
  • December 2010 (4)
  • November 2010 (3)
  • October 2010 (5)
  • September 2010 (5)
  • August 2010 (5)
  • July 2010 (6)
  • June 2010 (5)
  • May 2010 (3)
  • April 2010 (4)
  • March 2010 (3)
  • February 2010 (4)
  • January 2010 (7)
  • December 2009 (6)
  • November 2009 (6)
  • October 2009 (7)
  • September 2009 (6)
  • August 2009 (7)
  • July 2009 (11)
  • June 2009 (5)
  • May 2009 (10)
  • April 2009 (7)
  • March 2009 (8)
  • February 2009 (9)
  • January 2009 (12)
  • December 2008 (8)
  • November 2008 (9)
  • October 2008 (9)
  • September 2008 (10)
  • August 2008 (13)
  • July 2008 (12)
  • June 2008 (8)
  • May 2008 (9)
  • April 2008 (10)
  • March 2008 (7)
  • February 2008 (8)
  • January 2008 (5)
  • December 2007 (5)
  • November 2007 (7)
  • October 2007 (7)
  • September 2007 (12)
  • August 2007 (9)
  • July 2007 (2)
© Copyright 2013 - Observations from Uppsala
Infinity Theme by DesignCoral / WordPress