As it turns out, even if TraceFlex compiles, it doens't necessarily mean it will work. So, I took the dive and compiled gcc-4.0.0. Naturally, this is still causing problems. When I tried to load it, I get the following:
simics> load-module flexus-TraceFlex-v9-iface-gcc *** Internal error #101 Error loading module 'flexus-TraceFlex-v9-iface-gcc': Unexpected error when loading module 'flexus-TraceFlex-v9-iface-gcc' Is this caused by a compiler as well? Andy ----- Original Message Follows ----- > Hello, > > When I do a > > simics> load-module flexus-TraceFlex-v9-iface-gcc > > I get the the following error: > > Flexus (C) 2006 The SimFlex Project > Eric Chung, Brian Gold, Nikos Hardavellas, Jangwook Kim, Ippokratis > Pandis, > Minglong Shao, Jared Smolens, Stephen Somogyi, Thomas Wenisch, Roland > Wunderlich > Anastassia Ailamaki, Babak Falsafi and James C. Hoe. > > Flexus Simics simulator - Built as (*** Simics ***) Simics getting > shaky, switching to 'safe' mode. > Simics (main thread) received a segmentation fault. Will try to > recuperate. > > I've read on some other threads that sometimes it's ok to continue > despite the segfaults. Is it ok, in this case, to continue despite > this error? If I continue, it runs, but the go.sh is broken by this. > For now, if it's ok to continue then I will manually run go.sh. > > > Thanks, > ayu > _______________________________________________ > SimFlex mailing list > [email protected] > https://sos.ece.cmu.edu/mailman/listinfo/simflex > SimFlex web page: http://www.ece.cmu.edu/~simflex From twenisch at ece.cmu.edu Tue Aug 1 15:19:51 2006 From: twenisch at ece.cmu.edu (Thomas Wenisch) List-Post: [email protected] Date: Tue Aug 1 15:19:58 2006 Subject: [Simflex] possible load module problem? In-Reply-To: <[email protected]> References: <[email protected]> Message-ID: <[email protected]> Hi Ayu, Usually, when Flexus seg-faults immediately after being loaded, this indicates that the libstdc++.so.6 library in the Simics distribution does not match the one that Flexus was built with. Simics includes a fairly ancient version of libstdc++.so (from the ancient version of GCC they use to build Simics) in the directory simics/x86-linux/sys/lib. Flexus requires a newer libstdc++. So, when you run 'make install', Flexus copies the libstdc++ from the GCC that Flexus is built with and overwrites Simics' libstdc++. If you poke around the list archives, you will see that we've had considerable trouble getting this scheme to work on various Linux distributions. It is possible that your extremely new version of Debian may not like this workaround. I suggest you try the following steps to see if these library issues are the problem: 1) Remove Flexus and Simics completely from your system. 2) Re-install Simics and unpack a pristine version of Flexus. 3) Pick the GCC you want to use. We are using gcc 4.1.0 here, and I would bet this is the pre-installed GCC on your version of Debian, so you can probably start by trying the system's gcc. 4) run 'make install'. Check simics/x86-linux/sys/lib to make sure that the install procedure has actually copied the correct version of libstdc++ (matching the one in the lib subdirectory of your gcc installation). 5) Build Flexus. 6) Try starting Flexus and see if you get a seg-fault. If you want to try a different GCC, repeat this procedure (i.e., wipe your Flexus and Simics installations and reinstall) to ensure that there aren't any stale .o files or libraries lying around. Let me know if the above still leads to problems. If it does, we may be stuck - at that point, I would recommend switching Linux distributions if that is an option for you (e.g., to the latest Fedora Core; we tested Fedora Core 5 prior to the last Flexus release). Regards, -Tom Wenisch Computer Architecture Lab Carnegie Mellon University On Tue, 1 Aug 2006, ayu wrote: > > As it turns out, even if TraceFlex compiles, it doens't necessarily mean > it will work. So, I took the dive and compiled gcc-4.0.0. Naturally, > this is still causing problems. When I tried to load it, I get the > following: > > simics> load-module flexus-TraceFlex-v9-iface-gcc > > *** Internal error #101 > Error loading module 'flexus-TraceFlex-v9-iface-gcc': Unexpected error > when loading module 'flexus-TraceFlex-v9-iface-gcc' > > Is this caused by a compiler as well? > > Andy > > ----- Original Message Follows ----- >> Hello, >> >> When I do a >> >> simics> load-module flexus-TraceFlex-v9-iface-gcc >> >> I get the the following error: >> >> Flexus (C) 2006 The SimFlex Project >> Eric Chung, Brian Gold, Nikos Hardavellas, Jangwook Kim, Ippokratis >> Pandis, >> Minglong Shao, Jared Smolens, Stephen Somogyi, Thomas Wenisch, Roland >> Wunderlich >> Anastassia Ailamaki, Babak Falsafi and James C. Hoe. >> >> Flexus Simics simulator - Built as (*** Simics ***) Simics getting >> shaky, switching to 'safe' mode. >> Simics (main thread) received a segmentation fault. Will try to >> recuperate. >> >> I've read on some other threads that sometimes it's ok to continue >> despite the segfaults. Is it ok, in this case, to continue despite >> this error? If I continue, it runs, but the go.sh is broken by this. >> For now, if it's ok to continue then I will manually run go.sh. >> >> >> Thanks, >> ayu >> _______________________________________________ >> SimFlex mailing list >> [email protected] >> https://sos.ece.cmu.edu/mailman/listinfo/simflex >> SimFlex web page: http://www.ece.cmu.edu/~simflex > _______________________________________________ > SimFlex mailing list > [email protected] > https://sos.ece.cmu.edu/mailman/listinfo/simflex > SimFlex web page: http://www.ece.cmu.edu/~simflex > From ayu at ic.sunysb.edu Tue Aug 1 16:40:22 2006 From: ayu at ic.sunysb.edu (ayu) List-Post: [email protected] Date: Tue Aug 1 16:40:33 2006 Subject: [Simflex] possible load module problem? Message-ID: <[email protected]> Tom, Thanks for the reply. It turns out that after compiling gcc-4.0.0, I needed to do a completely new recompile. Previously, I was just recompling it whenever I switched to a different compilier. It's hard to believe that a slightly different version of the complier (4.0.0 and 4.0.4) can cause so much headache. Thanks for the help. ayu ----- Original Message Follows ----- > Hi Ayu, > > Usually, when Flexus seg-faults immediately after being loaded, this > indicates that the libstdc++.so.6 library in the Simics distribution > does not match the one that Flexus was built with. > > Simics includes a fairly ancient version of libstdc++.so (from the > ancient version of GCC they use to build Simics) in the directory > simics/x86-linux/sys/lib. Flexus requires a newer libstdc++. So, > when you run 'make install', Flexus copies the libstdc++ from the GCC > that Flexus is built with and overwrites Simics' libstdc++. If you > poke around the list archives, you will see that we've had > considerable trouble getting this scheme to work on various Linux > distributions. It is possible that your extremely new version of > Debian may not like this workaround. > > I suggest you try the following steps to see if these library issues > are the problem: > > 1) Remove Flexus and Simics completely from your system. > 2) Re-install Simics and unpack a pristine version of Flexus. > 3) Pick the GCC you want to use. We are using gcc 4.1.0 here, and I > would > bet this is the pre-installed GCC on your version of Debian, so > you can > probably start by trying the system's gcc. > 4) run 'make install'. Check simics/x86-linux/sys/lib to make sure > that > the install procedure has actually copied the correct version of > libstdc++ (matching the one in the lib subdirectory of your gcc > installation). > 5) Build Flexus. > 6) Try starting Flexus and see if you get a seg-fault. > > If you want to try a different GCC, repeat this procedure (i.e., wipe > your Flexus and Simics installations and reinstall) to ensure that > there aren't any stale .o files or libraries lying around. > > Let me know if the above still leads to problems. If it does, we may > be stuck - at that point, I would recommend switching Linux > distributions if that is an option for you (e.g., to the latest > Fedora Core; we tested Fedora Core 5 prior to the last Flexus > release). > > Regards, > -Tom Wenisch > Computer Architecture Lab > Carnegie Mellon University > > On Tue, 1 Aug 2006, ayu wrote: > > > > > As it turns out, even if TraceFlex compiles, it doens't necessarily > > mean it will work. So, I took the dive and compiled gcc-4.0.0. > > Naturally, this is still causing problems. When I tried to load it, > > I get the following: > > > > simics> load-module flexus-TraceFlex-v9-iface-gcc > > > > *** Internal error #101 > > Error loading module 'flexus-TraceFlex-v9-iface-gcc': Unexpected > > error when loading module 'flexus-TraceFlex-v9-iface-gcc' > > > > Is this caused by a compiler as well? > > > > Andy > > > > ----- Original Message Follows ----- > >> Hello, > >> > >> When I do a > >> > >> simics> load-module flexus-TraceFlex-v9-iface-gcc > >> > >> I get the the following error: > >> > >> Flexus (C) 2006 The SimFlex Project > >> Eric Chung, Brian Gold, Nikos Hardavellas, Jangwook Kim, Ippokratis > >> Pandis, > >> Minglong Shao, Jared Smolens, Stephen Somogyi, Thomas Wenisch, > Roland >> Wunderlich > >> Anastassia Ailamaki, Babak Falsafi and James C. Hoe. > >> > >> Flexus Simics simulator - Built as (*** Simics ***) Simics getting > >> shaky, switching to 'safe' mode. > >> Simics (main thread) received a segmentation fault. Will try to > >> recuperate. > >> > >> I've read on some other threads that sometimes it's ok to continue > >> despite the segfaults. Is it ok, in this case, to continue despite > >> this error? If I continue, it runs, but the go.sh is broken by > this. >> For now, if it's ok to continue then I will manually run > go.sh. >> > >> > >> Thanks, > >> ayu > >> _______________________________________________ > >> SimFlex mailing list > >> [email protected] > >> https://sos.ece.cmu.edu/mailman/listinfo/simflex > >> SimFlex web page: http://www.ece.cmu.edu/~simflex > > _______________________________________________ > > SimFlex mailing list > > [email protected] > > https://sos.ece.cmu.edu/mailman/listinfo/simflex > > SimFlex web page: http://www.ece.cmu.edu/~simflex > > > _______________________________________________ > SimFlex mailing list > [email protected] > https://sos.ece.cmu.edu/mailman/listinfo/simflex > SimFlex web page: http://www.ece.cmu.edu/~simflex From ayu at ic.sunysb.edu Wed Aug 2 22:50:56 2006 From: ayu at ic.sunysb.edu (ayu) List-Post: [email protected] Date: Wed Aug 2 22:51:08 2006 Subject: [Simflex] >16 nodes possible? Message-ID: <[email protected]> Hello, When I try to run a multiprocessor system that's greater than 16, I get the following (in TraceFlex): 419 <FastBusImpl.cpp:451> (<undefined>[<undefined>]) {0}- Assertion failed: ((!(Flexus::Core::ComponentManager::getComponentManager().systemWidth() <= 16))) : This implementation only supports 16 nodes (*** Simics ***) Simics getting shaky, switching to 'safe' mode. Is this an inherent limitation of SimFlex? Can I go in and increase this number? Thanks, ayu From twenisch at ece.cmu.edu Thu Aug 3 13:29:22 2006 From: twenisch at ece.cmu.edu (Thomas Wenisch) List-Post: [email protected] Date: Thu Aug 3 13:29:26 2006 Subject: [Simflex] >16 nodes possible? In-Reply-To: <[email protected]> References: <[email protected]> Message-ID: <[email protected]> Hi Ayu, The 16-node limit is not inherent in Flexus, but it is a limitation of the FastBus component. The FastBus component uses a bit vector (coherence_state_t) to store the set of nodes that are sharing a cache block. This bit vector is currently written to record at most 16 nodes. It should be relatively straight-forward to increase this limit to a little under 64 nodes, by modifying coherence_state_t and all the functions that use it (to unsigned long long) in FastBusImpl.cpp. Regards, -Tom Wenisch Computer Architecture Lab Carnegie Mellon University On Wed, 2 Aug 2006, ayu wrote: > > Hello, > > When I try to run a multiprocessor system that's greater than 16, I get > the following (in TraceFlex): > > 419 <FastBusImpl.cpp:451> (<undefined>[<undefined>]) {0}- Assertion > failed: > ((!(Flexus::Core::ComponentManager::getComponentManager().systemWidth() > <= 16))) : This implementation only supports 16 nodes > (*** Simics ***) Simics getting shaky, switching to 'safe' mode. > > Is this an inherent limitation of SimFlex? Can I go in and increase this > number? > > Thanks, > ayu > _______________________________________________ > SimFlex mailing list > [email protected] > https://sos.ece.cmu.edu/mailman/listinfo/simflex > SimFlex web page: http://www.ece.cmu.edu/~simflex > From ayu at ic.sunysb.edu Thu Aug 3 22:50:50 2006 From: ayu at ic.sunysb.edu (ayu) List-Post: [email protected] Date: Thu Aug 3 22:51:12 2006 Subject: [Simflex] setting memory delay Message-ID: <[email protected]> Hello, If I set the memory delay using flexus.set "-memory:delay" "200" does that override Simics' memory delay as well? Or do I need to set Simics' delay to match Simflex's delay? Thanks, ayu From twenisch at ece.cmu.edu Mon Aug 7 11:40:16 2006 From: twenisch at ece.cmu.edu (Thomas Wenisch) List-Post: [email protected] Date: Mon Aug 7 11:40:21 2006 Subject: [Simflex] setting memory delay In-Reply-To: <[email protected]> References: <[email protected]> Message-ID: <[email protected]> Hello Ayu, In UniFlex[.OoO] and CMPFlex[.OoO], "-memory:delay" sets the memory delay, and Flexus controls Simics memory delay (i.e., memory operations in Simics complete when Flexus tells them to). In DSMFlex[.OoO], the memory delay is controlled by the Directory component, and the correct setting is "-directory:latency". In TraceFlex and TraceCMPFlex, there are no memory delays (timing is exactly the same as in straight Simics w/o Flexus). Regards, -Tom Wenisch On Thu, 3 Aug 2006, ayu wrote: > > Hello, > > If I set the memory delay using > > flexus.set "-memory:delay" "200" > > does that override Simics' memory delay as well? Or do I need to set > Simics' delay to match Simflex's delay? > > Thanks, > ayu > _______________________________________________ > SimFlex mailing list > [email protected] > https://sos.ece.cmu.edu/mailman/listinfo/simflex > SimFlex web page: http://www.ece.cmu.edu/~simflex > From mrinal at ece.umn.edu Thu Aug 17 00:58:04 2006 From: mrinal at ece.umn.edu (Mrinal Nath) List-Post: [email protected] Date: Thu Aug 17 00:58:14 2006 Subject: [Simflex] Some questions Message-ID: <[email protected]> Hi, I have a few questions about the Flexus implementation: 1. In IFetchImpl.cpp, in function "memoryResponse", the reply for a "Probe" is always "ProbedNotPresent". Can you please clarify the reason for this. (I think that since this is the IFetch component, it does not cache anything, and so no probe will hit. However, then why does this component even get Invalidate or Downgrade requests?) In fact, can you please clarify the communication that goes on between the L1-L2 caches, and the L1i-IFetch and the L1d-Execute ? 2. In ExecuteImpl.cpp, in class ExecuteStateImpl, what is the exact meaning of 'theIsIssued', 'theIsInitiated', 'theIsPerformed' and 'theIsComplete'. To me, the first two seem similar to each other. Whats the difference between them? The last two also seem similar to each other. Thanks, - Mrinal
