Monday, June 20, 2011

HW: Princip prudoveho zpracovania komplexnych instrukcii

Komplexne instrukcie sme uz rozoberali, ale teda, aspon vieme, ze to su instrukcie, ktore mozu byt zlozene z viacerych "jendnoduchych" instrukcii.


V tabulke vidime par mikroinstrukcii a jednotlive "ukony", ktore su vykonavane v jednotlivych stage-och pipeline. My uz teda mame navrhnutu nejaku pipeline a vidime, ze instrukcia SW vyzaduje 3 citacie porty v ID a a LW vyzaduje 2 porty vo WB stage. To nasa pipeline neobsahuje. Mame teda dve moznosti, bud upravime pipeline, alebo upravim instrukcie tak, aby boli podporovane nasim HW. 2 riesenie znamena rozbit instrukcie do mikroinstrukcii, ktore budu priamo vykonatelne a pipeline. Vyuzijeme pri tom register R32, ktory je programatorovi nepristupny a je vyzivany mikroinstrukciami. (microarchitecture scratch-pad register). Taketo registre sa vysytuju v CISC architekturach. Vysledne instrukcie bude mozne vykonat v dvoch taktoch.

S vyuzitim R32 rozbijeme instrukcie takto:

SW: 
add R32, Rs, Rt         Reg(R32) = Reg(Rs) + Reg(Rt)
sw (R32), Rt              Mem(Reg(R32)) <= Reg(Rt)

LW: 
addi Rs, Rs, Imm        Reg(Rs) = Reg(Rs) + Imm
lw Rt, (Rs)                  Reg(Rt) = Mem(Reg(Rs))

Tieto mikroinstrukcie budu vykonane v dvoch taktoch.

Instrukcia SW stravila v ID faze dva takty a pocas v kazdom takte je emitovana jedna mikroinstrukcia. Dekoder tu uz musi byt sekv. obvod. Vsimnite si toho forwardingu MEM/EX, kde sa forwarduje register R32.



Priamy pipelining komplexnych instr. je v CISC procesoroch dost obtiazny. Nativna CISC pipeline sa vyznacuje viactaktovymi stupni, co znamena, ze pokial to je potreba, tak instrukcia stravi v danom stupni viac taktov. Adresacne mody a dekodovanie v CISC procesoroch su komplexnejsie. Detekcia hazardov, forwarding a presne prerusenie su zlozitejsie. Pouzivane riesenia su nakoniec unikatne pre kazdy CISC procesor. Preto je alternativou rozbitie komplexnych instrukcii do mikroinstr. a implementovat pipelining na urovni mikroinstrukcii, tak ako sme to spravili aj my. Mikroinstrukcie su teda vykonavane pomocou RISC-like pipeline. Takyto pristup sa pouziva u vsetkych x86 PCs.