Write Buffer — protsessor, kesh yoki qurilma hosil qilgan yozuvlarni sekinroq xotira yoki interconnect qabul qilguncha vaqtincha saqlaydigan bufer. U yozuvchi blokni har bir fizik yozuv yakunlanishini kutishdan ozod qilib, latency’ni yashiradi va ketma-ket kichik yozuvlarni samarali tranzaksiyaga birlashtirishi mumkin.
Keshdagi roli
Write-through keshda har store quyi darajaga ham uzatiladi. Write buffer bu trafikni navbatlaydi, CPU esa kesh hitdan keyin davom etadi. Write-back keshda iflos satr chiqarilganda to‘liq blok bufferga ko‘chiriladi; kesh yangi satr uchun joyni tezroq bo‘shatadi, quyi xotira yozuvi fon rejimida tugaydi.
Buffer manzil, ma’lumot, byte mask va memory type metadata’sini saqlaydi. Bir xil yoki yonma-yon manzilli yozuvlar birlashtirilsa tranzaksiya soni kamayadi. Ammo memory-mapped I/O’da har yozuv alohida yon ta’sirga ega bo‘lishi mumkin, shu sabab combining ruxsat etilmaydi.
Ordering va kuzatuv
Yozuv bufferda turganda shu yadroning keyingi load’i yangi qiymatni ko‘rishi uchun forwarding yoki queue qidiruvi kerak. Boshqa yadro esa qiymatni coherence protokoli orqali keyinroq ko‘rishi mumkin. Xotira modeli qaysi tartib farqiga ruxsat berishini, fence esa qachon kutish zarurligini belgilaydi.
To‘liq memory barrier ko‘pincha oldingi yozuvlarning tegishli kuzatuv nuqtasiga yetishini kutadi, lekin “fizik DRAMga yozildi” degan ma’no har arxitekturada berilmaydi. Persistent memory uchun cache flush va persistence barrier alohida talab qilinadi.
To‘lish va deadlock
Buffer to‘lsa yangi yozuv stall qiladi. Quyi daraja javob bermasa, bosim pipeline yoki bus mastergacha tarqaladi. Tizim dizayni interrupt handler yoki coherence javobi buffer bo‘shashiga bog‘lanib qolib, aylana kutish hosil qilmasligini ta’minlaydi.
Qurilma DMA write buffer’i ham shunga o‘xshash vazifa bajaradi. Driver “uzatish tugadi” statusini ko‘rishdan oldin barcha payload yozuvlari ko‘rinishini barrier bilan ta’minlaydi. Aks holda qurilma descriptor’ni ko‘rib, hali kelmagan ma’lumotni o‘qishi mumkin.
Store Queue bilan munosabat
Out-of-order CPUda Store Queue spekulyativ yozuvlarni va dependency tekshiruvini yuritadi. Commit qilingan store write buffer’ga o‘tib, kesh yoki busga chiqarilishi mumkin. Bu mantiqiy ajratish aniq istisnoni saqlaydi va fizik xotira kechikishini yashiradi.
Mikroarxitektura hujjati ikkala bosqichni “store buffer” deb birlashtirishi mumkin. Tahlilda nomdan ko‘ra yozuv commitdan oldinmi, load forwarding qiladimi va qaysi kuzatuv nuqtasigacha amalni ushlashi muhim.
Iflos satr va xato
Write-back keshdan chiqarilgan iflos satrning yagona yangi nusxasi vaqtincha bufferda bo‘lishi mumkin. ECC yoki bus error yuz bersa uni jim tashlash ma’lumot yo‘qotadi. Tizim retry, machine-check yoki ishonchli xato siyosatini qo‘llaydi. Buffer entry quyi daraja qabul qilganini tasdiqlamaguncha ozod qilinmaydi.
Quvvat uzilishida oddiy volatile write buffer mazmuni yo‘qoladi. Storage controller barqaror yozuvni va’da qilsa, uning buferi batareya yoki kondensator bilan himoyalangan bo‘lishi yoxud flush command barcha darajani doimiy muhitga chiqarishi kerak. Operatsion tizim aynan shu kafolatga qarab fayl tizimi barrier’larini quradi.
Buffer sig‘imi faqat o‘rtacha yozuv tezligiga emas, quyi interfeysning eng uzun vaqt band qolishiga ham moslanadi. Aks holda qisqa trafik portlashi protsessorni to‘xtatadi. Watermark signallari yozuvchi blokni oldindan sekinlashtirib, to‘lib ketishni boshqaradi.
Bog‘liq tushunchalar
write-back cache, write-through cache, store queue, memory barrier, write combining, backpressure