DDR工作原理

DDR SDRAM全稱為Double Data Rate SDRAM,中文名為“雙倍數據流SDRAM”。DDR SDRAM在原有的SDRAM的基礎上改進而來。也正因為如此,DDR能夠憑借著轉產成本優勢來打敗昔日的對手RDRAM,成為當今的主流。本文只著重講講DDR的原理和DDR SDRAM相對于傳統SDRAM(又稱SDR SDRAM)的不同。

?

DDR的核心頻率、時鐘頻率和數據傳輸頻率:

核心頻率就是內存的工作頻率;DDR1內存的核心頻率是和時鐘頻率相同的,到了DDR2和DDR3時才有了時鐘頻率的概念,就是將核心頻率通過倍頻技術得到的一個頻率。數據傳輸頻率就是傳輸數據的頻率。DDR1預讀取是2位,DDR2預讀取是4位,DDR3預讀取是8位。

DDR1在傳輸數據的時候在時鐘脈沖的上升沿和下降沿都傳輸一次,所以數據傳輸頻率就是核心頻率的2倍。DDR2內存將核心頻率倍頻2倍所以時鐘頻率就是核心頻率的2倍了,同樣還是上升邊和下降邊各傳輸一次數據,所以數據傳輸頻率就是核心頻率的4倍。

DDR3內存的時鐘頻率是核心頻率的4倍,所以數據傳輸頻率就是核心頻率的8倍了。

1

?

一、DDR的基本原理

有很多文章都在探討DDR的原理,但似乎也不得要領,甚至還帶出一些錯誤的觀點。首先我們看看一張DDR正規的時序圖。

2

從中可以發現它多了兩個信號: CLK#與DQS,CLK#與正常CLK時鐘相位相反,形成差分時鐘信號。而數據的傳輸在CLK與CLK#的交叉點進行,可見在CLK的上升與下降沿(此時正好是CLK#的上升沿)都有數據被觸發,從而實現DDR。在此,我們可以說通過差分信號達到了DDR的目的,甚至講CLK#幫助了第二個數據的觸發,但這只是對表面現象的簡單描述,從嚴格的定義上講并不能這么說。之所以能實現DDR,還要從其內部的改進說起。

3

DDR內存芯片的內部結構圖

這是一顆128Mbit的內存芯片,從圖中可以看出來,白色區域內與SDRAM的結構基本相同,但請注意灰色區域,這是與SDRAM的不同之處。首先就是內部的L-Bank規格。SDRAM中L-Bank 存儲單元的容量與芯片位寬相同,但在DDR SDRAM中并不是這樣,存儲單元的容量是芯片位寬的一倍,所以在此不能再套用講解SDRAM時 “芯片位寬=存儲單元容量” 的公式了。也因此,真正的行、列地址數量也與同規格SDRAM不一樣了。

以本芯片為例,在讀取時,L-Bank在內部時鐘信號的觸發下一次傳送8bit的數據給讀取鎖存器,再分成兩路4bit數據傳給復用器,由后者將它們合并為一路4bit數據流,然后由發送器在DQS的控制下在外部時鐘上升與下降沿分兩次傳輸4bit的數據給北橋。這樣,如果時鐘頻率為100MHz,那么在I/O端口處,由于是上下沿觸發,那么就是傳輸頻率就是200MHz。

現在大家基本明白DDR SDRAM的工作原理了吧,這種內部存儲單元容量(也可以稱為芯片內部總線位寬)=2×芯片位寬(也可稱為芯片I/O總線位寬)的設計,就是所謂的兩位預取(2-bit Prefetch),有的公司則貼切的稱之為2-n Prefetch(n代表芯片位寬)。

二、DDR SDRAM與SDRAM的不同

DDR SDRAM與SDRAM的不同主要體現在以下幾個方面。

DDR SDRAM與SDRAM的主要不同對比表

4

5

?

DDR SDRAM與SDRAM一樣,在開機時也要進行MRS,不過由于操作功能的增多,DDR SDRAM在MRS之前還多了一EMRS階段(Extended Mode Register Set,擴展模式寄存器設置),這個擴展模式寄存器控制著DLL的有效/禁止、輸出驅動強度、QFC 有效/無效等。

6

由于EMRS與MRS的操作方法與SDRAM的MRS大同小異,在此就不再列出具體的模式表了,有興趣的話可查看相關的DDR內存資料。下面我們就著重說說DDR SDRAM的新設計與新功能。

7

1、 差分時鐘

