Ohne dem könnte der Boot-Loader gar nicht die anderen CPUs finden und aktivieren (deswegen bin ich mir auch relativ sicher dass das auch bei x86 möglich ist).
Also das BIOS weckt die CPUs genauso auf, wie das OS es später machen soll. Es wird eine (oder zwei) IPI-Init Nachrichten an alle CPUs gesendet und dann eine IPI-Startup Nachricht an alle und mit Hilfe eines Counters "zählt" man dann die CPUs. So stand es in einem Dokument von Intel.
ob das festpinnen oder IPIs oder irgendwas anderes ist ist ja erstmal egal
Stimmt, nur ist das Aufrufen des Schedulers nicht einfacher als den Algo des Schedulers irgendwie zu modifizieren?
Ich weiß es nicht genau aber das die Bulldozers Probleme mit dem geteilten Cache haben wird wohl eher am gegenseitigen Verdrängen durch Aliasing liegen, dieses Problem hatte Intel mit den ersten P4's mit Hyperthreading auch, da kann der Scheduler vom OS gar nix gegen tun (hier könnte höchstens besseres ASLR helfen), sowas muss in der HW gefixt werden.
Was genau meinst du mit "Aliasing"?
Soweit ich es vestanden habe, ist der Scheduler von Windows 7 sehr wohl ein Problem. Aus dem Grund warum Hyperthreading mit ihm besser funktioniert als vorher
Denn der Scheduler arbeitet so, dass erst alle geraden Kerne (bei 0 startend) ausgelastet werden bis die ungeraden ausgelastet werden. Das soll die Effizienz bei Hyperthreading verbessern, aber da der L2-Cache bei einem "Dual"-Core beim Bulldozer immer gesharet wird, führt das zu Problem. Denn so werden immer genau die Kerne zu erst ausgelastet, die keinen gemeinsamen Cache haben.
Was mir daran ein wenig suspekt vorkommt, es scheint ja auf Mehrkern-CPUs ohne Hyperthreading auch zu funktionieren, dass alle Kerne ausgelastet werden. Also denke ich mal das AMD die ungeraden Kerne alle als Hyperthreading-Kerne (per CPUID) meldet und deswegen der Scheduler solche Entscheidungen trifft. Ist eigentlich ein Problem von AMD und nicht vom Windows-Scheduler. Ich finde es auch irgendwie behämmert, wenn man für jede CPU (und damit meine ich nicht mit oder ohne Hyperhtreading und Mehrkern CPUs) einen eigenen Scheduler braucht. Denn das Problem wäre ja durch eine einfache Änderung im CPUID-Befehl zu lösen.
Dafür wäre es interessant ob CPUID Mikrocode ist (wovon ich eigentlich ausgehe). Denn dann wäre es ja theoretisch möglich ein Update nachzuschieben.
Alles ist letztendlich (zumindest teilweise) subjektiv, und persönliche Meinungen erst recht.
Das stimmt wohl. Nur kann man sich z.B. nicht darüber streiten das 1+1 = 2 ist, oder
Das Problem mit KISS ist ja auch, eine Lösung ist nur solange KISS, bis eine noch einfachere gefunden wurde. Ist doch mit fast allen Sachen so, es ist so lange unmöglich bis jemand bewiesen hat das es möglich ist