Superscalar protsessorlar
i uchun kod belgilangan tartibda bajarilsa
to'g'ri natijani beradigan ko'rsatmalar ketma-ketligini o'z ichiga oladi. Kod
ketma-ket algoritmni bildiradi va faqat ma'lum bir ko'rsatmalar to'plamidan
foydalangan holda, u ishlaydigan apparatning mohiyati yoki ko'rsatmalarning
bajarilish vaqtining aniq tartibi to'g'risida aniq tasavvurga ega emas.
Superscalar protsessorlari uchun dasturlardan farqli o'laroq, VLIW kodi
protsessor dasturni qanday bajarishi uchun aniq reja (POE - Plan Of Execution,
bajarish sxemasi kompilyatsiya vaqtida statik ravishda tuziladi) taklif qiladi.
Kodda har bir operatsiya qachon bajarilishi, qaysi funktsional qurilmalar
ishlashi va qaysi registrlarda operandlar bo'lishi aniq ko'rsatilgan. VLIW
kompilyatori kerakli Record Of Execution (ROE) - dastur ishlayotganda ro'y
beradigan voqealar ketma-ketligiga erishish uchun protsessorning o'zi haqida
to'liq tushunchaga ega bo'lib, bunday ijro rejasini tuzadi. Kompilyator POE-ni
(moslikni aniq tavsiflovchi ko'rsatmalar to'plami arxitekturasi orqali) apparatga
uzatadi, bu esa o'z navbatida belgilangan rejani bajaradi. Ushbu reja VLIW ga
yuqori ILP darajalariga erishishga qodir bo'lgan nisbatan oddiy qo'shimcha
qurilmalardan foydalanishga imkon beradi. VLIW-lardan farqli o'laroq,
superscalar apparati ketma-ket kod asosida dinamik ravishda POE-larni
yaratadi. Ushbu yondashuv jismoniy bajarilish murakkabligini oshirsa-da,
superskalar protsessori rejani faqat ish vaqtida aniqlanishi mumkin bo'lgan
omillardan foydalangan holda tuzadi. EPICni yaratishda o'z oldilariga qo'ygan
maqsadlaridan biri VLIW-da tatbiq etilgan statik POE yaratish printsipini
saqlab qolish edi, ammo shu bilan birga uni superskalar protsessoriga o'xshash
imkoniyatlar bilan boyitib, yangi me'morchilikni dinamikani yaxshiroq hisobga
olishga imkon berdi. an'anaviy ravishda VLIWga mos keladigan bir xillikni
cheklaydigan omillar. Ushbu maqsadlarga erishish uchun EPIC "mafkurasi"
ba'zi bir asosiy printsiplar asosida qurilgan. Birinchisi, kompilyatsiya vaqtida
ijro rejasini tuzish. EPIC kompilyatorga POE yaratish yukini yuklaydi.
Umuman olganda, arxitektura va jismoniy dastur kompilyatorga buni amalga
oshirishga xalaqit berishi mumkin bo'lsa-da, EPIC protsessorlari kompilyatorga
ijro rejasini tuzishda yordam beradigan funktsiyalarni taqdim etadi. Ishlash
vaqtida EPIC protsessorining xatti-harakatlari kompilyator nuqtai nazaridan
taxmin qilinadigan va boshqariladigan bo'lishi kerak. Buyruqlarning tartibdan
tashqari dinamik ravishda bajarilishi kompilyatorni "chalkashtirib yuborishi"
mumkin, shunda uning qarorlari protsessor tomonidan yaratilgan haqiqiy ijro
yozuviga qanday ta'sir qilishini "tushunmaydi", shuning uchun u protsessorning
harakatlarini bashorat qilishi kerak. vazifani yanada murakkablashtiradi.
Bunday holatda, dastur aytgan narsani aniq bajaradigan protsessor afzaldir.
Kompilyatsiya vaqtida reja tuzishning mohiyati ketma-ket manba kodini
tartiblashdan iborat bo'lib, u dastur parallelligidan to'liq foydalanishi va
bajarilish vaqtini minimallashtirishda apparat resurslaridan maksimal darajada
foydalanishi kerak. Tegishli me'moriy yordamisiz bunday qayta tartiblash
dasturning to'g'riligini buzishi mumkin. Shunday qilib, EPIC POE-ni yaratishni
kompilyatorga topshirganligi sababli, u kompilyatsiya vaqtida intensiv kodni
qayta tartiblashni qo'llab-quvvatlaydigan me'moriy xususiyatlarni ham
ta'minlashi kerak. Keyingi printsip - kompilyator tomonidan ehtimoliy
taxminlardan foydalanish. EPIC kompilyatori ijro rejasini tuzishda jiddiy
muammoga duch keladi: bajarilishni yozib olishga sezilarli ta'sir ko'rsatadigan
ma'lum turdagi ma'lumotlar faqat dastur bajarilishi paytida ma'lum bo'ladi.
Masalan, kompilyator filial bayonotidan keyin qaysi filial bajarilishini,
rejalashtirilgan kod asosiy bloklardan qachon o'tishini va grafik yo'llardan qaysi
biri tanlanishini aniq bila olmaydi. Bundan tashqari, odatda bir vaqtning o'zida
dasturdagi barcha yo'llarni optimallashtiradigan statik rejani tuzish mumkin
emas. Ikkilamchi, shuningdek, kompilyator havolalar xotirada bir xil joyga
ishora qilish-qilmasligini hal qila olmaydigan holatlarda ham paydo bo'ladi.
Agar shunday bo'lsa, ularni ketma-ket hal qilish kerak; agar bo'lmasa, ular har
qanday tartibda rejalashtirilishi mumkin. Ushbu noaniqlikni hisobga olgan
holda, ma'lum bir natija ko'pincha ehtimol. Ushbu vaziyatda EPICning eng
muhim tamoyillaridan biri bu kompilyatorga ehtimoliy taxminlar bo'yicha
ishlashga imkon berish qobiliyatidir - bu eng mumkin bo'lgan holatlar uchun
POE ni yaratadi va optimallashtiradi. Biroq, EPIC Dastlabki taxminlar to'g'ri
bo'lmagan taqdirda ham dasturning to'g'riligini ta'minlash uchun Control va
Data Speculation kabi me'moriy yordamni taqdim etadi. Agar taxmin noto'g'ri
bo'lib chiqsa, dasturni bajarish paytida ishlashning pasayishi aniq. Ushbu
ishlash effekti ba'zan dastur rejasida ko'rinadi, masalan, juda optimallashtirilgan
dastur maydoni mavjud bo'lganda va kod unchalik optimallashtirilgan holda
bajariladi. Bundan tashqari, ishlashning pasayishi dasturning rejasida
ko'rinmaydigan "to'xtash" (Stall) daqiqalarida yuz berishi mumkin - eng katta
ehtimollik va shuning uchun optimallashtirilgan holatga tushadigan ba'zi
operatsiyalar maksimal darajada bajariladi, ammo to'xtatib qo'yiladi to'g'riligini
ta'minlash uchun protsessor, agar unchalik katta bo'lmagan holatlar yuzaga
kelsa. Reja tuzilgandan so'ng kompilyator uni apparatga uzatadi. Buning uchun
ISA kompilyatorning qarorlarini har bir operatsiyani qachon boshlashi va
qanday manbalardan foydalanish to'g'risida xabardor qiladigan darajada boy
bo'lishi kerak (xususan, qaysi operatsiyalar bir vaqtning o'zida ishga
tushirilishini ko'rsatadigan usul bo'lishi kerak). Shu bilan bir qatorda,
kompilyator kerakli yozuvni olish uchun protsessor dinamik ravishda qayta
tashkil etiladigan ketma-ket dasturni yaratishi mumkin. Ammo keyinchalik
uskunani dinamik rejalashtirishdan ozod qilish maqsadiga erishilmaydi. POE-ni
apparatga o'tkazishda kerakli ma'lumotlarni o'z vaqtida taqdim etish juda
muhimdir. Bunga misol tariqasida filialning operatsiyasini ko'rsatish mumkin,
agar u ishlatilsa, filialning manzilida buyruqlarni oldindan tanlashni talab qiladi,
albatta filialning o'zi boshlanishidan oldin. Buni qachon amalga oshirishni va
qaysi hop manzilini apparatga qoldirishni hal qilish o'rniga, bunday ma'lumotlar
EPIC ko'rsatmalariga muvofiq aniq va o'z vaqtida kod orqali apparatga
uzatiladi. Mikro arxitektura, shuningdek, kodning bajarilishi bilan bevosita
bog'liq bo'lmagan, ammo ijro vaqtiga ta'sir qiladigan boshqa qarorlarni qabul
qiladi. Bunday misollardan biri kesh iyerarxiyasini boshqarish va ierarxiyani
saqlash uchun qanday ma'lumotlar kerakligi va ularni almashtirish kerakligi
to'g'risida tegishli qarorlar qabul qilishdir. Bunday qoidalar odatda kesh
boshqaruvchisi algoritmi tomonidan ta'minlanadi. EPIC kompilyator ushbu
mikroarxitektura mexanizmlarini boshqarish imkoniyatiga ega bo'lish uchun ijro
rejasini tuzadi degan printsipni kengaytiradi. Shu maqsadda me'morchilik
qobiliyatlari odatda mikroarxitektura tomonidan boshqariladigan mexanizmlarni
dasturiy boshqarishga imkon beradi. VLIW apparat-dasturiy kompleksi
Do'stlaringiz bilan baham: |