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