Re: [gem5-dev] Review Request: Ruby: Add support for functional accesses

2011-06-12 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/
---

(Updated 2011-06-12 14:55:53.667339)


Review request for Default.


Summary (updated)
---

Ruby: Add support for functional accesses
This patch is meant for implementing functional access support in Ruby.
Currently only the M5Port of RubyPort supports functional accesses. The
support for functional through the PioPort will be added as a separate
patch. The patch has been tested for MI, MOESI directory, MOESI hammer
and MESI directory protocols. It seems that MOESI token protocol cannot
support functional accesses with it current implementation, there seems
to be some problem with the L2 cache controller.


Diffs (updated)
-

  configs/example/ruby_direct_test.py ac4da9f8ea80 
  configs/example/ruby_fs.py ac4da9f8ea80 
  configs/example/ruby_mem_test.py ac4da9f8ea80 
  configs/example/ruby_network_test.py ac4da9f8ea80 
  configs/example/ruby_random_test.py ac4da9f8ea80 
  configs/ruby/MESI_CMP_directory.py ac4da9f8ea80 
  configs/ruby/MI_example.py ac4da9f8ea80 
  configs/ruby/MOESI_CMP_directory.py ac4da9f8ea80 
  configs/ruby/MOESI_CMP_token.py ac4da9f8ea80 
  configs/ruby/MOESI_hammer.py ac4da9f8ea80 
  configs/ruby/Ruby.py ac4da9f8ea80 
  src/cpu/testers/memtest/memtest.hh ac4da9f8ea80 
  src/cpu/testers/memtest/memtest.cc ac4da9f8ea80 
  src/mem/packet.hh ac4da9f8ea80 
  src/mem/packet.cc ac4da9f8ea80 
  src/mem/protocol/MOESI_CMP_directory-L1cache.sm ac4da9f8ea80 
  src/mem/protocol/MOESI_CMP_directory-L2cache.sm ac4da9f8ea80 
  src/mem/protocol/MOESI_CMP_directory-dir.sm ac4da9f8ea80 
  src/mem/protocol/MOESI_hammer-cache.sm ac4da9f8ea80 
  src/mem/protocol/MOESI_hammer-dir.sm ac4da9f8ea80 
  src/mem/ruby/network/Network.cc ac4da9f8ea80 
  src/mem/ruby/network/Network.py ac4da9f8ea80 
  src/mem/ruby/profiler/Profiler.cc ac4da9f8ea80 
  src/mem/ruby/profiler/Profiler.py ac4da9f8ea80 
  src/mem/ruby/recorder/Tracer.cc ac4da9f8ea80 
  src/mem/ruby/recorder/Tracer.py ac4da9f8ea80 
  src/mem/ruby/slicc_interface/AbstractController.hh ac4da9f8ea80 
  src/mem/ruby/slicc_interface/AbstractController.cc PRE-CREATION 
  src/mem/ruby/slicc_interface/Controller.py ac4da9f8ea80 
  src/mem/ruby/slicc_interface/SConscript ac4da9f8ea80 
  src/mem/ruby/system/AbstractMemory.hh PRE-CREATION 
  src/mem/ruby/system/AbstractMemory.cc PRE-CREATION 
  src/mem/ruby/system/AbstractMemory.py PRE-CREATION 
  src/mem/ruby/system/Cache.py ac4da9f8ea80 
  src/mem/ruby/system/CacheMemory.hh ac4da9f8ea80 
  src/mem/ruby/system/CacheMemory.cc ac4da9f8ea80 
  src/mem/ruby/system/DirectoryMemory.hh ac4da9f8ea80 
  src/mem/ruby/system/DirectoryMemory.cc ac4da9f8ea80 
  src/mem/ruby/system/DirectoryMemory.py ac4da9f8ea80 
  src/mem/ruby/system/RubyPort.hh ac4da9f8ea80 
  src/mem/ruby/system/RubyPort.cc ac4da9f8ea80 
  src/mem/ruby/system/RubySystem.py ac4da9f8ea80 
  src/mem/ruby/system/SConscript ac4da9f8ea80 
  src/mem/ruby/system/Sequencer.py ac4da9f8ea80 
  src/mem/ruby/system/System.hh ac4da9f8ea80 
  src/mem/ruby/system/System.cc ac4da9f8ea80 
  src/mem/slicc/ast/MemberExprAST.py ac4da9f8ea80 

Diff: http://reviews.m5sim.org/r/611/diff


Testing
---


Thanks,

Nilay

___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


Re: [gem5-dev] Review Request: [mq]: FunctionalAccess.9.patch

2011-06-12 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/
---

(Updated 2011-06-12 14:55:00.907885)


Review request for Default.


Summary (updated)
---

[mq]: FunctionalAccess.9.patch


Diffs (updated)
-

  configs/example/ruby_direct_test.py ac4da9f8ea80 
  configs/example/ruby_fs.py ac4da9f8ea80 
  configs/example/ruby_mem_test.py ac4da9f8ea80 
  configs/example/ruby_network_test.py ac4da9f8ea80 
  configs/example/ruby_random_test.py ac4da9f8ea80 
  configs/ruby/MESI_CMP_directory.py ac4da9f8ea80 
  configs/ruby/MI_example.py ac4da9f8ea80 
  configs/ruby/MOESI_CMP_directory.py ac4da9f8ea80 
  configs/ruby/MOESI_CMP_token.py ac4da9f8ea80 
  configs/ruby/MOESI_hammer.py ac4da9f8ea80 
  configs/ruby/Ruby.py ac4da9f8ea80 
  src/cpu/testers/memtest/memtest.hh ac4da9f8ea80 
  src/cpu/testers/memtest/memtest.cc ac4da9f8ea80 
  src/mem/packet.hh ac4da9f8ea80 
  src/mem/packet.cc ac4da9f8ea80 
  src/mem/protocol/MOESI_CMP_directory-L1cache.sm ac4da9f8ea80 
  src/mem/protocol/MOESI_CMP_directory-L2cache.sm ac4da9f8ea80 
  src/mem/protocol/MOESI_CMP_directory-dir.sm ac4da9f8ea80 
  src/mem/protocol/MOESI_hammer-cache.sm ac4da9f8ea80 
  src/mem/protocol/MOESI_hammer-dir.sm ac4da9f8ea80 
  src/mem/ruby/network/Network.cc ac4da9f8ea80 
  src/mem/ruby/network/Network.py ac4da9f8ea80 
  src/mem/ruby/profiler/Profiler.cc ac4da9f8ea80 
  src/mem/ruby/profiler/Profiler.py ac4da9f8ea80 
  src/mem/ruby/recorder/Tracer.cc ac4da9f8ea80 
  src/mem/ruby/recorder/Tracer.py ac4da9f8ea80 
  src/mem/ruby/slicc_interface/AbstractController.hh ac4da9f8ea80 
  src/mem/ruby/slicc_interface/AbstractController.cc PRE-CREATION 
  src/mem/ruby/slicc_interface/Controller.py ac4da9f8ea80 
  src/mem/ruby/slicc_interface/SConscript ac4da9f8ea80 
  src/mem/ruby/system/AbstractMemory.hh PRE-CREATION 
  src/mem/ruby/system/AbstractMemory.cc PRE-CREATION 
  src/mem/ruby/system/AbstractMemory.py PRE-CREATION 
  src/mem/ruby/system/Cache.py ac4da9f8ea80 
  src/mem/ruby/system/CacheMemory.hh ac4da9f8ea80 
  src/mem/ruby/system/CacheMemory.cc ac4da9f8ea80 
  src/mem/ruby/system/DirectoryMemory.hh ac4da9f8ea80 
  src/mem/ruby/system/DirectoryMemory.cc ac4da9f8ea80 
  src/mem/ruby/system/DirectoryMemory.py ac4da9f8ea80 
  src/mem/ruby/system/RubyPort.hh ac4da9f8ea80 
  src/mem/ruby/system/RubyPort.cc ac4da9f8ea80 
  src/mem/ruby/system/RubySystem.py ac4da9f8ea80 
  src/mem/ruby/system/SConscript ac4da9f8ea80 
  src/mem/ruby/system/Sequencer.py ac4da9f8ea80 
  src/mem/ruby/system/System.hh ac4da9f8ea80 
  src/mem/ruby/system/System.cc ac4da9f8ea80 
  src/mem/slicc/ast/MemberExprAST.py ac4da9f8ea80 

Diff: http://reviews.m5sim.org/r/611/diff


Testing
---


Thanks,

Nilay

___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


[gem5-dev] Ruby: Token Coherence and Functional Access

2011-06-10 Thread Nilay Vaish
Brad, in the token coherence protocol, the l2 cache controller moves from 
state O to I and sends data to the memory. I think this particular 
transition is may pose a problem in enabling functional accesses for the 
protocol. The problem, I think, is that both the directory and the cache 
controller are in stable states even though there is data travelling in 
the network. This means that both the controllers will allow a 
functional write to go ahead. But then the data will be over written by 
the value sent from the l2 controller to the directory controller.


My understanding of the protocol implementation is close to \epsilon. I 
think this is what I observed today in the morning. Do think this 
understanding is correct?


--
Nilay
___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


Re: [gem5-dev] Cron /z/m5/regression/do-regression quick

2011-06-09 Thread Nilay Vaish
Korey, try 'hg status'. It would list the set of files that are not being 
tracked. May be there is some file that should be committed and has not 
been.


--
Nilay


On Thu, 9 Jun 2011, Korey Sewell wrote:


My local repo has this at the tip:
hg tip
changeset:   8342:77d12d8f7971
tag: tip
user:Korey Sewell 
date:Thu Jun 09 01:34:06 2011 -0400
summary: sparc: compilation fixes for inorder

and the "hg outgoing" tab says nothing outstanding.

I have not tried this on zizzer yet, but that is the next step.

On Thu, Jun 9, 2011 at 6:02 PM, Steve Reinhardt  wrote:


It fails for me... are you sure you've pushed everything?  Have you
tried it on zizzer?

Steve

On Thu, Jun 9, 2011 at 1:36 PM, Korey Sewell  wrote:

ok, this is a bit wierd.

I'm running all the tests locally and they are passing ...

Even the O3 one:


build/SPARC_SE/tests/opt/quick/40.m5threads-test-atomic/sparc/linux/o3-timing-mp


On Thu, Jun 9, 2011 at 1:52 PM, Korey Sewell  wrote:


Yup, that's me. I will update the stats for the simple cpus. I thought I
had caught the branchTarget() error before, but apparently not.


On Thu, Jun 9, 2011 at 1:45 PM, Steve Reinhardt 

wrote:



Looks like all the SPARC tests failed.  The two o3-timing ones have

this

error:

panic: StaticInst::branchTarget() called on instruction that is not a
PC-relative branch.
[branchTarget:build/SPARC_SE/cpu/static_inst.cc, line 99]

The others seem to have run correctly, but have stats differences like
this:

 system.cpu.num_conditional_control_insts  0774
 774  +.00%
 system.cpu.num_func_calls   0146146
 +.00%

I'm guessing this is from Korey's recent SPARC change...

Steve



___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


[gem5-dev] changeset in gem5: Ruby: Correctly set access permissions for di...

2011-06-08 Thread Nilay Vaish
changeset 30daf1dd5c91 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=30daf1dd5c91
description:
Ruby: Correctly set access permissions for directory entries
The access permissions for the directory entries are not being set 
correctly.
This is because pointers are not used for handling directory entries.
function. get and set functions for access permissions have been added 
to the
Controller state machine. The changePermission() function provided by 
the
AbstractEntry and AbstractCacheEntry classes has been exposed to SLICC
code once again. The set_permission() functionality has been removed.

NOTE: Each protocol will have to define these get and set functions in 
order
to compile successfully.

diffstat:

 src/mem/protocol/MESI_CMP_directory-L1cache.sm |  20 
 src/mem/protocol/MESI_CMP_directory-L2cache.sm |  21 -
 src/mem/protocol/MESI_CMP_directory-dir.sm |  15 ++-
 src/mem/protocol/MESI_CMP_directory-dma.sm |   7 +++
 src/mem/protocol/MI_example-cache.sm   |  20 
 src/mem/protocol/MI_example-dir.sm |  15 +++
 src/mem/protocol/MI_example-dma.sm |   7 +++
 src/mem/protocol/MOESI_CMP_directory-L1cache.sm|  20 
 src/mem/protocol/MOESI_CMP_directory-L2cache.sm|  20 
 src/mem/protocol/MOESI_CMP_directory-dir.sm|  14 ++
 src/mem/protocol/MOESI_CMP_directory-dma.sm|   7 +++
 src/mem/protocol/MOESI_CMP_token-L1cache.sm|  20 
 src/mem/protocol/MOESI_CMP_token-L2cache.sm|  15 +++
 src/mem/protocol/MOESI_CMP_token-dir.sm|  15 ++-
 src/mem/protocol/MOESI_CMP_token-dma.sm|   7 +++
 src/mem/protocol/MOESI_hammer-cache.sm |  20 
 src/mem/protocol/MOESI_hammer-dir.sm   |  15 ++-
 src/mem/protocol/MOESI_hammer-dma.sm   |   7 +++
 src/mem/protocol/Network_test-cache.sm |   7 +++
 src/mem/protocol/Network_test-dir.sm   |   7 +++
 src/mem/protocol/RubySlicc_Types.sm|   8 ++--
 src/mem/ruby/slicc_interface/AbstractController.hh |   4 
 src/mem/slicc/ast/MethodCallExprAST.py |   8 +++-
 src/mem/slicc/symbols/StateMachine.py  |  17 -
 24 files changed, 296 insertions(+), 20 deletions(-)

diffs (truncated from 604 to 300 lines):

diff -r e39a9c0493ad -r 30daf1dd5c91 
src/mem/protocol/MESI_CMP_directory-L1cache.sm
--- a/src/mem/protocol/MESI_CMP_directory-L1cache.smWed Jun 08 00:57:50 
2011 -0700
+++ b/src/mem/protocol/MESI_CMP_directory-L1cache.smWed Jun 08 11:58:09 
2011 -0500
@@ -183,6 +183,26 @@
 }
   }
 
+  AccessPermission getAccessPermission(Address addr) {
+TBE tbe := L1_TBEs[addr];
+if(is_valid(tbe)) {
+  return L1Cache_State_to_permission(tbe.TBEState);
+}
+
+Entry cache_entry := getCacheEntry(addr);
+if(is_valid(cache_entry)) {
+  return L1Cache_State_to_permission(cache_entry.CacheState);
+}
+
+return AccessPermission:NotPresent;
+  }
+
+  void setAccessPermission(Entry cache_entry, Address addr, State state) {
+if (is_valid(cache_entry)) {
+  cache_entry.changePermission(L1Cache_State_to_permission(state));
+}
+  }
+
   Event mandatory_request_type_to_event(RubyRequestType type) {
 if (type == RubyRequestType:LD) {
   return Event:Load;
diff -r e39a9c0493ad -r 30daf1dd5c91 
src/mem/protocol/MESI_CMP_directory-L2cache.sm
--- a/src/mem/protocol/MESI_CMP_directory-L2cache.smWed Jun 08 00:57:50 
2011 -0700
+++ b/src/mem/protocol/MESI_CMP_directory-L2cache.smWed Jun 08 11:58:09 
2011 -0500
@@ -202,7 +202,6 @@
 return L2Cache_State_to_string(getState(tbe, cache_entry, addr));
   }
 
-  // when is this called
   void setState(TBE tbe, Entry cache_entry, Address addr, State state) {
 
 // MUST CHANGE
@@ -215,6 +214,26 @@
 }
   }
 
