Minimal Instruction Set - vlastni CPU.

Tomas Mainzer tmgprs@t-email.cz
Čtvrtek Září 23 12:19:25 CEST 2004


Presne tohle je myslim cesta kterou je asi vhodne se ubirat...
...kdyz tuto koncepci zobecnite a pujdete trochu dale tak zajistite si jednu
velkou vyhodu, a to
ze registry mohou mit libovolnou delku (8b/16b/24b/32b..) a vase instrukcni
sada zustava stejna (a to treba 1 instrukce = 8bitu).

Takze treba:
pripustime rekneme 8 az 16 obecnych registru (A,B,C,D ...., PC, Flag).

A instrukcni sada se kterou uz se da neco (rozumne) delat je takova:

CLR Reg  : vynuluje registr
LoadAC  :A<-Const  - a to tak ze posune registr A a naplni jeho dolni bity
constantou (vyjde to tak na 6-7 bitu)
MovAR    : A<-Reg
MovRA    :Reg<-A
IDR  R   :A<-(Reg)
IDR W   :(Reg)<-A
NAND R: R<-A nand R
ADDC R: if Carry: R<-A+R

Kazda dalsi instrukce navic uz jenom zefektivnuje procesor (neni nezbytna) -
vhodnymi kandidaty jsou napr. INC a DEC, pripadne SETR (nastavi vsechny bity
na 1), atp.
Preruseni je nevhodnejsi asi resit prepnutim cele sady registru.

T.M.





> No ja bych mel takovy namet i kdyz primo jedna jedina instrukce to nebude
> :).
>
>
> Procesor je von Neumann architektury (pamet dat a programu spolecna) s
> rozsahem adres 64kB.
>
> Neexistuji IO porty, vse je pripojeno jako pamet.
>
> Procesor disponuje registry A,B,X,Y a priznaky C,Z,I, kde I je povoleni
> preruseni.
>
> Preruseni je jen jednourovnove s odskokem na jednu konkretni adresu a
> zasobnik pro toto jen zase pro jednu navratovou adresu a preruseni se da
> vyvolat pouze externim signalem (hranou) a to dvemi vstupy, kde oba maji
> stejny ucel, ale jeden je maskovan priznakem I (dostupnym instrukci) a
druhy
> nikoli (ale je vzdy zakazano volani preruseni v preruseni pro oba vstupy
> preruseni).
>
> CALL a RETURN jako takove neexistuji, ale daji se nahradit sadou
instrukci,
> stejne jako operace se zasobnikem, kdyz zasobnik jako takovy take
> neexistuje.
>
> Vsechny instrukce se koduji do 8b a zadna nema za sebou zadny dalsi
operand,
> tedy kazdy bajt se da provest zvlast.
>
> Aby se vesly i literaly, 8b registry se proste naplni po 4b, tedy jako
> plneni literalem spodni nebo dolni pulky registru.
>
> Skoky se provadeji tak, ze se naplni k tomu prislusne registry a skoci na
> adresu v nich obsazenou. Stejne registry X,Y se pouzivaji pro indexove
> adresovani pro vyber a zapis pameti a neexistuje jina moznost, jak z
pameti
> neco vzit ci do ni ulozit, nez s pouzitim techto indexovych registru.
>
> Vsechny instrukce jsou podminene. Tedy v kazde jsou dva bity vyhrazeny pro
> urceni kdy provest, tedy C,NC,Z,NZ.
>
> Protoze vsechny instrukce jsou podminene, existuje i instrukce negace
> priznaku, tedy kdyz udelam negaci priznaku pokud je jednickovy, je jasne,
ze
> vysledkem je vzdy smazany priznak (nebo se da i nahodit) a nasledujici
> instrukce muze byt tim padem vzdy provedena.
>
> Matematicke operace jsou ocesany ve stylu "co se tam vejde" :).
>
> Vsechny instrukce do tech 8b nacpat je docela problem a to jeste rozumne k
> co nejprimitivnejsimu dekodovani instrukci, ale uz se mi to snad nejak
> poveslo (zatim na papire) a zda se mi, ze mi nic nechybi :). Jen to musim
po
> dlouhe dobe zase vyhrabat, pokud bude zajem o tom trochu podiskutovat,
tedy
> co je nedomyslene, jak by se to dalo vylepsit atd.
>
> Znovu podotykam, melo by jit o akademickou debatu, takze nic praktickeho
od
> toho moc nelze cekat :).
>
> --
> Jiri Bezstarosti
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> HW-list@mailman.nethouse.cz
> http://mailman.nethouse.cz/mailman/listinfo/hw-list
>




Další informace o konferenci Hw-list