Bosh sahifa Wiki Noninclusive Cache

Noninclusive Cache

Noninclusive Cache — kesh darajalari o‘rtasida “yuqoridagi har satr quyida ham bo‘lsin” yoki “bir satr faqat bitta darajada bo‘lsin” degan qat’iy talabni qo‘ymaydigan siyosat. Bir cache line L1 va L2’da birga mavjud bo‘lishi, faqat L1’da qolishi yoki faqat quyi darajada saqlanishi mumkin. Qaror replacement va coherence holatiga bog‘liq.

Moslashuvchan munosabat

L1 miss L2’dan to‘ldirilganda L2 nusxani saqlashi ham, keyin boshqa satr foydasiga chiqarishi ham mumkin. L2 eviction L1 nusxasini majburan invalid qilmaydi, chunki data inclusion invariant mavjud emas. Shu bilan private L1’dagi foydali satr quyi darajadagi conflict sabab yo‘qolmaydi.

Bir vaqtning o‘zida ayrim satrlar darajalarda takrorlanishi mumkin. Shu sabab umumiy noyob sig‘im inclusive keshdan ko‘p, to‘liq exclusive dizayndan esa workloadga qarab kam bo‘ladi. Satr migratsiyasini har hitda qat’iy swap qilish shart emas, bu inter-level trafikni kamaytiradi.

Directory talabi

L3 data array’da satr yo‘qligi uning private keshlarda ham yo‘q ekanini bildirmaydi. Coherence agent boshqa yadrolardagi nusxalarni topish uchun alohida directory yoki snoop filter yuritadi. Directory data’siz tag yozuvini saqlashi mumkin. Bu metadata sig‘im va associativity talab qiladi.

Directory entry chiqarilsa, kuzatilayotgan private nusxalarni invalidate qilish yoki yangi tracking joyiga ko‘chirish kerak. Aks holda keyingi writer eski sharer’ni topolmaydi. Demak noninclusive data siyosati coherence nazoratini yo‘q qilmaydi, faqat data placementni erkinlashtiradi.

Replacement afzalligi

Quyi kesh o‘z reuse ma’lumotiga qarab satrni saqlaydi. L1’da issiq, lekin L3’da qayta ishlatilmaydigan satr L3 way’ini egallamasligi mumkin. Aksincha, bir nechta yadroga kerak shared satr L3’da nusxa sifatida qoladi. Adaptive insertion va reuse predictor bu tanlovni yaxshilaydi.

Noninclusive siyosat katta private keshlar va shared LLC o‘rtasida sig‘im takrorlanishini kamaytiradi. Biroq LLC hit/miss hisoblagichi butun chipdagi data mavjudligini to‘liq ifodalamaydi: LLC miss private owner’dan cache-to-cache transfer bilan qondirilishi mumkin.

Izchillik holatlari

Dirty satr faqat private cache’da bo‘lsa, directory owner’ni ko‘rsatadi. Boshqa yadro read so‘rasa, owner data’ni forward qiladi; memory va LLC data nusxasi eski bo‘lishi mumkin. Eviction paytida dirty qiymat LLC’ga allocate qilinishi yoki to‘g‘ridan-to‘g‘ri memoryga yozilishi dizaynga bog‘liq.

Noninclusive atamasi “hech qachon inclusive emas” degani emas; individual satr tasodifan barcha darajada bo‘lishi mumkin. Muhim farq — bunday mavjudlik majburiy invariant emas. Hujjatlarda “mostly noninclusive”, “noninclusive with directory” yoki “noninclusive victim” kabi aniqroq variantlar uchraydi.

Cache maintenance buyruqlari noninclusive tizimda faqat LLC tagini tekshirish bilan tugamaydi. Satr private darajada data’siz directory yozuvi orqali kuzatilishi mumkin. Address-based clean yoki invalidate protokol bo‘ylab owner va sharer’larni topadi, ularning acknowledge javobidan keyingina DMA yoki page remapping xavfsiz davom etadi.

Noninclusive placement hardware uchun ichki siyosat bo‘lib, dasturga hit kafolati bermaydi. Optimization locality’ga tayanishi, ma’lum satr aynan qaysi darajada qolishini talab qilmasligi kerak.

Firmware cache topologiyasini bildiradi, lekin individual satr placementi doimiy interfeys sifatida ochilmaydi.

Placement vaqt o‘tishi bilan o‘zgaradi.

Bu xususiyat alohida sinovdan o‘tkaziladi.

Bog‘liq tushunchalar

inclusive cache, exclusive cache, directory cache, snoop filter, cache placement, cache coherence