မိတ္ေဆြ... ယခုလိုလာေရာက္ လည္ပတ္ျပီး နည္းပညာေတြေလ့လာသြားတဲ့အတြက္ မိတ္ေဆြအား အထူးပဲေက်းဇူးတင္ရွိပါတယ္ ေနာက္လဲ လာလည္ပါလို႕ဖိတ္ေခၚပါရေစ....

Sunday 30 March 2014

Behind Memory Speed

ကၽြန္ေတာ္တို့ေတြ ကြန္ပ်ဳတာမွာသံုးဖို့အတြက္ memory ေတြကို ဝယ္ယူၾကတယ္။ memory အမ်ိဳးအစားျခင္း speed ျခင္းတူတာေတာင္ တခ်ိဳ့ memory ေတြက ပိုေစ်းႀကီးတယ္။ ပိုၿပီး Performance ေကာင္းၾကတယ္။ ဒါဟာ memory ေတြရဲ့ Timing ေတြေၾကာင့္ျဖစ္ပါတယ္။ အလယ္အလက္နဲ့ high end memory ေတြမွာ memory  speed ေတြအျပင္ timing ေတြကိုပါထည့္သြင္းေဖာ္ျပလာပါတယ္။  ဥပမာဆိုရင္ DDR2 800 MHz 4-4-4-15, DDR2 800MHz 2-3-2-6-T1 စသည္ျဖင့္ေဖာ္ျပလာပါတယ္။ 4-4-4-15, 2-3-2-6-T1 တို့ဟာ memory timing ေတြပဲျဖစ္ပါတယ္။ Memory Timing ဆိုတာက memory ကအလုပ္တစ္ခုကိုလုပ္ေဆာင္ရာမွာ ၾကာတဲ့အခ်ိန္ျဖစ္ပါတယ္။ 4-4-4-15, 2-3-2-6-T1, 5-5-5-15 စသည္ျဖင့္ေဖာ္ျပထားတဲ့ memory timing ေတြကေတာ့ CL-tRCD-tRP-tRAS-CMD ေတြကိုအစဥ္လိုက္ညႊန္းဆိုပါတယ္။ အခုတစ္ခုျခင္းစီရဲ့အေၾကာင္းကိုအေသးစိတ္ရွင္းျပပါမယ္။


CL (CAS) latency
CL ကေတာ့ CPU ကေန ေပးလုိက္တဲ့ command တစ္ခုကို memory ကေနအျမန္ဆံုးျပန္လည္တုန့္ျပန္ေပးႏိုင္တဲ့ၾကာခ်ိန္ျဖစ္ပါတယ္။ ဥပမာ အားျဖင့္ CPU ကေန data A ကိုထုက္ေပးပါလို ့ေတာင္းဆိုလိုက္တဲ့အခ်ိန္နဲ့ memory ကေန data A ကိုထုက္ေပးလိုက္တဲ့အခ်ိန္ ႏွစ္ခုၾကား ၾကာခ်ိန္ျဖစ္ပါတယ္။ပိုမိုရွင္းလင္းေအာင္ ေအာက္ပံုကိုၾကည့္ပါ။

CL တန္ဖိုး 3 နဲ့ 5 ရိွတဲ့ memory ႏွစ္ခုကိုႏိွဳင္းယွဥ္ျပထားပါတယ္။ CPU ကေနၿပီး READ command ကိုေပးလိုက္တယ္။ ဒီအခါမွာ CL တန္ဖိုး 3 ရိွတဲ့ memory က clock cycle ၃ခုအၿပီးမွာ CPU ဆီကို data ကိုျပန္လည္ေပးပို့ႏိုင္တယ္။ read လုပ္ျပီးေပးပို့ႏိုင္တယ္။ CL တန္ဖိုး 5 ရိွတဲ့ memory ကေတာ့ clock cycle ၅ခုျပီးမွ data ကို ေပးပို့ႏိုင္တယ္။ မွတ္သားထားရမွာက ကၽြန္ေတာတို့လက္ရိွသံုးေနတဲ့ DDR 1,2,3 memory ေတြက clock cycle တစ္ခုအတြင္းမွာ data ႏွစ္ခု၊ တနည္းအားျဖင့္ command ႏွစ္ခုကိုလုပ္ေဆာင္ႏိုင္တယ္။ (DDR ဆိုတာDual Data Rate ကိုဆိုလိုတာပါ။ DDR 1, DDR2, DDR3 ဆိုတာေတြက generation ေတြကိုဆိုလိုတာပါ။ DDR2 က 2 data per clock cycle, DDR3 က 3 data per clock cycle မဟုတ္ပါဘူး) Time နဲ့ frequency အတြက္ ပံုေသနည္းတစ္ခုရိွပါတယ္။ T= 1/f ျဖစ္ပါတယ္။ DDR2 533 MHz (266.66 MHz x 2) နဲ့ အလုပ္လုပ္တဲ့ memory တစ္ခုအတြက္ clock cycle တစ္ခုရဲ့ၾကာခ်ိန္က 3.75 ns (nanosecond) ရိွပါတယ္။ ဒါေၾကာင့္ CL 3 memory က CPU ကေတာင္းဆိုတဲ့ data ကိုေပးပို ့ဖို့ဆိုရင္ 11.25 ns (3.75ns x3 ) ၾကာၿပီး၊ CL 5ရိွတဲ့ memory က 18.75ns (3.75ns x 5)ၾကာပါတယ္။
ဒါေပမယ့္DDR memories ေတြက brust mode (command တစ္ခုရဲ့ေနာက္မွာ ေနာက္command တစ္ခုဆက္တိုက္လာျခင္းကိုဆိုလိုသည္) နဲ့အလုပ္လုပ္တဲ့အတြက္ CPU ကေန Command ႏွစ္ခုထက္မကေပးလာတဲ့အခါ CL Latency က ပထမ Command တစ္ခုအတြက္ပဲ ေစာင့္ရပါတယ္။ ေနာက္ command ေတြအတြက္ ေစာင့္ဆိုင္းစရာမလိုေတာ့ပါဘူး။


