Bosh sahifa Wiki L3 Cache

L3 Cache

L3 Cache — ko‘p darajali kesh iyerarxiyasining uchinchi bosqichi bo‘lib, odatda L1 va L2’dan katta hamda sekinroq ishlaydi. Zamonaviy ko‘p yadroli protsessorlarda u ko‘pincha bir nechta yadro bo‘lishadigan last-level cache vazifasini bajaradi. Uning asosiy maqsadi DRAMga chiqadigan so‘rovlar sonini va xotira kechikishini kamaytirishdir.

Umumiy sig‘im

Shared L3 yadrolar orasida sig‘imni dinamik taqsimlaydi. Bir yadro kichik working set bilan ishlasa, boshqasi bo‘sh qolgan qismini egallashi mumkin. Read-only code va umumiy kutubxona satri L3’da bitta nusxada turib, turli L2’larni to‘ldiradi. Bu alohida katta private keshlar bilan solishtirganda maydondan samarali foydalanadi.

Shu bilan birga, yadro va ishlar o‘rtasida interference paydo bo‘ladi. Katta streaming workload boshqa xizmatning tez-tez ishlatiladigan satrlarini chiqarishi mumkin. Way partitioning, cache allocation va QoS siyosati tenant yoki priority sinfiga minimal sig‘im ajratadi. Bunday bo‘linish utilizationni pasaytirishi mumkin, shuning uchun siyosat workloadga moslanadi.

Slice va manzil xaritalash

Katta L3 ko‘pincha fizik jihatdan bir nechta slicega bo‘linadi. Har slice ma’lum yadro yoki interconnect tuguniga yaqin joylashadi. Fizik manzilning hash funksiyasi satr qaysi slice’da saqlanishini tanlaydi; so‘rov ring, mesh yoki boshqa on-chip network orqali shu joyga boradi.

Hash trafikni teng tarqatadi, biroq hit latency masofaga qarab o‘zgaradi. Yaqin slice tezroq, chipning narigi tomonidagi slice sekinroq bo‘lishi mumkin. Performance modeli faqat “L3 hit”ni emas, interconnect bandligi va home-agent masofasini ham hisobga oladi.

Coherence va directory

L3 taglari ko‘pincha satr qaysi private keshlarda borligini kuzatuvchi directory metadata bilan bog‘lanadi. Yadro yozish huquqini so‘rasa, directory boshqa nusxalarga invalidation yuboradi. Inclusive L3’da satrni L3’dan chiqarish private kesh nusxalarini ham bekor qilishni talab qiladi. Noninclusive dizayn esa private nusxani L3 data qismisiz kuzatishi mumkin.

Dirty satr private L2’dan L3’ga yoki to‘g‘ridan-to‘g‘ri memory controllerga qaytariladi. Protokol ma’lumotning eng yangi egasi qayerdaligini bilishi kerak. Aks holda L3’dagi eski nusxani DRAMga yozish yangilangan qiymatni yo‘qotadi.

Cheklovlar va o‘lchash

L3 miss DRAM murojaatiga olib kelishi mumkin, lekin remote socket yoki persistent memory kabi boshqa darajalar ham mavjud. Hardware prefetch foydali oqimni L3’ga keltiradi; agresiv prefetch bandwidth va sig‘imni egallaydi. Ayrim tizimlar prefetch satrini past priority bilan joylashtiradi.

Hit rate yuqori bo‘lsa ham L3 har doim tezlikni oshirmaydi: yadro data’ni kam ishlatsa, katta keshning leakage energiyasi ortadi. Serverlarda esa ko‘p thread va katta shared working set sabab L3 muhim. Counterlarni talqin qilishda demand, prefetch, coherence va write-back trafikini ajratish kerak.

L3 sig‘imi marketingdagi nominal hajm bilan cheklanmaydi: directory, disabled way, reserved region va inclusion nusxalari foydalanuvchi workloadiga tegishli samarali joyni kamaytiradi. Chipdagi ayrim way nuqson sabab o‘chirilishi mumkin. Firmware topologiya va cache sharing ma’lumotini operatsion tizimga beradi, scheduler undan affinity tanlashda foydalanadi.

L3’dan chiqarilgan clean satr jim tashlanadi, dirty satr esa memory controller navbatiga kiradi. Write-back port bandligi replacementni to‘xtatmasligi uchun alohida eviction buffer qisqa trafik portlashlarini yutadi.

Bog‘liq tushunchalar

last-level cache, cache slice, directory protocol, cache coherence, memory controller, cache partitioning