[m5-dev] Cron m5t...@zizzer /z/m5/regression/do-regression quick
* build/ALPHA_SE/tests/fast/quick/60.rubytest/alpha/linux/rubytest-ruby passed. * build/ALPHA_SE/tests/fast/quick/00.hello/alpha/linux/simple-timing passed. * build/ALPHA_SE/tests/fast/quick/00.hello/alpha/linux/o3-timing passed. * build/ALPHA_SE/tests/fast/quick/30.eio-mp/alpha/eio/simple-timing-mp passed. * build/ALPHA_SE/tests/fast/quick/30.eio-mp/alpha/eio/simple-atomic-mp passed. * build/ALPHA_SE/tests/fast/quick/20.eio-short/alpha/eio/simple-timing passed. * build/ALPHA_SE/tests/fast/quick/01.hello-2T-smt/alpha/linux/o3-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/simple-timing passed. * build/ALPHA_SE/tests/fast/quick/00.hello/alpha/linux/inorder-timing passed. * build/ALPHA_SE/tests/fast/quick/00.hello/alpha/tru64/simple-timing-ruby passed. * 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-atomic passed. * build/ALPHA_SE/tests/fast/quick/00.hello/alpha/linux/simple-timing-ruby passed. * build/ALPHA_SE/tests/fast/quick/00.hello/alpha/tru64/o3-timing passed. * build/ALPHA_SE/tests/fast/quick/50.memtest/alpha/linux/memtest-ruby 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_MOESI_hammer/tests/fast/quick/50.memtest/alpha/linux/memtest-ruby-MOESI_hammer passed. * build/ALPHA_SE/tests/fast/quick/50.memtest/alpha/linux/memtest passed. * build/ALPHA_SE_MESI_CMP_directory/tests/fast/quick/60.rubytest/alpha/linux/rubytest-ruby-MESI_CMP_directory 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/50.memtest/alpha/linux/memtest-ruby-MESI_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/tru64/simple-timing-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_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/60.rubytest/alpha/linux/rubytest-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/00.hello/alpha/linux/simple-timing-ruby-MOESI_CMP_token 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-dual 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-timing passed. * build/ALPHA_FS/tests/fast/quick/10.linux-boot/alpha/linux/tsunami-simple-timing-dual passed. * build/ALPHA_FS/tests/fast/quick/80.netperf-stream/alpha/linux/twosys-tsunami-simple-atomic passed. * build/MIPS_SE/tests/fast/quick/00.hello/mips/linux/o3-timing 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-atomic passed. * build/MIPS_SE/tests/fast/quick/00.hello/mips/linux/simple-timing passed. * build/MIPS_SE/tests/fast/quick/00.hello/mips/linux/inorder-timing passed. * build/POWER_SE/tests/fast/quick/00.hello/power/linux/simple-atomic passed. * build/POWER_SE/tests/fast/quick/00.hello/power/linux/o3-timing passed. * build/SPARC_SE/tests/fast/quick/00.hello/sparc/linux/simple-atomic passed. * build/SPARC_SE/tests/fast/quick/00.hello/sparc/linux/simple-timing passed. * build/SPARC_SE/tests/fast/quick/02.insttest/sparc/linux/simple-timing passed. * build/SPARC_SE/tests/fast/quick/40.m5threads-test-atomic/sparc/linux/simple-atomic-mp passed. * build/SPARC_SE/tests/fast/quick/40.m5threads-test-atomic/sparc/linux/simple-timing-mp passed. * build/SPARC_SE/tests/fast/quick/02.insttest/sparc/linux/o3-timing passed. *
Re: [m5-dev] Review Request: Changing how CacheMemory interfaces with SLICC
On 2011-01-03 15:31:20, 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 currently tied with the names of the cache memory variables belonging to the machine. If the name of the cache memory variable is A, then the corresponding cache entry variable is named A_entry. 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. Oops! Should have thought of that before doing all those changes. But can we assume that we would always have only one valid cache entry pointer at any given time? If that's true, I would probably revert to previous version of the patch. This should also resolve the naming issue. 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. I have a patch for the protocol, but I need to discuss it. Do you think it is possible that a protocol is not in a dead lock but random tester outputs so because the underlying memory system is taking too much time? The patch works for 1, 2,
Re: [m5-dev] Review Request: Changing how CacheMemory interfaces with SLICC
Hi Nilay, On deadlock issue with MESI_CMP_directory : Yes, this can happen as ruby_tester or Sequencer only reports *possible* deadlocks. With higher number of processors there is more contention (and thus latency) and it can mistakenly report deadlock. I generally look at the protocol trace to figure out whether there is actually any deadlock or not. You can also try doubling the Sequencer deadlock threshold and see if the problem goes away. If its a true deadlock, it will break again. On some related note, as Brad has pointed out MESI_CMP_directory has its share of issues. Recently one of Prof. Sarita Adve's student e-mailed us (Multifacet) about 6 bugs he found while model checking the MESI_CMP_directory (including a major one). I took some time to look at them and it seems like MESI_CMP_directory is now fixed (hopefully). The modified protocol is now passing 1M checks with 16 processors with multiple random seeds. I can locally coordinate with you on this, if you want. Thanks Arka On 01/04/2011 11:43 AM, Nilay Vaish wrote: On 2011-01-03 15:31:20, 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 currently tied with the names of the cache memory variables belonging to the machine. If the name of the cache memory variable is A, then the corresponding cache entry variable is named A_entry. 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
Re: [m5-dev] Review Request: Changing how CacheMemory interfaces with SLICC
Hi Nilay, My responses are below: 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. [BB] So does that mean that the cache entry is always passed in as a pointer? If so, can one just use cache_entry for all function calls and remove any use of cache_entry_ptr in the .sm files? That is essentially what I would like to see. 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 currently tied with the names of the cache memory variables belonging to the machine. If the name of the cache memory variable is A, then the corresponding cache entry variable is named A_entry. [BB] Ah, I see. Ok then let's just keep them the way they are for now. We can deal with shorting the names later. 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. Oops! Should have thought of that before doing all those changes. But can we assume that we would always have only one valid cache entry pointer at any given time? If that's true, I would probably revert to previous version of the patch. This should also resolve the naming issue. [BB] I wouldn't have expected you to realize that. It is one of those things that isn't completely obvious without spending a lot of time developing protocols. Yes, I think it is easiest for you to just revert to the previous version of the patch and just modify the hammer protocol to use a tbe entry as an intermediary. We've always had an unofficial rule that a controller can only manage multiple caches if those caches are exclusive with respect to each other. For the most part, that rule has been followed by all the protocols I'm familiar with. I think your change just makes that an official policy. 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. I have a patch for the protocol, but I need to discuss it. Do you think it is possible that a protocol is not in a dead lock but random tester outputs so because the underlying memory system is taking too much time? The patch works for 1, 2, and 4 processors for 10,000,000 loads. I have tested these processor configurations with 40 different seed values. But for 8 processors, random tester outputs some thing like this -- panic: Possible Deadlock detected. Aborting! version: 6 request.paddr: 12779 m_writeRequestTable: 15 current time: 369500011 issue_time: 368993771 difference: 506240 @ cycle 369500011 [wakeup:build/ALPHA_SE_MESI_CMP_directory/mem/ruby/system/Sequencer.cc, line 123] [BB] Yes, the current version of MESI_CMP_directory is broken in many places. Arka just told me that he recently fixed many of those problems. I suggest getting his fixes and working from there. Brad ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
[m5-dev] Fixing MESI CMP directory protocol
What threshold do you use? On Tue, 4 Jan 2011, Arkaprava Basu wrote: Hi Nilay, On deadlock issue with MESI_CMP_directory : Yes, this can happen as ruby_tester or Sequencer only reports *possible* deadlocks. With higher number of processors there is more contention (and thus latency) and it can mistakenly report deadlock. I generally look at the protocol trace to figure out whether there is actually any deadlock or not. You can also try doubling the Sequencer deadlock threshold and see if the problem goes away. If its a true deadlock, it will break again. On some related note, as Brad has pointed out MESI_CMP_directory has its share of issues. Recently one of Prof. Sarita Adve's student e-mailed us (Multifacet) about 6 bugs he found while model checking the MESI_CMP_directory (including a major one). I took some time to look at them and it seems like MESI_CMP_directory is now fixed (hopefully). The modified protocol is now passing 1M checks with 16 processors with multiple random seeds. I can locally coordinate with you on this, if you want. Thanks Arka ___ 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.
On Mon, Jan 3, 2011 at 10:41 PM, nathan binkert n...@binkert.org wrote: So far I've found two oddities with a straightforward implementation of this approach: (1) It breaks down when the target is a prefix of the source: [ STRIP] ALPHA_SE/m5.fast.unstripped - instead of [ STRIP] ALPHA_SE/m5.fast: .unstripped - (2) It gives the wrong impression when targets are in a parent directory relative to the source: [ISA DESC] ALPHA_SE/arch/alpha/isa/main.isa - decoder.cc, decoder.hh, max_inst_regs.hh, atomic_simple_cpu_exec.cc, inorder_cpu_exec.cc, o3_cpu_exec.cc, timing_simple_cpu_exec.cc instead of [ISA DESC] ALPHA_SE/arch/alpha: isa/main.isa - decoder.cc, decoder.hh, max_inst_regs.hh, atomic_simple_cpu_exec.cc, inorder_cpu_exec.cc, o3_cpu_exec.cc, timing_simple_cpu_exec.cc I don't see these as deal-breakers, and I'm fine with leaving them as they are unless someone has a reasonable idea about how to address them, but I thought I'd point out that the ambiguities aren't purely theoretical. hmmm I guess I still like the ability to cut and paste, but the ambiguity is annoying (and there are bound to be others. I'll let you decide. For #2, you could do ../decoder.cc, for #1, if you want, you could detect that the RHS is empty and do the whole basename. These ideas might be overkill. (Don't you love how a simple idea always gets more complicated?) Yea, given the amount of time I've spent on this already I'm not inclined to add a lot of sophisticated handling for a few exceptional cases. #2 in particular doesn't seem that bad to me; it is ambiguous, but in a sort of reasonable way, and adding a bunch of path-handling code seems like overkill. For #1, the output is less intuitive with the blank RHS, and it's pretty easy to check that the target is the same length as the common prefix to know that there's a problem. The question is what to do about it... one simple possibility is just to reverse the arrow: [ STRIP] ALPHA_SE/m5.fast - .unstripped Or I could trim back to the path separator: [ STRIP] ALPHA_SE/m5.fast.unstripped - m5.fast Or trim to the nearest '.' or path sep: [ STRIP] ALPHA_SE/m5.fast.unstripped - .fast Any preferences? 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.
[ STRIP] ALPHA_SE/m5.fast - .unstripped Would it be for just this one, or all? I think that we generally want to cut and paste the source, not the target, so either way, this doesn't seem like a great option. Or I could trim back to the path separator: [ STRIP] ALPHA_SE/m5.fast.unstripped - m5.fast Or trim to the nearest '.' or path sep: [ STRIP] ALPHA_SE/m5.fast.unstripped - .fast Again, would this apply to all? if so, I'd probably opt for the last one since we don't need it in the majority of cases. Nate ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
Re: [m5-dev] Fixing MESI CMP directory protocol
These are the following step I use: 1. First run with whatever default values of threshold are. 2. If deadlocked, take trace and try to find out is there evident reason for deadlock or not. 3. If no, double the default threshold value and run again. 4. If the same test passes with larger threshold, then it means the deadlock was actually not there. So life is good. If not, need to dig more into trace to see whats going on. @Nilay: By end of today, I will share with you the patch that seems like fixed that protocol. Thanks Arka On 01/04/2011 12:51 PM, Nilay Vaish wrote: What threshold do you use? On Tue, 4 Jan 2011, Arkaprava Basu wrote: Hi Nilay, On deadlock issue with MESI_CMP_directory : Yes, this can happen as ruby_tester or Sequencer only reports *possible* deadlocks. With higher number of processors there is more contention (and thus latency) and it can mistakenly report deadlock. I generally look at the protocol trace to figure out whether there is actually any deadlock or not. You can also try doubling the Sequencer deadlock threshold and see if the problem goes away. If its a true deadlock, it will break again. On some related note, as Brad has pointed out MESI_CMP_directory has its share of issues. Recently one of Prof. Sarita Adve's student e-mailed us (Multifacet) about 6 bugs he found while model checking the MESI_CMP_directory (including a major one). I took some time to look at them and it seems like MESI_CMP_directory is now fixed (hopefully). The modified protocol is now passing 1M checks with 16 processors with multiple random seeds. I can locally coordinate with you on this, if you want. Thanks Arka ___ 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.
On Tue, Jan 4, 2011 at 11:24 AM, nathan binkert n...@binkert.org wrote: [ STRIP] ALPHA_SE/m5.fast - .unstripped Would it be for just this one, or all? I think that we generally want to cut and paste the source, not the target, so either way, this doesn't seem like a great option. For all of these, I was thinking just for this case (or strictly, just for the ones where the common prefix is equal to the entire target, which leaves the RHS empty with the current code). If you always reverse the arrow, you'll end up having the same problem in the other direction (e.g., for the python embed step where foo.py - foo.py.cc). Or I could trim back to the path separator: [ STRIP] ALPHA_SE/m5.fast.unstripped - m5.fast Or trim to the nearest '.' or path sep: [ STRIP] ALPHA_SE/m5.fast.unstripped - .fast Again, would this apply to all? if so, I'd probably opt for the last one since we don't need it in the majority of cases. The current code works 99% of the time... always trimming back to the nearest anything can cause issues; for example, with the swig lines: bar/foo.i - _wrap.cc, .py it looks nice as it is, but the common prefix is just bar/foo, so you don't want to unconditionally go back to look for a . or path sep. OTOH, I already back up a char when the common prefix ends in '.', otherwise you'd get foo.cc - o instead of foo.cc - .o so maybe I can find a way to generalize that which will take care of the .unstripped case. Steve ___ 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
Brad Is there a reason why each action name follows the pattern combination of several letters_action performed by the action? The letters used are not abbreviations of the action performed. Can we use any combination? Thanks Nilay On Tue, 4 Jan 2011, Beckmann, Brad wrote: Hi Nilay, My responses are below: 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. [BB] So does that mean that the cache entry is always passed in as a pointer? If so, can one just use cache_entry for all function calls and remove any use of cache_entry_ptr in the .sm files? That is essentially what I would like to see. 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 currently tied with the names of the cache memory variables belonging to the machine. If the name of the cache memory variable is A, then the corresponding cache entry variable is named A_entry. [BB] Ah, I see. Ok then let's just keep them the way they are for now. We can deal with shorting the names later. 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. Oops! Should have thought of that before doing all those changes. But can we assume that we would always have only one valid cache entry pointer at any given time? If that's true, I would probably revert to previous version of the patch. This should also resolve the naming issue. [BB] I wouldn't have expected you to realize that. It is one of those things that isn't completely obvious without spending a lot of time developing protocols. Yes, I think it is easiest for you to just revert to the previous version of the patch and just modify the hammer protocol to use a tbe entry as an intermediary. We've always had an unofficial rule that a controller can only manage multiple caches if those caches are exclusive with respect to each other. For the most part, that rule has been followed by all the protocols I'm familiar with. I think your change just makes that an official policy. 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. I have a patch for the protocol, but I need to discuss it. Do you think it is possible that a protocol is not in a dead lock but random tester outputs so because the underlying memory system is taking too much time? The patch works for 1, 2, and 4 processors for 10,000,000 loads. I have tested these processor configurations with 40 different seed values. But for 8 processors, random tester outputs some thing like this -- panic: Possible Deadlock detected. Aborting! version: 6 request.paddr: 12779 m_writeRequestTable: 15 current time: 369500011 issue_time: 368993771 difference: 506240 @ cycle 369500011 [wakeup:build/ALPHA_SE_MESI_CMP_directory/mem/ruby/system/Sequencer.cc, line 123] [BB] Yes, the current version of MESI_CMP_directory is broken in many places. Arka just told me that he recently fixed many of those problems. I suggest getting his fixes and working from there. Brad ___ 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
Hi Nilay, At one point in time, the combination of several letters at the beginning of the action name corresponded to the short hand name for the action. The short hand name is the letter or letter combination that appears in the HTML tables. SLICC may have once enforced that the combination of letters matched the HTML short hand name, but I don't believe it does right now. Therefore the letters are just a guide to match actions with their associated short hand name. And yes, you can use any combination. Brad -Original Message- From: Nilay Vaish [mailto:ni...@cs.wisc.edu] Sent: Tuesday, January 04, 2011 12:03 PM To: Beckmann, Brad Cc: Default Subject: RE: Review Request: Changing how CacheMemory interfaces with SLICC Brad Is there a reason why each action name follows the pattern combination of several letters_action performed by the action? The letters used are not abbreviations of the action performed. Can we use any combination? Thanks Nilay On Tue, 4 Jan 2011, Beckmann, Brad wrote: Hi Nilay, My responses are below: 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. [BB] So does that mean that the cache entry is always passed in as a pointer? If so, can one just use cache_entry for all function calls and remove any use of cache_entry_ptr in the .sm files? That is essentially what I would like to see. 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 currently tied with the names of the cache memory variables belonging to the machine. If the name of the cache memory variable is A, then the corresponding cache entry variable is named A_entry. [BB] Ah, I see. Ok then let's just keep them the way they are for now. We can deal with shorting the names later. 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. Oops! Should have thought of that before doing all those changes. But can we assume that we would always have only one valid cache entry pointer at any given time? If that's true, I would probably revert to previous version of the patch. This should also resolve the naming issue. [BB] I wouldn't have expected you to realize that. It is one of those things that isn't completely obvious without spending a lot of time developing protocols. Yes, I think it is easiest for you to just revert to the previous version of the patch and just modify the hammer protocol to use a tbe entry as an intermediary. We've always had an unofficial rule that a controller can only manage multiple caches if those caches are exclusive with respect to each other. For the most part, that rule has been followed by all the protocols I'm familiar with. I think your change just makes that an official policy. 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. I have a patch for the protocol, but I need to discuss it. Do you think it is possible that a protocol is not in a dead lock but random tester outputs so because the underlying memory system is taking too much time? The patch works for 1, 2, and 4 processors for 10,000,000 loads. I have tested these processor configurations with 40 different seed values. But for 8 processors, random
[m5-dev] changeset in m5: Params: Print the IP components in the right or...
changeset c819526b7c2a in /z/repo/m5 details: http://repo.m5sim.org/m5?cmd=changeset;node=c819526b7c2a description: Params: Print the IP components in the right order. diffstat: src/base/inet.cc | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diffs (14 lines): diff -r 7338bc628489 -r c819526b7c2a src/base/inet.cc --- a/src/base/inet.cc Mon Jan 03 14:35:47 2011 -0800 +++ b/src/base/inet.cc Tue Jan 04 17:11:49 2011 -0500 @@ -138,8 +138,8 @@ { uint32_t ip = ia.ip(); ccprintf(stream, %x.%x.%x.%x, -(uint8_t)(ip 0), (uint8_t)(ip 8), -(uint8_t)(ip 16), (uint8_t)(ip 24)); +(uint8_t)(ip 24), (uint8_t)(ip 16), +(uint8_t)(ip 8), (uint8_t)(ip 0)); return stream; } ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
[m5-dev] Review Request: inorder: get rid of references to mainEventQueue.
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/368/ --- Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- inorder: get rid of references to mainEventQueue. Events need to be scheduled on the queue assigned to the SimObject, not on the global queue (which should be going away). Also cleaned up a number of redundant expressions that made the code unnecessarily verbose. Diffs - src/cpu/inorder/cpu.hh 7338bc628489 src/cpu/inorder/cpu.cc 7338bc628489 src/cpu/inorder/resource.hh 7338bc628489 src/cpu/inorder/resource.cc 7338bc628489 src/cpu/inorder/resource_pool.cc 7338bc628489 Diff: http://reviews.m5sim.org/r/368/diff Testing --- Thanks, Steve ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
[m5-dev] Review Request: inorder: replace schedEvent() code with reschedule().
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/369/ --- Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- inorder: replace schedEvent() code with reschedule(). There were several copies of similar functions that looked like they all replicated reschedule(), so I replaced them with direct calls. Keeping this separate from the previous cset since there may be some subtle functional differences if the code ever reschedules an event that is scheduled but not squashed (though none were detected in the regressions). Diffs - src/cpu/inorder/cpu.hh 7338bc628489 src/cpu/inorder/cpu.cc 7338bc628489 src/cpu/inorder/resource.cc 7338bc628489 src/cpu/inorder/resource_pool.cc 7338bc628489 Diff: http://reviews.m5sim.org/r/369/diff Testing --- Thanks, Steve ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
[m5-dev] Review Request: pseudoinst: get rid of mainEventQueue references.
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/370/ --- Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- pseudoinst: get rid of mainEventQueue references. Avoid direct references to mainEventQueue in pseudo-insts by indirecting through associated CPU object. Made exitSimLoop() more flexible to enable some of these. Diffs - src/sim/pseudo_inst.cc 7338bc628489 src/sim/sim_events.cc 7338bc628489 src/sim/sim_exit.hh 7338bc628489 Diff: http://reviews.m5sim.org/r/370/diff Testing --- Thanks, Steve ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
[m5-dev] Review Request: sim: delete unused CheckSwapEvent code.
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/371/ --- Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- sim: delete unused CheckSwapEvent code. There's no way to even create one of these anymore. Diffs - src/sim/sim_events.hh 7338bc628489 src/sim/sim_events.cc 7338bc628489 Diff: http://reviews.m5sim.org/r/371/diff Testing --- Thanks, Steve ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
[m5-dev] Review Request: sim: clean up CountedDrainEvent slightly.
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/372/ --- Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- sim: clean up CountedDrainEvent slightly. There's no reason for it to derive from SimLoopExitEvent. This whole drain thing needs to be redone eventually, but this is a stopgap to make later changes to SimLoopExitEvent feasible. Diffs - src/sim/sim_events.hh 7338bc628489 src/sim/sim_events.cc 7338bc628489 Diff: http://reviews.m5sim.org/r/372/diff Testing --- Thanks, Steve ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
[m5-dev] Review Request: Hammer protocol: Change how data to copied from L1 to L2 cache and vice-versa
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/334/ --- Review request for Default. Summary --- This patch changes the manner in which data is copied from L1 to L2 cache in the implementation of the Hammer's cache coherence protocol. Earlier, data was copied directly from one cache entry to another. This has been broken in to two parts. First, the data is copied from the source cache entry to a transaction buffer entry. Then, data is copied from the transaction buffer entry to the destination cache entry. This has been done to maintain the invariant - at any given instant, a multiple caches under a controller are exclusive with respect to each other. Diffs - src/mem/protocol/MOESI_hammer-cache.sm UNKNOWN Diff: http://reviews.m5sim.org/r/334/diff Testing --- The changes have been tested with ruby random tester using a single seed for 100,000 loads and number of processors = 1, 2, 4 and 8. Thanks, Nilay ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
Re: [m5-dev] Review Request: inorder: replace schedEvent() code with reschedule().
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/369/#review599 --- Ship it! Looks good. I assume it works. - Nathan On 2011-01-04 14:41:12, Steve Reinhardt wrote: --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/369/ --- (Updated 2011-01-04 14:41:12) Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- inorder: replace schedEvent() code with reschedule(). There were several copies of similar functions that looked like they all replicated reschedule(), so I replaced them with direct calls. Keeping this separate from the previous cset since there may be some subtle functional differences if the code ever reschedules an event that is scheduled but not squashed (though none were detected in the regressions). Diffs - src/cpu/inorder/cpu.hh 7338bc628489 src/cpu/inorder/cpu.cc 7338bc628489 src/cpu/inorder/resource.cc 7338bc628489 src/cpu/inorder/resource_pool.cc 7338bc628489 Diff: http://reviews.m5sim.org/r/369/diff Testing --- Thanks, Steve ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
[m5-dev] Review Request: stats: rename StatEvent() function to schedStatEvent().
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/373/ --- Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- stats: rename StatEvent() function to schedStatEvent(). This follows the style rules and is more descriptive. Diffs - src/python/m5/stats.py 7338bc628489 src/python/swig/stats.i 7338bc628489 src/sim/pseudo_inst.cc 7338bc628489 src/sim/simulate.cc 7338bc628489 src/sim/stat_control.hh 7338bc628489 src/sim/stat_control.cc 7338bc628489 Diff: http://reviews.m5sim.org/r/373/diff Testing --- Thanks, Steve ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
[m5-dev] Review Request: Replace curTick global variable with accessor functions.
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/374/ --- Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- Replace curTick global variable with accessor functions. This step makes it easy to replace the accessor functions (which still access a global variable) with ones that access per-thread curTick values. Diffs - src/arch/alpha/isa/decoder.isa 7338bc628489 src/arch/alpha/kernel_stats.cc 7338bc628489 src/arch/alpha/tru64/process.cc 7338bc628489 src/arch/arm/table_walker.cc 7338bc628489 src/arch/mips/isa.cc 7338bc628489 src/arch/mips/isa/formats/mt.isa 7338bc628489 src/arch/mips/locked_mem.hh 7338bc628489 src/arch/mips/mt.hh 7338bc628489 src/arch/sparc/ua2005.cc 7338bc628489 src/arch/x86/interrupts.cc 7338bc628489 src/base/cp_annotate.hh 7338bc628489 src/base/cp_annotate.cc 7338bc628489 src/base/fast_alloc.cc 7338bc628489 src/base/misc.cc 7338bc628489 src/base/remote_gdb.cc 7338bc628489 src/base/statistics.hh 7338bc628489 src/base/stats/mysql.cc 7338bc628489 src/base/stats/output.cc 7338bc628489 src/base/trace.hh 7338bc628489 src/cpu/base.hh 7338bc628489 src/cpu/base.cc 7338bc628489 src/cpu/checker/cpu.cc 7338bc628489 src/cpu/checker/cpu_impl.hh 7338bc628489 src/cpu/inorder/cpu.hh 7338bc628489 src/cpu/inorder/cpu.cc 7338bc628489 src/cpu/inorder/inorder_dyn_inst.cc 7338bc628489 src/cpu/inorder/pipeline_stage.cc 7338bc628489 src/cpu/inorder/reg_dep_map.cc 7338bc628489 src/cpu/inorder/resource.cc 7338bc628489 src/cpu/inorder/resource_pool.9stage.cc 7338bc628489 src/cpu/inorder/resource_pool.cc 7338bc628489 src/cpu/inorder/resources/branch_predictor.cc 7338bc628489 src/cpu/inorder/resources/cache_unit.cc 7338bc628489 src/cpu/inorder/resources/execution_unit.cc 7338bc628489 src/cpu/inorder/resources/fetch_seq_unit.cc 7338bc628489 src/cpu/inorder/resources/graduation_unit.cc 7338bc628489 src/cpu/inorder/resources/mult_div_unit.cc 7338bc628489 src/cpu/o3/commit_impl.hh 7338bc628489 src/cpu/o3/cpu.hh 7338bc628489 src/cpu/o3/cpu.cc 7338bc628489 src/cpu/o3/fetch_impl.hh 7338bc628489 src/cpu/o3/inst_queue_impl.hh 7338bc628489 src/cpu/o3/lsq_impl.hh 7338bc628489 src/cpu/o3/lsq_unit.hh 7338bc628489 src/cpu/o3/lsq_unit_impl.hh 7338bc628489 src/cpu/o3/thread_context_impl.hh 7338bc628489 src/cpu/ozone/back_end.hh 7338bc628489 src/cpu/ozone/cpu.hh 7338bc628489 src/cpu/ozone/cpu_impl.hh 7338bc628489 src/cpu/ozone/front_end_impl.hh 7338bc628489 src/cpu/ozone/inorder_back_end.hh 7338bc628489 src/cpu/ozone/inst_queue_impl.hh 7338bc628489 src/cpu/ozone/lsq_unit.hh 7338bc628489 src/cpu/ozone/lsq_unit_impl.hh 7338bc628489 src/cpu/ozone/lw_back_end_impl.hh 7338bc628489 src/cpu/ozone/lw_lsq.hh 7338bc628489 src/cpu/ozone/lw_lsq_impl.hh 7338bc628489 src/cpu/pc_event.cc 7338bc628489 src/cpu/simple/atomic.cc 7338bc628489 src/cpu/simple/base.cc 7338bc628489 src/cpu/simple/timing.cc 7338bc628489 src/cpu/simple_thread.cc 7338bc628489 src/cpu/static_inst.cc 7338bc628489 src/cpu/testers/directedtest/RubyDirectedTester.cc 7338bc628489 src/cpu/testers/memtest/memtest.cc 7338bc628489 src/cpu/testers/rubytest/Check.cc 7338bc628489 src/cpu/testers/rubytest/RubyTester.cc 7338bc628489 src/cpu/trace/trace_cpu.cc 7338bc628489 src/dev/alpha/backdoor.cc 7338bc628489 src/dev/arm/pl011.cc 7338bc628489 src/dev/arm/pl111.cc 7338bc628489 src/dev/arm/rv_ctrl.cc 7338bc628489 src/dev/arm/timer_sp804.cc 7338bc628489 src/dev/etherbus.cc 7338bc628489 src/dev/etherdump.cc 7338bc628489 src/dev/etherlink.cc 7338bc628489 src/dev/ethertap.cc 7338bc628489 src/dev/i8254xGBe.cc 7338bc628489 src/dev/ide_disk.cc 7338bc628489 src/dev/intel_8254_timer.cc 7338bc628489 src/dev/io_device.cc 7338bc628489 src/dev/mc146818.hh 7338bc628489 src/dev/mc146818.cc 7338bc628489 src/dev/ns_gige.cc 7338bc628489 src/dev/sinic.cc 7338bc628489 src/dev/uart8250.cc 7338bc628489 src/kern/kernel_stats.cc 7338bc628489 src/mem/bridge.cc 7338bc628489 src/mem/bus.cc 7338bc628489 src/mem/cache/base.hh 7338bc628489 src/mem/cache/base.cc 7338bc628489 src/mem/cache/blk.hh 7338bc628489 src/mem/cache/cache_impl.hh 7338bc628489 src/mem/cache/mshr.hh 7338bc628489 src/mem/cache/mshr.cc 7338bc628489 src/mem/cache/mshr_queue.hh 7338bc628489 src/mem/cache/tags/fa_lru.cc 7338bc628489 src/mem/cache/tags/iic.cc 7338bc628489 src/mem/cache/tags/lru.cc 7338bc628489 src/mem/dram.cc 7338bc628489 src/mem/mport.cc 7338bc628489 src/mem/packet.hh 7338bc628489 src/mem/request.hh 7338bc628489 src/mem/ruby/eventqueue/RubyEventQueue.hh 7338bc628489 src/mem/ruby/system/RubyPort.cc 7338bc628489
Re: [m5-dev] Review Request: pseudoinst: get rid of mainEventQueue references.
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/370/#review600 --- Ship it! Looks good. - Nathan On 2011-01-04 14:41:43, Steve Reinhardt wrote: --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/370/ --- (Updated 2011-01-04 14:41:43) Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- pseudoinst: get rid of mainEventQueue references. Avoid direct references to mainEventQueue in pseudo-insts by indirecting through associated CPU object. Made exitSimLoop() more flexible to enable some of these. Diffs - src/sim/pseudo_inst.cc 7338bc628489 src/sim/sim_events.cc 7338bc628489 src/sim/sim_exit.hh 7338bc628489 Diff: http://reviews.m5sim.org/r/370/diff Testing --- Thanks, Steve ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
Re: [m5-dev] Review Request: sim: delete unused CheckSwapEvent code.
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/371/#review601 --- Ship it! - Nathan On 2011-01-04 14:41:53, Steve Reinhardt wrote: --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/371/ --- (Updated 2011-01-04 14:41:53) Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- sim: delete unused CheckSwapEvent code. There's no way to even create one of these anymore. Diffs - src/sim/sim_events.hh 7338bc628489 src/sim/sim_events.cc 7338bc628489 Diff: http://reviews.m5sim.org/r/371/diff Testing --- Thanks, Steve ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
[m5-dev] recent batch of patches to review
FYI, I've been working recently on implementing multiple event queues/threads, and while the actual multi-queue code isn't ready yet, these patches represent a bunch of preliminary cleanup/setup changes that make it possible. I'd like to get these committed so I don't have to keep rebasing them... especially the curTick accessor one. Thanks, Steve ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
Re: [m5-dev] Review Request: inorder: get rid of references to mainEventQueue.
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/368/#review604 --- Ship it! - Nathan On 2011-01-04 14:40:57, Steve Reinhardt wrote: --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/368/ --- (Updated 2011-01-04 14:40:57) Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- inorder: get rid of references to mainEventQueue. Events need to be scheduled on the queue assigned to the SimObject, not on the global queue (which should be going away). Also cleaned up a number of redundant expressions that made the code unnecessarily verbose. Diffs - src/cpu/inorder/cpu.hh 7338bc628489 src/cpu/inorder/cpu.cc 7338bc628489 src/cpu/inorder/resource.hh 7338bc628489 src/cpu/inorder/resource.cc 7338bc628489 src/cpu/inorder/resource_pool.cc 7338bc628489 Diff: http://reviews.m5sim.org/r/368/diff Testing --- Thanks, Steve ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
Re: [m5-dev] recent batch of patches to review
FYI, I've been working recently on implementing multiple event queues/threads, and while the actual multi-queue code isn't ready yet, these patches represent a bunch of preliminary cleanup/setup changes that make it possible. I'd like to get these committed so I don't have to keep rebasing them... especially the curTick accessor one. A general request for everyone. If you have a review where most of the code is done by a script and a little bit matters, can you separate the automated part into a separate diff so it's easier to find the important stuff? e.g. for the sort includes diff, I had three. The util, the util being run, and the fixup after the util was run. (This makes rebasing easier too because you can just redo the big diff). They can be folded for the final (though probably better if not.) Nate ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
Re: [m5-dev] Review Request: Replace curTick global variable with accessor functions.
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/374/#review605 --- Ship it! Maybe it's too much for this diff, but I think you can get rid of the global variable and put _curTick in the event queue class. Then you can put a curTick() accessor into the EventQueue and EventManager classes, and create a global curTick (though maybe with a different name like mainCurTick() so we can tell what is what) that accesses mainEventQueue.curTick(). Maybe not needed for this diff, but certainly something that would seem to be a good step. Thanks for doing this. I've been wanting to do exactly this for a while. - Nathan On 2011-01-04 14:43:38, Steve Reinhardt wrote: --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/374/ --- (Updated 2011-01-04 14:43:38) Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- Replace curTick global variable with accessor functions. This step makes it easy to replace the accessor functions (which still access a global variable) with ones that access per-thread curTick values. Diffs - src/arch/alpha/isa/decoder.isa 7338bc628489 src/arch/alpha/kernel_stats.cc 7338bc628489 src/arch/alpha/tru64/process.cc 7338bc628489 src/arch/arm/table_walker.cc 7338bc628489 src/arch/mips/isa.cc 7338bc628489 src/arch/mips/isa/formats/mt.isa 7338bc628489 src/arch/mips/locked_mem.hh 7338bc628489 src/arch/mips/mt.hh 7338bc628489 src/arch/sparc/ua2005.cc 7338bc628489 src/arch/x86/interrupts.cc 7338bc628489 src/base/cp_annotate.hh 7338bc628489 src/base/cp_annotate.cc 7338bc628489 src/base/fast_alloc.cc 7338bc628489 src/base/misc.cc 7338bc628489 src/base/remote_gdb.cc 7338bc628489 src/base/statistics.hh 7338bc628489 src/base/stats/mysql.cc 7338bc628489 src/base/stats/output.cc 7338bc628489 src/base/trace.hh 7338bc628489 src/cpu/base.hh 7338bc628489 src/cpu/base.cc 7338bc628489 src/cpu/checker/cpu.cc 7338bc628489 src/cpu/checker/cpu_impl.hh 7338bc628489 src/cpu/inorder/cpu.hh 7338bc628489 src/cpu/inorder/cpu.cc 7338bc628489 src/cpu/inorder/inorder_dyn_inst.cc 7338bc628489 src/cpu/inorder/pipeline_stage.cc 7338bc628489 src/cpu/inorder/reg_dep_map.cc 7338bc628489 src/cpu/inorder/resource.cc 7338bc628489 src/cpu/inorder/resource_pool.9stage.cc 7338bc628489 src/cpu/inorder/resource_pool.cc 7338bc628489 src/cpu/inorder/resources/branch_predictor.cc 7338bc628489 src/cpu/inorder/resources/cache_unit.cc 7338bc628489 src/cpu/inorder/resources/execution_unit.cc 7338bc628489 src/cpu/inorder/resources/fetch_seq_unit.cc 7338bc628489 src/cpu/inorder/resources/graduation_unit.cc 7338bc628489 src/cpu/inorder/resources/mult_div_unit.cc 7338bc628489 src/cpu/o3/commit_impl.hh 7338bc628489 src/cpu/o3/cpu.hh 7338bc628489 src/cpu/o3/cpu.cc 7338bc628489 src/cpu/o3/fetch_impl.hh 7338bc628489 src/cpu/o3/inst_queue_impl.hh 7338bc628489 src/cpu/o3/lsq_impl.hh 7338bc628489 src/cpu/o3/lsq_unit.hh 7338bc628489 src/cpu/o3/lsq_unit_impl.hh 7338bc628489 src/cpu/o3/thread_context_impl.hh 7338bc628489 src/cpu/ozone/back_end.hh 7338bc628489 src/cpu/ozone/cpu.hh 7338bc628489 src/cpu/ozone/cpu_impl.hh 7338bc628489 src/cpu/ozone/front_end_impl.hh 7338bc628489 src/cpu/ozone/inorder_back_end.hh 7338bc628489 src/cpu/ozone/inst_queue_impl.hh 7338bc628489 src/cpu/ozone/lsq_unit.hh 7338bc628489 src/cpu/ozone/lsq_unit_impl.hh 7338bc628489 src/cpu/ozone/lw_back_end_impl.hh 7338bc628489 src/cpu/ozone/lw_lsq.hh 7338bc628489 src/cpu/ozone/lw_lsq_impl.hh 7338bc628489 src/cpu/pc_event.cc 7338bc628489 src/cpu/simple/atomic.cc 7338bc628489 src/cpu/simple/base.cc 7338bc628489 src/cpu/simple/timing.cc 7338bc628489 src/cpu/simple_thread.cc 7338bc628489 src/cpu/static_inst.cc 7338bc628489 src/cpu/testers/directedtest/RubyDirectedTester.cc 7338bc628489 src/cpu/testers/memtest/memtest.cc 7338bc628489 src/cpu/testers/rubytest/Check.cc 7338bc628489 src/cpu/testers/rubytest/RubyTester.cc 7338bc628489 src/cpu/trace/trace_cpu.cc 7338bc628489 src/dev/alpha/backdoor.cc 7338bc628489 src/dev/arm/pl011.cc 7338bc628489 src/dev/arm/pl111.cc 7338bc628489 src/dev/arm/rv_ctrl.cc 7338bc628489 src/dev/arm/timer_sp804.cc 7338bc628489 src/dev/etherbus.cc 7338bc628489 src/dev/etherdump.cc 7338bc628489 src/dev/etherlink.cc 7338bc628489 src/dev/ethertap.cc 7338bc628489 src/dev/i8254xGBe.cc 7338bc628489 src/dev/ide_disk.cc 7338bc628489 src/dev/intel_8254_timer.cc 7338bc628489
Re: [m5-dev] 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/ --- (Updated 2011-01-04 15:02:38.269001) Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- 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 Diffs (updated) - configs/ruby/Ruby.py 7338bc628489 src/mem/SConscript 7338bc628489 src/mem/ruby/buffers/MessageBuffer.hh 7338bc628489 src/mem/ruby/buffers/MessageBuffer.cc 7338bc628489 src/mem/ruby/common/Debug.hh 7338bc628489 src/mem/ruby/common/Debug.cc 7338bc628489 src/mem/ruby/common/Debug.py 7338bc628489 src/mem/ruby/common/Global.hh 7338bc628489 src/mem/ruby/common/Global.cc 7338bc628489 src/mem/ruby/common/SConscript 7338bc628489 src/mem/ruby/common/Set.cc 7338bc628489 src/mem/ruby/eventqueue/RubyEventQueue.cc 7338bc628489 src/mem/ruby/filters/BulkBloomFilter.cc 7338bc628489 src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc 7338bc628489 src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc 7338bc628489 src/mem/ruby/network/garnet/fixed-pipeline/flit_d.hh 7338bc628489 src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc 7338bc628489 src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc 7338bc628489 src/mem/ruby/network/garnet/flexible-pipeline/flit.hh 7338bc628489 src/mem/ruby/network/simple/SimpleNetwork.cc 7338bc628489 src/mem/ruby/network/simple/Throttle.cc 7338bc628489 src/mem/ruby/network/simple/Topology.cc 7338bc628489 src/mem/ruby/profiler/Profiler.hh 7338bc628489 src/mem/ruby/profiler/Profiler.cc 7338bc628489 src/mem/ruby/slicc_interface/RubySlicc_Util.hh 7338bc628489 src/mem/ruby/storebuffer/storebuffer.cc 7338bc628489 src/mem/ruby/system/RubySystem.py 7338bc628489 src/mem/ruby/system/Sequencer.cc 7338bc628489 src/mem/ruby/system/System.cc 7338bc628489 src/mem/ruby/tester/DeterministicDriver.cc 7338bc628489 src/mem/ruby/tester/RaceyDriver.cc 7338bc628489 src/mem/ruby/tester/RaceyPseudoThread.cc 7338bc628489 src/mem/ruby/tester/test_framework.cc 7338bc628489 src/mem/slicc/symbols/StateMachine.py 7338bc628489 src/mem/slicc/symbols/Type.py 7338bc628489 Diff: http://reviews.m5sim.org/r/367/diff 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. Thanks, Nathan ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
Re: [m5-dev] recent batch of patches to review
On Tue, Jan 4, 2011 at 2:59 PM, nathan binkert n...@binkert.org wrote: FYI, I've been working recently on implementing multiple event queues/threads, and while the actual multi-queue code isn't ready yet, these patches represent a bunch of preliminary cleanup/setup changes that make it possible. I'd like to get these committed so I don't have to keep rebasing them... especially the curTick accessor one. A general request for everyone. If you have a review where most of the code is done by a script and a little bit matters, can you separate the automated part into a separate diff so it's easier to find the important stuff? e.g. for the sort includes diff, I had three. The util, the util being run, and the fixup after the util was run. (This makes rebasing easier too because you can just redo the big diff). They can be folded for the final (though probably better if not.) Good point, sorry about that... I'll try to remember for next time. Steve ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
Re: [m5-dev] Review Request: Hammer protocol: Change how data to copied from L1 to L2 cache and vice-versa
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/334/#review606 --- Hi Nilay, These changes look good, but don't you also have to use a tbe entry as an intermediary for the L1_to_L2 transitions? Brad - Brad On 2011-01-04 14:42:14, Nilay Vaish wrote: --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/334/ --- (Updated 2011-01-04 14:42:14) Review request for Default. Summary --- This patch changes the manner in which data is copied from L1 to L2 cache in the implementation of the Hammer's cache coherence protocol. Earlier, data was copied directly from one cache entry to another. This has been broken in to two parts. First, the data is copied from the source cache entry to a transaction buffer entry. Then, data is copied from the transaction buffer entry to the destination cache entry. This has been done to maintain the invariant - at any given instant, a multiple caches under a controller are exclusive with respect to each other. Diffs - src/mem/protocol/MOESI_hammer-cache.sm UNKNOWN Diff: http://reviews.m5sim.org/r/334/diff Testing --- The changes have been tested with ruby random tester using a single seed for 100,000 loads and number of processors = 1, 2, 4 and 8. Thanks, Nilay ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
Re: [m5-dev] Review Request: Hammer protocol: Change how data to copied from L1 to L2 cache and vice-versa
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/334/#review607 --- Ship it! Nevermind my previous statement. I needed to look closer. Everything looks good to me. - Brad On 2011-01-04 14:42:14, Nilay Vaish wrote: --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/334/ --- (Updated 2011-01-04 14:42:14) Review request for Default. Summary --- This patch changes the manner in which data is copied from L1 to L2 cache in the implementation of the Hammer's cache coherence protocol. Earlier, data was copied directly from one cache entry to another. This has been broken in to two parts. First, the data is copied from the source cache entry to a transaction buffer entry. Then, data is copied from the transaction buffer entry to the destination cache entry. This has been done to maintain the invariant - at any given instant, a multiple caches under a controller are exclusive with respect to each other. Diffs - src/mem/protocol/MOESI_hammer-cache.sm UNKNOWN Diff: http://reviews.m5sim.org/r/334/diff Testing --- The changes have been tested with ruby random tester using a single seed for 100,000 loads and number of processors = 1, 2, 4 and 8. Thanks, Nilay ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
[m5-dev] m5/system directory
A long time ago we thought about putting a m5/system/ directory where we would put architecture dependent code system code (boot loaders, alpha console, etc). How do we feel about this? We could move the alpha code in there now that HP relicensed it. Additionally, I've got a tiny ARM boot loader I'm looking for a place for and a new repository seems like overkill,. 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
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/367/#review608 --- 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? - Brad On 2011-01-04 15:02:38, Nathan Binkert wrote: --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/367/ --- (Updated 2011-01-04 15:02:38) Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- 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 Diffs - configs/ruby/Ruby.py 7338bc628489 src/mem/SConscript 7338bc628489 src/mem/ruby/buffers/MessageBuffer.hh 7338bc628489 src/mem/ruby/buffers/MessageBuffer.cc 7338bc628489 src/mem/ruby/common/Debug.hh 7338bc628489 src/mem/ruby/common/Debug.cc 7338bc628489 src/mem/ruby/common/Debug.py 7338bc628489 src/mem/ruby/common/Global.hh 7338bc628489 src/mem/ruby/common/Global.cc 7338bc628489 src/mem/ruby/common/SConscript 7338bc628489 src/mem/ruby/common/Set.cc 7338bc628489 src/mem/ruby/eventqueue/RubyEventQueue.cc 7338bc628489 src/mem/ruby/filters/BulkBloomFilter.cc 7338bc628489 src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc 7338bc628489 src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc 7338bc628489 src/mem/ruby/network/garnet/fixed-pipeline/flit_d.hh 7338bc628489 src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc 7338bc628489 src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc 7338bc628489 src/mem/ruby/network/garnet/flexible-pipeline/flit.hh 7338bc628489 src/mem/ruby/network/simple/SimpleNetwork.cc 7338bc628489 src/mem/ruby/network/simple/Throttle.cc 7338bc628489 src/mem/ruby/network/simple/Topology.cc 7338bc628489 src/mem/ruby/profiler/Profiler.hh 7338bc628489 src/mem/ruby/profiler/Profiler.cc 7338bc628489 src/mem/ruby/slicc_interface/RubySlicc_Util.hh 7338bc628489 src/mem/ruby/storebuffer/storebuffer.cc 7338bc628489 src/mem/ruby/system/RubySystem.py 7338bc628489 src/mem/ruby/system/Sequencer.cc 7338bc628489 src/mem/ruby/system/System.cc 7338bc628489 src/mem/ruby/tester/DeterministicDriver.cc 7338bc628489 src/mem/ruby/tester/RaceyDriver.cc 7338bc628489 src/mem/ruby/tester/RaceyPseudoThread.cc 7338bc628489 src/mem/ruby/tester/test_framework.cc 7338bc628489 src/mem/slicc/symbols/StateMachine.py 7338bc628489 src/mem/slicc/symbols/Type.py 7338bc628489 Diff: http://reviews.m5sim.org/r/367/diff 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. Thanks, Nathan ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
Re: [m5-dev] Review Request: Replace curTick global variable with accessor functions.
On 2011-01-04 14:59:52, Nathan Binkert wrote: Maybe it's too much for this diff, but I think you can get rid of the global variable and put _curTick in the event queue class. Then you can put a curTick() accessor into the EventQueue and EventManager classes, and create a global curTick (though maybe with a different name like mainCurTick() so we can tell what is what) that accesses mainEventQueue.curTick(). Maybe not needed for this diff, but certainly something that would seem to be a good step. Thanks for doing this. I've been wanting to do exactly this for a while. 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. - Steve --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/374/#review605 --- On 2011-01-04 14:43:38, Steve Reinhardt wrote: --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/374/ --- (Updated 2011-01-04 14:43:38) Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- Replace curTick global variable with accessor functions. This step makes it easy to replace the accessor functions (which still access a global variable) with ones that access per-thread curTick values. Diffs - src/arch/alpha/isa/decoder.isa 7338bc628489 src/arch/alpha/kernel_stats.cc 7338bc628489 src/arch/alpha/tru64/process.cc 7338bc628489 src/arch/arm/table_walker.cc 7338bc628489 src/arch/mips/isa.cc 7338bc628489 src/arch/mips/isa/formats/mt.isa 7338bc628489 src/arch/mips/locked_mem.hh 7338bc628489 src/arch/mips/mt.hh 7338bc628489 src/arch/sparc/ua2005.cc 7338bc628489 src/arch/x86/interrupts.cc 7338bc628489 src/base/cp_annotate.hh 7338bc628489 src/base/cp_annotate.cc 7338bc628489 src/base/fast_alloc.cc 7338bc628489 src/base/misc.cc 7338bc628489 src/base/remote_gdb.cc 7338bc628489 src/base/statistics.hh 7338bc628489 src/base/stats/mysql.cc 7338bc628489 src/base/stats/output.cc 7338bc628489 src/base/trace.hh 7338bc628489 src/cpu/base.hh 7338bc628489 src/cpu/base.cc 7338bc628489 src/cpu/checker/cpu.cc 7338bc628489 src/cpu/checker/cpu_impl.hh 7338bc628489 src/cpu/inorder/cpu.hh 7338bc628489 src/cpu/inorder/cpu.cc 7338bc628489 src/cpu/inorder/inorder_dyn_inst.cc 7338bc628489 src/cpu/inorder/pipeline_stage.cc 7338bc628489 src/cpu/inorder/reg_dep_map.cc 7338bc628489 src/cpu/inorder/resource.cc 7338bc628489 src/cpu/inorder/resource_pool.9stage.cc 7338bc628489 src/cpu/inorder/resource_pool.cc 7338bc628489 src/cpu/inorder/resources/branch_predictor.cc 7338bc628489 src/cpu/inorder/resources/cache_unit.cc 7338bc628489 src/cpu/inorder/resources/execution_unit.cc 7338bc628489 src/cpu/inorder/resources/fetch_seq_unit.cc 7338bc628489 src/cpu/inorder/resources/graduation_unit.cc 7338bc628489 src/cpu/inorder/resources/mult_div_unit.cc 7338bc628489 src/cpu/o3/commit_impl.hh 7338bc628489 src/cpu/o3/cpu.hh 7338bc628489 src/cpu/o3/cpu.cc 7338bc628489 src/cpu/o3/fetch_impl.hh 7338bc628489 src/cpu/o3/inst_queue_impl.hh 7338bc628489 src/cpu/o3/lsq_impl.hh 7338bc628489 src/cpu/o3/lsq_unit.hh 7338bc628489 src/cpu/o3/lsq_unit_impl.hh 7338bc628489 src/cpu/o3/thread_context_impl.hh 7338bc628489 src/cpu/ozone/back_end.hh 7338bc628489 src/cpu/ozone/cpu.hh 7338bc628489 src/cpu/ozone/cpu_impl.hh 7338bc628489 src/cpu/ozone/front_end_impl.hh 7338bc628489 src/cpu/ozone/inorder_back_end.hh 7338bc628489 src/cpu/ozone/inst_queue_impl.hh 7338bc628489 src/cpu/ozone/lsq_unit.hh 7338bc628489 src/cpu/ozone/lsq_unit_impl.hh 7338bc628489 src/cpu/ozone/lw_back_end_impl.hh 7338bc628489 src/cpu/ozone/lw_lsq.hh 7338bc628489 src/cpu/ozone/lw_lsq_impl.hh 7338bc628489 src/cpu/pc_event.cc 7338bc628489 src/cpu/simple/atomic.cc 7338bc628489 src/cpu/simple/base.cc 7338bc628489 src/cpu/simple/timing.cc 7338bc628489 src/cpu/simple_thread.cc 7338bc628489 src/cpu/static_inst.cc 7338bc628489 src/cpu/testers/directedtest/RubyDirectedTester.cc 7338bc628489
Re: [m5-dev] Review Request: Replace curTick global variable with accessor functions.
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/374/#review610 --- Ship it! - Ali On 2011-01-04 14:43:38, Steve Reinhardt wrote: --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/374/ --- (Updated 2011-01-04 14:43:38) Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- Replace curTick global variable with accessor functions. This step makes it easy to replace the accessor functions (which still access a global variable) with ones that access per-thread curTick values. Diffs - src/arch/alpha/isa/decoder.isa 7338bc628489 src/arch/alpha/kernel_stats.cc 7338bc628489 src/arch/alpha/tru64/process.cc 7338bc628489 src/arch/arm/table_walker.cc 7338bc628489 src/arch/mips/isa.cc 7338bc628489 src/arch/mips/isa/formats/mt.isa 7338bc628489 src/arch/mips/locked_mem.hh 7338bc628489 src/arch/mips/mt.hh 7338bc628489 src/arch/sparc/ua2005.cc 7338bc628489 src/arch/x86/interrupts.cc 7338bc628489 src/base/cp_annotate.hh 7338bc628489 src/base/cp_annotate.cc 7338bc628489 src/base/fast_alloc.cc 7338bc628489 src/base/misc.cc 7338bc628489 src/base/remote_gdb.cc 7338bc628489 src/base/statistics.hh 7338bc628489 src/base/stats/mysql.cc 7338bc628489 src/base/stats/output.cc 7338bc628489 src/base/trace.hh 7338bc628489 src/cpu/base.hh 7338bc628489 src/cpu/base.cc 7338bc628489 src/cpu/checker/cpu.cc 7338bc628489 src/cpu/checker/cpu_impl.hh 7338bc628489 src/cpu/inorder/cpu.hh 7338bc628489 src/cpu/inorder/cpu.cc 7338bc628489 src/cpu/inorder/inorder_dyn_inst.cc 7338bc628489 src/cpu/inorder/pipeline_stage.cc 7338bc628489 src/cpu/inorder/reg_dep_map.cc 7338bc628489 src/cpu/inorder/resource.cc 7338bc628489 src/cpu/inorder/resource_pool.9stage.cc 7338bc628489 src/cpu/inorder/resource_pool.cc 7338bc628489 src/cpu/inorder/resources/branch_predictor.cc 7338bc628489 src/cpu/inorder/resources/cache_unit.cc 7338bc628489 src/cpu/inorder/resources/execution_unit.cc 7338bc628489 src/cpu/inorder/resources/fetch_seq_unit.cc 7338bc628489 src/cpu/inorder/resources/graduation_unit.cc 7338bc628489 src/cpu/inorder/resources/mult_div_unit.cc 7338bc628489 src/cpu/o3/commit_impl.hh 7338bc628489 src/cpu/o3/cpu.hh 7338bc628489 src/cpu/o3/cpu.cc 7338bc628489 src/cpu/o3/fetch_impl.hh 7338bc628489 src/cpu/o3/inst_queue_impl.hh 7338bc628489 src/cpu/o3/lsq_impl.hh 7338bc628489 src/cpu/o3/lsq_unit.hh 7338bc628489 src/cpu/o3/lsq_unit_impl.hh 7338bc628489 src/cpu/o3/thread_context_impl.hh 7338bc628489 src/cpu/ozone/back_end.hh 7338bc628489 src/cpu/ozone/cpu.hh 7338bc628489 src/cpu/ozone/cpu_impl.hh 7338bc628489 src/cpu/ozone/front_end_impl.hh 7338bc628489 src/cpu/ozone/inorder_back_end.hh 7338bc628489 src/cpu/ozone/inst_queue_impl.hh 7338bc628489 src/cpu/ozone/lsq_unit.hh 7338bc628489 src/cpu/ozone/lsq_unit_impl.hh 7338bc628489 src/cpu/ozone/lw_back_end_impl.hh 7338bc628489 src/cpu/ozone/lw_lsq.hh 7338bc628489 src/cpu/ozone/lw_lsq_impl.hh 7338bc628489 src/cpu/pc_event.cc 7338bc628489 src/cpu/simple/atomic.cc 7338bc628489 src/cpu/simple/base.cc 7338bc628489 src/cpu/simple/timing.cc 7338bc628489 src/cpu/simple_thread.cc 7338bc628489 src/cpu/static_inst.cc 7338bc628489 src/cpu/testers/directedtest/RubyDirectedTester.cc 7338bc628489 src/cpu/testers/memtest/memtest.cc 7338bc628489 src/cpu/testers/rubytest/Check.cc 7338bc628489 src/cpu/testers/rubytest/RubyTester.cc 7338bc628489 src/cpu/trace/trace_cpu.cc 7338bc628489 src/dev/alpha/backdoor.cc 7338bc628489 src/dev/arm/pl011.cc 7338bc628489 src/dev/arm/pl111.cc 7338bc628489 src/dev/arm/rv_ctrl.cc 7338bc628489 src/dev/arm/timer_sp804.cc 7338bc628489 src/dev/etherbus.cc 7338bc628489 src/dev/etherdump.cc 7338bc628489 src/dev/etherlink.cc 7338bc628489 src/dev/ethertap.cc 7338bc628489 src/dev/i8254xGBe.cc 7338bc628489 src/dev/ide_disk.cc 7338bc628489 src/dev/intel_8254_timer.cc 7338bc628489 src/dev/io_device.cc 7338bc628489 src/dev/mc146818.hh 7338bc628489 src/dev/mc146818.cc 7338bc628489 src/dev/ns_gige.cc 7338bc628489 src/dev/sinic.cc 7338bc628489 src/dev/uart8250.cc 7338bc628489 src/kern/kernel_stats.cc 7338bc628489 src/mem/bridge.cc 7338bc628489 src/mem/bus.cc 7338bc628489 src/mem/cache/base.hh 7338bc628489 src/mem/cache/base.cc 7338bc628489 src/mem/cache/blk.hh 7338bc628489 src/mem/cache/cache_impl.hh 7338bc628489 src/mem/cache/mshr.hh 7338bc628489
Re: [m5-dev] 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/#review611 --- src/mem/ruby/buffers/MessageBuffer.cc http://reviews.m5sim.org/r/367/#comment833 Why continue to comment this out? src/mem/ruby/common/Global.cc http://reviews.m5sim.org/r/367/#comment834 This doesn't seem like a applicable change, also aren't they equivalent? - Ali On 2011-01-04 15:02:38, Nathan Binkert wrote: --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/367/ --- (Updated 2011-01-04 15:02:38) Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- 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 Diffs - configs/ruby/Ruby.py 7338bc628489 src/mem/SConscript 7338bc628489 src/mem/ruby/buffers/MessageBuffer.hh 7338bc628489 src/mem/ruby/buffers/MessageBuffer.cc 7338bc628489 src/mem/ruby/common/Debug.hh 7338bc628489 src/mem/ruby/common/Debug.cc 7338bc628489 src/mem/ruby/common/Debug.py 7338bc628489 src/mem/ruby/common/Global.hh 7338bc628489 src/mem/ruby/common/Global.cc 7338bc628489 src/mem/ruby/common/SConscript 7338bc628489 src/mem/ruby/common/Set.cc 7338bc628489 src/mem/ruby/eventqueue/RubyEventQueue.cc 7338bc628489 src/mem/ruby/filters/BulkBloomFilter.cc 7338bc628489 src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc 7338bc628489 src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc 7338bc628489 src/mem/ruby/network/garnet/fixed-pipeline/flit_d.hh 7338bc628489 src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc 7338bc628489 src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc 7338bc628489 src/mem/ruby/network/garnet/flexible-pipeline/flit.hh 7338bc628489 src/mem/ruby/network/simple/SimpleNetwork.cc 7338bc628489 src/mem/ruby/network/simple/Throttle.cc 7338bc628489 src/mem/ruby/network/simple/Topology.cc 7338bc628489 src/mem/ruby/profiler/Profiler.hh 7338bc628489 src/mem/ruby/profiler/Profiler.cc 7338bc628489 src/mem/ruby/slicc_interface/RubySlicc_Util.hh 7338bc628489 src/mem/ruby/storebuffer/storebuffer.cc 7338bc628489 src/mem/ruby/system/RubySystem.py 7338bc628489 src/mem/ruby/system/Sequencer.cc 7338bc628489 src/mem/ruby/system/System.cc 7338bc628489 src/mem/ruby/tester/DeterministicDriver.cc 7338bc628489 src/mem/ruby/tester/RaceyDriver.cc 7338bc628489 src/mem/ruby/tester/RaceyPseudoThread.cc 7338bc628489 src/mem/ruby/tester/test_framework.cc 7338bc628489 src/mem/slicc/symbols/StateMachine.py 7338bc628489 src/mem/slicc/symbols/Type.py 7338bc628489 Diff: http://reviews.m5sim.org/r/367/diff 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. Thanks, Nathan ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
Re: [m5-dev] Review Request: inorder: get rid of references to mainEventQueue.
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/368/#review612 --- Ship it! - Ali On 2011-01-04 14:40:57, Steve Reinhardt wrote: --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/368/ --- (Updated 2011-01-04 14:40:57) Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- inorder: get rid of references to mainEventQueue. Events need to be scheduled on the queue assigned to the SimObject, not on the global queue (which should be going away). Also cleaned up a number of redundant expressions that made the code unnecessarily verbose. Diffs - src/cpu/inorder/cpu.hh 7338bc628489 src/cpu/inorder/cpu.cc 7338bc628489 src/cpu/inorder/resource.hh 7338bc628489 src/cpu/inorder/resource.cc 7338bc628489 src/cpu/inorder/resource_pool.cc 7338bc628489 Diff: http://reviews.m5sim.org/r/368/diff Testing --- Thanks, Steve ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
Re: [m5-dev] Review Request: stats: rename StatEvent() function to schedStatEvent().
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/373/#review613 --- Ship it! - Ali On 2011-01-04 14:43:02, Steve Reinhardt wrote: --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/373/ --- (Updated 2011-01-04 14:43:02) Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- stats: rename StatEvent() function to schedStatEvent(). This follows the style rules and is more descriptive. Diffs - src/python/m5/stats.py 7338bc628489 src/python/swig/stats.i 7338bc628489 src/sim/pseudo_inst.cc 7338bc628489 src/sim/simulate.cc 7338bc628489 src/sim/stat_control.hh 7338bc628489 src/sim/stat_control.cc 7338bc628489 Diff: http://reviews.m5sim.org/r/373/diff Testing --- Thanks, Steve ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
Re: [m5-dev] Review Request: sim: clean up CountedDrainEvent slightly.
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/372/#review614 --- Ship it! - Ali On 2011-01-04 14:42:03, Steve Reinhardt wrote: --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/372/ --- (Updated 2011-01-04 14:42:03) Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- sim: clean up CountedDrainEvent slightly. There's no reason for it to derive from SimLoopExitEvent. This whole drain thing needs to be redone eventually, but this is a stopgap to make later changes to SimLoopExitEvent feasible. Diffs - src/sim/sim_events.hh 7338bc628489 src/sim/sim_events.cc 7338bc628489 Diff: http://reviews.m5sim.org/r/372/diff Testing --- Thanks, Steve ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
Re: [m5-dev] Review Request: sim: delete unused CheckSwapEvent code.
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/371/#review615 --- Ship it! - Ali On 2011-01-04 14:41:53, Steve Reinhardt wrote: --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/371/ --- (Updated 2011-01-04 14:41:53) Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- sim: delete unused CheckSwapEvent code. There's no way to even create one of these anymore. Diffs - src/sim/sim_events.hh 7338bc628489 src/sim/sim_events.cc 7338bc628489 Diff: http://reviews.m5sim.org/r/371/diff Testing --- Thanks, Steve ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
Re: [m5-dev] Review Request: pseudoinst: get rid of mainEventQueue references.
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/370/#review616 --- Ship it! - Ali On 2011-01-04 14:41:43, Steve Reinhardt wrote: --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/370/ --- (Updated 2011-01-04 14:41:43) Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- pseudoinst: get rid of mainEventQueue references. Avoid direct references to mainEventQueue in pseudo-insts by indirecting through associated CPU object. Made exitSimLoop() more flexible to enable some of these. Diffs - src/sim/pseudo_inst.cc 7338bc628489 src/sim/sim_events.cc 7338bc628489 src/sim/sim_exit.hh 7338bc628489 Diff: http://reviews.m5sim.org/r/370/diff Testing --- Thanks, Steve ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
Re: [m5-dev] Review Request: inorder: replace schedEvent() code with reschedule().
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/369/#review617 --- Ship it! My only question is does it work? it seems like the if statements don't translate exactly, but that could just be over-specifying the if (e.g. can you ever fall out with out any action?). - Ali On 2011-01-04 14:41:12, Steve Reinhardt wrote: --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/369/ --- (Updated 2011-01-04 14:41:12) Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- inorder: replace schedEvent() code with reschedule(). There were several copies of similar functions that looked like they all replicated reschedule(), so I replaced them with direct calls. Keeping this separate from the previous cset since there may be some subtle functional differences if the code ever reschedules an event that is scheduled but not squashed (though none were detected in the regressions). Diffs - src/cpu/inorder/cpu.hh 7338bc628489 src/cpu/inorder/cpu.cc 7338bc628489 src/cpu/inorder/resource.cc 7338bc628489 src/cpu/inorder/resource_pool.cc 7338bc628489 Diff: http://reviews.m5sim.org/r/369/diff Testing --- Thanks, Steve ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
Re: [m5-dev] Review Request: RefCount: Add a unit test for reference counting pointers.
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/365/#review618 --- It's pretty good. I think Nate's suggestion is great and maybe a little comment before each test // Test setting variable to NULL lowers ref count would be great. - Ali On 2011-01-03 12:56:11, Gabe Black wrote: --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/365/ --- (Updated 2011-01-03 12:56:11) Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- RefCount: Add a unit test for reference counting pointers. This test exercises each of the functions in the reference counting pointer implementation individually (except get()) and verifies they have some minimially expected behavior. It also checks that reference counted objects are freed when their usage count goes to 0 in some basic situations, specifically a pointer being set to NULL and a pointer being deleted. Diffs - src/unittest/SConscript 3a790012d6ed src/unittest/refcnttest.cc PRE-CREATION Diff: http://reviews.m5sim.org/r/365/diff Testing --- Thanks, Gabe ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
Re: [m5-dev] Review Request: inorder: replace schedEvent() code with reschedule().
On 2011-01-04 16:56:58, Ali Saidi wrote: My only question is does it work? it seems like the if statements don't translate exactly, but that could just be over-specifying the if (e.g. can you ever fall out with out any action?). You're right, the issue is that the old code would silently do nothing if the event was already scheduled and not squashed, where the new code will forcibly reschedule a scheduled event whether it's squashed or not. I discussed this with Korey and he thought it was an oversight, but I since added 'assert(!scheduled() || squashed());' to each of these functions and re-ran the quick regressions with no ill effects. So by that limited definition, yes, it works... - Steve --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/369/#review617 --- On 2011-01-04 14:41:12, Steve Reinhardt wrote: --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/369/ --- (Updated 2011-01-04 14:41:12) Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- inorder: replace schedEvent() code with reschedule(). There were several copies of similar functions that looked like they all replicated reschedule(), so I replaced them with direct calls. Keeping this separate from the previous cset since there may be some subtle functional differences if the code ever reschedules an event that is scheduled but not squashed (though none were detected in the regressions). Diffs - src/cpu/inorder/cpu.hh 7338bc628489 src/cpu/inorder/cpu.cc 7338bc628489 src/cpu/inorder/resource.cc 7338bc628489 src/cpu/inorder/resource_pool.cc 7338bc628489 Diff: http://reviews.m5sim.org/r/369/diff Testing --- Thanks, 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.
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/366/#review620 --- Ship it! I think we talked about this and I'm ok with what we ended up on the mailing list... Bonus points if you colorize the output :)... Blue= '\033[94m' Yellow = '\033[94m' Green = '\033[92m' End = '\0330m' CCCOMSTR = Blue + ' [ CC] ' + Yellow + '$TRANSFORMATION' + End - Ali On 2011-01-03 16:10:27, Steve Reinhardt wrote: --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/366/ --- (Updated 2011-01-03 16:10:27) Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- scons: show sources and targets when building. I like the brevity of Ali's recent change, but the ambiguity of sometimes showing the source and sometimes the target is a little confusing. This patch makes scons typically list all sources and all targets for each action, with the common path prefix factored out for brevity. It's a little more verbose now but also more informative. I'm not intending to add this to the commit message, but for review purposes, here's some example output: [ CXX] ALPHA_SE/sim: main.cc - main.do Defining FAST_ALLOC_DEBUG as 0 in build/ALPHA_SE/config/fast_alloc_debug.hh. Defining FAST_ALLOC_STATS as 0 in build/ALPHA_SE/config/fast_alloc_stats.hh. Defining NO_FAST_ALLOC as 0 in build/ALPHA_SE/config/no_fast_alloc.hh. [ TRACING] ALPHA_SE/base: - traceflags.hh [ CXX] ALPHA_SE/python/swig: pyevent.cc - pyevent.do Defining FULL_SYSTEM as 0 in build/ALPHA_SE/config/full_system.hh. [SO PARAM] MemObject - ALPHA_SE/params/MemObject.hh [SO PARAM] SimObject - ALPHA_SE/params/SimObject.hh [GENERATE] ALPHA_SE/arch: - isa_traits.hh [ CXX] ALPHA_SE/python/swig: pyobject.cc - pyobject.do [SWIG] ALPHA_SE/python/swig: core.i - core_wrap.cc, core.py [ CXX] ALPHA_SE/python/swig: core_wrap.cc - core_wrap.do [SWIG] ALPHA_SE/python/swig: debug.i - debug_wrap.cc, debug.py [ CXX] ALPHA_SE/python/swig: debug_wrap.cc - debug_wrap.do (...skipping...) [GENERATE] ALPHA_SE/arch: - vtophys.hh [ CFG ISA] alpha, arm, mips, no, power, sparc, x86 - ALPHA_SE/config/the_isa.hh [GENERATE] ALPHA_SE/arch: - types.hh [GENERATE] ALPHA_SE/arch: - registers.hh [GENERATE] static_inst_exec_sigs.hh: AtomicSimpleCPU, InOrderCPU, O3CPU, TimingSimpleCPU [EN PARAM] MemoryMode - ALPHA_SE/enums/MemoryMode.hh [SO PARAM] System - ALPHA_SE/params/System.hh [EN PARAM] OpClass - ALPHA_SE/enums/OpClass.hh [SO PARAM] PhysicalMemory - ALPHA_SE/params/PhysicalMemory.hh [ISA DESC] ALPHA_SE/arch/alpha: isa/main.isa - decoder.cc, decoder.hh, max_inst_regs.hh, atomic_simple_cpu_exec.cc, inorder_cpu_exec.cc, o3_cpu_exec.cc, timing_simple_cpu_exec.cc [ CXX] ALPHA_SE/base: remote_gdb.cc - remote_gdb.do [ CXX] ALPHA_SE/base: socket.cc - socket.do (...skipping...) [SW PARAM] Process - ALPHA_SE/python/m5/internal/vptype_Process.i [BLDPARAM] Process - ALPHA_SE/python/m5/internal/param_Process.i [BLDPARAM] SimObject - ALPHA_SE/python/m5/internal/param_SimObject.i [BLDPARAM] System - ALPHA_SE/python/m5/internal/param_System.i [ENUMSWIG] MemoryMode - ALPHA_SE/python/m5/internal/enum_MemoryMode.i [BLDPARAM] PhysicalMemory - ALPHA_SE/python/m5/internal/param_PhysicalMemory.i [BLDPARAM] MemObject - ALPHA_SE/python/m5/internal/param_MemObject.i [SWIG] ALPHA_SE/python/m5/internal: vptype_Process.i - vptype_Process_wrap.cc, vptype_Process.py [ CXX] ALPHA_SE/python/m5/internal: vptype_Process_wrap.cc - vptype_Process_wrap.do [SW PARAM] AddrRange - ALPHA_SE/python/m5/internal/vptype_AddrRange.i [SWIG] ALPHA_SE/python/m5/internal: vptype_AddrRange.i - vptype_AddrRange_wrap.cc, vptype_AddrRange.py [ CXX] ALPHA_SE/python/m5/internal: vptype_AddrRange_wrap.cc - vptype_AddrRange_wrap.do (...skipping...) [EMBED PY] ALPHA_SE/python/m5/internal: param_BaseSimpleCPU.py - param_BaseSimpleCPU.py.cc [ CXX] ALPHA_SE/python/m5/internal: param_BaseSimpleCPU.py.cc - param_BaseSimpleCPU.py.do [EMBED PY] ALPHA_SE/python/m5/internal: param_LiveProcess.py - param_LiveProcess.py.cc [ CXX] ALPHA_SE/python/m5/internal: param_LiveProcess.py.cc - param_LiveProcess.py.do [ TRACING] ALPHA_SE/base: - traceflags.py [EMBED PY] ALPHA_SE/base: traceflags.py - traceflags.py.cc [ CXX] ALPHA_SE/base: traceflags.py.cc - traceflags.py.do [ CXX] ALPHA_SE/base: date.cc - date.do [LINK] ALPHA_SE: - m5.debug Diffs - SConstruct 7338bc628489 src/SConscript 7338bc628489 src/arch/SConscript 7338bc628489 src/arch/isa_parser.py 7338bc628489
Re: [m5-dev] Review Request: scons: show sources and targets when building.
I think we talked about this and I'm ok with what we ended up on the mailing list... Bonus points if you colorize the output :)... Blue = '\033[94m' Yellow = '\033[94m' Green = '\033[92m' End = '\0330m' CCCOMSTR = Blue + ' [ CC] ' + Yellow + '$TRANSFORMATION' + End 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. Nate ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
Re: [m5-dev] curTick global variable
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? This seems to mean that I shouldn't have created the whole EventManager thing and had schedule be a per-object thing. TLS scares me, but maybe that's unnecessarily. :) 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. Anyway, I've thought about this a lot. Happy to do a phone call if you want. Nate ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
Re: [m5-dev] m5/system directory
A long time ago we thought about putting a m5/system/arch directory where we would put architecture dependent code system code (boot loaders, alpha console, etc). How do we feel about this? We could move the alpha code in there now that HP relicensed it. Additionally, I've got a tiny ARM boot loader I'm looking for a place for and a new repository seems like overkill,\. Seems fine to me. 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
On 2011-01-04 16:48:28, Ali Saidi wrote: src/mem/ruby/buffers/MessageBuffer.cc, line 163 http://reviews.m5sim.org/r/367/diff/3/?file=8418#file8418line163 Why continue to comment this out? Mostly because I didn't do it. I don't like commented code in the tree, and one of the reasons I don't like it is because I don't know why it was commented out. Should I remove it? On 2011-01-04 16:48:28, Ali Saidi wrote: src/mem/ruby/common/Global.cc, line 31 http://reviews.m5sim.org/r/367/diff/3/?file=8423#file8423line31 This doesn't seem like a applicable change, also aren't they equivalent? Heh, I just had a discussion about this sort of thing with Gabe. NULL is a C thing. In C++, the standard says to use 0 for pointers. In this specific case, I'd have to add a #include to bring in the #define for NULL. Seems like a bad idea to me, no? - Nathan --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/367/#review611 --- On 2011-01-04 15:02:38, Nathan Binkert wrote: --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/367/ --- (Updated 2011-01-04 15:02:38) Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- 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 Diffs - configs/ruby/Ruby.py 7338bc628489 src/mem/SConscript 7338bc628489 src/mem/ruby/buffers/MessageBuffer.hh 7338bc628489 src/mem/ruby/buffers/MessageBuffer.cc 7338bc628489 src/mem/ruby/common/Debug.hh 7338bc628489 src/mem/ruby/common/Debug.cc 7338bc628489 src/mem/ruby/common/Debug.py 7338bc628489 src/mem/ruby/common/Global.hh 7338bc628489 src/mem/ruby/common/Global.cc 7338bc628489 src/mem/ruby/common/SConscript 7338bc628489 src/mem/ruby/common/Set.cc 7338bc628489 src/mem/ruby/eventqueue/RubyEventQueue.cc 7338bc628489 src/mem/ruby/filters/BulkBloomFilter.cc 7338bc628489 src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc 7338bc628489 src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc 7338bc628489 src/mem/ruby/network/garnet/fixed-pipeline/flit_d.hh 7338bc628489 src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc 7338bc628489 src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc 7338bc628489 src/mem/ruby/network/garnet/flexible-pipeline/flit.hh 7338bc628489 src/mem/ruby/network/simple/SimpleNetwork.cc 7338bc628489 src/mem/ruby/network/simple/Throttle.cc 7338bc628489 src/mem/ruby/network/simple/Topology.cc 7338bc628489 src/mem/ruby/profiler/Profiler.hh 7338bc628489 src/mem/ruby/profiler/Profiler.cc 7338bc628489 src/mem/ruby/slicc_interface/RubySlicc_Util.hh 7338bc628489 src/mem/ruby/storebuffer/storebuffer.cc 7338bc628489 src/mem/ruby/system/RubySystem.py 7338bc628489 src/mem/ruby/system/Sequencer.cc 7338bc628489 src/mem/ruby/system/System.cc 7338bc628489 src/mem/ruby/tester/DeterministicDriver.cc 7338bc628489 src/mem/ruby/tester/RaceyDriver.cc 7338bc628489 src/mem/ruby/tester/RaceyPseudoThread.cc 7338bc628489 src/mem/ruby/tester/test_framework.cc 7338bc628489 src/mem/slicc/symbols/StateMachine.py 7338bc628489 src/mem/slicc/symbols/Type.py 7338bc628489 Diff: http://reviews.m5sim.org/r/367/diff 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. Thanks, Nathan ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
Re: [m5-dev] Review Request: trace: reimplement the DTRACE function so it doesn't use a vector
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/352/#review625 --- src/base/debug.hh http://reviews.m5sim.org/r/352/#comment838 This file needs doxygen comments. Minimally an @file comment, but preferably documenting each class as well. src/base/debug.hh http://reviews.m5sim.org/r/352/#comment837 The things we do to not use varargs src/base/debug.cc http://reviews.m5sim.org/r/352/#comment839 These comments should really be doxygen comments and there should be ones for the various functions below (e.g. findFlag) src/base/debug.cc http://reviews.m5sim.org/r/352/#comment840 More comments please src/base/remote_gdb.cc http://reviews.m5sim.org/r/352/#comment841 Mabye emitting the individual header files and the compound header file and the user can choose? src/base/trace.hh http://reviews.m5sim.org/r/352/#comment842 Doxygen src/python/m5/debug.py http://reviews.m5sim.org/r/352/#comment843 More comments please, at least what this file exists to do - Ali On 2010-12-21 08:36:19, Nathan Binkert wrote: --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/352/ --- (Updated 2010-12-21 08:36:19) Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- trace: reimplement the DTRACE function so it doesn't use a vector One question I have about this stuff is if I should call everything trace, or debug? This diff is somewhat confused about that (some things are trace and some things are debug) and I expect to fix it. We always called this stuff trace flags in the past, but we I would like to start using these flags for other things. For example, turning on and off debugging breakpoints of different kinds. Execution tracing is a totally different mechanism but does use trace flags. My personal inclination is that trace flag is probably a bad name, but perhaps debug is a bad name too. Just call it flags? Or SimFlags? Diffs - src/SConscript 4a3bddd74f36 src/arch/alpha/interrupts.hh 4a3bddd74f36 src/arch/alpha/kernel_stats.cc 4a3bddd74f36 src/arch/alpha/linux/process.cc 4a3bddd74f36 src/arch/alpha/linux/system.cc 4a3bddd74f36 src/arch/alpha/process.cc 4a3bddd74f36 src/arch/alpha/remote_gdb.cc 4a3bddd74f36 src/arch/alpha/stacktrace.hh 4a3bddd74f36 src/arch/alpha/system.cc 4a3bddd74f36 src/arch/alpha/tlb.cc 4a3bddd74f36 src/arch/alpha/vtophys.cc 4a3bddd74f36 src/arch/arm/faults.cc 4a3bddd74f36 src/arch/arm/isa.hh 4a3bddd74f36 src/arch/arm/isa.cc 4a3bddd74f36 src/arch/arm/isa/includes.isa 4a3bddd74f36 src/arch/arm/nativetrace.cc 4a3bddd74f36 src/arch/arm/predecoder.cc 4a3bddd74f36 src/arch/arm/process.cc 4a3bddd74f36 src/arch/arm/remote_gdb.cc 4a3bddd74f36 src/arch/arm/stacktrace.hh 4a3bddd74f36 src/arch/arm/tlb.cc 4a3bddd74f36 src/arch/mips/faults.cc 4a3bddd74f36 src/arch/mips/isa.cc 4a3bddd74f36 src/arch/mips/isa/includes.isa 4a3bddd74f36 src/arch/mips/linux/process.cc 4a3bddd74f36 src/arch/mips/locked_mem.hh 4a3bddd74f36 src/arch/mips/process.cc 4a3bddd74f36 src/arch/mips/stacktrace.hh 4a3bddd74f36 src/arch/mips/tlb.cc 4a3bddd74f36 src/arch/power/process.cc 4a3bddd74f36 src/arch/power/stacktrace.hh 4a3bddd74f36 src/arch/power/tlb.cc 4a3bddd74f36 src/arch/sparc/interrupts.hh 4a3bddd74f36 src/arch/sparc/isa.cc 4a3bddd74f36 src/arch/sparc/isa/includes.isa 4a3bddd74f36 src/arch/sparc/process.cc 4a3bddd74f36 src/arch/sparc/remote_gdb.cc 4a3bddd74f36 src/arch/sparc/stacktrace.hh 4a3bddd74f36 src/arch/sparc/tlb.cc 4a3bddd74f36 src/arch/sparc/ua2005.cc 4a3bddd74f36 src/arch/sparc/vtophys.cc 4a3bddd74f36 src/arch/x86/faults.cc 4a3bddd74f36 src/arch/x86/insts/microregop.cc 4a3bddd74f36 src/arch/x86/insts/static_inst.hh 4a3bddd74f36 src/arch/x86/interrupts.cc 4a3bddd74f36 src/arch/x86/isa/includes.isa 4a3bddd74f36 src/arch/x86/nativetrace.cc 4a3bddd74f36 src/arch/x86/pagetable_walker.cc 4a3bddd74f36 src/arch/x86/predecoder.hh 4a3bddd74f36 src/arch/x86/predecoder.cc 4a3bddd74f36 src/arch/x86/process.cc 4a3bddd74f36 src/arch/x86/stacktrace.hh 4a3bddd74f36 src/arch/x86/tlb.cc 4a3bddd74f36 src/base/debug.hh 4a3bddd74f36 src/base/debug.cc 4a3bddd74f36 src/base/loader/aout_object.cc 4a3bddd74f36 src/base/loader/ecoff_object.cc 4a3bddd74f36 src/base/loader/elf_object.cc 4a3bddd74f36 src/base/loader/raw_object.cc 4a3bddd74f36 src/base/mysql.cc 4a3bddd74f36 src/base/remote_gdb.cc 4a3bddd74f36 src/base/trace.hh
Re: [m5-dev] Review Request: debug: create a Debug namespace
--- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/351/#review627 --- Ship it! - Ali On 2010-12-21 08:25:03, Nathan Binkert wrote: --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/351/ --- (Updated 2010-12-21 08:25:03) Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- debug: create a Debug namespace Diffs - src/arch/alpha/ev5.cc 4a3bddd74f36 src/base/debug.hh 4a3bddd74f36 src/base/debug.cc 4a3bddd74f36 src/base/statistics.cc 4a3bddd74f36 src/cpu/pc_event.cc 4a3bddd74f36 src/dev/ns_gige.cc 4a3bddd74f36 src/dev/sinic.cc 4a3bddd74f36 src/sim/debug.cc 4a3bddd74f36 src/sim/pseudo_inst.cc 4a3bddd74f36 Diff: http://reviews.m5sim.org/r/351/diff Testing --- Thanks, Nathan ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
Re: [m5-dev] curTick global variable
On Jan 4, 2011, at 7:56 PM, nathan binkert wrote: Interesting. If you were going to do this, why do you need accessors at all? This seems to mean that I shouldn't have created the whole EventManager thing and had schedule be a per-object thing. TLS scares me, but maybe that's unnecessarily. :) 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. Just to dive in for a moment here. TLS doesn't scare me. I've looked at a lot of ways to do the same thing and TLS is so much cleaner than the alternative getspecific/setspecific. Ali ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
Re: [m5-dev] Review Request: util: python implementation of a routine that will sort includes
On Jan 4, 2011, at 8:15 PM, nathan binkert wrote: I think we've beat this to death on the mailing list. My only comment is that before it becomes part of the commit hook, please make sure that you can't throw anything at it that will cause an exception. A better thing to do is handle all exceptions in the hook and just return failure if used as a hook. Right? Yea, although debugging it is ugly then, but yea probably. 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
On 2011-01-04 16:31:01, 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? 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 --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/367/#review608 --- On 2011-01-04 15:02:38, Nathan Binkert wrote: --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/367/ --- (Updated 2011-01-04 15:02:38) Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- 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 Diffs - configs/ruby/Ruby.py 7338bc628489 src/mem/SConscript 7338bc628489 src/mem/ruby/buffers/MessageBuffer.hh 7338bc628489 src/mem/ruby/buffers/MessageBuffer.cc 7338bc628489 src/mem/ruby/common/Debug.hh 7338bc628489 src/mem/ruby/common/Debug.cc 7338bc628489 src/mem/ruby/common/Debug.py 7338bc628489 src/mem/ruby/common/Global.hh 7338bc628489 src/mem/ruby/common/Global.cc 7338bc628489 src/mem/ruby/common/SConscript 7338bc628489 src/mem/ruby/common/Set.cc 7338bc628489 src/mem/ruby/eventqueue/RubyEventQueue.cc 7338bc628489 src/mem/ruby/filters/BulkBloomFilter.cc 7338bc628489 src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc 7338bc628489 src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc 7338bc628489 src/mem/ruby/network/garnet/fixed-pipeline/flit_d.hh 7338bc628489 src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc 7338bc628489 src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc 7338bc628489 src/mem/ruby/network/garnet/flexible-pipeline/flit.hh 7338bc628489 src/mem/ruby/network/simple/SimpleNetwork.cc 7338bc628489 src/mem/ruby/network/simple/Throttle.cc 7338bc628489 src/mem/ruby/network/simple/Topology.cc 7338bc628489 src/mem/ruby/profiler/Profiler.hh 7338bc628489 src/mem/ruby/profiler/Profiler.cc 7338bc628489 src/mem/ruby/slicc_interface/RubySlicc_Util.hh 7338bc628489 src/mem/ruby/storebuffer/storebuffer.cc 7338bc628489 src/mem/ruby/system/RubySystem.py 7338bc628489 src/mem/ruby/system/Sequencer.cc 7338bc628489 src/mem/ruby/system/System.cc 7338bc628489 src/mem/ruby/tester/DeterministicDriver.cc 7338bc628489 src/mem/ruby/tester/RaceyDriver.cc 7338bc628489 src/mem/ruby/tester/RaceyPseudoThread.cc 7338bc628489 src/mem/ruby/tester/test_framework.cc 7338bc628489 src/mem/slicc/symbols/StateMachine.py 7338bc628489 src/mem/slicc/symbols/Type.py 7338bc628489 Diff: http://reviews.m5sim.org/r/367/diff 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. Thanks, Nathan ___ m5-dev mailing list m5-dev@m5sim.org
[m5-dev] changeset in m5: Ruby: Updates MOESI Hammer protocol
changeset 9f9e10967912 in /z/repo/m5 details: http://repo.m5sim.org/m5?cmd=changeset;node=9f9e10967912 description: Ruby: Updates MOESI Hammer protocol This patch changes the manner in which data is copied from L1 to L2 cache in the implementation of the Hammer's cache coherence protocol. Earlier, data was copied directly from one cache entry to another. This has been broken in to two parts. First, the data is copied from the source cache entry to a transaction buffer entry. Then, data is copied from the transaction buffer entry to the destination cache entry. This has been done to maintain the invariant - at any given instant, multiple caches under a controller are exclusive with respect to each other. diffstat: src/mem/protocol/MOESI_hammer-cache.sm | 103 ++-- 1 files changed, 57 insertions(+), 46 deletions(-) diffs (199 lines): diff -r c819526b7c2a -r 9f9e10967912 src/mem/protocol/MOESI_hammer-cache.sm --- a/src/mem/protocol/MOESI_hammer-cache.smTue Jan 04 17:11:49 2011 -0500 +++ b/src/mem/protocol/MOESI_hammer-cache.smTue Jan 04 21:40:49 2011 -0600 @@ -689,11 +689,22 @@ action(k_popMandatoryQueue, k, desc=Pop mandatory queue.) { mandatoryQueue_in.dequeue(); } - + action(l_popForwardQueue, l, desc=Pop forwareded request queue.) { forwardToCache_in.dequeue(); } + action(hp_copyFromTBEToL2, li, desc=Copy data from TBE to L2 cache entry.) { +getCacheEntry(address).Dirty := TBEs[address].Dirty; +getCacheEntry(address).DataBlk := TBEs[address].DataBlk; + } + + action(nb_copyFromTBEToL1, fu, desc=Copy data from TBE to L1 cache entry.) { +getCacheEntry(address).Dirty := TBEs[address].Dirty; +getCacheEntry(address).DataBlk := TBEs[address].DataBlk; +getCacheEntry(address).FromL2 := true; + } + action(m_decrementNumberOfMessages, m, desc=Decrement the number of messages for which we're waiting) { peek(responseToCache_in, ResponseMsg) { assert(in_msg.Acks 0); @@ -890,28 +901,6 @@ L2cacheMemory.deallocate(address); } - action(ss_copyFromL1toL2, \s, desc=Copy data block from L1 (I or D) to L2) { -if (L1DcacheMemory.isTagPresent(address)) { - static_cast(Entry, L2cacheMemory[address]).Dirty := static_cast(Entry, L1DcacheMemory[address]).Dirty; - static_cast(Entry, L2cacheMemory[address]).DataBlk := static_cast(Entry, L1DcacheMemory[address]).DataBlk; -} else { - static_cast(Entry, L2cacheMemory[address]).Dirty := static_cast(Entry, L1IcacheMemory[address]).Dirty; - static_cast(Entry, L2cacheMemory[address]).DataBlk := static_cast(Entry, L1IcacheMemory[address]).DataBlk; -} - } - - action(tt_copyFromL2toL1, \t, desc=Copy data block from L2 to L1 (I or D)) { -if (L1DcacheMemory.isTagPresent(address)) { - static_cast(Entry, L1DcacheMemory[address]).Dirty := static_cast(Entry, L2cacheMemory[address]).Dirty; - static_cast(Entry, L1DcacheMemory[address]).DataBlk := static_cast(Entry, L2cacheMemory[address]).DataBlk; - static_cast(Entry, L1DcacheMemory[address]).FromL2 := true; -} else { - static_cast(Entry, L1IcacheMemory[address]).Dirty := static_cast(Entry, L2cacheMemory[address]).Dirty; - static_cast(Entry, L1IcacheMemory[address]).DataBlk := static_cast(Entry, L2cacheMemory[address]).DataBlk; - static_cast(Entry, L1IcacheMemory[address]).FromL2 := true; -} - } - action(uu_profileMiss, \u, desc=Profile the demand miss) { peek(mandatoryQueue_in, CacheMsg) { if (L1IcacheMemory.isTagPresent(address)) { @@ -956,97 +945,119 @@ // Transitions moving data between the L1 and L2 caches transition({I, S, O, M, MM}, L1_to_L2) { +i_allocateTBE; +gg_deallocateL1CacheBlock; vv_allocateL2CacheBlock; -ss_copyFromL1toL2; // Not really needed for state I -gg_deallocateL1CacheBlock; +hp_copyFromTBEToL2; +s_deallocateTBE; } - + transition(I, Trigger_L2_to_L1D, IT) { +i_allocateTBE; +rr_deallocateL2CacheBlock; ii_allocateL1DCacheBlock; -tt_copyFromL2toL1; // Not really needed for state I +nb_copyFromTBEToL1; // Not really needed for state I +s_deallocateTBE; uu_profileMiss; -rr_deallocateL2CacheBlock; zz_recycleMandatoryQueue; ll_L2toL1Transfer; } transition(S, Trigger_L2_to_L1D, ST) { +i_allocateTBE; +rr_deallocateL2CacheBlock; ii_allocateL1DCacheBlock; -tt_copyFromL2toL1; +nb_copyFromTBEToL1; +s_deallocateTBE; uu_profileMiss; -rr_deallocateL2CacheBlock; zz_recycleMandatoryQueue; ll_L2toL1Transfer; } transition(O, Trigger_L2_to_L1D, OT) { +i_allocateTBE; +rr_deallocateL2CacheBlock; ii_allocateL1DCacheBlock; -tt_copyFromL2toL1; +nb_copyFromTBEToL1; +s_deallocateTBE; uu_profileMiss; -rr_deallocateL2CacheBlock; zz_recycleMandatoryQueue;
Re: [m5-dev] Review Request: scons: show sources and targets when building.
On Tue, Jan 4, 2011 at 5:44 PM, nathan binkert n...@binkert.org wrote: I think we talked about this and I'm ok with what we ended up on the mailing list... Bonus points if you colorize the output :)... Blue = '\033[94m' Yellow = '\033[94m' Green = '\033[92m' End = '\0330m' CCCOMSTR = Blue + ' [ CC] ' + Yellow + '$TRANSFORMATION' + End 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... Steve ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
Re: [m5-dev] curTick global variable
Just to dive in for a moment here. TLS doesn't scare me. I've looked at a lot of ways to do the same thing and TLS is so much cleaner than the alternative getspecific/setspecific. I was more wondering about the global variable thing (TLS is essentially a global) more than TLS vs getspecific/setspecific. The mechansim for doing TLS isn't really an issue for me. I was trying to understand how one object (in thread 1) might call a method on another object which in turn would schedule an event for that object (which should be in thread 2, the target's thread). Nate ___ 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.
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. As a thought, TRANSFORM should probably take the action abbreviation (e.g. CC) as a parameter if you're going to do the colorization. This is all overkill, but is a nice feature imho. 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
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 Thanks for testing Nilay! 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
On 2011-01-04 19:17:43, Nilay Vaish wrote: src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc, line 194 http://reviews.m5sim.org/r/367/diff/3/?file=8431#file8431line194 Should this not be converted to DPRINTF()? Perhaps, but that is really a separate change. I don't know what flag to base it on. I only changed from printf to cprintf so I wouldn't have to #include cstdio - Nathan --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/367/#review628 --- On 2011-01-04 15:02:38, Nathan Binkert wrote: --- This is an automatically generated e-mail. To reply, visit: http://reviews.m5sim.org/r/367/ --- (Updated 2011-01-04 15:02:38) Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and Nathan Binkert. Summary --- 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 Diffs - configs/ruby/Ruby.py 7338bc628489 src/mem/SConscript 7338bc628489 src/mem/ruby/buffers/MessageBuffer.hh 7338bc628489 src/mem/ruby/buffers/MessageBuffer.cc 7338bc628489 src/mem/ruby/common/Debug.hh 7338bc628489 src/mem/ruby/common/Debug.cc 7338bc628489 src/mem/ruby/common/Debug.py 7338bc628489 src/mem/ruby/common/Global.hh 7338bc628489 src/mem/ruby/common/Global.cc 7338bc628489 src/mem/ruby/common/SConscript 7338bc628489 src/mem/ruby/common/Set.cc 7338bc628489 src/mem/ruby/eventqueue/RubyEventQueue.cc 7338bc628489 src/mem/ruby/filters/BulkBloomFilter.cc 7338bc628489 src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc 7338bc628489 src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc 7338bc628489 src/mem/ruby/network/garnet/fixed-pipeline/flit_d.hh 7338bc628489 src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc 7338bc628489 src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc 7338bc628489 src/mem/ruby/network/garnet/flexible-pipeline/flit.hh 7338bc628489 src/mem/ruby/network/simple/SimpleNetwork.cc 7338bc628489 src/mem/ruby/network/simple/Throttle.cc 7338bc628489 src/mem/ruby/network/simple/Topology.cc 7338bc628489 src/mem/ruby/profiler/Profiler.hh 7338bc628489 src/mem/ruby/profiler/Profiler.cc 7338bc628489 src/mem/ruby/slicc_interface/RubySlicc_Util.hh 7338bc628489 src/mem/ruby/storebuffer/storebuffer.cc 7338bc628489 src/mem/ruby/system/RubySystem.py 7338bc628489 src/mem/ruby/system/Sequencer.cc 7338bc628489 src/mem/ruby/system/System.cc 7338bc628489 src/mem/ruby/tester/DeterministicDriver.cc 7338bc628489 src/mem/ruby/tester/RaceyDriver.cc 7338bc628489 src/mem/ruby/tester/RaceyPseudoThread.cc 7338bc628489 src/mem/ruby/tester/test_framework.cc 7338bc628489 src/mem/slicc/symbols/StateMachine.py 7338bc628489 src/mem/slicc/symbols/Type.py 7338bc628489 Diff: http://reviews.m5sim.org/r/367/diff 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. Thanks, Nathan ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
Re: [m5-dev] Review Request: RefCount: Add a unit test for reference counting pointers.
So do we want to define a standard set of assert like macros/functions/whatever? If we're going to go for a fixed format we should stick that in a header somewhere. I went with asserts because they pretty conveniently check the result and blow up if there's a problem, but printing PASS/FAIL would be fine too. Sounds like a really good idea to me. Nate ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev
Re: [m5-dev] Review Request: util: python implementation of a routine that will sort includes
I think we've beat this to death on the mailing list. My only comment is that before it becomes part of the commit hook, please make sure that you can't throw anything at it that will cause an exception. A better thing to do is handle all exceptions in the hook and just return failure if used as a hook. Right? Yea, although debugging it is ugly then, but yea probably. I can still print the stack trace, but abort the transaction cleanly. Nate ___ m5-dev mailing list m5-dev@m5sim.org http://m5sim.org/mailman/listinfo/m5-dev