PIC elado
Nagy Endre
gumo at lucifer.kgt.bme.hu
Tue Apr 29 13:04:59 CEST 2003
> incf valtozo,f
>
> AVR-nel visszont egy memoriaban levo ertek megnovelese mindig megkoveteli
> a regiszterbe toltest, majd mentest.
RISC-en memoriaban levo erteken nem dolgozunk! Van eleg regiszter, hogy
a szamlalok abban legyenek.
Ha megsem lenne eleg, akkor kipakoljuk a verembe. De 1 kipakolasra juthat
tobb millio vegrehajtott ciklus...
Raadasul a regiszter memoriacimkent is elerheto, tehat ha valaki
ragaszkodik a memoriahoz, hasznalja a regiszter memoriabeli cimet, es
akkor nem kell betolteni. (Hasonloan a PIC "memoriajahoz".)
> >PIC:
> > movf b,w
> > addwf c,w
> > movwf a
> >
> >AVR:
> > lds rega, a
> > lds regb, b
> > add rega, regb
> > sts c, rega
> >
> > Ugyanaz. A PIC-ben nem toltod fel a regisztereket, az AVR-ben igen.
>
> Dehogyisnem toltom.
> Az elso utasitas a "b" valtozom betoltese, az utolso pedig az eredmeny ("a") elmentese.
Gyakorlatilag regiszterbol az akkumulatorba. De AVR-en ez elmarad, minden
regiszteren vegezhetunk muveletet. Nem kell sem oda, sem vissza tolteni.
Ezert nem jo a pelda. Helyesen:
mov c,a
add c,b
Ez 2 utasitas, osszesen 2 orajel.
> A ket utasitas sor eredmenye teljesen azonos. A memoriaban levo ket valtozo erteket
> osszeadja, es tarolja egy harmadikban.
A PIC register file az AVR regisztereivel merheto ossze. Az csak extra,
hogy az AVR-en nem eddig tart a vilag.
> VFX vette a faradsagot es kikereste az App note-ok kozul, tehat az
> osszehasonlitas vegeredmenye:
>
> PIC AVR
> prog. mem. 32 25
> data mem. 6 -
> reg 1 ;-) 9
> clock 406 751-768
Az algoritmus nem azonos, ezert nem osszemerheto. Az AVR eseten ezt
valoszinuleg meretre optimalizaltak. De lehetett volna sebessegre is, es
akkor a PIC csunyan lemaradna. (Csak a BCD konverzio tipikusan az az eset,
ahol nem szamit a sebesseg.)
Gumo
More information about the Elektro
mailing list