總結: 在實際工作中,l-bank位址與相應的行位址是同時發出的,此時這個命令稱之為「行有效」或「行啟用」(row active)。在此之後,將傳送列位址定址命令與具體的操作命令(是讀還是寫),這兩個命令也是同時發出的,所以一般都會以「讀/寫命令」來表示列定址。
1)trcd定義——
2)cl定義——
相關的列位址被選中之後,將會觸發資料傳輸,但從儲存單元中輸出到真正出現在記憶體晶元的 i/o 介面之間還需要一定的時間(資料觸發本身就有延遲,而且還需要進行訊號放大),這段時間就是非常著名的 cl(cas latency,列位址脈衝選通潛伏期)。cl 的數值與 trcd 一樣,以時鐘週期數表示。如 ddr-400,時鐘頻率為 200mhz,時鐘週期為 5ns,那麼 cl=2 就意味著 10ns 的潛伏期。不過 ,cl 只是針對讀取操作,對於 sdram,寫入是沒有潛伏期的,對於 ddr sdram,寫入潛伏期在 0.75 至 1.25 個時針週期之間。
第一筆資料的傳輸需要若干個週期(主要是之前的延遲,一般的是trcd+cl)
3)突發(burst)定義——
突發(burst)是指在同一行中相鄰的儲存單元連續進行資料傳輸的方式,連續傳輸的週期數就是突發長度(burst lengths,簡稱bl)。
在進行突發傳輸時,只要指定起始列位址與突發長度,記憶體就會依次地自動對後面相應數量的儲存單元進行讀/寫操作而不再需要控制器連續地提供列位址(sdram與ddr sdram的突發傳輸對列定址的運算元量有所不同,在此不再細說)。這樣,除了第一筆資料的傳輸需要若干個週期(主要是之前的延遲,一般的是trcd+cl)外,其後每個資料只需乙個週期的即可獲得。突發連續讀取模式:只要指定起始列位址與突發長度,後續的定址與資料的讀取自動進行,而只要控制好兩段突發讀取命令的間隔週期(與bl相同)即可做到連續的突發傳輸。
ddr記憶體的終極優化
2023年的春天,zol準時拉開了ddr400記憶體專題的序幕。在我們逐步向您展示其魅力之前,請先來了解一下優化記憶體的相關知識。也許您已經有所了解,但絕不是全部。希望這些內容對您今後的應用有所幫助。
正文:
有關記憶體優化的文章其實已經有很多了,可能大家都沒覺得沒什麼了不起的,不就是那幾個引數嗎?這還用講?但是,我相信 90% 以上的人並沒有完全真正理解那些時序引數的含義。我敢說,目前很多的優化原則都是有問題的,甚至有誤導的傾向!
本人在此之前曾有一篇專門**記憶體原理與相關引數的大型專題(文章發表於《電腦高手》),其中所講到的一些原理其實對優化就有很大的啟發意義。的確,雖然在 bios 中就是那麼幾個可以調節的記憶體時序引數,但如果不正確了解它們的意思,並不是每個人都知道如何正確的調節。有人可能會說,這有什麼難的,與時序相關的時序引數,肯定都是越小越好呀,錯!這就是我今天要著重講到的問題。
1、認識記憶體相關工作流程與引數
首先,我們還是先了解一下記憶體的大體結構工作流程,這樣會比較容量理解這些引數在其中所起到的作用。這部分的講述以sdram為例,因為時序圖看起來會簡單一些,但相關概念與ddr sdram的基本相同。
sdram的內部是乙個儲存陣列,將資料「填」進去,你可以它想象成一張**。和**的檢索原理一樣,先指定乙個行(row),再指定乙個列(column),我們就可以準確地找到所需要的單元格,這就是記憶體晶元定址的基本原理。對於記憶體,這個單元格可稱為儲存單元,那麼這個**(儲存陣列)叫什麼呢?它就是邏輯bank(logical bank,下文簡稱l-bank)。
sdram內部l-bank示意圖,這是乙個8x8的陣列,b代表l-bank位址編號,c代表列位址編號,r代表行位址編號。如果定址命令是b1、r2、c6,就能確定位址是圖中紅格的位置
目前的記憶體晶元基本上都是4個l-bank設計,也就是說一共有4個這樣的「**」。定址的流程也就是——先指定l-bank位址,再指定行位址,然後指列位址最終的確定址單元。
在實際工作中,l-bank位址與相應的行位址是同時發出的,此時這個命令稱之為「行有效」或「行啟用」(row active)。在此之後,將傳送列位址定址命令與具體的操作命令(是讀還是寫),這兩個命令也是同時發出的,所以一般都會以「讀/寫命令」來表示列定址。根據相關的標準,從行有效到讀/寫命令發出之間的間隔被定義為trcd,即ras to cas delay(ras至cas延遲,ras就是行位址選通脈衝,cas就是列位址選通脈衝),大家也可以理解為行選通週期。trcd是sdram的乙個重要時序引數,可以通過主機板bios經過北橋晶元進行調整。廣義的trcd以時鐘週期(tck,clock time)數為單位,比如trcd=2,就代表延遲週期為兩個時鐘週期,具體到確切的時間,則要根據時鐘頻率而定,對於pc100 sdram(時鐘頻率等同於ddr-200),trcd=2,代表20ns的延遲,對於pc133(時鐘頻率等於ddr-266)則為15ns。
圖中顯示的是trcd=3
接下來,相關的列位址被選中之後,將會觸發資料傳輸,但從儲存單元中輸出到真正出現在記憶體晶元的 i/o 介面之間還需要一定的時間(資料觸發本身就有延遲,而且還需要進行訊號放大),這段時間就是非常著名的 cl(cas latency,列位址脈衝選通潛伏期)
。cl 的數值與 trcd 一樣,以時鐘週期數表示。如 ddr-400,時鐘頻率為 200mhz,時鐘週期為 5ns,那麼 cl=2 就意味著 10ns 的潛伏期。不過 ,cl 只是針對讀取操作,對於 sdram,寫入是沒有潛伏期的,對於 ddr sdram,寫入潛伏期在 0.75 至 1.25 個時針週期之間。
圖中標準cl=2,tac是有關內部訊號處理的週期,可以不用關心
目前記憶體的讀寫基本都是連續的,因為與cpu交換的資料量以乙個cache line(即cpu內cache的儲存單位)的容量為準,一般為64位元組。而現有的p-bank位寬為8位元組,那麼就要一次連續傳輸8次,這就涉及到我們也經常能遇到的突發傳輸的概念。
突發(burst)是指在同一行中相鄰的儲存單元連續進行資料傳輸的方式,連續傳輸的週期數就是突發長度(burst lengths,簡稱bl)。
在進行突發傳輸時,只要指定起始列位址與突發長度,記憶體就會依次地自動對後面相應數量的儲存單元進行讀/寫操作而不再需要控制器連續地提供列位址(sdram與ddr sdram的突發傳輸對列定址的運算元量有所不同,在此不再細說)。這樣,除了第一筆資料的傳輸需要若干個週期(主要是之前的延遲,一般的是trcd+cl)外,其後每個資料只需乙個週期的即可獲得。
突發連續讀取模式:只要指定起始列位址與突發長度,後續的定址與資料的讀取自動進行,而只要控制好兩段突發讀取命令的間隔週期(與bl相同)即可做到連續的突發傳輸。
在資料讀取完之後,為了騰出讀出放大器以供同一l-bank內其他行的定址並傳輸資料,記憶體晶元將進行預充電的操作來關閉當前工作行。還是以上面那個l-bank示意圖為例。當前定址的儲存單元是b1、r2、c6。如果接下來的定址命令是b1、r2、c4,則不用預充電,因為讀出放大器正在為這一行服務。但如果位址命令是b1、r4、c4,由於是同一l-bank的不同行,那麼就必須要先把r2關閉,才能對r4定址。
從開始關閉現有的工作行,到可以開啟新的工作行之間的間隔就是trp(row precharge command period,行預充電有效週期),單位也是時鐘週期數。
本圖為乙個完整的從行定址到行關閉的時序圖,圖中所表示的
trcd=2、cl=2、trp=2
從上圖中我們還發現了乙個在 ddr sdram 時代經常被人提起,也經常會在 bios 中出現的引數—— tras。tras 在記憶體規範中的解釋是 active to precharge command,即從行有效命令發出至預充電命令發出之間的間隔。這也是本專題第一部分中所要重要談到的話題。在深入分析它之前,我們先了解一下哪些因素會影響到記憶體的效能。
DDR工作原理
ddr3的內部是乙個儲存陣列,將資料 填 進去,你可以它想象成一張 和 的檢索原理一樣,先表題 bank 指定乙個行 row 再指定乙個列 column 我們就可以準確地找到所需要的單元格,這就是記憶體晶元定址的基本原理。對於記憶體,這個單元格可稱為儲存單元,那麼這個 儲存陣列 就是邏輯 bank ...
ddr2 工作時序與原理
1.4 bit prefetch 直接上乙個表,看看ddr2的三個頻率的關係,下圖是內部時鐘均為133mhz的ddr2 ddr sdram的比較,由圖可以看到,相比於ddr,ddr2由於是4 bit prefetch,外部時鐘是內部匯流排時鐘的2倍,而ddr和sdram中,這兩個時鐘頻率相等 在 s...
DDR基礎原理介紹
ddr基礎原理介紹 1 前言 ddr的全稱為double data rate sdram,雙倍速率的sdram,sdram在乙個clk週期傳輸一次資料,ddr在乙個clk週期傳輸兩次資料,分別在上公升沿和下降沿各傳輸一次資料,該概念稱為預取,在描述ddr速度的時候一般使用mt s單位,每秒多少兆次資...