تایمینگ رم چیست؟
تامینگ رم (RAM Timing)، لتنسی حافظه (RAM Latency) یا تاخیر رم (RAM Delay) یکی از مهمترین پارامترهایی است که کارکرد و سرعت قطعه رم (RAM) را مشخص میکند. در انواع رمهای DDR، DDR2، DDR3 و نوع DDR4 که به تازگی منتشر شده است، علاوه بر مقدار حافظه و سرعت (فرکانس کاری)، تاخیر رم یا همان تامینگ رم نیز به همان اندازه پارامتر مهمی شناخته میشود. ولی گاهی اوقات توسط خریدارها، این گزینه نادیده گرفته شده و در نهایت از رم خریداری شده نتیجه مطلوب را نمیبینند.
تاخیر رم یکی از مهمترین بحثهایی است که در هنگام اورکلاک (Overclock) کردن باید در نظر داشته باشید. اورکلاکینگ یعنی استفاده از حداکثر توان قطعات. اگر در این مباحث وارد نشده اید، بهتر است از اورکلاک کردن اجتناب کنید چون درصورت نداشتن اطلاعات کافی، میتواند باعث از کار انداختن و خراب کردن قطعه مورد نظر یا سایر قطعات بکند .
نترسید، اگر در مباحث اورکلاکینگ وارد نیستید هم این اعداد و ارقام در هنگام خریدن یک قطعه رم بسیار مورد استفاده تان قرار خواهد گرفت. از تعدادی از تایمینگهای رم میتوان به اعداد زیر اشاره کرد:
۹-۹-۹-۲۴-۲N
۷-۷-۷-۲۱
۵-۵-۵-۱۵-۱T
۳-۴-۴-۸

نمونهای از عبارت تایمینگ رم.
توجه کنید که بر روی بسیاری از قطعههای رم، مقادیر تایمینگ آن نوشته نمیشود. کافیست مدل رم را جستجو کنید تا به مقادیر تایمینگ آن برسید یا از طریق برگههای راهنما آن را بخوانید. اما این اعداد و ارقام به چه معنا هستند؟ پیش از آن به ساختار تایمینگ رم نگاهی بیندازیم:
اینها پارامترهایی هستند که در یک عبارت تایمینگ رم خواهید دید. به توضیح هر یک از این پارامترها میپردازیم. توجه کنید که برای مشاهده تصاویر با اندازه کامل، بر روی آنها کلیک کنید:
مهمترین پارامتر در تایمینگ رم است به همین دلیل معمولاً بر روی ماژول رم، فقط مقدار این پارامتر نوشته میشود. CL مخفف Column Address Strobe Latency است. CL مشخص کننده تاخیر از زمان دریافت درخواست داده از طرف کنترل کننده حافظه (بر روی پردازنده - CPU یا مادربورد) تا ارسال داده از طرف خود ماژول رم به خروجیهای فیزیکی خود، بر حسب کلاک است. برای مثال، CL9 یعنی تعداد ۹ کلاک از زمان درخواست تا دادن دادهها مورد نیاز است.
اندازه گیری سرعت رم:
تاخیر رم اکثرا با این مقدار سنجیده میشود و با استفاده از فرکانس کاری رم (رم نیز همانند سایر قطعات مانند پردازنده، کارت گرافیک و ... یک فرکانس کاری مشخص دارد) - البته فرکانس واقعی - به ثانیه تبدیل میشود. برای مثال یک رم DDR3 با فرکانس نامی (یا حداکثر) ۱۶۰۰ مگاهرتز را در نظر بگیرید. از آن جایی که سرعت کلاک واقعی این رم در شرایط عادی ۱۶۰۰/۲ یعنی ۸۰۰ مگاهرتز است، و از آن جایی که طبق فرمول نوسان (امسال پدرمونو درآوردن با اینا!) مقدار فرکانس (F) به هرتز برابر ۱ تقسیم بر دوره (T) به ثانیه است، بنابراین برای هر یک کلاک ۱.۲۵ نانوثانیه زمان لازم است. حال اگر CL=5 باشد، تاخیر رم ما ۵ * ۱.۲۵ برابر ۶.۲۵ نانوثانیه خواهد بود. اگر CL=9 باشد، این زمان به ۱۱.۲۵ نانوثانیه افزایش خواهد یافت. بنابراین هرچه اعداد تایمینگ رم - بخصوص CL آن - کمتر باشد، سرعت رم نیز بیشتر خواهد بود. به همین دلیل است که یک رم با فرکانس کاری بالاتر ممکن است کندتر از یک رم با فرکانس کاری پایین تر عمل کند .
برای درک بهتر این پارامتر، یک رستوران خودرویی را فرض کنید (البته تو ایران زیاد نمیتونید پیدا کنید، حداقل من ندیدم!). خودروی ما به عنوان پردازنده، نیاز به دادهای دارد که بر روی حافظه ذخیره کرده است. رستوران هم ماژول رم است. برای دریافت غذای مورد نیاز، ابتدا سفارش خود را از طریق دستگاه موجود در صف، به رستوران میدهیم. این سفارش همان دستور READ است که پردازنده فرستاده. پس از مدتی تاخیر، رستوران غذای ما را آماده کرده و به ما تحویل میدهد. این تاخیر در تحویل غذا مشابه پارامتر CL در حافظه رم است. در نهایت نیز غذا به صورت فیزیکی تحویل ما داده میشود یعنی داده مورد نیاز طبق سفارش ما، از رم دریافت میشود.

