Uploaded by Biloljon Zakirov

Kompyuter arxitekturasi amaliy

advertisement
O’ZBEKISTON RESPUBLIKASI
RAQAMLI TEXNOLOGIYALAR VAZIRLIGI
MUHAMMAD AL – XORAZMIY NOMIDAGI
TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
FARG’ONA FILIALI
“Kompyuter injiniringi” fakulteti
Kompyuter injiniringi yo’nalishi
710-21 – guruh talabasi
Zakirov Biloljonning
“KOMYUTER ARXITEKTURASI”
fanidan tayyorlagan
1-3-AMALIY MASHG’ULOT
ISHLARI
Topshirdi:
B. Zakirov
Qabul qildi:
R. Nabijonov
Farg’ona 2024
Amaliy mashg‘ulot №1.
Kompyuter tizimining umumiy tarkibini tashkillashtirish.
Zamonaviy axborotni qayta ishlashni kompyuter kabi qurilmasiz tasavvur etib
bo'lmaydi.Buni ikkita komponentning kombinatsiyasi sifatida ko'rib chiqish kerak:
• apparat qismi ((hardware););
• dasturiy ta'minot qismi (software, soft).
Kompyuter arxitekturasi
Kompyuter arxitekturasi- uning tuzilishi va asosiy elementlari - mantiqiy
tugunlarning o'zaro ta'sir printsiplari bo'lib, ular orasida asosiylari protsessor, ichki
xotira (asosiy va operatsion), tashqi xotira va axborotni kiritish-chiqarish qurilmalari
(periferik) hisoblanadi (1-rasm).
Rasm 1.Kompyuter arxitekturasi tuzilishining modeli
Fon Neyman printsiplari
EHMlar arxitekturasi asosidagi printsiplar 1945 yilda Jonon fon Neyman
tomonidan ishlab chiqilgan bo'lib, u Charlz Bebbijning g‘oyalarini ishlab chiqdi, u
kompyuter ishini qurilmalar to'plamining ishi sifatida namoyish etdi: ishlov berish,
boshqarish, xotira, kirish-chiqarish.
Fon Neyman printsiplari.
1. Xotiraning bir xilligi printsipi. Buyruqlar ustida ham xuddi ma'lumotlar kabi
bir xil amallarni bajarish mumkin.
2. Xotiraning adreslanganligi printsipi. Asosiy xotira tizimli ravishda
raqamlangan yacheykalardan iborat; har qanday yacheykalardan istalgan vaqtda
protsessor foydalanish imkoniga ega. Demak, xotira maydonlariga nomlarni berish
orqali, ularda saqlangan qiymatlarga keyinchalik murojat qilish yoki berilgan nomlar
yordamida dasturni bajarish paytida o'zgartirish mumkin.
3. Dasturni ketma-ket boshqarish printsipi. Dastur protsessor tomonidan
avtomatik ravishda ma'lum bir ketma-ketlikda bajariladigan buyruqlar to'plamidan
iborat.
4. Arxitektura qat'iyligi printsipi. Topologiya, arxitektura, buyruqlar ro'yxati
ishlashi paytida o'zgarmaslik.
Kompyuterning tashqi arxitekturasi:
• Sistemali blok - shaxsiy kompyuterning ichki qismlarini tashqi ta'sirlardan va
mexanik shikastlanishlardan himoya qiladigan, tizim bloki ichidagi kerakli harorat
rejimini saqlaydigan, ichki komponentlar tomonidan hosil bo'lgan elektromagnit
nurlanishni himoya qiladigan funktsional element.
• Monitor, displey - barcha turdagi ma'lumotlarni visual ravishda ko‘rsatib beradi.
• Klaviatura - foydalanuvchidan kompyuterga ma'lumot kiritish uchun asosiy
qurilmalardan biri.
• "sichqoncha" manipulyatori - kompyuter bilan foydalanuvchi interfeysini
ta'minlovchi ko'rsatuvchi kirish qurilmalaridan biri.
• Printer - raqamli ma'lumotni qattiq qog‘ozga, odatda qog‘ozga bosib chiqarishga
mo'ljallangan qurilma.
• Skaner - ob'ektni (odatda rasm, matn) tahlil qiladigan, ob'ekt tasvirining raqamli
nusxasini yaratadigan qurilma.
• Akustika - tovushni chiqarish uchun moslama.
Kompyuterning ichki arxitekturasi:
• Chipset - bir qator funktsiyalarni bajarish uchun birgalikda ishlashga
mo'ljallangan mikrosxemalar to'plami.
• Ona plata - bu shaxsiy kompyuterning asosiy komponentlari (markaziy
protsessor, operativ xotiraning boshqaruvchisi va operativ xotiraning o'zi, yuklash
uchun ROM, asosiy kirish-chiqarish interfeyslari kontrollerlari) o'rnatilgan ko'p qavatli
murakkab elektron platalar.
• Tezkor xotira - protsessor bitta operatsiya uchun murojaat qilishi mumkin
bo'lgan kompyuter xotirasi tizimining bir qismi bo'lgan xotira.
• Markaziy protsessor - mashina ko'rsatmalarining bajaruvchisi, kompyuterning
dasturiy qismining bir qismi yoki dasturlar bilan belgilangan operatsiyalarni bajarishga
mas'ul bo'lgan dasturlashtiriladigan mantiqiy tekshirgich.
• Videokarta - kompyuter xotirasidagi tasvirni monitor uchun video signalga
aylantiruvchi moslama.
• Ovoz kartasi - bu sizning kompyuteringizda ovoz bilan ishlashga imkon
beruvchi karta.
• Qattiq disk yoki qattiq disk (Disk Drive, HDD, HMDD) - bu magnitli yozish
tamoyiliga asoslangan ma'lumotlarni saqlash qurilmasi. Bu aksariyat kompyuterlar
uchun asosiy saqlash qurilmasi.
• Tarmoq kartasi, tarmoq adapteri - kompyuterning tarmoqdagi boshqa qurilmalar
bilan aloqa qilishiga imkon beruvchi periferiya qurilmasi.
• Modem - aloqa tizimlarida ishlatiladigan modulyatsiya va demodulyatsiya
funktsiyalarini bajaradigan uskuna.
• Kompyuter quvvat manbai - kompyuter bloklarini elektr energiyasi bilan
ta'minlash uchun mo'ljallangan quvvat manbai.
• Diskovod - raqamli tashuvchida disk shaklida ma'lumotlarni o'qish / yozish
imkonini beradigan elektromexanik moslama.
• Kompyuterni sovutish tizimi - kompyuterdagi issiqlikni (asosan sovutishni)
bartaraf etish uchun vositalar to'plami.
Savollar:
1. Kompyuter arxitekturasi nima va uning asosiy tuzlmasi qanday?
2. Jon Neyman prinsiplari haqida ma’lumot bering.
3. Garvard arxitekturasi qanday? Klassik arxitektura bilan farqi nimada?
4. Kompyuter ishlashi uchun minimal qurilmalarni sanab o‘ting (mavzuda
keltirilgan qurilmalardan tanlang)
Javoblar:
1. Kompyuter arxitekturasi — bu kompyuter tizimining kontseptual modeli
boʻlib, uning tarkibiy qismlari, ularning bir-biri va atrof-muhit bilan oʻzaro
taʼsiri, shu jumladan uni loyihalash va rivojlantirish tamoyillarini oʻz ichiga
oladi. Amalga oshirish jihatlari (masalan, xotirani amalga oshirish uchun
ishlatiladigan texnologiya) arxitekturaning bir qismi emas.
Kompyuter arxitekturasi- uning tuzilishi va asosiy elementlari - mantiqiy
tugunlarning o'zaro ta'sir printsiplari bo'lib, ular orasida asosiylari protsessor,
ichki xotira (asosiy va operatsion), tashqi xotira va axborotni kiritish-chiqarish
qurilmalari (periferik) hisoblanadi.
2. Dastlabki EХMlarning yaratilishi davrida, mashhur matematik Jon fon
Neyman 1945-yildayoq kompyuter qurilmalari ma’lumotlarni qayta
ishlash uchun qanday tarzda universal va maqbul bo’lishi kerakligini
aytib o’tgan edi. Shu bois kompyuter tuzilishining asoslari Fon Neyman
prinsipi deb yuritiladi. Deyarli barcha zamonaviy kompyuterlar mazkur
prinsip asosida ishlaydi.
Fon Neyman printsiplari
EHMlar arxitekturasi asosidagi printsiplar 1945 yilda Jonon fon Neyman
tomonidan ishlab chiqilgan bo'lib, u Charlz Bebbijning g‘oyalarini ishlab chiqdi, u
kompyuter ishini qurilmalar to'plamining ishi sifatida namoyish etdi: ishlov berish,
boshqarish, xotira, kirish-chiqarish.
Fon Neyman printsiplari.
1. Xotiraning bir xilligi printsipi. Buyruqlar ustida ham xuddi ma'lumotlar kabi
bir xil amallarni bajarish mumkin.
2. Xotiraning adreslanganligi printsipi. Asosiy xotira tizimli ravishda
raqamlangan yacheykalardan iborat; har qanday yacheykalardan istalgan vaqtda
protsessor foydalanish imkoniga ega. Demak, xotira maydonlariga nomlarni berish
orqali, ularda saqlangan qiymatlarga keyinchalik murojat qilish yoki berilgan nomlar
yordamida dasturni bajarish paytida o'zgartirish mumkin.
3. Dasturni ketma-ket boshqarish printsipi. Dastur protsessor tomonidan
avtomatik ravishda ma'lum bir ketma-ketlikda bajariladigan buyruqlar to'plamidan
iborat.
4. Arxitektura qat'iyligi printsipi. Topologiya, arxitektura, buyruqlar ro'yxati
ishlashi paytida o'zgarmaslik.
Kompyuterning tashqi arxitekturasi:
• Sistemali blok - shaxsiy kompyuterning ichki qismlarini tashqi ta'sirlardan va
mexanik shikastlanishlardan himoya qiladigan, tizim bloki ichidagi kerakli harorat
rejimini saqlaydigan, ichki komponentlar tomonidan hosil bo'lgan elektromagnit
nurlanishni himoya qiladigan funktsional element.
• Monitor, displey - barcha turdagi ma'lumotlarni visual ravishda ko‘rsatib beradi.
• Klaviatura - foydalanuvchidan kompyuterga ma'lumot kiritish uchun asosiy
qurilmalardan biri.
• "sichqoncha" manipulyatori - kompyuter bilan foydalanuvchi interfeysini
ta'minlovchi ko'rsatuvchi kirish qurilmalaridan biri.
• Printer - raqamli ma'lumotni qattiq qog‘ozga, odatda qog‘ozga bosib chiqarishga
mo'ljallangan qurilma.
• Skaner - ob'ektni (odatda rasm, matn) tahlil qiladigan, ob'ekt tasvirining raqamli
nusxasini yaratadigan qurilma.
• Akustika - tovushni chiqarish uchun moslama.
Kompyuterning ichki arxitekturasi:
• Chipset - bir qator funktsiyalarni bajarish uchun birgalikda ishlashga
mo'ljallangan mikrosxemalar to'plami.
• Ona plata - bu shaxsiy kompyuterning asosiy komponentlari (markaziy
protsessor, operativ xotiraning boshqaruvchisi va operativ xotiraning o'zi, yuklash
uchun ROM, asosiy kirish-chiqarish interfeyslari kontrollerlari) o'rnatilgan ko'p qavatli
murakkab elektron platalar.
• Tezkor xotira - protsessor bitta operatsiya uchun murojaat qilishi mumkin
bo'lgan kompyuter xotirasi tizimining bir qismi bo'lgan xotira.
• Markaziy protsessor - mashina ko'rsatmalarining bajaruvchisi, kompyuterning
dasturiy qismining bir qismi yoki dasturlar bilan belgilangan operatsiyalarni bajarishga
mas'ul bo'lgan dasturlashtiriladigan mantiqiy tekshirgich.
• Videokarta - kompyuter xotirasidagi tasvirni monitor uchun video signalga
aylantiruvchi moslama.
• Ovoz kartasi - bu sizning kompyuteringizda ovoz bilan ishlashga imkon
beruvchi karta.
• Qattiq disk yoki qattiq disk (Disk Drive, HDD, HMDD) - bu magnitli yozish
tamoyiliga asoslangan ma'lumotlarni saqlash qurilmasi. Bu aksariyat kompyuterlar
uchun asosiy saqlash qurilmasi.
• Tarmoq kartasi, tarmoq adapteri - kompyuterning tarmoqdagi boshqa qurilmalar
bilan aloqa qilishiga imkon beruvchi periferiya qurilmasi.
• Modem - aloqa tizimlarida ishlatiladigan modulyatsiya va demodulyatsiya
funktsiyalarini bajaradigan uskuna.
• Kompyuter quvvat manbai - kompyuter bloklarini elektr energiyasi bilan
ta'minlash uchun mo'ljallangan quvvat manbai.
• Diskovod - raqamli tashuvchida disk shaklida ma'lumotlarni o'qish / yozish
imkonini beradigan elektromexanik moslama.
• Kompyuterni sovutish tizimi - kompyuterdagi issiqlikni (asosan sovutishni)
bartaraf etish uchun vositalar to'plami.
3. Garvard arxitekturasi, kompyuter arxitekturasi tuzilishi bo'lib, 1960-yillarda
Jon Von Neumann arxitekturasiga alternativ sifatida rivojlanib, asos qilinishi bi
lan tanishilgan. Uning asosiy xususiyatlari quyidagilardan iborat:
1.Ikkita xotira (Dual Memory): Garvard arxitekturasida ikkita turdagi xotira
(memory) mavjud bo'ladi. Biri "Ish" xotirasi (Working Memory) deb ataladi va
boshqa "Ma'lumot" xotirasi (Data Memory) deb nomlanadi. Ish xotirasida
amaliyotlar uchun zarur ma'lumotlar va hisoblash natijalari saqlanadi, shuningd
ek, ma'lumot xotirasida esa ma'lumotlar o'zgaruvchanligi bo'lgan ma'lumotlr sa
qilanadi.
2.Harakat qilish (Pipelining): Garvard arxitekturasida harakat qilish (pipelining
) prinsipi qo'llaniladi. Bu prinsip asosida kompyuter ishlash jarayonlarini bir
necha bosqichga bo'lib, har bir bosqichda bir amalni bajarish uchun xususiy
qurilmalar ishlatiladi. Bunda bir bosqichdagi amal bajarilayotgan paytda keyin
gi bosqichdagi amalning tayyorlashi boshlanadi. Bu usul ish jarayonlarini
tezlashtiradiva kompyuterning ishlayishi vaqtni samarali ishlatishga
imkon beradi.
3.O'zaro aloqa (Interconnection): Garvard arxitekturasida komponentlar o'zaro
aloqa (interconnection) tizimi orqali bog'lanadi. Bu tizim kompyuterdagi
qurilmalar o'rtasidagi ma'lumot almashinuvi va boshqa murojaatlarni ta'minlay
di.
Klassik arxitektura (Jon Von Neumann arxitekturasi) va Garvard arxitekturasi
o'rtasidagi asosiy farqlardan ba'zilari quyidagilardir:
1.Xotira tizimi: Klassik arxitekturada yagona xotira (memory) mavjud bo'lib,
ma'lumotlar va instruksiyalar bir xotirada saqlanadi. Garvard arxitekturasi esa i
kkita xotira (dual memory) tizimiga
ega.
2.Harakat qilish: Garvard arxitekturasida harakat qilish (pipelining) prinsipi
qo'llaniladi, bu esa ish jarayonlarini tezlashtirishga imkon beradi. Klassik
arxitekturada esa harakat qilish prinsipi o'rinli emas.
4. Istalgan kompyuter tizimlar bloki, monitor va klaviaturadan iborat boʻladi.
Kerak boʻlganda boʻlardan tashqari boshqa qurilmalar ham ulanadi. Tizimlar
blokida kompyuterning ishlashi uchun zarur muhim qismlar (diskni
yuritkich, vinchester — qattiq disk, mantiqiy amallarni bajaruvchi
mikrosxemalar) boʻlib, unga qolgan qurilmalar ulanadi. Monitor (displey) matn
va turli tasvir koʻrinishidagi axborotlarni ekranda aks ettiradi. Klaviatura
kompyuterga buyruq va turli axborotlarni kiritadi. Koʻpincha, kompyuter
tarkibiga „sichqoncha“ manipulyatori va printer kiritiladi. „Sichqoncha“ ikki
yoki uchta knopkasi (tugmasi) boʻlgan qurilma boʻlib, uning yordamida
kompyuter ishi osonlashtiriladi. Printer esa axborotlarni qogʻozga tushirish
uchun xizmat qiladi. Zamonaviy kompyuterlar, asosan, toʻrt qurilma:
boshqarish, protsessor, xotira va kiritish-chiqarish qurilmalaridan iborat.
Boshqarish
qurilmasi
kompyuterning
barcha
qurilmalari
ishini
muvofiqlashtiradi va boshqaradi. Protsessor kompyuterning asosiy qurilmasi
boʻlib, axborotlarga ishlov beradi, yaʼni hisoblash amallari, solishtirish va
uzatish kabi arifmetik-mantiqiy amallarni bajaradi. Bu qurilma bajaradigan
amallar dasturlar orqali belgilanadi. Xotira qurilmasi axborotlarga ishlov berish
vaqtida uni saqlash uchun xizmat qiladi. Foydalanayotgan dasturlar ichki
xotirada, uzoq, muddat saqlanadigan axborotlar tashqi xotira (disketalar)da
saqlanadi. Ichki va tashqi xotiralarda axborot almashinuvi kiritish-chiqarish
qurilmalari yordamida amalga oshiriladi.
Amaliy mashg‘ulot №2.
Mavzu: “Operatsiya-operand” xisoblashlar modelini o‘rganish
Ishdan maqsadi: “Operatsiya-operand” xisoblashlar modelini o‘rganish va
amaliy tahlil qilish.
Nazariy qism
Turli xil hsoblash mashinalarning buyruq tizimlaridagi farqlarga qaramay,
operatsiyalarning asosiy turlarini ularning har qandayida topish mumkin.Buyruq
tizimlarining quyidagi asosiy tasnifi qabul qilingan:
 ma'lumotlar uzatish buyruqlari;
 arifmetik va mantiqiy ishlov berish buyruqlari;
 konversiya buyruqlari;
 kiritish / chiqarish buyruqlari;
 buyruq oqimini boshqarish.
