Uz zase vlastni CPU :).

Tomas Mainzer tmgprs@t-email.cz
Čtvrtek Říjen 7 23:50:18 CEST 2004


mozna jsem neco nepostrehl, ale zda se mi, ze:
- neni nijak reseno MOV (adr)<-konstanta (tedy naplneni "pameti" konstantou)
- nefunguji rekurze (coz nevadi), ale z preruseni nelze volat funkci kterou
nekde vola program (coz uz trosku muze)
- neni reseno neprime adresovani (napr. pro pole, lokalni promenne funkce
atp.)
  - i kdyz samozrejme lze resit budto samomodifikujicim se programem
  - nebo pridanim prislusne instrukce (ale asi to zase zkouplikuje ten
uzasny popis hratek s RD/WR;-)
T.M.


----- Original Message ----- 
From: "Jiri Bezstarosti" <jiri@bezstarosti.cz>
To: "[HWnews]" <hw-list@mailman.nethouse.cz>
Sent: Thursday, October 07, 2004 11:19 PM
Subject: Re: Uz zase vlastni CPU :).


> Uz jsem tomu dal i jmeno: MYF32. A protoze je tady, kdyz ctu co se pise k
> tematu, otazek vice, zkusim tady odpovedet na vsechno zaroven :).
>
> Tedy v minimalni verzi by mely stacit instrukce:
>
> ADDC, IOR, XOR, AND, SHR, SHL, MOV, RETI
>
> priznaky jen Z a C a skok dle vyberu dle Z ci C na dve ruzne adresy, tedy
> funguje stejne dobre NZ a NC kdyz se adresy prohodi.
>
> Mozna by si to zaslouzilo jeste trochu vysvetlit, jak si to cele
> predstavuju, pak se to cteni a zapisy treba nebudou zdat tak hrozive :).
>
> Adresovka ma 28b a datovka 32b. Kazda instrukce se sklada ze 4x 32b
ctenych
> po 32b.
>
> Prvnich 32b - 4b typ instrukce, 28b adresa prvniho operandu
>
> Druhych 32b - 4b typ instrukce, 28b adresa druheho operandu a adresa pro
> ulozeni vysledku
>
> Tretich 32b - 26b prvni adresa pro skok bez spodnich 2 bitu - instrukce
> zarovnany na adresy delitelne 4
>
> Ctvrtych 32b - 26b prvni adresa pro skok bez spodnich 2 bitu
>
> Pracuje to tak, ze vezme adresu prvniho operandu z datove sbernice a
rovnou
> s ni na adresovku, tedy co je z toho adresa a nejvyssi bity si naberu jako
> typ instrukce. Data operandu bere ihned za tim, protoze nemusi cvicit
> signalem /RD, ale dalsi takt ta data proste nabere. Doplnenim neceho co by
> slo nazvat PC o "01" na konec a vyslanim na adresovku a naslednym nabranim
> dat naberu druhy operand a take typ instrukce uz mam kompletni, treba 8bit
> na typ instrukce. Mam 4 takty a 4x jsem cetl, s RD jsem zatim nehnul,
stale
> bylo /RD aktivni. Na datovce mam stale druhy operand, takze nemusim ho
nikam
> davat a rovnou provedu matematiku, pak nahodim /RD do neaktivna, dam
> vysledek na datovku a pak shodim /WR a nemusim se starat o adresu, protoze
> ta tam stale je od nabrani hodnoty toho druheho operandu a je to zaroven
> adresa, kam se uklada. /WR jde do neaktivna, datovka do vysoke impedance.
> Ted nahodim /RD a na adresovku podle priznaku Z ci C dam PC & "10" nebo PC
&
> "11". Naberu data, soupnu je do PC a na adresovku a mohu jet dalsi
> instrukci, pricemz /RD uz je aktivni v nultem cyklu instrukce, tedy mohu
> rovnou cist.
>
> No a preruseni jen jednoduche a to ulozenim adresy kam se aktualne skace z
> prave provedene instrukce a k tomu z celkoveho schematu vybocujici
instrukce
> RETI, ktera nebere nic krome typu instrukce v potaz a skoci na navratovou
> adresu. Zavedenim uchovani priznaku se vrati i tyto ulozene, protoze
> instrukce treba XOR muze ovlivnovat jen Z, ale skakat se v ni muze i podle
> C, tedy dle toho, jak bylo C nastaveno drive :).
>
> Myslim, ze tento pristup by mohl setrit zdroje pro CPU dost podstatne -
> pamatuje si opravdu jen to nutne. A dokonce jsem usetril i pricitani PC,
> protoze ja ho jen sproste nabiram z pameti. Tedy kazda instrukce ma skok
> jako "rozdvojku" a nepodmineny skok na dalsi instrukci je pak tak, ze jsou
> obe ty adresy kam skocit shodne.
>
> Tato architektura navic dava moznost snadno sestavovat v RAM instrukce a
> tedy si udelat mraky smerniku. Zrovna tak je mozne si udelat odskoky do
> podprogramu, kdyz si nekam ulozim kam se ma vracet z podprogramu a to
jeste
> na nekolikrate, takze to nakonec bude plnohodnotny stack a to klidne i
> nekolik, ale stara se o to jen program, CPU samotnemu je to fuk.
>
> K tomu poctu taktu. Bezny CPU stejne musi nacist data do registru a pak je
> zapsat, jen muze operovat nekolika ctenimi s jednim registrem, tedy setri
> zapisy, ci zapisuje nekolikrate jednu vec a setri tak cteni. Jenze kdyz ja
> tim systemem cteni vim ze ctu nekolik adres za sebou, nemusim zbytecne
> cvicit signalem /RD jak strhany. Proste necvicim se vsim jak strhany a
tedy
> nekdy provedu cteni ci zapis jako by navic, ale vlastne delam jako by vice
> instrukci za ty takty, tedy cteni-cteni-modifikace-zapis-podmineny_skok.
Co
> nemohu, je mit frontu instrukci a delat jako by jednu instrukci za jeden
> takt - to diky vecnemu pouzivani pameti a sdileni dat a programu v jedne
> pameti asi nejde.
>
> No a ze v te nejjednodussi variante neco chybi ? Je tam vse podstatne a
> pokud se to slusne vejde do FPGA (jako ze to bude legrace pro male deti),
> pak prece neni problem to rozsirit, kdyz mame na typ instrukce 8b a 1b z
> toho rozlisuje zda se skace dle Z ci C, takze az 128 ruznych typu
instrukci
> :).
>
> K domysleni jiste jeste neco chybi, ze bych neco taky nedomyslel si
nedelam
> iluze a ani jsem nenapsal sve myslenky komplet, to je mozna na knihu.
>
> Predpokladam to nacpat do SPARTAN2, ponevadz uz XC2S200 a XC2S50 mam :).
>
> --
> Jiri Bezstarosti
>
>
>
> ----- Original Message -----
> From: "Danhard" <danhard@volny.cz>
> To: "[HWnews]" <hw-list@mailman.nethouse.cz>
> Sent: Thursday, October 07, 2004 5:49 PM
> Subject: Re: Uz zase vlastni CPU :).
>
>
> > No protoze za tim vidim spis tu realizaci, tak se Jiri ptam, cim chces
> > realizovat tu 32 bitovou aritmetiku, a co by mela umet ?
> >
> > Danhard
>
>
>
>
>
>
>
>
>
> _______________________________________________
> 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