Bosh sahifa Wiki Instruction Decoder

Instruction Decoder

Instruction Decoder — protsessor olib kelgan mashina kodi bitlarini tahlil qilib, bajarish bloklari tushunadigan boshqaruv signallari yoki mikrooperatsiyalarga aylantiruvchi apparat qismi. Dekoder buyruq uzunligini, opcode turini, operand registrlarini va adreslash qoidalarini aniqlaydi. U ISAning tashqi kodlanishi bilan mikroarxitekturaning ichki ishlashi orasidagi chegara hisoblanadi.

Dekodlash bosqichlari

O‘zgaruvchan uzunlikdagi ISA avval buyruq chegarasini topishi kerak. Prefikslar, asosiy opcode va qo‘shimcha baytlar ketma-ket tekshiriladi. Keyin registr maydonlari registr fayli indekslariga, immediate bitlar esa kerakli kenglikka ishora bilan kengaytirilgan qiymatga aylantiriladi. Noqonuniy yoki mavjud bo‘lmagan kengaytmaga tegishli kod aniqlansa, bajarish o‘rniga istisno tayyorlanadi.

Sodda buyruq bitta ichki mikrooperatsiyaga mos kelishi mumkin. Murakkab buyruq esa adres hisoblash, xotiradan o‘qish va arifmetik natija yozish kabi bir necha mikrooperatsiyaga ajratiladi. Bu ajratish dasturga ko‘rinmaydi: arxitektura buyruqning belgilangan natijasi va istisno xulqini saqlashi kerak.

Parallel dekodlash

Keng superskalyar protsessor bir siklda bir necha buyruqni dekodlashga intiladi. Bir xil uzunlikdagi kodda parallel bo‘laklash nisbatan to‘g‘ri. O‘zgaruvchan uzunlikda esa ikkinchi buyruq boshlanishi birinchining uzunligiga bog‘liq, shu sabab oldindan chegarani bashoratlash va maxsus tekislash tarmoqlari ishlatiladi.

Dekoder kengligi maksimal nazariy bajarish tezligini cheklashi mumkin. Biroq ko‘proq dekoder tranzistor, energiya va vaqt yo‘li xarajatini oshiradi. Tez-tez uchraydigan dekodlangan mikrooperatsiyalarni keshda saqlash front-end qayta dekodlash sarfini kamaytiradi; kesh topilmasa odatiy dekoder ishlaydi.

Mikrocode

Kam uchraydigan yoki ko‘p bosqichli buyruqlar mikrocode ketma-ketligi orqali bajarilishi mumkin. Dekoder bunday opcode uchun mikrocode kirish nuqtasini tanlaydi. Mikrocode yangilanishi ayrim apparat xatolarini yumshatishi mumkin, lekin u ISA bo‘yicha dastur ko‘radigan to‘g‘ri natijani buzmasligi kerak.

Imtiyozli buyruqlar dekodlanganda joriy bajarish darajasi tekshiriladi. Faqat opcode tanilishi huquq bermaydi; ruxsat sharti bajarilmasa istisno hosil qilinadi. Xuddi shuningdek, apparatda mavjud bo‘lmagan vektor kengaytmasi kodlari aniq rad etiladi.

To‘g‘rilik va xavfsizlik

Dekoder xatosi bitta bit naqshini noto‘g‘ri amal sifatida bajarishi mumkin, shuning uchun rasmiy tekshiruv, tasodifiy test va ISA moslik sinovlari qo‘llanadi. Dekodlash va istisno yo‘llaridagi vaqt farqlari yon kanal tahliliga ta’sir qilishi mumkin. Spekulyativ dekodlangan buyruq me’moriy natija bermasa ham, ichki resurslarga ta’sirini cheklash mikroarxitektura xavfsizligining bir qismidir.

Dekoder kompilyatorning bir qismi emas. Kompilyator oldindan mashina kodini yaratadi; apparat dekoderi esa dastur ishlayotgan har safar shu kodni ichki operatsiyalarga aylantiradi.

Quvvatni kamaytirish uchun dekoder ba’zan takrorlanuvchi sikl yoki mikrooperatsiya keshidan kelgan oqimda vaqtincha o‘chiriladi. Bu optimallashtirish tashqi semantikani o‘zgartirmaydi, faqat front-end energiyasini kamaytiradi. Dekoder chiqishi bilan register renaming va dispatch orasidagi protokol ham aniq bo‘lishi kerak: bitta arxitektura buyrug‘i bir nechta mikrooperatsiyaga bo‘linsa, ularning chegarasi, istisno nuqtasi va commit guruhlanishi yo‘qolmasligi lozim. Aks holda yarim bajarilgan murakkab buyruqdan aniq holatga qaytish qiyinlashadi.

Virtualizatsiyada mehmon ko‘rsatmasi xost apparatida bevosita dekodlanishi yoki gipervizor tomonidan tutib olinishi mumkin. Tutib olish sababi imtiyoz, resursni virtual ko‘rsatish yoki mavjud bo‘lmagan kengaytmani emulyatsiya qilishdir; natija mehmon ko‘radigan ISA qoidalariga mos qoladi.

Bog‘liq tushunchalar

instruction fetch, opcode, micro-operation, microcode, decode stage, illegal instruction