ناوتي داگ از سخت افزار PS4 ميگويد

benjohn

کاربر سایت
Jun 19, 2012
5,994
نام
ehsan
مسلما ناوتي داگ يكي از نام آشنا ترين استوديوهاي بازي سازي در عصر معاصر است. هميشه توانايي آنان در ساخت بازي و خلق تجربيات بي نظير مثال زدني بوده است. اما علاوه بر اين بدون شك توانايي فني اين استوديو نيز بسيار مورد توجه بوده است. با در نظر گرفتن تمامي اين موارد اطلاع از نظرات ايشان در رابطه با سخت افزار جديد سوني خالي از لطف نيست

در طول نمايشگاه Semana Informática در ليسبون پرتغال جناب آقاي جيسون گرگوري برنامه نويس ارشد ناوتي داگ به تشريح سخت افزار PS4 پرداخت و همچنين توضيح داد كه چگونه ناوتي داگ تلاش ميكند تا با بهينه سازي اين منابع دست به توليد اثري شگفت انگيز بزند.

در ايتدا 8 گيگابايت رم PS4 بسيار زياد بنظر ميرسد ولي به عقيده ايشان در حال حاضر فقط 5 گيگ براي بازيها درنظر گرفته شده و آن نيز بسرعت پر ميشود.


Even in the PlayStation 4 you have 5 gigs, which seems like a lot but you’ll be amazed by how quickly it fills up.

به همين منظور ناوتي داگ در مصرف رم و همينطور تخصيص منابع بسيار محتاط است.

يكي از بزرگترين دشمنان ما در هم گسيختگي اطلاعات بر روي رم (Fragmentation) است. به اين علت كه اين مسئله باعث ميشود رم زودتر از حالت معمول پر شود. ناوتي داگ اين مشكل را با تخصيص دهندگان اختصاصي منابع custom-tailoring memory allocators مرتفع مي كند.

به علاوه استوديو از نقشه هاي انحصاري تخصيص منابع در انجين خود استفاده مي كنند. بدين معني كه در هر لحظه دقيقا مشخص است كه در كجا رم مورد استفاده قرار مي گيرد و خود رم استفاده شده چه نوع حافظه ايست.

اين مسئله بسيار مهمي است چرا كه بسياري از Dev-kit ها كه شامل PS3 هم ميشود معمولا ببه منظور Debugging از دوبرابر رم بهره ميبرند. اين بدن معناست كه بازيها نبايد از آن رم استفاده كنند.

او همچنين در مورد ساختار چند هسته اي PS4 توضيحاتي ميدهد.


خوب ما با 8 هسته مواجه هستيم كه هر كدام از پردازنده ي PS3 قدرتمند تر هستند. اين هشت هسته در دو خوشه طبقه بندي شده اند.

گرگوري ميگويد كه پردازنده اصلي PS4 بيشتر از ميزاني قدرت دارد كه براي رندر بازي ها در 1080p و 60 فريم مورد نياز است. طراحان PS4 قصد داشتند كه قدرت اضافه اي را براي GPU در نظر بگيرند كه قدرت بسيار بالايي براي پردازش هاي موازي بوجود مي آورد . اين خود به توسعه دهندگان امكان ميدهد كه فيزيك شبيه سازي لباس و مايعات و غيره را در GPU بهبود ببخشند.

ICE Team براي PS3 سيستمي را توسعه داده بود به نام Job System تا بتوانند از معماري چند هسته اي آن بهر بگيرند كه سيستم مشابهي نيز براي PS4 طراحي شده است.



NDPS4_2-571x425.jpg



البته تنها 6 هسته براي استفاده در بازيها مهياست. 2 هسته ديگر توسط سيستم عامل استفاده ميشوند. Job Systam همچنين از 6 هسته ي GPU بهر ميگيرد. هسته ها به اين صورت كار ميكنند كه يك هسته وظيفه پردازش لوپ اصلي را بعهده ميگيرد و 5 تاي باقي مانده باقي پردازش ها را بين خود به اشتراك ميگذارند.


NDPS4_3-567x425.jpg



از سوي ديگر GPU مسئول رندر و پردازش GPGPU است. كه اصولا شامل پردازش فيزيك لباس و ..... است كه قبلا اشاره شد.

