در کامپیوترهای چند پردازنده١، به خاطر اینکه هر پردازنده دارای یک حافظه نهان٢ اختصاصی است، لذا اشتراک

بلاکهای داده را خواهیم داشت .که این اشتراک ، حجم ترافیک شبکه و حجم ترافیک شبکه ، کارایی پردازش موازی را در چندپردازنده ها تحت تأثیر قرار می دهد . به علت اشتراک بلاکهای داده ، غالباﹰ حافظههای نهان دارای داده های ناسازگار با یکدیگر هستند. از این رو برای حل مسئله سازگاری دادهها ، نیاز به یک پروتکل یکپارچه سازی٣ بر پایه مدل سازگاری٤ است که اطمینان دهد ، تمام دستورات خواندن ، داده معتبر را بر می گردانند. در این مقاله مقایسه کارایی پروتکل های معروف ارائه

شده ، صورت گرفته است .که به این منظور ما چهار پروتکل- , Berkeley , MESI , Write-through-write Dragon
invalidate(wti) را برای یکپارچه سازی در یک سیستم چندپردازنده گذرگاه مشترک درنظرگرفتیم. ابتدا باتوجه به نتایج
شبیه سازی مناسبترین پیکربندی حافظه نهان با در نظر گرفتن معیار هزینه بر کارایی انتخاب شد ، که این پیکربندی عبارت
از ٨ کیلوبایت حافظه نهان ، ٣٢ بایت اندازه بلاک و مرتبه انجمنی ۲ می باشد ، سپس برای این پیکربندی به مقایسه

کارایی نسبی پروتکل های مذکور پرداخته شد. که نتایج نشان میدهند درمجموع پروتکل dragon بهترین کارایی و پروتکل

wti بدترین کارایی را نسبت به بقیه پروتکل ها دارند .

– multiprocessor

– cache memory

– coherence protocol

– consistency model

١

٢

٣
_

دلیل اصلی استفاده ازحافظههای نهان تسریع زمان اجرای برنامه هاست، چرا که ارجاع خواندن یا نوشتن به حافظه نهان عموماﹰ تنها در یک سیکل پردازنده تکمیل میشود،حال آنکه ارجاع به حافظه اصلی چندین سیکل به طول می انجامد. ولیکن در محیطهای چند پردازنده ای به خاطر اینکه هرپردازنده دارای یک حافظه نهان اختصاصی است، لذا اشتراک بلاکهای داده را خواهیم داشت ، که به علت اشتراک بلاکهای داده ، غالباﹰ حافظههای نهان دارای داده های ناسازگار با یکدیگر هستند . از این رو برای حل مسئله سازگاری دادهها ، نیاز به یک پروتکل یکپارچه سازی بر پایه مدل سازگاری است که اطمینان دهد، تمام دستورات خواندن، داده معتبر را بر می گردانند اما در این پروتکل ها به منظور یکپارچه سازی، پیغام های تغییرات (تغییرات وضعیت و داده) به پردازنده ها و حافظه اصلی ارسال می شود،که این خود ترافیک شبکه ارتباطی را افزایش میدهد. که ترافیک در آن دسته از پروتکل هایی که از ارسال پیغام جهت برقراری سازگاری استفاده نمی کنند، سنگین تر است، چرا که غالباﹰ بیش از آنکه ضرورت داشته باشد، داده از حافظه اصلی بار می شود. افزایش ترافیک شبکه، تأخیر ارتباطات را به همراه خواهد داشت، که این خود موجب اجرای کندتر برنامهها خواهد شد. ترافیکی که از پروتکل یکپارچه سازی حاصل می شود، به دو قسمت عمده تقسیم می شود، ترافیک مربوط به زمانیکه داده درحافظه نهان ناسازگار است که بایستی داده از یک حافظه نهان دیگر یا از حافظه اصلی دریافت شود١ و ترافیک مربوط به زمانیکه داده ای در یک حافظه نهان تغییر می یابد که بایستی پیغام هایی جهت آگاهی دیگر حافظههای نهان ارسال شود ٢ . حال مسئله کلیدی، یافتن راه حلی است که هر دو نوع ترافیک را کاهش دهد. درکل یک پروتکل یکپارچه سازی بایستی به گونه ای طراحی شودکه با در نظر گرفتن چهار موضوع زیر، بهترین کارایی کل را نتیجه دهد:

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

استراتژی اجرای یکپارچه سازی: به معنای بهنگام کردن یا نامعتبر کردن داده جهت اطمینان از اینکه داده تغییر یافته هرگز توسط هیچ پردازنده دیگری خوانده نشود.

