Bosh sahifa Wiki Physical Register

Physical Register

Physical Register — protsessor mikroarxitekturasida qiymatni haqiqatan saqlaydigan ichki registr katagi. Out-of-order yadro dasturga ko‘rinadigan arxitektura registrlaridan ko‘proq physical register yaratib, Register Renaming orqali har yangi natijani alohida katakka bog‘laydi. Bu nom bog‘liqliklarini yo‘qotadi va spekulyativ natijalarni commitgacha xavfsiz saqlaydi.

Rename xaritasi

Dekoder r1ga yozadigan buyruq ko‘rsa, free list’dan yangi physical register ajratadi. Rename map’da r1 endi shu indeksga ishora qiladi. Keyingi r1 o‘quvchilar yangi tegni oladi; buyruqdan oldingi o‘quvchilar esa eski fizik versiyaga bog‘langan qoladi.

Shu yo‘l bilan ikki mustaqil r1 yozuvi WAW hazard yaratmaydi, eski o‘qish bilan yangi yozish WAR hazard ham bo‘lmaydi. Haqiqiy RAW bog‘liqlik saqlanadi: iste’molchi aynan ishlab chiqaruvchi ajratgan tegni kutadi.

Ajratish va ozod qilish

Yangi physical register dispatch paytida ajratiladi. Natija execution unit’dan kelgach ready biti o‘rnatiladi. Buyruq commit bo‘lganda yangi xarita me’moriy tasdiqlangan holatga aylanadi; o‘sha arxitektura registrining avvalgi physical register’i endi hech bir eski buyruqqa kerak bo‘lmasa free list’ga qaytariladi.

Juda erta ozod qilish yoshroq yoki replay qilinadigan iste’molchiga boshqa qiymat yozilib ketishiga olib keladi. Juda kech ozod qilish esa file’ni to‘ldirib, rename stall yaratadi. Reference yoki commit tartibiga asoslangan aniq umr qoidasi kerak.

Spekulyatsiyani tiklash

Branch oldidan rename map nazorat nuqtasi olinishi mumkin. Bashorat xato bo‘lsa yoshroq mappinglar bekor qilinadi, ajratilgan registrlar free list’ga qaytariladi va eski map tiklanadi. Exception’da commit qilingan xarita aniq me’moriy holatni beradi.

Ba’zi dizayn alohida retirement map va speculative map saqlaydi. Ikkinchisi tez rename uchun, birinchisi recovery uchun ishlatiladi. Checkpoint soni cheklansa ko‘p hal qilinmagan branch dispatchni ushlashi mumkin.

Registr fayli

Physical register integer, floating-point va vector sinflari uchun alohida file’da bo‘lishi mumkin. Unified file turli mikrooperatsiyaga umumiy sig‘im beradi, lekin port va kenglik murakkabligi oshadi. Vektor physical register juda katta bo‘lgani sabab bo‘laklab ajratish yoki element darajasidagi renaming ishlatilishi ehtimol.

Physical register ISAga ko‘rinmaydi. Context switch’da operatsion tizim faqat arxitektura holatini saqlaydi; pipeline drain yoki recovery ichki spekulyativ kataklarni yo‘q qiladi. Debugger ham physical indeksni emas, commit qilingan arxitektura registrini ko‘rsatadi.

Tayyorlik va xato

Physical register qiymati bilan ready biti birga boshqariladi. Ajratilganda ready tozalanadi, execution result to‘liq yozilgach o‘rnatiladi. Wakeup signali qiymat yozilishidan oldin tarqalsa iste’molchi eski katak mazmunini o‘qishi mumkin. Timing va arbitraj buni qat’iy oldini oladi.

Parity xatosi natijani ishlatishdan oldin aniqlansa instruction replay qilinishi mumkin. Doimiy fizik nuqsonli katak built-in self-test’da topilib, spare bilan almashtirilishi yoki register file sig‘imi kamaytirilishi mumkin. Security context almashtirilganda free register ichidagi eski qiymat arxitektura orqali o‘qilmasligi kerak, lekin speculative leak tahdidi ham baholanadi.

Free list checkpoint branch taxmini bilan birga saqlanadi. Taxmin xato chiqsa, undan keyin ajratilgan fizik registrlar qaytariladi, lekin hali eski arxitektura mappingi ushlab turgan registr ozod qilinmaydi. Recoverydagi bitta off-by-one xato ikki mantiqiy qiymatga bir katakni berishi mumkin.

Bog‘liq tushunchalar

register renaming, architectural register, register file, free list, reorder buffer, register dependency