Autor Thema: Mehr Rechenleistung?  (Gelesen 7507 mal)

BlackSun1102

  • Beiträge: 44
    • Profil anzeigen
Gespeichert
« am: 22. November 2005, 16:19 »
Hi,

Ich möchte ein OS für möglichst schnelle berechnungen schreiben (es kommt wirklich auf Sekunden an)
In welcher Mode (Real oder Protected) hole ich mehr Leistung aus der CPU raus?

Gruß BlackSun1102

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 22. November 2005, 16:46 »
Ich würde sagen, das Protected Mode ohne Paging am schnellsten ist.
Im Realmode sind 32 Bit Operationen langsamer (1 Byte mehr pro Instruction).

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #2 am: 22. November 2005, 18:20 »
Tja, definiere maximale Rechenleistung. In verschiedenen Abschnitten könnte die Antwort durchaus anders sein.

Wenn du z.B. ein System mit 2 CPUs (oder eine CPU mit 2 Kernen) hast wirst du wohl auf Multithreading/Multitasking zurückgreifen wollen, damit du die Perfomance von beiden nutzen kannst. Besonders für das 2. empfiehlt sich durchaus der Protected Mode oder andere Speicherschutztechniken. Da kommt auch keine mögliche Performancesteigerung durch Real Mode Programmierstil mit.

Was du auch bedenken musst ist das der Real Mode nur 1MB+64KB RAM addressieren kann. Das ist für mich eine gewaltige Einschränkung! ;)
*post*

Osbios

  • Beiträge: 247
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 22. November 2005, 18:25 »
Heutige Prozessoren sind zwar noch für den RM tauglich, jedoch absolut auf 32 Bit (PM) getrimmt. Dann hängt es natürlich am meisten von deinem Programm ab, wie gut der Prozessor es verarbeiten kann.
Das geht über gute Algorithmen, Assembler anstelle einer Hochsprache bis zu Pipline-/Cacheoptimierung.
Wenn es ein größeres Projekt ist würde ich aber von purem Assembler abraten, bzw. es höchstens an besonderen stellen einsetzen.
db 0x55AA

Thoth

  • Beiträge: 62
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 22. November 2005, 19:12 »
Was auch möglich ist, ist die GPU zweckzuentfremden und dann numerische Operationen auf selbiger ablaufen zu lassen. Denn Fließkommaarithmetik beherrschen morderne Grafikchips wirklich gut. Man müsste aber halt ein eigenes Interface entwickeln, was die Programmierung ein bisschen verkompliziert.

Bei uns in der Uni gibts nen Lehrstuhl der sich größtenteils mit exakt diesem Thema beschäftigt, wenn Interesse besteht (aber nur wenn *g*), könnte ich auch versuchen, an mehr Informationen ranzukommen.
Madness isn't a bug - it's a feature

Osbios

  • Beiträge: 247
    • Profil anzeigen
Gespeichert
« Antwort #5 am: 22. November 2005, 19:45 »
Es gibt nen Lehrstuhl wo die sich nur mit GPU Missbrauch beschäftigen? O.o
Also die GPU ist speziel für GFX ausgerichtet, da kann doch nicht so einfach einen auf SMP machen? Die ist doch nur für Dateneingabe und Grafikausgabe gedacht und der Informationsfluss GPU -> System ist daher nicht gerade schnell, was man z.B. daran sehen kann wenn man den Grafikspeicher ausliest.
db 0x55AA

Thoth

  • Beiträge: 62
    • Profil anzeigen
Gespeichert
« Antwort #6 am: 22. November 2005, 21:02 »
Nun, keiner hat gesagt, dass es einfach ist :D
Wie das mit dem Datentransfer zurück gemacht wird weiß ich nicht, die Berechnungen selbst dürften aber ziemlich fix durchgeführt werden. Für Operationen, die viel Input haben, sehr rechenaufwendig sind, dann aber nur vergleichsweise wenig Output produzieren (lineare Gleichungssystem würden sich imho anbieten) ist das doch (fast) wie geschaffen.
Madness isn't a bug - it's a feature

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #7 am: 22. November 2005, 23:38 »
Du meinst deine Programme nur in Texturen für Ein/Ausgabedaten und Pixelshader für die Operationen übersetzen. Grob vereinfacht gesagt.
*post*

