Xulosa o'rniga
So'nggi yillarda VLIW va superskalar arxitekturaning afzalliklarini taqqoslash ko'rsatmalar darajasidagi parallelizmni (ILP) amalga oshirish bo'yicha mutaxassislar o'rtasida asosiy muhokama mavzusi bo'ldi. Ikkala kontseptsiyaning tarafdorlari bu munozarani VLIW ning soddaligi va cheklangan imkoniyatlariga va superskalar tizimlarning dinamik imkoniyatlariga qarshi turishga qisqartiradilar. Ammo, yuqorida aytib o'tilganidek, bunday taqqoslash tubdan noto'g'ri. Ko'rinib turibdiki, ikkala yondashuvning ham o'ziga xos tomonlari bor va ularning muqobillari haqida gapirish o'rinli emas. Kompilyatsiya vaqtida bajarish rejasini yaratish, hatto superscalar protsessor uchun ham ko'rsatmalar darajasida yuqori darajadagi parallelizatsiyani ta'minlash uchun juda muhimdir. Bundan tashqari, kompilyatsiya vaqtida noaniqlik borligi aniq, uni faqat ish vaqtida hal qilish mumkin, va bu vazifa uchun protsessor dinamik mexanizmlarni talab qiladi. EPIC tarafdorlari bu ikkala pozitsiyaga ham rozi - yagona farq shundaki, EPIC ushbu mexanizmlarni arxitektura darajasida taqdim etadi, shunda kompilyator bunday dinamik mexanizmlarni manipulyatsiya qilishi va imkoni boricha ularni tanlab qo'llashi mumkin. Ushbu keng imkoniyatlar kompilyatorga ushbu mexanizmlarni boshqarish qoidalaridan apparat ruxsat berganidan ko'ra optimalroq foydalanishga yordam beradi.
EPIC asosiy tamoyillari ularni qoʻllab-quvvatlaydigan arxitektura imkoniyatlari bilan bir qatorda keng koʻlamli dastur sohalarida kamroq apparat murakkabligi bilan yuqori koʻrsatmalar darajasidagi parallelizmga erishish uchun ILP arxitekturalari va protsessorlarini aniqlash vositalarini taqdim etadi. Aniqroq qilib aytganda, IA-64 EPIC tamoyillarini umumiy maqsadli hisoblash uchun qanday qo'llash mumkinligiga misol bo'lib, ob'ekt kodining mosligi muhim bo'lgan sohadir. Biroq, vaqt o'tishi bilan EPIC yuqori samarali o'rnatilgan tizimlar bozorida bir xil darajada muhim rol o'ynashiga ishonch bor. Ushbu sohada narx / ishlash nisbati uchun yanada qat'iy talablar va bir vaqtning o'zida ob'ekt modullari darajasida moslik uchun past talablar qo'yiladi, bu esa ko'proq "moslashuvchan" arxitekturalardan foydalanishga majbur qiladi. Ushbu vaziyatni tan olgan HP Labs kompaniyasi PICO (Program In, Chip Out) tadqiqot loyihasini ishga tushirdi, uning doirasida prototip allaqachon ishlab chiqilgan bo'lib, unda standart C tilida yozilgan o'rnatilgan ilovalarga asoslangan boshqa imkoniyatlar bilan bir qatorda avtomatik ravishda loyihalash mumkin. EPIC protsessorining arxitekturasi va mikroarxitekturasi.aniq vazifaga moslashtirilgan. Shunday qilib, EPIC kodni qayta yozmasdan maxsus ilovalarni ishga tushirish orqali umumiy maqsadli mikroprotsessorlarning barqaror ishlashiga yangi umidlarni taqdim etadi. muayyan vazifaga moslashtirilgan EPIC protsessorining arxitekturasi va mikroarxitekturasini avtomatik tarzda loyihalash mumkin. Shunday qilib, EPIC kodni qayta yozmasdan maxsus ilovalarni ishga tushirish orqali umumiy maqsadli mikroprotsessorlarning barqaror ishlashiga yangi umidlarni taqdim etadi. muayyan vazifaga moslashtirilgan EPIC protsessorining arxitekturasi va mikroarxitekturasini avtomatik tarzda loyihalash mumkin. Shunday qilib, EPIC kodni qayta yozmasdan maxsus ilovalarni ishga tushirish orqali umumiy maqsadli mikroprotsessorlarning barqaror ishlashiga yangi umidlarni taqdim etadi.
VLIW protsessorlari bilan bog'liq asosiy muammo, ko'rinishidan, ilovalarning ketma-ket mantig'i va bir tomondan, hisoblash algoritmlarining aksariyat qismi tabiati bilan VLIW protsessorining bajarilishining parallel tabiati o'rtasidagi ziddiyatdir. boshqa tomondan. Klassik protsessorlardagi funktsional qurilmalar sonining cheklanishi, ehtimol, nafaqat samarali tartibdan tashqari bajarilishini tashkil etishning mumkin emasligi, balki mustaqil ravishda bajarilishi mumkin bo'lgan buyruqlar sonining cheklanganligi bilan bog'liq.
Agar optimallashtiruvchi qat'iy vaqt freymlari bilan cheklanmagan bo'lsa ham (klassik superskalar protsessorlarda bo'lgani kabi), unda, ehtimol, ba'zi algoritmlarda ko'rsatmalarning etarlicha zich to'plamiga erishish mumkin, lekin faqat ba'zilarida. Masalan, statik optimallashtirish juda qiyin bo'lgan doimiy o'zgaruvchan ma'lumotlar to'plamiga ega voqealarga asoslangan dasturlarga misol bo'lishi mumkin. Ma'lumotlar to'plamini o'zgartirish, masalan, ma'lumotlar bazalari bilan ishlashda halokatli ishlashning yomonlashishiga olib keladigan vaziyatni taxmin qilish mumkin. Hodisalarning bunday rivojlanishiga yo'l qo'ymaslik yo'li quyidagicha ko'rinadi - dasturni kompilyatsiya qilishda barcha mumkin bo'lgan ma'lumotlar kombinatsiyalarida algoritmning barcha bo'limlaridan "o'tish", har bir mumkin bo'lgan vaziyat uchun optimal kodni yaratish. Lekin aniq Bunday yechim kompilyatsiya qilingan dastur hajmini mutlaqo tushunarli oshirishga olib keladi va bajarish uchun operativ xotiradan optimal kodning turli xil (vaziyatga ko'ra) qismlarini yuklash zarurati xotira quyi tizimidagi yukni aniq oshiradi. Shu munosabat bilan, kesh xotira hajmini oshirish mantiqiy ko'rinadi, masalan, haqiqiy Itanium2-da Itanium bilan solishtirganda - va bu ma'lumotlar avtobusining o'tkazish qobiliyati bir necha bor oshganiga qaramay.
Alohida qiziqish uyg'otadigan narsa, masalan, algoritmning turli bo'limlariga tegishli bo'lgan ko'rsatmalar to'plamini bir vaqtning o'zida bajarish uchun ularni haqiqiy natijani keyinchalik tanlash bilan birlashtirishning nazariy imkoniyati. Ushbu usul ishlash nuqtai nazaridan nisbatan soddalashtirilgan holda, tarmoqni bashorat qilish g'oyasini yo'q qilishi mumkin, ammo kod hajmi va xotiraga yuk nomutanosib ravishda o'sib boradi. Boshqa tomondan, agar tarmoqlanish ikkilik emas, balki undan ko'p bo'lsa, unda bu holda ko'rsatmalarni dekodlash moslamalariga yuk ham ortadi - ko'rsatmalarni yuklash zichligi oshishi bilan (bitta o'rniga ikkala filial), masalan, raqobat holatlari. asosiy avtobusning (FSB - Front Side Bus) va / yoki kesh xotirasining (BSB - Back Side Bus) maksimal mumkin bo'lgan tarmoqli kengligi.
Shuni ta'kidlash kerakki, klassik protsessorlarga qaraganda ko'proq hollarda operatsiyalar ketma-ketligini oldindan rejalashtirish ma'lumotlar avtobusining haqiqiy o'tkazish qobiliyatidan maksimal darajada foydalanish imkonini beradi. Ammo interfeysdan foydalanishning bunday yuqori va prognozli samaradorligi, boshqa tomondan, tizimni qurishda printsipial jihatdan yangi yondashuvni talab qiladi.
VLIW arxitekturasini rivojlantirishning eng "qiziqarli" (va kontseptsiya uchun xavfli) jihati protsessorlarning ichki arxitekturasidagi mumkin bo'lgan o'zgarishlar bilan birgalikda statik kodni optimallashtirish muammosi deb hisoblanishi mumkin. Bitta qurilma uchun optimallashtirilgan dastur keyingi avlod protsessorlarida ishlash uchun mutlaqo yaroqsiz (samarasiz) bo'lib chiqishi aniq. Biroq, bu muammoni hal qilishning samarali usuli mavjud. G'oyaning mohiyati shundan iboratki, dasturning taqsimlangan "tarqatish" tarkibida ishlashga tayyor kod emas, manba matnlari (OSF g'oyasiga ko'ra) emas, balki ba'zi bir oraliq kompilyatsiya bosqichining natijasi: tavsiflangan bog'liqliklar bilan, jarayonlarning rasmiylashtirilgan tavsifi, o'ralgan halqalar - umuman olganda, unda kompilyator ishining an'anaviy eng qiyin qismi deb hisoblangan va aslida, uning ish sifatini belgilaydi. Dasturni o'rnatish vaqtida o'rnatuvchi ma'lum bir protsessorga xos kompilyatorni chaqiradi, bu oraliq kodni bajariladigan kodga aylantiradi - bundan tashqari, ma'lum bir protsessor (va bundan tashqari, konfiguratsiya) uchun optimal tarzda. Ushbu g'oyani ishlab chiqishda biz foydalaniladigan quyi tizimlarni tavsiflovchi kutubxonalar asosida yakuniy kompilyatorni (uning ishlashi uchun variantlar) kompilyatsiya qilish variantini taklif qilishimiz mumkin. Ushbu yondashuvning natijasi, birinchidan, kompyuterning har bir aniq konfiguratsiyasidan maksimal mumkin bo'lgan ishlashni "siqib chiqarish" bo'lishi mumkin, ikkinchidan, bu "apparat va dasturiy platforma" tushunchasining yo'qolishiga olib kelishi mumkin. Har qanday operatsion tizim har qanday protsessorga o'rnatilishi mumkin, agar faqat kerakli drayverlar to'plami (ta'riflar) mavjud bo'lsa. Biroq, bu juda ideal sxema. Dasturni o'rnatish vaqtida o'rnatuvchi ma'lum bir protsessorga xos kompilyatorni chaqiradi, bu oraliq kodni bajariladigan kodga aylantiradi - bundan tashqari, ma'lum bir protsessor (va bundan tashqari, konfiguratsiya) uchun optimal tarzda. Ushbu g'oyani ishlab chiqishda biz foydalaniladigan quyi tizimlarni tavsiflovchi kutubxonalar asosida yakuniy kompilyatorni (uning ishlashi uchun variantlar) kompilyatsiya qilish variantini taklif qilishimiz mumkin. Ushbu yondashuvning natijasi, birinchidan, kompyuterning har bir aniq konfiguratsiyasidan maksimal mumkin bo'lgan ishlashni "siqib chiqarish" bo'lishi mumkin, ikkinchidan, bu "apparat va dasturiy platforma" tushunchasining yo'qolishiga olib kelishi mumkin. Har qanday operatsion tizim har qanday protsessorga o'rnatilishi mumkin, agar faqat kerakli drayverlar to'plami (ta'riflar) mavjud bo'lsa. Biroq, bu juda ideal sxema. Dasturni o'rnatish vaqtida o'rnatuvchi ma'lum bir protsessorga xos kompilyatorni chaqiradi, bu oraliq kodni bajariladigan kodga aylantiradi - bundan tashqari, ma'lum bir protsessor (va bundan tashqari, konfiguratsiya) uchun optimal tarzda. Ushbu g'oyani ishlab chiqishda biz foydalaniladigan quyi tizimlarni tavsiflovchi kutubxonalar asosida yakuniy kompilyatorni (uning ishlashi uchun variantlar) kompilyatsiya qilish variantini taklif qilishimiz mumkin. Ushbu yondashuvning natijasi, birinchidan, kompyuterning har bir aniq konfiguratsiyasidan maksimal mumkin bo'lgan ishlashni "siqib chiqarish" bo'lishi mumkin, ikkinchidan, bu "apparat va dasturiy platforma" tushunchasining yo'qolishiga olib kelishi mumkin. Har qanday operatsion tizim har qanday protsessorga o'rnatilishi mumkin, agar faqat kerakli drayverlar to'plami (ta'riflar) mavjud bo'lsa. Biroq, bu juda ideal sxema. ushbu oraliq kodni bajariladiganga aylantirish - bundan tashqari, ma'lum bir protsessor (va bundan tashqari, konfiguratsiya) uchun optimal tarzda. Ushbu g'oyani ishlab chiqishda biz foydalaniladigan quyi tizimlarni tavsiflovchi kutubxonalar asosida yakuniy kompilyatorni (uning ishlashi uchun variantlar) kompilyatsiya qilish variantini taklif qilishimiz mumkin. Ushbu yondashuvning natijasi, birinchidan, kompyuterning har bir aniq konfiguratsiyasidan maksimal mumkin bo'lgan ishlashni "siqib chiqarish" bo'lishi mumkin, ikkinchidan, bu "apparat va dasturiy platforma" tushunchasining yo'qolishiga olib kelishi mumkin. Har qanday operatsion tizim har qanday protsessorga o'rnatilishi mumkin, agar faqat kerakli drayverlar to'plami (ta'riflar) mavjud bo'lsa. Biroq, bu juda ideal sxema. ushbu oraliq kodni bajariladiganga aylantirish - bundan tashqari, ma'lum bir protsessor (va bundan tashqari, konfiguratsiya) uchun optimal tarzda. Ushbu g'oyani ishlab chiqishda biz foydalaniladigan quyi tizimlarni tavsiflovchi kutubxonalar asosida yakuniy kompilyatorni (uning ishlashi uchun variantlar) kompilyatsiya qilish variantini taklif qilishimiz mumkin. Ushbu yondashuvning natijasi, birinchidan, kompyuterning har bir aniq konfiguratsiyasidan maksimal mumkin bo'lgan ishlashni "siqib chiqarish" bo'lishi mumkin, ikkinchidan, bu "apparat va dasturiy platforma" tushunchasining yo'qolishiga olib kelishi mumkin. Har qanday operatsion tizim har qanday protsessorga o'rnatilishi mumkin, agar faqat kerakli drayverlar to'plami (ta'riflar) mavjud bo'lsa. Biroq, bu juda ideal sxema. foydalaniladigan quyi tizimlarni tavsiflovchi kutubxonalar asosida yakuniy kompilyatorni (uning ishlashi uchun variantlar) kompilyatsiya qilish variantini taklif qilishingiz mumkin. Ushbu yondashuvning natijasi, birinchidan, kompyuterning har bir aniq konfiguratsiyasidan maksimal mumkin bo'lgan ishlashni "siqib chiqarish" bo'lishi mumkin, ikkinchidan, bu "apparat va dasturiy platforma" tushunchasining yo'qolishiga olib kelishi mumkin. Har qanday operatsion tizim har qanday protsessorga o'rnatilishi mumkin, agar faqat kerakli drayverlar to'plami (ta'riflar) mavjud bo'lsa. Biroq, bu juda ideal sxema. foydalaniladigan quyi tizimlarni tavsiflovchi kutubxonalar asosida yakuniy kompilyatorni (uning ishlashi uchun variantlar) kompilyatsiya qilish variantini taklif qilishingiz mumkin. Ushbu yondashuvning natijasi, birinchidan, kompyuterning har bir aniq konfiguratsiyasidan maksimal mumkin bo'lgan ishlashni "siqib chiqarish" bo'lishi mumkin, ikkinchidan, bu "apparat va dasturiy platforma" tushunchasining yo'qolishiga olib kelishi mumkin. Har qanday operatsion tizim har qanday protsessorga o'rnatilishi mumkin, agar faqat kerakli drayverlar to'plami (ta'riflar) mavjud bo'lsa. Biroq, bu juda ideal sxema. “apparat va dasturiy platforma” tushunchasining yo‘qolishiga olib kelishi mumkin. Har qanday operatsion tizim har qanday protsessorga o'rnatilishi mumkin, agar faqat kerakli drayverlar to'plami (ta'riflar) mavjud bo'lsa. Biroq, bu juda ideal sxema. “apparat va dasturiy platforma” tushunchasining yo‘qolishiga olib kelishi mumkin. Har qanday operatsion tizim har qanday protsessorga o'rnatilishi mumkin, agar faqat kerakli drayverlar to'plami (ta'riflar) mavjud bo'lsa. Biroq, bu juda ideal sxema.
Taklif etilayotgan variantlarga muqobil bo'lib, to'g'ridan-to'g'ri ish vaqtida oraliq kod sifatida etkazib beriladigan ilovalarning dinamik kompilyatsiyasi bilan Kruzoga o'xshash tizim deb atash mumkin. Bir tomondan, dinamik kompilyatsiya ko'rinishidagi qo'shimcha yuk tufayli ishlash past bo'lishi aniq, boshqa tomondan, bunday yechimning soddaligi va uning aniq moslashuvchanligi (masalan, dinamik tarjimon). tizimda bir vaqtning o'zida bajariladigan ilovalarning xatti-harakatlarini hisobga olishi mumkin) buni etarlicha jozibador qiladi. Shunga qaramay, bunday dinamik kompilyator ish paytida mavjud apparat haqida ma'lumotga ega bo'lishi mumkin (va kerak).
O‘tmishga nazar tashlaydigan bo‘lsak, Transmeta mavjud zamonaviy xotira texnologiyalaridan to‘liq foydalanishni istamasligi tufayli “buzilgan” bo‘lishi ehtimoldan holi emas. Ilovalarning dinamik kompilyatsiyasi bilan operativ xotiraga yuk sezilarli darajada oshishi aniq. Boshqacha qilib aytganda, past o'tkazish qobiliyatiga ega bo'lgan xotira quyi tizimidan foydalangan holda Transmeta tizimning operativ xotirasiga intensiv kiradigan ilovalarda katta yo'qotishlarga duchor bo'ldi, shu bilan birga ko'p vaqtini protsessor ichida o'tkazadigan ilovalarning ishlashi deyarli bir xil. Transmeta-ning kelajakdagi yo'li mantiqiy ravishda, bir yadroda ikki yoki undan ortiq dastur tarmoqlarini (turli xil dasturlarni) parallel ravishda bajarish imkoniyati bilan protsessorning funktsional qurilmalari sonini kengaytirishga qaratilgan bo'lishi kerak,
S
Do'stlaringiz bilan baham: |