PDA

مشاهده نسخه کامل : راهنمای انتخاب قطعات کامپیوتر برای نرم افزارهای گرافیکی



SajjadKhati
14-02-20, 13:09
به نام خدا

سلام
در این تاپیک ، راهنمای اینکه چطور برای نرم افزارهای گرافیکی ، قطعات کامپیوتر را انتخاب کنیم ، آموزش داده میشه .
برای اینکه کسی بدونه که کدوم سخت افزار برای کدوم نرم افزار مناسب هست ، اول لازمه که یه حالت کلی از معماری نرم افزار را بدونه . در ادامه و در پست های بعدی ، اول ، یه توضیحاتی درباره ی معماری نرم افزارها داده میشه و بعد قطعات مناسب با اون سخت افزارها گفته میشه .

SajjadKhati
14-02-20, 13:13
اولین قطعه که میدونید مهمترین قطعه هست ، انتخاب پردازنده ی CPU هست .
پردازنده که انتخاب بشه ، سوکت مادربرد (صرف نظر از چیپست و مدار تغذیه ی مادربرد که اگه وقت شد ، بعدا بهش میپردازیم) هم مشخص خواهد شد .

اما برای انتخاب پردازنده ، باید بدونین که نرم افزار مورد نظرتون چجوری کار میکنه و چجوری از پردازنده ، برای پردازش دستوراتش استفاده میکنه . برای این کار نیاز داریم از معماری نرم افزار یه کم اطلاع پیدا کنیم . هر چند مبحث معماری نرم افزار پیچیده هست ولی اینجا فقط کلیات و اون هم به زبان ساده تر مطالب گفته میشه (مطالب چون تخصصی هه و اینجا بصورت ساده گفته میشه ، شاید برای کسایی که تخصص دارن ، با واقعیت اندکی فاصله داشته باشه . چون مباحث تخصصی برنامه نویسی هم لازم داره که در آخر تاپیک ، لینک مبحث تخصصی تر اش را میدم) .


---------------------------------------------------


معماری پردازنده (قسمت 1) :


همونطور که میدونید ، هر برنامه (مثل افترافکت) ، از حداقل ، یک پروسه (یا پروسس یا process) تا چندین پروسه تشکیل شدن . نام پروسه را در سربرگ details در task manager میشه پیدا کرد . نام پروسه ی اصلی افترافکت ، AfterFX.exe هست .
هر پروسه (process) هم که در task manager قابل مشاهده هست ، از حداقل یک نخ (thread) تا چند نخ تشکیل شدن .
نخ های هر پروسه هم در پنجره ی Resource Monitor در ستون Thread ، قابل مشاهده هستن :


Only the registered members can see the linkراهنمای-انتخاب-قطعات-کامپیوتر-برای-نرم-افزارهای-گرافیکی-1-resource-monitor-jpg


همونطور که در تصویر بالا میبینید ، پروسه ی AfterFX (پروسه ی اولی که انتخاب شده هست) ، در این لحظه ای که عکس گرفته شد ، 55 نخ در حال اجرا داره . هر لحظه هم تعداد این نخ ها ممکنه کمتر یا بیشتر بشه .
توی هر نخ ، کدهای پروسه و نرم افزار اجرا میشن .
نخ ها ، یا در حال اجرای کدشون در پردازنده هستن یا اینکه متوقف شده هستند .
اگه متوقف شده باشند ، که از پردازنده استفاده نمیکنند . پس هیچ چی .
اما تا زمانی که نخ ها در حال اجرای کدشون باشند ، از پردازنده استفاده میکنند و بنابراین کارکرد و اشغال پردازنده ، بالا میره .
در صورتی که نخ ها در حال اجرای کدشون باشند ، به ازای هر نخ ، یک هسته از پردازنده اشغال میشه . در واقع ، در یک لحظه ، هر هسته ی پردازنده ، فقط کدهای یک نخ (ای که در حال اجرای کدش باشه) را پردازش میکنه . بنابراین اگه پردازنده ای مثلا 8 هسته ای باشه ، درون دو هسته اش ، هیچ وقت یک نخ را بصورت همزمان پردازش نمیکنه و کدهاش را اجرا نمیکنه . بلکه فقط یک نخ را در یک هسته اش پردازش و کدهای اون نخ را اجرا میکنه .


همونطور که در ستون cpu در تصویر نشون میده ، میبینید که این پروسه (ی افترافکت) با اونکه 55 نخ داره ولی کارکرد و اِشغال cpu اش 0 هست . یا به عبارتی ، به این معناست که هیچ کدوم از 55 نخ در این پروسه ، در حال اجرای کد نیستند و به عبارتی همه ی 55 نخ در این پروسه یا متوقف شدند یا در حال انتظار هستند .
ستون average cpu در تصویر بالا هم نشون میده که در 60 ثانیه ی اخیر ، این پروسه ، چند درصد از کل پردازنده را اشغال کرد . که در اینجا ، میانگین اش در 60 ثانیه ی اخیر ، مقدار 0.03 درصد از پردازنده را اشغال کرد (که به 1 درصد هم نرسیده) .

SajjadKhati
14-02-20, 13:15
معماری پردازنده (قسمت 2) :


پس در نتیجه گیریِ پست قبلی ، این مهم هست که از هر تعداد نخ ای که در اون لحظه یه پروسه داره (در افترافکت در لحظه ی عکس گرفتن در پست بالا 55 بود) ، چه تعداد از اون نخ ها در حال اجرای کدشون باشن . که تعداد نخ هایی که در حال اجرای کدشون باشن را فعلا نمیشه با نرم افزاری متوجه شد (بعدا یه توضیح کوچیکی میدم) .
به همون تعداد (تعداد نخ های در حال اجرای کدشون در پروسه) ، هسته ی پردازنده برای اجرای سریعتر نیاز هست . اگه تعداد هسته ها ، از تعداد نخ هایی که در حال اجرای کدشون هستن ، بیشتر باشه ، در اون لحظه ، اون تعداد از هسته های پردازنده ، بیکار خواهد بود . مثلا اگه در پروسه ی افترافکت ، در یک لحظه 55 نخ داشته باشیم و فقط 2 نخ از اون 55 نخ ، در حال اجرای کدشون باشن و ما یه پردازنده ای با 8 هسته (فیزیکی) داشته باشیم ، پس در اون لحظه ، فقط 2 هسته از پردازنده مون (یعنی 25 درصد از توان پردازنده مون) در حال کار و اِشغال هست و 6 هسته ی دیگه (75 درصد از توان پردازنده مون) در اون لحظه بیکار هست . اما اگر تعداد هسته ها ، از تعداد نخ هایی که در حال اجرای کدشون هستن ، کمتر باشه ، سرعت پردازش در سیستم کاربر ، به همون نسبت ، پایین تر میاد .




نرم افزارهای گرافیکی 2 بعدی ، حداکثر ، از چند هسته ی پردازنده استفاده میکنند و پردازنده ی چند هسته ای براشون تهیه کنیم؟
اغلب نرم افزارها (بجز نرم افزارهای 3 بعدی اون هم موقع رندرشون) مثل افترافکت و فتوشاپ و پریمیر و موکا و بسیاری از نرم افزارهای دیگه ، چه زمان کار کردن با نرم افزار چه موقع رندرشون ، فقط قابلیت استفاده از 1 تا 8 هسته (ی فیزیکی) از پردازنده را دارند . بصورت متوسط ، 4 تا 6 هسته (فیزیکی) از پردازنده را استفاده میکنند.

این ، به این معناست که این نرم افزارها ، حداکثر ، در یک لحظه ، بین 1 تا 8 نخ فعال (نخی که در حال اجرای کدش باشه) دارند و بصورت متوسط ، در یک لحظه ، 4 تا 6 نخ فعال دارند (هر چند مثل تصویر در پست قبلی ، اون پروسه ، 55 نخ داشته باشه اما بقیه ی نخ هاشون یا متوقف شده اند یا منتظر میمونن) .

یا به عبارتی دیگه ، حداکثر ، استفاده از پردازنده ای بیش از 8 هسته ای (مثلا استفاده از پردازنده ی 12 هسته یا 16 یا 32 هسته ای) ، برای این نرم افزارها ، هیچ کاربردی نداره و فقط هزینه ی اضافی بدون استفاده از مزیت این پردازنده هاست .
ولی حتی یه پردازنده ی 6 هسته ای هم برای این نوع نرم افزارها کاملا کافی هست و در صورتی که شخصی بخواد عالی ترین کارایی نسبت به هزینه را داشته باشه ، یک پردازنده ی 6 هسته ای برای استفاده از این نرم افزارها توصیه میشه .
در صورتی که برای کسایی که بودجه ی کمتری دارند ، پردازنده ی 4 هسته ای توصیه میشه .

در لینک های زیر ، تفاوت عملکرد پردازنده ها با تعداد هسته های مختلف را در نرم افزار افترافکت میبینید (بقیه ی نرم افزاریی که گفته شد هم شبیه افترافکت هستند) :

Best Workstation Computer For After Effects (Only the registered members can see the link)

و

After Effects CPU performance: Intel Core X-10000 vs AMD Threadripper 3rd Gen (Only the registered members can see the link)

