1-bo‘lim

Arxitektura nima va u qayerdan kelgan?

Fon Neyman arxitekturasi, saqlanuvchi dastur g'oyasi, uni kim o'ylab topgani va nima uchun bugungi kompyuterlar hali ham shunday qurilgan.

🕑 8 daqiqa o‘qish 📄 1 127 so‘z 👁 1 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. Arxitektura nima?
  2. Saqlanuvchi dastur g'oyasi
  3. Kutilmagan oqibat: dastur o'zini o'zgartira oladi
  4. Kim o'ylab topgan?
  5. Qisqacha tarix
  6. Xulosa

Yozgan kodingiz - if, for, funksiyalar - oxir-oqibat sonlarga aylanadi. O'sha sonlar xotirada yotadi va protsessor ularni birin-ketin o'qib bajaradi.

Bu darslik o'sha qatlamni ochib beradi.

Arxitektura nima? #

Arxitektura - bu dasturchi ko'radigan mashina: qanday komandalar bor, nechta registr bor, xotira qanday manzillanadi.

Uni amalga oshirish (mikroarxitektura) esa boshqa narsa - o'sha va'dani temirda qanday bajarish.

ArxitekturaAmalga oshirish
Nima belgilaydiNima qilinadiQanday qilinadi
Kim ko'radiDasturchiMuhandis
O'zgaradimiKamdan-kamHar avlodda
Misolx86-64 komandalar to'plamiIntel va AMD chiplari

Shuning uchun 2010-yilda yozilgan dastur bugungi protsessorda ham ishlaydi: arxitektura o'zgarmadi, faqat uning ichki tuzilishi o'zgardi.

"Arxitektura" so'zi qayerdan kelgan

Yunoncha arkhitekton - "bosh quruvchi" (arkhi - bosh, tekton - duradgor).

Kompyuterga bu so'zni 1964-yilda IBM muhandislari olib kirishgan: ular System/360 oilasini e'lon qilganda, turli quvvatdagi mashinalar bir xil komandalar to'plamini bajarishi kerakligini ta'kidlash uchun aynan shu so'zni tanlashdi.

O'shanda birinchi marta "arxitektura" va "amalga oshirish" ataylab ajratildi. Bugungi butun sanoat shu ajratishga tayanadi.

Saqlanuvchi dastur g'oyasi #

Bugun bu oddiy tuyuladi, lekin 1940-yillarda inqilobiy edi: dastur ham, ma'lumot ham bitta xotirada saqlanadi.

Undan oldingi mashinalarda dasturni o'zgartirish uchun simlarni qayta ulash kerak edi. ENIAC ni yangi masalaga moslash bir necha kun davom etardi.

Fon Neyman arxitekturasi Xotira dastur ma'lumot bitta shina Protsessor Boshqaruv qurilmasi ALU Registrlar Kirish Chiqish Asosiy g'oya: dastur ham xotirada, ma'lumot kabi Shuning uchun dasturni almashtirish - simlarni emas, xotirani o'zgartirish
Deyarli barcha zamonaviy kompyuterlar shu sxema bo'yicha qurilgan

Saqlanuvchi dastur qanday ko'rinishini bir misolda ko'ramiz.

Kichkina bir mashinani tasavvur qilamiz. Uning xotirasida ham dastur, ham ma'lumot yonma-yon turadi:

Bitta xotira - ikki xil mazmun XOTIRA 0 KIRIT 10 1 QOSH 11 2 SAQLA 12 3 TOXTA 4 - 9 bo'sh 10 7 11 5 12 bo'sh - natija shu yerga DASTUR MA'LUMOT NATIJA AKKUMULYATOR bitta ish soni KO'RSATKICH keyingi komanda manzili Fon Neymanning butun g'oyasi shu Ko'k va yashil kataklar - bir xil xotiraning bir xil kataklari Ularni ajratib turadigan yagona narsa - mashina ularga QANDAY qarashi Shuning uchun dastur o'z-o'zini o'zgartira oladi
Dastur va ma'lumot bir xotirada - zamonaviy kompyuterlarning asosi

Mashinani ishga tushirsak, u shunday qadam tashlaydi:

