Ⅰ cpu是如何在內存中定址的
各種內存概念
這里需要明確的是,我們討論的不同內存的概念是建立在定址空間上的。
IBM推出的第一台PC機採用的CPU是8088晶元,它只有20根地址線,也就是說,它的地址空間是1MB。
PC機的設計師將1MB中的低端640KB用作RAM,供DOS及應用程序使用,高端的384KB則保留給ROM、視頻適配卡等系統使用。從此,這個界限便被確定了下來並且沿用至今。低端的640KB就被稱為常規內存即PC機的基本RAM區。保留內存中的低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.什麼是擴充內存?
到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存儲器。符合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)。
●6、什麼是奇/偶校驗?
奇/偶校驗(ECC)是數據傳送時採用的一種校正數據錯誤的一種方式,分為奇校驗和偶校驗兩種。
如果是採用奇校驗,在傳送每一個位元組的時候另外附加一位作為校驗位,當實際數據中「1」的個數為偶數的時候,這個校驗位就是「1」,否則這個校驗位就是 「0」,這樣就可以保證傳送數據滿足奇校驗的要求。在接收方收到數據時,將按照奇校驗的要求檢測數據中「1」的個數,如果是奇數,表示傳送正確,否則表示傳送錯誤。
同理偶校驗的過程和奇校驗的過程一樣,只是檢測數據中「1」的個數為偶數。
●1.什麼是CL延遲?
CL反應時間是衡定內存的另一個標志。CL是CAS Latency的縮寫,指的是內存存取數據所需的延遲時間,簡單的說,就是內存接到CPU的指令後的反應速度。一般的參數值是2和3兩種。數字越小,代表反應所需的時間越短。在早期的PC133內存標准中,這個數值規定為3,而在Intel重新制訂的新規范中,強制要求CL的反應時間必須為2,這樣在一定程度上,對於內存廠商的晶元及PCB的組裝工藝要求相對較高,同時也保證了更優秀的品質。因此在選購品牌內存時,這是一個不可不察的因素。
還有另的詮釋:內存延遲基本上可以解釋成是系統進入數據進行存取操作就緒狀態前等待內存響應的時間。
打個形象的比喻,就像你在餐館里用餐的過程一樣。你首先要點菜,然後就等待服務員給你上菜。同樣的道理,內存延遲時間設置的越短,電腦從內存中讀取數據的速度也就越快,進而電腦其他的性能也就越高。這條規則雙雙適用於基於英特爾以及AMD處理器的系統中。由於沒有比2-2-2-5更低的延遲,因此國際內存標准組織認為以現在的動態內存技術還無法實現0或者1的延遲。
通常情況下,我們用4個連著的阿拉伯數字來表示一個內存延遲,例如2-2-2-5。其中,第一個數字最為重要,它表示的是CAS Latency,也就是內存存取數據所需的延遲時間。第二個數字表示的是RAS-CAS延遲,接下來的兩個數字分別表示的是RAS預充電時間和Act- to-Precharge延遲。而第四個數字一般而言是它們中間最大的一個。
總結
經過上面分析,內存儲器的劃分可歸納如下:
●基本內存 占據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等。
內存:隨機存儲器(RAM),主要存儲正在運行的程序和要處理的數據。
補充說一下:
內存的分區就像體育場館的座位,基本內存(64K以下)為比賽場地,必須有的。
保留內存:為運動員和教練員席,也是必需的。
以上兩項加起來,為1024KB,也就是0,1兆。
以後的內存都為體育館的觀眾席。觀眾席越多,體育館賺的錢越多。但體育館的設施和管理能力是有限的,操作系統相當體育館的管理者,只能管理3.5G的內存,1G=1024兆。win7可多管一些,32位的操作系統(xp,win7)都是3.5G。64位的多一些。
所以,內存並不是插得越多越好。而是要匹配,獲得最佳性價比才是最好的。
還有虛擬內存的問題,相當於內存的周轉庫房,一般由系統自動制定,了解即可。如果想學dos的話,可使用EMM386管理,具體的去找DOS教材,不是簡介的那種,是命令詳解的那種。上面都有。
Ⅱ 80386cpu如何從線性地址得到物理地址
理解最簡單的模型!任何復雜的設計方式、數據結構都是在這個基本的模型上改進的!
首先,80386可以工作在2種模式下,而這2種工作模式下的地址轉換方式是不一樣的。
地址的變換必須要有兩個基本的條件:一是地址線,二是地址變換涉及的一些寄存器。首先386有32條地址線,也就是說原則上可以有2^32=4G的定址空間;然後386還有如下寄存器組:
(1)EAX~EDX、ESP、EBP、ESI、EDI這樣一組32位的通用寄存器,
(2)有32位的EIP指令指針寄存器,
(3)有CS、SS、DS、ES、FS、GS這樣一組16位的段寄存器,並有各自相應的64位段描述符寄存器與之對應,但是段描述符寄存器是硬體自動設置的
(4)系統地址寄存器GDTR、IDTR,它們都是48位的
(5)CR0~CR3,控制寄存器;CR3有重要的作用
1、實模式
當CPU加電或是復位時,CPU就進入了實模式。
在實模式下,A20~A31總是低電平,所以此時386隻有2^20=1M的定址空間;16位的段寄存器左移4位以後,加上16位的偏移地址(高16位固定),這樣就剛好得到了20位的物理地址!
這里需要注意兩點:一是16位的段地址寄存器通過硬體機制傳「傳遞給」相應的32位的段基址,然後段基址硬性的將20~31置0,並將16位地址左移4位;二是作為偏移地址的32位寄存器只用了低16位,高16位全部置0,然後相加即可得到相應的物理地址;
2、保護模式
在保護模式下,地址變換無非也就是查表、線性相加等方式——歸根到底,地址的變換一定是通過硬體機制完成的。
首先,CPU內部會初始化一個很重要的48位系統地址寄存器GDTR/LDTR/IDTR,以全局描述符寄存器GDTR為例:
GDTR線性基地址段限屬性
根據這個線性的基地址,硬體可以找到描述符表的位置;然後段寄存器——現在被稱作段選擇符的高13位作為這個描述符表的偏移地址,找到裡面一個相應的描述符,並將這個描述符裝載入描述符寄存器中,這樣就得到了相應的段基址;
描述符寄存器中的32位的段基址和32位偏移地址相加,即可以得到一個32位的地址,這個地址稱之為線性地址。接下來有兩種情況:
(1)如果分頁機制被禁止,這個地址就是物理地址了!
(2)採用分頁機制。此時32位的線性地址分為3個部分,
(10位)頁目錄索引(10位)頁表索引(12位)偏移地址
首先高10位的頁目錄索引部分和CR3寄存器(它存放著頁目錄地址)結合,找到相應的頁表的地址;然後根據中間的10位的頁表索引,找到相應的頁的起始位置;然後,根據低12位的偏移地址,在這個頁中就可以找到對應的地址了——而這就是物理地址!
Ⅲ cpu找物理地址先是cache還是快表
如果緩存使用物理定址,CPU 會先對每一個存儲器操作進行 TLB 查尋,並且將取得的物理地址傳送給緩存。兩種方法各有優缺點。
Ⅳ 在存儲系統中,物理地址是怎麼樣尋找的呢
是使用地址定址器。
地址定址器相當於一個開關,主要由於或非門電路組成,當輸入不同的信號時打開不同的存儲器,在cpu讀指令下讀出該存儲器所存儲的數據。如輸入1100110101和輸入1100110110如果是地址碼就找相應的地址。
數據和地址都是用1和0表示的,只是含義不同。
Ⅳ 請教win7 64位 驅動如何取 CPU ID或網卡物理地址
1、CPU型號,可以右鍵「我的電腦」,屬性就可以看到;
2、網路ID號,可以打開網路連接,詳細信息,可以看到;
3、網卡物理地址,「win+R」調試出運行,輸入「cmd」調出命令框,然後輸入命令「ipconfig -all」,找到物理地址即可。
Ⅵ 8088CPU中的寄存器都是16位,那麼它是如何定址20位物理地址的
8088為了對20位物理地址定址,設置了邏輯地址的概念
表示方式 XXXX:YYYY
對應的物理地址=XXXX*16+YYYY
Ⅶ 現代CPU如何自動把虛擬地址轉換成物理地址的硬體電路
虛擬內存是一個由存放在磁碟上的N個連續的位元組大小的單元組成的數組。
每個位元組都有一個唯一的地址,就是虛擬地址。通常,虛擬地址由頁號和偏移量組成,頁號就是抽象的虛擬頁的編號,偏移量用於計算實際的物理地址。
虛擬地址和物理地址的關系。進程雖然使用虛擬地址,但是用數據時還是要到實際的物理地址去取數據。這就存在一個虛擬地址到物理地址的轉化運算,這是由CPU晶元上一個叫做內存管理單元(MMU)的專用硬體來實現的。
通常,物理地址=頁號*頁大小+頁內偏移量。虛擬定址CPU通過虛擬地址來訪問主存,訪問內存使用的物理地址,MMU通過將虛擬地址進行翻譯,轉化為物理地址,然後再用這個物理地址去訪問內存數據。
Ⅷ 如何查電腦的物理地址
按步驟操作即可查詢電腦的物理地址。
1、按住鍵盤上的Windows鍵,再按R鍵,調出「運行」窗口
(8)cpu是如何找到物理地址的擴展閱讀:
在存儲器里以位元組為單位存儲信息,為正確地存放或取得信息,每一個位元組單元給以一個唯一的存儲器地址,稱為物理地址(Physical Address),又叫實際地址或絕對地址。
地址從0開始編號,順序地每次加1,因此存儲器的物理地址空間是呈線性增長的。它是用二進制數來表示的,是無符號整數,書寫格式為十六進制數。它是出現在CPU外部地址匯流排上的定址物理內存的地址信號,是地址變換的最終結果。用於內存晶元級的單元定址,與處理器和CPU連接的地址匯流排相對應。
在計算機科學中,物理地址(英語:physical address),也叫實地址(real address)、二進制地址(binary address),它是在地址匯流排上,以電子形式存在的,使得數據匯流排可以訪問主存的某個特定存儲單元的內存地址。在和虛擬內存的計算機中,物理地址這個術語多用於區分虛擬地址。尤其是在使用內存管理單元(MMU)轉換內存地址的計算機中,虛擬和物理地址分別指在經MMU轉換之前和之後的地址。在計算機網路中,物理地址有時又是MAC地址的同義詞。這個地址實際上是用於數據鏈路層,而不是如它名字所指的物理層上的。
參考資料:物理地址 網路
Ⅸ CPU的物理地址
給你一個公式吧
物理地址
=16(應該寫成
十六進制
即10H)*段地址+偏移地址
其中段地址和偏移地址為16位,而算出來物理地址為20位