Integer Unit — butun sonlar, bit maydonlari va ko‘pincha manzillar ustidagi skalyar amallarni bajaradigan protsessor bloki. U ALU, shifter, ko‘paytirgich, bo‘luvchi, registr operand yo‘llari va tegishli nazorat mantiqidan iborat bo‘lishi mumkin. Integer unit umumiy dastur kodining ko‘p qismini bajaradi.
Qo‘llab-quvvatlanadigan amallar
Qo‘shish, ayirish, AND, OR, XOR, shift, rotate va taqqoslash asosiy amallardir. Ko‘paytirish va bo‘lish alohida pipeline yoki iterativ yordamchi blokda bo‘lishi mumkin. Leading-zero count, population count va bit-field extraction kabi amallar kriptografiya, siqish va tizim kodini tezlashtiradi.
Signed va unsigned talqin ayrim buyruqlarda farq qiladi. Past bitli qo‘shish bir xil bo‘lsa-da, yuqori qismli ko‘paytirish, bo‘lish, right shift va taqqoslash ishora qoidalariga bog‘liq. Overflow bayrog‘i signed diapazonni, carry esa unsigned chiqishni tavsiflaydi.
Registr va nomini o‘zgartirish
Arxitektura integer registrlari dasturga ko‘rinadi. Out-of-order yadro ularni ko‘proq fizik registrga rename qilib, mustaqil yozuvlar orasidagi soxta bog‘liqlikni yo‘qotadi. Integer issue queue manba teglarini kutib, natija tayyor bo‘lganda mos portga yuboradi.
Ba’zi ISAda program counter, stack pointer yoki nol registri umumiy integer registrlar bilan bog‘liq, lekin maxsus semantikaga ega. Masalan, nol registriga yozuv tashlanadi. Dekoder va renaming mantiqi bunday operandni oddiy fizik registr sifatida ajratmasligi kerak.
Manzil va boshqaruv
Pointer arifmetikasi butun son qo‘shgichlarida bajariladi, ammo load-store oqimida maxsus Address Generation Unit throughputni oshiradi. Branch sharti integer taqqoslashdan olinishi mumkin. Shu sabab integer klasteri control flow va xotira ishiga ham bevosita ta’sir qiladi.
ALU natijasi branchga yoki AGUga forwarding qilinsa, registr fayliga qayta yozib-o‘qish kutilmaydi. Keng bypass tarmog‘i latency’ni kamaytiradi, lekin chastota va energiya xarajatini oshiradi.
Unumdorlik
Bir nechta integer unit protsessorga sikl davomida ko‘p mustaqil amal bajarish imkonini beradi. Biroq hamma unit barcha funksiyani bilmasligi mumkin. Ko‘paytirish porti yoki shift bloki atrofida port pressure hosil bo‘ladi. Uzoq qaram qo‘shish zanjiri esa unitlar ko‘pligidan foyda olmaydi.
Kompilyator strength reduction, common-subexpression elimination va instruction scheduling bilan integer yo‘lini optimallashtiradi. Noto‘g‘ri overflow taxmini bu optimallashtirishni xavfli qiladi; tilning signed arithmetic qoidasi saqlanishi shart.
Integer unit Floating-Point Unit’dan operand formati va istisno semantikasi bilan farq qiladi. Conversion buyruqlari ikki domen orasida o‘tib, alohida latency va rounding qoidalariga ega.
Kengliklararo amal
32 bitli amal 64 bitli registrning yuqori qismini saqlashi, nol qilishi yoki noma’lum qoldirishi ISAga bog‘liq. Keyingi 64 bitli iste’molchi uchun bu semantika dependency va correctness’ga ta’sir qiladi. Sign-extension va zero-extension alohida buyruq yoki load variantida bajariladi.
Partial-register yozuvlari eski yuqori bitlarni yangi past bitlar bilan birlashtirishni talab qilsa, mikroarxitektura yashirin merge operatsiyasi yaratishi mumkin. Kompilyator to‘liq kenglikdagi yozuv tanlab bunday penalty’dan qochadi. Disassembler operand nomi orqali qaysi kenglik ishlatilganini ko‘rsatadi; faqat registr raqami yetarli emas.
Integer divisionning operandga bog‘liq vaqti maxfiy qiymat ishlatiladigan kodda e’tiborga olinadi. Ba’zi protsessor doimiy latency beradi, boshqasi erta tugatadi. Kriptografik kutubxona aniq mikroarxitektura xususiyatini tekshiradi yoki bo‘lishsiz algoritm tanlaydi.
Bog‘liq tushunchalar
ALU, integer register, bit manipulation, execution port, register renaming, address generation unit