Originally posted by chonshon+Mar 19 2005, 10:06 PM--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE (chonshon @ Mar 19 2005, 10:06 PM)</td></tr><tr><td id='QUOTE'> <!--QuoteBegin-OSKAR_WU@Mar 19 2005, 07:47 PM
這個講起來有點小複雜
且聽我道來
從 SDRAM 開始 , DRAM 開始採用了以 DRAM CLOCK 為同步週期 , 輸入控制訊號線(RAS , CAS ... ETC)為指令(CMD)
輸入位址線(MA , BA ... ETC)為定址線的存取方法 , SDRAM 有十種標準的 COMMAND 告訴
DRAM 我要幹麻 , 由一些輸入控制訊號線組成 ... 其中有四種比較基本的
1 . ACTIVE 2 . READ CMD 3 . WRITE CMD 4 . PRECHARGE
ACTIVE 是用來告訴 DRAM 鎖定你要讀寫的東西 位於哪裡(Select Bank & Row)
用看書來比喻就是翻到哪一頁哪一行
READ/WRITE CMD 是用來告訴 DRAM , 你想要對哪一頁的哪一列幹麻(Select Bank & Column) 讀還是寫 , 例如已經翻
到第五頁第五行之後讀第五列的那個字
PRECHARGE 就是告訴 DRAM 你已經對這一頁第幾行第幾列結束動作了
(現在的DRAM CONTROLLER 一次可以同時開好幾頁 , 如果是這種情況那就是告訴 DRAM 說每一頁都結束了)
你可以不用再盯著那一個行看 , 當然那一列的字也別看了
這四個基本動作之間 , 都需要一點時間 ...
這之間以及其他動作之間的互相關係 , 就是所謂的 DRAM TIMING ...
tRAS 的定義是 ... ACTIVE to PRECHARGE Delay ... 也就是你說要翻到哪一頁哪一行哪一列讀到什麼字之後需要多少
時間 然後可以不要再看那一行
所以 tRAS 一定有一個最小值 , 其中牽涉兩個參數
第一個是 tRCD , tRCD 是 RAS to CAS Delay 的縮寫 , 也就是鎖定第幾頁第幾行(ACTIVE CMD 等同輸入
Bank&Row Address)之後 , 鎖定哪一頁哪一列(READ/WRITE CMD 等同於輸入 Bank&Column Address)之間的時間差
第二個參數就是 CL , CAS Latency , 意思是鎖定那一頁哪一列(READ/WRITE CMD)之後 , 真正開始可以抓到東西的時間 ...
這兩個時間加起來 , 就是最小 tRAS ... 也就是最小可以告訴 DRAM 你可以把鎖定的行列動作結束了 ... 但是由於
SDRAM 是用 Buffer 記住所存取的資料 , 最後從資料線上面輸出 , 所以從下 ACTIVE CMD
到真正有資料從資料線可以讀的到(或是可以寫入) , 這中間有一個時間差 , 例如假設
tRCD=2 , CL=2 , 那麼第一次可以抓到資料的時候 , 已經是 2+2 , 第四個週期了 ...
而最小在第四個週期時 , 才可以開始告訴 DRAM 你可以開始準備結束這一頁這一行這一列的讀取了 , 那麼 DRAM 就
會在輸出資料之後(看輸出長度)結束鎖定行列的動作
當然你也可以不必在 tRCD + CL 這個時間之後做任何 Precharge 的動作 , 你可以一直把書的那一頁那一行盯著 , 直
到記憶體一定需要刷新(REFRESH)為止 ...
這段把書開著的時間如果隨時要讀取這一頁同一行的資料 , 就可以不用再下 ACTIVE CMD ... 直接下 READ/WRITE CMD
之後 , 經過多少 CL 的週期後就可以去那一列開始去讀取或寫入資料 ...
試想一個狀況 , 如果你需要一次在同一頁讀取同一行 , 但不同列的資料 , 然後你每次都讀完一列就把目光移到別行去
(沒有鎖定 Row) ... 那眼睛是不是要移來移去 ...
當然如果是在不同頁面之間讀資料 , 或是很零散的讀取的時候 , 每次做完 READ/WRITE CMD 之後就 PRECHARGE
(Deactive Row&Column) , 等待下一次隨時需要再做 ACTIVE 的動作
這種情況 tRAS 如果設得試當 , 或雪|比較快 ...
有些情況 tRAS 不宜設太小 , 但是有些時候 tRAS 小一點沒關係甚至比較好 , 就是這樣的意思 ...
但是你設的 tRAS 基本上是無效的 ... 因為在 tRCD+CL 這個時間點滿足以前 , 你做 PRECHARGE 這個動作 , DRAM
會當成沒看到 ...
PS : 以上文章僅供參考 , 寫錯就當成你沒看到 ...