Hur kan en STM32 mikrokontroller på 72 MHz prestera 90 MIPS?
Hur kan en STM32 mikrokontroller på 72 MHz prestera 90 MIPS?
Jag har funderat lite på hur STM32 som körs på 72 MHz kan klara 90 MIPS. Borde den inte klara 72 MIPS, eftersom ARM arkitekturen inte tillåter flera instruktioner på en instruktionscykel?
Vissa instruktioner ser visserligen ut som följande:
"Multiply two signed or unsigned register values and subtract the low 32 bits from a register value" och skulle kunna tolkas som en multiplikation och en subtraktion med då borde detta räknas som två instruktioner dvs 144 MIPS.
Det är en inbyggd PLL som skrämmer upp en 25 MHz kristall till 72 MHz så ingenting borde kunna gå snabbare än 72 MHz.
En liknande processor STR912 har en ARM9 kärna och HW som liknar STM32. Denna körs på 96 MHz (via PLL) och klarar 96 MIPS.
Någon som kan hjälpa mig förstå hur de räknar vad gäller STM32?
Vissa instruktioner ser visserligen ut som följande:
"Multiply two signed or unsigned register values and subtract the low 32 bits from a register value" och skulle kunna tolkas som en multiplikation och en subtraktion med då borde detta räknas som två instruktioner dvs 144 MIPS.
Det är en inbyggd PLL som skrämmer upp en 25 MHz kristall till 72 MHz så ingenting borde kunna gå snabbare än 72 MHz.
En liknande processor STR912 har en ARM9 kärna och HW som liknar STM32. Denna körs på 96 MHz (via PLL) och klarar 96 MIPS.
Någon som kan hjälpa mig förstå hur de räknar vad gäller STM32?
Senast redigerad av blueint 24 februari 2011, 17:58:33, redigerad totalt 2 gånger.
Anledning: Intetsägande rubrik (var: STM32 72Mhz/90 MIPS)
Anledning: Intetsägande rubrik (var: STM32 72Mhz/90 MIPS)
Re: STM32 72Mhz/90 MIPS
> Jag har funderat lite på hur STM32 som körs på 72 MHz kan klara 90 MIPS.
Varför tror du det ?
Varför tror du det ?
Re: Hur kan en STM32 mikrokontroller på 72MHz prestera 90 MI
En del saker kan nog göras parallellt i vissa fall.
När det gäller mått som MIPS och liknande tror jag att de är konstruerade av reklammakare. Det är i alla fall inte lätt att veta vad de betyder.
Det finns vad jag vet inget annat sätt att få reda på en processors kapacitet än att prova och laborera. Man brukar få dividera 'måtten' med 4 pi eller något annat magiskt tal mellan 3 och 42.
När det gäller mått som MIPS och liknande tror jag att de är konstruerade av reklammakare. Det är i alla fall inte lätt att veta vad de betyder.
Det finns vad jag vet inget annat sätt att få reda på en processors kapacitet än att prova och laborera. Man brukar få dividera 'måtten' med 4 pi eller något annat magiskt tal mellan 3 och 42.
Re: Hur kan en STM32 mikrokontroller på 72MHz prestera 90 MI
I databladet står det att den körs på 72 MHz/90 MIPS. De måste ju kunna styrka detta på något sätt. Databladet på föregångaren sa ju som sagt 96 MHz/96 MIPS.
Re: Hur kan en STM32 mikrokontroller på 72MHz prestera 90 MI
Menar du verkligen MIPS, eller menar du DMIPS.
DMIPS är antalet beräkningar, inte antalet instruktioner.
DMIPS är antalet beräkningar, inte antalet instruktioner.
Re: Hur kan en STM32 mikrokontroller på 72MHz prestera 90 MI
Den har ju DMA också vilken kan göra extra saker i bakgrunden, om det räknas in.
Re: Hur kan en STM32 mikrokontroller på 72MHz prestera 90 MI
Nej det räknas inte in.
Men, Eftersom man mäter i DMIPS, innebär det att vissa instruktioner utför två saker samtidigt, exempelvis addition och pluttifikation.
Det innebär att processorn utför två "instruktioner" per klockcykel, egentligen är det två beräkningar.
Hur man sedan beräknar antalet DMIPS, jo det finns nog en standard för detta, som säger att si och så många "vanliga" instruktioner och si och så många kombinerad instruktioner.
Förmodligen handlar det om att beräkna ett antal vektorer, och då får man fram DMIPS värdet, vilket är något helt annat än MIPS-värdet.
Men, Eftersom man mäter i DMIPS, innebär det att vissa instruktioner utför två saker samtidigt, exempelvis addition och pluttifikation.
Det innebär att processorn utför två "instruktioner" per klockcykel, egentligen är det två beräkningar.
Hur man sedan beräknar antalet DMIPS, jo det finns nog en standard för detta, som säger att si och så många "vanliga" instruktioner och si och så många kombinerad instruktioner.
Förmodligen handlar det om att beräkna ett antal vektorer, och då får man fram DMIPS värdet, vilket är något helt annat än MIPS-värdet.
Re: Hur kan en STM32 mikrokontroller på 72 MHz prestera 90 M
Som tidigare sagts, det är skillnad på MIPS och DMIPS. Det senare fås relativt en referensmaskin, VAX 11/780, och en siffra >1 innebär alltså att arkitekturen är mer "effektiv" än referensmaskinen.
Antalet DMIPS är endast ett riktvärde som har liten praktisk betydelse. Värt att notera är att
- Kompilatorn spelar en avgörande roll (bör optimeras för vissa standardfunktioner typ strcmp)
- Ovanstående siffra (1,25 DMIPS/MHz) är vid "0 wait states", så du kommer troligtvis inte upp i 90 DMIPS@72MHz
- Benchmarks är benchmarks. Dhrystone är dessutom ganska långt ifrån de applikationer som normalt körs på en MCU.
Antalet DMIPS är endast ett riktvärde som har liten praktisk betydelse. Värt att notera är att
- Kompilatorn spelar en avgörande roll (bör optimeras för vissa standardfunktioner typ strcmp)
- Ovanstående siffra (1,25 DMIPS/MHz) är vid "0 wait states", så du kommer troligtvis inte upp i 90 DMIPS@72MHz
- Benchmarks är benchmarks. Dhrystone är dessutom ganska långt ifrån de applikationer som normalt körs på en MCU.
Re: Hur kan en STM32 mikrokontroller på 72 MHz prestera 90 M
MIPS = ????
Misleading indicator of processor speed
Meaningless indicator of processor speed
Marketing indicator of processor speed
Managements impression of processor speed