RAS to CAS Delay (tRCD)
Memory chip ေတြရဲ့လုပ္ေဆာင္မွုကို Matrix ပံုစံအားျဖင့္တည္ေဆာက္ထားတယ္။ Matrix မွာ row နဲ့ column ေတြပါဝင္ပါတယ္။ Row နဲ့ column ေတြရဲ့ဆံုမွတ္တိုင္းမွာ capacitor တစ္ခုစီကိုထည့္ထားတယ္။ အဲ့ဒီ့ capacitor တစ္ခုျခင္းက 0 ဒါမွမဟုတ္ 1 ဆိုတဲ့data ႏွစ္ခုကို မွတ္သားထားႏိုင္တယ္။ မွတ္သားထားတဲ့ data ကုိ လိုခ်င္တဲ့အခါ CPU ကေန row number ဘယ္ေလာက္၊ column number ဘယ္ေလာက္ မွာရိွတဲ့ data ကို Read လုပ္ပါ လို့ memory ကိုခိုင္းေစတယ္။
ဒီအခါမွာ memory ကေန CPU ခိုင္းေစတဲ့ Row နဲ့ Column မွာရိွတဲ့ data ကိုရွာေပးရတယ္။ (technical term အရ ကိုယ္လိုခ်င္တဲ့ row ဒါမွမဟုတ္ column ကို activate လုပ္တယ္လို့ေခၚတယ္)။ Row number အတြက္ RAS (Row Address Strobe) signal ကေနလုပ္ေဆာင္ၿပီးေတာ့၊ column အတြက္ CAS (Column Address Strobe) signal ကေနလုပ္ေဆာင္တယ္။ RAS နဲ့ CAS signals ႏွစ္ခု ရဲ့ၾကာခ်ိန္ကနည္းေလေလ data ကိုျမန္ျမန္ဆန္ဆန္ ဖတ္ႏိုင္ေလပဲ။ ၄င္းကို RAS to CAS Delay (tRCD) လို ့ေခၚတယ္။ ပံုမွာ ဆိုရင္ tRCD 3 ရိွတဲ့ memory ကိုျပထားတယ္။

tRCD 3 ျဖစ္တဲ့အတြက္ RAS ကလုပ္ေဆာင္ျပီး clock cycle ၃ခုၾကာမွသာလွ်င္ data ကို read လုပ္ႏိုင္တယ္။ write command အတြက္လည္းထိုနည္းတူပဲျဖစ္တယ္။


RAS Precharge (tRP)
Data တစ္ခုကို memory ကေနယူၿပီးတဲ့ေနာက္မွာ Precharge command တစ္ခုကိုထုက္ေပးရတယ္။ လက္ရိွ row ကို ပိတ္ၿပီး ေနာက္ row တစ္ခုကို activate လုပ္ျခင္းျဖစ္ပါတယ္။ tRP ဆိုတာဟာ precharge command ကေန activate command ၾကားၾကာခ်ိန္ပဲျဖစ္ပါတယ္။ ပံုမွာဆိုရင္ tRP 3 ရိွတဲ့ memory ရဲ့ အလုပ္လုပ္ပံုကိုျပထားတယ္။

tRP 3 ျဖစ္တဲ့အတြက္ precharge command ကိုထုက္ေပးျပီး clock cycle ၃ခုၾကာမွ Active command ကိုထုက္ေပးတယ္။


