Nate: Thanks that was the problem.

Gabe: Cool, from now on I will post everything in m5-users. I posted here
since it was concerning my on going development. It was a little confusing
where to past what.

Thanks both again,
Javier


On Wed, Apr 22, 2009 at 11:57 PM, <[email protected]> wrote:

> Send m5-dev mailing list submissions to
>        [email protected]
>
> To subscribe or unsubscribe via the World Wide Web, visit
>        http://m5sim.org/mailman/listinfo/m5-dev
> or, via email, send a message with subject or body 'help' to
>        [email protected]
>
> You can reach the person managing the list at
>        [email protected]
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of m5-dev digest..."
>
>
> Today's Topics:
>
>   1. Histograms and Distributions (nathan binkert)
>   2. Stats changes (nathan binkert)
>   3. Adding New Param error (Javier Jose)
>   4. Re: Adding New Param error (Gabriel Michael Black)
>   5. Re: Adding New Param error (nathan binkert)
>   6. Re: [PATCH 03 of 10] Expose memory access size and flags
>      through instruction object (Korey Sewell)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Wed, 22 Apr 2009 13:45:23 -0700
> From: nathan binkert <[email protected]>
> Subject: [m5-dev] Histograms and Distributions
> To: M5 Developer List <[email protected]>
> Message-ID:
>        <[email protected]>
> Content-Type: text/plain; charset=ISO-8859-1
>
> Hi Everyone,
>
> I have a question about statistics for you all.
>
> Daniel pointed out that GEMS has a Historgram statistics type similar
> to M5's Distribution with one difference.  M5's distribution (which
> was modeled on simplescalar) has a fixed number of buckets which are
> fixed in size at initialization time.  Additionally, it has an
> overflow and underflow bucket to capture samples that are out of the
> distribution's range.  The GEMS Histogram has a fixed number of
> variable sized buckets.  Initially, each bucket would be very small,
> and if you get a new sample that doesn't have a bucket to go into, you
> double the size of the buckets (and shift the values around) until
> there is a bucket which can accept the sample.
>
> I've implemented the Histogram statistic type because it will be
> useful for Ruby integration and seems like a useful concept.  My
> question is, does the Distribution make sense if we have the
> Histogram?  Should I move all Distributions to Histograms and drop
> Distribution?  I can keep both, but I'm inclined to believe that this
> Histogram is superior in most cases.
>
> Does anyone have any opinion?
>
>  Nate
>
>
> ------------------------------
>
> Message: 2
> Date: Wed, 22 Apr 2009 13:53:27 -0700
> From: nathan binkert <[email protected]>
> Subject: [m5-dev] Stats changes
> To: M5 Developer List <[email protected]>
> Message-ID:
>        <[email protected]>
> Content-Type: text/plain; charset=ISO-8859-1
>
> Hi Everyone,
>
> I wanted to let everyone know that the format of the statistics file
> has changed with a recent commit that I made.  Up until today, M5 had
> an option to print statistics in a simplescalar compatible output
> format.  The default was usually to use this compatibility mode, but
> due to an initialization bug, sometimes this wouldn't happen.  There
> were even examples of committed tests where some of the tests were in
> one mode and some were in another.  The combination of this bug, the
> fact that the compatibility mode isn't that important, and the fact
> that it just made the code more complicated, I've removed the
> compatibility mode.  All statistics outputs should be consistent now.
>
> As a side benefit, I believe that people will find that the new text
> format is much easier to parse now.  One notable change was that
> "<err: div-0>" and "no value" are both now "no_value".  This makes the
> new format easily parsed using white space to separate into three
> colums: stat name, value, and an option comment/description.
>
>  Nate
>
>
> ------------------------------
>
> Message: 3
> Date: Wed, 22 Apr 2009 22:30:55 -0400
> From: Javier Jose <[email protected]>
> Subject: [m5-dev] Adding New Param error
> To: [email protected]
> Message-ID:
>        <[email protected]>
> Content-Type: text/plain; charset="iso-8859-1"
>
> Hi Everyone,
>
> As part of the Adaptive Dyanmic ROB implementation I am trying to add 2 new
> parameters to be accessed on cpu.cc
>
> I added the parameters in build/ALPHA_SE/params/DerivO3CPU.hh
> I also modified src/cpu/o3/O3CPU.py to add the parameters
>
> In conifgs/example/se.py I added this code
>
> CPUClass.robEvalPeriod = Param.Unsigned(152000, "ROB Eval Period")
> CPUClass.allocations_per_thread = Param.Unsigned(4, "Allocations per thread
> ROB partition")
>
> The variables are declared in src/cpu/o3/cpu.hh as unsigned int
>
> However When i run the se.py script I get the following error:
>
> Traceback (most recent call last):
>  File "<string>", line 1, in <module>
>  File "/home/javier/m5/src/python/m5/main.py", line 359, in main
>    exec filecode in scope
>  File "/home/javier/m5/configs/example/se.py", line 142, in <module>
>    CPUClass.robEvalPeriod = Param.Unsigned(152000, "ROB Eval Period")
>  File "/home/javier/m5/src/python/m5/SimObject.py", line 325, in
> __setattr__
>    cls._set_param(attr, value, param)
>  File "/home/javier/m5/src/python/m5/SimObject.py", line 274, in _set_param
>    cls._values[name] = param.convert(value)
>  File "/home/javier/m5/src/python/m5/params.py", line 152, in convert
>    return self.ptype(value)
>  File "/home/javier/m5/src/python/m5/params.py", line 358, in __init__
>    % type(value).__name__
> TypeError: Can't convert object of type ParamDesc to CheckedInt
> Error setting param TmpClass.robEvalPeriod to <m5.params.ParamDesc object
> at
> 0xb770614c>
>
> I also tried:
>
> CPUClass.robEvalPeriod = Param.Int(152000, "ROB Eval Period")
> CPUClass.allocations_per_thread = Param.Int(4, "Allocations per thread ROB
> partition")
>
> But, got the same errors.
>
> I appreciate the help.
> Javier Malave
> Texas A&M University
> Computer Science & Engineering Department
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL:
> http://m5sim.org/mailman/private/m5-dev/attachments/20090422/3c7edd41/attachment-0001.htm
>
> ------------------------------
>
> Message: 4
> Date: Wed, 22 Apr 2009 22:49:19 -0400
> From: Gabriel Michael Black <[email protected]>
> Subject: Re: [m5-dev] Adding New Param error
> To: M5 Developer List <[email protected]>
> Message-ID: <[email protected]>
> Content-Type: text/plain;       charset=ISO-8859-1;     DelSp="Yes";
>        format="flowed"
>
> This sort of question should go to the m5-users mailing list. The
> information on
> http://m5sim.org/wiki/index.php/Simulation_Scripts_Explained might
> help you. You should never need to modify files in build since those
> are all either simlinked to files in other places or are generated by
> the build process. build/ALPHA_SE/params/DerivO3CPU.hh is a generated
> file.
>
> Gabe
>
> Quoting Javier Jose <[email protected]>:
>
> > Hi Everyone,
> >
> > As part of the Adaptive Dyanmic ROB implementation I am trying to add 2
> new
> > parameters to be accessed on cpu.cc
> >
> > I added the parameters in build/ALPHA_SE/params/DerivO3CPU.hh
> > I also modified src/cpu/o3/O3CPU.py to add the parameters
> >
> > In conifgs/example/se.py I added this code
> >
> > CPUClass.robEvalPeriod = Param.Unsigned(152000, "ROB Eval Period")
> > CPUClass.allocations_per_thread = Param.Unsigned(4, "Allocations per
> thread
> > ROB partition")
> >
> > The variables are declared in src/cpu/o3/cpu.hh as unsigned int
> >
> > However When i run the se.py script I get the following error:
> >
> > Traceback (most recent call last):
> >   File "<string>", line 1, in <module>
> >   File "/home/javier/m5/src/python/m5/main.py", line 359, in main
> >     exec filecode in scope
> >   File "/home/javier/m5/configs/example/se.py", line 142, in <module>
> >     CPUClass.robEvalPeriod = Param.Unsigned(152000, "ROB Eval Period")
> >   File "/home/javier/m5/src/python/m5/SimObject.py", line 325, in
> > __setattr__
> >     cls._set_param(attr, value, param)
> >   File "/home/javier/m5/src/python/m5/SimObject.py", line 274, in
> _set_param
> >     cls._values[name] = param.convert(value)
> >   File "/home/javier/m5/src/python/m5/params.py", line 152, in convert
> >     return self.ptype(value)
> >   File "/home/javier/m5/src/python/m5/params.py", line 358, in __init__
> >     % type(value).__name__
> > TypeError: Can't convert object of type ParamDesc to CheckedInt
> > Error setting param TmpClass.robEvalPeriod to <m5.params.ParamDesc object
> at
> > 0xb770614c>
> >
> > I also tried:
> >
> > CPUClass.robEvalPeriod = Param.Int(152000, "ROB Eval Period")
> > CPUClass.allocations_per_thread = Param.Int(4, "Allocations per thread
> ROB
> > partition")
> >
> > But, got the same errors.
> >
> > I appreciate the help.
> > Javier Malave
> > Texas A&M University
> > Computer Science & Engineering Department
> >
>
>
>
>
> ------------------------------
>
> Message: 5
> Date: Wed, 22 Apr 2009 20:55:46 -0700
> From: nathan binkert <[email protected]>
> Subject: Re: [m5-dev] Adding New Param error
> To: M5 Developer List <[email protected]>
> Message-ID:
>        <[email protected]>
> Content-Type: text/plain; charset=ISO-8859-1
>
> The "Param.Unsigned(..." code only goes with the SimObject definition
> (in O3CPU.py)  to set a value other than the default, you'd simply
> say:
> CPUClass.robEvalPeriod = 152000
> CPUClass.allocations_per_thread = 4
>
>  Nate
>
> 2009/4/22 Javier Jose <[email protected]>:
> > Hi Everyone,
> >
> > As part of the Adaptive Dyanmic ROB implementation I am trying to add 2
> new parameters to be accessed on cpu.cc
> >
> > I added the parameters in build/ALPHA_SE/params/DerivO3CPU.hh
> > I also modified src/cpu/o3/O3CPU.py to add the parameters
> >
> > In conifgs/example/se.py I added this code
> >
> > CPUClass.robEvalPeriod = Param.Unsigned(152000, "ROB Eval Period")
> > CPUClass.allocations_per_thread = Param.Unsigned(4, "Allocations per
> thread ROB partition")
> >
> > The variables are declared in src/cpu/o3/cpu.hh as unsigned int
> >
> > However When i run the se.py script I get the following error:
> >
> > Traceback (most recent call last):
> > ? File "<string>", line 1, in <module>
> > ? File "/home/javier/m5/src/python/m5/main.py", line 359, in main
> > ??? exec filecode in scope
> > ? File "/home/javier/m5/configs/example/se.py", line 142, in <module>
> > ??? CPUClass.robEvalPeriod = Param.Unsigned(152000, "ROB Eval Period")
> > ? File "/home/javier/m5/src/python/m5/SimObject.py", line 325, in
> __setattr__
> > ??? cls._set_param(attr, value, param)
> > ? File "/home/javier/m5/src/python/m5/SimObject.py", line 274, in
> _set_param
> > ??? cls._values[name] = param.convert(value)
> > ? File "/home/javier/m5/src/python/m5/params.py", line 152, in convert
> > ??? return self.ptype(value)
> > ? File "/home/javier/m5/src/python/m5/params.py", line 358, in __init__
> > ??? % type(value).__name__
> > TypeError: Can't convert object of type ParamDesc to CheckedInt
> > Error setting param TmpClass.robEvalPeriod to <m5.params.ParamDesc object
> at 0xb770614c>
> >
> > I also tried:
> >
> > CPUClass.robEvalPeriod = Param.Int(152000, "ROB Eval Period")
> > CPUClass.allocations_per_thread = Param.Int(4, "Allocations per thread
> ROB partition")
> >
> > But, got the same errors.
> >
> > I appreciate the help.
> > Javier Malave
> > Texas A&M University
> > Computer Science & Engineering Department
> >
> >
> > _______________________________________________
> > m5-dev mailing list
> > [email protected]
> > http://m5sim.org/mailman/listinfo/m5-dev
> >
> >
>
>
> ------------------------------
>
> Message: 6
> Date: Thu, 23 Apr 2009 00:52:22 -0400
> From: Korey Sewell <[email protected]>
> Subject: Re: [m5-dev] [PATCH 03 of 10] Expose memory access size and
>        flags   through instruction object
> To: M5 Developer List <[email protected]>
> Message-ID:
>        <[email protected]>
> Content-Type: text/plain; charset="iso-8859-1"
>
> OK,
> it looks like I'm caught in the trap of implementing functionality that
> doesnt buy us enough to get away with significantly breaking the current M5
> way of instruction<->cpu interaction and similarly isn't useful enough
> (considering realistic usage & other architectural inaccuracies) to encode
> a
> special instruction function (like translate()) to handle this case.
> Unfortunately my reasons weren't strong enough to keep that feature, but
> that's OK, the discussion cleared up some things for me...
>
> (Steve's spiel about wasting time coding "general" features still haunts my
> dreams! ... haha)
>
> In initially designing the model, I was trying to allow objects within the
> CPU model to be as independent as possible in order to allow the future
> flexibility of people to add new things or edit things. One of the reasons
> O3 might seem so daunting for new users is that it has so many
> tightly-weaved objects that interact that it's hard to tweak anything with
> confidence (but I do admit, modeling an out-of-order simulator in itself is
> complicated)...
>
> Anyway, I can conform to what people seem to want and that is just merge
> the
> TLB access with the Memory access, no biggie :)
>
> Doing so will be relatively quick to implement, but I plan on holding off
> on
> it a bit, since I'm so close with these regressions I dont want to waste
> too
> much time just merging code upstream into patches.
>
> If anyone needs a peek at what I have now for the InOrder model, just let
> me
> know and there are about 10 patches or so that you can fix up your tree and
> so far get the gzip regression working right. Currently, I am debugging eon
> and some of the FP instructions that are causing problems.
>
>
> On Wed, Apr 22, 2009 at 12:47 AM, Steve Reinhardt <[email protected]>
> wrote:
>
> >
> >
> > On Tue, Apr 21, 2009 at 6:26 PM, Korey Sewell <[email protected]> wrote:
> >
> >>
> >> That's not what I mean.  What I'm saying is, simulate the timing of a
> >>> TLB stage, but do the functional access with the memory stage.  I.e.
> >>> split it for timing purposes, but leave it together for functional
> >>> reasons.  I'd be surprised if this does not work since the timing of
> >>> TLB accesses at that granularity shouldn't have much of an impact on
> >>> the program.  I think Steve agreed with me on this one. (right Steve?)
> >>
> >> Yea, I think we are misunderstanding each other here. I guess I'm not
> >> exactly sure what you are getting at or what point you are arguing for
> >> (since the conversation got restarted again I may be lost in
> translation)
> >>
> >> For your point about TLB accesses and timing, I thought that we had
> >> resolved that the timing of TLBs does have a impact on the program which
> is
> >> why Gabe went through making a "translateTiming" access for the TLB and
> then
> >> also making SE mode use a TLB.
> >>
> >
> > The timing of a TLB miss definitely has an impact.  For all the ISAs
> we've
> > done prior to x86, TLB misses were handled in software; the translate()
> > method either was a hit or just signaled a miss to be handled later, so
> we
> > didn't need to do anything special to model their latency.  For x86, TLB
> > misses are handled in hardware, and translate() could encapsulate a
> > HW-serviced TLB miss and page table walk.  That's why we needed to add
> > translateTiming().
> >
> > The timing of TLB hits doesn't matter as much; it's a small fixed delay
> > like integer ALU accesses or L1 cache hits, and that latency is pretty
> much
> > designed into the pipeline, so as long as your pipeline design accounts
> for
> > that latency properly you don't have to model it very explicitly.
> >
> > Nate's point is that the spot in the pipeline where you account for the
> > latency of a TLB hit doesn't need to be exactly the same spot where you
> > functionally do the TLB access.  For hits, I don't think there's any loss
> of
> > accuracy at all.  Likewise for misses on ISAs with SW TLB miss handling,
> > since the TLB miss handler won't get invoked until the instruction
> commits
> > anyway.  The only case where there might be a slight inaccuracy is for
> TLB
> > misses on x86, which might get kicked off a cycle or two later than they
> > should, but relative to the overall cost of a TLB miss this is very much
> in
> > the noise (and certainly swamped by other inaccuracies we don't even know
> > about).
> >
> >
> >> Also, I figure that if there are situations where you dont want to use
> the
> >> TLB then it makes sense to not continously access the TLB object.
> >>
> >
> > I'd be willing to bet that there are no longer any interesting platforms
> > anywhere that don't use TLBs at all.  Really low-end systems may play
> some
> > tricks with a small number of fixed large pages to eliminate most TLB
> > misses, but anything that wants to provide security among multiple
> processes
> > needs virtual memory of some form, and even relatively cheap cell phones
> > still let you download java games, so I bet they're using their TLBs.
> >
> >
> >> And then lastly, in situations where you have a a situation of a # of
> >> dependent memory accesses waiting, it might be better for them to
> translate
> >> early if there is going to possibly be a time associated with a TLB
> miss/hit
> >> (situation that gets exacerbated with more threads on 1 CPU I would
> >> assume)...
> >>
> >
> > This seems like a pretty unlikely design, but even if you did want to
> model
> > this, you could still just model the timing effects of the early TLB
> access
> > and defer the functional TLB access until later, with the same impact on
> > timing accuracy I mentioned above: I believe only x86 TLB misses would
> see
> > any inaccuracy at all, and even then it would be minor.
> >
> >
> >> So thats why currently I have instructions being having to request the
> TLB
> >> and the Cache as separate entities and which forced me to add
> "getMemFlags"
> >> and "memAccSize" to the Instruction. That implementation I have now
> works
> >> well but potentially there's a better non-intrusive solution to the
> >> instruction object.
> >>
> >> Or it sounds like people want to just X out that functionality and
> always
> >> force a memory access to be tied to a TLB access on that same cycle.
> >>
> >
> > It's not that we *want* the TLB access to be tied to the memory access,
> > just that what you have now is a significant departure from the way the
> > StaticInst objects currently interact with the CPU model, and what we're
> > arguing is that these new functions and this additional complication seem
> > unnecessary.  If it was the case that it seemed truly important to be
> able
> > to separate the functional TLB access from the functional memory access,
> or
> > that there was a clean way to do that consistent with the way things work
> > currently, then I don't think we'd be objecting.
> >
> > Steve
> >
> >
> >
> >
> > _______________________________________________
> > m5-dev mailing list
> > [email protected]
> > http://m5sim.org/mailman/listinfo/m5-dev
> >
> >
>
>
> --
> ----------
> Korey L Sewell
> Graduate Student - PhD Candidate
> Computer Science & Engineering
> University of Michigan
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL:
> http://m5sim.org/mailman/private/m5-dev/attachments/20090423/a0fbf4ef/attachment.htm
>
> ------------------------------
>
> _______________________________________________
> m5-dev mailing list
> [email protected]
> http://m5sim.org/mailman/listinfo/m5-dev
>
>
> End of m5-dev Digest, Vol 24, Issue 86
> **************************************
>
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to