[gelößt]Wonach entscheidet der FPC den ASM verw. Befehlssatz

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Dragon
Beiträge: 162
Registriert: Mi 31. Jul 2013, 15:07
OS, Lazarus, FPC: Ubuntu 16.04, CodeTyphon 5.80

[gelößt]Wonach entscheidet der FPC den ASM verw. Befehlssatz

Beitrag von Dragon »

Ich hab da mal eine Frage, wonach entscheidet der FPC eigentlich welchen Assembler Befehlssatz er verwendet, also von der Aufteilung her was ich meine ist sse avx usw... . Klar er macht es an dem fest was die CPU kann, aber jede CPU hat ja eine unterschiedliche Zahl an ALU, die ja für verschiedene Befehlssätze da sind, findet dann auch eine unterschiedliche Aufteilung (prozentual) der Befehlssatzverwendung, wo es möglich ist, statt wenn zwar die Befehlssätze aber nicht die ALU übereinstimmen
Zuletzt geändert von Dragon am Mo 27. Apr 2015, 17:10, insgesamt 1-mal geändert.

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Wonach entscheidet der FPC den ASM verw. Befehlssatz

Beitrag von Socke »

Dragon hat geschrieben:Ich hab da mal eine Frage, wonach entscheidet der FPC eigentlich welchen Assembler Befehlssatz er verwendet,
Vgl. http://www.freepascal.org/docs-html/use ... 70-177000A Paramter -C<x> bzw. die Ausgabe von fpc -i
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Dragon
Beiträge: 162
Registriert: Mi 31. Jul 2013, 15:07
OS, Lazarus, FPC: Ubuntu 16.04, CodeTyphon 5.80

Re: Wonach entscheidet der FPC den ASM verw. Befehlssatz

Beitrag von Dragon »

O.k. danke schon mal für deine Antwort aber das ist nicht ganz das was ich meine da steht ja nur wie man welchen Befehlssatz aktiviert mir geht es ja darum ob der Compiler einen Befehlssatz bevorzugt wenn er sieht das entsprechende CPU mehr Ausführungseinheiten für einen bestimmten Befehlssatz hat weil man kann ja mit zwei verschiedenen Befehlsätzen manchmal das selbe erreichen nur halt mit unterschiedlich viel Code u/o schnellem Code und das er eben dann einen anderen bevorzugt einsetzt weil es günstiger für entsprechende CPU ist für ein ideales executable oder auch andere Vorteile bringt.

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Wonach entscheidet der FPC den ASM verw. Befehlssatz

Beitrag von Socke »

Es gibt noch den Compilerschalter -Os (siehe Link oben). Damit werden kürzere Assemblerbefehlsfolgen anstatt schnelleren, aber längeren Codes verwendet.

Ansonsten verstehe ich deine Frage als prozessorspezifische Optimierung. Hier gibt es für x86 nur einige wenige Möglichkeiten, bei ARM-Microcontrollern ist die Liste wesentlich Länger. Der Prozessor wird mit -Cp<x> angegeben.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Dragon
Beiträge: 162
Registriert: Mi 31. Jul 2013, 15:07
OS, Lazarus, FPC: Ubuntu 16.04, CodeTyphon 5.80

Re: Wonach entscheidet der FPC den ASM verw. Befehlssatz

Beitrag von Dragon »

Socke hat geschrieben:Ansonsten verstehe ich deine Frage als prozessorspezifische Optimierung
Genau das meine ich. Ich habe neulich per Zufall gelesen das es für jeden Befehlssatz in der CPU eigene ALUs(z.b. bei Haswell waren es glaube 4 für AVX bei Ivy nur 2) gibt und da habe ich mich gefragt ob so was vom Compiler irgendwie mit berücksichtigt wird in den Anteilen der verwendeten Befehlssätze.

marcov
Beiträge: 1102
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Wonach entscheidet der FPC den ASM verw. Befehlssatz

Beitrag von marcov »

Das ist einfach. FPC generiert gar kein AVX, also das ist egal.

Seriös aber, FPC optimiert die Ordnung von Instruktionen nicht für Superscalar aus zu nutzen.

Dragon
Beiträge: 162
Registriert: Mi 31. Jul 2013, 15:07
OS, Lazarus, FPC: Ubuntu 16.04, CodeTyphon 5.80

Re: Wonach entscheidet der FPC den ASM verw. Befehlssatz

Beitrag von Dragon »

marcov hat geschrieben:FPC generiert gar kein AVX, also das ist egal.
Das mit AVX war nur ein Beispiel aber trotzdem was AVX angeht ist
mein FPC aber anderer meinung "fpc -i" gibt :lol:

Supported FPU instruction sets:
SSE64,SSE3,SSSE3,SSE41,SSE42,AVX,AVX2
marcov hat geschrieben:FPC optimiert die Ordnung von Instruktionen nicht für Superscalar aus zu nutzen.
Ok danke, also wird nur ein einzeln laufender befehlsstrang erzeugt verstehe ich das richtig

marcov
Beiträge: 1102
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Wonach entscheidet der FPC den ASM verw. Befehlssatz

Beitrag von marcov »

Dragon hat geschrieben:
marcov hat geschrieben:FPC generiert gar kein AVX, also das ist egal.
Das mit AVX war nur ein Beispiel aber trotzdem was AVX angeht ist
mein FPC aber anderer meinung "fpc -i" gibt :lol:

Supported FPU instruction sets:
SSE64,SSE3,SSSE3,SSE41,SSE42,AVX,AVX2
Keine Ahnung was das macht.
marcov hat geschrieben:FPC optimiert die Ordnung von Instruktionen nicht für Superscalar aus zu nutzen.
Ok danke, also wird nur ein einzeln laufender befehlsstrang erzeugt verstehe ich das richtig
Das ist immer so. Aber man kann etwas steuern so das sich verschiedene Instruktionen über die verschiedene Units (integer, branch, load/store) parallellisieren lassen. Execution Units sind kein Cores, es ist noch immer ein Lineare Befehlsstrang.

Viel muss man sich von das alles nicht vorstellen.

Dragon
Beiträge: 162
Registriert: Mi 31. Jul 2013, 15:07
OS, Lazarus, FPC: Ubuntu 16.04, CodeTyphon 5.80

Re: Wonach entscheidet der FPC den ASM verw. Befehlssatz

Beitrag von Dragon »

Alles klar, vielen dank an alle die geantwortet haben.

Antworten