




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選優質文檔-傾情為你奉上內存的工作原理及時序介紹第一部分:工作原理DRAM基本組成內存是由DRAM(動態隨機存儲器)芯片組成的。DRAM的內部結構可以說是PC芯片中最簡單的,是由許多重復的“單元”cell組成,每一個cell由一個電容和一個晶體管(一般是N溝道MOSFET)構成,電容可儲存1bit數據量,充放電后電荷的多少(電勢高低)分別對應二進制數據0和1。由于電容會有漏電現象,因此過一段時間之后電荷會丟失,導致電勢不足而丟失數據,因此必須經常進行充電保持電勢,這個充電的動作叫做刷新,因此動態存儲器具有刷新特性,這個刷新的操作一直要持續到數據改變或者斷電。而MOSFET則是控制電容充放電的
2、開關。DRAM由于結構簡單,可以做到面積很小,存儲容量很大。內存地址內存中的cell按矩陣形排列,每一行和每一列都會有一個對應的行地址線路(正規叫法叫做word line)和列地址線路(正規叫法是bit line),每個具體的cell就掛接在這樣的行地址線路和列地址線路上,對應一個唯一的行號和列號,把行號和列號組合在一起,就是內存的地址。 上圖是Thaiphoon Burner的一個SPD dump,每個地址是一個字節。不過我們可以把這些數據假設成只有一個bit,當成是一個簡單的內存地址表,左邊豎著的是行地址,上方橫著的是列地址。例如我們要找第七行、倒數第二列(地址為7E)的數據,它
3、就只有一個對應的值:FD。當然了,在內存的cell中,它只能是0或者1。尋址數據要寫入內存的一個cell,或者從內存中的一個cell讀取數據,首先要完成對這個cell的尋址。尋址的過程,首先是將需要操作的cell的對應行地址信號和列地址信號輸入行/列地址緩沖器,然后先通過行解碼器(Row Decoder)選擇特定的行地址線路,以激活特定的行地址。每一條行地址線路會與多條列地址線路和cell相連接,為了偵測列地址線路上微弱的激活信號,還需要一個額外的感應放大器(Sense Amplifier)放大這個信號。當行激活之后,列地址緩沖器中的列地址信號通過列解碼器(Column Decoder)確定列
4、地址,并被對應的感應放大器通過連接IO線路,這樣cell就被激活,并可供讀寫操作,尋址完成。從行地址激活,到找到列地址這段時間,就是tRCD。內存cell的基本操作內存中的cell可以分為3個基本操作,數據的儲存、寫入與讀取。為了便于理解,我不打算直接從電路控制上對cell操作進行說明,而是希望通過模型類比來達到說明問題的目的,如有不嚴謹之處,高手勿怪。要對內存cell進行讀寫操作,首先要完成上述尋址過程,并且電容的充電狀態信號要被感應放大器感應到,并且放大,然后MOSFET打開,電容放電,產生電勢變化,把電荷輸送到IO線路,導致線路的電勢也變化。當然,這只是個簡單的描述,以下我們先來了解硅晶
5、體中“電容”的結構和MOSFET的控制原理。硅晶體中的“電容”這里之所以“電容”兩個字被打上引號,是因為硅晶體中并沒有真正意義上的電容。硅晶體中的電容是由兩個對置的觸發器組成的等效電容。例如兩個非門(Nor Gate)用如下圖的方式對接。它可以通過周期性施加特定的輸入信號,以把電荷保留在電路中,充當電容的作用。如下圖,兩個非門的輸入端R和S互相交替做0和1輸入,就可以把電荷儲存在電路中。整個動態過程就是這樣: 而R和S的波形就是如下圖所示,剛好互為反相,差半個周期:要讓電容放電,我們只需要把R和S同時輸入1或者0即可。因此這種電容的邏輯關系很簡單:在同一時刻R和S輸入狀態不同(即存在
6、電勢差)時,電容為充電狀態;在同一時刻R和S輸入狀態相同(即電勢差為0)時,電容為放電狀態。MOSFET的控制原理水庫模型要說明這個MOSFET的控制原理,我們借助一個水庫的模型來說明。MOSFET有三個極,分別是源極(Source)、漏極(Drain)和柵極(Gate)。下圖左邊就是一個MOSFET的電路圖,右邊是我們畫出的一個水庫模型。 圖中S為源極,D為漏極,G為柵極。S極連接著電容,D級連接列地址線路,并接到數據IO,G則是控制電荷流出的閥門,連接行地址線路。電容在充電后電勢會改變,這樣S極的電勢就會跟著改變,與D極形成電勢差,而G極的電勢,就決定了S極有多少電荷可以流入D極
7、。由于電子是帶負電荷,因此電子越多電勢就越低。為了不至于混淆概念,我們把水池頂部電勢定為0V,水池底部電勢定為5V(僅舉例說明,DRAM中的電容實際電壓未必是5V)。當電子數量越多時,電勢越低,接近0V,電子數量越少時,電勢越高,接近5V。 用水庫模型說明,就是左邊的水池水量升高(電容充電后),當閥門關閉時,左邊的水是不會往右邊流的。然后閥門打開(降低,電勢升高),左邊的水就可以往右邊流,閥門的高度就決定了有多少水能流去右邊的水道(但是在數字電路中,MOSFET只有開和關兩種狀態,因此下文提到的打開MOSFET就是全開);同樣道理如果右邊水多,閥門打開之后也可以向左邊流。因此在水庫模
8、型中,電容就充當了左邊的水池,而MOSFET的柵極就充當了閥門,列地址線路和IO則充當了右邊的水道。儲存數據MOSFET柵極電勢為0V時,電容的電荷不會流出,因此數據就可以保存我們可以用2.5V為參考分界線,電容電勢低于2.5V時,表示數據0,電勢高于2.5V時,表示數據1。例如上一樓水庫模型的左圖,電容中儲存的電子數高于一半的高度,電勢低于2.5V,因此可以表示數據0。但以上只是理論情況,實際上電容會自然漏電,電子數量會逐漸減少,電勢就會逐漸升高,當電勢升高到2.5V以上時,數據就會出錯,因此每隔一段時間必須打開MOSFET往電容中充電,以保持電勢,這就是刷新。因此,數據的儲存主要就是對電容
9、中電勢的保持操作。寫入數據數據寫入的操作分為寫入0和寫入1兩種情況。寫入前,電容原有的情況可能是高電勢與低電勢的狀態,我們不用管它。寫入0和寫入1對cell的操作不盡相同,我們分別來看。先來看寫入0的操作。寫入開始時,IO線路上電勢為0(水道處于水位最高點),MOSFET柵極電勢升高到5V(水庫閥門降到最低),閥門打開,電容中的電勢就跟著降低(水位升高),直到接近0V(水池被灌滿),寫入0完成,柵極電勢降回0V,閥門關閉。 再看寫入1的操作。寫入開始時,IO線路上的電勢為5V(水道水位為最低點),MOSFET柵極電勢升高到5V(水庫閥門降到最低),閥門打開,電容中的電勢跟著升高(水流
10、出并降低水位)到接近5V,寫入1完成,柵極電勢回到0V,閥門關閉。 讀取數據讀取的時候,對漏極的電壓操作跟寫入有些不同。因為水道中的水比水池中的多,或者說水道的容量比水池要大得多。如果水道(漏極)的水為滿或者空,在閥門打開的時候很容易出現水道的水倒灌進水池的現象,或是水池的水全部流去水道,這樣就有可能導致電容中的電勢狀態改變,電容對應儲存的0或者1也會改變。所以讀取數據的時候,IO線路的電壓應為1/2的滿電勢,即2.5V。讀取也同樣分讀取0和1兩種情況。在讀取之前,電容中的電勢應該是大于或者小于2.5V的,分別代表存儲了1和0。由于刷新機制的存在,應該不會允許出現等于2.5V的情況。
11、首先看讀取0操作。電容中為低電勢(假設為0V,水池為高水位),IO線路上電勢升高至2.5V(這時水道水位比水池低),MOSFET柵極電勢升高到5V(水庫閥門降到最低),閥門打開,電容中電勢升高(水位降低),但由于水道容量較大,因此水位不會升高太多,但是總歸也會有個電勢的變低,最終電容與IO線路上的電勢都變成0-2.5V的一個中間值,并且接近2.5V(假設為2.3V)。這時候感應放大器檢測到IO線路上電勢低于2.5V,因此識別出0讀出。 再看讀取1操作。電容中為高電勢(假設為5V,水池空),IO線路上電勢升高至2.5V(這時候水道水位比水池高),MOSFET柵極電勢升高到5V(水庫閥門
12、降到最低),閥門打開,電容中電勢降低(水位升高),但由于水道容量較大,水位不會降低太多,不過多少也會降低一點(電勢會升高),假設升高到2.7V。這時候感應放大器檢測到IO線路的電勢高于2.5V,識別出1讀出。 以上講述的只是從cell到內存IO線路的讀寫操作,至于CPU-IMC-內存的讀寫操作,不在本文討論范圍。第二部分:時序介紹時序及相關概念以下我把時序分為兩部分,只是為了下文介紹起來作為歸類,非官方分類方法。第一時序:CL-tRCD-tRP-tRAS-CR,就是我們常說的5個主要時序。第二時序:(包含所有XMP時序)在講時序之前,我想先讓大家明白一些概念。內存時鐘信號是方波,DD
13、R內存在時鐘信號上升和下降時各進行一次數據傳輸,所以會有等效兩倍傳輸率的關系。例如DDR3-1333的實際工作頻率是666.7MHz,每秒傳輸數據666.7*2=1333百萬次,即1333MT/s,也就是我們說的等效頻率1333MHz,再由每條內存位寬是64bit,那么它的帶寬就是:1333MT/s*64bit/8(8bit是一字節)=10667MB/s。所謂時序,就是內存的時鐘周期數值,脈沖信號經過上升再下降,到下一次上升之前叫做一個時鐘周期,隨著內存頻率提升,這個周期會變短。例如CL9的意思就是CL這個操作的時間是9個時鐘周期。另外還要搞清楚一些基本術語:Cell:顆粒中的一個數據存儲單元
14、叫做一個Cell,由一個電容和一個N溝道MOSFET組成。Bank:8bit的內存顆粒,一個顆粒叫做一個bank,4bit的顆粒,正反兩個顆粒合起來叫做一個bank。一根內存是64bit,如果是單面就是8個8bit顆粒,如果是雙面,那就是16個4bit的顆粒分別在兩面,不算ECC顆粒。Rank:內存PCB的一面所有顆粒叫做一個rank,目前在Unbuffered臺式機內存上,通常一面是8個顆粒,所以單面內存就是1個rank,8個bank,雙面內存就是2個rank,8個bank。Bank與rank的定義是SPD信息的一部分,在AIDA64中SPD一欄可以看到。DIMM:指一條可傳輸64bit數據
15、的內存PCB,也就是內存顆粒的載體,算上ECC芯片,一條DIMM PCB最多可以容納18個芯片第一時序CAS Latency(CL):CAS即Column Address Strobe,列地址信號,它定義了在讀取命令發出后到數據讀出到IO接口的間隔時間。由于CAS在幾乎所有的內存讀取操作中都會生效(除非是讀取到同一行地址中連續的數據,4bit顆粒直接讀取間隔3個地址,8bit顆粒直接讀取間隔7個地址,這時候CAS不生效),因此它是對內存讀取性能影響最強的。如下圖,藍色的Read表示讀取命令,綠色的方塊表示數據讀出IO,中間間隔的時間就是CL。 已知CL時鐘周期值CAS,我們可以使用以
16、下公式來計算實際延遲時間tCAS:tCAS(ns)=(CAS*2000)/內存等效頻率例如,DDR3-1333 CL9內存實際CAS延遲時間=(9*2000)/1333=13.50 ns或者反過來算,假如已知你的內存可以在7.5ns延遲下穩定工作,并且你想要DDR3-2000的頻率,那么你可以把CL值設為8T(實際上8ns,大于7.5ns即可),如果你想要DDR3-1600的頻率,那么你的CL值可以設到6T(實際7.5ns)。這個公式對于所有用時鐘周期表示延遲的內存時序都可以用。說到這個公式,我想順便說說大家對頻率和時序的糾結問題。首先來回顧一下DDR一代到三代的一些典型的JEDEC規范,并按
17、照上邊那個公式算一下它的CL延遲時間:DDR-400 3-3-3-8:(3*2000)/400=15 nsDDR2-800 6-6-6-18:(6*2000)/800=15 nsDDR3-1333 9-9-9-24:剛才算了是13.5 ns再來看看每一代的超頻內存的最佳表現(平民級,非世界紀錄):DDR1 Winbond BH-5 DDR-500 CL1.5:(1.5*2000)/500=6 nsDDR2 Micron D9GMH DDR2-1400 CL4:(4*2000)/1400=5.71 nsDDR3 PSC A3G-A DDR3-2133 CL6:(6*2000)/2133=5.63
18、 ns發現什么?不管是哪一代內存,隨著頻率提升,CL周期也同步提升,但是最后算出來的CL延遲時間卻差不多。那么到了DDR4,JEDEC規范頻率去到DDR4-4266,如果按照差不多的延遲,那么按照13ns多一些來算,那么CL值將達到28T!如果按照我們的極限超頻延遲來算,DDR4-4266下的延遲也將達到12T。所以到了下一代DDR4,兩位數的時鐘周期將不可避免。所以,我想說的是,不要再去想什么DDR3的頻率,DDR2的時序,在頻寬嚴重過剩,IMC成為瓶頸的今天,它對性能沒太多的提升。DRAM RAS to CAS Delay(tRCD):RAS的含義與CAS類似,就是行(Row)地址信號。它
19、定義的是在內存的一個rank(內存的一面)之中,行地址激活(Active)命令發出之后,內存對行地址的操作所需要的時間。每一個內存cell就是一個可存儲數據的地址,每個地址都有對應的行號和列號,每一行包含1024個列地址,當某一行地址被激活后,多個CAS請求會被發送以進行讀寫操作。簡單的說,已知行地址位置,在這一行中找到相應的列地址,就可以完成尋址,進行讀寫操作,從已知行地址到找到列地址過去的時間就是tRCD。當內存中某一行地址被激活時,我們稱它為“open page”。在同一時刻,同一個rank可以打開8個行地址(8個bank,也就是8個顆粒各一個)。下圖顯示一個行地址激活命令發出,到尋找列
20、地址并發出讀取指令,中間間隔的時間就是tRCD。tRCD值由于是最關鍵的尋址時間,它對內存最大頻率影響最大,一般想要上高頻,在加電壓和放寬CL值不奏效的時候,我們都要放寬這個延遲。 DRAM RAS Precharge Time(tRP):RAS預充電時間。它定義的是前一個行地址操作完成并在行地址關閉(page close)命令發出之后,準備對同一個bank中下一個行地址進行操作,tRP就是下一個行地址激活信號發出前對其進行的預充電時間。由于在行地址關閉命令發出之前,一個rank中的多個行地址可能正在被讀寫,tRP對內存性能影響不如CL和tRCD。雖然tRP的影響會隨著多個行地址激活
21、與關閉信號頻繁操作一個bank而加大,但是它的影響會被bank interleaving(bank交叉操作)和command scheduling(命令調配)所削弱。交叉讀寫會交替使用不同的bank進行讀寫,減少對一個bank的操作頻率;命令調配則是由CPU多線程訪問不同的內存地址,同樣是減少對一個bank的頻繁操作次數。例如SNB CPU的內存控制器可以對讀寫操作命令進行有效地重新分配,以使得行地址激活命中率最大化(如果重復激活一個已經處于激活狀態的行地址,那就是RAS激活命令未命中),所以tRP在SNB平臺對性能的影響不大,并且放寬它有可能可以幫助提升穩定性。下圖顯示的是一個即將被激活的行
22、地址開始預充電,到它被激活間隔的時間,就是tRP。 DRAM RAS Active Time(tRAS):行地址激活的時間。它其實就是從一個行地址預充電之后,從激活到尋址再到讀取完成所經過的整個時間,也就是tRCD+tCL的意思。這個操作并不會頻繁發生,只有在空閑的內存新建數據的時候才會使用它。太緊的tRAS值,有可能會導致數據丟失或不完整,太寬的值則會影響內存性能,尤其是在內存使用量增加的時候。所以一般為了穩定性,我們設置tRAStRTP+tRCD+CL即可(tRTP不是tRP,將在第二時序中介紹),尤其是PCB不好或者跑高頻的時候,多幾個周期比較穩妥。DRAM Command M
23、ode(Command Rate,CR):首命令延遲,也就是我們平時說的1T/2T模式。是指從選定bank之后到可以發出行地址激活命令所經過的時間。CR可能對性能的影響有比較大的變數:如果CPU所需要的數據都在內存的一個行地址上,就不需要進行重復多次的bank選擇,CR的影響就很小;但是如果一個rank中同時多個bank要激活行地址,或者不同的rank中不同bank需要同時激活的時候,CR對性能的影響就會提升。但是隨著內存頻率的提升,CR=1T/2T的時間差越短,它的影響就會越來越小,這就是我們看到DDR1的時候1T/2T對性能影響挺大,但是到了DDR3影響就很小的其中一個原因。但是為了性能最
24、大化,我們盡量把CR設為1T,但是如果bank數很多的時候,例如插滿四條內存,就有32個bank,bank選擇隨機性增大,1T的首命令時間可能會不穩定。所以,內存的基本讀取操作的時序角度流程就是把上面那三張圖合起來:預充電-激活行地址并尋找列地址-發送讀取命令-讀出數據,這四步操作中間的三個延遲就分別是tRP、tRCD和CL。和我們常說的時序順序剛好是反過來的。第二時序XMPDRAM CAS Write Latency(tWCL):列地址寫入延遲,也就是DRAM的最小寫入操作時間,與CL剛好是讀寫對應關系,一般跟CL值設為同一個值就是可以穩定的。由于內存讀取之前必須先寫入,所以這個值可以說與C
25、L一樣重要。但是在BIOS里一般沒得設置,可能是與CL綁定了。DRAM Row Cycle Time(tRC):行周期時間。定義了同一bank兩次行激活命令所間隔的最小時間,或者說是一個bank中完成一次行操作周期(Row Cycle)的時間,即tRP+tRAS(預充電加上激活的整個過程),tRC設得太緊可能會直接點開不了機,一般只要能進系統再多加一兩個周期都是可以穩定的。下圖顯示的就是tRC的時間。DRAM Row Refresh Cycle Time(tRFC):行地址刷新周期,定義了一個bank中行地址刷新所需要的時間。重提一下刷新的含義,由于cell中電容的電荷在MOSFET關閉之后一
26、段時間就會失去,為了維持數據,每隔很短一段時間就需要重新充電。這里多提一句,Intel平臺和AMD平臺對tRFC的含義不一樣,AMD平臺的tRFC是DRAM刷新延遲時間,單位是ns,通常有90/110/160/300幾個值可以調整,也就是說它的tRFC時鐘周期會隨著頻率的提升而提升;而Intel平臺的單位則直接是時鐘周期,相反地延遲時間會隨著頻率的提升而降低。容量大的bank行地址和cell會更多,刷新時間也更長,因此tRFC也要更高。另外,tRFC如果太快會導致數據出錯,太慢則影響性能,但可以增加穩定性。DRAM Refresh Interval(tREFI):內存刷新時間間隔,也就是內存的
27、刷新命令生效前要經過的時間。刷新的時間間隔一般取決于內存顆粒的容量(density),容量越大,就越需要頻繁刷新,tREFI值就要越低。另外tREFI的時間也會受到內存工作溫度與內存電壓(Vdimm)影響,因為溫度越高電容漏電越快。一般在AMD主板的BIOS里,這個值只有3.9us和7.8us可選,而在SNB平臺,則是按時鐘周期算,例如DDR3-1333下默認值為5199T,換算過來就是2000/1333x5199=7800ns,也就是7.8us。一般DRAM顆粒的spec中都是規定工作溫度大于85度時采用3.9us。DRAM RAS to RAS Delay(tRRD):行地址間延遲,定義的是同一rank不同bank間兩個連續激活命令的最短延遲,在DDR3時代一般最小是4T。它的作用和CR有點像,不過比CR更多的時候對性能有較大的影響,所以這個時序可盡量縮小。DRAM Write Recovery Time(tWR):內存寫入恢復時間,它定義了內存從寫入命令發出(從開始寫入算起)到下一次預充電間隔的時間,也就是t
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 土木工程學科前沿課程
- 2025年中國沾棒式香水瓶市場調查研究報告
- 2025年中國大型鈦制儲罐市場調查研究報告
- 2025年中國復印材料市場調查研究報告
- 3方購銷協議合同協議
- 小龍蝦協議合同協議
- 固廢合同廢合同協議
- 私人租賃機械合同協議
- 短視頻拍攝錄制合同協議
- 工地吸塵器租賃合同協議
- 夫妻債務轉讓協議書范本
- 2025年房地產經紀人(業務操作)考前必刷綜合題庫(800題)附答案
- 桌球助教合同協議
- 電商行業10萬字PRD
- 2024-2025學年八年級下學期道德與法治期中模擬試卷(一)(統編版含答案解析)
- GB/T 26354-2025旅游信息咨詢服務
- SL631水利水電工程單元工程施工質量驗收標準第1部分:土石方工程
- 甘肅省蘭州市第十一中學教育集團2023-2024學年八年級下學期期中考試數學試卷
- (高清版)TDT 1075-2023 光伏發電站工程項目用地控制指標
- NB-T 47013.15-2021 承壓設備無損檢測 第15部分:相控陣超聲檢測
- 《賣炭翁》課件-優秀實用
評論
0/150
提交評論