حافظه يك سيستم همواره به عنوان يك عامل محدودكننده كارايي سيستم محسوب ميشود که اين موضوع به دليل سرعت پايين حافظه (تاخير خواندن و نوشتن از سلولهاي حافظه) نسبت به پردازنده است. در اكثر موارد به خاطر تاخير سلولهاي حافظه در خواندن و نوشتن دادهها، پردازنده بايد منتظر رسيدن داده از حافظه بماند كه اين موضوع زمان بيكاري (IDLE) بودن آن را افزايش ميدهد كه نهايتاً به كاهش بهرهوري (Utilization) پردازنده ميانجامد. وجود اين مشكل در سالهاي اخير سازندگان حافظه و پردازنده را بر آن داشته تا همواره دنبال راههايي براي افزايش سرعت ارتباط حافظه و پردازنده مركزي باشند كه استفاده از فناوري DDR يا (Double Data Rate) و مشتقات آن (DDR2 ،DDR3 و …) را ميتوان در همين راستا دانست.
در اين فناوري هدف تسريع خود سلولهاي حافظه است به طوري كه خواندن از آن يا نوشتن در آن زمان كمتري تلف كند اما بايد توجه داشت كه اين فقط قسمتي از موضوع است. همانطور كه ميدانيد حافظه توسط مداري به نام كنترلكننده حافظه (Memory Controller) كنترل ميشود. اين مدار در پردازندههاي جديدIntel (معماري Nehalem) و پردازندههاي Athlon64 شركت AMD، درون خود پردازنده جاسازي شده است كه به آن IMC يا (Integrated Memory Controller) ميگويند اما در پردازندههاي قديميتر هر دو شركت، مدار كنترلكننده حافظه درون چيپست مادربورد (Northbridge) قرار داشت. يك كنترلكننده حافظه صرف نظر از اينكه كجا قرار داشته باشد، همواره با سه سري سيم (Bus) به حافظههاي سيستم متصل است. اين سيمها عبارتند از Address bus (براي آدرسدهي سلول مورد نظر در حافظه)، Data bus (براي انتقالدادهها به / از حافظه) و Control Bus (براي مشخصكردن عمليات مورد نظر، مانند خواندن يا نوشتن). البته سيگنال پالس ساعت (clock) نيز به صورت يك سيم جدا به حافظه متصل ميشود. تعداد خطوط باس آدرس و باس داده دو پارامتر مهم در تعيين حداكثر ظرفيت حافظه قابل پشتيباني توسط سيستم و سرعت انتقال دادهها بين پردازنده و حافظه است. بنابراين يكي از راههاي افزايش سرعت ارتباط حافظه و پردازنده، افزايش پهناي باند اتصال حافظه به كنترلكننده آن است. (تصوير يک)
تصوير 1 يك كنترلكننده حافظه را نشان ميدهد كه روي چيپست مادربورد (پل شمالي) قرار گرفته و از طريق يك كانال داده، آدرس و كنترل به دو ماژول حافظه متصل است.
ارزيابي سرعت انتقال داده بين حافظه و كنترلكننده آن
براي يك ماژول حافظه پارامتري به نام MTTR تعريف شود كه سرنام عبارات Maximum Theoretical Transfer Rate است. اين پارامتر حداكثر سرعت انتقال داده بين حافظه و كنترلكننده آن (بر حسب مگابايت در ثانيه) است كه البته كاملاً تئوري بوده و در عمل سرعت واقعي، به خاطر نبود امكان انتقال داده در همه سيكلها، كمتر از اين مقدار است.
8 / تعداد بيت منتقل شده در هر سيكل ×تعداد دفعات انتقال داده در هر سيكل × فركانس واقعي حافظه = MTTR
تعداد بيت منتقل شده در هر سيكل × فركانس حالت دي دي ار = MTTR توجه به اين نكته در اينجا ضروري است كه در فناوري DDR ، داده در هر سيكل ساعت دوبار منتقل ميشود (يك بار در لبه بالا رونده پالس و بار ديگر در لبه پايين رونده). بنابراين فركانس DDR دو برابر فركانس واقعي ماژول حافظه است. مثلا سرعت واقعي يك ماژول DDR2-800 برابر 400 مگاهرتز است. به همين دليل فرمول اول يك پارامتر بيشتر از فرمول دوم دارد.
در فرمول MTTR پارامتر بسيار مهم، تعداد بيت منتقل شده در هر سيكل است. چون ارتباط بين حافظه و كنترلكننده از نوع موازي است، براي انتقال هر بيت (در هر سيكل) يك سيم نياز داريم. پس ميتوان گفت تعداد خطوط باس داده، تعداد بيت منتقل شده در هر سيكل را مشخص ميكند. در حافظههاي فعلي اين مقدار برابر 64 است.
حافظههاي چندكاناله؛ افزايش كارايي سيستم
در يك كنترلكننده حافظه معمولي، مقدار پارامتر تعداد بيت منتقل شده در هر سيكل (در فرمول MTTR) برابر 64 است. يعني اين كنترلكننده از طريق يك كانال داده با حافظههاي سيستم در ارتباط است. تصوير 2 يك كنترلكننده حافظه مستقر در پردازنده را نشان ميدهد كه از طريق باس داده (سيمهاي D01-D64) با حافظه سيستم در ارتباط است.
حال اگر بخواهيم سرعت و كارايي ارتباط حافظه و كنترلكننده را بالا ببريم بدون آنكه در خود حافظه تغييري بوجود بياوريم، افزايش تعداد كانالهاي ارتباطي بين حافظه و كنترلكننده بهترين راه است. كنترلكنندههاي حافظهدوكاناله (Dual Channel) و سهكاناله (Tri channel يا Triple Channel) به همين دليل بوجود آمدند. از آنجا كه سهكاناله فناوري جديدي است و نسخه مكمل و پيشرفته دو كاناله محسوب ميشود، در اينجا قصد داريم به معرفي ساختار و ويژگيهاي آن بپردازيم.
ابتدا شركت اينتل در پردازندههاي Core i7 (سري 9xx با كد Bloomfield و Gulftown) كه در سوكت LGA1366 قرار ميگيرند، كنترلكننده حافظه سهكاناله را ارائه كرد. در اين روش ارتباط ماژولهاي حافظه و كنترلكننده، با سه كانال داده برقرار ميشود. به عبارت بهتر ميتوان گفت به جاي يك باس داده، سه باس داده داريم كه هر كدام 64 سيم دارند. در نتيجه تعداد بيت منتقل شده در هر سيكل برابر 192=3×64 خواهد شد. اين روش MTTR را نسبت به حالت تككاناله سه برابر ميكند و كارايي ارتباط سيستم با حافظه را تا حد زيادي افزايش ميدهد. تصوير 3 اين موضوع را نشان ميدهد.
حداكثر ظرفيت حافظه قابل پشتيباني توسط سيستم در حالت سه كاناله تفاوتي با حالت معمولي يا دو كاناله ندارد. زيرا همانطور كه ميدانيد عامل تعيينكننده ظرفيت مجاز حافظه در هر سيستم، تعداد خطوط باس آدرس است (در يك سيستم با 32 سيم آدرس، حداكثر حافظه مجاز چهار گيگابايت خواهد بود.) اما مسالهاي كه در حافظههاي چندكاناله بوجود ميآيد نحوه پر شدن سلولهاي حافظه است. در حالت تككاناله، سلولهاي حافظه به صورت ترتيبي و پشت سر هم پر ميشوند و زماني كه يك ماژول حافظه پر شد، دادهها در اولين خانه ماژول بعدي قرار ميگيرند يعني اگر در سيستم دو ماژول حافظه كه هركدام يک گيگابايت ظرفيت دارند نصب شده باشد، سلولهاي حافظه ماژول دوم از نظر فضاي آدرس در انتهاي ماژول اول قرار ميگيرند. اما در حالت چندكاناله (در حالت خاص، سهكاناله) با توجه به اينكه هر كانال داده به يك ماژول حافظه مجزا متصل است و باس آدرس بين تمام ماژولهاي حافظه مشترك است، استفاده از روش قبل كارايي سيستم را پايين ميآورد بنابراين از روشي به نام interleaving استفاده ميشود. در اين روش اگر يك كنترلكننده حافظه سهكاناله و سه ماژول مجزاي حافظه داشتهباشيم، سلولهاي همشماره ماژولهاي حافظه به ترتيب پر ميشوند.
يعني ابتدا سلول اول هر سه ماژول پر ميشود، سپس سلول دوم هر سه ماژول و اين روند تا آخر ادامه پيدا ميكند. تصوير 4 سه ماژول حافظه و نحوه پر و خالي شدن آنها در روش interleaving را نشان ميدهد.
روشفعالسازي حالت سه كاناله (Triple Channel) در سيستم
براي اينكه بتوان از قابليت Triple Channel استفاده كرد، در ابتدا بايد مادربورد و پردازنده اين قابليت را پشتيباني كنند. در چنين مادربوردهايي، تعداد اسلاتهاي قرارگيري حافظه مضرب 3 است كه معمولاً هر گروه سهتايي از آنها به يك رنگ خاص هستند. اين رنگ نشان دهنده ايناست كه براي فعال شدن قابليت سهكاناله، بايد سه ماژول حافظه را در سه اسلات همرنگ قرار داد. تصوير 5 يك مادربورد foxconn با چيپست X58 را نشان ميدهد كه قابليت چندكاناله را پشتيباني ميكند. در مادربوردي مانند تصوير 5، فعالسازي سهكانال حافظه كار سادهاي است. كافي است سه ماژول حافظه از نوع DDR3 (قابليت سه كاناله فقط براي اين حافظههاي ارائه شدهاست) با ظرفيت و سرعت يكسان را روي اسلاتهاي همرنگ نصب كنيم. در اين صورت حالت سهكاناله فعال شده و در زمان Boot، سيستم اين موضوع را اعلام ميكند.
البته كنترلكنندههاي سه كاناله ميتوانند در مدهاي ديگري (غير از سهكاناله) نيز فعاليت كنند. اگر فقط دو اسلات از سه اسلات حافظه يك مادربورد سهكاناله پر شود، در اين صورت اين دو ماژول حافظه در حالت دو كاناله (Dual Channel) كار خواهند كرد. همچنين اگر ماژولهاي همظرفيت در دسترس نباشد، ميتوان از حالت دوكاناله يا سهكاناله در مد Flex استفاده كرد. مد Flex همانطور كه از نام آن مشخص است، به يك كنترلكننده حافظه قابليت انعطاف ميدهد. در اين مد، ميتوان دو ( يا سه) ماژول غير همظرفيت را در اسلاتها نصب كرد. كنترلكننده حافظه مقدار مشترك بين ماژولها را به صورت دوكاناله (يا سهكاناله) استفاده ميكند و بقيه ظرفيت حافظهها به صورت تككاناله (Single Channel) استفاده ميشود. مثلاً اگر يك ماژول 512 مگابايتي و يك ماژول يک گيگابايتي داشتهباشيد، اگر آنها را روي اسلاتهاي همرنگ نصب كنيد، مقدار 512 مگابايت از هركدام از ماژولها به صورت دوكاناله استفاده ميشود و 512 مگابايت باقيمانده تككاناله خواهد شد.
ارزيابي بهبود كارايي كنترلكننده حافظه سهكاناله
با توجه به افزايش 50 درصدي پهناي باند حافظه (MTTR) در حالت سهكاناله (نسبت به دو كاناله) انتظار ميرود كه در عمل نيز تقريباً به همين اندازه سرعت انتقال دادهها بين حافظه و كنترلكننده افزايش يافته باشد. اما تستهاي انجام شده توسط سايت Tom’s hardware نتايج جالبتري را نشان ميدهند. متخصصين اين سايت پهناي باند حافظهها را در سه حالت تككاناله، دوكاناله و سهكاناله روي پردازنده Core i7 (كه كنترلكننده سه كاناله دارد) اندازهگيري كردهاند و آن را با پهناي باند اندازهگيري شده در حالت دوكاناله روي پردازندههاي Core 2 Extreme QX9770 و Phenom X4 9550 Black Edition (كه كنترلكننده حافظه ذاتاً دو كانالهاست) ، مقايسه كردهاند. نتايج بدست آمده را در جدول 6 ميتوانيد مشاهده كنيد.
مقايسه پهناي باند Read (نوشتن)حالت دوكاناله در دو پردازنده Core i7 و Core 2 (كه هر دو از حافظه DDR3-1333 استفاده كردهاند) نشان ميدهد كه خود كنترلكننده حافظه علاوه بر افزايش تعداد كانال، تغييرات مهم ديگري نيز كردهاست. البته يكي از دلايل دو برابر بودن پهناي باند Read دو كاناله در پردازنده Core i7 نسبت به Core 2 را ميتوان قرار گرفتن كنترلكننده حافظه درون خود پردازنده در پردازندههاي Nehalem شركت اينتل دانست. مقايسه نتايج بدست آمده پردازنده Core i7 در حالت سهكاناله با حالت دوكاناله نشان ميدهد كه افزايش پهناي باند از آنچه كه در حالت تئوري محاسبه ميشود بسيار كمتر است و حتي در مورد Write تغييري نشان نميدهد. شايد براي حل اين موضوع بايد منتظر كنترلكننده حافظه با كارايي بالاتر باشيم.
اشاره: در مورد پردازنده Phenom x4 بايد به اين موضوع توجه داشت كه پردازندههايي که در اين تست مورد استفاده قرار گرفته است قابليت پشتيباني از حافظههاي DDR2 را دارد.
سهكاناله كردن حافظهها را ميتوان در واقع راهي براي بالابردن سرعت ارتباط حافظهها، از طريق زياد كردن تعداد راههاي ارتباطي حافظه و سيستم و استفاده بيشتر از ماژولهاي حافظه بطور همزمان، دانست. با توجه به افزايش مداوم سرعت حافظهها و ارائه شدن ماژولهاي DDR4 توسط بعضي سازندگان حافظه، به نظر ميرسد در سمت مقابل نيز سازندگان كنترلكنندههاي حافظه نيز بيكار نمينشينند و فناوري چهاركاناله (Quad Channel) را ارائه خواهند كرد. در اين صورت بايد منتظر يك رابط 256 بيتي براي انتقال داده باشيم كه همراه سرعت بالاي 2400 مگاهرتز (حداكثر 4200 مگاهرتز) حافظههاي DDR4، پهناي باند بسيار زيادي را براي ما به ارمغان بياورد.