Implementing multicore software is tricky, but it just got easier. PolyCore Software just announced Version 2.0 of its Poly-Platform complete with productivity tools and a runtime communications engine to simplify developing and migrating to applications for multicore platforms. The new version features enhanced memory organization tools and functionality to maximize efficiency for telecom, datacom, military and aerospace, and process control.
Although gaining in popularity, multicore is still in the beginning stages of adoption. It isn’t just dealing with multiple cores; it’s also a matter of a list of multiple dimensions—cores, types of cores, one RTOS on one core and Linux on another, and a wealth of memory architectures thrown in for good measure.
In a recent discussion, Sven Brehmer, president and CEO of PolyCore Software, indicated that he’s seen companies with 600 different platforms. Using the same applications across even fewer platforms can be a nightmare, but he explained how it’s becoming easier. PolyCore already delivers a multicore platform with tools and run-time software that can be applied to multiple cores on a chip, or multiple processors, or multiple chips on different boards to help users preserve their software investment.
Now, Polycore has bumped up the number of features to improve portability, configurability, efficiency and performance. Fundamental to improvements in Poly-Platform Version 2.0 are changes to Poly-Mapper, a graphical configuration tool that maps the application functions to multicore architectures. The new memory management of Poly-Mapper significantly improves application functionality and configurability by assisting the developer with memory organization and structure, generating code from the model. Developers can graphically define memory usage across the system, finely controlling interprocessor communication to ensure consistent, documented and well-defined memory utilization for the application. In addition, memory organization models improve abstraction and portability.
The memory maps are created in the tool and the tool keeps track so that there is no overlapping between different regions in your different memory sections, and designers can easily specify regions.The memory is symbolically defined. The symbolic definitions can be used in an application and the memory transferred to any system without changing modifying the application. In the past, this process would have to be done by hand.
Memory access regions have also been added to be able to use resources efficiently, and share resources between different resources or nodes, between an application and a driver, for example. This enables the use of the data, without moving the data – you just move references to it. This provides efficient resource usage and improved performance.
Adding configurability to pools is another feature. It is important to locate resources in the type of memory that makes sense. In some cases, that might mean putting in a certain resource with fast SRAM and in other cases it can be with slower DRAM. PolyCore giving a lot of configurability to the developer who can now configure exclusive use of resources, extremely important if there are deadlines.
Resource and message scheduling is also now enhanced. Within a multicore system, the worst thing that can happen is unnecessary waiting. When attempting an operation and if there is not success, it is necessary to wait for a resource. Now, there’s a capability that says, “Don’t schedule me until you know I will succeed,” or “If I don’t have enough resources to complete a task, don’t schedule me.” This is important since every time you use the operating system or signaling between cores, there’s a cost.
The new version also adds monitoring so that scheduling can take place when resources are low, and multicast capabilities, expanding point-to-point communication to a single point to a destination list.
According to Sven, designers ask, “‘can’t I just press a button and make it happen?’ So far the answer is no. There is no magic solution to multicore. But what we do is to make it much easier. We give you control over how you do it. We put the programmer in charge. There are certainly some complex aspects with multicore but it’s really not that hard.”
Multicore has been around for ten years. From a software perspective, Polycore agrees we’re still at the early stages. The shortage of software tools and run-time solutions is still making the progress somewhat slow. At least now, it’s faster than it was before.
Poly-Platform Version 2.0 is available now for multicore applications in markets such as telecom and datacom, military, and process control and industry automation. For more information and pricing, contact
For more information visit PolyCore Software.