Cache Coherence — bir xil fizik xotira manzilining bir nechta protsessor keshlaridagi nusxalari o‘qish va yozuvlar natijasida izchil ko‘rinishini ta’minlaydigan apparat protokollari majmui. Yadro qiymatni yozgach, boshqa yadro cheksiz eski nusxani o‘qib qolmasligi kerak. Coherence asosan bitta cache line bo‘yicha nusxalar munosabatini boshqaradi.
Asosiy talablar
Write propagation yozuv oxir-oqibat boshqa observer’larga yetishini, write serialization esa bir manzilga yozuvlarni barcha agent bir tartibda ko‘rishini talab qiladi. Protokol satr holatini Shared, Modified kabi state’lar bilan ifodalaydi. Yozishdan oldin yadro exclusive ownership oladi va boshqa shared nusxalarni invalid qiladi.
Read missda data memory, shared cache yoki dirty owner’dan kelishi mumkin. Modified egasi eng yangi qiymatni forward qiladi; DRAMdagi nusxa eski bo‘lishi ehtimol. Eviction owner data’sini quyi darajaga write-back qilib, directory holatini yangilaydi.
Snooping va directory
Snooping protokolda request umumiy bus yoki ordered interconnect orqali tarqaladi, barcha keshlar manzilni kuzatadi. U kichik tizimda sodda va tez, ammo yadro soni oshganda broadcast trafik qimmatlashadi.
Directory protokol har satrning sharer’lari va owner’ini metadata’da saqlaydi. So‘rov faqat tegishli agentlarga yuboriladi. Sharer vector ko‘p yadroda katta bo‘lishi mumkin; sparse directory, hierarchical tracking yoki coarse bitlar maydonni kamaytiradi.
False sharing
Coherence granularity odatda cache line. Ikki thread bir satrdagi turli o‘zgaruvchilarni yozsa, ownership ping-pong qiladi. Data race bo‘lmasa ham performance keskin tushadi. Padding, per-thread counter va keyin reduction false sharingni kamaytiradi.
Atomik read-modify-write ownership va serializationdan foydalanadi. Lock contention’da satr yadrolar orasida tez ko‘chadi. Queue lock navbatdagi threadga ownershipni tartibli berib, umumiy bitta satrga bosimni kamaytirishi mumkin.
Memory consistency bilan farqi
Coherence bitta manzil nusxalarini boshqaradi; memory consistency turli manzillardagi load va store’lar qaysi tartibda ko‘rinishini belgilaydi. Coherent tizim ham weak ordering ishlatishi mumkin. Lock-free algoritm release, acquire va fence’larni ISA yoki til memory modeliga ko‘ra qo‘llaydi.
DMA qurilmasi coherent interconnectga ulangan bo‘lsa CPU keshlari bilan protokolda qatnashadi. Non-coherent DMA’da driver buffer’ni device’ga berishdan oldin clean, CPU qayta o‘qishidan oldin invalidate qiladi. Noto‘g‘ri tartib data yo‘qolishi yoki eski qiymatga olib keladi.
Protokol tekshiruvi
Race’lar bir vaqtdagi read, write, eviction, retry va message reorderingda yuz beradi. Asosiy invariant bir satr uchun ko‘pi bilan bitta writable owner va barcha valid shared nusxalarda mos data bo‘lishidir. Formal model deadlock, livelock va noqonuniy state kombinatsiyalarini tekshiradi.
Coherence performance’ini invalidation, cache-to-cache transfer, remote hit va ownership miss counterlari ko‘rsatadi. Yuqori trafik algoritmning shared data tuzilmasi yoki thread joylashuvini qayta ko‘rib chiqishni talab qiladi.
Protokol xabarlari virtual emas, fizik manzil identitetiga asoslanadi. Bir fizik sahifaning bir nechta virtual aliasi barcha yadrolarda ayni coherence blockka tegishli bo‘lishi kerak. Page migration oldidan operatsion tizim eski mapping accesslarini to‘xtatadi, dirty owner data’sini yig‘adi va TLB hamda coherence operatsiyalarini belgilangan barrierlar bilan yakunlaydi.
NUMA tizimda remote owner’dan transfer fizik masofaga bog‘liq; thread affinity shared satrlar harakatini kamaytiradi.
Bog‘liq tushunchalar
MESI protocol, snooping protocol, directory protocol, memory consistency, false sharing, cache-to-cache transfer