[m5-dev] Cron m5t...@zizzer /z/m5/regression/do-regression quick

2011-01-05 Thread Cron Daemon
* build/ALPHA_SE/tests/fast/quick/20.eio-short/alpha/eio/simple-atomic 
passed.
* build/ALPHA_SE/tests/fast/quick/00.hello/alpha/tru64/simple-timing-ruby 
passed.
* build/ALPHA_SE/tests/fast/quick/01.hello-2T-smt/alpha/linux/o3-timing 
passed.
= Statistics differences == Statistics differences =* 
build/ALPHA_SE/tests/fast/quick/00.hello/alpha/tru64/simple-timing passed.
* build/ALPHA_SE/tests/fast/quick/00.hello/alpha/linux/inorder-timing 
passed.
* build/ALPHA_SE/tests/fast/quick/30.eio-mp/alpha/eio/simple-atomic-mp 
passed.
* build/ALPHA_SE/tests/fast/quick/00.hello/alpha/linux/simple-timing-ruby 
passed.
* build/ALPHA_SE/tests/fast/quick/00.hello/alpha/linux/o3-timing passed.
* build/ALPHA_SE/tests/fast/quick/60.rubytest/alpha/linux/rubytest-ruby 
passed.
* build/ALPHA_SE/tests/fast/quick/20.eio-short/alpha/eio/simple-timing 
passed.
* build/ALPHA_SE/tests/fast/quick/30.eio-mp/alpha/eio/simple-timing-mp 
passed.
* build/ALPHA_SE/tests/fast/quick/00.hello/alpha/tru64/simple-atomic passed.
* build/ALPHA_SE/tests/fast/quick/00.hello/alpha/linux/simple-timing passed.
* build/ALPHA_SE/tests/fast/quick/00.hello/alpha/linux/simple-atomic passed.
* build/ALPHA_SE/tests/fast/quick/00.hello/alpha/tru64/o3-timing passed.
* 
build/ALPHA_SE_MOESI_hammer/tests/fast/quick/60.rubytest/alpha/linux/rubytest-ruby-MOESI_hammer
 passed.
* 
build/ALPHA_SE_MOESI_hammer/tests/fast/quick/00.hello/alpha/tru64/simple-timing-ruby-MOESI_hammer
 passed.
* 
build/ALPHA_SE_MOESI_hammer/tests/fast/quick/00.hello/alpha/linux/simple-timing-ruby-MOESI_hammer
 passed.
* build/ALPHA_SE/tests/fast/quick/50.memtest/alpha/linux/memtest-ruby 
passed.
* 
build/ALPHA_SE_MOESI_hammer/tests/fast/quick/50.memtest/alpha/linux/memtest-ruby-MOESI_hammer
 passed.
* 
build/ALPHA_SE_MESI_CMP_directory/tests/fast/quick/00.hello/alpha/tru64/simple-timing-ruby-MESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MESI_CMP_directory/tests/fast/quick/00.hello/alpha/linux/simple-timing-ruby-MESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MESI_CMP_directory/tests/fast/quick/60.rubytest/alpha/linux/rubytest-ruby-MESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MOESI_CMP_directory/tests/fast/quick/00.hello/alpha/tru64/simple-timing-ruby-MOESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MOESI_CMP_directory/tests/fast/quick/60.rubytest/alpha/linux/rubytest-ruby-MOESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MOESI_CMP_directory/tests/fast/quick/00.hello/alpha/linux/simple-timing-ruby-MOESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MESI_CMP_directory/tests/fast/quick/50.memtest/alpha/linux/memtest-ruby-MESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MOESI_CMP_directory/tests/fast/quick/50.memtest/alpha/linux/memtest-ruby-MOESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MOESI_CMP_token/tests/fast/quick/00.hello/alpha/linux/simple-timing-ruby-MOESI_CMP_token
 passed.
* 
build/ALPHA_SE_MOESI_CMP_token/tests/fast/quick/00.hello/alpha/tru64/simple-timing-ruby-MOESI_CMP_token
 passed.
* 
build/ALPHA_SE_MOESI_CMP_token/tests/fast/quick/60.rubytest/alpha/linux/rubytest-ruby-MOESI_CMP_token
 passed.
* build/ALPHA_SE/tests/fast/quick/50.memtest/alpha/linux/memtest passed.
* 
build/ALPHA_SE_MOESI_CMP_token/tests/fast/quick/50.memtest/alpha/linux/memtest-ruby-MOESI_CMP_token
 passed.
* 
build/ALPHA_FS/tests/fast/quick/10.linux-boot/alpha/linux/tsunami-simple-atomic 
passed.
* 
build/ALPHA_FS/tests/fast/quick/10.linux-boot/alpha/linux/tsunami-simple-atomic-dual
 passed.
* build/MIPS_SE/tests/fast/quick/00.hello/mips/linux/simple-atomic passed.
* 
build/ALPHA_FS/tests/fast/quick/10.linux-boot/alpha/linux/tsunami-simple-timing-dual
 passed.
* build/MIPS_SE/tests/fast/quick/00.hello/mips/linux/simple-timing-ruby 
passed.
* build/MIPS_SE/tests/fast/quick/00.hello/mips/linux/simple-timing passed.
* build/MIPS_SE/tests/fast/quick/00.hello/mips/linux/o3-timing passed.
* build/MIPS_SE/tests/fast/quick/00.hello/mips/linux/inorder-timing passed.
* 
build/ALPHA_FS/tests/fast/quick/10.linux-boot/alpha/linux/tsunami-simple-timing 
passed.
* 
build/ALPHA_FS/tests/fast/quick/80.netperf-stream/alpha/linux/twosys-tsunami-simple-atomic
 passed.
