ارائه یک راهکار کارآمد (فیلتر پشته ای) درکاهش مصرف انرژی حافظه کش بدون تاثیر در عملکرد

عنوان:

ارائه یک راهکار کارآمد (فیلتر پشته ای) درکاهش مصرف انرژی حافظه کش بدون تاثیر در عملکرد

فهرست مطالب

عنوان    ………………………………………………………………………………………………………………….. صفحه

۱-۱      مقدمه. ۹

۱-۲      بيان مسئله. ۱۰

۱-۳      اهداف تحقيق. ۱۱

۱-۳-۱      هدف اصلي. ۱۱

۱-۳-۲      اهداف فرعي. ۱۱

۱-۴      سوالات تحقيق. ۱۱

۱-۴-۱      سوال اصلي. ۱۱

۱-۴-۲      سوالات فرعي. ۱۱

۱-۵      تعريف واژه هاي فني و تخصصي. ۱۲

فصل دوم: چهارچوب نظري تحقيق. ۱۴

۲-۱      مقدمه. ۱۵

۲-۲      حافظه ي نهان. ۱۵

۲-۳      تكنولوژي حافظه كنوني. ۱۵

۲-۴      مبانی کش.. ۱۶

۲-۵      سلسله مراتب حافظه. ۱۷

۲-۵-۱      حافظه‌ي نهان سطح اول. ۱۷

۲-۵-۲      حافظه نهان سطح آخر. ۱۷

۲-۵-۳      حافظه ي نهان اشتراكي. ۱۸

۲-۶      سلسله مراتب حافظه پنهان. ۱۸

۲-۷      پارامترهای مبانی کش.. ۱۹

۲-۷-۱      سایز کش.. ۲۰

۲-۷-۲      سایز خط کش.. ۲۰

۲-۷-۳      کش انجمنی. ۲۰

۲-۷-۴      قوانین جایگذاری کش.. ۲۰

۲-۷-۵      روش نگاشت آدرس در حافظه هاي كش.. ۲۱

۲-۷-۶      روش هاي ديناميك ذخيره كردن انر‍ژي.. ۲۲

۲-۸      نقش حافظه هاي نهان در كامپيوتر. ۲۵

۲-۹      معماري هاي حافظه نهان. ۲۵

۲-۱۰        معماري هاي تركيبي حافظه نهان. ۲۷

۲-۱۰-۱        معماري هاي حافظه نهان با دسترسي تكنواخت.. ۲۹

۲-۱۰-۲        معماري هاي حافظه نهان با دسترسي غير يكنواخت.. ۳۰

۲-۱۱        تكنولوژي به كار رفته در حافظه هاي نهان. ۳۱

۲-۱۲        مصرف انرژی  در حافظه‌هاي نهان. ۳۱

۲-۱۳        روش هاي كاهش انرژي حافظه نهان. ۳۳

۲-۱۴        معرفي معماري ARM.. 36

۲-۱۵        معماري ARM.. 37

۲-۱۶        بسط هاي ARM ISA. 40

۲-۱۶-۱         Thumb. 40

۲-۱۶-۲         Thumb 2. 40

۲-۱۶-۳     Jazell 41

۲-۱۶-۴        بسط هاي DSP. 41

۲-۱۶-۵     NEON.. 41

۲-۱۷        معماري پردازنده هاي ARM.. 41

۲-۱۸        كمك پردازنده ها (Coprocessors) 42

۲-۱۹        كاهش توان مصرفي با استفاده از فيلتر پشته. ۴۲

۲-۲۰        طراحي فيلتر پشته. ۴۳

۲-۲۱        پیشینه تحقیق. ۴۴

۲-۲۲        جمع بندي پيشينه. ۴۹

فصل سوم ۵۰

مواد و روش ها ۵۰

۳-۱      ساختار پردازنده كش.. ۵۱

۳-۲      ساختار و سازمان کش مورد مطالعه. ۵۲

۳-۳      معماري  ARM.. 53

۳-۳-۱      انواع مختلف هسته‌های مبتنی بر ARM.. 55

۳-۴      طراحی فیلتر پشته. ۵۵

۳-۵      واحد بررسی همسایگی. ۵۶

۳-۶      اصلاحات خط لوله ای.. ۵۷

۳-۷      مدیریت فیلتر پشته. ۵۷

۳-۸      سناريو شبيه سازي.. ۵۸

۳-۹      منابع مصرف برق. ۶۱

۳-۱۰               DVFS و تکنیک های مبتنی بر برنامه ریزی قدرت آگاه ۶۲

فصل چهارم ۶۳

پياده سازي پژوهش.. ۶۳

۴-۱      مقدمه. ۶۴

۴-۲      تئوري پيشنهادي پژوهش.. ۶۵

۴-۳      نتايج حاصل از شبيه سازي.. ۶۷

۴-۴      تاثير قابليت فيلتر پشته اي.. ۶۹

مراجع. ۷۵

       فهرست جداول

عنوانصفحه
جدول ۲-۱ روش هاي ذخيره سازي انرژي در حافظه هاي كش۲۱
جدول ۳-۱ پارامترهاي شبيه سازي براي پردازنده نمونه۵۵
جدول ۳-۲ پارامترهای فنی برای پردازنده های ARM شبیه سازی شده.۵۷
جدول ۳-۳ تفكيك سطح پردازنده۵۸

فهرست اشكال

عنوانصفحه
شكل ۲-۱ معماري هاي حافظه نهان با دسترسي غير يكنواخت الف) ايستاي ۱ ب) ايستاي ۲۱۴
شكل ۲-۳ معماري هاي حافظه نهان با دسترسي يكنواخت (الف) ucaمعمولي (ب) UCA سلسله مراتبي۲۴
شكل ۲-۴ معماري حافظه نهان يكنواخت يا گذرگاه مشترك و همبندي H-Tree(Kim03)28
شکل ۲-۵ سازماندهی کش آرایه۳۰
شكل۳-۱ ساختار كش ساده۴۹
شكل ۳-۲ يك كش با داده ها و تگ ها۵۰
شكل ۳-۳ سه نوع از كش هاي استاندارد. اگر X آدرس باشد، اين شكل محل هاي مختلف بلوك كش آن را كه مي تواند قرار بگيرد نشان مي دهد.۵۱
شكل ۳-۴ نمونه معماري پردازنده ARM52
شكل ۳-۱ جزئيات واحد Neck54
شكل ۴-۱ نسبت توان مصرفي uarch به فيلتر پشته اي۶۱
شكل ۴-۲ نسبت توان مصرفي  L1به فيلتر (خط اصلي / فيلتر)۶۷
شكل ۴-۳ نرخ برد فيلتر پشته اي براي ارجاع هاي حافظه براي دو معماري ARM  و X8667
شكل ۴-۵ نرخ برد فيلتر پشته اي براي ارجاع هاي پشته براي دو معماري ARM و X8668

چکیده

از مهمترين مسائل مطرح در توليد سيستم هاي موبايل، حسگرهاي بي سيم و ساير پردازنده هاي نهفته، ميزان مصرف انرژي در تراشه ي پردازنده و در حافظه ي نهان آن است اين درحالي است که بسياري از تلاش هايي که تاکنون براي غلبه بر اتلاف توان در اين حافظه انجام شده اند، منجر به کاهش کارايي آن گرديده اند.روش هاي مختلفي براي كاهش توان مصرفي حافضه هاي كش تابحال ارائه شده است كه همه محققان تلاش دارند كاهش توان مصرفي را با كمترين افت كارايي انجام دهند. كه اين مسئله موجب شده تا روش هاي مختلفي براي اين كار ارائه شود. روش هاي ارائه شده به سه دسته كلي کاهش تغییرات ولتاژ در عملیات نوشتن و تکنیک های ترانزیستور Sleep و ترانزیستور forced stack تقسيم مي شوند كه از بين اين روش هاي تكنيك خاموش كردن ترانزيستور بيشترين كاربرد را دارد و پژوهش حاضر اين از اين تكنيك اما با روشي جديد و استفاده از فيلتر پشته توان مصرفي كش را كاهش مي دهد. در اين روش از يك ساختار كوچك فيلتري استفاده مي كنيم كه از ويژگي هاي خاص ارجاع ها به ناحيه پشته بهره برداري مي كند، اين فيلتر در سطوح بالاي حافظه عمل مي كند كه شامل يك مجموعه ثبات است كه دادهاي ذخيره شده در همسايگي بالاي پشته را نگه مي دارد،‌ استفاده از اين روش ۱۰ تا ۲۰ درصد توان مصرفي كش را كاهش مي دهد.

کلمات کلیدی: حافظه نهان، كاهش توان مصرفي، مديريت فيلتر پشته، واحد همسايگي، ‌ترانزيستور

فصل اول

كليات تحقيق

 

۱-۱          مقدمه

امروزه از مهمترين مسائل مطرح در توليد سيستم هاي موبايل، حسگرهاي بي سيم و ساير پردازنده هاي نهفته، ميزان مصرف انرژي در تراشه ي پردازنده و در حافظه ي نهان آن است اين درحالي است که بسياري از تلاش هايي که تاکنون براي غلبه بر اتلاف توان در اين حافظه  انجام شده اند، منجر به کاهش کارايي آن گرديده اند و با پيشرفت فنآوري در حوزه سيستم هاي نهفته و موبايل، نياز به ابداع روش هاي جديدي براي کنترل مصرف انرژي در سيستم به وجود آمده است. از آنجا که اندازه ي تراشه ها رو به کاهش مي رود، ميزان نشتي انرژي حافظه ي نهان، کسر قابل توجهي از مصرف انرژي در پردازنده را به خود اختصاص مي دهد.(كاسيراس و مارتونوسي، ۲۰۰۱).[[۱]]

همچنين سرعت اجراي پردازنده هاي مدرن امروزي با سرعت چشمگيري در حال افزايش است که اين امر موجب شده تا فاصله بين زمان دستيابي حافظه اصلي و سرعت اجراي پردازنده با نرخ بالاتري افزايش پيدا کند. يک راه حل مناسب جهت کاهش اين فاصله استفاده از حافظه هاي نهان روي تراشه مي باشد، بطوريکه هر روزه شاهد عرضه پردازنده هايي با مقادير بيشتر حافظه نهان روي تراشه هستيم. اما با توجه به اينکه حدود ۴۰ درصد انرژي مصرفي پردازنده مربوط به حافظه نهان روي تراشه مي باشد، افزايش ميزان اين حافظه موجب مي شود تا توان مصرفي پردازنده به مقدار زيادي افزايش پيدا کند که اين افزايش توان مصرفي پردازنده موجب مي شود تا قابليت اطمينان و چگالي تراشه نيز کاهش پيدا کند. علاوه بر اين در سيستم هاي قابل حمل نيز اين افزايش توان مصرفي موجب کاهش عمر باتري مي شود. اگرچه در پردازنده هاي مدرن امروزي اغلب از حافظه هاي نهان مجازي در سطح ۱ استفاده مي شود.

مصرف انرژي در حافظه نهان بر دو نوع است؛ پويا (در زمان دسترسي به سلول هاي حافظه) و ايستا (براي نگهداري مقادير درون سلول ها در طول زمان). بسياري از تلاش هاي انجام شده براي کاهش نشتي توان در حافظه نهان، مبتني بر کاهش مصرف انرژي ايستا، از طريق خاموش کردن (خواباندن[۱]) يا نيمه بيدار[۲] نگه داشتن سلول هاي حافظه بوده اند(فلوانتر و همكاران، ۲۰۰۲)[[۲]]. اولين روش ارائه شده براي خاموش کردن انتخابي خانه هاي حافظه ي نهان به هدف کاهش مصرف انرژي، توسط آلبونسي، ۱۹۹۹[[۳]] ارائه گرديد. اما از آن جا که جريمه ي زماني اين روش بالاست، کارايي به نسبت زيادي، پايين مي آيد. پس از اين روش، تا اواخر سال ۲۰۰۳ ، راه هاي اختصاصي تري توسط افرادي مطرح گرديده اند. که در آنها، خانه هاي مشخصي در هر مجموعه[۳] خاموش مي شوند. مبناي اصلي تمامي اين تحقيقات، خاموش کردن يا به حالت نيمه بيدار بردن خانه هايي از حافظه نهان است که احتمال مي رود بعد از اين مورد استفاده نخواهند بود. اما تمامي ا ين متدها همچنان با جريمه ي کاهش کارايي و مصرف انرژي در بيدار کردن داده ها يا دسترسي مجدد به حافظه ي نهان مواجه هستند. در نهايت، در مقاله اي که توسط شرود و كاستنر، ۲۰۰۵ [[۴]] در سال ۲۰۰۵ ارائه شد، مدلي براي تخمين حداکثر صرفه جويي ممکن در مصرف انرژي ايستا در انواع روش هاي حافظه خوابيده و نيمه بيدار، براي شرايطي که دانش کامل در مورد برنامه ها در دست است، مطرح گرديد. بنابراين مي توان گفت از ديرباز محققان در تلاش براي كاهش مصرف انرژي در حافظه هاي نهان هستند، پژوهش حاضر نيز تلاش دارد تا مصرف انرژي حافظه هاي نهان را با استفاده از فيلتر پشته اي كاهش دهد به همين منظور از روش هاي بهبود ميزان باخت در كش و تاثير آن را بر افزايش عملكرد حافظه بررسي مي كنيم كه شامل ارزيابي مقايسه اي جامع در مورد طرح هاي با آدرس دهي چندگانه و بالا بردن عملكرد كش با استفاده از يك مجموعه ابزار مي شود.

۱-۲          بيان مسئله

