Bosh sahifa Wiki Cache Index

Cache Index

Cache Index — xotira manzilining keshdagi qaysi set yoki entry guruhi tekshirilishini tanlaydigan bitlar qismi. Offset bitlari cache line ichidagi baytni, index bitlari setni, tag esa shu setdagi ayni xotira blokini aniqlaydi. Indexlash tag qidiruvini butun kesh o‘rniga kichik set bilan cheklab, tez va energiya tejamkor access beradi.

Index bitlari

Setlar soni ikki darajasi bo‘lsa, index bitlari soni log2(setlar) ga teng. 64 baytli line va 256 set uchun pastki olti bit offset, undan keyingi sakkiz bit index bo‘ladi. Qolgan yuqori bitlar tag sifatida saqlanadi. Associativity o‘zgarsa bir xil umumiy sig‘imda setlar soni va index kengligi ham o‘zgaradi.

Oddiy modulo mapping power-of-two stride’larda konflikt yaratishi mumkin. Bir xil index bitlariga ega ko‘p manzil bitta set way’lari uchun kurashadi. Skewed yoki hashed indexing yuqori manzil bitlarini XOR qilib, trafikni set va slice’lar bo‘ylab tengroq tarqatadi.

Virtual va fizik index

Physically indexed kesh address translation tugagach setni tanlaydi. Bu synonym muammosini kamaytiradi, ammo TLB latency’si kritik yo‘lga kiradi. Virtually indexed, physically tagged L1 indexni virtual page offset ichidan olib, TLB va data array’ni parallel o‘qiydi; fizik tag keyin hitni tasdiqlaydi.

Index bitlari page offsetdan tashqariga chiqsa bir fizik sahifaning ikki virtual aliasi turli setga tushishi mumkin. Page coloring, kesh hajmi va associativity cheklovi yoki synonym aniqlash bu holatni boshqaradi. Context identifier tag homonymni ajratadi, biroq fizik coherence baribir to‘g‘ri yuritilishi kerak.

Dasturga ta’siri

Massiv o‘lchami va stride ma’lum setlarni takroran tanlasa conflict miss ko‘payadi. Padding yoki tile o‘lchamini o‘zgartirish index patternini tarqatadi. Bu optimallashtirish mikroarxitekturaga bog‘liq; yashirin hash mavjud bo‘lsa oddiy bit hisoblash yetarli emas.

Operatsion tizim fizik sahifa ranglarini indexning page raqamidan keladigan bitlari asosida ajratishi mumkin. Cache coloring tenant yoki real-time taskga set guruhini beradi. Huge page index va TLB xulqini o‘zgartirib, locality natijasiga ta’sir qiladi.

Tekshiruv

Kesh testlari har setning birinchi va oxirgi manzili, wrap-around, barcha way to‘lishi va parallel fillni qamrab oladi. Noto‘g‘ri index hisoblash tag mos bo‘lsa ham data’ni boshqa setga yozib, keyin topilmas miss yoki duplicate entry keltiradi.

Flush-by-index kabi ayrim privileged amallar set va wayni to‘g‘ridan-to‘g‘ri tanlaydi. Oddiy dastur esa odatda manzilga asoslangan maintenance’dan foydalanadi, chunki fizik mapping va hash implementatsiyaga xos.

Index va offset hisobida line hamda set soni ikki darajasi bo‘lmasa oddiy bit kesish yetmaydi; modulo yoki hash kerak bo‘ladi. Ko‘p hardware qulay dekoder uchun power-of-two tuzilmani tanlaydi. Software esa cache geometriyasini CPUID, device tree yoki tizim API’sidan olib, taxminni arxitektura kafolati deb qabul qilmaydi.

Index hash reverse engineering side-channel va tuning tadqiqotlarida uchraydi, ammo undocumented mapping avlodlar orasida o‘zgaradi. Production dastur bunday topilmaga correctness sharti sifatida tayanmasligi kerak.

Barqaror API faqat sig‘im, line hajmi va sharing domain kabi rasmiy xususiyatlarni qaytaradi.

Bog‘liq tushunchalar

cache tag, cache set, block offset, page coloring, virtual address, conflict miss