Bosh sahifa Wiki Issue Queue

Issue Queue

Issue Queue — dekodlangan va register renaming’dan o‘tgan mikrooperatsiyalar operandlari hamda bajarish resursi tayyor bo‘lishini kutadigan apparat navbati. Out-of-order protsessor navbatdagi eng eski buyruqni ko‘r-ko‘rona kutmay, qaram bo‘lmagan tayyor operatsiyalarni shu tuzilmadan execution unitlarga yuboradi.

Yozuv tarkibi

Har yozuv opcode yoki unit sinfi, manba fizik registr teglari, tayyorlik bitlari, immediate va natija tegi kabi ma’lumotni saqlaydi. Mikrooperatsiya dispatch qilinganda tayyor operand qiymati yozilishi yoki teg bilan kutilishi mumkin. Ishlab chiqaruvchi natija berganda wakeup tarmog‘i mos tegli iste’molchilarni belgilaydi.

Select mantiqi har sikl tayyor yozuvlar orasidan mavjud portlarga moslarini tanlaydi. Eng eski tayyor amal odatda adolat va kritik yo‘l uchun yaxshi, ammo port moslashuvchanligi ham hisobga olinadi. Faqat bitta portda ishlaydigan operatsiyani kechiktirib, ko‘p portli amalni o‘sha portga yuborish keyingi siklda tiqilish keltirishi mumkin.

Wakeup va tanlash xarajati

Katta to‘liq assotsiativ queue’da natija tegi barcha yozuvlarning manba teglari bilan taqqoslanadi. Keng issue yadroda bu ko‘p comparator, sim va energiya talab qiladi. Wakeup-select yo‘li takt chastotasining kritik qismiga aylanishi mumkin.

Banklangan yoki distributed queue operatsiyalarni integer, floating-point va memory sinflariga ajratadi. Bu mantiqni kichraytiradi, ammo bir bank to‘lib, boshqasi bo‘sh qolishi mumkin. Steering algoritmi dispatch paytida mos bank va ehtimoliy portni tanlaydi.

Operand tayyor bo‘lsa-yu execution port band bo‘lsa yozuv navbatda qoladi. Operand kesh missga bog‘liq bo‘lsa uzoq kutishi mumkin. Juda ko‘p kutilayotgan yozuv queue’ni to‘ldiradi va dispatchga backpressure beradi. Reorder buffer’da joy bo‘lsa ham issue queue to‘lishi front-endni to‘xtatishi mumkin.

Spekulyativ yo‘ldagi mikrooperatsiyalar ham joy egallaydi. Branch noto‘g‘ri bashorat qilinganda ularga tegishli yozuvlar age yoki branch mask orqali bekor qilinadi. Replay talab qilgan load yana navbatga qaytishi yoki alohida replay queue’da kutilishi mumkin.

Unumdorlik tahlili

Queue occupancy yuqori bo‘lishi doim yomon emas: u schedulerga ko‘proq mustaqil nomzod beradi. Doim to‘la holat esa operand latency yoki port pressure navbat sig‘imidan ustun ekanini ko‘rsatadi. Past occupancy front-end yetkazib bermayotgani yoki dependency oynasi juda kichikligini anglatishi mumkin.

Issue Queue dasturiy message queue emas. U chip ichidagi qisqa umrli mikrooperatsiyalar uchun vaqtga sezgir tuzilma bo‘lib, ISAga ko‘rinmaydi. Protsessor modeli, yadro kengligi va quvvat maqsadiga qarab uning hajmi hamda siyosati o‘zgaradi.

O‘lcham tanlovi

Kattaroq issue queue uzoq latency ortidan ko‘proq mustaqil ish topishi mumkin. Ammo comparator va wakeup simlari kvadratikka yaqin xarajat bilan kengayadi, takt chastotasi va energiyani cheklaydi. Arxitektor queue hajmini reorder buffer, load miss imkoniyati va odatiy dependency masofasiga moslaydi.

Age matrix har yozuvning boshqalardan eski ekanini tez aniqlashga yordam beradi, lekin katta joy oladi. Pointer yoki guruhlangan ustuvorlik arzonroq, tanlash aniqligi esa pastroq bo‘lishi mumkin. SMT yadroda kvota bir oqimning barcha entry’ni egallab olishiga yo‘l qo‘ymaydi; dinamik bo‘lish bo‘sh joyni yaxshiroq ishlatadi, lekin fairness siyosatini murakkablashtiradi.

Queue yozuvi soft error bilan tayyor deb noto‘g‘ri belgilansa, eski operand bajarilishi mumkin. Parity, age tekshiruvi va pipeline recovery bunday holatni aniqlashga yordam beradi; xavfsizlik darajasi talabiga qarab retry yoki machine-check qo‘llanadi.

Bog‘liq tushunchalar

instruction issue, register renaming, wakeup-select, execution port, reorder buffer, out-of-order execution