تحلیل : استفاده از Memory Bus با پهنای باند بالا در چه مواقعی تاثیر محسوس خواهد داشت ؟
به نام یکتای مطلق
اگه بخواهیم خیلی موشکافانه بررسی کنیم ، تو معماری فعلی اینتل ( Intel® Core™ Microarchitecture ) ، به دلیل
محدودیت Bandwith بین BUS پردازنده و RAM که همون FSB نامیده میشه ( در صورتی که FSB رو برای پردازنده 1600MHZ در نظر بگیریم میشه 12.8GB/S ) با استفاده از 2 عدد رم DDR2 800 به صورت Dual Chanel روی کاغذ که حساب کنیم ، از تمام اون پهنای باند استفاده خواهید کرد ! البته Latency هم کمی تاثیر گذار خواهد بود ، ولی با نهایتا یک DDR2 1066 و استفاده از سیستم عامل 64BIT میشه گفت اون ضعف هم به صورت خیلی مشهود رفع خواهد شد .
پس تا هین جا کاملا مشهوده ، که افزایش پهنای باند Memory Bus بیشتر مقداری که ذکر کردم ، به صورت مستقیم روی عملکرد پردازنده هیچ گونه تاثیر محسوس نخواهد داشت و میشه از مقدار کم تاثیر کاهش Latency روی عملکرد پردازنده صرف نظر کرد .
اما اگر از سیستم برای مصارف Gaming مخصوصا به صورت استفاده از 2 کارت گرافیک به صورت SLI و CF به صورت حرفه ای استفاده کنید ( 2* 16X ) ، به دلیل ارتباط تنگاتنگ و بین حافظه سیستم و حافظه کارت گرافیک ، به دلیل افزایش روزافزون حجم Texture های GAME های مدرن امروزی ، به شدت به پهنای باند Memory Bandwith بیشتری نیاز خواهیم داشت . این نیاز هر چه رزولیشن و جزعیات بیشتری را برای APP 3D مورد نظر انتخاب کنیم ، بیشتر حس میشه ( حجم بافت ها به قدری زیاد باشه که بیشتر حجم اون بافت ها روی مقدار share شده روی RAM سیستم قرار بگیره ) .
روی کاغذ که حساب کنیم ، برای مثال MCH X48 اینتل به صورت Offical از DDR3 1600MHZ به صورت Dual Chanel استفاده می کنه ، در این صورت حدود ماکسیموم ، پهنای باند 25.6GB/S روی Memory Bus خواهیم داشت ، حال اگر مین بورد مورد نظر دارای دو اسلات PCI-E 2.0 16X باشد ، و هر دو اسلات هم اکتیو باشند ، گاهی در ماکسیموم مقدار مورد نیازشون ، 32GB/S پهنای باند را طلب خواهند کرد !! یعنی برای جبران این مقدار ، شما به پهنای باند حاصل از Dual Chanel مدل DDR3 2000MHZ نیاز خواهید داشت !! البته در صورتی که این مقدار جبران نشه ، شما با افت FPS پایدار در APP 3D مورد نظر ، مواجح نخواهید شد ، بلکه گه گاهی به دلیل Opcode ( واکشی ) بافت ها از روی RAM با تیک های خیلی نامحسوس که میشه از اون صرف نظر کرد ، مواجه خواهید شد .
این عکس هم میتونه خیلی بهتر به درک بهتر موضوع کمک کنه :
پس میشه نتیجه گیری کرد ، در صورتی که مصارف Gaming و در کل 3D Rendering با حجم Texture بالا دارید ، استفاده از حافظه های DDR3 با BUS بالا میتونه تا حدودی Performace سیستم شما رو بهینه کنه ، ولی در مواردی که سیستم برای کارهای محاسباتی ( Decoding , Encoding , ....... ) و در کل ارتباط مستقیم بین پردازنده و RAM ملاک باشه ، در پلاتفورم کنونی اینتل ( Intel® Core™ Microarchitecture ) بنا به دلایلی که توضیح دادم ، با افزایش Performace محسوسی مواجه نخواهید بود و میشه گفت کار اشتباهی هست .
وسلام
======================
نویسنده ( تحلیل ) : سید مهدی موسوی
تحلیل و موشکافی : استفاده از Memory Bus با پهنای باند بالا در چه مواقعی تاثیر محسوس خواهد داشت ؟
نقل قول:
اصلا انقدر مسئله سادست نیاز به اثبات پیچیده ای نداره .
ببین تفکر شما کلا اشتباه و با واقعیت فاصله زیادی داره به عنوان مقدمه بگم پهنایه باند در رم ارتباط مستقیمی با مموری کنترلر داره برای همین همیشه (یعنی تا الان) پهنایه باند و تاخیر که خودشم تاثیر مستقیم در پهنایه باند داره در پلتفرمهای AMD بهتر بوده؛
اولین نکته اینه که این پهنایه باند این رم ها که میگن اسمی هست و هیچ وقت مثلا رمه DDR800 واقعا پهنایه باندش به 6400 نمیرسه وقتی شما تازه در حالت Dual Channel ببندی دو تا رم DDR2 800 رو تازه با استفاده از سامانه هایه بافری مثل MMX, SSE استفاده کنی و اگر تاخیر و لتنسی هم خیلی کم باشه پهنایه باند ممکنه در بهترین حالت به 6400 برسه که البته بازم در شرایط مختلف متفاوته در اصل
این نکته خیلی مهمه و تا حدودی هم مسخره که Dual Channel اصلا و اصلا باعث دوبرابر شدن پهنایه باند نمیشه اصلا شاید تا 1-15 درصد باعث افزایش پهنایه باند بشه یعنی تاثیرش در واقعیت در پهنایه باند (بر خلاف تئوریات) تقریبا خیلی خیلی کمه و در کل به صورت میانگین طبق تست ها 1-5 درصد به صورت میانگین کلا در پرفرمنس ممکنه تاثیر بزاره؛ که هرچی سرعت بیشتر بشه این امر کم محسوس تر میشه، یعنی ممکنه در خیلی مواقع یه رمه DDR3 1333 با یه رمه DDR2 800 اختلاف بسیار کمی در پهنایه باند داشته باشن و پهنایه باند 12.8 گیگ یه پهنایه باند فوق وحشتناکیه که خیلی خیلی زیاده .
حالا بیام یه نگاهی به پهنایه باند رمها بندازیم خیلی سادست میتونی نرم افزار SisSandra رو باز کنی و تست Bandwidth از رمت بگیری من از رمم که DDR2 800 هست در حالت DualChannel هست وتایمینگ هم 5-5-5-18 هست تست گرفتم نتیجه مشخصه:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
ما که به رمم DDR3 پرسرعت دسترسی نداریم برای همین از تست های سایتهای معتبر استفاده میکنیم تا ببینم مثلا یه رم DDR3 2000Mhz که تقریبا سریعترین رم ممکن هست چه پهنایه باندی در مقیاس با رمهای دیگه داره نتیجه های Anand اینو نشون میده (البته دقت کنید که اینا در حالت Buffered هست در حالت UnBuffered به مراتب پهنایه باند ها کمتر میشه بعضا هم اعتقاد به اینه که پهنایه باند در حالت UnBuffered به پرفرمنس در برنامه های واقعی نزدیک تره ) :
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
البته این نکته رو هم بگم بحث ما فقط سره پهنایه باند رم هست و بحث پرفرمنس و جنبه واقعی پهنایه باند در برنامه ها نیست کلا که اون خودش بحث جدایی هست .
به نام یکتای مطلق
بسیار عالی . واقعا از اینگونه بحث های علمی لذت می برم .
نقل قول:
اصلا انقدر مسئله سادست نیاز به اثبات پیچیده ای نداره .
ای کاش دقیقا همین طور بود که شما تصور می کنی ! :31:
اما بنده از عرایض شما متوجه شدم که شما مقادیر ذکر شده Memory Bandwith در پست بنده رو مقدار واقعی در نظر گرفتید ! در صورتی که بنده در پست بالا هم به صراحت اشاره کردم که :
نقل قول:
اگه بخواهیم خیلی موشکافانه بررسی کنیم ، تو معماری فعلی اینتل ( Intel® Core™ Microarchitecture ) ، به دلیل
محدودیت Bandwith بین BUS پردازنده و RAM که همون FSB نامیده میشه ( در صورتی که FSB رو برای پردازنده 1600MHZ در نظر بگیریم میشه 12.8GB/S ) با استفاده از 2 عدد رم DDR2 800 به صورت Dual Chanel روی کاغذ که حساب کنیم ، از تمام اون پهنای باند استفاده خواهید کرد !
نقل قول:
روی کاغذ که حساب کنیم ، برای مثال MCH X48 اینتل به صورت Offical از DDR3 1600MHZ به صورت Dual Chanel استفاده می کنه ، در این صورت حدود ماکسیموم ، پهنای باند 25.6GB/S روی Memory Bus خواهیم داشت
همان طور که در جملات بالا مشخص کردم ، مقدار نامی ، یا همون Maximum Memory Bandwith بوده و همچنین بنده پهنای باند حاصله از عبور اطلاعات از FSB BUS منظور بنده نبوده ، و فقط و فقط پهنای باند روی Memory Bus مد نظر بوده .
وگرنه خیلی آشکار هست که پهنای باند واقعی تحت تاثیر Latency های مختلف به شدت کاهش پیدا می کنه ! حتی همان طور که خود شما هم اشاره کردی ، حتی در Plateform AMD که Memory controler در خود پردازنده تعبیه شده و به سبب دسترسی مستقیم پردازنده به حافظه ، باز هم Latency به مقدار قابل توجه وجود داره ( حدود 50% کمتر از Plateform Intel ) و دستیابی به حداکثر پهنای باند حافظه امکان پذیر نیست !
اما در مورد تستی که شما گرفتی :
تمام برنامه های استانداردی که برای تست Memory Bandwith مورد استفاده قرار می گیرند ، ناچارا مجبور هستند تا برای تست DATA مورد نظرشون رو از FSB BUS هم عبور دهند ، تا زمان عبور DATA مورد نظر رو از حافظه تا CPU رو تقسیم بر حجم DATA نام برده کرده و به اصطلاح Memory Bandwith نامی رو به عنوان مقداری عددی بر حسب MB/S نمایش دهند . همچنین فرکانس پردازنده هم به دلیل افزایش فرکانس حافظه Cache و به همان طبع افزایش Cache Bandwith هم تا حدودی در نتیجه نهایی تست ، اینگونه برنامه ها تاثیر گذار می باشد .
همچنین بنده در پست اول ، باز هم صریحا اشاره کردم که در تحلیل بنده ، حداکثر فرکانس FSB نامی ، تایید شده توسط کمپانی اینتل برای MCH X48 یعنی 1600MHZ مورد نظر بنده بوده .
صحت گفتار اینجانب رو می تونید در تست های زیر مشاهده کنید :
FSB 800MHZ
نکته مهم : تمام تست های FSB 800MHZ با زمان تاخیر استاندارد مطابق با تنظیمات پیشفرض TRD 6 گرفته شده اند .
====================================
FSB 1600MHZ
نکته مهم : تمام تست های FSB 1600MHZ با زمان تاخیر استاندارد مطابق با تنظینات پیشفرض TRD 12 گرفته شده اند .
تحلیل تست های فوق :
همان طور که در تصاویر مشخص هست ، تمام عوامل ، از جمله ، تایمینگ ها و فرکانس حافظه ثابت هستند و فقط فرکانس FSB به مقدار 100% ، از فرکانس 800MHZ به 1600MHZ و فرکانس هسته پردازنده به مقدار 60% افزایش یافته است .
ولی همانطور که مشاهده می کنید ، پهنای باند حافظه به مقدار چشمگیری افزایش یافته است !
این مقدار افزایش در تست SisSandra حدود 55% و در تست ewerest به طور میانگین حدود 35% می باشد !!
اما از بحث اصلی خارج نشیم ! اون طور که بنده متوجه شدم ، خیلی از افراد منظور اصلی بنده رو متوجه نشدند !
همان طور که در تست های بالا ثابت شد ، برنامه هایی از این قبیل که تست Memory Bandwith می گیرند پهنای باند خالص موجود ، فقط بر روی Memory Bus رو نمایش نمی دهند چون از انجام این کار معضورند ! اما بنده با اتکا به مباحث علمی مختلف این نظریه رو دارم که پهنای باند موجود در Memory Bus در پلاتفورم ایتل درسته به مقدار نامی حداکثر نمیرسه ولی به مراتب بیشتر از مقداری هست که برنامه های مختلف نرم افزاری ، نمایش می دهند . برای اثبات گوشه ای از این نظریه هم می تونم به تست زیر بسنده کنم :
TRD یکی از تایمینگ های موجود برای تنظیم زمان های تاخیر است ، این مقدار در واقع Memory Timing نیست و یک Mch Timing می باشد . این مقدار با توجه به فرکانس پایه mch مقدارش تغییر می کند . برای مثال در چیپست p35 در فرکانس 200mhz ( fsb 800mhz)l به صورت پیشفرض 6 می باشد ، و در فرکانس 400MHZ ( FSB 1600MHZ )l به صورت پیشفرض 12 می باشد . با کاهش این تایمینگ می توان Read Delay ، یکی از عوامل ایجاد Latency بیشتر را بین CPU و Memory را کاهش داد .
در تست های زیر بنده مقدار TRD را برای FSB 800MHZ از مقدار نامی 6 به 2 ، و در FSB 1600MHZ از مقدار نامی 12 به 8 کاهش دادم ! نتایج به دست آمده دیدنیست !
FSB 800MHZ
=========================
FSB 1600MHZ
حال 4 تست بالا را با FSB های مشابه ، با تست های به همراه TRD های پیشفرض مقایسه کنید !!
فکر میکنم ، نتایج به قدری واضح هست که نیازی به تحلیل نداره !
اما در مسئله آخر بنده در تحلیل خود در قسمت OPCODE کردن DATA از MEMORY سیستم به Memory vga به واسطه در گاه PCI-E اشاره کردم ! احساس می کنم بیشتر دوستان نیز در این مورد هم هنوز دچار تردید هستند .
به دقت به
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
نگاه کنید .
همان طور که مشاهده می کنید ، بنده در تصویر 3 BUS مختلف را با رنگ های مختلف از یکدیگر متمایز کردم .
Memory Bus با رنگ رنگ نارنجی .
PCI-E BUS با رنگ قرمز .
و FSB BUS با رنگ سبز .
در ارتباط بین حافظه موجود در VGA و مقدار حافظه SHARE شده توسط VGA بر روی حافظه اصلی ، فقط و فقط Memory Bus و PCI-E BUS به واسطه NB با یکدیگر در ارتباط هستند . و در این میان پهنای باند بین FSB و Memory BUS به هیچ وجه دخالتی در این تبادل اطلاعات ندارد !
وسلام
========================================