SajjadKhati
14-02-20, 13:19
نرم افزارهای گرافیکی 3 بعدی ، حداکثر ، از چند هسته ی پردازنده استفاده میکنند و پردازنده ی چند هسته ای براشون تهیه کنیم؟
نرم افزارهای گرافیکی 3 بعدی (مثل Cinema 4D و ...) را باید در 2 حالت مختلف بررسی کرد :

1) زمانی که کاربر داره با نرم افزار کار میکنه . یعنی زمانی که داره با نرم افزار ، پروژه شو طراحی میکنه (مثل ایجاد ، اصلاح و انیمیت کردنِ مدل های 3 بعدی و ...) :
در این حالت ، مثل نرم افزارهای گرافیکی دو بعدی (مثل افترافکت و ...) ، این نرم افزارهای 3 بعدی هم در یک لحظه ، حداکثر بین 1 تا 8 نخ فعال (نخی که در حال اجرای کدش باشه) دارند و بصورت متوسط ، در یک لحظه ، 4 تا 6 نخ فعال دارند . یا به عبارتی دیگه ، در این حالت ، حداکثر ، بیشتر از پردازنده ی 8 هسته ای بکارشون نمیاد . پردازنده ی 6 هسته ای برای کاربرد عالی نسبت به قیمت ، توصیه میشه و برای بودجه ی کمتر هم پردازنده ی 4 هسته ای توصیه میشه .

2) زمانی که کاربر داره با نرم افزار ، رندر میکنه . البته اگه موتور رندری باشه که بر اساس cpu کار کنه که در اصطلاح به این موتورهای رندر ، cpu based میگن . مثل موتور رندر پیش فرض Cinema 4D و موتورهای رندر دیگه مثل Arnold و Mental Ray و V-Ray و Keyshot ، میتونن از تمام هسته های پردازنده ها (حتی اگه پردازنده بیش از 64 هسته ی فیزیکی داشته باشه) استفاده کنن . بنابراین در این حالت (موقع رندر در نرم افزارهای 3 بعدی) ، هر چی تعداد هسته های پردازنده بیشتر باشه ، سریعتر رندر انجام میشه .

SajjadKhati
14-02-20, 13:22
چرا نرم افزارهای 2 بعدی (و نرم افزارهای 3 بعدی در زمان طراحی _زمان غیر رندر) ، نمیتونن از پردازنده های بالای 8 هسته ای استفاده کنند؟
همونطور که متوجه شدید و گفته شد ، تعداد نخ های فعال (نخ هایی که در حال اجرای کدشون هستند) در یک لحظه ، تعداد استفاده از هسته های پردازنده را مشخص میکنه . و همونطور هم که گفته شد ، نرم افزارهای 2 بعدی ، در هر حالتی (چه زمان طراحی چه زمان رندر) و همچنین نرم افزارهای 3 بعدی در زمان طراحی ، در یک لحظه ، بصورت متوسط 4 تا 6 نخ فعال دارند .




چرا نرم افزارهای 2 بعدی (و همچنین نرم افزارهای 3 بعدی در زمان طراحی _زمان غیر رندر) ، بیشتر از 8 نخ در یک لحظه ایجاد نمیکنند تا بتونن از تمام هسته های پردازند هایی که از 8 هسته بیشتر دارند ، استفاده کنند؟
این به ماهیت نخ ها برمیگرده . اول اینکه ، این نکته را یادآوری کنم که یک نخ ، فقط در یک هسته (در یک لحظه) اجرا میشه .
نخ ها ، مثل کارها (کارهایی که باید در دنیای واقعی انجام بشن) شبیه هستند .
وقتی نخ ای ساخته میشه که ، یک کار جدید وجود داشته باشه که هیچ ارتباطی با کار قبلی که در نخ قبلی انجام میشه ، نداشته باشه یا کمترین ارتباط را داشته باشه . وگرنه تداخل کارها ، باعث میشه کارایی ، پایین بیاد .

اول بذارید مثالی زده شه :
فرض کنید یک کاری وجود داره با عنوان "خالی کردنِ سیمان از درون یک کیسه ی سیمان در ظرف جدید توسط بیل" که برای این کار ، 2 کارگر با 2 تا بیل میخوان این کار را انجام بدن .
هیچ وقت همزمان 2 تا بیل ، توی یک کیسه نمیره . بنابراین یک کارگر همیشه باید منتظر بمونه تا بیلِ قبلیِ ای که کارگر قبلی توی کیسه وارد کرد را بیرون بیاره تا (کارگرِ دومی) بتونه بیل خودش را وارد همون کیسه کنه . بنابراین در واقع در اینجا ، فقط یک کارگر عملا داره روی یک کیسه کار میکنه و وجود 2 کارگر ، نه تنها سودی نداره ، گاها ممکنه نتیجه ی عکس بده .
بجای این کار ، بهتر هه که یک کارگر ، یک کیسه ی سیمان را خالی کنه و کارگرِ دیگه ، سراغ کیسه ی سیمانِ جدیدی بره . این جوری ، کارایی افزایش پیدا میکنه . یعنی ، کار در صورتی زودتر انجام میشه که به هر کدوم از کارگرها ، یک کارِ مجزا (مستقل) و جدیدی بدهند .

در مثال بالا ، کار (خالی کردن کیسه ی سیمان) را جای نخ ها بذارید و کارگرها را جای هسته های پردازنده .
بنابراین ، نمیشه بی محابا ، سازنده ی نرم افزار هر تعدادی خواست ، نخ درست کنه . چه بسا کارها تداخل پیدا کنن و سرعت پردازش ، کمتر بشن (مثل قضیه ی خالی کردن یک کیسه ی سیمان توسط دو کارگر) .

بنابراین کارهای مختلف ، باید جوری باشند که به ترتیب همدیگه کاری نداشته باشند تا بشه در نخ های دیگه اجرا بشن (مثل خالی کردن دو کیسه ی سیمان مجزا که دو کارگر ، هر چقدر خواستن ، میتونن برای خودشون کار کنن . مثلا یکی 10 درصد از کیسه ی اولی را خالی میکنه و اون یکی کارگر 60 درصد را خالی میکنه که دو کیسه و دو کارگر ، میزان و ترتیب کارشون به هم مرتبط نمیشه یا کمترین ارتباطی را با هم دارن) .

اما هر پلاگین و هر افکت ای که در نرم افزارهای 2 بعدی بکار میبریم ، عملیاتی و کدهای مجزا و مستقل دارند بنابراین میشه هر کدوم شون را در یک لحظه توی نخ جدیدی اجرا کرد تا در نتیجه در هسته های مختلف درون پردازنده اجرا بشن و کارایی و سرعت پردازش بالاتر بره . همینطور خیلی از کارهای دیگه هم همینطورند و میشه در نخ های جدیدی اجرا بشن . مثلا وقتی 40 تا افکت و پلاگین برای یه لایه اِعمال میکنیم ، چون هر افکت و پلاگین ، کدی مستقل و مجزا دارن ، بنابراین میشه در یک لحظه ، در 40 نخ جدید اجراشون کرد تا در 40 هسته از یک پردازنده (فرض کنید پردازنده ی 64 هسته ای داریم) بصورت همزمان اجرا بشن و بنابراین سرعت رندر ، خیلی بالاتر بره اما این کار را نمیکنن (جواب در سئوال پست زیر)

SajjadKhati
14-02-20, 13:25
چرا برای هر پلاگینی که بکار میبریم ، یک نخ جدید ساخته نمیشه تا کارها و افکت های هر پلاگین در یک هسته ی جدید بصورت همزمان اجرا بشه و سرعت رندر بالا بره؟
دقیق نمیدونم ولی به احتمال بسیار زیاد ، همین دلیلی هست که در زیر میگم .
اول اینکه میدونید فیلم ها از تصویر ساخته شدند و تصاویر هم از پیکسل ها . در واقع وقتی چیزی رندر میشه ، چیزی نیست جز اینکه مشخص میشه که پیکسل ها ، چه رنگی داشته باشند . رنگ ها هم که عدد هستند . عددی بین 0 تا 16.7 میلیون . یعنی موتورهای رندر ، موقع رندر ، مشخص میکنن که برای فلان پیکسل ، چه عددی بین 0 تا 16.7 میلیون در نظر بگیرند .

دلیل این سئوال این میتونه باشه که زمان رندر ، باید به ترتیب ، افکت قبلی ، ابتدا کدش را اجرا کنه تا مشخص بشه مثلا پیکسل شماره ی 1 ، چه عددی بهش (به عنوان رنگ) تعلق گرفته میشه (مثلا اِعمالِ افکتِ اول ، باعث شد رنگ شماره ی 459 برای پیکسل شماره ی 1 در نظر گرفته بشه) . بعد افکتِ بعدی (افکت شماره 2) روی همون پیکسل (پیکسل شماره ی 1) اجرا بشه تا این بار ، این افکت ، روی خروجیِ رنگِ افکتِ قبلی که 459 بود ، اِعمال بشه (یعنی ورودیِ رنگِ برای افکت شماره ی 2 ، خروجیِ رنگی که افکت قبلی ساخته بود باید باشه که در اینجا خروجیِ رنگِ افکت شماره ی 1 که رنگ شماره ی 459 در پیکسل 1 هست را به عنوان ورودی برای افکتِ شماره ی 2 در نظر گرفته میشه) تا افکت شماره ی 2 ، خروجی جدیدی به عنوان رنگ (مثلا رنگی با شماره ی 75924) برای همون پیکسل شماره ی 1 اِعمال کنه .

