Kompyuter qanday ishlaydi
4-bob

Mantiqiy ventillar

Bir nechta tranzistor — bitta ventil. Ventillardan yig'uvchi (hisoblaydi) va flip-flop (eslaydi) quriladi; qolgan hamma narsa shu ikki g'ishtdan.

Bitta tranzistor — oddiy kalit. Lekin bir nechta tranzistorni ma'lum tartibda ulasak, mantiqiy ventil (logic gate) hosil bo'ladi. Ventil bir yoki bir nechta kirish bitini qabul qilib, aniq qoida bo'yicha bitta chiqish biti beradi. Bu qoidalar 1854-yilda Jorj Bul tomonidan ishlab chiqilgan Bul algebrasiga asoslanadi. Ventilning ishlashi haqiqat jadvali bilan to'liq tavsiflanadi — unda barcha kirish kombinatsiyalari va ularga mos chiqish ko'rsatiladi.

Kirish 1 = 3.3 V 0 = 0 V AB Har chip ichida 2–6 tranzistor. JavaScript: && — AND, || — OR, ! — NOT, ^ — XOR.
Kirishlarni almashtiring (tugma yoki platadagi tumbler) — har jadvalda mos qator yonadi
A=0 B=0A=0 B=1A=1 B=0A=1 B=1Xulosa
Pastga suring: to'rt kombinatsiya ketma-ket beriladi.
7-rasm. Asosiy mantiqiy ventillar va ularning haqiqat jadvallari (Q — chiqish)

AND (VA) — ikkala kirish ham 1 bo'lsagina chiqish 1. Elektr sxemasida ketma-ket ulangan ikkita kalitga o'xshaydi: chiroq yonishi uchun ikkalasi ham yopiq bo'lishi kerak. OR (YOKI) — kamida bitta kirish 1 bo'lsa, chiqish 1; bu parallel ulangan kalitlar. NOT (EMAS) — kirishni teskarisiga aylantiradi. NAND va NOR — AND va OR ning teskarisi. XOR (istisno qiluvchi YOKI) — kirishlar har xil bo'lsagina 1 beradi.

Qiziq fakt: NAND ventili universal. Faqat NAND ventillaridan foydalanib, boshqa barcha ventillarni va demak butun kompyuterni yasash mumkin. Masalan, NOT = NAND(A, A). Zamonaviy flesh xotira ham NAND tuzilmasiga asoslangani uchun "NAND flash" deb ataladi.

Dasturlashda ham shu amallarni ishlatasiz: JavaScript'dagi && — AND, || — OR, ! — NOT. Bitli amallar esa &, |, ^ (XOR), ~ (NOT). Siz if (user && user.isAdmin) yozganingizda, protsessor ichida haqiqatan ham AND ventillari ishlaydi.

4.1. Ventillardan hisoblashgacha: yarim yig'uvchi

Endi eng qiziq qismi: ventillar yordamida qanday qilib sonlarni qo'shish mumkin? Ikkilik tizimda bir xonali qo'shish qoidalari: 0+0=0, 0+1=1, 1+0=1, 1+1=10 (ya'ni natija 0, keyingi xonaga 1 ko'chadi). E'tibor bering: yig'indi biti (S) aynan XOR jadvaliga, ko'chirish biti (C) esa aynan AND jadvaliga mos keladi! Demak bitta XOR va bitta AND ventilini ulasak, bir bitli sonlarni qo'shadigan yarim yig'uvchi (half adder) hosil bo'ladi.

Kirish A Kirish B XOR · yig'indi S = 0 AND · ko'chirish C = 0 0 + 0 = 00 S = A XOR B, C = A AND B. 1 + 1 = 10₂: yig'indi 0, ko'chirish 1 — keyingi xonaga.
Platadagi tumblerlarni ham bosish mumkin
0 + 00 + 11 + 01 + 1
Pastga suring: to'rt kombinatsiya ketma-ket qo'shiladi.
ABSC
0000
0110
1010
1101
8-rasm. Yarim yig'uvchi: XOR yig'indini, AND ko'chirishni hisoblaydi

4.2. To'liq yig'uvchi va ko'p bitli qo'shish

Ko'p xonali sonlarni qo'shganda har bir xona oldingi xonadan kelgan ko'chirishni ham hisobga olishi kerak. Buning uchun ikkita yarim yig'uvchi va bitta OR ventilidan to'liq yig'uvchi (full adder) yasaladi — u uchta kirishni (A, B va ko'chirish) qabul qiladi. To'liq yig'uvchilarni zanjir qilib ulasak, istalgan uzunlikdagi sonlarni qo'shish mumkin. 64 ta to'liq yig'uvchi — 64 bitli protsessordagi qo'shish bloki.

4 bitli yig'uvchi A va B LED larini bosib bitlarni o'zgartiring
A va B bitlarini bosib o'zgartiring, so'ng "Qo'sh"
bit 0bit 1bit 2bit 3Natija
Pastga suring yoki "Qo'sh" ni bosing: ko'chirish biti o'ngdan chapga yuradi.
9-rasm. 4 bitli yig'uvchi: ko'chirish (C) o'ngdan chapga uzatiladi

Ayirish qo'shish orqali bajariladi: sonning qo'shimcha kodi (barcha bitlarni teskari qilib, 1 qo'shish) olinadi va qo'shiladi. Ko'paytirish — ko'p marta surish va qo'shish. Bo'lish — ko'p marta ayirish va solishtirish. Shunday qilib, barcha arifmetika bir necha turdagi ventillardan qurilgan sxemalarga keltiriladi.

4.3. Xotira elementi: flip-flop

Hisoblash — ishning yarmi. Kompyuter natijalarni eslab qolishi ham kerak. Agar ventilning chiqishini qaytadan uning kirishiga ulasak (teskari aloqa), sxema o'z holatini "ushlab turadi". Ikki NOR yoki ikki NAND ventilini kesishgan holda ulash natijasida SR-latch hosil bo'ladi — u bitta bitni saqlaydi. Uning takomillashgan varianti D flip-flop — takt signalining har bir chetida kirishdagi qiymatni "suratga olib", keyingi taktgacha saqlaydi.

ossillograf · takt, D va Q CLK D Q vaqt → D kirish Takt (CLK) 0 → 1 ↑ D flip-flop D CLK Q 1 bitni saqlaydi Q = 0 Q (saqlangan) 0 8 ta flip-flop = 1 bayt registr bitta takt — 8 ta bit birga
Registr D LED larini bosib 8 bitni tering, so'ng takt bering
D o'zgardiTakt ↑D o'zgardiTakt ↑Registr
Pastga suring: Q faqat takt ko'tarilganda D ni "suratga oladi".
10-rasm. D flip-flop: takt signali kelganda D qiymatini eslab qoladi

Bir nechta flip-flop birlashsa registr hosil bo'ladi: 8 ta — 8 bitli registr, 64 ta — 64 bitli registr. Registrlar protsessor ichidagi eng tez xotira. Shunday qilib, biz tranzistordan boshlab kompyuterning ikki asosiy qobiliyatiga — hisoblash (yig'uvchi) va eslash (flip-flop) ga yetib keldik. Qolgan hamma narsa shu ikki g'ishtdan qurilgan.

Tekshirish: yuqoridagi test va 5-savol, 6-savol