کش داده ای L1 یکی از متداول ترین ساختارهای دستیابی در پردازنده است و از آنجایی دارای اندازه مناسب است اما یکی از مصرف کنندگان عمده از انرژی می باشد. در این پایان نامه برای کاهش توان مصرفی از یک ساختار کوچک فیلتری استفاده شده است که از ویژگی های خاص ارجاع ها به ناحیه پشته بهره برداری می کند. این فیلتر در سطوح بالای حافظه عمل می کند که شامل یک مجموعه ثبات است که داده های ذخیره شده در همسایگی بالای پشته را نگه می دارد، استفاده از این روش ۱۰ تا ۲۰ درصد توان مصرفی کش را کاهش می دهد. با توجه به اینکه هدف اصلی در طراحی های کنونی افزایش عملکرد و کاهش توان مصرفی به طور همزمان و مصرف بیش از ۴۰ درصد توان کل تراشه توسط کش های یک تراشه ای است پس طراحی را به نام کش فیلتری معرفی می کنیم که بهبود توان مصرفی را توسط ارجاع های کش فیلتری را از طریق یک کش کوچک غیر معمول L1 انجام می دهد. یک کش L2، که از لحاظ اندازه کوچک تر ولی ساختاری شبیه L1 دارد بعد از کش فیلتری قرار می گیرد تا اتلاف اجرا را به حداقل برساند. با توجه به اهمیت کاهش توان مصرفی روش فیلتر پشته ای برای این منظور بررسی شده است. همان طور که می دانیم برنامه های خاصی، نواحی حافظه ای خصوصی خاصی را به عنوان پشته برای ذخیره داده به کار می برند. معماری مورد نظر ما تعدادی ثبات محفوظ (preserved) داریم. بعد از اینکه فراخوانی تابع پایان می یابند این ثبات ها باید همان مقدار مانند شروع تابع نگه دارند. برای دستیابی به این کار، یک فراخوانی تابع همه آن ثبات های محفوظ برای نوشتن در طول برنامه در بالای پشته ذخیره می کند(push). یک بار تابع پایان می یابد, ثبات ها دوباره از داده پشته ها پر می شوند (reload) یا (pop)، برنامه بر می گردد و پردازش معمولی ادامه می یابد. همچنین زمانی که کامپایلر برای تخصیص ثبات ها به همه متغایرهای محلی شکست بخورد، باید تعدادی از آنها را به حافظه اصلی بریزد. ریختن شامل ذخیره کردن متغیری در پشته می شود زمانی که نیاز نباشد که در ثبات باشد، فراهم کردن مکان برای متغیری که باید ثبات به آن تخصیص داده شود. بعداً که متغیر دوباره مورد نیاز باشد، مقدارش از پشته به ثبات ریخته می شود. پشته یک ساختار نرم افزاری با تعدادی ابزار سخت افزاری برای مدیریت آن است.

۱-۳          اهداف تحقيق

۱-۳-۱    هدف اصلي

ارائه یک راهکار کارآمد برای کاهش مصرف توان (انرژی) بدون تاثیر بر عملکرد آن می باشد.

۱-۳-۲    اهداف فرعي

–         مديريت مصرف انرژی در حافظه کش

–         ارائه یک راهکار کارآمد (فیلتر پشته ای) درکاهش مصرف انرژی حافظه کش بدون تاثیر در عملکرد آن

–         کاهش ۱۰ تا ۲۰ درصدی مصرف انرژی در حافظه کش با استفاده از فیلتر پشته ای.

۱-۴           سوالات تحقيق

۱-۴-۱    سوال اصلي

چگونه می توان توان مصرفی حافظه های کش را با استفاده از فیلترپشته بهینه کرد؟ راهکارهای مناسب برای ارزیابی روش ارائه شده چیست؟

۱-۴-۲    سوالات فرعي

–         چه راه كار هايي براي مديريت مصرف انرژی در حافظه کش وجود دارد؟

–         كدام یک از راهکارهاي موجود در کاهش مصرف انرژی حافظه کش بدون تاثیر در عملکرد آن كارآمد تر است؟

–         چگونه مي توان ۱۰ تا ۲۰ درصد مصرف انرژی در حافظه کش را كاهش داد؟

۱-۵          تعريف واژه هاي فني و تخصصي

حافظه نهان: اصطلاح cache از کلمه Cacher فرانسه به معنای نهان کردن و مخفی کردن گرفته شده است.حافظه پنهان، میانگیر، که کاشه یا کش[۴] نیز نامیده می‌شود، بخشی از حافظه سریع که چند دستور بعدی را که باید توسط پردازنده پردازش شوند را به صورت موقت درخود جای می‌دهد تا رایانه بتواند به سرعت به آنها دسترسی داشته باشد. فایل کردن یا قرار دادن در حافظه پنهان. حافظه پنهان حافظه‌ای سریع درون پردازنده مرکزی است که جهت صرفه جویی در زمان مراجعه به حافظه اصلی بکار می‌رود. زمانی که پردازنده مرکزی به مکانی در حافظه اصلی نیاز داشته باشد احتمالاً در آینده نزدیک مجدداً به آن محل دسترسی خواهد داشت که به این اصل همجواری زمانی می‌گویند. همچنین اگر پردازنده مرکزی به مکانی در حافظه اصلی نیاز داشته باشد احتمالاً در آینده نزدیک به مکان‌های مجاور آن نیز نیاز خواهد داشت که به این اصل همجواری مکانی می‌گویند. بر این اساس حافظه نهان گاهی در زمان دسترسی به یک مکان حافظه مکان‌های مجاور آن را نیز به درون پردازنده مرکزی می‌آورد تا در صورت نیاز سریعتر قابل دسترسی باشند و این اطلاعات را تا زمانی که مورد نیاز باشند در پردازنده مرکزی حفظ می‌کند. چون با افزایش سرعت پردازنده مرکزی، پردازنده مرکزی زمان بیشتری را در حال انتظار پاسخ حافظه اصلی می‌گذراند، حجم حافظه پنهان تأثیر زیادی در بهبود کارایی پردازنده مرکزی دارد. برای آن که حافظه پنهان تأثیر مثبتی در کارایی سامانه داشته باشد می‌بایست جستجو درون آن در زمان بسیار کوتاهی انجام شود. تشخیص این که آیا داده مورد نیاز پردازنده مرکزی درون حافظه پنهان هست یا نبایست بسیار بسرعت انجام شود. به همین دلیل ساختار حافظه پنهان کاملاً با ساختار حافظه اصلی متفاوت است و بسیار پیچیده‌تر است و هرچه حجم حافظه پنهان افزایش یابد این پیچیدگی نیز بیشتر می‌شود. به همین دلیل حافظه پنهان بسیار گرانتر است و افزایش قیمت پردازنده با افزایش حجم حافظه پنهان بسیار زیاد است(روحاني و همكاران، ۱۳۹۱)[[۵]].

پشته: پشته یکی از انواع داده‌ساختارها ست و برای ذخیره و بازیابی داده ها کاربرد دارد. پشته در طراحی و پیاده‌سازی سیستم‌های نرم‌افزاری و سخت‌افزاری، فراوان به کار می‌رود. در واقع پشته نوع داده اي است كه براي ذخيره داده ها و انباشتن آنها استفاده مي شود. در اين ساختار آخرين داده هايي كه ذخيره شده اند اولين داده هايي هستند كه خوانده مي شوند. شیوهٔ عملکرد پشته بر اساس سیاست [۵]LIFO است. در حقیقت پشته، یکی از سه بخش تخصیص یافته به یک برنامه در حال اجرا در حافظه[۶] می باشد. پس از اجرای هر برنامه کاربردی آن برنامه برای پردازش توسط پردازشگر، به سه بخش در حافظه تقسیم شده و ذخیره می گردد تا در دسترس پردازشگر قرار بگیرد(مقسمي، ۱۳۸۳)[[۶]].

فصل دوم

چهارچوب نظري تحقيق

۲-۱        مقدمه

با توجه با اين كه هدف اصلي در طراحي هاي كنوني افزايش عملكرد و كاهش توان مصرفي به طور همزمان است و مصرف بيش از ۴۰ درصد توان كل تراشه توسط كش هاي يك تراشه اي است، در اين پژوهش طرحي را به نام كش فيلتري معرفي مي‌كنيم كه بهبود توان مصرفي را توسط ارجاع‌هاي كش فيلتري را از طريق يك كش كوچك غير معمول L1 انجام مي‌دهد. يك كش L2 كه از لحاظ اندازه كوچكتر ولي ساختاري شبيه L1 دارد بعد از كش فيلتري قرار مي‌گيرد تا اتلاف اجرا را به حداقل برساند. سرعت پردازنده ها به شدت در حال افزايش است در حالي كه افزايش در سرعت حافظه تقريبا كند است كه در اين قسمت از روش هاي بهبود ميزان باخت در كش و تاثير آن را بر افزايش عملكرد حافظه بررسي مي‌كنيم كه شامل ارزيابي مقايسه اي جامع در مورد طرح هاي با آدرس دهي چندگانه و بالا بردن عملكرد كش با استفاده از يك مجموعه ابزار مي شود.

۲-۲        حافظه ي نهان

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

۲-۳        تكنولوژي حافظه كنوني

با پيشرفت تكنولوژي و كاهش ابعاد ترانزيستورها به كمتر از ۴۰ نانومتر، نشان داده شده است كه استفاده از تكنولوژي هاي SRAM، DRAM دچار محدوديت هاي اساسي توان مصرفي و مقياس پذيري خواهند گرديد[[۷]].

شكل ۲-۱ معماري هاي حافظه نهان با دسترسي غير يكنواخت الف) ايستاي ۱ ب) ايستاي ۲

 

۲-۴        مبانی کش

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

در اصل کش با یک سطح کافی است. اما برای آنکه سرعت منطق از سرعت حافظه ها پیشی بگیرد، چند سطح با متعادل سازی ظرفیت/تاخیر امروزه مرسوم هستند. به عنوان مثال کش سطح-۱ یک زمان تاخیر کوچک ممکن است مناسب باشد (اولویت دادن به تاخیر نسبت به ظرفیت). در حالی که کش سطح-۲ ممکن است برای سرعت از دست دادن کم مناسب باشد. شکل ۲-۲ یک مثال از کش های امروزی است که به صورت کش Alpha 21264 به روزرسانی شده است و توسط Patterson  و Hennessy ارائه شده است [۴].

شکل ۲-۲ کش انجمنی دو طرفه ساده

۲-۵        سلسله مراتب حافظه

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

۲-۵-۱ حافظه‌ي نهان سطح اول

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

از آن جا كه حافظه ي نهان سطح آخر آخرين سطحي است كه دسترسي ها از جنس دسترسي‌هاي روي تراشه است، از هميت ويژه اي برخوردار است. [[۸]]. مديريت ناكارآمد در اين سطح مي تواند منجر به يك دسترسي خارج تراشه اي شود كه بسيار پرهزينه است. به علاوه به دليل خاصيت غربال گري سطوح بالاتر حافظه ي نهان، مجاورت زماني زيادي در طرح دسترسي ها به اين سطح وجود ندارد، از اين رو الگوريتم‌هاي مبتني بر مجاورت زماني براي اين سطح مناسب نيستند.

۲-۵-۲ حافظه ي نهان اشتراكي

حافظه هاي نهان سطح آخر در چند پردازنده ي روي تراشه غالبا بين پردازنده ها مشترك است. به اين دليل كه اين حافظه مابين تمام هسته ها مشترك است، مديريت ويژه ي منابع اشتراكي را مي طلبد.

الگوريتمي كه در اين سطح به كار مي رود،‌ بايد بتواند ميان طرح هاي متفاوت دسترسي به حافظه قائل شود و به طرح هايي اجازه ي بيشتر دسترسي به حافظه ي نهان را بدهد كه سود بيشتري از اختصاص منابع بيشتر مي برند[[۹]].

۲-۶        سلسله مراتب حافظه پنهان

همانطور كه پيش از اين نيز بيان شد، نخستين راه حل براي مقابله با كندي حافظه استفاده از حافظه اي سريع و نزديك به پردازنده در سطح تراشه (حافظه نهان) مي باشد. در تمامي پردازنده هاي امروزي سلسله مراتبي از حافظه نهان وجود دارد. هر چند اضافه شدن حافظه نهان تا چه حد زيادي از مشكلات حافظه مي‌كاهد. اما به علت نرخ فقدان بالاي حافظه نهان اين راهكار به تنهايي نمي تواند مشكل حافظه را حل كند.

نكته حائز اهميت در زمينه استفاده از حافظه نهان آن است كه طراحان پردازنده به جاي يك حافظه نهان بزرگ از چندين سطح حافظه نهان استفاده مي كنند. به اين صورت كه يك حافظه نهان سطح يك كوچك به همراه يك حافظه نهان سطح دو بزرگتر و در برخي موارد يك حافظه نهان سطح سه در داخل تراشه پردازنده قرار داده شده است[RMC 04, MCB05, KB04] دليل چنين رويكردي محدوديت هاي فن‌آوري مانند محدوديت فضا و محدود بودن بودجه ميانگير در سطح تراشه است كه مانع از قرار دادن تا حافظه نهان سطح يك بزرگ در سطح تراشه است. حافظه نهان سطح ۱ در ميان سطوح حافظه نهان به علت تاثير مستقيم روي سرعت پردازنده نقش به سزايي بر كارايي سيستم دارد. تحقيقات نشان مي‌دهد كه كارايي يك برنامه در صورتيكه حافظه نهان سطح يك داده آن كامل باشد در اغلب موارد دو برابر و در بيشترين حالت تا ۱۱ برابر نيز افزايش مي يابد از اين رو محققان به دنبال افزايش نرخ برخورد حافظه نهان سطح ۱ مي باشند. تا به امروز اين نرخ به ۹۵-۹۸ درصد رسيده ست.

در سيستم هاي رايج امروزي حافظه نهان سطح يك به دو بخش حافظه نهان داده و حافظه نهان دستور تقسيم مي‌شود. به دو دليل حافظه نهان دستور و داده از هم جدا مي شوند:

