Bosh sahifa Wiki Instruction Issue

Instruction Issue

Instruction Issue — tayyor mikrooperatsiyani protsessorning tegishli bajarish blokiga boshlash uchun tanlash jarayoni. Buyruq dekodlanib, ichki operandlari aniqlangandan so‘ng issue mantiqi ma’lumot bog‘liqliklari, resurs mavjudligi va tartib cheklovlarini tekshiradi. Bu bosqich bir siklda qaysi ishlar haqiqatan bajarila boshlashini belgilaydi.

Tayyorlik shartlari

Mikrooperatsiya barcha zarur manba operandlar tayyor bo‘lganda issue qilinishi mumkin. Oldingi amal hali registr qiymatini ishlab chiqarmagan bo‘lsa, qaram buyruq kutadi. Natija umumiy ma’lumot yo‘li orqali bevosita uzatilsa, registrga yozilishini kutmasdan keyingi amal ishga tushishi mumkin; bu forwarding deb ataladi.

Mos bajarish birligi ham bo‘sh bo‘lishi kerak. Butun son qo‘shish, suzuvchi nuqta, vektor va yuklash-saqlash amallari turli portlardan foydalanishi mumkin. Ikki tayyor mikrooperatsiya bitta portni talab qilsa, arbitraj bittasini tanlaydi. Tanlov yoshi, ustuvorligi yoki adolat siyosatiga asoslanadi.

Tartibli va tartibsiz bajarish

Oddiy in-order protsessor dastur tartibidagi oldingi buyruq tayyor bo‘lmasa, keyingilar tayyor bo‘lsa ham kutishi mumkin. Out-of-order yadro esa mustaqil keyingi operatsiyani issue qilib, bo‘sh resursdan foydalanadi. Buning uchun u kutish stansiyalari yoki issue queue ichida operand tayyorligini kuzatadi.

Tartibsiz issue me’moriy tartibni bekor qilmaydi. Natijalar keyinchalik Instruction Commit bosqichida dastur tartibida rasmiylashtiriladi. Istisno yuz bersa, yoshroq spekulyativ ishlar tashlanadi. Shu ajratish yuqori parallelizm bilan aniq istisnolarni birga ta’minlaydi.

Xotira amallari

Load va store orasidagi bog‘liqlik registr bog‘liqligidan qiyinroq, chunki manzillar kech hisoblanishi mumkin. Load eski store bilan bir manzilga tegishli bo‘lsa, to‘g‘ri qiymat store navbatidan uzatiladi yoki load kutadi. Manzillar mustaqil deb taxmin qilinib load erta bajarilishi mumkin; taxmin xato chiqsa u qayta ijro etiladi.

Xotira tartibi modeli qaysi murojaatlar qayta tartiblanishi mumkinligini belgilaydi. Fence yoki atomik buyruq issue uchun qo‘shimcha cheklov yaratadi. Bu cheklovni buzish bitta oqimda sezilmasligi, ammo ko‘p oqimli dasturda noto‘g‘ri natija berishi mumkin.

Unumdorlik

Issue width bir siklda boshlanishi mumkin bo‘lgan maksimal mikrooperatsiyalar sonidir. Amaldagi tezlik operand bog‘liqligi, port bosimi, navbat sig‘imi va kesh kechikishi bilan cheklanadi. Keng issue mantiqi ko‘p nomzod orasidan tanlash uchun katta apparat va energiya talab qiladi; chastotani saqlash ham qiyinlashadi.

Profil tahlilida “issue bo‘lmadi” degan holatning sababi aniqlanishi zarur: operand kutilishi, port bandligi yoki front-end mikrooperatsiya yetkazmagan bo‘lishi mumkin. Faqat bajarish bloklarini ko‘paytirish ma’lumot zanjiri bilan cheklangan kodni tezlashtirmaydi.

Issue siyosati adolat va kritik yo‘lni ham muvozanatlashtiradi. Doim eng eski tayyor amalni tanlash starvation xavfini kamaytiradi, lekin yoshroq kritik loadni kechiktirishi mumkin. Energiya tejamkor yadro katta assotsiativ navbat o‘rniga kichikroq bo‘lingan navbatlardan foydalanadi; bu tanlashni tezlashtiradi, ammo operatsiya noto‘g‘ri bo‘limda kutib qolishi mumkin. Dizayn haqiqiy ish yuklaridagi port taqsimoti, bog‘liqlik uzunligi va takt chastotasi bilan baholanadi.

Simultaneous multithreading holatida bir nechta apparat oqimi bir xil issue portlari uchun raqobat qiladi. Siyosat bir oqimning tayyor operatsiyalari boshqasini cheksiz to‘smasligini ta’minlaydi, shu bilan birga umumiy portlardan foydalanishni yuqori saqlashga urinadi.

Issue qarori har takt qayta baholanadi.

Bog‘liq tushunchalar

issue queue, out-of-order execution, dependency, execution port, forwarding, instruction dispatch