موضوع مقاله: انسجام مبتنی بر دایرکتوری | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # انسجام مبتنی بر دایرکتوری | مقدمه: انسجام مبتنی بر دایرکتوری مکانیزمی برای رسیدگی به مشکل انسجام کش در حافظه مشترک توزیع شده (DSM) است. | ## بخش 1: انسجام مبتنی بر دایرکتوری | راه محبوب دیگر، استفاده از نوع خاصی از گذرگاه کامپیوتری بین همه گره‌ها به عنوان یک «گذرگاه مشترک» است (معروف به گذرگاه سیستم). انسجام مبتنی بر دایرکتوری از یک دایرکتوری ویژه برای خدمت کردن به جای گذرگاه مشترک در پروتکل‌های انسجام مبتنی بر گذرگاه استفاده می‌کند. هر دوی این طرح‌ها از رسانه مربوطه (مثل دایرکتوری یا گذرگاه) به عنوان ابزاری برای تسهیل ارتباط بین گره‌های مختلف استفاده می‌کنند و تضمین می‌کنند که پروتکل انسجام در تمام گره‌های ارتباطی به خوبی کار می‌کند. در انسجام کش مبتنی بر دایرکتوری، این کار با استفاده از این دایرکتوری برای پیگیری وضعیت همه بلوک‌های کش انجام می‌شود، وضعیت هر بلوک شامل این است که آن بلوک در کدام حالت انسجام حافظه نهان قرار دارد و کدام گره‌ها آن بلوک را در آن زمان به اشتراک می‌گذارند که با استفاده از آن می‌توان نیازی به پخش تمام سیگنال‌ها به همه گره‌ها را از بین برد و آن را فقط به گره‌هایی که به این تک بلوک علاقه‌مند هستند ارسال کرد. در زیر چند تا از مزایا و معایب پروتکل انسجام کش مبتنی بر دایرکتوری آورده شده‌است: مقیاس پذیری: این یکی از قوی‌ترین انگیزه‌ها برای رفتن به طراحی‌های مبتنی بر دایرکتوری است. منظور ما از مقیاس پذیری، به‌طور خلاصه، این است که یک سیستم خاص تا چه اندازه در رسیدگی به حجم فزاینده کاری که مسئول انجام آن است، خوب است. برای این معیار، سیستم‌های مبتنی بر گذرگاه به دلیل محدودیت‌های ایجاد شده در هنگام داشتن یک گذرگاه مشترک که همه گره‌ها به‌طور همزمان از آن استفاده می‌کنند، نمی‌توانند به خوبی عمل کنند. با این حال، در حالی که تعداد گره‌ها در حال افزایش است، ممکن است برخی از مشکلات در این زمینه رخ دهد. به خصوص که تنها یک گره مجاز به استفاده از گذرگاه در یک زمان است که به‌طور قابل توجهی به عملکرد سیستم کلی آسیب می‌رساند. از سوی دیگر، با استفاده از سیستم‌های مبتنی بر دایرکتوری، چنین تنگنایی برای محدود کردن مقیاس پذیری سیستم وجود نخواهد داشت. | ## بخش 2: انسجام مبتنی بر دایرکتوری | از آنجایی که ساختار گذرگاه، خود می‌تواند به عنوان یک سازمان دهنده برای تمام ترافیکی که از طریق سیستم می‌گذرد، عمل کند و از اتمی بودن همه سیگنال‌های عبوری اطمینان حاصل کند؛ بنابراین، نیازی به تلاش بیشتر برای اطمینان از اتمی بودن و ترتیب بین سیگنال‌ها مانند سیستم‌های مبتنی بر دایرکتوری وجود نخواهد داشت، که منجر به چندین سربار در طراحی سیستم بعدی هنگام رسیدگی به مسائلی مانند سازگاری می‌شود. با توجه به بحث فوق، واضح است که استفاده از سیستم‌های مبتنی بر گذرگاه برای سیستم‌های نسبتاً کوچک جذاب تر به نظر می‌رسد. با این حال، سیستم‌های مبتنی بر دایرکتوری زمانی حیاتی می‌شوند که مقیاس سیستم افزایش یابد و تعداد گره‌ها افزایش یابد؛ بنابراین هنگام مقایسه بین طرح‌های انسجام حافظه کش مبتنی بر دایرکتوری و مبتنی بر گذرگاه یک نوع تجارت کردن وجود دارد. با این حال، استفاده از آن برای انسجام حافظه کش چند سال بعد، به ویژه در سال ۱۹۷۸، زمانی که محققان دانشگاه استنفورد اولین نسخه از این سیستم‌های انسجام را به نام Stanford DASH پیشنهاد کردند، در مقاله ای که این سیستم را با مشکلات و پیشرفت‌ها با چنین طرح‌هایی توصیف می‌کرد، پیشنهاد شد. به‌طور مشابه، IBM PR3 انسجام کش سخت‌افزاری را ارائه نمی‌کند، که عملکرد هر دوی این طرح‌ها را محدود می‌کند، به‌ویژه زمانی که از پردازنده‌های با کارایی بالا استفاده می‌شود. محدودیت‌های سایر رقبا انتخاب سیستم‌های مبتنی بر DASH را هنگام طراحی سیستم‌های انسجام حافظه کش و سایر سیستم‌هایی که نیاز به مقیاس پذیری در گره‌های مبتنی بر حافظه کش دارند، آسان‌تر کرده‌است. در سال ۱۹۸۵، جیمز آرچیبالد و ژان لوپ بائر از دانشگاه واشینگتن مقاله ای منتشر کردند که یک تنوع اقتصادی تر، قابل گسترش و مدولارتر از رویکرد «دایرکتوری جهانی» از نظر استفاده از سخت‌افزار در طرح را پیشنهاد می‌کردند. در سال ۱۹۹۲، دانیل لنوسکی از دانشگاه استنفورد مقاله ای منتشر کرد که در آن پیشرفت‌هایی در پروتکل‌های انسجام کش برای سیستم‌های مبتنی بر دایرکتوری پیشنهاد شد. در مقاله ای در سال ۱۹۹۶، او طراحی SGI Origin 2000 را معرفی کرد، خانواده ای از رایانه‌های سرور که از انسجام کش مبتنی بر دایرکتوری استفاده می‌کنند. پروتکل‌ها برخلاف پروتکل‌های انسجام اسنوپی، در یک رویکرد انسجام مبتنی بر دایرکتوری، اطلاعات مربوط به اینکه کدام کش‌ها دارای یک کپی از یک بلوک هستند در ساختاری به نام Directory نگهداری می‌شوند. | ## بخش 3: انسجام مبتنی بر دایرکتوری | در یک طرح مبتنی بر دایرکتوری، کش‌های شرکت کننده درخواست‌ها را به تمام حافظه‌های کش مشترک دیگر بلوک به منظور مکان‌یابی نسخه‌های ذخیره شده ارسال نمی‌کنند، در عوض از دایرکتوری درخواست می‌کند تا اطلاعات مربوط به اینکه کدام بلوک دارای نسخه‌های ذخیره شده‌است را بازیابی کند و فقط به آن پردازنده‌های خاص ارسال می‌کند و از این رو صرفه جویی در ترافیک در مقایسه با پروتکل اسنوپی بیشتر است. در برنامه‌های بهینه‌سازی شده، بیشتر اشتراک‌گذاری داده‌ها فقط برای داده‌هایی است که فقط خوانده می‌شوند، و اشتراک‌گذاری کمی برای داده‌هایی که اغلب خوانده و نوشته می‌شوند، وجود دارد. یک رویکرد دایرکتوری می‌تواند منجر به صرفه جویی قابل توجهی در ترافیک در مقایسه با رویکرد پخش / اسنوپی در چنین برنامه‌هایی شود. همان‌طور که در نمودار جریان داده نشان داده شده‌است، عملگرهایی که در یک سیستم حافظه مشترک توزیع شده که پروتکل انسجام مبتنی بر دایرکتوری را پیاده‌سازی می‌کند، درگیر هستند عبارتند از: گره درخواست کننده: این گره پردازنده ای است که برای خواندن/نوشتن یک بلوک حافظه درخواست می‌کند. گره دایرکتوری: این گره اطلاعات وضعیت هر بلوک کش را در سیستم حفظ می‌کند و درخواست کننده درخواست‌های خود را به گره دایرکتوری هدایت می‌کند. گره مالک: یک گره مالک، وضعیت اخیر بلوک کش را در اختیار دارد، توجه داشته باشید که دایرکتوری ممکن است همیشه با آخرین داده‌ها به روز نباشد. با این حال، برخلاف پیاده‌سازی مبتنی بر گذرگاه که گره‌ها با استفاده از یک گذرگاه مشترک ارتباط برقرار می‌کنند، پیاده‌سازی مبتنی بر دایرکتوری از مدل ارسال پیام برای تبادل اطلاعات مورد نیاز برای حفظ انسجام حافظه کش استفاده می‌کنند. گره دایرکتوری به عنوان یک نقطه سریال عمل می‌کند و تمام ارتباطات از طریق این گره جهت حفظ صحت و درستی هدایت می‌شوند. | ## جمع‌بندی | گره دایرکتوری یک گره دایرکتوری وضعیت کلی یک بلوک کش را در کل سیستم کش برای همه پردازنده‌ها پیگیری می‌کند.