PDA

نسخه کامل مشاهده نسخه کامل : رویارویی معماری ها : Intel Core2 در مقابل AMD Athlon 64



'POP'
09-09-2006, 14:29
اشاره

نزدیك به یك سال پیش در همایش IDF 2005، اینتل رسما جایگزینی معماری NetBrust پردازنده‌های پنتیوم 4
خود را با معماری قدرتمند دیگری به نام Core™ اعلام كرد.

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

این معماری جدید به تدریج به كلیه پردازنده‌های این شركت از پردازنده‌های كامپیوتر‌های همراه گرفته تا پردازنده‌های سرور‌های Xeon نفوذ خواهد كرد. از ماه آپریل سال 2001 كه پردازنده‌های پنتیوم 4 معرفی شدند، معماری NetBrust تنها معماری پردازنده‌های حوزه كامپیوتر‌های «روی‌میزی» اینتل به شمار می‌رفت.

با وجود اینكه این معماری در مقابل معماری K8 به كار گرفته شده در پردازنده های Athlon 64 شركت AMD ضعف‌های متعددی داشت، اصرار شركت اینتل بر حكم‌فرمایی آن به روی پردازنده‌های پنتیوم 4 بخش بسیار بزرگی از بازار پردازنده‌ها را به شركت AMD با معماری موفق K8 خود اهدا كرد.

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

معماری جدید Core™ كه تا چند ماه دیگر در پردازنده‌های Core2 Duo و Core2 Extreme تجلی پیدا خواهد كرد، اغاز یكه‌تازی مجدد اینتل در بازار پردازنده‌ها خواهد بود. در این مقاله ابتدا ساختار CPU و معماری آن به‌طور ساده بیان خواهد شد سپس به بررسی نوآوری‌های معماری Core™ و تفاوت‌های آن با معماری K8 خواهیم پرداخت و در انتها عملكرد پردازنده ‌هایCore2 را بررسی خواهیم كرد.



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

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

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

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

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
لوگو و شعار جدید اینتل

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

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



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

پيش از آنكه به بررسي معماري نسل آينده پردازنده‌هاي اينتل بپردازيم ابتدا اجازه دهيد تا داسنتني‌هاي ابتدايي كه علم به آن ضروري به نظر ميرسد را تشريح كنيم:

