Jakker,
betreff der SW Entwicklung gab es 2003/2004 das große Aha Erlebnis. War es bis zu diesem Zeitpunkt Aufgabe einer relativ kleinen Gruppe von Hardware Entwicklern, von Generation zu Generation die Leistung von Single Threaded Anwendungen nach oben zu treiben, war das mit der Entscheidung von Intel zur Prescott Serie endgültig vorbei. Nicht umsonst spricht man von "The free ride was over" und meinte damit, daß die Anwendungssoftwareentwickler einfach gratis in den Genuss der schnelleren HW Leistung vom Intel 8088 bis zum Prescott (ca. 3000x schneller) kamen. Nachdem die Energiedichte auf der CHipoberfläche jene der Sonne erreichte, gab es einfach keinen technologisch und kaufmännisch sinnvollen Weg, die Leistung wie in der Vergangenheit ohne Änderung in der Anwendungssoftware zu steigern.
Höherer Takt, höhere IPC (Instruction per Cycle), bessere Speicherhierarchie mit mehreren Cache Ebenen, Out-of-Order Execution, Branch prediction, mehr Transistoren pro Funktion, multiple Funktionseinheiten, bessere Überlappung der Addressgenerierung zu Ausführungseinheiten, bessere Überlappung der Speicherzugriffe, usw, usf, ...
Seit diesem Zeitpunkt *müssen* alle Anwendungsentwickler explizit parallel denken und entwicklen - die komfortable Situation aus den Anfangsjahren ist endgültig vorbei. Die Fortführung der alten HW Methoden der Leistungssteigerung würde den Chip einfach schmelzen lassen, bzw. den Energieverbrauch in astronomische Höhen treiben.
Parallele Programmierung ist nicht einfach, vor allem nicht für Desktop Programme. Somit wanderte die "Verpflichtung" Leistungssteigerung zu finden von einer Handvoll HW Experten zu ein paar zig Millionen von Anwendungssoftwareentwicklern.
Warum dein i7 System rauscht weiß ich nicht, meine i7 Systeme sind alle quasi lautlos.
Wolfgang,
danke für den Hinweis mit der gleichzeitigen CNX Bearbeitung - das schaue ich mir bei mir nochmals genauer an warum das nicht geht (Welche Version nutzt Du?)
Zu deinen 74/78/80% Beobachtung. Klar kann ein Betriebsystem mehreren unabhängigen Programmen Rechenkerne zuteilen. Nur sagt dieser Wert nicht wie gut eine Anwendung parallelisiert worden ist. Dreh einfach Nero ab, und schau dir dann die durchschnittliche CPU Auslastung an, wenn nur CNX im Batchmodus und interaktiv läuft. Hast Du dann noch immer 80% Auslastung auf deinen 12 Kernen? Ich vermute: Nein.
Die von dir beschriebenen Peaks sind nur temporäre Ausschläge einzelner Kerne die nicht zugleich stattfinden. Schalte die Darstellung auf nur eine CPU Anzeige um, wenn nur CNX läuft - das akkumuliert die einzelnen CPU Werte zu einer aussagkräftigeren Zahl, was CNX con deinen 12 Kernen nutzt.
Anbei ein Bild des Taskmanagers von einer Anwendung die recht gut parallel läuft. 32 Kerne für eine Anwendung. (Ich lasse jetzt einmal die ganze Thematik der computational density außen vor, die nur über den Energieverbrauch der Anwendung gemessen werden kann. Der Taskmanager kann das nicht abbilden)
Franz,
wenn ein Kern 190 Sekunden braucht, dann sollte dein System mit 12 Kernen, wenn sie optimal ausgenutzt werden 190/12 Sekunden schnell sein (= ca. 16 Sekunden), da es jedoch 60 Sekunden braucht, wird bei 3-4 CPU Kernen Schluss mit der Skalierung sein.
Kannst Du einfach überprüfen:
Lass die Stapellauf mit einer CPU laufen, mach den Stapellauf danach mit 2 Kernen, dann 3 Kernen usw usf. Dann siehst Du recht schön, ab wann es kaum mehr eine Leistungssteigerung gibt, wenn Du CNX mehr CPU Kerne gibst.
PS:
Bei CNX ist es egal, bei rechen- und speicherintensiven Programmen ist es nicht egal welche CPU Kerne des Systems für eine Anwendung frei gegeben werden. Stichwort: Cache trashing.
Ein anderer Hinweis. Die CPU mit der höchsten # wird von Windows für die Bearbeitung der Interrupts und I/O verwendet und ist daher von Haus aus die langsamste für Anwendungsprogramme, wenn das System eine hohe Interruptlast hat.
LG,
Andy