دیاگرام تاخیر CL - برای بزرگنمایی بر روی عکس کلیک کنید
همان طور که در تصویر بالا میبینید، تاخیری که از زمان دریافت کامل دستور Read تا داده دادهها از سلول حافظه درخواست شده (علامت D) انجام میگیرد، CAS Latency یا به صورت مخفف CL نام دارد و واحد آن کلاک (Clock) است. درباره دستور Read، پارامتر بعدی را بخوانید. توجه کنید که فاصله بین خطوط خاکستری رنگ است.

نمونهای از فرکانس کاری پردازنده.
tRCD:
tRCD مخفف Row Address to Column Address Delay است. این تاخیر فاصله بین فعالساز سطر (RAS مخفف Row Address Strobe) و فعال ساز ستون (CAS مخفف Column Address Strobe) است که از پین Address دریافت میشوند. برای درک بهتر، فضای ذخیره سازی رم را به صورت جدول ماتریسی در نظر بگیرید. توجه کنید که واقعا هم همینطور است چون خازنهای موجود در رم و در نتیجه بلوکهای حافظه به صورت سطر و ستون هستند. برای دریافت یک قسمت از حافظه، باید بین سطرهای موجود، یکی را فعال کنیم و پس از آن، یکی از ستونها را تا به این ترتیب به آن قسمت از حافظه برسیم و دادههای آن را دریافت کنیم. حال بین این فعال کردن سطر و ستون یک تاخیر وجود داره که به آن tRCD میگویند. رم با استفاده از دستور Active که دریافت میکند، میفهمد که باید آماده دریافت سطر سپس ستون باشد. به عبارت دیگر، دستور Active یک سطر را فعال کرده و پس از آن دستور Read یا Write ستون را فعال میکند.
برای درک بهتر، فرض کنید که در همان مثال بالا، سفارش به گونهای است که درست پس از انتخاب غذای مورد نیاز شروع میشود. حال ما لیستی از غذاها داریم که به صورت دسته بندی شده هستند. برای مثال، غذاهای سرد (سطر ۱)، غذاهای گرم (سطر ۲) و ... . در هر یک از این سطرها نیز غذاهای اصلی نوشته شده است. بنابراین ما ابتدا سطر مورد نظر را فعال میکنیم و پس از آن، ستون مورد نظر را و در این لحظه دقیقا سفارش ما برای غذای مورد نظر شروع میشود. به همین دلیل است که تاخیر اصلی که برای بدست آوردن دادهها شروع میشود، CAS Latency نام دارد چون دقیقاً پس از انتخاب ستون (CAS) آغاز میشود.

دیاگرام تاخیر tRCD
همان طور که در تصویر بالا میبینید، تاخیری که از زمان دریافت مشخص کننده سطر از طریق باس Address تا زمان دریافت مشخص کننده ستون، آن هم از طریق باس Address، تاخیر tRCD نام دارد و واحد آن کلاک (Clock) است. توجه کنید که فاصله بین خطوط خاکستری رنگ است.
tPR مخفف RAS Precharge است. دستور Precharge که پس از دریافت کردن دادهها اجرا دریافت میشود، برای غیرفعال کردن سطری که طی فرایند قبلی باز شده بود، مورد استفاده قرار میگیرد. بدون بستن سطر فعلی، امکان استفاده از سطر بعدی وجود نخواهد داشت. به عبارت دیگر، با استفاده از دستور Precharge، حافظه برای دسترسی دیگر آماده میشود. به تاخیری که طی اجرا کردن این دستور تا دستور Active بعدی (که فرایند دسترسی به حافظه را آغاز میکند) گرفته میشود، tPR گفته میشود.

دیاگرام تاخیر tRP
همان طور که در تصویر بالا میبینید، تاخیری که از زمان غیرفعال کردن سطر کنونی که در فرایند قبلی فعال شده بود تا فعال کردن سطر جدید با توجه به دستور Active، تاخیر tRP نام دارد و واحد آن کلاک (Clock) است. توجه کنید که فاصله بین خطوط خاکستری رنگ است.
tRAS مخفف Row Address Strobe است. این دستور تعداد کلاک سایکلهایی است که بعد از دستور Active از اجرا شدن دستور Precharge جلوگیری میکند. این محدودیت حداقل باید tRCD + CL + 2 کلاک باشد ولی میتواند tRCD + CL یا tRCD + 2 * CL نیز باشد. تا بدین ترتیب دادههای خروجی بتوانند به درستی ارائه شوند. مقدار این دستور که مورد چهارم است، معمولاً در تایمینگ رم نوشته نمیشود.

دیاگرام تاخیر tRAS
CMD:
CMD مخفف Command Rate است. این پارامتر درواقع نوعی تاخیر نیست بلکه نشان دهنده تعداد کلاکهایی است که یک دستور میتواند نگه داشته شود. اگه به تصاویر بالا نگاه کنید، همه دستورات (Active، Read، Precharge) در دو چرخه کلاک رسم شده اند یعنی در این نمونهها Command Rate عدد ۲ است. این عدد را با ۲T یا ۲N نشان میدهند. مقدار ۲ کلاک Command Rate باعث ایجاد ثبات در دستورات میشود با اینکه ممکن است سرعت کلی را به مقدار بسیار اندکی پایین بیاورد. مقدار دیگر این پارامتر ۱ است که با ۱T یا ۱N نشان داده شده و دستورات را تنها در ۱ کلاک ذخیره میکند این کار باعث افزایش کم سرعت شده ولی ثبات را از RAM میگیرد. نوع دیگر نیز ۳T یا ۳N است که دستور را در ۳ کلاک نگه میدارد.