Bosh sahifa Wiki Register File

Register File

Register File — protsessorning bajarish bloklari juda tez o‘qib-yoza oladigan registrlar to‘plamini fizik jihatdan amalga oshiruvchi xotira tuzilmasi. U arxitektura yoki fizik registr indekslari bilan manzillanadi, bir siklda bir nechta operandni yetkazadi va natijalarni qabul qiladi. Register file oddiy RAMdan portlar soni, kechikish va datapathga yaqinligi bilan farq qiladi.

Portlar

Ikki manbali bitta ALU uchun kamida ikki o‘qish va bitta yozish porti kerak bo‘lishi mumkin. Superskalyar yadro bir siklda ko‘p buyruq issue qilsa port talabi keskin oshadi. To‘liq multiported cell maydon va energiya jihatdan qimmat; banklash, nusxalash yoki operand bypass orqali bosim kamaytiriladi.

Ikki so‘rov bir bankka tushsa conflict yuz beradi. Scheduler ularni turli siklga ajratishi yoki registrlarni banklar bo‘yicha mos taqsimlashi mumkin. Bir xil ma’lumotni bir nechta o‘qish nusxasida saqlash o‘qish portini ko‘paytiradi, ammo har yozuv barcha nusxaga tarqatilishi kerak.

Arxitektura va fizik registrlar

In-order kichik protsessorda arxitektura registri to‘g‘ridan-to‘g‘ri register file katagiga mos kelishi mumkin. Out-of-order yadro Register Renaming orqali har yangi natijaga Physical Register ajratadi. Rename map dasturdagi registr nomini joriy fizik indeksga bog‘laydi; commit eski versiyani keyin bo‘shatadi.

Zero register kabi maxsus registr fizik katak talab qilmasligi mumkin: o‘qish doim nol, yozish tashlanadi. Program counter yoki status registrlari umumiy file’dan tashqarida alohida tuzilma sifatida saqlanishi ehtimol.

Vaqt va forwarding

Natija yozilgan siklda boshqa port shu registrni o‘qisa, “write-first” yoki “read-first” semantikasi dizaynda aniqlanadi. Ko‘pincha forwarding tarmog‘i execution unit chiqishini iste’molchiga bevosita berib, register file yozilishi va keyingi o‘qishni kutmaydi.

Katta file fizik jihatdan unitlardan uzoq bo‘lsa, sim kechikishi kritik yo‘lga aylanadi. Clustered arxitektura kichik lokal file’lar va ular orasidagi transfer tarmog‘idan foydalanadi. Lokal amal tez, klasterlararo qiymat ko‘chirish esa qo‘shimcha sikl talab qiladi.

Holat va ishonchlilik

Context switch’da operatsion tizim dasturga ko‘rinadigan registrlarni saqlaydi; barcha ichki fizik registrlarni saqlash shart emas, chunki pipeline oldin aniq holatga keltiriladi. Vektor va floating-point file katta bo‘lgani sabab lazy save yoki foydalanish kuzatuvi qo‘llanishi mumkin.

Parity yoki ECC register bit xatosini aniqlaydi. Natija commitdan oldin xato topilsa pipeline retry qilishi mumkin; me’moriy holat buzilgan bo‘lsa machine-check kerak. Reset va context almashtirishda eski maxfiy qiymat boshqa himoya domeniga sizib chiqmasligi ham xavfsizlik talabi hisoblanadi.

Dasturiy ko‘rinish

Calling Convention qaysi arxitektura registrini caller yoki callee saqlashini belgilaydi, lekin register file’ning fizik portlarini ochib bermaydi. Compiler operandlarni ko‘p port talab qiladigan kombinatsiyada chiqarishi mumkin; scheduler mikroarxitektura modeliga ko‘ra port pressure’ni kamaytiradi.

Register spill qiymatni stack’ga store qilib, keyin load qiladi. File sig‘imi yetarli bo‘lsa ham arxitektura registrlar soni yoki allocator cheklovi spill keltirishi mumkin. Out-of-order Physical Register soni esa bir vaqtdagi live spekulyativ natijalarni cheklaydi; tugagan, lekin commit qilinmagan uzun oyna free list’ni bosib, rename bosqichini to‘xtatadi.

Test rejimida portlar o‘rtasidagi bir xil manzil to‘qnashuvi va resetdan keyingi noma’lum qiymatlar alohida tekshiriladi.

Bog‘liq tushunchalar

processor register, physical register, register renaming, execution port, forwarding, register bank