Bosh sahifa Wiki Unified Cache

Unified Cache

Unified Cacheinstruction va data uchun bitta umumiy saqlash maydonidan foydalanadigan kesh. Unda kod satrlari ham, dastur o‘qiydigan yoki yozadigan ma’lumot satrlari ham bir xil setlar, way’lar va replacement mexanizmini bo‘lishadi. Bu yondashuv ko‘pincha L2 va L3 kabi quyi darajalarda qo‘llanadi.

Umumiy sig‘imning foydasi

Instruction va data talabi dastur fazasiga qarab o‘zgaradi. Kompilyatsiya yoki ma’lumotlar bazasi skanida data working set katta bo‘lishi mumkin; kichik hisoblash siklida esa kod qayta-qayta ishlatiladi. Unified cache qat’iy bo‘lingan sig‘im o‘rniga bo‘sh joyni talabga qarab avtomatik taqsimlaydi. Data kam bo‘lgan paytda code ko‘proq satr egallaydi va aksincha.

Bu moslashuv umumiy miss sonini kamaytirishi mumkin. Split cache’da instruction qismi bo‘sh turgan bo‘lsa ham data uning sig‘imidan foydalana olmaydi. Unified tuzilma bir xil umumiy hajmda yaxshi utilization beradi va ikkita alohida replacement hamda metadata blokini yuritish ehtiyojini kamaytiradi.

Portlar va raqobat

Birlashtirishning narxi — instruction fetch va data access o‘rtasidagi raqobat. Yadro bir vaqtda yangi buyruq satrini ham, load miss uchun ma’lumotni ham so‘rashi mumkin. Kesh banklar, ko‘p port, request queue va arbitraj yordamida bu trafikni boshqaradi. Port yetishmasa, biri ikkinchisini kutib, pipeline’ga kechikish qo‘shadi.

Replacement siyosati kod va ma’lumotni bir-biridan ajratmasa, katta streaming data oqimi tez-tez ishlatiladigan instruction satrlarini chiqarib yuborishi mumkin. Ayrim tizimlar request turini metadata sifatida saqlaydi, way partitioning yoki insertion priority orqali muhim kodni himoya qiladi. Prefetcher ham instruction va data oqimi uchun alohida aniqlik nazoratiga ega bo‘lishi mumkin.

Kesh iyerarxiyasidagi o‘rni

L1 odatda split bo‘ladi, chunki instruction va data uchun parallel, juda past latency kerak. L2 unified bo‘lsa, L1 instruction miss va L1 data miss bir xil quyi darajaga murojaat qiladi. Ular Miss Status Holding Register va fill buffer kabi resurslar uchun navbatlashadi. Quality of Service qoidalari data miss instruction yetkazib berishni uzoq bloklamasligini ta’minlaydi.

Ko‘p yadroli last-level unified cache barcha yadrolarning kod va ma’lumotini saqlashi mumkin. Shared sig‘im samarali, ammo bir yadro intensiv trafik bilan boshqasining working setini siqib chiqaradi. Cache allocation texnologiyalari way yoki sig‘im kvotasini yadro, virtual mashina yoki xizmat sinfiga ajratadi.

O‘zini o‘zgartiruvchi kod

Dastur xotiraga yangi instruction yozganda, unified cache borligi avtomatik ravishda front-end yangilangan baytlarni ko‘radi degani emas. L1 instruction cache, predecode yoki trace strukturalari eski nusxani saqlashi mumkin. ISA ko‘rsatgan data-cache clean, instruction-cache invalidate va synchronization amallari bajariladi. JIT runtime ham shu ketma-ketlikka amal qiladi.

Unified cache termini fizik ma’lumot saqlashning umumiyligini bildiradi; coherence, inclusion va write siyosati alohida tanlovlardir. U write-back yoki write-through, inclusive yoki noninclusive bo‘lishi mumkin.

Unified tuzilmani tekshirishda instruction fill, dirty data eviction va snoop bir setga bir vaqtda keladigan holatlar muhim. Arbitraj correctnessni saqlab, instruction oqimini och qoldirmasligi kerak. Error correction ham kod va data uchun bir xil data array’ni himoya qiladi, ammo executable satr xatosi front-end recovery bilan muvofiqlashtiriladi.

Bog‘liq tushunchalar

split cache, instruction cache, data cache, L2 cache, last-level cache, cache partitioning