Mashinada ko‘rsatmalarning eng keng tarqalgan turi – ekspeditorlik
ko‘rsatmalari.
Ushbu buyruqlar quyidagi ma'lumotlarni o‘z ichiga oladi:
 operandlarning manba va manzillari - xotira yacheykalarining manzillari, protsessor
registrlari raqamlari yoki operandlar stekda joylashganligi to‘g‘risidagi ma'lumotlar;
 aniq yoki bilvosita ko‘rsatilgan ma'lumotlarning uzatilishi (odatda baytlarda yoki
so‘zlarda);
 har bir operandga murojaat qilish usuli, uning yordamida buyruqning manzil qismidagi
tarkib operandning fizik adresiga aylantirilishi mumkin.
Ushbu buyruqlar guruhi protsessor va OX o‘rtasida, protsessor ichida va xotira
yacheykalari o‘rtasida ma'lumot uzatishni ta'minlaydi. Protsessor va xotira o‘rtasida
o‘tkazmalar registrdan xotiraga, xotiradagi o‘tkazmalar esa xotiradan xotiraga, shu
jumladan protsessorda oraliq ishlov berish bilan uning yacheykalari orasidagi
o‘tkazmalar hisoblanadi.
Mantiqiy va arifmetik ishlov berish buyruqlari guruhiga ma'lumotlarni
taqdim etishning turli shakllarida arifmetik va mantiqiy ishlov berishni ta'minlovchi
buyruqlar kiradi. Raqamlarni tasvirlashning har bir shakli uchun odatda standart
operatsiyalar to‘plami taqdim etiladi.
Natija hisoblashdan tashqari, arifmetik va mantiqiy amallar ALUda ushbu
natijani tavsiflovchi belgilar (bayroqlar) hosil bo‘ladi. Eng ko‘p yozilgan belgilar: Z
(Zero) - nol natija; N (Negative) - salbiy natija; V (Over-flow) - bit katakchasining
to‘lib ketishi; C (carry) –o‘tkazish imkoniyati.
Suzuvchi nuqta shaklida berilgan raqamlar bilan ishlash uchun ko‘pchilik
mashinalar quyidagilarni ta'minlaydi:
 asosiy arifmetik amallar: qo‘shish, ayirish, ko‘paytirish va bo‘lish;
 xususiyatlarning rivojlanishi bilan ikkita haqiqiy sonni taqqoslaydigan taqqoslash
