電腦支持的最大記憶體與CPU之間的關係

来源:http://www.cnblogs.com/hu-xx/archive/2017/07/22/7221845.html
-Advertisement-
Play Games

在使用電腦時,其最大支持的記憶體是由 操作系統 和 硬體 兩方面決定的。 先說一下硬體方面的因素,在電腦中 CPU的地址匯流排數目 決定了CPU 的 定址 範圍,這種由地址匯流排對應的地址稱作為物理地址。假如CPU有32根地址匯流排(一般情況下32位的CPU的地址匯流排是32位,也有部分32位的CPU地址 ...


在使用電腦時,其最大支持的記憶體是由  操作系統 和 硬體 兩方面決定的。

  先說一下硬體方面的因素,在電腦中 CPU的地址匯流排數目 決定了CPU 的 定址 範圍,這種由地址匯流排對應的地址稱作為物理地址。假如CPU有32根地址匯流排(一般情況下32位的CPU的地址匯流排是32位,也有部分32位的CPU地址匯流排是36位的,比如用做伺服器的CPU),那麼提供的可定址物理地址範圍 為 232=4GB(在這裡要註意一點,我們平常所說的32位CPU和64位CPU指的是CPU一次能夠處理的數據寬度,即位寬,不是地址匯流排的數目)。自從64位CPU出現之後,一次便能夠處理64位的數據了,其地址匯流排一般採用的是36位或者40位(即CPU能夠定址的物理地址空間為64GB或者1T)。在CPU訪問其它任何部件的時候,都需要一個地址,就像一個快遞員送快遞,沒有地址他是不知道往哪裡送達的,舉個例子,CPU想從顯存單元讀取數據,必須知道要讀取的顯存單元的實際物理地址才能實現讀取操作,同樣地,從記憶體條上的記憶體單元讀取數據也需要知道記憶體單元的物理地址。換句話說,CPU訪問任何存儲單元必須知道其物理地址。

  用戶在使用電腦時能夠訪問的最大記憶體不單是由CPU地址匯流排的位數決定的,還需要考慮操作系統的實現。實際上用戶在使用電腦時,進程所訪問到的地址是邏輯地址,並不是真實的物理地址,這個邏輯地址是操作系統提供的,CPU在執行指令時需要先將指令的邏輯地址變換為物理地址才能對相應的存儲單元進行數據的讀取或者寫入(註意邏輯地址和物理地址是一一對應的)。

  對於32位的windows操作系統,其邏輯地址編碼採用的地址位數是32位的,那麼操作系統所提供的邏輯地址定址範圍是4GB,而在intel x86架構下,採用的是記憶體映射技術(Memory-Mapped I/O, MMIO),也就說將4GB邏輯地址中一部分要劃分出來與BIOS ROM、CPU寄存器、I/O設備這些部件的物理地址進行映射,那麼邏輯地址中能夠與記憶體條的物理地址進行映射的空間肯定沒有4GB了,看下麵這幅圖就明白了:

  

  所以當我們裝了32位的windows操作系統,即使我們買了4GB的記憶體條,實際上能被操作系統訪問到的肯定小於4GB,一般情況是3.2GB左右。假如說地址匯流排位數沒有32位,比如說是20位,那麼CPU能夠定址到1MB的物理地址空間,此時操作系統即使能支持4GB的邏輯地址空間並且假設記憶體條是4GB的,能夠被用戶訪問到的空間不會大於1MB(當然此處不考慮虛擬記憶體技術),所以用戶能夠訪問到的最大記憶體空間是由硬體和操作系統兩者共同決定的,兩者都有制約關係。

  對於64位的操作系統,其邏輯地址編碼採用的地址位數是40位,能夠最大支持1T的邏輯地址空間。考慮一種情況,假如CPU是64位的,地址匯流排位數是40位,操作系統也是64位的,邏輯地址編碼採用的地址位數也是40位,記憶體條大小是64GB,那麼是不是記憶體條的64GB全部都能被利用了呢?答案是不一定,因為這裡面還要考慮一個因素就是記憶體控制器,記憶體控制器位於北橋之內(現在基本都是放在CPU裡面了),記憶體控制器的實際連接記憶體的地址線決定了可以支持的記憶體容量,也就是說記憶體控制器與記憶體槽實際連接的地址線如果沒有40位的話,是無法完全利用64GB的記憶體條的存儲空間的。當然對於記憶體控制器這個問題幾乎可以不用考慮,因為現在大多數的記憶體控制器至少都採用的是40位地址匯流排。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 已經那麼多年工作下來了,結果裝linux還是那麼 的費勁! 裝的是純凈版Ubuntu16.04版本,17.04怕不穩定就沒裝, 裝了發現VmwareTools是暗的,以前也遇到過這個問題,但是真的忘記了怎麼解決了。 弄了半天其實關鍵就是一句話,找到你Vmware的安裝目錄,裡面有個linux.iso ...
  • 度過了難熬的考試月時期之後,最近和小伙伴一起參加的的比賽進入了緊張的準備時期。在進行工作的時候,發現有很多基礎的知識點,自己不是很清楚以及瞭解,所以在想,要不就邊學習的時候邊寫下學習日記,以供自己後來不懂的時候查看,同時以希望自己的一些所得能幫助到其他人。共勉之~ ...
  • CentOS 6.7/Linux下設置IP地址 1:臨時修改: 1.1:修改IP地址 # ifconfig eth0 192.168.2.104 1.2:修改網關地址 # route add default gw 192.168.2.1 dev eth0 1.3:修改DNS # echo "name ...
  • Linux文件查找,詳細的介紹了locate和find命令的使用 ...
  • 為了能夠使用XShell來管理我們安裝好的CentOS7系統,所以我們要先設置CentOS7的網路使其能夠聯網。 1.選擇vmware的編輯,然後點擊虛擬網路編輯器 2.點擊更改設置(需要有管理員許可權) 3.選擇VMnet0為橋接模式,選擇自動或者網卡 4.打開“網路和共用中心”選擇“VMware ...
  • nfs服務是實現Linux和Linux之間的文件共用,nfs服務的搭建比較簡單。 現在介紹如何在ubuntu16.04系統中搭建nfs服務,ubuntu的搭建比紅帽的還要簡單。 1、安裝nfs服務 2、修改配置文件 修改內容如下: 各段表達的意思如下,根據實際進行修改 3、重啟nfs服務 到此,nf ...
  • 在應用中我們經常會登陸其他的主機,每次都需要輸入用戶名和密碼。另外在hadoop的使用中也會使用ssh命令去連接其它的主機。我們可以設置SSH免密碼登陸來實現其他主機登錄該主機是不用輸入密碼。 現在我們有兩台測試的linux的虛擬機,我們稱之為主機1和主機2。ip分別為192.168.1.101和1 ...
  • 為wget使用代理,可以直接修改/etc/wgetrc,也可以在主文件夾下新建.wgetrc,並編輯相應內容,本文采用後者。 直接往~/.wgetrc(自行創建此文件)添加如下內容: https_proxy = http://127.0.0.1:8087/http_proxy = http://12 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...