If a controller has MPU, will it run Linux efficiently?
As others have alluded to in the comments of the question, I think what you are actually looking for is an MMU (Memory Management Unit) not an MPU (Memory Protection Unit).  Among other things, a memory management unit is responsible for translating virtual memory addresses to physical memory addresses.

A memory protection unit really just keeps code executing in one mode (typically an unprivileged mode) from clobbering someone else's memory (usually the kernel's memory).  This prevents a user program from bringing down the whole system.

If you are looking for a Unix-like operating system that you can run on hardware without an MMU (like Cortex-M based hardware), you might want to consider NuttX (http://nuttx.org/)