+  AccessPermission getAccessPermission(Address addr) {
+TBE tbe := L2_TBEs[addr];
+if(is_valid(tbe)) {
+  return L2Cache_State_to_permission(tbe.TBEState);
+}
+
+Entry cache_entry := getCacheEntry(addr);
+if(is_valid(cache_entry)) {
+  return L2Cache_State_to_permission(cache_entry.CacheState);
+}
+
+return AccessPermission:NotPresent;
+  }
+
+  void setAccessPermission(Entry cache_entry, Address addr, State state) {
+if (is_valid(cache_entry)) {
+  cache_entry.changePermission(L2Cache_State_to_permission(state));
+}
+  }
+
   Event L1Cache_request_type_to_event(CoherenceRequestType type, Address addr,
   MachineID requestor, Entry cache_entry) {
 if(type == CoherenceRequestType:GETS) {
diff -r e39a9c0493ad -r 30daf1dd5c91 src/mem/protoco

Re: [gem5-dev] Review Request: Ruby: Correctly set access permissions for directory entries

2011-06-08 Thread Nilay Vaish


> On 2011-06-08 17:11:26, Brad Beckmann wrote:
> > This looks fine to me.  I assume that if a controller doesn't include a 
> > setPermission or getPermission function, the compiler error message is the 
> > same as when a controller doesn't specify a getState function.  Correct?

Currently SLICC does not output any error if set/getState() or
set/getAccessPermission() are missing. But I have patch in the
queue which enables catching these errors in SLICC. For now
GCC outputs that a particular function has not been implemented.


- Nilay


---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/684/#review1301
---


On 2011-06-06 14:45:22, Nilay Vaish wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.m5sim.org/r/684/
> ---
> 
> (Updated 2011-06-06 14:45:22)
> 
> 
> Review request for Default.
> 
> 
> Summary
> ---
> 
> Ruby: Correctly set access permissions for directory entries
> The access permissions for the directory entries are not being set correctly.
> This is because pointers are not used for handling directory entries.
> function. get and set functions for access permissions have been added to the
> Controller state machine. The changePermission() function provided by the
> AbstractEntry and AbstractCacheEntry classes has been exposed to SLICC
> code once again. The set_permission() functionality has been removed.
> 
> NOTE: Each protocol will have to define these get and set functions in order
> to compile successfully.
> 
> 
> Diffs
> -
> 
>   src/mem/protocol/MESI_CMP_directory-L1cache.sm b9ba22cb23f2 
>   src/mem/protocol/MESI_CMP_directory-L2cache.sm b9ba22cb23f2 
>   src/mem/protocol/MESI_CMP_directory-dir.sm b9ba22cb23f2 
>   src/mem/protocol/MESI_CMP_directory-dma.sm b9ba22cb23f2 
>   src/mem/protocol/MI_example-cache.sm b9ba22cb23f2 
>   src/mem/protocol/MI_example-dir.sm b9ba22cb23f2 
>   src/mem/protocol/MI_example-dma.sm b9ba22cb23f2 
>   src/mem/protocol/MOESI_CMP_directory-L1cache.sm b9ba22cb23f2 
>   src/mem/protocol/MOESI_CMP_directory-L2cache.sm b9ba22cb23f2 
>   src/mem/protocol/MOESI_CMP_directory-dir.sm b9ba22cb23f2 
>   src/mem/protocol/MOESI_CMP_directory-dma.sm b9ba22cb23f2 
>   src/mem/protocol/MOESI_CMP_token-L1cache.sm b9ba22cb23f2 
>   src/mem/protocol/MOESI_CMP_token-L2cache.sm b9ba22cb23f2 
>   src/mem/protocol/MOESI_CMP_token-dir.sm b9ba22cb23f2 
>   src/mem/protocol/MOESI_CMP_token-dma.sm b9ba22cb23f2 
>   src/mem/protocol/MOESI_hammer-cache.sm b9ba22cb23f2 
>   src/mem/protocol/MOESI_hammer-dir.sm b9ba22cb23f2 
>   src/mem/protocol/MOESI_hammer-dma.sm b9ba22cb23f2 
>   src/mem/protocol/Network_test-cache.sm b9ba22cb23f2 
>   src/mem/protocol/Network_test-dir.sm b9ba22cb23f2 
>   src/mem/protocol/RubySlicc_Types.sm b9ba22cb23f2 
>   src/mem/ruby/slicc_interface/AbstractController.hh b9ba22cb23f2 
>   src/mem/slicc/ast/MethodCallExprAST.py b9ba22cb23f2 
>   src/mem/slicc/symbols/StateMachine.py b9ba22cb23f2 
> 
> Diff: http://reviews.m5sim.org/r/684/diff
> 
> 
> Testing
> ---
> 
> Passes regression tests and 1 loads with ruby random tester.
> 
> 
> Thanks,
> 
> Nilay
> 
>

___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


Re: [gem5-dev] Query on inheritance and virtual functions

2011-06-08 Thread Nilay Vaish

On Wed, 8 Jun 2011, Jack Harvard wrote:



On 8 Jun 2011, at 23:28, Nilay Vaish wrote:


On Wed, 8 Jun 2011, Jack Harvard wrote:




On 8 Jun 2011, at 19:09, Nilay Vaish wrote:


On Wed, 8 Jun 2011, Jack Harvard wrote:


When you declare your function private, you can't use instance.function() to 
access it. Is it generating a compile time error?

On 8 Jun 2011, at 00:31, Nilay Vaish wrote:


Consider the following class declarations --

class A
{
public:
 virtual void function() = 0;
};

class B : public A
{
private:
 void function();
}

int main()
{
B b;
b.function();
}

Will this code compile correctly?

--
Nilay


I should say that my example program was not what I intended it to be. The main 
function should look like --

int main()
{
B* b = new B();
A* a = b;
a->function();
return 0;
}

Now what would happen?


This compiles. However, if you do b->function(), you would get the same error 
as your last example, due to the same reason.



It compiles and executes fine. What surprises me is that even though function() 
is private for class B, still it gets invoked using the pointer from class A. I 
was not aware of this before.


Overriding and access visibility is orthogonal, you use class A pointer to 
access its public function.


I won't term this is a overriding, the function that will be called would 
be the one defined in class B, as 'function()' is a virtual member of 
class A. But then, 'function()' is private to class B, so I would expect 
some error to occur. I think the reason is that visibility is tested only 
at compile time and never at run time.


--
Nilay
___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


Re: [gem5-dev] Query on inheritance and virtual functions

2011-06-08 Thread Nilay Vaish

On Wed, 8 Jun 2011, Jack Harvard wrote:




On 8 Jun 2011, at 19:09, Nilay Vaish wrote:


On Wed, 8 Jun 2011, Jack Harvard wrote:


When you declare your function private, you can't use instance.function() to 
access it. Is it generating a compile time error?

On 8 Jun 2011, at 00:31, Nilay Vaish wrote:


Consider the following class declarations --

class A
{
public:
  virtual void function() = 0;
};

class B : public A
{
private:
  void function();
}

int main()
{
B b;
b.function();
}

Will this code compile correctly?

--
Nilay


I should say that my example program was not what I intended it to be. The main 
function should look like --

int main()
{
 B* b = new B();
 A* a = b;
 a->function();
 return 0;
}

Now what would happen?


This compiles. However, if you do b->function(), you would get the same error 
as your last example, due to the same reason.



It compiles and executes fine. What surprises me is that even though 
function() is private for class B, still it gets invoked using the pointer 
from class A. I was not aware of this before.


--
Nilay
___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


Re: [gem5-dev] Query on inheritance and virtual functions

2011-06-08 Thread Nilay Vaish

On Wed, 8 Jun 2011, Jack Harvard wrote:


When you declare your function private, you can't use instance.function() to 
access it. Is it generating a compile time error?

On 8 Jun 2011, at 00:31, Nilay Vaish wrote:


Consider the following class declarations --

class A
{
 public:
   virtual void function() = 0;
};

class B : public A
{
 private:
   void function();
}

int main()
{
 B b;
 b.function();
}

Will this code compile correctly?

--
Nilay


I should say that my example program was not what I intended it to be. The 
main function should look like --


int main()
{
  B* b = new B();
  A* a = b;
  a->function();
  return 0;
}

Now what would happen?

--
Nilay
___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


[gem5-dev] Query on inheritance and virtual functions

2011-06-07 Thread Nilay Vaish

Consider the following class declarations --

class A
{
  public:
virtual void function() = 0;
};

class B : public A
{
  private:
void function();
}

int main()
{
  B b;
  b.function();
}

Will this code compile correctly?

--
Nilay
___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


Re: [gem5-dev] Review Request: Ruby: Correctly set access permissions for directory entries

2011-06-06 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/684/
---

(Updated 2011-06-06 14:45:22.384167)


Review request for Default.


Summary
---

Ruby: Correctly set access permissions for directory entries
The access permissions for the directory entries are not being set correctly.
This is because pointers are not used for handling directory entries.
function. get and set functions for access permissions have been added to the
Controller state machine. The changePermission() function provided by the
AbstractEntry and AbstractCacheEntry classes has been exposed to SLICC
code once again. The set_permission() functionality has been removed.

NOTE: Each protocol will have to define these get and set functions in order
to compile successfully.


Diffs
-

  src/mem/protocol/MESI_CMP_directory-L1cache.sm b9ba22cb23f2 
  src/mem/protocol/MESI_CMP_directory-L2cache.sm b9ba22cb23f2 
  src/mem/protocol/MESI_CMP_directory-dir.sm b9ba22cb23f2 
  src/mem/protocol/MESI_CMP_directory-dma.sm b9ba22cb23f2 
  src/mem/protocol/MI_example-cache.sm b9ba22cb23f2 
  src/mem/protocol/MI_example-dir.sm b9ba22cb23f2 
  src/mem/protocol/MI_example-dma.sm b9ba22cb23f2 
  src/mem/protocol/MOESI_CMP_directory-L1cache.sm b9ba22cb23f2 
  src/mem/protocol/MOESI_CMP_directory-L2cache.sm b9ba22cb23f2 
  src/mem/protocol/MOESI_CMP_directory-dir.sm b9ba22cb23f2 
  src/mem/protocol/MOESI_CMP_directory-dma.sm b9ba22cb23f2 
  src/mem/protocol/MOESI_CMP_token-L1cache.sm b9ba22cb23f2 
  src/mem/protocol/MOESI_CMP_token-L2cache.sm b9ba22cb23f2 
  src/mem/protocol/MOESI_CMP_token-dir.sm b9ba22cb23f2 
  src/mem/protocol/MOESI_CMP_token-dma.sm b9ba22cb23f2 
  src/mem/protocol/MOESI_hammer-cache.sm b9ba22cb23f2 
  src/mem/protocol/MOESI_hammer-dir.sm b9ba22cb23f2 
  src/mem/protocol/MOESI_hammer-dma.sm b9ba22cb23f2 
  src/mem/protocol/Network_test-cache.sm b9ba22cb23f2 
  src/mem/protocol/Network_test-dir.sm b9ba22cb23f2 
  src/mem/protocol/RubySlicc_Types.sm b9ba22cb23f2 
  src/mem/ruby/slicc_interface/AbstractController.hh b9ba22cb23f2 
  src/mem/slicc/ast/MethodCallExprAST.py b9ba22cb23f2 
  src/mem/slicc/symbols/StateMachine.py b9ba22cb23f2 

Diff: http://reviews.m5sim.org/r/684/diff


Testing (updated)
---

Passes regression tests and 1 loads with ruby random tester.


Thanks,

Nilay

___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


Re: [gem5-dev] Review Request: Ruby: Correctly set access permissions for directory entries

2011-06-06 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/684/
---

(Updated 2011-06-06 14:44:19.791924)


Review request for Default.


Summary (updated)
---

Ruby: Correctly set access permissions for directory entries
The access permissions for the directory entries are not being set correctly.
This is because pointers are not used for handling directory entries.
function. get and set functions for access permissions have been added to the
Controller state machine. The changePermission() function provided by the
AbstractEntry and AbstractCacheEntry classes has been exposed to SLICC
code once again. The set_permission() functionality has been removed.

NOTE: Each protocol will have to define these get and set functions in order
to compile successfully.


Diffs (updated)
-

  src/mem/protocol/MESI_CMP_directory-L1cache.sm b9ba22cb23f2 
  src/mem/protocol/MESI_CMP_directory-L2cache.sm b9ba22cb23f2 
  src/mem/protocol/MESI_CMP_directory-dir.sm b9ba22cb23f2 
  src/mem/protocol/MESI_CMP_directory-dma.sm b9ba22cb23f2 
  src/mem/protocol/MI_example-cache.sm b9ba22cb23f2 
  src/mem/protocol/MI_example-dir.sm b9ba22cb23f2 
  src/mem/protocol/MI_example-dma.sm b9ba22cb23f2 
  src/mem/protocol/MOESI_CMP_directory-L1cache.sm b9ba22cb23f2 
  src/mem/protocol/MOESI_CMP_directory-L2cache.sm b9ba22cb23f2 
  src/mem/protocol/MOESI_CMP_directory-dir.sm b9ba22cb23f2 
  src/mem/protocol/MOESI_CMP_directory-dma.sm b9ba22cb23f2 
  src/mem/protocol/MOESI_CMP_token-L1cache.sm b9ba22cb23f2 
  src/mem/protocol/MOESI_CMP_token-L2cache.sm b9ba22cb23f2 
  src/mem/protocol/MOESI_CMP_token-dir.sm b9ba22cb23f2 
  src/mem/protocol/MOESI_CMP_token-dma.sm b9ba22cb23f2 
  src/mem/protocol/MOESI_hammer-cache.sm b9ba22cb23f2 
  src/mem/protocol/MOESI_hammer-dir.sm b9ba22cb23f2 
  src/mem/protocol/MOESI_hammer-dma.sm b9ba22cb23f2 
  src/mem/protocol/Network_test-cache.sm b9ba22cb23f2 
  src/mem/protocol/Network_test-dir.sm b9ba22cb23f2 
  src/mem/protocol/RubySlicc_Types.sm b9ba22cb23f2 
  src/mem/ruby/slicc_interface/AbstractController.hh b9ba22cb23f2 
  src/mem/slicc/ast/MethodCallExprAST.py b9ba22cb23f2 
  src/mem/slicc/symbols/StateMachine.py b9ba22cb23f2 

Diff: http://reviews.m5sim.org/r/684/diff


Testing
---


Thanks,

Nilay

___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


Re: [gem5-dev] /z/m5/regression/do-regression --scratch all

2011-06-05 Thread Nilay Vaish
We again had the same problem as yesterday, though it seems that all the 
regression tests run up to completion. Any suggestions on resolving this?


scons: *** Found dependency cycle(s):
  Internal Error: no cycle found for node 
build/ALPHA_SE_MOESI_CMP_directory/params/DMA_Controller.hh 
() in state executed


--
Nilay


On Sun, 5 Jun 2011, m5test wrote:


scons: *** Found dependency cycle(s):
* build/ALPHA_SE/tests/opt/quick/00.hello/alpha/tru64/o3-timing passed.
* build/ALPHA_SE/tests/opt/quick/01.hello-2T-smt/alpha/linux/o3-timing 
passed.
* build/ALPHA_SE/tests/opt/quick/00.hello/alpha/linux/simple-atomic passed.
* build/ALPHA_SE/tests/opt/quick/30.eio-mp/alpha/eio/simple-atomic-mp 
passed.
* build/ALPHA_SE/tests/opt/quick/00.hello/alpha/tru64/simple-timing-ruby 
passed.
* build/ALPHA_SE/tests/opt/quick/30.eio-mp/alpha/eio/simple-timing-mp 
passed.
* build/ALPHA_SE/tests/opt/long/50.vortex/alpha/tru64/simple-atomic passed.
* build/ALPHA_SE/tests/opt/quick/00.hello/alpha/linux/simple-timing passed.
* build/ALPHA_SE/tests/opt/quick/50.memtest/alpha/linux/memtest passed.
* build/ALPHA_SE/tests/opt/long/40.perlbmk/alpha/tru64/simple-atomic passed.
* build/ALPHA_SE/tests/opt/long/60.bzip2/alpha/tru64/simple-timing passed.
* build/ALPHA_SE/tests/opt/long/30.eon/alpha/tru64/o3-timing passed.
* build/ALPHA_SE/tests/opt/quick/20.eio-short/alpha/eio/simple-atomic 
passed.
* build/ALPHA_SE/tests/opt/long/50.vortex/alpha/tru64/o3-timing passed.
* build/ALPHA_SE/tests/opt/long/70.twolf/alpha/tru64/o3-timing passed.
* build/ALPHA_SE/tests/opt/long/50.vortex/alpha/tru64/simple-timing passed.
* build/ALPHA_SE/tests/opt/long/00.gzip/alpha/tru64/simple-atomic passed.
* build/ALPHA_SE/tests/opt/long/70.twolf/alpha/tru64/simple-timing passed.
* build/ALPHA_SE/tests/opt/long/70.twolf/alpha/tru64/inorder-timing passed.
* build/ALPHA_SE/tests/opt/long/30.eon/alpha/tru64/simple-atomic passed.
* build/ALPHA_SE/tests/opt/quick/00.hello/alpha/linux/o3-timing passed.
* build/ALPHA_SE/tests/opt/quick/50.memtest/alpha/linux/memtest-ruby passed.
* build/ALPHA_SE/tests/opt/quick/00.hello/alpha/linux/simple-timing-ruby 
passed.
* build/ALPHA_SE/tests/opt/long/70.twolf/alpha/tru64/simple-atomic passed.
* build/ALPHA_SE/tests/opt/long/00.gzip/alpha/tru64/simple-timing passed.
* build/ALPHA_SE/tests/opt/long/30.eon/alpha/tru64/simple-timing passed.
* build/ALPHA_SE/tests/opt/quick/60.rubytest/alpha/linux/rubytest-ruby 
passed.
* build/ALPHA_SE/tests/opt/quick/00.hello/alpha/tru64/simple-timing passed.
* build/ALPHA_SE/tests/opt/long/00.gzip/alpha/tru64/o3-timing passed.
* build/ALPHA_SE/tests/opt/quick/20.eio-short/alpha/eio/simple-timing 
passed.
* build/ALPHA_SE/tests/opt/quick/00.hello/alpha/linux/inorder-timing passed.
* build/ALPHA_SE/tests/opt/quick/00.hello/alpha/tru64/simple-atomic passed.
* build/ALPHA_SE/tests/opt/long/50.vortex/alpha/tru64/inorder-timing passed.
* build/ALPHA_SE/tests/opt/long/60.bzip2/alpha/tru64/simple-atomic passed.
* build/ALPHA_SE/tests/opt/long/40.perlbmk/alpha/tru64/simple-timing passed.
* 
build/ALPHA_SE_MOESI_hammer/tests/opt/quick/60.rubytest/alpha/linux/rubytest-ruby-MOESI_hammer
 passed.
* 
build/ALPHA_SE_MOESI_hammer/tests/opt/quick/00.hello/alpha/tru64/simple-timing-ruby-MOESI_hammer
 passed.
* 
build/ALPHA_SE_MOESI_hammer/tests/opt/quick/00.hello/alpha/linux/simple-timing-ruby-MOESI_hammer
 passed.
* 
build/ALPHA_SE_MOESI_hammer/tests/opt/quick/50.memtest/alpha/linux/memtest-ruby-MOESI_hammer
 passed.
* 
build/ALPHA_SE_MESI_CMP_directory/tests/opt/quick/60.rubytest/alpha/linux/rubytest-ruby-MESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MESI_CMP_directory/tests/opt/quick/00.hello/alpha/tru64/simple-timing-ruby-MESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MESI_CMP_directory/tests/opt/quick/00.hello/alpha/linux/simple-timing-ruby-MESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MOESI_CMP_directory/tests/opt/quick/60.rubytest/alpha/linux/rubytest-ruby-MOESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MOESI_CMP_directory/tests/opt/quick/00.hello/alpha/tru64/simple-timing-ruby-MOESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MOESI_CMP_directory/tests/opt/quick/00.hello/alpha/linux/simple-timing-ruby-MOESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MESI_CMP_directory/tests/opt/quick/50.memtest/alpha/linux/memtest-ruby-MESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MOESI_CMP_directory/tests/opt/quick/50.memtest/alpha/linux/memtest-ruby-MOESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MOESI_CMP_token/tests/opt/quick/60.rubytest/alpha/linux/rubytest-ruby-MOESI_CMP_token
 passed.
* 
build/ALPHA_SE_MOESI_CMP_token/tests/opt/quick/00.hello/alpha/tru64/simple-timing-ruby-MOESI_CMP_token
 passed.
* 
build/ALPHA_SE_MOESI_CMP_token/tests/opt/quick/00.hello/alpha/linux/simple-timing-ruby-MOESI_CMP_token
 passed.
* 
build

Re: [gem5-dev] Cron /z/m5/regression/do-regression quick

2011-06-04 Thread Nilay Vaish
Will clearing all the existing builds and starting afresh remove this 
issue? Can some one do this?


--
Nilay

On Sat, 4 Jun 2011, Steve Reinhardt wrote:


It seems very strange... like at a high level it thinks there's a
cycle, but when it goes to print out where it is it can't find one.
I've never seen this myself; I wonder if it's a bug in the version of
scons on zizzer (v0.98), as the machine I use has v.1.2.0.

It is a little strange that we're building params structs for Ruby
objects in ALPHA_SE though.

Steve

On Sat, Jun 4, 2011 at 6:41 AM, Nilay Vaish  wrote:

Does any one has any idea what a dependency cycles is? This is what zizzer's
log has.

scons: *** Found dependency cycle(s):
 Internal Error: no cycle found for node
build/ALPHA_SE/params/L1Cache_Controller.hh () in state up_to_date
Internal Error: no cycle found for node
build/ALPHA_SE/params/Directory_Controller.hh () in state up_to_date
 Internal Error: no cycle found for node
build/ALPHA_SE_MOESI_CMP_directory/params/L2Cache_Controller.hh
() in state up_to_date
 Internal Error: no cycle found for node
build/ALPHA_SE_MESI_CMP_directory/params/L2Cache_Controller.hh
() in state up_to_date
 Internal Error: no cycle found for node
build/ALPHA_SE_MOESI_CMP_token/params/DMA_Controller.hh () in state up_to_date
 Internal Error: no cycle found for node
build/X86_SE/params/DMA_Controller.hh () in state up_to_date
 Internal Error: no cycle found for node
build/ALPHA_SE_MOESI_hammer/params/Directory_Controller.hh
() in state up_to_date
 Internal Error: no cycle found for node
build/ALPHA_SE_MOESI_CMP_directory/params/L1Cache_Controller.hh
() in state up_to_date
 Internal Error: no cycle found for node
build/ALPHA_FS/params/Directory_Controller.hh () in state up_to_date
 Internal Error: no cycle found for node
build/ARM_SE/params/L1Cache_Controller.hh () in state up_to_date
 Internal Error: no cycle found for node
build/ALPHA_SE/params/DMA_Controller.hh () in state up_to_date
 Internal Error: no cycle found for node
build/ALPHA_SE_MOESI_CMP_directory/params/Directory_Controller.hh
() in state up_to_date
 Internal Error: no cycle found for node
build/ALPHA_SE_MOESI_CMP_token/params/L2Cache_Controller.hh
() in state up_to_date
 Internal Error: no cycle found for node
build/X86_SE/params/L1Cache_Controller.hh () in state up_to_date
 Internal Error: no cycle found for node
build/X86_FS/params/DMA_Controller.hh () in state up_to_date
 Internal Error: no cycle found for node
build/X86_FS/params/L1Cache_Controller.hh () in state up_to_date
 Internal Error: no cycle found for node
build/ALPHA_SE_MOESI_CMP_directory/params/DMA_Controller.hh
() in state up_to_date
 Internal Error: no cycle found for node
build/ARM_SE/params/DMA_Controller.hh () in state up_to_date
 Internal Error: no cycle found for node
build/ALPHA_SE_MOESI_hammer/params/DMA_Controller.hh () in state up_to_date
 Internal Error: no cycle found for node
build/ALPHA_SE_MESI_CMP_directory/params/Directory_Controller.hh
() in state up_to_date
 Internal Error: no cycle found for node
build/X86_FS/params/Directory_Controller.hh () in state up_to_date
 Internal Error: no cycle found for node
build/SPARC_FS/params/Directory_Controller.hh () in state up_to_date
 Internal Error: no cycle found for node
build/ALPHA_SE_MOESI_CMP_token/params/L1Cache_Controller.hh
() in state up_to_date
 Internal Error: no cycle found for node
build/ALPHA_FS/params/L1Cache_Controller.hh () in state up_to_date
 Internal Error: no cycle found for node
build/ALPHA_SE_MESI_CMP_directory/params/L1Cache_Controller.hh
() in state up_to_date
 Internal Error: no cycle found for node
build/ALPHA_SE_MESI_CMP_directory/params/DMA_Controller.hh
() in state up_to_date
 Internal Error: no cycle found for node
build/ALPHA_SE_MOESI_hammer/params/L1Cache_Controller.hh
() in state up_to_date

--
Nilay

___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


Re: [gem5-dev] Cron /z/m5/regression/do-regression quick

2011-06-04 Thread Nilay Vaish
Does any one has any idea what a dependency cycles is? This is what 
zizzer's log has.


scons: *** Found dependency cycle(s):
  Internal Error: no cycle found for node 
build/ALPHA_SE/params/L1Cache_Controller.hh (at 0x412a680>) in state up_to_date
Internal Error: no cycle found for node 
build/ALPHA_SE/params/Directory_Controller.hh (instance at 0x410d200>) in state up_to_date
  Internal Error: no cycle found for node 
build/ALPHA_SE_MOESI_CMP_directory/params/L2Cache_Controller.hh 
() in state up_to_date
  Internal Error: no cycle found for node 
build/ALPHA_SE_MESI_CMP_directory/params/L2Cache_Controller.hh 
() in state up_to_date
  Internal Error: no cycle found for node 
build/ALPHA_SE_MOESI_CMP_token/params/DMA_Controller.hh 
() in state up_to_date
  Internal Error: no cycle found for node 
build/X86_SE/params/DMA_Controller.hh (0x30ae9b90>) in state up_to_date
  Internal Error: no cycle found for node 
build/ALPHA_SE_MOESI_hammer/params/Directory_Controller.hh 
() in state up_to_date
  Internal Error: no cycle found for node 
build/ALPHA_SE_MOESI_CMP_directory/params/L1Cache_Controller.hh 
() in state up_to_date
  Internal Error: no cycle found for node 
build/ALPHA_FS/params/Directory_Controller.hh (instance at 0x16ea8560>) in state up_to_date
  Internal Error: no cycle found for node 
build/ARM_SE/params/L1Cache_Controller.hh (0x3a89d518>) in state up_to_date
  Internal Error: no cycle found for node 
build/ALPHA_SE/params/DMA_Controller.hh (0x4105ef0>) in state up_to_date
  Internal Error: no cycle found for node 
build/ALPHA_SE_MOESI_CMP_directory/params/Directory_Controller.hh 
() in state up_to_date
  Internal Error: no cycle found for node 
build/ALPHA_SE_MOESI_CMP_token/params/L2Cache_Controller.hh 
() in state up_to_date
  Internal Error: no cycle found for node 
build/X86_SE/params/L1Cache_Controller.hh (0x30be19e0>) in state up_to_date
  Internal Error: no cycle found for node 
build/X86_FS/params/DMA_Controller.hh (0x34b024d0>) in state up_to_date
  Internal Error: no cycle found for node 
build/X86_FS/params/L1Cache_Controller.hh (0x34cfcc20>) in state up_to_date
  Internal Error: no cycle found for node 
build/ALPHA_SE_MOESI_CMP_directory/params/DMA_Controller.hh 
() in state up_to_date
  Internal Error: no cycle found for node 
build/ARM_SE/params/DMA_Controller.hh (0x3a7b16c8>) in state up_to_date
  Internal Error: no cycle found for node 
build/ALPHA_SE_MOESI_hammer/params/DMA_Controller.hh (instance at 0x9b58248>) in state up_to_date
  Internal Error: no cycle found for node 
build/ALPHA_SE_MESI_CMP_directory/params/Directory_Controller.hh 
() in state up_to_date
  Internal Error: no cycle found for node 
build/X86_FS/params/Directory_Controller.hh (at 0x34b08ef0>) in state up_to_date
  Internal Error: no cycle found for node 
build/SPARC_FS/params/Directory_Controller.hh (instance at 0x2c1b0f38>) in state up_to_date
  Internal Error: no cycle found for node 
build/ALPHA_SE_MOESI_CMP_token/params/L1Cache_Controller.hh 
() in state up_to_date
  Internal Error: no cycle found for node 
build/ALPHA_FS/params/L1Cache_Controller.hh (at 0x16ec7290>) in state up_to_date
  Internal Error: no cycle found for node 
build/ALPHA_SE_MESI_CMP_directory/params/L1Cache_Controller.hh 
() in state up_to_date
  Internal Error: no cycle found for node 
build/ALPHA_SE_MESI_CMP_directory/params/DMA_Controller.hh 
() in state up_to_date
  Internal Error: no cycle found for node 
build/ALPHA_SE_MOESI_hammer/params/L1Cache_Controller.hh 
() in state up_to_date


--
Nilay


On Sat, 4 Jun 2011, Cron Daemon wrote:


scons: *** Found dependency cycle(s):
* build/ALPHA_SE/tests/opt/quick/00.hello/alpha/linux/o3-timing passed.
* build/ALPHA_SE/tests/opt/quick/00.hello/alpha/linux/simple-timing passed.
* build/ALPHA_SE/tests/opt/quick/00.hello/alpha/tru64/simple-atomic passed.
* build/ALPHA_SE/tests/opt/quick/00.hello/alpha/tru64/simple-timing passed.
* build/ALPHA_SE/tests/opt/quick/00.hello/alpha/linux/inorder-timing passed.
* build/ALPHA_SE/tests/opt/quick/60.rubytest/alpha/linux/rubytest-ruby 
passed.
* build/ALPHA_SE/tests/opt/quick/00.hello/alpha/linux/simple-atomic passed.
* build/ALPHA_SE/tests/opt/quick/00.hello/alpha/tru64/simple-timing-ruby 
passed.
* 
build/ALPHA_SE_MOESI_hammer/tests/opt/quick/60.rubytest/alpha/linux/rubytest-ruby-MOESI_hammer
 passed.
* 
build/ALPHA_SE_MOESI_hammer/tests/opt/quick/00.hello/alpha/tru64/simple-timing-ruby-MOESI_hammer
 passed.
* 
build/ALPHA_SE_MOESI_hammer/tests/opt/quick/00.hello/alpha/linux/simple-timing-ruby-MOESI_hammer
 passed.
* build/ALPHA_SE/tests/opt/quick/01.hello-2T-smt/alpha/linux/o3-timing 
passed.
* build/ALPHA_SE/tests/opt/quick/20.eio-short/alpha/eio/simple-timing 
passed.
* build/ALPHA_SE/tests/opt/quick/20.eio-short/alpha/eio/simple-atomic 
passed.
* build/ALPHA_SE/tests/opt/quick/30.eio-mp/alpha/eio/simple-timing-mp 
passed.
* build/ALPH

[gem5-dev] changeset in m5: SLICC: Remove machine name as prefix to functions

2011-06-03 Thread Nilay Vaish
changeset b9ba22cb23f2 in /z/repo/m5
details: http://repo.gem5.org/m5?cmd=changeset;node=b9ba22cb23f2
description:
SLICC: Remove machine name as prefix to functions
Currently, the machine name is appended before any of the functions
defined with in the sm files. This is not necessary and it also
means that these functions cannot be used outside the sm files.
This patch does away with the prefixes. Note that the generated
C++ files in which the code for these functions is present are
still named such that the machine name is the prefix.

diffstat:

 src/mem/slicc/symbols/Func.py |  14 +++---
 src/mem/slicc/symbols/StateMachine.py |  16 
 2 files changed, 15 insertions(+), 15 deletions(-)

diffs (74 lines):

diff -r 3a2aebf01bf3 -r b9ba22cb23f2 src/mem/slicc/symbols/Func.py
--- a/src/mem/slicc/symbols/Func.py Thu Jun 02 21:23:02 2011 -0700
+++ b/src/mem/slicc/symbols/Func.py Fri Jun 03 13:52:18 2011 -0500
@@ -37,15 +37,12 @@
 self.param_strings = param_strings
 self.body = body
 self.isInternalMachineFunc = False
+self.c_ident = ident
 
-if machine is None:
-self.c_ident = ident
-elif "external" in self or "primitive" in self:
-self.c_ident = ident
+if machine is None or "external" in self or "primitive" in self:
+pass
 else:
 self.machineStr = str(machine)
-# Append with machine name
-self.c_ident = "%s_%s" % (self.machineStr, ident)
 self.isInternalMachineFunc = True
 
 def __repr__(self):
@@ -107,6 +104,9 @@
 ${{self.body}}
 }
 ''')
-code.write(path, "%s.cc" % self.c_ident)
+if self.isInternalMachineFunc:
+code.write(path, "%s_%s.cc" % (self.machineStr,self.c_ident))
+else:
+code.write(path, "%s.cc" % self.c_ident)
 
 __all__ = [ "Func" ]
diff -r 3a2aebf01bf3 -r b9ba22cb23f2 src/mem/slicc/symbols/StateMachine.py
--- a/src/mem/slicc/symbols/StateMachine.py Thu Jun 02 21:23:02 2011 -0700
+++ b/src/mem/slicc/symbols/StateMachine.py Fri Jun 03 13:52:18 2011 -0500
@@ -1071,13 +1071,13 @@
 {
 ''')
 if self.TBEType != None and self.EntryType != None:
-code('${ident}_State state = ${ident}_getState(m_tbe_ptr, 
m_cache_entry_ptr, addr);')
+code('${ident}_State state = getState(m_tbe_ptr, 
m_cache_entry_ptr, addr);')
 elif self.TBEType != None:
-code('${ident}_State state = ${ident}_getState(m_tbe_ptr, addr);')
+code('${ident}_State state = getState(m_tbe_ptr, addr);')
 elif self.EntryType != None:
-code('${ident}_State state = ${ident}_getState(m_cache_entry_ptr, 
addr);')
+code('${ident}_State state = getState(m_cache_entry_ptr, addr);')
 else:
-code('${ident}_State state = ${ident}_getState(addr);')
+code('${ident}_State state = getState(addr);')
 
 code('''
 ${ident}_State next_state = state;
@@ -1115,15 +1115,15 @@
 CLEAR_TRANSITION_COMMENT();
 ''')
 if self.TBEType != None and self.EntryType != None:
-code('${ident}_setState(m_tbe_ptr, m_cache_entry_ptr, addr, 
next_state);')
+code('setState(m_tbe_ptr, m_cache_entry_ptr, addr, next_state);')
 code('set_permission(m_cache_entry_ptr, 
${ident}_State_to_permission(next_state));')
 elif self.TBEType != None:
-code('${ident}_setState(m_tbe_ptr, addr, next_state);')
+code('setState(m_tbe_ptr, addr, next_state);')
 elif self.EntryType != None:
-code('${ident}_setState(m_cache_entry_ptr, addr, next_state);')
+code('setState(m_cache_entry_ptr, addr, next_state);')
 code('set_permission(m_cache_entry_ptr, 
${ident}_State_to_permission(next_state));')
 else:
