Flytte Gjennomsnittet Filter Maskinvare


Forskeren og ingeniørerveiledningen til digital signalbehandling av Steven W. Smith, Ph. D. Kapittel 4: DSP-programvare Utførelseshastighet: Maskinvare Computing-kraften øker så raskt. En hvilken som helst bok om emnet vil bli foreldet før den publiseres. Det er et forfatters mareritt Den opprinnelige IBM PC ble introdusert i 1981, basert på 8088 mikroprosessoren med en 4,77 MHz klokke og en 8-bits databuss. Dette ble etterfulgt av en ny generasjon personlige datamaskiner som ble introdusert hvert 3-4 år: 8088 rarr 80286 8594 80386 8594 80486 8594 80586 (Pentium). Hvert av disse nye systemene økte databehandlingshastigheten med en faktor på omtrent fem over den forrige teknologien. I 1996 hadde klokkefrekvensen økt til 200 MHz, og databussen til 32 bits. Med andre forbedringer resulterte dette i en økning i datakraft på nesten tusen på bare 15 år. Du bør forvente en annen faktor på tusen i de neste 15 årene. Den eneste måten å oppnå oppdatert informasjon i dette raskt skiftende feltet, er direkte fra produsentene: annonser, spesifikasjonsark, prislister, etc. Glem bøker for resultatdata, se i magasiner og din daglige avis. Forvent at den raske beregningshastigheten vil mer enn doble hvert to år. Å lære om dagens tilstand av datakraft er ganske enkelt ikke nok du trenger å forstå og spore hvordan det utvikler seg. Med dette i bakhodet kan vi hoppe inn i en oversikt over hvordan kjørehastigheten begrenses av maskinvare. Siden datamaskiner består av mange delsystemer, vil tiden for å utføre en bestemt oppgave avhenge av to primære faktorer: (1) hastigheten til de enkelte delsystemene, og (2) tiden det tar å overføre data mellom disse blokkene. Figur 4-5 viser et forenklet diagram over de viktigste hastighetsbegrensende komponentene i en typisk persondatamaskin. Den sentrale behandlingsenheten (CPU) er hjertet av systemet. Som tidligere beskrevet består den av et dusin eller så registre, som hver kan holde 32 bits (i nåværende generasjons personell datamaskiner). Også inkludert i CPU er den digitale elektronikken som trengs for rudimentære operasjoner, som for eksempel flytting av biter rundt og fastpunkt aritmetisk. Mer involvert matematikk håndteres ved å overføre dataene til en spesiell maskinvarekrets som kalles en mattekoprosessor (også kalt en aritmetisk logisk enhet eller ALU). Matteprosessoren kan være inneholdt i samme chip som CPU, eller det kan være en separat elektronisk enhet. For eksempel vil tillegget av to flytende punktnumre kreve at CPUen overfører 8 byte (4 for hvert tall) til mattekoprosessoren, og flere byte som beskriver hva de skal gjøre med dataene. Etter en kort beregningstid, vil mattekoprosessoren sende fire byte tilbake til CPU, som inneholder flytpunktet som er summen. De rimeligste datasystemene har ikke en matteprosessor, eller gir den bare som et alternativ. For eksempel har 80486DX mikroprosessoren en intern matteprosessor, mens 80486SX ikke gjør det. Disse lavere ytelsessystemer erstatter maskinvare med programvare. Hver av de matematiske funksjonene er brutt i elementære binære operasjoner som kan håndteres direkte i CPU. Selv om dette gir det samme resultatet, er utførelsestiden mye langsommere, det vil si en faktor på 10 til 20. Mest personlig dataprogramvare kan brukes med eller uten en matteprosessor. Dette oppnås ved å ha kompilatoren generere maskinkode for å håndtere begge tilfeller, alle lagret i det endelige kjørbare programmet. Hvis en matte coprocessor er tilstede på den bestemte datamaskinen som brukes, vil en del av koden bli kjørt. Hvis en matte coprocessor ikke er tilstede, vil den andre delen av koden bli brukt. Kompilatoren kan også rettes til å generere kode for bare en av disse situasjonene. For eksempel vil du av og til finne et program som krever at en matte coprocessor er tilstede, og vil krasje hvis det kjøres på en datamaskin som ikke har en. Programmer som tekstbehandling vanligvis ikke dra nytte av en matte coprocessor. Dette skyldes at de innebærer å flytte data rundt i minnet, ikke beregningen av matematiske uttrykk. På samme måte påvirkes ikke beregninger med faste punktvariabler (heltall) av tilstedeværelsen av en matteprosessor, siden de håndteres i CPU. På den annen side kan utførelseshastigheten til DSP og andre beregningsprogrammer som bruker flytende punktberegninger, være en størrelsesorden forskjellig med og uten en matteprosessor. CPU og hovedminne er inneholdt i separate chips i de fleste datasystemer. Av åpenbare grunner vil du at hovedminnet skal være veldig stort og veldig raskt. Dessverre gjør dette minnet veldig dyrt. Overføringen av data mellom hovedminne og CPU er en svært vanlig flaskehals for fart. CPUen spør hovedminnet for binær informasjon ved en bestemt minneadresse, og må da vente på å motta informasjonen. En vanlig teknikk for å løse dette problemet er å bruke en minnebuffer. Dette er en liten mengde veldig raskt minne som brukes som buffer mellom CPU og hovedminne. Noen få hundre kilobytes er typisk. Når CPU ber om hovedminne for å gi binærdataene til en bestemt adresse, kopierer høyhastighets digitalelektronikk en del av hovedminnet rundt denne adressen i minnekachen. Neste gang CPUen krever minneinformasjon, er det meget sannsynlig at det allerede vil være inneholdt i minnesbufferen, noe som gjør henting svært rask. Dette er basert på det faktum at programmer har en tendens til å få tilgang til minnesteder som er nærliggende naboer av tidligere tilgjengelige data. I typiske personaldataprogrammer kan tilsetningen av en minnebuffer flere ganger forbedre totalhastigheten. Minnebufferen kan være i samme chip som CPU, eller det kan være en ekstern elektronisk enhet. Hastigheten ved hvilken data kan overføres mellom delsystemer, avhenger av antall parallelle datalinjer som er oppgitt, og maksimalhastigheten de digitale signaler som kan sendes langs hver linje. Digitale data kan generelt overføres med en mye høyere hastighet innenfor en enkelt chip i forhold til overføring av data mellom chips. På samme måte vil dataveier som må passere gjennom elektriske kontakter til andre trykte kretskort (det vil si en bussstruktur) være langsommere fremdeles. Dette er en sterk motivasjon for å fylle så mye elektronikk som mulig inne i CPU. Et spesielt styggt problem for datahastighet er bakoverkompatibilitet. Når et dataselskap introduserer et nytt produkt, si et datakjøpskort eller et program, vil de selge det til det største markedet. Dette betyr at den må være kompatibel med de fleste datamaskiner som er i bruk, som kan spenne over flere generasjoner av teknologi. Dette begrenser ofte ytelsen til maskinvaren eller programvaren til en meget eldre system. For eksempel, anta at du kjøper et IO-kort som plugger inn i bussen på din 200 MHz Pentium-PC, og gir deg åtte digitale linjer som kan overføre og motta data en byte om gangen. Deretter skriver du et forsamlingsprogram for raskt overføring av data mellom datamaskinen og en ekstern enhet, for eksempel et vitenskapelig eksperiment eller en annen datamaskin. Til stor overraskelse er maksimal dataoverføringshastighet bare rundt 100 000 byte per sekund, mer enn tusen ganger langsommere enn mikroprosessorens klokkefrekvens. Skurken er ISA-bussen, en teknologi som er bakoverkompatibel med datamaskinene i begynnelsen av 1980-tallet. Tabell 4-6 gir kjøretid for flere generasjoner av datamaskiner. Åpenbart bør du behandle disse som svært grove tilnærminger. Hvis du vil forstå systemet, må du ta målinger på systemet. Det er ganske enkelt å skrive en sløyfe som utfører en million av en del operasjon, og bruk klokka til tiden hvor lang tid det tar. De tre første systemene, 80286, 80486, og Pentium, er de personlige skrivebordsmodellene i henholdsvis 1986, 1993 og 1996. Den fjerde er en mikroprosessor fra 1994 designet spesielt for DSP-oppgaver, Texas Instruments TMS320C40. Pentium er raskere enn 80286-systemet av fire grunner, (1) jo større klokkehastighet, (2) flere linjer i databussen, (3) tillegg av en minnebuffer og (4) et mer effektivt internt design, krever færre klokkeslett per instruksjon. Hvis Pentium var en Cadillac, ville TMS320C40 være en Ferrari: mindre komfort, men blendende fart. Denne brikken er representativ for flere mikroprosessorer som er spesielt utviklet for å redusere eksekveringstiden til DSP-algoritmer. Andre i denne kategorien er Intel i860, ATampT DSP3210, Motorola DSP96002 og Analog Devices ADSP-2171. Disse går ofte etter navnet: DSP mikroprosessor. eller RISC (datamaskin med nedsatt instruksjonsinnstilling). Dette etternavnet gjenspeiler at økt hastighet skyldes at færre monteringsnivåanvisninger blir gjort tilgjengelig for programmereren. Til sammenligning kalles mer tradisjonelle mikroprosessorer, som Pentium, CISC (Complex Instruction Set Computer). DSP mikroprosessorer brukes på to måter: som slave moduler under kontroll av en mer vanlig datamaskin, eller som en innebygd prosessor i en dedikert applikasjon, for eksempel en mobiltelefon. Noen modeller håndterer bare faste punktnumre, mens andre kan fungere med flytpunkt. Den interne arkitekturen som brukes til å oppnå økt hastighet inkluderer: (1) mange veldig hurtigbufferminne inneholdt i brikken, (2) separate busser for programmet og dataene, slik at de to kan nås samtidig (kalt Harvard Architecture), (3) rask maskinvare for matematiske beregninger inneholdt direkte i mikroprosessoren, og (4) en rørledningsdesign. En rørledningsarkitektur bryter maskinvaren som kreves for en bestemt oppgave i flere påfølgende trinn. For eksempel kan tilsetningen av to tall gjøres i tre rørledningstrinn. Den første fasen av rørledningen gjør ingenting annet enn å hente tallene som skal legges fra minnet. Den eneste oppgaven i den andre fasen er å legge til de to tallene sammen. Den tredje fasen gjør ingenting, men lagrer resultatet i minnet. Hvis hvert trinn kan fullføre oppgaven i en enkelt klokke-syklus, vil hele prosessen ta tre klokke-sykluser for å utføre. Nøkkelfunksjonen i rørledningsstrukturen er at en annen oppgave kan startes før den forrige oppgaven er fullført. I dette eksemplet kan vi begynne å legge til ytterligere to tall så snart første etappe er tomgang, på slutten av den første klokke-syklusen. For et stort antall operasjoner blir systemets hastighet sitert som ett tillegg per klokke syklus, selv om tilsetningen av noen to tall krever tre klokke-sykluser å fullføre. Rørledninger er gode for fart, men de kan være vanskelige å programmere. Algoritmen må tillate en ny beregning å begynne, selv om resultatene fra tidligere beregninger ikke er tilgjengelige (fordi de fortsatt er i rørledningen). Scientist og Engineers Guide til Digital Signal Processing av Steven W. Smith, Ph. D. Kapittel 6: Konvolusjon La oss oppsummere denne måten å forstå hvordan et system endrer et inngangssignal til et utgangssignal. For det første kan inngangssignalet dekomponeres i et sett med impulser, som hver kan ses som en skalert og skiftet delta-funksjon. For det andre er utgangen som følger av hver impuls en skalert og skiftet versjon av impulsresponsen. For det tredje kan det totale utgangssignalet bli funnet ved å legge til disse skalerte og skiftede impulsresponsene. Med andre ord, hvis vi kjenner et systemimpulsrespons, kan vi beregne hva utgangen vil være for ethvert mulig inngangssignal. Dette betyr at vi vet alt om systemet. Det er ikke noe mer som kan læres om en lineær systemegenskaper. (I senere kapitler vil vi imidlertid vise at denne informasjonen kan representeres i forskjellige former). Impulsresponsen går av et annet navn i enkelte applikasjoner. Hvis systemet vurderes er et filter. impulsresponsen kalles filterkjernen. konvolusjonskjernen. eller bare kjernen. Ved bildebehandling kalles impulsresponsen punktspredningsfunksjonen. Mens disse begrepene brukes på litt forskjellige måter, betyr de alle det samme, signalet som produseres av et system når inngangen er en delta-funksjon. Konvolusjon er en formell matematisk operasjon, akkurat som multiplikasjon, tillegg og integrasjon. Tillegget tar to tall og produserer et tredje nummer. mens konvolusjon tar to signaler og produserer et tredje signal. Konvolusjon brukes i matematikken i mange felt, for eksempel sannsynlighet og statistikk. I lineære systemer brukes konvolusjon for å beskrive forholdet mellom tre signaler av interesse: inngangssignalet, impulsresponsen og utgangssignalet. Figur 6-2 viser notasjonen når konvolusjon brukes med lineære systemer. Et inngangssignal, x n, går inn i et lineært system med en impulsrespons, h n, noe som resulterer i et utgangssignal, y n. I ligningsform: x n h n y n. Uttrykt i ord, er inngangssignalet som er forbundet med impulsresponsen lik utgangssignalet. Akkurat som addisjon er representert av pluss,, og multiplikasjon ved korset, er tiden convolution representert av stjernen,. Det er uheldig at de fleste programmeringsspråk også bruker stjernen til å indikere multiplikasjon. En stjerne i et dataprogram betyr multiplikasjon, mens en stjerne i en ligning betyr konvolusjon. Figur 6-3 viser konvolusjon som brukes til lavpass og høypassfiltrering. Eksempelinngangssignalet er summen av to komponenter: tre sykluser av en sinusbølge (som representerer en høy frekvens), pluss en sakte stigende rampe (sammensatt av lave frekvenser). I (a) er impulsresponsen for lavpassfilteret en jevn bue, noe som resulterer i at bare den langsomt skiftende rampebølgeformen sendes til utgangen. På samme måte tillater høypassfilteret (b) bare at den raskere endrede sinusformen skal passere. Figur 6-4 illustrerer to ekstra eksempler på hvordan konvolusjon brukes til å behandle signaler. Den inverterende demperen, (a), flipper signalet øverst for bunn og reduserer dens amplitude. Det diskrete derivatet (også kalt den første forskjellen), vist i (b), resulterer i et utgangssignal relatert til hellingen til inngangssignalet. Legg merke til lengdene på signalene i fig. 6-3 og 6-4. Inngangssignalene er 81 prøver lange, mens hver impulsrespons består av 31 prøver. I de fleste DSP-applikasjoner er inngangssignalet hundrevis, tusen eller til og med millioner av prøver i lengden. Impulsresponsen er vanligvis mye kortere, si noen få poeng til noen få hundre poeng. Matematikken bak konvolusjon begrenser ikke hvor lenge disse signalene er. Det angir imidlertid lengden på utgangssignalet. Lengden på utgangssignalet er lik lengden på inngangssignalet, pluss lengden på impulsresponsen, minus en. For signalene i fig. 6-3 og 6-4, hvert utgangssignal er: 81 31 - 1 111 prøver langt. Inngangssignalet går fra prøve 0 til 80, impulsresponsen fra prøve 0 til 30, og utgangssignalet fra prøve 0 til 110. Nå kommer vi til den detaljerte matematikk av konvolusjon. Som brukt i Digital Signal Processing, kan konvolusjon forstås på to separate måter. Den første ser på convolution fra inngangssignalets synspunkt. Dette innebærer å analysere hvordan hver prøve i inngangssignalet bidrar til mange punkter i utgangssignalet. Den andre måten ser på konvolusjon fra utsiktspunktet til utgangssignalet. Dette undersøker hvordan hver prøve i utgangssignalet har mottatt informasjon fra mange punkter i inngangssignalet. Husk at disse to perspektiver er forskjellige måter å tenke på den samme matematiske operasjonen. Det første synspunktet er viktig fordi det gir en konseptuell forståelse av hvordan konvolusjonen angår DSP. Det andre synspunktet beskriver konvoluttens matematikk. Dette tyder på en av de vanskeligste oppgavene du vil møte i DSP: gjør din konseptuelle forståelse tilpasning med matematikkens jumble som brukes til å kommunisere ideene. Eksponentiell Moving Average (EMA) Forklart Som vi sa i forrige leksjon, kan enkle bevegelige gjennomsnitt være forvrengt av pigger. We8217ll starter med et eksempel. Let8217s sier at vi plotter en 5-årig SMA på det daglige diagrammet på EURUSD. Sluttprisene for de siste 5 dagene er som følger: Det enkle glidende gjennomsnittet beregnes som følger: (1.3172 1.3231 1.3164 1.3186 1.3293) 5 1.3209 Enkel nok, vel Vel, hva om det var en nyhetsrapport på dag 2 som forårsaker euroen å slippe over bordet. Dette får EURUSD til å stupe og lukke ved 1.3000. Let8217s se hvilken effekt dette ville ha på 5-tiden SMA. Det enkle glidende gjennomsnittet vil bli beregnet som følger: Resultatet av det enkle glidende gjennomsnittet ville være mye lavere, og det ville gi deg ideen om at prisen faktisk gikk ned, da i virkeligheten var dag 2 bare en engangsaktivitet forårsaket av de dårlige resultatene av en økonomisk rapport. Poenget vi prøver å gjøre er at noen ganger det enkle glidende gjennomsnittet kan være for enkelt. Hvis det bare var en måte at du kunne filtrere ut disse pigger, slik at du ikke ville få feil ide. Hmm8230 Vent et øyeblikk8230 Yep, det er en måte It8217s kalt eksponentielle Moving Average Exponential moving average (EMA) gir mer vekt til de siste perioder. I vårt eksempel ovenfor vil EMA legge mer vekt på prisene på de siste dagene, som ville være dag 3, 4 og 5. Dette ville bety at spissen på dag 2 ville være mindre verdi og wouldn8217t ha så stor en effekt på glidende gjennomsnitt som det ville hvis vi hadde beregnet for et enkelt glidende gjennomsnitt. Hvis du tenker på det, gir dette mye mening fordi det som gjør dette, legger det større vekt på hva handelsmenn gjør nylig. Eksponentiell Moving Average (EMA) og Simple Moving Average (SMA) Side ved side Let8217s ta en titt på 4-timers diagrammet for USDJPY for å markere hvordan et enkelt glidende gjennomsnitt (SMA) og eksponentielt glidende gjennomsnitt (EMA) vil se side om side på et diagram. Legg merke til hvordan den røde linjen (30 EMA) ser ut til å være nærmere pris enn den blå linjen (30 SMA). Dette betyr at det representerer mer nøyaktig ny prishandling. Du kan sikkert gjette hvorfor dette skjer. Det er fordi det eksponentielle glidende gjennomsnittet legger større vekt på hva som har skjedd i det siste. Når det handler om handel, er det langt viktigere å se hva handelsmenn gjør nå, hva de gjorde sist uke eller i forrige måned. Lagre fremgangen din ved å logge inn og merke leksjonen fullstendig

Comments

Popular Posts