این روند و این ترتیب ، همینطور برای تمام افکت ها ، اِعمال میشه .
دلیلِ اینکه وقتی ترتیبِ افکت ها تغییر پیدا کنه ، ممکنه تصویر (چه رنگ تصویر یا هر چیزِ دیگه مثل اِعمال ماسک و ...) تغییر پیدا کنه ، همین هست .
بنابراین چون رندر باید به ترتیبِ افکت و پلاگین ها انجام بشه (یعنی افکت اول باید کدش را اجرا کنه و بعد نوبت افکت دوم برسه و بعد نوبت افکت سوم برسه و ...) ، پس در یک لحظه ، فقط یک نخ و فقط یک هسته باید کارش را انجام بده .
بنابراین در این نوع نرم افزارها ، رندرِ مربوط به افکت ها (تا اونجایی که مربوط به اجرای کدهای افکت ها و پلاگین ها که مهمترین عضو از رندر هستند ، میشه) فقط در یک هسته از پردازنده میتونه اجرا بشه .

SajjadKhati
14-02-20, 13:28
پس چرا در زمان رندر در نرم افزارهای 3 بعدی (در موتورهای رندر cpu based) ، از تمام هسته های پردازنده استفاده میشه؟
همونطور که گفته شد ، در نرم افزارهای 3 بعدی زمان رندر توسط موتور رندرهای cpu based شون ، برخلاف زمان رندر در نرم افزارهای 2 بعدی مثل افترافکت و پریمیر و فتوشاپ و ... ، از تمام هسته های پردازنده استفاده میشه . حتی اگه پردازنده ای بیش از 64 هسته ای باشه (موتور رندر پیش فرض Cinema 4D ، در نسخه های قدیمی تر ، توان استفاده از پردازنده ای دارای 128 هسته ی فیزیکی را داشت و داره) .

اما دلیل این تفاوتِ استفاده از هسته های cpu اینه در نرم افزارهای 3 بعدی (نسبت به رندر در نرم افزارهای 2 بعدی) اینه که در موتور رندر این نرم افزارهای 3 بعدی ، برای رندر تصویر ، همونطور که میدونید میاد تصویر را به چند بخش تقسیم میکنه که هر بخش ، یک مجموعه ای از پیکسل ها را رندر میکنه . هر بخش از اینها ، در یک نخ انجام میشه . تعداد این بخش ها هم احتمالا برابر با تعداد هسته های منطقیِ پردازنده ی کاربر هست .

در لینک زیر ، تفاوت عملکرد پردازنده ها با تعداد هسته های مختلف در نرم افزار cinbench هست که نشون میده در نرم افزارهای 3 بعدی موقع رندر چه پردازنده هایی ، چه قدرتی دارن (فقط مربوط به زمان رندر در نرم افزارهای 3 بعدی در موتورهای رندر cpu based هست) :

Cinema 4D CPU Rendering Performance: AMD Threadripper 3990X 64 Core (Only the registered members can see the link)

ولی در رندرِ نرم افزارهای 2 بعدی (مثل افترافکت و ...) ، این تقسیم کار انجام نمیشه و کل تصویر را رندر میکنند .

SajjadKhati
14-02-20, 13:32
چرا رندر در نرم افزاری 2 بعدی (مثل افترافکت و پریمیر و فتوشاپ و ...) ، مثل رندر در نرم افزارهای 3 بعدی به چند بخش (نخ) تقسیم نمیشه تا از تمام توان هسته های پردازنده استفاده بشه؟
خودم هنوز جواب این سئوال را متوجه نشدم .
شاید بخاطر دشواریِ سازگاری با codec های صوتی تصویری باشه . یا دلیل دیگه ای که نمیدونم .




فرکانس و کش بالاتر در پردازنده ، مهم هست؟ چقدر مهم هست؟
از اونجایی هم که هر نخ (ممکنه) در هر هسته اجرا بشه و یکی از مهمترین عامل سرعت هر هسته ، فرکانس اش و کش اش هست ، پس فرکانس پردازنده هر چی بالاتر باشه و کش اش هر چی بیشتر باشه ، سرعت اجرای عملیات در اون نخ و کلا سرعت اجرا بالاتر میره .

از اونجایی هم که بصورت معمول این نرم افزارها (بجز رندر در نرم افزارهای 3 بعدی) از 6 هسته استفاده میکنند ، پس قطعا انتخاب یک پردازنده ی 6 هسته ای که بالاترین فرکانس و بالاترین میزان کش را داشته باشه ، تاثیر مستقیمی بر افزایش سرعت پردازش در این نرم افزارها داره .

SajjadKhati
14-02-20, 13:37
پردازنده های Hyper Threading یا Simultaneous Multithreading چی هستن؟
هسته هایی که ما در پردازنده ها میشناسیم ، به عنوان "هسته های فیزیکی" شناخته میشن . هر هسته ی فیزیکی ، حداقل دارای یک "هسته ی منطقی" هست . در واقع وقتی میگیم کدهای مون در هسته اجرا میشه ، یعنی در یک هسته ی منطقی اجرا میشه .
هر هسته ی فیزیکی ، حافظه ی رجیستری و حافظه ی کش l1 و l2 جداگانه ای برای خودش داره (بسته به طراحی و نسل پردازنده ها دارن) اما در هسته های منطقی ، این حافظه ها مشترک هستند .
حافظه ی کش l3 که برای کل هسته های فیزیکی هم مشترک هست .

اما برای اینکه پردازش سریعتر انجام بشه ، در بعضی از پردازنده ها ، درون هر هسته ی فیزیکی ، بجای اینکه فقط یک هسته ی منطقی تعبیه کنن ، دو تا هسته ی منطقی تعبیه کردند و از اونجایی هم که کدها در هر هسته ی منطقی اجرا میشه ، بنابراین در این نوع پردازنده ها ، هر هسته ی فیزیکی ، همزمان بجای اینکه فقط بتونه یک نخ را اجرا کنه ، میتونه همزمان دو نخ را اجرا کنه . منتها تفاوتش با نخ هایی که در دو هسته ی فیزیکی مجزا اجرا میشن اینه که چون حافظه ی رجیستری و کش l1 و l2 در دو هسته ی منطقی ای که در یک هسته ی فیزیکی هستند ، مشترک هستند ، زمانی که نیاز به خوندن یا نوشتن اطلاعات در این حافظه ی مشترک بصورت همزمان باشه ، یک هسته ی منطقی (که در یک هسته ی فیزیکی هست) ، منتظر میمونه تا کارِ اون هسته ی منطقیِ دیگه (که در همون هسته ی فیزیکی هست) تمام بشه و بعد اجرای کدهای نخ اش را ادامه بده .

بنابراین همین موضوع حافظه ی مشترک در دو هسته ی منطقی ای که در یک هسته ی فیزیکی هستند ، باعث میشه وقتی کدها(یی که در دو هسته ی منطی ای که در یک هسته ی فیزیکی قرار دارند) بجای اینکه کارایی و سرعت اجراشون 2 برابر بیشتر بشه ، فقط 30 درصد کارایی و سرعت شون افزایش پیدا میکنه .
لازم به ذکر هست که سوئیچ بین نخ ها در دو هسته ی منطقی ای که در یک هسته ی فیزیکی هست ، بخاطر همین حافظه ی مشترک و بنابراین تبادل سریعتر اطلاعات ، سریعتر انجام میشه .

به اینکه 2 هسته ی منطقی درون هر هسته ی فیزیکی تعبیه کنن (بجای اینکه فقط یک هسته ی منطقی درون هر هسته ی فیزیکی باشه) را اینتل اسم این نوع پردازنده اش را Hyper Threading (یا مختصرا HT) و AMD هم اسم این نوع پردازنده اش را Simultaneous Multithreading (یا مختصرا SMT) نامید .

بنابراین در یک پردازنده ای که 6 هسته ی فیزیکی با 12 هسته ی منطقی داره ، در یک لحظه میتونه 12 نخ بصورت همزمان اجرا بشه . اما این توانستن ، به این معنا نیست که به معنی واقعی کلمه ، این عمل قطعا و همیشه در حال اجرا شدن هست و همیشه و در همه ی لحظات ، 12 نخ میتونن اجرا بشن بخاطر همون قضیه ی حافظه ی مشترکی که گفته شد .

SajjadKhati
14-02-20, 13:41
بهترین مدل پردازنده برای نرم افزارهای 2 بعدی (افترافکت و فتوشاپ و ...) و زمان طراحی در نرم افزارهای 3 بعدی (نه در زمان رندرینگ) ، کدوم مدل از پردازنده ها تا به امروز هستند؟
پس در زمان ارسال این پست (98.11) و همونطور که در توضیحات نرم افزارهای 2 بعدی لینک داده شد ، پیشنهادم اینه که اگه بودجه ای میخواین خرج کنین که بهترین کارایی نسبت به هزینه را در این نرم افزارها داشته باشه (بجز در پریمیر که بهترین پردازنده براش Ryzen Threadripper 3960X با 24 هسته ی فیزیکی هست) در پردازنده های AMD ، از پردازنده Ryzen 5 3600 (با قیمت 3.3 تومن) و در صورت بودجه ی بیشتر ، پردازنده ی Ryzen 5 3600X (با قیمت 3.8 تومن) که 200 مگاهرتز فرکانس بیشتری داره ، استفاده کنین . این پردازنده ، یکی از عالی ترین انتخاب نسبت به قیمت برای این نرم افزارهاست .