مفهوم بسيار مهمي ديگري كه مطرح است بهينه سازي است. قانوني وجود دارد كه 80 به 20 نام دارد طبق اين قانون نرم افزار 80 درصد وقت خود را صرف پردازش 20 در صد اطلاعات شما ميكند.

زماني كه نرم افزار را بهينه ميكنيد وقت خودتان را صرف آن 80 درصد نميكنيد چرا كه اطلاف وقت است. اما ناوتي داگ تمركز بسيار ويژه اي بر روي آن 20 درصد دارد. اين مسئله باعث ميشود كه گرافيك بازي ها بتدريج پيشرفت كنند.

شناخت سخت افزار هم بسيار اهميت دارد. بعضي از بهينه سازي ها مختص سخت افزار خاصي است. كه اين خود شناخت عميق شما را از سخت افزار طلب ميكند.




NDPS4_4-565x425.jpg




كشينگ حافظه بخش بزرگي از بهينه سازي است. سخت افزار هاي امروزي زمان زيادي را صرف دستيابي اطلاعات از حافظه ميكنند كه مسلما حجم زيادي دارد. در درجه دوم حاظه كش بسيار كوچكتري وجود دارد كه بنام L2 شناخته ميشود. و سپس L1 كه بسيار سريعتر است. و درنهايت حافظه Reg بر روي چيپ اصلي كه بسيار بسيار كوچك است.



NDPS4_5-565x425.jpg




كوچك نگاه داشتن اطلاعاتي كه نياز به سرعت بالا دارند از اين حيث بسيار پر اهميت است. چرا كه بايد بر روي كش جا شوند. دستيابي به حافظه كش بسيار سريع است. كوچك نمودن اين حافظه بسيار سودمند تر بنظر مي رسد.

PS4 همانطور كه اشاره شد داراي هشت هسته است كه در دو خوشه طبقه بندي شده اند. كش L2 به دو بخش تقسيم شده كه هر كدام به يكي از اين خوشه ها اختصاص مي يابد. ارتباط بين خوشه ها و كش هايشان 26 چرخه به طول مي انجامد.
ارتباط بين يك خوشه و كش خوشه ديگر بسيار كندتر و حدود 190 چرخه مدت نياز خواهد داشت.



NDPS4_7-568x425.jpg


NDPS4_8-571x425.jpg



اين اطلاعات به استوديو كمك ميكند كه اطلاعات هر خوشه را در كش خود آن خوشه بكار گيرند تا از اطلاف زمان خلوگيري شود.

در پايان نكته بسيار جالب اين است كه اين خصوصيت بسيار بروي PS3 مشكل آفرين بوده است چرا كه PS3 در بكار گيري اطلاعات كش ها براي خوشه خودشان بسيار ضعيف عمل ميكرده است.

اما از آن سو PS4 در حدس زدن ارتباط كش و خوشه بسيار بسيار بسيار خوب عمل ميكند. اين مسئله باعث ميشود كه كار زيادي از دوش CPU برداشته شود و نتيجه كار بسيار بهبود پيدا كند.

شنيدن تمام اينها از زبان گرگوري فقط يك نتيجه دارد و آن هم اينكه ما را براي ديدن اولين بازي ناوتي داگ بر روي PS4 از خود بي خود ميكند. مشكل اينجاست كه تا ديدن نتيجه كار اين استوديو ي ديوانه تكنولوژي من و جيبم بايد كمي صبر كنيم.


منبع

آپدیت:

همانطور که اطلاع دارید ICE Team یکی از زیر مجموعه های ناوتی داگ است که به امر توسعه زیر ساختهای نرم افزاری و تکنولوژی های مرتبط با آن برای استفاده FP های سونی در ساخت بازی برای پلتفورمهای پلی استیشن است. اما دقیقا الان IT در حال انجام چه کاری است.

در حال حاضر ICE Team در حال توسعه ی نرم افزاری است که پرفورمنس GPU ی PS4 را اندازه گیری میکند این امر برای دیباگینگ نرم افزاری مورد نیاز است.

Razor.jpg



