6.3.Tashqi qurilmalardan kelgan uzilishlarga ishlov berish
Uzilishga so‘rovlarning bir necha manbai bo‘lgan taqdirda kelgan so‘rovlarga
hizmat ko‘rsatishning ma’lum tartibi (intizom) o‘rnatilishi kerak. Boshqacha so‘z
bilan aytganda, kelgan so‘rovlar va tegishli uzuvchi dasturlar o‘rtasida ustunlik
nisbati o‘rnatilishi kerak, kelgan bir necha so‘rovdan qaysi biriga birinchi navbatda
ishlov berilishi kerakligini, ushbu so‘rov (uzuvchi dastur) u yoki bu dasturni uzishga
xuquqi bormi yoki yo‘qligini aniqlovchi ustunlik bo‘lishi kerak. Bajarish uchun
so‘rovni tanlash ustunligi uzuvchi dasturning o‘tish protsedurasiga kiradi.
Tashqi qurilmalardan kelgan uzilishlarga ishlov berish dasturiga misol 6.4-
chizmada keltirilgan.
i
i+L
Узилишларга
ишлов бериш
дастури
асосий
Жойлаштирилган цикл
97
Tashqi qurilmadan kelgan so‘rovdan so‘ng uzilishga ishlov berilayotgan
asosiy dastur uziladi, oxiri bajarilgan buyruq kodi saqlanadi, tegishli tashqi qurilma
bilan axborot almashinuvi amalga oshiriladi, undan so‘ng bajarilgan buyruqdan
keyingi buyruqni bajarish tiklanishi sodir bo‘ladi.
6.4-chizma. Tashqi qurilmalardan kelgan uzilishga ishlov berish dasturining blok-
sxemasi
Uzilish bo‘yicha kirish/chiqish ning joriy etilishi.
Uzilishlar bo‘yicha kirish/chiqishni joriy etilishida ikki savolga javob berish
kerak bo‘ladi. Birinchidan, protsessor qanday qilib qaysi kirish/chiqish moduli va u
modulga ulangan qaysi tashqi qurilmasi so‘rov berganligini aniqlaydi. Ikkinchidan,
uzilishlar ko‘p bo‘lgan taqdirda, ulardan qaysi birini birinchi navbatda hizmat
ko‘rsatilishi kerakligini aniqlashni hal qilish talab etiladi.
Процессор
регистрларининг
қийматини
сақлаш
Процессор
регистрларин
инг
қийматини
тиклаш
ТҚ 1 билан
ахборотлар
алмашиш
ТҚ N билан
ахборотлар
алмашиш
Тайёрлик
Тайёр
Асосий
дастур
Узилишг
а сўров
ха
йў
қ
ха
йў
98
Qurilmalarni mosligini aniqlashda uchta asosiy usul bo‘lishi mumkin:
➢ uzilish yo‘llarini ko‘pligi;
➢ moslikni dasturiy amalga oshirish;
➢ vektorli uzilish.
Muammoni hal qilishga eng oddiy yondoshuv bu so‘rov manbaini aniqlash -
uzilish yo‘llarini ko‘pligini protsessor va kiritish/chiqarish modullari o‘rtasida
qo‘llash, vaholanki bu maqsadlar uchun juda ham ko‘p sonli boshqarish yo‘llarini
ajratish ratsional emas. Undan tashqari, agarda bir necha uzilish yo‘llari bo‘lsa ham,
har bir yo‘l barcha modullar tomonidan ishlatilish kerak, shu bilan bir qatorda har
bir yo‘l uchun qurilmani mosligini aniqlashning qolgan ikki usulidan biri ta’sir
qiladi.
Moslikni (identifikatsiya) dasturiy amalga oshirishda, uzilishga so‘rovni
aniqlagach, protsessor uzilishga ishlov berishning umumiy dasturiga o‘tadi, uning
vazifasi so‘rov manbaini topish maqsadida kiritish/chiqarish modullarini barchasini
so‘rashdan iborat. Buning uchun mahsus buyruqlarning so‘rov yo‘li ajratilishi
mumkin. Protsessor manzillar shinasiga so‘ralayotgan modul manzilini joylashtiradi
va bu yo‘lda so‘rov signalini hosil qiladi. Modulning etibori u so‘rov berdimi yoki
yo‘qligiga bog‘liq. Boshqacha varianti ham bo‘lishi mumkin, unda har bir modul
o‘ziga holatni manzillar registridan oladi. U holda protsessor har bir modulning
holatlar registrining qiymatini o‘qiydi, undan so‘ng uzilish manbaini aniqlaydi.
Uzilish manbai aniqlangach, protsessor aniqlangan manba bo‘yicha uzilishga ishlov
berish dasturiga o‘tadi. Dasturiy moslikni aniqlash usulining kamchiligi, ko‘p vaqt
sariflanishidadir.
Uzilish manbaini mosligini ta’minlashning eng samarali protsedurasi
apparatli usuldir, uning asosida vektorli uzilish yotadi. Bu holda, so‘rov bergan
qurilma protsessordan uzilishga tasdiq olgach axborotlar shinasiga “uzilish vektori”
deb ataluvchi mahsus so‘z beradi. Bu so‘z o‘z tarkibida kiritish/chiqarish
modulining manzilini yoki boshqa qandaydir noyob moslikni (identifikatorni) oladi,
uni protsessor uzilishlarga tegishli ishlov berish dasturiga ko‘rsatuvchi kabi
ifodalaydi. Bundek yondoshish uzilishlarga so‘rov manbaini aniqlash maqsadidagi
99
dastlabki harakatlarga bo‘lgan zaruratni yo‘qotadi. Uning joriy etilishi oddiy,
operativ hotirada saqlanadigan uzilish vetor jadvallari yordamida amalga oshiriladi
(6.5-chizma), unda uzilishlarga ishlov berish dasturlarning manzillari saqlanadi.
6.5-chizma. Uzulish vektori yordamida so‘rovni bajarish
Jadvalga kirish uchun uzilish vektori hizmat qiladi. Jadvalning boshlanish
manzili (baza) odatda aniqmas holda beriladi, ya’ni jadval uchun hotiraning aniq
xududi ajratiladi. Uzilishni so‘ragan tashqi qurilma o‘zining mos kelishini
protsessorga shina bo‘ylab jo‘natiladigan mahsus kod yordamida aniqlaydi. Bu kod
yaratilgan baza yordamida uzilishlarga ishlov berish dasturining boshlong‘ich
manzilini aniqlay oladi. Manzil uzunligi odatda 4 razryaddan 8 razryadgachan
bo‘ladi. Manzilning qolgan qismini protsessor baza axborotlariga asosan hosil
qiladi.
Uzilishning vektor kodini taxlil qilingach, bazadan ushbu uzilishning ishlov
beruvchi dasturning tegishli manzili tanlanadi. Topilgan manzil bo‘yicha hotiradan
protsessor ishga tushiradigan uzilishga ishlov beruvchi dastur o‘qiladi. Uni
bajarilgandan so‘ng va uzilish sababini bartaraft qilingach, mikrokontroller asosiy
dasturning birinchi bajarilmagan buyrug‘iga qaytadi.
Узилиш векторлар жадвал базаси
Узилиш векторлар жадвали
1-узилишга ишлов берувчининг
манзили
2-узилишга ишлов берувчининг
манзили
...
1-узилишга ишлов берувчи
2-узилишга ишлов берувчи
...
n- узилишга ишлов берувчи
+
Узилиш вектори
100
Masalan, protsessor hotiraning 5000 (shartli) manzilida joylashgan asosiy
dastur va buyruqni bajarmoqda deb faraz qilaylik (6.6-chizma). Shu vaqt momentida
u 4 nomerli (manzilli vektor) uzulishga so‘rov oldi. Protsessor 5000 manzildagi
buyruqni bajarishni to‘xtatadi. So‘ng protsessor stekda buyruqlar sanoq
qurilmasining hozirdagi qiymatini (5001) va PSW ning (Proctssor Status Word,
protsessorning holat so‘zi) hozirdagi qiymatini saqlab qoladi. Shundan so‘ng
protsessor hotiraning 4 manzilidan uzulish vektor kodini o‘qiydi. Faraz qilaylik bu
kod 6000 teng bo‘lsin. Protsessor hotiraning 6000 manziliga o‘tadi va shu manzildan
boshlangan uzulishga ishlov berish dasturini bajarishni boshlaydi. Bu dastur 6100
manzilda tugaydi deb faraz qilaylik. 6100 manzilga yetgach protsessor uzulib qolgan
dasturni bajarishga qaytadi. Buning uchun u stekdan (5001) manzil qiymatini (uni
shu manzilda uzishgan edi) va o‘sha vaqtda bo‘lgan PSW qiymatini oladi. So‘ng
protsessor 5001 manzildan buyruqni o‘qiydi va asosiy dasturning buyruqlarini
ketma-ket bajarishga kirishadi.
6.6-chizma. Uzulishlarga ishlov berishning soddalashtirilgan algoritm
Buzilish holatidagi uzulish ham xuddi shu kabi ishlov beriladi, faqat vektor
manzili (vektorlar jadvalidagi qator nomeri) shu turdagi buzilish turiga qatiy
bog‘langan bo‘ladi.
Shuningdek dasturiy uzulishga ham uzulish vektorlar jadvali orqali hizmat
ko‘rsatiladi, lekin uzulish nomeri esa uzulishni chaqirgan buyruq tarkibida
ko‘rsatiladi.
Стек
Узулашларга
ишлов бериш
дастури
5000
5001
4-нўмерли
узулиш
Асосий
дастур
Узулишлар
векторлар
жадвали
6000
6100
5001
PSW
0004
6000
|