Uz zase vlastni CPU :).

Jiri Bezstarosti jiri@bezstarosti.cz
Sobota Říjen 9 10:24:43 CEST 2004


> Poznamka k realizaci - tady Jirko uvadis jako vyhodu ze nemusis zbesile
cvicit
> s RD a WR signaly,
> takovy pristup, jak tu mas umoznuji ale jenom staticke asynchronni RAM

Ano, ale predpokladam, ze u jinych RAM budu moci cvicit hodne rychle a
nebudu tak tuhle usporu potrebovat. Nicmene pro zacatek bych se spokojil
prave s rychlymi SRAM.

> Instrukce ktere modifikuji instrukcni kod, tady adresu skoku, musi byt
nutne
> provozovany z RAM pameti.
> Takova subrutina s doprednou modifikaci nemuze byt volana z interruptu,
> protoze kdyz vyvolas interrupt mezi pripravou a skokem, tak ji pouzitim
> prepises.

Mam nejake misto v RAM. Tam mam instrukci, ve ktere je uvedena adresa mista,
kde mam vzit udaj ze zasobniku. Tedy ta jedna instrukce to misto vezme a
zapise te druhe instrukci do mista kam ma skocit.

Behem skoku na tu druhou instrukci dojde k preruseni a tedy ulozeni noveho
stavu PC (jako by uz ta instrukce skocila na tu druhou) do HW stacku s
jednim mistem - ten jednomistny stack je jen a jen pro preruseni. Preruseni
se provede a nesaha se v nem na ty dve instrukce ani na ta data ve stacku a
pokud potrebuje preruseni nejake podprogramy, tak si proste udela svuj soft
stack a to jeste klidne tak, ze si odlozi ty dve instrukce v RAM, nahradi
novymi a po skonceni preruseni je tam zase vrati. Po skonceni preruseni se
odskoci na tu druhou instrukci soft stacku a ta udela presne co ma, tedy
posune ukazatel v te prvni instrukci a skoci presne kam ma. Zakladem proste
je, ze preruseni nesaha na ten soft stack a pokud ano, nahrazuje jej svym.

Jinak instrukce povoleni/zakazu preruseni nemam, vsechno melo byt
nemaskovatelne a preruseni by se dalo, kde lze, vypnout primo zapsanim
neceho do periferie mapovane v pametovem prostoru (at ho proste negeneruje -
vygatovat ho). Ale kdyz uz jsem u toho plytvani, muze klidne kazda instrukce
nest jeden bit, zda muze byt prerusena ci nikoli. Mohu mit preruseni na 2
pinech, tedy maskovatelne a nemaskovatelne, pricemz se ale chovaji jako
jedno, jen to jsou 2 piny vstupu a jedno druhe neni schopno nikdy prerusit,
pricemz o co jde si musi CPU precist v obsluze preruseni z periferii :).

S prioritami preruseni si uz do bot nadelali i lepsi borci, takze pro
zacatek je jedno az nad hlavu i kdyz ma jednu nohu s moznosti zakazu a
druhou tvrde - to moc slozite nevypada.

Nebo ze by 2x HW stack pro kazde preruseni a nemaskovatelne vyssi ? Trochu
bojim :).

--
Jiri Bezstarosti













Další informace o konferenci Hw-list