* build/POWER_SE/tests/fast/quick/00.hello/power/linux/o3-timing passed.
* build/POWER_SE/tests/fast/quick/00.hello/power/linux/simple-atomic passed.
* build/SPARC_SE/tests/fast/quick/00.hello/sparc/linux/simple-atomic passed.
* build/SPARC_SE/tests/fast/quick/02.insttest/sparc/linux/simple-atomic 
passed.
* build/SPARC_SE/tests/fast/quick/00.hello/sparc/linux/simple-timing-ruby 
passed.
 * build/SPARC_SE/tests/fast/quick/02.insttest/sparc/linux/simple-timing 
passed.
* build/SPARC_SE/tests/fast/quick/02.insttest/sparc/linux/o3-timing passed.
* 
build/SPARC_SE/tests/fast/quick/40.m5threads-test-atomic/sparc/linux/simple-atomic-mp
 passed.
* 

Re: [m5-dev] Review Request: scons: show sources and targets when building.

2011-01-05 Thread Steve Reinhardt
On Tue, Jan 4, 2011 at 10:09 PM, nathan binkert n...@binkert.org wrote:

  Neat idea, but you need to check sys.stdout.isatty() and conditionally
  add the color.  Then you're going to want a way to override that if
 you're
  piping through less :)  Seems like we could add a --color option to the
  SCons command line.
 
  It actually crossed my mind earlier today to use colorization to
 distinguish
  the common prefix part of the source path from the source-specific part,
 as
  a way of eliminating the ambiguity of how to form the target.
 
  The isatty check would take care of the less problem, though...
 Actually less -r allows you to take the control characters, so the
 --color would override the isatty() == false and output the control
 codes anyway.


Ah, got it, I misunderstood your comment.


 As a thought, TRANSFORM should probably take the action abbreviation
 (e.g. CC) as a parameter if you're going to do the colorization.


I don't follow... do you think the filenames should be colorized differently
depending on the command?  Note that the TRANSFORM* functions don't get
called directly by the user so you can't add params anyway (unless there's a
mechanism I'm unaware of).


 This is all overkill, but is a nice feature imho.


True enough...

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


Re: [m5-dev] Review Request: scons: show sources and targets when building.

2011-01-05 Thread nathan binkert
 As a thought, TRANSFORM should probably take the action abbreviation
 (e.g. CC) as a parameter if you're going to do the colorization.

 I don't follow... do you think the filenames should be colorized differently
 depending on the command?  Note that the TRANSFORM* functions don't get
 called directly by the user so you can't add params anyway (unless there's a
 mechanism I'm unaware of).
No, I think all of the colorization should be in a single function.
It's definitely a mechanism to allow transform to take an argument.
So you change this:

main['CCCOMSTR']= ' [  CC] $TRANSFORM'

to this:

main['CCCOMSTR']= ' $TRANSFORM(CC)'

I had initially implemented the STRIP stuff like that and I don't
remember exactly how it worked, but my recollection is that
TRANSFORM(CC) was called, expected to return a callable, then that
callable was called as TRANSFORM is now (I just created a class).  All
that said, I think that the RHS of this thing is also allowed to be a
function and we don't have to use the SCons string substitution.
You'd want to do the same callable object thing.

Make sense?

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


Re: [m5-dev] Review Request: ruby: get rid of ruby's Debug.hh

2011-01-05 Thread Beckmann, Brad
1.   Below is a snip of a protocol trace that I recently used.  I think it 
is important for us maintain that there is no DPRINTF information prepended to 
each line.  The initial motivation for the protocol trace, was that tracing 
protocol transitions using standard debug print was too verbose.  These traces 
can be 100’MB if not GBs in size, so reducing the information printed to each 
line is important.  Nilay, could you send a snip of the trace with the patch 
applied?

2233850   3L1CacheLoad  IIS [0x409ec0, line 
0x409ec0]
2233850   3L1Cache  L2_Replacement  MMI [0x40cfc0, line 
0x40cfc0]
2233866   3L1Cache   Writeback_Ack MII  [0x10bd40, line 
0x10bd40]
2233866   3L1Cache   Writeback_Ack MII  [0x40cfc0, line 
0x40cfc0]
2234458   3SeqDone  [0x4033c3, line 
0x4033c0] 3380 cycles
2234458   3L1Cache  Exclusive_Data IMMM_W   [0x4033c0, line 
0x4033c0] 0Directory-0
2234458   3Seq   Begin  [0x40f883, line 
0x40f880] ST
2234459   3L1Cache All_acks_no_sharers   MM_WMM [0x4033c0, line 
0x4033c0]
2234508   3L1Cache  Exclusive_Data ISM_W[0x409ec0, line 
0x409ec0] 0Directory-0
2234509   3L1Cache All_acks_no_sharersM_WM  [0x409ec0, line 
0x409ec0]
2234510   3L1CacheL1_to_L2  [0x4033c0, line 
0x4033c0]
2234510   3L1CacheLoad  IIS [0x407ec0, line 
0x407ec0]
2234510   3L1Cache  L2_Replacement  MMI [0x40b4c0, line 
0x40b4c0]
2234510   3L1CacheL1_to_L2  MM  [0x409ec0, line 
0x409ec0]
2234510   3L1CacheLoad  IIS [0x100c40, line 
0x100c40]
2234510   3L1Cache  L2_Replacement MMMI [0x4033c0, line 
0x4033c0]



2.   Just for my own knowledge… Nate, you mentioned that handling the 
SIGABRT signal is the right way to make this feature work for all of M5.  Why 
is that?  Is it just the preference not to use macros that overwrite the 
meaning of assert, or is it something more fundamental?

Thanks,

Brad

From: Nilay Vaish [mailto:ni...@cs.wisc.edu]
Sent: Tuesday, January 04, 2011 7:24 PM
To: Steve Reinhardt; Ali Saidi; Gabe Black; Nathan Binkert
Cc: Nilay Vaish; Default; Beckmann, Brad
Subject: Re: Review Request: ruby: get rid of ruby's Debug.hh

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



