CPU s jednou instrukci ;).

Jiri Bezstarosti jiri@bezstarosti.cz
Středa Říjen 17 22:07:19 CEST 2007


Ono by se dalo zvolit vice ruznych pristupu. Napriklad registr (ted si 
vymyslim) R0 a R1 davaji do R2 svuj soucet, do R3 rozdil, do R4 or, do 
R5 and ... a ktery si z tech vysledkovych registru naberu v dalsi 
instrukci po naplneni R0 a R1 je vlastne volba instrukce scitani, 
rozdilu ...
Ale da se pro kazdou operaci take pouzit jiny par registru, takze R0 a 
R1 delaji soucet do R2, R3 a R4 treba XOR do R5 atd. Co je vyhodnejsi by 
se muselo dobre promyslet.
Rozhodne bych nikdy nedelal to, ze se pouzije jeden z registru jako 
zdrojovy a zaroven cilovy, komplikuje to praci. On totiz nemusi byt 
fyzicky registr vysledku vubec implementovan, muze to byt jen vystup 
treba AND hradel s povolenim vystupu na databus v okamziku, kdy se 
prenasi ten vysledek do nejakeho ciloveho registru. Vlastne se z 
instrukce jen demultiplexuje povoleni vystupu zdrojoveho registru a 
zapis do ciloveho registru. Pak ty vykonne casti (jako treba ALU) jsou 
roztrouseny jako vazby mezi registry. Cele je to jen o tom, ze jednomu 
registru (at uz je fyzicky a nebo vysledek neceho) povolim vystup a 
druhemu tuknu, at to zachyti ;). Tak mohu klidne pouzivat jako 
univerzalni i ty registry, ktere slouzi pro nejakou matematickou operaci 
jako cil, pokud tu operaci zrovna nepotrebuji, protoze mohu cist jak ty 
registry R0 a R1 (ktere jsou vstupem do funkce), tak R2 (ktery je 
vystupem funkce). Myslim, ze je ta architektura velice jednoducha a 
nemusim ji hned implementovat plne. Napriklad si reknu, ze registr Rxx 
je zatim nepouzit (volny drat demultiplexeru) a pozdeji tam navesim 
treba shift registru Ry. Otazka je, co znamena pozdeji navesim, protoze 
pri te tune spoju to vidim na VHDL a lepe by bylo napsat, ze dopisu ;).

--
Jiri Bezstarosti


Jirka MWW napsal(a):

> No jo, ono by se to v prvni vrstve dalo opravdu ocesat hodne, ale ty 
> funkce, povesene na nektere spec. registry by skoro potrebovaly nejaky 
> mikroprogramovany radic. Treba by se do trojice registru zapsala float 
> hodnota cisla a v jine trojici by se jaksi sama objevila hodnota sinus 
> nebo nejake jine funkce. Pak by se na prvni urovni chvilku soupalo 
> registry jako ze desne primitivne  , zase by se nekam zapsalo a jinde 
> by se objevil nejaky jiny  vysledek slozite operace.  ale porad by to 
> byl procesor jen s jednou instrukci MOV.





Další informace o konferenci Hw-list