Active to Precharge Delay (tRAS)
Row တစ္ခုကို activate လုပ္္တဲ့အခါၾကာတဲ့အခ်ိန္ျဖစ္ပါတယ္။ Row တစ္ခုဟာ tRAS မျပီးမျခင္း Precharge command ကိုထုက္ေပးလို ့မရပါဘူး။


Command Rate (CMD)
Command တစ္ခုနဲ့တစ္ခု ၾကား ၾကာခ်ိန္ျဖစ္ပါတယ္။ သ့ူကို "T" နဲ့ေဖာ္ျပပါတယ္။ 1T ဆိုရင္ Command တစ္ခုနဲ့တစ္ခုၾကား clock cycle တစ္ခုျခားၿပီး 2T ဆိုရင္ Command တစ္ခုနဲ့တစ္ခုၾကား 2 clock cycle ျခားပါတယ္။


အျခား Timing မ်ား
အျခား timing မ်ားအေနနဲ့ကေတာ့ tRC, tRRD, tRFC, tRW, tRTW/RWT, tWTR, tREF, tWCL တို ့ျဖစ္ပါတယ္။

tRC - row cycle time ျဖစ္ပါတယ္။ cycle တစ္ခုရဲ့ minimum time ျဖစ္ပါတယ္။ ၄င္း cycle က complete full cycle ျဖစ္ဖို ့အတြက္ row ေတြကိုလုပ္ေဆာင္ပါတယ္။ ၄င္းဟာ tRAS + tRP ျဖစ္ပါတယ္။ ဒီအခ်ိန္ကို နည္းထားလိုက္ရင္ data ဆံုးရံွူးမွဳေတြျဖစ္ႏိုင္ပါတယ္။ ၾကာထားလိုက္ရင္ Performance က်သြားႏိုင္ပါတယ္။ ဒါေပမယ့္ system stability ပိုေကာင္းလာပါတယ္။

tRRD - Row to Row delay သို့ RAS to RAS delay ျဖစ္ပါတယ္။ Row တစ္ခုကေန ေနာက္တစ္ခုကို activate လုပ္ရာမွာၾကာတဲ့အခ်ိန္ျဖစ္ပါတယ္။

tRFC - Row Refresh Cycle time ျဖစ္ပါတယ္။ row ကို refresh လုပ္ရာမွာ ၾကာတဲ့အခ်ိန္ျဖစ္ပါတယ္။

tRW - Write Recovery Time. Data တစ္ခုကို write လုပ္မွာၾကာတဲ့အခ်ိန္ျဖစ္ပါတယ္။ ၄င္းဟာ data ကို အမွန္တကယ္ write လုပ္ထားလားဆိုတာကို စစ္ေပးပါတယ္။

tRTW/tRWT - Read to Write Delay. Write command ကိုရတာနဲ့ memory က ၄င္းကိုစတင္လုပ္ေဆာင္ဖို့ၾကာတဲ့အခ်ိန္ျဖစ္ပါတယ္။ (memory က write command ကိုစတင္လုပ္ေဆာင္ဖို့ၾကာတဲ့အခ်ိန္ပါ။ လုပ္ေဆာင္ၿပီးလို ့CPU ဆီကို ျပန္လည္ေပးပို ့တဲ့ CL latency နဲ့မတူပါ)

tWTR - Write to Read Delay. Write command နဲ့ Read command ၾကားၾကာခ်ိန္ျဖစ္ပါတယ္။

tREF - capacitor ထဲမွာ သိုေလွာင္ထားတဲ့ charge ကို refreshed မလုပ္ခင္ၾကာတဲ့အခ်ိန္ျဖစ္ပါတယ္။ micro seconds နဲ့တိုင္းတာပါတယ္။

tWCL - CAS Number ေတြကိုေရးသားရာမွာၾကာတဲ့အခ်ိန္ျဖစ္ပါတယ္။



မွတ္သားရန္။  ။ Memory Timing ေတြနည္းျခင္းက System ကိုပိုမိုျမန္ေစပါတယ္။ ဒါေပမယ့္ stability မေကာင္းပါဘူး။ Memory Timing ေတြမ်ားျခင္းက System ကိုေႏွးေစပါတယ္။ ဒါေပမယ့္ stability ေကာင္းပါတယ္။ Overclocking လုပ္ရာမွာ timing ေတြကို အနည္းငယ္ျမင့္ေပးရပါတယ္။ CPU ကို stability ေကာင္းေစဖို့ျဖစ္ပါတယ္။ (memory timing ေၾကာင့္ေႏွးသြားတဲ့ speed ထက္ CPU stability ျဖစ္လို့ Overclocking လုပ္ရာမွာရရိွတဲ့ CPU speed က ပိုမ်ားပါတယ္)

0 comments:

Post a Comment