徹底理解記憶體概念(zz)

來源:互聯網
上載者:User
儘管記憶體這個詞常常掛在我們的嘴上,但是,有多少人真正瞭解記憶體、理解記憶體概念呢?
  對剛剛步入電腦世界的初學者來說,基本記憶體、上位記憶體、高端記憶體、擴充記憶體、擴充記憶體、保留記憶體等概念更是玄之又玄,難以徹底理解。所以我們特地介紹一下記憶體的基本概念。

基本知識
  ●記憶體
  記憶體就是儲存程式以及資料的地方,比如當我們在使用WPS處理文稿時,當你在鍵盤上敲入字元時,它就被存入記憶體中,當你選擇存檔時,記憶體中的資料才會被存入硬(磁)盤。在進一步理解它之前,還應認識一下它的物理概念。
  ●唯讀記憶體(ROM)
  ROM表示唯讀記憶體(Read Only Memory),在製造ROM的時候,資訊(資料或程式)就被存入並永久儲存。這些資訊只能讀出,一般不能寫入,即使機器掉電,這些資料也不會丟失。ROM一般用於存放電腦的基本程式和資料,如BIOS ROM。其物理外形一般是雙列直插式(DIP)的整合塊。
  ●隨機儲存空間(RAM)
  隨機儲存空間(Random Access Memory)表示既可以從中讀取資料,也可以寫入資料。當機器電源關閉時,存於其中的資料就會丟失。我們通常購買或升級的記憶體條就是用作電腦的記憶體,記憶體條(SIMM)就是將RAM整合塊集中在一起的一小塊電路板,它插在電腦中的記憶體插槽上,以減少RAM整合塊佔用的空間。目前市場上常見的記憶體條有4M/條、8M/條、16M/條等。
  ●高速緩衝儲存空間(Cache)
  Cache也是我們經常遇到的概念,它位於CPU與記憶體之間,是一個讀寫速度比記憶體更快的儲存空間。當CPU向記憶體中寫入或讀出資料時,這個資料也被儲存進高速緩衝儲存空間中。當CPU再次需要這些資料時,CPU就從高速緩衝儲存空間讀取資料,而不是訪問較慢的記憶體,當然,如需要的資料在Cache中沒有,CPU會再去讀取記憶體中的資料。
  當你理解了上述概念後,也許你會問,記憶體就是記憶體,為什麼又會出現各種記憶體名詞,這到底又是怎麼回事呢?
  在回答這個問題之前,我們再來看看下面這一段。

  實體儲存體器和地址空間
  實體儲存體器和儲存地址空間是兩個不同的概念。但是由於這兩者有十分密切的關係,而且兩者都用B、KB、MB、GB來度量其容量大小,因此容易產生認識上的混淆。初學者弄清這兩個不同的概念,有助於進一步認識記憶體儲器和用好記憶體儲器。
  實體儲存體器是指實際存在的具體儲存空間晶片。如主板上裝插的記憶體條和裝載有系統的BIOS的ROM晶片,顯示卡上的顯示RAM晶片和裝載顯示BIOS的ROM晶片,以及各種適配卡上的RAM晶片和ROM晶片都是實體儲存體器。
  儲存地址空間是指對儲存空間編碼(編碼地址)的範圍。所謂編碼就是對每一個實體儲存體單元(一個位元組)分配一個號碼,通常叫作“編址”。分配一個號碼給一個儲存單元的目的是為了便於找到它,完成資料的讀寫,這就是所謂的“定址”(所以,有人也把地址空間稱為定址空間)。
  地址空間的大小和實體儲存體器的大小並不一定相等。舉個例子來說明這個問題:某層樓共有17個房間,其編號為801~817。這17個房間是物理的,而其地址空間採用了三位編碼,其範圍是800~899共100個地址,可見地址空間是大於實際房間數量的。
  對於386以上檔次的微機,其地址匯流排為32位,因此地址空間可達232即4GB。但實際上我們所配置的實體儲存體器通常只有1MB、2MB、4MB、8MB、16MB、32MB等,遠小於地址空間所允許的範圍。從中我們可以看到地址空間與實體儲存體器之間的關係。

  

  好了,現在可以解釋為什麼會產生諸如:常規記憶體、保留記憶體、上位記憶體、高端記憶體、擴充記憶體和擴充記憶體等不同記憶體類型。

  各種記憶體概念
  這裡需要明確的是,我們討論的不同記憶體的概念是建立在定址空間上的。
  IBM推出的第一台PC機採用的CPU是8088晶片,它只有20根地址線,也就是說,它的地址空間是1MB。
  PC機的設計師將1MB中的低端640KB用作RAM,供DOS及應用程式使用,高端的384KB則保留給ROM、視頻適配卡等系統使用。從此,這個界限便被確定了下來並且沿用至今。低端的640KB就被稱為常規記憶體即PC機的基本RAM區,請看圖1。保留記憶體中的低128KB是顯示緩衝區,高64KB是系統BIOS(基本輸入/輸出系統)空間,其餘192KB空間留用。從對應的實體儲存體器來看,基本記憶體區只使用了512KB晶片,佔用0000至80000這512KB地址。顯示記憶體區雖有128KB空間,但對單色顯示器(MDA卡)只需4KB就足夠了,因此只安裝4KB的實體儲存體器晶片,佔用了B0000至B10000這4KB的空間,如果使用彩色顯示器(CGA卡)需要安裝16KB的實體儲存體器,佔用B8000至BC000這16KB的空間,可見實際使用的位址範圍都小於允許使用的地址空間。
  在當時(1980年末至1981年初)這麼“大”容量的記憶體對PC機使用者來說似乎已經足夠了,但是隨著程式的不斷增大,圖象和聲音的不斷豐富,以及能訪問更大記憶體空間的新型CPU相繼出現,最初的PC機和MS-DOS設計的局限性變得越來越明顯。
  1.什麼是擴充記憶體?
  EMS工作原理
  到1984年,即286被普遍接受不久,人們越來越認識到640KB的限制已成為大型程式的障礙,這時,Intel和Lotus,這兩家硬、軟體的傑出代表,聯手制定了一個由硬體和軟體相結合的方案,此方法使所有PC機存取640KB以上RAM成為可能。而Microsoft剛推出Windows不久,對記憶體空間的要求也很高,因此它也及時加入了該行列。
  在1985年初,Lotus、Intel和Microsoft三家共同定義了LIM-EMS,即擴充記憶體規範,通常稱EMS為擴充記憶體。當時,EMS需要一個安裝在I/O槽口的記憶體擴充卡和一個稱為EMS的擴充記憶體管理程式方可使用。但是I/O插槽的地址線只有24位(ISA匯流排),這對於386以上檔次的32位機是不能適應的。所以,現在已很少使用記憶體擴充卡。現在微機中的擴充記憶體通常是用軟體如DOS中的EMM386把擴充記憶體類比或擴充記憶體來使用。所以,擴充記憶體和擴充記憶體的區別並不在於其實體儲存體器的位置,而在於使用什麼方法來讀寫它。下面將作進一步介紹。
  前面已經說過擴充儲存空間也可以由擴充儲存空間類比轉換而成。EMS的原理和XMS不同,它採用了頁幀方式。頁幀是在1MB空間中指定一塊64KB空間(通常在保留記憶體區內,但其實體儲存體器來自擴充儲存空間),分為4頁,每頁16KB。EMS儲存空間也按16KB分頁,每次可交換4頁內容,以此方式可訪問全部EMS儲存空間。圖2給出了EMS的工作原理。符合EMS的驅動程式很多,常用的有EMM386.EXE、QEMM、TurboEMS、386MAX等。DOS和Windows中都提供了EMM386.EXE。
  2.什麼是擴充記憶體?
  我們知道,286有24位地址線,它可定址16MB的地址空間,而386有32位地址線,它可定址高達4GB的地址空間,為了區別起見,我們把1MB以上的地址空間稱為擴充記憶體XMS(eXtend memory)。
  在386以上檔次的微機中,有兩種儲存空間工作方式,一種稱為真實位址方式或實方式,另一種稱為保護方式。在實方式下,物理地址仍使用20位,所以最大定址空間為1MB,以便與8086相容。保護方式採用32位物理地址,定址範圍可達4GB。DOS系統在實方式下工作,它管理的記憶體空間仍為1MB,因此它不能直接使用擴充儲存空間。為此,Lotus、Intel、AST及Microsoft公司建立了MS-DOS下擴充記憶體的使用標準,即擴充記憶體規範XMS。我們常在Config.sys檔案中看到的Himem.sys就是管理擴充記憶體的驅動程式。
  擴充記憶體管理規範的出現遲於擴充記憶體管理規範。
  3.什麼是高端記憶體區?
  在實方式下,記憶體單元的地址可記為:
       段地址:段內位移
  通常用十六進位寫為XXXX:XXXX。實際的物理地址由段地址左移4位再和段內位移相加而成。若地址各位均為1時,即為FFFF:FFFF。其實際物理地址為:FFF0+FFFF=10FFEF,約為1088KB(少16位元組),這已超過1MB範圍進入擴充記憶體了。這個進入擴充記憶體的地區約為64KB,是1MB以上空間的第一個64KB。我們把它稱為高端記憶體區HMA(High Memory Area)。HMA的實體儲存體器是由擴充儲存空間取得的。因此要使用HMA,必須要有物理的擴充儲存空間存在。此外HMA的建立和使用還需要XMS驅動程式HIMEM.SYS的支援,因此只有裝入了HIMEM.SYS之後才能使用HMA。
  4.什麼是上位記憶體?
  為瞭解釋上位記憶體的概念,我們還得回過頭看看保留記憶體區。保留記憶體區是指640KB~1024KB(共384KB)地區。這部分地區在PC誕生之初就明確是保留給系統使用的,使用者程式無法插足。但這部分空間並沒有充分使用,因此大家都想對剩餘的部分打主意,分一塊地址空間(注意:是地址空間,而不是實體儲存體器)來使用。於是就得到了又一塊記憶體地區UMB。
  UMB(Upper Memory Blocks)稱為上位記憶體或上位記憶體塊。它是由擠占保留記憶體中剩餘未用的空間而產生的,它的實體儲存體器仍然取自物理的擴充儲存空間,它的管理驅動程式是EMS驅動程式。
  5.什麼是SHADOW(影子)記憶體?
  對於細心的讀者,可能還會發現一個問題:即是對於裝有1MB或1MB以上實體儲存體器的機器,其640KB~1024KB這部分實體儲存體器如何使用的問題。由於這部分地址空間已指派為系統使用,所以不能再重複使用。為了利用這部分實體儲存體器,在某些386系統中,提供了一個重定位功能,即把這部分實體儲存體器的地址重定位為1024KB~1408KB。這樣,這部分實體儲存體器就變成了擴充儲存空間,當然可以使用了。但這種重定位功能在當今高檔機器中不再使用,而把這部分實體儲存體器保留作為Shadow儲存空間。Shadow儲存空間可以佔據的地址空間與對應的ROM是相同的。Shadow由RAM組成,其速度大大高於ROM。當把ROM中的內容(各種BIOS程式)裝入相同地址的Shadow RAM中,就可以從RAM中訪問BIOS,而不必再訪問ROM。這樣將大大提高系統效能。因此在設定CMOS參數時,應將相應的Shadow區設為允許使用(Enabled)。

  總 結
  經過上面分析,記憶體儲器的劃分可歸納如下:
  ●基本記憶體 佔據0~640KB地址空間。
  ●保留記憶體 佔據640KB~1024KB地址空間。分配給顯示緩衝儲存空間、各適配卡上的ROM和系統ROM BIOS,剩餘空間可作上位記憶體UMB。UMB的實體儲存體器取自物理擴充儲存空間。此範圍的物理RAM可作為Shadow RAM使用。
  ●上位記憶體(UMB) 利用保留記憶體中未分配使用的地址空間建立,其實體儲存體器由物理擴充儲存空間取得。UMB由EMS管理,其大小可由EMS驅動程式設定。
  ●高端記憶體(HMA) 擴充記憶體中的第一個64KB地區(1024KB~1088KB)。由HIMEM.SYS建立和管理。
  ●XMS記憶體 符合XMS規範管理的擴充記憶體區。其驅動程式為HIMEM.SYS。
  ●EMS記憶體 符合EMS規範管理的擴充記憶體區。其驅動程式為EMM386.EXE等。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.