QadamKo'rsatkichKomandaAkkumulyator
10KIRIT 100
21QOSH 117
32SAQLA 1212
43TOXTA12

Natija: 12-katakda 12 paydo bo'ldi, ya'ni 7 + 5. Mashina to'rtta komandani bajardi va to'xtadi.

Mana shu - kompyuterning butun mohiyati. Qolgan hamma narsa shuning tezroq va qulayroq shakli.

Ko'rsatkich - bu keyingi bajariladigan komandaning manzili. Uni komanda ko'rsatkichi deb atashadi. Har qadamda u bittaga oshadi - haqiqiy protsessor ham aynan shunday ishlaydi.

Bu modelga qaytib turing

Darslik davomida murakkab tushunchalar ko'p bo'ladi: kesh, konveyer, SIMD, uzilishlar.

Ularning hammasi shu asosiy uch qadamning tezligini oshirish uchun o'ylab topilgan:

  1. Ko'rsatkich ko'rsatayotgan katakdan komandani o'qi.
  2. Ko'rsatkichni bittaga oshir.
  3. Komandani bajar.

Va boshidan.

Adashib qolsangiz, shu uch qadamni eslang va "bu qanday qilib o'sha halqani tezlashtiradi?" deb so'rang. Javob deyarli har doim topiladi.

Kutilmagan oqibat: dastur o'zini o'zgartira oladi #

Dastur ham xotirada yotgani uchun, unga ma'lumot kabi munosabatda bo'lish mumkin - ya'ni uni o'zgartirish mumkin.

Dastur ishlayotganda 1-katakdagi komandani o'zgartirib ko'ramiz:

1-katakda nima turibdiNatija
BoshidaQOSH 1112 (ya'ni 7 + 5)
O'zgartirilgandan keyinKOPAYTIR 1135 (ya'ni 7 × 5)

Dastur o'z kodini ma'lumot kabi o'zgartirdi va boshqacha ishlay boshladi.

Bu qulaylik ham, xavf ham

Kodni ma'lumot kabi o'zgartira olish kuchli imkoniyat. Kompilyatorlar, virtual mashinalar va JIT tarjimonlar aynan shunga tayanadi: kodni ish vaqtida yaratib, keyin uni bajaradi.

Lekin hujumchi uchun ham xuddi shu eshik ochiq: agar u xotiraga o'z baytlarini yozib, protsessorni ularni komanda deb o'qishga majburlasa, mashina uniki bo'ladi.

Shuning uchun zamonaviy tizimlarda himoya qo'yilgan:

ChoraNima qiladi
NX / DEPMa'lumot sohasidagi baytlarni bajarishni taqiqlaydi
W^XXotira bo'lagi yo yoziladigan, yo bajariladigan - ikkalasi emas
ASLRManzillarni har ishga tushirishda aralashtiradi

Fon Neyman arxitekturasining eng kuchli tomoni, ayni paytda, eng zaif joyi ham bo'lib chiqdi.

Kim o'ylab topgan? #

EDVAC

Yanosh fon Neyman (1903-1957)

Saqlanuvchi dastur arxitekturasining hujjatlashtiruvchisi. 1945-yilda "EDVAC haqidagi hisobot loyihasi" nomli qo'lyozmani yozdi. Unda dastur va ma'lumot bitta xotirada turishi tasvirlangan edi.

Vengriyada tug'ilgan, matematik. Kvant mexanikasi, o'yinlar nazariyasi va meteorologiyaga ham katta hissa qo'shgan.

Qo'lyozma tugallanmagan va faqat uning ismi bilan tarqalgan edi - shuning uchun g'oya bugun uning nomini oladi.

ENIAC

Jon Mokli (1907-1980) va Presper Ekert (1919-1995)

ENIAC ning yaratuvchilari. 1945-yilda dunyodagi birinchi umumiy maqsadli elektron kompyuterni ishga tushirishdi - 17 000 dan ortiq lampa, 27 tonna og'irlik.

Saqlanuvchi dastur g'oyasi ustida ham aynan ular ishlagan. Fon Neyman ularning jamoasiga qo'shilib, muhokamalarni hujjatga aylantirgan edi.

Nom faqat fon Neymanniki bo'lib qolgani bugun ham adolatsiz deb hisoblanadi - g'oya jamoaviy ish edi.

