Ⅰ 什麼是邏輯地址空間物理存儲空間
邏輯地址(Logical Address) 是指由程序產生的與段相關的偏移地址部分。例如,你在進行C語言指針編程中,可以讀取指針變數本身值(&操作),實際上這個值就是邏輯地址,它是相對於你當前進程數據段的地址,不和絕對物理地址相干。只有在Intel實模式下,邏輯地址才和物理地址相等(因為實模式沒有分段或分頁機制,Cpu不進行自動地址轉換);邏輯也就是在Intel 保護模式下程序執行代碼段限長內的偏移地址(假定代碼段、數據段如果完全一樣)。應用程序員僅需與邏輯地址打交道,而分段和分頁機制對您來說是完全透明的,僅由系統編程人員涉及。應用程序員雖然自己可以直接操作內存,那也只能在操作系統給你分配的內存段操作。線性地址(Linear Address) 是邏輯地址到物理地址變換之間的中間層。程序代碼會產生邏輯地址,或者說是段中的偏移地址,加上相應段的基地址就生成了一個線性地址。如果啟用了分頁機制,那麼線性地址可以再經變換以產生一個物理地址。若沒有啟用分頁機制,那麼線性地址直接就是物理地址。Intel 80386的線性地址空間容量為4G(2的32次方即32根地址匯流排定址)。物理地址(Physical Address) 是指出現在CPU外部地址匯流排上的定址物理內存的地址信號,是地址變換的最終結果地址。如果啟用了分頁機制,那麼線性地址會使用頁目錄和頁表中的項變換成物理地址。如果沒有啟用分頁機制,那麼線性地址就直接成為物理地址了。虛擬內存(Virtual Memory) 是指計算機呈現出要比實際擁有的內存大得多的內存量。因此它允許程序員編制並運行比實際系統擁有的內存大得多的程序。這使得許多大型項目也能夠在具有有限內存資源的系統上實現。一個很恰當的比喻是:你不需要很長的軌道就可以讓一列火車從上海開到北京。你只需要足夠長的鐵軌(比如說3公里)就可以完成這個任務。採取的方法是把後面的鐵軌立刻鋪到火車的前面,只要你的操作足夠快並能滿足要求,列車就能象在一條完整的軌道上運行。這也就是虛擬內存管理需要完成的任務。在Linux 0.11內核中,給每個程序(進程)都劃分了總容量為64MB的虛擬內存空間。因此程序的邏輯地址范圍是0x0000000到0x4000000。有時我們也把邏輯地址稱為虛擬地址。因為與虛擬內存空間的概念類似,邏輯地址也是與實際物理內存容量無關的。 邏輯地址與物理地址的「差距」是0xC0000000,是由於虛擬地址->線性地址->物理地址映射正好差這個值。這個值是由操作系統指定的。
Ⅱ 什麼是邏輯地址什麼是物理地址
邏輯地址: 是指由程序產生的與段相關的偏移地址部分。又稱絕對地址。
物理地址:在存儲器里以位元組為單位存儲信息,為正確地存放或取得信息,每一個位元組單元給以一個唯一的存儲器地址,稱為物理地址,又叫實際地址或絕對地址。
一、關系:邏輯地址和物理地址相對的。物理地址是唯一的,邏輯地址的相對的。
二、表達方式:
1、邏輯地址:其表達形式為「段地址:段內偏移地址」。
2、物理地址:CPU與存儲器進行數據交換時在地址匯流排上 。
(2)物理地址緩存邏輯地址緩存擴展閱讀:
一、邏輯地址的產生背景
追根求源,Intel的8位機8080CPU,數據匯流排(DB)為8位,地址匯流排(AB)為16位。那麼這個16位地址信息也是要通過8位數據匯流排來傳送,也是要在數據通道中的暫存器,以及在CPU中的寄存器和內存中存放的,但由於AB正好是DB的整數倍,故不會產生矛盾!
但當上升到16位機後,Intel8086/8088CPU的設計由於當年IC集成技術和外封裝及引腳技術的限制,不能超過40個引腳。但又感覺到8位機原來的地址定址能力2^16=64KB太少了,但直接增加到16的整數倍即令AB=32位又是達不到的。
故而只能把AB暫時增加4條成為20條。則2^20=1MB的定址能力已經增加了16倍。但此舉卻造成了AB的20位和DB的16位之間的矛盾,20位地址信息既無法在DB上傳送,又無法在16位的CPU寄存器和內存單元中存放。於是應運而生就產生了CPU段結構的原理。
二、物理地址的計算方法
在實地址方式下,物理地址是通過段地址乘以16加上偏移地址得到的。而16位的段地址乘以16等同於左移4位二進制位,這樣變成20位的段基地址,最後段基地址加上段內偏移地址即可得到物理地址。
20位物理地址計算方法如下:
物理地址=段地址*16d+偏移地址。
Ⅲ cache映射採用物理地址還是邏輯地址
是物理地址。即先把這條訪存指令的邏輯地址轉換成物理地址,再按照物理地址來搜索cache查看是否在cache中。
如果用虛擬地址,那麼映射方式布線必須要加入 MMU,那麼使用【直接映射、組映射】圖個連內存線方便的目的 被 MMU 加入完全失去了意義。
而且如果兩個不同虛地址映射到同一塊物理地址,還要浪費 Cache 來占兩處嗎?
Ⅳ arm處理器中的邏輯cache和物理cache是什麼
邏輯cache在虛擬地址空間存儲數據,它位於處理器和MMU之間。處理器可以直接通過邏輯cache訪問數據而無需通過MMU。
物理cache使用物理地址存儲數據,它位於MMU和主存之間。當處理器訪問存儲器時,MMU必須先把虛擬地址轉化為物理地址,cache存儲器才可向內核提供數據。
Ⅳ cpu命中高速緩存用的地址,是物理地址,還是邏輯地址
第一問(怎麼查找高速緩存。)
用PC中的虛擬地址的offset欄位拆分成index欄位和block offset部分。用index訪問高速緩存,從多個cache set中各命中一個cache line。虛擬地址的vpn部分定址TLB,得到一個物理地址。這兩步是同時執行的。
把訪問TLB得到的物理地址和cache line的Tag部分比較,判斷hit?miss?最後用block offset部分從cache line內命中一位元組的Data
配張圖感覺比較好理解,【圖獻自《計算機體系結構 量化研究方法》一書】
、
——————————————————————————————————————————
第二問(應該內存物理地址和高速緩存中地址對應不是嗎?)
我直接說對應的物理內存的數據該放在哪個cache set中,這樣聽起來應該比較舒服。
假設一個數據在物理內存的塊地址是4000(注意區別塊地址和位元組地址),一個cache為8個cache set,4000mod8=0;那麼他在被使用之後應該放在0set中。
Ⅵ 什麼是邏輯地址什麼是物理地址他們之間有什麼聯系(簡答題)
你問的是CPU里的物理地址和邏輯地址吧?
物理地址:在存儲器里以位元組為單位存儲信息,為了正確地存放或取得信息,每一個位元組單元給以一個唯一的存儲器地址,稱為物理地址(Physical Address),又叫實際地址或絕對地址.地址從0開始編號,順序地每次加1,因此存儲器的物理地址空間是呈線性增長的.它是用二進制數來表示的,是無符號整數,書寫格式為十六進制數.
它是出現在CPU外部地址匯流排上的定址物理內存的地址信號,是地址變換的最終結果.用於內存晶元級的單元定址,與處理器和CPU連接的地址匯流排相對應.
邏輯地址:在有地址變換功能的計算機中,訪內指令給出的地址 (操作數) 叫邏輯地址,也叫相對地址.要經過定址方式的計算或變換才得到內存儲器中的物理地址.
Ⅶ 什麼是邏輯地址什麼是物理地址它們之間有什麼關系各用在何處
邏輯地址在工具書中的解釋
:
1、在有地址變換功能的計算機中,訪內指令給出的地址
(操作數)
叫邏輯地址,也叫相對地址。要經過定址方式的計算或變換才得到內存儲器中的物理地址。
2、把用戶程序中使用的地址稱為相對地址即邏輯地址。
網卡物理地址存儲器中存儲單元對應實際地址稱物理地址,與邏輯地址相對應。
網路中的地址分為物理地址和邏輯地址兩類,與網路層的IP地址傳輸層的埠號以及應用層的用戶名相比較,區域網的MAC層地址是由硬體來處理的,叫做物理地址或硬體地址。IP地址傳輸層的埠號以及應用層的用戶名是邏輯地址由軟體來處理。MAC地址不等同於物理地址.
大多數區域網通過為網卡分配一個硬體地址來標識一個聯網的計算機或其他設備.所謂物理地址是指固化在網卡EPROM中的地址,這個地址應該保證在全網是唯一的。IEEE注冊委員會為每一個生產廠商分配物理地址的前三位元組,即公司標識。後面三位元組由廠商自行分配,一個廠商獲得一個前三位元組的地址可以生產的網卡數量是16777216塊。而一塊網卡對應一個物理地址。也就是說對應物理地址的前三位元組就可以知道他的生產廠商。
例如固化在網卡中的地址為002514895423,那麼這塊網卡插到主機A中,主機A的物理地址就是002514895423,不管主機A是連接在區域網1上還是在區域網2上,也不管這台計算機移到什麼位置,主機A的物理地址就是002514895423。它是不變的,而且不會和世界上任何一台計算機相同。當主機A發送一幀時,網卡執行發送程序時,直接將這個地址作為源地址寫入該幀。當主機A接收一幀時,直接將這個地址與接收幀目的地址比較,以決定是否接收。物理地址一般記作00-25-14-89-54-23(主機A的地址是002514895423)。
Ⅷ 什麼是邏輯地址什麼是物理地址在實模式下,如何求存儲器的物理地址假設一個
邏輯地址和物理地址的區別是:
邏輯地址(Logical Address) 是指由程序產生的與段相關的偏移地址部分。例如,你在進行C語言指針編程中,可以讀取指針變數本身值(&操作),實際上這個值就是邏輯地址,它是相對於你當前進程數據段的地址,不和絕對物理地址相干。只有在Intel實模式下,邏輯地址才和物理地址相等(因為實模式沒有分段或分頁機制,Cpu不進行自動地址轉換);邏輯也就是在Intel 保護模式下程序執行代碼段限長內的偏移地址(假定代碼段、數據段如果完全一樣)。應用程序員僅需與邏輯地址打交道,而分段和分頁機制對您來說是完全透明的,僅由系統編程人員涉及。應用程序員雖然自己可以直接操作內存,那也只能在操作系統給你分配的內存段操作。
物理地址(Physical Address) 是指出現在CPU外部地址匯流排上的定址物理內存的地址信號,是地址變換的最終結果地址。如果啟用了分頁機制,那麼線性地址會使用頁目錄和頁表中的項變換成物理地址。如果沒有啟用分頁機制,那麼線性地址就直接成為物理地址了。
虛擬內存(Virtual Memory)是指計算機呈現出要比實際擁有的內存大得多的內存量。因此它允許程序員編制並運行比實際系統擁有的內存大得多的程序。這使得許多大型項目也能夠在具有有限內存資源的系統上實現。一個很恰當的比喻是:你不需要很長的軌道就可以讓一列火車從上海開到北京。你只需要足夠長的鐵軌(比如說3公里)就可以完成這個任務。採取的方法是把後面的鐵軌立刻鋪到火車的前面,只要你的操作足夠快並能滿足要求,列車就能象在一條完整的軌道上運行。這也就是虛擬內存管理需要完成的任務。在Linux 0.11內核中,給每個程序(進程)都劃分了總容量為64MB的虛擬內存空間。因此程序的邏輯地址范圍是0x0000000到0x4000000。有時我們也把邏輯地址稱為虛擬地址。因為與虛擬內存空間的概念類似,邏輯地址也是與實際物理內存容量無關的。 邏輯地址與物理地址的「差距」是0xC0000000,是由於虛擬地址->線性地址->物理地址映射正好差這個值。這個值是由操作系統指定的。
Ⅸ 什麼是邏輯地址什麼是物理地址它們之間有什麼關系
邏輯地址(LogicalAddress)是指由程序產生的與段相關的偏移地址部分。有時我們也把邏輯地址稱為虛擬地址
物理地址(Physical Address) 是指出現在CPU外部地址匯流排上的定址物理內存的地址信號,是地址變換的最終結果地址。如果啟用了分頁機制,那麼線性地址會使用頁目錄和頁表中的項變換成物理地址。如果沒有啟用分頁機制,那麼線性地址就直接成為物理地址了。
二者的關系如下:
只有在Intel實模式下,邏輯地址才和物理地址相等(因為實模式沒有分段或分頁機制,Cpu不進行自動地址轉換);邏輯也就是在Intel 保護模式下程序執行代碼段限長內的偏移地址(假定代碼段、數據段如果完全一樣)。應用程序員僅需與邏輯地址打交道,而分段和分頁機制對您來說是完全透明的,僅由系統編程人員涉及。應用程序員雖然自己可以直接操作內存,那也只能在操作系統給你分配的內存段操作。
邏輯地址與物理地址的「差距」是0xC0000000,是由於虛擬地址->線性地址->物理地址映射正好差這個值。這個值是由操作系統指定的。
Ⅹ 邏輯地址和物理地址的區別是什麼
物理地址是內存的實際地址,如RAM,虛擬地址只是緩存和RAM之間的邏輯地址映射。在操作系統中,每當我們談論代碼或其部分的地址或地址空間時,我們指的是該部分代碼所在的內存位置。讓我們通過一個現實生活中的異常來了解操作系統中的定址。
邏輯地址和物理地址的特點
當我們談論邏輯地址時,我們指的是CPU分配給每個進程的地址,正如我們已經討論過的,一個進程在內存中所處的實際地址與進程認為它所處的地址是不一樣的,這種地址映射基本上是在進程共享內存時所必需的,而不需要讓進程知道它們彼此共享相同的內存空間。
物理地址是進程及其內容放置在主內存或硬碟中的地址,每當我們運行一個進程或將一些數據存儲在計算機的主存儲設備或輔助存儲設備中時,我們總是將其存儲起來以備將來隨時訪問。比如我在電腦的D盤存了一個word文件,我想訪問它,以後怎麼訪問,當然是去D盤打開word文件。
但是如果我將一個進程保存在主存中的某個存儲單元或內存單元中,並希望將來訪問它,該怎麼辦,就我們在本教程中研究過的地址而言,我們知道每當一個進程被創建時,CPU 都會生成它的虛擬地址,但又是一團糟。虛擬地址與進程實際放置在內存中的地址不同。
然而,內存單元存儲在由物理地址(用戶未知)訪問的主內存中,我們所知道的只是進程的邏輯地址,那麼當我們需要訪問進程的時候我們將如何訪問物理地址呢,到目前為止,這似乎是不可能的,但這當然不是因為我們從計算機誕生到現在一直在訪問創建的進程。
因此,我們需要詳細討論這個問題,在進程創建時,CPU 不僅會生成虛擬地址,還會使用一些硬體支持將(先前生成的)虛擬地址映射到實際存儲它的物理地址,這在下面的地址映射部分進行了討論。
因此,當我們嘗試訪問內存中已經保存的進程時,CPU 將虛擬地址返回給硬體,硬體將虛擬/邏輯地址映射到物理地址上,並間接訪問進程的內存空間。