In wie fern lässt sich die Rechenleistung eines STM32F4 mit der eines
Pentium 1 @ 166MHz vergleichen. Von der Taktfrequenz ist der Cortex
sogar schneller, sind beides 32Bit CPUs.
Beim Pentium handelt es sich zwar um eine nackte CPU und beim F4 um
einen Controller, aber die Leistungen kann man doch sicherlich
vergleichen oder?
Man müsste einen synthetischen Benchmark laufen lassen und die Leistung
pro Takt bzw. Abarbeitungsgeschwindigkeit des Benchmarks zu errechnen.
Kommt aber auch auf die Aufgabe an, welche zum Vergleich dienen soll.
Ich würde den alten Pentium auf gar keinen Fall unterschätzen.
Fragender schrieb:> In wie fern lässt sich die Rechenleistung eines STM32F4 mit der eines> Pentium 1 @ 166MHz vergleichen.
Solche Fragen stellen meistens Informatiker, die noch nie einen uC in
der Hand gehabt haben...
Da sie für völlig unterschiedliche Aufgaben geschaffen wurden: GARNICHT.
Fragender schrieb:> Beim Pentium handelt es sich zwar um eine nackte CPU und beim F4 um> einen Controller, aber die Leistungen kann man doch sicherlich> vergleichen oder?
Klar! Beide können z.B. binär wahnsinnig schnell Zahlen addieren :-)
Dennis schrieb:> Da sie für völlig unterschiedliche Aufgaben geschaffen wurden: GARNICHT.
Da direkt nach der Rechenleistung gefragt wurde, lässt sich das schon
beantworten. Schwierig wird es, wenn man den Pentium danach fragt, wie
schnell sein DMA funktioniert oder wie schnell er Pins toggeln kann.
Fragender schrieb:> In wie fern lässt sich die Rechenleistung eines STM32F4 mit der eines> Pentium 1 @ 166MHz vergleichen.
Bei 64-Bit Fliesskommarechnung wird der Pentium 166 den STM32F4 leicht
und locker an die Wand nageln.
So weit wie ich weiß war der Pentium 1 noch sehr langsam wenn es um
Fließkomma ging. Das hat Intel erst später geschafft. Somit könnte ein
STM32 F4 durchaus schneller sein. Ein Hinweis wären die Datenblätter.
Christian Berger schrieb:> So weit wie ich weiß war der Pentium 1 noch sehr langsam wenn es um> Fließkomma ging.
Keineswegs, der hatte die erste und voll gepipelinete FPU der x86er. Nur
musste man mangels OOO-Core und dank der stackorientierten FPU auf
ziemlich üble Art mit FXCH tricksen.
Aber der kleine Hinterhalt meiner Antwort liegt woanders: Der Cortex-M4
hat nur eine single precision FPU.
>Da sie für völlig unterschiedliche Aufgaben geschaffen wurden: GARNICHT.
Doch wohl! Warum ist der eine wohl ein RISC und der andere nicht?
Die Aufgabe des Pentiums und des F4 war das Rechnen ... klar ! Aber ich
spreche hier von der Zielapplikation.
Naja, die x86 Archtektur wird bei single precision bis auf die
Speicherzugriffe nicht wirklich schneller. Intern rechnet das teil ja eh
mit voller Genauigkeit.
Ich müsste mal nachschauen, ich hab irgendwo alte IXen wo es immer Tests
zwischen unterschiedlichen Prozessoren unterschiedlicher Architekturen
gab. Und so weit wie ich mich erinnern kann war lange Zeit (bis so 2002
oder so) die Fließkommaleistung der x86 Prozessoren immer sehr klein
gegenüber allen anderen.
Christian Berger schrieb:> gab. Und so weit wie ich mich erinnern kann war lange Zeit (bis so 2002> oder so) die Fließkommaleistung der x86 Prozessoren immer sehr klein> gegenüber allen anderen.
Sie blieb auch beim Pentium noch kleiner als bei RISC Boliden wie den
IBM Power-Prozessoren. Was auch dem Umstand geschuldet ist, dass eine
Stack-Architektur ohne OOO nur mit Krämpfen zu guter Performance zu
bewegen ist. Der Pentium hatte als erste x86-Implementierung immerhin
FPU-Pipelining zu bieten. Die OOO-Architektur des PentiumPro sortierte
dann die Verhältnisse neu und die spätere Abkehr von der x87-FPU mittels
SSE schaffte saubere neue Grundlagen.
Man sollte freilich nicht aus den Augen verlieren, dass die Konkurrenz
in Form ebendieser IBM Boliden damals wie heute mit sehr dicken Kanonen
schiesst, mit einem für normale Anwendungen unverhältnismässigen hohen
Aufwand an Hardware. IBM hatte in den auf Fliesskommaleistung
optimierten Maschinen durchgängig bis in den Speicher hin mit 256 Bit
Breite operiert, gegenüber (damals) 64 Bits bei PC Prozessoren. Man
kriegt was man zahlt.
Mit den hier betrachteten CM4 hat diese Relation freilich sehr wenig zu
tun.
Fragender schrieb:> In wie fern lässt sich die Rechenleistung eines STM32F4 mit der eines> Pentium 1 @ 166MHz vergleichen.
Vielleicht mit entsprechenden Tests :-)
Hat nicht jemand noch einen P1 und kann darauf z.B. eine
Primzahlberechnung starten und die Ergebnisse hier posten?
Oder Dhrystone, Sortieralgorithmus, Ackermannfunktion, etc.?
Nach dieser Tabelle hat ein 166er Pentium 189 Dhrystone MIPS.
http://www.roylongbottom.org.uk/dhrystone%20results.htm
Nach Angaben von ST hat ein 120er STM32 150 Dhrystone MIPS.
Allerdings... je nach Compileroptionen schwanken die Pentium Werte
zwischen 43.9 und 189. Im Nettz finden sich auch Benchmarks, die
behaupten in der Realität hätte ein STM32 nur 30 DMIPS.
> Das ist mal eine nuetzliche Info.
Na ja... wenn man z.B. wissen will, ob ein Videoencoder aus Pentium
Zeiten inzwischen auf einem MC läuft, hilft diese Tabelle nicht wirklich
weiter.
Und Kaffee kochen kann sie auch nicht. Aber das ist die beste Übersicht
über die Performancewerte einzelner Befehle von allen x86 ab Pentium. In
Verbindung mit der Beschreibung kann man dem beispielsweise entnehmen,
dass in jedem Takt abwechselnd ein FADD und ein FMUL voll gepipelined
durchgeschoben werden kann.
Die Performance konkreter Probleme lässt sich daraus nicht ableiten.
Aber das gilt universell - kein irgendwie gearteter Vergleich mit Hilfe
von Programm A sagt genau voraus, wie sich ein anderes Programm B
verhalten wird. Die Performance eines Videoencoders lässt sich auch aus
Coremarks oder Dhrystones nicht ableiten. Sondern wirklich nur aus
Messungen mit dem Encoder.
Also so wie ich die Dokumentation des Cortex M4 verstehe, ist die CPU
nicht superscalar. Die meisten Befehle benötigen einen Taktzyklus,
Ladebefehle 2, wenn das Ergebnis im nächsten Befehl verwendet wird. Die
FPU Multiplikation benötigt drei Zyklen und ist nicht gepipelined.
Der Pentium ist superscalar und kann unter günstigen Umständen zwei
Befehle pro Taktyklus ausführen. Die FPU Multiplikation ist voll
gepelined, so dass sie unter günstigen Umständen nur einen Taktzyklus
benötigt.
Im theoretischen Bestfall ist der Pentium also doppelt so schnell, bei
FPU Multiplkationen drei mal so schnell. In der praktischen Umsetzung
sieht das allerdings deutlich anders aus, so dass er nur leicht
schneller als ein Cortex M4 sein wird.
Die FPU des Pentium ist übrigens nicht zu unterschätzen. Das Pipelining
hat damals Spiele wie Quake überhaupt erst umsetzbar gemacht. Der
vergleichbare Motora 68060 hatte keine gepipelinete CPU, so dass Apple
und Amiga dagegen ziemlich armselig aussahen. Der Unterschied trat erst
bei handoptimiertem code zutage.
@cpldcpu
<joke>
Bitte keine Kritik am Amiga (rip), sonst bricht hier ein
"Religionskrieg" aus !!!
</joke>
Kann man RISC und CISC wirklich vergleichen, oder gilt
das Ding mit den Äpfeln und Birnen ?
Martin
Martin Beuttenmüller schrieb:> Kann man RISC und CISC wirklich vergleichen, oder gilt> das Ding mit den Äpfeln und Birnen ?
Warum sollte man Äpfel und Birnen nicht vergleichen können? Aus beiden
kann man einen prima Schnaps machen.
Aber hier stand die Frage im Raum, wie sich die Performance eines
STM32F4 verglichen mit einem Pentium 1 verhält, weil sich die
Performance von historischen PC-Prozessoren nun einmal als vielen
bekannte Messlatte eignet. Diese Frage hat mit RISC/CISC nichts zu tun,
es in die Richtung solcher Religionskriege zu schieben hast du in diesem
Thread als Erster getan. Bist also in Wahrheit Du es, der einen
Religionskrieg daraus machen will?
Dennis schrieb:>> Solche Fragen stellen meistens Informatiker, die noch nie einen uC in> der Hand gehabt haben...
????????
> Da sie für völlig unterschiedliche Aufgaben geschaffen wurden: GARNICHT.
Hey sorry Dennis aber für welche Aufgaben sind Sie denn geschaffen?
Natürlich kann man die Rechenleistung vergleichen! Warum auch nicht? Und
für was da jetzt ein Microprozessor gedacht ist, entscheidet immer die
zu bewältigende Aufgabe, denn dann sollte man die richtige Wahl treffen!
@prx
Der "Religionskrieg" war (eindeutig) als Ulk gekennzeichnet und bezog
sich nur auf den Amiga ;-} .
---
Die Frage bezüglich RISC/CISC-Vergleichbarkeit war durchaus ernst
gemeint: ein 600PS Rennbolide läßt sich (nicht wirklich) mit
einem 600PS Turbo-Diesel vergleichen, auch wenn die Leistung
ähnlich groß ist.
Den (bekannten) Pentium als "Messlatte" verwenden ist sicher machbar,
doch der Verwendungszweck ist sicherlich auch ein wichtiges
Kriterium (wie oben schon von Denis angemerkt).
Liebe Grüße
Martin
-----------------------------
Ich bin kein Spinner:
Ich bin nur anders verdrahtet worden ...
Martin Beuttenmüller schrieb:> Die Frage bezüglich RISC/CISC-Vergleichbarkeit war durchaus ernst> gemeint: ein 600PS Rennbolide läßt sich (nicht wirklich) mit> einem 600PS Turbo-Diesel vergleichen, auch wenn die Leistung> ähnlich groß ist.
Warum sollten sie sich nicht vergleichen lassen? Die diversen SPECmarks
machen nichts anderes, als verschiedene Maschinen zu vergleichen, egal
ob Intel, AMD, IBM oder Oracle/Sun drinsteckt. RISC und CISC (bzw.
Diesel oder Benziner) ist zudem ein Detail, das an dieser Stelle
herzlich uninteressant ist, denn das Ergebnis zählt, nicht der Weg zum
Ergebnis. Da sind auch Benchmarks dabei, die tpm/$ angeben, womit also
die Preis/Leistungs-Relation mit drin ist.
Die RISC vs. CISC Debatte ist nicht so eindeutig wie bei Autos und hat
mehr mit der Prozessorarchitektur als mit dem Befehlssatz zu tun. Der
Pentium ist z.B. eher ein RISC Prozesser als ein 386, obwohl beide die
gleiche ISA verwenden. Im Grunde handelt es sich bei den Bezeichnungen
um Paradigmen die in den 80er Jahren relevant waren, als
CPU-Architekturen noch durch die Transistordichte limitiert wurden, und
jetzt kaum noch eindeutig zugeordnet werden können.
Eben. Letztlich ist es völlig egal, ob ein Prozessor intern als RISC,
CISC, in RISC übersetzte CISC, Stackmaschine oder mit schwarzer Magie
arbeitet. Den Anwender bzw. C-Programmierer interessieren die
erreichbare Leistung und der dafür zu zahlende Preis.
Zumindest in Adventurespielen funktioniert schwarze Magie besser als
alle Arten von Maschinen. Wo bekomme ich einen Prozessor her, der mir
schwarzer Magie arbeitet? Ich würde auch das Doppelte bezahlen.
Lästermaul schrieb:> Ich würde auch das Doppelte bezahlen.
Du weisst schon, dass man sowas nicht in € sondern Seele bezahlt? Wie
ist denn da grad der Umrechnungskurs?
"Any sufficiently advanced technology is indistinguishable from magic."
(A.C. Clarke)
Und jetzt erkläre mir mal, wie ein 22nm Mikroprozessor auf
mikroskopischer Ebene funktioniert :)
Tim . schrieb:> Pentium ist z.B. eher ein RISC Prozesser als ein 386, obwohl beide die> gleiche ISA verwenden.
Der Pentium hatte zwei klassische 486er CISC-Pipelines nebeneinander,
plus gepipelineter in-order FPU. Damit stand er noch voll in der
Tradition des 386. Erst der PentiumPro löste die Befehle kleinteilig in
interne Micro-Ops auf und kann als Urvater aller seitherigen High-End
Intel-Prozessoren ausser der Pentium-4/Netburst Abirrung betrachtet
werden.
A. K. schrieb:> Tim . schrieb:>> Pentium ist z.B. eher ein RISC Prozesser als ein 386, obwohl beide die>> gleiche ISA verwenden.>> Der Pentium hatte zwei klassische 486er CISC-Pipelines nebeneinander,> plus gepipelineter in-order FPU. Damit stand er noch voll in der> Tradition des 386.
Sorry, aber das ist so nicht ganz korrekt. Der 486 hat zwar viele
Befehle in einem Taktzyklus ausgeführt, hatte aber noch keine klassische
Pipeline. Die kam erst mit dem Pentium, neben Load/Store Architektur,
Register Renaming und Superskalarität (Die allerdings eingeschränkt).
Damit sind die meisten RISC features bereits umgesetzt gewesen. Einen
ähnlichen Sprung kann man zwischen 68040 und 68060 beobachten.
Das ist auch hier schön zu sehen:
http://upload.wikimedia.org/wikipedia/commons/4/48/80486DX2_arch.pnghttp://upload.wikimedia.org/wikipedia/commons/1/1a/Intel_Pentium_arch.svg
Beim Pentium Pro kam dann out-of-order und eine klare Trennung zwischen
uOP und x86-OP hinzu, was eine ganze Menge Zusatzaufwand erfordert hat
(Instruction Retirement etc.). ooo ist allerdings keine Eigenschaft der
Ur-Risc prozessoren gewesen. Daher ist in Frage zu stellen, ob x86
dadurch wirkliche "risciger" wurde.
> Erst der PentiumPro löste die Befehle kleinteilig in> interne Micro-Ops auf und kann als Urvater aller seitherigen High-End> Intel-Prozessoren ausser der Pentium-4/Netburst Abirrung betrachtet> werden.
Ja, Netburst hatte das Problem dass es mit dem Ende des klassischen
Dennard-Scalings zusammenfiel (130 nm). Dadurch sind einige der
Designprämissen hinfällig gewesen...
Blabla, jetzt wird hier aber wieder das Fachwissen ausgepackt ;)
Wie wäre es denn wenn jemand der Beide Prozessoren zur Hand hat mal
einfach ein paar kleine Vergleiche anstellt?
Tim . schrieb:> Der 486 hat zwar viele> Befehle in einem Taktzyklus ausgeführt, hatte aber noch keine klassische> Pipeline.
Doch. Load-Befehle und Register-Operationen hatten eine Ausführungszeit
von 1 Takt, was bei dieser Taktfrequenz nur per Pipelining realisierbar
war. Im Wesentlichen waren das die Stufen: 2 Takte Decode,
Adresserzeugung, Ausführung. Ins Stocken kam diese Pipeline bei
Load-Execute Befehlen, da die Execute Stage sowohl fürs Laden wie für
die Operation zuständig war. Die beim Pentium bekannteren
AGU-Interlocks, also ein Stocken der Pipeline bei direkt davor
berechneten/geladenen Adressen, hatte der 486 auch schon.
http://ieeexplore.ieee.org/xpl/login.jsp?tp=&arnumber=63682&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D63682
Der Pentium 1 hat im Wesentlichen die gleiche Pipeline wie der 486, nur
eben 2 davon. Pipeling-Stalls bei Load-Execute inklusive. Diese Stalls
vermied Cyrix in den M1/M2 mit der an dieser Stelle ähnlichen
Architektur, aber getrennten Load und Execute Stages.
> Die kam erst mit dem Pentium, neben Load/Store Architektur,> Register Renaming und Superskalarität
Der Pentium 1 hatte kein echtes Renaming, nur das explizit per FXCH
programmierte Renaming der FPU.
Der Pentium 1 hatte auch keine Load/Store Architektur. Das hat kein x86,
da sich dieser Begriff auf die ISA bezieht.
Eumel schrieb:> Wie wäre es denn wenn jemand der Beide Prozessoren zur Hand hat mal> einfach ein paar kleine Vergleiche anstellt?
Im Moment geht es um interne Implementierung, nicht um
Performance-Werte.
Tim . schrieb:> Das ist auch hier schön zu sehen:
Zum 486 sieht man da garnichts, weil dessen Blockbild nicht die Pipeline
wiederspiegelt. Auch beim Bild zum Pentium ist das nicht offensichtlich.
Aus dem verlinkten IEEE Artikel zum 486, von Intel selbst:
- F (Fetch)
- D1 (Decode)
- D2 (inkl. Adressberechnung)
- EX (Execute/Load/Store)
- WB (Writeback)
Den Artikel findet man, wenn man nach "The i486 CPU: executing
instructions in One Clock Cycle" googelt.
Pentium P5 Pipeline:
- F (Fetch)
- D1 (Decode)
- D2 (inkl. Adressberechnung)
- EX (Execute/Load/Store)
- WB (Writeback)
http://www.csse.monash.edu.au/~davida/teaching/cse3304/Web/Chapter5/sld024.htm