۱٫     متفاوت بودن دستور و داده از لحاظ رفتاري: آزمايشات نشان مي دهند كه محليت در دستور بيشتر از داده بوده و با داشتن يك حافظه يكپارچه حاوي داده و دستور ممكن است نرخ فقدان بالاي داده روي نرخ برخورد بالاي دستور تاثير منفي بگذارد. به همين دليل حافظه جداگانه اي براي دستور مناسب تر است. از سوي ديگر با توجه به اينكه محتواي حافظه نهان سطح ۱ دستور در اغلب اوقات فقط خوانده مي شود با جدا كردن آرايه حافظه دستور از آرايه حافظه داده، مي توان از تكنيك هاي ارتقاي عمليات خواندن در بهبود كارايي حافظه نهان دستور بهره برد.

۲٫     متفاوت بودن دستور و داده از لحاظ فيزيكي: وجود دو آرايه مجزا براي داده و دستور امكان دسترسي همزمان به اين دو ساختار را فراهم مي كند و اين باعث مي شود گام هاي خط لوله از حداكثر توازي استفاده كنند كه نهايتا موجب افزايش كارايي سيستم خواهد شد.

علاوه بر اين نرخ برخورد در حافظه هاي نهان دستور امروزي حدود ۹۹% مي باشد و آن ۱% فقدان در اثر دستورات پرش بوده و افزايش اين نرخ تاثير ناچيزي روي كارايي خواهد داشت. از اين رو تمركز محققان روي بهبود فقدان هاي حافظه نهان (سطح۱) داده مي باشد. فقدان در حافظه نهان داده به دلايلي كه جلوتر به آنها اشاره شده است رخ مي دهد. همچنين روش هايي نيز در جهت بهبود آنها ارائه شده كه در اواسط اين فصل مرور خواهد شد.

در نتيجه با وجود اينكه استفاده از حافظه نهان مهمترين راهكار براي مقابله با كندي سرعت حافظه است، ‌اما به دليل معضلاتي كه اين ساختار به آنها دچار است اين راهكار به تنهايي كافي نبود و در كنار آن روش هاي ديگري نيز براي دست يابي به حافظه اي با كارايي بالا لازم است[[۱۰]].

۲-۷        پارامترهای مبانی کش

پارامترهای اساسی موثر بر عملکرد کش به شرح زیر است [4].

۲-۷-۱ سایز کش

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

۲-۷-۲  سایز خط کش

افزایش سایز خط کش در حالی که سایز کلی آرایه داده ثابت است، اگردرخواست‌ها غالبا به کلمات همسایه خط کش بزرگتر دسترسی داشته باشد می تواند سرعت hit را افزایش دهد. اگرچه افزایش سایز خط کش ممکن است باعث کاهش کارائی کلی شود که آن هم ناشی از افزایش زمان پرشدن کش و افزایش ترافیک درگاهی شود اما باعث کاهش تعداد کلی خطوط کش یکتایی که همزمان ذخیره شده اند، می شوند.

۲-۸         کش انجمنی

کش انجمنی اشاده دارد به تعداد مکان های بالقوه درون کش دارد که برای یک خط کش با یک اندیس خاص ذخیره می شود. نگاشت مستقیمکش ها می‌توانند یک خط کش را فقط در یک مکان درون آرایه داده قرار دهند. مجموعه انجمنیکش ها می تواند یک خط را در یک تعداد محدودی از مکان های درون آرایه قرار دهد. تعدا مجموعه ها تعداد مکان های بالقوه را تعیین می کند. شمایی از کش مجموعه انجمنی دو طرفه در شکل ۲ -۲ نشان داده شده است. بنابراین دو برچسب برای هر سطر در آرایه برچسب وجود دارد. انجمنی کاملکش هایی که می توانند یک خط کش را در هر جایی درون آرایه داده قرار دهند.

۲-۸-۱                       قوانین جایگذاری کش

برای کش های مجموعه انجمنی و کش های انجمنی کامل زمان بیرون کردن داده موجود از کش و آوردن یک داده جدید برای جایگذاری آن، یک انتخاب نیاز است.  کارائی بسیار شدید وابسته به خصوصیات درخواست است. گزینه های مرسوم جایگذاری در زیر آمده است.[۴].

اولین ورودی، اولین خروجی [۷]  خارج کردن قدیمی ترین خط که به مجموعه یا کش آورده شده اند.

آخرین ورودی اولین خروج[۸]  خارج کردن جدیدترین خط که به مجموعه یا کش آورده شده اند.

اخیرا کمتر استفاده شده[۹]  خارج کردن اخیرا کمتر استفاده شده خط مرجع  در مجموعه یا کش.

تصادفی[۱۰] خارج کردن خط به صورت تصادفی از مجموعه یا کش.

بسیاری از ریزپردازنده ها به ساسیت جایگذاری این اجازه را می دهند که مطابق با نرم افزار جهت جریان مرجع مورد انتظار تغییر کنند. به عنوان مثال، ریزپردازنده Cell به برنامه نویس اجازه می هده که جدولی تنظیم کند با استفاده از آن جایگذاری را مدیریت کند. به طوری که براساس محدوده فضایی آدرس، بازه‌هایی جهت جایگذاری شناسایی کند. استفاده از طرح واره کاربرد جریان آدرس می تواند منجر به انتخاب جایگذاری LIFO برای خط کش آن شود. درحالی که برای مدیریت وقفه های حیاتی می توان از LRU انتخاب کرد یا حتی می توان خطوط کش خودش را به وسیله مشخص کردن لیستی از جای-گذاری‌های خالی پین کرد.

۲-۸-۲ روش نگاشت آدرس در حافظه هاي كش

كش استاندارد با C بايت شامل K خطوط كش است كه هريك B بايت طول دارد. علاوه بر اين، S مجموعه در هر خط كش وجود دارد، كه هريك شامل N خط كش است. آن دلالت دارد كه C=K*B و K=S*N باشد. در اين بخش به طور معمول توصيف مي كند كه آدرس هاي مختلف حافظه به يك كش نگاشت مي شوند[[۱۱]].

بدليل ويژگي به نام موقعيت فضايي احتمال دارد كه يكي از مراجع حافظه بعدي در مكاني نزديك مرجع فعلي باشد. بنابراين، اين مفهوم را دارد كه واكشي داده را نزديك مرجع فعلي به كش ايجاد كند. براي كامل كردن اين وظيفه، كل فضاي حافظه به بلوك هاي غير هم پوشاني با اندازه B تقسيم مي شود، و كل بلوك هايي كه حافظه اخير را نگه مي دارند به داخل كش آورده مي شوند. اگر تمام بيت ها جز ۳۲ بيت تا ۳۱ يكسان باشند، محل دو حافظه در همان بلوك كش است.

نگاشت هربلوك كش به مجموعه اي از كش وظيفه بعدي است. بدليل موقعيت فضايي بهتر است اطمينان حاصل كرد كه دو بلوك كش كه نزديك يكديگر آدرس دهي شدند در يك مجموعه نگاشت نمي شوند. براي اطمينان از اين، بلوك ها در يك كش در يك طرح دايره اي مانند نگاشت مي يابند، بطوري كه مجموعه داده شده هر S امين بلوك نگاشت شده را براي آن دارد. اگر دو موقعيت حافظه مقادير يكساني در ۳۲ بيت داشته باشد، دو آدرس در يك مجموعه نگشت داده مي شوند. اين بيت ها اغلب بيت هاي شاخص ناميده مي شوند چون آن ها به عنوان شاخصي براي مجموعه كش استفاده مي شوند[۱۲].

۲-۸-۳ روش هاي ديناميك ذخيره كردن انر‍ژي

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

برخي تكنيك هاي كاهش تعداد طرق دسترسي به كش در هر كش با يا استفاده از اطلاعات نرم افزاري يا اطلاعات كامپايلر يا رويكردهاي مبتني بر سخت افزار دسترسي پيدا مي كند. تكنيك هاي كمي در دسترسي داده هاي غالب با انرژ‍ي كمتر براي كاهش انرژي  ديناميك دسترسي كش هستند.

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

جدول ۲-۱ روش هاي ذخيره سازي انرژي در حافظه هاي كش

معيارروش هاي ذخيره سازي انرژي (EST ها)
EST ها با استفاده از ذخيره سازي حافظه بيشتربراي ذخيره سازي داده ها براي پيش بيني نتيجه دسترسي به كش براي پيش تعيين نتيجه دسترسي كش
كاهش تعداد راه هاي مشاوره اي در هر دسترسيبا استفاده از نرم افزار كامپايلر سخت افزار
كاهش فعاليت كليدزنيدسترسي طرق كش متوالي تطبيق تگ بيت چند گامي كاهش تگ بيت هاي فعال يا آنهايي كه در حقيقت مقايسه مي شوند تعداد دسترسي داده ها با انرژي كمتر
EST ها براي چند هسته اي يا مالتي پروسسور 

كين و همكاران كش فيلتر كوچكي را پيشنهاد دادند كه در مقابل كش L1 متعارف قرار گرفته است. با تلاش براي در نظر گرفتن اغلب دسترسي از داده هاي موجود در كش فيلتر، روش هاي آنها تعداد دسترسي هاي L1 را كاهش مي دهد و بنابراين انر‍ژي ديناميك را ذخيره مي كند. اين مبادله شامل استفاده از كش فيلتر است كه براي دستيابي منطقي با نرخ بالا در كش فيلتر مي باشد، اندازه كش فيلتر نياز به بزرگ بودن دارد، كه به نوبه خود، زمان دسترسي آن و انر‍ژي مصرفي آن را افزايش مي دهد.

دروسفو وهمكارانش درمورد معماري “كش محاسباتي” بحث مي كنند، كه درمورد ويژگي محلي بودن موقت كش ها كار مي كند. آن از سياست جايگزيني LRU استفاده مي كند كه بلوك هاي استفاده شده غالب را نزديك موقعيت هاي MRU و بنابراين بيشتر دسترسي ها به همان طريق هستند. با استفاده از اين ايده، كش محاسباتي از نظر منطقي به راه هاي كش به دو بخش تقسيم مي شود كه به نام اوليه و ثانويه مي باشد. در هر دسترسي كش از نظر اوليه تنها شيوه هاي اوليه در دسترس هستند؛ راه دوم تنها در صورتي دسترسي پيدا مي كند كه فقداني در شيوه هاي اوليه وجود داشته باشد. بنابراين، بدليل كاهش تعداد متوسط طرق مقايسه اي، كش محاسباتي انرژي ديناميك را ذخيره مي كند. اوديپي و همكارانش “دسترسي توان غيريكنواخت” را در كش پيشنهاد كردند كه طرق خاصي در كش در انرژي پايين با استفاده از سيم هاي با پيچش كم در دسترس هستند. اين طرق به صورت طرق MRU استفاده مي شوند. بنابراين، روش هاي آنها انر‍ژي را با ايجاد “مورد مشترك” ذخيره مي كند. منبع

يانگ و گوپتا درمورد طراحي كش داده “مقدار غالب” بحث كردند، كه كش داده ها را در دو آرايه تقسيم مي كند. براي ايجاد دسترسي به خطوط كش غالب، تنها آرايه اول داده ها در دسترس هستند، در حاليكه براي ايجاد دسترسي براي خطوط كش غيرغالب، هر دو آرايه هاي داده ها در دسترس هستند. علاوه براين، خطوط كش غالب به شكل كدگذاري شده و ايجاد دسترسي به آنها ذخيره مي شود، تعداد مقايسه هاي بيتي كاهش مي يابند، منجر به ذخيره سازي انرژي ديناميك مي شود.

جونز و همكاران روشي را براي ذخيره سازي انرژي در كش هاي ساختاري پيشنهاد كردند. روش آنها با استفاده از كامپايلر براي قرار دادن ساختارهاي اجرايي غالب در شروع باينري كار كردند. در زمان اجرا، اين ساختارها به طور مجزا به طرق خاصي در كش نگاشت مي شوند. وقتي اين دستورالعمل هاي واكشي شدند، تنها شيوه هاي خاصي در دسترس هستند. اين منجر به ذخيره سازي انر‍ژي ديناميك كش مي شود.

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

ژو و ژانگ روشي را ارائه دادند كه مكانيزم هاي دسترسي فازي و پيش بيني راه را براي كاهش انرژي ديناميك كش كاهش مي دهد. تكنيك آنها از حالت پيش بيني براي كنترل كش و حالت فازي (يعني دسترسي به اولين آرايه تك و مبتني بر نتيجه با دسترسي آرايه داده) براي كنترل فقدان كش استفاده مي كند. روش آنها از دو پيش بين ساده براي پيش بيني نتيجه دسترسي كش استفاده مي كند. وقتي دسترسي پيش بيني شد.منبع

۲-۹        نقش حافظه هاي نهان در كامپيوتر

کامپیوتر، ماشینی است که زمان انجام کارها توسط آن با واحدهای خیلی کوچک اندازه گیری می‌گردد. زمانیکه ریزپردازنده قصد دستیابی به حافظه اصلی را داشته باشد، می بایست مدت زمانی معادل ۶۰ نانوثانیه را برای این کار در نظر بگیرد. سرعت فوق بسیار بالا است ولی سرعت ریزپردازنده به مراتب بیشتر است. ریزپردازنده قادر به داشتن سیکل هائی به اندازه دو نانوثانیه است. تفاوت سرعت بین پردازنده و حافظه کاملا” مشهود بوده و قطعا” رضایت پردازنده در این خصوص کسب نخواهد شد. پردازنده می‌بایست تاوان کند بودن حافظه را خود بپردازد. انتظار پردازنده و هرز رفتن زمان مفید وی کوچکترین تاوانی است که می بایست پردازنده پذیرای آن باشدc  بمنظور حل مشکل فوق، فرض کنید از یک نوع حاص حافظه، با ظرفیت کم ولی با سرعت بالا (۳۰ نانوثانیه)، استفاده گردد. سرعت دستیابی به حافظه فوق دو مرتبه سریعتر نسبت به حافظه اصلی است.این نوع حافظه راL2 Cache  می‌نامند. فرض کنید از یک حافظه بمراتب سریعتر ولی با حجم کمتر استفاده و آن را مستقیما” با پردازنده اصلی درگیر نمود. سرعت دستیابی به حافظه فوق می‌بایست در حد و اندازه سرعت پردازنده باشد.این نوع حافظه ها را L1 Cache می‌گویند.

 در کامپیوتر از زیرسیستم های متفاوتی استفاده می گردد. از Cache می توان در رابطه با اکثر زیر سیستمهای فوق استفاده تا کارآئی آنان افزایش یابد.         منبع

