如何确定CPU是否有MMU


5

大多数现代CPU都有MMU吗?你如何知道一个CPU是否有一个?

Answers:


8

自80286以来的所有x86架构处理器(包括英特尔和AMD,当然包括64位版本)都有一个MMU,并且没有常用的桌面操作系统试图禁用它。为了实现所有桌面操作系统提供的虚拟内存和进程隔离,实际需要MMU。

有些处理器用于缺少MMU的嵌入式系统(有时还有游戏机和其他机顶盒)。



7

“普通”计算机(即台式机,笔记本电脑和服务器)中使用的所有现代CPU都具有MMU - 事实上,所有现代操作系统(MS Windows的NT系列,Mac OS X,Linux,* BSD,Solaris)需要MMU,因为内存保护和虚拟内存等依赖于它。因此,如果它是运行比Windows 98更新的台式机/笔记本电脑,它肯定有一个MMU。

除了“普通”桌面和服务器计算机(例如嵌入式系统,实时系统,大型机,微控制器......)之外,其他方面的情况也各不相同。在那里,没有MMU的处理器非常普遍,并且一些系统使用不同的机制来进行内存保护和内存访问 - 这些机制可能不依赖于MMU。

tl; dr:如果您的计算机运行Windows(XP或更高版本),Linux或Mac OS X,则它具有MMU。


内存保护不需要MMU(内存保护单元就足够了),许多实时操作系统不使用虚拟内存。
保罗A.克莱顿2014年

@PaulA.Clayton:是的。但是,AFAIK,所有常见的现代操作系统都使用MMU来实现内存保护,因此这些操作系统确实需要一个MMU来保护内存。无论如何,感谢您的信息; 我编辑了我的答案以澄清。
sleske 2014年

uCLinux和FreeRTOS(可能至少是一些商用RTOS)支持MPU(我不知道这些是否会被认为是“普通”;真正微小的系统可能会避免使用MPU而中等大小的系统可能会使用完整的MMU [MPU也可能仅用于保护特权与非特权代码])。(MPU和MMU之间的主要区别在于MMU包括对地址转换的支持,虽然有时“MMU”用于包括 MPU。)编辑很不错(我已经投票了,我不太喜欢这个赏金)。
保罗A.克莱顿2014年


0

我不确定......但是我在这里开始:首先,下载系统信息工具Speccy,它显示系统上处理器的确切名称。然后,我会在制造商的网站(英特尔等)上搜索该模型。

@OSX绝地,顺便说一句好问题。我花了一些时间来讨论这个问题,并且在通常的网站(谷歌,维基百科等)上找不到明显的答案。我们当地的超级用户专家的好饲料!


@ chunkyb2002上面引用了一篇维基百科的文章,但我并不相信这个问题在那里得到了彻底的回答,至少从3Mar2011开始。
drapkin11 2011年

0

所有现代处理器都有一个内存管理单元(MMU)。没有“启用”或“禁用”MMU这样的事情。当计算机启动时,页表是空的,这相当于MMU根本不存在。当操作系统内核在其页表中定义条目时,MMU开始运行。

如果使用不使用MMU的操作系统启动,它将与MMU根本不存在相同,因此“禁用”MMU没有意义。

即使MMU以某种方式被禁用或不存在,任何现代操作系统(MS Windows,MacOS,任何Linux ......)都将无法启动,因为它必须尝试使用​​MMU。


ARM M配置文件和R配置文件处理器不支持MMU(它们允许但不要求实现内存保护单元); 这些肯定包括一些 “现代处理器”。UCLinux是一个“现代操作系统”,不需要MMU,实时操作系统通常不需要MMU。
保罗A.克莱顿2014年

当然是。这种方法的缺点是一个有缺陷的程序可能会崩溃包括操作系统在内的所有其他程序,因为没有MMU它可以访问所有RAM。这就是为什么你需要非常小心该系统上运行的软件类型。当然,即使使用MMU,内核和驱动程序也可以访问整个内存映射,并且可以执行相同的操作。
BJovke 2016年

内存保护单元可以提供隔离(它与TLB / MMU不同,不支持转换,因此不支持分页)。微内核操作系统通常强调最小权限,这提供了更大的隔离,通常以性能为代价。单个地址空间操作系统的硬件支持(例如,权限表和许可后备缓冲区或页面组[例如,由Itanium提供])可以降低特权软件中更细粒度权限的成本。
保罗A.克莱顿
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.