PIC vs ATMEL #2

Füzesi Arnold arno at freemail.hu
Thu Feb 12 01:08:15 CET 2004


Pl a cimzesmod, utasitasok viszonyának kialakitasa.
Nezd meg a 32 bites hitacsik utasitaskeszletet.

Pl:
Egy ram cimen levo adat betoltese:
pointer betoltese
utasitas vegrehajtasa, amelyik az elobbi pointer altal mutatott cimen levo
valtozot tolti be.

Tipikusan "adjuk a C fordito ala procit"

Emberi fogyasztasra van ennel alkalmasabb is, de a forditonak ez nagyon
kenyelmes.
Sebesseggel meg nincs gond tul nagy, mert egyszer inicializal, aztan kesz.
Noveli csokkenti a pointert, mikozben ir-olvas.
Asszem mar az atmega-ban is van ilyen.
Hatekonyan tud vele trukkozni jobbra-balra.
Erosen megkozelitve a kezzel irt program hatekonysagat kisebb procikon, 32
biteseken meg egyertelmuen
a fordito a nyero. (Nem a 32 bit miatt, hanem azoknal meginkabb tobb ilyen C
fordito szamara kellemes dolog van)

delay-ed branch is ilyen.
Az ugro utasitas utani utasitast meg vegrehajtja a proci.
(Valszeg ha mar benn van a pipeline-ban alapon.)

Ide tervezni embernek asm utasitast ongyilkossag...(karbantartas=0 esellyel
megy csak gyorsan)
Vagy nop-ot tesz (pocsekolas), vagy a fordito betesz valamit, amit nem is
gondolnank, hogy ide kellene tenni.
Pedig De.

Tudom, ez edeskeves, de sok ilyen apro dologbol osszeall, hogy a fordito
megeszi reggelire a gyakorlott asm programozot is.
Sok peldat nem tudok most mondani, mivel nem ezzel foglalkozom.
De ha majd egyszer netan beleasom magam, vagy osszefutok valakivel a
suliban, akkor megirom a brutalisabb dolgokat.

Emlitett VLIW DSP-k egyebkent szinten hasonlok.
ASM-ben nem lehet kihasznalni!!!! azokat.
Programozni lehet, de kihasznalni nem.

Mint emlitettem volt volt egy targyam suliban, ahol a tanar mutatott egy
VLIW DSP-re irt kodbol keszult folyamatabrat.
Elkepeszto volt, en meg se ertettem teljesen, ki kivel is dolgozik ossze a
parhuzamos mukodes kozben. Pedig folyamatabra volt nem is a kod maga.
Tele volt kulonbozo hosszusagu parhuzamosan futo loop-al a kod.
Par soros digit szuronel tok jo, lehet asm-ben is nyomni. De bonyolultabb
algoritmusnal
nincs ember a talpan aki egy 128-256 bit szeles proci ciklusonkenti
parhuzamosan 8-16 vegrehajtott utasitasait megerti/felfogja 20-30 cikluson
tul.
Amit egy fordito generalt....Jobbat  irni meg csak akkor tud, ha egy papirra
rajzolja mit csinal a proci adott helyzetben.
Folyamatabra, vagy graf formajaban. Merthogy nem kepes "adminisztralni"
(ertsd megjegyezni) az ember az utasitas egymasrahatasokat kodolas kozben
fejben.
Illetve megforditom a dolgot. Olyan hatekony kodot tud irni, amennyi dolgot
parhuzamosan eszben tud tartani.
Ez meg lassuk be korlatos. Mig egy programnak nem az.

Arnold
----- Original Message ----- 
From: "VFX" <info at vfx.hu>
To: <elektro at tesla.hu>
Sent: Wednesday, February 11, 2004 11:31 PM
Subject: Re: PIC vs ATMEL #2


> Hali!
>
>
> > Megneztem hogy a C fordito milyen kodot generalt, ha mar benne vagyok
> > nyakig.
> > Elsirtam magam. Ugy trukkozik a delayed branch utasitasokkal, meg a
> > cimzesekkel,hogy orulet.
> > Teljesen C-re van optimalizalva a proci.
>
> ????
> Es C nyelven is hajtja vegre :) Mitol van egy proci C-re, fortranra,
> cobolra, asmre, javara optimalizlva?
>
>
> > A masik a VLIW (jellemzoen DSP)procik. Azokat meg nem is lehet
hatekonyan
> > asm-ben
> > programozni.
>
> Miert is nem?
>
> > Volt egy Digitalis jelfeldolgozo processzorok targyam a suliban, es az
> > eloado mutatott peldat.
> > Elkepeszto, miket meg lehet csinalni vele.Parhuzamos utasitasok, olyan
> > utasitas egymasrahatasok, aminek
> > a kovetkezmenye elkepesztoen hatekony kod.
>
> Parhuzamos utasitasok, egymasra hataso stb:
> (es meg csak egy alut hasznaltunk, a masodikat meg sem piszkaltuk, mert
> hogy tobb is lehet egy procinak :)
> [...]
> lcntr=N/4,      do fstage until lce;    /* do N/4 simple radix-4
> butterflies */
> f12=f2+f7,      f13=f2-f7,      f0=dm(i0,m0),   f1=pm(i8,m8);
> f14=f3+f6,      f15=f3-f6,      f2=dm(i2,m0),   f3=pm(i10,m8);
> f0=f0+f2,       f2=f0-f2,       f4=dm(i1,m0),   f5=pm(i9,m8);
> f1=f1+f3,       f3=f1-f3,       f6=dm(i3,m0),   f7=pm(i11,m8);
> f4=f6+f4,       f6=f6-f4,       dm(i4,m0)=f8,   pm(i12,m8)=f10;
> f5=f5+f7,       f7=f5-f7,       dm(i5,m0)=f9,   pm(i13,m8)=f11;
> f8=f0+f4,       f9=f0-f4,       dm(i6,m0)=f12,  pm(i14,m8)=f14;
> fstage:
> f10=f1+f5,      f11=f1-f5,      dm(i7,m0)=f13,  pm(i15,m8)=f15;
> [...]
> Mint latszik szepen lehet a parhuzamos utsitasokat is asm-ben kezelni.
> Szoval nem csak a C tudja, es szerintem a C fordito elso nekifutasra nem
> is generalna ilyen kodot (kiprobalni nem tudom, nincs C forditom es nem
> is ertek hozza).
>
> UDV. VFX.
> htttp://www.vfx.hu
>
>
>
>
>



More information about the Elektro mailing list