۲-۱۰     معماري هاي حافظه نهان

نياز به حافظه نهان سطوح L2 و L3 بزرگتر در سيستم‌هاي آتي ضروري است دلايل اين امر را مي توان به صورت زير برشمرد: منبع

۱٫     افزايش اندازه برنامه ها

۲٫     نياز برنامه هاي چند نخي به حافظه نهان بزرگتر به دليل محليت مكاني

۳٫     افزايش پنهاي باند

۴٫     افزايش تعداد بيت ها در ميلي متر مربع در تكنولوژي هاي كوچكتر

اين حافظه‌هاي نهان بزرگ سبب ايجاد تاخير هاي بزرگ به دليل افزايش تاخير سيم‌هاي سراسري در سرتاسر تراشه خواهند شد در حقيقت زمان دستيابي به حافظه علاوه بر زمان دستيابي به يكنواخت زمان دستيابي به هر يك از بانك هاي معادل يا زمان دستيابي به دورترين بانك بوده كه با تغيير دسترسي يكنواخت(usa) به دسترسي غير يكنواخت(NUCA)  اين تاخير كاهش يافته و كارآيي سيستم بهبود مي‌يابد. در ادامه روند توسعه معماري هاي حافظه نهان UCA و NUCA  را تشريح كرده و مزايا و معايب هر يك را بيان مي نماييم.

شكل ۲-۳ معماري هاي حافظه نهان با دسترسي يكنواخت (الف) ucaمعمولي (ب) UCA سلسله مراتبي

اجزاي اصلي يك مسيرياب عبارتند از واحد محاسبه و مسيريابي (RC)، واحد داوري كانال مجازي (VA)، واحد داوري سوئيج (SA)  يك كليد تقاطعي جهت اتصال پورت هاي ورودي و خروجي واحد RC مسئول مسيريابي براي هر بسته با توجه به آدرس بسته و همچنين كانال مجازي موجود در مسيرياب بعدي مي باشد. واحد VA)) مسئول انجام داوري ميان بسته هاي كه درخواست دستيابي به يك كانال مجازي دارند مي باشد. واحد ((SA تعيين مي كند كه كدام يك از درخواست هاي آمده از كانال هاي مجازي سوئيچ كند. دو مرحله داوري (VA) و SA)) كه در آن مسيرياب انتخاب مي كند كه كدام بسته بايد به كانال‌هاي مجازي يا پورت خارجي برود، نقش اساسي را در انتخاب بسته ها بازي مي كنند. مسيرياب هاي فعلي از سياست ها داوري ساده اي مانند گردشي نويني براي زمان- بندي بسته ها استفاده مي كنند. در صورت استفاده از حافظه هاي مقاومتي به دليل عدم تقارن تاخير خواندن و نوشتن در آن ها،‌ استفاده از اين سياست مناسب نبوده و سبب كاهش كارآيي كلي سيستم مي شود. به همين منظور بايد مكانيزم‌هايي هوشمند و آگاه از نوع حافظه طراحي كنيم تا بتوانيم كارآيي و عملكرد سيستم را بهبود بخشيم.

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

۲-۱۱  معماري هاي تركيبي حافظه نهان

با توجه به طول عمر بالا، جريان نشتي نزديك به صفر، زمان دسترسي كم و چگالي قابل قبول، حافظه STT-RAM مي توانند جايگزين مناسبي براي حافظه نهان باشد. اخيرا نشان داده شده است به به كارگيري روش هاي سطح مدار مي توان كارايي و طول عمر آرايه هاي STT-RAM را تا حد قابل قبولي بالا برد به گونه اي كه حتي بتوان آن ها را جايگزين حافظه هاي SRAM در بانك ثباتي پردازنده كرد.

به دليل زمان دسترسي كم حافظه STT-RAM در مقايسه با ديگر تكنولوژي‌هاي غير فرار، به ارزيابي حافظه نهان STT-RAM از ديدگاه كارايي، توان مصرفي و چگالي پرداخته و امكان مجتمع سازي سه بعدي را بررسي مي كند. براي اين منظور، اين مقاله ابتدا يك مدل دقيق از توان مصرفي، كارايي و سطح اشغالي سلول ارائه داده و آن را به نمونه هاي حافظه با دسترسي تصادفي پويا و حافظه SRAM مقايسه كرده است. سپس به ارزيابي حافظه نهان از جنس تكنولوژي STT-RAM در مقايسه با حافظه اصلي از جنس DRAM پرداخته است.

در مقاله [۱۰] نشان داده شده است كه جايگزين كردن مستقيم حافظه نهان SRAM با آرايه حافظه STT-RAM سبب افزايش قابل توجه انرژي مصرفي پويا به ازاي هر ارجاع خواهد شد كه عمده آن به دليل ارجاعات نوشتن متوالي است. اين مقاله براي حالتي كه حافظه نهان سطح آخر از تكنولوژي STT-RAM ساخته مي شود، دو تكنيك سطح معماري براي كاهش نرخ ارجاعات نوشتن را پيشنهاد مي شدند. در گام اول با تغيير الگوريتم جايگزيني حافظه نهان سطوح پايين تر و اولويت دادن به حفظ بلوك هاي نوشته شده در حافظه هاي نزديك به پردازنده، اين معماري سعي در كاهش نرخ نوشتن هاي متوالي در حافظه نهان غيرفرار دارد. واضح است كه اين روش سبب افزايش نرخ شكست براي داده هاي فقط خواندني مي شود كه مي تواند اثر منفي قابل توجهي در كارآيي پردازنده داشته باشد. براي فيلتر كردن هرچه بيشتر ارجاعات نوشتن در حافظه نهان غير فرار، اين ساختار از يك ميانگير نوشتن كوچك، در جلوي حافظه نهان سطح آخر براي نگه داري و زمان بندي ارجاعات نوشتن در حافظه نهان سطح آخر استفاده مي‌كند.

در ساختار مشابه ديگري [۹] تكنيك هاي سطح معماري سعي مي نمايند تا اثرات منفي ارجاعات نوشتن به حافظه نهان غير فرار را كاهش دهند. در اين قبيل مقالات[۵],[۲] با فرض حافظه نهان مشترك غير فرار كه داراي ساختار با دسترسي غيريكنواخت مي باشد، از دو تكنيك براي مديريت عمليات نوشتن در حافظه نهان بهره مي برند. تكنيك اول بر اين فرض استوار است كه هر بانك حافظه در اين ساختار از تعداد زيادي مسير نوع STT-RAM و يك مسير نوع SRAM تشكيل شده است. اين تكنيك در سطح سيستم عامل و يا كنترل كننده حافظه نهان مطرح مي باشد و مي تواند بلوك هاي زياد نوشته شده را شناسايي و آن ها به بخش SRAM منتقل نمايد. همچنين براي كاهش اثر بلوك كردن يك بخش حافظه در ساختار با دسترسي غير يكنواخت در ارجاعات نوشتن، هر بلوك از يك ميانگين SRAM براي زمان بندي اينگونه ارجاعات استفاده مي كند و اين امر مشكل مذكور را مرتفع مي سازد. در اين بين بايد به اين نكته توجه نمود كه اين معماري به دليل استفاده از معماري تركيبي شامل SRAM و STT-RAM به منظور رفع مشكل سربار تاخير و توان مصرفي نوشتن، قابليت مقياس پذيري خوبي ندارد. همچنين به دليل استفاده از ميانگين هاي متعدد از يك سو داراي سربار توان مصرفي و سطح اشغالي قابل توجهي بوده و از سوي ديگر بهره وري كمي از خود نشان مي دهند. از طرق ديگر به دليل استفاده از بافرهاي بزرگ در مقابل بانك ها به منظور بررسي و اولويت دهي درخواست ها در داخل آن، سربار كنترلي آن افزايش مي يابد.

دسته ديگري از مقالات به مطالعه تكنولوژي حافظه تغيير فاز به عنوان تكنولوژي غير فرار حافظه نهان و يا حافظه اصلي پرداخته اند. مقالات [۱۰] و [۹] با معرفي امكان مجتمع سازي سه بعدي اين تكنولوژي‌ها در كنار مدارهاي فناوري نيم رساناي اكسيد فلزي مكمل، به ارزيابي و مقايسه پيكربندي‌هاي مختلف حافظه نهان ( سطح اول، دوم و سوم) از ديدگاه تكنولوژي هاي PCM-STT-RAM و حافظه با دسترسي تصادفي پوياي توكار پرداخته اند. نتايج ارزيابي اين دو مقاله نشان مي دهد كه مي توان با انتخاب هوشمندانه تكنولوژي ساخت سطوح مختلف حافظه نهان، توان مصرفي اين واحد پردازنده را به شدت كاهش داد، بدون آنكه اثر منفي قابل توجهي بر كارايي پردازنده داشته باشد. در مقاله [۹]  يك حافظه نهان تركيبي براي چند پردازنده‌هاي بر روي تراشه ارائه شده است. در اين تحقيق حافظه نهان به دو بخش SRAM و  STT-RAM/PCM تفكيك شده است و سعي شده با استفاده مناسب از هر يك از اين دو بخش بتوان به زمان دسترسي تكنولوژي SRAM و نرخ برخورد (چگالي) حافظه STT-RAM دست يافت.

مقاله [۱۱] بر معماري حافظه نهان سطح دوم در چند پردازنده هاي روي تراشه و تكنولوژي حافظه غير فرار STT-RAM متمركز شده است. هدف آن است كه با ارائه يك حافظه نهان تركيبي از تكنولوژي‌هاي SRAM و STT-RAM بتوان به يك ساختار واحد دست يافت كه تا حد ممكن داراي مزاياي  هر دو تكنولوژي باشد و معايب هيچكدام را دارا نباشد، به طور خلاصه معماري ارائه شده سعي مي نمايد تا در بازه هاي متفاوت اجراي يك برنامه، به طور پويا، آدرس ها با نرخ ارجاعات نوشتن متفاوت را از يكديگر تفكيك نمايند و با جابجايي مناسب آنها بين آرايه هاي SRAM و STT-RAM و نيز توزيع مناسب ارجاعات نوشتن در درون آرايه STT-RAM بتواند به يك حافظه نهان واحد با توان مصرفي پايين و طول عمر مطلوب دست يابد[[۱۳]].

۲-۱۱-۱                    معماري هاي حافظه نهان با دسترسي تكنواخت

معماري uca همان طور كه در شكل(۲-۳ (الف)) نشان داده شده است شامل پردازنده، حافظه و كنترلر حافظه مي باشد. در اين معماري درخواست هاي آمده از پردازنده به كنترلر حافظه رفته و از طريق آن سرويس دهي مي شوند. اين معماري ، ساده ترين نوع معماري حافظه نهان بوده كه در آن به دليل استفاده از حافظه نهان واحد، مشكل تصادم بين درخواست هاي آمده از هسته هاي پردازشي مختلف وجود دارد. همچنين بزرگتر شدن اندازه حافظه نهان، تاخير سيم ها كه يا مجذور طول آن نسبت دارد، افزايش مي يابد، از اين رو محققين به منظور برطرف كردن مشكل تصادم، همانند شكل (۲-۴) حافظه را به چندين بانك كوچكتر شكسته و ارتباط آن ها را از طريق گذرگاه مشترك با همبندي h_TREE برقرار مي نمايند تا همچنان دسترسي به همه بانك ها به صورت همزمان صورت پذيرد در اين معماري به دليل داشتن بانك‌هاي حافظه نهان كوچكتر و امكان دسترسي موازي و همزمان به بانك ها كارآيي سيستم بهبود يافته است اما مشكل قابليت مقياس پذيري به دليل سربار زياد سيم ها وجود دارد. به همين دليل به منظور تسهيل نسبي مشكل مقياس پذيري و بهبود كارآيي همانند شكل(۲-۳ (ب)) معماري uca چند سطحي ارائه گرديد در اين معماري كارآيي نسبت به حالت قبل بهبود يافته اما مشكل مقياس پذيري وجود دارد. منبع

شكل ۲-۴ معماري حافظه نهان يكنواخت يا گذرگاه مشترك و همبندي H-Tree(Kim03)

۲-۱۱-۲                    معماري هاي حافظه نهان با دسترسي غير يكنواخت

همانطور كه در بخش قبل بيان شد عمده كارآيي سيستم به دليل دستيابي يكنواخت در حافظه‌هايي كه تاخير سيم در آنها غالب است، از بين مي‌رود. از اينرو، اگر هر بانك حافظه نهان بتواند به صورت مستقل دستيابي شود، در اين صورت بانك هايي كه به كنترلر حافظه نزديكتر بوده داراي ميزان دستيابي كمتري مي‌باشند. بنابراين با تغيير دسترسي يكنواخت به دسترسي غير يكنواخت كارآيي سيستم بهبود خواهد يافت. شكل ۱-۳ (الف) معماري يك حافظه نهان يا دسترسي غير يكنواخت را نمايش مي دهد كه در آن به ازاي هر بانك حافظه يك گذرگاه داده و آدرس به صورت مجزا تعبيه شده است. در اين معماري با بهره مندي از دستيابي غير يكنواخت، كارآيي سيستم بهبود يافته است،‌ اما مشكل مقياس پذيري به دليل سربار زياد سيم ها وجود دارد. از اينرو محققين همواره به دنبال معماري هايي با ارتباطات كوتاه و ثابت در جهت بهبود كارآيي و مقياس پذيري ارتباطات كوتاه و ثابت در جهت بهبود كارآيي و مقياس پذيري بوده اند. در نهايت به منظور رفع مشكل سربار زياد سيم ها، بهترين معماري ارائه شده. همانند شكل ۱-۳ (ب) استفاده از شبكه روي تراشه مي باشد، يك شكه روي تراشه مبني بر بسته اتصالات مقياس پذيري را جهت متصل كردن گره هاي پردازشگر، بانك هاي حافظه نهان و كنترلر حافظه فراهم مي‌كند. مسيرياب ها و لينك هاي روي تراشه، ستون فقرات اين ارتباطات را تشكيل مي‌دهند. يك مسيرياب شبكه روي تراشه شامل P كانال ورودي تراشه، ستون فقرات اين ارتباطات را تشكيل مي دهند. يك مسيرياب شبكه روي تراشه شامل P كانال ورودي و P كانال خروجي مي‌باشد. براي يك شبكه توري دو بعدي P=5 و براي يك شبكه توري N بعدي۲n+1=P مي باشد كه ۲N كانال آن مربوط به جهت ها بوده (در هر بعد دو جهت وجود داشته و در N بعد ۲N جهت وجود دارد) و يك كانال آن جهت اتصال به گره محلي مي‌باشد.

