Bosh sahifa Wiki Cache Block

Cache Block

Cache Block — asosiy xotiraning keshda bitta birlik sifatida nusxalanadigan tekislangan bo‘lagi. Ko‘p adabiyotda u cache line bilan sinonim ishlatiladi: block xotiradagi mantiqiy bo‘lakni, line esa kesh ichidagi uni saqlovchi joy va metadata’ni urg‘ulashi mumkin. Har bir implementatsiya terminlarni aynan shu tarzda ajratishi shart emas.

Blok manzili

Manzil block size’ga bo‘linib, block number va ichki offsetga ajraladi. 64 baytli bloklar 64 ga karrali chegaradan boshlanadi. Birinchi va oxirgi bayt turli blokka tushadigan unaligned operand ikki kesh murojaatini talab qilishi mumkin.

Block number set index va tagga bo‘linadi. Set-associative keshda index muayyan setni, tag esa uning qaysi way’i kerakli block ekanini aniqlaydi. Fully associative keshda alohida index yo‘q, barcha entry taglari qidirilishi mumkin.

Transfer birligi

Missda quyi darajadan block fill yuboriladi. Interconnect blockni bir nechta beatda tashiydi; response mask qaysi beatlar kelganini ko‘rsatadi. Sector cache blokni kichik subblocklarga ajratib, har biri uchun valid yoki dirty bit yuritishi mumkin. Bu keraksiz transferni kamaytiradi, metadata’ni ko‘paytiradi.

Eviction dirty bo‘lsa butun block yoki dirty sectorlar qaytariladi. Write-through siyosatda har store oldinroq uzatilgani sabab clean eviction data trafik talab qilmaydi. Write combining kichik yozuvlarni to‘liq block tranzaksiyasiga yig‘ishi mumkin.

Locality oqibatlari

Qo‘shni elementlar bir blockda bo‘lsa bitta miss keyingi ko‘p access’ni hit qiladi. Shu sabab row-major massivni ketma-ket yurish ustunlar bo‘yicha sakrashdan samaraliroq bo‘lishi mumkin. Katta stride har murojaatda yangi block olib, satrning aksar baytini ishlatmaydi.

Block o‘lchamini oshirish compulsory missni kamaytirishi mumkin, lekin bir xil kesh sig‘imida entrylar sonini kamaytiradi. Pollution va false sharing kuchayadi. Kichik block metadata ulushini va DRAM tranzaksiyalari sonini oshiradi. Dizayn bandwidth, latency va workloadga qarab tanlanadi.

Coherence granularity

Ko‘p coherence protokoli ownershipni cache block bo‘yicha beradi. Yadro bitta bayt yozish uchun ham boshqa sharer’lardagi butun blockni invalid qiladi. Bu implementatsiyani soddalashtiradi, ammo mustaqil o‘zgaruvchilar bir blockda bo‘lsa ping-pong hosil qiladi.

Persistent memory’da failure atomicity cache blockdan boshqacha granularity’da bo‘lishi mumkin. Flush instruction blockni iyerarxiyadan chiqaradi, lekin durability uchun controller queue’sini drain qiluvchi fence ham kerak. Shuning uchun block flush va transaction atomicity bir tushuncha emas.

Blok identifikatori ko‘pincha coherence xabarining manzili sifatida uzatiladi; offset kerak emas, chunki invalidation butun blokka tegishli. Data response esa beat raqami va byte-enable bilan keladi. Interconnect retry qilsa, transaction ID bir xil blokka parallel so‘rovlarni farqlaydi va eski javobning yangi fillga aralashishini oldini oladi.

Compressed cache’da bitta fizik data slot bir nechta siqilgan blockni saqlashi mumkin. Tag va replacement hisoblari logical blockni, sig‘im esa siqilish nisbatini kuzatadi; siqilmagan blok ko‘proq segment talab qiladi.

Compression eviction siyosati segmentlar soni va qayta ishlatilish ehtimolini birga baholab, bitta katta block yoki bir nechta kichik block orasida tanlaydi.

Natija workloadga qarab o‘zgaradi.

Bu xususiyat alohida sinovdan o‘tkaziladi.

Bog‘liq tushunchalar

cache line, cache fill, block offset, cache eviction, sector cache, false sharing