Write-Through Cache — protsessor yoki controller keshdagi satrni o‘zgartirganda ayni yozuvni darhol keyingi xotira darajasiga ham uzatadigan kesh siyosati. Keshdagi va quyi darajadagi nusxa yozuv qabul qilingach bir xil qiymatga yaqin holatda bo‘ladi. Bu write-back siyosatidan farq qiladi: write-back dirty satrni faqat chiqarilish paytida yozadi.
Yozuv yo‘li
Store hit yuz berganda kesh data array’i yangilanadi va manzil hamda qiymat quyi darajaga yuboriladi. Agar processor har yozuv tugashini kutsa, keshning tezlik foydasi kamayadi. Shu sabab write buffer so‘rovni navbatga oladi; yadro buffer joyi bor ekan keyingi instructionlarni davom ettiradi.
Bir xil cache line’ga ketma-ket kichik store’lar bufferda birlashtirilishi mumkin. Byte enable bitlari qaysi qismlar o‘zgarganini ko‘rsatadi. Write combining bus trafikini kamaytiradi, biroq memory ordering va memory-mapped I/O uchun birlashtirishga har doim ruxsat berilmaydi.
Afzalliklar
Quyi kesh yoki xotira yangi qiymatni muntazam olgani sabab dirty satr yuritish va eviction paytidagi write-back zarurati kamayadi. Kesh satrini chiqarish odatda faqat valid bitni almashtiradi. Reset, snoop va recovery control’i soddaroq bo‘lishi mumkin.
Boshqa agent keshni chetlab o‘tib quyi darajani o‘qisa, yangilanish tezroq ko‘rinadi. Shunga qaramay, write buffer ichidagi tugallanmagan yozuv sabab “darhol” fizik jihatdan bir xil takt degani emas. Fence yoki drain amali oldingi yozuvlar kuzatuv nuqtasiga yetganini kafolatlaydi.
Kamchiliklar
Har store quyi interfeysda trafik hosil qiladi. Dastur bir satrni ko‘p marta yangilasa, write-back faqat yakuniy holatni chiqarishi mumkin, write-through esa barcha yozuvni uzatadi. Bandwidth cheklangan tizimda buffer to‘lib, processor stall qiladi. Energiya sarfi ham oshadi.
Quyi daraja sekin bo‘lsa, chuqur write queue kerak. Queue xato yoki quvvat uzilishi holatida qaysi yozuv qabul qilinganini aniq bildirishi lozim. Persistent storage controller “yozuv tugadi” deganda ma’lumot volatile bufferda qolgan bo‘lsa, fsync kafolati buziladi; flush va power-loss protection siyosati alohida belgilanadi.
Miss siyosati
Write-through write hit’da nima bo‘lishini belgilaydi, write miss esa alohida qaror. Write-allocate tizim avval satrni keshga olib kelib, keyin ikkala darajani yangilaydi. No-write-allocate store’ni keshga joylamay, quyi darajaga yuboradi. Write-through ko‘pincha no-write-allocate bilan uchrasa-da, bu majburiy juftlik emas.
Ko‘p yadroli tizimda coherence protokoli boshqa nusxalarni invalid yoki update qiladi. Quyi darajaning yangi bo‘lishi private keshlardagi eski sharer’larni avtomatik tuzatmaydi. Shu sabab write-through coherence o‘rnini bosmaydi.
Write-through L1 ostidagi L2 bir xil yozuvlarni yutib, DRAMga write-back rejimida chiqarishi mumkin. Demak siyosat butun iyerarxiya uchun emas, aniq daraja uchun tavsiflanadi. Performance tahlilida L1 write trafik, L2 hit va memory write alohida o‘lchanadi; aks holda har store DRAMga bordi degan noto‘g‘ri xulosa chiqadi.
Error response write buffer entrysi bilan bog‘lanadi. Precise exception talab qilinadigan tizim store qaysi instructionga tegishli ekanini saqlaydi; asinxron bus xatosi esa machine-check sifatida keyinroq yetkazilishi mumkin.
Debug vositasi buffer occupancy va drain stalllarini sanab, quyi interfeys store oqimini ko‘tara olayotganini aniqlaydi.
Bu holat ham kuzatiladi.
Bog‘liq tushunchalar
write-back cache, write buffer, write-allocate cache, no-write-allocate cache, memory fence, cache coherence