"Fon Neyman arxitekturasi" nomi to'liq adolatli emas

1945-yilgi qo'lyozmada faqat bitta ism bor edi - fon Neymanniki. Aslida esa unda Mokli, Ekert va butun ENIAC jamoasining muhokamalari bayon qilingan.

Qo'lyozma tugallanmagan holda tarqalib ketdi va nom shunday mustahkamlanib qoldi.

Ba'zi manbalarda shuning uchun "Prinston arxitekturasi" atamasi ishlatiladi - u ishlab chiqilgan joy nomi bilan.

Tarix ko'pincha shunday: g'oya jamoaniki bo'ladi, nom esa hujjatni yozganiga qoladi.

Qisqacha tarix #

Asosiy bosqichlar 1837 Bebbij mashinasi 1945 EDVAC hisoboti 1947 Tranzistor 1964 IBM System/360 1971 Intel 4004 2020 ARM ish stollarida 1964-yilda "arxitektura" va "amalga oshirish" birinchi marta ajratildi
Saqlanuvchi dastur g'oyasi 80 yildan beri o'zgarmagan
Garvard arxitekturasi - muqobil yo'l

Fon Neyman sxemasida dastur va ma'lumot bitta xotirada turadi. Garvard arxitekturasida esa ular alohida xotiralarda.

Fon NeymanGarvard
XotiraBittaIkkita alohida
Bir vaqtda o'qishYo'q - navbat bilanHa - ikkalasidan
Dastur o'zini o'zgartiradimiMumkinOdatda yo'q
Qayerda ishlatiladiKompyuter, telefonMikrokontroller, DSP

Qiziq tomoni: bugungi protsessorlar ikkalasini birga ishlatadi. Tashqi tomondan ular fon Neyman mashinasi, lekin ichkarida kesh dastur va ma'lumot uchun alohida bo'ladi (14-bo'limda ko'ramiz).

Arduino kabi mikrokontrollerlar esa toza Garvard mashinalari.

Amaliy topshiriq
  1. Xotira rasmini qog'ozga ko'chirib chizing.
  2. 10-katakda 9, 11-katakda 4 bo'lsa, 12-katakda nima paydo bo'ladi?
  3. Har qadam uchun ko'rsatkich qiymatini yozib chiqing.
  4. AYIR komandasi qo'shilsa, jadval qanday o'zgaradi?
  5. Uchta sonni qo'shish uchun dasturni qanday yozgan bo'lardingiz?
  6. SAQLA 12 o'rniga SAQLA 11 yozilsa nima bo'ladi?
  7. Nima uchun dastur o'z kodini o'zgartira olishini tushuntiring.
  8. Arxitektura va amalga oshirish farqini o'z so'zlaringiz bilan yozing.
  9. Fon Neyman va Garvard sxemalarini jadval qilib solishtiring.
  10. Telefoningiz protsessori qaysi arxitekturada ishlashini toping.

Xulosa #

  • Arxitektura - dasturchi ko'radigan mashina; amalga oshirish - uni temirda bajarish.
  • Bu ajratish 1964-yilda IBM System/360 bilan birga paydo bo'lgan.
  • Shuning uchun eski dastur yangi protsessorda ham ishlayveradi.
  • Saqlanuvchi dastur: dastur ham, ma'lumot ham bitta xotirada.
  • Undan oldin dasturni almashtirish uchun simlarni qayta ulash kerak edi.
  • Butun kompyuter mohiyati uch qatorga sig'adi: komandani ol, ko'rsatkichni oshir, bajar.
  • Keyingi bo'limlardagi kesh, konveyer va SIMD - hammasi shu halqani tezlashtirish uchun.
  • Dastur ma'lumot kabi o'zgartirilishi mumkin - bu JIT ning ham, hujumlarning ham asosi.
  • Shu sababli NX, W^X va ASLR himoyalari joriy qilingan.
  • G'oya jamoaviy edi: Mokli, Ekert va ENIAC jamoasi; nom esa hisobotni yozganiga qoldi.

Keyingi bo'limda eng pastki qatlamdan boshlaymiz: kompyuter sonlarni qanday yozadi.

Xatolik topdingizmi?

Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.