The BIOS identifies all of the CPUs to the OS, but the arrangement is deduced by the OS I believe.
Nate 2008/10/24 Lisa Hsu <[EMAIL PROTECTED]>: > where does this reporting to linux happen? > > On Fri, Oct 24, 2008 at 5:53 PM, nathan binkert <[EMAIL PROTECTED]> wrote: >> >> The OS interface to that doesn't work that way. Linux for example >> treats all threads and cores and such as different CPUs, it just knows >> that certain CPUs share certain resources. i.e. it uses one global id >> and just has extra knowledge about how things interact in the >> scheduler. >> >> So, each global context ID should be reported as a separate CPU to >> linux. Any actual coreID (maybe that's a better name) or cpuID or >> threadID would be only used in the simulator >> >> Nate >> >> On Fri, Oct 24, 2008 at 2:50 PM, Korey Sewell <[EMAIL PROTECTED]> wrote: >> > I do think a thread ID per core is necessary as you need to give OS's >> > the ability to assign to a specific thread in a core and not treat all >> > SMT cores as a separate CPU in every case. >> > >> > On Fri, Oct 24, 2008 at 5:47 PM, nathan binkert <[EMAIL PROTECTED]> >> > wrote: >> >> I'd say that a globally unique contextID is critical. A threadID that >> >> is per core can of course be created if necessary, but I bet that in >> >> most instances, we can just pass pointers around. >> >> >> >> Nate >> >> >> >>> I mostly agree with this, except that it might be tricky to use the >> >>> context ID t >> >>> index into a vector of thread contexts when the numbering doesn't >> >>> start over for >> >>> each CPU. Other than that it looks like we're strictly getting closer >> >>> to the >> >>> right answer at least. >> >>> >> >>> Gabe >> >>> >> >>> Quoting Lisa Hsu <[EMAIL PROTECTED]>: >> >>> >> >>>> yes, that's what i mean. >> >>>> >> >>>> believe it or not, right now if you run se.py -n4, all four cpus get >> >>>> cpuId = >> >>>> 0 (regardless of which cpu type you use). talk about broken. >> >>>> >> >>>> and from now on, getCpuId() should pretty much only be used for >> >>>> things like >> >>>> stats, or as a secondary identifier, the primary thing to care about >> >>>> is the >> >>>> HW context ID. >> >>>> >> >>>> On Fri, Oct 24, 2008 at 4:51 PM, Korey Sewell <[EMAIL PROTECTED]> >> >>>> wrote: >> >>>> >> >>>> > Are you saying make a distinction between the cpu ID and the actual >> >>>> > hardware context ID? This is something definitely needed. >> >>>> > >> >>>> > I think this is what you describe below... I'm seeing something >> >>>> > where >> >>>> > there is a: >> >>>> > getCpuId() and a getContext() function. >> >>>> > >> >>>> > On a 2-way SMT system with 1 CPU... >> >>>> > process0->getCpuId() = 0 >> >>>> > process0->getContext() = 0 >> >>>> > process1->getCpuId() = 0 >> >>>> > process1->getContext() = 1 >> >>>> > >> >>>> > but with a 2-CPU system , No-SMT... >> >>>> > process0->getCpuId() = 0 >> >>>> > process0->getContext() = 0 >> >>>> > process1->getCpuId() = 1 >> >>>> > process1->getContext() = 1 >> >>>> > >> >>>> > and finally, a 2-way SMT, 2-cpu system... >> >>>> > process0->getCpuId() = 0 >> >>>> > process0->getContext() = 0 >> >>>> > process1->getCpuId() = 0 >> >>>> > process1->getContext() = 1 >> >>>> > process2->getCpuId() = 1 >> >>>> > process2->getContext() = 2 >> >>>> > process3->getCpuId() = 1 >> >>>> > process3->getContext() = 3 >> >>>> > >> >>>> > Is this what you describe, by all means all systems go! >> >>>> > >> >>>> > 2008/10/24 Lisa Hsu <[EMAIL PROTECTED]>: >> >>>> > > Hi All, >> >>>> > > >> >>>> > > In case you haven't guessed it, I'm hacking on M5 once again. >> >>>> > > I've >> >>>> > noticed >> >>>> > > recently that there is a big hot mess when it comes to >> >>>> > > identification >> >>>> > > mechanisms for CPUs, threads, and contexts. Alternately all >> >>>> > > contexts are >> >>>> > > assumed to be separate CPUs (which is wrong when there is SMT), >> >>>> > > vs times >> >>>> > > when CPUs are CPUs and threads are subsets of certain CPUs such >> >>>> > > that a >> >>>> > > system can have names like CPU0,T0; CPU,T1; CPU1,T0; CPU1,T1, >> >>>> > > etc. >> >>>> > > >> >>>> > > I talked about it with Steve today and here's what I propose, let >> >>>> > > me know >> >>>> > if >> >>>> > > you object. >> >>>> > > >> >>>> > > All CPUs with have an ID, but this will not be a primary context >> >>>> > > identification mechanism. In other words, in many places where >> >>>> > > tc->getCpuId() is used in order to index into a threadContexts >> >>>> > > vector, it >> >>>> > > will be changed so that tc->getIdentifier() will give back >> >>>> > > something >> >>>> > unique >> >>>> > > across the system. >> >>>> > > >> >>>> > > The primary context identification mechanism will be a >> >>>> > > system-wide >> >>>> > context >> >>>> > > id-value. That means in a 2 CPU 2 thread SMT system, you will >> >>>> > > have >> >>>> > > system-wide context IDs of 0-3. So the tc->getCpuId() mentioned >> >>>> > > above >> >>>> > will >> >>>> > > be changed to something like tc->getContextId(). >> >>>> > > >> >>>> > > Each context will still have a pointer to the CPU it belongs to, >> >>>> > > which in >> >>>> > > turn will have an ID value so you can always know which CPU you >> >>>> > > belong to >> >>>> > if >> >>>> > > you want. >> >>>> > > >> >>>> > > >> >>>> > > I'm going to start working on this now, so speak now or forever >> >>>> > > hold your >> >>>> > > peace. :) >> >>>> > > >> >>>> > > Lisa >> >>>> > > >> >>>> > > _______________________________________________ >> >>>> > > m5-dev mailing list >> >>>> > > m5-dev@m5sim.org >> >>>> > > http://m5sim.org/mailman/listinfo/m5-dev >> >>>> > > >> >>>> > > >> >>>> > >> >>>> > >> >>>> > >> >>>> > -- >> >>>> > ---------- >> >>>> > Korey L Sewell >> >>>> > Graduate Student - PhD Candidate >> >>>> > Computer Science & Engineering >> >>>> > University of Michigan >> >>>> > _______________________________________________ >> >>>> > m5-dev mailing list >> >>>> > m5-dev@m5sim.org >> >>>> > http://m5sim.org/mailman/listinfo/m5-dev >> >>>> > >> >>>> > >> >>>> >> >>> >> >>> >> >>> >> >>> >> >>> _______________________________________________ >> >>> m5-dev mailing list >> >>> m5-dev@m5sim.org >> >>> http://m5sim.org/mailman/listinfo/m5-dev >> >>> >> >>> >> >> _______________________________________________ >> >> m5-dev mailing list >> >> m5-dev@m5sim.org >> >> http://m5sim.org/mailman/listinfo/m5-dev >> >> >> > >> > >> > >> > -- >> > ---------- >> > Korey L Sewell >> > Graduate Student - PhD Candidate >> > Computer Science & Engineering >> > University of Michigan >> > _______________________________________________ >> > m5-dev mailing list >> > m5-dev@m5sim.org >> > http://m5sim.org/mailman/listinfo/m5-dev >> > >> > >> _______________________________________________ >> m5-dev mailing list >> m5-dev@m5sim.org >> http://m5sim.org/mailman/listinfo/m5-dev >> > > > _______________________________________________ > m5-dev mailing list > m5-dev@m5sim.org > http://m5sim.org/mailman/listinfo/m5-dev > > _______________________________________________ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev