Hastigheter mellan PC och uC?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Hastigheter mellan PC och uC?

Inlägg av Al_Bundy »

Findecanor skrev:Om det är riktigt mycket data så spelar det roll i vilken ordning man läser och skriver minne: så att man utnyttjar cachen bra. Och då spelar det roll vad den har för vidd och storlek.
Det kan finnas olika optimala gränsvärden för olika dimensioner av dina arrayer i minnet beroende på hur cachen ser ut på just den processor som du använder.
Det är en anledning till att din mätning på din Celeron-processor inte går att jämföra direkt.

Om det är mycket flyttalsberäkningar så spelar det roll hur koden är kompilerad och hur många flyttalsoperationer processorn kan göra samtidigt. Dagens kompilatorer för x86-64 och AArch64 producerar kod för snabba vektorenheter medans äldre kompilatorer för x86-32 och 32-bittars ARM producerade kod som använder en äldre flyttalsenhet.
Stödjer mikrocontrollern flyttal överhuvudtaget? Om inte, så måste alla flyttalsoperationer emuleras i mjukvara, vilket skulle bli riktigt långsamt. Om talen du hanterar håller sig inom vissa gränser och du inte behöver både precision och ett stort intervall så vore det i så fall bättre att skriva om koden att räkna med "fixed-point" istället.

Föresten, överlag när man gör prestandatester så brukar man inte testa bara en körning, utan ett lagom antal körningar som man sedan beräknar medelvärde av.
Vad tror du om ett sådant kort?
https://os.mbed.com/platforms/ST-Nucleo-F446RE/
STM32F446RET6 in LQFP64 package
ARM®32-bit Cortex®-M4 CPU with FPU
Adaptive real-time accelerator (ART Accelerator™) allowing 0-wait state execution from Flash memory
180 MHz max CPU frequency <--- Detta är intressant.
VDD from 1.7 V to 3.6 V
512 KB Flash
128 KB SRAM System
4 KB SRAM Backup
Timers General Purpose (10)
Timers Advanced-Control (2)
Timers Basic (2)
SPI (4)
I2S (2)
USART (4)
UART (2)
USB OTG Full Speed and High Speed
CAN (2)
SAI (2)
SPDIF-Rx (1)
HDMI-CEC (1)
Quad SPI (1)
Camera Interface
GPIO (50) with external interrupt capability
12-bit ADC (3) with 16 channels
12-bit DAC with 2 channels
Kan bara lägga till att en Pentium MMX hade 200 Mhz och den kunde man spela Quake 3 på ;)
Senast redigerad av Al_Bundy 20 juni 2019, 22:50:41, redigerad totalt 2 gånger.
Användarvisningsbild
Icecap
Inlägg: 26105
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Hastigheter mellan PC och uC?

Inlägg av Icecap »

Det är väl mer intressant vilka data det finns på FPU'n.
* 32/64 bit?
* Antal cyklar per operation?
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Hastigheter mellan PC och uC?

Inlägg av Al_Bundy »

Den kan bara hantera floats, vilket räcker gott för mig då jag är inte behov av double.

Är inte 180 Mhz antalet cyklar per operation?
Nerre
Inlägg: 26654
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Hastigheter mellan PC och uC?

Inlägg av Nerre »

Nej, 180 MHz är klockfrekvensen, hur många klockcykler som behövs per instruktionscykel och hur många instruktionscykler som krävs för en operation är två helt andra saker.

https://en.wikipedia.org/wiki/Instructions_per_cycle


Det du möjligen ska titta på är väl MIPS eller megaflops.

Nu sitter det en Cortex M4 på det där kortet vad jag kan se, ska du utnyttja den fullt ut lär du behöva skriva vissa bitar i assembler gissar jag, men det är möjligt att det finns C-libbar som utnyttjar DSP-bitarna hyfsat effektivt ändå.

Sen är det ju viktigt att vara medvetet om att om du börjar använda interrupt till nånting (t.ex. ett UI) så sabbar du timingen helt.


