II dio Mikroprocesor

2.11. Instrukcioni ciklus

Izvršavanje programa (korisničkih ili sistemskih) se sastoji od uzastopnog čitanja i izvršavanja instrukcija. Izvršavanje svih faza mašinskih instrukcija čini proces koji se naziva instrukcioni ciklus. Na sljedećoj slici je prikazan blok dijagram izvršavanja instrukcionog ciklusa.


Slika 18. Blok dijagram instrukcionog ciklusa

Faze instrukcionog ciklusa se izvrašavaju jedna za drugom.
- Na početku se izvršava faza dohvatanja, u kojoj se vrši prenos naredne instrukcije koja se     izvršava iz memorije u procesor.
- Naredna faza je faza izvršenja, kada se izvršava prenijeta mašinska instrukcija.
- Sljedeća faza je faza prekida kada CPU provjerava da li je došlo do pojave prekida. Ako nema prekida ide se ponovo na prvu fazu ili se računar zaustavlja.
- Ako ima prekida procesor vrši sljedeću akciju:

  • Prekida izvršavanje tekućeg programa i čuva njegov vektor stanja koji uključuje adresu naredne instrukcije koja se izvršava, sadržaje registara vezanih za program i ostale relevantne informacije.
  • Postavlja vrijednost brojača instrukcija na početnu adresu rutine koja vrši obradu prekida (tzv. Interrupt handler rutine).

- Nakon ovoga procesor počinje sa izvršavanjem rutina za obradu prekida. One su obično dio operativnog sistema i određuju akciju koja se preduzima u zavisnosti od vrste prekida. Po njihovom završetku se restaurira sačuvani vektor stanja i program nastavlja sa izvršavanjem.

Očigledno je da ispitivanje postojanja prekida u instrukcionom ciklusu, kao i njihova obrada zahtijevaju određeno procesorsko vrijeme. Međutim, obzirom na relativno veliku količinu vremena koje se gubi pri čekanju na završetak ulazno/izlaznih operacija, upotrebom sistema prekida se u velikoj mjeri povećava iskorišćenje procesora.

Svaka od faza mašinskog ciklusa se može raščlaniti na različit broj koraka (podfaza). Koji od ovih koraka će biti uključeni u izvršavanje instrukcije zavisi od same instrukcije. Jedno od mogućih raščlanjenja faza mašinske instrukcije je:


Animaciju pripremio: Mihajlo Bulaja III4

1. Faza dohvatanja:
• Izračunavanje adrese instrukcije, pri čemu se određuje adresa naredne instrukcije koja treba da se izvrši.
• Dohvatanje instrukcije. U ovom koraku se čita instrukcija iz memorije i prenosi u CPU.
• Dekodiranje operacionog koda instrukcije. Na osnovu analize operacionog koda određuje se tip operacije i broj argumenata instrukcije.
• Izračunavanje adrese operanada. Za svaki od eventualnih operanada instrukcije se određuje gdje je smješten (registar ili memorija). Ako se koristi indirektno adresiranje tada određivanje adrese operanda uključuje dodatno obraćanje memoriji za određivanje adrese operanda – faza indirekcije.
• Dohvatanje operanda u kome se vrši dohvatanje operanda iz memorije.

2. Faza izvršenja:
• Izvršavanje operacije koja je zahtijevana operacionim kodom.
• Čuvanje rezultata u memoriji ili na ulazno/izlaznim uređajima. Ako se i u ovom koraku koristi indirektno adresiranje tada je za svaki od operanada koji predstavljaju rezultat potrebno dodatno obraćanje memoriji za određivanje njegove adrese.

3. Faza prekida:
• Provjera da li se u međuvremenu desio prekid.
• Ako je bilo prekida, tada se vrši njegova obrada.

Ova podjela nije istovjetna na svim procesorima. Broj faza u izvršavanju mašinske instrukcije nije isti na svim procesorima. Takođe, zbog različitih potreba često se vrši objedinjavanje pojedinih koraka. Tako se npr. dosta često objedinjuju izračunavanje adrese instrukcije i njeno dohvatanje iz memorije.

                                                                                                            

 

Specijalizovani registri    <    Index    >    2.12. Preklapanje instrukcija