回覆列表
-
1 # 聰明雪梨ac
-
2 # 使用者2969400369911
16根地址匯流排,定址範圍也就是2的16次方。
1Byte =8bit;
16根地址匯流排可定址的記憶體單元個數 =2^16 Byte =65535Byte ,
(65536Byte)/(1024Byte/kB) = 64kB;
單元及I/0介面中的各個不同裝置,都有各自不同的地址。地址匯流排是CPU向主儲存器和I/O介面傳送地址資訊的通路,它是自CPU向外傳送的單向匯流排。地址線的寬度決定了微型計算機的直接定址能力(即尋找主儲存器單元和I/O裝置範圍)。
早期的微機,一般匯流排寬度為16根,故其直接定址範圍為216=64KB(1KB=1024B,B是位元組Byte的縮寫,1B=8b,b是二進位制位bit的縮寫);
Intel 8086具有20根地址匯流排,其直接定址範圍為220=1MB(1MB=1024KB);Intel 80386、80486均為32根地址線,直接定址範圍可達232=4GB(1GB=1024MB)。
先說兩個規則:
1. 定址範圍=定址單元大小*定址字長
2. 定址字長與CPU字長無直接關係
對於比較老的硬碟來說:
定址單元是一個扇區512位元組,定址字長是2^32,所以可用的最大磁碟容量是2TB
對於現在的硬碟來說:
定址單元是一個扇區,可能是512位元組也可能是4096位元組,定址字長是2^48,所以可用的最大磁碟容量是128PB~1EB左右。
解釋一下CPU的字長與定址字長無直接關係(以下討論僅限記憶體,定址單元大小是位元組):
CPU字長可以比定址字長大,比如:64位系統裡的一些DMA控制器地址線就是32位的。
CPU字長也可以比定址字長小,比如:小霸王學習機裡8位系統可用最大記憶體是64KB;386的16位系統可用記憶體可以達到640K甚至更大,x86架構下32位CPU開啟PAE可以獲得物理上超過4GB的定址範圍。
如果CPU字長比地址線要多,那麼軟體設計時,會嘗試遮蔽某些高位;
如果CPU字長比地址線要少,那麼訪問時一般採取多級選擇、多暫存器組合的方式,比如記憶體分段、分頁都是在CPU字長不足的情況下獲得更大的記憶體訪問能力手段。
對於32位CPU來說,開啟PAE可以獲得更大的定址能力,但Windows將其在軟體上限制死了,這個問題可以參見:為何微軟不在新的作業系統中讓 32 位支援大於 4GB 的記憶體? - 北極的回答