- add SMP simulation instructions
This commit is contained in:
parent
2478decb1e
commit
892badb077
@ -1,7 +1,7 @@
|
||||
<!--
|
||||
================================================================
|
||||
doc/docbook/user/user.dbk
|
||||
$Id: user.dbk,v 1.20 2001-11-14 04:18:24 bdenney Exp $
|
||||
$Id: user.dbk,v 1.21 2001-11-14 04:37:24 bdenney Exp $
|
||||
|
||||
This is the top level file for the Bochs Users Manual.
|
||||
================================================================
|
||||
@ -2455,7 +2455,86 @@ files with the bochs disk images. This is what I found out:
|
||||
</screen>
|
||||
</para>
|
||||
</section>
|
||||
|
||||
<section><title>Simulating a Multiprocessor Machine</title>
|
||||
<para>
|
||||
Bochs can now simulate an SMP machine when you use "--enable-processors=N"
|
||||
in the configure command. SMP support was added by Bryce Denney, who
|
||||
was very interested in watching a multiprocessor operating system work
|
||||
at a low level. It should also be helpful to operating system developers
|
||||
who are writing SMP drivers, or just for users who want to test drive
|
||||
an SMP machine to see what it looks like.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
It is important to understand that configuring bochs for 4 processors will make
|
||||
your single-threaded applications run faster in general! On the contrary, it
|
||||
has to spend time simulating idle processors as well as the ones doing your
|
||||
task. The point is to simulate an SMP system, not to speed up a uniprocessor
|
||||
application.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
What was required to make SMP work in Bochs? (Note that only Linux 2.2
|
||||
has been tested so far.)
|
||||
<itemizedlist>
|
||||
<listitem><para> local APIC on each processor with timer
|
||||
</para></listitem>
|
||||
<listitem><para> one I/O APIC model
|
||||
</para></listitem>
|
||||
<listitem><para> implement RDTSC feature (read time stamp counter)
|
||||
</para></listitem>
|
||||
<listitem><para> modifications to rombios.c to add a data structure called the Intel
|
||||
Multiprocessor Configuration. An SMP-aware operating system
|
||||
probes BIOS memory to find the structure, which contains information about
|
||||
how many processors, their IDs, interrupt sources, etc.
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
What needs to be done to improve SMP support?
|
||||
|
||||
<itemizedlist>
|
||||
<listitem><para>
|
||||
still needs work on rombios.c to allow you to configure the number of
|
||||
processors in the .bochsrc. Presently you have to choose the number
|
||||
of processors at compile time.
|
||||
</para></listitem>
|
||||
|
||||
<listitem><para>
|
||||
debugger support is still limited. For example, you can set breakpoints,
|
||||
but you can't specify which processor you want to set the breakpoint for.
|
||||
</para></listitem>
|
||||
|
||||
<listitem><para>
|
||||
test on SMP systems other than linux 2.2.14
|
||||
</para></listitem>
|
||||
|
||||
<listitem><para>
|
||||
several parts of the APIC model which weren't needed for linux 2.2.14
|
||||
are not implemented yet and cause a panic. If you boot linux 2.4.3 for
|
||||
example, it says "panic: cluster model addressing not implemented". See
|
||||
<ulink url="http://sourceforge.net/tracker/index.php?func=detail&aid=421938&group_id=12580&atid=362580">bug report #421938</ulink> for tips on getting linux 2.4 to boot.
|
||||
(The apic is not the only problem!)
|
||||
</para></listitem>
|
||||
|
||||
<listitem><para>
|
||||
A number of people have suggested using threads to simulate each CPU in
|
||||
a different thread. Then on a real SMP machine, the threads can execute
|
||||
in parallel. This is a great idea, but it's not done at present.
|
||||
</para></listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
</chapter>
|
||||
|
||||
|
||||
|
||||
|
||||
<chapter><title>Guest operating systems</title>
|
||||
<section><title>Linux</title>
|
||||
<para>
|
||||
|
Loading…
x
Reference in New Issue
Block a user