題 如何確定CPU是否有MMU


大多數現代CPU都有MMU嗎?你如何知道一個CPU是否有一個?


4
2018-03-03 22:35


起源




答案:


自80286以來的所有x86架構處理器(包括intel和AMD,當然包括64位版本)都有一個MMU,並且沒有常用的桌面操作系統試圖禁用它。為了實現所有桌面操作系統提供的虛擬內存和進程隔離,實際需要MMU。

有些處理器用於缺少MMU的嵌入式系統(有時還有遊戲機和其他機頂盒)。


8
2018-03-03 23:56





是的,大多數現代CPU都有一個MMU(見此 維基百科 涵蓋不同CPU類型的文章)


7
2018-03-03 22:45





“普通”計算機(即台式機,筆記本電腦和服務器)中使用的所有現代CPU都具有MMU - 事實上,所有現代操作系統(MS Windows的NT系列,Mac OS X,Linux,* BSD,Solaris)需要MMU,因為內存保護和虛擬內存等依賴於它。因此,如果它是運行比Windows 98更新的台式機/筆記本電腦,它肯定有一個MMU。

除了“普通”台式機和服務器計算機(例如嵌入式系統,實時系統,大型機,微控制器......)之外,其他方面的情況也各不相同。在那裡,沒有MMU的處理器非常普遍,並且一些系統使用不同的機制來進行內存保護和內存訪問 - 這些機制可能不依賴於MMU。

TL;博士: 如果您的計算機運行Windows(XP或更高版本),Linux或Mac OS X,則它具有MMU。


7
2018-03-03 23:58



內存保護不需要MMU(內存保護單元就足夠了),許多實時操作系統不使用虛擬內存。 - Paul A. Clayton
@PaulA.Clayton:是的。但是,AFAIK,所有常見的現代操作系統都使用MMU來實現內存保護,所以這些操作系統 做 需要一個MMU來保護內存。無論如何,感謝您的信息;我編輯了我的答案以澄清。 - sleske
uCLinux和FreeRTOS(可能至少是一些商用RTOS)支持MPU(我不知道這些是否會被認為是“常見”;真正微小的系統可能會避免使用MPU而中等大小的系統可能會使用完整的MMU [MPU也可能僅用於保護特權與非特權代碼])。 (MPU和MMU之間的主要區別在於MMU包括對地址轉換的支持,儘管有時“MMU”用於 包括 MPU。)編輯很不錯(我已經投票了,我不太欣賞這個獎勵)。 - Paul A. Clayton


嘗試下載CPU-Z並查看那裡。

我相信所有新的AMD和INTEL CPU都有內置內存控制器:

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

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


0
2018-03-03 23:02



MMU不是內存控制器。 - Ignacio Vazquez-Abrams
我的壞,誤讀了這個問題 - Sandeep Bansal


我不確定......但這是我開始的地方:首先,下載 Speccy,系統信息工具,顯示系統上處理器的確切名稱。然後,我會在製造商的網站(英特爾等)上搜索該模型。

@OSX絕地,順便說一句好問題。我花了一些時間來討論這個問題,並且在通常的網站(谷歌,維基百科等)上找不到明顯的答案。我們當地的超級用戶專家的好飼料!


0
2018-03-03 22:51



上面的@ chunkyb2002引用了一篇維基百科的文章,但我並不相信這個問題在那裡得到了徹底的回答,至少從3Mar2011開始。 - drapkin11


所有現代處理器都有一個內存管理單元(MMU)。沒有“啟用”或“禁用”MMU這樣的事情。當計算機啟動時,頁表為空,這相當於MMU根本不存在。當操作系統內核在其頁表中定義條目時,MMU開始運行。

如果使用不使用MMU的操作系統啟動,則它與MMU根本不存在相同,因此“禁用”MMU沒有意義。

即使MMU以某種方式被禁用或不存在,任何現代操作系統(MS Windows,MacOS,任何Linux ......)都將無法啟動,因為它將強制嘗試使用MMU。


0
2017-10-20 09:59



ARM M配置文件和R配置文件處理器不支持MMU(它們支持MMU) 允許但不要求,要實施的存儲器保護單元);這些肯定包括 一些 “現代處理器”。 UCLinux是一個“現代操作系統”,不需要MMU,實時操作系統通常不需要MMU。 - Paul A. Clayton
當然是。這種方法的缺點是一個有缺陷的程序可能會崩潰包括操作系統在內的所有其他程序,因為沒有MMU它可以訪問所有RAM。這就是為什麼你需要非常小心該系統上運行的軟件類型。當然,即使使用MMU,內核和驅動程序也可以訪問整個內存映射,並且可以執行相同的操作。 - BJovke
內存保護單元可以提供隔離(它與TLB / MMU不同,不支持轉換,因此不支持分頁)。微內核操作系統通常強調最小特權,這種特權通常以性能為代價提供更大的隔離。對單個地址空間OS(例如,許可表和許可後備緩衝器或頁組[例如,由Itanium提供])的硬件支持可以降低特權軟件中更細粒度的許可的成本。 - Paul A. Clayton