差分時鐘(參見上文“DDR SDRAM讀操作時序圖”)是DDR的一個必要設計,但CK#的作用,并不能理解為第二個觸發時鐘(你可以在講述DDR原理時簡單地這么比喻),而是起到觸發時鐘校準的作用。由于數據是在CK的上下沿觸發,造成傳輸周期縮短了一半,因此必須要保證傳輸周期的穩定以確保數據的正確傳輸,這就要求CK的上下沿間距要有精確的控制。但因為溫度、電阻性能的改變等原因,CK上下沿間距可能發生變化,此時與其反相的CK#就起到糾正的作用(CK上升快下降慢,CK# 則是上升慢下降快)。而由于上下沿觸發的原因,也使CL=1.5和2.5成為可能,并容易實現。與CK反相的CK#保證了觸發時機的準確性

8

2、 數據選取脈沖(DQS)

總結DQS:它是雙向信號;讀內存時,由內存產生,DQS的沿和數據的沿對齊;寫入內存時,由外部產生,DQS的中間對應數據的沿,即此時DQS的沿對應數據最穩定的中間時刻。

DQS是DDR SDRAM中的重要功能,它的功能主要用來在一個時鐘周期內準確的區分出每個傳輸周期,并便于接收方準確接收數據。每一顆芯片都有一個DQS信號線,它是雙向的,在寫入時它用來傳送由北橋發來的DQS信號,讀取時,則由芯片生成DQS向北橋發送。完全可以說,它就是數據的同步信號。