Thoth

  • Beiträge: 62
    • Profil anzeigen
Gespeichert
« Antwort #8 am: 23. November 2005, 06:19 »
Ja genau, sowas in der Art. Wies jetzt genau funktioniert weiß ich auch nicht, das müsste das Prinzip sein. Sicher ulkig, sowas zu programmieren.
Madness isn't a bug - it's a feature

TeeJay

  • Beiträge: 630
    • Profil anzeigen
    • http://www.jay-code.de
Gespeichert
« Antwort #9 am: 23. November 2005, 13:28 »
Ich hatte sowas mal gelesen, das jemand die Pixelshader einer Graka dazu verwendet hat um Audioberechnungen darauf laufen zu lassen. Man muss natürlich dazu erstmal Pseudotexturen usw erstellen, welche eigentlich keine Bilddaten sondern Audiodaten enthalten. Und ansonsten macht ein Pixelshader auch nicht viel mehr, als Gleitkommaoperationen durchzuführen. Also möglich ist das sicher. Man braucht halt etwas vorarbeit um die Daten die berechnet werden sollen in "Grafikdaten" umzuwandeln. Aber doof finde ich die Idee eigentlich nicht. Moderne Grafikkarten haben übelst Performance, die eigentlich brach liegt sofern man nix spielt. Also warum nicht auch für was anderes nutzen wenn es geht :)
----------------------
Redakteur bei LowLevel

mastermesh

  • Beiträge: 341
    • Profil anzeigen
    • http://www.kostenloser-laptop.de/
Gespeichert
« Antwort #10 am: 23. November 2005, 15:17 »

Osbios

  • Beiträge: 247
    • Profil anzeigen
Gespeichert
« Antwort #11 am: 23. November 2005, 18:11 »
Zitat von: mastermesh
http://www.kvraudio.com/news/2201.html

Zitat
which are apparently capable of more than 40 gigaflops of processing power compared to less than 6 gigaflops on Intel and AMD CPUs.


40 GHz wenn man sie richtig einsetzt. O.o

OK, das dürfte interesant sein.
db 0x55AA

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #12 am: 23. November 2005, 19:30 »
GHz != Gigaflops

Aber mehr Rechenleistung haben sie. Nun ja, moderne Karten haben ja auch um die 16 Pixel Pipelines, während CPUs grad mal Dual Core beherrschen.
*post*

Osbios

  • Beiträge: 247
    • Profil anzeigen
Gespeichert
« Antwort #13 am: 23. November 2005, 20:54 »
k, das mit Gigaflops hab ich mir mal schnell bei wikipedia nachgelesen.

Bleibt aber noch ein Problem: Man kann die richtigen Funktionen einer neuen Grafikkarte nur mit Treibern ansprechen. Denn die Spec. sind z. B. bei Nvidia oder ATI Firmengeheimnis und die Treiber ClosedSource.
Es kann natürlich sein, dass es einige wenige Grakenhersteller gibt bei denen die Spec. veröffentlich wird, aber mir ist keiner davon bekannt.

Das ist für eine Hobby-OS natürlich unpraktisch.
db 0x55AA

Legend

  • Beiträge: 635
    • Profil anzeigen
    • http://os.joachimnock.de
Gespeichert
« Antwort #14 am: 23. November 2005, 21:15 »
Jo, das typische Problem. Für manche ältere ATI und evtl. Nvidia Karten (bin mir da nicht sicher) gibt es Open Source Treiber, aber die haben nicht so viel Kraft dahinter.
*post*

SSJ7Gohan

  • Beiträge: 398
    • Profil anzeigen
Gespeichert
« Antwort #15 am: 23. November 2005, 21:21 »
Man könnte ja Linux oder FreeBSD Kernelmodule in sein OS einbauen, um die Grafikkarten zu unterstützen, aber das macht nicht wirklich Sinn, da kann man auch gleich Linux/FreeBSD benutzen. Die Berechnung könnte man ja in ein Linux/BSD Kernelmodul einbauen, schneller als ein BSD/Linux Kernelmodul mit Pixelshader Unterstützung wirst du die Berechnung auf deinem OS auch nicht vornehmen können.

 

Einloggen