همچنین در پردازنده های اینتل ، بهترین پردازنده نسبت به قیمت ، پردازنده ی i5 9600K (با قیمت 3.46 تومن) هست و در صورت صرف بودجه ی بیشتر هر چند ارزش خرید بسیار پایین تر میاد ، پردازنده ی i7 9700K (با قیمت 6.8 تومن) میتونن انتخاب مناسبی از برند اینتل برای این نرم افزارها باشند .
در صورت صرف هزینه ی کمتر از پردازنده ی i5 9600K ، پردازنده ی i5 9400F (با قیمت 2.29 تومن) پیشنهاد میشه .

اگه هزینه ی بیشتری انجام میدین ، پردازنده ی i9 9900K (با قیمت 7.89 تومن) و همچنین در صورت هزینه ی بیشتر ، پردازنده ی i9 9900KS (با قیمت 10.65 تومن) پیشنهاد میشه اما i9 9900KS تقریبا با 3 برابر (2.8 برابر) قیمت Ryzen 5 3600X ، فقط حدود 15 درصد ازش بهتر عمل میکنه .

همچنین در صورت صرف هزینه ی کمتر ، از برند AMD پردازنده های 4 هسته ای مثل Ryzen 5 3400G (با قیمت 2.5 تومن) و در صورت هزینه ی کمتر ، پردازنده ی Ryzen 3 1300X (با قیمت 1.98 تومن) و در صورت هزینه ی کمتر ، پردازنده ی Ryzen 3 1200 (با قیمت 1.225 تومن) و از برند اینتل ، پردازنده ی i3 9100F (با قیمت 1.28 تومن) پیشنهاد میشه .
کمتر از پردازنده ی 4 هسته ای پیشنهاد نمیشه .




بنابراین ، لیست قدرتمندترین پردازنده ها (زیر 12 هسته ای) به ترتیب برای این نرم افزارها (بدون در نظر گرفتن هزینه) :
1) i9 9900KS (قیمت 10.65 تومن)
2) i9 9900K (قیمت 7.89 تومن)
3) Ryzen 9 3900X (قیمت 9.240 تومن)
4) Ryzen 7 3800X (قیمت 6.4 تومن)
5) i9 10900X
6) Ryzen 7 3700X (قیمت 5.9 تومن)
7) i7 9700K (قیمت 6.8 تومن)
8) i9 9920X
9) Ryzen 5 3600X (قیمت 3.8 تومن)
10) Ryzen 5 3600 (قیمت 3.2 تومن)
11) i9 9900X (قیمت 16.5تومن)
12) i9 9800X
13) i5 9600K (قیمت 3.46 تومن)
14) Threadripper 2920X
15) i9 9820X
16) Ryzen 7 2700X
17) Ryzen 5 2600X (قیمت 2.8 تومن)
18) Ryzen 5 2600 (قیمت 2.5 تومن)
19) i5 9400F (با قیمت 2.29 تومن)
20) Ryzen 5 3400G (قیمت 2.5 تومن)
21) i3 9100F (قیمت 1.28 تومن)
22) Ryzen 3 1300X (قیمت 1.98 تومن)
23) Ryzen 3 1200 (قیمت 1.225 تومن)




لیست بهترین پردازنده ها نسبت به قیمت و در عین حال بهترین کارایی در این نرم افزارها (زیر 12 هسته ای) به ترتیب (اون پردازنده هایی که در حال حاضر در فروشگاه های ایران وجود دارند) :
1) Ryzen 5 3600 (قیمت 3.2 تومن)
2) Ryzen 5 3600X (قیمت 3.8 تومن)
3) Ryzen 5 2600 (قیمت 2.5 تومن)
4) Ryzen 5 2600X (قیمت 2.8 تومن)
5) i5 9600K (قیمت 3.46 تومن)
6) i5 9400F (با قیمت 2.29 تومن)
7) i3 9100F (قیمت 1.28 تومن)
8) Ryzen 5 3400G (قیمت 2.5 تومن)
9) Ryzen 3 1200 (قیمت 1.225 تومن)
10) Ryzen 3 1300X (قیمت 1.98 تومن)
11) Ryzen 7 3700X (قیمت 5.9 تومن)
12) Ryzen 7 3800X (قیمت 6.4 تومن)
13) i9 9900K (قیمت 7.89 تومن)
14) i7 9700K (قیمت 6.8 تومن)
15) i9 9900K (قیمت 7.89 تومن)
16) i9 9900KS (قیمت 10.65 تومن)
17) Ryzen 9 3900X (قیمت 9.240 تومن)




لیست بهترین پردازنده ها از لحاظ کارایی و هزینه برای نرم افزار پریمیر :
1) Ryzen ThreadRipper 3960X (قیمت حدود 18 میلیون)
2) i9 10980XE
3) Ryzen 9 3950X
4) Ryzen 9 3900X
5) i9 9900K
6) Ryzen 7 3800X
7) Ryzen 5 3600


قیمت ها ، بر اساس قیمت حال حاضر و اون هم در ایران هست (نه بر اساس قیمت جهانی) .

SajjadKhati
14-02-20, 13:44
بهترین مدل پردازنده برای رندر در نرم افزارهای 3 بعدی (و موتورهای رندر cpu based شون) کدوم مدل از پردازنده ها تا به امروز هستند؟
میشه گفت (اغلب) که هر پردازنده ای که تعداد هسته های بیشتری داشته باشه ، قدرت پردازش بیشتر و سرعت رندر در این نرم افزارها هم بیشتر میشه چون این رندر در این نرم افزارها قابلیت استفاده از تمام هسته های پردازنده ها را دارند .


بنابراین سردم دار این مدل ، مدل Ryzen ThreadRipper 3990X با 64 هسته ی فیزیکی و 128 هسته ی منطقی و با قیمت 4000 دلار هست که هنوز به ایران نیومد .
بعدش هم که پردازنده ی Ryzen ThreadRipper 3970X که 32 هسته ی فیزیکی و 128 هسته ی منطقی داره (تازه در ایران رسید با قیمت بیش از 33 میلیون تومن) و بعد هم پردازنده ی Ryzen ThreadRipper 3960X که همگی جزء سوکت sTRX4 (سوکت مربوط به سیستم های workstation) محسوب میشن .


در سوکت AM4 (سوکت مربوط به سیستم های کاربران عادی و خانگی) که سردم دارشون Ryzen 9 3950X با 16 هسته ی فیزیکی و 32 هسته ی منطقی هست که در ایران حدود 18 میلیون تومن فروخته میشه .


پردازنده های اینتل در این رده و سری رندرینگ (پردازنده های با تعداد هسته های بالا) ، اصلا حرفی برای گفتن ندارن . سردم دارشون در ایران که مدل i9 9980XE هست ، قیمتی نزدیک به 30 میلیون تومن داره که با 18 هسته ی فیزیکی و 36 هسته ی منطقی ، کارایی اش از Ryzen 9 3950X هم پایین تر هست و مصرف خیلی بیشتری هم داره .
در کلاس سرور (که اصلا مناسب پردازش های رندرینگ نیست) و در غیر از ایران هم بالاترین مدل اینتل که بیشترین تعداد پردازنده را داشته باشه ، مدل Xeon W-3175X با 28 هسته هست .


بنابراین لیست قویترین پردازنده ها برای موتورهای رندرینگ نرم افزارهای 3 بعدی cpu based :
سوکت sTRX4 :
1) Ryzen ThreadRipper 3990X
2) Ryzen ThreadRipper 3970X (قیمت 33.45 تومن)
3) Ryzen ThreadRipper 3960X


سوکت AM4 :
4) Ryzen 9 3950X (قیمت حدود 18 تومن)


سوکت 2066 :
5) i9 9980XE (قیمت 29.5 تومن)


سوکت AM4 :
6) Ryzen 9 3900X (قیمت 9.24 تومن)


سوکت AM4 :
7) Ryzen 7 3800X (قیمت 6.4 تومن)
8) Ryzen 7 3700X (قیمت 5.9 تومن)


سوکت 1151 :
8) i9 9900KS (قیمت 10.650 تومن)
9) i9 9900K (قیمت 7.9 تومن)


سوکت AM4 :
9) Ryzen 5 3600X (قیمت 3.8 تومن)
10) Ryzen 5 3600 (قیمت 3.2 تومن)


سوکت 1151 :
11) i7 9700K (قیمت 6.8 تومن)




-----------------------------




پینوشت :


1) منظور از رندر ، پردازش تصویر هست . حالا این پردازش تصویر ، چه زمان خروجی گرفتن در نرم افزار باشه یا زمان preview (برای مشاهده ی نتیجه بصورت realtime) که زمان کار کردن و طراحی با نرم افزار هست .


2) برای اطلاعات بیشتر درباره ی معماری و عملکرد پردازنده و رابطه ی پردازنده با سیستم عامل و نوع کدنویسی در برنامه نویسی ، به لینک زیر مراجعه کنید :




رابطه بین نوع برنامه نویسی نرم افزار و عمل پردازنده ها (Only the registered members can see the linkرابطه-بین-نوع-برنامه-نویسی-نرم-افزار-و-عمل-پردازنده-ها-67928/)