Då du vill göra matrisberäkningar hade det kanske varit mer effektivt att använda nån processor som kan parallellisera beräkningar. Då får du mer beräkningskraft utan att behöva högre klockfrekvens.

TMS320C80 som jag gjorde mitt exjobb på hade väl bara 50 MHz klockfrekvens, men den var då dels RISC, och då hade den alltså fyra parallella processorer i sig (fyra stycken 32-bitars DSP:er med egen ALU som klarar 16x16=32 bitars multiplikation på en klockcykel).

I manualen finns det exempelkod för (har jag för mig) att räkna ut summan av kvadraterna från bytes (för att kunna räkna ut RMS) på 1 klockcykeln per byte (d.v.s. på 4 klockcykler så får du kvadratsumman av 4 bytes).

Dessa fyra rader kod gör alltså att register d2 får värdet av d4^2+d5^2+d6^2+d7^2 (tror jag... det är 20 år sen jag skrev ner detta, koden hade jag sparat men inte förklaringen av exakt vad den gör).

Kod: Markera allt

d7= mc d6-d5 || x0=uh0 d4 || d5=&*(a0+=x0)
d4= m 0 + ((d7&@mf)|(-d7&~@mf)) || x1=uh1 d4 || d6=*a1++
d4= um d4*d4 || d7=ealu(d3+d4>>u16) || x0=uh0 d2 || d5=&*(a0+=x0)
d2= um d7*d7 || d1=ealu(d1+d2>>u16) || d5=&*(a0+=x1) || d5=*a8++
De där || betyder alltså parallella operationer. Jag kan förklara koden om nån är intresserad, den använder en del trix (t.ex. använder den adressregister för vissa beräkningar och prioritetsregler för att kunna ha samma destination för två operationer) :)
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Hastigheter mellan PC och uC?

Inlägg av Al_Bundy »

Enligt denna hemsida så har en STM32F446 – 180 MHz/225 DMIPS

https://www.st.com/en/microcontrollers- ... eries.html

Då är frågan. Är 225 DMIPS bra eller dåligt? Vad ska jag jämföra med?
gkar
Inlägg: 1453
Blev medlem: 31 oktober 2011, 15:28:29
Ort: Linköping

Re: Hastigheter mellan PC och uC?

Inlägg av gkar »

DMIPS är redan jämfört.
225 gånger snabbare än en VAX11/780.
Enbart heltalsprestanda testas.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43148
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Hastigheter mellan PC och uC?

Inlägg av sodjan »

Och för den som vill fördjupa sig i just det: https://en.wikipedia.org/wiki/Dhrystone

"Another common representation of the Dhrystone benchmark is the DMIPS (Dhrystone
MIPS) obtained when the Dhrystone score is divided by 1757 (the number of Dhrystones
per second obtained on the VAX 11/780, nominally a 1 MIPS machine)."
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Hastigheter mellan PC och uC?

Inlägg av Al_Bundy »

Hur viktigt är det att kunna sådant? Jag menar, när jag ska välja hårdvara, så brukar jag oftast titta på pris, vad den har för utrustning och hur snabb CPU:n är och hur mycket "hårddisk" den har samt ramminne.

Där efter gör jag mitt beslut.

Höga CPU nivåer, hög "hårddisk" nivå samt mycket ram och sedan speciell utrustning t.ex CAN eller LCD uttag eller kamera. Till ett billigt pris. Då väljer jag det.

Så jag funderar på denna STM32 som jag länktat ovan :) Det skiljer ju endast 40 kr mellan den STM32 och billiga STM32.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43148
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Hastigheter mellan PC och uC?

Inlägg av sodjan »

OK, men så bra då. Bara kör med "höga CPU nivåer" så blir det säkert jättebra...
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Hastigheter mellan PC och uC?

Inlägg av Al_Bundy »

Du lät ironisk och suckande där. Typ som jag gjorde ett dåligt beslut igenom att inte grotta ned med i massvis med dokumentation.

Vad är bäst: Fiat eller Nissan? Ska man då granska kolvringarnas bredd då?
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43148
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Hastigheter mellan PC och uC?

