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.