۲-۱۲     تكنولوژي به كار رفته در حافظه هاي نهان

یکی از سوالاتی که ممکن است در ذهن خواننده این بخش خطور پیدا کند این است که “چرا تمام حافظه کامپیوترها از نوع L1 Cache نمی‌باشند تا دیگر ضرورتی به استفاده از Cache وجود نداشته باشد؟” در پاسخ می‌بایست گفت که اشکالی ندارد و همه چیز هم بخوبی کار خواهد کرد ولی قیمت کامپیوتر بطرز قابل ملاحظه ای افزایش خواهد یافت. ایده Cache، استفاده از یک مقدار کم حافظه ولی با سرعت بالا (قیمت بالا) برای افزایش سرعت و کارآئی میزان زیادی حافظه ولی با سرعت پایین (قیمت ارزان) است.

در طراحی یک کامپیوتر هدف فراهم کردن شرایط لازم برای فعالیت پردازنده با حداکثر توان و در سریعترین زمان است. یک تراشه ۵۰۰ مگاهرتزی، در یک ثانیه پانصد میلیون مرتبه سیکل خود را خواهد داشت (هر سیکل در دونانوثانیه). بدون استفاده از L1 و L2 Cache، دستیابی به حافظه حدودا” ۶۰ نانوثانیه طول خواهد کشید. بهرحال استفاده از Cache اثرات مثبت خود را بدنبال داشته و باعث بهبود کارآئی پردازنده می گردد.اگر مقدار L2 Cache معادل ۲۵۶ کیلو بایت و ظرفیت حافظه اصلی معادل ۶۴ مگابایت باشد، ۲۵۶۰۰۰ بایت مربوط به Cache با استفاده از روش های موجود قادر به Cache نمودن ۶۴۰۰۰۰۰۰ بایت حافظه اصلی خواهند بود.

۲-۱۳  مصرف انرژی  در حافظه‌هاي نهان 

مصرف انرژی در کش وابسته به تعداد دسترسی ها به کش، پیکره بندی کش (به عنوان مثال سایز خط، انجمنی، ظرفیت)، تکنولوژی کش و میزان استفاده ازتکنیک های پیاده سازی مدار با انرژی کارآمد (به عنوان مثال sub-banking، خط بیتی ایزوله شده [۱۳] [14]) است. دومولفه اصلی برچسب و آرایه های داده در کش وجود دارد. در شکل (۲-۵) آرایه داده نشان داده شده است [۱۵].

شکل ۲-۵ سازماندهی کش آرایه

مولفه‌های اصلی کش که شامل دیکودرهای سطری و ستونی، خطوط کلمه، خطوط بیت و               sense amplifier مولفه‌های اصلی مصرف انرژی هستند. انرژی در خطوط بیت در طول فاز شارژ پخش می‌شود. به طوری که ولتاژ خطوط بیت را جهت رساندن ولتاژ در دیکدرهای سطری زمانی که یک خط کش خاص برای عمل خواندن و یا نوشتن انتخاب شده اند، خطوط کلمه که هر سلول را در یک سطر خاص فعال می کند، خطوط بیتی زمانی که مقادیر از سلول ها خوانده می شوند، sense amplifier جهت تقویت ارزش خواندن و در نهایت دیکدر های ستونی که قسمتی از خط کش فعال شده را انتخاب می کند، نگه می دارد [15] .

مصرف انرژی در طول خواندن و نوشتن متغییر است. به طوری که نوسانات ولتاژ در خطوط بیت هر دو آن‌ها متفاوت است (به عنوان مثال نوشان کامل برای نوشتن و نوشان محدود برای خواندن) البته sense amplifiers در طول سیکل نوشتن استفاده می شود. خطوط بیت  و sense amplifiers به عنوان عناصر اصلی مصرف انرژی هستند [13]. برای کاهش تاثیر خطوط بیت بزرگ و ظرفیت خط کلمه و افزایش کارایی، کش ها به صورت معمول به زیر مجموعه هایی کوچکتر تقسیم می شوند [۱۵].

۲-۱۴  روش هاي كاهش انرژي حافظه نهان

همانطور كه گفته شد با افزايش اندازه حافظه نهان، توان مصرفي آن نيز افزايش مي يابد. در پردازنده هاي كنوني، حافظه نهان روي تراشه بخش قابل توجهي از انرژي تراشه را به خود اختصاص  مي دهد. براي مثال در پردازنده S-ARM 110، انرژي مصرفي حافظه نهان ۴۳% كل انرژي تراشه را تشكيل مي‌دهد(SAN96).حتي مصرف بيش از ۵۰% انرژي تراشه نوسط حافظه نهان در (SEG01) گزارش شده است. از آنجا كه اين مصرف انرژي بالا به ويژه در سيستم هايي كه با باتري كار مي كنند اثري نامطلوب است. راه‌هاي بسياري براي كاهش اين انرژي مصرفي ازائه شده است. روش هاي ازائه شده در سطوح مختلفي مانند مدار و معماري عمل مي نمايند. روش هاي ارائه شده در سطح مدار با بهينه سازي فيزيكي حافظه نهان از قبيل كاهش جريانات نشتي، تقسيم بندي فيزيكي خط كلمه و خط بيت و… سعي در كاهش انرژي تلفات انرژي حافظه نهان را دارند. اما در رده بندي معماري كه در اين بخش مورد بحث قرار مي‌گيرد با بهينه سازي الگوريتم هاي جستجو و جايگزيني به كاهش انرژي مصرفي كمك مي‌شود[[۱۴]].

مهم‌ترين منبع هدر رفتن انرژي حافظه نهان(كه امروزه تماما به صورت مجموعه انجمني پياده سازي مي‌شوند)جستجوي همزمان و موازي تمتم راه‌هاي يك مجموعه به ازاء هر دسترسي به حافظه نهان مي‌باشد. در اين حافظه ها در هر دسترسي، فيلد برچسب آدرس درخواستي به طور موازي با تمام برچسب‌هاي يك مجموعه مقايسه مي شود. همزمان با اين مقايسه، داده هاي يك مجموعه وارد ورودي مالتي پلاكسر حافظه نهان مي شود و حداكثر يكي از آنها با توجه به نتيجه مقايسه برچسب ها به خروجي منتقل مي گردد. سعي در كاهش تعداد مقايسه ها به ازاءهر دسترسي حافظه نهان بيشترين توجه محققان را به خود جلب كرده است و راه هاي زيادي براي اين كار ارائه شده است. در اينجا به بررسي كلي برخي روش‌هاي ارائه شده مي پردازيم.

در پردازنده (HKY95) Hitachi HS، يك روش دو مرحله اي براي دسترسي به حاقظه نهان به كار رفته است. در اين روش،در فاز اول ابتدا مقايسه برچسب ها صورت گرفته و سپس در فازبعدي، تنها آن راهي كه حاوي داده مورد نظر است(در صورت وقوع برخورد)فعال شده و داده به خروجي منتقل مي شود.واضح است هرچند اين روش كاهش انرژي مصرفي را به همراه دارد باعث افزايش زمان دسترسي به حافظه نهان خواهد شد. در اين روش اگر بتوانيم از قيل راهي كه داده مورد نظر در آن قرار دارد را پيش بيني كنيم، مي‌توانيم ضمن كاهش تعداد مقايسه ي برچسب ها و نيز كاهش خطوط داده فعال شده، زمان دسترسي به حافظه نهان را ثابت نگه داريم. براي پيش بيني راه ،قبل از دسترسي به يك مجموعه در حافظه نهان، روشهاي زيادي ارائه شده است.استفاده از بيت MRU  براي مشخص كردن آخرين راه دسترسي شده در هر مجموعه معروفترين اين روش ها است(CCS87)، در اين روش، در هر دسترسي به يك مجموعه ابتدا راهي كه با بيت MRU مشخص شده بررسي شده و در صورت درست نبودن پيش بيني، بقيه راه هاي مجموعه در فاز بعدي دسترسي مي شوند. (IIM99),(BHP00),(KVK00) روش هايي هستند كه معيار‌هاي مختلفي مانند بيشترين استفاده در گذشته نزديك، ذخيره شماره راه هاي استفاده شده اخير و…را براي پيش بيني راه مورد نظر به كار مي گيرند. در(ILM99) با استفاده از يك MRU دو بيتي، در ۸۶ درصد دسترسي ها به حافظه نهان، راه حاوي داده مورد نظر درست پيش بيني گرديده و كاهش ۷۰ درصدي توان مصرفي حافظه نهان گزارش شده است. معروفترين پزدازنده اي كه از ايده دسترسي دو مرحله اي همراه با پيش بيني به روش MRU استفاده مي نمايد پردازنده MIPS R 10000  مي باشد(YEA96). يك بررسي جامع بر روي كار آتي روش هاي مختلف پيش بيني راه در (KVR00) ارائه شده است.

تعداد ديگري از روش هاي كاهش انرژي، به جاي مقايسه تمام بيت هاي برچسب ها يا آدرس درخواستي، تعداد محدودي از بيت هاي برچسب را در فاز اول مقايسه مي نمايد و در صورت لزوم در فاز دوم به مقايسه ساير بيت ها در بين برچسب هايي مي پردازد كه در فاز اول با آدرس مورد نظر جور شده اند. روش بيت نگهبان در (CL02) به جاي مقايسه كامل برچسب، كم ارزش ترين بيت آن را با آدرس مورد نظر مقايسه مي نمايد و در صورت جور شدن بيش از يك راه در مرحله اول، مقايسه را با ساير بيت هاي برچسب ادامه مي دهد. اين روش باعث كاهش ۳۵ درصدي توان مصرفي حافظه نهان مي شود. مقايسه ۵ بيت كم ارزش تر برچسب (LIU94) و ۴ بيت كم ارزش تر برچسب (EG02) در فاز اول از ديگر روش هاي ارائه شده در اين رده از رويكردهاي كاهش توان حافظه مي باشد. روش اخير موفق به كاهش ۲۵ درصدي انرژي مصرفي ناشي از مقايسه برچسب ها شده است.   

يكي از روش هاي كاهش توان استفاده از يك حافظه كوچك بين حافظه نهان سطح يك پردازنده است.حافظه نهان فيلتر(KJM97) شناخته شده ترين زوش در اين رده است. حافظه فيلتر يك حافظه نهان كوچك نگاشت مستقيم است كه بالاتر از حافطه نهان سطح يك قرار دارد. اين حافظه در پردازنده آخرين داده هاي دسترسي شده،توسط پردازنده مي باشد. دسترسي به حافظه نهان نگاشت مستقيم نيازمند انرژي بسيار كمتري نسبت به حافظه هاي انجمني مي باشد. هرچند اين روش نيز دسترسي به حافظه نهان را دو مرحله اي مي نمايد، طبق خاصيت محليت مراجعات بيشتر داده هاي مورد نظر در حافظه فيلتر يافت مي‌شود. (KJM97) با استفاده از يك حافظه فيلتر ۲۵۶ بايتي با افزايش ۲۱ درصدي زمان دسترسي به حافظه نهان توانسته است ۵۸ درصد از انرژي حافظه نهان را كاهش دهد[[۱۵]].