Inlägg av sodjan »

Du måste jämföra dina krav mot olika lösningar.
Sannolikt köra en del tester/utvärderingar.
Köra några POC'ar ("proof-of-concept").
Du kastar ur dig lösa funderingar som du
aldrig kommer att få konkreta svar på...
Användarvisningsbild
Al_Bundy
Inlägg: 2889
Blev medlem: 11 september 2012, 23:59:50
Ort: The U.S - Chicago
Kontakt:

Re: Hastigheter mellan PC och uC?

Inlägg av Al_Bundy »

Då börjar jag med den där STM32 som jag länkade ovan. Testar och sedan drar min slutsats om det räckte, eller inte :)
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Hastigheter mellan PC och uC?

Inlägg av Rick81 »

Om du nu vill fortsätta med uppskattningoch om du läste länken om Dhrystone så är det ett sätt att jämföra olika processor arkitekturer genom att köra igenom ett program och jämföra hur snabbt det är mot en referensarkitetkur.

ST brukar ange denna:
STM32F446 – 180 MHz/225 DMIPS = 1,25 DMIP/MHz

om du kollar
https://en.wikipedia.org/wiki/Instructions_per_second

Så hittar jag inte direkt din processor men ex en intel i5 från 2011 ligger på 6.288 och det är nog ganska nära din CPU.

Så den är 6.288/1.25 = 5 ggr snabbare än en stm32f4 på samma klockfrekvens

så ta föregående beräkning som Shimonu gjorde och ta denna x5 för att uppskatta på en stm32f4:
0.001512*5 = 0,00756 s

MEN som redan påpekats gäller detta inte generellt och använder du double eller 64 bits värden kommer resultat bli helt annorlunda för stm32f4 inte har det i hårdvara.

Så uppskattingen ger att det borde fungera.
Sen tror jag 0.01 sekunders uppdateringsintervall på ett mekaniskt system är onödigt snabbt. Varför behöver du uppdatera 100 ggr/sekund? Om du kan minska det till ex 50 eller 25 ggr blir det betydligt lättare för dig att ro iland projektet.

Jag har full förståelse för att det inte är så lätt sätt krav men om du ger lite bättre beskrivning på vad du vill åstadkomma tror jag nog du kan få mycket hjälp här.
Det är enkelt program. Mest bara matrisberäkningar i storlek 40x40 för att lösa lägre triangulära hessenbergmatriser med Gaussian Elimination. Om ni vet vad det är?
Detta säger inte mycket om vad som behövs men det är ju bra att du gjort ett test på PC
Nerre
Inlägg: 26654
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Hastigheter mellan PC och uC?

Inlägg av Nerre »

Al_Bundy skrev: och hur snabb CPU:n är
Eftersom du inte kände till MIPS så tvivlar jag på att du brukar kolla hur snabb CPU:n är, du verkar bara jämföra klockfrekvens (vilket alltså blir missvisande mellan olika arkitekturer).

Inte ens mellan liknande arkitekturer är klockfrekvens rättvisande, jag vill minnas att det t.ex. funnits AMD-processorer som vari snabbare än vissa Intel på samma klockfrekvens (och troligen även vice versa).


Ska du köpa en Fiat eller Nissan tittar du inte bara på hur stor bensintanken är och hur högt hastighetsmätaren går, du tittar på motoreffekt, bränsleförbrukning, lastutrymme osv.

Ska du jämföra måste du alltså bestämma dig för vilka saker som är viktigt för dig.
Användarvisningsbild
Lennart Aspenryd
Tidigare Lasp
Inlägg: 12607
Blev medlem: 1 juli 2011, 19:09:09
Ort: Helsingborg

Re: Hastigheter mellan PC och uC?

Inlägg av Lennart Aspenryd »

Vad eller vem gör jobbet bäst!
Då måste man veta vad "jobbet" är, och kanske också vad man menar med "bäst"!
Jag gillar det du gör, mannen från Chicago, men det är alltid bäst att ha allt klart för sig innan.
Skriv svar