آناتومی گجت: حافظه رم
هر کامپیوتر یا دستگاه الکترونیکی از حافظهی رم (RAM) بهره میبرد. رم را میتوان بهصورت یکپارچه داخل پردازنده یا در برد مداری مجزا روی سیستم در نظر گرفت. بههرحال، کامپیوترها بدون استفاده از حافظهی رم هیچ کارایی ندارند. رم یکی از شاهکارهای مهندسی محسوب میشود که در پایهایترین سطوح ساختاری، دستاوردهای جالبی دارد. تولید انبوه این قطعهی سختافزاری نیز هرسال در حجم زیادی انجام میشود و هر ساله هم شاهد رشد فناوریها و قابلیتهای آن هستیم. میلیاردها ترانزیستور روی ماژول رم قرار دارد؛ اما این قطعه، تنها چند وات برق مصرف میکند که خود دستاورد الکترونیکی جذابی محسوب میشود. درنهایت، همین اهمیت و ساختار جالب رم باعث میشود تا بررسی زیرساخت آن جذاب بشود. درادامهی این مطلب زومیت، آناتومی رم را در سطوح گوناگون بررسی میکنیم.
کاربرد حیاتی رم
پردازندهها نیاز به دسترسی سریع به داده و دستورالعملهای پردازشی دارند. آنها برای مدیریت عملکرد نرمافزارها، باید به منابع مناسب دسترسی پیدا کنند. بهعلاوه، دسترسی باید بهگونهای باشد که اگر درخواست تصادفی و غیر منتظرهای برای دسترسی به داده ارسال شد، عملکرد کلی دچار مشکل نشود؛ بههمیندلیل، رم (مخفف Random Access Mempry یا حافظهی دسترسی تصادفی) اهمیت زیادی برای کامپیوتر دارد.
حافظههای رم به دو نوع استاتیک و داینامیک (ایستا و پویا) تقسیم میشوند که با نامهای SRAM و DRAM میشناسیم. حافظههای رم ایستا فقط در داخل پردازندهها (حافظههای کش) استفاده میشوند. در این مطلب، تنها حافظههای پویای DRAM را بررسی میکنیم. برای اولین بخش، ابتدا به این سؤالهای حیاتی پاسخ میدهیم: DRAM را چگونه در کامپیوتر شخصی پیدا کنیم؟ DRAM چگونه کار میکند؟
حجم زیادی از حافظهی رم درکنار پردازنده قرار دارد که بهنام حافظهی سیستمی (System Memory) شناخته میشود. البته بهتر است آن را حافظهی پردازندهی مرکزی یا CPU Memory بنامیم؛ چون بهعنوان حافظهی اصلی برای کار روی دادهها و دستورالعملها در پردازنده استفاده میشود.
همانطورکه در تصاویر ماژول رم مشاهده میشود، DRAM روی بردهای مداری کوچکی نصب میشود که هرکدام ازطریق درگاهی اختصاصی، به مادربرد کامپیوتر متصل میشوند. هریک از بردها بهنام DIMM یا UDIMM شناخته میشوند که مخفف dual inline memory module هستند (حرف U در UDIM عبارت unbuffered را به آن اضافه میکند). درادامه، هریک از اصطلاحها را شرح میدهیم. فعلا بدانید واضحترین و مشخصترین حافظهی رم در کامپیوترهای شخصی همین ماژولها هستند. حافظهی رم لزوما به سرعت بسیار زیادی نیاز ندارد؛ اما کامپیوترهای شخصی مدرن امروزی برای هماهنگی و مدیریت بهتر اپلیکیشنهای حرفهای با فرایندهای پردازشی بیشمار، نیاز به حجم زیاد و البته سریعی از حافظهی تصادفی دارند.
قطعهی دیگری که نیاز به فضای حافظهی زیادی دارد، کارت گرافیک است. کارتهای گرافیک به حافظهی DRAM مجزا نیازمند هستند؛ چون رندر سهبعدی با دسترسی و نوشتن دادههای بیشمار همراه میشود. این نوع از DRAM برای عملکرد در شیوهای تقریبا متفاوت برنامهریزی میشود که کمی با حافظهی رم سیستمی، تفاوت دارد. همانطورکه در تصویر زیر میبینید، در اطراف پردازندهی گرافیکی، ۱۲ قطعهی الکترونیکی تخت حضور دارد که همان تراشههای DRAM هستند. این حافظهها در انواع مختلفی تولید میشود که میتوان به GDDR5 و GDDR5X و GDDR6 اشاره کرد که در بخشهای بعدی آنها را شرح میدهیم. درنهایت، کارتهای گرافیکی به حافظهی رم زیادی به اندازهی پردازندهی مرکزی نیاز ندارند؛ اما آنها نیز با هزاران مگابایت حافظه عرضه میشوند.
لزوما تمامی قطعات سختافزاری کامپیوتر شخصی به حجم زیادی از حافظهی رم نیاز ندارند. بهعنوان مثال، هارد درایو با مقدار کمی رم فعالیتهای خود را بهخوبی انجام میدهد. بهصورت میانگین، هارد درایوها از ۲۵۶ مگابایت رم بهره میبرند که پیش از نوشتن داده روی درایو، آنها را گروهبندی میکند.
در تصویر زیر، برد مداری درایو HDD را در سمت چپ و برد SSD را در سمت راست مشاهده میکنید. در هر دو بخش، رم با چهارگوش قرمز مشخص شده است. همانطورکه میبینید، در درایو ذخیره سازی، تنها یک تراشه برای رم داریم؛ چون ۲۵۶ مگابایت نیاز به فضای زیادی ندارد و با قطعهی سیلیکونی منفرد میتوان آن را برای درایو ذخیرهسازی تأمین کرد.
توضیحات مذکور نشان داد که هر قطعه یا لوازم جانبی با کاربردهای پردازشی به رم نیاز دارد؛ درنتیجه، در اکثر قطعات کامپیوتر شخصی میتوان اثری از رم مشاهده کرد. بهعنوان مثال، کنترلرهای SATA و PCI Express نیاز به تراشههای کوچک و محدود DRAM دارند. ابزارهای رابط شبکه و کارتهای صوتی نیز از این قطعه بهره میبرند. حتی پرینترها و اسکنرها هم حافظهی DRAM دارند. شاید درنگاه اول، همین حقیقت که DRAM در همهی قطعات قرار دارد، آن را به تجهیزی نهچندان جذاب تبدیل کند؛ اما وقتی به زیرساخت آن نگاه میکنیم، متوجه جذابیتهای عملکردی میشویم.
بررسی قطعات ریز موجود در تراشه
مهندسان الکترونیک برای بررسی و تغییر عمیق در محصولات نیمههادی خود، ابزارهای خاصی دارند که دردسترس نویسندهی مقالهی سختافزاری نیست (مانند میکروسکوپ الکترونی)؛ درنتیجه نمیتوان تراشهی واقعی DRAM را شکافت و اجزای داخلی آن را بهراحتی مشاهده کرد. بههرحال، برخی از کارشناسان با بهرهبرداری از همان ابزارها، تصاویر دقیق و مفیدی را از ساختار تراشه منتشر کردهاند.
در نگاه اولیه به ساختار سطحی تراشهی رم، تصویری مشابه با مجموعهای از مزرعههای ذرت را مشاهده میکنیم که با راههایی بههم متصل شدهاند. نکتهی جالب اینکه این برداشت اولیه تفاوت چندانی با عملکرد اصلی تراشه ندارد. محدودههایی که در تراشهی رم میبینید، بهجای ذرت یا گندم عموما از دو قطعهی الکترونیکی تشکیل میشوند: سوئیچی در فرمت MOSFET (مخفف Metal Oxide Semiconductor Field-Effect Transistor) و ساختار ذخیرهسازی که خازن شیاری فراهم میکند.
ترکیب دو قطعهی الکترونیکی بخشی بهنام سلول حافظه (Memory Cell) را ایجاد میکنند و هریک، یک بیت داده را در خود نگه میدارند. در نمودار زیر، تصویر کلی و ابتدایی از ساختار سلول حافظه را مشاهده میکنید؛ البته قطعا مهندسان الکترونیک تفسیر و نمای بهتری از آن میشناسند.
خطوط آبی و سبز اتصالهایی را نشان میدهند که ولتاژ را به MOSFET و خازن ارسال میکند. این اتصالها برای نوشتن و خواندن داده در ارتباط با سلول حافظه کاربرد دارند. خط عمودی (Bit line) همیشه ابتدا فعال میشود. خازن شیاری رفتاری شبیه به سطل دارد که با بار الکتریکی پر میشود. حالت پر یا خالی بودن آن وضعیت یک بیت داده را نشان میدهد که صفر بهمعنای خالیبودن و یک بهمعنای پربودن خواهد بود. با وجود تلاشهای بسیار مهندسان، خازنها توانایی حفظ بار در طولانیمدت را ندارند و با گذشت زمان، خازن خالی میشود.
چالش یادشده بدینمعنا خواهد بود که هر سلول حافظه باید در دورهی زمانی منظم، تازه شود که عموما بازهی ۱۵ تا ۳۰ بار در ثانیه خواهد بود. تمام فرایند بسیار سریع خواهد بود و در مدت چند نانوثانیه، مجموعهای از سلولها عملیات را انجام میدهند. متأسفانه تعداد زیادی سلول در هر تراشهی DRAM وجود دارد و حافظه نمیتواند در زمان پرشدن مجدد شارژ، عملیات نوشتن یا خواندن انجام دهد. تصویر زیر، نحوهی اتصال سلولهای متعدد را نمایش میدهد.
یک سطر کامل از سلولهای حافظه بهنام صفحه (Page) شناخته میشود و طول آنها در انواع رم با پیکربندیهای متنوع تفاوت دارد. صفحهی بلندتر بیتهای بیشتری خواهد داشت؛ اما نیروی برق بیشتری هم برای مدیریت آن نیاز خواهد بود. بههمینترتیب، صفحههای کوچکتر مصرف و قابلیت ذخیرهسازی کمتری دارند.
عامل دیگری هم در فرایند عملکردی تراشهی رم باید در نظر گرفته شود: وقتی داده روی تراشهی DRAM نوشته یا از روی آن خوانده میشود، اولین مرحلهی فرایند فعال کردن صفحهی کامل خواهد بود. سطر بیتها (مجموعهای از صفر و یک) در بخشی بهنام Row buffer ذخیره میشود که خود مجموعهای از آمپلیفایرها و Latch هستند و درواقع، حافظهی بیشتری ارائه نمیکنند. درنهایت، ستون مدنظر سیستم فعال میشود تا دادهی مرتبط را از بافر بخواند.
اگر صفحهها بسیار کوچک باشند، هر ستون باید در دورههای متناوبتری برای پاسخ به نیازهای دادهای فعال شود. درمقابل، صفحهی بزرگتر بخشهای بیشتری را پوشش میدهد و در دورههای تناوب بزرگتری فعال میشود. ستونهای بزرگ نیاز به نیروی برق بیشتری دارند و پایداری کمتری هم ارائه میکنند؛ اما بزرگتربودن صفحه درنهایت مزیت محسوب میشود.
ترکیبکردن صفحهها منجر به ساخت المانی بهنام بانک (Bank) در DRAM میشود. شبیه به روندی که در صفحهها داشتیم، ابعاد و نحوهی چینش سطرها و ستونها در سلولها نیز اهمیت بسیاری در ظرفیت نهایی ذخیرهی داده در حافظه دارند. بهعلاوه، عوامل دیگر همچون سرعت و مصرف نیرو و موارد مشابه نیز تحتتأثیر خواهند بود.
جانمایی مرسوم در صفحهها شامل ۴۰۹۶ سطر و ۴۰۹۶ ستون میشود؛ درنتیجه، هر بانک ظرفیت ذخیرهسازی ۱۶،۷۷۷،۲۱۶ بیت یا دو مگابایت دارد. البته تمامی تراشههای DRAM از بانک با ساختار لزوما مربعی بهره نمیبرند؛ چون طولانیتربودن صفحهها برای آنها بهتر خواهد بود. بهعنوان مثال، جانمایی ۱۶،۳۸۴ سطر و ۱،۰۲۴ ستون هم دو مگابایت حافظهی ذخیرهسازی را بههمراه دارد؛ اما هر صفحه چهاربرابر دادهی بیشتری از ساختار مربعی ذخیره میکند.
تمامی صفحههایی که در بانک وجود دارند، با استفاده از سیستم آدرسدهی سطر بههم متصل شدهاند و ستونها نیز همین ساختار اتصالی را دارند. همهی آنها با سیگنالهای کنترلی و آدرسهایی برای هر سطر یا ستون کنترل میشوند. هرچه ستون و سطرهای بیشتری در بانک وجود داشته باشد، بیتهای زیادی برای آدرسدهی آنها نیاز خواهد بود.
برای بانک با ساختار ۴۰۹۶ در ۴۰۹۶، هر سیستم آدرسدهی نیاز به ۱۲ بیت دارد؛ اما در ساختار ۱۶۳۸۴ در ۱۰۲۴، به ۱۴ بیت فضا برای آدرسدهی سطرها نیاز خواهد بود و ۱۰ بیت هم برای ستونها استفاده میشود. فراموش نکنید هر دو سیستم ابعاد ۲۴ بیتی دارند.
اگر تراشهی DRAM در هر رتبه یک صفحه را ارائه کند، کاربرد چندانی نخواهد داشت؛ درنتیجه، هر تراشه شامل مجموعههای متعدد بانک سلول حافظه خواهد بود. بسته به ابعاد کلی تراشه، شاید چهار یا هشت یا شانزده بانک در آن وجود داشته باشد. مرسومترین حالت استفاده از هشت بانک است.
تمامی بانکها از باسهای داده و آدرس و فرمان مشترک استفاده میکنند که ساختار کلی سیستم حافظه را سادهتر میکند. زمانیکه بانک مشغول منظمکردن دستورالعمل باشد، بانکهای دیگر فعالیتهای دیگری انجام میدهند. کل تراشه که شامل بانکها و باسهای متعدد میشود، داخل محفظهی امن حفظ و درنهایت، به برد مداری اصلی لحیم میشود. برد مداری مسیرهای الکتریکی را دربر میگیرد که نیروی موردنیاز فعالیت DRAM و سیگنالهای دستور و آدرسدهی و داده را جابهجا میکنند.
در تصویر بالا، تراشهی DRAM را میبینیم که عموما بهنام ماژول (Module) شناخته میشود. این عکس مربوط به محصول سامسونگ است. از تولیدکنندههای بزرگ دیگر میتوان توشیبا، میکرون، اسکی هاینیکس و نانیا را نام برد. سامسونگ اکنون بزرگترین تولیدکنندهی بازار به شمار میرود که ۴۰ درصد از سهم بازار کل جهان را دراختیار دارد. هر تولیدکنندهی DRAM برای نشاندادن مشخصات حافظه، سیستم کدگذاری اختصاصی دارد. تراشهای که در بالا میبینید، تراشهی یکگیگابیتی است که هشت بانک ۱۲۸ مگابیتی دارد و در ساختاری با ۱۶،۳۸۴ سطر و ۸،۱۹۲ ستون پیکربندی شده است.
مفهوم و اهمیت رنک (Rank) در رم
شرکتهای تولیدکنندهی حافظه تراشههای متعدد DRAM را روی برد مداری قرار میدهند که درنهایت، بهنام DIMM شناخته میشود. D در کلمهی مذکور معنای Dual یا دوگانه دارد؛ اما لزوما تمامی بردها محدود به دو تراشه نیستند. درواقع، دوال در اینجا به ارتباطهای الکتریکی با بخش پایینی برد مرتبط میشود و هر دو بخش ماژولها را مدیریت میکنند. ماژولهای DIMM ازلحاظ ابعاد و تعداد تراشههای موجود با هم تفاوت دارند.
در تصویر بالا، DIMM استاندارد کامپیوتر شخصی رومیزی را مشاهده میکنیم و قطعهی پایینی SO-DIMM (یا Small Outline DIMM) نام دارد. ماژول کوچک برای استفاده در کامپیوترهای شخصی با فرمفکتور کوچکتر مانند لپتاپ یا کامپیوترهای همهکاره کاربر دارد. الزام تولیدکننده به جانمایی همهی بخشها در ابعاد کوچکتر تعداد تراشههای مورداستفاده در ماژول و سرعت اجرای وظایف و بسیاری موارد دیگر را تحتتأثیر قرار میدهد.
برای استفاده از تراشههای حافظهی متعدد در DIMM، دلایل گوناگونی وجود دارد. دلیل اصلی را میتوان در افزایش حافظهی دردسترس مشاهد کرد. دلیل بعدی این است که در ساختار چندتراشهای، در هر مرتبه فقط یک بانک دردسترس قرار میگیرد و اشغال میشود و سایر بانکها در پسزمینه عملیات خود را با بهرهوری بیشتری انجام میدهند. دلیل دیگر به پردازنده مرتبط میشود که باس آدرسدهی مرتبط با مدیریت حافظه در آن، عریضتر از باس DRAM است.
آخرین دلیلی که ذکر کردیم، اهمیت بسیار بیشتری دارد. اکثر تراشههای DRAM تنها باس دادهی هشت بیتی و پردازندهی اصلی و مرکز تفاوتهایی جزئی با آنها دارد. بهعنوان مثال، پردازندهی AMD Ryzen 7 3800X دو کنترلر ۶۴ بیتی دارد؛ درحالیکه پردازندهی گرافیکی Radeon RX 5700 XT از هشت کنترلر ۳۲ بیتی بهره میبرد. درنتیجه، هر ماژول DIMM که در کامپیوترهای AMD نصب میشود، باید هشت ماژول داشته باشد (هشت ماژول ۸ بیتی برابر با ۶۴ بیت). شاید تصویر کنید کارت گرافیک AMD 5700XT از ۳۲ تراشهی حافظه بهره میبرد؛ درحالیکه تنها هشت تراشه در آن دیده میشود. چرا؟ تراشههای حافظه که برای کارتهای گرافیکی طراحی میشوند، در هر تراشه بانکهای بیشتری دارند (عموما ۱۶ یا ۳۲ بانک)؛ چون رندر سهبعدی نیاز به دسترسی همزمان به دادههای بیشتری دارد.
سیستم تک رنک در برابر دو رنک
مجموعهی ماژولهای حافظه که باس دادهی کنترلر حافظه را پر میکند، رنک (Rank) نامیده میشود. اتصال بیش از یک رنک به کنترلر دورازذهن نیست؛ اما کنترلر در هر مرتبه فقط توانایی استخراج داده از یک رنک را دارد؛ چون همهی آنها از یک باس دادهی مشترک استفاده میکنند. این مورد مشکلی ایجاد نمیکند؛ چون تا زمانیکه یک رنک مشغول پاسخدادن به یک دستورالعمل باشد، مجموعهی از دستورهای جدید را میتوان به رنک دیگر ارسال کرد.
ماژولهای DIMM میتوانند با بیش از یک رنک طراحی و ساخته شوند که خصوصا درصورت نیاز به حافظهی زیاد و باتوجهبه محدودبودن تعداد درگاههای رم روی مادربرد، کاربردی خواهد بود. پیکربندیهای با رنک دوگانه یا چهارگانه بهرهوری و قدرت بیشتری درمقایسهبا پیکربندیهای با رنک تکی ارائه میکنند. البته اضافهشدن رنک بهمعنای فشار بر سیستم الکتریکی هم خواهد بود. اکثر کامپیوترهای شخصی رومیزی فقط توانایی مدیریت یک یا دو رنک را در هر کنترلر دارند. اگر سیستم نیاز به ساختار رنک بیشتر داشته باشد، استفاده از DIMM با ساختار Buffered پیشنهاد میشود. این نوع از حافظه یک تراشهی اضافه روی DIMM دارد که فشار روی سیستم را با ذخیرهسازی دستورالعمل و داده در چند چرخه پیش از ارسال به مرحلهی بعد نگهداری میکند.
تمامی انواع رنک الزاما ابعاد ۶۴ بیتی ندارند. DIMMهایی که در سرورها و ورکاستیشنها استفاده میشوند، رنک ۷۲ بیتی دارند؛ یعنی یک ماژول DRAM اضافه روی آنها وجود دارد. تراشهی اضافه لزوما حافظه یا سرعت و کارایی بیشتر را بههمراه ندارد و درعوض، برای کاربرد بررسی و اصلاح خطا (ECC) استفاده میشود.
همانطورکه گفته شد، همهی انواع پردازنده برای انجام وظایف به حافظه نیاز دارند. در بخش ECC RAM، دستگاه کوچکی که همهی کارها را انجام میدهد، ماژول اختصاصی خود را دارد. باس داده در چنین نوعی از حافظه فقط ۶۴ بیت عرض دارد؛ اما پایداری داده به میزان درخورتوجهی بهبود پیدا میکند. درنهایت، استفاده از بافر و ECC تنها کمی به بهبود کارایی کلی کمک میکند؛ اما هزینهی زیادی را در پی دارد.
ساختار کلاک حافظه
تمامی حافظههای رم کلاک مرکزی I/O (ورودی و خروجی) دارند که بهصورت ولتاژ با تغییر دائم بین دو سطح تعریف میشود. این کلاک برای سازماندهی تمام فعالیتهایی بهکار میرود که در تراشهی حافظه و باسها رخ میدهد. در سالهای بسیار دور (۱۹۹۳)، حافظههایی بهنام SDRAM (یا Synchronous DRAM) در بازار وجود داشتند که تمامی فرایندها را با استفاده از دورهی زمانی توالی میدادند که کلاک از فاز پایین به بالا تغییر میکرد. ازآنجاکه این اتفاق بسیار سریع رخ میدهد، روش بسیار دقیقی برای شناسایی زمان رخدادن اتفاق دراختیار قرار میدهد.
SDRAMهای قدیمی کلاکهای I/O با فرکانسی بین ۶۶ تا ۱۳۳ مگاهرتز داشتند و برای هر چرخهی کلاک، دستورالعمل به DRAM ارسال میشد. درمقابل، تراشه میتوانست هشت بیت داده را در همان دورهی زمانی جابهجا کند. توسعهی سریع SDRAM که با پیشگامی سامسونگ رخ داد، نوع جدیدی از آنها را در سال ۱۹۹۸ به بازار معرفی کرد. نوع جدید انتقال داده را در اوج و فرود ولتاژ کلاک مدیریت میکرد؛ درنتیجه در هر چرخهی کلاک، داده بهصورت همزمان دو بار ارسال و دریافت میشد. نام فناوری جدید Double data rate synchronous dynamic random access memory بود که بهصورت خلاصه DDR-SDRAM یا تنها DDR خوانده میشد.
حافظههای DDR بهسرعت به ساختار مرسوم بازار حافظه تبدیل شدند؛ درنتیجه، SDRAMهای ابتدایی بهنام single data rate SDRAM یا SDR-DRAM شناخته میشدند و تا ۲۰ سال، بهعنوان تجهیز پایهای سیستمهای کامپیوتری بهکار میرفتند. پیشرفتهایی که در دنیای فناوری رخ داد، بهبود فناوری حافظهها را هم ممکن کرد و در سال ۲۰۰۳، شاهد عرضهی DDR2 بودیم. فناوریهای بعدی بهنامهای DDR3 و DDR4 در سالهای ۲۰۰۷ و ۲۰۱۲ به بازار عرضه شدند. هر بهروزرسانی با بهرهوری و کارایی بیشتر همراه بود؛ چون از کلاک سریعتری در بخش I/O بهره میبرد. بهعلاوه، نسخههای جدید، سیستمهای سیگنالدهی بهینه و مصرف نیروی کمتر داشتند.
فناوری DDR2 تغییری وارد دنیای رم کرد که امروزه نیز هنوز استفاده میشود. کلاک I/O در حافظهها به سیستم جداگانهای تبدیل شد که بهنوعی خود را از دیگر ساختارهای کلاک جدا کرد و سرعتی دوبرابر آنها دارد. همین ساختار را میتوان در پردازندههای مرکزی تفسیر کرد که کلاک ۱۰۰ مگاهرتزی توانایی مدیریت همهی رخدادها را دارد؛ اما کلاکهای داخلی در پردازنده، ۳۰ تا ۴۰ برابر سریعتر هستند. DDR3 و DDR4 سرعت را با چهاربار اجرای چرخه در کلاک I/O افزایش دادند؛ اما در تمامی موارد، باس داده بازهم تنها از بالارفتن و پایینآمدن کلاک I/O برای ارسال و دریافت اطلاعات استفاده میکند.
تراشههای حافظه در سرعتهای آنچنان سریعی فعالیت نمیکنند و درواقع، حتی سرعت نسبتا کمی دارند. نرخ جابهجایی داده که با معیار میلیون جابهجایی در ثانیه MT/s اندازهگیری میشود، در DRAMهای مدرن بسیار زیاد است؛ چون از چند بانک در هر تراشه استفاده میشود. اگر در هر ماژول فقط یک بانک داشتیم، همهی فعالیتها به میزان چشمگیری کندتر میشد.
هر نسخهی جدید از DRAM قابلیت هماهنگی با نسخههای قبلی را ندارد؛ درنتیجه، DIMM مورداستفاده در هر نوع اتصالهای الکتریکی متفاوتی با انوع دیگر دارد. همچنین، درگاهها و بریدگیها تفاوت میکند تا از هرگونه اختلال سهوی همچون استفاده از حافظهی DDR4 در درگاه DDR-SDRAM جلوگیری شود.
حافظهی رم برای کارهای گرافیکی ابتدا بهنام SGRAM یا synchronous graphics RAM شناخته میشد. آن نوع از رم نیز در سالهای گذشته توسعههای متعددی تجربه کرده است. امروزه، از اصطلاح GDDR برای رم گرافیکی استفاده میشود تا کاربرد آن بهخوبی در نام مشخص شود. درحالحاضر، GDDR نسخهی ۶ در بازار وجود دارد و برای جابهجایی داده از سیستم نرخ دادهی چهارگانه استفاده میکند. بهبیاندیگر در هر چرخهی کلاک، چهارمرتبه جابهجایی داده رخ میدهد.
حافظههای رم در کارت گرافیک علاوهبر نرخ جابهجایی دادهی سریعتر، قابلیتهای اضافهای برای مدیریت بهتر جریان دارند. بهعنوان مثال، در این حافظهها دو صفحه بهصورت همزمان در یک بانک باز یا باسهای آدرس و دستور در DDR اجرا میشوند. از قابلیتهای دیگر میتوان به عملکرد تراشههای حافظه در سرعتهای کلاک بسیار بیشتر اشاره کرد؛ البته تمامی پیشرفتها و قابلیتهای مذکور با افزایش هزینه و گرمای تولیدشده همراه هستند.
ماژول رم GDDR6 تقریبا قیمتی دوبرابر ماژول مشابه DDR4 دارد و زمان استفاده در حداکثر سرعت واقعا گرم میشود؛ بههمیندلیل، کارتهای گرافیک که حافظههای رم با سرعت بسیار زیاد دارند، عموما مجهز به سیستم خنککنندهی مجزای حرفهای و قدرتمند نیز هستند.
مفاهیم تأثیرگذار بر سرعت
بهرهوری و سرعت حافظهی DRAM عموما با تعداد بیتهای دادهای جابهجا شده در هر ثانیه محاسبه میشود. در بخشهای قبلی مقاله، دیدیم که DDR4 بهعنوان حافظهی سیستم تراشههایی با عرض هشت بیت دارد؛ درنتیجه، هر ماژول تا هشت بیت در هر چرخهی کلاک داده منتقل میکند. اگر نرخ جابهجایی داده را 3200MT/s در نظر بگیریم، درمجموع ۳۲۰۰x۸=۲۶،۶۰۰ میلیون بیتبرثانیه یا کمی بیشتر از سه گیگابیتبرثانیه سرعت داریم. ازآنجاکه اکثر ماژولها از هشت تراشه استفاده میکنند، به سرعت حدودی ۲۵ گیگابیتبرثانیه میرسیم. برای انواع GDDR6، هشت ماژول بهمعنای ۴۴۰ گیگابیتبرثانیه خواهد بود.
اکثر افراد این مقدارِ محاسبهشده را پهنای باند (Bandwidth) حافظه مینامند که یکی از عوامل مهم در بهرهوری و کارایی رم بهحساب میآید. بههرحال، این مقدار کاملا تئوری است؛ چون همهی رخدادها در رم لزوما همزمان اتفاق نمیافتند. برای درک این بخش، به تصویر زیر دقت کنید که طرح کاملا ساده و البته به دور از واقعیت از اتفاقهایی را نشان میدهد که در زمان ارسال درخواست داده به حافظه رخ میدهند.
مرحلهی اول شامل فعالکردن صفحه در DRAM میشود که دادههای مدنظر را نگهداری میکند. این مرحله ابتدا به حافظه میگوید که کدام رنک موردنیاز است و سپس ماژول مرتبط و بانک مدنظر انتخاب میشود. موقعیت صفحه به تراشه اعلام میشود و آن بخش کل صفحه را فعال میکند. اجرای مراحل نیاز به زمان دارد و از همه مهمتر برای فعالشدن کامل صفحه نیز به زمان نیاز داریم. فرایندها به این دلیل انجام میشوند که از قفلشدن کل سطر بیتها پیش از ارائهی دسترسی اطمینان حاصل شود.
پس از مراحل بالا، ستون مرتبط پیدا و اطلاعات مدنظر ارائه میشود. کل DRAM داده را بهصورت یک بلوک ارائه میکند که در انواع امروزی، هربار ارسال بلوک هشت بیت است. درنهایت، اگر در یک چرخهی کلاک یک بیت از یک ستون دریافت شود، دادهی مذکور تا پیش از آمادهشدن هفت بیت دیگر، ارسال نخواهد شد. درنتیجه، اگر بیت بعدی داده از صفحهی دیگر درخواست شود، صفحهی باز کنونی ابتدا باید به حالت بسته برود (فرایند pre-charging) تا دراداه صفحهی بعدی اجازهی بازشدن پیدا کند. فرایند مذکور زمان موردنیاز را افزایش میدهد.
تمامی دورههای زمانی ذکرشده بین ارسال دستورالعمل به حافظه و انجام فعالیت انجام و با نام Memory timings یا Latencies شناخته میشوند. هرچه این مقدار کمتر باشد، کارایی و بهرهوری کلی سیستم بیشتر خواهد بود؛ چون به تعریف کاملا روشن، برای رخدادن فرایند به زمان کمتری نیاز پیدا میکنید. برخی از تأخیرها اسامی آشنایی برای علاقهمندان دنیای کامپیوتر دارند:
نام | توضیح | مقدار مرسوم در DDR4 |
---|---|---|
tRCD | Row-to-Column Delay: تعداد چرخههایی که بین فعالشدن سطر و انتخابشدن ستون رخ میدهند | ۱۷ چرخه |
CL | CAS Latency: تعداد چرخههایی که بین شناسایی ستون و شروع ارسال داده طول میکشد | ۱۵ چرخه |
tRAS | Row Cycle Time: کمترین تعداد چرخه که سطر باید در آنها فعال بماند تا وارد فرایند pre-charge شود | ۳۵ چرخه |
tRP | Row Precharge Time: حداقل چرخههای موردنیاز بین فعالسازی سطرهای گوناگون | ۱۷ چرخه |
مؤلفههای متعدد دیگری برای بررسی وجود دارند و همهی آنها باید با دقت برنامهریزی شوند تا DRAM در رویکردی پایدار فعالیت کند؛ رویکردی که بدون ایجاد اختلال و آسیب در داده و با بیشترین بهرهوری ممکن رخ میدهد. با وجود تمام فرایندهای تأخیری که در عملکرد رم وجود دارد، دستورالعملها حتی زمانی اجرا میشوند که رم مشغول انجام دادن کار دیگری باشد؛ بههمیندلیل در قطعات پردازشی گوناگون، ماژولهای RAM متعددی مشاهده میکنیم. تایمینگهای حافظه تنظیمشدنی هستند و درواقع در داخل DRAM، بهعنوان اصلی تغییرناپذیر ثبت نشدهاند؛ چون تمامی دستورالعملها با استفاده از رم از کنترلر حافظه در پردازنده ارسال میشوند. تولیدکنندهها همهی تراشههای تولیدی خود را آزمایش میکنند و آنهایی که در زمان مشخص به حد معمولی از سرعت برسند، با یکدیگر ترکیب و روی DIMMها نصب میشوند. سپس تایمینگها در تراشهی کوچک روی برد اصلی نصب میشوند.
مقالههای مرتبط:
فرایندی که برای دسترسی و استفاده از اطلاعات بالا بهکار میرود، با عنوان serial presence detect یا SPD شناخته میشود. این اصطلاح بهصورت استاندارد صنعتی به BIOS امکان میدهد تا تنظیمبندی زمانی را برای انجام کارها انجام دهد. بسیاری از مادربردها به کاربر امکان میدهند زمانبندیها را تغییر دهند که با هدف افزایش بهرهوری سیستم یا پایداری پلتفرم انجام میشود.
همچنین، بسیاری از ماژولهای رم از استاندارد Extreme Memory Profile یا XMP اینتل پشتیبانی میکنند. این استاندارد بهنوعی اطلاعات اضافه را در SPD حافظه ذخیره میکند که به بایوس میگوید: «من میتوانم این زمانبندیهای غیراستاندارد را مدیریت کنم». درنهایت، استاندارد جدید امکان میدهد بهجای ایجاد تغییر غیرالزامی در استانداردها، تنها با یک کلیک تنظیمات موردنیاز را اجرا کنید.
توضیحات مذکور جزئیات قطعهی رم را در کامپیوترهای شخصی شرح دادند. اکنون که زیرساختهای این قطعهی حساس کامپیوتری را درک کردهاید، تصور کنید که حافظهی هشت گیگابایتی DDR4-SDRAM را در دست دارید. این حافظه از ۷۰ میلیارد خازن تشکیل میشود و همین تعداد هم ترانزیستور دارد. هریک از آنها مقدار کمی بار الکتریکی ذخیره میکنند و در چند نانوثانیه میتوان به هریک دسترسی پیدا کرد. ماژولهای رم میتوانند تعداد بسیار زیادی دستورالعملرا مدیریت کنند و اکثر آنها درمقایسهبا قطعات قیمت مناسب و عمر طولانی دارند.
حافظههای DRAM همیشه در مسیر توسعه و بهینهسازی قرار دارند. بهزودی، شاهد عرضهی DDR5 خواهیم بود که با ادعای پهنای باندی تقریبا برابر با دو ماژول DDR4 عرضه میشود. فناوری جدید قطعا قیمت گرانی خواهد داشت؛ اما مزیتهای بیشماری هم برای ورکاستیشنها و سرورها بههمراه دارد.