SajjadKhati
15-02-20, 17:02
مبحث پردازنده ها تمام شد . در دو پست قبلی ، بهترین پردازنده ها برای عموم نرم افزارهای گرافیکی 2 بعدی و 3 بعدی ارائه شد .
منتها دقت کنید که این قطعات ، بصورت عمومی در نرم افزارهای گرافیکی 2 بعدی و 3 بعدی پیشنهاد میشن (در نرم افزارهای 2 بعدی ، بیشتر افترافکت و در نرم افزارهای 3 بعدی هم بیشتر cinema 4d مد نظر هست اما برای اغلب نرم افزارهای دیگه ، معمولا هم همینطور هست) . هر چند برای هر نرم افزار دیگه ای ، باید هم سیستمی که سایت اصلی اش معرفی میکنه و هم نتایج بنچمارک ها در سایت های دیگه دقت کرد تا بهترین سیستم برای نرم افزار خاص را پیشنهاد داد .
حالا به مبحث رم ها میپردازیم .




مباحثی راجع به رم :
همونطور که میدونید ، رم ها ساخته شدند تا سرعت بسیار پایین هارد را جبران کنند و بجای اینکه پردازنده ، اطلاعات مورد نیازش را از هارد (با اون سرعت بسیار پایین اش) بخونه ، از رم که سرعتی چندین برابر هارد داره ، بخونه تا انتظاری که پردازنده برای دریافت اطلاعات میکشه ، چندین برابر کمتر بشه .

اما این به این معنی نیست که پردازنده برای دریافت اطلاعات از رم ، منتظر نمیمونه . اتفاقا انتظار پردازنده ، برای دریافت اطلاعات از رم (نسبت به سرعت خود پردازنده) ، بسیار زیاد هست .
رم که جای خود داره . حتی پردازنده موقع دریافت اطلاعات حافظه ی کش خود پردازنده هم باید منتظر بمونه . تنها حافظه ای که باعث میشه پردازنده منتظر نمونه ، حافظه ی رجیستری پردازنده هست .

در یک مادربردی که 2 کانال رم را پشتیبانی میکنه ، همزمان ، فقط دو هسته ی منطقی (نه صرفا هسته ی فیزیکی) میتونند عمل خوندن یا نوشتن را در رم ها انجام بدن (به تعداد کانال هایی که پشتیبانی میکنه)
به عبارتی دیگه مثلا فرض کنید که پردازنده ی Ryzen 5 3600 که 12 هسته ی منطقی داره (6 هسته ی فیزیکی داره) ، همزمان فقط 2 هسته ی منطقی اش میتونه اطلاعات را از رم ها بخونه و بنویسه . به عبارتی دیگه ، 10 هسته ی منطقیِ دیگه ی این پردازنده ، در اون لحظه (ای که 2 هسته ی منطقیِ دیگه ی این پردازنده ، دارن اطلاعات را از رم ها میخونن یا مینویسند) ، نمیتونند از رم ها اطلاعاتی بخونند یا بنویسند .

اما آیا ارتباط نداشتنِ این 10 هسته ی منطقی در اون لحظه با رم ، به این معنی هست که هسته ی منطقی ، بیکار میمونه ؟
بستگی داره . ولی در اغلب اوقات ، یک هسته ی منطقی ، با حافظه ی کش اش تماس داره . برای اطلاعات بیشتر درباره ی این موضوع ، به همون تاپیک "رابطه بین نوع برنامه نویسی نرم افزار و عمل پردازنده ها" که در پست قبلی داده شد ، مراجعه کنید .

حجم حافظه ی رم ، چه زمانی مهم هست؟
در کل ، هر وقت برنامه نویسی نیاز به این داشته باشه که اطلاعات را ذخیره کنه ، به رم نیاز هست.
اما در نرم افزارهای گرافیکی (مثل افترافکت) ، هر پیکسل و هر افکت و پلاگین ، بعد از محاسبه ی رنگ ها نیاز داره که رنگ جدیدش را در حافظه ذخیره کنه . بنابراین معمولا هر چه میزان افکت ها و تصاویر و فیلم بکار رفته و همچنین کیفیت اونها بیشتر باشه (بخاطر زیاد شدن پیکسل ها) ، نیاز به حافظه ی بیشتری هست . البته بجز اینها ، باز هم بسته به کدهای برنامه داره .

SajjadKhati
15-02-20, 17:06
فرکانس رم چیه؟
سرعت انتقال اطلاعات رم را فرکانس رم میگن .
هر چه بیشتر باشه ، سرعت انتقال اطلاعات به پردازنده ، بیشتر خواهد بود.

پس هر چی فرکانس رم مون بیشتر باشه ، به همون نسبت ، در نرم افزارهای گرافیکی ، پردازش در پردازنده هم سریعتر انجام میشه؟
هر وقت یک هسته ی منطقی ، نیاز به خوندن اطلاعات از رم داشته باشه ، مشخص هست به دلیل سرعت بسیار پایین رم ، اون هسته ی منطقی ، بیکار میمونه .
اما این منتظر موندن ، در هر نرم افزاری یا بهتر بگم در هر بخش از کدی که پردازنده نیاز به حجم بسیار زیادی از اطلاعات رم داشته باشه و این حالت (و درخواست اطلاعات وسیع از رم توسط هسته ها) هم تداوم داشته باشه ، یا به عبارتی ، مدام(نه در یک لحظه ی کوتاه و خاص) هسته های پردازنده ، منتظر واکشی و خواندن اطلاعات از رم بمونند و عمل پردازش شون هم زیاد طول نکشه ، در اون حالت هست که فرکانس بیشتر رم ، تاثیر مستقیمی در پردازش میگذاره .

این حالت ، معمولا (نه همیشه) در نرم افزارهایی که انکدینگ روی فایل و از این دست عملیات انجام میدن ، اتفاق میافته . یعنی در این دست از نرم افزارها ، هر چه فرکانس رم بیشتر باشه ، انتظار اون هسته ی منطقی ، کمتر و پردازش اش هم سریعتر هست .
اما در بیشترِ نرم افزارهای گرافیکی ، این طور نیست . یعنی با افزایش فرکانس رم در این پردازنده ها ، سرعت پردازش بیشتر نمیشه یا تاثیر بسیار ناچیز (زیر 5 تا 10 درصد) داره . حتی در افترافکت که به حافظه ی رم بسیار زیادی لازم داره .

چرا در اغلب نرم افزارهای گرافیکیِ 2 بعدی و 3 بعدی و علی الخصوص در افترافکت که به حافظه ی رم بسیار زیادی لازم دارن ، افزایش فرکانس رم ، تاثیر زیادی در سرعت پردازش نداره؟
اولا اینکه منکر تاثیر فرکانس بالاتر رم نمیشیم . فقط منظور این هست که نسبت به افزایش فرکانسش ، اون چندان تاثیر زیادی نداره . مثلا ممکنه بین یک رم با فرکانس 4400 با رم ای با فرکانس 2400 ، در پردازنده ی قوی و به روز ، تقریبا 15 درصد اختلاف سرعت وجود داشته باشه (اما قیمت شون حداقل بیش از 3 برابری دارند) .
همونطور که گفته شد ، اولا یک هسته ی منطقی ، اطلاعاتش را در وهله ی اول از رجیستری و در وهله ی بعد ، از حافظه ی کشِ پردازنده میگیره (در وهله ی بعدی اگه اطلاعات مورد نیاز هسته ها در حافظه ی کش نبود ، از حافظه ی رم خونده میشه) .

دوما کدهایی که معمولا از این نرم افزارها (کد خود نرم افزارها یا مخصوصا پلاگین ها و افکت هاش) اجرا میشن ، بیشتر از همه وقت بسیار زیادی از هسته های منطقی را میگیره . یعنی بیشتر از همه ، زمان هسته ها صرف محاسبات و اجرای کدها میشه .

سوما انتظار هسته ها برای اینکه اطلاعات شون از رم خونده بشه (در صورت عدم وجود اون اطلاعات در کش) ، نسبت به زمان اجرای کدها در هسته ها ، کمتر هست .

و چهارما هر بار برای هر هسته ، حجم بسیار ناچیزی از اطلاعات رم خونده میشه . مثلا در حد چند مگ یا چند صد مگ . اما در مقابل ، زمان پردازش داده ، زیاد تر هست از سرعت و زمان انتقال اطلاعات .
اما باز هم بسته به نوع کد و نرم افزار داره .

در لینک زیر ، نتایج تاثیر فرکانس رم در نرم افزارهای گرافیکی ارائه شده :

Does RAM speed affect video editing performance (Only the registered members can see the link)

همونطور که میبینید ، فرکانس های بین 2666 تا 3600 در رم ، تاثیر چندانی در سرعت پردازش افترافکت و اغلب نرم افزارهای گرافیکی نداره . زیر 5 درصد تاثیر داره (اما برای نرم افزارهای انکدینگ ، چرا . باز هم بسته به نوع کدش داره) .
بنابراین با توجه به قیمت ارزونتر رم های فرکانس 3200مگاهرتز (در ایران) ، این مجموعه از رم ها را برای کارهای گرافیکی پیشنهاد میکنم . اما در صورت صرف هزینه ی بیشتر ، رم های با فرکانس بالاتر (3600 یا بالاتر) را برای نرم افزارهای گرافیکی پیشنهاد میکنم .
در صورت هزینه ی کمتر هم رم های با فرکانس 3000 یا 2666 یا 2400 پیشنهاد میشه .

