Zum Download bereit: Civ4-Mod "Mars, jetzt!"
"Frei sein heißt wählen können, wessen Sklave man sein will." (Jeanne Moreau, 1928 - )
"Immer wenn man die Meinung der Mehrheit teilt, ist es Zeit, sich zu besinnen." (Mark Twain, 1835 - 1910)
Warum ist Civ da so ein Sonderfall?
Sig sauer
Civ4 ist schon recht alt. Und ein Sonderfall ist Civ wohl kaum. Es gibt viele Spiele die nur einen Kern nutzen. Hauptsächlich so performance Toptitel leisten sich den Aufwand das ganze (vernünftig) zu parallelisieren.
Achtung Spoiler:
Civ ist absolut kein Sonderfall.
Civ war bis vor einigen Jahren der absolut Normalfall.
Ein Spiel muss explizit dafür geschrieben sein, dass es mehre Kerne und Hyperthreading ausnützt, ansonsten geht die übrige Rechenkraft (nahezu) verloren.
Dass ein 2,5Ghz CPU schneller als ein (mehrkern) CPU mit 2 Ghz bei Civ ist, ist auch nicht unbedingt der Fall, denn die Leistung pro Ghz ist nicht überall gleich.
(V.a.) alte Celerons bspw. sind im Vergleich zu den neuen Core i7 ein feuchter Furz, weil ihre Architektur im Vergleich extrem schlecht und veraltet ist.
Das mit den 2 GB für alle User Programme stimmt so nicht. Jedes Programm hat für sich 2 GB virtuellen Adressraum. In der ganzen Diskussion bezüglich des Speichers ist ohnehin ziemlich viel Halbwissen durcheinander gewürfelt worden. Deshalb gehe ich jetzt mal drauf ein:
Erstens muss zwischen physischem Speicher und virtuellem Adressraum unterschieden werden. Der physische Speicher ist jener Speicher der im Computer verbaut ist, also z.B. die 2 GB oder 4 GB Ram. Der virtuelle Speicher ist jener Speicher den ein Programm maximal verwalten kann. Dieser kann größer sein als der physische Speicher, aber auch kleiner. Weiters muss noch beachtet werden, dass jedes Programm seinen eigenen virtuellen Adressraum hat. Dieser kann auch kleiner sein als jener vom Betriebssystem. Dies ist z.B. der Fall wenn ein 32-Bit-Programm auf einem 64-Bit Betriebssystem läuft. Aber selbst manche 32-Bit-Betriebssysteme können mehr als 4 GB Ram verwalten. z.B. manche Server-Varianten von Windows können auch als 32-Bit-System bis zu 32 GB physischen Speicher verwalten. Dies funktioniert im Zusammenspiel mit Hardwareerweiterungen der CPUs. Genau genommen ist bei neueren Betriebssystemen (ab irgend einem SP für XP) und CPUs dieser PAE-Modus immer aktiv, da nur in diesem Modus das NX-Bit zur "Datenausführungsverhinderung" genutzt werden kann. Nur lizenzrechtliche Einschränkungen von Microsoft verhindern, dass die meisten Windows 32-Versionen mehr als 4 GB Speicher nutzen.
Auf den meisten 32-Bit-Windows Versionen stehen also nur maximal 4 GB Speicher zur Verfügung. Effektiv ist es allerdings weniger, da es ja nicht nur Hauptspeicher gibt, der über den virtuellen Adressraum angesprochen werden muss. Der mit Abstand größte Brocken ist hierbei der Grafikspeicher. Wer also z.B. eine Grafikkarte mit 512 MB Grafikspeicher hat, reduziert den maximal vom Betriebssystem nutzbaren Hauptspeicher schon mal auf 3,5 GB. Daneben gibt es aber auch noch andere Geräte die etwas Adressraum brauchen. So Pendelt sich der maximal verfügbare Speicher dann noch etwas darunter ein. Dieser Speicher kann dann allerdings von allen Programmen genutzt werden.
Die Einschränkung mit den 2 GB pro Prozess ist wiederum etwas anderes. Nur der virtuelle Adressraum jedes einzelnen Prozesses ist beschränkt. Das bedeutet ein Prozess, also z.B. Civ kann maximal 2 GB Speicher belegen. Alle Programme zusammen können natürlich viel mehr belegen. Da es die Auslagerungsdatei gibt, können auch alle Programme zusammen mehr Speicher belegen als physisch vorhanden ist. Mit dem /3 GB Switch, erlaubt man einem einzelnen Programm bis zu 3 GB Speicher zu belegen. Nur so nebenbei bemerkt reicht das aber auch nicht immer, da das Programm selber entsprechend compiliert sein muss. Nur wenn das Large-Address-Aware-Flag gesetzt ist kann ein Prozess dann wirklich mehr als 2 GB verwenden. Man kann das bei Programmen aber nachträglich hinein patchen und bei den meisten geht das auch. Die neueren haben da ohnehin per default aktiviert. Ein Programm ohne Large-Address-Aware-Flag kann aber auch unter einem 64-Bit-OS nur maximal 2 GB Speicher nutzen! Mit Large-Address-Aware-Flag hingegen sind die vollen 4 GB möglich. Ein 64-Bit-Programm hingegen kann auch mehr nutzen.
Für praktisch alle etwas älteren Spiele bringen CPUs mit mehr als 2 Kernen keinen Leistungsgewinn. Programme, die auf die Benutzung von mehreren Kernen optimiert sind, laufen auf Prozessoren mit nur einem Kern normalerweise langsamer. Da es die Mehrkernprossoren noch nicht so lange gibt, wurden die Spiele deshalb sehr lange nur für einen Kern geschrieben. Nicht zu letzt ist es aufwändiger und komplizierter Software zu schreiben, die mehr als einen Kern unterstützt. Der Vorteil einer Dual-Core-CPU resultiert daraus, dass neben dem Spiel auch noch andere Prozesse laufen. Diese benötigen bei einem einzigen Kern immer ein paar Prozent Leistung. Auf einem Dual-Core hingegen steht dann praktisch ein Kern nur dem Spiel zur Verfügung. Das ergibt dann diese leichte Leistungssteigerung. Bei einem Quad-Core ist dann kein Zugewinn mehr da, da für die beiden zusätzlichen Kerne keine Aufgaben zum Berechnen vorhanden sind.
Aber natürlich. Oder verstehe ich dich falsch ? (Redest du von Spielen allgemein ?)
Genau wie bei dual-core Optimierung werden die Aufgaben dann aufgeteilt, wieviel Kerne du hast ist komplett nichtig, wenn das Programm auf die jeweilige Anzahl hin programmiert wurde.
Mir ist auch nicht wirklich klar wieso du den vorherigen Text geschrieben hast, das dürfte die meißten hier nur verwirren.
Der Beitrag von Der_Donnervogel war doch mal eine schöne technische Ausführung. Den Nicht-Zugewinn bei Quad-Cores verstehe ich folgendermassen:
Du hast ein Programm/Spiel, das nur für Single-Cores geschrieben wurde. Hast Du jetzt einen Dual-Core lässt Du das Hauptprogramm/Spiel auf einem Kern laufen und ziehst die Hintergrundanwendungen auf einen (oder bei einem Quad auf mehrere) andere(n) Kern(e). Da diese Hintergrundanwendungen zumeist ja nicht diese Masse an Rechenleistung verlangen wie das Hauptprogramm, wird es dadurch egal, auf wieviele Kerne Du die Hintergrundanwendungen ziehst, weil der Taktgeber ja der Kern ist auf dem das Hauptprogramm läuft. Damit ist "Bei einem Quad-Core ... kein Zugewinn mehr da".
Dafür stimme ich Dir 100% beim Post 49 zu, schliesslich hatte ich die "glorreiche Idee", mir einen D915 zuzulegen, dem Gähn-Dual-Core überhaupt...
Ja, man kann es in etwa so sagen. In vielen Fällen sind bei einem Quad-Core deshalb 2 bis 3 Kerne praktisch nicht ausgelastet. Das ist genau der Umstand, der den Turbo Boost vor allem bei den Core-i Prozessoren von Intel mit vier echten Kernen interessant macht. Da kann leicht der Kern ein paar hundert MHz hoch takten der gerade voll ausgelastet wird. Gleichzeitig taktet man die anderen, die nichts zu tun haben, herunter damit die CPU insgesamt nicht zu heiß wird. Eigentlich müsste so eine CPU für Civ (als Single-Core-Anwendung) am besten sein.
Das Ärgerliche an der Quad-Core-Sache im Hinblick auf Civ ist allerdings, dass gerade Civ sich theoretisch hervorragend eignen würde um es auf mehrere Kerne zu verteilen. Bei der Berechnung der Züge der KI könnte man vieles gleichzeitig berechnen. Beispielsweise wenn die Einheiten der KIs ziehen, könnte man für mehrere Einheiten die Pfade gleichzeitig berechnen. Civ könnte höchst wahrscheinlich nicht nur von Dual- oder Quad-Core CPUs massiv profitieren, sondern sogar von noch mehr Kernen, wenn es denn so programmiert wäre.
Ich selber habe mit dem Q8200 (also Core 2 Quad mit 2,33 GHz) eine CPU, die für Civ auch nicht sonderlich gut geeignet ist, da es den Großteil der theoretisch vorhandenen Rechenleistung brach liegen lässt. Wobei ich das schon gewusst habe, als ich den Computer gekauft habe. Gute Performance unter Civ war für mich zweitrangig, sonst hätte ich mir damals einen schnellen Dual-Core geholt.
Ach ja, und die technischen Ausführungen habe ich hier nur geschrieben, da in diesem Thread so viele Dinge erwähnt wurden, die irgendwo halb richtig sind und dann doch wieder irgendwo falsch, dass ich mir gedacht habe, ich stelle das mal richtig. Eigentlich wollte ich nur mal schauen, was bei Civ im Moment so los ist, und bin da zufällig über diesen Thread gestolpert. Ich bin was Civ, uns somit auch dieses Forum, betrifft schon ne ganze Weile praktisch inaktiv. Nun, dieses Jahr könnten es wieder mehr werden. Der erste Monat noch nicht mal um ist und ich habe hier schon so viele Beiträge wie im ganzen vorigen Jahr geschrieben, nämlich 2!
na, wer versucht sich daran die civ.exe auf multicore umzustellen?^^
Naja, Chuck Norris könnte es schaffen.
Zum Download bereit: Civ4-Mod "Mars, jetzt!"
"Frei sein heißt wählen können, wessen Sklave man sein will." (Jeanne Moreau, 1928 - )
"Immer wenn man die Meinung der Mehrheit teilt, ist es Zeit, sich zu besinnen." (Mark Twain, 1835 - 1910)
Firaxis könnte ja mal Civ4,5 raus bringen: Civ4 mit Multicore-Unterstützung.
.
Somewhere over the rainbow...
...there's no place like home.
Judy Garland, The Wizard Of OZ
Ci[Wii]lization @ 1292 6114 9198 7307
chuck norris kann bei dem wetter eiswuerfel pinkeln und seine mutter darf angst vor ihm haben.
aber ich denke soooooooo cool ist er doch nicht.
Das müsste einer mit ziemlich viel Zeit sein. Als am besten jemand der riesige Karten mit sehr viele KIs spielt und dann immer zwischen den Runden coden kann.
Wird er aber nicht machen.
Chuck Norris übernimmt grundsätzlich alle Civs selber, da er nur so im höchsten Schwierigkeitsgrad spielen kann, nämlich "Chuck Norris".
das waers doch, ein mod "chuck norris".
schon in der steinzeit kommen die barbaren mit panzer.