Cache Tag — xotira manzilining cache set va satr ichidagi offsetni tanlashdan ortib qolgan yuqori qismi bo‘lib, entry qaysi xotira blokiga tegishli ekanini aniqlaydi. Kesh data bilan birga tag, valid va holat bitlarini saqlaydi. Bir xil setga xaritalangan turli manzillar aynan tag orqali farqlanadi.
Tag lookup
Request manzili index yordamida setni tanlaydi. Setdagi har way tagi request tag bilan taqqoslanadi. Tag teng va valid bit o‘rnatilgan bo‘lsa hit yuz beradi. Coherence state Invalid bo‘lsa bitlar mos kelgan taqdirda ham entry ishlatilmaydi.
Physical tag kesh yozuvini fizik manzilga bog‘laydi va processlar orasidagi virtual aliaslarni birlashtiradi. Virtually tagged kesh tezroq lookup berishi mumkin, ammo context switch, synonym va homonym muammolariga qarshi address-space identifier yoki flush talab qiladi.
Metadata tarkibi
Tag array faqat manzil bitlaridan iborat emas. Valid, dirty, coherence state, replacement, prefetch va ECC bitlari yonida saqlanishi mumkin. Shared cache directory sharer vector yoki owner identifikatorini qo‘shadi. Metadata maydoni katta LLC’da sezilarli chip maydonini egallaydi.
Tag parity yoki ECC bilan himoyalanadi. Noto‘g‘ri tag boshqa fizik manzil data’sini qaytarishi mumkinligi sabab data xatosidan ham xavfli. Correctable xato scrub qilinadi; uncorrectable entry invalid qilinib, zarur bo‘lsa machine-check beriladi.
Partial tag va optimallashtirish
Quvvatni kamaytirish uchun avval tagning kichik qismi yoki way predictor tekshirilishi mumkin. Partial match nomzod way’larni qisqartiradi, to‘liq tag keyin correctnessni tasdiqlaydi. Faqat qisqa tag bilan yakuniy hit chiqarish collision sabab noto‘g‘ri data beradi.
Snoop filter ba’zan data’siz tag va sharer metadata saqlaydi. Bu directory entry private keshda nusxa borligini ko‘rsatadi. Data LLC’dan chiqarilgan bo‘lsa ham tag qolishi noninclusive coherence’ni yuritishga yordam beradi.
Invalidation va qayta ishlatish
Fill boshida way reservation qilinadi, ammo valid tag data to‘liq va xatosiz kelgach e’lon qilinadi. Aks holda boshqa request yarim to‘ldirilgan satrni hit deb olishi mumkin. Fill cancellation, branch speculation va coherence race holatlarida valid o‘rnatish tartibi muhim.
Evictionda eski tag replacement request va write-back manzilini qayta qurish uchun index bilan birlashtiriladi. Dirty data quyi darajaga aynan shu to‘liq manzil bo‘yicha yoziladi. Tag yo‘qolsa dirty satrni qayerga qaytarish aniqlanmaydi.
Tag compression shared cache directory’sida chip maydonini kamaytirishi mumkin. Yaqin fizik manzillar yuqori bitlarni bo‘lishsa, umumiy prefix bir marta saqlanadi. Compression overflow yoki noyob manzilda fallback entry talab qiladi; metadata yo‘qolishi coherence correctnessiga ta’sir qilgani sabab format parity va recovery bilan himoyalanadi.
Tag lookup spekulyativ boshlansa, permission va physical tag tasdiqlanmaguncha data arxitektura natijasiga berilmaydi. Noto‘g‘ri yo‘ldagi array o‘qishi timing izi qoldirishi mumkinligi xavfsizlik tahliliga kiradi.
Speculation barrier va privilege ajratish bunday mikroarxitektura oqimini cheklash vositalaridan biridir.
Context switch’da tag address-space identifikatori bilan ajratilmasa, virtually tagged entrylar tozalanadi. Bu boshqa processning bir xil virtual manzilini eski data bilan adashtirmaslik uchun zarur.
Bu xususiyat alohida sinovdan o‘tkaziladi.
Bog‘liq tushunchalar
cache index, cache set, cache way, valid bit, tag array, physical address