10-bo‘lim

Komanda sikli

Komanda qanday sonlarga kodlanadi, olish-dekodlash-bajarish halqasi, shartli o'tish va takt chastotasining ma'nosi.

🕑 7 daqiqa o‘qish 📄 1 110 so‘z 👁 1 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. Komanda ham shunchaki son
  2. Uch qadamli halqa
  3. Takt chastotasi nimani anglatadi?
  4. Xulosa

1-bo'limda protsessorning butun mohiyati uch qatorga sig'gan edi:

  1. Ko'rsatkich ko'rsatgan manzildan komandani o'qi (fetch).
  2. Ko'rsatkichni keyingi komandaga surib qo'y.
  3. Komandani ochib tushun (decode) - bu qaysi amal?
  4. Amalni bajar (execute).

Va boshidan. Protsessor yoqilgandan o'chgunicha shu to'rt qadamni takrorlaydi - sekundiga milliardlab marta.

Endi shu halqani haqiqiy komandalar bilan quramiz.

Komanda ham shunchaki son #

Protsessor uchun komanda - bu bitlar to'plami. Ularning ma'nosi formatda kelishilgan.

Bizning o'quv mashinamizda har komanda 16 bitga sig'adi va to'rt maydonga bo'linadi:

Bitta son - butun komanda AMAL MAQSAD MANBA QIYMAT 4 bit - bit 15..12 2 bit - 11..10 2 bit - 9..8 8 bit - 7..0 nima qilinsin qaysi registrga qaysi registrdan son yoki manzil Misol: YUKLA r0, 12 0001 00 00 00001100 YUKLA r0 r0 12 0x100C Protsessor aynan shu sonni o'qiydi va uni maydonlarga ajratadi
Dekodlash - bu sonni bo'laklarga ajratish, boshqa hech narsa emas

To'rtta komandani shu formatda yozib chiqamiz:

AssemblerO'n oltilikdaIkkilikda
YUKLA r0, 120x100C0001 00 00 00001100
YUKLA r1, 50x14050001 01 00 00000101
QOSH r0, r10x21000010 00 01 00000000
TOXTA0xF0001111 00 00 00000000

Amal maydoniga qarang: 0001 - yuklash, 0010 - qo'shish, 1111 - to'xtash. Protsessor uchun komanda nomi yo'q, faqat raqam bor.

Bu 4-bo'limdagi "maydonlarni ajratib olish" naqshining aynan o'zi. Faqat bu yerda maydonlar - rang emas, komanda qismlari.

Komanda uzunligi: qat'iy yoki o'zgaruvchan?

Ikki yondashuv bor va ular butun arxitektura xarakterini belgilaydi:

