Bosh sahifa Wiki No-Write-Allocate Cache

No-Write-Allocate Cache

No-Write-Allocate Cachestore miss yuz berganda kerakli cache line’ni keshga olib kelmay, yozuvni to‘g‘ridan-to‘g‘ri quyi xotira darajasiga yuboradigan siyosat. U write-around deb ham ataladi. Store hit bo‘lsa mavjud satr yangilanadi; no-write-allocate qarori faqat satr keshda topilmagan vaziyatni belgilaydi.

Missning bajarilishi

Tag lookup miss qaytargach store manzili, data va byte mask write buffer yoki quyi busga uzatiladi. Kesh setida victim tanlash va line fill bajarilmaydi. Agar store butun satrni qamramasa, quyi kesh partial write’ni qabul qilishi yoki read-modify-write amalga oshirishi mumkin.

Yadro keyingi amallarni write buffer orqali davom ettiradi. Bir xil satrga ketma-ket store’lar bufferda birlashtiriladi. Keyingi load shu manzilga kelganda keshda eski satr bo‘lmasa ham, tugallanmagan yozuvdan forwarding olish yoki yozuv quyi darajaga yetguncha kutish kerak.

Streaming yozuvlar

Katta chiqish massivini bir marta yozib, yaqin vaqtda o‘qimaslik no-write-allocate uchun qulay. Eski cache line’ni o‘qib kelish kerak emas, foydali working set chiqarilmaydi. Frame buffer, fayl nusxalash va ayrim numeric kernel’larda non-temporal store shu xulqni so‘rashi mumkin.

Siyosat write-through bilan ko‘p uchraydi: keshda yo‘q yozuv baribir quyi darajaga ketadi, mavjud satrdagi yozuv ham quyi darajaga uzatiladi. Lekin bu qat’iy qoida emas. Write-back kesh ma’lum region yoki instruction hint uchun no-write-allocate yo‘lini tanlashi mumkin.

Keyingi o‘qish narxi

Store’dan keyin shu ma’lumot tezda load qilinsa, no-write-allocate sabab load miss yuz beradi. Quyi darajaga yuborilgan qiymat qaytadan keshga olib kelinadi. Producer-consumer locality kuchli bo‘lgan stack, obyekt va kichik massivlarda write-allocate odatda yaxshiroq.

Adaptive siyosat program counter yoki region bo‘yicha qayta foydalanishni o‘rganishi mumkin. Birinchi store write-around, takroriy store yoki load paydo bo‘lsa keyingi safar allocate qilinadi. Bunday predictor metadata va noto‘g‘ri tasnif xarajatini qo‘shadi.

Coherence va tartib

Keshga joylamaslik boshqa yadrolardagi nusxalarni avtomatik chetlab o‘tmaydi. Store coherence request yuborib sharer’larni invalid qiladi yoki update protokolini bajaradi. Aks holda boshqa yadro eski qiymatni o‘z private keshidan o‘qiydi.

Write-combining buffer odatda tartibsizroq chiqarilishi mumkin; ordinary memory ordering qoidalari baribir saqlanadi. Fence buffer’ni kerakli nuqtaga drain qiladi. Memory-mapped I/O regionida store’larni birlashtirish yoki qayta tartiblash qurilma semantikasini buzishi mumkin, shuning uchun page attribute orqali o‘chiriladi.

No-write-allocate bandwidthni tejashi mumkin, ammo tanlov workload va iyerarxiyaning keyingi darajasiga bog‘liq. L1 allocate qilmasa, shared L2 shu yozuvni allocate qilishi mumkin; “no allocate” qaysi darajaga tegishli ekani hujjatda aniqlanadi.

Write-around request quyi keshda mavjud satrga urilsa, o‘sha daraja uni yangilashi mumkin. Shuning uchun L1 no-allocate bo‘lsa ham L2 hit va allocation holati alohida boshqariladi. Profiling har darajadagi write miss, buffer merge va read-after-write kechikishini ajratib, siyosat haqiqatan streaming workloadga foyda berganini ko‘rsatadi.

No-write-allocate counteri yuqori bo‘lsa ham siyosat foydali degani emas. Keyingi load misslari ko‘paygan bo‘lsa, yozuv trafikidagi tejash read latency bilan bekor bo‘lishi mumkin; ikkala yo‘nalish birga baholanadi.

Natija workload fazalari kesimida tekshiriladi.

Bog‘liq tushunchalar

write-around, write-allocate cache, non-temporal store, write combining, store buffer, cache coherence