در حال حاضر این تیم در حال تلاش است تا بتوانند از آخرین قطره های قدرت PS4 بصورت مطلوبی بهره ببرند. با استفاده از نرم افزار Razor Profiler توسعه دهندگان میتوانند در یابند که چه عملی بیشترین بسامد و تکرار را در پروسه پردازش به خود اختصاص میدهد. این نرم افزار آنان را قادر میسازد که بصورت بصری ببینند که در هر لحظه چه عملی بر روی CPU و GPU پردازش میشود. به اعمالی که بیشترین بسامد را داشته باشند به اختصار HOT Function گفته میشود. توسعه دهندگان بدین وسیله متوجه میزان زمان مورد نیاز برای هر دستور العمل میشوند. این خود به بهینه سازی نرم افزاری کمک میکند. به یاد داشته باشیم بهینه سازی در حد چند میکروثانیه میتواند تفاوت 30 فریم ویا 60 فریم ایجاد کند.

dead-stripping.jpg


بعلاوه این نرم افزار میتواند برای حذف داده های مرده نیز بکار آید. بعد از اینکه دستورالعملها اجرا شدند. معمولا بخشی از حافظه و قدرت پردازشی را اشغال میکنند. با استفاده از این نرم افزار میتوان این داده های به اصطلاح مرده را حذف کرد.

منبع
 
آخرین ویرایش:

Paranormal

کاربر سایت
Jan 9, 2010
936
نام
علی
نه خیر تکنولوژی جدیدی نیست از خیلی وقت پیش هم وجود داشته منتها بحث میزان این عمله. اونجور که من متوجه شدم با این دست آورد جدید به میزان زیادی میشه از دست dd رها شد. باید در عمل دید. البته تا الان که ناوتی خیلی طوفانی نسل رو شروع کرده. رسما هنوز هم خیلیا باورشون نشده که نمایش uc ریل تایم بوده 60 فریم بودنش بماند

منظور شمارو از تکنولوژی متوجه نشدم. اما به نظر خودم منظورش چیزی بیشتر از Garbage Collection نیست. در اصطلاحات کامپیوتری و به خصوص برنامه نویسی به اطلاعات بلااستفاده ای که بعد از استفاده توی رم بمونن در حالی که باید حذف بشن رو Garbage میگن و به مکانیزمی که رم رو از چنین داده های بی استفاده ای پاک میکنه Garbage Collector.
تکنولوژی شاید نشه اسمشو گذاشت. یک ویژگی برای زبان های برنامه نویسی به شمار میاد. از اونجایی که پایه ی تمامی انجین ها به C و C++ برمیگرده, این زبان Garbage Collection رو به صورت یک feature درون خودش داره. هرچند استفادهدازش به صورت اتوماتیک نیست و Manualباید انجام بشه.
 

benjohn

کاربر سایت
Jun 19, 2012
5,994
نام
ehsan
منظور شمارو از تکنولوژی متوجه نشدم. اما به نظر خودم منظورش چیزی بیشتر از Garbage Collection نیست. در اصطلاحات کامپیوتری و به خصوص برنامه نویسی به اطلاعات بلااستفاده ای که بعد از استفاده توی رم بمونن در حالی که باید حذف بشن رو Garbage میگن و به مکانیزمی که رم رو از چنین داده های بی استفاده ای پاک میکنه Garbage Collector.
تکنولوژی شاید نشه اسمشو گذاشت. یک ویژگی برای زبان های برنامه نویسی به شمار میاد. از اونجایی که پایه ی تمامی انجین ها به C و C++ برمیگرده, این زبان Garbage Collection رو به صورت یک feature درون خودش داره. هرچند استفادهدازش به صورت اتوماتیک نیست و Manualباید انجام بشه.