SajjadKhati
15-02-20, 17:08
تایمینگ چیه؟
تایمینگ ، زمانی که صرف میشه تا رم به پردازنده (همون هسته ی منطقی ای که عمل خوندن یا نوشتن را از رم درخواست کرده بود) جواب بده.
پس هر چه تایمینگ کمتر باشه ، بهتر هه .
تایمینگ با عبارت cl در رم مشخص میشه .
معمولا با افزایش فرکانس ، تایمینگ هم بالاتر میره.


برای نرم افزارهای گرافیکی ، چند گیگ رم بگیریم؟
هر چند ، گفتم که برای هر نرم افزار ، باید به سایت اصلی و هم بنچمارک ها دقت کرد اما بصورت عموم ، در نرم افزارهای گرافیکی (2 بعدی یا 3 بعدی) ، برای افراد و پروژه های مبتدی حداقل 8 گیگ و برای افراد و پروژه های متوسط ، حداقل 16 گیگ و برای افراد و پروژه های حرفه ای ، حداقل 32 گیگ و برای افراد و پروژه های بسیار سنگین و فوق حرفه ای (مثلا پروژه های شرکت های بزرگ گرافیکی) ، حداقل 64 گیگ رم پیشنهاد میشه .

برای نرم افزار افترافکت هم بخاطر مصرف بسیار زیاد رم ، برای افراد و پروژه های مبتدی حداقل 16 گیگ و برای افراد و پروژه های متوسط ، حداقل 32 گیگ و برای افراد و پروژه های حرفه ای ، حداقل 64 گیگ و برای افراد و پروژه های بسیار سنگین و فوق حرفه ای (مثلا پروژه های شرکت های بزرگ گرافیکی) ، بیش از 64 گیگ رم پیشنهاد میشه .

SajjadKhati
15-02-20, 21:45
چه مدل رم ای برای نرم افزارهای گرافیکی بگیریم؟
اینجا فقط یک ماژول 8 گیگ و دو ماژول 8 گیگ (که میشه 16 گیگ) اون هم مدلی که فعلا در بازار ایران هست را معرفی میکنم . اینکه چند گیگ رم مناسب هست را در پست قبل گفتم و میتونین به پست قبل مراجعه کنید .
رم های فقط DDR4 معرفی میشن .
دقت کنید که هر چند اغلب رم ها با اغلب مادربردها سازگارند ولی برای اطلاع دقیق ، به لیست رم هایی که در مادربرد معرفی میشه ، رجوع کنید .


به ترتیب بهترین کارایی و کیفیت نسبت به قیمت (یک ماژول 8 گیگ) :
1) Crusial Ballistix 8GB Sport LT 3000MHz CL15 DDR4 (قیمت 599 تومن)
2) Crucial Ballistix Sport LT Gray 8GB 3200MHz CL16 DDR4 (قیمت 699 تومن)
3) ADATA GAMMIX D30 8GB 3600Mhz CL17 DDR4 (قیمت 1.119 تومن)


به ترتیب بهترین کارایی و کیفیت نسبت به قیمت (دو ماژول 8 گیگ که کلا میشه 16 گیگ) :
1) Gskill Ripjaws V 16GB 8GBx2 3200Mhz CL16 DDR4 (قیمت 1.620 تومن)
2) Gskill Ripjaws V 16GB 8GBx2 3000Mhz CL15 DDR4 (قیمت 1.550 تومن)
3) GEIL AMD Edition EVO X 16GB 2x8GB 2400Mhz CL17 DDR4 (قیمت 1.325 تومن) (مخصوص پردازنده های AMD)
4) Gskill Ripjaws V 16GB 8GBx2 3400Mhz CL16 DDR4 (قیمت 1.850 تومن)
5) Corsair VENGEANCE RGB PRO 16GB 8GBx2 3600MHz CL18 DDR4 (قیمت 2.050 تومن)
6) Gskill Trident Z 16GB 8GBx2 3400Mhz CL16 DDR4 (قیمت 1.999 تومن)

SajjadKhati
16-02-20, 13:20
معماری پردازنده (قسمت 2) :


پس در نتیجه گیریِ پست قبلی ، این مهم هست که از هر تعداد نخ ای که در اون لحظه یه پروسه داره (در افترافکت در لحظه ی عکس گرفتن در پست بالا 55 بود) ، چه تعداد از اون نخ ها در حال اجرای کدشون باشن . که تعداد نخ هایی که در حال اجرای کدشون باشن را فعلا نمیشه با نرم افزاری متوجه شد (بعدا یه توضیح کوچیکی میدم) .
به همون تعداد (تعداد نخ های در حال اجرای کدشون در پروسه) ، هسته ی پردازنده برای اجرای سریعتر نیاز هست . اگه تعداد هسته ها ، از تعداد نخ هایی که در حال اجرای کدشون هستن ، بیشتر باشه ، در اون لحظه ، اون تعداد از هسته های پردازنده ، بیکار خواهد بود . مثلا اگه در پروسه ی افترافکت ، در یک لحظه 55 نخ داشته باشیم و فقط 2 نخ از اون 55 نخ ، در حال اجرای کدشون باشن و ما یه پردازنده ای با 8 هسته (فیزیکی) داشته باشیم ، پس در اون لحظه ، فقط 2 هسته از پردازنده مون (یعنی 25 درصد از توان پردازنده مون) در حال کار و اِشغال هست و 6 هسته ی دیگه (75 درصد از توان پردازنده مون) در اون لحظه بیکار هست . اما اگر تعداد هسته ها ، از تعداد نخ هایی که در حال اجرای کدشون هستن ، کمتر باشه ، سرعت پردازش در سیستم کاربر ، به همون نسبت ، پایین تر میاد .




نرم افزارهای گرافیکی 2 بعدی ، حداکثر ، از چند هسته ی پردازنده استفاده میکنند و پردازنده ی چند هسته ای براشون تهیه کنیم؟
اغلب نرم افزارها (بجز نرم افزارهای 3 بعدی اون هم موقع رندرشون) مثل افترافکت و فتوشاپ و پریمیر و موکا و بسیاری از نرم افزارهای دیگه ، چه زمان کار کردن با نرم افزار چه موقع رندرشون ، فقط قابلیت استفاده از 1 تا 8 هسته (ی فیزیکی) از پردازنده را دارند . بصورت متوسط ، 4 تا 6 هسته (فیزیکی) از پردازنده را استفاده میکنند.

این ، به این معناست که این نرم افزارها ، حداکثر ، در یک لحظه ، بین 1 تا 8 نخ فعال (نخی که در حال اجرای کدش باشه) دارند و بصورت متوسط ، در یک لحظه ، 4 تا 6 نخ فعال دارند (هر چند مثل تصویر در پست قبلی ، اون پروسه ، 55 نخ داشته باشه اما بقیه ی نخ هاشون یا متوقف شده اند یا منتظر میمونن) .

یا به عبارتی دیگه ، حداکثر ، استفاده از پردازنده ای بیش از 8 هسته ای (مثلا استفاده از پردازنده ی 12 هسته یا 16 یا 32 هسته ای) ، برای این نرم افزارها ، هیچ کاربردی نداره و فقط هزینه ی اضافی بدون استفاده از مزیت این پردازنده هاست .
ولی حتی یه پردازنده ی 6 هسته ای هم برای این نوع نرم افزارها کاملا کافی هست و در صورتی که شخصی بخواد عالی ترین کارایی نسبت به هزینه را داشته باشه ، یک پردازنده ی 6 هسته ای برای استفاده از این نرم افزارها توصیه میشه .
در صورتی که برای کسایی که بودجه ی کمتری دارند ، پردازنده ی 4 هسته ای توصیه میشه .

در لینک های زیر ، تفاوت عملکرد پردازنده ها با تعداد هسته های مختلف را در نرم افزار افترافکت میبینید (بقیه ی نرم افزاریی که گفته شد هم شبیه افترافکت هستند) :

Best Workstation Computer For After Effects (Only the registered members can see the link)

و

After Effects CPU performance: Intel Core X-10000 vs AMD Threadripper 3rd Gen (Only the registered members can see the link)

ویرایش :

معماری پردازنده (قسمت 2) :


پس در نتیجه گیریِ پست قبلی ، این مهم هست که از هر تعداد نخ ای که در اون لحظه یه پروسه داره (در افترافکت در لحظه ی عکس گرفتن در پست بالا 55 بود) ، چه تعداد از اون نخ ها در حال اجرای کدشون باشن . که تعداد نخ هایی که در حال اجرای کدشون باشن را فعلا نمیشه با نرم افزاری متوجه شد (بعدا یه توضیح کوچیکی میدم) .
به همون تعداد (تعداد نخ های در حال اجرای کدشون در پروسه) ، هسته ی پردازنده برای اجرای سریعتر نیاز هست . اگه تعداد هسته ها ، از تعداد نخ هایی که در حال اجرای کدشون هستن ، بیشتر باشه ، در اون لحظه ، اون تعداد از هسته های پردازنده ، بیکار خواهد بود . مثلا اگه در پروسه ی افترافکت ، در یک لحظه 55 نخ داشته باشیم و فقط 2 نخ از اون 55 نخ ، در حال اجرای کدشون باشن و ما یه پردازنده ای با 8 هسته (فیزیکی) داشته باشیم ، پس در اون لحظه ، فقط 2 هسته از پردازنده مون (یعنی 25 درصد از توان پردازنده مون) در حال کار و اِشغال هست و 6 هسته ی دیگه (75 درصد از توان پردازنده مون) در اون لحظه بیکار هست . اما اگر تعداد هسته ها ، از تعداد نخ هایی که در حال اجرای کدشون هستن ، کمتر باشه ، سرعت پردازش در سیستم کاربر ، به همون نسبت ، پایین تر میاد .




