2.4. Hisoblash jarayonlarini dasturiy boshqarish.
Dj. fon Neyman tomonidan taklif etilgan EHM tuzilishi tamoyillaridan biri - xotirada saqlab qolinadigan dasturning mavjudligi. Protsessor xotira doirasida bajarilish vaqtida bo’lgan dastur kodi vazifasini bajaradi.
Dastur kodi - bu buyruqlar ketma-ketligidir, yoki yo’riqnomalar, ularning har biri ma’lum tartibda kod bilan ta’min etilib xotiraning bayt raqamlarida joylashtirilgan bo’ladi. Har bir yo’riqnoma operativ qismga ega, protsessorga zarur bo’lgan talab etilgan ma’lumotlarni yetkazadi. Operand qismi protsessorga uning «mehnat predmeti» qayerda bo’lishi mumkinligini haqiqiy yoki haqiqiy emas, yoki umuman yo’qligini ko’rsatadi. Operand qismi mazkur yo’riqnomada ishtirok etuvchi noldan ikkigacha operandlarni tavsiflashi mumkin (shunday yо’riqnomalar mavjudki, ularda ikki operanddan tashqari yо’riqnoma parametrlari ham ko’rsatilgan). Bu yerda operandlarning o’z qiymatlari (bevosita operandlar); aniq va aniq bo’lmagan operandlar mavjud bo’lgan protsessor registrlariga ko’rsatma beriladi; xotira yacheykasining manzili (yoki uning tarkibiy qismi); manzilni shakllantirishda ishtirok etuvchi protsessor registrlari va bu komponentlarning turli kombinatsiyalari mavjud. Yо’riqnomaning uzunligi oilada x86 dan 1 dan 12 baytgacha bo’lishi mumkin va yо’riqnoma tipiga qarab aniqlanadi.
Tarixiy tarkib topgan x86 yо’riqnomasi ancha murakkab bo’lib, uni «tushunish» aniq bir yо’riqnoma necha baytni tashkil qilishini aniqlashni protsessor amalga oshirishi uchun birinchi 1-3 baytni dekodlash orqali amalga oshiradi. Yо’riqnomadan oldin adresatsiya uslubi o’zgarganligini ko’rsatuvchi prefikslar (hamma vaqt bir baytli) bo’lishi mumkin, operand kattaligi yoki ko’p marotaba (hisobga oluvchi schyotchik va shartga ko’ra) mazkur yо’riqnomani takrorlash zaruriyatini ko’rsatadi. Bajariladigan yо’riqnoma joriy manzili (mantiqiy) maxsus registrda – yо’riqnoma ko’rsatkichlarida (InstructionPointer, IP) saqlanib, fon-neyman mashinalari hisoblagichlari buyruqsiga to’g’ri keladi. Chiziqli yo’riqnoma bajarilgandan keyin bu ko’rsatkich o’z qiymatini uning uzunligiga qarab oshiradi, ya’ni keyingi yo’riqnoma boshlanishini ko’rsatadi.
Chiziqli instruksiya xotirada joylashtirilgan yo’riqnomalar ketma-ketligini (ularning manzili oshishiga qarab) va ularni bajarish tartibini buzmaydi. Chiziqli instruksiyadan tashqari boshqarishni uzatish yo’riqnomalari mavjud, ular o’rtasida o’tish (переход) va chaqirish (вызов) jarayonlarini yo’riqnomalarini farqlaydilar. Bu yo’riqnomalar aniq va aniq bo’lmagan ko’rinishda keyingi bajariladigan ko’rsatma manzillarini o’zida saqlab, xotiraning nisbatan tanlagan uyasini ko’rsatadi. O’tish yo’riqnomalari shartsiz (hech narsaga bog’liq bo’lmagan) va shartli bo’lishi mumkin. Shartli o’tish (chaqirish) sodir bo’ladimi yo’qmi mazkur yo’riqnomaning bajarish vaqtiga qarab bayroqlar holati (xossaga) bajarish jarayonida bog’liq bo’ladi. Agar o’tish (chaqiruv) sodir bo’lmasa, unda yo’riqnoma xotirasida joylashgan joriy yo’riqnoma bajariladi. Jarayonni chaqirish shu bilan xarakterlanadiki, protsessor uni stekda (stek - bu OZU oblasti) keyingi yo’riqnoma manzili bo’yicha saqlaydi va bu manzilga boshqarish uzatiladi, muolaja tugagandan keyin (yo’riqnoma qaytarilgandan keyin bu manzil stekdan olinadi). Stekka uzatishda hech narsa saqlanmaydi, ya’ni uzatish orqaga qaytmasdan bajariladi.
Dastur kodida belgilangan yo’riqnomani bajarish ketma - ketligi ichki va tashqi (protsessorga nisbatan) sabablarga ko’ra buzilishi ham mumkin. Ichki sabablarga (exceptions) – yo’riqnomani bajarish jarayonida vujudga keladigan sabablar kiradi. Masalan, nolga bo’lish shu ichki sabablarga kiradi. Istisno sharti vujudga kelganda protsessor avtomatik tarzda istisno muolajasini bajarish chaqiruvini bajaradi, istisno tariqasida vujudga kelgan yoki undan keyin vujudga kelgan holatdan u takroran yo’riqnomani bajarishga qaytishi mumkin. Istisno sharti turiga bajarish variantlari bog’langan. Istisno sharti hozirgi zamon operativ tarmoqlarda keng qo’llaniladi, istisno shartlariga ishlov berish asosiga virtual xotira tuziladi va ko’pvazifali operatsion tizimlar ko’p funksiyalari amalga oshiriladi. Yo’riqnomaning normal ketma - ketligi o’zgarishining tashqi sabablariga apparat uzilishlari kiradi – protsessorning maxsus chiqarish joylariga elektr signallari ta’sirida jarayonlarni chaqirish. Bu signallar kutilmasdan qo’qqisdan chaqirilishi mumkin, faqat dasturlovchida bu buyruqlarni yoki ularning bir qismini protsessorga (kompyuterga) inkor qilishga majbur qilish imkoniyati mavjud bajarilayotgan dasturni to’g’ri bajarish uchun. Ammo bu imkoniyatni yoki uning bir qismini suyiste’mol qilmaslik zarur (bu imkoniyat hammavaqt ham bo’lmaydi), chunki apparatdan uzishlar vaqtni o’tishini hisobga olish boshqa tarmoq va kompyuterning funksiyalariga bog’liq.
Apparat uzilishlar manbai bo’lib, periferiya qurilmalari kontrollerlar va adapterlar bo’lishi mumkin, vaqtni hisobga olish generatorlari, oziqlantirishni boshqarish tarmoqlari va boshqa tarmoqni ta’minlovchilar bo’lishi mumkin. Bulardan tashqari dastur uzilishlari ham bo’lishi mumkin, ammo ular dasturchi tomonidan oldindan belgilagan yo’riqnoma ketma-ketligini buzmaydi. Shu sababli ular uzilish hisoblanmaydi - ular BIOS servis tarmoqlari va operatsion tizimlarni chaqirish uchun keng qo’llaniladi. Oxiri, yo’riqnoma ketma-ketligi buzilishi apparatning inkor qilishi yoki protsessorning initsializatsiyasi natijasida sodir bo’lishi mumkin. Bundan esa kompyuterning funksiyasi boshlanadi: protsessor avvalgi holatiga qaytariladi va ish boshlanadi. Bunda yo’riqnomalar ko’rsatkichi yo’riqnoma manzilini shakllantiruvchi boshqa ishtirok etuvchi registrlar bilan birga «начальный пуск» (boshlang’ich ishga tushirish) manziliga tushadi. Bu manzil bo’yicha kompyuter initsializatsiyasi boshlanadigan yo’riqnoma joylashadi.
Protsessorda ko’p sonli turli operatsiyalarni bajarish imkoniyati ko’zda tutiladi. Bunday operatsiyalarning soni 100dan ko’p bo’lishiga qaramasdan, ularning har biri oddiy arifmetik yoki mantiqiy amalni, masalan, raqamlarni ko’shish, ayirish, ko’paytirish, bo’lish kabi, kodlarni yuborish va h.z.lar kiradi. Bu yerda har bir operatsiyani amalga oshirishda ikki operanddan ko’p bo’lmagan ishtirok etadi. Shu sababli hal etiladigan masala oldindan bunday operatsiyalarning ketma-ketligiga qarab EHM bajara olish imkoniyatiga qarab tasavvur etilishi kerak. Keyin bu operatsiyalarning har biriga buyruq tuzilishi zarur. Buyruqlarning barchasi misolni yechish dasturini tashkil qilib, u OZUga joylashtirilishi kerak.
Buyruq mazkur operatsiyani bajarish uchun barcha ko’rsatmalarga ega bo’lishi: operatsiya turi, joyi, mazkur operatsiyaning operandlari qayerda saqlanishi va operatsiya natijasi qayerda joylanishi to’g’risida ko’rsatmalarni o’z ichiga oladi.
Bunday operatsiya quyidagi formatga ega: bu yerda Kod – operatsiyaning kodi. Har bir EHM operatsiyalarning kod bilan ta’minlash ma’lum bir tarmog’i mavjud. Masalan, operatsiya turining quyidagicha yozish uslubi qabul qilinishi mumkin: 01 - qo’shish, 02 - ayirish, 03-ko’paytirish va h.z.; A1 - birinchi manzil - operativ xotira yacheykasining manzili bo’lib, birinchi operand saqlanadi; A2 — ikkinchi manzil - ikkinchi operand manzili; A3 - uchinchi manzil - operativ xotira yacheykasining manzili. Bu tarkibdagi buyruq uch manzilli deb ataladi.
EHM ikki manzilli buyruqlarni qo’llashlari mumkin, quyidagi formatda:
Operatsiyaning natijasi bu holda biron bir operandlarning yacheykasiga joylashtiriladi yoki ALU da qoladi. Bir manzilli buyruqlar formati:
Bunday formatda bir arifmetik harakatni bajarish uchun ikki raqam o’rtasida bir nechta buyruqlarni bajarish talab etiladi. Masalan, ikki raqamni qo’shish uchun uch buyruqni bajarish zarur: (OZU) operativ xotirada saqlanadigan raqamni ALU ga kiritish ko’rsatilgan manzil bo’yicha;
Qabul qilingan raqamga xotirada ko’rsatilgan manzil bo’yicha raqamni qo’shish;
ALUda olingan natijani manzil bo’yicha xotiraga joylashtirish ko’rsatilgan buyruq bo’yicha.
O’zgaruvchan manzilga ega bo’lgan mashinalar keng tarqalgan. Ularda operand operatsiyalarini bajarishda (bir yoki bir necha) operativ xotiradan emas, mahalliy (SOZU) dan tanlab olinadi. Bu mashinalarning buyruqlari ikki manzilli bo’ladi, ammo ikki manzilli yoki ularning biri manzili operativ xotiraniki emas, balki maxalliy ALU xotirasining registri bo’lishi mumkin.
EHM qurilmalarining masalani hal etishda o’zaro harakatini ko’rib chiqamiz. Aniqlik kiritish uchun ko’rib chiqilayotgan EHMni uch manzilli deb qabul qilamiz. Masala hal etilishidan oldin hal etish dasturini tashkil etuvchi buyruqlar to’plami operativ xotiraning ketma-ket yacheykalariga shunday joylashtiriladiki, keyingi buyruqni bajaruvchi adresi oldingi buyruq joylashgan yayechyka raqamidan bitta kattadir.
Dasturni tadbiq etish jarayoni OZUdan buyruqlarni birma-bir tanlash va ularni amalga oshirishdan tashkil topadi. OZUdan boshqarish qurilmasi (UU)ga chaqirilgan navbatdagi buyruq operatsiya bajarilgunga qadar unda saqlanadi. UU buyruqdan birinchi adresni A1 ni tanlaydi va uni OZU ga yuborib hisoblash uchun signal beradi. OZUdan birinchi operand uzatiladi. UU ALU (arifmetik mantiqiy qurulma)ga registrlarni ochish signalini yuboradi va bu operand u yerda qabul qilinadi. Xuddi shunday, ikkinchi adres A2 bo’yicha OZUdan ALUga ikkinchi operand uzatiladi. Keyin UU ALUga boshqarish signallarini beradi va ular ta’sirida buyruq ko’zda tutgan operatsiyalar bajariladi. Operatsiya natijasi olingandan keyin UU AZUga uchinchi adresni A3 uzatadi, yozuv signalini beradi va ALU registridan operatsiya natijasi saqlanayotgan chiqishni ochadi.
Keyin OZUga navbatdagi UUda shakllangan buyruq adresi uzatiladi (masalan, bundan oldinrgi buyruq adresini birga ko’paytirish yo’li bilan), UUga keyingi buyruq kelib tushadi va hokazo.
Do'stlaringiz bilan baham: |