از ديگر راه هاي كاهش انرژي حافظه هاي نهان مجموعه انجمني، باز پيكربندي پوياي حافظه نهان بر اساس ميزان محليت برنامه هاي در حال اجرا‌ء مي باشند. لازم به نوضيح است كه باز پيكر  بندي مطرح شده در اينجا در سطح معماري انجام مي گيرد و نه در سطح مدار و با استفاده از تراشه هاي منطقي برنامه يذير. (DHA99) يك روش براي بهينه كردن اندازه و تعداد راه هاي حافظه نهان توسط نرم افزار و بر‌اساس رفتار برنامه در حال اجراء ارائه مي نمايد.يك ثبات به نام ثبات تعيين راه مشخص مي‌نمايد كه كدام يك از راه هاي مجموعه ها فعال و كدام غير فعال باشند. براي مثال، با غير فعال كردن ۲ تا از راه هاي يك حافظه نهان ۴ راهه ۳۲ كيلو بايتي مي توان يك حافظه ۱۶ كيلو بايتي ۲ راهه به دست آورد. با اين روش مي توان به يك مصالحه بين توان مصرفي و كار آني دست زد.در(PO01) يك زوش جالبتر براي تغيير پيكربندي ارائه شده است. اين روش نيز با افزودن يك مدار ساده به حافظه نهان معمولي، درجه انجمني حافظه نهان را بر اساس ميزان محليت موجود در برنامه در حال اجراءتغيير مي دهد. اما اين روش، هنگام كاهش درجه انجمني به جاي غير فعال كردن چند راه حافظه نهان،آنها را به راه هاي فعال اضافه مي نمايد. بنابراين يك حافظه نهان ۳۲ كيلوبايتي ۴ راهه مي تواند براي مثال به يك حافظه نهان ۳۲ كيلوبايتي ۲ راهه تبديل شود. (CC03) روشي را ارائه مي‌نمايد كه با استفاده از يك مدار اضافي، بر اساس رفتار برنامه، حافظه نهان بين حالت هاي مجموعه انجمني و نگاشت مستقيم در تغيير خواهد بود. به علاوه در اين روش اگر تشخيص داده شود كه چند درخواست پشت سر هم به يك بلاك حافظه نهان اشاره كنند، مقايسه برچسب براي درخواست هاي بعدي حذف خواهند شد. در آخرين نسخه هسته پردازشي M*Core شركت موتورولا نيز از يك حافظه نهان مجموع انجمني ۴ راهه استفاده شده است كه هر راه مي تواند غير فعال شود و يا انحصارا به كد و يا داده اختصاص داده شود(MCOR) علاوه بر درجه انجمني، اندازه بلاك هاي حافظه نهان هم تاثير زيادي بر مصرف توان آن دارد. نتايج تحليل ارائه شده در(ZWN03) نشان مي دهد كه استفاده از اندازه بلاك قابل باز پيكر بندي براي حافظه نهان مي تواند اثرات زيادي(تا ۵۰ درصد) در كاهش توان مصرفي حافظه نهان داشته باشد. روشي به نام حافظه نهان ستوني براي بخش بندي پوياي حافظه نهان در(CJR00)ارائه شده است. در اين روش، با تقسيم بندي نخ هاي موجود در يك سيستم چند نخي به چند دسته و اخنصاص يك بردار بيتي به هر يك از اين دسته ها، راه هايي  از مجموعه هاي حافظه نهان كه نوسط هر دسته از نخ ها قابل استفاده است تعيين مي گردد. جهت انجام دسته بندي، يك فيلد براي نگهداري شماره دسته به TLB اضافه شده و صفحات حافظه متعلق به نخ هاي هردسته با يك شماره يكسان مشخص مي شوند. اين بردار هاي بيتي تنها هنگام نوشتن يك داده در حافظه نهان اعمال شده و داده‌هاي موجود در صفحات حافظه متعلق به هر دسته از نخ ها، در راه هايي كه توسط بردار آنها مشخص شده است جاي مي‌گيرند.[[۱۶]]

۲-۱۵  معرفي معماري ARM

 برخلاف شركت هايي مانند Intel, AMD و IBM كه معماري پردازنده هاي خود را در اختيار توليدكنندگان ديگر قرار نمي دهند، شركت ARM مجوز استفاده از معماري پردازنده هاي خود را به سازندگان مختلف واگذار مي كند تا آن ها بتوانند با اعمال تغييرات، پردازنده اي مبتني بر نيازهاي خود توليد كنند. در حقيقت، شركت ARM سازنده پردازنده نيست و تنها عرضه كننده يك معماري است، در حالي كه Intel و AMD سازنده پردازنده هستند.

معماري كه ARM توسعه داده در حقيقت يك معماري RISC سي و دوبيتي است. معماري RISC با وجود موفقيت هاي بسيار، در مقابل پلتفرم x86 (معماري مورد استفاده در پردازنده هاي Intel و AMD) نتوانست به موفقيت دست پيدا كند و بنابراين در كامپيوترهاي خانگي و سيستم هاي سرور مورد استفاده قرار نگرفت. همان طور كه گفته شده، شركت ARM اجازه استفاده از معماري پردازنده هاي خود را به شركت هاي مختلف مي دهد. اين مجوز در دو سطح پياده سازي و معماري ارائه مي شود. مجوز پياده سازي اطلاعات كامل موردنياز براي طراحي و ساخت مدارات مجتمع شامل هسته پردازنده را فراهم مي كنند. مجوز ساخت هسته پردازنده نيز در دو نوع مختلف عرضه مي شود: هسته هاي نرم و هسته هاي سخت. مجوز هسته سخت براي فرآيند ساخت ويژه بهينه سازي شده، در حالي كه مجوز هسته نرم، فرآيند ساخت عادي دارد و براي كاربرد ويژه اي بهينه نشده است. مجوز معماري نيز به دارنده پروانه اجازه مي دهد تا پردازنده اش را مطابق با ARM ISA توسعه دهد.

معماري ARM به واسطه ويژگي هاي بي مانندي كه دارد به يكي از محبوب ترين معماري هاي امروزي مبدل شده است. اين معماري، در مقايسه با بيشتر پردازنده هاي رايج امروزي خيلي ساده است، به طوري كه پردازنده هاي مبتني بر آن را مي توان با تعداد كمي ترانزيستور ساخت. اين موضوع سبب شده تا فضاي زيادي روي سطح پردازنده براي ماكروسل هاي (Macrocell) ويژه برنامه هاي كاربردي در اختيار سازنده قرار گيرد. يك چيپ ست ARM مي تواند شامل چندين كنترلر خارجي، يك پردازنده سيگنال ديجيتال و مقداري حافظه مجتمع شده همراه با يك هسته ARM باشد.

هدف هر دو طراحي خط لوله و ARM ISA، به حداقل رساندن مصرف انرژي است. مصرف توان كمتر يكي از فاكتورهاي مهمي است كه در وسايل همراه مورد توجه قرار مي گيرد. سازندگان چنين وسايلي همواره تمايل دارند از قطعاتي با مصرف توان پايين تر در محصولات خود استفاده كنند. معماري ARM انعطاف پذيري بالايي دارد، به طوري كه تنها بخش اجباري يك پردازنده ARM، مسير پردازشي عدد صحيح آن است و اجزاي ديگر شامل حافظه نهان، MMU، مميز شناور و ديگر اجزاي پردازنده اختياري هستند. اين موضوع نيز انعطاف پذيري بالايي را در ساختمان پردازنده هاي مبتني بر ARM فراهم كرده است. در نهايت اگر چه اين پردازنده ها كوچك و كم مصرف هستند، اما كارايي بالايي در برنامه هاي كاربردي فراهم مي كنند. به عنوان مثال، پردازنده PXA255 XScale با فركانس چهارصد مگاهرتز كارايي تقريباً برابري با «پنتيوم ۲» سيصد مگاهرتزي ارائه مي كند، در حالي كه مصرف توان آن پنجاه برابر كمتر است.

بررسي معماري پردازنده هاي ARM پردازنده هايي براي تمامي فصول!

۲-۱۶  معماري ARM

 در اوايل دهه هشتاد ميلادي، معماري ريزپردازنده ها بسيار پيچيده بودند، به طوري كه شركت هاي بزرگ نيز براي طراحي يك پردازنده جديد به زمان زيادي نياز داشتند. در آن زمان مهندسان شركت معروف Acron Computer دريافتند كه ريزپردازنده هاي تجاري نمي توانند نيازهايشان را برطرف كنند، زيرا آن ها نسبت به حافظه هاي استاندارد قابل دسترس، آهسته تر بوده و مجموعه دستورالعمل هاي پيچيده اي داشتند كه اجراي آنها نيازمند هزاران سيكل بود. بنابراين مهندسان اين شركت تصميم گرفتند براي مصارف خود ريزپردازنده جديدي طراحي كنند و معماري ARM را براي اولين بار در سال ۱۹۸۳ عرضه كردند.

دو سال پيش از اين، پروژه Berkeley RISC1 نشان داده بود كه به طور عملي ساخت يك پردازنده خيلي ساده با كارايي برابر با پيشرفته ترين پردازنده هاي CISC امكان پذير است (پردازنده هاي CISC پردازنده هايي هستند كه هريك از دستورالعمل هاي آن ها مي تواند عمليات سطح پايين مانند بارگذاري از حافظه، عمليات رياضي و ذخيره سازي در حافظه را با يكديگر انجام دهد).

بنابراين شركت اكرون تصميم گرفت از رويكرد Berkeley استفاده كند و دو سال بعد در سال ۱۹۸۵ آن ها اولين پردازنده ۲۶ بيتي Acron RISC Machine را معرفي كردند كه در حقيقت اولين پردازنده تجاري RISC جهان است. پردازنده هاي مبتني بر اين معماري داراي كمتر از ۲۵ هزار ترانزيستور بودند و كارايي برابر يا حتي بالاتر از پردازنده شركت اينتل كه در آن زمان به تازگي معرفي شده بود، ارائه مي كردند. اين معماري اكنون به عنوان معماري نسخه ARM1 شناخته مي شود.

نسل دوم معماري ARM در سال ۱۹۸۷ عرضه شد. اين معماري داراي حافظه نهان مجتمع شده درون پردازنده و قابليت پشتيباني از كمك پردازنده ها (Coprocessors) بود. در سال ۱۹۹۰ شركت اپل طي يك اقدام استراتژيك تصميم به استفاده از يك پردازنده مبتني بر معماري ARM در Newton PDA خود گرفت. در نتيجه اين تصميم، همكاري مشتركي بين اپل و اكرون براي طراحي كي پردازنده جديد آغاز شد. همكاري اين دو شركت به تأسيس شركت جديدي به نام ARM (مخفف عبارت Advanced RISC Machines ) منجر شد. بررسي معماري پردازنده هاي ARM پردازنده هايي براي تمامي فصول!

نسخه سوم معماري ARM به وسيله اين شركت جديد توسعه داده شد. اين نسخه شامل ويژگي هايي مانند آدرس دهي ۳۲ بيتي، پشتيباني MMU و دستورالعمل هاي ضرب ۶۴ بيتي (Multiply Accumulate) شد. اين نسخه از معماري ARM در پردازنده هاي خانواده ARM 6 و ARM 7 به كار گرفته شده است.

چهارمين نسخه معماري ARM در سال ۱۹۹۶ عرضه شد. اكنون تمامي معماري هاي نسل هاي قبل منسوخ شده و مورد استفاده قرار نمي گيرند. به عبارت ديگر، قديمي ترين نسخه معماري ARM كه امروزه مورد استفاده قرار مي گيرد، نسخه چهارم اين معماري است. از اين معماري در پردازنده هاي خانواده ARM7 و پردازنده هاي خانواده StrongARM شركت اينتل استفاده شده است. معماري نسل چهارم در دو نسخه ARMv4 و ARMv4T عرضه شده است كه ARMv4T داراي ويژگي جديد پشتيباني از مجموعه دستورالعمل هاي به هم فشرده شانزده بيتي Thumb است. كدهاي Thumb در مقايسه با كدهاي ARM سي و دو بيتي چهل درصد فضاي كمتر اشغال مي كنند، اما از لحاظ كارايي، اندكي ضعيف تر عمل مي كنند. يكي از برجسته ترين خانواده هاي مبتني بر معماري ARMv4T، خانواده ARM7TDMI است. در حال حاضر، هسته هاي مبتني بر اين خانواده يكي از محبوب ترين هسته هاي ARM هستند و در بيشتر پخش كننده هاي iPod شركت اپل شامل iPod Classic مورد استفاده قرار مي گيرد. ARM7TDMI داراي خط لوله سه مرحله اي مشابه با اولين طراحي ARM در سال ۱۹۸۵ است و فقط شامل سي هزار ترانزيستور است.  در سال ۱۹۹۹ پنجمين نسل معماري ARM عرضه شد. اين نسل شامل دو نسخه TE وTEJ مي شود. در نسخه TE ويژگي Thumb بهبود پيدا كرد و مجموعه دستورالعمل هاي DSP (پردازش سيگنال ديجيتال) به معماري ARM افزوده شد. نسخه TEJ در سال ۲۰۰۰ عرضه شد و فناوري Jazelle را به پردازنده هاي مبتني بر معماري ARM افزود. اين فناوري موجب مي شود تا كدبيت هاي جاوا نسبت به ماشيني كه فقط به صورت نرم افزاري از جاوا پشتيباني مي كند، به طور قابل توجهي با كارايي بالاتر اجرا شوند.

هسته هاي مبتني بر اين فناوري كدبيت هاي جاوا را هشت برابر نسبت به سيستم هايي كه داراي چنين شتاب دهنده سخت افزاري نيستند، سريع تر اجرا مي كنند. اين فناوري علاوه بر افزايش كارايي موجب كاهش هشتاد درصدي مصرف توان در كاربردهاي جاوا مي شود. محبوب ترين كاربرد اين معماري در پردازنده XScale شركت اينتل است. اين پردازنده در مدل متنوعي از وسايل پيشرفته شامل پردازنده هاي شبكه، گوشي هاي موبايل و PDAها مورد استفاده قرار گرفته است (تصوير ۳).

نسل ششم معماري ARM در سال ۲۰۰۱ معرفي شد و شامل بسط مجموعه دستورالعمل هاي SIMD، بهبود مجموعه دستورالعمل هاي Thumb، فناوري Virtualisation TrustZone و پشتيباني چندين پردازنده اي است. بسط مجموعه دستورالعمل هاي SIMD موجب بهبود كارايي در كاربردهاي صوتي و تصويري مي شود. گوشي هاي شركت نوكيا(سري Nokia 5800، Nokia E71، Nokia E63، Nokia N97، Nokia E75، Nokia E51 و Nokia N81) داراي پردازنده اي مبتني بر اين معماري هستند (تصوير ۴).

نسل هفتم معماري ARM كه در بيشتر پردازنده هاي خانواده Cortex مورد استفاده قرار گرفته، شامل سه نسخه معماري متمايز R،A و M است. نسخه A براي كاربردهاي سطح بالا و حرفه اي، نسخه R براي سيستم هاي Real-Time و نسخه M براي ميكروكنترلرها و كاربردهاي سطح پايين بهينه شده است. تمامي نسخه هاي نسل هفتم معماري ARM شامل فناوري Thumb 2 هستند. نسخه هاي R و A اين معماري شامل فناوري NEON نيز مي شوند و در نهايت معماري ARM نسخه هفت شامل ويژگي هايي مانند مجموعه دستورالعمل هاي SIMD و بهبود پشتيباني از اعداد مميزي (مميز شناور) است.

