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