8

Do most modern CPUs have an MMU? How can you find out if a CPU has one or not?

6 Answers 6

9

All x86 architecture processors since the 80286 (both intel and AMD, and certainly including the 64-bit flavors) have an MMU, and no desktop operating system in common usage attempts to disable its use. The MMU is effectively required in order to implement virtual memory and process isolation as provided by all desktop operating systems.

There are processors used for embedded systems (and sometimes game consoles and other set-top boxes) that lack an MMU.

7

Yes, most modern CPUs have an MMU (see this Wikipedia article covering different CPU types)

6

All modern CPUs used in "normal" computers (i.e. desktops, notebooks and servers) have a MMU - as a matter of fact, all modern operating systems (the NT line of MS Windows, Mac OS X, Linux, *BSD, Solaris) require a MMU, because things like memory protection and virtual memory rely on it. So if it's a desktop/laptop running something newer than Windows 98, it definitely has an MMU.

Things are different in areas other than "normal" desktop and server computers (e.g. embedded systems, realtime systems, mainframes, microcontrollers...). There, processors without an MMU are quite common, and some systems use different mechanisms for memory protection and memory access - mechanisms which may not rely on a MMU.

tl;dr: If your computer runs Windows (XP or later), Linux, or Mac OS X, it has a MMU.

3
  • An MMU is not required for memory protection (a memory protection unit would suffice) and many Real Time OSes do not use virtual memory.
    – user180742
    Commented Oct 20, 2014 at 12:15
  • @PaulA.Clayton: True. However, AFAIK, all common modern OSes use the MMU to implement memory protection, so these OSes do need an MMU for memory protection. Anyway, thanks for the information; I edited my answer to clarify.
    – sleske
    Commented Oct 20, 2014 at 12:51
  • uCLinux and FreeRTOS (and presumably at least some commercial RTOSes) support MPUs (I don't know if these would count as "common"; the really tiny systems probably avoid MPUs and the moderately large systems may use full MMUs [an MPU may also be used only to protect privileged from unprivileged code]). (The main distinction between an MPU and an MMU is that an MMU includes support for address translation, though sometimes "MMU" is used to include MPUs.) The edit is decent (I already upvoted, and i don't appreciate this enough for a bounty).
    – user180742
    Commented Oct 20, 2014 at 19:23
0

Try downloading CPU-Z and having a look there.

What I believe is that all the new AMD and INTEL CPUs have inbuilt memory controllers:

  • INTEL CORE i7, i5, i3, Xeon
  • AMD PHENOM & PHENOM II

http://www.cpuid.com/softwares/cpu-z.html

2
0

I'm not sure... but here's where I'd start: First, download Speccy, the system information tool, which shows the exact name of the processor on the system. Then, I'd search for that model on the manufacturer's website (Intel, etc.).

@OSX Jedi, good question by the way. I spent a bit more time wresltling with this, and no obvious answer was to be found on the usual sites (Google, Wikipedia, etc.). Good fodder for our local SuperUser experts!

1
  • @chunkyb2002 above cites a Wikipedia article, but I was not convinced that this question was thoroughly answered there at all, at least as of 3Mar2011.
    – drapkin11
    Commented Mar 5, 2011 at 22:26
0

All modern processors have a Memory Management Unit (MMU). There is no such thing as "enabling" or "disabling" MMU. When computer boots, page table is empty, and that is equivalent to MMU not existing at all. MMU comes into action when operating system kernel defines entries in its page table.

If you boot with operating system which does not use MMU, it will be the same as MMU does not exist at all, so it does not make sense to "disable" MMU.

Even if MMU is somehow disabled or does not exist, any modern operating system (MS Windows, MacOS, any Linux...) will not boot at all because it will mandatory try to use MMU.

3
  • ARM M profile and R profile processors do not support MMUs (they do allow, but not require, a memory protection unit to be implemented); these certainly include some "modern processors". UCLinux is a "modern operating system" that does not require an MMU and Real Time OSes generally do not require MMUs.
    – user180742
    Commented Oct 20, 2014 at 12:12
  • Yes, of course. Disadvantage of that approach is that one buggy program can crash all of the others including the operating system because without MMU it has access to all RAM. That's why you need to be really careful of what kind of software is running on that system. Of course, even with MMU, kernel and drivers have access to whole memory map and can do the same thing.
    – BJovke
    Commented Mar 26, 2016 at 11:00
  • A memory protection unit can provide isolation (it differs from a TLB/MMU in not supporting translation, so paging is not supported). Microkernel OSes often have an emphasis on least privilege which provides greater isolation, typically at the cost of performance. Hardware support for single address space OSes (e.g., permission tables and permission lookaside buffers or page groups [e.g., provided by Itanium]) may reduce the cost of finer-grained permissions in privileged software.
    – user180742
    Commented Mar 26, 2016 at 14:02

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .