در این مطلب قصد داریم تا بررسی مفصلی در مورد حافظه Memory داشته باشیم، با برخی مفاهیم آشنا شویم و مقایسههایی در مورد استاندارادهای حافظه به عمل آوریم.
مقدمه:
دیتا data مهمترین عنصر در گفتمان کامپیوتر است، زیرا این دیتا است که وارد، تولید، پردازش، ذخیره و یا خارج میشود. در این میان، مبحث ذخیرسازی دیتا یکی از مهمترین بخشهای عملیات کامپیوتری میباشد. در این تحلیل فنی، ما قصد نداریم در مورد حافظههای ذخیره کننده دائمی مانند هارد دیسک، SSD، درایو نوری، و یا انواع قدیمی مانند فلاپی دیسک صحبت کنیم؛ بلکه موضوع مورد بحث ما در این مقاله “ذخیره سازهای موقت” دیتا هستند.
ذخیره سازی موقت دیتا زمانی مورد استفاده قرار میگیرد که دیتا هنوز به هدف نهایی خود نرسیده است. این هدف نهایی میتواند همین متنی باشد که در Microsoft Word نوشته میشود و یا نتیجه شبیه سازی واکسن کووید 19 بر روی ابرکامپیوترها. تا زمانی که دیتا به نتیجه پایانی خود برسد، (در درایو اصلی به صورت دائمی ذخیره و یا به صورت تصویر روی نمایشگر ظاهر شود)، باید در فضایی به صورت موقت نگهداری شود تا به سرعت توسط پردازشگر برای عملیات مورد نظر در دسترس قرار بگیرد. بنابراین نیاز به وجود حافظه موقت و سریع در کامپیوتر، یک نیازی اساسی است.
در بخشهای بعد به دو مورد از حافظههای موقت مرسوم اشاره شده، سپس وارد مطالب تخصصی تر خواهیم شد.
حافظه موقت نهان یا کش Cache:
با افزایش سرعت پردازش پردازنده مرکزی، نیاز به حافظهای سریع که بتواند با کمترین تاخیر و بالاترین سرعت اطلاعات مورد نیاز پردازنده در خود ذخیره کند به طور چشمگیری احساس میشد. در واقع این حافظه حد واسط میان پردازنده و حافظه موقت عمل کرده و اطلاعاتی را که پردازنده به وفور به آن نیاز دارد را در خود ذخیره میکند. بسته به حجم و آرایش کش، یکی از مهمترین عوامل تعیین کننده در عملکرد پردازندهها بی گمان همین حافظه کش میباشد. با فراگیر شدن پردازندههای چند هستهای، حافظه کش معمولا در سطوح مختلف:L1 برای هر هسته،L2 برای یک کلاستر از هستهها و L3 معمولا برای کل هستهها در نظر گرفته میشود. هر چه سطح کش پایینتر باشد، سرعت آن بیشتر (گرانتر) و ظرفیت آن کوچکتر در نظر گرفته میشود.
البته وجود کش که گاهی از آن به عنوان بافر هم یاد میشود محدود به پردازندههای کامپیوتر نیست. بسیاری از دستگاههای الکترونیکی در کنار مدارهای مجتمع برای انجام محاسبات ریاضی، دارای فضای معمولا کوچکی به نام بافر یا کش (نه با سرعت مشابه با کش در پردازندههای کامپیوتر) هستند تا اطلاعات در آن به صورت موقت ذخیره شود.
حافظه دسترسی تصادفی RAM:
در این مطلب تمرکز ما بر روی این نوع از حافظه میباشد. این نوع حافظه معمولا در حجم بسیار بالاتری از حافظه کش برای ذخیره موقت حجم عظیمی از دیتا استفاده میشود و البته سرعت خواندن و نوشتن کمتر از کش میباشد که باعث ارزانتر بودن آن نسبت به کش است. برای روشن تر شدن مطلب، سعی میکنم با جدا کردن حافظه مربوط به CPU و GPU هرکدام رو به طور جداگانه بررسی کنیم. البته بسیاری از مفاهیم بین حافظههای این دو نوع پردازشگر یکسان است.
حافظه پردازنده مرکزی:
همانگونه که از نام آن پیداست، این نوع حافظه برای ذخیره دیتا پردازنده مرکزی استفاده میشود. ما قصد نداریم به بررسی تاریخی حافظه بپردازیم و قصدمان ارایه جزییات بیشتر از استانداردهایی هست که برای سالیان متمادی تا به امروز استفاده میشود. برای بیش از 20 سال است که حافظه استاندارد را با عنوان DDR SDRAM (Double Data Rate Synchronous Dynamic Random-Access Memory) میشنایم. این نوع حافظه در حال حاضر تا نسخه چهارم آن عرضه شده و به زودی شاهد نسخه پنجم این استاندارد خواهیم بود. در این استاندارد، دیتا را به خاطر اینترفیس دو تایی، میتوان دو برابر حالت تکی SDR منتقل کرد.
چه مفاهیمی در رم در خور توجه است:
باس BUS: باس چیزی بیشتر از پهنای خط فیزیکی که پردازنده را به حافظه متصل میکند نیست. راهکارهای متفاوتی برای طراحی باس وجود دارد که هدف این نگارش نیست. باس مرسوم برای پردازنده و حافظه مرکزی 64 بیتی میباشد. یعنی 64 بیت دیتا در واحد زمان میتواند از کانال باس بین پردازنده و حافظه منتقل شود. البته مموریهایی که قابل تصحیح خطا (ECC) دارند و اغلب در سرورها استفاده میشوند از 8 بیت باس بالاتر بهره میبرند که مجموع باس آنها به 72 بیت میرسد.
سرعت کلاک: این سرعت در واقع تعداد دفعات در واحد زمان است که میتوان به حافظه دسترسی پیدا کرد و واحد آن هرتز است. حافظههای امروزی دارای سرعت چند گیگاهرتزی هستند.
پهنای باند حافظه: این پارامتر حاصل ضرب دو پارامتر بالا میباشد و تعیین کننده میزان عملکرد رم است. هر چه باس و یا کلاک رم بالاتر باشد، پهنای باند بیشتر و در نتیجه دسترسی به اطلاعات سریعتر انجام میگیرد. محاسبه پهنای باند حافظه به طریق زیر است (ضریب 2 برای دو برابر بودن ریت یا همان DDR و تقسیم بر 8 برای تبدیل بیت به بایت میباشند):
Clock (MHz) * BUS (bit) * 2 /8 = Bandwidth (MB/s)
از آنجا که در CPU باس 64 بیت است، بنابراین این سرعت حافظه است که نقش تعیین کنندهای در سریعتر بودن حافظه ایفا میکند. نکتهای که در اینجا وجود دارد این است که در اغلب موارد در کیتهای رم به طور پیش فرض، دابل ریت بودن را در برچسب مشخصات آن ذکر میکنند. مثلا رم DDR4-3200MHz در واقع با کلاک 1600 مگاهرتز فعالیت میکند و 3200 در واقع مجموع نرخ تبادل اطلاعات است یعنی 3200MT/s. بنابراین در چنین مواردی نیازی به اعمال ضریب 2 برای محاسبه پهنای باند نیست. در آرایش دو کاناله، پهنای باند دو کیت 3200، برابر 51.2GB/s است.
توجه شود که محاسبه پهنای باند بالا محاسبه تئوری است و در عمل پهنای باند از این میزان کمتر میباشد.
ظرفیت: ظرفیت حافظه بر مبنای بایت سنجیده میشود. حافظههای کنونی ظرفیت چند گیگابایتی دارند. البته حافظه پردازنده مرکزی متشکل از چند چیپ حافظه است که روی یک ماژول قرار میگیرند.
زمان تاخیر: به مدت زمان بین درخواست پردازنده برای دسترسی به حافظه تا عملی شدن آن دسترسی، تاخیر یا Latency می گویند. زمان تاخیر معمولا در حد نانوثانیه است و بستگی به لولهای مختلف دسترسی از چند نانوثانیه تا چند صد نانو ثانیه است. باید توجه داشت سرعت کلاک به تنهایی تعیین کننده عملکرد بهتر حافظه نیست. زمان تاخیر در کنار سرعت حافظه دو فاکتور مهم برای انتخاب رم مناسب برای سیستم است. معمولا با افزایش سرعت ماژولهای رم، زمان تاخیر هم به نسبت افزایش پیدا میکند. بنابراین سازندگان سعی میکنند تا با ترفندهای مختلف در کنار افزایش سرعت، زمان تاخیر را پایینتر نگاه دارند تا راندمان رم افزایش پیدا کند. صد البته نتیجه آن هم گرانتر شدن قیمت رمهای فرکانس بالاست.
آرایش رم تک، دو، چهار (چند) کاناله به چه معناست؟
برای داشتن آرایش رم بیش از یک کانال باید هم مادربرد و هم CPU چنین آرایشی را پشتیبانی کنند. در رده Mainstream، پردازنده از دو کانال و در رده Workstation و Server، 4 کانال و در معدود مواردی مانند سری EPYC AMD رم 8 کاناله هم پشتیبانی میشود. پیشتیبانی از کانالهای بیشتر باعث افزایش قیمت بسیار زیاد این پردازندههای میشود. زمانی که پردازنده بتواند بیش از یک ماژول رم رو به طور همزمان با باس معین آدرس دهی کند، آرایش چند کاناله خواهد بود. بنابراین در آرایش دوکاناله، عملا پردازنده هر کدام از ماژولهای رم را با 64 بیت آدرس دهی مینماید که یعنی ما شاهد باس کل 128 بیتی هستیم. برای همین است که عملکرد دو رم 8 گیگابایتی در آرایش دو کاناله بسیار بهتر (به طور تئوریک دو برابر) از رم تک کاناله 16 گیگابایتی با همان سرعت و زمان تاخیر است.
نکته مهمی که وجود دارد این است که درآرایش چند کاناله، برای به دست آوردن بهترین عملکرد، باید ماژولهای رم دقیقا از نظر سرعت و ظرفیت و تاخیر یکسان باشند. با اینکه همچنان هر ماژول با 64 بیت آدرس دهی میشود اما یکسان نبودن هر کدام از این موارد باعث میشود که تقارن در دسترسی یکسان به ماژولها از میان رفته و گلوگاههای مختلفی به وجود آید که در بسیاری از موارد عملکردی در حد تک کاناله ارایه میدهد. برای همین است که سازندگان رم، رمهای چند کاناله را در هنگام تولید تست کرده و ماژولهای را در یک بسته بندی تکی عرضه میکنند تا از عملکرد بهینه آنها در کنار هم اطمینان حاصل کنند.
رنک حافظه Rank: گروهی از چیپهای مموری که بر روی یه ماژول قرار میگیرند را میگویند. رنک را باید برای هر کانال رم به طور مجزا در نظر گرفت (رنک بر کانال). بهتر است با مثال توضیح دهیم: یک ماژول 8 گیگابایتی DDR4 معمولا شامل 8 چیپ رم یک گیابایتی است. هر چیپ رم با باس 8 گیگابیتی آدرس دهی میشود که در نتیجه کل ماژول با باس 64 بیتی آدرس دهی میگردد. اگر شما یک عدد از این ماژولها استفاده کنید، در واقع از آرایش سینگل رنک استفاده میکنید. استفاده از دوال رنک میتواند (در این مورد یعنی دو ماژول برای هر کانال)، عملکرد حافظه (پهنای باند) را مقداری بهبود میبخشد. بالاتر اشاره کردیم که پهنای باند واقعی حافظه هیچگاه 100 درصد مقدار تئوری آن نیست. بنابراین استفاده از دوال رنک یا بالاتر میتواند عملکرد واقعی را به 100 درصد نزدیک کند. حالت ایدهآل مثلا برای آرایش 16 گیگاباتی DDR4-3200MHz، استفاده از 4 ماژول 4 گیگابایتی یکسان که هر ماژول شامل 8 چیپ حافظه 0.5 گیگابایتی است، می باشد.
کنترلر مموری IMC: چیپی است که تعیین میکند که دیتا چطور روی مموی نوشته یا خوانده شود و همچنین وظیفه فعال نگه داشتن مموری را بر عهده دارد.
حافظه پردازنده گرافیکی VRAM:
در بخش پیش در مورد بسیاری از مفاهیم مرتبط با حافظه پردازنده مرکزی صحبت کردیم. تقریبا تمامی آن مفاهیم در مورد حافظه پردازشگر گرافیکی هم برقرار است. اما پیش از آنکه در مورد حافظه گرافیکی بحث کنیم، لازم است که در مورد چرایی تفاوت این دو نوع حافظه مطالبی بیان نماییم.
تناسب بین قدرت پردازش و پهنای باند مموری: اگر ما پردازشگر را به عنوان مخزن آب در نظر بگیریم، برای انتقال این آب از مخزن به قسمتی دیگر نیاز به پمپ آب و کانال ارتباطی داریم. کانال را میتوان در حکم باس و پمپ در نقش سرعت کلاک میتواند تمثیل خوبی باشد. برای آنکه بتوان سریعتر این مخزن را خالی کرد (هرچه قدرت پردازشگر بیشتر شود به مانند این است که حجم مخزن بزرگتر شده است) باید پمپ قویتر و کانال پهنتری فراهم کرد.
از آنجایی که قدرت پردازشی گرافیکهای معمول بسیار بیشتر از CPUهای معمول است، نیاز به فراهم کردن آرایش حافظه پرسرعتتر نیازی ضروری است. در غیر اینصورت پهنای باند حافظه ایجاد گلوگاه سنگینی بر عملکرد پردازش گرافیکی خواهد گذاشت. از این رو سرعت حافظه و باس آن در گرافیک بسیار بیشتر از پردازنده مرکزی در نظر گرفته میشود.
استاندارد حافظه گرافیک (GDDR SDRAM): حرف G معادل Graphics و بقیه حروف درست مانند قبل میباشد. آخرین استاندارد حافظه از این نوع GDDR6X است. تفاوت عمده در حافظه گرافیکی و حافظه معمولی در سرعت بسیار بیشتر و خطوط آدرس دهی بیشتر نسبت به آن نوع است. در حالیکه نرخ تبادل اطلاعات در حافظه DDR4 در اروکلاکهای بسیار بالا هنوز به 5000MT/s نرسیده (سرعت معمول حدود 3000 میباشد)، در حافظههای گرافیکی GDDR6X این نرخ به 9750MT/s رسیده که با اورکلاک به حدود 11000 هم نزدیک میشود. بنابراین از این نظر، شتاب پیشرفت در حافظه گرافیکی بسیار سریعتر از حافظه معمول میباشد.
اما سرعت تبادل اطلاعات تنها مزیت حافظه گرافیکی نیست. هر چیپ حافظه گرافیکی چه در نسل حاضر چه در نسلهای گذشته را میتوان با خطوط 32 بیتی آدرس دهی کرد (در بالا اشاره شد که در حافظههای DDR4 معمولا هر چیپ با 8 بیت آدرس دهی میشود).
باس گرافیک: درست مانند CPU، پردازشگر گرافیکی هم پهنای مشخصی از حافظه را میتواند آدرس دهی کند. در سی پی یوهای رده مصرف کننده ما دو کانال 64 بیتی (یعنی باس مجموع 128 بیت) است. در حالیکه برای گرافیکهای میان رده به پایین در حال حاضر از باس 192 بیتی استفاده میشود. سابقه استفاده از باس 512 بیتی در گرافیکهای قدیمی AMD مانند R9 290X وجود دارد. در حال حاضر در رده مصرف کننده، پهن ترین باس مربوط به 3090 با 384 بیت است.
پهنای باند حافظه گرافیکی و مقایسه آن با حافظه اصلی: با سرعت موثر 14 تا 16Gbps برای GDDR6، با باس 192 بیتی، پهنای باند چنین حافظهای 384GB/s است. یعنی به طور متوسط 7 برابر بیشتر از حافظه 3200MT/s در آرایش دو کاناله که برای پردازنده مرکزی در اختیار قرار میگیرد. برای 3090، با GDDRX پهنای باند به رقم دیوانه وار 936 گیگابایت بر ثانیه میرسد.
حافظه HBM: در این نوع حافظه، باس حافظه رقم بسیار بالایی همچون تا بیش از 4000 بیت برای حافظه HBM2 است. بر خلاف GDDR، فرکانس موثر این نوع حافظه چندان بالا نیست که باعث میشود برای گرافیکی همچون vega 64 با باس 2048 بیتی، پهنای باند حافظه 483GB/s باشد. برای داشتن چنین باس پهنی، باید حافظه در فاصله بسیار نزدیک به پردازنده قرار بگیرد، برای همین است که ساختار چیپ گرافیکی با حافظه HBM بسیار متفاوت از حافظهGDDR است.
آیا میتوان برای هر گرافیکی از هر مقدار رم استفاده کرد؟
یکی از بحث برانگیز ترین سوالات کنونی این است که مثلا چرا انویدیا برای کارتی مانند 3080 از 10 گیگابایت رم استفاده کرده است. آیا نمیتوانست از 12، 14 و یا 16 گیگابایت استفاده کند؟
پاسخ به پرسشهایی از این دست را باید در طراحی چیپ گرافیکی و اینترفیس حافظه این چیپها جستجو کرد. اینترفیس حافظه برای 3080، برابر 320 بیت میباشد. از طرفی هر چیپ حافظه از نوع GDDR6 یا GDDR6X با پهنای استاندارد 32 بیتی ساخته میشود. بنابراین 3080 میتواند 10 چیپ را آدرس دهی بکند. در حال حاضر GDDR6X فقط توسط شرکت مایکرون با ظرفیت 1 گیگابایت ساخته میشود. بنابراین با اینترفیس کنونی معماری آمپر برای کارت گرافیک 3080، مقدار 10 یا 20 گیگابایت رم، تنها گزینه ممکن است. اگر انویدیا به مانند AMD از اینترفیس 256 بیتی برای حافظه در کارت گرافیک 3080 استفاده میکرد، امکان قرار دادن 8 یا 16 گیگابایت حافظه GDDR6X فراهم میشد. اما چنین اینترفیسی باعث کاهش شدید پهنای باند شده و در نتیجه در عملکرد پردازشی تاثیر نامطلوبی میگذارد.
پرسش اینجاست که راه حل AMD برای جبران چنین پهنای باند کمی در گرافیکی مانند 6900XT چیست؟ این شرکت از راه حل بسیار خلاقانه استفاده از کش بسیار بزرگتر داخل معماری گرافیکی بهره میبرد که از آن به عنوان Infinity Cache یاد میکند. 128 مگابایت کش بسیار سریع که چیزی مانند L3 کش برای CPU است، باعث میشود بخش بزرگی از کمبود پهنای باند حافظه در بسیاری از بارهای کاری از جمله گیمینگ جبران شود. اما در برخی پردازش ها مانند ماینینگ که نیاز به پهنای باند بالای حافظه دارند، این کش نمیتواند این کمبود را جبران کند که در نتیجه باعث عملکرد ضعیفتر معماری RDNA2 در ماینینگ یا حتی تولید محتوی است.
اهمیت ظرفیت حافظه:
با بالا رفتن جزییات بازیها، لود کردن تکسچرها در هنگام شروع بازی، افزایش رزولوشن، ویژگیهای همچون اضافه کردن رهگیری پرتو نور و …، نیاز به ظرفیت بیشتر حافظه گرافیکی چه در نسل حاضر چه در آینده بیش از پیش احساس میشود. بنابراین باید همیشه تناسبی بین میزان حافظه، قدرت پردازشگر گرافیکی و پهنای باند حافظه وجود داشته باشد. در حال حاضر، برای رزولوشن 2K، تعداد قابل توجهی عنوان بازی را میتوان یافت که به بیش از 6 گیگابایت رم در هنگام درجه تنظیمات گرافیکی بالا نیاز دارند. بنابراین در حال حاضر میان رده ترین کارتها هم از بیش از 6 گیگابایت رم استفاده میکنند.
در حالیکه قرار دادن میزان بالاتر از نیاز رم در کارت گرافیک مطلوب به نظر میرسد و شاید مصرف کننده را برای آینده کمیخاطر جمع میکند اما باید به موارد دیگری هم توجه داشت. در آینده، با بالا رفتن جزییات گرافیکی نیاز به پردازنده گرافیکی قدرتمند برای رسیدن به رزولوشن و فریم ریت مطلوب وجود خواهد داشت. به طوریکه کارتهای بالا رده حال حاضر تبدیل به میان ردههای آینده خواهند شد. اگر مصرف کننده برای مدت طولانی کارتهای نسل حاضر را استفاده کند، در آینده مجبور خواهد شد برای رسیدن به فریم ریت مطلوب، تنظیمات گرافیکی را در بازی کاهش دهد. در نتیجه میزان نیاز به مموری با کاهش تنظیمات گرافیکی کاهش خواهد یافت و شاید هیچگاه آن آیندههای که برای آن نگران کمبود ظرفیت حافظه بود فرا نرسد.
اهمیت پهنای باند حافظه
پهنای باند حافظه از دو جهت اهیمت دارد:
- ضرورت دارد که با افزایش قدرت گرافیکی این پهنا هم افزایش یابد تا ایجاد گلوگاه نکند
- هرچه پهنا بیشتر باشد میتواند سریعتر اطلاعات را تخلیه کند و برای اطلاعات جدید فضا ایجاد کند که در این مورد به خصوص میتواند حتی به کمبود ظرفیت رم هم کمک کند.
بنابراین بر خلاف ظرفیت رم که میتواند اصلا استفاده نشود که در نتیجه داشتن ظرفیت بیشتر، هیچ کمکی به عملکرد گرافیکی نمیکند، پهنای باند بالای حافظه به بالا بردن عملکرد گرافیکی کمک میکند.
استفاده یا تخصیص رم:
در بحث نرم افزار، یک نرم افزار برای اجرای خود میزان مشخص (البته این میزان به صورت داینامیک است یعنی در مراحل مختلف برنامه این میزان تغییر میکند) از سیستم عامل درخواست رم میکند. سیستم عامل هم با توجه به موجودی حافظه، آن مقدار را برای نرم افزار مربوطه تخصیص میدهد. اما در بسیاری از موارد این مقدار تخصیصی در عمل مورد استفاده قرار نمیگیرد که یکی از عوامل مهم در این امر، بالا بودن پهنای باند حافظه است که باعث جابجایی سریع اطلاعات و تخلیه حافظه میشود. درست مانند پروژهای عمرانی که برای تکمیل آن از دولت بودجه میخواهند و دولت به آن پروژه بودجهای را تخصیص میدهد اما در انتها میزان واقعی پرداختی کمتر از مقدار اولیه تخصیصی است. نرم افزارهای مانیتورینگ سخت افزار، میزان تخصیصی رم را نشان میدهند. بنابراین نمیتوان به طور دقیق معین کرد که چه میزان حافظه به مصرف رسیده است.
امیدواریم این مطلب توانسته باشد به برخی از نکات و پرسشهای مد نظر شما پاسخ دهد.
* این مقاله توسط نویسنده افتخاری وبسایت مجله سخت افزار، آقا فرزاد عزیز نوشته شده است. خوشحال خواهیم شد نظرات شما خوانندگان گرامی را در خصوص حافظه در بخش کامنت ها داشته باشیم.
* پانویس:
در پاسخ به امین:
من واقعا دیگه نمیدونم چی باید گفت.
شما از کانال حرف نزنید نمیتونید بگید رنک رو برای چی دارید تعریف میکنید. من الان بیام چهار تا چیپ مموری بردارم و براشون یه مداری درست کنم بعد بهش بگم یه رنک رم الان در اختیار دارم دیگه! خب پرسش میشه این رمی که من درست کردم رنک برای چه استانداری هست؟ خب نمیشه که اینجوری یه تعریف کلی از رنک داد. اگر هم بشه تعریفی ناقص هست.
قطعا رنک به کانال مموری ارتباط داره و منظور از کانال هم باس هست. شما یه ماژول مموری داشته باشید که 64 بیت باس رو پر نکنه دیگه نمیتونید اونو بگید یه رنک رم هست.
پاسخ به پرسش شما بله هست. triple rank هم میتونه وجود داشته باشه. منتهی شما بگرد چنین آرایشی رو میتونی تو بازار پیدا کنی که 1 ماژول دوال رنک رو با یه ماژول سینگل رنک، با ظرفیت، فرکانس و زمان پاسخ دهی یکسان باشه. پیدا کن و استفاده کن اونوقت شما تریپل رنک داری.
شما اصلا بگرد پیدا کن میتونی رم دسکتاپ که هر چیپش با 16 بیت آدرس دهی میشه. رم های موجود در بازار اکثریت مطلق متشکل از چیپ های 8 بیتی و بخشی هم 4 بیتی هستند.
شما اولش فکر کردی ما داریم رنک رو به چندکاناله بودن رم ارتباط میدیم. بعدش که توضیح دادیم و شما هم ظاهرا متوجه شدی که هیچ کجای متن چنین چیزی ذکر نشده حالا الا و بلا گیر دادی که رنک رو چرا به کانال ارتباط میدیم.
ما اول بخش رنک یه تعریف ساده ارایه کردیم: ” گروهی از چیپهای مموری که بر روی یه ماژول قرار میگیرند را میگویند.” اینجا که به کانال ارتباط ندادیم؟!
این تعریف ساده خیلی واضح نیست. سوال میشه آیا هر گروهی بیاد رو ماژول بشینه رنک بگیم بهش!
برای واضح شدنش باید تعریف رو گسترش داد حتما مثال زد که ما اینکارو کردیم
https://www.crucial.com/support/articles-faq-memory/what-is-a-memory-rank#:~:text=A%20memory%20rank%20is%20a,data%20block%2072%20bits%20wide.
البته شما بسیار زیرکانه اومدی بخش اول تعریف رو گذاشتی و بخش بعدی رو حذف کردی:
A memory rank is a block or area of data that is created using some, or all, of the memory chips on a module. A rank is a data block that is 64 bits wide.
این منبعی که شما هم ذکر کردی ازش (البته ناقص) هم نمیتونه رنک رو از باس جدا کنه چون بی معنی میشه.
میگه یک بلوک رنک دارای 64 بیت پهنا هست. چرا میگه میگه 64 بیت؟ چرا نمیگه 60 بیت؟ 64 بیت از کجا میاد؟ آیا 64 بیت همون باس کانال رم نیست؟
*********************************
رنک رو از کانال جدا کنی بی معنی میشه
*********************************
متاسفانه بنده احساس میکنم شما با غرض خاصی به یک مساله ای گیر دادین که ایرادی نداره و فقط سعی دارید به موضع خودتون تاکید داری.
بنده دیگه پاسخی بیش از این ندارم.
از نظر شما مفهوم rank وابسته به کانال هست (“رنک رو از کانال جدا کنی بی معنی میشه”) ولی از نظر crucial (ساب برند micron ) اینطور نیست
خوشحالم به طور تخصصی کار شده روی این مقاله و وقت گذاشته شده .
عالی آقا فرزاد گل 💙🌹
ممنون از مطلب جامع و کامل.
ممنونم فرزام عزیز
مطلب مفید و جامعی بود. تشکر
🌹
چیزی که در مورد rank نوشتید اشتباهه و rank مربوط به چیدمان و ساختار داخلی رم هست و هیچ ارتباطی به دو یا چند کاناله بودن نداره. بهتره در تهیه چنین مطالبی دقت بیشتری انجام بشه تا اطلاعات درستی به مخاطب منتقل بشه.
در رمهای DDR یک باس 64 بیتی معمولا از 8 باس 8 بیتی تشکیل شده.
اگر یک ماژول رم از 8 چیپ تشکیل شده باشه هر چیپ بطور اختصاصی از یک باس 8 بیتی استفاده میکنه. به این ماژولها در اصطلاح single rank گفته میشه.
اما اگر از 16 (2×8 یعنی dual rank) یا 32 (4×8 یعنی quad rank) عدد چیپ تشکیل شده باشه هر 2 یا 4 چیپ بطور مشترک از یک باس 8 بیتی استفاده میکنه و در هر لحظه هم فقط یکی از اون چیپ ها میتونه روی باس اشتراکی فعال باشه.
هیچ کجای مطلب نگفته Rank با چند کاناله بودن رم مرتبطه.
دقیقا بخش قبل از توضیح رنک، به موضوع آرایش چند کاناله بودن پرداخته شده. و سپس در مورد موضوع رنک توضیح داده شده.
مورد اول : “رنک را باید برای هر کانال رم به طور مجزا در نظر گرفت (رنک بر کانال)”
کانال رم کلا مفهومی جدا از rank هست.
ranks per channel یا (رنک بر کانال) مفهومی نداره
مورد دوم : “استفاده از دوال رنک میتواند (در این مورد یعنی دو ماژول برای هر کانال)، عملکرد حافظه (پهنای باند) را مقداری بهبود میبخشد”
دو ماژول رم میتونه برای هر کانال استفاده بشه و این ربطی به دوال رنک یا سینگل رنک بودن ماژول رم نداره.
مورد سوم : “اگر شما یک عدد از این ماژولها استفاده کنید، در واقع از آرایش سینگل رنک استفاده میکنید”
اینکه از چه تعداد ماژول رم استفاده بشه ارتباطی با rank نداره.
اگر ممکنه منبع خودتون رو اعلام کنید تا صحت مطلب روشن بشه
دوست عزیز شما صرفا دچار اشتباه در برداشت مطلب شدید که البته ریشه در تعریف شما از کانال رم داره
وقتی صحبت از کانال مموری میشه یعنی ما در مورد باس مموری صحبت میکنیم. دوباره وقتی صحبت از رنک میشه ما نگاه میکنیم ببینیم تو این کانال (یعنی باس) چه رنک مموری میتونیم داشته باشیم. رنک مفهومش با کانال آمیخته شده. تو این مطلب نگاه کنید هم بلافاصله بعد از استفاده از عبارت رنک از کانال استفاده میکنه:
This is where multiple ranks come into play, because while the CPU only has one 64-bit connector per channel, on the memory side we can install multiple of these 64-bit connectors in the form of ranks
https://www.igorslab.de/en/performance-secret-tip-for-gamers-memory-ranks-in-theory-and-practice-with-cyberpunk-2077/
رنک یعنی یه گروه از چیپ های مموری که کل باس یعنی کانال رو اشغال میکنند. بنابراین رنک بر کانال ترکیب با معنی هست.
رنک مموری ارتباطی یه دوال یا سینگل بودن آرایش مموری نداره و هیچ کجای مطلب هم چنین چیزی ذکر نشده. من نمیدونم شما رو چه حسابی میخوایید این رو به مطلب ربط بدید.
مورد دوم وسوم شما به خاطر اینکه ما در این مطلب سعی کردیم مثالی بزنیم که در عمل اکثر رم های تولید شده به این شکل تولید میشن که یک ماژول رم کل 64 بیت رو پر میکنه. بنابراین برای دست یافتن به رنک بالاتر باید از بیش از یک ماژول برای هر کانال مموری استفاده کرد.
اگه یه استیک مموری بیاد در دو گروه 4 تایی که هر کدوم از اون تک چیپها با 16 بیت آدرس دهی بشن، استفاده کنه یعنی شما دوال رنک 64 بیتی رو تو یه ماژول رم دارید.
شما تو هر کانال یه دونه از این ماژول ها استفاده کنید یعنی تو اون کانال آرایش دوال رنک دارید. امیدوارم دوباره به تعداد رنک به ازای هر کانال گیر ندین.
حالا شما اگه 2 تا از این ماژولها تو هر کانال استفاده کنید یعنی آرایش کواد رنک برای اون کانال استفاده کردید.
A memory rank is a block or area of data that is created using some, or all, of the memory chips on a module
همینطور که ملاحظه میکنید rank یک تعریف مشخص و ساده ای داره و ارتباطی هم با کانال نداره ولی شما قبل از اینکه اصل تعریف رنک رو ارائه بدید، اصرار دارید این تعریف رو با چیدمان ماژولهای رم در یک کانال منفرد، مفهوم سازی و بعد هم ارتباط بدید!!
طبق گفته شما استفاده از دو ماژول سینگل رنک در یک کانال منفرد، مثل استفاده از یک ماژول دوال رنک هست. ممکنه مشابهت هایی باشه، ولی اگر مثلا در یک کانال منفرد از یک ماژول دوال رنک و یک سینگل رنک استفاده بشه باید گفت در مجموع میشه triple rank !! در صورتی که اصلا در مورد ماژول رم triple rank تعریفی نداره
آقای امین
پردازنده تا باس 64 بیتُ ساپورت می کنه و مثله گرافیک نیست و هسته های پردازنده بزرگن یعنی حجم بیشتری از اطلاعاتُ یکجا پردازش می کنن
پس یک رم دو ماژول 64 بیتی تا گذاشتن دو رم تک ماژول 64 بیتی جفتشون یکین فقط باس تک ماژول بیشتر هست اما پردازنده نهایت 64 بیت باسُ ساپورت می کنه اما با این حال بخاطر باس بیشتر هر رم سرعت یمقدار بیشتر میشه که خیلی زیاد نیست مثلا نهایت بشه 6 یا 7 فریم بیشتر گرفت توی بازی که البته همین برای بعضی ها مهمه
واسه همین تریپلُ اینجور چیزا نداریم
اما پردازنده گرافیکی تا 512 بیتُ هم ساپورت می کنه و هسته های زیاد اما کوچیکی داره چون قرار نیست مثله پردازنده پردازش های حجیم انجام بده و خیلی با حافظه در ارتباط هست واسه همین حتی مموریش هم نیاز به فن و خنک سازی داره و سرعت مموریش خیلی بیشتر از مموری پردازنده هست
آقا فرزاد اگه در آینده هم مقاله تهیه می کنید اتفاقا هرچی تخصصی تر بهتر چون میشه چیزای بیشتری یاد گرفت
ممنون از حسن نظر شما. فکر کنم ما هم سعی کردیم مفهوم رنک رو از مفهوم کانال جدا کنیم.
“گروهی از چیپهای مموری که بر روی یه ماژول قرار میگیرند را میگویند. رنک را باید برای هر کانال رم به طور مجزا در نظر گرفت (رنک بر کانال)”.
در ادامه هم گفته شده وقتی شما تو یه کانال رم از ماژول دوتایی استفاده میکنید باعث میشه عملا دو دسته رم تو همون کانال داشته باشید. یعنی دوال رنک تو همون کانال.
میشه حالت دوال رنک رو حتی رو یه تک ماژول هم پیاده کرد و نیازی نیست حتما دوال رنک نیازمند دوال ماژول باشه. ولی عرف مرسوم ساخت مموری طوری هست که یک استیک رم آرایش 8 تا چیپ 8 بیتی داره که در واقع کل 64 بیت رو پر میکنه که یعنی اگه تو هر کانال یه دونه از این استیکها استفاده بشه عملا سینگل رنک رو خواهیم داشت و برای همین در اکثر موارد اگه شخص به جای دوال ماژول برای دوکانال از کواد ماژول استفاده کنه میشه رم دوکاناله دوال رنک 🙂
کانال هم یعنی باس. بنابراین من تعارضی با توضیحات شما نسبت به متن نمیبینم.
مطلب عالی بود معلومه زحمت زیادی برای این مقاله کشیده شده چون سطح علمیش بالا بود
و اما نتیجه این شد هیچ فرقی نداره چه حافظه 1 گیگ باشه چه 100 گیگ چیزی که مهمه باس فرکانس و تعداد چیپ ها هستند
خوده حافظه یک واحد پردازشی دارن مثله پردازنده که دارای گیت های منطقی و از اینجور چیزاست که اطلاعات به چه شکل توی حافظه ذخیره بشه
شرکت ها می تونن حافظه های گرافیکُ تا 20 گیگ بالا ببرن یا بیشتر که البته کارت گرافیک واقعا نیاز به حافظه ی بالا نداره توی گرافیک بیشتر سرعت مهم است چون توی گرافیک فقط تکسچرها و یه سری چیزهای دیگه مانند این لود میشن که این اطلاعات به محض لودینگ کامل از حافظه ی رم پردازنده خارج میشن درواقع مستقیم از رم به پردازنده و حافظه ی کارت گرافیک لود میشن
چیزی که باید زیاد بشه حافظه ی رم پردازنده هست یعنی استفاده حافظه های 512گیگابایتی مثله همین سامسونگ برای گیم
اینجوری یک بازی ای که 100 گیگ حجمش هست کاملا می تونه روی رم بارگذاری بشه و دیگه خبری از لودینگ نباشه
بازی بصورت ریلتایم لودینگ میشه
اگه سرعت حافظه های پردازنده هم با حافظه های گرافیک برابر بشه دیگه چه شود
چه خوب میشه کامپیوترهارو یکدست بسازن به اندازه کف دست همین ا لان هم میشه ولی یک شرکت که همه ی علوم و تکنولوژی هارو یکجا داشته باشه وجود نداره یعنی یک شرکت که خودش مادربرد بسازه رم بسازه پردازنده بسازه گرافیک بسازه
اینجوری با دوتا فن میشه سیستمُ خنک نگه داشت
خواهش میکنم
هدف این مطلب این نیست که چه کارهایی میشه انجام داد. چیزی که شما میگین رو میشه به بحث نشست و در مورد مزایا و امکانش صحبت کرد. اما هدف اینجا تشریح مفاهیم در حال حاضر هست.
ظرفیت رم بسته به اینکه نیاز چقدر باشه میتونه مفید باشه یا نباشه. اما شما الان هر گرافیکی بردارید و فرکانس حافظه رو اورکلاک کنید، میبینید چند فریمی به بازی اضافه میکنه. اما دوبرابر رم بردارید اضافه کنید به گرافیک هیچ اتفاقی نمیفته. ظرفیت رم تا زمانی که بهش نیاز پیدا نشه هیچ ارزشی به عملکرد اضافه نمیکنه.
در پیاده سازی نرم افزارهای حال حاضر مقدار رم برای رده مصرف کننده تناسب خوبی با نرم رم استفاده شده در سیستم ها داره.
یکی از هنرهای برنامه نویسی استفاده مفید از منابع سخت افزاری هست از جمله رم. برنامه نویس باید بتونه تا جای ممکن استفاده از این منابع رو بهینه کنه.
منم همینُ گفتم فقط نمی دونستم چه چیزهایی توی گرافیک لود میشه که حالا متوجه شدم
2 نوع بهینه سازی داریم یکیش اینه که چیزهای توی بازی به چه شکل پردازش بشن و دوم حذف خیلی از چیزهایی که خارج از دید هستن که من با اولی موافقم ولی دومی نه چون بیشتر تمرکز بازی سازان روی مورد دوم هست چون منابع سخت افزاری بیشتری نسبت به اولی اشغال می کنه و همین باعث میشه بهینه سازی خیلی از جاهای بازیُ بزنه خراب کنه برای دومی مثال رزیدنت اویل 2 رو میزنم که کاربرا با حالت noclip رفتن دیدن نمای داخل بدن هیولاهه حتی استخوان هم واسش ساختن یا زیر پوست ماهیچه
مورد اولی نمونش همین جی تی ای v همون که یه هکر باعث شد سریعتر لود بشه البته این برای بخش لودینگ هست اما مثلا بازی distance یک بازی کم حجم هست و زیاد هم گرافیک نمی خواد اما سنگین هست با چیت انجین رفتم توی memoryview دیدم واقعا کدهاش عجیب غریب اجرا میشن به سختی تونستم آدرس توربوشو بدست بیارم که یه چیز ساده هست
من اول فکردم این مقاله بصورت تیمی تهیه شده چون وقتی داشتم می خواندم دیدم سطح علمی مقاله بالاست و هم خیلی خوب نوشته شده رفتم ببینم کی نوشته که دیدم نوشته تیم سخت افزار
واقعا دمت گرم فرزاد جان خیلی وقت هست که یک مقاله با همچین سطح علمی توی سخت افزار گذاشته نشده و از این لحاظ هم که خوده طرف کامل نوشته باشه
این سایت فقط یک نویسنده درستُ حسابی میشناسم که علمُ دانش بالایی داره اونم ارمین ابیشی هست بقیه فقط بلدن ترجمه کنن کلا هرچی میبینن ترجمه می کنن
البته محمد کرماجانی هم هست که مقاله های درست حسابی ازشون دیدم
همین دو نفرن که واقعا میشه ازشون سوال های علمی پرسید البته در زمینه سخت افزار
کاربرایی هم خیلی وقت پیش ها می شناختم مثله شما سطح علمُ دانش بالایی داشتن که متأسفانه یمشت ترول مجازی از بس بهشون توهین کردن کاری کردن که دیگه کامنت نذارن
فکنم نظارت روی کامنت ها که بیشتر شد باعث شد تعداد ترول های مجازی هم کمتر بشه قبلا نظرات مستقیم ارسال میشد البته احتمال میدم بیشتر بخاطر سخت شدن شرایط زندگی توی ایران هست و دیگه حوصله ندارن بیان دمو دقیقه چرتُ پرت بنویسن
بهینه کردن کار دشواری هست اونم برای بازی که از نظر نرم افزاری پیچیدگی های زیادی داره.
خواهش میکنم. این مطلب حاصل اطلاعاتی بوده که تو ذهن داشتم و فقط برخی مواردی رو که میخواستم ازشون اطمینان پیدا کنم به منابع اینترنتی مراجعه کردم تا حد امکان دچار ایراد فنی نباشه.
استاد ابیشی هم زحمت کشیدن بازبینیش کردن و ریزکاریهای رو برطرف کردن و تصاویر رو اضافه کردن.
همون کار ترجمه هم کار راحتی نیس و بچه ها زحمت میکشند.
البته این مطلب هم جای بسط زیادی داره که البته باعث تخصصی تر شدن موضوع میشه و شاید این سایتها و مخاطبینش جامعه هدف مناسبی نباشه.
خوشحالم که مفید واقع شد. در اینده بازم در صورت فرصت در مورد مسایل دیگه هم مطلب اماده میکنم.
عاالی بود بازم این این مقاله ها بزارید خیلی ممنون .
در صورت فرصت حتما.
مطالب عالی و جالب بود
تقدیم به زحمتکشان سایت
https://uupload.ir/files/i58_untitled-1.png
عااالی بود خسته نباشید👍
خوشحالم که مفید واقع شده.
تشکر می کنم از آقا فرزاد و سایت مجله سخت افزار برای چنین مطلب آموزنده ای.
زنده باشی عزیز
مطلب بسیار کامل و جامع و عالی بود.
ممنون از فرزاد عزیز بابت مطلب بسیار عالی
ممنون محمد عزیز
البته ممنون از آرمین ابیشی گرامی که زحمت بازبینی، بررسی نگارشی و تصاویر بسیار زیبا و با محتوی رو انتخاب کردند.
خواهش میکنم آقا فرزاد عزیز، من خودم استفاده کردم و مطمئنم دوستان هم استفاده لازم را خواهند کرد. موفق باشی. 🙂