Advancing Multi-Core Development

 

Developing multi-core systems requires major changes from a single-core approach. Requirements and architectural analysis become particularly important. Abstract-level models allow for architectural and design studies that developers must perform early in the cycle. In addition, the runtime platform now must support true parallelism rather than just sequential multi-tasking.

Creating software for multi-core devices opens new challenges. The development team must rethink task design, inter-task messaging, load distribution, and parallel testing.

In single-core development, parallelism is not finalized until late in the cycle, during optimization. The main reason is that concurrency in such systems is implemented through a multi-tasking runtime platform. However, with multi-core, parallelism is not a logical abstraction but a physical reality. As a result, both application and platform level architectures must consider it early in the development cycle.

For example, consider the development of a multi-core handheld video streaming device. Key decisions include the number of cores and their clock speeds. Suppose the developers specify two 32-bit cores running at 1GHz plus two spares for offloading peak usage, giving a total of four cores. Validating the minimum, average, and peak usage scenarios is vital, as the analysis may reveal spare cores, or excessive clock speeds, which can raise total cost significantly. Such decisions also affect the end user’s quality of experience, as well as the system’s useful life and environmental impact.

Achieving Higher Performance

The major reason to move to multi-core technology is to increase performance. Most single-core applications today, including embedded and real-time, execute as tasks. Executing logically parallel tasks on a physically parallel platform can produce much higher performance.

In a modeled system, a collection of active objects generate the system tasks. Amdahl’s law predicts that in a six active object system, parallelizing 90% of the objects quadruples performance.

When the final source code for multi-core systems is generated from a model driven approach, one can arbitrarily assign tasks to cores and execute the system “virtually” to ensure that it achieves the full performance gain predicted by Amdahl’s law. Such tradeoff studies are a vital part of multi-core development.

The Importance of Modeling Tools

Model-based tradeoff studies are feasible only when the modeling tool can do more than just capture the system’s architecture and behavioral semantics. To describe true runtime behavior, the model must build and execute as well. This execution capability is at the heart of the added value provided by the model-driven approach.

Conclusion

When migrating to multi-core, developers must modify the workflow and include knowledge of the parallel platform at all levels of the underlying architecture. Using a model-driven approach makes it easy to re-factor the legacy, single-core application onto its multi-core counterpart, and at the same time, optimize core usage. By utilizing the advantages of physically executing the design model to simulate functionality, developers can devise an elaborate tradeoff study that will allow them to take full advantage of multi-core technology.

Possibly Related Posts:


  • Multiply
  • MySpace
  • Digg
  • Delicious
  • Facebook
  • Squidoo
  • Twitter
  • Yahoo Buzz
  • LiveJournal
  • Google Bookmarks
  • StumbleUpon
  • AOL Mail
  • DZone
  • Ask.com MyStuff
  • AIM
  • Share/Save/Bookmark
 
 
 

Comments

No Responses to “Advancing Multi-Core Development”

Write a Comment