Qat'iy uzunlikO'zgaruvchan uzunlik
MisolARM, RISC-V (4 bayt)x86 (1-15 bayt)
DekodlashOddiy va tezMurakkab
Kod hajmiKattaroqIxchamroq
Konveyer (16-bo'lim)OsonQiyin

x86 da komanda uzunligini bilish uchun uni qisman dekodlash kerak - bu keyingi komanda qayerdan boshlanishini oldindan aytishni qiyinlashtiradi.

Shuning uchun zamonaviy x86 protsessorlar ichkarida komandalarni soddaroq ichki shaklga (mikro-amal) aylantiradi va aslida RISC mashinasi kabi ishlaydi.

Bu 1-bo'limdagi "arxitektura va amalga oshirish" ajratishning eng yorqin misoli.

Uch qadamli halqa #

Olish - Dekodlash - Bajarish 1. OLISH KK manzilidagi komandani o'qish 2. DEKODLASH bitlarni maydonlarga ajratish 3. BAJARISH ALU ishlaydi, registr yangilanadi va yana boshidan - sekundiga milliardlab marta Komanda ko'rsatkichi (KK) qachon o'zgaradi? Odatda 1-qadamda avtomatik oshadi. Sakrash komandasi esa unga YANGI qiymat yozadi. Butun boshqaruv oqimi - if, for, funksiya chaqiruvi - shu bitta registrga tayanadi.
Har qadamda faqat bitta komanda - lekin 16-bo'limda buni ham tezlashtiramiz

Endi to'liq mashina. Dastur 5 dan 0 gacha sanaydi:

Endi kichik bir dasturni to'liq kuzatamiz. U r0 ni 5 dan 0 gacha kamaytiradi:

QadamKo'rsatkichKomandar0r1Nol bayrog'i
10YUKLA r0, 5000
21YUKLA r1, 1500
32AYIR r0, r1510
43AGAR_NOL 5410
54AGAR_NOL 2410
62AYIR r0, r1410
73AGAR_NOL 5310
......halqa davom etadi.........
152AYIR r0, r1110
163AGAR_NOL 5011
175TOXTA011

Eng muhim ikki qator - 5 va 17.

5-qadamda ko'rsatkich 4 dan 2 ga qaytdi. Bu - halqa. Hech qanday sehr yo'q: shunchaki ko'rsatkichga boshqa qiymat yozildi.

16-qadamda r0 nolga yetdi va nol bayrog'i yondi. Shundan keyin shartli o'tish ishlamadi va dastur TOXTA ga o'tdi.

Butun dastur 17 ta komandada bajarildi.

Halqa, shart va funksiya - hammasi shu

Yuqoridagi jadvalda dasturlashdagi halqa qanday ishlashini ko'rdingiz: ko'rsatkichni orqaga qaytarish.

Boshqa tuzilmalar ham xuddi shunday:

Yuqori darajadaProtsessor darajasida
HalqaKo'rsatkichni orqaga qaytarish
ShartBayroqqa qarab o'tish yoki o'tmaslik
Funksiya chaqirishQaytish manzilini saqlab, oldinga o'tish
Funksiyadan qaytishSaqlangan manzilni tiklash

Protsessor bu tushunchalarning hech birini bilmaydi. U faqat ko'rsatkichni o'zgartiradi.

Diqqat bilan qarang: KK ustuni ketma-ket emas. U 2, 3, 4, 2, 3, 4... bo'lib aylanadi - bu halqa.

Yuqori darajali tilda while deb yoziladigan narsa protsessor uchun aynan shu: komanda ko'rsatkichini orqaga qaytarish.

Butun boshqaruv oqimi bitta registrda

if, for, while, funksiya chaqiruvi va qaytish - hammasi bitta narsaga keladi: KK ga yangi qiymat yozish.

Yuqori darajaProtsessor darajasida
ifBayroqqa qarab KK ni o'zgartirish
whileKK ni orqaga qaytarish
Funksiya chaqiruviJoriy KK ni stekka saqlab, sakrash
returnStekdan KK ni tiklash

Shuning uchun 1-bo'limdagi uch qatorlik halqa haqiqatan hamma narsani qamrab oladi.

Takt chastotasi nimani anglatadi? #

"3 GGs protsessor" degani - ichki soat sekundiga 3 milliard marta uradi.

Lekin bu sekundiga 3 milliard komanda degani emas:

OmilTa'siri
Ba'zi komandalar bir necha takt oladiKamroq
Konveyer (16-bo'lim)Ko'proq
Bir vaqtda bir necha komandaKo'proq
Xotira kutish (14-bo'lim)Ancha kamroq

Shuning uchun protsessorlarni faqat chastota bilan solishtirish noto'g'ri. 2 GGs li yangi protsessor 3 GGs li eskisidan tez bo'lishi mumkin.

Chastota poygasi tugagan

2000-yillar boshida chastota har yili o'sardi va 10 GGs kutilardi.

Lekin quvvat sarfi chastotaning kvadratidan tez o'sadi va issiqlik chiqarish chidab bo'lmas darajaga yetdi. Bu quvvat devori deb ataladi.

Natijada 2005-yildan boshlab yo'nalish o'zgardi:

OldinKeyin
Bitta yadro, yuqori chastotaKo'p yadro, o'rtacha chastota
Dastur avtomatik tezlashardiDasturchi parallellikni o'ylashi kerak

Bugungi protsessorlar 3-5 GGs atrofida qotib qolgan. Tezlik o'sishi endi yadrolar soni va samaradorlikdan keladi - 17-bo'limda ko'ramiz.

Amaliy topshiriq
  1. Komanda siklining to'rt qadamini yoddan yozing.
  2. 0x2100 komandasini qo'lda maydonlarga ajrating.
  3. Amal maydoni 0010 bo'lsa, bu qaysi komanda?
  4. TOXTA ning o'n oltilik kodini yozing.
  5. Qiymat maydoni 8 emas, 6 bit bo'lsa, eng katta son qancha bo'ladi?
  6. Jadvalda halqa qaysi qadamda boshlanganini toping.
  7. Ko'rsatkich nima uchun 4 dan 2 ga qaytganini tushuntiring.
  8. Nol bayrog'i qaysi qadamda yondi? Nega?
  9. Dastur 10 dan sanasa, necha qadam bajarilardi?
  10. Shart va halqa protsessor darajasida qanday ko'rinishini yozing.

Xulosa #

  • Komanda - bu son; uning bitlari format bo'yicha maydonlarga bo'linadi.
  • Dekodlash - 4-bo'limdagi "surish va niqob" naqshining o'zi.
  • Komanda uzunligi qat'iy (ARM, RISC-V) yoki o'zgaruvchan (x86) bo'ladi.
  • Zamonaviy x86 ichkarida komandalarni soddaroq mikro-amallarga aylantiradi.
  • Protsessor halqasi uch qadam: olish, dekodlash, bajarish.
  • Komanda ko'rsatkichi odatda avtomatik oshadi.
  • Sakrash komandasi unga yangi qiymat yozadi - halqa shunday hosil bo'ladi.
  • if, while, funksiya chaqiruvi - hammasi KK ni o'zgartirishga keladi.
  • Takt chastotasi sekundiga bajariladigan komandalar soniga teng emas.
  • 2005-yildan chastota o'sishi to'xtadi - sabab quvvat devori.

Keyingi bo'limda komandalar to'plamini butun sifatida ko'ramiz: RISC va CISC.

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.