نرم افزارهای گرافیکی 2 بعدی ، حداکثر ، از چند هسته ی پردازنده استفاده میکنند و پردازنده ی چند هسته ای براشون تهیه کنیم؟
اغلب نرم افزارها (بجز نرم افزارهای 3 بعدی اون هم موقع رندرشون) مثل افترافکت و فتوشاپ و موکا و بسیاری از نرم افزارهای دیگه ، چه زمان کار کردن با نرم افزار چه موقع رندرشون ، فقط قابلیت استفاده از 1 تا 8 هسته (ی فیزیکی) از پردازنده را دارند . بصورت متوسط ، 4 تا 6 هسته (فیزیکی) از پردازنده را استفاده میکنند.
البته این را که میگم ، تاکید میکنم که برای همه ی نرم افزارها نیست . بلکه برای اغلب نرم افزارهای گرافیکی هست .
هر چند بحث پریمیر جداست و این نرم افزار تا 24 هسته ی فیزیکی (به همراه 48 هسته ی منطقی) را میتونه استفاده کنه.
به هر حال ، باید برای اطلاع دقیق از یک نرم افزار که چقدر منابع (یعنی رم و cpu و gpu و هارد) استفاده میکنه ، باید هم به سایت اصلی و هم نتایج تست اش در سایت های دیگه را مشاهده کرد .

این ، به این معناست که این نرم افزارها ، حداکثر ، در یک لحظه ، بین 1 تا 8 نخ فعال (نخی که در حال اجرای کدش باشه) دارند و بصورت متوسط ، در یک لحظه ، 4 تا 6 نخ فعال دارند (هر چند مثل تصویر در پست قبلی ، اون پروسه ، 55 نخ داشته باشه اما بقیه ی نخ هاشون یا متوقف شده اند یا منتظر میمونن) .

یا به عبارتی دیگه ، حداکثر ، استفاده از پردازنده ای بیش از 8 هسته ای (مثلا استفاده از پردازنده ی 12 هسته یا 16 یا 32 هسته ای) ، برای این نرم افزارها ، هیچ کاربردی نداره و فقط هزینه ی اضافی بدون استفاده از مزیت این پردازنده هاست .
ولی حتی یه پردازنده ی 6 هسته ای هم برای این نوع نرم افزارها کاملا کافی هست و در صورتی که شخصی بخواد عالی ترین کارایی نسبت به هزینه را داشته باشه ، یک پردازنده ی 6 هسته ای برای استفاده از این نرم افزارها توصیه میشه .
در صورتی که برای کسایی که بودجه ی کمتری دارند ، پردازنده ی 4 هسته ای توصیه میشه .

در لینک های زیر ، تفاوت عملکرد پردازنده ها با تعداد هسته های مختلف را در نرم افزار افترافکت میبینید (بقیه ی نرم افزاریی که گفته شد بجز پریمیر هم تقریبا شبیه افترافکت هستند) :

Best Workstation Computer For After Effects (Only the registered members can see the link)

و

After Effects CPU performance: Intel Core X-10000 vs AMD Threadripper 3rd Gen (Only the registered members can see the link)


برای پریمیر هم (قابلیت استفاده تا 24 هسته ی فیزیکی را داره) :

Best Computer for Video Editing (Only the registered members can see the link)

و

Recommended Systems for Adobe Premiere Pro (Only the registered members can see the link)

و

Premiere Pro CPU performance: AMD Threadripper 3990X 64 Core (Only the registered members can see the link)

SajjadKhati
16-02-20, 15:36
مباحث مادربرد :
همونطور که میدونید ، مادربرد جزء قطعات بسیار مهم هست که علاوه بر اینکه مدل cpu و رم را مشخص میکنه ، وظیفه ی تنظیم ولتاژ و تغذیه شون را هم به عهده داره . بنابراین هر چی کیفیت مدار تغذیه ی مادربردی بهتر باشه ، علاوه بر طول عمر بالاتر ، قابلیت اورکلاک بیشتری را مخصوصا برای cpu میشه اِعمال کرد . هر چند کیفیت مدار تغذیه ی بالاتر ، باعث هزینه ی بیشتر هم میشه .
عامل دیگه ای که بصورت مستقیم در قیمت مادربردها تاثیر داره ، مدل چیپست شون هست . مدل چیپست بالاتر ، بر روی کنترل روی تعداد ورودی و خروجی و همچنین اورکلاک کردن یا نکردن یا حتی مقدار اورکلاک تاثیر داره .


مادربرد با چه مدل چیپست ای برای کار با نرم افزارهای گرافیکی بگیریم؟
در وهله ی اول ، مثل بقیه ی قطعات ، بصورت مستقیم به هزینه ی کاربر بستگی داره .
در وهله ی بعدی ، به قدرت و توان مصرفی cpu و مخصوصا اینکه آیا کاربر میخواد cpu اش را اورکلاک کنه یا نه و مهمتر اینکه تا چه اندازه ای اورکلاک کنه داره . چون معمولا در چیپست های رده پایین ، مادربردهای با مدار تغذیه ی مناسبی ندارند.
در وهله ی سوم هم به اینکه از AMD پردازنده اش را انتخاب میکنه یا از Intel داره و همچنین مدل سوکت اش چی باشه داره .
(ادامه ، در پست بعدی)

SajjadKhati
16-02-20, 15:39
چیپست های سوکت AM4 از AMD :
چیپست B450 :
یکی از بهترین و در عین حال با قیمت و ارزش بسیار خوب ، چیپست های B450 از شرکت AMD برای سوکت AM4 هستند (تا به این لحظه) .
هم قیمت مناسب و متوسطی دارند و هم قابلیت اورکلاک خوبی دارند و هم مادربردهاشون مدار تغذیه ی مناسبی دارند و هم تعداد اسلات ها و پورت های مناسبی دارند .
بنابراین کسانی که نمیخوان زیاد هزینه کنند اما در عین حال بهترین کارایی و اندکی هم cpu شون را اورکلاک کنند ، این چیپست پیشنهاد میشه . به عبارتی دیگه ، برای اغلب کسایی که با نرم افزارهای گرافیکی (2 بعدی یا 3 بعدی) کار میکنند اما هزینه ی زیادی نمیکنند ، این چیپست پیشنهاد میشه .
پایین تر از این چیپست ، چیپست A320 هست که برای کاربران نرم افزار ، توصیه نمیکنم مگر اینکه بودجه خیلی کم باشه (اون هم دیگه بهترین مدل از مادربرد A320 انتخاب بشه) .


چیپست X570 :
برای کسانی که بیشترین هزینه را انجام میدن و میخوان بیشترین اورکلاک و حتی بیشترین بهره را از پردازنده ها ، مخصوصا پردازنده های سری 3000 رایزن ببرن ، این چیپست پیشنهاد میشه .
ولی پیشنهاد میشه اگه پردازنده ی Ryzen 3900X یا مخصوصا Ryzen 3950X اگه انتخاب شد ، چیپست X570 هم انتخاب بشه .


چیپست X470 :
نسل قبل تر از چیپست X570 هست اما مادربردهای ارزونتری داره . بنابراین اگه کسی دنبال حداکثر اورکلاک هست اما هزینه ی چیپست X570 را نداره ، همین چیپست X470 یا حتی چیپست X370 که ارزونتر هستن ، انتخاب کنه .


چیپست های سوکت sTRX4 از AMD :
چیپست TRX40 :
این سوکت و چیپست ، در حال حاضر ، تنها سوکت و چیپست ای هستند که از پردازنده های Threadripper نسل 3000 از AMD ، یعنی 3 پردازنده ی 3960X و 3970X و 3990X (دارای 64 هسته ی فیزیکی و 128 هسته ی منطقی) پشتیبانی میکنه .
بنابراین هر کس قصد خرید این پردازنده ها را داره که معمولا به درد کسایی که در نرم افزارهای 3 بعدی با موتور cpu based (که قبلا در پست های قبلی نام برده شد) و یا با نرم افزار پریمیر (چون پریمیر قابلیت استفاده از پردازنده ی 24 هسته ای را داره) کار میکنن ، این چیپست پیشنهاد میشه .
این چیپست ، گرونترین چیپست هست . مادربردهاش هم گرون و شاید بالای 8 یا 9 میلیون تومن یا بیشتر باشند .




چیپست های سوکت 1151 از Intel :
چیپست H370 :
این چیپست در اینتل ، تقریبا برابر با چیپست B450 در پردازنده های AMD هست . منتها از اون ضعیف تر هست . یعنی قابلیت اورکلاک را به کاربرانش نمیده .
این چیپست ، تقریبا میشه گفت بین چیپست های B450 و A320 در پردازنده های AMD هست .
بنابراین مثل چیپست B450 در پردازنده های AMD ، برای کاربران نرم افزارهای گرافیکی که بصورت متوسط هزینه میکنند ، پیشنهاد میشه .


