Bosh sahifa Wiki Load-Store Unit

Load-Store Unit

Load-Store Unit — protsessorda xotiradan o‘qish va xotiraga yozish mikrooperatsiyalarini boshqaradigan bajarish bloki. LSU samarali manzilni qabul qiladi yoki hisoblatadi, TLB va data cache’ga murojaat qiladi, load natijasini registrga yetkazadi hamda store’larni tartibli navbat orqali tashqi ko‘rinadigan holatga chiqaradi.

Asosiy qismlar

Load queue bajarilgan va kutilayotgan o‘qishlarni, store queue esa manzil hamda qiymatlarni saqlaydi. Address Generation Unit baza, indeks, scale va siljishdan manzil hosil qiladi. TLB virtual manzilni tarjima qiladi, kesh tegi esa ma’lumotning yaqin nusxasini qidiradi.

LSU bir siklda nechta load va store qabul qilishi portlar soniga bog‘liq. Manzil generatsiyasi, TLB porti va kesh banki alohida cheklov bo‘lishi mumkin. Ikki load turli AGUda hisoblansa ham bir kesh bankiga tushib, to‘qnashishi ehtimol.

Xotira bog‘liqligi

Eski store manzili bilan yosh load manzili teng bo‘lsa, load eng yangi oldingi qiymatni olishi kerak. Store-to-load forwarding qiymatni store queue’dan beradi. Kenglik yoki tekislanish qisman ustma-ust tushsa, bir nechta manbani birlashtirish kerak bo‘lib, sekin yo‘l yuzaga kelishi mumkin.

Store manzili hali noma’lum paytda loadni kutish xavfsiz, ammo parallelizmni kamaytiradi. Memory dependence predictor ular mustaqil deb taxmin qilib loadni erta bajarishi mumkin. Keyin conflict aniqlansa load va qaram mikrooperatsiyalar replay qilinadi.

Kesh xatosi va istisno

L1 miss so‘rovni quyi keshga yuboradi va miss-status yozuvi javobni kuzatadi. Non-blocking cache boshqa mustaqil loadlarga davom etish imkonini beradi. Juda ko‘p miss kuzatuv yozuvlarini to‘ldirsa yangi xotira amali stall qiladi.

Sahifa xatosi, ruxsat yoki alignment buzilishi LSUda aniqlanadi. Out-of-order bajarilgan yosh load xatosi darhol tashqi handlerga o‘tmaydi; metadata commitgacha saqlanib, aniq istisno hosil qiladi. Spekulyativ load keshda iz qoldirishi mumkinligi xavfsizlik dizaynida hisobga olinadi.

Tartib va coherence

LSU ISA xotira modelini, fence va atomic semantikasini amalga oshiradi. Store buffer yozuvlari boshqa yadroga coherence protokoli orqali ko‘rinadi. Acquire va release tegishli operatsiyalarning qayta tartiblanishini cheklaydi.

Memory-mapped I/O oddiy speculative keshli murojaatdan farqli atributga ega. LSU bunday hududda birlashtirish, prefetch yoki qayta tartiblashni cheklaydi. Sahifa jadvalidagi memory type noto‘g‘ri bo‘lsa, qurilma bilan ishlash buzilishi mumkin.

Bandwidth va prefetch

LSU ketma-ket manzil naqshini aniqlab hardware prefetcher’ga signal beradi yoki prefetcher kesh so‘rovlarini mustaqil chiqaradi. Foydali prefetch load kelishidan oldin satrni yaqinlashtiradi. Juda uzoq qarash keshni ifloslantiradi, juda kech qarash latency’ni yashirmaydi. Sahifa chegarasi va ruxsatsiz hududda ehtiyotkorlik zarur.

Write combining ketma-ket kichik store’larni bufferda to‘liq burstga yig‘ishi mumkin. Bu grafik framebuffer va streaming chiqishda bandwidthni oshiradi, lekin boshqa yadro darhol ko‘rishi kerak bo‘lgan sinxronizatsiya ma’lumoti uchun mos emas. Memory type va fence qoidasi bu xulqni boshqaradi.

Page-table walker ham LSU bilan kesh va xotira portlarini bo‘lishishi mumkin. TLB miss ko‘payganda oddiy data cache hitlar ham port bosimi sabab sekinlashadi. Huge page tarjima sonini kamaytiradi, biroq xotira parchalanishi va himoya granularligini o‘zgartiradi.

Bog‘liq tushunchalar

load queue, store queue, address generation unit, data cache, TLB, memory dependence