Jag menar att det i många fall är svårt att skapa sig en uppfattning utifrån detta mått.
Jag använder dagligen stm32. Det jag är mest imponerad av jämfört med arm7 är hur snabbt contex switch och interrupt hanteras. Att jämföra arm9 cortex m3 är inte relevant eftersom det adresserar två olika målgrupper. Mitt val av stm32 var baserat på att det är en MCU med integrerat flash ram, samt att den klarar hantera en stor last av interrupt.
Misleading indicator of processor speed
Meaningless indicator of processor speed
Marketing indicator of processor speed
Managements impression of processor speed

Jag menar att det i många fall är svårt att skapa sig en uppfattning utifrån detta mått.
Jag använder dagligen stm32. Det jag är mest imponerad av jämfört med arm7 är hur snabbt contex switch och interrupt hanteras. Att jämföra arm9 cortex m3 är inte relevant eftersom det adresserar två olika målgrupper. Mitt val av stm32 var baserat på att det är en MCU med integrerat flash ram, samt att den klarar hantera en stor last av interrupt.
Re: Hur kan en STM32 mikrokontroller på 72 MHz prestera 90 M
> Det senare fås relativt en referensmaskin, VAX 11/780,
Har du en referens till det ?
Det är sant att 11/780 användes som referens mellan olika
VAX (och även Alpha) maskiner ("VUP/VUPs", "VAX Unit of Performance"),
men jag är inte övertygad om det det är sant rent generellt. Nu så kan
det ha varit så att 1 VUP i stor sett motsvarar 1 MIPS...
Jag körde en testrutin som försöker mäta en Alph's VUPS:
Så alltså lite drygt 200 gånger snabbare än ursprungs VAX'en (11/780)...
På en lite snabbare maskin blir det :
Har du en referens till det ?
Det är sant att 11/780 användes som referens mellan olika
VAX (och även Alpha) maskiner ("VUP/VUPs", "VAX Unit of Performance"),
men jag är inte övertygad om det det är sant rent generellt. Nu så kan
det ha varit så att 1 VUP i stor sett motsvarar 1 MIPS...
Jag körde en testrutin som försöker mäta en Alph's VUPS:
Kod: Markera allt
$ @ calculate_vup_2.com
Approximate System VUPs Rating : 222.5 ( min: 222.0 max: 222.8 )
$
På en lite snabbare maskin blir det :
Kod: Markera allt
$ @ calculate_vup.com
INFO: Preventing endless loop (10$) on fast CPUs
Approximate System VUPs Rating : 495.1 ( min: 490.6 max: 497.8 )
$
Re: Hur kan en STM32 mikrokontroller på 72 MHz prestera 90 M
Är det dina egna maskiner sodjan?
Re: Hur kan en STM32 mikrokontroller på 72 MHz prestera 90 M
Den första är min labb maskin på kontoret (XP900, 466 MHz).
Den andra är den prod maskin jag har hand om hos Ericsson (DS25, 1 GHz).
Skillnaden följer CPU hastigheten ganska väl...
Den andra är den prod maskin jag har hand om hos Ericsson (DS25, 1 GHz).
Skillnaden följer CPU hastigheten ganska väl...
Re: Hur kan en STM32 mikrokontroller på 72 MHz prestera 90 M
Nja, om du godtar Wikipedia som referens så får du en länk här: http://en.wikipedia.org/wiki/Dhrystone
En snabbsökning i de vetenskapliga databaserna gav varierande resultat. Tyvärr har jag inte tid att leta reda på "ur-artikeln", antar att det finns en sådan, men här är ett intressant citat som även knyter an till _jonas_ inlägg. Tyvärr råkade jag stänga ner fliken i fredags, så jag tappade källan.. men det var ett fint gammalt papper
En snabbsökning i de vetenskapliga databaserna gav varierande resultat. Tyvärr har jag inte tid att leta reda på "ur-artikeln", antar att det finns en sådan, men här är ett intressant citat som även knyter an till _jonas_ inlägg. Tyvärr råkade jag stänga ner fliken i fredags, så jag tappade källan.. men det var ett fint gammalt papper

