Literally speaking, MMU is ‘Memory Management Unit’ while MPU is ‘Memory Protection Unit’. Both of these are specialized hardware which are used by CPU for memory handling. MMU is used for many functions primarily Virtual Memory (i.e. translation of virtual address to physical address) and memory protection. But MPU is used for memory protection only. In that sense, we can think of MMU as super set of MPU.
Processors which need to run high-end operating systems such as Android, Linux, Windows typically have MMU but processors which need to run RTOS such as ThreadX, Nucleus typically have MPU. Let us mention few of the real world examples of the processors with MMU and MPU. Typically, a smart-phone contains two main processors – one which runs high-end OS (e.g. Android) where Apps are running and second which runs baseband RTOS (e.g. ThredX) where 3G/4G protocol stacks are running. First one is called Apps processor while second one is called Baseband processor. Apps processor (e.g. ARM Cortex-A series) has MMU while Baseband processor (e.g. ARM Cortex-R series) has MPU.
A quick analogy can be thought of MMU as ‘swiss army knife’ and MPU as ‘knife’! Basically, MMU implementation in HW much more complex than that of MPU. That’s why many computer systems (such as real time embedded systems) which don’t need Virtual Memory but need memory protection have much simpler MPU instead of full blown MMU.
Please do Like/Share if you find the above useful. Also, please do leave us comment for further clarification or info. We would love to help and learn 🙂
- What is the difference between GUI and CUI?
- Difference between ++*p, *p++ and *++p
- Web 1.0, Web 2.0 and Web 3.0 with their difference
- Difference between JSON and XML
- Difference between AES and DES ciphers
- Difference between SSH and Telnet
- What’s difference between The Internet and The Web ?
- What's difference between CPU Cache and TLB?
- Difference Between HTML and ASP
- Difference between SQL and NoSQL
- Difference between while(1) and while(0) in C language
- Difference between Where and Group By
- Difference between x++ and x=x+1 in Java
- Difference between std::quick_exit and std::abort
- Difference between super() and this() in java