Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: SSJ7Gohan am 25. December 2005, 19:46
-
Hm, ich wollte mal SMP in meinen Kernel einbauen, habe aber selber keinen Prozessor, der es unterstützt. Gibt es einen Emulator, der mehrere Prozessoren simuliert? Kann ich mit Bochs einen Dualcore Prozessor simulieren?
-
Ja, mit Bochs geht das. Ich glaube dazu muss man nur ein anderes Biosimage laden, das kann man in den Optionen umstellen. Wie die Images heißen weiß ich nicht, einfach in dem Ordner von Bochs gucken was da so für Dateien herumliegen.
-
Und ich hab immerhin eine CPU mit 2 Kernen. ;)
-
Ja, mit Bochs geht das. Ich glaube dazu muss man nur ein anderes Biosimage laden, das kann man in den Optionen umstellen. Wie die Images heißen weiß ich nicht, einfach in dem Ordner von Bochs gucken was da so für Dateien herumliegen.
Du musst bochs neu kompilieren mit --enable-processors=bla :!: 0 < bla < 16. (http://bochs.sourceforge.net/doc/docbook/user/compiling.html)
-
Hm, kann ich irgentwie herausfinden, mit welchen Optionen meine Bochs Version configured wurde?
-
hi,
bei meinem bochs waren gleich mehrere roms für 2er,4er und 8er CPU Systeme dabei, aber ka inwiefern das alles funzt.
Muss man bei Multi-CPU bzw Dual-Core Systemen nicht irgendwie mit APIC (Advanced PIC) ran ? ich glaub mal gehört zu haben, dass die CPU (Cores) damit miteinander kommunizieren.
mfg,
stefan
-
bei meinem bochs waren gleich mehrere roms für 2er,4er und 8er CPU Systeme dabei, aber ka inwiefern das alles funzt.
Jo, die sind dabei, aber du musst imho bochs mit support für mehr als einen Prozessor kompilieren. Die BIOS images sind imho nur dafür da das zB die multiprocessor table (oder wie auch immer des heißt) erstellt wird.
Muss man bei Multi-CPU bzw Dual-Core Systemen nicht irgendwie mit APIC (Advanced PIC) ran ? ich glaub mal gehört zu haben, dass die CPU (Cores) damit miteinander kommunizieren.
die APIC ist nicht nur zur Kommunikation zischen den CPU's notwendig, sondern ist eine Erweiterung des normalen PIC und unterstützt deshalb mehr IRQ's. Ist aber imho erst ab Pentium vorhanden. Man muss halt bevor man die APIC benutzten will, via cpuid prüfen ob eine für die CPU existiert.
-
Hm, kann ich irgentwie herausfinden, mit welchen Optionen meine Bochs Version configured wurde?
über die bochs command line imho nicht. Einfach mal neu kompilieren. Is ja net so schwer und dauert auch net lang.
-
SMP funktioniert in etwa so, das man im BIOS Datenbereich nach einer Struktur sucht, welche Informationen über die Prozessoren, APICs usw. enthällt, dann diese Prozessoren bootet, in den PM schaltet und dann halt mit den APICs zwischen ihnen kommunizieren kann. Wobei es verschiedene APICs gibt, den Local APIC für die Prozessorkommunikation, und den IO APIC für IO Sachen.
Ich glaube, SMP ist schon ab dem 486er möglich.