Yes, a pipe is an abstraction on top of shared memory that lives in the kernel memory pool. A memory mapped file sits way on the bottom and gives you raw access to shared memory without anything to help you get it right, it is up to you to arbitrate access to the memory and signal changes.
The message rate you are quoting is not close to giving a pipe a hard time to keep up. Typical overhead is roughly 1 microsecond constant OS overhead plus the time needed to copy the message, set by the bandwidth of the memory bus. At least 5 gigabytes per second on the lowliest consumer PC with DDR2 RAM. A Socket with local loopback has the exact same overhead. So does an MMF in a managed program, copying data is rather inevitable unless you use pointers.