والا من از این چیزایی که میگین سر در نمیارم .. ولی مگه پهنای باند حافظه gddr5 تو ps4 بیشتر از ایکس باکس وان و حتی اون 32 مگ esram اش نیست؟! .. پس ps4 هم خیلی راحتتر و کم دردسرتر از پس این تکنیک قطعه قطعه کردن بافتهای حجیم برمیاد!! اینطور نیست؟!
من اصلا کاری به بحث PS4 میتونه یا نمیتونه ندارم PS4 کنسول فوق العاده قدرتمندی هست ولی کلا یه چیزی رو خیلیا در مورد این حافظه ها در نظر نمیگیرن تو انتخاب رم دو تا بحث مطرح هست یکی پهنای باند که حاصل ضرب کلاک رم در بیت ریت رم هست یکی بحث تاخیر یا Latency جفتشون روی هم تو سرعت رم تاثیر دارن ولی بعضی وقتها مسئله مهم تاخیر هست بعضی وقتها پهنای باند.در این رابطه این یه مقاله قدیمی ولی خوبه:
Memory Bandwidth vs. Latency Timings
این هرم حافظه هست:
شکل شماتیکه ممکنه تو واقعیت حافظه های دیگه ای هم بین این حافظه ها قرار بگیرن.
(به جز L0 که رجیستر روی CPU هست ) , L1 , L2 حافظه های نهان یا کش هستن و تاخیر یا Latency نقش خیلی کیلیدی تو کارکردشون داره برای همین از نوع SRAM یا استاتیک هستن چون رمهای استاتیک رفرش نمیشن برعکس رمهای داینامیک یا DRAM که باید داده های روشون رفرش بشه این تایم رفرش برای مدت کوتاهی در حد چند نانو ثانیه اطلاعات روی حافظه رو از دسترس خارج میکنه برای همین تو کشه ها معمولا از DRAM استفاده نمیکنن مگر تو پردازنده هایی که کاراییشون محدود هست و قیمت پایینی دارن چون SRAM ها قیمت ساخت پردازنده رو بالا میبرن.
L3,L4,L5 حافظه هایی هستن که برای ذخیره سازی استفاده میشن البته L3 یا همون رم سیستم تقریبا این وسط قرار میگیره و باید نقش دوگانه رو بازی کنه هم به حد کفایت سریع باشه هم ظرفیت بالایی داشته باشه.
الان مقایسه eSRAM با RAM روی سیستم کار اشتباهی هست eSRAM نقش یه کش رو داره بازی میکنه و باعث میشه احتیاج CPU یا GPU به constantly access یا دسترسی دائمی به حافظه سیستم کاهش پیدا کنه...
از اون طرف مقدار این حافظه بالاتر از مقدار متعارف اغلب کچه ها هست برای همین میشه بعضی تکنیکهارو باهاش راحت تر پیاده کرد.
دلیل اینکه میگن این eSRAM به صورت تئوریک میتونه ضعف پهنای باند XO رو جبران کنه برای همینه چون تقاضای GPU رو برای دسترسی دائم به رم کاهش میده در عین حال به موازات حافظه اصلی داده ها داخلش جریان پیدا میکنه.
از اون طرف یک مسئله ای هست که بعضی دوستان در نظر نمیگیرن یا شاید نمیدونن اصل قضیه به این شکلی که من توضیح میدم نیست ولی برای فهم راحت ایجاد نشدن پیچیدگی به این شکل عنوانش میکنم:
مثلا پردازش یه داده 512 مگابایتی روی رم به صورت یکباره توسط CPU انجام نمیشه داده ها اول روی هارد دیسک یا DVD یا ... قرار دارن بعد میان روی رم و بعد در موقع مقتضی پردازش روشون صورت میگیره ...
اگر فرضا کش یه CPU حدودا 32 کیلوبایت باشه (مقایسه کنید 512 مگابایت یا 524,288 کیلوبایت رو با 32 کیلوبایت ) این اطلاعات باید :
524,288 / 32 = 16,384
به 16,384 بلوک 32 کیلوبایتی تبدیل بشه و به نوبت توسط CPU پردازش بشه به بیان دیگه این اطلاعات باید 16,384 بار به کش CPU انتقال پیدا کنه تا پردازش بشه و بعد نتیجه دوباره روی حافظه اصلی ذخیره بشه البته برای CPU ای که فرضا با کلاک 800 مگاهرتز یا 800,000,000 در ثانیه کار میکنه این پردازش مدت خیلی کمی رو شامل میشه.
حالا CPU ای که حافظه نهان یا کش بیشتری داره مثلا 64 کیلوبایت تعداد دفعات مراجعه به حافظه از 16,384 دفعه به 8,192 دفعه کاهش پیدا میکنه این یعنی اینکه بحث محدودیت پهنای باند رو میشه با یه حافظه نهان تا حدودی کاهش داد.
البته این مسئله تئوریک هست و فقط یه جنبه قضیه هست تو واقعیت پیچیدگی فوق العاده بیشتری وجود داره خیلی راه حلها و الگوریتمها مثل بافر کردن و ... برای کم کردن تاخیر وجود داره و مسائل بیشتری مطرح هستن مخصوصا که نیاز GPU به خاطر SIMT بودن یا پردازشهای موازی زیاد با CPU متفاوته و فقط نمیشه با اضافه کردن مقدار کش توقع بالا رفتن راندمان رو داشت ولی تو پردازنده هایی که معماری یکسانی دارن معمولا مدلهای Higher end ـتر که قیمت بالاتری دارن کش بیشتری هم دارن و تو تستها نتیجه بهتری هم میگیرن.
یه مقاله نسبتا کامل در رابطه با نقش تاخیر در عملکرد GPU:
http://www.sisoftware.net/?d=qa&f=gpu_mem_latency