On January 4th, 2011, 4:31 p.m., Brad Beckmann wrote:

Hi Nate,



I have a couple questions:



1. Have you looked at the protocol trace output after your change?  Does it 
look exactly like it did before?  It seems that the output should be the same 
based on my brief inspection of your patch, but I would like to be sure about 
that.  It may not be obvious, but there is a specific rational behind the 
format of the protocol trace and I want to make sure that stays the same.



2. With your patch applied, what happens if one hits an assert when running 
interactively?  Previously, the process would abort allowing one to attach gdb 
and examine what is going on.  I liked that feature and it would be great if we 
could maintain it.  Could we port that feature to all of M5?

On January 4th, 2011, 6:05 p.m., Nathan Binkert wrote:

1) I have not, because I don't know how, but I tried hard to make it exactly 
the same.  Can you help me out?  It won't look identical because DPRINTF 
prepends some stuff (curTick and object name)



2) we don't have a mechanism to have the process stall until GDB is attached, 
but given that this worked in Ruby only, I'd agree that this should be 
something that we do globally in M5.  The right way to do this would be to 
handle SIGABRT and stall in the abort handler (I think that should work).  Can 
we work on this patch and do that as a separate one?

Brad, do you have some protocol trace with you? I have seen the trace that gets 
generated with the current trace facility using Ruby trace flag. It prints all 
the events for all the cache controllers and network routers. If you prefer, I 
can send you an example trace. Or you can generate one by running m5.opt with 
trace file and trace flag options supplied.



./build/ALPHA_SE_MESI_CMP_directory/m5.opt  --trace-file=MESI.trace  
--trace-flags=Ruby ./configs/example/ruby_random_test.py -l 1000


- Nilay


On January 4th, 2011, 3:02 p.m., Nathan Binkert wrote:
Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan 
Binkert.
By Nathan Binkert.

Updated 2011-01-04 15:02:38

Description

ruby: get rid of ruby's Debug.hh



Get rid of the Debug class

Get rid of ASSERT and use assert

Use DPRINTF for ProtocolTrace


Testing

This compiles and passes all of the quick regressions, but it would be nice for 
a Ruby developer to take a look and see if I got rid of any useful 
functionality.


Diffs

 *   configs/ruby/Ruby.py (7338bc628489)
 *   src/mem/SConscript 

Re: [m5-dev] Review Request: O3: Fixes the way prefetches are handled inside the iew unit. This patch

2011-01-05 Thread Ali Saidi


 On 2010-12-21 17:29:39, Steve Reinhardt wrote:
  src/arch/arm/tlb.cc, line 562
  http://reviews.m5sim.org/r/342/diff/1/?file=5459#file5459line562
 
  It seems to me like we ought to have a generic check in the CPU models 
  that prevents prefetches to uncacheable locations rather than burying this 
  in the TLB and requiring every ISA to make this check.  (Which leads to the 
  question of how/whether this is handled in other ISAs...)

Prefetches aren't implemented in Alpha so this hasn't been an issue. I don't 
know that I agree it should be in a generic place because I don't know that 
uncachable is equivalent to non-prefetchable. For example, an memory could be 
marked cacheable but not prefetchable in sparc if memory serves (same is 
probably true for some ASI accesses). I think the TLB really needs to make the 
decision because it's got all of the relevant information. 


- Ali


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


On 2010-12-06 16:12:26, Ali Saidi wrote:
 
 ---
 This is an automatically generated e-mail. To reply, visit:
 http://reviews.m5sim.org/r/342/
 ---
 
 (Updated 2010-12-06 16:12:26)
 
 
 Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and 
 Nathan Binkert.
 
 
 Summary
 ---
 
 O3: Fixes the way prefetches are handled inside the iew unit. This patch
 prevents the prefetch being added to the instCommit queue twice.
 
 
 Diffs
 -
 
   src/arch/arm/faults.hh 2b5fbdcbfb5d 
   src/arch/arm/tlb.cc 2b5fbdcbfb5d 
   src/cpu/o3/iew_impl.hh 2b5fbdcbfb5d 
 
 Diff: http://reviews.m5sim.org/r/342/diff
 
 
 Testing
 ---
 
 
 Thanks,
 
 Ali
 


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


Re: [m5-dev] Review Request: ruby: get rid of ruby's Debug.hh

2011-01-05 Thread Nilay
Brad,

This how protocol trace would look like. I actually did not some such
thing exists. I was currently relying on DPRINTF statements for checking
the events that occurred. This is certainly easier to read and much more
compact.

   1395: system.l1_cntrl3:1395   3L1Cache  L1_Replacement
IMIM [0x15c0, line 0x15c0]
   1395: system.l1_cntrl2:1395   2L1Cache  L1_Replacement
IMIM [0x3ac0, line 0x3ac0]
   1395: system.l1_cntrl2:1395   2L1Cache  L1_Replacement
IMIM [0x3ac0, line 0x3ac0]
   1395: system.l1_cntrl2:1395   2L1Cache  L1_Replacement
IMIM [0x3ac0, line 0x3ac0]
   1396: system.l1_cntrl1:1396   1L1Cache  L1_Replacement
IMIM [0x2ac0, line 0x2ac0]
   1397: system.ruby.cpu_ruby_ports2:1397   2Seq  
 Done  [0x3ae8, line 0x3ac0] 1386 cycles
   1397: system.l1_cntrl2:1397   2L1Cache   Data_all_Acks
IMM  [0x3ac0, line 0x3ac0]
   1397: system.l1_cntrl3:1397   3L1Cache  L1_Replacement
IMIM [0x15c0, line 0x15c0]
   1397: system.l2_cntrl0:1397   0L2CacheL2_Replacement_clean 
MT_MBMT_MB  [0x3ac0, line 0x3ac0]
   1400: system.l2_cntrl0:1400   0L2Cache L1_GETX 
