Implementation of Multicore Communication Library
Permanent address of the item is
There are increasing number of multicore systems, and need for a standard and portable API for communication between cores. This Thesis focuses on Multicore Communication API (MCAPI). Compared to other APIs, MCAPI is simple and light weight. However, public open source MCAPI implementations are not satisfactory, like OpenMCAPI, FUNCAPI and a reference implementation offered by the Multicore Association, also known as shared memory implementation. This Thesis presents a new implementation, PMQ-MCAPI. The goal was to develop an implementation, which is stable, well performing, and easily portable. The implementation utilizes POSIX message queues, which makes it easily portable and standard-based. MCAPI works with or without an operating system. It supports both connection-oriented and connectionless communication, and features both blocking and non-blocking calls. On the other hand, MCAPI does not have more complex features, like multicast. The performance of PMQ-MCAPI was mainly measured as latency and transfer rate of communication. In a measurement setup there were one or two communicating nodes, which sent to themselves or to each other with transfer sizes of 1-8 KiB. The measurement platforms were a PC featuring a x86-64 processor and an FPGA development board featuring an ARM processor. When measuring with 2 KiB MCAPI packets, average latency and transfer rate between two cores was 8.77 µs and 1 692 MBps on the PC platform and 20.59 µs and 594 MBps on the ARM platform. On the PC platform, the reference implementation had 8x latency and 1/35x transfer rate at worst compared to PMQ-MCAPI. CPU and especially performance of its cache were concluded as the most important factors contributing to the performance of PMQ-MCAPI. PMQ-MCAPI is morestable and easily usable than other MCAPI implementations publicly available for PC.