理解記憶體位址

2021-08-20 06:46:13 字數 1231 閱讀 5727

物理記憶體:記憶體條實際提供的記憶體空間 

記憶體定址:在記憶體上找到正確的位置以便進行訪問的過程

硬編碼:通過實體地址操作物理記憶體的寫碼方式

線性記憶體和物理記憶體:

相似點:從0編號,線性增加;

不同:

1.實體地址一一對應於實際物理記憶體空間的位置,而線性位址可多對一(多個線性位址對應乙個實體地址)

2.實體地址的增加,總是線性地對應著記憶體空間的位置;但是線性位址的增加,對應到實體地址上,可以分段跳躍。

分段:不同級別的程式、程式的不同資料型別,存放在不同的「段」上面,然後再定義在「段」上的偏移量。現代程式看到的位址都不是線性的,而是分段過的位址,形如:segment:offset。

邏輯記憶體空間:段 + 偏移量組成的空間

寬度:位寬;某東西在同一時刻能處理的資料量;單位:位(bit)

對於 xx 位 cpu 來說,它一次性能夠表示的無符號數的範圍是 0,2x−1。因此,對這枚 cpu 來說,它以位元組(byte)為單位定址時,最多能在 2x bytes2x bytes 的記憶體空間中找到它需要的資料。如果在定址時,不加入其它資訊,那麼這是它的定址能力上限。

cpu 需要通過位址匯流排去記憶體定址。若位址匯流排的頻寬為 yy 位,那麼在位址匯流排中傳輸的物理記憶體位址的範圍是 0,2y−1。也就是說,位址匯流排的可定址空間是 2y bytes2y bytes。位址匯流排中的位址,是與物理記憶體位址保持一致的。

因此,如果在定址時,不加入其它資訊,cpu 具體的定址能力取決於 cpu 本身的位寬和它連線的位址匯流排的頻寬:2min(x,y) bytes2min(x,y) bytes。

分頁就是人為地在邏輯上將連續的記憶體空間,按照固定大小切分成一段一段。對於線性記憶體來說,這樣切分出來的固定大小叫做「頁(page)」;對於物理記憶體來說,這樣切分出來的固定大小叫做「頁幀(page frame)」。

分頁機制將線性記憶體分為若干頁,將物理記憶體分為若干幀,並建立從頁到幀的對映關係。這個對映關係,是乙個「多對一」的對映。

快取記憶體將最近的訪存頁面對應的內容儲存其中。當 cpu 訪存時,首先在快取中查詢是否有目標頁內容:若有,則直接訪問內容;否則,再進行二級頁表的查詢,到記憶體中訪問內容。如果快取存滿了,則根據一定的演算法(退場機制),將快取中的過期資料退場。

根據 intel 自己的統計,大約 98% 的訪存請求可以通過快取記憶體處理。亦即,只有 2% 的訪存請求,需要進行兩次頁表查詢。可見,快取記憶體的存在,大大降低了資料交換的量和頻次。因此,快取記憶體大大提公升了定址/訪存速度。

記憶體位址分配

inti 1 intj 1 cout i endl j endl 2 函式引數列表的存放方式是,先對最右邊的形參分配位址,後對最左邊的形參分配位址。3 little endian模式的cpu對運算元的存放方式是從低位元組到高位元組的 0x1234的存放方式入下 0x4000 0x34 0x4001 ...

記憶體位址對齊

記憶體位址對齊,是一種在計算機記憶體中排列資料 訪問資料的一種方式,包含了兩種相互獨立又相互關聯的部分 基本資料對齊和結構體資料對齊。當今的計算機在計算機記憶體中讀寫資料時都是按字 word 大小塊來進行操作的 在32位系統中,資料匯流排寬度為32,每次能讀取4位元組,位址匯流排寬度為32,因此最大...

記憶體位址和記憶體空間的理解

1.記憶體位址用4位16進製制和8位16進製表示的區別。例如經常可以看到某些書籍上寫的記憶體位址0x0001,在另外一些書籍上寫的記憶體位址又變成了0x00000001。都是表示的編號為1的記憶體位址,為什麼乙個是4位16進製表示,另外乙個又是用8位16進製表示呢?首先,必須要知道記憶體位址只是乙個...