MT_MBMT_MB  [0x400, line 0x400]
   1401: system.l2_cntrl0:1401   0L2CacheL2_Replacement_clean 
MT_MBMT_MB  [0x3ac0, line 0x3ac0]
   1402: system.l1_cntrl0:1402   0L1Cache  L1_Replacement
IMIM [0x4dc0, line 0x4dc0]
   1402: system.l1_cntrl2:1402   2L1Cache  L1_Replacement
IMIM [0xdc0, line 0xdc0]
   1402: system.l1_cntrl2:1402   2L1Cache  L1_Replacement
IMIM [0xdc0, line 0xdc0]



On Wed, January 5, 2011 10:26 am, Beckmann, Brad wrote:
 1.   Below is a snip of a protocol trace that I recently used.  I
 think it is important for us maintain that there is no DPRINTF information
 prepended to each line.  The initial motivation for the protocol trace,
 was that tracing protocol transitions using standard debug print was too
 verbose.  These traces can be 100’MB if not GBs in size, so reducing the
 information printed to each line is important.  Nilay, could you send a
 snip of the trace with the patch applied?

 2233850   3L1CacheLoad  IIS [0x409ec0, line
 0x409ec0]
 2233850   3L1Cache  L2_Replacement  MMI [0x40cfc0, line
 0x40cfc0]
 2233866   3L1Cache   Writeback_Ack MII  [0x10bd40, line
 0x10bd40]
 2233866   3L1Cache   Writeback_Ack MII  [0x40cfc0, line
 0x40cfc0]
 2234458   3SeqDone  [0x4033c3, line
 0x4033c0] 3380 cycles
 2234458   3L1Cache  Exclusive_Data IMMM_W   [0x4033c0, line
 0x4033c0] 0Directory-0
 2234458   3Seq   Begin  [0x40f883, line
 0x40f880] ST
 2234459   3L1Cache All_acks_no_sharers   MM_WMM [0x4033c0, line
 0x4033c0]
 2234508   3L1Cache  Exclusive_Data ISM_W[0x409ec0, line
 0x409ec0] 0Directory-0
 2234509   3L1Cache All_acks_no_sharersM_WM  [0x409ec0, line
 0x409ec0]
 2234510   3L1CacheL1_to_L2  [0x4033c0, line
 0x4033c0]
 2234510   3L1CacheLoad  IIS [0x407ec0, line
 0x407ec0]
 2234510   3L1Cache  L2_Replacement  MMI [0x40b4c0, line
 0x40b4c0]
 2234510   3L1CacheL1_to_L2  MM  [0x409ec0, line
 0x409ec0]
 2234510   3L1CacheLoad  IIS [0x100c40, line
 0x100c40]
 2234510   3L1Cache  L2_Replacement MMMI [0x4033c0, line
 0x4033c0]



 2.   Just for my own knowledge… Nate, you mentioned that handling
 the SIGABRT signal is the right way to make this feature work for all of
 M5.  Why is that?  Is it just the preference not to use macros that
 overwrite the meaning of assert, or is it something more fundamental?

 Thanks,

 Brad

 From: Nilay Vaish [mailto:ni...@cs.wisc.edu]
 Sent: Tuesday, January 04, 2011 7:24 PM
 To: Steve Reinhardt; Ali Saidi; Gabe Black; Nathan Binkert
 Cc: Nilay Vaish; Default; Beckmann, Brad
 Subject: Re: Review Request: ruby: get rid of ruby's Debug.hh

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



 On January 4th, 2011, 4:31 p.m., Brad Beckmann wrote:

 Hi Nate,



 I have a couple questions:



 1. Have you looked at the protocol trace output after your change?  Does
 it look exactly like it did before?  It seems that the output should be
 the same based on my brief inspection of your patch, but I would like to
 be sure about that.  It may not be obvious, but there is a specific
 rational behind the format of the protocol trace and I want to make sure
 that stays the same.



 2. With your patch applied, what happens if one hits an assert when
 running interactively?  Previously, the process would abort allowing one
 to attach gdb and examine what is going on.  I liked 

Re: [m5-dev] curTick global variable

2011-01-05 Thread Steve Reinhardt
On Tue, Jan 4, 2011 at 5:56 PM, nathan binkert n...@binkert.org wrote:

  I want to keep this a purely syntactic change, because I think the semantic 
 changes are going to require some discussion.  For example, my current 
 next-step patch replaces mainEventQueue with an array of queues (so there is 
 no single main event queue any more), and uses TLS to implement per-thread 
 curTick values rather than embedding them in the queues, so it doesn't follow 
 the path you're proposing.  If you want to discuss this further please start 
 a new email thread.

 The good news is that once this patch gets committed then all these options 
 can be explored with fairly local changes.


 Interesting.  If you were going to do this, why do you need accessors at
 all?


It's a flexibility/fear-of-commitment thing... initially I wasn't positive
which way I would go, and once I decided that
curTick-as-EventQueue/Manager-field wasn't going to work well (too many
places where it's pretty awkward to find the object pointer), I figured it
would still be useful in case we need to use pthread_setspecific/getspecific
on some platforms (OS X? OpenBSD? Cygwin?).

I also kind of like how it indicates that curTick is not a normal
variable... implicitly declaring it as part of TLS in one file without any
indication at each reference that it's different seems potentially
confusing.


 This seems to mean that I shouldn't have created the whole EventManager
 thing and had schedule be a per-object thing.


Why do you say that?  Because you could put the EventQueue pointer in TLS
too and not do the object-based lookup?  I think it would be useful to check
that the EventManager queue pointer and the TLS queue pointer are the same.


 TLS scares me, but maybe that's unnecessarily. :)