خوب این چیزی که شما میفرمایید کاملا صحیح هست. اما بصورت عمومی برای تمامی نرم افزارها تعریف شدست. یعنی منظورم اینه شما نمیتونی تو هر سیکل پردازشی بصورت تخصصی بیای بگی مثلا این داده که حالا شما میگی Garbage ما میگیم Dead رو حذف کنه بلکه بصورت عمومی همیشه در حال انجامه حالا اتفاقی که افتاده این نرم افزار میتونه برای هر سیکل بصورت تخصصی اینکارو انجام بده یعنی پیش بینی بکنه که در لحظه X فلان داده بصورت مرده وجود داره وقتی شما میدونی دقیقا کجا داده های مرده بوجود میان میتونی با نوشتن یه الگوریتم خاص همه رو از بین ببری. نمیدونم تا چه حد واضح توضیح دادم. اگر درک من از این قضیه درست باشه کلا بهینه سازی بر اساس سخت افزار به یه لول خیلی جدید میرسه. تصورش هم خیلی مشکله.

متاسفانه درک این مسائل حتی برای اهل فن هم کمی مشکله چه برسه به امثال من. ولی تصور من اینه که پشت تمام این الفاظ یه اتفاق خیلی گنده داره می افته که خیلی تاثیر گذاره

همین الان ICE Team داره روی یه AA کاملا اختصاصی برای PS4 کار میکنه که گویا بهترین نوع AA رو با بار پردازش بسیار پایین اجرا میکنه. یه نمونه خیلی کوچیکش تو بازی GT6 اجراشد که تونستن بدون هیچگونه کاهش پرفورمنس رزولوشن رو از 1080*1200 به 1080*1400 برسونن یعنی افزایش 12 در صدی بدون کاهش پرفورمنس که خودش خیلی جالبه چون PS3 قابلیت اجرای کاملش رو نداشته
 

Paranormal

کاربر سایت
Jan 9, 2010
936
نام
علی
خوب این چیزی که شما میفرمایید کاملا صحیح هست. اما بصورت عمومی برای تمامی نرم افزارها تعریف شدست. یعنی منظورم اینه شما نمیتونی تو هر سیکل پردازشی بصورت تخصصی بیای بگی مثلا این داده که حالا شما میگی Garbage ما میگیم Dead رو حذف کنه بلکه بصورت عمومی همیشه در حال انجامه حالا اتفاقی که افتاده این نرم افزار میتونه برای هر سیکل بصورت تخصصی اینکارو انجام بده یعنی پیش بینی بکنه که در لحظه X فلان داده بصورت مرده وجود داره وقتی شما میدونی دقیقا کجا داده های مرده بوجود میان میتونی با نوشتن یه الگوریتم خاص همه رو از بین ببری. نمیدونم تا چه حد واضح توضیح دادم. اگر درک من از این قضیه درست باشه کلا بهینه سازی بر اساس سخت افزار به یه لول خیلی جدید میرسه. تصورش هم خیلی مشکله.

متاسفانه درک این مسائل حتی برای اهل فن هم کمی مشکله چه برسه به امثال من. ولی تصور من اینه که پشت تمام این الفاظ یه اتفاق خیلی گنده داره می افته که خیلی تاثیر گذاره

همین الان ICE Team داره روی یه AA کاملا اختصاصی برای PS4 کار میکنه که گویا بهترین نوع AA رو با بار پردازش بسیار پایین اجرا میکنه. یه نمونه خیلی کوچیکش تو بازی GT6 اجراشد که تونستن بدون هیچگونه کاهش پرفورمنس رزولوشن رو از 1080*1200 به 1080*1400 برسونن یعنی افزایش 12 در صدی بدون کاهش پرفورمنس که خودش خیلی جالبه چون PS3 قابلیت اجرای کاملش رو نداشته

من در ادامه ی صحبت شما کامل کنم که Garbage Collection دقیقا به همون دقتی هست که شما فرمودید و کاملا در لحظه متوجه میشه که چه داده ای بلااستفادست و باید حذف بشه. چرخ رو دوباره اختراع نمیکنه ND. چون قدرت, سرعت و دقت زبان Cبر هیچ کسی پوشیده نیست. اما مساله ای که اینجاست Customize. کردن این Garbage Collector هست. به عنوان مثال یک واحد یک بایتی از رم ممکنه به تنهایی بعدداز مصرف بلااستفاده باشه و توسط GC سریعا حذف میشه. اما همین یک بایت اگر در قالب ساختار یا کلاس تعریف شده باشه و خود کلاس همچنان مورد استفاده در رم باشه حذف نمیشه.
مسلما اشیایی که از کلاس های انجین ساخته میشن بسیار پیچیده هستن و به لطف استفاده ی Manualاز GC در زبان هایی مثل C,C++به نظر میرسه ND برای بهینه سازی بیشتر مدیریت رم رو خودش انجام میده. منظور من از اشیا Object های مبحث OOP برنامه نویسی هستن. اشیا قابل مشاهده در بازی منظورم نیست.
البته اینکار رو خیلی از بازیسازها انجام میدن. تفاوت بازیسازهای حرفه ای و غیرحرفه ای همین جاها مشخص میشه.
 
