天天看點

DRAM記憶體編址及各個字長的含義(參考書籍 : Computer Systems A Programmer's Perspective 3rd)

最近上計組課,計組老師講課總是開飛機。

而且國内清華大學出版社第三版計組教程關于記憶體的編址和各種字長的含義我個人覺得解釋得有點含混不清。

是以自己找了本外文版的計組,發現外文的詞意不經過翻譯确實更能令人讀懂,可能這也是古詩被翻譯成外文就淡然無味的原因吧。

首先我們了解下DRAM的記憶體編址。

首先DRAM的記憶體被模型化成一種叫做 “陣列” (array element) 的結構.

簡單了解就是下圖中分成格的矩形。

這個矩形的格數和長寬由DRAM的容量等因素決定。

DRAM記憶體編址及各個字長的含義(參考書籍 : Computer Systems A Programmer's Perspective 3rd)

每個格子被稱為“supercell”。其實格子的名稱有“word”(字) 和 “cell” (單元) 兩種稱呼

前一種是硬體工程師喜歡那麼叫,而後一種是電腦架構師喜歡那麼叫。

但是為了統一稱呼避免混淆,叫他做“supercell” ,至今我都沒有在國内找到“supercell” 對應合适的稱呼,自己也沒有想出一個合适好聽的稱呼…

但這其中值得玩味的是,為什麼硬體工程師喜歡叫他“word(字)”呢?而計算機架構師喜歡叫“cell”呢?

圖中第一句話的意思大概可以了解為

計算機結構師覺得這個“supercell”,應該裝載存儲單元。(存儲單元 = 最小編址單元)。

(我的猜想)是以索性叫supercell為“cell”。

而第二句話,硬體工程師覺得supercell應該裝填一個字大小的記憶體資訊,這裡的字指的是什麼呢?

(我的猜想),還記得硬體中的字線(Word Line)嗎?是用來打開記憶體中記憶單元的控制線,那讀取一個字大小的資料,是否就是用位線打開一定數量的記憶單元呢?(每個記憶單元為1bit)。

因為硬體工程師認為的word和第一句話裡的cell大小相等,是以,這裡的word的大小應該等于存儲單元的大小。

每次位線都要打開存儲單元大小個數量的記憶單元來通路記憶體。

硬體工程師眼中的word是每次通路記憶體的最小機關。

DRAM記憶體編址及各個字長的含義(參考書籍 : Computer Systems A Programmer's Perspective 3rd)

關于存儲單元 :

清華大學出版社的教材上介紹“存儲單元”

原話是:“存儲單元是CPU對主存可通路操作的最小存儲單元。”

而我們聯系到上面的圖,每個supercell都有唯一的編号對應,比如我們有10根位址線,有1024個編址單元,每個編址單元都是一個supercell。

是以我們大概可以把supercell了解成最小的編址單元。也就是教材上說的“CPU對主存可通路操作的最小存儲單元”。

是以如果記憶體按照位元組編址,supercell大小是8bits

如果機器字編址,supercell的大小是機器字位數

接下來解釋各個字長的含義。

1.我們平常說的“字”指的是機器字,而“字長”一般指的是資料字長

2.機器字長 : 一般是寄存器的位數,即計算機每次運算處理能操作的最大位數,比如常說的32位計算機,一個運算最多從寄存器中取出32位進行運算。

3.資料字長 :是平時所說的字長,隻是一個度量資料長度的機關,就像平時說的米,千米一樣

比如首先定義資料字長是16位,那麼32位int的大小就是2資料字長,平時簡稱,兩個字長

說一個資料的大小必須先定義清楚字長大小。

4.存儲字長,在一個存取周期内,能從記憶體中讀取出的最大長度。

比如說存儲字長是32位,而存儲單元是8位。

那麼一次性能從記憶體讀出32位,即32/8 = 4 個supercell(存儲單元),那麼矩形圖每一行就應該有4個supercell,上面的矩形圖就是這樣設計的。

繼續閱讀