tft每日頭條

 > 圖文

 > cpu訪問物理地址

cpu訪問物理地址

圖文 更新时间:2025-05-16 22:28:01

cpu訪問物理地址(CPU确定物理地址的玄機)1

今天是彙編專輯第二彈,以8086CPU抛磚引玉,讨論一下CPU确定物理地址平凡又神奇的操作!

物理地址

我們知道,CPU 訪問内存單元時,要給出内存單元的地址。所有的内存單元構成的存儲空間是一個一維的線性空間,每一個内存單元在這個空間中都有唯一的地址,我們将這個唯一的地址稱為物理地址。

8086是16位結構的CPU,這也就是說,在8086内部,能夠一次性處理、傳輸、暫時存儲的信息的最大長度是16位。内存單元的地址在送上地址總線之前,必須在CPU中處理、傳輸、暫時存放。

而上一篇我們講到,地址總線的寬度決定CPU的尋址能力。8086有20根地址總線,可以傳送20位地址,所以其尋址能力為2^20B,即1M。(傳送門:計算機中的三類總線 )

很自然地,這裡産生了矛盾:如果隻是簡單地将地址從内部發出,那麼8086隻能發出16位的地址,表現的尋址能力也就隻有2^16byte,即64KB。這這與1M的尋址能力不符!

那麼如何解決該矛盾呢?

在正式讨論之前,我們換一個話題。如下圖所示,假如大熊要去圖書館,詢問胖虎圖書館的具體位置(物理地址),于是胖虎告訴他:

cpu訪問物理地址(CPU确定物理地址的玄機)2

(1)你可以從從學校走2826米能到圖書館;

(2)也可以從學校走2000米到體育館,再走826米就是圖書館。

顯然,兩種方式大熊都能找到圖書館的位置。

那麼現在加一些限制條件,比如大熊和胖虎之間用如下的方格紙進行通信,那麼按照第一種方式直接寫入2826表示圖書館的位置就能準确定位。

cpu訪問物理地址(CPU确定物理地址的玄機)3

如果現在再加一個限定條件:假如方格個數隻有三個,如何才能定位圖書館的位置呢?

隻能采用第二種方式咯:先找到體育館,再通過偏移的826米找到圖書館。

cpu訪問物理地址(CPU确定物理地址的玄機)4

概括表述為:先用200米表示起始位置,我給它起個名字叫段地址,将200米乘以10的位置我們叫它基地址,基地址再加上偏移位置826米,正好是2826米,也就是圖書館的位置!

好了,我們再回到8086CPU确定物理地址的方式上來,根據上面的例子我們就能解決CPU内部與數據總線的矛盾。8086CPU采用一種在内部用兩個16位地址合成的方法來形成一個20位的物理地址。

(1) CPU中的相關部件提供兩個16位的地址,一個稱為段地址,另一個稱為偏移地址;

(2)段地址和偏移地址通過内部總線送入一個稱為地址加法器的部件;

(3)地址加法器将兩個16位地址合成為一個20位的物理地址;

(4)地址加法器通過内部總線将20位物理地址送入輸入輸出控制電路;

(5)輸入輸出控制電路将20位物理地址送上地址總線;

(6)20位物理地址被地址總線傳送到存儲器。

動圖演示如下:

cpu訪問物理地址(CPU确定物理地址的玄機)5

地址加法器采用物理地址=段地址x16 偏移地址的方式合成物理地址,其思想和上述例子中找圖書館的位置時如出一轍的,隻不過從10進制變成了計算機的16進制。

cpu訪問物理地址(CPU确定物理地址的玄機)6

當個體受限時,借助外力以及互相配合則顯得尤為重要!

cpu訪問物理地址(CPU确定物理地址的玄機)7

君子性非異也,善假于物也。——荀子

兩點注意:

(1)段地址×16必然是16的倍數,所以一個段的起始地址也一定是16的倍數;

(2)偏移地址為16位,16位地址的尋址能力為64KB,所以一個段的長度最大為64KB。

總結
  • CPU将若幹地址連續的内存單元看作一個段,用段地址x16定位段的起始地址(基礎地址),用偏移地址定位段中的内存單元;
  • 物理地址=段地址x16 偏移地址

cpu訪問物理地址(CPU确定物理地址的玄機)8

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved