Sunday, June 12, 2011

HW: Zakladny cyklus pocitaca

Zakladny a zjednoduseny cyklus pocitaca sa da zhrnut do nasledujucih bodov

  1. pociatocne nastavenie program countera a nastavenie stavu procesoru 
  2. nacitanie instrukcie, INSTRUCTION FETCH (IF)
  3. dekodovanie operacneho znaku, INSTRUCTION DECODE  (ID)
  4. vyhodnotenie efektivnych adries a citanie operandov, OPERAND FETCH (OF)
  5. vykonanie operacie, INSTRUCTION EXECUTION (IE)
  6. zapis do pamate, WRITE BACK - nemusi byt vykonana (WB)
  7. osetrenie prerusenia, INTERRUPT 
  8. pokracujeme znovu od 2. kroku 


Instruction Fetch
V tejto faze je adresa instrukcie ulozena v PC vystavena na adress bus (AB). Obsah tohto pamatoveho miesta je vystaveny pamatou (M) na data bus. Kod instrukcie z DB je ulozeny do instruction registra (IR). 

Instruction Decode 
V tejto je instrukcia z IR dekodovana internou logikou (to este pride) a su vygenerovane riadiace signaly pre ALU. Zaroven je potrebne zvysit PC, aby sme pri dalsom cykle citali dalsiu instrukciu ;). PC sa zvysi o hodnotu k, kde k je cislo urcene po dekodovani instrukcie. Nova hodnota PC sa vypocita ako PC <- PC + k v ALU. Aby k tomu mohlo dojst, tak PC vystavil svoju hodnotu na AB. Ak k == 1, tak hovorime o sekvencnom spracovani. Ak k > 1, tak sa jedna o skok. Inak, len tak medzi nami, k je vlastne dlzka instrukcie (teda, asi pokial sa nejedna o skok)

Operand Fetch
Ako naznacuje nazov, musime ziskat operandy, aby mohla byt instrukcia vykonana. To samozrejme v pripade, ze instrukcia nejake operandy potrebuje. Adresa operandu je vystavena IR na AB. M "vypusti" tuto hodnotu na DB, cim je "ready" pre ALU alebo pre ACC (akumulator).

Instruction Execution
Konecne sme sa dostali k vykonanie operacie podla instrukcii z IR. Na obrazku nam chyba cast, ktoru volame "rizeni" a jedna sa o internu logiku, ktora generuje signaly pre ALU. ACC nam dobre posluzi ako zdrojovy/cielovy register. 

Write Back
K tejto faze vobec nemusi dojst, ale ak uz, tak k nej dojde preto, aby vysledna hodnota bola zapisana do pamate. IR teda vystavi adresu v pamati na AB, kam ma byt hodnota zapisana. ACC vystavi hodnotu na DB a ta je nasledovne zapisana na adresu z AB do M. 

Btw, verim, ze ste si vsimli, ze tento pocitac je Von Neumann ;).