9-Ma’ruza
APPARAT DARAJASIDA PARALLELIKNI TA’MINLASH USULLARI
UMUMIY TUSHUNCHALAR
Protsessor yadrolari arxitekturasi keng ma'noda ko'plab elementlardan tashkil topgan murakkab tizimga ishora qiladi.
Rivojlanish jarayonida yarimo'tkazgichli tuzilmalar (mikrosxemalar) rivojlanib boradi, shuning uchun protsessorlarni qurish printsiplari, ularning tarkibiga kiradigan elementlar soni, ularning o'zaro ta'sirini tashkil etish usuli doimo o'zgarib turadi. Shunday qilib, bir xil asosiy dizayn tamoyillariga ega protsessorlar odatda bir xil arxitektura protsessorlari deb ataladi. Va bunday printsiplarning o'zi protsessor arxitekturasi (yoki mikroarxitektura) deb nomlanadi.
Mikroprotsessor (yoki protsessor) kompyuterning asosiy qismidir. U axborotni qayta ishlaydi, dasturlarni bajaradi va tizimdagi boshqa qurilmalarni boshqaradi.
Dasturlarning qanchalik tez bajarilishi protsessor kuchiga bog'liq.
YADRO
Yadro har qanday mikroprotsessorning asosidir. U kremniy chipida joylashgan millionlab tranzistorlardan iborat. Mikroprotsessor umumiy maqsadli registrlar (UMR) deb nomlangan maxsus yacheykalarga bo'linadi. Hammasi bo'lib protsessorning ishi buyruqlar va ma'lumotlarni xotiradan ma'lum ketma-ketlikda olish va ularni bajarishdan iborat. Bundan tashqari, kompyuterning ishlashini yaxshilash uchun mikroprotsessor ichki kesh xotirasi bilan jihozlangan. Kesh xotirasi – bufer sifatida ishlatiladigan protsessorning ichki xotirasi (operativ xotira bilan aloqada uzilishlardan himoya qilish uchun).
Hisoblash texnologiyasining rivojlanish sur'atini osongina kuzatish mumkin: soniyada bir necha ming operatsiyani bajaradigan ENIAC (umumiy maqsadlar uchun birinchi elektron raqamli kompyuter) dan Tianhe-2 superkompyuteriga (sekundiga 1000 trillion suzuvchi nuqta operatsiyalari). Bu shuni anglatadiki, hisoblash tezligi 60 yil ichida trillion marta oshgan. Yuqori samarali hisoblash tizimlarini yaratish eng qiyin ilmiy va texnik muammolardan biridir. Hisoblash texnikasining tezligi atigi bir necha million marta ko'paygan bo'lsa, hisoblashning umumiy tezligi trillionlab marta oshdi. Ushbu ta'sir hisoblashning barcha bosqichlarida parallellikdan foydalanish orqali erishiladi. Parallel hisoblash xotirani oqilona taqsimlashni, ma'lumotlarni uzatishning ishonchli usullarini va hisoblash jarayonlarini muvofiqlashtirishni izlashni talab qiladi.
Zamonaviy protsessorlarning ko’pchiligi parallel ishlashning turli shakllarini ta’minlaydi. Ushbu mexanizmlar mikroprotsessor tizimi tomonidan dasturlarning bajarilish vaqtiga sezilarli darajada ta’sir qiladi.
“Raqobatbardosh (bir vaqtning o’zida) ish” tushunchasi hisoblash tizimlari uchun markaziy hisoblanadi. Aytilish mumkinki, kompyuter dasturi uning turli qismlari kontseptual ravishda birgalikda bajarilishi mumkin bo’lsa, raqobatdosh bo’ladi. Agar kompyuterning turli fizik qismlarida xar hil qurilmalarda (masalan, ko’p yadroli protsessor yoki turli xil protsessorlar guruhida) birgalikda bajarilsa, kompyuter dasturi parallel deb aytiladi.
Raqobatbardosh bo’lmagan dasturlar buyruqlarni bajarishda qat’iy ketma-ketlikni belgilaydi. Bunday dasturlarni ifoda etuvchi dasturlash tillari imperativ deb ataladi (masalan, C tili). Raqobatli dasturlarni yozish uchun C-dan foydalanish tildan tashqarida qo’shimcha qadamlarni talab qiladi. Odatda, bu operatsion tizim tomonidan ta’minlanadigan oqimlar (thread) kutubxonasidan foydalaniladi. Java, imperativ til, oqimlarni to’g’ridan-to’g’ri qo’llab-quvvatlaydigan konstruktsiyalarni o’z ichiga oladi.
Quyidagi C kod operatorlarini ko’rib chiqamiz:
double pi, piSquared, piCubed;
pi = 3,14159;
piSquared = pi * pi;
piCubed = pi * pi * pi;
Oxirgi ikkita operator mustaqil (bog’liq emas) va shuning uchun parallel yoki teskari tartibda bajarilishi mumkin. Bu natijaga ta’sir qilmaydi.
Biz ushbu ketma-ketlikni quyidagi tarzda qayta yozamiz va u mustaqil bo’lishni to’xtatadi:
double pi, piSquared, piCubed;
pi = 3,14159;
piSquared = pi * pi;
piCubed = piSquared * pi;
Bunday holda, oxirgi operator avvalgi operatorga bog’liq.
Agar mikroprotsessorli to’liq tizim parallel ishlashni qo’llab-quvvatlasa, kompilyator operatorlar o’rtasida bog’liqlikni tahlil qilishi va parallel kodni shakllantirishi mumkin. Bunday tahlil ma’lumotlar oqimi tahlili deb nomlanadi. Bugungi kunda ko’pgina mikroprotsessorlar buyruqlar oqimini to’plamli uzatishli atxitekturali yoki VLIW (very large instruction word – buyruqlarning juda uzun formati) dan foydalanib parallel bajarilishini qo’llab-quvvatlamoqda.
Buyruqlar oqimini to’plamli uzatishli protsessorlar bir vaqtning o’zida mustaqil ko’rsatmalarni bajarishlari mumkin. Apparatli vositalar buyruqlarni yo’l-yo’lakay tahlil qiladi va bog’liqliq aniqlanmasa, bir vaqtning o’zida bittadan ko’p buyruqlarni bajaradi. VLIW-protsessorlari raqobatbardosh operatsiyalarni aniqlaydigan assembler darajasidagi ko’rsatmalarga ega. Bunday holda, odatda kompilyatordan dasturga tegishli buyruqlarni kiritish talab qilinadi.
Ikkala holatda ham (ko’p marta uzatish va VLIW) imperativ dastur parallel ravishda bajarilishini ta’minlash uchun bir vaqtning o’zida predmetlarni tahlil qilinadi. Umumiy talab dasturni bajarish tezligini oshirishdir. Maqsad – unumdorlikni oshirishdir, qachonki ishni oldinroq tugatish to’g’risidagi taxmin keyinchalik uni tugatgandan yaxshiroq bo’lsa. Biroq, o’rnatilgan tizimlar kontekstida bir vaqtning o’zida unumdorlini oshirishdan ko’ra muhimroq rol o’ynaydi. O’rnatilgan tizim dasturi ko’pincha bir vaqtning o’zida bir nechta manbalarni kuzatishi va ularga javob berishi va bir vaqtning o’zida bir nechta chiqish moslamalarini boshqarishi kerak. O’rnatilgan tizim dasturi deyarli har doim bir vaqtning o’zida dastur bo’lib, bir vaqtning o’zida dastur mantiqining ajralmas qismidir. Bu nafaqat ish faoliyatini yaxshilashning usulidir. Haqiqatdan xam biron ishni oldinroq bajarish har doim ham uni keyinroq bajarishdan afzal emas. Mohiyatdan o’z vaqtida bajarishdir, ya’ni, fizik dunyodagi ish-harakatlar ko’pincha o’z vaqtida bajarilishi kerak – oldin xam, keyin xam emas. Masalan, benzin bilan iashlaydigan dvigatelning regulyatori: erta yonish kechikishdan yaxshiroq emas. Bu o’z vaqtida sodir bo’lishi kerak.
Imperativ dasturlar ketma-ket yoki parallel ravishda ishlagani kabi, raqobatbardosh dasturlar xam ketma-ket yoki parallel ravishda ishlashi mumkin. Bugungi kunda raqobatbardosh dasturni ketma-ket bajarish odatda ko’p masalali operatsion tizim tomonidan amalga oshiriladi, bu esa masalalar to’plamini oddiy ketma-ket bo’yruqlar oqimida bajarish tartibini almashtiradi. Agar protsessor ko’plab uzatishli yoki VLIW-ni qo’llab-quvvatlasa, apparat ushbu bajarishni parallellashtirishi mumkin.
Shu tarzda, raqobatbardosh dastur operatsion tizim tomonidan ketma-ket oqimga aylantiriladi va ish samaradorligini oshirish uchun qo’shimcha qurilmalar yordamida raqobatdosh dasturga qaytariladi. Ushbu bir nechta almashishlar natijani o’z vaqtida olishni juda qiyinlashtiradi.
Apparat ta’minotida parallellashtirish intensiv hisoblashni talab qiladigan dasturlarning ish faoliyatini yaxshilash uchun mo’ljallangan. Dasturchilar nuqtai nazaridan, bir vaqtning o’zida natijasida samaradorlikni oshirish uchun apparatlarni ishlab chiqish ortib boradi. Boshqacha qilib aytganda, dastur bir vaqtning o’zida ko’plab harakatlarni amalga oshirilishini talab qilmaydi, faqatgina hamma narsa juda tez sodir bo’lishini talab qiladi. Albatta, ko’plab qiziqarli ilovalar, ilova talablari va parallellashtirshdan kelib chiqqan xolada bir vaqtning ikkala shaklini xam birlashtiradi.
SIMMETRIK MULTIPROTSESSING
Simmetrik Multiprotsessing (qisqartirilgan SMP) yoki nosimmetrik multiprocessing bu ko'p protsessorli tizimlarning maxsus arxitekturasi bo'lib, unda bir nechta protsessorlar umumiy xotiraga kirish imkoniyatiga ega. Bu yaqinda keng qo'llaniladigan juda keng tarqalgan arxitektura.
SMP dan foydalanganda bir nechta protsessorlar kompyuterda birdan ishlaydi, ularning har biri o'z vazifasi bilan ishlaydi. Yuqori sifatli operatsion tizimga ega bo'lgan SMP tizimi protsessorlar o'rtasida vazifalarni oqilona taqsimlaydi va ularning har biriga bir xil yukni beradi. Biroq, xotiraga kirish bilan bog'liq muammo mavjud, chunki hatto bitta protsessorli tizimlar ham buni amalga oshirish uchun ancha vaqt talab etadi. Shunday qilib, SMP-da RAMga kirish ketma-ket sodir bo'ladi: birinchi navbatda bitta protsessor, keyin ikkinchi.
Ko'p protsessorli tizimlarning turlarga bo'linishi xotiradan foydalanish printsipiga ko'ra bo'linishga asoslangan. Ushbu yondashuv quyidagi muhim turlarni ajratib ko'rsatishga imkon berdi:
ko'p protsessorli tizimlar - ko'p protsessorlar (umumiy umumiy xotiraga ega bo'lgan ko'p protsessorli tizimlar) va multikompyuterlar (alohida xotiraga ega tizimlar). Parallel hisoblashda ishlatiladigan umumiy ma'lumotlar sinxronlashni talab qiladi. Ma'lumotlarni sinxronlashtirish vazifasi eng muhim muammolardan biri bo'lib, uni ko'p protsessorli va ko'p yadroli va shunga mos ravishda kerakli dasturiy ta'minotni ishlab chiqishda hal qilish muhandislar va dasturchilar uchun ustuvor vazifadir. Ma'lumotlarni almashish xotirani jismoniy ajratish orqali amalga oshirilishi mumkin. Ushbu yondashuv bir xil bo'lmagan xotiraga kirish (NUMA) deb nomlanadi.
MULTITHREADING TEXNOLOGIYASI
Multithreading texnologiyasi - bu ko'p yadroli dasturiy ta'minot. Keyingi ish samaradorligi, har doimgidek, protsessor apparatida o'zgarishlarni talab qiladi. Tizimlar va arxitekturalarning murakkabligi har doim ham samarali emas. Qarama-qarshi fikr mavjud: "har qanday topqirlik oddiy!". Haqiqatan ham, protsessorning ish faoliyatini oshirish uchun uning chastotasini oshirish, mantiqiy va apparat qismlarini murakkablashtirish umuman zarur emas, chunki mavjud texnologiyani ratsionalizatsiya qilish va takomillashtirish kifoya. Ushbu usul juda foydalidir - protsessorning issiqlik tarqalishini oshirish, mikrosxemalar ishlab chiqarish uchun yangi qimmatbaho uskunalarni yaratish masalasini hal qilishning hojati yo'q. Ushbu yondashuv ko'p yadroli texnologiya - bitta kristallga bir nechta hisoblash yadrolarini amalga oshirish doirasida amalga oshirildi. Agar biz dastlabki protsessorni olsak va ishlashni yaxshilashning bir necha usullarini amalga oshirishda ishlash samaradorligini taqqoslasak, ko'p yadroli texnologiyadan foydalanish eng yaxshi variant ekanligi aniq.