انسجام حافظه نهان
انسجام حافظهٔ نهان (Cache Coherence) در علوم رایانه به هم‌خوانی داده‌های ذخیره شده در حافظه‌های نهان محلی یک منبع مشترک گفته می‌شود. در شرایطی که در یک سامانهٔ دارای حافظه مشترک چند خدمت‌گیرنده حافظه‌های نهان خود را دارا باشند، امکان بروز مشکل به خاطر ناهم‌خوانی داده‌ها وجود دارد. خصوصاً این حالت برای پردازنده‌ها در سامانه‌های چندپردازنده‌ای رخ می‌دهد. همان‌طور که در نمودار «حافظه‌های نهان چندگانه در یک منبع مشترک» دیده می‌شود، در صورتی که خدمت‌گیرندهٔ بالا از قبل یک کپی از بلوکی از حافظه را در اختیار داشته باشد و خدمت گیرندهٔ پایین آن را تغییر دهد، خدمت‌گیرندهٔ بالا مقدار نادرست داده را بدون اطلاع از نادرست بودن آن در اختیار دارد. هدف از انسجام حافظهٔ نهان مدیریت این گونه مشکلات و حفظ هم‌خوانی داده میان حافظه و حافظهٔ نهان است.
انسجام، چگونگی خواندن و نوشتن در یک محل حافظه را تعیین می‌کند. اگر شرایط زیر رعایت شود، انسجام حافظهٔ نهان حاصل می‌گردد:
این شرایط با این فرض بیان شده‌اند که عملیات خواندن و نوشتن بدون فاصله انجام می‌گیرند. با این حال در سخت‌افزار رایانه با در نظر گرفتن تأخیر حافظه و سایر جنبه‌های معماری، این اتفاق رخ نمی‌دهد. ممکن است یک عمل نوشتن به وسیلهٔ پردازندهٔ P1 توسط عمل خواندن پردازندهٔ P2، که با فاصله زمانی کم پس از آن اجرا شده‌است، دیده نشود. مدل انسجام حافظه زمانی تعریف می‌شود که عمل نوشتن با دستور خواندن سایر پردازنده‌ها همراه شود.
سامانه‌های اشتراک حافظهٔ توزیع‌شده این ساز و کارها را پیاده می‌کنند تا انسجام بین بلوک‌های حافظه را در سامانه‌های با اتصال سست (Loosely Coupled) حفظ کنند.
دو شیوهٔ مرسوم حفظ انسجام که غالباً مورد مطالعه قرار می‌گیرند، اسنوپینگ و نشانی‌محور هستند که هر کدام فواید و کاستی‌های خود را دارد. اگر پهنای باند مورد نیاز در دسترس باشد، پروتکل‌های اسنوپینگ سریع‌تر هستند، چرا که همهٔ عمل‌ها یک درخواست/پاسخ هستند که توسط همهٔ پردازنده‌ها دیده می‌شوند. مشکل اسنوپینگ این است که مقیاس‌پذیر نیست. هر درخواستی باید به همهٔ گره‌ها در سامانه اعلام شود، به این معنی که با بزرگ‌تر شدن سامانه باید اندازهٔ باس (منطقی یا فیزیکی) و پهنای باند افزایش یابد. از طرف دیگر شیوهٔ نشانی‌محور تأخیر بیشتری دارد (سه مرحلهٔ درخواست/فوروارد/پاسخ دارد)ولی نیازمند پهنای باند بسیار کم‌تری است، زیرا پیام‌ها به صورت نقطه به نقطه هستند، نه ارسال برای همه. به همین علت بسیاری از سامانه‌های بزرگ (بیش از ۶۴ پردازنده) از این شیوهٔ انسجام حافظه نهان استفاده می‌کنند.
یک پروتکل حفظ انسجام پروتکلی است که هم‌خوانی را بین تمام حافظه‌های نهان یک سامانهٔ اشتراک حافظه توزیع‌شده حفظ می‌کند. این پروتکل انسجام حافظه را بر اساس یک مدل هم‌خوانی خاص حفظ می‌کند. بیشتر پروتکل‌های انسجام در چندپردازنده‌ها از مدل هم‌خوانی ترتیبی پشتیبانی می‌کنند، در حالی که سامانه‌های اشتراک حافظهٔ توزیع‌شده از مدل‌های هم‌خوانی رهاسازی یا هم‌خوانی ضعیف پیشتیبانی می‌کنند.
ممکن است گذار بین حالت‌ها در هر پیاده‌سازی خاص این پروتکل‌ها با دیگری تفاوت داشته باشد. برای مثال امکان دارد در یک پیاده‌سازی، گذارهای به روز رسانی و غیرمعتبر سازی مختلفی به کار رود، مانند به روز رسانی در خواندن، به روز رسانی در نوشتن، غیرمعتبر سازی در خواندن یا غیرمعتبر سازی در نوشتن. انتخاب گذار می‌تواند بر میزان ترافیک بین حافظه‌های نهان تأثیر بگذارد که این خود بر میزان پهنای باند در دسترس برای کارهای واقعی اثر می‌گذارد. این مورد باید در طراحی نرم‌افزارهای توزیع‌شده در نظر گرفته شود، چرا که می‌تواند موجب ایجاد ناهم‌خوانی شدید بین حافظه‌های نهان سامانه‌های چندپردازنده شود.
مدل‌ها و پروتکل‌های گوناگونی برای حفظ انسجام حافظه نهان معرفی شده‌اند که در این میان می‌توان از پروتکل‌های زیر نام برد:
MSI، MESI، MOSI، MOESI، MERSI، MESIF، write-once، Synapse، Berkeley، Firefly، Dragon protocol
انتخاب مدل هم‌خوانی برای طراحی یک سامانه با حافظهٔ نهان منسجم تعیین‌کننده‌است. مدل‌های انسجام در زمینهٔ عملکرد و مقیاس‌پذیری با همدیگر تفاوت دارند و باید در طراحی هر سامانه مورد ارزش‌یابی قرار گیرند.