Interconnects need standard software APIs
Sam Fuller, Executive Director – RapidIO Trade Association
When we first developed RapidIO, many of us naively thought that since RapidIO provided basic bus-type transactions that there would be no need for specific RapidIO software development. The reality has been quite different. While RapidIO can transparently support RDMA type transactions for processor and DMA initiated transfers, the mapping of various address spaces must be set up through configuration software and drivers. Also, the messaging and mailbox constructs that RapidIO provides also require software driver support as does the streaming data-type transactions such as Type-9 messages. These higher level constructs must be supported in the same way as other message based protocols such as Ethernet or Infiniband.
The good news is that the RapidIO value-added offering of low latency, high reliability and deterministic transactions can be easily mapped to existing software constructs. The Rionet driver provides for treating RapidIO as viewed by software as if it were Ethernet. This software was first introduced seven years ago and continues to mature and develop.
In addition to Rionet, RapidIO native support for the verbs API defined by the OpenFabrics Alliance and the MPI API has been demonstrated by Mercury Computer and by Curtis-Wright Controls, as has the Multicore Alliance’s MCAPI standard.
Direct integration of RapidIO on multicore SOC devices, combined with direct connectivity to internal DMA engines and optimized standards-based software drivers provides significant enhancements in interconnect performance when compared with alternative technologies while maintaining compatibility with existing software and systems.
MCAPI and Poly-Platform provides quick access to RapidIO
The Multicore Association (MCA) provides standard APIs for multicore applications. The MCA has developed MCAPI (Multicore Communications API), for standardized communications and synchronization between closely distributed cores and processors. The application platform may be a mix of cores/processors, transports and operating systems, working in an SMP, AMP or combined SMP/AMP environment. The MCA work is complementary with that of the RapidIO Trade Association. MCAPI is an application communications API which can operate over the RapidIO interconnect.
By using MCAPI, the application software can easily and transparently communicate in homogeneous and heterogeneous environments. Similar to an e-mail finding the receiver’s email application over any transport, a multicore application ideally communicates without having to deal with the specifics of the underlying physical transports, which could be shared memory for inter-core communication and RapidIO for inter-chip communication.
Development tools that support these standards simplify the generation of software to run on homogeneous and heterogeneous processing environments. These tools define and generate the communications infrastructure for the application topology that binds with a runtime module to move the data, resulting in a highly efficient development and runtime environment.
An example is Poly-Platform from PolyCore Software which provides a graphical tool for placing nodes and communications links on a topology map. A node represents a group of one or more functions and the links represent the data paths, together representing the application flow(s). The node’s operational characteristics such as processor type and operating system are defined via drop down menus. The relationship between the nodes is denoted by a connecting arrow, which is also used to identify the data movement and the communications links (transports) between the nodes.
Poly-Platform directly supports RapidIO and shared memory as transports. Using the graphical tools, the programmer selects and configures the transport using the link configuration. For the RapidIO link shown in Figure 1, the programmer selects messaging Type 9 or 11 and specifies address parameters. When using Poly-Platform, the developer can use the RapidIO and shared memory transports simply by configuring the links. The communications infrastructure is generated by Poly-Platform, freeing the programmer from writing the code.
A typical application using RapidIO is likely to also use shared memory as a transport. Such an application, using Poly-Platform, could be developed independently from the target transports. The transports are then reconfigured for the target using the same application source code. Poly-Platform works from the configuration settings enabling full transport transparency.
Another Poly-Platform tool provides MCAPI coding support, with a wizard based GUI, which can be used to insert MCAPI calls in the application source code, effectively building the communication functionality between application functions (nodes).
Standards and tools have simplified, and continue to streamline multicore and multiprocessor application development.
Ted Gribb, Vice President Sales, PolyCore Software
For more information, please visit www.PolyCoreSoftware.com and http://www.multicore-association.org/workgroup/comapi.php