-code('${ident}_setState(addr, next_state);')
+code('setState(addr, next_state);')
 
 code('''
 } else if (result == TransitionResult_ResourceStall) {
___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


Re: [gem5-dev] Review Request: Ruby: Add support for functionalaccesses

2011-06-01 Thread Nilay Vaish
I had posted a review request, it is not appropriate to respond to it with 
these type of questions. These questions should be asked on gem5-users 
list.


And now the answer to your question. We currently do not update GEMS code. 
And I do not think that there is any plan to do so in future. In fact, we 
advise users to move to gem5.


--
Nilay

On Thu, 2 Jun 2011, huangyongbing wrote:


Hi.

I am currently using GEMS and Simics. So I care about whether the corresponding 
codes are also updated in GEMS.

-Yongbing Huang




发件人: Nilay Vaish
发送时间: 2011-06-02  09:57:40
收件人: Nilay Vaish; Default; Brad Beckmann; Steve Reinhardt; Gabe Black
抄送:
主题: Re: [gem5-dev] Review Request: Ruby: Add support for functionalaccesses

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/
---
(Updated 2011-06-01 18:59:16.473427)
Review request for Default.
Summary (updated)
---
Ruby: Add support for functional accesses
This patch is meant for implementing functional access support in Ruby.
There is one significant change from the previous version of the patch.
In the previous version, during functional writes, only the cache memories
were being checked. During testing I realized that some of the cache lines
could reside in the TBEs. So, now the check is being done at the controller
level. The controller has to provide a function called getAccessPermission()
for functional accesses to be successful. The default implementation of the
function returns "busy" which means that the functional access cannot
proceed further.
The patch has been tested only for 1 loads and processor count from 1
to 16.
Diffs (updated)
-
 configs/example/ruby_mem_test.py 681497e0356b
 configs/ruby/MESI_CMP_directory.py 681497e0356b
 configs/ruby/MI_example.py 681497e0356b
 configs/ruby/MOESI_CMP_directory.py 681497e0356b
 configs/ruby/MOESI_CMP_token.py 681497e0356b
 configs/ruby/MOESI_hammer.py 681497e0356b
 configs/ruby/Ruby.py 681497e0356b
 src/cpu/testers/memtest/memtest.hh 681497e0356b
 src/cpu/testers/memtest/memtest.cc 681497e0356b
 src/mem/packet.hh 681497e0356b
 src/mem/packet.cc 681497e0356b
 src/mem/protocol/MESI_CMP_directory-L1cache.sm 681497e0356b
 src/mem/protocol/MESI_CMP_directory-L2cache.sm 681497e0356b
 src/mem/protocol/MESI_CMP_directory-dir.sm 681497e0356b
 src/mem/protocol/MI_example-cache.sm 681497e0356b
 src/mem/protocol/MI_example-dir.sm 681497e0356b
 src/mem/protocol/MOESI_CMP_directory-L1cache.sm 681497e0356b
 src/mem/protocol/MOESI_CMP_directory-L2cache.sm 681497e0356b
 src/mem/protocol/MOESI_CMP_directory-dir.sm 681497e0356b
 src/mem/protocol/MOESI_CMP_token-L1cache.sm 681497e0356b
 src/mem/protocol/MOESI_CMP_token-L2cache.sm 681497e0356b
 src/mem/protocol/MOESI_CMP_token-dir.sm 681497e0356b
 src/mem/protocol/MOESI_hammer-cache.sm 681497e0356b
 src/mem/protocol/MOESI_hammer-dir.sm 681497e0356b
 src/mem/ruby/network/Network.cc 681497e0356b
 src/mem/ruby/network/Network.py 681497e0356b
 src/mem/ruby/profiler/Profiler.cc 681497e0356b
 src/mem/ruby/profiler/Profiler.py 681497e0356b
 src/mem/ruby/recorder/Tracer.cc 681497e0356b
 src/mem/ruby/recorder/Tracer.py 681497e0356b
 src/mem/ruby/slicc_interface/AbstractController.hh 681497e0356b
 src/mem/ruby/slicc_interface/Controller.py 681497e0356b
 src/mem/ruby/slicc_interface/SConscript 681497e0356b
 src/mem/ruby/system/AbstractMemory.hh PRE-CREATION
 src/mem/ruby/system/AbstractMemory.cc PRE-CREATION
 src/mem/ruby/system/AbstractMemory.py PRE-CREATION
 src/mem/ruby/system/Cache.py 681497e0356b
 src/mem/ruby/system/CacheMemory.hh 681497e0356b
 src/mem/ruby/system/CacheMemory.cc 681497e0356b
 src/mem/ruby/system/DirectoryMemory.hh 681497e0356b
 src/mem/ruby/system/DirectoryMemory.cc 681497e0356b
 src/mem/ruby/system/DirectoryMemory.py 681497e0356b
 src/mem/ruby/system/RubyPort.hh 681497e0356b
 src/mem/ruby/system/RubyPort.cc 681497e0356b
 src/mem/ruby/system/RubySystem.py 681497e0356b
 src/mem/ruby/system/SConscript 681497e0356b
 src/mem/ruby/system/Sequencer.py 681497e0356b
 src/mem/ruby/system/System.hh 681497e0356b
 src/mem/ruby/system/System.cc 681497e0356b
 src/mem/slicc/ast/MemberExprAST.py 681497e0356b
 src/mem/slicc/symbols/Func.py 681497e0356b
 src/mem/slicc/symbols/StateMachine.py 681497e0356b
Diff: http://reviews.m5sim.org/r/611/diff
Testing
---
I have tested functional accesses with the ratio between functional
and timing accesses for different ratios -- 100:0, 99:1, 90:1, 50:50,
10:90, 1:99. It is working in all the cases.
Thanks,
Nilay
___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev
___

gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev___
gem5-dev mailing list
gem5-dev@m5sim.org
http:/

[gem5-dev] Review Request: SLICC: Add a check function for State Machine

2011-06-01 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/723/
---

Review request for Default.


Summary
---

SLICC: Add a check function for State Machine
This patch adds a function for State Machines that will check
whether the provided description in the .sm files includes some
of the required functions, like getState() and setState().


Diffs
-

  src/mem/slicc/ast/MachineAST.py 681497e0356b 
  src/mem/slicc/symbols/StateMachine.py 681497e0356b 

Diff: http://reviews.m5sim.org/r/723/diff


Testing
---


Thanks,

Nilay

___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


Re: [gem5-dev] Review Request: Ruby: Add support for functional accesses

2011-06-01 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/
---

(Updated 2011-06-01 18:59:39.117342)


Review request for Default.


Summary
---

Ruby: Add support for functional accesses
This patch is meant for implementing functional access support in Ruby.
There is one significant change from the previous version of the patch.
In the previous version, during functional writes, only the cache memories
were being checked. During testing I realized that some of the cache lines
could reside in the TBEs. So, now the check is being done at the controller
level. The controller has to provide a function called getAccessPermission()
for functional accesses to be successful. The default implementation of the
function returns "busy" which means that the functional access cannot
proceed further.

The patch has been tested only for 1 loads and processor count from 1
to 16.


Diffs
-

  configs/example/ruby_mem_test.py 681497e0356b 
  configs/ruby/MESI_CMP_directory.py 681497e0356b 
  configs/ruby/MI_example.py 681497e0356b 
  configs/ruby/MOESI_CMP_directory.py 681497e0356b 
  configs/ruby/MOESI_CMP_token.py 681497e0356b 
  configs/ruby/MOESI_hammer.py 681497e0356b 
  configs/ruby/Ruby.py 681497e0356b 
  src/cpu/testers/memtest/memtest.hh 681497e0356b 
  src/cpu/testers/memtest/memtest.cc 681497e0356b 
  src/mem/packet.hh 681497e0356b 
  src/mem/packet.cc 681497e0356b 
  src/mem/protocol/MESI_CMP_directory-L1cache.sm 681497e0356b 
  src/mem/protocol/MESI_CMP_directory-L2cache.sm 681497e0356b 
  src/mem/protocol/MESI_CMP_directory-dir.sm 681497e0356b 
  src/mem/protocol/MI_example-cache.sm 681497e0356b 
  src/mem/protocol/MI_example-dir.sm 681497e0356b 
  src/mem/protocol/MOESI_CMP_directory-L1cache.sm 681497e0356b 
  src/mem/protocol/MOESI_CMP_directory-L2cache.sm 681497e0356b 
  src/mem/protocol/MOESI_CMP_directory-dir.sm 681497e0356b 
  src/mem/protocol/MOESI_CMP_token-L1cache.sm 681497e0356b 
  src/mem/protocol/MOESI_CMP_token-L2cache.sm 681497e0356b 
  src/mem/protocol/MOESI_CMP_token-dir.sm 681497e0356b 
  src/mem/protocol/MOESI_hammer-cache.sm 681497e0356b 
  src/mem/protocol/MOESI_hammer-dir.sm 681497e0356b 
  src/mem/ruby/network/Network.cc 681497e0356b 
  src/mem/ruby/network/Network.py 681497e0356b 
  src/mem/ruby/profiler/Profiler.cc 681497e0356b 
  src/mem/ruby/profiler/Profiler.py 681497e0356b 
  src/mem/ruby/recorder/Tracer.cc 681497e0356b 
  src/mem/ruby/recorder/Tracer.py 681497e0356b 
  src/mem/ruby/slicc_interface/AbstractController.hh 681497e0356b 
  src/mem/ruby/slicc_interface/Controller.py 681497e0356b 
  src/mem/ruby/slicc_interface/SConscript 681497e0356b 
  src/mem/ruby/system/AbstractMemory.hh PRE-CREATION 
  src/mem/ruby/system/AbstractMemory.cc PRE-CREATION 
  src/mem/ruby/system/AbstractMemory.py PRE-CREATION 
  src/mem/ruby/system/Cache.py 681497e0356b 
  src/mem/ruby/system/CacheMemory.hh 681497e0356b 
  src/mem/ruby/system/CacheMemory.cc 681497e0356b 
  src/mem/ruby/system/DirectoryMemory.hh 681497e0356b 
  src/mem/ruby/system/DirectoryMemory.cc 681497e0356b 
  src/mem/ruby/system/DirectoryMemory.py 681497e0356b 
  src/mem/ruby/system/RubyPort.hh 681497e0356b 
  src/mem/ruby/system/RubyPort.cc 681497e0356b 
  src/mem/ruby/system/RubySystem.py 681497e0356b 
  src/mem/ruby/system/SConscript 681497e0356b 
  src/mem/ruby/system/Sequencer.py 681497e0356b 
  src/mem/ruby/system/System.hh 681497e0356b 
  src/mem/ruby/system/System.cc 681497e0356b 
  src/mem/slicc/ast/MemberExprAST.py 681497e0356b 
  src/mem/slicc/symbols/Func.py 681497e0356b 
  src/mem/slicc/symbols/StateMachine.py 681497e0356b 

Diff: http://reviews.m5sim.org/r/611/diff


Testing (updated)
---


Thanks,

Nilay

___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


Re: [gem5-dev] Review Request: Ruby: Add support for functional accesses

2011-06-01 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/
---

(Updated 2011-06-01 18:59:16.473427)


Review request for Default.


Summary (updated)
---

Ruby: Add support for functional accesses
This patch is meant for implementing functional access support in Ruby.
There is one significant change from the previous version of the patch.
In the previous version, during functional writes, only the cache memories
were being checked. During testing I realized that some of the cache lines
could reside in the TBEs. So, now the check is being done at the controller
level. The controller has to provide a function called getAccessPermission()
for functional accesses to be successful. The default implementation of the
function returns "busy" which means that the functional access cannot
proceed further.

The patch has been tested only for 1 loads and processor count from 1
to 16.


Diffs (updated)
-

  configs/example/ruby_mem_test.py 681497e0356b 
  configs/ruby/MESI_CMP_directory.py 681497e0356b 
  configs/ruby/MI_example.py 681497e0356b 
  configs/ruby/MOESI_CMP_directory.py 681497e0356b 
  configs/ruby/MOESI_CMP_token.py 681497e0356b 
  configs/ruby/MOESI_hammer.py 681497e0356b 
  configs/ruby/Ruby.py 681497e0356b 
  src/cpu/testers/memtest/memtest.hh 681497e0356b 
  src/cpu/testers/memtest/memtest.cc 681497e0356b 
  src/mem/packet.hh 681497e0356b 
  src/mem/packet.cc 681497e0356b 
  src/mem/protocol/MESI_CMP_directory-L1cache.sm 681497e0356b 
  src/mem/protocol/MESI_CMP_directory-L2cache.sm 681497e0356b 
  src/mem/protocol/MESI_CMP_directory-dir.sm 681497e0356b 
  src/mem/protocol/MI_example-cache.sm 681497e0356b 
  src/mem/protocol/MI_example-dir.sm 681497e0356b 
  src/mem/protocol/MOESI_CMP_directory-L1cache.sm 681497e0356b 
  src/mem/protocol/MOESI_CMP_directory-L2cache.sm 681497e0356b 
  src/mem/protocol/MOESI_CMP_directory-dir.sm 681497e0356b 
  src/mem/protocol/MOESI_CMP_token-L1cache.sm 681497e0356b 
  src/mem/protocol/MOESI_CMP_token-L2cache.sm 681497e0356b 
  src/mem/protocol/MOESI_CMP_token-dir.sm 681497e0356b 
  src/mem/protocol/MOESI_hammer-cache.sm 681497e0356b 
  src/mem/protocol/MOESI_hammer-dir.sm 681497e0356b 
  src/mem/ruby/network/Network.cc 681497e0356b 
  src/mem/ruby/network/Network.py 681497e0356b 
  src/mem/ruby/profiler/Profiler.cc 681497e0356b 
  src/mem/ruby/profiler/Profiler.py 681497e0356b 
  src/mem/ruby/recorder/Tracer.cc 681497e0356b 
  src/mem/ruby/recorder/Tracer.py 681497e0356b 
  src/mem/ruby/slicc_interface/AbstractController.hh 681497e0356b 
  src/mem/ruby/slicc_interface/Controller.py 681497e0356b 
  src/mem/ruby/slicc_interface/SConscript 681497e0356b 
  src/mem/ruby/system/AbstractMemory.hh PRE-CREATION 
  src/mem/ruby/system/AbstractMemory.cc PRE-CREATION 
  src/mem/ruby/system/AbstractMemory.py PRE-CREATION 
  src/mem/ruby/system/Cache.py 681497e0356b 
  src/mem/ruby/system/CacheMemory.hh 681497e0356b 
  src/mem/ruby/system/CacheMemory.cc 681497e0356b 
  src/mem/ruby/system/DirectoryMemory.hh 681497e0356b 
  src/mem/ruby/system/DirectoryMemory.cc 681497e0356b 
  src/mem/ruby/system/DirectoryMemory.py 681497e0356b 
  src/mem/ruby/system/RubyPort.hh 681497e0356b 
  src/mem/ruby/system/RubyPort.cc 681497e0356b 
  src/mem/ruby/system/RubySystem.py 681497e0356b 
  src/mem/ruby/system/SConscript 681497e0356b 
  src/mem/ruby/system/Sequencer.py 681497e0356b 
  src/mem/ruby/system/System.hh 681497e0356b 
  src/mem/ruby/system/System.cc 681497e0356b 
  src/mem/slicc/ast/MemberExprAST.py 681497e0356b 
  src/mem/slicc/symbols/Func.py 681497e0356b 
  src/mem/slicc/symbols/StateMachine.py 681497e0356b 

Diff: http://reviews.m5sim.org/r/611/diff


Testing
---

I have tested functional accesses with the ratio between functional
and timing accesses for different ratios -- 100:0, 99:1, 90:1, 50:50,
10:90, 1:99. It is working in all the cases.


Thanks,

Nilay

___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


Re: [gem5-dev] Functional Memory Accesses in Ruby

2011-05-31 Thread Nilay Vaish

On Sat, 28 May 2011, Nilay Vaish wrote:


Hi Brad

I am trying to complete the patch on functional accesses in Ruby. I came 
across this problem while testing the patch for higher number of processors. 
I am working with MESI CMP directory protocol right now. So I will describe 
the problem in its context.


Assume we are trying to functionally write some thing to block A. It is in 
state S_I in the L2 cache. When a block moves to state S_I from state SS, 
then the cache block in the cache is deallocated. Therefore, when viewed from 
the CacheMemory's perpespective, since the cache does not have block A, 
therefore, the L2 cache is of no consequence for this access. But the 
controller has a TBE for this block. And this TBE will have this block with 
AccessPermission:Busy. Also, there are L1 caches in the system that hold this 
block in S state.


Now, as per the current condition for write functional accesses,

if((num_busy == 0 && num_ro > 0) || num_rw == 1)

this access would go ahead as num_busy would evaluate to 0 and num_ro would 
evaluate to some value greater than 0. But clearly we do not want this access 
to be performed since that state S_I is a busy state and no other cache holds 
the block in a read-write state.


It seems to me that the controller should supply the function for deciding 
the access permissions, since it is possible that one the TBE holds the 
block.


--
Nilay



Brad, I went over the discussion that we had this morning. I think the 
getState() function cannot be used for extracting access permissions. This 
is because the getState() function needs pouinters to transaction buffer 
and cache entries, apart from the address.


I think we should let the Controller provide a function for getting the 
access permissions. This function would be a virtual function declared in 
the AbstractController class, but would not be pure. The 
AbstractController implementation of the function would always return 
busy, so that functional accesses are not enabled at all for protocols 
that do not provide such a function.


--
Nilay
___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


[gem5-dev] Functional Memory Accesses in Ruby

2011-05-28 Thread Nilay Vaish

Hi Brad

I am trying to complete the patch on functional accesses in Ruby. I came 
across this problem while testing the patch for higher number of 
processors. I am working with MESI CMP directory protocol right now. So I 
will describe the problem in its context.


Assume we are trying to functionally write some thing to block A. It is in 
state S_I in the L2 cache. When a block moves to state S_I from state SS, 
then the cache block in the cache is deallocated. Therefore, when viewed 
from the CacheMemory's perpespective, since the cache does not have block 
A, therefore, the L2 cache is of no consequence for this access. But the 
controller has a TBE for this block. And this TBE will have this block 
with AccessPermission:Busy. Also, there are L1 caches in the system that 
hold this block in S state.


Now, as per the current condition for write functional accesses,

 if((num_busy == 0 && num_ro > 0) || num_rw == 1)

this access would go ahead as num_busy would evaluate to 0 and num_ro 
would evaluate to some value greater than 0. But clearly we do not want 
this access to be performed since that state S_I is a busy state and no 
other cache holds the block in a read-write state.


It seems to me that the controller should supply the function for deciding 
the access permissions, since it is possible that one the TBE holds the 
block.


--
Nilay
___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


Re: [gem5-dev] Review Request: Ruby: Correctly set access permissions for directory entries

2011-05-27 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/684/
---

(Updated 2011-05-27 11:41:44.345753)


Review request for Default.


Summary (updated)
---

Ruby: Correctly set access permissions for directory entries
The access permissions for the directory entries are not being set correctly.
This is because pointers are not used for handling directory entries.
function. The setState() function will once again set the permissions as well.
But it would make use of the State_to_permission() function, instead of doing
the analysis it used to do earlier. The changePermission() function provided
by the AbstractEntry and AbstractCacheEntry classes has been exposed to SLICC
code once again. The set_permission() functionality has been removed.

The patch has been updated to set permissions for all the five protocols.
All the protocols compile and clears 1 loads.


Diffs (updated)
-

  src/mem/protocol/MESI_CMP_directory-L1cache.sm dda2a88eb7c4 
  src/mem/protocol/MESI_CMP_directory-L2cache.sm dda2a88eb7c4 
  src/mem/protocol/MESI_CMP_directory-dir.sm dda2a88eb7c4 
  src/mem/protocol/MI_example-cache.sm dda2a88eb7c4 
  src/mem/protocol/MI_example-dir.sm dda2a88eb7c4 
  src/mem/protocol/MOESI_CMP_directory-L1cache.sm dda2a88eb7c4 
  src/mem/protocol/MOESI_CMP_directory-L2cache.sm dda2a88eb7c4 
  src/mem/protocol/MOESI_CMP_directory-dir.sm dda2a88eb7c4 
  src/mem/protocol/MOESI_CMP_token-L1cache.sm dda2a88eb7c4 
  src/mem/protocol/MOESI_CMP_token-L2cache.sm dda2a88eb7c4 
  src/mem/protocol/MOESI_CMP_token-dir.sm dda2a88eb7c4 
  src/mem/protocol/MOESI_hammer-cache.sm dda2a88eb7c4 
  src/mem/protocol/MOESI_hammer-dir.sm dda2a88eb7c4 
  src/mem/protocol/RubySlicc_Types.sm dda2a88eb7c4 
  src/mem/slicc/ast/MethodCallExprAST.py dda2a88eb7c4 
  src/mem/slicc/symbols/StateMachine.py dda2a88eb7c4 

Diff: http://reviews.m5sim.org/r/684/diff


Testing
---


Thanks,

Nilay

___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


Re: [gem5-dev] [m5-dev] Review Request: Ruby: Correctly set access permissions for directory entries

2011-05-26 Thread Nilay Vaish

On Fri, 6 May 2011, Beckmann, Brad wrote:


Hi Nilay,

Yeah, pulling the State into the Machine makes sense to me.  If I 
recall, my previous patch made it necessary that each machine included a 
state_declaration (previously the state enum).  More tightly integrating 
the state to the machine seems to be a natural progression on that path.


I understand moving the permission settings back to setState is the 
easiest way to make this work.  However, it would be great if we could 
combine the setting of state and the setting of permission into one 
function call from the sm file.  Thus we don't have to worry about the 
situation where one sets the state, but forgets to set the permission. 
That could lead to some random functional access failing and a very 
painful debug.


Brad




I was trying to recall why I had suggested pulling State in to the 
Machine. It seems the reasoning was that then the calls to the function

*_State_to_Permission() can be shortened to State_to_Permission().

The problem with combining the setting state and the permission it seems 
would be that cache and directory entries are treated differently. Cache 
entries get supplied to set state as pointers, where as directory entries 
are sought within the function it self.


I am currently in favor of going with what I submitted earlier so that 
functional access patch can get out of the way soon as possible.


--
Nilay
___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


Re: [gem5-dev] Review Request: slicc: add a protocol statement and an include statement

2011-05-25 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/717/#review1261
---

Ship it!


Looks fine to me.

- Nilay


On 2011-05-24 10:15:40, Nathan Binkert wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.m5sim.org/r/717/
> ---
> 
> (Updated 2011-05-24 10:15:40)
> 
> 
> Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and 
> Nathan Binkert.
> 
> 
> Summary
> ---
> 
> slicc: add a protocol statement and an include statement
> All protocols must specify their name
> The include statement allows any file to include another file.
> 
> 
> Diffs
> -
> 
>   src/mem/protocol/MESI_CMP_directory.slicc 3f37cc5d25bc 
>   src/mem/protocol/MI_example.slicc 3f37cc5d25bc 
>   src/mem/protocol/MOESI_CMP_directory.slicc 3f37cc5d25bc 
>   src/mem/protocol/MOESI_CMP_token.slicc 3f37cc5d25bc 
>   src/mem/protocol/MOESI_hammer.slicc 3f37cc5d25bc 
>   src/mem/protocol/Network_test.slicc 3f37cc5d25bc 
>   src/mem/protocol/RubySlicc_interfaces.slicc 3f37cc5d25bc 
>   src/mem/protocol/SConscript 3f37cc5d25bc 
>   src/mem/slicc/main.py 3f37cc5d25bc 
>   src/mem/slicc/parser.py 3f37cc5d25bc 
> 
> Diff: http://reviews.m5sim.org/r/717/diff
> 
> 
> Testing
> ---
> 
> Quick Regressions, Compile everything
> 
> 
> Thanks,
> 
> Nathan
> 
>

___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


Re: [m5-dev] Adding m5 debug statements to SLICC

2011-05-07 Thread Nilay Vaish
Koreay, DPRINTF already works in sm files. Use RubySlicc as the flag. You 
can also use error() and assert() functions which have the following 
prototypes --


void error(std::string msg);
void assert(bool condition);

--
Nilay

On Fri, 6 May 2011, Korey Sewell wrote:


I guess I should rephrase this question to this:
What's the best way to expose a new function to be used in the *.sm SLICC
files?

On Fri, May 6, 2011 at 3:26 AM, Korey Sewell  wrote:


Hi all,
I'm trying to drop in warn/inform/panic/dprintf/etc messages into the SLICC
files because these functions are pretty invaluable to the being able to
validate, debug and document what's going on in your simulation, but  I have
not been able to get them to work inside a SLICC .sm file.

I was hoping that I could place a "base/misc.hh" header file somewhere and
magic would ensue but that was not the case :)

Instead, it looks like I would have to add my own detection functions for
warn/inform/etc. in the SLICC parser, so that when I call those functions in
the code, it will recognize it.

I am wondering if anyone has had a similar problem like this (in terms of
adding random C++ code to a *.sm file) and if so can you give me your
perspective on what I would need to do get this working in SLICC. Is this
functionality already there in SLICC and I'm just missing something?

The current error I receive is this:
Exception: MOESI_CMP_directory-L2cache.sm:973: Error: Unrecognized function
name: 'warn':
  File "/y/ksewell/m5-dev/m5-outgoing/SConstruct", line 1025:
...
  File "/y/ksewell/m5-dev/m5-incoming/src/mem/slicc/ast/AST.py", line 50:
self.location.error(message, *args)
  File "/y/ksewell/m5-dev/m5-incoming/src/mem/slicc/util.py", line 72:
raise Exception, "%s: Error: %s" % (self, message)


I think this is pretty high utility, so if it's not going to be a
"programming adventure", I'd like to go ahead and spend time to get it
working. If anyone has any thoughts or suggestions, please let me know what
you think.

Thanks.

--
- Korey





--
- Korey
___
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


Re: [m5-dev] Review Request: Ruby: Correctly set access permissions for directory entries

2011-05-07 Thread Nilay Vaish
Korey, I don't think there will be any change in the simulation 
performance. I am not sure about stats.


Brad, were the stats updated after you made the change?

--
Nilay



On Fri, 6 May 2011, Korey Sewell wrote:


Nilay,
can you explain the impact of that bug in terms of simulation performance?
Are benchmarks running slower because of this change? Will regressions need
to be updated?

On Fri, May 6, 2011 at 8:13 PM, Beckmann, Brad wrote:


Hi Nilay,

Yeah, pulling the State into the Machine makes sense to me.  If I recall,
my previous patch made it necessary that each machine included a
state_declaration (previously the state enum).  More tightly integrating the
state to the machine seems to be a natural progression on that path.

I understand moving the permission settings back to setState is the easiest
way to make this work.  However, it would be great if we could combine the
setting of state and the setting of permission into one function call from
the sm file.  Thus we don't have to worry about the situation where one sets
the state, but forgets to set the permission.  That could lead to some
random functional access failing and a very painful debug.

Brad



___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] [m5-users] Tracing does not work

2011-05-07 Thread Nilay Vaish
Joel, I have pushed in the patch the removes the options trace-help and 
trace-flags. But trace-start and trace-file work as before. You can use 
them in conjunction with debug-flags.


--
Nilay

On Fri, 6 May 2011, Nilay Vaish wrote:


I was thinking og doing it since Nate is not around. I'll do it soon.

--
Nilay

On Fri, 6 May 2011, Joel Hestness wrote:


Hey Nilay,
 It looks like the tracing ("debug") functionality is now working again,
but the M5 help message is still incorrect (and extremely misleading).  For
instance, "trace-flags", and "trace-file" are still accepted, but they 
don't

do anything now.  They should be eliminated from the message.  We're also
missing the equivalent of "trace-start" and "trace-file".  Do you mind
cleaning that up?
 Thanks,
 Joel

PS.  I haven't followed the tracing/debugging thread closely enough, but it
seems like "trace" and "debug" should be different things (though they are
currently implemented as the same thing).  Is there a reason why we moved
over to "debug"?





___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


[m5-dev] changeset in m5: Trace: Remove the options trace-help and trace-...

2011-05-07 Thread Nilay Vaish
changeset a6363c870af6 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=a6363c870af6
description:
Trace: Remove the options trace-help and trace-flags
The options trace-help and trace-flags are no longer required. In there 
place,
the options debug-help and debug-flags have been provided.

diffstat:

 src/python/m5/main.py |  4 
 1 files changed, 0 insertions(+), 4 deletions(-)

diffs (14 lines):

diff -r 3c628a51f6e1 -r a6363c870af6 src/python/m5/main.py
--- a/src/python/m5/main.py Fri May 06 01:00:32 2011 -0700
+++ b/src/python/m5/main.py Sat May 07 07:38:36 2011 -0500
@@ -106,10 +106,6 @@
 
 # Tracing options
 group("Trace Options")
-option("--trace-help", action='store_true',
-help="Print help on trace flags")
-option("--trace-flags", metavar="FLAG[,FLAG]", action='append', split=',',
-help="Sets the flags for tracing (-FLAG disables a flag)")
 option("--trace-start", metavar="TIME", type='int',
 help="Start tracing at TIME (must be in ticks)")
 option("--trace-file", metavar="FILE", default="cout",
___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


[m5-dev] Review Request: Ruby: Correctly set access permissions for directory entries

2011-05-06 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/684/
---

Review request for Default.


Summary
---

Ruby: Correctly set access permissions for directory entries
The access permissions for the directory entries are not being set correctly.
This is because pointers are not used for handling directory entries.
function. The setState() function will once again set the permissions as well.
But it would make use of the State_to_permission() function, instead of doing
the analysis it used to do earlier. The changePermission() function provided
by the AbstractEntry and AbstractCacheEntry classes has been exposed to SLICC
code once again. The set_permission() functionality has been removed.

I have done this only for the MESI protocol so far. Once we build a consensus
one the changes, I will make changes to other protocols as well.

As far as testing is concerned, the protocol compiles and clears 1 loads.
I did not test any more than that.

A point that I wanted to raise for discussion: I think we should pull State
enum and the accompanying functions into the Machine it self. Brad, what do
you think?


Diffs
-

  src/mem/protocol/MESI_CMP_directory-L1cache.sm 3c628a51f6e1 
  src/mem/protocol/MESI_CMP_directory-L2cache.sm 3c628a51f6e1 
  src/mem/protocol/MESI_CMP_directory-dir.sm 3c628a51f6e1 
  src/mem/protocol/RubySlicc_Types.sm 3c628a51f6e1 
  src/mem/slicc/ast/MethodCallExprAST.py 3c628a51f6e1 
  src/mem/slicc/symbols/StateMachine.py 3c628a51f6e1 

Diff: http://reviews.m5sim.org/r/684/diff


Testing
---


Thanks,

Nilay

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] [m5-users] Tracing does not work

2011-05-06 Thread Nilay Vaish

I was thinking og doing it since Nate is not around. I'll do it soon.

--
Nilay

On Fri, 6 May 2011, Joel Hestness wrote:


Hey Nilay,
 It looks like the tracing ("debug") functionality is now working again,
but the M5 help message is still incorrect (and extremely misleading).  For
instance, "trace-flags", and "trace-file" are still accepted, but they don't
do anything now.  They should be eliminated from the message.  We're also
missing the equivalent of "trace-start" and "trace-file".  Do you mind
cleaning that up?
 Thanks,
 Joel

PS.  I haven't followed the tracing/debugging thread closely enough, but it
seems like "trace" and "debug" should be different things (though they are
currently implemented as the same thing).  Is there a reason why we moved
over to "debug"?



___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Trace not working

2011-04-27 Thread Nilay Vaish

So, the following command should work. But I am still getting some error.

./build/ALPHA_SE_MESI_CMP_directory/m5.opt --debug-help

Base Flags:
Traceback (most recent call last):
  File "", line 1, in ?
  File 
"/afs/cs.wisc.edu/u/n/i/nilay/private/Architecture/GEM5/m5/src/python/m5/main.py", 
line 238, in main

debug.help()
  File 
"/afs/cs.wisc.edu/u/n/i/nilay/private/Architecture/GEM5/m5/src/python/m5/debug.py", 
line 35, in help

for flag in flags.basic:
AttributeError: 'AllFlags' object has no attribute 'basic'

--
Nilay

On Mon, 25 Apr 2011, Beckmann, Brad wrote:


Hi Nilay,

In one of Nate's recent patches he changed the name from trace-help to debug-help.  Similarly the 
command line "trace-flag" is now "debug-flag".

However, I am confused as well on how to add a new TraceFlag/DebugFlag.  It seems that 
all the previous flags are still specified using the "TraceFlag()" function, 
but I can't seem to be able to specify a new one.Also to be consistent, should we 
change the name of the TraceFlag function to DebugFlag?

Brad



-Original Message-
From: m5-dev-boun...@m5sim.org [mailto:m5-dev-boun...@m5sim.org]
On Behalf Of Nilay Vaish
Sent: Monday, April 25, 2011 2:59 PM
To: m5-dev@m5sim.org
Subject: [m5-dev] Trace not working

On Mon, 25 Apr 2011, Nilay Vaish wrote:


The option trace-help is not working currently. When I execute the
following

./build/ALPHA_SE_MESI_CMP_directory/m5.debug --trace-help

I get a list of all the m5 options. Can some one confirm this?

Thanks
Nilay



Seems like trace facility is not working currently. I am getting the following
error --

./build/ALPHA_SE_MESI_CMP_directory/m5.opt
--trace-flag=ProtocolTrace,RubyPort --trace-start=254
--trace-file=Trace.1 ./configs/example/ruby_mem_test.py -n 16 --functional
99
M5 Simulator System

Copyright (c) 2001-2008
The Regents of The University of Michigan All Rights Reserved


M5 compiled Apr 25 2011 16:54:13
M5 started Apr 25 2011 16:55:21
M5 executing on ale-01.cs.wisc.edu
command line: ./build/ALPHA_SE_MESI_CMP_directory/m5.opt
--trace-flag=ProtocolTrace,RubyPort --trace-start=254
--trace-file=Trace.1 ./configs/example/ruby_mem_test.py -n 16 --functional
99
Traceback (most recent call last):
   File "", line 1, in ?
   File
"/afs/cs.wisc.edu/u/n/i/nilay/private/Architecture/GEM5/m5/src/python/m
5/main.py",
line 327, in main
 e = event.create(trace.enable, event.Event.Trace_Enable_Pri)
AttributeError: 'module' object has no attribute 'Event_Trace_Enable_Pri'

--
Nilay
___
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] Trace not working

2011-04-25 Thread Nilay Vaish

On Mon, 25 Apr 2011, Nilay Vaish wrote:


The option trace-help is not working currently. When I execute the following

./build/ALPHA_SE_MESI_CMP_directory/m5.debug --trace-help

I get a list of all the m5 options. Can some one confirm this?

Thanks
Nilay



Seems like trace facility is not working currently. I am getting the 
following error --


./build/ALPHA_SE_MESI_CMP_directory/m5.opt 
--trace-flag=ProtocolTrace,RubyPort --trace-start=254 
--trace-file=Trace.1 ./configs/example/ruby_mem_test.py -n 16 --functional 
99

M5 Simulator System

Copyright (c) 2001-2008
The Regents of The University of Michigan
All Rights Reserved


M5 compiled Apr 25 2011 16:54:13
M5 started Apr 25 2011 16:55:21
M5 executing on ale-01.cs.wisc.edu
command line: ./build/ALPHA_SE_MESI_CMP_directory/m5.opt 
--trace-flag=ProtocolTrace,RubyPort --trace-start=254 
--trace-file=Trace.1 ./configs/example/ruby_mem_test.py -n 16 --functional 
99

Traceback (most recent call last):
  File "", line 1, in ?
  File 
"/afs/cs.wisc.edu/u/n/i/nilay/private/Architecture/GEM5/m5/src/python/m5/main.py", 
line 327, in main

e = event.create(trace.enable, event.Event.Trace_Enable_Pri)
AttributeError: 'module' object has no attribute 'Event_Trace_Enable_Pri'

--
Nilay
___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


[m5-dev] Trace Help

2011-04-25 Thread Nilay Vaish
The option trace-help is not working currently. When I execute the 
following


./build/ALPHA_SE_MESI_CMP_directory/m5.debug --trace-help

I get a list of all the m5 options. Can some one confirm this?

Thanks
Nilay
___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


[m5-dev] changeset in m5: base: include types.hh in base/stats/mysql.hh

2011-04-25 Thread Nilay Vaish
changeset ea37585785ab in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=ea37585785ab
description:
base: include types.hh in base/stats/mysql.hh
Due to certain changes made via changeset 8229, the compilation was 
failing
in certain cases. The compiler pointed to base/stats/mysql.hh for not 
naming
a certain types like uint64_t. To rectify this, base/types.hh is being
included in base/stats/mysql.hh.

diffstat:

 src/base/stats/mysql.hh |  1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diffs (11 lines):

diff -r de679a068dd8 -r ea37585785ab src/base/stats/mysql.hh
--- a/src/base/stats/mysql.hh   Sat Apr 23 15:02:29 2011 -0700
+++ b/src/base/stats/mysql.hh   Mon Apr 25 12:23:37 2011 -0500
@@ -37,6 +37,7 @@
 #include 
 
 #include "base/stats/output.hh"
+#include "base/types.hh"
 #include "config/use_mysql.hh"
 
 namespace MySQL { class Connection; }
___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: Add support for functional accesses

2011-04-25 Thread Nilay Vaish


> On 2011-04-13 10:28:08, Brad Beckmann wrote:
> > src/mem/protocol/MESI_CMP_directory-L1cache.sm, line 141
> > <http://reviews.m5sim.org/r/611/diff/6/?file=11548#file11548line141>
> >
> > Why are you adding this function?  SLICC already generates a similar 
> > function: getPermission().
> > 
> > Overall, I hope/think we can add functional access support without 
> > requiring any more changes to the protocol specific .sm files beyond the 
> > changeset:   8086:bf0335d98250 that I checked in a couple months ago.
> 
> Nilay Vaish wrote:
> How would you use the function that is generated by SLICC inside the
> sm file? I am concerned about the visibility of the function.
> 
> Brad Beckmann wrote:
> You can certainly use a function that is generated by SLICC inside the sm 
> file.  The 'trigger' function is one such example.
> 
> However, I'm not clear why you need to do that?  Specifically, why do you 
> need to explicitly set the permissions in the getCacheEntry function?  I 
> beleive the controller's doTransition function already does that when a 
> transition successfully completes.
> 
> Nilay Vaish wrote:
> I checked the generated code. It seems that permissions are being
> set only for the cache entries and not for the directory entries.
> 
> Brad Beckmann wrote:
> Really?  You should see a call to set_permissions inside the 
> Directory_Transitions.cc file.  For example, when I compile the MOESI_hammer 
> protocol, I see the set_permission call on line 51 in 
> Directory_Transitions.cc.
> 
>
> 
> Nilay Vaish wrote:
> The permissions would be set for the probe filter entry and not for the
> directory entry. The directory entry pointer is not passed around like
> the cache entry or TBE pointer.
> 
> Brad Beckmann wrote:
> Doh!  Yep, that is a problem.  So what are the potential solutions:
> 
> 1. Inside the setState functions for the DirectoryControllers, we also 
> call set_permission.  This would require us to expose set_permissions to 
> SLICC similar to how trigger is exposed to SLICC.  Certainly possilbe, but 
> not ideal.  Especially because it will require directory controllers and 
> cache controllers to have different functionality in their setState functions.
> 2. Instead of allowing an entry's state to be directly assigned in the 
> setState functions, make the state variable private, thus requiring a public 
> funciton to modify state.  When SLICC generates the implementation of that 
> public function, have that function modify both the state and the permissions.
> 3. Remove the m_permission field in all entries and just rely on 
> get_permission to return the current permissions for cache and directory 
> entries.  I'm not sure how to do that unless we create an AbstractState class 
> so that the state can be accessed by the Ruby side.  Do we want to make such 
> a change?
> 
> If we can make it work, I would prefer the second solution.  What do you 
> think?  Do you see other potential solutions?  If you agree that the second 
> solution is best, do you want to take a crack at it or would you like me to?  
> Since it is my patch that is broken, I feel responsible to fix it.  However, 
> I'm fine with you making the fix as well.
> 
> Nilay Vaish wrote:
> I will think about it. IIRC, we had a discussion earlier as well
> whether setState() can be generated automatically by SLICC and 
> we decided against it.
> 
> Brad Beckmann wrote:
> I'm not proposing that we try to generate the entire 
> ::setState function.  Instead, I'm just proposing making the 
> current _Entry::m_State function private and adding a 
> new _Entry::setState() function that sets the state and the 
> permissions.
> 
> Yeah, definitely think it through before going ahead to implement any 
> solution.  There may be some issues that I'm overlooking.

Brad, I think we should chuck the call to set_permission from StateMachine.py. 
Instead, we can add statements that set permissions with in the setState()
function. The call would make use of the StateToPermission() function which 
would be automatically generated as is done now.

Is this acceptable? And is it feasible? 


- Nilay


---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/#review
---


On 2011-04-13 14:29:01, Nilay Vaish wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> http://revi

Re: [m5-dev] Error while compiling (changeset 8229)

2011-04-21 Thread Nilay Vaish

On Wed, 20 Apr 2011, nathan binkert wrote:


Because that file is being included regardless. ?I'm actively trying
to squash all of these bugs and I'll be committing some changes soon.
This one is trivial to fix.


I can't reproduce this bug on my machine, even with USE_MYSQL=False.
Can you try the attached diff?  If it works for you, feel free to
commit it.  If it doesn't work, just fix it however you need to and
post a diff.

 Nate



The bug exists in 8246. Following works for me -


diff -r a9d06c894afe src/base/stats/mysql.hh
--- a/src/base/stats/mysql.hh   Wed Apr 20 18:45:03 2011 -0700
+++ b/src/base/stats/mysql.hh   Thu Apr 21 15:28:29 2011 -0500
@@ -37,6 +37,7 @@
 #include 

 #include "base/stats/output.hh"
+#include "base/types.hh"
 #include "config/use_mysql.hh"

 namespace MySQL { class Connection; }



--
Nilay___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Error while compiling (changeset 8229)

2011-04-20 Thread Nilay Vaish
Nate, since I have provided the option USE_MYSQL=False, why should 
mysql.hh even come in to picture?


--
Nilay


On Wed, 20 Apr 2011, nathan binkert wrote:


The solution is to #include "base/types.hh" in mysql.hh, but to be
honest, I'm not sure how this is even happening.  Perhaps you need to
blow away your build directory and compile again.  That said, I did
not compile with USE_MYSQL=False, so this could just be a bug that
shows up in that instance.

 Nate


___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Error while compiling (changeset 8229)

2011-04-20 Thread Nilay Vaish
I started compilation with 8241, and that has this problem. So I tried to 
bisect it and 8229 is the first changeset that has this problem.


--
Nilay

On Wed, 20 Apr 2011, nathan binkert wrote:


You need changeset 8230.  You need the sort includes changeset and the
one following it that fixes bugs.

 Nate


I am trying to compile m5 and the scons exits with errors.
Following is the compilation command --

scons -j 12 CXX=g++44 CC=gcc44 USE_MYSQL=False RUBY=True
build/ALPHA_SE_MESI_CMP_directory/m5.fast

and errors

In file included from
build/ALPHA_SE_MESI_CMP_directory/python/swig/stats_wrap.cc:3163:
build/ALPHA_SE_MESI_CMP_directory/base/stats/mysql.hh:52: error: 'uint16_t'
does not name a type
build/ALPHA_SE_MESI_CMP_directory/base/stats/mysql.hh:63: error: 'uint16_t'
does not name a type
build/ALPHA_SE_MESI_CMP_directory/base/stats/mysql.hh:73: error: 'size_type'
does not name a type
build/ALPHA_SE_MESI_CMP_directory/base/stats/mysql.hh:75: error: 'size_type'
does not name a type
build/ALPHA_SE_MESI_CMP_directory/base/stats/mysql.hh:81: error: 'uint64_t'
does not name a type
build/ALPHA_SE_MESI_CMP_directory/base/stats/mysql.hh:83: error: 'uint16_t'
does not name a type
build/ALPHA_SE_MESI_CMP_directory/base/stats/mysql.hh:156: error: ISO C++
forbids declaration of 'DistData' with no type
build/ALPHA_SE_MESI_CMP_directory/base/stats/mysql.hh:156: error: expected
',' or '...' before '&' token


The command works till changeset 8228. It fails on 8229, the one on sorting
included files.

--
Nilay
___
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] Error while compiling (changeset 8229)

2011-04-20 Thread Nilay Vaish

I am trying to compile m5 and the scons exits with errors.
Following is the compilation command --

scons -j 12 CXX=g++44 CC=gcc44 USE_MYSQL=False RUBY=True 
build/ALPHA_SE_MESI_CMP_directory/m5.fast


and errors

In file included from 
build/ALPHA_SE_MESI_CMP_directory/python/swig/stats_wrap.cc:3163:
build/ALPHA_SE_MESI_CMP_directory/base/stats/mysql.hh:52: error: 
'uint16_t' does not name a type
build/ALPHA_SE_MESI_CMP_directory/base/stats/mysql.hh:63: error: 
'uint16_t' does not name a type
build/ALPHA_SE_MESI_CMP_directory/base/stats/mysql.hh:73: error: 
'size_type' does not name a type
build/ALPHA_SE_MESI_CMP_directory/base/stats/mysql.hh:75: error: 
'size_type' does not name a type
build/ALPHA_SE_MESI_CMP_directory/base/stats/mysql.hh:81: error: 
'uint64_t' does not name a type
build/ALPHA_SE_MESI_CMP_directory/base/stats/mysql.hh:83: error: 
'uint16_t' does not name a type
build/ALPHA_SE_MESI_CMP_directory/base/stats/mysql.hh:156: error: ISO C++ 
forbids declaration of 'DistData' with no type
build/ALPHA_SE_MESI_CMP_directory/base/stats/mysql.hh:156: error: expected 
',' or '...' before '&' token



The command works till changeset 8228. It fails on 8229, the one on 
sorting included files.


--
Nilay
___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Bug in changeset 8225 or 8227

2011-04-16 Thread Nilay Vaish

On Sat, 16 Apr 2011, nathan binkert wrote:


What version of python are you using?  It could be that that syntax
wasn't available until 2.5 and you're using something older.  I can't
do anything about it right now because I'm about to leave on a hike.

 Nate


Nate, it seems one of your checkins from yesterday has a bug. I receive the
following message on executing any merculrial command.

*** failed to import extension style from ./util/style.py: invalid syntax
(file_types.py, line 143)


--
Nilay


I am using python version 2.4.3.

Nilay
___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


[m5-dev] Bug in changeset 8225 or 8227

2011-04-16 Thread Nilay Vaish
Nate, it seems one of your checkins from yesterday has a bug. I receive 
the following message on executing any merculrial command.


*** failed to import extension style from ./util/style.py: invalid syntax 
(file_types.py, line 143)



--
Nilay
___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: Add support for functional accesses

2011-04-16 Thread Nilay Vaish


> On 2011-04-15 15:57:28, Steve Reinhardt wrote:
> > configs/example/ruby_mem_test.py, line 98
> > <http://reviews.m5sim.org/r/611/diff/8/?file=11625#file11625line98>
> >
> > You probably don't want to commit this value, do you?  If you want to 
> > hardwire a number, I'd pick something more reasonable (somewhere between 10 
> > and 25, just guessing).

I need to add a command line option for this. I can
put the default value as 10.


> On 2011-04-15 15:57:28, Steve Reinhardt wrote:
> > src/mem/packet.hh, line 109
> > <http://reviews.m5sim.org/r/611/diff/8/?file=11629#file11629line109>
> >
> > I don't see much value in having separate error return codes for reads 
> > and writes.  I'd use a single code that ends in Error (like 
> > FunctionalAccessError), and put it up a couple of lines with the other 
> > Error codes.

I will make this change.


> On 2011-04-15 15:57:28, Steve Reinhardt wrote:
> > src/mem/packet.hh, line 622
> > <http://reviews.m5sim.org/r/611/diff/8/?file=11629#file11629line622>
> >
> > Way too much code duplication here :-).  I think this works, correct?
> > 
> > void
> > makeFunctionalResponse(bool success)
> > {
> > makeResponse();
> > if (!success) {
> > cmd = MemCmd::FunctionalAccessError;
> > }
> > }
> >

Will make the required changes.


- Nilay


---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/#review1130
---


On 2011-04-13 14:29:01, Nilay Vaish wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.m5sim.org/r/611/
> ---
> 
> (Updated 2011-04-13 14:29:01)
> 
> 
> Review request for Default.
> 
> 
> Summary
> ---
> 
> Ruby: Add support for functional accesses
> This patch is meant for implementing functional access support in Ruby.
> Currently, the patch does not functional accesses for the PioPort.
> 
> 
> Diffs
> -
> 
>   configs/example/ruby_mem_test.py 8b5f900233ee 
>   configs/ruby/MESI_CMP_directory.py 8b5f900233ee 
>   configs/ruby/Ruby.py 8b5f900233ee 
>   src/cpu/testers/memtest/memtest.cc 8b5f900233ee 
>   src/mem/packet.hh 8b5f900233ee 
>   src/mem/packet.cc 8b5f900233ee 
>   src/mem/protocol/MESI_CMP_directory-L1cache.sm 8b5f900233ee 
>   src/mem/protocol/MESI_CMP_directory-L2cache.sm 8b5f900233ee 
>   src/mem/protocol/MESI_CMP_directory-dir.sm 8b5f900233ee 
>   src/mem/protocol/RubySlicc_Types.sm 8b5f900233ee 
>   src/mem/ruby/network/Network.cc 8b5f900233ee 
>   src/mem/ruby/network/Network.py 8b5f900233ee 
>   src/mem/ruby/profiler/Profiler.cc 8b5f900233ee 
>   src/mem/ruby/profiler/Profiler.py 8b5f900233ee 
>   src/mem/ruby/recorder/Tracer.cc 8b5f900233ee 
>   src/mem/ruby/recorder/Tracer.py 8b5f900233ee 
>   src/mem/ruby/system/AbstractMemory.hh PRE-CREATION 
>   src/mem/ruby/system/AbstractMemory.cc PRE-CREATION 
>   src/mem/ruby/system/AbstractMemory.py PRE-CREATION 
>   src/mem/ruby/system/Cache.py 8b5f900233ee 
>   src/mem/ruby/system/CacheMemory.hh 8b5f900233ee 
>   src/mem/ruby/system/CacheMemory.cc 8b5f900233ee 
>   src/mem/ruby/system/DirectoryMemory.hh 8b5f900233ee 
>   src/mem/ruby/system/DirectoryMemory.cc 8b5f900233ee 
>   src/mem/ruby/system/DirectoryMemory.py 8b5f900233ee 
>   src/mem/ruby/system/RubyPort.hh 8b5f900233ee 
>   src/mem/ruby/system/RubyPort.cc 8b5f900233ee 
>   src/mem/ruby/system/RubySystem.py 8b5f900233ee 
>   src/mem/ruby/system/SConscript 8b5f900233ee 
>   src/mem/ruby/system/Sequencer.cc 8b5f900233ee 
>   src/mem/ruby/system/Sequencer.py 8b5f900233ee 
>   src/mem/ruby/system/System.hh 8b5f900233ee 
>   src/mem/ruby/system/System.cc 8b5f900233ee 
>   src/mem/slicc/ast/MemberExprAST.py 8b5f900233ee 
> 
> Diff: http://reviews.m5sim.org/r/611/diff
> 
> 
> Testing
> ---
> 
> I have tested functional accesses with the ratio between functional
> and timing accesses for different ratios -- 100:0, 99:1, 90:1, 50:50,
> 10:90, 1:99. It is working in all the cases.
> 
> 
> Thanks,
> 
> Nilay
> 
>

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: Add support for functional accesses

2011-04-16 Thread Nilay Vaish


> On 2011-04-13 10:28:08, Brad Beckmann wrote:
> > src/mem/protocol/MESI_CMP_directory-L1cache.sm, line 141
> > <http://reviews.m5sim.org/r/611/diff/6/?file=11548#file11548line141>
> >
> > Why are you adding this function?  SLICC already generates a similar 
> > function: getPermission().
> > 
> > Overall, I hope/think we can add functional access support without 
> > requiring any more changes to the protocol specific .sm files beyond the 
> > changeset:   8086:bf0335d98250 that I checked in a couple months ago.
> 
> Nilay Vaish wrote:
> How would you use the function that is generated by SLICC inside the
> sm file? I am concerned about the visibility of the function.
> 
> Brad Beckmann wrote:
> You can certainly use a function that is generated by SLICC inside the sm 
> file.  The 'trigger' function is one such example.
> 
> However, I'm not clear why you need to do that?  Specifically, why do you 
> need to explicitly set the permissions in the getCacheEntry function?  I 
> beleive the controller's doTransition function already does that when a 
> transition successfully completes.
> 
> Nilay Vaish wrote:
> I checked the generated code. It seems that permissions are being
> set only for the cache entries and not for the directory entries.
> 
> Brad Beckmann wrote:
> Really?  You should see a call to set_permissions inside the 
> Directory_Transitions.cc file.  For example, when I compile the MOESI_hammer 
> protocol, I see the set_permission call on line 51 in 
> Directory_Transitions.cc.
> 
>
> 
> Nilay Vaish wrote:
> The permissions would be set for the probe filter entry and not for the
> directory entry. The directory entry pointer is not passed around like
> the cache entry or TBE pointer.
> 
> Brad Beckmann wrote:
> Doh!  Yep, that is a problem.  So what are the potential solutions:
> 
> 1. Inside the setState functions for the DirectoryControllers, we also 
> call set_permission.  This would require us to expose set_permissions to 
> SLICC similar to how trigger is exposed to SLICC.  Certainly possilbe, but 
> not ideal.  Especially because it will require directory controllers and 
> cache controllers to have different functionality in their setState functions.
> 2. Instead of allowing an entry's state to be directly assigned in the 
> setState functions, make the state variable private, thus requiring a public 
> funciton to modify state.  When SLICC generates the implementation of that 
> public function, have that function modify both the state and the permissions.
> 3. Remove the m_permission field in all entries and just rely on 
> get_permission to return the current permissions for cache and directory 
> entries.  I'm not sure how to do that unless we create an AbstractState class 
> so that the state can be accessed by the Ruby side.  Do we want to make such 
> a change?
> 
> If we can make it work, I would prefer the second solution.  What do you 
> think?  Do you see other potential solutions?  If you agree that the second 
> solution is best, do you want to take a crack at it or would you like me to?  
> Since it is my patch that is broken, I feel responsible to fix it.  However, 
> I'm fine with you making the fix as well.

I will think about it. IIRC, we had a discussion earlier as well
whether setState() can be generated automatically by SLICC and 
we decided against it.


- Nilay


---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/#review
---


On 2011-04-13 14:29:01, Nilay Vaish wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.m5sim.org/r/611/
> ---
> 
> (Updated 2011-04-13 14:29:01)
> 
> 
> Review request for Default.
> 
> 
> Summary
> ---
> 
> Ruby: Add support for functional accesses
> This patch is meant for implementing functional access support in Ruby.
> Currently, the patch does not functional accesses for the PioPort.
> 
> 
> Diffs
> -
> 
>   configs/example/ruby_mem_test.py 8b5f900233ee 
>   configs/ruby/MESI_CMP_directory.py 8b5f900233ee 
>   configs/ruby/Ruby.py 8b5f900233ee 
>   src/cpu/testers/memtest/memtest.cc 8b5f900233ee 
>   src/mem/packet.hh 8b5f900233ee 
>   src/mem/packet.cc 8b5f900233ee 
>   src/mem/protocol/MESI_CMP_directory-L1cache.sm 8b5f900233ee 
>   src/mem/protocol/MESI_CMP_directory-L2cache

[m5-dev] Testing Ruby Memory Controller

2011-04-16 Thread Nilay Vaish
Is there a tester for testing the functionality of Ruby's memory 
controller?


Thanks
Nilay
___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: Add support for functional accesses

2011-04-15 Thread Nilay Vaish


> On 2011-04-13 10:28:08, Brad Beckmann wrote:
> > src/mem/protocol/MESI_CMP_directory-L1cache.sm, line 141
> > <http://reviews.m5sim.org/r/611/diff/6/?file=11548#file11548line141>
> >
> > Why are you adding this function?  SLICC already generates a similar 
> > function: getPermission().
> > 
> > Overall, I hope/think we can add functional access support without 
> > requiring any more changes to the protocol specific .sm files beyond the 
> > changeset:   8086:bf0335d98250 that I checked in a couple months ago.
> 
> Nilay Vaish wrote:
> How would you use the function that is generated by SLICC inside the
> sm file? I am concerned about the visibility of the function.
> 
> Brad Beckmann wrote:
> You can certainly use a function that is generated by SLICC inside the sm 
> file.  The 'trigger' function is one such example.
> 
> However, I'm not clear why you need to do that?  Specifically, why do you 
> need to explicitly set the permissions in the getCacheEntry function?  I 
> beleive the controller's doTransition function already does that when a 
> transition successfully completes.
> 
> Nilay Vaish wrote:
> I checked the generated code. It seems that permissions are being
> set only for the cache entries and not for the directory entries.
> 
> Brad Beckmann wrote:
> Really?  You should see a call to set_permissions inside the 
> Directory_Transitions.cc file.  For example, when I compile the MOESI_hammer 
> protocol, I see the set_permission call on line 51 in 
> Directory_Transitions.cc.
> 
>

The permissions would be set for the probe filter entry and not for the
directory entry. The directory entry pointer is not passed around like
the cache entry or TBE pointer.


> On 2011-04-13 10:28:08, Brad Beckmann wrote:
> > src/mem/ruby/system/CacheMemory.cc, line 270
> > <http://reviews.m5sim.org/r/611/diff/6/?file=11563#file11563line270>
> >
> > Why are you commenting this line out?  If you think it is no longer 
> > needed, just remove it.  If we remove it, can we guarentee that the 
> > permission is initialized to some value?  For instance, do we know whether 
> > the "entry" constructor will allows initialize the value?
> 
> Nilay Vaish wrote:
> I expect the state to decide what the permission should be.
> 
> Brad Beckmann wrote:
> However, if we don't set the permission to some later time, say at the 
> end of a transition, what happens if we access the permission before then?

Fine, I will uncomment the line.


- Nilay


---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/#review
---


On 2011-04-13 14:29:01, Nilay Vaish wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.m5sim.org/r/611/
> ---
> 
> (Updated 2011-04-13 14:29:01)
> 
> 
> Review request for Default.
> 
> 
> Summary
> ---
> 
> Ruby: Add support for functional accesses
> This patch is meant for implementing functional access support in Ruby.
> Currently, the patch does not functional accesses for the PioPort.
> 
> 
> Diffs
> -
> 
>   configs/example/ruby_mem_test.py 8b5f900233ee 
>   configs/ruby/MESI_CMP_directory.py 8b5f900233ee 
>   configs/ruby/Ruby.py 8b5f900233ee 
>   src/cpu/testers/memtest/memtest.cc 8b5f900233ee 
>   src/mem/packet.hh 8b5f900233ee 
>   src/mem/packet.cc 8b5f900233ee 
>   src/mem/protocol/MESI_CMP_directory-L1cache.sm 8b5f900233ee 
>   src/mem/protocol/MESI_CMP_directory-L2cache.sm 8b5f900233ee 
>   src/mem/protocol/MESI_CMP_directory-dir.sm 8b5f900233ee 
>   src/mem/protocol/RubySlicc_Types.sm 8b5f900233ee 
>   src/mem/ruby/network/Network.cc 8b5f900233ee 
>   src/mem/ruby/network/Network.py 8b5f900233ee 
>   src/mem/ruby/profiler/Profiler.cc 8b5f900233ee 
>   src/mem/ruby/profiler/Profiler.py 8b5f900233ee 
>   src/mem/ruby/recorder/Tracer.cc 8b5f900233ee 
>   src/mem/ruby/recorder/Tracer.py 8b5f900233ee 
>   src/mem/ruby/system/AbstractMemory.hh PRE-CREATION 
>   src/mem/ruby/system/AbstractMemory.cc PRE-CREATION 
>   src/mem/ruby/system/AbstractMemory.py PRE-CREATION 
>   src/mem/ruby/system/Cache.py 8b5f900233ee 
>   src/mem/ruby/system/CacheMemory.hh 8b5f900233ee 
>   src/mem/ruby/system/CacheMemory.cc 8b5f900233ee 
>   src/mem/ruby/system/DirectoryMemory.hh 8b5f900233ee 
>   src/mem/ruby/system/DirectoryMemory.cc 8b5f900233ee 
>   src/mem/ruby/

Re: [m5-dev] Review Request: Ruby: Add support for functional accesses

2011-04-14 Thread Nilay Vaish


> On 2011-04-13 10:28:08, Brad Beckmann wrote:
> > src/mem/protocol/MESI_CMP_directory-L1cache.sm, line 141
> > <http://reviews.m5sim.org/r/611/diff/6/?file=11548#file11548line141>
> >
> > Why are you adding this function?  SLICC already generates a similar 
> > function: getPermission().
> > 
> > Overall, I hope/think we can add functional access support without 
> > requiring any more changes to the protocol specific .sm files beyond the 
> > changeset:   8086:bf0335d98250 that I checked in a couple months ago.
> 
> Nilay Vaish wrote:
> How would you use the function that is generated by SLICC inside the
> sm file? I am concerned about the visibility of the function.
> 
> Brad Beckmann wrote:
> You can certainly use a function that is generated by SLICC inside the sm 
> file.  The 'trigger' function is one such example.
> 
> However, I'm not clear why you need to do that?  Specifically, why do you 
> need to explicitly set the permissions in the getCacheEntry function?  I 
> beleive the controller's doTransition function already does that when a 
> transition successfully completes.

I checked the generated code. It seems that permissions are being
set only for the cache entries and not for the directory entries.


- Nilay


---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/#review
---


On 2011-04-13 14:29:01, Nilay Vaish wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.m5sim.org/r/611/
> ---
> 
> (Updated 2011-04-13 14:29:01)
> 
> 
> Review request for Default.
> 
> 
> Summary
> ---
> 
> Ruby: Add support for functional accesses
> This patch is meant for implementing functional access support in Ruby.
> Currently, the patch does not functional accesses for the PioPort.
> 
> 
> Diffs
> -
> 
>   configs/example/ruby_mem_test.py 8b5f900233ee 
>   configs/ruby/MESI_CMP_directory.py 8b5f900233ee 
>   configs/ruby/Ruby.py 8b5f900233ee 
>   src/cpu/testers/memtest/memtest.cc 8b5f900233ee 
>   src/mem/packet.hh 8b5f900233ee 
>   src/mem/packet.cc 8b5f900233ee 
>   src/mem/protocol/MESI_CMP_directory-L1cache.sm 8b5f900233ee 
>   src/mem/protocol/MESI_CMP_directory-L2cache.sm 8b5f900233ee 
>   src/mem/protocol/MESI_CMP_directory-dir.sm 8b5f900233ee 
>   src/mem/protocol/RubySlicc_Types.sm 8b5f900233ee 
>   src/mem/ruby/network/Network.cc 8b5f900233ee 
>   src/mem/ruby/network/Network.py 8b5f900233ee 
>   src/mem/ruby/profiler/Profiler.cc 8b5f900233ee 
>   src/mem/ruby/profiler/Profiler.py 8b5f900233ee 
>   src/mem/ruby/recorder/Tracer.cc 8b5f900233ee 
>   src/mem/ruby/recorder/Tracer.py 8b5f900233ee 
>   src/mem/ruby/system/AbstractMemory.hh PRE-CREATION 
>   src/mem/ruby/system/AbstractMemory.cc PRE-CREATION 
>   src/mem/ruby/system/AbstractMemory.py PRE-CREATION 
>   src/mem/ruby/system/Cache.py 8b5f900233ee 
>   src/mem/ruby/system/CacheMemory.hh 8b5f900233ee 
>   src/mem/ruby/system/CacheMemory.cc 8b5f900233ee 
>   src/mem/ruby/system/DirectoryMemory.hh 8b5f900233ee 
>   src/mem/ruby/system/DirectoryMemory.cc 8b5f900233ee 
>   src/mem/ruby/system/DirectoryMemory.py 8b5f900233ee 
>   src/mem/ruby/system/RubyPort.hh 8b5f900233ee 
>   src/mem/ruby/system/RubyPort.cc 8b5f900233ee 
>   src/mem/ruby/system/RubySystem.py 8b5f900233ee 
>   src/mem/ruby/system/SConscript 8b5f900233ee 
>   src/mem/ruby/system/Sequencer.cc 8b5f900233ee 
>   src/mem/ruby/system/Sequencer.py 8b5f900233ee 
>   src/mem/ruby/system/System.hh 8b5f900233ee 
>   src/mem/ruby/system/System.cc 8b5f900233ee 
>   src/mem/slicc/ast/MemberExprAST.py 8b5f900233ee 
> 
> Diff: http://reviews.m5sim.org/r/611/diff
> 
> 
> Testing
> ---
> 
> I have tested functional accesses with the ratio between functional
> and timing accesses for different ratios -- 100:0, 99:1, 90:1, 50:50,
> 10:90, 1:99. It is working in all the cases.
> 
> 
> Thanks,
> 
> Nilay
> 
>

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


[m5-dev] Ruby patch touching classic memory system

2011-04-14 Thread Nilay Vaish

Ali, Nate, Steve

Can you go through this patch? I have made some changes to 
src/mem/packet.hh and src/mem/packet.cc files.


http://reviews.m5sim.org/r/611/


Thanks
Nilay


On Thu, 14 Apr 2011, Nilay Vaish wrote:





On 2011-04-13 13:43:26, Gabe Black wrote:
Please fix these style issues, including the ones in this file I 
haven't explicitly pointed out. You should be using M5 style 
generally, but especially when your in M5 code. Also, please be sure 
to point this out to one of the classic memory system experts (Nate, 
Steve, or Ali) and get them to sign off. They might not see that this 
change touches outside of Ruby.


Gabe, I made the changes that you had pointed.


- Nilay



___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: Add support for functional accesses

2011-04-14 Thread Nilay Vaish


> On 2011-04-13 13:43:26, Gabe Black wrote:
> > Please fix these style issues, including the ones in this file I haven't 
> > explicitly pointed out. You should be using M5 style generally, but 
> > especially when your in M5 code. Also, please be sure to point this out to 
> > one of the classic memory system experts (Nate, Steve, or Ali) and get them 
> > to sign off. They might not see that this change touches outside of Ruby.

Gabe, I made the changes that you had pointed.


- Nilay


---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/#review1113
---


On 2011-04-13 14:29:01, Nilay Vaish wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.m5sim.org/r/611/
> ---
> 
> (Updated 2011-04-13 14:29:01)
> 
> 
> Review request for Default.
> 
> 
> Summary
> ---
> 
> Ruby: Add support for functional accesses
> This patch is meant for implementing functional access support in Ruby.
> Currently, the patch does not functional accesses for the PioPort.
> 
> 
> Diffs
> -
> 
>   configs/example/ruby_mem_test.py 8b5f900233ee 
>   configs/ruby/MESI_CMP_directory.py 8b5f900233ee 
>   configs/ruby/Ruby.py 8b5f900233ee 
>   src/cpu/testers/memtest/memtest.cc 8b5f900233ee 
>   src/mem/packet.hh 8b5f900233ee 
>   src/mem/packet.cc 8b5f900233ee 
>   src/mem/protocol/MESI_CMP_directory-L1cache.sm 8b5f900233ee 
>   src/mem/protocol/MESI_CMP_directory-L2cache.sm 8b5f900233ee 
>   src/mem/protocol/MESI_CMP_directory-dir.sm 8b5f900233ee 
>   src/mem/protocol/RubySlicc_Types.sm 8b5f900233ee 
>   src/mem/ruby/network/Network.cc 8b5f900233ee 
>   src/mem/ruby/network/Network.py 8b5f900233ee 
>   src/mem/ruby/profiler/Profiler.cc 8b5f900233ee 
>   src/mem/ruby/profiler/Profiler.py 8b5f900233ee 
>   src/mem/ruby/recorder/Tracer.cc 8b5f900233ee 
>   src/mem/ruby/recorder/Tracer.py 8b5f900233ee 
>   src/mem/ruby/system/AbstractMemory.hh PRE-CREATION 
>   src/mem/ruby/system/AbstractMemory.cc PRE-CREATION 
>   src/mem/ruby/system/AbstractMemory.py PRE-CREATION 
>   src/mem/ruby/system/Cache.py 8b5f900233ee 
>   src/mem/ruby/system/CacheMemory.hh 8b5f900233ee 
>   src/mem/ruby/system/CacheMemory.cc 8b5f900233ee 
>   src/mem/ruby/system/DirectoryMemory.hh 8b5f900233ee 
>   src/mem/ruby/system/DirectoryMemory.cc 8b5f900233ee 
>   src/mem/ruby/system/DirectoryMemory.py 8b5f900233ee 
>   src/mem/ruby/system/RubyPort.hh 8b5f900233ee 
>   src/mem/ruby/system/RubyPort.cc 8b5f900233ee 
>   src/mem/ruby/system/RubySystem.py 8b5f900233ee 
>   src/mem/ruby/system/SConscript 8b5f900233ee 
>   src/mem/ruby/system/Sequencer.cc 8b5f900233ee 
>   src/mem/ruby/system/Sequencer.py 8b5f900233ee 
>   src/mem/ruby/system/System.hh 8b5f900233ee 
>   src/mem/ruby/system/System.cc 8b5f900233ee 
>   src/mem/slicc/ast/MemberExprAST.py 8b5f900233ee 
> 
> Diff: http://reviews.m5sim.org/r/611/diff
> 
> 
> Testing
> ---
> 
> I have tested functional accesses with the ratio between functional
> and timing accesses for different ratios -- 100:0, 99:1, 90:1, 50:50,
> 10:90, 1:99. It is working in all the cases.
> 
> 
> Thanks,
> 
> Nilay
> 
>

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: Add support for functional accesses

2011-04-14 Thread Nilay Vaish
Brad, can you elaborate on implementing functional accesses for the 
PioPort?


--
Nilay

On Wed, 13 Apr 2011, Beckmann, Brad wrote:


I just reviewed it.  Please let me know if you have any questions.

Brad



-Original Message-
From: m5-dev-boun...@m5sim.org [mailto:m5-dev-boun...@m5sim.org]
On Behalf Of Nilay Vaish
Sent: Tuesday, April 12, 2011 4:39 PM
To: Default
Subject: Re: [m5-dev] Review Request: Ruby: Add support for functional
accesses

Brad, can you take a look at the patch? I think we are now in position to
implement functional accesses for the PioPort.

--
Nilay


___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: Add support for functional accesses

2011-04-13 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/
---

(Updated 2011-04-13 14:29:01.423144)


Review request for Default.


Summary
---

Ruby: Add support for functional accesses
This patch is meant for implementing functional access support in Ruby.
Currently, the patch does not functional accesses for the PioPort.


Diffs (updated)
-

  configs/example/ruby_mem_test.py 8b5f900233ee 
  configs/ruby/MESI_CMP_directory.py 8b5f900233ee 
  configs/ruby/Ruby.py 8b5f900233ee 
  src/cpu/testers/memtest/memtest.cc 8b5f900233ee 
  src/mem/packet.hh 8b5f900233ee 
  src/mem/packet.cc 8b5f900233ee 
  src/mem/protocol/MESI_CMP_directory-L1cache.sm 8b5f900233ee 
  src/mem/protocol/MESI_CMP_directory-L2cache.sm 8b5f900233ee 
  src/mem/protocol/MESI_CMP_directory-dir.sm 8b5f900233ee 
  src/mem/protocol/RubySlicc_Types.sm 8b5f900233ee 
  src/mem/ruby/network/Network.cc 8b5f900233ee 
  src/mem/ruby/network/Network.py 8b5f900233ee 
  src/mem/ruby/profiler/Profiler.cc 8b5f900233ee 
  src/mem/ruby/profiler/Profiler.py 8b5f900233ee 
  src/mem/ruby/recorder/Tracer.cc 8b5f900233ee 
  src/mem/ruby/recorder/Tracer.py 8b5f900233ee 
  src/mem/ruby/system/AbstractMemory.hh PRE-CREATION 
  src/mem/ruby/system/AbstractMemory.cc PRE-CREATION 
  src/mem/ruby/system/AbstractMemory.py PRE-CREATION 
  src/mem/ruby/system/Cache.py 8b5f900233ee 
  src/mem/ruby/system/CacheMemory.hh 8b5f900233ee 
  src/mem/ruby/system/CacheMemory.cc 8b5f900233ee 
  src/mem/ruby/system/DirectoryMemory.hh 8b5f900233ee 
  src/mem/ruby/system/DirectoryMemory.cc 8b5f900233ee 
  src/mem/ruby/system/DirectoryMemory.py 8b5f900233ee 
  src/mem/ruby/system/RubyPort.hh 8b5f900233ee 
  src/mem/ruby/system/RubyPort.cc 8b5f900233ee 
  src/mem/ruby/system/RubySystem.py 8b5f900233ee 
  src/mem/ruby/system/SConscript 8b5f900233ee 
  src/mem/ruby/system/Sequencer.cc 8b5f900233ee 
  src/mem/ruby/system/Sequencer.py 8b5f900233ee 
  src/mem/ruby/system/System.hh 8b5f900233ee 
  src/mem/ruby/system/System.cc 8b5f900233ee 
  src/mem/slicc/ast/MemberExprAST.py 8b5f900233ee 

Diff: http://reviews.m5sim.org/r/611/diff


Testing
---

I have tested functional accesses with the ratio between functional
and timing accesses for different ratios -- 100:0, 99:1, 90:1, 50:50,
10:90, 1:99. It is working in all the cases.


Thanks,

Nilay

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: Add support for functional accesses

2011-04-13 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/
---

(Updated 2011-04-13 11:17:53.272247)


Review request for Default.


Summary (updated)
---

Ruby: Add support for functional accesses
This patch is meant for implementing functional access support in Ruby.
Currently, the patch does not functional accesses for the PioPort.


Diffs (updated)
-

  configs/example/ruby_mem_test.py 8b5f900233ee 
  configs/ruby/MESI_CMP_directory.py 8b5f900233ee 
  configs/ruby/Ruby.py 8b5f900233ee 
  src/cpu/testers/memtest/memtest.cc 8b5f900233ee 
  src/mem/packet.hh 8b5f900233ee 
  src/mem/packet.cc 8b5f900233ee 
  src/mem/protocol/MESI_CMP_directory-L1cache.sm 8b5f900233ee 
  src/mem/protocol/MESI_CMP_directory-L2cache.sm 8b5f900233ee 
  src/mem/protocol/MESI_CMP_directory-dir.sm 8b5f900233ee 
  src/mem/protocol/RubySlicc_Types.sm 8b5f900233ee 
  src/mem/ruby/network/Network.cc 8b5f900233ee 
  src/mem/ruby/network/Network.py 8b5f900233ee 
  src/mem/ruby/profiler/Profiler.cc 8b5f900233ee 
  src/mem/ruby/profiler/Profiler.py 8b5f900233ee 
  src/mem/ruby/recorder/Tracer.cc 8b5f900233ee 
  src/mem/ruby/recorder/Tracer.py 8b5f900233ee 
  src/mem/ruby/system/AbstractMemory.hh PRE-CREATION 
  src/mem/ruby/system/AbstractMemory.cc PRE-CREATION 
  src/mem/ruby/system/AbstractMemory.py PRE-CREATION 
  src/mem/ruby/system/Cache.py 8b5f900233ee 
  src/mem/ruby/system/CacheMemory.hh 8b5f900233ee 
  src/mem/ruby/system/CacheMemory.cc 8b5f900233ee 
  src/mem/ruby/system/DirectoryMemory.hh 8b5f900233ee 
  src/mem/ruby/system/DirectoryMemory.cc 8b5f900233ee 
  src/mem/ruby/system/DirectoryMemory.py 8b5f900233ee 
  src/mem/ruby/system/RubyPort.hh 8b5f900233ee 
  src/mem/ruby/system/RubyPort.cc 8b5f900233ee 
  src/mem/ruby/system/RubySystem.py 8b5f900233ee 
  src/mem/ruby/system/SConscript 8b5f900233ee 
  src/mem/ruby/system/Sequencer.cc 8b5f900233ee 
  src/mem/ruby/system/Sequencer.py 8b5f900233ee 
  src/mem/ruby/system/System.hh 8b5f900233ee 
  src/mem/ruby/system/System.cc 8b5f900233ee 
  src/mem/slicc/ast/MemberExprAST.py 8b5f900233ee 

Diff: http://reviews.m5sim.org/r/611/diff


Testing
---

I have tested functional accesses with the ratio between functional
and timing accesses for different ratios -- 100:0, 99:1, 90:1, 50:50,
10:90, 1:99. It is working in all the cases.


Thanks,

Nilay

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: Add support for functional accesses

2011-04-13 Thread Nilay Vaish


> On 2011-04-13 10:28:08, Brad Beckmann wrote:
> > configs/example/ruby_mem_test.py, line 97
> > <http://reviews.m5sim.org/r/611/diff/6/?file=11542#file11542line97>
> >
> > It seems that the following three parameters should not be hardcoded, 
> > but instead should be set using command line options.  Hardcoding the 
> > atomic parameter to false still makes sense, since Ruby can handle atomic 
> > requests.  Also we should update the comment above.

I did not add that line. I am not even aware what the purpose of that
line is. I'll dig into what the implication of setting issue_dmas to 
false is.

I will update the comment.


> On 2011-04-13 10:28:08, Brad Beckmann wrote:
> > src/cpu/testers/memtest/memtest.cc, line 401
> > <http://reviews.m5sim.org/r/611/diff/6/?file=11545#file11545line401>
> >
> > Remove commented out line

Done!


> On 2011-04-13 10:28:08, Brad Beckmann wrote:
> > src/mem/protocol/MESI_CMP_directory-L1cache.sm, line 141
> > <http://reviews.m5sim.org/r/611/diff/6/?file=11548#file11548line141>
> >
> > Why are you adding this function?  SLICC already generates a similar 
> > function: getPermission().
> > 
> > Overall, I hope/think we can add functional access support without 
> > requiring any more changes to the protocol specific .sm files beyond the 
> > changeset:   8086:bf0335d98250 that I checked in a couple months ago.

How would you use the function that is generated by SLICC inside the
sm file? I am concerned about the visibility of the function.


> On 2011-04-13 10:28:08, Brad Beckmann wrote:
> > src/mem/ruby/system/CacheMemory.cc, line 270
> > <http://reviews.m5sim.org/r/611/diff/6/?file=11563#file11563line270>
> >
> > Why are you commenting this line out?  If you think it is no longer 
> > needed, just remove it.  If we remove it, can we guarentee that the 
> > permission is initialized to some value?  For instance, do we know whether 
> > the "entry" constructor will allows initialize the value?

I expect the state to decide what the permission should be.


> On 2011-04-13 10:28:08, Brad Beckmann wrote:
> > src/mem/ruby/system/System.hh, line 132
> > <http://reviews.m5sim.org/r/611/diff/6/?file=11573#file11573line132>
> >
> > Why are these functions static?  I'm concerned that declaring these 
> > static will unecessarily restrict using Ruby in multiple system simulation. 
> >  Also from my understanding of the code, there is no need to make them 
> > static.  Perhaps I'm missing something.

My bad! I think I did that under the impression that static variables can
only be referenced in static functions.


> On 2011-04-13 10:28:08, Brad Beckmann wrote:
> > src/mem/ruby/system/RubyPort.cc, line 302
> > <http://reviews.m5sim.org/r/611/diff/6/?file=11568#file11568line302>
> >
> > Overall, I really like the comments you added in this file.  They 
> > really help clarify what is going on here.  Just one
> > minor correction: change "Any copy" to "Any valid copy"

Done!


> On 2011-04-13 10:28:08, Brad Beckmann wrote:
> > src/mem/ruby/system/DirectoryMemory.cc, line 246
> > <http://reviews.m5sim.org/r/611/diff/6/?file=11565#file11565line246>
> >
> > Please align this statement.

I am removing this line.


- Nilay


---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/#review
---


On 2011-04-12 16:35:34, Nilay Vaish wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.m5sim.org/r/611/
> ---
> 
> (Updated 2011-04-12 16:35:34)
> 
> 
> Review request for Default.
> 
> 
> Summary
> ---
> 
> Ruby: Add support for functional accesses
> This patch is meant for aiding discussions on implementation of functional
> access support in Ruby.
> 
> 
> Diffs
> -
> 
>   configs/example/ruby_mem_test.py cb1e137ac35e 
>   configs/ruby/MESI_CMP_directory.py cb1e137ac35e 
>   configs/ruby/Ruby.py cb1e137ac35e 
>   src/cpu/testers/memtest/memtest.cc cb1e137ac35e 
>   src/mem/packet.hh cb1e137ac35e 
>   src/mem/packet.cc cb1e137ac35e 
>   src/mem/protocol/MESI_CMP_directory-L1cache.sm cb1e137ac35e 
>   src/mem/protocol/MESI_CMP_directory-L2cache.sm cb1e137ac35e 
>   src/mem/protocol/MESI_CMP_directory-dir.sm cb1e137ac35e 
>   src/mem/protocol/RubySlicc_Types.sm cb1e137ac35e 
>   s

Re: [m5-dev] Review Request: Ruby: Add support for functional accesses

2011-04-12 Thread Nilay Vaish
Brad, can you take a look at the patch? I think we are now in position to 
implement functional accesses for the PioPort.


--
Nilay



On Tue, 12 Apr 2011, Nilay Vaish wrote:



---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/
---

(Updated 2011-04-12 16:35:34.866577)


Review request for Default.


Summary (updated)
---

Ruby: Add support for functional accesses
This patch is meant for aiding discussions on implementation of functional
access support in Ruby.



___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: Add support for functional accesses

2011-04-12 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/
---

(Updated 2011-04-12 16:35:34.866577)


Review request for Default.


Summary (updated)
---

Ruby: Add support for functional accesses
This patch is meant for aiding discussions on implementation of functional
access support in Ruby.


Diffs
-

  configs/example/ruby_mem_test.py cb1e137ac35e 
  configs/ruby/MESI_CMP_directory.py cb1e137ac35e 
  configs/ruby/Ruby.py cb1e137ac35e 
  src/cpu/testers/memtest/memtest.cc cb1e137ac35e 
  src/mem/packet.hh cb1e137ac35e 
  src/mem/packet.cc cb1e137ac35e 
  src/mem/protocol/MESI_CMP_directory-L1cache.sm cb1e137ac35e 
  src/mem/protocol/MESI_CMP_directory-L2cache.sm cb1e137ac35e 
  src/mem/protocol/MESI_CMP_directory-dir.sm cb1e137ac35e 
  src/mem/protocol/RubySlicc_Types.sm cb1e137ac35e 
  src/mem/ruby/network/Network.cc cb1e137ac35e 
  src/mem/ruby/network/Network.py cb1e137ac35e 
  src/mem/ruby/profiler/Profiler.cc cb1e137ac35e 
  src/mem/ruby/profiler/Profiler.py cb1e137ac35e 
  src/mem/ruby/recorder/Tracer.cc cb1e137ac35e 
  src/mem/ruby/recorder/Tracer.py cb1e137ac35e 
  src/mem/ruby/system/AbstractMemory.hh PRE-CREATION 
  src/mem/ruby/system/AbstractMemory.cc PRE-CREATION 
  src/mem/ruby/system/AbstractMemory.py PRE-CREATION 
  src/mem/ruby/system/Cache.py cb1e137ac35e 
  src/mem/ruby/system/CacheMemory.hh cb1e137ac35e 
  src/mem/ruby/system/CacheMemory.cc cb1e137ac35e 
  src/mem/ruby/system/DirectoryMemory.hh cb1e137ac35e 
  src/mem/ruby/system/DirectoryMemory.cc cb1e137ac35e 
  src/mem/ruby/system/DirectoryMemory.py cb1e137ac35e 
  src/mem/ruby/system/RubyPort.hh cb1e137ac35e 
  src/mem/ruby/system/RubyPort.cc cb1e137ac35e 
  src/mem/ruby/system/RubySystem.py cb1e137ac35e 
  src/mem/ruby/system/SConscript cb1e137ac35e 
  src/mem/ruby/system/Sequencer.cc cb1e137ac35e 
  src/mem/ruby/system/Sequencer.py cb1e137ac35e 
  src/mem/ruby/system/System.hh cb1e137ac35e 
  src/mem/ruby/system/System.cc cb1e137ac35e 
  src/mem/slicc/ast/MemberExprAST.py cb1e137ac35e 

Diff: http://reviews.m5sim.org/r/611/diff


Testing (updated)
---

I have tested functional accesses with the ratio between functional
and timing accesses for different ratios -- 100:0, 99:1, 90:1, 50:50,
10:90, 1:99. It is working in all the cases.


Thanks,

Nilay

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: * * *

2011-04-12 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/
---

(Updated 2011-04-12 16:32:36.416633)


Review request for Default.


Summary (updated)
---

* * *
Ruby: Add support for functional accesses
This patch is meant for aiding discussions on implementation of functional
access support in Ruby.


Diffs (updated)
-

  configs/example/ruby_mem_test.py cb1e137ac35e 
  configs/ruby/MESI_CMP_directory.py cb1e137ac35e 
  configs/ruby/Ruby.py cb1e137ac35e 
  src/cpu/testers/memtest/memtest.cc cb1e137ac35e 
  src/mem/packet.hh cb1e137ac35e 
  src/mem/packet.cc cb1e137ac35e 
  src/mem/protocol/MESI_CMP_directory-L1cache.sm cb1e137ac35e 
  src/mem/protocol/MESI_CMP_directory-L2cache.sm cb1e137ac35e 
  src/mem/protocol/MESI_CMP_directory-dir.sm cb1e137ac35e 
  src/mem/protocol/RubySlicc_Types.sm cb1e137ac35e 
  src/mem/ruby/network/Network.cc cb1e137ac35e 
  src/mem/ruby/network/Network.py cb1e137ac35e 
  src/mem/ruby/profiler/Profiler.cc cb1e137ac35e 
  src/mem/ruby/profiler/Profiler.py cb1e137ac35e 
  src/mem/ruby/recorder/Tracer.cc cb1e137ac35e 
  src/mem/ruby/recorder/Tracer.py cb1e137ac35e 
  src/mem/ruby/system/AbstractMemory.hh PRE-CREATION 
  src/mem/ruby/system/AbstractMemory.cc PRE-CREATION 
  src/mem/ruby/system/AbstractMemory.py PRE-CREATION 
  src/mem/ruby/system/Cache.py cb1e137ac35e 
  src/mem/ruby/system/CacheMemory.hh cb1e137ac35e 
  src/mem/ruby/system/CacheMemory.cc cb1e137ac35e 
  src/mem/ruby/system/DirectoryMemory.hh cb1e137ac35e 
  src/mem/ruby/system/DirectoryMemory.cc cb1e137ac35e 
  src/mem/ruby/system/DirectoryMemory.py cb1e137ac35e 
  src/mem/ruby/system/RubyPort.hh cb1e137ac35e 
  src/mem/ruby/system/RubyPort.cc cb1e137ac35e 
  src/mem/ruby/system/RubySystem.py cb1e137ac35e 
  src/mem/ruby/system/SConscript cb1e137ac35e 
  src/mem/ruby/system/Sequencer.cc cb1e137ac35e 
  src/mem/ruby/system/Sequencer.py cb1e137ac35e 
  src/mem/ruby/system/System.hh cb1e137ac35e 
  src/mem/ruby/system/System.cc cb1e137ac35e 
  src/mem/slicc/ast/MemberExprAST.py cb1e137ac35e 

Diff: http://reviews.m5sim.org/r/611/diff


Testing
---


Thanks,

Nilay

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] AccessPermission in AbstractEntry

2011-04-11 Thread Nilay Vaish

On Mon, 11 Apr 2011, Beckmann, Brad wrote:


Hi Nilay,

Yes, that is a good point.  We really just need the interface to the 
permission to be available from AbstractEntry.  The variable itself 
doesn't really need to be there.  However, to make that change, you'll 
need to modify how CacheMemory supports atomics.


I will try to make this change later today.



Could you elaborate on your directory controller question.  I suspect 
that you are right and that only one type of directory controller can 
exist in a system, but why is that a problem?


Brad


Is it not possible that we have a protocol in which different directory 
controllers may behave differently?


--
Nilay






-Original Message-
From: m5-dev-boun...@m5sim.org [mailto:m5-dev-boun...@m5sim.org]
On Behalf Of Nilay Vaish
Sent: Sunday, April 10, 2011 2:12 AM
To: m5-dev@m5sim.org
Subject: [m5-dev] AccessPermission in AbstractEntry

Brad, it seems like the m_Permission variable in AbstractEntry is not being
used at all. In order to get AccessPermission for a state, the
state_To_AccessPermission function needs to be called. Then, why have that
variable? And this would mean that CacheMemory has no idea about the
access permission, unless we expose the state to Cache Memory class.

Also, as it now stands, it seems one cannot have two different types of
directory controllers in a system. Is this correct? If yes, then why this
restriction?

--
Nilay


___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


[m5-dev] AccessPermission in AbstractEntry

2011-04-10 Thread Nilay Vaish
Brad, it seems like the m_Permission variable in AbstractEntry is not 
being used at all. In order to get AccessPermission for a state, the 
state_To_AccessPermission function needs to be called. Then, why have that 
variable? And this would mean that CacheMemory has no idea about the 
access permission, unless we expose the state to Cache Memory class.


Also, as it now stands, it seems one cannot have two different types of 
directory controllers in a system. Is this correct? If yes, then why this 
restriction?


--
Nilay
___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Testing Functional Access

2011-04-09 Thread Nilay Vaish

Brad, I figured out the error, so no need to respond to my previous mail.

--
Nilay

On Sat, 9 Apr 2011, Nilay Vaish wrote:

Brad, functional accesses work for the case when the only functional accesses 
are allowed in the system. Currently I am working when the ratio is 1:1 for 
functional and timing accesses.


I am facing some problem with the timing access right now, which should work 
perfectly fine. Actually the value returned for a read packet is coming out 
to be incorrect. I tracked the request, the response was correct, but it 
seems that the packet was not updated properly. I noticed that around line 
530 in Sequencer.cc, the following code has been added. Do you think we need 
such code for memtester as well? Should we not be updating the subBlock when 
memtester is used?


   // If using the RubyTester, update the RubyTester sender state's
   // subBlock with the recieved data.  The tester will later access
   // this state.
   // Note: RubyPort will access it's sender state before the
   // RubyTester.
   if (m_usingRubyTester) {
   RubyPort::SenderState *requestSenderState =

safe_cast(ruby_request.pkt->senderState);
   RubyTester::SenderState* testerSenderState =
   (RubyTester::SenderState*)(requestSenderState->saved);
   testerSenderState->subBlock->mergeFrom(data);
   }

Thanks
Nilay



On Tue, 1 Mar 2011, Beckmann, Brad wrote:

I forgot that the memtester includes functional accesses.  That is a good 
suggestion, especially when it comes to testing the situations where Ruby 
can't satisfy the functional access due to contention with timing accesses.


The memtester does run with Ruby (it actually runs every night in the 
regression tester), however the percentage of functional accesses is 
currently set to zero.  See configs/example/ruby_mem_test.py.  You'll 
obviously want to change that and include code within 
src/cpu/testers/memtest/* to handle failed functional accesses.  If you 
don't want to initially deal with the failure situations, you can set the 
functional access percentage to 100% and that should always work.


Brad





___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Testing Functional Access

2011-04-09 Thread Nilay Vaish
Brad, functional accesses work for the case when the only functional 
accesses are allowed in the system. Currently I am working when the ratio 
is 1:1 for functional and timing accesses.


I am facing some problem with the timing access right now, which should 
work perfectly fine. Actually the value returned for a read packet is 
coming out to be incorrect. I tracked the request, the response was 
correct, but it seems that the packet was not updated properly. I 
noticed that around line 530 in Sequencer.cc, the following code has been 
added. Do you think we need such code for memtester as well? Should we not 
be updating the subBlock when memtester is used?


// If using the RubyTester, update the RubyTester sender state's
// subBlock with the recieved data.  The tester will later access
// this state.
// Note: RubyPort will access it's sender state before the
// RubyTester.
if (m_usingRubyTester) {
RubyPort::SenderState *requestSenderState =

safe_cast(ruby_request.pkt->senderState);
RubyTester::SenderState* testerSenderState =
(RubyTester::SenderState*)(requestSenderState->saved);
testerSenderState->subBlock->mergeFrom(data);
}

Thanks
Nilay



On Tue, 1 Mar 2011, Beckmann, Brad wrote:

I forgot that the memtester includes functional accesses.  That is a 
good suggestion, especially when it comes to testing the situations 
where Ruby can't satisfy the functional access due to contention with 
timing accesses.


The memtester does run with Ruby (it actually runs every night in the 
regression tester), however the percentage of functional accesses is 
currently set to zero.  See configs/example/ruby_mem_test.py.  You'll 
obviously want to change that and include code within 
src/cpu/testers/memtest/* to handle failed functional accesses.  If you 
don't want to initially deal with the failure situations, you can set 
the functional access percentage to 100% and that should always work.


Brad



___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: ruby: dbg: use system ticks instead of cycles

2011-04-07 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/635/#review1102
---



src/mem/ruby/network/simple/PerfectSwitch.cc
<http://reviews.m5sim.org/r/635/#comment1467>

If DPRINTF() prints the time, is this piece of code required?



src/mem/ruby/system/Sequencer.cc
<http://reviews.m5sim.org/r/635/#comment1468>

Again, do we need curTick() here?



src/mem/ruby/system/Sequencer.cc
<http://reviews.m5sim.org/r/635/#comment1469>

Same comment as before.


- Nilay


On 2011-04-05 11:19:26, Korey Sewell wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.m5sim.org/r/635/
> ---
> 
> (Updated 2011-04-05 11:19:26)
> 
> 
> Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and 
> Nathan Binkert.
> 
> 
> Summary
> ---
> 
> ruby: dbg: use system ticks instead of cycles
> It's easier to debug simulations (find the exact point to rerun a trace) when 
> the output is in
> the system ticks instead of the Ruby cycle time
> 
> 
> Diffs
> -
> 
>   src/mem/ruby/buffers/MessageBuffer.cc 54a65799e4c1 
>   src/mem/ruby/network/simple/PerfectSwitch.cc 54a65799e4c1 
>   src/mem/ruby/system/Sequencer.cc 54a65799e4c1 
>   src/mem/slicc/symbols/StateMachine.py 54a65799e4c1 
>   src/mem/slicc/symbols/Type.py 54a65799e4c1 
> 
> Diff: http://reviews.m5sim.org/r/635/diff
> 
> 
> Testing
> ---
> 
> 
> Thanks,
> 
> Korey
> 
>

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Running Ruby w/32 Cores

2011-04-07 Thread Nilay Vaish

On Thu, 7 Apr 2011, Gabriel Michael Black wrote:


Quoting Nilay Vaish :


On Thu, 7 Apr 2011, Gabriel Michael Black wrote:

When you say this is portable, what do you mean? Portable between 
compilers? We usually use gcc, but we have at least partial support for 
other compilers. I think this is necessary on some platforms.


Gabe



I would still root for using popcount() builtin available with GCC.


--
Nilay


Between different versions of gcc. Do we actually test whether the code 
compiles using other compilers?


--
Nilay
___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev



I don't know if we actively test it, but it worked at one time. Ali did some 
work on that, I think to get it to build with sun's compiler back when he was 
doing the SPARC full system support. It would be a good idea not to bake in 
any dependence on gcc.


Gabe



I agree with you. If we can avoid dependence on a compiler, we certainly 
should.


--
Nilay
___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Running Ruby w/32 Cores

2011-04-07 Thread Nilay Vaish
The problem is that LONG_BITS is 31, ie std::numeric_limits::digits 
returns 31 and not 32 which is what the writer expected.


--
Nilay


From: koreylsew...@gmail.com [mailto:koreylsew...@gmail.com] On Behalf Of 
Korey Sewell

Sent: Tuesday, April 05, 2011 7:14 AM
To: Beckmann, Brad
Subject: Re: [m5-dev] Running Ruby w/32 Cores

Hi again Brad, I looked this over again and although my 32-bit patch 
"fixes" things, now that I look at it again, I'm not convinced that I 
actually fixed the symptom of the bug but rather the cause of the bug.


Do you happen to know what are the problems with the 32-bit Set counts?

Sorry for prolonging the issue, but I thought I had put this to bed but 
maybe not. Finally, it may not matter that this works on 32-bit machines 
but it'd be nice if it did. (Let me know if I should move this convo to 
the m5-dev list)


I end up checking the last bit in the count function manually (the code 
as follows): int Set::count() const {

   int counter = 0;
   long mask;

   for (int i = 0; i < m_nArrayLen; i++) {
   mask = (long)0x01;

   for (int j = 0; j < LONG_BITS; j++) {
   // FIXME - significant performance loss when array
   // population << LONG_BITS
   if ((m_p_nArray[i] & mask) != 0) {
   counter++;
   }
   mask = mask << 1;
   }

#ifndef _LP64
   long msb_mask = 0x8000;
   if ((m_p_nArray[i] & msb_mask) != 0) {
   counter++;
   }
#endif
   }

   return counter;
}

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Running Ruby w/32 Cores

2011-04-07 Thread Nilay Vaish

On Thu, 7 Apr 2011, Gabriel Michael Black wrote:

When you say this is portable, what do you mean? Portable between compilers? 
We usually use gcc, but we have at least partial support for other compilers. 
I think this is necessary on some platforms.


Gabe



I would still root for using popcount() builtin available with GCC.


--
Nilay


Between different versions of gcc. Do we actually test whether the code 
compiles using other compilers?


--
Nilay
___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Running Ruby w/32 Cores

2011-04-06 Thread Nilay Vaish

On Wed, 6 Apr 2011, Korey Sewell wrote:


A few comments:
(1) Using uint64_t seems like a quick, interim solution. But I still
haven't grasped why we have the "31st" bit problem, but we don't have
the "63rd" bit problem as well?


I think if you use unsigned long, in place of long, the code would work on 
32-bit machines. I am uncertain why the current code works on 64-bit 
machine. I think long means 32-bit, irrespective of memory address length.




(2) Adding the stl::bitset seems like a good idea (does the Flags in
M5 use that?) but it wont be a straightforward switch because the Set
class supports arbitrary size sets. If it was implemented it would
take a little bit of effort but not too much.

(3) I didnt say this earlier, but it does look like this code could
use some optimization. From the gprof I ran on 2-8 cores, this
Set::count() function is the 2nd or 3rd highest producer of time for
the Ruby Fft runs (although still a very small overall % in system
time). Looks like simple optimizations like only looping for the set
size in the count() function should be helpful, instead of always
looping for the complete length of "long" datatype:
for (int j = 0; j < LONG_BITS; j++) {
   if ((m_p_nArray[i] & mask) != 0) {
 counter++;
   }
  mask = mask << 1;
}

That as well as generating a mask, shifting and comparing each bit
doesn't seem necessary given we can potentially use a bitset or a
constant-time struct to loop over and check set inclusion.


I would still root for using popcount() builtin available with GCC.


--
Nilay
___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Running Ruby w/32 Cores

2011-04-06 Thread Nilay Vaish
I believe even popcount is portable. I am not opposed to using bitset, 
just that it would probably require lot more changes.


--
Nilay

On Wed, 6 Apr 2011, Ali Saidi wrote:


stl::bitset does these type of optimizations underneath and it's portable.

Ali

On Wed, 6 Apr 2011 15:57:37 -0500 (CDT), Nilay Vaish  
wrote:

I would prefer we make use of GCC builtin __builtin_popcount() for
counting the number of 1's in an int or related data type.

Nilay

On Wed, 6 Apr 2011, Ali Saidi wrote:


And actually, couldn't you use an stl bitset for this?

Thanks,
Ali

On Wed, 06 Apr 2011 15:34:01 -0500, Ali Saidi  wrote:

Jumping in somewhat randomly here, uint64_t even on a 32bit machine
is reasonably fast. It's not going to be as fast, but it will be
correct. My vote would be to just switch all that Set code that uses
long to explicitly use uint64_t and if it's slower on a 32bit machine
so be it. At least it's correct.
Ali


On Wed, 6 Apr 2011 15:24:24 -0500, "Beckmann, Brad"
 wrote:

Hi Korey,
Yes, let's move this conversation back to m5-dev, since I think
others may be interested and could help.
I don't know what the problem is exactly, but at some point of time
(probably back in the early GEMS days) I seem to remember the Set code
included an assertion check about the 31st bit in 32-bit mode.
Therefore, I think we knew about this problem and made sure that never
happened.  I believe that is why we used to have a restriction that
Ruby could only support 16 processors.  I'm really fuzzy on the
details...maybe someone else can elaborate.
In the end, I just want to make sure we add something in the code
that makes sure we don't encounter this problem again.  This is one of
those bugs that can take a while to track down, if you don't catch it
right when it happens with an assertion.
Brad


From: koreylsew...@gmail.com [mailto:koreylsew...@gmail.com] On
Behalf Of Korey Sewell
Sent: Tuesday, April 05, 2011 7:14 AM
To: Beckmann, Brad
Subject: Re: [m5-dev] Running Ruby w/32 Cores
Hi again Brad,
I looked this over again and although my 32-bit patch "fixes" things,
now that I look at it again, I'm not convinced that I actually fixed
the symptom of the bug but rather the cause of the bug.
Do you happen to know what are the problems with the 32-bit Set counts?
Sorry for prolonging the issue, but I thought I had put this to bed
but  maybe not. Finally, it may not matter that this works on 32-bit
machines but it'd be nice if it did. (Let me know if I should move
this convo to the m5-dev list)
I end up checking the last bit in the count function manually (the
code as follows):
int
Set::count() const
{
int counter = 0;
long mask;

for (int i = 0; i < m_nArrayLen; i++) {
mask = (long)0x01;

for (int j = 0; j < LONG_BITS; j++) {
// FIXME - significant performance loss when array
// population << LONG_BITS
if ((m_p_nArray[i] & mask) != 0) {
counter++;
}
mask = mask << 1;
}
#ifndef _LP64
long msb_mask = 0x8000;
if ((m_p_nArray[i] & msb_mask) != 0) {
counter++;
}
#endif
}

return counter;
}

___
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


Re: [m5-dev] Running Ruby w/32 Cores

2011-04-06 Thread Nilay Vaish
I would prefer we make use of GCC builtin __builtin_popcount() for 
counting the number of 1's in an int or related data type.


Nilay

On Wed, 6 Apr 2011, Ali Saidi wrote:


And actually, couldn't you use an stl bitset for this?

Thanks,
Ali

On Wed, 06 Apr 2011 15:34:01 -0500, Ali Saidi  wrote:

Jumping in somewhat randomly here, uint64_t even on a 32bit machine
is reasonably fast. It's not going to be as fast, but it will be
correct. My vote would be to just switch all that Set code that uses
long to explicitly use uint64_t and if it's slower on a 32bit machine
so be it. At least it's correct.

Ali



On Wed, 6 Apr 2011 15:24:24 -0500, "Beckmann, Brad"
 wrote:

Hi Korey,

Yes, let's move this conversation back to m5-dev, since I think
others may be interested and could help.

I don't know what the problem is exactly, but at some point of time
(probably back in the early GEMS days) I seem to remember the Set code
included an assertion check about the 31st bit in 32-bit mode.
Therefore, I think we knew about this problem and made sure that never
happened.  I believe that is why we used to have a restriction that
Ruby could only support 16 processors.  I'm really fuzzy on the
details...maybe someone else can elaborate.

In the end, I just want to make sure we add something in the code
that makes sure we don't encounter this problem again.  This is one of
those bugs that can take a while to track down, if you don't catch it
right when it happens with an assertion.

Brad



From: koreylsew...@gmail.com [mailto:koreylsew...@gmail.com] On
Behalf Of Korey Sewell
Sent: Tuesday, April 05, 2011 7:14 AM
To: Beckmann, Brad
Subject: Re: [m5-dev] Running Ruby w/32 Cores

Hi again Brad,
I looked this over again and although my 32-bit patch "fixes" things,
now that I look at it again, I'm not convinced that I actually fixed
the symptom of the bug but rather the cause of the bug.

Do you happen to know what are the problems with the 32-bit Set counts?

Sorry for prolonging the issue, but I thought I had put this to bed
but  maybe not. Finally, it may not matter that this works on 32-bit
machines but it'd be nice if it did. (Let me know if I should move
this convo to the m5-dev list)

I end up checking the last bit in the count function manually (the
code as follows):
int
Set::count() const
{
int counter = 0;
long mask;

for (int i = 0; i < m_nArrayLen; i++) {
mask = (long)0x01;

for (int j = 0; j < LONG_BITS; j++) {
// FIXME - significant performance loss when array
// population << LONG_BITS
if ((m_p_nArray[i] & mask) != 0) {
counter++;
}
mask = mask << 1;
}

#ifndef _LP64
long msb_mask = 0x8000;
if ((m_p_nArray[i] & msb_mask) != 0) {
counter++;
}
#endif
}

return counter;
}

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: Add support for functional accesses

2011-04-04 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/
---

(Updated 2011-04-04 06:22:20.346203)


Review request for Default.


Summary
---

Ruby: Add support for functional accesses
This patch is meant for aiding discussions on implementation of functional
access support in Ruby.


Diffs (updated)
-

  configs/ruby/MESI_CMP_directory.py aeec9e157d06 
  configs/ruby/Ruby.py aeec9e157d06 
  src/mem/ruby/network/Network.cc aeec9e157d06 
  src/mem/ruby/network/Network.py aeec9e157d06 
  src/mem/ruby/profiler/Profiler.cc aeec9e157d06 
  src/mem/ruby/profiler/Profiler.py aeec9e157d06 
  src/mem/ruby/recorder/Tracer.cc aeec9e157d06 
  src/mem/ruby/recorder/Tracer.py aeec9e157d06 
  src/mem/ruby/system/AbstractMemory.hh PRE-CREATION 
  src/mem/ruby/system/AbstractMemory.cc PRE-CREATION 
  src/mem/ruby/system/AbstractMemory.py PRE-CREATION 
  src/mem/ruby/system/Cache.py aeec9e157d06 
  src/mem/ruby/system/CacheMemory.hh aeec9e157d06 
  src/mem/ruby/system/CacheMemory.cc aeec9e157d06 
  src/mem/ruby/system/DirectoryMemory.hh aeec9e157d06 
  src/mem/ruby/system/DirectoryMemory.cc aeec9e157d06 
  src/mem/ruby/system/DirectoryMemory.py aeec9e157d06 
  src/mem/ruby/system/RubyPort.hh aeec9e157d06 
  src/mem/ruby/system/RubyPort.cc aeec9e157d06 
  src/mem/ruby/system/RubySystem.py aeec9e157d06 
  src/mem/ruby/system/SConscript aeec9e157d06 
  src/mem/ruby/system/Sequencer.cc aeec9e157d06 
  src/mem/ruby/system/Sequencer.py aeec9e157d06 
  src/mem/ruby/system/System.hh aeec9e157d06 
  src/mem/ruby/system/System.cc aeec9e157d06 

Diff: http://reviews.m5sim.org/r/611/diff


Testing
---


Thanks,

Nilay

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: Add support for functional accesses

2011-04-04 Thread Nilay Vaish


> On 2011-04-03 13:45:28, Brad Beckmann wrote:
> > src/mem/ruby/system/DirectoryMemory.py, line 2
> > <http://reviews.m5sim.org/r/611/diff/4/?file=11465#file11465line2>
> >
> > Why are you deleting this file and where are you moving the current 
> > functionality?

My bad! I had forgotten to add AbstractMemory.py file.


- Nilay


---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/#review1090
-------


On 2011-04-02 11:42:47, Nilay Vaish wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.m5sim.org/r/611/
> ---
> 
> (Updated 2011-04-02 11:42:47)
> 
> 
> Review request for Default.
> 
> 
> Summary
> ---
> 
> Ruby: Add support for functional accesses
> This patch is meant for aiding discussions on implementation of functional
> access support in Ruby.
> 
> 
> Diffs
> -
> 
>   configs/ruby/MESI_CMP_directory.py aeec9e157d06 
>   configs/ruby/Ruby.py aeec9e157d06 
>   src/mem/ruby/network/Network.cc aeec9e157d06 
>   src/mem/ruby/network/Network.py aeec9e157d06 
>   src/mem/ruby/profiler/Profiler.cc aeec9e157d06 
>   src/mem/ruby/profiler/Profiler.py aeec9e157d06 
>   src/mem/ruby/recorder/Tracer.cc aeec9e157d06 
>   src/mem/ruby/recorder/Tracer.py aeec9e157d06 
>   src/mem/ruby/system/AbstractMemory.hh PRE-CREATION 
>   src/mem/ruby/system/AbstractMemory.cc PRE-CREATION 
>   src/mem/ruby/system/Cache.py aeec9e157d06 
>   src/mem/ruby/system/CacheMemory.hh aeec9e157d06 
>   src/mem/ruby/system/CacheMemory.cc aeec9e157d06 
>   src/mem/ruby/system/DirectoryMemory.hh aeec9e157d06 
>   src/mem/ruby/system/DirectoryMemory.cc aeec9e157d06 
>   src/mem/ruby/system/DirectoryMemory.py aeec9e157d06 
>   src/mem/ruby/system/RubyPort.hh aeec9e157d06 
>   src/mem/ruby/system/RubyPort.cc aeec9e157d06 
>   src/mem/ruby/system/RubySystem.py aeec9e157d06 
>   src/mem/ruby/system/SConscript aeec9e157d06 
>   src/mem/ruby/system/Sequencer.cc aeec9e157d06 
>   src/mem/ruby/system/Sequencer.py aeec9e157d06 
>   src/mem/ruby/system/System.hh aeec9e157d06 
>   src/mem/ruby/system/System.cc aeec9e157d06 
> 
> Diff: http://reviews.m5sim.org/r/611/diff
> 
> 
> Testing
> ---
> 
> 
> Thanks,
> 
> Nilay
> 
>

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: Add support for functional accesses

2011-04-04 Thread Nilay Vaish


> On 2011-03-31 22:08:21, Brad Beckmann wrote:
> > This looks great, I just have a few minor suggestions below.
> > 
> > It seems like the next step is to figure out how to deal with functional 
> > accesses not succeeding in the CPUs and devices.
> 
> Nilay Vaish wrote:
> Brad, I would make the changes you have listed below. I also need to add
> code for directory memory accesses. Can you elaborate on the next step 
> you 
> mentioned? We are yet not dealing with the devices, I believe.
> 
> Nilay Vaish wrote:
> One more question for you. Do we need functional access support for the 
> PioPort
> as well? We do not have it currently.
> 
> Brad Beckmann wrote:
> Yes, eventually if we want Ruby to supply data in FS mode, RubyPort will 
> need to support functional access from the PioPort to Ruby memory.  It is up 
> to you whether you want to implement that support now, or first make sure 
> functional accesses are working SE mode.  If you want to make sure SE mode 
> functional accesses work, first modify the ruby mem tester to issue 
> functional access (right now that is hardcoded off).  Also you should try a 
> few binaries under SE mode, like "hello world".

Brad, I'll test the current implementation first and then work on functional
accesses from the PioPort.


- Nilay


---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/#review1082
---


On 2011-04-02 11:42:47, Nilay Vaish wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.m5sim.org/r/611/
> ---
> 
> (Updated 2011-04-02 11:42:47)
> 
> 
> Review request for Default.
> 
> 
> Summary
> ---
> 
> Ruby: Add support for functional accesses
> This patch is meant for aiding discussions on implementation of functional
> access support in Ruby.
> 
> 
> Diffs
> -
> 
>   configs/ruby/MESI_CMP_directory.py aeec9e157d06 
>   configs/ruby/Ruby.py aeec9e157d06 
>   src/mem/ruby/network/Network.cc aeec9e157d06 
>   src/mem/ruby/network/Network.py aeec9e157d06 
>   src/mem/ruby/profiler/Profiler.cc aeec9e157d06 
>   src/mem/ruby/profiler/Profiler.py aeec9e157d06 
>   src/mem/ruby/recorder/Tracer.cc aeec9e157d06 
>   src/mem/ruby/recorder/Tracer.py aeec9e157d06 
>   src/mem/ruby/system/AbstractMemory.hh PRE-CREATION 
>   src/mem/ruby/system/AbstractMemory.cc PRE-CREATION 
>   src/mem/ruby/system/Cache.py aeec9e157d06 
>   src/mem/ruby/system/CacheMemory.hh aeec9e157d06 
>   src/mem/ruby/system/CacheMemory.cc aeec9e157d06 
>   src/mem/ruby/system/DirectoryMemory.hh aeec9e157d06 
>   src/mem/ruby/system/DirectoryMemory.cc aeec9e157d06 
>   src/mem/ruby/system/DirectoryMemory.py aeec9e157d06 
>   src/mem/ruby/system/RubyPort.hh aeec9e157d06 
>   src/mem/ruby/system/RubyPort.cc aeec9e157d06 
>   src/mem/ruby/system/RubySystem.py aeec9e157d06 
>   src/mem/ruby/system/SConscript aeec9e157d06 
>   src/mem/ruby/system/Sequencer.cc aeec9e157d06 
>   src/mem/ruby/system/Sequencer.py aeec9e157d06 
>   src/mem/ruby/system/System.hh aeec9e157d06 
>   src/mem/ruby/system/System.cc aeec9e157d06 
> 
> Diff: http://reviews.m5sim.org/r/611/diff
> 
> 
> Testing
> ---
> 
> 
> Thanks,
> 
> Nilay
> 
>

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: Add support for functional accesses

2011-04-03 Thread Nilay Vaish


> On 2011-03-31 22:08:21, Brad Beckmann wrote:
> > This looks great, I just have a few minor suggestions below.
> > 
> > It seems like the next step is to figure out how to deal with functional 
> > accesses not succeeding in the CPUs and devices.
> 
> Nilay Vaish wrote:
> Brad, I would make the changes you have listed below. I also need to add
> code for directory memory accesses. Can you elaborate on the next step 
> you 
> mentioned? We are yet not dealing with the devices, I believe.

One more question for you. Do we need functional access support for the PioPort
as well? We do not have it currently.


- Nilay


---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/#review1082
---


On 2011-04-02 11:42:47, Nilay Vaish wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.m5sim.org/r/611/
> ---
> 
> (Updated 2011-04-02 11:42:47)
> 
> 
> Review request for Default.
> 
> 
> Summary
> ---
> 
> Ruby: Add support for functional accesses
> This patch is meant for aiding discussions on implementation of functional
> access support in Ruby.
> 
> 
> Diffs
> -
> 
>   configs/ruby/MESI_CMP_directory.py aeec9e157d06 
>   configs/ruby/Ruby.py aeec9e157d06 
>   src/mem/ruby/network/Network.cc aeec9e157d06 
>   src/mem/ruby/network/Network.py aeec9e157d06 
>   src/mem/ruby/profiler/Profiler.cc aeec9e157d06 
>   src/mem/ruby/profiler/Profiler.py aeec9e157d06 
>   src/mem/ruby/recorder/Tracer.cc aeec9e157d06 
>   src/mem/ruby/recorder/Tracer.py aeec9e157d06 
>   src/mem/ruby/system/AbstractMemory.hh PRE-CREATION 
>   src/mem/ruby/system/AbstractMemory.cc PRE-CREATION 
>   src/mem/ruby/system/Cache.py aeec9e157d06 
>   src/mem/ruby/system/CacheMemory.hh aeec9e157d06 
>   src/mem/ruby/system/CacheMemory.cc aeec9e157d06 
>   src/mem/ruby/system/DirectoryMemory.hh aeec9e157d06 
>   src/mem/ruby/system/DirectoryMemory.cc aeec9e157d06 
>   src/mem/ruby/system/DirectoryMemory.py aeec9e157d06 
>   src/mem/ruby/system/RubyPort.hh aeec9e157d06 
>   src/mem/ruby/system/RubyPort.cc aeec9e157d06 
>   src/mem/ruby/system/RubySystem.py aeec9e157d06 
>   src/mem/ruby/system/SConscript aeec9e157d06 
>   src/mem/ruby/system/Sequencer.cc aeec9e157d06 
>   src/mem/ruby/system/Sequencer.py aeec9e157d06 
>   src/mem/ruby/system/System.hh aeec9e157d06 
>   src/mem/ruby/system/System.cc aeec9e157d06 
> 
> Diff: http://reviews.m5sim.org/r/611/diff
> 
> 
> Testing
> ---
> 
> 
> Thanks,
> 
> Nilay
> 
>

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Ruby Optimization Opportunity?

2011-04-03 Thread Nilay Vaish

On Fri, 1 Apr 2011, Korey Sewell wrote:


That's a good point.

I'll coordinate with Nilay offline to get him the right image.

Nilay, from your previous optimizations trials, where did you see most of
the simulation time being sent at?

On Fri, Apr 1, 2011 at 4:48 PM, Ali Saidi  wrote:


None of those benchmarks probably push the memory system with multiple
cores like fft. Why don't you give Nilay your fft benchmark?

Ali





Korey, I normally only run Ruby random tester to profile which parts of 
Ruby take most of the time. My observation was that wakeup() function for

the L1 cache controller takes most of the time (about 10%). It would be
good if you can provide me with the benchmark, I will investigate where
the time is being spent and hopefully, we would be able to speed up the
simulation.

Thanks
Nilay


___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: Add support for functional accesses

2011-04-02 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/
---

(Updated 2011-04-02 11:42:47.195024)


Review request for Default.


Summary
---

Ruby: Add support for functional accesses
This patch is meant for aiding discussions on implementation of functional
access support in Ruby.


Diffs (updated)
-

  configs/ruby/MESI_CMP_directory.py aeec9e157d06 
  configs/ruby/Ruby.py aeec9e157d06 
  src/mem/ruby/network/Network.cc aeec9e157d06 
  src/mem/ruby/network/Network.py aeec9e157d06 
  src/mem/ruby/profiler/Profiler.cc aeec9e157d06 
  src/mem/ruby/profiler/Profiler.py aeec9e157d06 
  src/mem/ruby/recorder/Tracer.cc aeec9e157d06 
  src/mem/ruby/recorder/Tracer.py aeec9e157d06 
  src/mem/ruby/system/AbstractMemory.hh PRE-CREATION 
  src/mem/ruby/system/AbstractMemory.cc PRE-CREATION 
  src/mem/ruby/system/Cache.py aeec9e157d06 
  src/mem/ruby/system/CacheMemory.hh aeec9e157d06 
  src/mem/ruby/system/CacheMemory.cc aeec9e157d06 
  src/mem/ruby/system/DirectoryMemory.hh aeec9e157d06 
  src/mem/ruby/system/DirectoryMemory.cc aeec9e157d06 
  src/mem/ruby/system/DirectoryMemory.py aeec9e157d06 
  src/mem/ruby/system/RubyPort.hh aeec9e157d06 
  src/mem/ruby/system/RubyPort.cc aeec9e157d06 
  src/mem/ruby/system/RubySystem.py aeec9e157d06 
  src/mem/ruby/system/SConscript aeec9e157d06 
  src/mem/ruby/system/Sequencer.cc aeec9e157d06 
  src/mem/ruby/system/Sequencer.py aeec9e157d06 
  src/mem/ruby/system/System.hh aeec9e157d06 
  src/mem/ruby/system/System.cc aeec9e157d06 

Diff: http://reviews.m5sim.org/r/611/diff


Testing
---


Thanks,

Nilay

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: Add support for functional accesses

2011-04-02 Thread Nilay Vaish


> On 2011-03-31 22:08:21, Brad Beckmann wrote:
> > src/mem/ruby/system/RubyPort.cc, line 417
> > <http://reviews.m5sim.org/r/611/diff/3/?file=11443#file11443line417>
> >
> > Are functional packets put on the stack or the heap?  I seem to 
> > remember the former, but I could be wrong.

In a couple of places in src/mem/port.cc, the packet is on the stack.
But in src/cpu/testers/memtest/memtest.cc, the packet is on the heap.
As per the documentation, the packet is owned by the requestor. So, the
requestor will have to free the packet. I will remove this code. 


- Nilay


---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/#review1082
-------


On 2011-03-31 20:44:17, Nilay Vaish wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.m5sim.org/r/611/
> ---
> 
> (Updated 2011-03-31 20:44:17)
> 
> 
> Review request for Default.
> 
> 
> Summary
> ---
> 
> Ruby: Add support for functional accesses
> This patch is meant for aiding discussions on implementation of functional
> access support in Ruby.
> 
> 
> Diffs
> -
> 
>   configs/ruby/MESI_CMP_directory.py c7302d55d644 
>   configs/ruby/Ruby.py c7302d55d644 
>   src/mem/ruby/network/Network.cc c7302d55d644 
>   src/mem/ruby/network/Network.py c7302d55d644 
>   src/mem/ruby/profiler/Profiler.cc c7302d55d644 
>   src/mem/ruby/profiler/Profiler.py c7302d55d644 
>   src/mem/ruby/recorder/Tracer.cc c7302d55d644 
>   src/mem/ruby/recorder/Tracer.py c7302d55d644 
>   src/mem/ruby/system/AbstractMemory.hh PRE-CREATION 
>   src/mem/ruby/system/AbstractMemory.cc PRE-CREATION 
>   src/mem/ruby/system/Cache.py c7302d55d644 
>   src/mem/ruby/system/CacheMemory.hh c7302d55d644 
>   src/mem/ruby/system/CacheMemory.cc c7302d55d644 
>   src/mem/ruby/system/DirectoryMemory.hh c7302d55d644 
>   src/mem/ruby/system/DirectoryMemory.cc c7302d55d644 
>   src/mem/ruby/system/DirectoryMemory.py c7302d55d644 
>   src/mem/ruby/system/RubyPort.hh c7302d55d644 
>   src/mem/ruby/system/RubyPort.cc c7302d55d644 
>   src/mem/ruby/system/RubySystem.py c7302d55d644 
>   src/mem/ruby/system/SConscript c7302d55d644 
>   src/mem/ruby/system/Sequencer.cc c7302d55d644 
>   src/mem/ruby/system/Sequencer.py c7302d55d644 
>   src/mem/ruby/system/System.hh c7302d55d644 
>   src/mem/ruby/system/System.cc c7302d55d644 
> 
> Diff: http://reviews.m5sim.org/r/611/diff
> 
> 
> Testing
> ---
> 
> 
> Thanks,
> 
> Nilay
> 
>

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: Add support for functional accesses

2011-04-02 Thread Nilay Vaish


> On 2011-04-01 09:30:54, Brad Beckmann wrote:
> > Hi Nilay,

Comments below.  I might be missing something, but the changes to 
DirectoryMemory seem straightforward.

No, you are not missing anything. It is just that I had not implemented
it up till now.


- Nilay


---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/#review1085
---


On 2011-03-31 20:44:17, Nilay Vaish wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.m5sim.org/r/611/
> ---
> 
> (Updated 2011-03-31 20:44:17)
> 
> 
> Review request for Default.
> 
> 
> Summary
> ---
> 
> Ruby: Add support for functional accesses
> This patch is meant for aiding discussions on implementation of functional
> access support in Ruby.
> 
> 
> Diffs
> -
> 
>   configs/ruby/MESI_CMP_directory.py c7302d55d644 
>   configs/ruby/Ruby.py c7302d55d644 
>   src/mem/ruby/network/Network.cc c7302d55d644 
>   src/mem/ruby/network/Network.py c7302d55d644 
>   src/mem/ruby/profiler/Profiler.cc c7302d55d644 
>   src/mem/ruby/profiler/Profiler.py c7302d55d644 
>   src/mem/ruby/recorder/Tracer.cc c7302d55d644 
>   src/mem/ruby/recorder/Tracer.py c7302d55d644 
>   src/mem/ruby/system/AbstractMemory.hh PRE-CREATION 
>   src/mem/ruby/system/AbstractMemory.cc PRE-CREATION 
>   src/mem/ruby/system/Cache.py c7302d55d644 
>   src/mem/ruby/system/CacheMemory.hh c7302d55d644 
>   src/mem/ruby/system/CacheMemory.cc c7302d55d644 
>   src/mem/ruby/system/DirectoryMemory.hh c7302d55d644 
>   src/mem/ruby/system/DirectoryMemory.cc c7302d55d644 
>   src/mem/ruby/system/DirectoryMemory.py c7302d55d644 
>   src/mem/ruby/system/RubyPort.hh c7302d55d644 
>   src/mem/ruby/system/RubyPort.cc c7302d55d644 
>   src/mem/ruby/system/RubySystem.py c7302d55d644 
>   src/mem/ruby/system/SConscript c7302d55d644 
>   src/mem/ruby/system/Sequencer.cc c7302d55d644 
>   src/mem/ruby/system/Sequencer.py c7302d55d644 
>   src/mem/ruby/system/System.hh c7302d55d644 
>   src/mem/ruby/system/System.cc c7302d55d644 
> 
> Diff: http://reviews.m5sim.org/r/611/diff
> 
> 
> Testing
> ---
> 
> 
> Thanks,
> 
> Nilay
> 
>

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: Add support for functional accesses

2011-04-01 Thread Nilay Vaish


> On 2011-03-31 22:08:21, Brad Beckmann wrote:
> > This looks great, I just have a few minor suggestions below.
> > 
> > It seems like the next step is to figure out how to deal with functional 
> > accesses not succeeding in the CPUs and devices.

Brad, I would make the changes you have listed below. I also need to add
code for directory memory accesses. Can you elaborate on the next step you 
mentioned? We are yet not dealing with the devices, I believe.


- Nilay


---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/#review1082
---


On 2011-03-31 20:44:17, Nilay Vaish wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.m5sim.org/r/611/
> ---
> 
> (Updated 2011-03-31 20:44:17)
> 
> 
> Review request for Default.
> 
> 
> Summary
> ---
> 
> Ruby: Add support for functional accesses
> This patch is meant for aiding discussions on implementation of functional
> access support in Ruby.
> 
> 
> Diffs
> -
> 
>   configs/ruby/MESI_CMP_directory.py c7302d55d644 
>   configs/ruby/Ruby.py c7302d55d644 
>   src/mem/ruby/network/Network.cc c7302d55d644 
>   src/mem/ruby/network/Network.py c7302d55d644 
>   src/mem/ruby/profiler/Profiler.cc c7302d55d644 
>   src/mem/ruby/profiler/Profiler.py c7302d55d644 
>   src/mem/ruby/recorder/Tracer.cc c7302d55d644 
>   src/mem/ruby/recorder/Tracer.py c7302d55d644 
>   src/mem/ruby/system/AbstractMemory.hh PRE-CREATION 
>   src/mem/ruby/system/AbstractMemory.cc PRE-CREATION 
>   src/mem/ruby/system/Cache.py c7302d55d644 
>   src/mem/ruby/system/CacheMemory.hh c7302d55d644 
>   src/mem/ruby/system/CacheMemory.cc c7302d55d644 
>   src/mem/ruby/system/DirectoryMemory.hh c7302d55d644 
>   src/mem/ruby/system/DirectoryMemory.cc c7302d55d644 
>   src/mem/ruby/system/DirectoryMemory.py c7302d55d644 
>   src/mem/ruby/system/RubyPort.hh c7302d55d644 
>   src/mem/ruby/system/RubyPort.cc c7302d55d644 
>   src/mem/ruby/system/RubySystem.py c7302d55d644 
>   src/mem/ruby/system/SConscript c7302d55d644 
>   src/mem/ruby/system/Sequencer.cc c7302d55d644 
>   src/mem/ruby/system/Sequencer.py c7302d55d644 
>   src/mem/ruby/system/System.hh c7302d55d644 
>   src/mem/ruby/system/System.cc c7302d55d644 
> 
> Diff: http://reviews.m5sim.org/r/611/diff
> 
> 
> Testing
> ---
> 
> 
> Thanks,
> 
> Nilay
> 
>

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: Add support for functional accesses

2011-03-31 Thread Nilay Vaish


> On 2011-03-31 11:11:03, Brad Beckmann wrote:
> > src/mem/ruby/system/RubyPort.cc, line 321
> > <http://reviews.m5sim.org/r/611/diff/2/?file=11382#file11382line321>
> >
> > This loop is probably the most complicated and important part of this 
> > patch.  It might be easiest if we move this functionality into two 
> > different functions, one for reads and one for writes.
> > 
> > The read scan just needs to ensure that at least one memory says that 
> > it has the address in Read_Only or ReadWrite state.  We may also want to 
> > doublecheck that multiple memories say they have the address in ReadWrite 
> > state.
> > 
> > The write scan is more complicated.  If one memory says that it has the 
> > address in ReadWrite state, then I don't think it matters what state the 
> > other memories are in (except of course if another memory says it also has 
> > the address in ReadWrite), the write should succeed.  Also if the write 
> > scans says that all copies are in Read_Only or Invalid/NotPresent state and 
> > no copies are Busy, the write should succeed.  However, writes should fail 
> > if either no Read_Only or ReadWrite copies are found, or if a Busy copy is 
> > found and no ReadWrite copy is found.  The latter situation will likely 
> > indicate the functional write is racing with a timing write.  There is no 
> > easy, protocol-agnostic way to resolve such a race in the current 
> > infrastructure.
> > 
> > Make sense?
> 
> Nilay Vaish wrote:
> I think we should have the following cases for functional writes --
> 1. Only read only copies --> write succeeds
> 2. One read write copy --> write succeeds
> 3. At least one busy --> write fails.
> 4. None of the above, then simply update the memory. Memory should
> also get updated in 1. as well.
> 
> Brad, from your comment it seems that you expect that there can be 
> multiple read-write copies simultaneously. Is this possible, or would
> this be a bug in the protocol?
> 
> Brad Beckmann wrote:
> You are absolutely right, that would be an error in the protocol.  It 
> just seems that since we are scanning the state of the address in the system, 
> we might as well double check that at most one ReadWrite copy exists.
> 
> I completely agree with your first two cases.  However, I think the third 
> case is slightly too restrictive.  Just because one memory has the address as 
> Busy, doesn't necessarily mean that we cannot update the block.  If another 
> memory has the block in read-write state, we can be certain that that 
> particular copy is not only still valid, but has also yet to relinquish 
> exclusive ownership.  Therefore a function write to that block can succeed.  
> Meanwhile, if we find a Busy block and just Read_Only block(s), than other 
> valid copies may exist somewhere in the system and thus the functional write 
> likely won't succeed.
> 
> I'm confused by your fourth case.  Isn't Ruby memory (a.k.a. 
> DirectoryMemory) just another AbstractMemory object and thus just another 
> memory in the list of memories?  My hope was that we would treat CacheMemory 
> and DirectoryMemory the same when doing functional accesses.  Am I missing 
> something?

Brad, put it down to my lack of understanding of how the memory has been 
organized. Currently, it seems to me that directory memory will either have a 
sparse memory vector or a memory vector. These will contain the directory 
entries. It is these directory entries which hold the data blocks, which would 
be handled in a fashion similar to cache entries.


- Nilay


---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/#review1054
---


On 2011-03-31 20:44:17, Nilay Vaish wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.m5sim.org/r/611/
> ---
> 
> (Updated 2011-03-31 20:44:17)
> 
> 
> Review request for Default.
> 
> 
> Summary
> ---
> 
> Ruby: Add support for functional accesses
> This patch is meant for aiding discussions on implementation of functional
> access support in Ruby.
> 
> 
> Diffs
> -
> 
>   configs/ruby/MESI_CMP_directory.py c7302d55d644 
>   configs/ruby/Ruby.py c7302d55d644 
>   src/mem/ruby/network/Network.cc c7302d55d644 
>   src/mem/ruby/network/Network.py c7302d55d644 
>   src/mem/ruby/profiler

Re: [m5-dev] Review Request: Ruby: Add support for functional accesses

2011-03-31 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/
---

(Updated 2011-03-31 20:44:17.499794)


Review request for Default.


Summary
---

Ruby: Add support for functional accesses
This patch is meant for aiding discussions on implementation of functional
access support in Ruby.


Diffs (updated)
-

  configs/ruby/MESI_CMP_directory.py c7302d55d644 
  configs/ruby/Ruby.py c7302d55d644 
  src/mem/ruby/network/Network.cc c7302d55d644 
  src/mem/ruby/network/Network.py c7302d55d644 
  src/mem/ruby/profiler/Profiler.cc c7302d55d644 
  src/mem/ruby/profiler/Profiler.py c7302d55d644 
  src/mem/ruby/recorder/Tracer.cc c7302d55d644 
  src/mem/ruby/recorder/Tracer.py c7302d55d644 
  src/mem/ruby/system/AbstractMemory.hh PRE-CREATION 
  src/mem/ruby/system/AbstractMemory.cc PRE-CREATION 
  src/mem/ruby/system/Cache.py c7302d55d644 
  src/mem/ruby/system/CacheMemory.hh c7302d55d644 
  src/mem/ruby/system/CacheMemory.cc c7302d55d644 
  src/mem/ruby/system/DirectoryMemory.hh c7302d55d644 
  src/mem/ruby/system/DirectoryMemory.cc c7302d55d644 
  src/mem/ruby/system/DirectoryMemory.py c7302d55d644 
  src/mem/ruby/system/RubyPort.hh c7302d55d644 
  src/mem/ruby/system/RubyPort.cc c7302d55d644 
  src/mem/ruby/system/RubySystem.py c7302d55d644 
  src/mem/ruby/system/SConscript c7302d55d644 
  src/mem/ruby/system/Sequencer.cc c7302d55d644 
  src/mem/ruby/system/Sequencer.py c7302d55d644 
  src/mem/ruby/system/System.hh c7302d55d644 
  src/mem/ruby/system/System.cc c7302d55d644 

Diff: http://reviews.m5sim.org/r/611/diff


Testing
---


Thanks,

Nilay

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] changeset in m5: CacheMemory: add allocateVoid() that is == allo...

2011-03-31 Thread Nilay
Lisa, should not compiler yell in this case as well?

Nilay


On Thu, March 31, 2011 8:22 pm, Lisa Hsu wrote:
> changeset c7302d55d644 in /z/repo/m5
> details: http://repo.m5sim.org/m5?cmd=changeset;node=c7302d55d644
> description:
>   CacheMemory: add allocateVoid() that is == allocate() but no return
> value.
>   This function duplicates the functionality of allocate() exactly, except
> that it does not return
>   a return value.  In protocols where you just want to allocate a block
>   but do not want that block to be your implicitly passed cache_entry, use
> this function.
>   Otherwise, SLICC will complain if you do not consume the pointer 
> returned
> by allocate(),
>   and if you do a dummy assignment Entry foo := cache.allocate(address),
> the C++
>   compiler will complain of an unused variable.  This is kind of a hack to
> get around
>   those issues, but suggestions welcome.
>


___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: enable multiple sequencers in one controller.

2011-03-31 Thread Nilay Vaish


> On 2011-03-31 14:22:16, Nilay Vaish wrote:
> > I hope you have tested the existing protocols with these changes.
> 
> Lisa Hsu wrote:
> Yes - MOESI_[CMP_[directory|token]|hammer] all compile and run -l 1000 -n 
> 4 on the Ruby Tester.  Since no logic has changed (for all my Ruby changes), 
> I believe it's sufficient testing, since the MSB in correctness is 
> compilation.

That should be sufficient.


- Nilay


---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/624/#review1065
---


On 2011-03-31 12:20:53, Lisa Hsu wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.m5sim.org/r/624/
> ---
> 
> (Updated 2011-03-31 12:20:53)
> 
> 
> Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and 
> Nathan Binkert.
> 
> 
> Summary
> ---
> 
> Ruby: enable multiple sequencers in one controller.
> 
> 
> Diffs
> -
> 
>   src/mem/slicc/symbols/StateMachine.py d8587c913ccf 
> 
> Diff: http://reviews.m5sim.org/r/624/diff
> 
> 
> Testing
> ---
> 
> 
> Thanks,
> 
> Lisa
> 
>

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: Add support for functional accesses

2011-03-31 Thread Nilay Vaish


> On 2011-03-31 11:11:03, Brad Beckmann wrote:
> > src/mem/ruby/system/RubyPort.cc, line 321
> > <http://reviews.m5sim.org/r/611/diff/2/?file=11382#file11382line321>
> >
> > This loop is probably the most complicated and important part of this 
> > patch.  It might be easiest if we move this functionality into two 
> > different functions, one for reads and one for writes.
> > 
> > The read scan just needs to ensure that at least one memory says that 
> > it has the address in Read_Only or ReadWrite state.  We may also want to 
> > doublecheck that multiple memories say they have the address in ReadWrite 
> > state.
> > 
> > The write scan is more complicated.  If one memory says that it has the 
> > address in ReadWrite state, then I don't think it matters what state the 
> > other memories are in (except of course if another memory says it also has 
> > the address in ReadWrite), the write should succeed.  Also if the write 
> > scans says that all copies are in Read_Only or Invalid/NotPresent state and 
> > no copies are Busy, the write should succeed.  However, writes should fail 
> > if either no Read_Only or ReadWrite copies are found, or if a Busy copy is 
> > found and no ReadWrite copy is found.  The latter situation will likely 
> > indicate the functional write is racing with a timing write.  There is no 
> > easy, protocol-agnostic way to resolve such a race in the current 
> > infrastructure.
> > 
> > Make sense?

I think we should have the following cases for functional writes --
1. Only read only copies --> write succeeds
2. One read write copy --> write succeeds
3. At least one busy --> write fails.
4. None of the above, then simply update the memory. Memory should
also get updated in 1. as well.

Brad, from your comment it seems that you expect that there can be 
multiple read-write copies simultaneously. Is this possible, or would
this be a bug in the protocol?


- Nilay


---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/#review1054
---


On 2011-03-30 16:19:26, Nilay Vaish wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.m5sim.org/r/611/
> ---
> 
> (Updated 2011-03-30 16:19:26)
> 
> 
> Review request for Default.
> 
> 
> Summary
> ---
> 
> Ruby: Add support for functional accesses
> This patch is meant for aiding discussions on implementation of functional
> access support in Ruby.
> 
> 
> Diffs
> -
> 
>   configs/ruby/MESI_CMP_directory.py d54b7775a6b0 
>   configs/ruby/Ruby.py d54b7775a6b0 
>   src/mem/ruby/network/Network.cc d54b7775a6b0 
>   src/mem/ruby/network/Network.py d54b7775a6b0 
>   src/mem/ruby/profiler/Profiler.cc d54b7775a6b0 
>   src/mem/ruby/profiler/Profiler.py d54b7775a6b0 
>   src/mem/ruby/recorder/Tracer.cc d54b7775a6b0 
>   src/mem/ruby/recorder/Tracer.py d54b7775a6b0 
>   src/mem/ruby/system/AbstractMemory.hh PRE-CREATION 
>   src/mem/ruby/system/AbstractMemory.cc PRE-CREATION 
>   src/mem/ruby/system/Cache.py d54b7775a6b0 
>   src/mem/ruby/system/CacheMemory.hh d54b7775a6b0 
>   src/mem/ruby/system/CacheMemory.cc d54b7775a6b0 
>   src/mem/ruby/system/DirectoryMemory.hh d54b7775a6b0 
>   src/mem/ruby/system/DirectoryMemory.cc d54b7775a6b0 
>   src/mem/ruby/system/DirectoryMemory.py d54b7775a6b0 
>   src/mem/ruby/system/RubyPort.hh d54b7775a6b0 
>   src/mem/ruby/system/RubyPort.cc d54b7775a6b0 
>   src/mem/ruby/system/RubySystem.py d54b7775a6b0 
>   src/mem/ruby/system/SConscript d54b7775a6b0 
>   src/mem/ruby/system/Sequencer.py d54b7775a6b0 
>   src/mem/ruby/system/System.hh d54b7775a6b0 
>   src/mem/ruby/system/System.cc d54b7775a6b0 
> 
> Diff: http://reviews.m5sim.org/r/611/diff
> 
> 
> Testing
> ---
> 
> 
> Thanks,
> 
> Nilay
> 
>

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: Simplify SLICC and Entry/TBE handling.

2011-03-31 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/630/#review1066
---

Ship it!


Lisa, the changes look fine to me. Just make sure that all the existing
protocols compile properly.

- Nilay


On 2011-03-31 14:26:33, Lisa Hsu wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.m5sim.org/r/630/
> ---
> 
> (Updated 2011-03-31 14:26:33)
> 
> 
> Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and 
> Nathan Binkert.
> 
> 
> Summary
> ---
> 
> Ruby: Simplify SLICC and Entry/TBE handling.
> Before this changeset, all local variables of type Entry and TBE were 
> considered
> to be pointers, but an immediate use of said variables would not be 
> automatically
> deferenced in SLICC-generated code.  Instead, deferences occurred when such
> variables were passed to functions, and were automatically dereferenced in
> the bodies of the functions (e.g. the implicitly passed cache_entry).
> 
> This is a more general way to do it, which leaves in place the
> assumption that parameters to functions and local variables of type 
> AbstractCacheEntry
> and TBE are always pointers, but instead of dereferencing to access member 
> variables
> on a contextual basis, the dereferencing automatically occurs on a type basis 
> at the
> moment a member is being accessed.  So, now, things you can do that you 
> couldn't before
> include:
> 
> Entry foo := getCacheEntry(address);
> cache_entry.DataBlk := foo.DataBlk;
> 
> or
> 
> cache_entry.DataBlk := getCacheEntry(address).DataBlk;
> 
> or even
> 
> cache_entry.DataBlk := static_cast(Entry, pointer, 
> cache.lookup(address)).DataBlk;
> 
> 
> Diffs
> -
> 
>   src/mem/slicc/ast/ActionDeclAST.py d8587c913ccf 
>   src/mem/slicc/ast/FormalParamAST.py d8587c913ccf 
>   src/mem/slicc/ast/FuncCallExprAST.py d8587c913ccf 
>   src/mem/slicc/ast/IsValidPtrExprAST.py d8587c913ccf 
>   src/mem/slicc/ast/MemberExprAST.py d8587c913ccf 
> 
> Diff: http://reviews.m5sim.org/r/630/diff
> 
> 
> Testing
> ---
> 
> So - just to add a note (this is not about testing).  I had uploaded a patch, 
> then realized that there was some dead code that I should also remove, so I 
> uploaded a new patch.  However, the head of my tree had changed, and that 
> appears to have messed up my ability to update patches.  So, two upshots:
> 
> One, this newer patch gets rid of the some of the str.replace("*", "") code 
> that was in place to auto-remove the *s from m_cache_entry and m_tbe, since 
> now, those guys do not have *s by default.
> 
> Two, don't change the head of your tree and have outstanding patches at the 
> same time, if you think you want to update patches.
> 
> 
> Thanks,
> 
> Lisa
> 
>

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: enable multiple sequencers in one controller.

2011-03-31 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/624/#review1065
---

Ship it!


I hope you have tested the existing protocols with these changes.

- Nilay


On 2011-03-31 12:20:53, Lisa Hsu wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.m5sim.org/r/624/
> ---
> 
> (Updated 2011-03-31 12:20:53)
> 
> 
> Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and 
> Nathan Binkert.
> 
> 
> Summary
> ---
> 
> Ruby: enable multiple sequencers in one controller.
> 
> 
> Diffs
> -
> 
>   src/mem/slicc/symbols/StateMachine.py d8587c913ccf 
> 
> Diff: http://reviews.m5sim.org/r/624/diff
> 
> 
> Testing
> ---
> 
> 
> Thanks,
> 
> Lisa
> 
>

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: have the rubytester pass contextId to Ruby.

2011-03-31 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/625/#review1064
---

Ship it!


- Nilay


On 2011-03-31 12:20:59, Lisa Hsu wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.m5sim.org/r/625/
> ---
> 
> (Updated 2011-03-31 12:20:59)
> 
> 
> Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and 
> Nathan Binkert.
> 
> 
> Summary
> ---
> 
> Ruby: have the rubytester pass contextId to Ruby.
> 
> 
> Diffs
> -
> 
>   src/cpu/testers/rubytest/Check.cc d8587c913ccf 
> 
> Diff: http://reviews.m5sim.org/r/625/diff
> 
> 
> Testing
> ---
> 
> 
> Thanks,
> 
> Lisa
> 
>

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: Add new object called WireBuffer to mimic a Wire.

2011-03-31 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/627/#review1063
---



src/mem/ruby/system/WireBuffer.hh
<http://reviews.m5sim.org/r/627/#comment1430>

Remove the comment.



src/mem/ruby/system/WireBuffer.hh
<http://reviews.m5sim.org/r/627/#comment1431>

Remove this line as well.



src/mem/ruby/system/WireBuffer.py
<http://reviews.m5sim.org/r/627/#comment1429>

Do we need this commented piece of code?


- Nilay


On 2011-03-31 12:21:07, Lisa Hsu wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.m5sim.org/r/627/
> ---
> 
> (Updated 2011-03-31 12:21:07)
> 
> 
> Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and 
> Nathan Binkert.
> 
> 
> Summary
> ---
> 
> Ruby: Add new object called WireBuffer to mimic a Wire.
> This is a substitute for MessageBuffers between controllers where you don't
> want messages to actually go through the Network, because requests/responses 
> can
> always get reordered wrt to one another (even if you turn off Randomization 
> and turn on Ordered)
> because you are, after all, going through a network with contention. For 
> systems where you model
> multiple controllers that are very tightly coupled and do not actually go 
> through a network,
> it is a pain to have to write a coherence protocol to account for mixed up 
> request/response orderings
> despite the fact that it's completely unrealistic.  This is *not* meant as a 
> substitute for real
> MessageBuffers when messages do in fact go over a network.
> 
> 
> Diffs
> -
> 
>   src/mem/protocol/RubySlicc_Types.sm d8587c913ccf 
>   src/mem/ruby/SConscript d8587c913ccf 
>   src/mem/ruby/system/SConscript d8587c913ccf 
>   src/mem/ruby/system/WireBuffer.hh PRE-CREATION 
>   src/mem/ruby/system/WireBuffer.cc PRE-CREATION 
>   src/mem/ruby/system/WireBuffer.py PRE-CREATION 
>   src/mem/slicc/symbols/StateMachine.py d8587c913ccf 
> 
> Diff: http://reviews.m5sim.org/r/627/diff
> 
> 
> Testing
> ---
> 
> 
> Thanks,
> 
> Lisa
> 
>

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: CacheMemory: add allocateVoid() that is == allocate() but no return value.

2011-03-31 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/629/#review1062
---

Ship it!


- Nilay


On 2011-03-31 12:21:22, Lisa Hsu wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.m5sim.org/r/629/
> ---
> 
> (Updated 2011-03-31 12:21:22)
> 
> 
> Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and 
> Nathan Binkert.
> 
> 
> Summary
> ---
> 
> CacheMemory: add allocateVoid() that is == allocate() but no return value.
> This function duplicates the functionality of allocate() exactly, except that 
> it does not return
> a return value.  In protocols where you just want to allocate a block
> but do not want that block to be your implicitly passed cache_entry, use this 
> function.
> Otherwise, SLICC will complain if you do not consume the pointer returned by 
> allocate(),
> and if you do a dummy assignment Entry foo := cache.allocate(address), the C++
> compiler will complain of an unused variable.  This is kind of a hack to get 
> around
> those issues, but suggestions welcome.
> 
> 
> Diffs
> -
> 
>   src/mem/protocol/RubySlicc_Types.sm d8587c913ccf 
>   src/mem/ruby/system/CacheMemory.hh d8587c913ccf 
>   src/mem/ruby/system/CacheMemory.cc d8587c913ccf 
> 
> Diff: http://reviews.m5sim.org/r/629/diff
> 
> 
> Testing
> ---
> 
> 
> Thanks,
> 
> Lisa
> 
>

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: pass Packet->Req->contextId() to Ruby.

2011-03-31 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/623/#review1060
---

Ship it!


Is context Id being used any where?

- Nilay


On 2011-03-31 12:16:27, Lisa Hsu wrote:
> 
> ---
> This is an automatically generated e-mail. To reply, visit:
> http://reviews.m5sim.org/r/623/
> ---
> 
> (Updated 2011-03-31 12:16:27)
> 
> 
> Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and 
> Nathan Binkert.
> 
> 
> Summary
> ---
> 
> Ruby: pass Packet->Req->contextId() to Ruby.
> It is useful for Ruby to understand from whence request packets came.
> This has all request packets going into Ruby pass the contextId value, if
> it exists.  This supplants the old libruby proc_id value passed around in
> all the Messages, so I've also removed the unused unsigned proc_id; member
> generated by SLICC for all Message types.
> 
> 
> Diffs
> -
> 
>   src/mem/protocol/RubySlicc_Types.sm d8587c913ccf 
>   src/mem/ruby/slicc_interface/RubyRequest.hh d8587c913ccf 
>   src/mem/ruby/system/Sequencer.cc d8587c913ccf 
>   src/mem/slicc/symbols/Type.py d8587c913ccf 
> 
> Diff: http://reviews.m5sim.org/r/623/diff
> 
> 
> Testing
> ---
> 
> 
> Thanks,
> 
> Lisa
> 
>

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


[m5-dev] Ruby: Protocol.hh

2011-03-31 Thread Nilay Vaish
I am wondering what's the need of the file Protocol.hh, I removed it from 
different in the protocol independent part of Ruby. I also removed the 
file standard_1level_CMP-protocol.sm from the MOESI_hammer.slicc. 
Everything compiles perfectly. I am not sure what the requirement is.


--
Nilay
___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Ruby Optimization Opportunity?

2011-03-30 Thread Nilay Vaish
Korey, I do not have the FftBase32 benchmark. Is it possible for you to 
run the simulation with one of the following benchmarks --


IScsiInitiator, IScsiTarget, MutexTest, NetperfMaerts, NetperfStream, 
NetperfStreamNT, NetperfStreamUdp, NetperfUdpLocal, Nfs, NfsTcp, 
Nhfsstone, Ping, PovrayAutumn, PovrayBench, SurgeSpecweb, 
SurgeStandard, ValAccDelay, ValAccDelay2, ValCtxLat, ValMemLat, 
ValMemLat2MB, ValMemLat8MB, ValStream, ValStreamCopy, ValStreamScale, 
ValSysLat, ValTlbLat, Validation, bnAn



Which of these do you think would closely resemble FFT?


Nilay

On Wed, 30 Mar 2011, Korey Sewell wrote:


Hi all,
I had noticed that Ruby was running a little slower than the old M5
memory system and decided to run gprof on it to see if there was
anything obvious holding things up.

For 2, 4, and 8 core  ALPHA_FS_MOESI_CMP_directory, SimpleCPU runs for
the Fft benchmark, it seems that the MemoryControl::executeCycle
conributes to nearly 30% of the runtime. Looking at the comments for
that code, I see this:
"// executeCycle:  This function is called once per memory clock cycle"

I'm not familiar with this Memory Controller code but it would seem
that some type of optimization not requiring this to be run every
memory cycle would speed things up a good bit. So if someone has the
time or the need to do some Ruby optimization work (i know Nilay had
did some previously), then I think this will be a good place to
start...

I post some of the gprof output below:
=
2 core
=
time (%)   name
29.17  MemoryControl::executeCycle()
4.19RubyEventQueue::scheduleEventAbsolute(Consumer*, long long)
3.52PerfectSwitch::wakeup()
3.47Set::Set(Set const&)
3.46RubyEventQueueNode::process()


4 core
=
time (%)   name
27.49MemoryControl::executeCycle()
 4.01RubyEventQueue::scheduleEventAbsolute(Consumer*, long long)
 3.66PerfectSwitch::wakeup()
 3.59   Set::Set(Set const&)
 3.50RubyEventQueueNode::process()

8 core
=
time (%)   name
26.09MemoryControl::executeCycle()
 4.12   Set::Set(Set const&)
 3.91   PerfectSwitch::wakeup()
 3.88   RubyEventQueue::scheduleEventAbsolute(Consumer*, long long)
 3.41   RubyEventQueueNode::process()

--
- Korey
___
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


Re: [m5-dev] Review Request: Ruby: Add support for functional accesses

2011-03-30 Thread Nilay Vaish

On Tue, 29 Mar 2011, Nilay Vaish wrote:

Brad, I have posted on the review board my current implementation for 
supporting functional accesses in Ruby. This is untested and is mainly meant 
for furthering the discussions. I have some questions for you --


1. How do we inform the other end of RubyPort's M5 Port about whether or not 
functional access was successful?


2. What's the role of directory memory in functional accesses?

3. If none of the caches have the block pertaining to the address of the 
access, then read accesses should be satisfied from the physical memory. 
Write accesses should always go to physical memory as well. How can physical 
memory be accessed from RubyPort?


--
Nilay




Brad, I have made some changes to the patch. I have updated it on the 
review board. I have added a call to sendFunctional() so as to send the 
response. I have also added call to sendFunctional() on the physical 
memory port of ruby port, so that the physical memory would also get 
updated.


You had mentioned that we would unhook M5 memory and use Ruby to supply 
the data. How do we do this? And the second question from the previous 
mail still remains unanswered.


Thanks
Nilay
___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: Add support for functional accesses

2011-03-30 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/
---

(Updated 2011-03-30 16:19:26.551926)


Review request for Default.


Summary
---

Ruby: Add support for functional accesses
This patch is meant for aiding discussions on implementation of functional
access support in Ruby.


Diffs (updated)
-

  configs/ruby/MESI_CMP_directory.py d54b7775a6b0 
  configs/ruby/Ruby.py d54b7775a6b0 
  src/mem/ruby/network/Network.cc d54b7775a6b0 
  src/mem/ruby/network/Network.py d54b7775a6b0 
  src/mem/ruby/profiler/Profiler.cc d54b7775a6b0 
  src/mem/ruby/profiler/Profiler.py d54b7775a6b0 
  src/mem/ruby/recorder/Tracer.cc d54b7775a6b0 
  src/mem/ruby/recorder/Tracer.py d54b7775a6b0 
  src/mem/ruby/system/AbstractMemory.hh PRE-CREATION 
  src/mem/ruby/system/AbstractMemory.cc PRE-CREATION 
  src/mem/ruby/system/Cache.py d54b7775a6b0 
  src/mem/ruby/system/CacheMemory.hh d54b7775a6b0 
  src/mem/ruby/system/CacheMemory.cc d54b7775a6b0 
  src/mem/ruby/system/DirectoryMemory.hh d54b7775a6b0 
  src/mem/ruby/system/DirectoryMemory.cc d54b7775a6b0 
  src/mem/ruby/system/DirectoryMemory.py d54b7775a6b0 
  src/mem/ruby/system/RubyPort.hh d54b7775a6b0 
  src/mem/ruby/system/RubyPort.cc d54b7775a6b0 
  src/mem/ruby/system/RubySystem.py d54b7775a6b0 
  src/mem/ruby/system/SConscript d54b7775a6b0 
  src/mem/ruby/system/Sequencer.py d54b7775a6b0 
  src/mem/ruby/system/System.hh d54b7775a6b0 
  src/mem/ruby/system/System.cc d54b7775a6b0 

Diff: http://reviews.m5sim.org/r/611/diff


Testing
---


Thanks,

Nilay

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: Add support for functional accesses

2011-03-29 Thread Nilay Vaish
Brad, I have posted on the review board my current implementation for 
supporting functional accesses in Ruby. This is untested and is mainly 
meant for furthering the discussions. I have some questions for you --


1. How do we inform the other end of RubyPort's M5 Port about whether or 
not functional access was successful?


2. What's the role of directory memory in functional accesses?

3. If none of the caches have the block pertaining to the address of the 
access, then read accesses should be satisfied from the physical memory. 
Write accesses should always go to physical memory as well. How can 
physical memory be accessed from RubyPort?


--
Nilay


On Tue, 29 Mar 2011, Nilay Vaish wrote:



---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/
---

Review request for Default.


Summary
---

Ruby: Add support for functional accesses
This patch is meant for aiding discussions on implementation of functional
access support in Ruby.



___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


[m5-dev] Review Request: Ruby: Add support for functional accesses

2011-03-29 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/611/
---

Review request for Default.


Summary
---

Ruby: Add support for functional accesses
This patch is meant for aiding discussions on implementation of functional
access support in Ruby.


Diffs
-

  configs/ruby/MESI_CMP_directory.py 6ae58f06a41c 
  configs/ruby/Ruby.py 6ae58f06a41c 
  src/mem/ruby/network/Network.cc 6ae58f06a41c 
  src/mem/ruby/network/Network.py 6ae58f06a41c 
  src/mem/ruby/profiler/Profiler.cc 6ae58f06a41c 
  src/mem/ruby/profiler/Profiler.py 6ae58f06a41c 
  src/mem/ruby/recorder/Tracer.cc 6ae58f06a41c 
  src/mem/ruby/recorder/Tracer.py 6ae58f06a41c 
  src/mem/ruby/system/AbstractMemory.hh PRE-CREATION 
  src/mem/ruby/system/AbstractMemory.cc PRE-CREATION 
  src/mem/ruby/system/Cache.py 6ae58f06a41c 
  src/mem/ruby/system/CacheMemory.hh 6ae58f06a41c 
  src/mem/ruby/system/CacheMemory.cc 6ae58f06a41c 
  src/mem/ruby/system/DirectoryMemory.hh 6ae58f06a41c 
  src/mem/ruby/system/DirectoryMemory.cc 6ae58f06a41c 
  src/mem/ruby/system/DirectoryMemory.py 6ae58f06a41c 
  src/mem/ruby/system/RubyPort.hh 6ae58f06a41c 
  src/mem/ruby/system/RubyPort.cc 6ae58f06a41c 
  src/mem/ruby/system/RubySystem.py 6ae58f06a41c 
  src/mem/ruby/system/SConscript 6ae58f06a41c 
  src/mem/ruby/system/Sequencer.py 6ae58f06a41c 
  src/mem/ruby/system/System.hh 6ae58f06a41c 
  src/mem/ruby/system/System.cc 6ae58f06a41c 

Diff: http://reviews.m5sim.org/r/611/diff


Testing
---


Thanks,

Nilay

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Cron /z/m5/regression/do-regression quick

2011-03-28 Thread Nilay Vaish

I pushed in patch that imports math in MI_example.py

--
Nilay

On Mon, 28 Mar 2011, Cron Daemon wrote:


* build/ALPHA_SE/tests/fast/quick/00.hello/alpha/tru64/simple-timing-ruby 
FAILED!
* build/ALPHA_SE/tests/fast/quick/50.memtest/alpha/linux/memtest-ruby 
FAILED!
* build/ALPHA_SE/tests/fast/quick/00.hello/alpha/linux/simple-timing-ruby 
FAILED!
* build/ALPHA_SE/tests/fast/quick/60.rubytest/alpha/linux/rubytest-ruby 
FAILED!
* build/MIPS_SE/tests/fast/quick/00.hello/mips/linux/simple-timing-ruby 
FAILED!
* build/SPARC_SE/tests/fast/quick/00.hello/sparc/linux/simple-timing-ruby 
FAILED!
* build/X86_SE/tests/fast/quick/00.hello/x86/linux/simple-timing-ruby 
FAILED!

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


[m5-dev] changeset in m5: Config: Import math in MI_example.py

2011-03-28 Thread Nilay Vaish
changeset 1333bd6cc2eb in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=1333bd6cc2eb
description:
Config: Import math in MI_example.py

diffstat:

 configs/ruby/MI_example.py |  1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diffs (11 lines):

diff -r 832ae3727c2b -r 1333bd6cc2eb configs/ruby/MI_example.py
--- a/configs/ruby/MI_example.pySat Mar 26 22:24:36 2011 -0700
+++ b/configs/ruby/MI_example.pyMon Mar 28 10:49:36 2011 -0500
@@ -27,6 +27,7 @@
 #
 # Authors: Brad Beckmann
 
+import math
 import m5
 from m5.objects import *
 from m5.defines import buildEnv
___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Ruby random tester failing with MESI_CMP_directory?

2011-03-23 Thread Nilay Vaish

It is working fine for me.

 ./build/X86_SE_MESI_CMP_directory/m5.fast 
./configs/example/ruby_random_test.py -n 4 -l 1

M5 Simulator System

Copyright (c) 2001-2008
The Regents of The University of Michigan
All Rights Reserved


M5 compiled Mar 23 2011 15:53:38
M5 started Mar 23 2011 15:53:52
M5 executing on mumble-09.cs.wisc.edu
command line: ./build/X86_SE_MESI_CMP_directory/m5.fast 
./configs/example/ruby_random_test.py -n 4 -l 1

Global frequency set at 10 ticks per second
info: Entering event queue @ 0.  Starting simulation...
hack: be nice to actually delete the event here
Exiting @ tick 14536941 because Ruby Tester completed



On Wed, 23 Mar 2011, Nilay Vaish wrote:


I will try to bisect this.


--
Nilay

On Wed, 23 Mar 2011, Arkaprava Basu wrote:


Hi Lisa and Nilay,

   Thanks for the response. Following is the tip of my repo

changeset:   8174:e21f6e70169e
tag: tip
user:Nilay Vaish
date:Tue Mar 22 06:41:54 2011 -0500
summary: Ruby: Remove CacheMsg class from SLICC

So this is after Nilay's patch for CacheMsg. And yes it did not tun for 
10-15 mins, died immediately. The architecture should not matter for 
random_tester. I am not sure then why its breaking. Seems like something 
broken.


Thanks
Arka






___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Ruby random tester failing with MESI_CMP_directory?

2011-03-23 Thread Nilay Vaish

I will try to bisect this.


--
Nilay

On Wed, 23 Mar 2011, Arkaprava Basu wrote:


Hi Lisa and Nilay,

   Thanks for the response. Following is the tip of my repo

changeset:   8174:e21f6e70169e
tag: tip
user:Nilay Vaish
date:Tue Mar 22 06:41:54 2011 -0500
summary: Ruby: Remove CacheMsg class from SLICC

So this is after Nilay's patch for CacheMsg. And yes it did not tun for 10-15 
mins, died immediately. The architecture should not matter for random_tester. 
I am not sure then why its breaking. Seems like something broken.


Thanks
Arka




___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Ruby FS - DMA Controller problem?

2011-03-22 Thread Nilay
On Sat, March 19, 2011 6:01 pm, Beckmann, Brad wrote:
> Korey, if you're deadlock is with running the MOESI_CMP_directory
> protocol, I'm not surprised.  DMA support is pretty much broken in that
> protocol.  I have that fixed and I also fixed the underlining DMA problem.
>  I'll be pushing the fixes momentarily.
>
> Korey and Malek, please pull these changes and confirm they fix your
> problem.
>
> Brad
>
>

Brad, how come the mails you sent on Saturday are being received now?


--
Nilay

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: Ruby: Convert AccessModeType to RubyAccessMode

2011-03-22 Thread Nilay

On Sat, March 19, 2011 3:57 pm, Beckmann, Brad wrote:
> Nevermind, I understand the reason now.  This looks good to me.
>
> Thanks,
>
> Brad
>
>> -Original Message-
>> From: Beckmann, Brad
>> Sent: Saturday, March 19, 2011 1:50 PM
>> To: 'M5 Developer List'
>> Subject: RE: [m5-dev] Review Request: Ruby: Convert AccessModeType to
>> RubyAccessMode
>>
>> Hi Nilay,
>>
>> Why do you want to change the name?  Both names seem equivalent to me.
>>
>> Brad
>>
>>

Brad, I had to make the decision in favor of one of the two names. I
decided not to choose AccessModeType because Mode and Type have almost the
same meaning.


--
Nilay

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] networktest.cc error

2011-03-22 Thread Nilay
On Tue, March 22, 2011 9:45 pm, Tushar Krishna wrote:
> Hi all,
> I didn't (and still don't) see any errors in networktest.cc when I built
> m5 on my own computer for both SE and FS modes before checking in the
> patch.
> Could it be a gcc version issue?
>
> The error which the regression tester points to is
>
> build/ARM_FS/cpu/testers/networktest/networktest.cc:194: error: call
> of overloaded 'pow(int, int&)' is ambiguous
>
> The line which is giving the error is:
> int injRange = pow(10, precision);
>
> precision is an input parameter.
>
> I just want to raise 10 to an input integer value. Is there any other
> way I should use to do this?
>
> What is the regression test that I should run to reproduce the errors
> and warnings?
>
> Thanks,
> Tushar
>
Tushar, try compiling with GCC 4.2, that's the version on zizzer.

--
Nilay

___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


  1   2   3   4   5   >