Bosh sahifa Wiki Pipeline Stage

Pipeline Stage

Pipeline Stage — protsessorda buyruqni qayta ishlash ishining ma’lum qismini bajaradigan va natijasini keyingi qismga uzatadigan quvur bosqichi. Buyruq olib kelish, dekodlash, bajarish, xotiraga murojaat va natijani rasmiylashtirish keng tarqalgan vazifalardir. Bosqichlar orasidagi registrlar har takt chegarasida oraliq ma’lumotni saqlaydi.

Quvurlash tamoyili

Quvursiz yo‘lda bitta buyruq barcha ishni tugatgach keyingisi boshlanadi. Quvurlashda esa bir buyruq bajarish bosqichida turgan paytda keyingisi dekodlanadi, undan keyingisi olib kelinadi. Bu bitta buyruqning umumiy kechikishini shart emas kamaytiradi, ammo barqaror oqimda vaqt birligida tugaydigan buyruqlar sonini oshiradi.

Har bosqich bir takt ichida o‘z mantiqini yakunlashi kerak. Eng sekin bosqich, bosqichlararo registr kechikishi va soat tarqalishi minimal takt davrini cheklaydi. Murakkab ishni ko‘proq mayda bosqichga ajratish yuqori chastotaga imkon beradi, lekin registrlar soni, energiya va tarmoq xatosidan tiklanish jarimasini oshiradi.

Bosqichlararo ma’lumot

Faqat operand emas, buyruq identifikatori, boshqaruv bitlari, istisno belgisi va bashorat ma’lumoti ham quvur bo‘ylab yuradi. Bir bosqich buyruqni bekor qilsa, unga tegishli barcha yon ma’lumot keyingi bosqichlarda haqiqiy natija sifatida qabul qilinmasligi kerak. Valid biti yoki teglar aynan qaysi yozuv faol ekanini ko‘rsatadi.

Oddiy besh bosqichli model ta’lim uchun qulay, ammo zamonaviy yadro ko‘proq bosqich, parallel yo‘l va tartibsiz bajarish navbatlariga ega bo‘lishi mumkin. Bitta ISA turli avlodlarda mutlaqo boshqa quvur bilan amalga oshiriladi. Shuning uchun stage soni dastur semantikasining qismi emas.

To‘xtash va tozalash

Keyingi bosqich yangi yozuvni qabul qila olmasa, backpressure oldingi bosqichni ushlab turadi. Operand tayyor bo‘lmaganda pipeline stall hosil bo‘ladi; oqim davom etishi uchun ayrim joylarga bo‘sh bubble kiritilishi mumkin. Noto‘g‘ri branch bashoratida esa yoshroq buyruqlar flush qilinib, fetch to‘g‘ri manzildan qayta boshlanadi.

Forwarding natijani yozish bosqichigacha kutmay, bevosita keyingi buyruqning bajarish bosqichiga uzatadi. Bu ko‘p ma’lumot hazardlarini kamaytiradi, ammo qo‘shimcha tanlash mantiqi va uzun signal yo‘llarini keltiradi. Ayrim bog‘liqliklar, xususan kech tayyor bo‘ladigan load, baribir stall talab qilishi mumkin.

Loyihalash va tahlil

Bosqich chegarasi mantiqning muvozanati, jismoniy joylashuv va quvvatga qarab tanlanadi. Ikki bosqichning ish hajmi juda farq qilsa, biri har taktning kritik yo‘liga aylanadi. Chastota ortishi har doim umumiy tezlikni oshirmaydi: chuqur quvur ko‘proq branch jarimasi va energiya sarflashi mumkin.

Vaqt diagrammasi har siklda qaysi buyruq qaysi bosqichda ekanini ko‘rsatadi. Bunday diagramma hazard, stall va forwardingni tushuntirishda foydali, lekin real superskalyar protsessorda bir bosqichda bir nechta mikrooperatsiya bo‘lishi mumkin.

Bosqichlar har doim jismoniy jihatdan bitta blokka teng kelmaydi. Signal bir takt ichida bir necha kombinatsion moduldan o‘tishi, bitta modul esa turli quvur yo‘llari tomonidan navbat bilan ishlatilishi mumkin. “Fetch bosqichi” kabi nom funksional tushuntirish beradi, ammo chip floorplanini to‘liq tasvirlamaydi. Mikrosxema hujjatida latency, qabul qilish oralig‘i va qayta ishlash yo‘li stage nomidan ko‘ra aniqroq unumdorlik ma’lumotidir.

Reset yoki flush paytida har stage valid holatini kelishilgan tartibda tozalaydi. Eski tranzaksiya tegi keyingi yangi buyruqqa tegishli deb qabul qilinsa, kam uchraydigan va takrorlash qiyin bo‘lgan noto‘g‘ri natija paydo bo‘lishi mumkin.

Bog‘liq tushunchalar

instruction pipeline, pipeline register, pipeline stall, forwarding, branch prediction, throughput