Why?


 How were you planning on having thread 1 schedule an event on thread 2's
 eventq?  Were you going to use some sort of FIFO between threads?  One per
 eventq with a lock only on the producer side, or one lock-free per pair of
 threads?  (I assume the former.  I have code somewhere for the latter that I
 wrote a long time ago.)  Further assuming that the FIFO is a yes, how were
 you going to check it?  Polling it periodically?  Seems that this could all
 be rolled into the whole async wrapper around the event queue.


I haven't gotten that far yet, but yes, something like the locked external
queue with async polling was what I was thinking of so far.  I've been
approaching it more top-down: what should simulate() look like, how do we do
initialization, etc.


 Anyway, I've thought about this a lot.  Happy to do a phone call if you
 want.


Sure, I've got some time today late morning  early afternoon if you're
free.

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


Re: [m5-dev] Review Request: ruby: get rid of ruby's Debug.hh

2011-01-05 Thread nathan binkert
Looks like we should just remove the first, second, and third columns
that are spit out since they're covered almost exactly by the implicit
columns added by DPRINTF.  Right?

  Nate

 This how protocol trace would look like. I actually did not some such
 thing exists. I was currently relying on DPRINTF statements for checking
 the events that occurred. This is certainly easier to read and much more
 compact.

   1395: system.l1_cntrl3:    1395   3    L1Cache      L1_Replacement
 IMIM     [0x15c0, line 0x15c0]
   1395: system.l1_cntrl2:    1395   2    L1Cache      L1_Replacement
 IMIM     [0x3ac0, line 0x3ac0]
   1395: system.l1_cntrl2:    1395   2    L1Cache      L1_Replacement
 IMIM     [0x3ac0, line 0x3ac0]
   1395: system.l1_cntrl2:    1395   2    L1Cache      L1_Replacement
 IMIM     [0x3ac0, line 0x3ac0]
   1396: system.l1_cntrl1:    1396   1    L1Cache      L1_Replacement
 IMIM     [0x2ac0, line 0x2ac0]
   1397: system.ruby.cpu_ruby_ports2:    1397   2        Seq
  Done              [0x3ae8, line 0x3ac0] 1386 cycles
   1397: system.l1_cntrl2:    1397   2    L1Cache       Data_all_Acks
 IMM      [0x3ac0, line 0x3ac0]
   1397: system.l1_cntrl3:    1397   3    L1Cache      L1_Replacement
 IMIM     [0x15c0, line 0x15c0]
   1397: system.l2_cntrl0:    1397   0    L2CacheL2_Replacement_clean
 MT_MBMT_MB  [0x3ac0, line 0x3ac0]
   1400: system.l2_cntrl0:    1400   0    L2Cache             L1_GETX
 MT_MBMT_MB  [0x400, line 0x400]
   1401: system.l2_cntrl0:    1401   0    L2CacheL2_Replacement_clean
 MT_MBMT_MB  [0x3ac0, line 0x3ac0]
   1402: system.l1_cntrl0:    1402   0    L1Cache      L1_Replacement
 IMIM     [0x4dc0, line 0x4dc0]
   1402: system.l1_cntrl2:    1402   2    L1Cache      L1_Replacement
 IMIM     [0xdc0, line 0xdc0]
   1402: system.l1_cntrl2:    1402   2    L1Cache      L1_Replacement
 IMIM     [0xdc0, line 0xdc0]



 On Wed, January 5, 2011 10:26 am, Beckmann, Brad wrote:
 1.       Below is a snip of a protocol trace that I recently used.  I
 think it is important for us maintain that there is no DPRINTF information
 prepended to each line.  The initial motivation for the protocol trace,
 was that tracing protocol transitions using standard debug print was too
 verbose.  These traces can be 100’MB if not GBs in size, so reducing the
 information printed to each line is important.  Nilay, could you send a
 snip of the trace with the patch applied?

 2233850   3    L1Cache                Load      IIS     [0x409ec0, line
 0x409ec0]
 2233850   3    L1Cache      L2_Replacement      MMI     [0x40cfc0, line
 0x40cfc0]
 2233866   3    L1Cache       Writeback_Ack     MII      [0x10bd40, line
 0x10bd40]
 2233866   3    L1Cache       Writeback_Ack     MII      [0x40cfc0, line
 0x40cfc0]
 2234458   3        Seq                Done              [0x4033c3, line
 0x4033c0] 3380 cycles
 2234458   3    L1Cache      Exclusive_Data     IMMM_W   [0x4033c0, line
 0x4033c0] 0Directory-0
 2234458   3        Seq               Begin              [0x40f883, line
 0x40f880] ST
 2234459   3    L1Cache All_acks_no_sharers   MM_WMM     [0x4033c0, line
 0x4033c0]
 2234508   3    L1Cache      Exclusive_Data     ISM_W    [0x409ec0, line
 0x409ec0] 0Directory-0
 2234509   3    L1Cache All_acks_no_sharers    M_WM      [0x409ec0, line
 0x409ec0]
 2234510   3    L1Cache            L1_to_L2          [0x4033c0, line
 0x4033c0]
 2234510   3    L1Cache                Load      IIS     [0x407ec0, line
 0x407ec0]
 2234510   3    L1Cache      L2_Replacement      MMI     [0x40b4c0, line
 0x40b4c0]
 2234510   3    L1Cache            L1_to_L2      MM      [0x409ec0, line
 0x409ec0]
 2234510   3    L1Cache                Load      IIS     [0x100c40, line
 0x100c40]
 2234510   3    L1Cache      L2_Replacement     MMMI     [0x4033c0, line
 0x4033c0]



 2.       Just for my own knowledge… Nate, you mentioned that handling
 the SIGABRT signal is the right way to make this feature work for all of
 M5.  Why is that?  Is it just the preference not to use macros that
 overwrite the meaning of assert, or is it something more fundamental?

 Thanks,

 Brad

 From: Nilay Vaish [mailto:ni...@cs.wisc.edu]
 Sent: Tuesday, January 04, 2011 7:24 PM
 To: Steve Reinhardt; Ali Saidi; Gabe Black; Nathan Binkert
 Cc: Nilay Vaish; Default; Beckmann, Brad
 Subject: Re: Review Request: ruby: get rid of ruby's Debug.hh

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



 On January 4th, 2011, 4:31 p.m., Brad Beckmann wrote:

 Hi Nate,



 I have a couple questions:



 1. Have you looked at the protocol trace output after your change?  Does
 it look exactly like it did before?  It seems that the output should be
 the same based on my brief inspection of your patch, but I would like to
 be sure about that.  It may not be obvious, but there is a specific
 rational behind the format of the protocol trace and I want to make sure
 that stays the same.



 2. With your patch applied, what happens if one hits an 