دقت اطلاعات مربوط به اشتراک بلاکها : میزان دقت استراتژی تشخیص یکپارچه سازی را مشخص می کند که به موازنه بین هزینه پیاده سازی و کارایی وابسته است.

اندازه بلاک حافظه نهان : اندازه بلاک در واقع اندازه کوچکترین شیﺀ قابل تشخیص در پروتکل یکپارچه سازی را تعریف می کند.]۱[

در ادامه مقاله ، به معرفی پروتکل های مورد ارزیابی در بخش ۲ می پردازیم ، در بخش ۳ توصیف شبیه ساز و ارزیابی نتایج را خواهیم داشت و در نهایت در بخش های ۴ و ۵ نتیجه گیری و مراجع ذکر می شوند. لازم به ذکر است که این شبیهسازی و ارزیابی جزئی از پروﮊه طراحی یک سیستم چند پردازنده کم دستور٣ است که در گروه RISC از دانشکده مهندسی کامپیوتر دانشگاه صنعتی امیرکبیر به انجام رسیده است و در ضمن از مرکز تحقیقات مخابرات ایران ، که این تحقیق را مورد حمایت قرار داده است ،تشکر می شود.

– coherence misses

– coherence traffic

-RISC

١

٢

٣

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

پروتکلهای یکپارچه سازی شنودی١: این نوع پروتکل ها برای چندپردازندههای مبتنی بر گذرگاه استفاده می شوند، چرا که به منظور خوب کارکردن، نیاز به یک محیط ارتباطی خیلی سریع دارند.
پروتکلهای یکپارچه سازی مبتنی بر فهرست٢ : پروتکل های مزبور از عاملی به نام دایرکتوری جهت نگهداری آدرس محل بلاکها اینکه در کدام حافظههای نهان قرار دارند، استفاده می کنند.
پروتکل های یکپارچه سازی مبتنی بر کامپایلر٣ : همانطور که ازنامش پیداست، تنها این پروتکل از نوع استاتیک است، که از کامپایلر جهت تشخیص مسائل یکپارچه سازی استفاده می کند و از طریق دستورات خاصی یکپارچه سازی را اعمال می کند. البته ممکن است چنین به نظر برسد که این پیاده سازی مطلقاﹰ نرم افزاری است، اما واقعیت این است که به یکسری پشتیبانیهای سخت افزاری نیز نیاز دارد ]۳،۲،۱[

در این مقاله ، تکیه ما بر روی پروتکل های شنودی است ، که در بخش بعدی به ارزیابی کارایی نسبی این پروتکل ها در یک سیستم چندپردزنده کم دستورگذرگاه مشترک و در مقیاس کم خواهیم پرداخت.یک پروتکل یکپارچه سازی شنودی جهت کار کردن به دو چیز وابسته است. اولاﹰ تمامی پردازنده ها بایستی از طریق محیط ارتباطی سریع که امکان پخش عمومی را فراهم میسازد به هم متصل شوند. ثانیاﹰ تمامی پردازندهها قادر به شنود محیط ارتباطی در هر لحظه باشند. که البته، این دو شرط تنها در مورد گذرگاه مشترک صدق می کند.در پروتکل یکپارچه سازی شنودی، چندین پردازنده از طریق یک گذرگاه مشترک به حافظه اصلی متصل می شوند. بین پردازنده و گذرگاه یک حافظه نهان شنودی خاصی وجود دارد که تمام ترافیک روی گذرگاه را شنود می کند، که چنانچه یک عمل نوشتن از سوی پردازنده دیگر به محلی ازحافظه نهان خودش بیابد آن را بهنگام و یا نامعتبر می سازد. هنگامیکه پردازندهای به حافظه نهان خودش می نویسد، این نوشتن به صورت خودکار از طریق حافظه نهان به گذرگاه منتشر می شود، که چنانچه عمل نوشتن به حافظه اصلی نیز، علاوه بر حافظه های نهان دارای کپی مزبور، صورت بپذیرد، به آن یکجانویسی٤ ودر غیر این صورت پس نویسی٥ گویند.همان طور که پیداست، این استراتژی انجام یکپارچه سازی، تمام کپیهای دیگر یک مدخل را در صورتیکه توسط پردازنده دیگر نوشته شود، بهنگام میسازد، که به آن استراتژی بهنگام سازی گویند،روش دیگر استراتژی نامعتبر سازی است جائیکه حافظههای نهان شنودی کپیهای شان را نامعتبر می سازند. این مشابه استراتژی بهنگام سازی است به جز اینکه به جای فرستادن آدرس و داده ، پردازنده آدرس و یک پیغام نامعتبر سازی خاص را ارسال می کند، که این پیغام نسبت به پیغام استراتژی بهنگام سازی کوتاهتر خواهد بود