吐血整理!這篇帶你徹底理解主存中儲存單元地址的分配
阿新 • • 發佈:2020-07-06
在閱讀本文之前,建議沒有基礎的讀者先閱讀下主存的基本組成結構:
[五分鐘理解主儲存器的基本組成結構](https://blog.csdn.net/weixin_41695995/article/details/105009429)
## 儲存單元的字地址:
我們來看張圖:
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20200323210342780.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTY5NTk5NQ==,size_16,color_FFFFFF,t_70)
在上面的圖中,每一個小矩形代表一個儲存單元,大矩形表示主存中的儲存體。
通常都是以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位)。一共就有2^24^位,也就是2^24^個地址。轉化之後就是16MB的地址。這些地址表示儲存單元的位置,所以儲存單元的個數也就是16MB。
那麼,16MB怎麼計算的呢?
> 2^24^Byte(位元組)=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
## 如果覺得我寫的不錯的話,幫個忙唄
##### 1.關注我的知乎賬號小叢,上面有我的文章同步,同時需要詢問學習計算機經驗的話,也歡迎私聊。
##### 2.點贊,關注我,這是對我最大的鼓勵了,有了你們的鼓勵,我會寫出更多的優質