Gjorde även en sökning på Weicker, han som skapade Dhrystone. Här ett stycke ur R.P Weicker, A detailed look at some popular benchmarks, Parallel Computing 17 (1991) 1153-1172, terminologin är lite omvänd då det han med MIPS/'VAX MIPS' verkar syfta på det som idag benämns DMIPS.MIPS: A meaningful measurement?
Millions of instructions per second, or MIPS, is a popular-though superficial-way to describe computer system performance. MIPS typically come from either measured data or calculated maximum performance. We usually compare system performance ratings in MIPS with that of a VAX 11/780, which is considered to be a 1-MIPS machine. On a family of systems with a common processor (like the Motorola 88000), MIPS ratings can help judge relative system integer performance. The ultimate apples-to-oranges phenomenon occurs when we compare MIPS ratings between two different architectures like RISCs and CISCs (reduced and complex instruction-set computers). The key points to remember about MIPS are instructions do not remain constant from processor to processor, and MIPS are only meaningful in the context of a single processor family. To make sense out of MIPS ratings, users must first define the term instruction. A direct correlation does not always exist between the number of instructions being executed and the amount of actual work being accomplished.
On a jovial note, the industry has come up with many colorful ways to use the MIPS acronym:
- meaningless indicators of performance for systems,
- meaningless information of performance for salesmen, or
- meaningless information from pushy salesmen.
..the word MIPS has often been redefined, implicitly or explicitly ('VAX MIPS'): People often denote by MIPS just a performance factor of a given machine relative to the performance of a VAX 11/'780: If a machine runs some program or set of programs x times faster than a VAX 11/780, it is called an x MIPS machine. This is based on a 'computer folklore' statement saying that a VAX 11/780 performs, for typical programs, one million of instructions per second. Although this folklore is not true, [fotnot] it is widespread. When VAX MIPS's are quoted, one should know what programs are the basis of the comparison, and what compilers are used for the VAX 11/780. Older Berkeley UNIX compilers produced up to 30% slower code than VMS compilers, thereby inflating the other machine's MIPS rating. In short, one cannot help but agree with Omri Serlin's [9] statement: "There are no accepted industry standards for computing the value of MIPS".
[fotnot]: Some time ago, I ran the Dhrystone benchmark program on VAX 11/780's with different compilers. With Berkeley UNIX (4.2) Pascal, the benchmark was translated into 483 instructions, executed in 700 #sec, yielding 0.69 (native) MIPS. With DEC VMS Pascal (V, 2.4), 226 instructions were executed in 543 /~sec, yielding 0.42 (native) MIPS. Interestingly, the version with the lower MIPS rating executed the program faster.