2.Multitasking va ko’p oqimli tizimlar Multitaskinglar ko'p dasturlashning mantiqiy kengaytmasi, boshqa tomondan, Ko'p ishlov berish mavzuga asoslangan ko'p vazifali. Multitasking va multithreading o'rtasidagi asosiy farq shundaki multitasking protsessorga bir vaqtning o'zida bir nechta vazifalarni (dastur, jarayon, vazifa, iplar) bajarishga imkon beradi, Ko'p ishlov berish bir xil jarayonning bir nechta iplarini bir vaqtning o'zida bajarishga imkon beradi.
3 Kopoqimlikni mavjud dinamik mexanizmlarga tayanganligi sababli, u har bir tsiklda resurslarni almashtirmaydi.
Ma'lum bir soat siklida faqat bitta ip ko'rsatmalar berganligi sababli, ko'rsatmalar darajasidagi parallelizmdagi cheklovlar hali ham ba'zi soat sikllari ichida bo'sh tirqishlarga olib keladi. Multitasking muammo haqida ma'lumot berish uchun biz oddiy ikki muammoli MIPS protsessorini ko'rib chiqamiz, bu erda ko'rsatmalardan biri butun ALU operatsiyasi yoki filiali bo'lishi mumkin, ikkinchisi esa yuk yoki saqlash bo'lishi mumkin. Bunday dizayn ba'zi o'rnatilgan MIPS protsessorlarida qo'llaniladi. Shunday bo'lsa ham, xavf odatda qaram bo'lganlarni o'z ichiga olgan butun muammo paketini majbur qiladi. Masalan, bizning oddiy besh bosqichli quvur liniyasida,Ko'p sonli oddiy kodni rejalashtirish Ushbu tsikl MIPS uchun statik ikki muammoli quvur liniyasida qanday rejalashtirish: Iloji boricha ko'proq quvur liniyasi to'xtab qolmasligi uchun ko'rsatmalarni qayta tartiblang. Taxminlarga ko'ra, filiallar prognoz qilingan, shuning uchun nazorat xavflari apparat tomonidan hal qilinadi.Keling, ma'lumotlar xavfidan qochishning oddiy misolidan boshlaylik. Quyidagi kod ketma-ketligini ko'rib
chiqing: Qo'shimcha ko'rsatma bajarishga tayyor bo'lsa ham, u lw va addu birinchi bo'lib tugashini kutishi kerak, agar xotira sekin bo'lsa, bu juda ko'p soat tsikllarini olishi mumkin.
3.Superskalyar hisoblashlar Superskalyar protsessorida bir nechta ko'rsatmalarni bir vaqtning o'zida bajarish uchun ma'lumotlar katalogi apparatining bir nechta nusxalari mavjud. rasmda tsiklga ikkita ko'rsatma olinadigan va bajariladigan ikki tomonlama superskali protsessorning blok diagrammasi keltirilgan. Ma'lumotlar to'plami ko'rsatmalar xotirasidan bir vaqtning o'zida ikkita ko'rsatmalarni oladi. To'rt manbali operandni o'qish va har bir tsiklda ikkita natijani yozish uchun oltita portli registr fayli mavjud. Bundan tashqari, ikkita ko'rsatmani bir vaqtning o'zida bajarish uchun ikkita ALU va ikkita portli ma'lumotlar xotirasi mavjud.
1-rasm.Superskalyar protsessori
Superskalyar protsessori - bu bitta protsessor ichida buyruq sathidagi parallellik deb nomlangan parallellik shaklini amalga oshiruvchi protsessor. Har bir soat tsikli uchun eng ko'p bitta buyruqni bajarishi mumkin bo'lgan skalar protsessordan farqli o'laroq, superskalyar protsessor bir vaqtning o'zida bir nechta ko'rsatmalarni protsessorning turli xil ijro etuvchi birliklariga yuborish orqali soat tsikli davomida bir nechta buyruqlarni bajarishi mumkin. Shuning uchun u ma'lum bir soat tezligida boshqacha imkoniyatlardan ko'ra ko'proq ishlashga imkon beradi (vaqt birligida
bajarilishi mumkin bo'lgan ko'rsatmalar soni). Har bir ijro etuvchi birlik alohida protsessor emas (yoki protsessor ko'p yadroli protsessor bo'lsa, yadro), balki arifmetik mantiqiy birlik kabi bitta protsessor ichidagi ijro resursidir. Superskalyar protsessorida dispetcher xotiradan ko'rsatmalarni o'qiydi va ularning qaysi biri parallel ravishda bajarilishi mumkinligi to'g'risida qaror qabul qiladi, ularning har birini bitta protsessor tarkibidagi bir nechta ijro birliklaridan biriga yuboradi. Shuning uchun, superkkal protsessorni bir nechta parallel quvur liniyalarini tasavvur qilish mumkin, ularning har biri bitta buyruq ipidan bir vaqtning o'zida ko'rsatmalarni qayta ishlaydi.
2-rasm.To'rtta superkala Alpha 21164 protsessorlari bo'lgan CRAY T3e superkompyuterining protsessor platasi
Superskalyar texnikasidan foydalanish samaradorligini oshirish uchta asosiy yo'nalish bilan cheklangan:
1.Ko'rsatmalar oqimidagi ichki parallellik darajasi (protsessordan bir xil hisoblash manbalarini talab qiladigan ko'rsatmalar)
2.Qarama-qarshilikni tekshirish mantiqiyligi va ro'yxatga olish tizimining nomini o'zgartirishning murakkabligi va vaqt narxi
3.Filial ko'rsatmalariga ishlov berish
Mavjud ikkilik bajariladigan dasturlar turli darajadagi ichki parallellikka ega. Ba'zi hollarda ko'rsatmalar bir-biriga bog'liq emas va bir vaqtning o'zida bajarilishi mumkin. Boshqa hollarda, ular bir-biriga bog'liqdir: bitta ko'rsatma boshqasiga yoki resurslariga yoki natijalariga ta'sir qiladi. Ko'rsatmalar a = b + c; d = e + f parallel bajarilishi mumkin, chunki natijalarning hech biri boshqa hisob-kitoblarga bog'liq emas. Biroq, ko'rsatmalar a = b + c; b = e + f ko'rsatmalar birliklar bo'ylab harakatlanish jarayonida bajarilish tartibiga qarab parallel ravishda bajarilmasligi mumkin. Ko'rsatmalar oqimida ko'rsatmalararo bog'liqliklar bo'lmasligi mumkin bo'lsa-da, superskalyar protsessori shunga qaramay ushbu imkoniyatni tekshirishi kerak, chunki boshqacha ishonch yo'q va qaramlikni aniqlay olmaslik noto'g'ri natijalarga olib keladi.
Yarimo'tkazgich jarayoni qanchalik tez rivojlangan bo'lmasin yoki almashtirish tezligi qanchalik tez bo'lmasin, bu bir vaqtning o'zida qancha ko'rsatma yuborilishi mumkinligi to'g'risida amaliy cheklov qo'yadi. Jarayonning ilgarilashi ko'p sonli bajarilish birliklariga imkon beradi (masalan, ALU), ko'rsatmalarga bog'liqlikni tekshirish yuki, ba'zi bir bog'liqliklarni yumshatish uchun registrning nomini o'zgartirish sxemasining murakkabligi tez o'sib boradi. Birgalikda quvvat sarfi, murakkabligi va eshikni kechiktirish xarajatlari bir vaqtning o'zida sakkizta yuborilgan ko'rsatmalarga qadar bo'lgan superskalyar tezligini cheklaydi. Ammo aks holda odatiy superskali protsessorda cheksiz tez bog'liqlikni tekshirish mantig'ini hisobga olgan holda, agar ko'rsatmalar oqimining o'zi juda ko'p bog'liqliklarga ega bo'lsa, bu ham mumkin bo'lgan tezlikni cheklaydi. Shunday qilib kod oqimidagi ichki parallellik darajasi ikkinchi cheklovni hosil qiladi.
Umuman olganda, ushbu cheklovlar muqobil me'moriy o'zgarishlarni tekshirishga undaydi, masalan, juda uzun ko'rsatma so'zi (VLIW), aniq parallel ko'rsatma hisoblash (EPIC), bir vaqtning o'zida ko'p o'qish (SMT) va ko'p yadroli hisoblash. VLIW-da, ish
vaqtida apparat mantig'iga bog'liqlikni tekshirishning og'ir vazifasi o'chiriladi va kompilyatorga topshiriladi.
Parallel ravishda buyruqni hisoblash (EPIC) qo'shimcha keshni oldindan olish ko'rsatmalariga ega VLIWga o'xshaydi. Bir vaqtning o'zida multithreading (SMT) - bu superskali protsessorlarning umumiy samaradorligini oshirish uslubidir. SMT zamonaviy protsessor arxitekturasi tomonidan taqdim etilgan resurslardan yaxshiroq foydalanish uchun bir nechta mustaqil ijro etilishiga ruxsat beradi. Superskalyar protsessorlari ko'p yadroli protsessorlardan bir nechta bajarilish birliklari butun protsessor bo'lmasligi bilan farq qiladi. Bitta protsessor ALU, integer multiplikator, integer shifter, FPU va boshqalar kabi aniqroq ijro etuvchi birliklardan iborat bo'lib, ko'plab ko'rsatmalarning parallel ravishda bajarilishini ta'minlash uchun har bir ijro birligining bir nechta versiyalari bo'lishi mumkin. Bu ko'p yadroli protsessordan farq qiladi, u bir vaqtning o'zida bir nechta iplarning ko'rsatmalarini qayta ishlaydi, bitta ishlov berish birligi uchun bitta ip ("yadro" deb nomlanadi). Shuningdek, u bir nechta ko'rsatmalar bir vaqtning o'zida bajarilishning turli bosqichlarida bo'lishi mumkin bo'lgan truboprovodli protsessordan farq qiladi. Har xil alternativ usullar bir-birini inkor etmaydi - ular bitta protsessorda birlashtirilishi mumkin (va tez-tez). Shunday qilib, ko'p yadroli protsessor mumkin, agar har bir yadro bir nechta parallel quvurlarni o'z ichiga olgan mustaqil protsessor bo'lsa, har bir quvur liniyasi superskalyar bo'ladi. Ba'zi protsessorlarga vektor qobiliyati ham kiradi.