چیپست B360 :
چیپست B360 ، یک مدل پایین تر از چیپست H370 هست که باز هم برای کسایی که هزینه ی کمتر پرداخت میکنند ، انتخاب بدی نیست .
این چیپست ، تقریبا با چیپست A320 در پردازنده های AMD برابر هست .
اما پایین تر از چیپست B360 ، چیپست H110 هست که فقط تا سری 7000 در پردازنده های اینتل ، یعنی حداکثر ، پردازنده ی i7 7700K (پردازنده ی 4 هسته ای) را پشتیبانی میکنه که اصلا برای کاربران نرم افزارهای گرافیکی (مخصوصا کاربران نرم افزارهای 3 بعدی که رندر میکنند) مناسب نیست مگر اینکه هزینه ی کاربر ، خیلی کم باشه (اون هم مدل خوب از مادربردهای چیپست H110 انتخاب بشه) .


چیپست Z390 :
این چیپست ، با چیپست X570 در پردازنده های AMD برابری میکنه . بنابراین برای کسانی که بیشترین هزینه را انجام میدن و میخوان بیشترین اورکلاک را از پردازنده ها بهره ببرن ، این چیپست پیشنهاد میشه .


چیپست های سوکت 2066 از Intel :
چیپست X299 :
با چیپست TRX40 در پردازنده های AMD برابری میکنه . سردم دارش تا به حال ، پردازنده ی I9 10980XE (دارای 18 هسته ی فیزیکی و 48 هسته ی منطقی) هست که بسیار ضعیف تر از پردازنده ی Threadripper 3990X از AMD هست .

SajjadKhati
16-02-20, 16:44
مادربرد با چه مدار تغذیه ای بگیریم؟
درباره ی مدار تغذیه ی مادربرد ، به همون مقدار کمی که در دو پست قبلی توضیح دادم ، بسنده میکنم (که وظیفه اش تنظیم ولتاژ و تغذیه ی رم و مخصوصا cpu هست که قدرت مدار تغذیه ی بیشتر ، در وهله ی اول باعث دمای کمتر و طول عمر بالاتر و هم قدرت اورکلاک بیشتر پردازنده میشه) .
و این را هم بگم که مدار تغذیه ی تمام دیجیتال و غیرِ تمام دیجیتال داریم .
معمولا هر چه مادربرد قیمتش بالاتر باشه ، قدرت مدار تغذیه اش بالاتر میره (در چیپست ها با مدل برابر) .

برای اطلاعات بیشتر درباره مدار تغذیه ی مادربرد ، حتما مقاله ی زیر را بخونید که بسیار روان و ساده و حرفه ای توضیح داده شد :

همه چیز درباره مدار تنظیم کننده ولتاژ مادربرد (Only the registered members can see the link)


مادربرد با چند فاز کاری بگیریم؟
اگه مقاله ی بالا را خونده باشید ، پس با اصطلاحات فاز کاری و ماسفت و چوک و ... در مادربرد هم آشنایید (بنابراین مستقیم سر بحث اصلی میریم) .
هر چند اولین چیزی که قدرت مدار تغذیه را مشخص میکنه ، مدل ماسفت هاست و نه تعدادشون (اینکه ماسفت ها تمام دیجیتال هستند یا نه) و مدل ماسفت ها جز در مادربردهای high end ، برای بقیه ی مادربردهای رده ی پایین ، پیدا کردن مدل شون گاها خیلی سخت هست اما باز بصورت عموم ، قدرت مدار تغذیه را با تعداد چوک های کنار سوکت cpu میسنجند .

برای کارهای گرافیکی (غیر از 3 بعدی و رندر) ، مادربردی با 6 چوک (همون 6 فاز کاری) یا بیشتر ، انتخاب خوبی میتونه باشه .
حداقلش دیگه زیر 4 فاز کاری نباشه .
اما برای کارهای گرافیکی سنگین و پردازنده هایی مثل 3960X یا بالاتر ، تعداد 12 فاز کاری یا بالاتر ، انتخاب مناسبی از مادربردهاست .

SajjadKhati
16-02-20, 16:47
چه مدل مادربردی بگیریم؟
به شخصه ، 3 برند Gigabyte و MSI و Asus را میپسندم .
پیشنهاد ها بر اساس موجودیِ مادربردها در حال حاضر در بازار ایران هست .


مادربردهای AMD :
بهترین مادربردها از لحاظ قیمت و در عین حال کارایی :

چیپست B450 و B350 :
1) ASUS TUF B450 PRO GAMING (قیمت 2.41 تومن)
2) ASUS TUF B450-PLUS GAMING (قیمت 2.24 تومن)
3) MSI B450 GAMING PLUS MAX (قیمت 2.17 تومن)


چیپست X570 و X470 :
1) ASUS TUF GAMING X570-PLUS (WI-FI) AM4 (قیمت 4.75 تومن)
2) ASUS ROG Strix X570-F AM4 Gaming (قیمت 5.1 تومن)
3) ASUS PRIME X570-P AM4 (قیمت 4.39 تومن)
4) ASUS PRIME X470-PRO AM4 X470 (قیمت 3.6 تومن)
5) MSI MEG X570 ACE (قیمت 6.299 تومن)


چیپست TRX40 :
1) ASUS ROG Strix TRX40-E Gaming (قیمت 9.4 تومن)

SajjadKhati
17-02-20, 14:56
مادربردهای Intel :
بهترین مادربردها از لحاظ قیمت و در عین حال کارایی :

چیپست H370 :
1) ASUS TUF H370-PRO GAMING (قیمت 2.49 تومن)
2) ASUS ROG STRIX H370-F GAMING (قیمت 3.060 تومن)
3) ASUS PRIME H370-PLUS LGA1151 H370 (قیمت 2.24 تومن)


چیپست B360 و B365 :
1) ASUS TUF B360-PRO GAMING (قیمت 2.349 تومن)
2) ASUS PRIME B365-PLUS (قیمت 2.039 تومن)
3) Asus PRIME B365M-A (قیمت 1.72 تومن)
4) GIGABYTE B360M DS3H (قیمت 1.38 تومن)
5) MSI B365M PRO VDH (قیمت 1.299 تومن)


چیپست Z390 :
1) ASUS PRIME Z390-P (قیمت 3.55 تومن)
2) ASUS TUF Z390-PRO GAMING (قیمت 5.135 تومن)
3) ASUS PRIME Z390-A (قیمت 5.05 تومن)
4) ASUS ROG STRIX Z390-F GAMING (قیمت 5.7 تومن)
5) ASUS ROG STRIX Z390-E GAMING (قیمت 5.999 تومن)
6) ASUS ROG STRIX Z390-H GAMING (قیمت 5.2 تومن)


چیپست Z370 :
1) ASUS TUF Z370-PLUS GAMING (قیمت 2.75 تومن)
2) GIGABYTE Z370 HD3 (قیمت 2.45 تومن)
3) ASUS Prime Z370-P II (قیمت 2.765 تومن)
4) ASUS Prime Z370-A II (قیمت 3.53 تومن)
5) ASUS ROG STRIX Z370-G GAMING (قیمت 3.4 تومن)


چیپست X299 :
1) ASUS TUF X299 MARK 1 (قیمت 4.15 تومن)
2) ASUS PRIME X299-A (قیمت 4.08 تومن)
3) ASUS TUF X299 MARK 2 (قیمت 3.91 تومن)
4) GIGABYTE X299 UD4 (قیمت 3.25 تومن)
5) ASUS ROG STRIX X299-E GAMING (قیمت 7.799 تومن)

SajjadKhati
21-05-20, 09:50
طبق سایت زیر :

Recommended PC Hardware for Adobe After Effects - Puget Systems (Only the registered members can see the link)

یه فرمول برای محاسبه ی رم در افترافکت پیدا کردم :



[desired seconds of playback] x [FPS] x [height in pixels] x [width in pixels] x [number of bits per channel] / 2,147,483,648 + 3


یا اینکه در شکل زیر هم میشه نتیجه ی این فرمول را دید :


Only the registered members can see the link


بنابراین ، حجم رم مورد نیاز در افترافکت ، به 4 عاملِ مهمِ :
1) ریزولیشنِ کلِ پروژه
2) مقدار فریمی که قصد گرفتن اون (در ram preview) را داریم
3) تعداد بیت ها (برای هر کانال) در پروژه
4) میزانِ ثانیه ای که میخوایم به اون مقدار از ثانیه (بصورت مداوم) در ram preview ، (اون تیکه از پروژه مون را) پلی کنیم و ببینیم .

در نمودار بالا ، برای پروژه با ریزولیشن Full HD ، و با عمق رنگ 32 بیت و با گرفتنِ 30 فریم در ثانیه در ram preview و همچنین 60 ثانیه پلی کردن در ram preview (نمودار سبز) ، حدود 60 گیگ رم نیاز هست اما برای عمق رنگ 16 بیت با همین تنظیمات ، 32 گیگ رم نیاز هست .


و همچنین در نمودار زیر برای ریزولیشن 4k :


Only the registered members can see the link



در نمودار بالا ، برای پروژه با ریزولیشن 4k ، و با عمق رنگ 32 بیت و با گرفتنِ 30 فریم در ثانیه در ram preview و همچنین 60 ثانیه پلی کردن در ram preview (نمودار سبز) ، حدود 225 گیگ رم نیاز هست .