Re: [m5-dev] Review Request: ruby: get rid of ruby's Debug.hh

2011-01-05 Thread nathan binkert

 1.   Below is a snip of a protocol trace that I recently used.  I
 think it is important for us maintain that there is no DPRINTF information
 prepended to each line.  The initial motivation for the protocol trace, was
 that tracing protocol transitions using standard debug print was too
 verbose.  These traces can be 100’MB if not GBs in size, so reducing the
 information printed to each line is important.  Nilay, could you send a snip
 of the trace with the patch applied?

Re DPRINTF, see my response to Nilay, but in short, we should just remove
some of the columns that you guys have and I think it will be a wash.  If
that's not sufficient, we can use DPRINTFN.  One thing to do then would be
to add support for writing these to a gzipped file (that may already just
work), no?

2.   Just for my own knowledge… Nate, you mentioned that handling the
 SIGABRT signal is the right way to make this feature work for all of M5.
 Why is that?  Is it just the preference not to use macros that overwrite the
 meaning of assert, or is it something more fundamental?

Not fundamental.  Mostly because we don't want multiple meanings of assert.
 It seems that if we could get this to work properly that it would be
easiest as well.

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


Re: [m5-dev] Review Request: ruby: get rid of ruby's Debug.hh

2011-01-05 Thread Beckmann, Brad
Is it possible to fix the width of the information prepended by DPRINTF?  I 
would be great if we could maintain the current fixed width format.

Brad


-Original Message-
From: bink...@gmail.com [mailto:bink...@gmail.com] On Behalf Of nathan binkert
Sent: Wednesday, January 05, 2011 10:36 AM
To: M5 Developer List
Cc: Beckmann, Brad
Subject: Re: [m5-dev] Review Request: ruby: get rid of ruby's Debug.hh

Looks like we should just remove the first, second, and third columns that are 
spit out since they're covered almost exactly by the implicit columns added by 
DPRINTF.  Right?

  Nate

 This how protocol trace would look like. I actually did not some such 
 thing exists. I was currently relying on DPRINTF statements for 
 checking the events that occurred. This is certainly easier to read 
 and much more compact.

   1395: system.l1_cntrl3:    1395   3    L1Cache      L1_Replacement
 IMIM     [0x15c0, line 0x15c0]
   1395: system.l1_cntrl2:    1395   2    L1Cache      L1_Replacement
 IMIM     [0x3ac0, line 0x3ac0]
   1395: system.l1_cntrl2:    1395   2    L1Cache      L1_Replacement
 IMIM     [0x3ac0, line 0x3ac0]
   1395: system.l1_cntrl2:    1395   2    L1Cache      L1_Replacement
 IMIM     [0x3ac0, line 0x3ac0]
   1396: system.l1_cntrl1:    1396   1    L1Cache      L1_Replacement
 IMIM     [0x2ac0, line 0x2ac0]
   1397: system.ruby.cpu_ruby_ports2:    1397   2        Seq
  Done              [0x3ae8, line 0x3ac0] 1386 cycles
   1397: system.l1_cntrl2:    1397   2    L1Cache       Data_all_Acks
 IMM      [0x3ac0, line 0x3ac0]
   1397: system.l1_cntrl3:    1397   3    L1Cache      L1_Replacement
 IMIM     [0x15c0, line 0x15c0]
   1397: system.l2_cntrl0:    1397   0    L2CacheL2_Replacement_clean 
 MT_MBMT_MB  [0x3ac0, line 0x3ac0]
   1400: system.l2_cntrl0:    1400   0    L2Cache             L1_GETX 
 MT_MBMT_MB  [0x400, line 0x400]
   1401: system.l2_cntrl0:    1401   0    L2CacheL2_Replacement_clean 
 MT_MBMT_MB  [0x3ac0, line 0x3ac0]
   1402: system.l1_cntrl0:    1402   0    L1Cache      L1_Replacement
 IMIM     [0x4dc0, line 0x4dc0]
   1402: system.l1_cntrl2:    1402   2    L1Cache      L1_Replacement
 IMIM     [0xdc0, line 0xdc0]
   1402: system.l1_cntrl2:    1402   2    L1Cache      L1_Replacement
 IMIM     [0xdc0, line 0xdc0]



 On Wed, January 5, 2011 10:26 am, Beckmann, Brad wrote:
 1.       Below is a snip of a protocol trace that I recently used.  I 
 think it is important for us maintain that there is no DPRINTF 
 information prepended to each line.  The initial motivation for the 
 protocol trace, was that tracing protocol transitions using standard 
 debug print was too verbose.  These traces can be 100’MB if not GBs 
 in size, so reducing the information printed to each line is 
 important.  Nilay, could you send a snip of the trace with the patch applied?

 2233850   3    L1Cache                Load      IIS     [0x409ec0, 
 line 0x409ec0]
 2233850   3    L1Cache      L2_Replacement      MMI     [0x40cfc0, 
 line 0x40cfc0]
 2233866   3    L1Cache       Writeback_Ack     MII      [0x10bd40, 
 line 0x10bd40]
 2233866   3    L1Cache       Writeback_Ack     MII      [0x40cfc0, 
 line 0x40cfc0]
 2234458   3        Seq                Done              [0x4033c3, 
 line 0x4033c0] 3380 cycles
 2234458   3    L1Cache      Exclusive_Data     IMMM_W   [0x4033c0, 
 line 0x4033c0] 0Directory-0
 2234458   3        Seq               Begin              [0x40f883, 
 line 0x40f880] ST
 2234459   3    L1Cache All_acks_no_sharers   MM_WMM     [0x4033c0, 
 line 0x4033c0]
 2234508   3    L1Cache      Exclusive_Data     ISM_W    [0x409ec0, 
 line 0x409ec0] 0Directory-0
 2234509   3    L1Cache All_acks_no_sharers    M_WM      [0x409ec0, 
 line 0x409ec0]
 2234510   3    L1Cache            L1_to_L2          [0x4033c0, 
 line 0x4033c0]
 2234510   3    L1Cache                Load      IIS     [0x407ec0, 
 line 0x407ec0]
 2234510   3    L1Cache      L2_Replacement      MMI     [0x40b4c0, 
 line 0x40b4c0]
 2234510   3    L1Cache            L1_to_L2      MM      [0x409ec0, 
 line 0x409ec0]
 2234510   3    L1Cache                Load      IIS     [0x100c40, 
 line 0x100c40]
 2234510   3    L1Cache      L2_Replacement     MMMI     [0x4033c0, 
 line 0x4033c0]



 2.       Just for my own knowledge… Nate, you mentioned that 
 handling the SIGABRT signal is the right way to make this feature 
 work for all of M5.  Why is that?  Is it just the preference not to 
 use macros that overwrite the meaning of assert, or is it something more 
 fundamental?

 Thanks,

 Brad

 From: Nilay Vaish [mailto:ni...@cs.wisc.edu]
 Sent: Tuesday, January 04, 2011 7:24 PM
 To: Steve Reinhardt; Ali Saidi; Gabe Black; Nathan Binkert
 Cc: Nilay Vaish; Default; Beckmann, Brad
 Subject: Re: Review Request: ruby: get rid of ruby's Debug.hh

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



 On January 4th, 2011, 4:31 p.m., Brad Beckmann wrote:

 Hi Nate,



 I have a couple questions:



 

