The illustration on this slide shows how the shared memory is used on Concerto to communicate between the cores. Each shared memory block can be read by both cores and configured to be written to by only one of the two cores (two readers, one writer). This architecture supports a circular buffer with a single reader/writer very naturally. Notice that the arrow heads on the top block of memory are on the left side, indicating that the -M3 is the only core that writes to that memory. Similarly for the block of memory on the bottom, the arrow-heads indicate that the 28x is the only device that can write. The blue boxes are used to specify the circular buffer for sending data from the -M3 to the 28x. For a circular buffer, the writer needs to check the read pointer to make sure that there is still room in the buffer, write the data to the buffer itself, and, finally update the write pointer. The reader needs to read the data and update the read pointer. The blue read-index on the bottom of the slide is in the write-memory for the 28x since the 28x needs to update this read pointer. The -M3 only reads this pointer and never writes to it.

