PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مقاله معماري Intel Core2 در مقابل AMD Athlon 64



MAHDIAR
27th December 2009, 07:39 AM
معماري Intel Core2 در مقابل AMD Athlon 64 (قسمت 1)




نزديك به يك سال پيش در همايش IDF 2005، اينتل رسما جايگزيني معماري NetBrust پردازنده هاي پنتيوم 4 خود را با معماري قدرتمند ديگري به نام Core™ اعلام كرد، اين معماري جديد به تدريج به كليه پردازنده هاي اين شركت از پردازنده هاي كامپيوترهاي همراه گرفته تا پردازنده هاي سرورهاي Xeon نفوذ خواهد كرد. از ماه آپريل سال 2001 كه پردازنده هاي پنتيوم 4 معرفي شدند، معماري NetBrust تنها معماري پردازنده هاي حوزه كامپيوتر‌هاي «روي‌ميزي» اينتل به شمار مي رفت، با وجود اينكه اين معماري در مقابل معماري K8 به كار گرفته شده در پردازنده هاي Athlon 64 شركت AMD (برای مطالعه بیشتر دراین مورد به سایر مقالات (http://www.microrayaneh.com/Articles/ArticlesList.htm) سایت میکرو رایانه (http://www.microrayaneh.com/) مراجعه نمایید) ضعف هاي متعددي داشت، اصرار شركت اينتل بر حكم فرمايي آن به روي پردازنده هاي پنتيوم 4 بخش بسيار بزرگي از بازار پردازنده ها را به شركت AMD با معماري موفق K8 خود اهدا كرد.
معماري جديد Core™ كه تا چند ماه ديگر در پردازنده هاي Core2 Duo و Core2 Extreme تجلي پيدا خواهد كرد، آغاز يكه تازي مجدد اينتل در بازار پردازنده ها خواهد بود. در اين مقاله ابتدا ساختار CPU و معماري آن به طور ساده بيان خواهد شد سپس به بررسي نوآوري هاي معماري Core™ و تفاوت هاي آن با معماري K8 خواهيم پرداخت و در انتها عملكرد پردازنده هايCore2 را بررسي خواهيم كرد.


نسل بعدي پردازنده هاي اينتل

از زمان نسل اول پردازنده هاي اينتل كه با معرفي پردازنده 8086 در سال 1978 آغاز شد تا كنون تنها مجموعه اي از دستورالعمل هاي آن زنده باقي مانده و هنوز در اكثر نرم افزارها از آنها استفاده مي شود، هرچند نسل هاي جديد محدوده اين دستورالعمل ها را كه به نام دستورالعمل هاي x86 شناخته مي‌شوند گسترده تر كردند ، اما سازگاري با دستورالعمل‌هاي نسل‌هاي پيشين هرگز در طراحي معماري نسل‌هاي بعدي فراموش نشد.

معماري نسل ششم پردازنده‌هاي اينتل كه از «پنتيوم پرو» تا «پنتيوم III» را در برمي گرفت يكي از موفق ترين معماري هاي اينتل به شمار مي رود، اين معماري كه P6 نام دارد توانست به پردازنده هاي اينتل آن چنان قدرتي بخشد كه مدتها رقيبي براي آنها پيدا نمي شد، اما پس از آن، معماري NetBrust به كار برده شده در پردازنده هاي «پنتيوم 4»، ديگر نتوانست به يكه تازي هاي اينتل در بازار پردازنده هاي كامپيوترهاي شخصي ادامه دهد.

معماري نسل آينده پردازنده هاي اينتل كه Core™ نام گرفته است، آن چنان متفاوت است كه شركت اينتل تصميم گرفته نام پردازنده هايي كه از اين معماري در آنها بهره برده شده ديگر «پنتيوم» نباشد، با اين كه پيش بيني مرگ «پنتيوم» در سيزدهمين سال حياتش چندان دور از انتظار نبود.

http://www.microrayaneh.com/Articles/Aimages/AmdIntel1_InteLogo.jpg


لوگو و شعار جدید اینتل

نام تجاري جديدي كه از اين پس بر روي كليه پردازنده هاي اينتل گذاشته خواهد شد، بسيار به معماري آنها نزديك است: Core2. تا كنون عرضه دو خانواده پردازنده هاي Core2 Duo براي كامپيوتر هاي ميان قيمت و Core2 Extreme براي كامپيوترهاي گرانقيمت در حوزه كامپيوترهاي روي ميزي قطعي شده و در ماه هاي آينده شاهد حضور آنها در بازار خواهيم بود، هر دو اين پردازنده ها با هسته Conroe تجهيز شده اند كه از پيكر بندي دوهسته بهره مي‌برد. در حوزه كامپيوترهاي همراه نيز هسته Merom و در حوزه كامپيوترهاي سرويس دهنده، هسته Woodcrest معرفي شده اند اما هنوز جزئيات دقيقي در مورد پردازنده هايي كه اين هسته ها در آن به كار گرفته خواهد شد داده نشده است.

شباهت بسيار زيادي ميان نام پردازنده هاي Core2 با پردازنده هاي Core Duo وجود دارد، Core Duo و برادر ارزانقيمتش Core Solo نام پردازنده هاي مدرن حوزه كامپيوترهاي همراه اينتل مي باشند كه بر پايه معماري P-M (نسخه تكامل يافته معماري P6) با هسته Yonah عرضه مي شوند، اين پردازنده هاي 32 بيتي هم اكنون در اكثر كامپيوترهاي همراه مدرن و iMac‌هاي جديد Apple استفاده مي‌شوند.




از معماري CPU چه مي دانيد؟


پيش از آنكه به بررسي معماري نسل آينده پردازنده هاي اينتل بپردازيم ابتدا اجازه دهيد تا دانستنی هاي ابتدايي كه علم به آن ضروري به نظر مي رسد را تشريح كنيم:
كدهاي اجرايي سيستم عامل و نرم افزارها در آخرين مرحله پيش از ارسال به پردازنده، مي بايست به زبان ماشين و اسمبلي تبديل شود، (دراین موارد مقالات (http://www.microrayaneh.com/Articles/ArticlesList.htm) متعددی در سایت میکرو رایانه (http://www.microrayaneh.com/) وجود دارد، به فهرست مقالات (http://www.microrayaneh.com/Articles/ArticlesList.htm) رجوع کنید) بالغ بر 50 درصد كدهايي كه پردازنده اجرا مي كند عمليات «Load» (بارگذاري از حافظه به ثبات هاي داخلي پردازنده) و عمليات «Store» (ذخيره‌سازي از ثبات‌هاي داخلي به حافظه كامپيوتر) را ديكته مي کنند، از اين ميان، اكثريت كدها «بارگذاري» و بخش اندكي كد‌هاي «ذخيره‌سازي» هستند. 15 الي 20 درصد كدها مختص دستورالعمل هاي انشعابي مانند if، then و else است كه روال پيش روي برنامه را با شروط مشخصي تعيين مي كنند.
ساير كدها بيشتر شامل دستورالعمل هاي ساده رياضي مانند ADD (جمع) يا MUL (ضرب) مي‌شوند. در اين بين تنها درصد كمي از كدها به دستورالعمل هاي سطح بالاي محاسباتي ديگر مانند DIV (تقسيم) يا SQRT (به توان دو) ترجمه مي‌شود. هر يك از اين دستورالعمل ها براي اجرا به ترتيب وارد يكي از خط‌لوله‌هاي پردازنده مي‌شود، در هر خط لوله به طور استاندارد پنج واحد زير وجود دارد:

• «واحد واكشي»:
در اين واحد دستورالعمل از حافظه اصلي خوانده شده و به ثبات‌هاي داخلي پردازنده منتقل مي‌شود، دستورالعمل واكشي شده الگويي از بيت‌ها به زبان ماشين است كه در بر گيرنده نوع عملگر و آدرس عملوند‌هاي آن است.

• «واحد كدگشايي»:
در اين واحد الگوي دستورالعمل‌ از داخل ثبات پردازنده خوانده شده و با کدگشايي آن واحد اجرايي را براي اجراي محاسبات درخواست شده آماده مي کند.

• «واحد واكشي عملوند»:
اين واحد، داده هايي كه آدرس آنها در دستورالعمل ذكر شده را از حافظه كاشه، به ثبات‌هاي داخلي پردازنده انتقال مي‌دهند.
• «واحد اجرايي»:
پس از حصول اطمينان از موجوديت داده ها در داخل ثبات هاي پردازنده و آماده سازي واحد اجرايي، واحد‌هاي رياضي و منطقي موجود در بخش اجرايي پردازنده (ALU)، محاسبه دستورالعمل را آغاز مي كنند.

• «واحد بازگيري»:
در اين مرحله نتيجه محاسبات كه داخل ثبات هاي پردازنده ذخيره شده به حافظه كاشه يا حافظه اصلي كامپيوتر منتقل مي‌شود.
http://www.microrayaneh.com/Articles/Aimages/AmdIntel1_12.jpg واحدهاي مذكور به صورت استاندارد در هر پردازنده اي وجود دارند با علم به اين مطلب در ادامه به نوآوري هاي معماري Core™ و مقايسه آن با معماري K8 خواهيم پرداخت.

MAHDIAR
27th December 2009, 07:43 AM
[]معماري Intel Core2 در مقابل AMD Athlon 64 (قسمت 2)

پيش واكشي و كاشه ‌نمودن هوشمند تر]

QUOTE]طمينان از موجوديت دستورالعمل ها و داده ها در داخل حافظه كاشه پيش از اجراي دستورالعمل، يكي از مهمترين دغدغه هاي طراحان معماري پردازنده در عصر پردازنده هاي 3 گيگاهرتزي است، اين امر شرايط لازم را براي افزايش كارايي با زياد شدن فركانس كاري پردازنده را فراهم مي‌سازد. در غير اين صورت فركانس بالاتر به معني صرف زمان انتظار بيشتر براي رسيدن اطلاعات به پردازنده خواهد بود. بخشي از پردازنده كه حافظه كاشه را براي اجراي دستورالعمل ها آماده مي‌سازد ، «بخش پيش واكشي» نام دارد، با اين وجود الگوريتم هاي سخت‌افزاري موجود براي پيش واكشي هميشه وظيفه خود را با موفقيت انجام نمي‌دهند و مورد‌هاي اندكي هنوز وجود دارد كه پس از ورود دستورالعمل به خط لوله (توضیحات بیشتردر مورد این اصطلاحات در سایر مقالات (http://www.microrayaneh.com/Articles/ArticlesList.htm) سایت میکرو رایانه (http://www.microrayaneh.com/)) داده ها با تاخير از حافظه كاشه دريافت مي‌شوند. اين موضوع باعث مي‌شود تا كارايي كلي پردازنده به ويژه در برنامه‌هايي كه به پهناي باند حافظه حساس هستند، كم شود.

بخش پيش واكشي در معماري Core™ بدون هيچ ترديدي از آنچه در معماري هاي K8 و NetBrust يافت مي‌شود برتر است. هر هسته پردازنده اي كه از اين معماري بهره مي برد حداقل سه واحد پيش واكشي (دو واحد براي داده و يك واحد براي دستورالعمل) مختص به خود دارد، دو واحد پيش واكشي ديگر نيز براي كاشه سطح 2 اين پردازنده ها در نظر گرفته شده است. لذا پردازنده هاي دو هسته اي Core2 كه با اين معماري عرضه خواهند شد با 8 واحد «پيش واكشي» مجزا مي توانند از پهناي باند حافظه موجود به صورت موثر‌تري استفاده كرده و ضريب اطمينان حضور اطلاعات در حافظه كاشه را هنگام اجراي يك دستورالعمل بالا برند.

حافظه كاشه موجود در پردازنده هاي مبتني بر معماري Core نيز در افزايش كارايي آن موثر است. يك حافظه كاشه سطح دو 4 مگابايتي ميان هر دو هسته پردازنده به اشتراك گذاشته شده است و دسترسي به آن در 12 تا 14 سيكل ساعت موثر خواهد بود. حافظه كاشه سطح يک داده و دستورالعمل نيز هر دو تا 32 كيلوبايت با زمان دسترسي 3 سيكل ساعت ارتقا پيدا كرده‌اند. بايد اضافه كرد حافظه كاشه Trace كه در معماري NetBrust از آن بهره گرفته شده بود، با توجه به خط لوله هاي كوتاه Core كنار گذاشته شده است. اين حافظه اساسا به عنوان يك بافر براي دستورالعمل هاي كدگشايي‌ نشده به كار گرفته مي شد در حالي كه اين واحد براي خط لوله هاي طولاني NetBrust مفيد واقع شده بود ، اينتل تشخيص داده كه طرح سنتي حافظه کاشه سطح يک در اين معماري موثرتر مي باشد.
http://www.microrayaneh.com/Articles/Aimages/AmdIntel1_T1.png
جدول شماره 1
تنها با يك نگاه سريع به جدول شماره «1» كاملا روشن خواهد شد كه زير سيستم حافظه طراحي شده براي Core™ نسبت به ساير معماري ها موثرتر است، ميزان حافظه كاشه سطح 2 در پردازنده هاي مبتني بر اين معماري دو برابر پردازنده هاي دو هسته اي AMD است، علاوه بر اين با وجود افزايش حجم آن ميانگين تاخير دسترسي به حافظه كاشه سطح 2 حداقل باقي مانده است، اين حافظه اشتراكي، امكان اختصاص يافتن بيش از 2 مگابايت حافظه به هر هسته را فراهم ساخته. هر دو حافظه كاشه سطح 1 و 2 با گذرگاه داخلي 256 بيت با پهناي باند بسيار گسترده اي به هسته پردازنده متصل هستند.


Core در برابر K8 : زيرسيستم حافظه

مهمترين رقيب Core ، معماري K8 دو ويژگي برتر كوچك اما غيرقابل چشم پوشي در زيرسيستم هاي حافظه دارد.
اولين ويژگي حافظه كاشه (توضیحات بیشتردر مورد این اصطلاحات در سایر مقالات (http://www.microrayaneh.com/Articles/ArticlesList.htm) سایت میکرورایانه (http://www.microrayaneh.com/)) سطح يک بزرگتر آن است، هر دو بخش دستورالعمل و داده اين حافظه، 64 كيلوبايت گنجايش دارند در حالي كه طراحان Core بر اين بخش ها 32 كيلوبايت در نظر گرفته اند. اين تنها يك برتري كوچك است چرا كه انتظار مي رود حافظه 8 طرفه 32 كيلوبايتي، عملكرد بسيار نزديكي نسبت به حافظه 2 طرفه 64 كيلوبايتي داشته باشد.

برتري دوم و با اهميت تر معماري K8، «كنترلرحافظه» مجتمع در داخل پردازنده است. در كامپيوترهاي مبتني بر اين معماري حافظه اصلي به صورت مستقيم توسط «كنترلر حافظه» داخلي پردازنده مديريت مي شوند، در حالي كه در كامپيوترهاي مبتني بر معماري هاي Intel «كنترلرحافظه» در داخل چيپ‌ست «پل‌شمالي» مادربرد قرار داشته و تعامل پردازنده با حافظه اصلي، از اين طريق صورت مي گيرد. «كنترلرحافظه» مجتمع در داخل پردازنده، دسترسي بي واسطه به حافظه اصلي با تاخير كمتر را به همراه دارد.

تاخير دسترسي به حافظه اصلي در كامپيوترهاي پنتيوم 4 تقريبا دو برابر كامپوترهاي Athlon 64 است (80 الي 90 در برابر 45 الي50 نانوثانيه). با اين وجود مهندسين اينتل در معماري جديد خود راه‌ کارهاي متعددي مانند «آشكارسازي حافظه» براي پنهان كردن اين تاخير از چشمان پردازنده ابداع كرده‌اند كه در ادامه به آنها اشاره خواهيم كرد.

http://www.microrayaneh.com/Articles/Aimages/AmdIntel1_11.jpg

دو ويژگي برتر مطرح شده در معماري K8 توسط ديگر برتري هاي زير سيستم حافظه معماري Core قابل چشم پوشي هستند، پردازنده هاي مبتني بر معماري Core‌ داراي حافظه كاشه سطح دو گسترده تر و واحدهاي پيش واكشي هوشمندتري نسبت به K8 هستند. حافظه كاشه سطح يک در Core پهناي باندي نزديك به دو برابر پهناي باند K8 ارائه مي‌كند (اندازه گيري شده با نرم افزار ScienceMark) علاوه بر اين در پيكربندي هاي دو هسته اي نيز حافظه كاشه سطح دو در Core حدود 2.5 برابر سريع تر از آنچه كه معماري K8 در پردازنده هاي Athlon 64 X2 ارائه كرده، عمل مي كند.


كدگشايي هوشمندتر

Core اولين معماري در دنياي پردازنده هاي x86 است كه به 4 واحد كدگشايي x86 تجهيز شده است: 3 «كدگشاي ساده» و يك «كدگشاي پيچيده». وظيفه واحدهاي كدگشايي در تمام پردازنده هاي x86 كنوني تنها ترجمه كردن دستورالعمل هاي ورودي (شامل كدعملگر و آدرس ها) نيست، بلكه ترجمه دستورالعمل ها با طول متغيير 1 الي 15 بيتي به دستورالعمل هاي از پيش تعيين شده با طول ثابت (دستورالعمل هاي RISC) كه زمانبندي و اجراي آنها ساده تر است نيز مي باشد، اينتل نام اين دستورالعمل ها كدگشايي شده را micro-op نهاده است.

در معماري Core، اكثر دستورالعمل ها x86 توسط يكي از سه واحدكدگشايي ساده به يك micro-op ترجمه مي شوند و ساير دستورالعمل هاي سطح بالايي كه حداكثر با چهار micro-op بيان مي‌شوند، توسط واحد كدگشايي پيچيده كدگشايي مي‌گردند.

يكي ديگر از نوآوري هاي معماري Core، «همجوشي macro-op» نام دارد، اين ويژگي تركيب دو دستورالعمل وابسته x86 را ممكن مي‌سازد. به عنوان مثال دستورالعمل مقايسه (CMP) با دستورالعمل پرش (JNE) به كمك اين ويژگي تركيب شده و به يك micro-op كدگشايي مي‌شود. اين دستورالعمل ها به طور عمومي نتيجه كامپايل عبارات شرطي if، then و else هستند.
http://www.microrayaneh.com/Articles/Aimages/AmdIntel1_1.gif
تصویر شماره 1
به كمك اين نوآوري، پردازنده هايي كه از معماري Core بهره مي‌برند، توانايي كدگشايي پنج دستورالعمل را در هر سيكل ساعت دارند ، با توجه به تصوير شماره (1)، پنج دستورالعمل به صورت هم زمان از صف دستوالعمل ها خوانده شده و در نهايت چهار micro-op كدگشايي مي‌شود.
به گفته اينتل به طور متوسط در برنامه هاي عمومي كامپيوتر، از ميان هر 10 دستورالعمل استاندارد x86 كه به پردازنده ارسال مي‌شود دو دستورالعمل قابل ادغام با همديگر هستند و دستورالعمل تركيب شده مسير خط‌لوله را همانند يك دستورالعمل ساده طي كرده و در پايان خط لوله تاثير مشابه با حالت تركيب نشده بر روي ثبات‌هاي پردازنده خواهد گذاشت. در صورتي اين ادعاي اينتل صحت داشته باشد، «همجوشي macro-op» حدود 11 درصد افزايش كارايي را به ارمغان خواهد آورد.

ديگر نوآوري اينتل در حوزه كدگشايي معماري اينتل «همجوشي micro-op» نام دارد، هدف نهايي اين ويژگي كه از معماريP-M پردازنده هاي Core Duo به ارث برده شده تركيب micro-opها با يكديگر است. دستورالعمل هاي پيچيده ي اندكي وجود دارند كه پس از كدگشايي به چندين micro-op تبديل مي شوند، در مقابل دستورالعمل هاي ساده متعددي نيز هستند كه نمي توان آنها را با يك micro-op بيان نمود. به عنوان مثال دستور ساده ADD (جمع) در صورتي كه عملوندهايش ثبات‌هاي پردازنده باشند (مانند ADD EBX,EAX) به سادگي به يك micro-op كدگشايي مي‌شود اما اگر يكي از عملوند‌ها آدرس خانه‌اي از حافظه باشد پيچيدگي اين دستور ساده براي پردازنده بسيار زياد مي شود. مانند دستور ADD [mem],EAX كه بر اساس آن مقدار ثبات EAX بايد با مقدار خانه mem حافظه جمع شده و حاصل در خانه mem قرار گيرد.

در معماري‌هاي ابتدايي مانند آنچه كه در «پنتيوم پرو» به كار برده شده بود، اين نوع دستورالعمل ها به چندين micro-op شكسته مي‌شد، زيرا واحد‌هاي محاسباتي پردازنده تنها به ثبات ها دسترسي مستقيم براي محاسبات خود دارند. بنابر اين در بهترين حالت دستورالعمل ADD [mem],EAX به دستورالعمل‌هاي زير شكسته مي‌شود:

• «بارگذاري» : MOV EBX,[mem]a
• محاسبات منطقي و رياضي : ADD EBX,EAX
• «ذخيره‌سازي» : MOV [mem],EBX

«همجوشي micro-op» امكان تركيب دستور «بارگذاري» با دستور محاسباتي را ميسر مي سازد، بنابر به كمك اين ويژگي تنها يك micro-op براي دستورالعمل بالا توسط واحد كدگشايي توليد مي‌شود. اين امر چندان كار كوچكي نيست چرا كه در طرح‌هاي قديمي كنارهم قرار دادن عملگر‌هاي محاسباتي با «بارگذاري» موجب طولاني شدن خط‌لوله و پايين آمدن حداكثر فركانس كاري پردازنده مي‌شد. در معماري نوين اينتل با استفاده از مدار‌هاي بزرگ و هوشمندتر كه به صورت همزمان چندين «همجوشي micro-op» انجام مي‌دهند، اين امر بدون اعمال محدوديت قابل ملاحظه ممكن گشته است.

Core در برابر K8 : كدگشايي
به نظر شما چگونه سه واحد «كدگشايي ساده» به اضافه يك واحد «كدگشايي پيچيده» در معماري Core با سه واحد «كدگشايي پيچيده» موجود در معماري K8 رقابت مي‌كند؟

معماري ابتدايي پردازنده هاي Athlon (معماري K7) (برای مطالعه بیشتر دراین مورد به سایر مقالات (http://www.microrayaneh.com/Articles/ArticlesList.htm) سایت میکرو رایانه (http://www.microrayaneh.com/) مراجعه نمایید) دو شيوه كدگشايي «مسير برداري» و «مسير مستقيم» داشت. كدگشايي «مسير برداري» يك دستورالعمل منجر به چندين دستورالعمل شبه RISC شده (كه AMD آنها را macro-op نام نهاده) و كدگشايي «مسير مستقيم» منجر به يك macro-op مي شود هر يك از واحدهاي كدگشايي در K7 داراي توانايي كدگشايي به دو شيوه مذكور بودند. اما از ديدگاه عملكرد، كدگشايي «مسير مستقيم» به دليل داشتن تعداد macro-op كم‌تر ترجيح داده مي‌شد. اگر از اين كه ما معماري منسوخ شده K7 را تحليل مي کنیم شگفت زده شده ايد بايد اضافه كنيم كه معماري K8 به طور گسترده اي بر پايه معماري K7 طراحي گشته است.

هر سه واحد «كدگشايي پيچيده» K7 قادر به كدگشايي «مسير مستقيم» اكثريت دستورالعمل هاي x86 مي‌باشد و بخش اندكي از دستورالعمل ها به شيوه «مسير برداري» كدگشايي مي گردند. با اين وجود برخي از دستورالعمل هاي مميزشناور و SSE مي بايست به شيوه زمان بر «مسير برداري» كدگشايي مي شدند. در معماري K8 از واحد‌هاي «كدگشايي پيچيده» قدرتمندتري بهره برده شد كه توانايي كدگشايي تمامي دستورالعمل هاي SSE و مميزشناور را به شيوه «مسير مستقيم» دارا مي باشد.

مشابه ويژگي «همجوشي macro-op» اينتل در معماري K8 شركت AMD وجود ندارد همچنين مي توان فرم ديگري از «همجوشي micro-op» را در اين معماري يافت، براي اينكه پيچيدگي اين مقايسه ها موجب سردرگمي شما نشود در جدول 2 تفاوت‌ هاي موجود را ترسيم كرده‌ايم :
http://www.microrayaneh.com/Articles/Aimages/AmdIntel1_T2.GIF
جدول شماره 2
در پردازنده هاي Athlon ويژگي «همجوشي micro-op» وجود دارد، يك دستورالعمل مشابه دستورالعمل ADD [mem],EAX در گذر از خط لوله پردازنده تنها با يك macro-op بيان مي‌شود. دستورالعمل هاي «بارگذاري» و SSE نيز در معماري Core قابل تركيب با يكديگر هستند اما اين امكان براي K8 در نظر گرفته نشده و دستورالعمل هاي SSE توسط دو macro-op مجزا اجرا مي شوند.

با توجه به اين توضيحات به نظر شما واحدهاي كدگشايي Core چگونه با K8 رقابت مي كنند؟ شايد بدون دسترسي به اطلاعات بيشتر در مورد ساير بهينه سازي هاي Core در واحد كدگشايي، نتيجه‌گيري كمي دشوار باشد، با اين وجود بر اساس مفروضات مي‌توان ايده كلي مقايسه را مطرح كرد. در اكثر وضعيت هاي موجود معماري Core برتري نسبي در اين بخش دارد، اين معماري مي تواند در هر سيكل ساعت خود 4 تا 5 دستورالعمل x86 (به لطف «همجوشي macro-op» ) را كدگشايي و به داخل خط لوله هدايت كند در حالي كه K8 در هر سيكل ساعت تنها 3 دستورالعمل را كدگشايي ميکند.

وضعيت هايي كه 3 واحد «كدگشايي پيچيده» K8 از 3 واحد «كدگشايي ساده» و يك واحد پيچيده ي Core پيشي مي گيرند بسيار اندك است. اين اتفاق زماني رخ خواهد داد كه پيچيدگي هر سه دستورالعمل واكشي شده از صف دستورالعمل ها در حدي باشد كه توسط واحد‌هاي «كدگشايي ساده» تعبيه شده در Core نتوان آنها را به micro-op تبديل كرد.


دسترسي هوشمندانه به حافظه

از زمان «پنتيوم پرو»، پردازنده هاي x86 توانايي اجراي دستورالعمل ها، خارج از نوبت را پيدا كردند. با اين حال به طور ميانگين يك سوم دستورالعمل‌ها به سادگي قابليت اجراي خارج از نوبت را ندارند، اين دستورالعمل‌ها همگي از نوع «بارگذاري» هستند، جلو انداختن دستورالعمل‌هاي «بارگذاري» افزايش عملكرد چشم‌گيري نسبت به بارگذاري داده‌ها در زماني كه به آنها نياز داريد خواهد داشت. با اين كار تاخيرهاي متعدد حافظه كاشه سطح 1 و سطح 2 از چشمان پردازنده پهنان خواهند ماند.
تصور اين افزايش كارايي بسيار ساده است، فرض كنيد يك دستورالعمل ALU در اختيار داريد كه نياز به بخش مشخصي از داده هاي ذخيره شده در حافظه را دارد اما اين بخش داده در حافظه كاشه سطح 1 موجود نباشد، در اين صورت پردازنده هنگام آغاز محاسبات بايد در انتظار دريافت داده‌هاي مذكور بماند. اگر عمليات «بارگذاري» چندين سيكل قبل از زماني كه ALU به آن بخش داده نياز دارد آغاز شود، تاخير انتقال داده از حافظه كاشه سطح 2 به سطح 1 اهميت اندكي پيدا خواهد كرد. البته «بارگذاري» خارج از نوبت داده‌اي كه قبل از آن در عمليات «ذخيره‌سازي» شركت كرده مطلوب نيست ، چرا كه اين عمل خارج از نوبت مقدار قديمي و بي ارزش داده را بارگذاري مي‌كند. به تصوير شماره 2 توجه كنيد:
http://www.microrayaneh.com/Articles/Aimages/AmdIntel1_2.gif
تصویر شماره 2
عمليات بارگذاري Load2 نمي تواند خارج از نوبت اجرا شود، چرا كه مقدار آن تا زماني كه عمليات ذخيره سازي Store1 به اتمام نرسيده ارزشمند نيست. تنها زماني كه Store1 به اتمام رسد متغير Y مقدار صحيحي پيدا خواهد كرد. با اين حال هيچ دليلي براي تاخير در پيش افتادن عمليات بارگذاري Load4 وجود ندارد، اين دستور بارگذاري مستقل از ساير دستورات ذخيره‌سازي پيشين خود است و اجراي خارج از نوبت آن توام با افزايش عملكرد نهايي خواهد بود.

در حال حاضر، پردازنده ها عمليات load4 را تا زماني كه قبل از آن عمليات «ذخيره‌سازي» وجود دارد به تاخير مي‌اندازند، چرا كه پردازنده‌هاي كنوني در شناسايي وابستگي «بارگذاري» و «ذخيره‌سازي» ناتوان بوده و امكان بارگذاري داده غير ارزشمند در صورت پيشي افتادن «بارگذاري» به وجود خواهد آمد.

در معماري Core براي اولين بار راه‌كاري براي حل اين مشكل به نام «آشكارسازي حافظه» (Memory Disambiguation) تدارك ديده شده، در اين ويژگي از الگوريتم هوشمندي استفاده شده تا وابستگي دستورالعمل «بارگذاري» را با «ذخيره‌سازي»هاي پيشين خود مشخص نمايد. اجراي خارج از نوبت «بارگذاري»ها افزايش عملكرد زيادي را به همراه خواهد آورد، در برخي از كدهاي كوچك محك زني، اينتل حداكثر 40 درصد افزايش كارايي را گزارش كرده است، اگرچه اين ميزان افزايش كارايي در برنامه‌هاي واقعي مشاهده نخواهند شد اما تاثير غير قابل انكار و افزايش عملكرد ملموسي به همراه دارد. زيرا همانطور كه در ابتداي مقاله به آن اشاره كرديم، دستورالعمل‌هاي «بارگذاري» حدود يك سوم micro-opهاي پردازنده ها در زمان اجراي يك برنامه عمومي را تشكيل مي دهند كه بارگذاري داده هاي مطلوب آنها از حافظه كاشه سطح 2 (در حالت بد تر از حافظه اصلي) منجر به كندي اجراي برنامه خواهد شد. اما اين ويژگي انعطاف پذير و نوين معماري Core چگونه با ساير معماري‌ها رقابت مي‌كند؟ به جدول شماره (3) توجه كنيد:
http://www.microrayaneh.com/Articles/Aimages/AmdIntel1_T3.GIF
جدول شماره 3
در معماري هاي P6 و P-M تدابيري براي اجراي خارج از دستور «بارگذاري» قبل از ساير «بارگذاري‌»ها انديشيده شده بود همچنين امكان جلو افتادن دستورالعمل‌هاي «بارگذاري» از«ذخيره‌سازي»هاي پيشين خود نيز در صورتي كه آدرس داده ذخيره شده شناخته شده و با آدرس «بارگذاري» متفاوت باشد فراهم آمده بود اما در اكثر موارد اين آدرس هنوز توسط محاسبه نشده و عمليات «بارگذاري» در موارد اندكي مي‌توانست از عمليات «ذخيره‌سازي» جلو بیافتد. برخلاف P6، در معماري K8 تنها امكان پيشي گرفتن «بارگذاري» از عمليات ALU (مانند دستورالعمل ADD) فراهم شده است، به طور كلي «بارگذاري»ها به تنهايي نمي‌توانند خارج از نوبت اجرا شده تا تاثير تاخير حافظه كاشه را از ميان بردارند از طرف ديگر «بارگذاري»ها نمي توانند از توان اجرايي بالقوه CPU در زماني كه پردازنده در انتظار اتمام عمليات «ذخيره‌سازي»است استفاده كنند. اين ها همه به اين معني هستند كه پردازنده Athlon 64 در اجراي خارج از نوبت كد‌ها داراي محدوديت‌هاي متعددي است.

شايد يكي از مهمترين دلايلي كه پردازنده هاي Athlon 64 علیرغم داشتن دسترسي به حافظه سریع تر و منابع محاسباتي عدد صحيح بيشتر، توانايي پيشي گرفتن از پردازنده هاي هم رده Core Duo خود را در بازي‌ها و محاسبات عدد صحيح را ندارند همين موضوع باشد.


اجراي دستورات چندرسانه‌اي
يكي ديگر از نوآوري هاي معماري Core، قدرت بالاي آن در پردازش دستورالعمل هاي چندرسانه اي SSE است، در معماري هاي پيشين اينتل تنها يك واحد 128 بيتي براي دستورالعمل هاي SSE در نظر گرفته شده همچنين در معماري K8 دو واحد SSE وجود دارد، اما در معماري Core سه واحد قدرتمند براي SSE در نظر گرفته شده است كه دو واحد آن به صورت موازي‌هم عمل مي‌كنند.

در پردازنده هاي فعلي، دستورالعمل هاي 128 بيتي SSE طي دو سيكل ساعت اجرا مي شدند، كه در سيكل اول 64 بيت ابتدايي و در سيكل دوم 64 بيت انتهايي اجرا شده نتيجه نهايي را حاصل مي كردند، با اختصاص دادن دو واحد اجرايي موازي در معماري Core به اين امر، هم اكنون امكان پردازش دستورالعمل هاي SSE در يك سيكل كلاك فراهم گشته است، علاوه بر اين سازگاري با شيوه هاي سنتي پردازش SSE نيز توسط واحد غيرموازي سوم در نظر گرفته شده.
http://www.microrayaneh.com/Articles/Aimages/AmdIntel1_3.gif
تصویر شماره 3
در تصوير شماره(3) تفاوت عملكرد واحد SSE معماري Core با ساير معماريها نشان داده شده است، حاصل عمليات SSE بر روي دو عملوند X و Y در معماري Core تنها در يك سيكل ساعت محاسبه مي گردد در حالي كه در ساير معماري ها به دليل داشتن واحد هاي SSE كمتر در دو سيكل ميسر مي‌شود.

با گسترش تعداد و كاربردهاي دستورالعمل هاي SSE در برنامه هاي چندرسانه اي مانند پردازش ويديويي، تصويري و صوتي، برنامه هاي پيچيده رمزنگاري و مهندسي، معماري Core عملكرد غير قابل مقايسه‌اي نسبت به ساير معماري‌ها ارائه خوهد كرد.[][mahdiar2008@rocketmail.com[/][/HTML][/HTML]

MAHDIAR
27th December 2009, 07:49 AM
[QUOTE][/QUOTE

]


معماري Intel Core2 در مقابل AMD Athlon 64 (قسمت 3)

سنجش عملكرد


همانطور كه در ابتداي مقاله اشاره كرديم پردازنده‌هاي حوزه كامپيوترهاي «روي‌ميزي» مبتني بر معماري Core ، با دو نام Core2 Duo و Core2 Extreme روانه بازار خواهند شد، هر دو آنها با هسته Conroe، FSB 1066 مگاهرتزي، پيكربندي دو هسته اي و قابليت پردازش 64 بيتي عرضه مي‌شوند.

اگر چه زمان عرضه رسمي پردازنده هاي Core2 نيمه دوم سال 2006 تخمين زده شده است، اما اينتل نسخه هايي از پردازنده هاي Core2 Extreme را براي معرفي و مقايسه كارايي آنها با پردازنده‌هاي رقيب پيشاپيش عرضه كرده. كه در ادامه به برخي از مقايسه هاي آن با قدرتمند ترين پردازنده دو هسته اي AMD يعني Athlon 64 FX-62 در برنامه محك زن PCMark05 اشاره خواهيم كرد. (برای مطالعه بیشتر دراین مورد به سایر مقالات (http://www.microrayaneh.com/Articles/ArticlesList.htm) سایت میکرو رایانه (http://www.microrayaneh.com/) مراجعه نمایید) فركانس كاري پردازنده Core2 Extreme آزمايش شده 2.93 گيگاهرتز است كه در آزمايش‌ها نسخه «اوركلاك» شده آن تا فركانس 3.2 گيگاهرتز نيز شركت داده شده است.
برنامه PCMark05 از مجموعه‌اي از ازمايش‌هاي تركيبي تشكيل شده كه هر آزمايش ويژه محك زدن يك زيرسيستم كامپيوتر است در نهايت بر اساس نتيجه مجموع آزمايش‌هاي صورت گرفته امتيازي به كل كامپيوتر مي‌دهد.
http://www.microrayaneh.com/Articles/Aimages/AmdIntel1_4.gif
امتياز پردازنده و حافظه كامپيوترها در PCMark05

http://www.microrayaneh.com/Articles/Aimages/AmdIntel1_5.gif
سنجش عملكرد Multi-tasking پردازنده‌ها با دو عمليات متفاوت

http://www.microrayaneh.com/Articles/Aimages/AmdIntel1_6.gif
سنجش عملكرد Multi-Tasking پردازنده‌ها با چهار عمليات متفاوت




http://www.microrayaneh.com/Articles/Aimages/AmdIntel1_7.gif
سنجش عملكرد كامپيوتر‌ها در خواندن از حافظه

http://www.microrayaneh.com/Articles/Aimages/AmdIntel1_8.gif
سنجش عملكرد كامپيوتر‌ها در نوشتن در حافظه

http://www.microrayaneh.com/Articles/Aimages/AmdIntel1_9.gif
سنجش عملكرد پردازنده‌ها در دسترسي به حافظه

سخن آخر
نسل بعدي پردازنده هاي اينتل با معماري Core آينده درخشاني خواهند داشت ويژگي هاي برتر اين معماري که در اين مقاله به آنها اشاره کوچکي کرديم، زمينه يکه تازي پردازنده هاي اينتل را فراهم خواهند كرد. علاوه بر اين بهره گيري از سکوي فعلي 775 براي پردازنده هاي نسل آينده، مقبوليت عمومي آنها را افزايش خواهد داد.
http://www.microrayaneh.com/Articles/Aimages/AmdIntel1_10.jpg
اما آيا بازي براي AMD و معماري K8 پردازنده هاي Athlon 64 به اتمام رسيده است ؟ مسلما K8 با تمام موفقيت هايش همچنان زنده خواهند ماند، با طراحي مجدد بخش هايي که ضعف K8 در آنها شناخته شده است ، AMD همچنان نقش يک رقيب سرسخت براي اينتل بازي خواهد کرد. نسخه بهينه شده اين معماري K8L نام گذاري شده است و AMD اميد دارد تا با اين معماري بتواند از موضع خود در بازار پردازنده‌هاي دفاع كند.

استفاده از تمامی مطالب سایت تنها با ذکر منبع آن به نام سایت علمی نخبگان جوان و ذکر آدرس سایت مجاز است

استفاده از نام و برند نخبگان جوان به هر نحو توسط سایر سایت ها ممنوع بوده و پیگرد قانونی دارد