operatsiyalari: =, <>,>, <, <=,> =;
 konversiya operatsiyalari: taqdimot shakli (qat'iy va o‘zgaruvchan nuqta o‘rtasida),
taqdimot formati (bitta va ikkita aniqlik).
Standart XM ko‘rsatmalar tizimi odatda so‘zlarning alohida bitlari yoki boshqa
adreslanadigan birliklar juftliklari bo‘yicha har xil mantiqiy operatsiyalarni bajarish
bo‘yicha ko‘rsatmalarni o‘z ichiga oladi. Bunday buyruqlar belgilar va mantiqiy
ma'lumotlarni qayta ishlashga mo‘ljallangan. Qo‘llab-quvvatlanadigan mantiqiy
operatsiyalarning minimal to‘plami YO‘Q, VA, YOKI.
ХМ-da o‘nlik raqamlar ikkilik kodlangan shaklda namoyish etiladi. Zamonaviy
mashinalarning ko‘rsatmalar tizimida hisoblashlar butun sonli arifmetik ko‘rsatmalar
yordamida simulyatsiya qilinadi.
Kiritish-chiqarish buyruqlarini periferik qurilmani (PQ) boshqarish, uning
holatini, kirish va chiqishini tekshirish uchun buyruqlarga bo‘lish mumkin.
Periferik qurilmani boshqarish buyruqlari boshqaruv panelini ishga tushirish va
kerakli harakatni ko‘rsatish uchun ishlatiladi. Masalan, lentani bitta yozuvni orqaga
qaytarish yoki oldinga surish bo‘yicha ko‘rsatma berilishi mumkin.Bunday
ko‘rsatmalarning talqini PQ turiga bog‘liq.
Kiritish-chiqarish holatini tekshirish buyruqlari Kiritish-chiqarish moduli va
unga ulangan PQlarning holatini tavsiflovchi har xil belgilarni sinash uchun ishlatiladi.
PQ bilan ma'lumotlar almashinuvi kiritishva chiqarish buyruqlari bilan
ta'minlanadi. Kiritish buyruqlari Kiritish-chiqarish moduliga PQ dan ma'lumotlar
elementini (bayt yoki so‘z) qabul qilishni va ma'lumotlar shinasiga joylashtirishni
buyuradi, va chiqarish buyruqlari Kiritish-chiqarish modulini ma'lumotlar shinasidan
qabul qilishni va uni PQ ga yuborishini ta'minlaydi.
Buyruq oqimi buyruqlari hisob-kitoblar ketma-ketligini o‘zgartirishi mumkin
bo‘lgan uch turdagi buyruqlarni o‘z ichiga oladi:
 shartsiz o‘tish;
 shartli o‘tish;
 protsedurani chaqirish va protseduradan qaytarish.
Shartli o‘tish ma'lum bir shart bajarilgandagina sodir bo‘ladi, aks holda tabiiy
tartibda navbatdagi dastur buyrug‘i bajariladi.
O‘tish amalga oshiriladigan shart ko‘pincha oldingi arifmetik yoki mantiqiy
operatsiya natijasining belgisidir.Funksiyalarning har biri protsessor bayroqlari
registrining o‘z bitida o‘rnatiladi.
Zamonaviy XMlar protsedura mexanizmidan intensiv foydalanish bilan ajralib
turadi.Protsedurani dasturning istalgan joyida chaqirish mumkin.XMuchun bunday
chaqiruv shu nuqtada protsedurani amalga oshirish kerakligini anglatadi va keyin
chaqiruv qilingan joydan keyin darhol ortga qaytadi.
Protsessual mexanizm dasturning joriy nuqtasidan protseduraning boshlang‘ich
buyrug‘iga o‘tishni ta'minlaydigan protsedura chaqiruv buyruqlariga asoslangan va
chaqiruv buyrug‘idan so‘ng darhol nuqtaga qaytish uchun buyruqlarni protseduradan
qaytarish tushuniladi. Ushbu rejim chaqiruv paytida buyruq hisoblagichi tarkibidagi
mavjud holatni saqlash va protseduradan chiqishda uni tiklash uchun vositalar
mavjudligini nazarda tutadi.
Protsessor va RAM
Hammangizga ma'lumki, kompyuter miyasi - protsessor. U kompyuter ichida
sodir bo‘lgan barcha jarayonlarni boshqaradi.
6.1-rasm. Operativka ishlash jarayoni
Protsessor kompyuterdagi barcha qurilmalar va jarayonlarni boshqaradi
Protsessor rus, ingliz va boshqa tillarni tushunmaydi. U o‘zi uchun oddiy
buyruqlar bo‘lgan raqamlarni tushunadi, masalan: xotiradan ba'zi ma'lumotlarni oling,
ba'zi ma'lumotlarni qo‘shingva hokazo.
Protsessor ko‘plab buyruqlarni biladi va ularning har biri o‘z raqamli kodiga ega,
masalan:
35 - ma'lumotlarni bir xotira joyidan boshqasiga nusxalash
48 - 2 ta raqamni qo‘shing
12 - mantiqiy operatsiyani bajarish yoki (yoki)
Protsessorda muhandislar tomonidan tuzilgan barcha ko‘rsatmalar va ularning
raqamli kodlari to‘plami protsessor arxitekturasi deb ataladi. Bu apparat arxitekturasi
emas, balki dasturiy ta'minotdir.Har bir protsessor ishlab chiqaruvchisi o‘zining
arxitekturasini yaratadi.Bu shuni anglatadiki, bir xil buyruq turli protsessorlarda har xil
raqamli kodlarga ega bo‘ladi.
6.2-rasm. Operativka arxitekturasin solishtirish
Shunday
qilib,
protsessor
kichik
raqamli
ko‘rsatmalarni
bajarishi
mumkin.Ammo ularni qaerdan oladi?Operativ xotiradan.RAMni juda ko‘p kichik
hujayralar deb tasavvur qiling.Har bir hujayraning o‘ziga xos manzili bor - bu oddiy
raqam, masalan 2001 yil. Yacheykaning manzilida protsessor ma'lumotlarni so‘rashi
mumkin va RAM ularni qaytarib beradi. Shuningdek, protsessor ushbu katakchaga
yangi ma'lumotlarni yozishi mumkin.
Protsessor uchun ko‘rsatmalar xotira yacheykasida saqlanadi. Ammo ular
raqamli ravishda ifodalanishi mumkin bo‘lgan har qanday boshqa ma'lumotlarni
saqlashi mumkin, masalan: harflar, rasmlar, musiqa yoki videolar.
Protsessor RAMga yacheykaning manziliga murojaat qiladi, operativ xotira
unga ushbu yacheykadan buyruq qaytaradi, protsessor buyruqni bajaradi.Keyin
protsessor yana xotiraga kiradi (boshqa yacheykaga), buyruq oladi, uni bajaradi va bu
sikl qaytaqayta takrorlanadi. Ya'ni, protsessor har doim berilgan buyruqlar ketmaketligini (raqamli kodlar) bajaradi.Ushbu ko‘rsatmalar ketma-ketligi mashina kodi
deb nomlanadi..
Protsessorni qandaydir dasturni bajarishga majbur qilish uchun, masalan, 2+2*2
tenglamani echish uchun, biz oddiy raqamli ko‘rsatmalar zanjirini yozishimiz kerak.
Yuqorida sanab o‘tilgan buyruq kodlari endi shunday ko‘rinadi:
MOV (raqamli kod 35) - ma'lumotlarni bitta xotira joyidan boshqasiga nusxalash
ADD (raqamli kod 48) - 2 ta raqam qo‘shing
ORL (raqamli kod 12) - mantiqiy OR yoki (yoki) operatsiyani bajarish
Shuningdek, buyruqlar nomiga buyruqlar bajarilishi uchun qo‘shimcha
ma'lumot beradigan operandlar (bir yoki bir nechtasi) qo‘shilgan
6.3-rasm. Operandlar va operatsiyalar
"Hello, World!" Iborasini chiqaradigan assembler dasturining misoli
section.text
global_start
_start:
mov edx,len // qator uzunligi
mov ecx,msg // yozilayotgan habarga ishora
mov ebx,0// xato yo‘q
int0x80 // buyruqni uzish signali
mov eax,1 // chiqish = exit
int 0x80
section.data
msg db 'Hello, world!', 0xA // yangi qator
len equ $ - msg
Yuqori darajadagi dasturlash tillari
Shunday qilib, protsessorning har bir arxitekturasi uchun bir xil dasturni
assemblerda "qayta yaratishingiz" kerak bo‘ladi. Har bir arxitektura uchun siz alohida
Assembler vositasini yuklab olishingiz va u orqali kodingizni ishlatishingiz kerak.
Bu ko‘chirishni murakkablashtiradi. Bunga katta dasturlarni yozishning
murakkabligi va yangi vositalarni yaratish zarurligini qo‘shing.
Shu tarzda yuqori darajadagi dasturlash tillari paydo bo‘la boshladi.
Ularning mohiyati shundan iboratki, assemblerdagi buyruqlar zanjirlari alohida
funksiyalarga birlashtirilgan. Endi "Hello, World!" Xabarini ko‘rsatish uchun bitta
buyruq kifoya.
Kompilyatsiya qilinadigan tillar
Kompilyatsiya qilingan dasturlash tilida yozilgan dastur har doim ishga
tushirishdan oldin kompilyatsiya jarayonidan o‘tadi.Ya'ni, yozilgan barcha yuqori
tartibli kodlar protsessor tushunadigan mashina kodiga aylantiriladi.
6.4-rasm. Operandlar va operatsiyalarni dasturlashda ishlatilishi
Interpretatsiya qilinadigan tillar
Kompilyatsiya qilinadigan tillar kod yozish vazifasini ancha osonlashtirdi.
Ammo barcha protsessor arxitekturalarida va har qanday operatsion tizimda
ishlaydigan dastur yozishingiz mumkin. Bu erda Python, PHP, Perl, Paskal va boshqa
talqin qilingan dasturlash tillari paydo bo‘ladi.
Bular yana yuqori darajadagi tillar bo‘lib, ular ham kod yozishni osonlashtiradi.
Ammo ular kompilyatsiya qilinadigan tillarga qaraganda kamida ikkita
afzalliklarga ega:
• interpritatsiya qilingan tillardagi dasturlar tegishli interpritator o‘rnatilgan
joyda ishlaydi dasturni sinab ko‘rish uchun har safar yozilgan kodni kompilyatsiya
qilishning hojati yo‘q. Ushbu kod tezda amalga oshiriladi, bu dasturni ishlab chiqishni
tezlashtiradi
Interpritator kompilyator bilan deyarli bir xil ishlaydi, lekin bitta kichik, ammo
muhim xususiyati bilan: yuqori tartibli kodni mashina kodiga emas, balki undan past
bayt kodiga o‘zgartiradi.
Bytecode - bu arxitekturasidan qat'i nazar, barcha protsessorlar tomonidan
tushuniladigan kod.
Bayt kodi - bu protsessor tushunadigan eng past til.
Mashina kodi - bu raqamli buyruqlar zanjiri.Barcha protsessor ko‘rsatmalari
muhandislar tomonidan ishlab chiqilgan protsessor arxitekturasini yaratadi.Turli xil
protsessor ishlab chiqaruvchilari bir xil ko‘rsatmalar uchun turli xil raqamlarga ega
bo‘lishlari mumkin.
Assembler - bu assembler kodni mashina kodiga aylantiruvchi vosita.
Dasturlarni mashina kodiga qaraganda assembler tilda yozish osonroq, ammo baribir
bu muammo.
Kompilyator va Interpreter - bu yuqori darajadagi kodni protsessor
tushunadigan kodga o‘zgartiradigan vositalar.
Yuqori darajadagi til - bu oddiy, tushunarli funksiyalarga ega bo‘lgan katta
dasturlarni yaratishga imkon beruvchi ertak.
Nazorat savollari.
1. "Operatsiya-operand" xisoblashlar nima?
2. "Operatsiya-operand" xisoblashlarda qanday matematik amallar ishlatiladi?
3. Xisoblashlarda operatsiyalar va operandlar qanday tartibda qo‘shiladi yoki
ajratiladi?
4. "Operatsiya-operand" xisoblashlarda qanday xatolar aniqlanishi va ishlatilishi
mumkin?
5. "Operatsiya-operand" xisoblashlarining kompyuter ilmidagi ta'qibi nimalardan
iborat?
Javoblar:
1. Operand - operator tomonidan boshqariladigan ob'ekt, tizim yoki jarayon.
Ushbu ta'riflar operator yoki operand bo'lish tizim ob'ektning roli va xarakteristikasi
ekanligini ko'rsatadi.
Bitta va bir xil tizim obyekt ba'zi holatlarda operator, boshqa holatlarda esa
operand bo'lishi mumkin. Shunga o'xshab, tizim/ob'ekt ba'zi tizimlarga nisbatan
operator bo'lishi mumkin, boshqa tizimlarga nisbatan operator emas.
1 va 2 ta'riflar fizika va kimyodagi operator nazariyalari yoki operatorlarni
dasturlash nazariyasi kabi ixtisoslashgan operatorlar nazariyalarining xilma-xilligi
uchun belgilanishi mumkin bo'lgan yagona operator nazariyasi asosini tashkil qiladi. 1
va 2 ta'riflar, shuningdek, operatorlar va ularning operandlari o'rtasidagi asosiy diadik
munosabatni ifodalaydi, bu operator triadasi shaklida amalga oshiriladi:
Ushbu diagramma operator triadasining komponenti sifatida operatsiyani
taqdim etadi.
Operand deb, operatsiya orqali ishlanayotgan amallar ko'paytirish yoki qo'shish kabi
matematik bo'lishi mumkin yoki ular murakkabroq funktsiyalar bo'lishi mumkinligiga
aytiladi. Ya’ni, Operandalar deganda buyruqni bajarilishida qatnashadigan
ma’lumotlar tushuniladi.
Operandning asosiy misoli dasturda e'lon qilingan, operatsiyalar tufayli
qiymatni o'zgartiradigan o'zgaruvchi bo'lishi mumkin.
2. Muammolarni echish uchun tanlangan algoritmlarda mavjud bo'lgan axborot
bog'liqliklarini tavsiflash uchun "operand amallari" grafigi ko'rinishidagi
modeldan foydalanish mumkin.
Taqdim etilgan materialning murakkabligini kamaytirish uchun modelni
tuzishda har qanday hisoblash operatsiyalarining bajarilish vaqti bir xil va 1 ga teng
deb qabul qilinadi (ma'lum o'lchov birliklarida); bundan tashqari, hisoblash
moslamalari o'rtasida ma'lumotlarni uzatish vaqt sarf qilmasdan bir zumda amalga
oshiriladi deb taxmin qilinadi (bu to'g'ri bo'lishi mumkin, masalan, parallel hisoblash
tizimida birgalikda umumiy xotira mavjud. bo'lganda).
3. Mantiqiy va arifmetik ishlov berish buyruqlari guruhiga ma'lumotlarni
taqdim etishning turli shakllarida arifmetik va mantiqiy ishlov berishni ta'minlovchi
buyruqlar kiradi. Raqamlarni tasvirlashning har bir shakli uchun odatda standart
operatsiyalar to’plami taqdim etiladi.
Natija hisoblashdan tashqari, arifmetik va mantiqiy amallar ALUda ushbu
natijani tavsiflovchi belgilar (bayroqlar) hosil bo’ladi. Eng ko’p yozilgan belgilar: Z
(Zero) - nol natija; N (Negative) - salbiy natija; V (Over-flow) - bit katakchasining
to’lib ketishi; C (carry) –o’tkazish imkoniyati.
Suzuvchi nuqta shaklida berilgan raqamlar bilan ishlash uchun ko’pchilik
mashinalar quyidagilarni ta'minlaydi:
 asosiy arifmetik amallar: qo’shish, ayirish, ko’paytirish va bo’lish;
 xususiyatlarning rivojlanishi bilan ikkita haqiqiy sonni taqqoslaydigan taqqoslash
operatsiyalari: =, <>,>, <, <=,> =;
 konversiya operatsiyalari: taqdimot shakli (qat'iy va o’zgaruvchan nuqta o’rtasida),
taqdimot formati (bitta va ikkita aniqlik).
Standart XM ko’rsatmalar tizimi odatda so’zlarning alohida bitlari yoki boshqa
adreslanadigan birliklar juftliklari bo’yicha har xil mantiqiy operatsiyalarni bajarish
bo’yicha ko’rsatmalarni o’z ichiga oladi. Bunday buyruqlar belgilar va mantiqiy
ma'lumotlarni qayta ishlashga mo’ljallangan. Qo’llab-quvvatlanadigan mantiqiy
operatsiyalarning minimal to’plami YO’Q, VA, YOKI.
ХМ-da o’nlik raqamlar ikkilik kodlangan shaklda namoyish etiladi. Zamonaviy
mashinalarning ko’rsatmalar tizimida hisoblashlar butun sonli arifmetik ko’rsatmalar
yordamida simulyatsiya qilinadi.
4. Protsessor uchun ko’rsatmalar xotira yacheykasida saqlanadi. Ammo
ular raqamli ravishda ifodalanishi mumkin bo’lgan har qanday boshqa ma'lumotlarni
saqlashi mumkin, masalan: harflar, rasmlar, musiqa yoki videolar.
Protsessor RAMga yacheykaning manziliga murojaat qiladi, operativ xotira
unga ushbu yacheykadan buyruq qaytaradi, protsessor buyruqni bajaradi. Keyin
protsessor yana xotiraga kiradi (boshqa yacheykaga), buyruq oladi, uni bajaradi va bu
sikl qaytaqayta takrorlanadi. Ya'ni, protsessor har doim berilgan buyruqlar ketmaketligini (raqamli kodlar) bajaradi. Ushbu ko’rsatmalar ketma-ketligi mashina kodi
deb nomlanadi..
Protsessorni qandaydir dasturni bajarishga majbur qilish uchun, masalan, 2+2*2
tenglamani echish uchun, biz oddiy raqamli ko’rsatmalar zanjirini yozishimiz kerak.
Yuqorida sanab o’tilgan buyruq kodlari endi shunday ko’rinadi:
MOV (raqamli kod 35) - ma'lumotlarni bitta xotira joyidan boshqasiga nusxalash
ADD (raqamli kod 48) - 2 ta raqam qo’shing
ORL (raqamli kod 12) - mantiqiy OR yoki (yoki) operatsiyani bajarish
Shuningdek, buyruqlar nomiga buyruqlar bajarilishi uchun qo’shimcha
ma'lumot beradigan operandlar (bir yoki bir nechtasi).
"Hello, World!" Iborasini chiqaradigan assembler dasturining misoli
section.text
global_start
_start:
mov edx,len // qator uzunligi
mov ecx,msg // yozilayotgan habarga ishora
mov ebx,0// xato yo’q
int0x80 // buyruqni uzish signali
mov eax,1 // chiqish = exit
int 0x80
section.data
msg db 'Hello, world!', 0xA // yangi qator
len equ $ - msg
Yuqori darajadagi dasturlash tillari
Shunday qilib, protsessorning har bir arxitekturasi uchun bir xil dasturni
assemblerda "qayta yaratishingiz" kerak bo’ladi. Har bir arxitektura uchun siz alohida
Assembler vositasini yuklab olishingiz va u orqali kodingizni ishlatishingiz kerak.
Bu ko’chirishni murakkablashtiradi. Bunga katta dasturlarni yozishning
murakkabligi va yangi vositalarni yaratish zarurligini qo’shing.
Shu tarzda yuqori darajadagi dasturlash tillari paydo bo’la boshladi.
Ularning mohiyati shundan iboratki, assemblerdagi buyruqlar zanjirlari alohida
funksiyalarga birlashtirilgan. Endi "Hello, World!" Xabarini ko’rsatish uchun bitta
buyruq kifoya.
Interpretatsiya qilinadigan tillar
Kompilyatsiya qilinadigan tillar kod yozish vazifasini ancha osonlashtirdi.
Ammo barcha protsessor arxitekturalarida va har qanday operatsion tizimda
ishlaydigan dastur yozishingiz mumkin. Bu erda Python, PHP, Perl, Paskal va boshqa
talqin qilingan dasturlash tillari paydo bo’ladi.
Bular yana yuqori darajadagi tillar bo’lib, ular ham kod yozishni osonlashtiradi.
Ammo ular kompilyatsiya qilinadigan tillarga qaraganda kamida ikkita
afzalliklarga ega:
• interpritatsiya qilingan tillardagi dasturlar tegishli interpritator o’rnatilgan
joyda ishlaydi dasturni sinab ko’rish uchun har safar yozilgan kodni kompilyatsiya
qilishning hojati yo’q. Ushbu kod tezda amalga oshiriladi, bu dasturni ishlab chiqishni
tezlashtiradi
Interpritator kompilyator bilan deyarli bir xil ishlaydi, lekin bitta kichik, ammo
muhim xususiyati bilan: yuqori tartibli kodni mashina kodiga emas, balki undan past
bayt kodiga o’zgartiradi.
Bytecode - bu arxitekturasidan qat'i nazar, barcha protsessorlar tomonidan
tushuniladigan kod.
Bayt kodi - bu protsessor tushunadigan eng past til.
Mashina kodi - bu raqamli buyruqlar zanjiri. Barcha protsessor ko’rsatmalari
muhandislar tomonidan ishlab chiqilgan protsessor arxitekturasini yaratadi.
Turli xil protsessor ishlab chiqaruvchilari bir xil ko’rsatmalar uchun turli xil
raqamlarga ega bo’lishlari mumkin.
Assembler - bu assembler kodni mashina kodiga aylantiruvchi vosita.
Dasturlarni mashina kodiga qaraganda assembler tilda yozish osonroq, ammo baribir
bu muammo.
Kompilyator va Interpreter - bu yuqori darajadagi kodni protsessor
tushunadigan kodga o’zgartiradigan vositalar.
Yuqori darajadagi til - bu oddiy, tushunarli funksiyalarga ega bo’lgan katta
dasturlarni yaratishga imkon beruvchi ertak.
Amaliy mashg‘ulot № 3
Mavzu: OpenMP paketi yordamida algoritmlarni amalga oshirish
Ishdan maqsadi: OpenMP paketi yordamida algoritmlarni amalga oshirish va
amaliy mashqlarda bajarish.
Nazariy qism
OpenMP (Open Multi-Processing) - bu C, C++ va Fortran-da ko‘p platformali
umumiy xotirani ko‘p ishlov berish dasturlashni qo‘llab-quvvatlaydigan API (Ilova
dasturlash interfeysi). Odatda parallel dasturlash uchun foydalaniladi, bu ishlab
chiquvchilarga bir vaqtning o‘zida bir nechta protsessorlarda ishlashi mumkin bo‘lgan
kod yozishga imkon beradi. Bu erda men OpenMP paketining mazmuni va
funksionalligi haqida qisqacha ma'lumot beraman:
OpenMP paketining tarkibi:
Directives: (Direktivlar): OpenMP koddagi parallel hududlarni ko‘rsatish uchun
kompilyator direktivalaridan foydalanadi. Ushbu direktivalar kompilyatorga kodni
parallellashtirish bo‘yicha yo‘l-yo‘riq ko‘rsatadigan maxsus izohlardir. Masalan:
Library Routines: Kutubxona tartiblari: OpenMP kod ichidan chaqirilishi
mumkin bo‘lgan ish vaqti kutubxona tartiblari to‘plamini taqdim etadi. Ushbu
tartiblar parallel bajarish ustidan qo‘shimcha nazoratni taklif qiladi va patoklarni
boshqarish, sinxronizatsiya va ma'lumotlarni almashish kabi vazifalar uchun
ishlatilishi mumkin. Misollar jumlalar sonini olish uchun omp_get_thread_num() va
patoklarning umumiy sonini olish uchun omp_get_num_threads() ni o‘z ichiga
oladi.
Environment Variables: Atrof-muhit o‘zgaruvchilari: OpenMP atrof-muhit
o‘zgaruvchilari orqali o‘z xatti-harakatlarini sozlash imkonini beradi. Ushbu
o‘zgaruvchilar foydalaniladigan patoklar soni va ichki parallellik harakati kabi
jihatlarni nazorat qiladi.
Data Scoping: Ma'lumotlar qamrovi: OpenMP parallel hududlarda
ma'lumotlarni qanday almashish yoki shaxsiy bo‘lish qoidalarini belgilaydi. Bu
to‘g‘ri sinxronizatsiyani ta'minlash va poyga sharoitlaridan qochish uchun muhimdir.
OpenMP funksionalligi:
Parallel hududlar: OpenMP ning asosiy funksiyasi koddagi parallel hududlarni
aniqlash qobiliyatidir. Bu hududlar bir vaqtning o‘zida bir nechta patoklar tomonidan
bajarilishi mumkin bo‘lgan kod bloklari.
Ish almashish konstruksiyalari: OpenMP ish almashish konstruksiyalarini
qo‘llab-quvvatlaydi, masalan, sikl iteratsiyasini patoklar orasida taqsimlaydi.
Masalan:
Synchronization: Sinxronizatsiya: OpenMP to‘siqlar va muhim bo‘limlar kabi
patoklar o‘rtasida sinxronizatsiya mexanizmlarini taqdim etadi. Bu ma'lumotlar
to‘qnashuvini oldini olish uchun ish zarrachalarining bajarilishini muvofiq ravishda
muvofiqlashtirishini ta'minlaydi.
Tasking: Vazifalar: OpenMP vazifalar parallelizmini qo‘llab-quvvatlashni o‘z
ichiga oladi, bu ishlab chiquvchilarga parallellikni oddiy tsikl takrorlashlariga
qaraganda yuqori darajada ifodalash imkonini beradi. Vazifalarni mavjud mavzularga
dinamik ravishda rejalashtirish mumkin.
Nested Parallelism: Ichki parallellik: OpenMP ichki parallelizmni qo‘llabquvvatlaydi, bu parallel hududlarni bir-biriga joylashtirish imkonini beradi. Xulqatvorni atrof-muhit o‘zgaruvchilari orqali boshqarish mumkin.
Reduction: Qisqartirish: OpenMP umumiy o‘zgaruvchilar bo‘yicha
qisqartirishni amalga oshirish jarayonini soddalashtiradigan qisqartirish bandlarini
taqdim etadi, masalan, turli mavzulardagi qiymatlarni jamlash.
Dynamic Parallelism: Dinamik Parallelizm: OpenMP mavjud apparat
resurslariga moslashishda moslashuvchanlikni ta'minlab, dasturni bajarish jarayonida
patoklar sonini dinamik ravishda sozlash imkonini beradi.
Thread Safety: OpenMP muhim bo‘limlar va atom operatsiyalari kabi
konstruktsiyalar orqali patok xavfsizligi bilan bog‘liq muammolarni boshqarishga
yordam beradi.
OpenMPI paketini o‘rnatish:
Ochiq MPI turli xil operatsion tizimlarga o‘rnatilishi mumkin va o‘rnatish
jarayoni sizning tizimingizga qarab farq qilishi mumkin. Quyida paket menejeri
yordamida Linuxda Open MPI-ni o‘rnatish bo‘yicha umumiy ko‘rsatmalar keltirilgan.
Shuni yodda tutingki, ushbu ko‘rsatmalar sizning Linux distributivingiz asosida
o‘zgartirishlarni talab qilishi mumkin.
Ubuntu/Debian:
Terminalni oching va quyidagi buyruqlarni bajaring:
Red Hat/Fedora:
CentOS:
Arch Linux:
Boshqa Linux distributivlari:
Boshqa
tarqatishlar
uchun
siz
ularning
tegishli
paket
menejeridan
foydalanishingiz kerak bo‘lishi mumkin. Umuman olganda, siz "openmpi", "openmpibin" va "libopenmpi-dev" yoki shunga o‘xshash paketlarni qidirishingiz kerak.
Agar siz Open MPI-ni manbadan o‘rnatishni afzal ko‘rsangiz, manba kodini
rasmiy Open MPI veb-saytidan yuklab olishingiz va manba kodi bilan birga kelgan
README yoki INSTALL fayllaridagi ko‘rsatmalarga amal qilishingiz mumkin.
Open MPI paketini Kali Linux-ga o‘rnatish uchun siz paket menejeridan
foydalanishingiz mumkin. Mana qadamlar:
1.
Terminal oynasini oching.
2.
Paket ro‘yxatini yangilang:
3.
Open MPI paketini o‘rnating:
Ushbu buyruq Open MPI ikkilik va ishlab chiqish kutubxonalarini o‘rnatadi.
4.
O‘rnatishni tekshiring:
O‘rnatilgan Open MPI versiyasini tekshirishingiz mumkin:
Bu o‘rnatilgan Open MPI versiyasi haqidagi ma'lumotlarni ko‘rsatishi kerak.
Nazorat savollari:
1. OpenMP paketi nima va algoritmlar amalga oshirishda qanday foydalaniladi?
2. OpenMP orqali paralellik amalga oshirilgan algoritmlar qaysi afzalliklarni
beradi?
3. OpenMP direktivlari yordamida qanday paralel sikl yaratiladi?
4. OpenMP orqali paralellik amalga oshirgan dasturlarda ma'lumotlar qanday
sinxronizatsiya qilinadi?
5. OpenMP-da paralellik bilan ishlovchi algoritmlar uchun ma'lumotlar qanday shart
qilinadi?
Javoblar:
1. OpenMP, parallel dasturlarni ishlab chiqish va amalga oshirish uchun ishlab
chiqilgan platforma bo'lib, C, C++, va Fortran dasturlarini parallel qilish uchun
foydalaniladi. Ushbu paket, yo'riqnoma (directive) belgilari orqali parallel qismni
belgilash, sikllarni parallel qilish, tasklar orqali vazifalarni parallel yaratish, va baraban
qatlamli parallelism yaratish imkonini beradi.
2. OpenMP, C, C++, va Fortran dasturlash tillarida o‘zaro xotirani qo‘llabquvvatlovchi ilovalarni yozish uchun de-facto standart API hisoblanadi. Ushbu
standart quyidagi afzalliklarga ega:
Yoshdagi standart: 1998-yildan buyon dasturlaringizni tezlashtiradi.
Portativlik: Ko‘plab kompilyatorlar tomonidan qo‘llab-quvvatlanadi va bir qancha
arxitekturalarda port qilinadi.
Qadamdan qadama paralellashtirish: Dasturda qadamdan qadama paralellashtirishni
o‘zgartirish imkonini beradi.
Tartibsiz ishni ketkazmasligi yoki juda kam ishni ketkazmasligi: OpenMP pragmalarni
e’tiborsiz qoldirib, dasturning ketma-ket ishini ketkazmasligini ta’minlaydi.
OpenMP, loyihalarni paralellashtirishda juda foydali bo‘ladi. Ushbu standartni
o‘rganish oson, dasturlarni port qilish oson, va kompyuter resurslarini samarali
foydalanish imkonini beradi.
3. OpenMP direktivlari orqali parallel sikl yaratish uchun, `#pragma omp
parallel for` yo'riqnomasini ishlatish mumkin. Bu direktiva parallel siklni belgilaydi va
siklni parallel qilish uchun ishlab chiqilgan threadlar (parallel bo'lganlar) o'rtasida
vazifa bo'lib bera oladi.
Quyidagi C tilidagi misolni ko'rib chiqamiz:
#include <omp.h>
#include <stdio.h>
int main() {
int n = 10;
int result[n];
#pragma omp parallel for
for (int i = 0; i < n; i++) {
result[i] = i * i;
}
// Natijalarni ekranga chiqaramiz
printf("Square of numbers:\n");
for (int i = 0; i < n; i++) {
printf("%d squared is %d\n", i, result[i]);
}
return 0;
}
Ushbu misolda `#pragma omp parallel for` yo'riqnomasi orqali, siklni parallel qilish
belgilanadi. Natijada, sikl parallel bo'lgan threadlar (parallel region) o'rtasida parallel
ravishda ishlaydi va har bir qiymatni o'zining kvadratini hisoblaydi.
Yo'riqnoma parametrlarini o'zgartirib, parallel siklni boshqa shakllarda ham
ishlatishingiz mumkin. Misol uchun, siklning muzofa qismiga o'zgartirish kiritilishi
mumkin:
#include <omp.h>
#include <stdio.h>
int main() {
int n = 10;
int result[n];
#pragma omp parallel for
for (int i = 0; i < n; i++) {
if (i % 2 == 0) {
result[i] = i * i;
} else {
result[i] = i;
}
}
// Natijalarni ekranga chiqaramiz
printf("Modified results:\n");
for (int i = 0; i < n; i++) {
printf("Result[%d] is %d\n", i, result[i]);
}
return 0;
}
Bu misolda, parallel sikl orqali toq sonlarni o'zlariga e'tibor qilmaslik uchun shartni
qo'shish amalga oshirilgan.
4. OpenMP orqali paralellik amalga oshirgan dasturlarda ma’lumotlar
sinxronizatsiya qilish uchun bir nechta usullar mavjud. Bu usullar orqali paralel
o’zgaruvchilarning to’g’ri va to’g’ri ishlashini ta’minlash mumkin:
Master: Bu direktiva orqali faqat master (bosh) xatolikni tuzatadi. Boshqa barcha
o’zgaruvchilarning ishlashini kutib turishadi.
Barrier: Barrier direktivasi barcha paralel o’zgaruvchilarning bir nuqtada to’planishini
kutiladi. Bunda har bir o’zgaruvchi boshqa o’zgaruvchilarning ishlashini kutib turadi.
Critical: Critical direktivasi orqali faqat bitta o’zgaruvchi bitta vaqtda ishlaydi. Boshqa
o’zgaruvchilarning ishlashini kutib turishadi.
Single: Single direktivasi faqat bitta o’zgaruvchi bitta vaqtda ishlaydi. Boshqa
o’zgaruvchilarning ishlashini kutib turadi.
Sinxronizatsiya
usullari
foydalanish
maqsadiga
qarab
tanlanishi
kerak. Barrier va Critical direktivalari
o’zgaruvchilarning
ishlashini
to’g’ri
ta’minlashda yordam beradi, lekin bu amaliyotlar narxi yuqori bo’lishi mumkin.
5. OpenMP, C, C++, va Fortran dasturlash tillarida o’rta xotiraga ega bo’lgan
biror paralellik platformasidir. OpenMP ni ishlatib, dasturchi dasturni qisqa vaqt
ichida paralellashtirish imkoniyatiga ega bo’ladi. Bu yerda sizga OpenMP haqida
batafsilroq ma’lumotlar beraman.
Nima OpenMP?
OpenMP, C, C++, va Fortran dasturlash tillarida o’rta xotiraga ega bo’lgan paralell
dasturlarni yozish uchun de-facto standart APIdir.
Bu API asosiy kompilyator
o’zgaruvchilaridan iborat.
direktivalari, runtime
funksiyalar,
va muhit
OpenMP standarti asosiy kompilyatorlar tomonidan qo’llaniladi va 1998 yildan beri
dasturlarni tezlashtirishga yordam beradi.
U portativ (ko’plab kompilyatorlar
paralellashtirishga imkon beradi.
tomonidan
qo’llaniladi)
va inkremental
Tarmoqda o’rta xotirani ishlatish uchun o’zgartirishlarni qo’shish orqali dasturda
paralelllikni o’rnatish mumkin.
OpenMP foydalari:
Olgan standart: 1998 yildan beri dasturlarni tezlashtirishga yordam beradi.
Portativ: Ko’plab kompilyatorlar tomonidan qo’llaniladi va ko’plab arxitekturalarda
ishlaydi.
Inkremental paralellashtirish: Dasturda qo’shimcha paralellashtirishni o’rnatish
imkonini beradi.
Tarmoqda o’rta xotirani ishlatish uchun kam yoki hech qanday qo’shimcha o’zgarishni
qo’shish orqali dasturda paralelllikni o’rnatish mumkin.
Keng tarqalgan jamoa tomonidan qo’llaniladi.
OpenMP bilan dasturni paralellashtirish:
Asosiy qadamlar:
Dasturchi kompilyatorga kodi paralellashtirish uchun pragmalarni qo’shadi.
Kod kerakli baytlar bilan kompilyatsiya qilinadi (masalan, gcc uchun -fopenmp).
Kompilyator kerakli kod o’zgarishlarini va kutubxonalarni chaqiradi.
Generatsiya qilingan bajariladigan faylni ishga tushirish mumkin.
OpenMP vs pthreads:
Pthreads:
Past darajadagi API: Dasturchi istagan narsani qilish imkoniyatiga ega.
OpenMP:
Biz odatda faqatgina biror siklni paralellashtirishni xohlaysiz.
Pragmalarni ishlatish orqali bu oson amalga oshiriladi.
Bazan bir qatorni o’zgartirish bilan katta tezlikni olishimiz mumkin.
Pragma ishlatish odatda oson emas, lekin kompilyatorning qanday ishlayotganini
aniqlash qiyin bo’lishi mumkin.
Nima uchun OpenMP kerak?
Sikl paralellashtirish:
Kompilyator to’liq avtomatik ravishda paralellashtirishni amalga oshira olmaydi.
Download