Hi Jiayuan, You're right, it's arbitrary... it's not something we've ever had to worry about before. The current situation is that the thread contexts are bound to CPUs via each CPU's init() method (see cpu/base.cc). The init() methods are called on each SimObject in arbitrary order. The thread contexts are then handed out to the CPUs in the order in which they call Process::registerThreadContext().
If you want more control over this, you'll have to change this code somehow. Perhaps you could pass the CPU's cpu_id parameter in to Process::registerThreadContext() to select which context gets handed to the CPU... sort of along the lines of what FS mode already does (i.e. end up making Process::registerThreadContext() look more like System::registerThreadContext()). If you do this and it works well, please send us a patch and we'll see if we can get it in the next release. Steve Jiayuan Meng wrote: > Hey all, > > Quick question, how do assign the main thread to a specified cpu(core) > in a multi-core configuration? I notice that for each process, > threadcontext[0] will be used as the main thread. However, it seems to > be undeterministic to specify which cpu gets this threadcontext[0]. I am > now using a heterogeneous configuration, with a control cpu and several > slave cpus, and I want the main thread assigned to the control cpu. > However, no matter how I changed the order in which the cpus are defined > and used in the python script, it's always a slave cpu that gets > threadcontext[0]. > > Thanks! > > Jiayuan > > > ------------------------------------------------------------------------ > > _______________________________________________ > m5-users mailing list > [email protected] > http://m5sim.org/cgi-bin/mailman/listinfo/m5-users _______________________________________________ m5-users mailing list [email protected] http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
