9-bo‘lim

Protsessor ichida

Registrlar nima uchun kerak, ALU va bayroqlar, tashish va toshish farqi hamda boshqaruv qurilmasining vazifasi.

🕑 7 daqiqa o‘qish 📄 1 086 so‘z 👁 1 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. Nima uchun registr kerak?
  2. ALU va bayroqlar
  3. Bayroqlar nimaga kerak?
  4. Xulosa

8-bo'limda sumator qurdik. Endi uni protsessor ichiga joylashtiramiz.

Protsessorda uchta asosiy qism bor:

QismVazifasi
RegistrlarIsh qiymatlarini ushlab turadi
ALUAmal bajaradi va bayroq qo'yadi
Boshqaruv qurilmasiKomandani o'qib, nima qilishni aytadi

Nima uchun registr kerak? #

Avval protsessorning umumiy tuzilishiga qaraymiz:

Protsessor ichida nima bor XOTIRA komandalar va ma'lumotlar manzil shinasi ma'lumot shinasi PROTSESSOR BOSHQARUV QURILMASI nima qilishni aytadi KOMANDA REGISTRI joriy komanda KOMANDA KO'RSATKICHI keyingi manzil REGISTRLAR r0 r1 r2 r3 ... odatda 16 yoki 32 ta eng tez xotira - bir taktda ALU qo'shadi, taqqoslaydi boshqaruv signallari natija registrga qaytadi BAYROQLAR nol, tashish, ishora, oshish Ish tartibi 1. Manzil chiqariladi 2. Komanda o'qiladi 3. Boshqaruv uni ochadi 4. Registrlar ALU ga 5. ALU amal bajaradi 6. Natija qaytadi
Uchta asosiy qism va ular orasidagi yo'llar - bu 10-bo'limdagi komanda siklining asosi

Endi eng muhim savolga javob beramiz: nima uchun registr kerak?

a = b + c amalini ikki xil bajarish mumkin:

QadamHammasi xotiradaQiymatlar registrda
b ni o'qish100 takt1 takt
c ni o'qish100 takt1 takt
Qo'shish1 takt1 takt
Natijani yozish100 takt1 takt
Jami301 takt4 takt

Farq - 75 barobar.

Raqamlar shartli, lekin nisbat haqiqiy

Yuqoridagi 100 va 1 - o'qish uchun tanlangan sonlar.

Haqiqiy nisbat 14-bo'limda aniq ko'rsatiladi, lekin tartib shunga yaqin: registrga murojaat bir taktda, asosiy xotiraga esa yuzlab taktda bajariladi.

Aynan shu farq butun xotira ierarxiyasining (kesh, sahifalash, oldindan o'qish) sababi.

Registrlarning ikkita xossasi bor va ular bir-biriga qarama- qarshi:

XossaOqibati
Juda tezBir taktda o'qiladi
Juda kamOdatda atigi 16-32 ta

Shuning uchun kompilyatorning eng muhim vazifalaridan biri - qaysi qiymat registrda turishini hal qilish.

Raqamlar shartli, lekin nisbat haqiqiy

Yuqoridagi 100 va 1 - o'qish uchun tanlangan sonlar.

Haqiqiy nisbat 14-bo'limda aniq o'lchanadi, lekin tartib shunga yaqin: registrga murojaat bir taktda, asosiy xotiraga esa yuzlab taktda bajariladi.

Aynan shu farq butun xotira ierarxiyasining (kesh, sahifalash, oldindan o'qish) sababi.

Registrlar nomlari arxitekturaga qarab turlicha:

ArxitekturaRegistrlar
x86-64rax, rbx, rcx, rdx, rsi, rdi, r8-r15
ARM64x0-x30
RISC-Vx0-x31

Maxsus vazifali registrlar ham bor: komanda ko'rsatkichi (1-bo'limdagi korsatkich), stek ko'rsatkichi va bayroqlar registri.

ALU va bayroqlar #

ALU amal bajaribgina qolmaydi - u natija haqida qo'shimcha ma'lumot ham beradi:

AmalabNatijaNolTashishIshoraOshish
Qo'shish125170000
Qo'shish200100440100
Ayirish7701100
Ayirish5122490010
Qo'shish1001002000011
VA2401501000
XOR170255850000

To'rtta bayroqning ma'nosi:

BayroqQachon 1 bo'ladi
Nolnatija aynan nol
Tashishishorasiz talqinda razryaddan oshdi
Ishoranatijaning eng chap biti 1
Oshishishorali talqinda razryaddan oshdi

Uchinchi qatorga e'tibor bering: 7 − 7 = 0 da nol bayrog'i yondi. Aynan shu tufayli protsessor ikkita sonni taqqoslay oladi - u ularni ayiradi va nol bayrog'iga qaraydi.

Tashish va oshish - bir xil narsa emas

Ikkita qatorni solishtiring:

AmalTashishOshishNima bo'ldi
200 + 10010Ishorasiz talqinda sig'madi
100 + 10001Ishorali talqinda sig'madi

Sabab 3-bo'limdan ma'lum: bir xil bitlar ikki xil o'qiladi.

  • Tashish - ishorasiz son sifatida toshib ketdi.
  • Oshish - ishorali son sifatida toshib ketdi.

100 + 100 = 200 ishorasiz uchun mutlaqo normal. Lekin ishorali 8 bitda eng katta son 127, shuning uchun natija -56 bo'lib chiqadi - bu xato.

Protsessor ikkala bayroqni ham qo'yadi va qaysi biri muhimligini dastur hal qiladi. Aynan shuning uchun protsessorda ikki xil shartli o'tish komandalari bor: biri ishorasiz, ikkinchisi ishorali taqqoslash uchun.

Bu C dagi klassik xatolar manbai: int va unsigned ni taqqoslaganda kompilyator ishorasiz variantni tanlaydi va manfiy son juda katta bo'lib qoladi.

Bayroqlar nimaga kerak? #

Bayroqlar shartli o'tish uchun ishlatiladi. if a == b degan kod ikki komandaga aylanadi:

QadamKomandaNima bo'ladi
1AYIR a, bNatija tashlanadi, faqat bayroq qoladi
2AGAR_NOL o'tishNol bayrog'i 1 bo'lsa - sakraydi

Shuning uchun assemblerda taqqoslash uchun maxsus CMP komandasi bor: u ayirishni bajaradi, lekin natijani saqlamaydi - faqat bayroqlarni qo'yadi.

Protsessorning asosiy yo'li Registrlar r0 r1 r2 r3 KK (komanda ko'rs.) SK (stek ko'rs.) a b ALU sumator + mantiq + surish natija Registrga qaytadi Bayroqlar N T I O Boshqaruv qurilmasi Komandani o'qiydi va yuqoridagi hamma narsani qaysi rejimda ishlashini aytadi Bayroqlar boshqaruv qurilmasiga qaytadi - shartli o'tish shunga tayanadi Bu yo'l "ma'lumot yo'li" (datapath) deb ataladi Har takt unda bitta amal bajariladi
Registr - ALU - registr: protsessorning asosiy aylanishi
Registrlar nima uchun shunchalik kam?

Zamonaviy protsessorda o'n minglab tranzistor bor. Nega 1000 ta registr qilinmaydi?

Uchta sabab:

SababIzoh
Komanda hajmiHar registr nomi komandada bit talab qiladi
TezlikKatta registr fayli sekinroq ishlaydi
Kontekst almashinuviHar registr saqlanishi kerak

Birinchisi eng qattiq: 32 ta registr uchun 5 bit kerak. Uch operandli komandada bu 15 bit - komanda 32 bitli bo'lsa, yarmidan ko'pi faqat registr nomlariga ketadi.

Amalda 16-32 ta registr eng yaxshi muvozanat bo'lib chiqqan.

Amaliy topshiriq
  1. ALU misolini ishga tushiring.
  2. KOPAYTIR amalini qo'shing va bayroqlarni to'g'ri qo'ying.
  3. 127 + 1 ni sinang - qaysi bayroq yoqildi?
  4. 255 + 1 ni sinang va farqni tushuntiring.
  5. Tashish va oshish farqini uch qatorda yozing.
  6. CMP amalini qo'shing: natijani qaytarmasin, faqat bayroq qo'ysin.
  7. Registr misolini ishga tushiring va nisbatni o'zgartiring.
  8. x86-64 da nechta umumiy registr borligini toping.
  9. Nima uchun r0 ko'pincha doimiy nol bo'lishini o'rganing.
  10. Bayroqlar if ni qanday amalga oshirishini tushuntiring.

Xulosa #

  • Protsessorda uch asosiy qism: registrlar, ALU, boshqaruv qurilmasi.
  • Registr - eng tez xotira, lekin juda kam: odatda 16-32 ta.
  • Registrga murojaat bir taktda, asosiy xotiraga esa yuzlab taktda.
  • Registrlar kam, chunki ularning nomi komanda ichida bit talab qiladi.
  • ALU amal bajaradi va natija haqida bayroq qo'yadi.
  • Asosiy bayroqlar: nol, tashish, ishora, oshish.
  • Tashish ishorasiz, oshish esa ishorali toshishni bildiradi - bu ikki xil narsa.
  • Protsessor ikkala bayroqni qo'yadi, qaysi biri kerakligini dastur hal qiladi.
  • CMP - ayirishni bajaradi, lekin natijani saqlamaydi, faqat bayroq qo'yadi.
  • Shartli o'tish aynan shu bayroqlarga qaraydi - if shunday ishlaydi.

Keyingi bo'limda protsessor komandani qanday olib, tushunib, bajarishini ko'ramiz.

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.