在讀取時,DQS與數據信號同時生成(也是在CK與 CK#的交叉點)。而DDR內存中的CL也就是從CAS發出到DQS生成的間隔,數據真正出現在數據I/O總線上相對于DQS觸發的時間間隔被稱為 tAC。注意,這與SDRAM中的tAC的不同。實際上,DQS生成時,芯片內部的預取已經完畢了,tAC是指上文結構圖中灰色部分的數據輸出時間,由于預取的原因,實際的數據傳出可能會提前于DQS發生(數據提前于DQS傳出)。由于是并行傳輸,DDR內存對tAC也有一定的要求,對于 DDR266,tAC的允許范圍是±0.75ns,對于DDR333,則是±0.7ns,有關它們的時序圖示見前文,其中CL里包含了一段DQS的導入期。

前文已經說了DQS是為了保證接收方的選擇數據, DQS在讀取時與數據同步傳輸,那么接收時也是以DQS的上下沿為準嗎?不,如果以DQS的上下沿區分數據周期的危險很大。由于芯片有預取的操作,所以輸出時的同步很難控制,只能限制在一定的時間范圍內,數據在各I/O端口的出現時間可能有快有慢,會與DQS有一定的間隔,這也就是為什么要有一個tAC規定的原因。而在接收方,一切必須保證同步接收,不能有tAC之類的偏差。這樣在寫入時,芯片不再自己生成DQS,而以發送方傳來的DQS為基準,并相應延后一定的時間,在DQS的中部為數據周期的選取分割點(在讀取時分割點就是上下沿),從這里分隔開兩個傳輸周期。這樣做的好處是,由于各數據信號都會有一個邏輯電平保持周期,即使發送時不同步,在DQS上下沿時都處于保持周期中,此時數據接收觸發的準確性無疑是最高的。在寫入時,以DQS的高/低電平期中部為數據周期分割點,而不是上/下沿,但數據的接收觸發仍為DQS的上/下沿。

9

3、 寫入延遲

在上面的DQS寫入時序圖中,可以發現寫入延遲已經不是0了,在發出寫入命令后,DQS與寫入數據要等一段時間才會送達。這個周期被稱為DQS相對于寫入命令的延遲時間(tDQSS, WRITE Command to the first corresponding rising edge of DQS),對于這個時間大家應該很好理解了。

為什么要有這樣的延遲設計呢?原因也在于同步,畢竟一個時鐘周期兩次傳送,需要很高的控制精度,它必須要等接收方做好充分的準備才行。tDQSS是DDR內存寫入操作的一個重要參數,太短的話恐怕接受有誤,太長則會造成總線空閑。tDQSS最短不能小于0.75個時鐘周期,最長不能超過1.25個時鐘周期。有人可能會說,如果這樣,DQS不就與芯片內的時鐘不同步了嗎?對,正常情況下,tDQSS是一個時鐘周期,但寫入時接受方的時鐘只用來控制命令信號的同步,而數據的接受則完全依靠DQS進行同步,所以 DQS與時鐘不同步也無所謂。不過,tDQSS產生了一個不利影響——讀后寫操作延遲的增加,如果CL=2.5,還要在tDQSS基礎上加入半個時鐘周期,因為命令都要在CK的上升沿發出。

10

當CL=2.5時,讀后寫的延遲將為tDQSS+0.5個時鐘周期(圖中BL=2)

另外,DDR內存的數據真正寫入由于要經過更多步驟的處理,所以寫回時間(tWR)也明顯延長,一般在3個時鐘周期左右,而在DDR-Ⅱ規范中更是將tWR列為模式寄存器的一項,可見它的重要性。

11

4、 突發長度與寫入掩碼

在DDR SDRAM中,突發長度只有2、4、8三種選擇,沒有了隨機存取的操作(突發長度為1)和全頁式突發。這是為什么呢?因為L-Bank一次就存取兩倍于芯片位寬的數據,所以芯片至少也要進行兩次傳輸才可以,否則內部多出來的數據怎么處理?而全頁式突發事實證明在PC內存中是很難用得上的,所以被取消也不希奇。

但是,突發長度的定義也與SDRAM的不一樣了(見本章節最前那幅DDR簡示圖),它不再指所連續尋址的存儲單元數量,而是指連續的傳輸周期數,每次是一個芯片位寬的數據。對于突發寫入,如果其中有不想存入的數據,仍可以運用DM信號進行屏蔽。DM信號和數據信號同時發出,接收方在DQS的上升與下降沿來判斷DM的狀態,如果DM為高電平,那么之前從DQS 中部選取的數據就被屏蔽了。有人可能會覺得,DM是輸入信號,意味著芯片不能發出DM信號給北橋作為屏蔽讀取數據的參考。其實,該讀哪個數據也是由北橋芯片決定的,所以芯片也無需參與北橋的工作,哪個數據是有用的就留給北橋自己去選吧。

5、 延遲鎖定回路(DLL)

DDR SDRAM對時鐘的精確性有著很高的要求,而DDR SDRAM有兩個時鐘,一個是外部的總線時鐘,一個是內部的工作時鐘,在理論上DDR SDRAM這兩個時鐘應該是同步的,但由于種種原因,如溫度、電壓波動而產生延遲使兩者很難同步,更何況時鐘頻率本身也有不穩定的情況(SDRAM也內部時鐘,不過因為它的工作/傳輸頻率較低,所以內外同步問題并不突出)。DDR SDRAM的tAC就是因為內部時鐘與外部時鐘有偏差而引起的,它很可能造成因數據不同步而產生錯誤的惡果。實際上,不同步就是一種正/負延遲,如果延遲不可避免,那么若是設定一個延遲值,如一個時鐘周期,那么內外時鐘的上升與下降沿還是同步的。鑒于外部時鐘周期也不會絕對統一,所以需要根據外部時鐘動態修正內部時鐘的延遲來實現與外部時鐘的同步,這就是DLL的任務。

DLL不同于主板上的PLL,它不涉及頻率與電壓轉換,而是生成一個延遲量給內部時鐘。目前DLL有兩種實現方法,一個是時鐘頻率測量法(CFM,Clock Frequency Measurement),一個是時鐘比較法(CC,Clock Comparator)。

CFM是測量外部時鐘的頻率周期,然后以此周期為延遲值控制內部時鐘,這樣內外時鐘正好就相差了一個時鐘周期,從而實現同步。DLL就這樣反復測量反復控制延遲值,使內部時鐘與外部時鐘保持同步。

12

CFM式DLL工作示意圖

CC的方法則是比較內外部時鐘的長短,如果內部時鐘周期短了,就將所少的延遲加到下一個內部時鐘周期里,然后再與外部時鐘做比較,若是內部時鐘周期長了,就將多出的延遲從下一個內部時鐘中刨除,如此往復,最終使內外時鐘同步。

13

CC式DLL工作示意圖

CFM與CC各有優缺點,CFM的校正速度快,僅用兩個時鐘周期,但容易受到噪音干擾,并且如果測量失誤,則內部的延遲就永遠錯下去了。CC的優點則是更穩定可靠,如果比較失敗,延遲受影響的只是一個數據(而且不會太嚴重),不會涉及到后面的延遲修正,但它的修正時間要比CFM長。DLL功能在DDR SDRAM中可以被禁止,但僅限于除錯與評估操作,正常工作狀態是自動有效的。

14

轉自一些論壇:

?

1.并行匹配主要是考慮到負載過重,屬于信號完整性的問題;如果接口下就1~2片DDR可以考慮串阻匹配的

2.由于DDR2的電平HSTL電平的,也就是時鐘是偽差分的方式,沒必要按3W做,等長是必要的,最好做VTT

?

理論上3W,指兩線中心間距=3*線到地平面距離

一般的3W原則,采用的是,兩線中心間距=3*線寬

根據JEDEC[1]建議DDR2的最高工作電壓是1.9V,并且建議對于要求內存穩定使用的環境絕不能超過此值(例如服務器或其他任務關鍵設備)。此外,JEDEC規定內存模塊必須在受到永久損害前承受2.3V的電壓。

歡迎加入硬件QQ群:101 808 3751,一起討論硬件問題,分享調試心得,共同成長。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253363.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253363.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253363.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

8.1 文件查找local;find使用

文件查找: 在文件系統上查找符合條件的文件。 文件查找:locate, find 非實時查找(數據庫查找):locate實時查找:find locate 1 查詢系統上預建的文件索引數據庫 /var/lib/mlocate/mlocate.db2 依賴于事先構建的索引 索引的構建是在…

hdu 5273 Dylans loves sequence 逆序數 區間dp

點擊打開鏈接 題意&#xff1a;給n個數&#xff0c;q次詢問&#xff0c;&#xff08;L&#xff0c;R&#xff09;區間內的逆序數。 思路&#xff1a; 區間dp 代碼一&#xff1a; 1 #include <bits/stdc.h>2 using namespace std;3 typedef long long ll;4 const int maxn…

python第三天習題

# 1. 文件a.txt內容&#xff1a;每一行內容分別為商品名字&#xff0c;價錢&#xff0c;個數&#xff0c;求出本次購物花費的總錢數# apple 10 3# tesla 100000 1# mac 3000 2# lenovo 30000 3# chicken 10 3## 2. 修改文件內容&#xff0c;把文件中的alex都替換成SB# with ope…

智能故事機方案簡介

智能故事機&#xff0c;又叫WiFi故事機&#xff0c;AI故事機&#xff0c;通過WiFi聯網&#xff0c;用戶語音就可以跟它進行問答、點歌等互動&#xff1b;由于聯網所以可以播放云端海量的兒童音頻內容&#xff1b;手機端在微信公眾號或者專屬APP上操作&#xff0c;可以點播相應內…

使用setsockopt()接口,設置TCP的接收與發送超時,Invalid argument錯誤問題

使用TCP套接字時&#xff0c;當無網絡連接時&#xff0c;還會繼續send&#xff0c;繼續recv阻塞&#xff0c;知道TCP自己協議機制判斷斷開連接時才會停止發送和接收&#xff0c;時間需要幾分鐘之久。解決的辦法是&#xff0c;自己設置接收超時時間&#xff0c;當超時后重新發送…

關于SpringCloud、SpringBoot 希望這是說得最詳細的

幾年前&#xff0c;沒幾個jar沖突一下都不叫搭框架 —— java面試必修 什么是Spring Boot 用我的話來理解&#xff0c;Spring Boot就是整合了框架的框架&#xff0c;它讓一切依賴都變得有序簡單&#xff0c;你不用操心A.jar是什么版本&#xff0c;又依賴哪些版本的jar&#xff…

weui-switch開關控件,表單提交后如何取值

最近在學習weui這個框架&#xff0c;做了一些小的試驗&#xff0c;發現weui-switch控件直接提交不能獲取到表單信息&#xff0c;在segmentfault上發現也有人提了這個問題&#xff0c;有人說可以設置一個隱含標簽來捕獲開關的狀態&#xff0c;試了一下&#xff0c;確實可以&…

麥克風設計指導與選型參考

隨著語音識別技術的成熟&#xff0c;智能音箱類產品的火爆&#xff0c;越來越多的產品可以升級為語音交互產品&#xff1b; 下面簡單介紹下此類產品的語音前端--麥克風陣列設計相關注意事項&#xff1a; 線性四麥陣列構型&#xff1a;如上圖所示&#xff0c;麥克風直線等距擺…

[BZOJ1419] Red is good(期望DP)

傳送門 逆推 只不過順序還是順著的&#xff0c;思想是逆著的 f[i][j]表示還剩下i張紅牌&#xff0c;j張黑牌的期望值 那么邊界是 f[i][0]i&#xff0c;因為只剩i張紅牌 f[0][j]0&#xff0c;只剩黑牌&#xff0c;顯然直接停止最優 f[i][j] max(0,i/(ij)*f[i-1][j]j/(ij)*f[i][…

Linux下高性能網絡編程中的幾個TCP/IP選項_SO_REUSEADDR、SO_RECVBUF、SO_SNDBUF、SO_KEEPALIVE、SO_LINGER、TCP_CORK、TCP_NODE

最近在新的平臺上測試程序&#xff0c;以前一些沒有注意到的問題都成為了性能瓶頸&#xff0c;通過設置一些TCP/IP選項能夠解決一部分問題&#xff0c;當然根本的解決方法是重構代碼&#xff0c;重新設計服務器框架。先列出幾個TCP/IP選項&#xff1a; 選項 man 7 socket: SO_R…

云計算在未來一定是不可或缺的

2019獨角獸企業重金招聘Python工程師標準>>> 在2018京東云合作伙伴大會上&#xff0c;京東云總裁申元慶表示&#xff0c;技術發展的大趨勢是“分久必合&#xff0c;合久必分”循環往復的波動&#xff0c;近十年來云計算的發展將算力、存儲、帶寬全部集中在中央部分&…

智能音箱 之 音頻通路質量--測試與參數

一、概述 當將語音識別算法接入到設備時&#xff0c;務必要保證設備的音頻通路具有足夠的質量。因此對設備進行音頻測試&#xff0c;以評估能夠影響語音識別性能的音頻前端的音頻參數。如下要點對語音識別至關重要&#xff1a; 自然聲音合適的增益良好的信噪比一致的響應&…

關于Linux路由表的route命令

轉自&#xff1a;http://www.cnblogs.com/gunl/archive/2010/09/14/1826234.html 查看 Linux 內核路由表 使用下面的 route 命令可以查看 Linux 內核路由表。 # route Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.0 * …

Python學習 - 常用模塊(二)

目錄 一. 常用模塊 - hashlib 二. 常用模塊 - hmac 三. 常用模塊 - logging 四. 常用模塊 - re 五. 常用模塊 - requests 六. 常用模塊 - paramiko 一. 常用模塊 - hashlib hash: 一種算法, 3.x里代替了md5模塊和sha模塊, 主要提供 SHA1, SHA224, SHA256, SHA384, SHA512, MD5 …

select函數分析

Select在Socket編程中還是比較重要的&#xff0c;可是對于初學Socket的人來說都不太愛用Select寫程序&#xff0c;他們只是習慣寫諸如connect、accept、recv或recvfrom這樣的阻塞程序&#xff08;所謂阻塞方式block&#xff0c;顧名思義&#xff0c;就是進程或是線程執行到這些…

UART介紹

1. 概述 UART, Universal Asynchronous Receiver-Transmitter, 通用異步收發器&#xff1b; 串口&#xff1a;在嵌入式里指的是UART口&#xff0c;常用TTL電平即3.3V或者5.0V&#xff1b; COM口&#xff1a;在臺式機上常用的口&#xff0c;DB9那種接口&#xff0c;接口協議只…

mongodb環境安裝

1、mongodb安裝 我采用的是離線安裝&#xff0c; &#xff08;1&#xff09;在mongodb的官方網址下載所需要的版本。我下載的是 mongodb-linux-x86_64-ubuntu1604-3.4.5.tgz 。 &#xff08;2&#xff09;下載后解壓縮到待安裝目錄&#xff0c;我這里下載在了Downloads目錄…

rabbitmq隊列的exclusive,durability,auto-delete屬性以及消息可靠傳輸設計

非集群下&#xff0c;簡單的說&#xff1a;- 如果是excl&#xff0c;則設置durability沒有意義&#xff0c;因為不管服務器掛了還是客戶端主動/被動斷開了&#xff0c;隊列都會自動刪除。- auto-delete&#xff0c;其實可簡單的認為是同理&#xff0c;即使非excl&#xff0c;則…

IIC 總線接口詳細介紹

1. 概述 IIC Inter Integrated-Circuit 總線是PHLIPS公司推出的一種串行總線&#xff0c;是具備多主機系統所需的包括總線裁決和高低速器件同步功能的高性能串行總線&#xff0c;它支持多主控(multimastering)&#xff0c;其中任何能夠進行發送和接收的設備都可以成為主總線。…

DMA數據傳輸過程

DMA方式具有如下特點&#xff1a;1、 外部設備的輸入輸出請求直接發給主儲存器。主存儲器既可以被CPU訪問&#xff0c;也可以被外圍設備訪問。因此&#xff0c;在主存儲器中通常要有一個存儲管理部件來為各種訪問主存儲器的申請排隊&#xff0c;一般計算機系統把外圍設備的訪問…