Re: [gem5-users] O3CPU DeriveO3CPUParams

2018-03-17 Thread Jason Lowe-Power
Hi Tariq,

You answered your own question :). DerivO3CPU inherits from BaseCPU (just
not directly) in C++ and in Python.

What happens when the SimObject description file is parsed is that a new
C++ class is created. In this case, there is a C++ class called
DerivO3CPUParams. It inherits from BaseCPUParams since the Python SimObject
inherits from BaseCPU.

So, in C++, when you are constructing the DerivO3CPU, you pass the
DerivO3CPU params variable to the super-class (BaseCPU, eventually) which
uses those params as BaseCPUParams.

Cheers,
Jason

On Fri, Mar 16, 2018 at 10:42 AM Tariq Slayer 
wrote:

> Thanks for your reply. I initially thought they were part of variable
> defined in C++ source file, but now it makes sense that these are
> set/changed in python script.
>
> One more thing, inside the O3CPU.py:
>
> class DerivO3CPU(BaseCPU):
> type = 'DerivO3CPU'
> cxx_header = 'cpu/o3/deriv.hh'
>
> The way it is defined is that Deriv03CPU inherits the BaseCPU class.
>
> However in the deriv.hh source, it is written such that:
>
> class DerivO3CPU : public FullO3CPU { ...
>
> which shows the DerivO3CPU inherits the FullO3CPU. Is this ok to define
> this way if they are not matched? I know that FullO3CPU is derived from
> Base03CPU, which is also a child of BaseCPU class.
>
> Thanks
>
> On Fri, Mar 16, 2018 at 11:11 AM, Jason Lowe-Power 
> wrote:
>
>> Hi Tariq,
>>
>> The way SimObject parameters work is explained in Part 2 of Learning gem5
>>  here:
>> http://learning.gem5.org/book/part2/parameters.html. It's a little
>> convoluted (you have to go through python to set parameters), but it is
>> incredibly flexible.
>>
>> The *defaults* for these parameters, specifically, can be found in
>> src/cpu/o3/O3CPU.py. Of course, if you want to change these parameters you
>> should do it in your Python config/run script. The best way is to derive a
>> new class from DerivO3CPU and extend it with your own values for the
>> parameters. Or, if you want to get fancy, you can add command-line
>> parameters for the CPU parameters you want to change dynamically.
>>
>> Cheers,
>> Jason
>>
>> On Fri, Mar 16, 2018 at 9:05 AM Tariq Slayer 
>> wrote:
>>
>>> Hello,
>>>
>>> For O3CPU model, I have question regarding the parameters defined in in
>>> DeriveO3CPU Params. Where are these params being defined? For example in
>>> Fetch.cc source code, some of the arguments in the constructor's parameters
>>> are listed like this:
>>>
>>> ...
>>> decodeToFetchDelay(params->decodeToFetchDelay)
>>> renameToFetchDelay(params->renameToFetchDelay),
>>> iewToFetchDelay(params->iewToFetchDelay)
>>> ...
>>>
>>> For each of these param-> var_name, Where are these variable (or
>>> structure) defined? I know that these params are created in deriv.cc but I
>>> couldn't find the variables listed above. (except for numThread). It is not
>>> listed in BaseCPU class either.
>>>
>>> Also, I know there is a full documentation for InOrder CPU Model, but is
>>> there full doc or tutorial for O3CPU as well? The wiki page of O3CPU looks
>>> partially complete so I was hoping for any documentation that describes all
>>> the pipeline stages and its internal organization inside the O3CPU.
>>>
>>> Thank you
>>> ___
>>> gem5-users mailing list
>>> gem5-users@gem5.org
>>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>
>>
>> ___
>> gem5-users mailing list
>> gem5-users@gem5.org
>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>>
>
> ___
> gem5-users mailing list
> gem5-users@gem5.org
> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Re: [gem5-users] O3CPU DeriveO3CPUParams

2018-03-16 Thread Tariq Slayer
Thanks for your reply. I initially thought they were part of variable
defined in C++ source file, but now it makes sense that these are
set/changed in python script.

One more thing, inside the O3CPU.py:

class DerivO3CPU(BaseCPU):
type = 'DerivO3CPU'
cxx_header = 'cpu/o3/deriv.hh'

The way it is defined is that Deriv03CPU inherits the BaseCPU class.

However in the deriv.hh source, it is written such that:

class DerivO3CPU : public FullO3CPU { ...

which shows the DerivO3CPU inherits the FullO3CPU. Is this ok to define
this way if they are not matched? I know that FullO3CPU is derived from
Base03CPU, which is also a child of BaseCPU class.

Thanks

On Fri, Mar 16, 2018 at 11:11 AM, Jason Lowe-Power 
wrote:

> Hi Tariq,
>
> The way SimObject parameters work is explained in Part 2 of Learning gem5
>  here: http://learning.gem5.
> org/book/part2/parameters.html. It's a little convoluted (you have to go
> through python to set parameters), but it is incredibly flexible.
>
> The *defaults* for these parameters, specifically, can be found in
> src/cpu/o3/O3CPU.py. Of course, if you want to change these parameters you
> should do it in your Python config/run script. The best way is to derive a
> new class from DerivO3CPU and extend it with your own values for the
> parameters. Or, if you want to get fancy, you can add command-line
> parameters for the CPU parameters you want to change dynamically.
>
> Cheers,
> Jason
>
> On Fri, Mar 16, 2018 at 9:05 AM Tariq Slayer 
> wrote:
>
>> Hello,
>>
>> For O3CPU model, I have question regarding the parameters defined in in
>> DeriveO3CPU Params. Where are these params being defined? For example in
>> Fetch.cc source code, some of the arguments in the constructor's parameters
>> are listed like this:
>>
>> ...
>> decodeToFetchDelay(params->decodeToFetchDelay)
>> renameToFetchDelay(params->renameToFetchDelay),
>> iewToFetchDelay(params->iewToFetchDelay)
>> ...
>>
>> For each of these param-> var_name, Where are these variable (or
>> structure) defined? I know that these params are created in deriv.cc but I
>> couldn't find the variables listed above. (except for numThread). It is not
>> listed in BaseCPU class either.
>>
>> Also, I know there is a full documentation for InOrder CPU Model, but is
>> there full doc or tutorial for O3CPU as well? The wiki page of O3CPU looks
>> partially complete so I was hoping for any documentation that describes all
>> the pipeline stages and its internal organization inside the O3CPU.
>>
>> Thank you
>> ___
>> gem5-users mailing list
>> gem5-users@gem5.org
>> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>
>
> ___
> gem5-users mailing list
> gem5-users@gem5.org
> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>
___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Re: [gem5-users] O3CPU DeriveO3CPUParams

2018-03-16 Thread Jason Lowe-Power
Hi Tariq,

The way SimObject parameters work is explained in Part 2 of Learning gem5
 here:
http://learning.gem5.org/book/part2/parameters.html. It's a little
convoluted (you have to go through python to set parameters), but it is
incredibly flexible.

The *defaults* for these parameters, specifically, can be found in
src/cpu/o3/O3CPU.py. Of course, if you want to change these parameters you
should do it in your Python config/run script. The best way is to derive a
new class from DerivO3CPU and extend it with your own values for the
parameters. Or, if you want to get fancy, you can add command-line
parameters for the CPU parameters you want to change dynamically.

Cheers,
Jason

On Fri, Mar 16, 2018 at 9:05 AM Tariq Slayer 
wrote:

> Hello,
>
> For O3CPU model, I have question regarding the parameters defined in in
> DeriveO3CPU Params. Where are these params being defined? For example in
> Fetch.cc source code, some of the arguments in the constructor's parameters
> are listed like this:
>
> ...
> decodeToFetchDelay(params->decodeToFetchDelay)
> renameToFetchDelay(params->renameToFetchDelay),
> iewToFetchDelay(params->iewToFetchDelay)
> ...
>
> For each of these param-> var_name, Where are these variable (or
> structure) defined? I know that these params are created in deriv.cc but I
> couldn't find the variables listed above. (except for numThread). It is not
> listed in BaseCPU class either.
>
> Also, I know there is a full documentation for InOrder CPU Model, but is
> there full doc or tutorial for O3CPU as well? The wiki page of O3CPU looks
> partially complete so I was hoping for any documentation that describes all
> the pipeline stages and its internal organization inside the O3CPU.
>
> Thank you
> ___
> gem5-users mailing list
> gem5-users@gem5.org
> http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

[gem5-users] O3CPU DeriveO3CPUParams

2018-03-16 Thread Tariq Slayer
Hello,

For O3CPU model, I have question regarding the parameters defined in in
DeriveO3CPU Params. Where are these params being defined? For example in
Fetch.cc source code, some of the arguments in the constructor's parameters
are listed like this:

...
decodeToFetchDelay(params->decodeToFetchDelay)
renameToFetchDelay(params->renameToFetchDelay),
iewToFetchDelay(params->iewToFetchDelay)
...

For each of these param-> var_name, Where are these variable (or structure)
defined? I know that these params are created in deriv.cc but I couldn't
find the variables listed above. (except for numThread). It is not listed
in BaseCPU class either.

Also, I know there is a full documentation for InOrder CPU Model, but is
there full doc or tutorial for O3CPU as well? The wiki page of O3CPU looks
partially complete so I was hoping for any documentation that describes all
the pipeline stages and its internal organization inside the O3CPU.

Thank you
___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users