بررسي معماري پردازنده هاي ARM پردازنده هايي براي تمامي فصول!

۲-۱۷  بسط هاي ARM ISA

 بسط هاي گوناگوني كه طي چند سال اخير همراه با معماري هاي ARM معرفي شده اند، امكانات و ويژگي هاي جديدي را به پردازنده هاي مبتني بر اين معماري افزوده اند. در ادامه به بررسي ويژگي ها و امكانات هر يك از اين بسط ها مي پردازيم. منبع

۲-۱۷-۱                    Thumb

 مجموعه دستورالعمل هاي Thumb در نسخه چهارم معماريARM معرفي شده است كه كدهاي بيشتري را براي كاربردهاي توليدكنندگان مختلف فراهم مي كند. Thumb يك زيرمجموعه از عمومي ترين دستورالعمل هاي ARM سي و دو بيتي را كه درون كدهاي عملياتي (Opcode- كدهاي عملياتي بخشي از دستورالعمل هاي زبان ماشين هستند كه اجرا شدن عمليات را مشخص مي كند) با اندازه شانزده بيت فشرده شده است، فراهم مي كند. در زمان اجرا، اين دستورالعمل هاي شانزده بيتي مي توانند از وضعيت فشرده خارج شده و به دستورالعمل هاي ARM سي و دو بيتي مبدل شود يا به طور مستقيم توسط يك واحد رمزگشايي اختصاصي Thumb اجرا شوند. اگر چه كد Thumb نسبت به كد ARM سي و دو بيتي معادل، چهل درصد بيشتر دستورالعمل استفاده مي كند، اما به سي درصد فضاي كمتر نياز دارد. همچنين كد Thumb نسبت به كد ARM چهل درصد آهسته تر است. بنابراين Thumb موجب كاهش كارايي مي شود و به طور معمول در كارهايي كه حساس به كارايي نيستند، كاربرد دارد. Thumb اگرچه موجب كاهش كارايي مي شود، اما موجب كاهش مصرف توان سيستم مي شود كه يك معيار بسيار مناسب براي سيسستم هاي همراه به شمار مي آيد.

۲-۱۸     Thumb 2

 يك مجموعه از دستورالعمل هاي سي و دو بيتي است كه در كنار دستورالعمل هاي شانزده بيتي سنتي كه در Thumb بكار گرفته شده بود، اجرا مي شود. Thumb 2 مي تواند نياز به Thumb را در يك سيستم كاهش داده يا به طور كامل حذف كند. اين فناوري موجب بهبود كارايي در برخي مواقع نيز موجب كاهش مصرف توان مي شود. منبع

۲-۱۸-۱                    Jazell

 فناوري Jazell سخت افزاري است كه به پردازنده هاي ARM اجازه مي دهد تا «بايت كدهاي» جاوا را اجرا كند. آن دسته از معماري هايي كه داراي چنين ويژگي هستند، در كاربردهاي جاوا كارايي بالاتر به همراه مصرف توان پايين تر را فراهم مي كنند.

۲-۱۸-۲                    بسط هاي DSP

 سيستم هاي مبتني بر ARM وظايف پردازش سيگنال را با استفاده از كمك پردازنده DSP اختصاصي اجرا مي كنند. در برخي از مواقع پشتيباني از DSP به وسيله هسته اصلي ARM مناسب است. يك بسط ISA متناظر در پنجمين نسخه اين معماري معرفي شده است. اين ويژگي هنگامي كه عمليات جمع و تفريق و ضرب شانزده بيتي اشباع شود از آن ها پشتيباني مي كند. اين ويژگي در ششمين نسخه ARM به كار گرفته شد و به بسط مجموعه دستورالعمل هاي SIMD اضافه شد كه اجازه مي دهد دو دستورالعمل محاسباتي شانزده بيتي يا چهار دستورالعمل محاسباتي هشت بيتي به طور همزمان اجرا شود.

۲-۱۸-۳                    NEON

 اين فناوري كه گاهي با نام Advanced SIMD شناخته مي شود، در معماري نسل هفتم مورد استفاده قرار گرفته و براي كاربردهاي حرفه اي، وسايل همراه كم مصرف و علاقمندان به رسانه ها طراحي شده است. فناوري NEON يك معماري هايبريد SIMD نوع ۶۴ يا ۱۲۸ بيت است كه به وسيله ARM براي شتاب دادن به كارايي چند رسانه اي و برنامه هاي كاربردي پردازش سيگنال شامل رمزگذاري/ رمزگشايي ويدئويي، گرافيك سه بعدي، فشرده سازي رمزگشايي صوتي و پردازش تصاوير توسعه داده شده است.

۲-۱۹  معماري پردازنده هاي ARM

پردازنده هاي ARM از خط لوله براي پردازش استفاده مي كنند. پردازنده هاي مبتني بر خط لوله داراي سه وضعيت كاري براي اجراي يك دستورالعمل هستند:

 1. واكشي اطلاعات از حافظه[۱۱]

۲٫ رمزگشايي اطلاعات واكشي شده[۱۲]

 3. اجراي برنامه رمزگشايي شده[۱۳]

 به عبارت ساده تر، در سيكل اول، دستور اول واكشي مي شود، در سيكل دوم، دستور اول رمزگشايي و دستور دوم واكشي مي شود و در سيكل سوم، دستور اول اجرا و دستور دوم رمزگشايي و دستور سوم واكشي مي شود. به اين نوع سيستم خط لوله سه مرحله اي گفته مي شود. خط لوله ها از اولين پردازنده ARM تا هسته ARM7TDMI سه مرحله اي هستند و در نسخه هاي بالاتر تعداد مراحل خط لوله ها افزايش پيدا كرده است. به طور مثال، پردازنده هاي ARM9 داراي خط لوله هاي پنج مرحله اي هستند كه عمليات خواندن و نوشتن از حافظه ها نيز جزء اين عمليات قرار گرفته است. خط لوله ها در ARM10 شش مرحله اي و در ARM11 هشت مرحله اي هستند. به طور كلي، هرچه تعداد مراحل خط لوله ها افزايش پيدا كند، قدرت پردازش پردازنده و در نتيجه كارايي آن افزايش مي يابد.

۲-۲۰  كمك پردازنده ها (Coprocessors)

 معماري ARM از يك مكانيزم عمومي براي توسعه مجموعه دستورالعمل ها از طريق افزايش كمك پردازنده ها پشتيباني مي كند. براي نمونه، واحدهاي مميز شناور به عنوان يك كمك پردازنده به كار گرفته مي شوند. يك مثال ديگر از كمك پردازنده، كمك پردازنده كنترل سيستم است كه بافر نوشتن، TLB، حافظه نهان و MMUها را مديريت مي كند.

معماري ARM يك پروتكل براي تعامل بين هسته ARM و كمك پردازنده ها و همچنين دستورالعمل هايي براي انتقال داده بين ARM و كمك پردازنده ها معين كرده است. كمك پردازنده ها نيازمند يك معماري بارگذاري ذخيره سازي (Load-Store) هستند. هر كمك پردازنده مي تواند حداكثر شانزده ثبات از هر نوع اندازه اي داشته باشد. به طور كلي، سه نوع دستورالعمل مربوط به كمك پردازنده توسط هسته ARM اصلي به رسميت شناخته شده است. منبع

۲-۲۱  كاهش توان مصرفي با استفاده از فيلتر پشته

با توجه به اهميت كاهش توان مصرفي روش فيلتر پشته اي را براي اين منظور بررسي مي‌كنيم. همان طور كه مي دانيم برنامه هاي خاصي، نواحي حافظه اي خصوصي خاصي را به عنوان پشته براي ذخيره موقت داده به كار مي‌برند. معماري مورد نظر ما تعدادي ثبات call-preserved داريم. بعد از اينكه فراخواني تابع پايان مي يابند اين ثبات ها بايد همان مقدار مانند شروع تابع نگه دارند. براي دستيابي به اين كار، يك فراخواني تابع همه آن ثبات هاي call-preserved براي نوشتن در طول برنامه در بالاي پشته ذخيره مي‌كند (push). يك بار تابع پايان مي يابد ثبات ها دوباره از پشته ها پر مي شوند(reload) يا (pop) ، برنامه برمي‌گردد و پردازش معمولي ادامه مي يابد. همچنين زماني كه كامپايلر براي تخصيص ثبات ها به همه متغيرهاي محلي شكست بخورد، بايد تعدادي از آن ها را در حافظه اصلي بريزد. ريختن شامل ذخيره كردن متغيري در پشته مي شود زماني كه نياز نباشد كه در ثبات باشد، فراهم كردن مكان براي متغيري كه بايد ثبات به آن تخصيص داده شود. بعدا كه متغير دوباره مورد نياز باشد، مقدارش از پشته به ثبات ريخته مي‌شود. پشته يك ساختار نرم افزاري با تعدادي ابزار سخت افزاري براي مديريت آن است.[۶]

۲-۲۲  طراحي فيلتر پشته

محققان بسياري با اين ايده موافق اند كه لوكاليتي ارجاع هاي پشته، مزاياي زيادي را براي كش كردن دارد. سه هدف اصلي براي طراحي فيلتر پشته نياز است: پياده سازي كردن يك فيلتر خيلي كوچك فقط ۳۲-۸ كلمه، در فرضيه ما فيلتر را قبل از،‌ بر حسب سلسله مراتب،‌كش $dll قرار مي گيرد. اين كار تحت يك فشار زياد انجام مي شود. بنابراين بايد از هر penalty  اضافي در باخت ها جلوگيري شود. براي غلبه به اين فشار، ما يك واحد عملكردي جديد در خط لوله، به نام واحد neck قرار داديم. براي كشف زودتر بردها و باخت ها فرضيه ما به اشاره گر پشته ($sp) بر مبناي آدرس دهي وابسته نيست. فيلتر پشته اي با استفاده از يك فايل رجيستري براي نگه داشتن N كلمه در همسايگي بالاي پشته طراحي مي شود. براي جلوگيري از انجام دادن عمليات اضافي حافظه، داده به فيلتر در مسير  درخواست بار مي شود و فقط زماني كه اصلاح شده باشد نوشته مي شود فيلتر دو بيت وضعيت براي هر ثبات دارد، «معتبر»، «نامعتبر»، زماني اين بيت ها در حافظه هاي كش نشانده مي شوند كه ثبات داده معتبر نگه دارد، و يا اگر به ترتيب اصلاح شود وگرنه باز نشانده مي شوند. مكان هاي حافظه به ثبات ها به ترتيب فاصله شان با TOS نگاشت مي‌شوند. تغييرات روي $sp ( اشاره گر پشته) منجر به تغيير فاصله داده تا TOS مي‌شود. براي نگاشت پشته به فيلتر همسان(coheren)، زماني كه $sp توسط p كلمه تغيير مي‌كند، ثبات ها، بايد به اندازه p مكان براي تصحيح تغيير فاصله در پشته جابه جا شوند اما ما با استفاده از يك بافر چرخشي از اين جابه جايي جلوگيري كرديم. فايل رجيستري با يك اشاره گر مبناRbase  ايجاد مي شود كه به رجيستري اشاره مي‌كند كه TOS را نگه مي دارد. بنابراين زماني كه $sp با p كلمه اصلاح مي‌شود، P كلمه اول فيلتر خارج مي شوند و سپس Rbase با اضافه كردم p به مقدارش به روز مي‌شود. آن p كلمه از بالاي پشته برداشته مي‌شوند اگر اصلاح يك انقباض باشد (p<0) و از پايين پشته برداشته مي شود اگر يك انبساط باشد (p>0).

۲-۲۳  پیشینه تحقیق

در مقاله [۱] تکنیکی برای مدیریت کمبودها برای الگوهای تولید کننده – مصرف کننده ارائه شده است. این مقاله [۱] با جست و جو و کشف  توان دسترسی خاصی که در الگوهای اشتراک تولید کننده – مصرف کننده وجود دارد و استفاده از محلیت فضایی بافرهای اشتراک گذاری شده می‌تواند به صورت تهاجمی که بلاک های کش L2 این بافرها خاموش شوند. این روش با استفاده از شبیه ساز Chip – Multiprocessors'(CMP) شبیه سازی شده است و نتایج مصرف انرژی برروی  تراشه L2 در کش، درگاه‌های اشتراک گذاری شده و حافظه خارج از دسترس را بیشتر از ۳/۳۱%  نسبت به تمام تکنیک‌های مدیریت انرژی مصرفی کش، بدون ازدست دادن مقدار چشمگیری از کارائی، افزایش می‌دهد.

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

در مقاله [۲] برای حافظه کش معماری  ارائه شده است. این معماری از کنترل gated-Vdd در هر بلوک کش و از شمای فشرده‌سازی دادهای دینامیکی در کش دوم بهره گرفته است. زمانی که بلاک کش قادر خواهد بود که فشرده‌سازی شود، داده های فشرده شده در فضایی کوچکتر نسبت به سایز اصلی بلاک ذخیره می‌شوند وفضای خالی توسط کنترل gated-Vdd بازگردانده می‌شود. داده ها توسط الگوریتم فشرده‌سازی X-RL فشرده می‌شوند. در این روش [۲]، فقط فضایی از کش که هیچ داده معتبری ندارد، بازگزدانده می‌شوند. بنابراین روش ارائه شده شامل از دست دادن هیچ کش اضافی‌ایی نیست.

شبیه سازی متد ارائه شده با استفاده از SPEC 95 integer انجام شده است ونتایج حاصل از آن نشان می‌دهد که تکنیک ارائه شده در این مقاله، کمبود انرژی را حداکثر در حدود ۴۵% و به طور متوسط در حدود ۲۸% کاهش داده است.

 
 

در جدول (۳-۳) درصدی از منطقه تراشه که توسط پردازشگر بخش های متفاوت ARM  با استفاده از فیلتر ۳۲ کلمه ای اشغال شده است، را نشان داده ایم. در ادامه آنالیز کمی جهت درک بهتر طراحی ارائه شده آمده است.

