Multicore architectures present many programming challenges. Fortunately, an RTOS can enable you to develop code mostly as though you were targeting a single-core device.
By Mark Ireton, Ph.D., and Michael Kardonik, Freescale Semiconductor, Inc.
Mark Ireton, Ph.D., and Michael Kardonik, Freescale Semiconductor, Inc.
Semiconductor companies continue to shrink the minimum feature size of their processors, pack an exponentially increasing number of transistors onto a single die, and increase clock speeds. As a result, the industry has reached a turning point where the power dissipation of the device has become a limiting factor for processor speed. In the race to continually improve performance, we are in the midst of an epochal transition: single-core processor architectures are no longer feasible for high-end solutions, and multicore solutions are becoming the norm. This is evidenced by the success of the duel-core x86 microprocessors from both AMD and Intel, as well as the introduction of multicore DSP solutions from Freescale, TI, and Analog Devices.
While providing a solution that enables continuing performance increases, the switch to multicore architectures creates new challenges for the application programmer, such as:
- How do you communicate between processes on different cores?
- How do you ensure that shared resources are initialized before use?
- How do you share a peripheral equally between all cores?
And most importantly:
- How do you achieve all of this without making the software development process significantly more complex than in a single-core environment?
This article describes the use of a multicore real-time operating system (RTOS) that enables programmers to develop most of their code as though they were targeting a single-core device. The concepts described are general, but the particular examples are based on the SmartDSP OS, a lightweight multicore RTOS optimized for use on Freescale DSPs based on StarCore technology.
Click here to read more ...