Mundarija (23)
- Bu darsda
- 1. Nega bu kerak?
- 2. Hayotiy o'xshatish: oshpaz va oshxona
- 3. Ko'rsatmalar sikli: olish, dekodlash, bajarish
- 3.1 Ko'rsatma nima?
- 3.2 CPU ichidagi uchta asosiy qism
- 3.3 Sikl qanday aylanadi?
- 4. Takt chastotasi (GHz) va yadrolar
- 4.1 Takt chastotasi
- 4.2 Yadro
- 5. 32-bit va 64-bit: farqi nimada?
- 6. x86 va ARM: ikki xil protsessor oilasi
- 7. Mashina kodi va sizning dasturingiz
- 8. Ko'p uchraydigan xatolar
- 8.1 Protsessorni faqat GHz bo'yicha tanlash
- 8.2 "Yadro ko'p — hamma dastur tez" deb o'ylash
- 8.3 Noto'g'ri versiyani yuklab olish
- 9. Mashqlar
- 1-mashq (oson): Takt hisoblash
- 2-mashq (o'rta): 32-bit chegarasi
- 3-mashq (qiyin): Yadrolar va vaqt
- 10. Real ishda
- Xulosa
CPU: kompyuterning miyasi — protsessor qanday ishlaydi
Qisqacha: Protsessor (CPU) dastur ko'rsatmalarini birma-bir oladi, nima ekanini aniqlaydi va bajaradi. Bu sikl soniyasiga milliardlab marta takrorlanadi — GHz shuni bildiradi. Zamonaviy protsessorda bir nechta yadro bor: har biri alohida ishni bir vaqtda bajara oladi.
Bu darsda
- Protsessor ko'rsatmani qanday uch qadamda bajarishini (olish, dekodlash, bajarish) tushunasiz.
- Do'kondagi "3.2 GHz, 8 yadro" yozuvini o'qiy olasiz.
- 32-bit va 64-bit farqini hamda 4 GB chegarasi qayerdan kelishini bilasiz.
- x86 va ARM farqini va dastur yuklab olishda qaysi versiyani tanlashni bilasiz.
- Mashina kodi nima ekanini va sizning kodingiz qanday qilib unga aylanishini ko'rasiz.
Oldin bilishingiz kerak: Kompyuter nima: apparat va dastur, Nega 0 va 1: ikkilik sanoq sistemasi, O'n oltilik sanoq sistemasi.
1. Nega bu kerak?
Kompyuter nima darsida CPU ni oshpazga o'xshatdik: u hisoblaydi va ko'rsatmalarni bajaradi. Endi bu oshpaz aslida qanday ishlashini ko'ramiz.
Brauzer, o'yin, Telegram — qaysi dasturni ochmang, uning har bir harakati oxir-oqibat CPU orqali o'tadi. CPU bo'lmasa, xotiradagi baytlar shunchaki jim turgan raqamlar bo'lib qolardi.
Bu bilim sizga amalda ham kerak bo'ladi:
- Noutbuk tanlaganda "Intel Core i5, 3.2 GHz, 8 yadro" yozuvini tushunasiz.
- Dastur yuklab olayotganda "x64 yoki ARM64?" savoliga to'g'ri javob berasiz.
- Keyinchalik kodingiz nega sekin ishlayotganini tushunishga poydevor bo'ladi.
2. Hayotiy o'xshatish: oshpaz va oshxona
Oldingi darslardagi oshxonaga qaytamiz:
- Oshpaz — CPU. U retseptdagi qadamlarni birma-bir bajaradi.
- Retsept — dastur. Unda har bir qadam yozilgan.
- Ish stoli — RAM. Hozir kerakli masalliqlar va retsept shu yerda.
- Omborxona — disk. Hamma zaxira shu yerda.
Oshpaz bir paytda faqat bitta aniq ishni qiladi: sabzi to'g'raydi yoki suv quyadi. Lekin tasavvur qiling, u shunchalik tezki, soniyasiga milliardlab shunday mayda ishni bajaradi. CPU aynan shunday.
3. Ko'rsatmalar sikli: olish, dekodlash, bajarish
3.1 Ko'rsatma nima?
Ko'rsatma (instruction) — CPU bajara oladigan eng mayda buyruq. Masalan:
- "Mana bu ikki sonni qo'sh."
- "Natijani RAM'dagi falon joyga yoz."
- "Agar natija nol bo'lsa, boshqa ko'rsatmaga o'tib ket."
Har qanday dastur — millionlab shunday mayda ko'rsatmalar ketma-ketligi. Ular RAM'da tartib bilan turadi.
3.2 CPU ichidagi uchta asosiy qism
| Qism | Nima qiladi | Oshxonada |
|---|---|---|
| Registr | CPU ichidagi juda kichik va juda tez xotira katakchasi | Oshpazning qo'li |
| Boshqaruv bloki | Ko'rsatmani o'qib, nima qilish kerakligini aniqlaydi | Retseptni o'qiyotgan ko'z |
| ALU | Hisob-kitob va solishtirishni bajaradi | Pichoq va qozon |
ALU — "arifmetik-mantiqiy qurilma" (arithmetic logic unit) degani. Registrlar esa bor-yo'g'i bir necha o'nta. Ulardan biri doim "keyingi ko'rsatma RAM'ning qayerida turibdi" degan manzilni eslab turadi.
3.3 Sikl qanday aylanadi?
CPU to'xtovsiz uch qadamni takrorlaydi:
flowchart LR
A["1. Olish (fetch):<br/>RAM'dan keyingi ko'rsatma"] --> B["2. Dekodlash (decode):<br/>bu qanday buyruq?"]
B --> C["3. Bajarish (execute):<br/>ALU hisoblaydi"]
C -->|"keyingi ko'rsatma"| A- Olish (fetch): CPU navbatdagi ko'rsatmani RAM'dan olib, o'z ichiga — registrga yuklaydi.
- Dekodlash (decode): boshqaruv bloki bu 0 va 1 lar nimani anglatishini aniqlaydi. Masalan: "bu — qo'shish buyrug'i".
- Bajarish (execute): ALU amalni bajaradi — masalan, ikki sonni qo'shadi. Natija registrga yoki RAM'ga yoziladi.
Keyin CPU keyingi ko'rsatmaga o'tadi va hammasi yana boshidan boshlanadi. Bu uch qadam birgalikda ko'rsatmalar sikli (instruction cycle) deyiladi.
Muhim g'oya: CPU juda tez, lekin mohiyatan ketma-ket ishlaydi — bitta yadro ko'rsatmalarni birin-ketin bajaradi.
Tekshirib ko'ring: CPU ko'rsatmani qayerdan oladi? Uni kim "tushunadi", kim bajaradi?
Javob
Ko'rsatma RAM'dan olinadi (olish qadami). Uni boshqaruv bloki "tushunadi" (dekodlash), ALU esa bajaradi (masalan, qo'shadi). Oshxonada: oshpaz retseptdan qadamni o'qiydi, tushunadi, keyin pichoq bilan to'g'raydi.
4. Takt chastotasi (GHz) va yadrolar
Do'konda noutbuk ko'rsangiz, "3.2 GHz, 8 yadro" kabi yozuvlarni ko'rasiz. Keling, ularni o'qishni o'rganamiz.
4.1 Takt chastotasi
CPU ning ishi bir tekis ritmga bo'ysunadi — xuddi harbiylar "bir-ikki, bir-ikki" deb qadam tashlagandek. Bu ritmni kompyuter ichidagi maxsus "soat" (clock) beradi. Har bir zarb — bitta takt.
- 1 gers (Hz) — soniyasiga 1 takt.
- 1 gigagers (GHz) — soniyasiga 1 milliard takt.
Demak, 3.2 GHz protsessorda soniyasiga 3 milliard 200 million takt bo'ladi. Chastota qancha baland bo'lsa, bitta yadro shuncha tez ishlaydi.
Do'kondagi yozuvda ko'pincha ikki son bo'ladi: "3.2 GHz, turbo 5.0 GHz gacha". Birinchisi — odatiy tezlik. Ikkinchisi — qisqa vaqtga, og'ir ish paytida ko'tariladigan eng yuqori tezlik.
4.2 Yadro
Avvallari protsessorlar bitta yadroli bo'lgan va bir paytda faqat bitta ishni bajargan.
Yadro (core) — protsessor ichidagi mustaqil ishlay oladigan to'liq "mini-CPU". Har birida o'z ALU si va registrlari bor.
- 4 yadroli protsessor — oshxonada 4 ta oshpaz. Ular 4 ta ishni haqiqatan bir vaqtda bajaradi.
- 8 yadroli protsessor — 8 ta oshpaz.
Telefoningizdagi protsessor ham ko'p yadroli: odatda 8 ta.
Maslahat: Windows'da
Ctrl + Shift + Escbilan Task Manager'ni oching, Performance → CPU bo'limiga o'ting. U yerda protsessor nomi, tezligi (Speed), yadrolar soni (Cores) va Logical processors ko'rinadi. Oxirgisi ko'pincha yadrodan 2 barobar ko'p bo'ladi: bitta yadro ikki ishni navbatma-navbat juda tez almashtirib bajaradi. Bu haqda operatsion tizim darsida gaplashamiz.
JavaScript'da yozgan kodingiz odatda bitta yadroda ishlaydi. Bu nega muammo emasligini kursning JavaScript qismida ko'ramiz — hozircha buni bilish shart emas.
Tekshirib ko'ring: "2.5 GHz, 6 yadro" nimani bildiradi?
Javob
Protsessorda 6 ta mustaqil yadro bor — 6 ta ishni bir vaqtda bajara oladi. Har bir yadro soniyasiga 2.5 milliard takt bilan ishlaydi.
5. 32-bit va 64-bit: farqi nimada?
"64-bit" — protsessor bir martada 64 bitlik son bilan ishlay olishini bildiradi. Eng muhimi — xotira manzillari ham 64 bitlik bo'ladi.
RAM — mayda katakchalar to'plami: har bir bayt uchun bitta katakcha. Har bir katakchaning o'z manzili (tartib raqami) bor — xuddi ko'p qavatli uydagi xonadon raqamlari kabi. Manzil ham ikkilik son. Ikkilik sanoq sistemasi darsidan bilamiz: n bit bilan 2ⁿ xil son yoziladi.
- 32 bitlik manzil: 2³² = 4 294 967 296 xil manzil. Bu roppa-rosa 4 GiB.
- 64 bitlik manzil: 2⁶⁴ — taxminan 17 milliard gigabayt. Amalda cheksiz.
| Xususiyat | 32-bit | 64-bit |
|---|---|---|
| Bir martada ishlaydigan son | 32 bit (4 bayt) | 64 bit (8 bayt) |
| Ko'ra oladigan RAM | ko'pi bilan 4 GB | amalda cheksiz |
| Windows'dagi nomi | x86 | x64 (x86-64) |
Shuning uchun eski 32-bitli Windows'ga 16 GB RAM qo'ysangiz ham, u ko'pi bilan 4 GB ni ko'radi. Amalda hatto undan kam — taxminan 3–3.5 GB, chunki manzillarning bir qismi boshqa qurilmalarga band.
Bugun deyarli barcha kompyuter va telefonlar 64-bitli. Lekin Windows'da C:\Program Files (x86) papkasini ko'rasiz — u yerga eski 32-bitli dasturlar o'rnatiladi.
Maslahat: Kompyuteringiz qanday ekanini bilish uchun Windows'da Settings → System → About ni oching. System type qatorida, masalan, "64-bit operating system, x64-based processor" deb yozilgan bo'ladi.
Tekshirib ko'ring: Nega 32-bitli tizim 4 GB dan ortiq RAM'ni ishlata olmaydi?
Javob
Har bir bayt manzilga ega bo'lishi kerak. 32 bit bilan faqat 2³² ta manzil yozish mumkin — bu 4 GiB. Undan keyingi baytlarga "raqam" yetmaydi, protsessor ularga murojaat qila olmaydi.
6. x86 va ARM: ikki xil protsessor oilasi
Protsessorlar turli "tillarda" gaplashadi. Bitta oila tushunadigan ko'rsatmalar to'plami boshqasiga mos kelmaydi. Bugun ikki asosiy oila bor:
1. x86 (Intel va AMD):
- Stol kompyuterlari, ko'pchilik noutbuklar va serverlarda.
- Ko'rsatmalari ko'p va murakkab (bu yondashuv CISC deyiladi).
- Kuchli, lekin ko'proq tok yeydi va qiziydi.
2. ARM (telefonlar, Apple M-seriya, Qualcomm Snapdragon):
- Deyarli barcha telefon va planshetlarda.
- Ko'rsatmalari sodda va bir xil uzunlikda (bu yondashuv RISC deyiladi).
- Tokni kam yeydi, kam qiziydi, batareya uzoq yetadi.
- 2020-yildan beri Apple noutbuklari (M1, M2, M3, M4...) ARM'da ishlaydi. Endi ARM'li Windows noutbuklar va bulutdagi serverlar ham tobora ko'paymoqda.
Bu farq sizga dastur yuklab olishda kerak bo'ladi. Ko'p saytlar bir nechta versiya taklif qiladi:
| Yozuv | Kimga |
|---|---|
| x64 (yoki x86-64, AMD64) | Intel yoki AMD protsessorli 64-bitli kompyuter |
| ARM64 (yoki Apple Silicon) | ARM protsessorli kompyuter, M-seriyali Mac |
| x86 (yoki 32-bit) | Eski 32-bitli kompyuter — bugun kam uchraydi |
Tekshirib ko'ring: Nega telefonlarda deyarli doim ARM protsessor ishlatiladi?
Javob
Telefon batareyada ishlaydi va uning ichida sovutgich (ventilyator) yo'q. ARM protsessorlar tokni kam sarflaydi va kam qiziydi — telefon uchun aynan shu kerak.
7. Mashina kodi va sizning dasturingiz
CPU JavaScript yoki Python kodini to'g'ridan-to'g'ri o'qiy olmaydi. U faqat mashina kodi (machine code) ni tushunadi — 0 va 1 lardan iborat ko'rsatmalarni.
Masalan, x86 protsessorida "ikki registrdagi sonni qo'sh" ko'rsatmasi mana bunday ikki bayt:
Ikkilikda: 00000001 11011000
Hex'da: 01 D8Ko'ryapsizmi, hex darsidagi qisqa yozuv bu yerda ham qo'l keldi. Odamlar bunday baytlarni o'qishi qiyin, shuning uchun ularning "odamcha" yozuvi o'ylab topilgan — assembler tili (assembly). Unda o'sha ko'rsatma add eax, ebx deb yoziladi.
Siz esa kodni ancha tushunarli tilda yozasiz. Masalan, JavaScript'da (buni keyinroq o'rganamiz, hozir faqat qarang):
const yigindi = 5 + 3;
console.log(yigindi); // 8Bu "5 va 3 ni qo'shib, natijani yigindi degan nom bilan eslab qol, keyin ekranga chiqar" degani. Uni ishga tushirganingizda maxsus dastur — JavaScript dvigateli (engine) — kodni mashina kodiga tarjima qiladi. Chrome brauzeri va Node.js ichidagi dvigatel V8 deb ataladi. Taxminan mana bunday mayda qadamlar hosil bo'ladi:
- 5 sonini registrga yukla.
- Unga 3 ni qo'sh.
- Natijani RAM'dagi joyga yoz.
Har qanday murakkab dastur — o'yin ham, Telegram ham — oxir-oqibat shunday mayda qadamlardan tuzilgan. Dvigatellarni brauzer tuzilishi darsida batafsil ko'ramiz.
8. Ko'p uchraydigan xatolar
8.1 Protsessorni faqat GHz bo'yicha tanlash
Ko'pchilik 3.5 GHz protsessor har doim 2.5 GHz lidan kuchli deb o'ylaydi. Aslida tezlik yana bir necha narsaga bog'liq: yadrolar soni, kesh hajmi (keyingi darsda) va har bir taktda nechta ko'rsatma bajarilishi. Zamonaviy protsessorlar bir taktda bir nechta ko'rsatmani bajara oladi. Shuning uchun yangi 2.5 GHz protsessor 10 yil oldingi 3.5 GHz lisidan ancha tez bo'lishi mumkin.
Protsessorlarni solishtirishda GHz emas, avlodi va test natijalariga qarang.
8.2 "Yadro ko'p — hamma dastur tez" deb o'ylash
Dastur bitta yadroda ishlashga yozilgan bo'lsa, 16 yadro ham unga yordam bermaydi. U baribir bitta yadroni ishlatadi, qolganlari boshqa dasturlar bilan band bo'ladi. Ko'p yadrodan foydalanish uchun dastur ishni bo'laklarga bo'lib yozilgan bo'lishi kerak.
8.3 Noto'g'ri versiyani yuklab olish
Intel protsessorli Windows'ga ARM64 versiyani o'rnatsangiz (yoki aksincha), Windows shunday xabar beradi:
This app can't run on your PCTarjimasi: "Bu ilova kompyuteringizda ishlay olmaydi". Sababi — dastur boshqa protsessor "tilida" yozilgan. Yechim: Settings → System → About dan protsessor turini ko'rib, mos versiyani yuklab oling.
9. Mashqlar
1-mashq (oson): Takt hisoblash
Protsessor 2.5 GHz chastotada ishlaydi. U bir soniyada necha milliard takt beradi?
Javob: milliard takt.
Yechim
1 GHz = soniyasiga 1 milliard takt. Demak, 2.5 GHz — soniyasiga 2.5 milliard takt.
2-mashq (o'rta): 32-bit chegarasi
32-bitli operatsion tizimli kompyuterga 16 GB RAM o'rnatildi. Tizim nazariy jihatdan bu xotiraning ko'pi bilan necha gigabaytini ko'ra oladi?
Javob: GB.
Yechim
32-bitli tizimda manzillar soni 2³² ta — bu 4 GiB. Qolgan 12 GB ga "manzil" yetmaydi. Amalda Windows hatto 3–3.5 GB ni ko'rsatadi, chunki manzillarning bir qismi videokarta kabi qurilmalarga band. Yechim — 64-bitli tizim o'rnatish.
3-mashq (qiyin): Yadrolar va vaqt
Hisobni soddalashtiramiz: protsessor har taktda bitta ko'rsatma bajaradi. Dastur 12 milliard ko'rsatma bajarishi kerak. Protsessor — 3 GHz, 4 yadro.
- Bitta yadroda dastur necha soniya ishlaydi?
- Agar dastur ishni 4 ta teng bo'lakka bo'lib, 4 yadroda bajara olsa-chi?
- Agar dastur faqat bitta yadroda ishlashga yozilgan bo'lsa-chi?
Yechim
- 3 GHz = soniyasiga 3 milliard ko'rsatma. 12 milliard ÷ 3 milliard = 4 soniya.
- Har bir yadroga 3 milliard ko'rsatma tushadi. 3 milliard ÷ 3 milliard = 1 soniya. To'rt oshpaz bir vaqtda ishlab, ishni 4 barobar tez tugatdi.
- Yana 4 soniya. Qolgan 3 yadro bo'sh turadi, chunki dastur ishni bo'la olmaydi. Bu — "yadro ko'p — hamma dastur tez" degan xatoning raqamlardagi ko'rinishi.
10. Real ishda
- Server tanlash. Bulutdagi server tariflari "2 vCPU", "4 vCPU" deb yoziladi. vCPU — sizga ajratilgan yadro (aniqrog'i, mantiqiy protsessor). Node.js'da yozilgan serverni bir nechta yadroda ishlatish usullarini backend qismida o'rganamiz.
- To'g'ri versiya. Node.js, VS Code, Docker kabi vositalarni o'rnatganda x64 va ARM64 ni farqlaysiz. M-seriyali Mac'da ishlaydigan dasturchi bunga har kuni duch keladi.
- Tezlik haqida fikrlash. "Bu kod 1 milliard marta aylansa, taxminan qancha vaqt oladi?" degan savolga taxminiy javob bera olish — tajribali dasturchining belgisi. Endi sizda buning poydevori bor: soniyasiga milliardlab ko'rsatma.
- Intervyu savollari: "32-bit va 64-bit farqi nima?", "Yadro va oqim farqi nima?" (oqimni operatsion tizim darsida ko'ramiz).
Xulosa
- CPU ko'rsatmalarni olish → dekodlash → bajarish siklida, birma-bir bajaradi.
- Registr — CPU ichidagi mitti tez xotira, boshqaruv bloki — buyruqni tushunadi, ALU — hisoblaydi.
- GHz — soniyasiga necha milliard takt. Yadro — bir vaqtda ishlaydigan alohida "oshpaz".
- 32-bit tizim ko'pi bilan 4 GB RAM ko'radi, 64-bit uchun bu chegara amalda yo'q.
- x86 (Intel, AMD) va ARM (telefonlar, Apple M) — turli ko'rsatmalar tili. Dasturning mos versiyasini (x64 yoki ARM64) yuklab oling.
- CPU faqat mashina kodini tushunadi. JavaScript kodini unga dvigatel (masalan, V8) tarjima qiladi.
Keyingi dars: Xotira ierarxiyasi: registrdan diskkacha — nega tez CPU ko'pincha ma'lumot kutib o'tiradi va kesh bu muammoni qanday hal qiladi.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!