DRAM非常重要阳欲,但是我發(fā)現(xiàn)我并沒有真正的懂DRAM的整個架構(gòu)與執(zhí)行流程。
上圖為DRAM的硬件結(jié)構(gòu)球化,右圖CAP為電容,WL表示一個晶體管筒愚。若要DRAM密度變大赴蝇,則會使得取CAP數(shù)據(jù)的難度加大,所以DRAM不能無限擴(kuò)容巢掺。
整個DRAM的結(jié)構(gòu)如上圖所示,其中Chip考余、Bank以及Row/Column的概念比較重要轧苫。
讀取數(shù)據(jù)的時候,開始Row Decoder會將一個row讀到Sense Amps(row buffer)中含懊,然后由Column decoder讀具體的數(shù)據(jù)cell。
操作包括三個步驟:Activate酥筝、讀寫雏门、充電(讀取的時候會破壞數(shù)據(jù),所以需要重寫)剿配。
而這里我們疑惑,到底一個<row,column>對應(yīng)的數(shù)據(jù)量有多大呢茄唐?
根據(jù)上圖所知蝇更,一個行列選中的cell中包括了1B(8bit)的數(shù)據(jù)。
而如果需要找一個cache line蚁廓,那么需要通過八個Chip分別找對應(yīng)<Row-0, Col-1>的數(shù)據(jù)8*8B=64B(這樣快很多)厨幻。而這里要注意腿时,我們的Chip是并行讀取數(shù)據(jù)饭宾,然而一個Chip中其實(shí)包括了8個Bank,但是一個Chip中我只能讀一個Bank上的數(shù)據(jù)看铆,而不是并行,是或的關(guān)系弹惦。操作流程如下:
首先我想讀取64B的cache line棠隐,那么我需要將任務(wù)分擔(dān)給8個Chip石抡。
一個Chip中分了8Byte的讀取任務(wù)宵荒,此時,我需要在一個Chip中找到一個Bank侠讯,我需要從這個Bank中讀出這8Byte數(shù)據(jù)暑刃。如上兩圖。
此外岩臣,這里DRAM的最小讀寫粒度為64bit。
http://web.cecs.pdx.edu/~zeshan/hw2_sol.pdf這個網(wǎng)頁中也貼出來了許多DRAM的參數(shù)計算方式炸宵,包括Row谷扣、Column的個數(shù)等。
真實(shí)硬件:
其中黑色的顆粒就是我們所說的Chip裹匙。