14:30 - 15:05
Paper 5
Trace Analysis Tools ease migration to multi-core
Gary Bleasdale, QNX
The speed race is over. Faced with the growing energy consumption and excessive operating temperatures that result from high CPU clock speeds, microprocessor vendors have adopted a new approach to boosting system performance: integrating multiple independent processor cores on a single chip. Intel, for example, has proclaimed that all of its new CPUs will use multi-core architectures.
Multi-core processors offer true concurrency as well as significantly greater system density and performance-per-watt than the uniprocessor chips they replace. The problem is, most embedded software designers and engineers have little or no expertise in the programming models that multi-core processors require. Instead of relying on increasing clock speeds to achieve greater performance, programmers must now develop concurrent applications, which are fundamentally more difficult to design, debug, and optimize than the conventional sequential applications they replace.
An operating system, if designed correctly, can help eliminate much of this complexity. This is especially true if the OS can transparently manage the allocation of shared hardware resources in a multi-core chip. But, even then, developers still need debuggers, profilers, and other multi-core aware tools that can provide critical insight into software behavior on a multi-core chip.
This article explores the need for (and use of) multi-core aware debugging and trace analysis tools that can consolidate the system-wide activity of a multicore system into a single, human-readable context. By using such tools appropriately, developers can uncover hidden resource conflicts, resolve subtle timing errors, and analyze resource utilization for optimal performance.
Tools that are multi-core aware can be indispensable when migrating existing software to a multi-core design. For instance, should an application and its various threads be locked to a single core, or can they be safely distributed across multiple cores? With the right tools, developers can determine the answer by looking at thread interactions and inter-process communications.
Developers must also tune and optimize their applications in a multi-core environment. By using tools that can track thread migration from one core to another, as well as OS primitive usage, scheduling events, application-to-application messaging, and other events, developers can not only pinpoint bottlenecks, but also determine the best way to distribute applications across multiple cores for optimal performance.
The task of migrating code to multi-core processors is quickly becoming the single biggest challenge that embedded developers face today. This article explores what capabilities tools must offer to ensure that developers can both reduce migration efforts and maximize performance gains.