Re: [m5-dev] Review Request: ruby: get rid of ruby's Debug.hh

2011-01-05 Thread Beckmann, Brad
So if we explicitly handled the SIGABRT signal, we would only want to do that 
if we are running interactively, correct?  If so, then we would still have some 
sort of conditional similar, if not the same as, the current conditional in the 
assert macro if (isatty(STDIN_FILENO)).  If my understanding is correct, then 
we would still have multiple behaviors for assert.  One when the running 
interactively and another when running in batch mode.

Am I missing something?  I just want to make sure I understand why we don't 
want to just move the current Ruby ASSERT macro into src/base/debug.hh (or some 
other file in src/base).

Thanks,

Brad


From: bink...@gmail.com [mailto:bink...@gmail.com] On Behalf Of nathan binkert
Sent: Wednesday, January 05, 2011 10:40 AM
To: Beckmann, Brad
Cc: Nilay Vaish; Steve Reinhardt; Ali Saidi; Gabe Black; Default
Subject: Re: Review Request: ruby: get rid of ruby's Debug.hh

2.   Just for my own knowledge... Nate, you mentioned that handling the 
SIGABRT signal is the right way to make this feature work for all of M5.  Why 
is that?  Is it just the preference not to use macros that overwrite the 
meaning of assert, or is it something more fundamental?
Not fundamental.  Mostly because we don't want multiple meanings of assert.  It 
seems that if we could get this to work properly that it would be easiest as 
well.

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


Re: [m5-dev] curTick global variable

2011-01-05 Thread nathan binkert
 It's a flexibility/fear-of-commitment thing... initially I wasn't positive
 which way I would go, and once I decided that
 curTick-as-EventQueue/Manager-field wasn't going to work well (too many
 places where it's pretty awkward to find the object pointer), I figured it
 would still be useful in case we need to use pthread_setspecific/getspecific
 on some platforms (OS X? OpenBSD? Cygwin?).
Makes sense.

 I also kind of like how it indicates that curTick is not a normal
 variable... implicitly declaring it as part of TLS in one file without any
 indication at each reference that it's different seems potentially
 confusing.
Good point.

 Why do you say that?  Because you could put the EventQueue pointer in TLS
 too and not do the object-based lookup?  I think it would be useful to check
 that the EventManager queue pointer and the TLS queue pointer are the same.
Sounds good.

 TLS scares me, but maybe that's unnecessarily. :)
 Why?
Because it's essentially global variable with somewhat complicated
semantics, but if it's hidden, I'm cool.

 I haven't gotten that far yet, but yes, something like the locked external
 queue with async polling was what I was thinking of so far.  I've been
 approaching it more top-down: what should simulate() look like, how do we do
 initialization, etc.

Cool.  I should dig up my code.

 Sure, I've got some time today late morning  early afternoon if you're
 free.
I'm in a meeting that will end in the next 15 mins to half hour.
After that I've got nothing.

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


Re: [m5-dev] Review Request: ruby: get rid of ruby's Debug.hh

2011-01-05 Thread nathan binkert
 Is it possible to fix the width of the information prepended by DPRINTF?  I 
 would be great if we could maintain the current fixed width format.

That might be hard (and may argue for DPRINTFN).  In practice, when I
want that, I usually just ensure that my object names end up not
varying in length.

e.g. system0.cpu0.l1_foo0.  If I have more than 10 things, I make the
name cpu00 or something like that.

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


Re: [m5-dev] Review Request: ruby: get rid of ruby's Debug.hh

