吐血整理!這篇帶你徹底理解主存中存儲單元地址的分配
在閱讀本文之前,建議沒有基礎的讀者先閱讀下主存的基本組成結構:
存儲單元的字地址:
我們來看張圖:
在上面的圖中,每一個小矩形代表一個存儲單元,大矩形表示主存中的存儲體。
通常都是以8位二進制為一個存儲單元,也就是一個位元組。然後在我們的計算機中,不管是筆記本還是台式機,總會聽到CPU一次處理數據的能力是32位還是64位,其實,這個32位或者64位就是用來表示字長。字長用來表示字的長度。而字就是由位元組構成。
在上圖中,一個存儲單元為1個位元組,這4個位元組又構成一個字,每個字有字地址,在上圖中表示出來了。關於字地址的表示方式,也有兩種,這兩種表示方法的區別,我後面也會用一篇文章來解釋清楚。
那麼,上圖的字長為多少呢?
我們來分析下,4個位元組構成一個字,一個位元組等於8個比特,所以總共就是32位了。現在我們的計算機,都是64位了,很少有32位的計算機出現了。
舉例:
在學習到主存儲體的章節時,這三道題我們經常會看到,經常會有小夥伴很迷惑,不知道怎麼分析,我們來看下下面三道題:
1.設地址線為24根,按位元組尋址,有多少存儲字?
2.如果存儲容量不變,若字長為16位,按字尋址有多少存儲字?
3.如果存儲容量還不變,若字長為32,按字尋址有多少存儲字?
我們先分析下第一個問題。
這裡假如地址線有24根,由於地址也是用2進制表示的,那麼每根地址線就有0或者1兩位,地址可以表示為從00000..00000(24位)—11111…11111(24位)。一共就有224位,也就是224個地址。轉化之後就是16MB的地址。這些地址表示存儲單元的位置,所以存儲單元的個數也就是16MB。
那麼,16MB怎麼計算的呢?
224Byte(位元組)=16777216Byte
16777216Byte/1024=16384KByte
16384KByte/1024 = 16MByte
而且,1Byte=8Bit,那麼16MByte = 128Mbit。
第一個問題的意思就是,一個字等於8比特,也就是一個位元組。一個存儲單元可以存放一個8位二進制數,這個二進制數就是一個存儲字。其實,就是問有多少個存儲單元。經過計算,就是16MB個。
我們先分析下第二個問題。
在上面第一個例子中,一個存儲單元中有8位,那麼16MB個存儲單元中,可以存放16MB×8位。就是存儲單元的容量,簡稱存儲容量。
那麼,第二個問題中,存儲容量不變,就是一樣有16MB×8的空間。字長為16位,我們按字尋址,有多少個存儲字?
如果是按字尋址,我們知道字長16位,那麼總容量除以字長就是存儲字的個數:
(16MB*8)/ 16 = 8M
那麼第三個問題也是一樣的,只是把字長換成了32
(16MB*8)/ 32 = 4M