[gem5-users] how to interpret Commonitor output?

2020-03-15 Thread DaHoon Park
I want to trace Data Movement between CPU and L1DCache, so i
attached Commmonitor of changing BaseCPU.py.

Changed Code is this.

def addPrivateSplitL1Caches(self, ic, dc, iwc = None, dwc = None):
self.monitor = CommMonitor()
self.monitor.trace = MemTraceProbe(trace_file="se_trace.txt",
trace_compress=False)
print("test this build")
self.icache = ic
self.dcache = dc
self.icache_port = ic.cpu_side
#self.dcache_port = dc.cpu_side
self.dcache_port = self.monitor.slave
self.monitor.master = dc.cpu_side

However, this output file "se_trace,txt" can't interpret.

The top part of the output file is like this.
"
gem5<9b>^A
^Xsystem.cpu.monitor.trace^X<80>
<94>¥<8d>^]"^O^H^@^R^K.writebacks"^O^H^A^R^K.functional"^N^H^B^R
.interrupt"^S^H^C^R^O.cpu.dtb.walker"^S^H^D^R^O.cpu.itb.walker"^M^H^E^R
.cpu.inst"^M^H^F^R  .cpu.  etc ...
"

plz help to interpret Commmonitor output.
___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Re: [gem5-users] How to send write requests directly from Ruby L1 controllers?

2020-03-15 Thread Abhishek Singh
Thanks !

On Sun, Mar 15, 2020 at 6:48 PM Kevin Dong  wrote:

> Hi everyone,
>
> I've solved this problem, and this is a note for the future readers:
>
> Instead of directly calling queueMemoryWrite() within the L1 controller,
> though the type of its parent class, AbstractController, is as same as that
> of the directory controller. I found that it may be easier to implement by
> creating a new class inherited from the class AbstractController, and
> attach it to the L1 controller in the file MESI_Two_Level.py. Besides, its
> memory port has to connect to the crossbar port in the file Ruby.py.
>
> Regards,
> Kevin Dong Nai Jia
>
>
> On Sun, Mar 15, 2020 at 2:59 PM Kevin Dong  wrote:
>
>> Hi everyone,
>>
>> I am using Ruby cache with the MESI 2-level protocol. I found that only
>> the directory controller can call queueMemoryWrite() to send memory write
>> requests into the memory controller, but not the L1 caches directly. Should
>> I add some extra interconnections for Ruby to connect between L1 caches and
>> memory controller? Appreciate any help. Thanks!
>>
>> Regards,
>> Kevin Dong
>>
> ___
> 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] How to send write requests directly from Ruby L1 controllers?

2020-03-15 Thread Kevin Dong
Hi everyone,

I've solved this problem, and this is a note for the future readers:

Instead of directly calling queueMemoryWrite() within the L1 controller,
though the type of its parent class, AbstractController, is as same as that
of the directory controller. I found that it may be easier to implement by
creating a new class inherited from the class AbstractController, and
attach it to the L1 controller in the file MESI_Two_Level.py. Besides, its
memory port has to connect to the crossbar port in the file Ruby.py.

Regards,
Kevin Dong Nai Jia


On Sun, Mar 15, 2020 at 2:59 PM Kevin Dong  wrote:

> Hi everyone,
>
> I am using Ruby cache with the MESI 2-level protocol. I found that only
> the directory controller can call queueMemoryWrite() to send memory write
> requests into the memory controller, but not the L1 caches directly. Should
> I add some extra interconnections for Ruby to connect between L1 caches and
> memory controller? Appreciate any help. Thanks!
>
> Regards,
> Kevin Dong
>
___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

[gem5-users] modifying x86 macroops

2020-03-15 Thread Muhammad Aamir
Hi everyone,

Am trying to implement a custom macroop, using the already build in
microops in the x86 architecture, the problem that I am running into is
that when we define a certain macroop we have to implement it in 3
different ways. i.e. one that only uses registers (_R), one that reads one
of the operands from the memory (_M) using the address provided in the
instruction and the last one uses the address of the instruction pointer to
read the operand (_P).

is it possible to override this condition and implement it for only one
case, for example, for my custom macroop, which is to do a load operation,
can i just have it implemented that it reads from memory to registers and
not the other two cases?

Also, although it is not possible for x86 instructions to move to a single
"data entity" from one memory address to another if I wanted to do so, by
combining a set of micro ops will it be possible?
i would like to implement something like this: MOV_M_M. Will I able to
achieve this?

Any advise would be of much help

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

[gem5-users] How to send write requests directly from Ruby L1 controllers?

2020-03-15 Thread Kevin Dong
Hi everyone,

I am using Ruby cache with the MESI 2-level protocol. I found that only the
directory controller can call queueMemoryWrite() to send memory write
requests into the memory controller, but not the L1 caches directly. Should
I add some extra interconnections for Ruby to connect between L1 caches and
memory controller? Appreciate any help. Thanks!

Regards,
Kevin Dong
___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users