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: