Mundarija (25)
- Bu darsda
- 1. Nega bu kerak?
- 2. Xotira zinapoyasi
- 2.1 Pog'onalar
- 2.2 Kesh nima?
- 3. Latentlik: qancha kutish kerak?
- 3.1 Juda kichik vaqt birliklari
- 3.2 Odam vaqtida tasavvur qilamiz
- 4. Oshpaz o'xshatishi
- 5. Kesh qaysi ma'lumotni saqlashni qanday biladi?
- 5.1 Vaqt bo'yicha yaqinlik
- 5.2 Joy bo'yicha yaqinlik
- 5.3 Topildi yoki topilmadi
- 6. RAM to'lib qolsa nima bo'ladi?
- 7. Keshlash — butun dasturlash g'oyasi
- 8. Ko'p uchraydigan xatolar
- 8.1 Faqat RAM hajmiga qarash
- 8.2 "O'zgartirdim, lekin saytda eskisi ko'rinyapti"
- 8.3 Keshni asl saqlash joyi deb o'ylash
- 9. Mashqlar
- 1-mashq (oson): Tezlik farqi
- 2-mashq (o'rta): Kesh atamalari
- 3-mashq (qiyin): O'rtacha kutish vaqti
- 10. Real ishda
- Xulosa
Xotira ierarxiyasi: registrdan diskkacha — kesh nega hamma joyda
Qisqacha: Kompyuter xotirasi zinapoyaga o'xshaydi: yuqoridagilar (registr, kesh) juda tez, lekin kichik va qimmat; pastdagilar (RAM, disk, internet) katta va arzon, lekin sekin. Shuning uchun tez-tez kerak bo'ladigan narsaning nusxasi tez joyda saqlanadi — bu keshlash. Bu g'oya protsessordan tortib brauzer va Telegram'gacha hamma joyda ishlaydi.
Bu darsda
- Xotira nega bitta emas, bir nechta pog'onadan iborat ekanini tushunasiz.
- Registr, kesh, RAM, SSD va HDD tezligidagi farqni "odam vaqti"da his qilasiz.
- Latentlik nima ekanini va nanosekund, millisekund birliklarini bilasiz.
- Kesh qaysi ma'lumotni saqlashni qanday "taxmin qilishini" tushunasiz.
- Keshlash g'oyasini brauzer, Telegram va serverlarda taniy olasiz.
Oldin bilishingiz kerak: CPU: kompyuterning miyasi, Kompyuter nima: apparat va dastur.
1. Nega bu kerak?
CPU darsida protsessor soniyasiga milliardlab ko'rsatma bajarishini ko'rdik. Lekin bitta muammo bor: ma'lumot o'z vaqtida yetib kelmasa, CPU bekor kutib o'tiradi.
Oshpazni eslang. U qanchalik chaqqon bo'lmasin, har bir piyoz uchun omborxonaga yugursa, ovqat soatlab pishadi.
RAM diskdan ancha tez. Lekin zamonaviy CPU uchun hatto RAM ham sekin: RAM'dan javob kelguncha CPU yuzlab takt bekor turishi mumkin.
Unda nega hamma xotirani eng tez turdan yasamaymiz? Chunki eng tez xotira juda qimmat va ko'p joy egallaydi. Muhandislar bu muammoni ierarxiya — xotira zinapoyasi bilan hal qilishgan.
2. Xotira zinapoyasi
2.1 Pog'onalar
Yuqoridan pastga qarab har bir pog'ona sekinroq, lekin kattaroq va arzonroq:
flowchart TB
R["Registrlar: bir necha yuz bayt"] --> L["Kesh L1, L2, L3: KB dan o'nlab MB gacha"]
L --> M["RAM: 8–64 GB"]
M --> S["SSD yoki HDD: 256 GB – bir necha TB"]
S --> N["Internet va bulut: deyarli cheksiz"]- Registrlar — CPU yadrosining o'zi ichida. Bor-yo'g'i bir necha o'nta katakcha, lekin eng tez.
- Kesh (L1, L2, L3) — protsessor chipi ichidagi tez xotira. Uch darajasi bor: L1 eng kichik va eng tez (har yadroda o'nlab KB), L2 kattaroq (1–3 MB), L3 eng katta va barcha yadrolar uchun umumiy (8–100 MB).
- RAM — ishlab turgan dasturlar turadigan asosiy tezkor xotira.
- SSD yoki HDD — doimiy saqlash joyi. Tok o'chsa ham ma'lumot qoladi.
- Internet — boshqa kompyuterdagi (serverdagi) ma'lumot. Kabel va havo orqali keladi, shuning uchun eng uzoq kutiladi.
2.2 Kesh nima?
Bu darsning asosiy so'zi — kesh (cache). Kesh — tez-tez kerak bo'ladigan narsaning yaqin va tez joydagi nusxasi.
Hayotdan misol: har kuni ishlatadigan kalitingizni sumkangizda olib yurasiz. Zaxira kalit esa uyda, shkafda turadi. Sumkadagi kalit — kesh: tez olinadi, lekin asl nusxa baribir boshqa joyda.
CPU keshi ham shunday: u RAM'dagi ma'lumotning eng ko'p kerak bo'layotgan qismini o'zining yonida ushlab turadi.
Nega kesh qimmat? Keshdagi har bir bitni saqlash uchun oltitacha tranzistor kerak. RAM'da esa bitta tranzistor va bitta mitti "batareyacha" (kondensator) yetadi. Shuning uchun kesh tezroq, lekin bir xil hajm uchun ancha ko'p joy va pul talab qiladi.
Tekshirib ko'ring: Nega kompyuterda faqat eng tez xotira ishlatilmaydi?
Javob
Eng tez xotira (kesh) juda qimmat va ko'p joy egallaydi: har bir bit uchun ko'p tranzistor kerak. 16 GB keshli kompyuter narxi haddan tashqari qimmat bo'lardi. Shuning uchun oz miqdordagi tez xotira ko'p miqdordagi sekin va arzon xotira bilan birga ishlatiladi.
3. Latentlik: qancha kutish kerak?
3.1 Juda kichik vaqt birliklari
Latentlik (latency) — so'rov yuborilgandan javob kelguncha o'tgan vaqt. Masalan, CPU "menga shu ma'lumotni ber" dedi — javob qancha vaqtda keladi?
Kompyuter ichidagi vaqtlar juda kichik. Ularni o'lchash uchun maxsus birliklar bor:
| Birlik | Belgisi | Qancha |
|---|---|---|
| millisekund | ms | soniyaning mingdan bir qismi |
| mikrosekund | µs | millisekundning mingdan bir qismi |
| nanosekund | ns | mikrosekundning mingdan bir qismi |
Ya'ni 1 soniyada 1 milliard nanosekund bor.
3.2 Odam vaqtida tasavvur qilamiz
Nanosekundlarni his qilish qiyin. Keling, o'yin o'ynaymiz: 1 nanosekundni 1 soniya deb olamiz va hamma vaqtlarni shu nisbatda cho'zamiz:
| Qayerdan olinadi | Haqiqiy vaqt | 1 ns = 1 soniya bo'lsa |
|---|---|---|
| Registr | ~0.3 ns | Ko'z ochib-yumguncha |
| L1 kesh | ~1 ns | 1 soniya |
| L2 kesh | ~4 ns | 4 soniya |
| L3 kesh | ~10–20 ns | 10–20 soniya |
| RAM | ~80–100 ns | Bir yarim daqiqa |
| SSD | ~50–100 µs | Taxminan bir kun |
| HDD | ~5–10 ms | 2–4 oy |
| Boshqa davlatdagi server | ~50–100 ms | 1.5–3 yil |
Endi farqni his qilyapsizmi? CPU uchun L1 keshdan ma'lumot olish — 1 soniya. RAM'dan — bir yarim daqiqa kutish. SSD'dan — butun bir kun. Internetdagi server javobi esa yillar!
Raqamlar protsessor va diskka qarab o'zgaradi, shuning uchun ularni "taxminiy tartib" deb qabul qiling. Asosiysi — har pog'ona orasidagi o'nlab va minglab barobar farq.
Maslahat: Latentlikni o'tkazuvchanlik (bandwidth) bilan adashtirmang. Latentlik — birinchi javob qancha kutilishi. O'tkazuvchanlik — soniyasiga qancha ma'lumot oqib kelishi. Katta quvur (o'tkazuvchanlik) uzun bo'lishi (latentlik) mumkin. Bu haqda tarmoq darsida gaplashamiz.
Tekshirib ko'ring: RAM va SSD latentligi taxminan necha barobar farq qiladi?
Javob
RAM ~100 ns, SSD ~100 µs = 100 000 ns. Demak, taxminan 1000 barobar. Shuning uchun CPU ma'lumotni diskdan emas, RAM'dan oladi — dastur ishga tushganda avval RAM'ga yuklanadi.
4. Oshpaz o'xshatishi
Oldingi darslardagi oshxonaga qaytamiz. Endi pog'onalar ko'proq:
- Registr — oshpazning qo'lidagi narsa. Allaqachon ushlab turibdi.
- L1 va L2 kesh — ro'parasidagi taxtakach. Qo'l cho'zsa yetadi.
- L3 kesh — yonidagi tokcha. Bir burilib olsa bo'ladi.
- RAM — oshxonadagi umumiy ish stoli. Bir necha qadam yurish kerak.
- SSD yoki HDD — hovlidagi omborxona. Borib, eshikni ochib, olib kelish kerak.
- Internet — boshqa shahardagi bozor. Buyurtma berib, kunlab kutasiz.
Tajribali oshpaz tuz, yog' va pichoqni doim qo'l ostida saqlaydi. Omborxonaga esa kuniga bir marta boradi va kerakli hamma narsani birdan olib keladi. Kompyuter ham aynan shunday ishlaydi.
5. Kesh qaysi ma'lumotni saqlashni qanday biladi?
Kesh kichik. Unda hamma narsa sig'maydi. U kelajakda nima kerak bo'lishini qanday "taxmin qiladi"? Ikki oddiy kuzatuvga tayanadi.
5.1 Vaqt bo'yicha yaqinlik
Hozir ishlatilgan narsa tez orada yana ishlatilishi ehtimoli katta. Inglizcha nomi — temporal locality.
Hayotdan misol: telefoningizda so'nggi ochilgan ilovalar ro'yxati bor. Chunki bugun ochgan ilovangizni yana ochishingiz ehtimoli katta.
Dasturda ham shunday: bir xil qadamlar qayta-qayta bajariladi. Masalan, 1000 ta mahsulot narxini qo'shish uchun "qo'sh" ko'rsatmasi 1000 marta takrorlanadi. U keshda tursa, har safar RAM'ga borish shart emas.
5.2 Joy bo'yicha yaqinlik
Biror joydan ma'lumot o'qilsa, yonidagi ma'lumot ham tez orada kerak bo'ladi. Inglizcha nomi — spatial locality.
Hayotdan misol: kitobning 15-sahifasini o'qiyapsiz. Keyingi daqiqada sizga 16-sahifa kerak bo'lishi aniq.
Shuning uchun CPU RAM'dan bitta bayt so'rasa, uning yonidagi 64 baytni ham birato'la keshga olib keladi. Bu 64 baytlik bo'lak kesh qatori (cache line) deyiladi. Ro'yxatdagi narsalar xotirada yonma-yon turadi — keyingisi allaqachon keshda bo'ladi.
5.3 Topildi yoki topilmadi
- Kesh hit (cache hit, "tegdi") — kerakli ma'lumot keshda bor. Tez!
- Kesh miss (cache miss, "tegmadi") — keshda yo'q, RAM'ga borishga to'g'ri keladi. Sekin.
Yaxshi ishlaydigan tizimda so'rovlarning 90–99 foizi kesh hit bo'ladi.
Tekshirib ko'ring: Siz YouTube'da serialning 3-qismini ko'ryapsiz. Ilova 4-qismning boshini oldindan yuklab qo'ydi. Bu qaysi yaqinlikka o'xshaydi?
Javob
Joy bo'yicha yaqinlikka: "hozirgisining yonidagi narsa ham kerak bo'ladi". 3-qismdan keyin 4-qism ko'rilishi ehtimoli katta, xuddi kitobda 15-sahifadan keyin 16-sahifa o'qilgani kabi.
6. RAM to'lib qolsa nima bo'ladi?
Kompyuter nima darsida RAM to'lsa, kompyuter qotib qolishini aytgan edik. Endi sababini raqamlarda ko'ra olamiz.
RAM'ga sig'magan ma'lumotni operatsion tizim vaqtincha diskka ko'chiradi. Windows'da bu sahifa fayli (pagefile), Linux va macOS'da swap deyiladi.
Lekin disk RAM'dan taxminan 1000 barobar sekin. Bir yarim daqiqalik ish birdan bir kunlik ishga aylanadi. Natijada sichqoncha sakraydi, oynalar qotadi. Bu — xotira zinapoyasini pastga "tushib ketish" ning narxi.
7. Keshlash — butun dasturlash g'oyasi
Kesh faqat protsessorda emas. Uning g'oyasi bitta gapga sig'adi:
Maslahat: Sekin yoki qimmat ish natijasini bir marta olib, tez joyda saqlab qo'ying. Keyingi safar tayyorini bering.
Bu g'oya har qadamda uchraydi:
- Brauzer keshi. Sayt logotipi va rasmlari birinchi kirishda diskka saqlanadi. Qayta kirganingizda ular internetdan emas, diskdan olinadi — sahifa tezroq ochiladi.
- Telegram keshi. Siz ko'rgan rasm va videolar telefonda saqlanadi. Shuning uchun Telegram gigabaytlab joy egallashi mumkin. Uni Settings → Data and Storage → Storage Usage bo'limida tozalasa bo'ladi — xabarlaringiz yo'qolmaydi, ular serverda turadi.
- CDN (content delivery network). Katta saytlar fayllarining nusxasini dunyo bo'ylab ko'plab serverlarga tarqatadi. Toshkentdagi foydalanuvchiga fayl Amerikadan emas, eng yaqin serverdan keladi.
- Server keshi. Ko'p odam bir xil narsani so'rasa (masalan, bugungi valyuta kursi), server uni har safar bazadan qidirmaydi. Javobni RAM'da saqlab turadi.
Keshning ham o'z muammolari bor:
- Eski ma'lumot. Asl ma'lumot o'zgarsa, keshdagi nusxa eskirib qoladi. Uni o'z vaqtida yangilash kerak.
- Joy chegarasi. Kesh to'lsa, biror narsani chiqarib tashlash kerak. Odatda eng uzoq vaqt ishlatilmagan narsa chiqariladi.
8. Ko'p uchraydigan xatolar
8.1 Faqat RAM hajmiga qarash
Ko'pchilik kompyuter tanlaganda faqat "RAM necha GB?" deb so'raydi. RAM hajmi bir vaqtda nechta dastur ochiq turishini belgilaydi. Lekin protsessorning tez ishlashida kesh hajmi ham katta rol o'ynaydi. Shuning uchun qimmat protsessorlarda L3 kesh kattaroq bo'ladi.
8.2 "O'zgartirdim, lekin saytda eskisi ko'rinyapti"
Veb-dasturchilarning eng ko'p uchraydigan holatlaridan biri. Siz rasmni yoki kodni o'zgartirdingiz, sahifani yangiladingiz — lekin eski holat ko'rinyapti. Ko'pincha sabab — brauzer keshi: brauzer eski nusxani ko'rsatyapti.
Yechim: sahifani keshsiz yangilash. Windows'da Ctrl + F5 yoki Ctrl + Shift + R, macOS'da Cmd + Shift + R.
8.3 Keshni asl saqlash joyi deb o'ylash
Kesh — faqat nusxa. U istalgan payt tozalanishi mumkin. Muhim ma'lumotni faqat keshda saqlab bo'lmaydi: asl nusxa har doim ishonchli joyda (disk, baza) turishi kerak.
9. Mashqlar
1-mashq (oson): Tezlik farqi
RAM latentligi ~100 ns, SSD latentligi ~100 µs. RAM SSD'dan taxminan necha barobar tez javob beradi?
Javob: barobar.
Yechim
100 µs = 100 × 1000 ns = 100 000 ns. 100 000 ÷ 100 = 1000. Odam vaqtida: bir yarim daqiqa va bir kun.
2-mashq (o'rta): Kesh atamalari
- CPU kerakli ma'lumotni L1 keshdan topa olmadi va RAM'ga murojaat qilishga majbur bo'ldi. Bu nima deyiladi? Javob: kesh
- Brauzer saytning logotipini diskdan oldi, internetdan yuklamadi. Bu kesh hit mi yoki miss mi?
Yechim
- Kerakli ma'lumot keshda yo'q — bu kesh miss.
- Bu kesh hit: logotip keshda (diskdagi brauzer keshida) bor edi, shuning uchun internetga borish kerak bo'lmadi.
3-mashq (qiyin): O'rtacha kutish vaqti
L1 kesh javobi 1 ns, RAM javobi 100 ns. 100 ta so'rovdan 90 tasi keshda topiladi (kesh hit), 10 tasi topilmaydi va RAM'dan olinadi.
- Bitta so'rov o'rtacha qancha vaqt oladi?
- Agar 100 tadan 99 tasi keshda topilsa-chi?
- Xulosa: kesh hitlar ulushini 90 foizdan 99 foizga oshirish tezlikni taxminan necha barobar oshiradi?
Yechim
- 90 ta so'rov × 1 ns = 90 ns. 10 ta so'rov × 100 ns = 1000 ns. Jami 1090 ns ÷ 100 = 10.9 ns o'rtacha.
- 99 × 1 = 99 ns. 1 × 100 = 100 ns. Jami 199 ns ÷ 100 = 1.99 ns.
- 10.9 ÷ 1.99 ≈ 5.5 barobar. Bor-yo'g'i 9 foizlik farq tezlikni 5 barobardan ko'proq oshirdi. Chunki har bir kesh miss juda qimmat. Dasturchilar keshni yaxshi ishlatishga shuning uchun katta e'tibor beradi.
10. Real ishda
- Backend: tez-tez so'raladigan ma'lumot (mahsulotlar ro'yxati, valyuta kursi) RAM'da ishlaydigan maxsus dasturda saqlanadi. Eng mashhuri — Redis. Uni backend qismida o'rganamiz.
- Frontend: saytni tez qilishning birinchi usuli — rasmlar va fayllar brauzer keshida to'g'ri saqlanishini sozlash. Buni HTTP va kesh darsida ko'ramiz.
- Katta loyihalar: keshni bir necha qatlamda qurish — brauzer, CDN, server, baza. Bu kesh qatlamlari darsida keladi.
- Dasturchilar orasida mashhur hazil bor: "Dasturlashda eng qiyin ikki narsa — keshni o'z vaqtida yangilash va narsalarga nom berish." Hazilning tagida haqiqat bor: eski kesh — ko'p xatolarning sababi.
Xulosa
- Xotira — zinapoya: registr → kesh (L1, L2, L3) → RAM → disk → internet. Pastga tushgan sari sekinroq, kattaroq va arzonroq.
- Kesh — tez-tez kerak narsaning yaqin va tez joydagi nusxasi.
- Latentlik — javobni kutish vaqti. RAM keshdan ~100 barobar, SSD RAM'dan ~1000 barobar sekin.
- Kesh ikki kuzatuvga tayanadi: hozir kerak bo'lgan narsa yana kerak bo'ladi va yonidagi narsa ham kerak bo'ladi.
- RAM to'lsa, tizim diskka (pagefile, swap) ko'chadi va keskin sekinlashadi.
- Keshlash g'oyasi hamma joyda: CPU, brauzer, Telegram, CDN, serverlar.
Keyingi dars: Sonlar ichkarida: manfiy sonlar, kasr sonlar va bitli amallar — kompyuter manfiy sonlarni qanday saqlashi va nega 0.1 + 0.2 aniq 0.3 bo'lmasligini ko'ramiz.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!