آخرین ویرایش:

mohsen_mzh

کاربر سایت
Jun 15, 2008
862
نام
محسن
من در ادامه ی صحبت شما کامل کنم که Garbage Collection دقیقا به همون دقتی هست که شما فرمودید و کاملا در لحظه متوجه میشه که چه داده ای بلااستفادست و باید حذف بشه. چرخ رو دوباره اختراع نمیکنه ND. چون قدرت, سرعت و دقت زبان Cبر هیچ کسی پوشیده نیست. اما مساله ای که اینجاست Customize. کردن این Garbage Collector هست. به عنوان مثال یک واحد یک بایتی از رم ممکنه به تنهایی بعدداز مصرف بلااستفاده باشه و توسط GC سریعا حذف میشه. اما همین یک بایت اگر در قالب ساختار یا کلاس تعریف شده باشه و خود کلاس همچنان مورد استفاده در رم باشه حذف نمیشه.
مسلما اشیایی که از کلاس های انجین ساخته میشن بسیار پیچیده هستن و به لطف استفاده ی Manualاز GC در زبان هایی مثل C,C++به نظر میرسه ND برای بهینه سازی بیشتر مدیریت رم رو خودش انجام میده. منظور من از اشیا Object های مبحث OOP برنامه نویسی هستن. اشیا قابل مشاهده در بازی منظورم نیست.
البته اینکار رو خیلی از بازیسازها انجام میدن. تفاوت بازیسازهای حرفه ای و غیرحرفه ای همین جاها مشخص میشه.
اگر قرار بود اینکه چه داده ای باید حذف بشه تماما به کامپایلر C سپرده بشه که کلاهشون پس معرکه بود. الگوریتم یکتایی برای این کار وجود نداره کلا و همه چیز بر اساس پیش بینی در آینده هست که به چه پروسه یا داده ای کمترین نیاز رو پیدا می کنیم.
و اینکه اصلا کامپایلر کاری به کار حافظه اصلی نداره که بخواد اون رو کنترل کنه! کامپایلر با تنها حافظه ای که درگیر هست حافظه رجیستر هست.
 

Paranormal

کاربر سایت
Jan 9, 2010
936
نام
علی
اگر قرار بود اینکه چه داده ای باید حذف بشه تماما به کامپایلر C سپرده بشه که کلاهشون پس معرکه بود. الگوریتم یکتایی برای این کار وجود نداره کلا و همه چیز بر اساس پیش بینی در آینده هست که به چه پروسه یا داده ای کمترین نیاز رو پیدا می کنیم.
و اینکه اصلا کامپایلر کاری به کار حافظه اصلی نداره که بخواد اون رو کنترل کنه! کامپایلر با تنها حافظه ای که درگیر هست حافظه رجیستر هست.
بله حق با شماست. من نگفتم ND یا سازنده ی دیگری مدیریت رم انجام نمیده. سوال من و متعجب شدنم از این بود که چنین چیزی مگر تا به حال درون انجینشون پیاده سازی نشده که به عنوان نرم افزاری جانبی روش کار میکنن. در واقع این مورد گفتن نداشت که ما داریم رم رو خوب مدیریت میکنیم و داده های مُرده رو حذف میکنیم. انگار سازنده های دیگه داده های مُرده رو کفن پوش میکنن در قطعه ی بهشت زهرای رمشون دفن میکنن!!!
 

کاربرانی که این قسمت را مشاهده می‌کنند

Top
رمز عبور خود را فراموش کرده اید؟
or ثبت‌نام سریع از طریق سرویس‌های زیر