Einzelnen Beitrag anzeigen
Alt 24.03.2006, 00:54   #17
fs-simul
Veteran
 
Registriert seit: 28.12.2005
Beiträge: 296


Standard

Zitat:
Original geschrieben von alfora
Was ich überhaupt nicht verstehe ist, wie es eigentlich möglich ist, dass eine moderne Applikation auf einem modernen Betriebssystem KEINE Mehrfach-CPUs unterstützt.
Weil das nicht so einfach ist wie es oberflaechlich betrachtet aussieht.
Das faengt an bei der 3D Schnittstelle die dafuer nicht ausgelegt ist. Alle Daten die zur Grafikkarte ueber die DirektX Schnittstelle gehen muessen beispielsweise erst in einem Thread gesammelt werden. Und innerhalb des Programmes ist es nicht damit getan alle moeglichen Aufgaben auf Threads zu verteilen. Das kostet auch entsprechenden Verwaltungsaufwand der kontraproduktiv waere wenn der Gewinn durch die sich tatsaechlich parallelisierbare Arbeit zu gering ausfallen wuerde. Um parallel arbeiten zu koennen muss diese auch unabhaengig voneinander sein und dort wo es Synchronisationspunkte gibt oder Daten ausgetauscht werden muessen darf es keine groesseren Wartezeiten geben. Wenn ein Thread zu lange auf das Ergebniss eines anderen warten muss ist der durch das parallele arbeiten gewonnene Zeitvorteil schnell dahin. Auch das gegenseitige blockieren von Threads X wartet auf Y, Y auf Z und Z auf X (Deadlock) muss zuverlaessig verhindert werden. Um all dies muss sich der Entwickler kuemmern wenn sein Programm fehlerfrei laufen und entsprechend gut skalieren soll. Manche Algorithmen lassen sich grundsaetzlich nicht parallelisieren. Bei anderen muss man erst aufwendig entsprechende Abhaengigkeiten entkoppeln. Das setzt entsprechendes Know-How beim Entwickler vorraus welches oft nicht vorhanden ist. Hinzu kommt das die meisten Entwicklungs und Debuggingtools noch nicht fuer Fehlersuche und Optimierungen fuer parallel arbeitende Programme ausgelegt sind.
Am einfachsten ist es wenn es keine Abhangigkeiten gibt was in einigen Anwendungsgebieten bspw. beim Rendering, wo eine CPU z.B. die geraden Zeilen und eine andere die ungeraden Zeilen rendern kann, der Fall ist. Dort sind die Programme schon lange multiprozessorfahig und skalieren auch nahezu 100 Prozent mit der Anzahl der CPUs.
Beim FS ist die Sache wesentlich komplizierter obwohl dort sicherlich auch einiges Parallelisierungspotential drin steckt. Aber vermutlich muessten dazu auch viele Sachen von Grund auf neu programmiert werden.
Bis sich Multiprozessorunterstuetzung auf breiter Flaeche in Programmen durchgesetzt hat hast du vermutlich schon 6 oder mehr Prozessoren in deinem Rechner und dann bringen auch schon geringe Skalierungsraten einen signifikanten Gewinn.
fs-simul ist offline   Mit Zitat antworten