كدهاي اجرايي سيستم عامل و نرم‌افزارها در آخرين مرحله پيش از ارسال به پردازنده، مي‌بايست به زبان ماشين و اسمبلي تبديل شود، بالغ بر 50 درصد كدهايي كه پردازنده اجرا مي‌كند عمليات «Load» (بارگذاري از حافظه به ثبات هاي داخلي پردازنده( و عمليات «Store» (ذخيره‌سازي از ثبات‌هاي داخلي به حافظه كامپيوتر( را ديكته مي‌كنند، از اين ميان، اكثريت كدها «بارگذاري» و بخش اندكي كد‌هاي «ذخيره‌سازي» هستند. 15 الي 20 درصد كدها مختص دستورالعمل‌هاي انشعابي مانند if، then و else است كه روال پيش روي برنامه را با شروط مشخصي تعيين مي‌كنند.

ساير كدها بيشتر شامل دستورالعمل‌هاي ساده رياضي مانند ADD (جمع) يا MUL (ضرب) مي‌شوند. در اين بين تنها درصد كمي از كدها به دستورالعمل‌هاي سطح بالاي محاسباتي ديگر مانند DIV(تقسيم) يا SQRT (به توان دو) ترجمه مي‌شود. هر يك از اين دستورالعمل‌ها براي اجرا به ترتيب وارد يكي از خط‌لوله‌هاي پردازنده مي‌شود، در هر خط لوله به طور استاندارد پنج واحد زير وجود دارد:

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

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

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

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

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

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

واحد‌هاي مذكور به صورت استاندارد در هر پردازنده‌اي وجود دارند با علم به اين مطلب در ادامه به نوآوري‌هاي معماري Core™ و مقايسه آن با معماري K8 خواهيم پرداخت.


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

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

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

حافظه كاشه موجود در پردازنده هاي مبتني بر معماري Core نيز در افزايش كارايي آن موثر است. يك حافظه كاشه سطح دو 4 مگابايتي ميان هر دو هسته پردازنده به اشتراك گذاشته شده است و دسترسي به آن در 12 تا 14 سيكل ساعت موثر خواهد بود. حافظه كاشه سطح يک داده و دستورالعمل نيز هر دو تا 32 كيلوبايت با زمان دسترسي 3 سيكل ساعت ارتقا پيدا كرده‌اند. بايد اضافه كرد حافظه كاشه Trace كه در معماري NetBrust از آن بهره گرفته شده بود، با توجه به خط لوله‌هاي كوتاه Core كنار گذاشته شده است. اين حافظه اساسا به عنوان يك بافر براي دستورالعمل‌هاي كدگشايي‌ نشده به كار گرفته مي‌شد در حالي كه اين واحد براي خط لوله‌هاي طولاني NetBrust مفيد واقع شده بود ، اينتل تشخيص داده كه طرح سنتي حافظه کاشه سطح يک در اين معماري موثرتر مي‌باشد.

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
جدول شماره 1

تنها با يك نگاه سريع به جدول شماره «1» كاملا روشن خواهد شد كه زير سيستم حافظه طراحي شده براي Core™ نسبت به ساير معماري‌ها موثرتر است، ميزان حافظه كاشه سطح 2 در پردازنده هاي مبتني بر اين معماري دو برابر پردازنده‌هاي دو هسته‌اي AMD است، علاوه بر اين با وجود افزايش حجم آن ميانگين تاخير دسترسي به حافظه كاشه سطح 2 حداقل باقي مانده است، اين حافظه اشتراكي، امكان اختصاص يافتن بيش از 2 مگابايت حافظه به هر هسته را فراهم ساخته. هر دو حافظه كاشه سطح 1 و 2 با گذرگاه داخلي 256 بيت با پهناي باند بسيار گسترده‌اي به هسته پردازنده متصل هستند.



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

مهمترين رقيب Core ، معماري K8 دو ويژگي برتر كوچك اما غيرقابل چشم پوشي در زيرسيستم‌هاي حافظه دارد. اولين ويژگي حافظه كاشه سطح يک بزرگتر آن است، هر دو بخش دستورالعمل و داده اين حافظه، 64 كيلوبايت گنجايش دارند در حالي كه طراحان Core بر اين بخش‌ها 32 كيلوبايت در نظر گرفته‌اند. اين تنها يك برتري كوچك است چرا كه انتظار مي‌رود حافظه 8 طرفه 32 كيلوبايتي، عملكرد بسيار نزديكي نسبت به حافظه 2 طرفه 64 كيلوبايتي داشته باشد.

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

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

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

دو ويژگي برتر مطرح شده در معماري 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 هستند.

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
تصویر شماره 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) دو شيوه كدگشايي «مسير برداري» و «مسير مستقيم» داشت. كدگشايي «مسير برداري» يك دستورالعمل منجر به چندين دستورالعمل شبه RISC شده (كه AMD آنها را macro-op نام نهاده) و كدگشايي «مسير مستقيم» منجر به يك macro-op مي‌شود هر يك از واحد‌هاي كدگشايي در K7 داراي توانايي كدگشايي به دو شيوه مذكور بودند. اما از ديدگاه عملكرد، كدگشايي «مسير مستقيم» به دليل داشتن تعداد macro-op كم‌تر ترجيح داده مي‌شد. اگر از اين كه ما معماري منسوخ شده K7 را تحليل مي‌كنيم شگفت زده شده‌ايد بايد اضافه كنيم كه معماري K8 به طور گسترده‌اي بر پايه معماري K7 طراحي گشته است.

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

مشابه ويژگي «همجوشي macro-op» اينتل در معماري K8 شركت AMD وجود ندارد همچنين ميتوان فرم ديگري از «همجوشي micro-op» را در اين معماري يافت، براي اينكه پيچيدگي اين مقايسه‌ها موجب سردرگمي شما نشود در جدول 2 تفاوت‌هاي موجود را ترسيم كرده‌ايم .


[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
جدول شماره 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 توجه كنيد:

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
تصویر شماره 2

عمليات بارگذاري Load2 نمي‌تواند خارج از نوبت اجرا شود، چرا كه مقدار آن تا زماني كه عمليات ذخيره سازي Store1 به اتمام نرسيده ارزشمند نيست. تنها زماني كه Store1 به اتمام رسد متغير Y مقدار صحيحي پيدا خواهد كرد. با اين حال هيچ دليلي براي تاخير در پيش‌افتادن عمليات بارگذاري Load4 وجود ندارد، اين دستور بارگذاري مستقل از ساير دستورات ذخيره‌سازي پيشين خود است و اجراي خارج از نوبت آن توام با افزايش عملكرد نهايي خواهد بود.

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

در معماري Core براي اولين بار راه‌كاري براي حل اين مشكل به نام «آشكارسازي حافظه» (Memory Disambiguation) تدارك ديده شده، در اين ويژگي از الگوريتم هوشمندي استفاده شده تا وابستگي دستورالعمل «بارگذاري» را با «ذخيره‌سازي»هاي پيشين خود مشخص نمايد. اجراي خارج از نوبت «بارگذاري»ها افزايش عملكرد زيادي را به همراه خواهد آورد، در برخي از كد‌هاي كوچك محك‌زني، اينتل حداكثر 40 درصد افزايش كارايي را گزارش كرده است، اگرچه اين ميزان افزايش كارايي در برنامه‌هاي واقعي مشاهده نخواهند شد اما تاثير غير قابل انكار و افزايش عملكرد ملموسي به همراه دارد. زيرا همانطور كه در ابتداي مقاله به آن اشاره كرديم، دستورالعمل‌هاي «بارگذاري» حدود يك سوم micro-opهاي پردازنده‌ها در زمان اجراي يك برنامه عمومي را تشكيل مي‌دهند كه بارگذاري داده‌هاي مطلوب آنها از حافظه كاشه سطح 2 (در حالت بد تر از حافظه اصلي) منجر به كندي اجراي برنامه خواهد شد. اما اين ويژگي انعطاف‌پذير و نوين معماري Core چگونه با ساير معماري‌ها رقابت مي‌كند ؟ به جدول شماره (3) توجه كنيد:

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
جدول شماره 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 نيز توسط واحد غيرموازي سوم در نظر گرفته شده.

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
تصویر شماره 3

در تصوير شماره(3) تفاوت عملكرد واحد SSE معماري Core با ساير معماري‌ها نشان داده شده است، حاصل عمليات SSE بر روي دو عملوند X و Y در معماري Core تنها در يك سيكل ساعت محاسبه مي‌گردد در حالي كه در ساير معماري‌ها به دليل داشتن واحد‌هاي SSE كمتر در دو سيكل ميسر مي‌شود.

با گسترش تعداد و كاربرد‌هاي دستورالعمل‌هاي SSE در برنامه‌هاي چندرسانه‌اي مانند پردازش ويديويي، تصويري و صوتي، برنامه‌هاي پيچيده رمزنگاري و مهندسي، معماري Core عملكرد غير قابل مقايسه‌اي نسبت به ساير معماري‌ها ارائه خوهد كرد.



سنجش عملكرد - بخش اول

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

اگر چه زمان عرضه رسمي پردازنده‌هاي Core2 نيمه دوم سال 2006 تخمين زده شده است، اما اينتل نسخه‌هايي از پردازنده‌هاي Core2 Extreme را براي معرفي و مقايسه كارايي آنها با پردازنده‌هاي رقيب پيشاپيش عرضه كرده. كه در ادامه به برخي از مقايسه هاي آن با قدرتمند ترين پردازنده دو‌هسته‌اي AMD يعني Athlon 64 FX-62 در برنامه محك‌زن PCMark05 اشاره خواهيم كرد. فركانس كاري پردازنده Core2 Extreme آزمايش شده 2.93 گيگاهرتز است كه در آزمايش‌ها نسخه «اوركلاك» شده آن تا فركانس 3.2 گيگاهرتز نيز شركت داده شده است.

برنامه PCMark05 از مجموعه‌اي از ازمايش‌هاي تركيبي تشكيل شده كه هر آزمايش ويژه محك زدن يك زيرسيستم كامپيوتر است در نهايت بر اساس نتيجه مجموع آزمايش‌هاي صورت گرفته امتيازي به كل كامپيوتر مي‌دهد.

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
امتياز پردازنده و حافظه كامپيوترها در PCMark05


[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
سنجش عملكرد Multi-tasking پردازنده‌ها با دو عمليات متفاوت


[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
سنجش عملكرد Multi-Tasking پردازنده‌ها با چهار عمليات متفاوت



سنجش عملكرد - بخش دوم

ادامه نتایج آزمایشات :

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
سنجش عملكرد كامپيوتر‌ها در خواندن از حافظه


[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
سنجش عملكرد كامپيوتر‌ها در نوشتن در حافظه


[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
سنجش عملكرد پردازنده‌ها در دسترسي به حافظه



سخن آخر

نسل بعدي پردازنده هاي اينتل با معماري Core آينده درخشاني خواهند داشت ويژگي هاي برتر اين معماري که در اين مقاله به آنها اشاره کوچکي کرديم، زمينه يکه تازي پردازنده هاي اينتل را فراهم خواهند كرد. علاوه بر اين بهره گيري از سکوي فعلي 775 براي پردازنده هاي نسل آينده، مقبوليت عمومي آنها را افزايش خواهد داد.

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

اما آيا بازي براي AMD و معماري K8 پردازنده هاي Athlon 64 به اتمام رسيده است ؟ مسلما K8 با تمام موفقيت هايش همچنان زنده خواهند ماند، با طراحي مجدد بخش هايي که ضعف K8 در آنها شناخته شده است ، AMD همچنان نقش يک رقيب سرسخت براي اينتل بازي خواهد کرد. نسخه بهينه شده اين معماري K8L نام گذاري شده است و AMD اميد دارد تا با اين معماري بتواند از موضع خود در بازار پردازنده‌هاي دفاع كند ..
;)
---------------
winbeta.net