انسجام کش مبتنی بر دایرکتوری
برخی از ویرایشها در این مقاله در چارچوب یک تکلیف دانشگاهی انجام شدهاند. این تکالیف توسط ؟ برای دانشجویان ؟ تعیین شدهاند. |
این مقاله، انسجام کش مبتنی بر دایرکتوری، اخیراً بهواسطهٔ فرایند ایجاد مقاله ایجاد شدهاست. بازبینیکننده در حال بستن درخواست است و این برچسب احتمالاً بهزودی برداشته میشود.
ابزارهای بازبینی: پیشبارگیری بحث اعلان به نگارنده |
خطای اسکریپتی: پودمان «AfC submission catcheck» وجود ندارد. در مهندسی کامپیوتر ، انسجام کش (حافظه نهان) مبتنی بر دایرکتوری نوعی مکانیسم انسجام کش است که در آن دایرکتوری ها به دلیل مقیاس پذیری برای مدیریت کش ها به جای روش های اسنوپی استفاده میشوند . روشهای جاسوسی اتوبوس به دلیل استفاده از پخش، مقیاسی ضعیف دارند. از این روش ها می توان برای هدف قرار دادن عملکرد و مقیاس پذیری سیستم های دایرکتوری استفاده کرد. [۱]
فرمت برداری فول بیت[ویرایش]
در قالب بردار بیت کامل، برای هر خط کش ممکن در حافظه ، یک بیت برای ردیابی اینکه آیا هر پردازنده منفرد آن خط را در حافظه نهان خود ذخیره کرده است استفاده میشود. [۲] فرمت برداری کامل بیت ساده ترین ساختار برای پیاده سازی است، اما کمترین مقیاس پذیری را دارد. [۱] SGI Origin 2000 ، بسته به تعداد پردازنده ها از ترکیبی از بردار بیت کامل و بردار بیت درشت استفاده می کند. [۳]
هر ورودی دایرکتوری باید 1 بیت ذخیره شده به ازای هر پردازنده در هر خط کش، همراه با بیت هایی برای ردیابی وضعیت دایرکتوری داشته باشد. اندازه کل مورد نیاز برابر میشود با (تعداد پردازنده)× (تعداد خطوط کش) ،که دارای نسبت سربار ذخیره سازی (تعداد پردازنده)/(اندازه بلوک کش × 8) .
می توان مشاهده کرد که سربار دایرکتوری به صورت خطی با تعداد پردازنده ها مقیاس می شود. در حالی که ممکن است این برای تعداد کمی از پردازنده ها خوب باشد، زمانی که در سیستم های بزرگ پیاده سازی شود اندازه مورد نیاز برای فهرست بیش از حد خواهد شد. به عنوان مثال، با اندازه بلوک 32 بایت و 1024 پردازنده، نسبت سربار ذخیره سازی 1024/(32×8) = 400% می شود. [۲]
فرمت بردار بیت درشت[ویرایش]
فرمت بردار بیت درشت ساختاری مشابه فرمت بردار بیت کامل دارد، اگرچه دایرکتوری به جای ردیابی یک بیت در هر پردازنده برای هر خط کش، چندین پردازنده را در گره ها گروه بندی می کند و ذخیره می کند که آیا یک خط کش در یک گره ذخیره می شود یا نه خط این امر به هزینه صرفه جویی در ترافیک اتوبوس (پردازنده در هر گره)× (خطوط کل) بیت های فضا را بهبود می بخشد.[۳] بنابراین نسبت سربار یکسان است، فقط تعداد پردازنده ها با تعداد گروه های پردازنده جایگزین می شود. هنگامی که یک درخواست گذرگاه برای یک خط کش که یکی از پردازندههای گروه دارد، ارسال میشود، دایرکتوری سیگنال را به جای حافظه پنهانی که حاوی آن است، به هر پردازنده در گره ارسال میکند و منجر به ترافیک غیرضروری به گرههایی میشود که داده را ندارند.[۲]
در این مورد ورودی دایرکتوری از 1 بیت برای گروهی از پردازنده ها برای هر خط کش استفاده می کند. برای مثال فرمت Full Bit Vector اگر 1 بیت را برای 8 پردازنده به عنوان یک گروه در نظر بگیریم، سربار ذخیره سازی 128/(32×8)=50٪ خواهد بود. این یک پیشرفت قابل توجه نسبت به فرمت Full Bit Vector است.
فرمت دایرکتوری پراکنده[ویرایش]
کش فقط زیر مجموعه کوچکی از بلوک ها را در یک زمان خاص در حافظه اصلی ذخیره می کند. از این رو بیشتر ورودی های دایرکتوری به بلوک های ذخیره نشده تعلق دارند. در قالب دایرکتوری پراکنده، هدر رفت تنها با ذخیره کردن بلوکهای کش در فهرست کاهش مییابد. [۲] پردازنده ای با حجم حافظه پنهان 64 کیلوبایت با حجم بلوک 32 بایت و حجم حافظه اصلی 4 مگابایت را در نظر بگیرید. حداکثر تعداد ورودی هایی که دایرکتوری می تواند در قالب دایرکتوری پراکنده داشته باشد 2048 است. اگر دایرکتوری یک ورودی برای تمام بلوک های حافظه داشته باشد، تعداد ورودی های دایرکتوری 131072 خواهد بود. بنابراین بدیهی است که بهبود ذخیره سازی ارائه شده توسط فرمت دایرکتوری پراکنده بسیار قابل توجه است.
قالب درختی باینری متعادل با عدد[ویرایش]
در این فرمت دایرکتوری غیرمتمرکز است و بین کش هایی که یک بلوک حافظه مشترک دارند توزیع می شود. کش های مختلف که یک بلوک حافظه مشترک دارند به شکل یک درخت باینری مرتب شده اند. کشی که ابتدا به یک بلوک حافظه دسترسی پیدا می کند، گره ریشه است . هر بلوک حافظه دارای اطلاعات گره ریشه (HEAD) و قسمت شمارنده اشتراک (SC) است. فیلد SC دارای تعداد کش هایی است که بلوک را به اشتراک می گذارند. هر ورودی کش دارای اشاره گرهایی به حافظه های ذخیره سازی اشتراک گذاری بعدی است که به نام های L-CHD و R-CHD شناخته می شوند. شرط این دایرکتوری این است که درخت باینری باید دارای عدد متعادل باشد، یعنی تعداد گرههای درخت فرعی سمت چپ باید برابر یا یک عدد بیشتر از تعداد گرههای زیردرخت سمت راست باشد. تمام درختان فرعی نیز باید دارای تعداد متعادل باشند. [۳]
قالب دایرکتوری زنجیره ای[ویرایش]
در این فرمت، حافظه نشانگر دایرکتوری را به آخرین حافظه پنهانی که به بلوک دسترسی داشته است نگه می دارد و هر حافظه نهان نشانگر حافظه نهان قبلی را دارد که به بلوک دسترسی داشته است. بنابراین هنگامی که یک پردازنده یک درخواست نوشتن به یک بلوک در حافظه می فرستد، پردازنده مواردی را باطل می کند که به زنجیره اشاره گرها می پردازد. در این دایرکتوری زمانی که یک بلوک کش جایگزین شده است ما نیاز به گذشتن از لیست به منظور تغییر دایرکتوری که باعث افزایش زمان تاخیر . به منظور جلوگیری از این امر، فهرستهای دارای پیوند دوگانه در حال حاضر به طور گسترده استفاده میشوند که در آن هر کپی ذخیره شده دارای نشانگرهایی به کش قبلی و بعدی است که به بلوک دسترسی دارد. [۴]
فرمت اشاره گر محدود[ویرایش]
فرمت اشاره گر تعداد محدودی از نشانگر برای ردیابی پردازنده هایی که داده ها را در حافظه پنهان ذخیره می کنند استفاده می کند. هنگامی که یک پردازنده جدید یک بلوک را در حافظه پنهان ذخیره می کند، یک اشاره گر آزاد از یک Pool انتخاب می شود تا به آن پردازنده اشاره کند. چند گزینه برای رسیدگی به مواردی وجود دارد که تعداد اشتراکگذاران از تعداد نشانگرهای رایگان بیشتر باشد. یکی از روشها بیاعتبار کردن یکی از اشتراکگذارها، با استفاده از اشارهگر آن برای درخواستکننده جدید است، اگرچه در مواردی که یک بلوک دارای تعداد زیادی خواننده است، مانند قفل میتواند پرهزینه باشد. روش دیگر این است که یک pool جداگانه از نشانگرهای رایگان در دسترس همه بلوک ها باشد. این روش معمولاً مؤثر است زیرا تعداد بلوکهای به اشتراک گذاشته شده توسط تعداد زیادی پردازنده معمولاً خیلی زیاد نیست.[۲]
منابع[ویرایش]
This article "انسجام کش مبتنی بر دایرکتوری" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:انسجام کش مبتنی بر دایرکتوری. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.
- ↑ ۱٫۰ ۱٫۱ Reihnhart, Steven; Basu, Arkaprava; Beckmann, Bradford; Hill, Mark (2013-07-11). "CMP Directory Coherence: One Granularity Does Not Fit All" (PDF).صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ ۲٫۰ ۲٫۱ ۲٫۲ ۲٫۳ ۲٫۴ Solihin, Yan (2015-10-09). Fundamentals of Parallel Multicore Architecture. Raleigh, North Carolina: Solihin Publishing and Consulting, LLC. pp. 331–335. ISBN 978-1-4822-1118-4.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ ۳٫۰ ۳٫۱ ۳٫۲ خطای لوآ در پودمان:Citation/CS1/en/Identifiers در خط 47: attempt to index field 'wikibase' (a nil value).
- ↑ خطای لوآ در پودمان:Citation/CS1/en/Identifiers در خط 47: attempt to index field 'wikibase' (a nil value).