جدول ۳-۳ تفكيك سطح پردازنده

flitrBTB$il1+tlb$dl1+tlbRASBimodRegs
Int   FP   
0.424.36.4+29.16.4+29.10.30.62.4  1.2

پیکربندی های x86 برای مطالعه تطبیقی شبیه سازی با استفاده از pin[17] که یک ابزار باینری پویا است، انجام شده به طوری که به ما این اجازه را می دهد که ابزار ارجاع های حافظه و اصلاحات $sp جهت شبیه سازی فیلتر پشته در معماری استفاده كنيم.

محدوديت هاي پژوهش

ü                  يكي از محدوديت هاي پژوهش كمبود شديد منابع در زمينه اين پژوهش بود

ü                  يكي ديگر از محدوديت هاي اين پژوهش استفاده از روش فيلتر پشته اي و نبود چهارچوب و زمينه ي كار به دليل جديد بودن روش بود

مراجع

[۱]K. G. a. M. B. Kamble.1999. “Reducing power in superscalar processor caches using subbanking, multiple line buffers ,and bit-line segmentation,” in In Proc. 1999 Internaional Symposium Low Power Electronics and Design,.
[2]C.-L. S. a. A. M. Despain. 1995.”Cache design trade-off for power and performance optimization: A case study,” in International Symposium on Low Power Electronics and Design.
[3]S. Kim2003. “ENERGY-EFFICIENT HIGH PERFORMANCE CACHE ARCHITECTURES,” in The Pennsylvania State University.
[4]J. R. Srinivasan. 2011″Improving cache utilisation,” in Technical Report, University of Cambridge, Computer lablatory.
[5]J. K. Hyunhee Kim.2011 “A leakage-aware L2 cache management technique for producer–consumer,” J. Parallel Distrib. Comput., p. 1545–۱۵۵۷, ۲۴ August.
[6]T. K. Kiyofumi Tanaka.2007.”Leakage Energy Reduction in Cache Memory by Data,” ACM SIGARCH Computer Architecture News, vol. Vol. 35, no. No. 5, pp. 17 – 24, December.
[7]F. C. ,. L. P. F. T. R. Gonzalez-Alberquilla.2010 “Stack filter: Reducing L1 data cache power consumption,” Journal of Systems Architecture, no. 56, p. 685–۶۹۵٫
[۸]S. H. Z. M. M. Kaxiras. 2001.”Cache Decay: Exploiting Generational Behavior to Reduce Cache Leakage,” in In Proceedings of the 28th annual International Symposium on Computer Architecture, New York,.
[9]K. K. N. S. e. a. Flaunter. 2001.”Drowsy Caches: Simple Techniques for Reducing Leakage Power,” in Proceedings of the 29th Annual International Symposium on Computer Architecture, IEEE Computer Society.
[10]آ. ز. ف. م. ن. م. سرياني. ۱۳۸۶٫“ارائه يکتکنيک ترکيبي براي کاهش مصرف انرژي در حافظه نهان به همراه افزايش کارايي,” در سیزدهمین کنفرانس ملی انجمن کامپیوتر, جزیره کیش,.
[۱۱]S. G. M. Hamed Farbeh.2014.”PSP-Cache: A Low-Cost Fault-Tolerant Cache Memory Architecture,” in Automation & Test in Europe Conference & Exhibition (DATE).
[12]L. Z. ,. X. J. ,. S.-l. L. ,. R. I. ,. T. L. ,. S. E. L. Zhen Fang a.2013.”Reducing cache and TLB power by exploiting memory region and privilege level semantics,” Journal of Systems Architecture, no. 59, p. 279–۲۹۵٫
[۱۳]J. A. a. W. S. Hyojin Choi, 2012.”Reducing Off-chip Memory Traffic by Selective Cache Management Scheme in GPGPUs,” in Proceedings of the 5th Annual Workshop on General Purpose Processing with Graphics Processing Units .
[14]B. S. ,. S. N. ,. B. B. A. Bengueddach.2013.”Two-level caches tuning technique for energy consumption in reconfigurable embedded MPSoC,” Journal of Systems Architecture, no. 59, p. 656–۶۶۶٫
[۱۵]M. G. a. W. H. M.-S. Johnson Kin.1997.”The filter cache: an energy efficient memory structure,” in In Proceedings of the 30th annual ACM/IEEE international symposium on Microarchitecture, USA.
[16]K. T. Sundararajan.2013.Energy Efficient Cache Architectures for Single, Multi and Many Core Processors, University of Edinburgh: Doctor of Philosophy. [[ روحانی رانکوهی, محمد تقی، ۱۳۹۱، ذخیره و بازیابی اطلاعات – سیستم و ساختار فایل ها (مهندسی فایل ها). تهران، انتشارات جلوه. ص. ۹٫ [] حميدرضا مقسمی. «آرایه و پشته و صف». در ساختمان داده ها. چاپ ششم. گسترش علوم پايه، ۱۳۸۳٫   زرندي، حميد رضا،”بررسي و ارزيابي اشكال هاي seu در حافظه نهان و FPGA و بررسي تاثير آنها بر كارايي و قابليت اطمينان سيستم هاي تعبيه شده”، گزارش پايان نامه دكتري، دانشگاه صنعتي شريف، ۱۳۹۰٫   اردلاني نيوشا، “ارائه ي يك روش جايگزيني مبتني بر مجاورت مكاني مراجعات به حافظه ي نهان”، پايان نامه كارشناسي ارشد، دانشگاه صنعتي شريف ۱۳۸۹٫  برادران، مرتضي،”ارائه يك معماري تركيبي جدول پيش بيني پرش، حافظه نهان داده براي پردازنده هاي امروزي”، پايان نامه كارشناسي ارشد، دانشگاه صنعتي شريف، ۱۳۹۱  A Survey of Architectural Techniques For Improving Cache Power Efficiency  رضايي فيروز كوهي، مهسا، “معماري يك حافظه نهان غير فرار با زمان هاي ماندگاري مختلف”، پايان نامه كارشناسي ارشد، دانگاه صنعتي شريف،‌۱۳۹۲٫   مدرسي، مهدي”شبيه سازي، ارزيابي و پياده سازي حافظه نهان در سيستم هاي نهفته بر پايه مدل شي گرا”، پايان نامه كارشناسي ارشد، دانشگاه صنعتي شريف، ۱۳۸۴٫  تريك، محمد، زاهدي، ثريا، يوكاني، بهزاد، محمدي داروندي، فردين، “بررسي تكنيك كاهش توان مصرفي در حافظه نهان پردازنده ها با استفاده از فيلتر پشته”،مقاله ارسالي به اولين همايش ملي، فناوري اطلاعات و شبكه هاي كامپيوتري دانشگاه پيام نور، بهمن ماه ۱۳۹۱٫  T. Mudge, T. Austin, D. Grunewald, et al., A Simple Scalar-Arm Power Modeling Project. http://www. Eecs.umich. edu/ paralyzer.  T. Austin, E. Larson, D. Ernst, Simple Scalar: an infrastructure for computer system modeling, IEEE Computer 39 (2) (2002) 59–۶۷٫  M.R. Guthaus, J.S. Ringenberg, D. Ernst, T.M. Austin, T. Mudge, R.B. Brown, MI bench: a free, commercially representative embedded benchmark suite, in: Workload Characterization, 2001, WWC-4, 2001 IEEE International Workshop, Washington, 2001, pp. 3–۱۴٫  N.S. Kim, T. Austin, T. Mudge, D. Grunwald, Challenges for Architectural Level Power Modeling, Kluwer Academics, 2002.  Http://www.hpl.hp.com/research/cacti/.  [p|n] mobility, Cgate, Cgatepass, C [p|n] diff [area|side|o vlp], C [p|n] oxideo vlp, Cpolywire and R [p|n} channelstatic    Http://www.pintool.org/.   Albonesi, D. H., “Selective Cacheways: On-Demand Cache Resource Allocation”, In Proceedings of the 33rd annual ACM/IEEE International Symposium on Micro architecture, IEEE Computer Society, pp. 248– ۲۵۹, ۱۹۹۹٫  Hanson, H., Hrishikesh, M., Agarwal, V., Keckler, S., Burger, D., “Static Energy Reduction Techniques for Microprocessor Caches”, In Proceedings of 2001 International Conference on Computer Design, IEEE Computer Society, pp. 276–۲۸۳, ۲۰۰۱٫  Hanson, H., Hrishikesh, M., Agarwal, V., Keckler, S.,Burger, D., “Static Energy Reduction Techniques for Microprocessor Caches”, In Proceedings of 2001 International Conference on Computer Design, IEEE Computer Society, pp. 276–۲۸۳, ۲۰۰۱٫  H. Lee, M. Smelyanskiy, C. Newburn, G. Tyson, Stack value file: custom microarchitecture for the stack, in: International Symposium on High- Performance Computer Architecture, Monterey, Mexico, 2001, pp. 5–۱۴٫  L.H. Lee, B. Moyer, J. Arends, Instruction fetch energy reduction using loop caches for embedded applications with small tight loops, in: International Symposium on Low-Power Electronics and Design, San Diego, California, 1999, pp. 267–۲۶۹٫

[۱] به حالتي از سلول هاي حافظه گفته مي شود که مصرف انرژي در آن صفر است.

[۲] به حالتي از سلولهاي حافظه گفته مي شود که مصرف انرژي در آنها تقريبا نصف است.

[۳] Set.

[۴] cache

[۵] Last In First Out.

[۶] RAM.

[۷] First In First Out (FILO)

[۸] Last In First Out (LIFO)

[۹] Least Recently Used (LRU)

[۱۰] Randomly

[۱۱] FETCH

[۱۲] DECODE

[۱۳] EXECUTE


][۱]] Kaxiras, S., Hu, Z., Martonosi, M., “Cache Decay: Exploiting Generational Behavior to Reduce Cache Leakage”, In Proceedings of the 28 th annual International Symposium on Computer Architecture, ACM Press, New York, pp. 240-251, 2001.

][۲][Flaunter, K., Kim, N. S. et al., “Drowsy Caches: Simple Techniques for Reducing Leakage Power”, In Proceedings of the 29th Annual International Symposium on Computer Architecture, IEEE Computer Society, pp. 148–۱۵۷, ۲۰۰۲٫

[[۳][Albonesi, D. H., “Selective Cacheways: On-Demand Cache Resource Allocation”, In Proceedings of the 33 rd. annual ACM/IEEE International Symposium on Micro architecture, IEEE Computer Society, pp. 248– ۲۵۹, ۱۹۹۹٫

][۴][Y., Sherwood, T., Kastner, “On the Limits of Leakage Power Reduction in Caches”, 11th International Symposium on High-Performance Computer Architecture, 2005.

[[[۵] روحانی رانکوهی, محمد تقی، ۱۳۹۱، ذخیره و بازیابی اطلاعات – سیستم و ساختار فایل ها (مهندسی فایل ها). تهران، انتشارات جلوه. ص. ۹٫

[[۶]] حميدرضا مقسمی. «آرایه و پشته و صف». در ساختمان داده ها. چاپ ششم. گسترش علوم پايه، ۱۳۸۳٫

 [7] زرندي، حميد رضا،”بررسي و ارزيابي اشكال هاي seu در حافظه نهان و FPGA و بررسي تاثير آنها بر كارايي و قابليت اطمينان سيستم هاي تعبيه شده”، گزارش پايان نامه دكتري، دانشگاه صنعتي شريف، ۱۳۹۰٫

[۸] حميدرضا مقسمی. «آرایه و پشته و صف». در ساختمان داده ها. چاپ ششم. گسترش علوم پايه، ۱۳۸۳٫

[۹]  اردلاني نيوشا، “ارائه ي يك روش جايگزيني مبتني بر مجاورت مكاني مراجعات به حافظه ي نهان”، پايان نامه كارشناسي ارشد، دانشگاه صنعتي شريف ۱۳۸۹٫

[۱۰] برادران، مرتضي،”ارائه يك معماري تركيبي جدول پيش بيني پرش، حافظه نهان داده براي پردازنده هاي امروزي”، پايان نامه كارشناسي ارشد، دانشگاه صنعتي شريف، ۱۳۹۱

[۱۱] J. R. Srinivasan, “Improving cache utilisation,” in Technical Report, University of Cambridge, Computer lablatory, 2011.

[۱۲] A Survey of Architectural Techniques For Improving Cache Power Efficiency

[۱۳] رضايي فيروز كوهي، مهسا، “معماري يك حافظه نهان غير فرار با زمان هاي ماندگاري مختلف”، پايان نامه كارشناسي ارشد، دانگاه صنعتي شريف،‌۱۳۹۲٫

[۱۴]  مدرسي، مهدي”شبيه سازي، ارزيابي و پياده سازي حافظه نهان در سيستم هاي نهفته بر پايه مدل شي گرا”، پايان نامه كارشناسي ارشد، دانشگاه صنعتي شريف، ۱۳۸۴٫

[۱۵] اردلاني نيوشا، “ارائه ي يك روش جايگزيني مبتني بر مجاورت مكاني مراجعات به حافظه ي نهان”، پايان نامه كارشناسي ارشد، دانشگاه صنعتي شريف ۱۳۸۹

[۱۶] تريك، محمد، زاهدي، ثريا، يوكاني، بهزاد، محمدي داروندي، فردين، “بررسي تكنيك كاهش توان مصرفي در حافظه نهان پردازنده ها با استفاده از فيلتر پشته”،مقاله ارسالي به اولين همايش ملي، فناوري اطلاعات و شبكه هاي كامپيوتري دانشگاه پيام نور، بهمن ماه ۱۳۹۱٫

  [17] Http://www.pintool.org/.

برچسبها
مطالب مرتبط

دیدگاهی بنویسید.

بهتر است دیدگاه شما در ارتباط با همین مطلب باشد.

0