Multitasking - Mustaqil ish mavzu: Multitasking va Ko’poqimli tizimlar

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'llaniladigan dizaynga o'xshaydi. Har bir tsikl uchun ikkita ko'rsatma berish 64 bitli ko'rsatmalarni olish va dekodlashni talab qiladi. Ko'pgina statik ko'p sonli protsessorlarda va asosan barcha VLIW protsessorlarida, dekodlash va ko'rsatmalar masalasini soddalashtirish uchun bir vaqtning o'zida ko'rsatmalar berish tartibi cheklangan. Shunday qilib, biz ko'rsatmalarni 64 bitli chegarada juftlashtirishni va tekislashni talab qilamiz, birinchi navbatda ALU yoki filial qismi paydo bo'ladi. Bundan tashqari, agar juftlikning bitta ko'rsatmasi ishlatilmasa, biz uni nop bilan almashtirishni talab qilamiz. Bizga ko'ra, ko'rsatmalar har doim juftlik bilan chiqariladi, ehtimol bitta uyada nop bilan. 4.68-rasmda ko'rsatmalar quvur liniyasiga juft bo'lib kirganda qanday ko'rinishi ko'rsatilgan.Multitasking protsessorlar potentsial ma'lumotlar bilan ishlash va xavflarni boshqarishda farqlanadi. Ba'zi dizaynlarda kompilyator barcha xavflarni bartaraf etish, kodni rejalashtirish va no-ops kiritish uchun to'liq javobgarlikni o'z zimmasiga oladi, shunda kod hech qanday xavfni aniqlash yoki apparat tomonidan ishlab chiqarilgan to'xtashlarsiz ishlaydi. Boshqalarida, apparat ma'lumotlar xavfini aniqlaydi va ikkita muammoli paketlar o'rtasida to'xtash joylari hosil qiladi, shu bilan birga kompilyatordan ko'rsatmalar juftligidagi barcha bog'liqliklardan qochishni talab qiladi.
Shunday bo'lsa ham, xavf odatda qaram bo'lganlarni o'z ichiga olgan butun muammo paketini majbur qiladi
Multitasking muammoli quvur liniyasi ishlamoqda. ALU va ma'lumotlarni uzatish bo'yicha ko'rsatmalar bir vaqtning o'zida chiqariladi. Bu erda biz bir xil quvur liniyasi uchun ishlatiladigan besh bosqichli tuzilmani qabul qildik. Bu juda zarur bo'lmasa-da, ba'zi afzalliklarga ega. Xususan, ro'yxat oxiridagi yozuvlarni saqlash istisnolar bilan ishlashni va aniq istisno modelini saqlashni soddalashtiradi, bu ko'p sonli protsessorlarda yanada qiyinlashadi.
Dasturiy ta'minot barcha xavf-xatarlarga bardosh berishi kerakmi yoki faqat alohida nashr paketlari o'rtasidagi xavflar ulushini kamaytirishga harakat qiladimi, bir nechta operatsiyalarni o'z ichiga olgan katta bitta yo'riqnomaga ega bo'lish ko'rinishi mustahkamlanadi. Ushbu misol uchun biz ikkinchi yondashuvni qabul qilamiz.
ALU va ma'lumotlarni uzatish operatsiyalarini parallel ravishda chiqarish uchun odatiy xavfni aniqlash va to'xtash mantig'idan tashqari qo'shimcha uskunaga birinchi ehtiyoj - bu registr faylidagi qo'shimcha portlardir (4.69-rasmga qarang). Bir soat siklida biz ALU operatsiyasi uchun ikkita registrni va do'kon uchun yana ikkita registrni, shuningdek, ALU operatsiyasi uchun bitta yozish portini va yuk uchun bitta yozish portini o'qishimiz kerak bo'lishi mumkin. ALU ALU operatsiyasi uchun bog'langanligi sababli, ma'lumotlarni uzatish uchun samarali manzilni hisoblash uchun bizga alohida qo'shimcha kerak bo'ladi. Ushbu qo'shimcha manbalarsiz, bizning ikki muammoli quvur liniyasi tizimli xavf-xatarlar tufayli to'sqinlik qiladi.
Shubhasiz, bu ikki muammoli protsessor ish faoliyatini ikki baravar oshirishi mumkin. Biroq, buning uchun bajarilishda ikki baravar ko'p ko'rsatmalar bir-biriga mos kelishi kerak va bu qo'shimcha takrorlanish ma'lumotlar va nazorat qilish xavfidan nisbiy ishlash yo'qotilishini oshiradi. Masalan, bizning oddiy besh bosqichli quvur liniyasida,
Multitasking muammoli ma'lumotlar yo'li. Ikki marta chiqarish uchun zarur bo'lgan qo'shimchalar ta'kidlangan: ko'rsatmalar xotirasidan yana 32 bit, yana ikkita o'qish porti va registr faylida yana bitta yozish porti va boshqa ALU. Tasavvur qiling, pastki ALU ma'lumotlarni uzatish uchun manzil hisoblarini boshqaradi va yuqori ALU qolgan hamma narsani boshqaradi.yuklar bir soat siklining foydalanish kechikishiga ega, bu esa bitta ko'rsatma natijadan to'xtab qolmasdan foydalanishga to'sqinlik qiladi. Ikki bosqichli, besh bosqichli quvur liniyasida yuk ko'rsatmasi natijasini keyingi takt siklida ishlatib bo'lmaydi. Bu shuni anglatadiki, keyingi ikkita ko'rsatmalar yuk natijasini to'xtamasdan ishlata olmaydi. Bundan tashqari, oddiy besh bosqichli quvur liniyasida foydalanish kechikishiga ega bo'lmagan ALU ko'rsatmalari endi bitta ko'rsatmalardan foydalanish kechikishiga ega, chunki natijalarni juftlashtirilgan yuklash yoki saqlashda ishlatib bo'lmaydi. Ko'p sonli protsessorda mavjud parallelizmdan samarali foydalanish uchun ko'proq ambitsiyali kompilyator yoki apparatni rejalashtirish texnikasi talab qilinadi va statik bir nechta muammo kompilyatordan ushbu rolni o'z zimmasiga olishini talab qiladi.
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.
Dinamik multitasking protsessorlar, shuningdek, superscalar protsessorlari yoki oddiygina superskalyarlar sifatida ham tanilgan. Eng oddiy superskalar protsessorlarda ko'rsatmalar tartibda chiqariladi va protsessor ma'lum bir soat siklida nol, bitta yoki bir nechta ko'rsatmalar berishi mumkinligini hal qiladi. Shubhasiz, bunday protsessorda yaxshi ishlashga erishish hali ham kompilyatordan bog'liqliklarni bir-biridan ajratish bo'yicha ko'rsatmalarni rejalashtirishga harakat qilishni va shu bilan ko'rsatmalar berish tezligini yaxshilashni talab qiladi. Bunday kompilyatorni rejalashtirishda ham, ushbu oddiy superskalar va VLIW protsessorlari o'rtasida muhim farq bor: rejalashtirilgan yoki rejalashtirilgan bo'lmagan kod, to'g'ri bajarilishi uchun apparat tomonidan kafolatlanadi. Bundan tashqari, kompilyatsiya qilingan kod protsessorning chiqish tezligi yoki quvur liniyasi tuzilishidan qat'iy nazar har doim to'g'ri ishlaydi. Ba'zi VLIW dizaynlarida bunday bo'lmagan va turli protsessor modellari bo'ylab harakatlanayotganda qayta kompilyatsiya qilish talab qilingan; boshqa statik muammoli protsessorlarda kod turli xil ilovalarda to'g'ri ishlaydi, lekin ko'pincha kompilyatsiyani samarali talab qiladigan darajada yomon ishlaydi.
Ko'pgina superskalarlar dinamik masalalar bo'yicha qarorlarning asosiy doirasini dinamik quvurlarni rejalashtirishni o'z ichiga oladi. Dinamik quvur liniyasini rejalashtirish xavf va to'xtashlardan qochishga harakat qilganda ma'lum bir soat siklida qaysi ko'rsatmalar bajarilishini tanlaydi. 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.
XULOSA
Menga berilgan Mutitasking va Ko’poqimli tizimlar mavzusidagi topshiriqimdan shuni xulosa qilishim mumkini: Multitasking multiprogrammingga o'xshaydi, Multithreading mavzuga asoslangan multitasking. Multithreading multitaskings-ga qaraganda osonroq, chunki bu jarayonni yaratish oson.Multitasking va multithreading o'rtasidagi asosiy farq shundaki multitasking protsessorga bir vaqtning o'zida bir nechta vazifalarni (dastur, jarayon, vazifa, iplar) bajarishga imkon bera olishi va Ko'p ishlov berish bir xil jarayonning bir nechta iplarini bir vaqtning o'zida bajarishga imkon yaratish mumkinligini tushundim.
|