2011-01-05 Thread nathan binkert
 So if we explicitly handled the SIGABRT signal, we would only want to do
 that if we are running interactively, correct?  If so, then we would still
 have some sort of conditional similar, if not the same as, the current
 conditional in the assert macro “if (isatty(STDIN_FILENO))”.  If my
 understanding is correct, then we would still have multiple behaviors for
 assert.  One when the running interactively and another when running in
 batch mode.

Right.  Though, we'd probably only handle the SIGABRT in the case of
an interactive session as opposed to doing the check in the handler.

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


Re: [m5-dev] Review Request: ruby: get rid of ruby's Debug.hh

2011-01-05 Thread Beckmann, Brad
Yeah, that seems rather tedious.  Let's just use DPRINTFN and maintain the 
current format.  As long as the protocol trace format looks the same as before, 
I'm happy with the change.

Brad


-Original Message-
From: bink...@gmail.com [mailto:bink...@gmail.com] On Behalf Of nathan binkert
Sent: Wednesday, January 05, 2011 12:30 PM
To: Beckmann, Brad
Cc: M5 Developer List
Subject: Re: [m5-dev] Review Request: ruby: get rid of ruby's Debug.hh

 Is it possible to fix the width of the information prepended by DPRINTF?  I 
 would be great if we could maintain the current fixed width format.

That might be hard (and may argue for DPRINTFN).  In practice, when I want 
that, I usually just ensure that my object names end up not varying in length.

e.g. system0.cpu0.l1_foo0.  If I have more than 10 things, I make the name 
cpu00 or something like that.

  Nate


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


Re: [m5-dev] Review Request: Changing how CacheMemory interfaces with SLICC

2011-01-05 Thread Beckmann, Brad
Hi Nilay,

Lisa Hsu (another member of the lab here at AMD) and I were discussing these 
changes a bit more and there was one particular idea that came out of our 
conversation that I wanted to relay to you.  Basically, we were thinking about 
how these changes will impact the flexibility of SLICC and we concluded that it 
is important to allow one to craft custom getCacheEntry functions for each 
protocol.  I know initially I was hoping to generate these functions, but I now 
don’t think that is possible without restricting what protocols can be support 
by SLICC.  Instead we can use these customized getCacheEntry functions to pass 
the cache entry to the actions via the trigger function.  For those controllers 
that manage multiple cache memories, it is up to the programmer to understand 
what the cache entry pointer points to.  That should eliminate the need to have 
multiple *cacheMemory_entry  variables in the .sm files.  Instead there is just 
the cache_entry variable that is set either by the trigger function call or 
set_cache_entry.

Does that make sense to you?

Brad


From: Nilay Vaish [mailto:ni...@cs.wisc.edu]
Sent: Tuesday, January 04, 2011 9:43 AM
To: Nilay Vaish; Default; Beckmann, Brad
Subject: Re: Review Request: Changing how CacheMemory interfaces with SLICC

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



On January 3rd, 2011, 3:31 p.m., Brad Beckmann wrote:

Hi Nilay,



First, I must say this is an impressive amount of work.  You definitely got a 
lot done over holiday break. :)



Overall, this set of patches is definitely close, but I want to see if we can 
take them a step forward.  Also I have a few suggestions that may make things 
easier.  Finally, I have a bunch of minor questions/suggestions on individual 
lines, but I’ll hold off on those until you can respond to my higher-level 
questions.



The main thing I would like to see improved is not having to differentiate 
between “entry” and “entry_ptr” in the .sm files.  Am I correct that the only 
functions in the .sm files that are passed an “entry_ptr” are “is_valid_ptr”, 
“getCacheEntry”, and “set_cache_entry”?  If so, it seems that all three 
functions are generated with unique python code, either in an AST file or 
StateMachine.py.  Therefore, could we just pass these functions “entry” and 
rely on the underneath python code to generate the correct references?  This 
would make things more readable, “is_valid_ptr()” becomes “is_valid”, and it 
doesn’t require the slicc programmer to understand which functions take an 
entry pointer versus the entry itself.  If we can’t make such a change, I worry 
about how much extra complexity this change pushes on the slicc programmer.



Also another suggestion to make things more readable, please replace the name 
L1IcacheMemory_entry with L1I_entry.  Do the same for L1D_entry and L2_entry.  
That will shorten many of your lines.



So am I correct that hammer’s simultaneous usage of valid L1 and L2 cache 
entries in certain transitions is the only reason that within all actions, the 
getCacheEntry calls take multiple cache entries?  If so, I think it would be 
fairly trivial to use a tbe entry as an intermediary between the L1 and L2 for 
those particular hammer transitions.  That way only one cache entry is valid at 
any particular time, and we can simply use the variable cache_entry in the 
actions.  That should clean things up a lot.



By the way, once you check in these patches, the MESI_CMP_directory protocol 
will be deprecated, correct?  If so, make sure you include a patch that removes 
it from the regression tester.



Brad





 The main thing I would like to see improved is not having to differentiate

 between “entry” and “entry_ptr” in the .sm files.  Am I correct

 that the only functions in the .sm files that are passed an

 “entry_ptr” are “is_valid_ptr”, “getCacheEntry”, and

 “set_cache_entry”?  If so, it seems that all three functions are

 generated with unique python code, either in an AST file or

 StateMachine.py.  Therefore, could we just pass these functions

 “entry” and rely on the underneath python code to generate the correct

 references?  This would make things more readable, “is_valid_ptr()”

 becomes “is_valid”, and it doesn’t require the slicc programmer to

 understand which functions take an entry pointer versus the entry itself.

 If we can’t make such a change, I worry about how much extra complexity

 this change pushes on the slicc programmer.



There are functions that are passed cache entry and transaction buffer entry as 
arguments. Currently, I assume that these arguments are passed using pointers.





 Also another suggestion to make things more readable, please replace the

 name L1IcacheMemory_entry with L1I_entry.  Do the same for L1D_entry and

 L2_entry.  That will shorten many of your lines.



The names of the cache entry variables are