Hi Sameh,
Well, in terms of steering instructions to the correct functional units,
I think you should simply need to go through the decoder.isa file in
src/arch/power/isa and add the correct functional unit flag to the end
of each instruction. Slightly tedious but not too difficult. If you do
that, please post a patch onto the reviewboard so that we can get your
changes incorporated into the repository.
I'm not totally sure I get what you mean about the dependent
accumulation instructions starting earlier. If you mean that you want
them to execute earlier, then you'll have to alter the O3PCU code to get
them marked as ready. I'm by no means an expert on O3, but I believe
you want to look at src/cpu/o3/iew_impl.hh as a starting point.
Cheers
Tim
On 04/12/2010 17:19, Sameh Galal wrote:
Hi Tim,
Thanks for your response. I am trying different designs of fused
multiply add units in the powerpc architecture using SPEC 2000 floating
point benchmarks. If you were planning to incorporate the functional
units for the powerpc o3 design that will be great. Let me know if I can
help with that. I am looking at possible designs that allow dependent
accumulation instructions to start earlier. Do you have an idea which
files will be best to look at to incorporate this modification.
cheers,
Sameh
On Fri, Dec 3, 2010 at 7:15 AM, Timothy M Jones <[email protected]
<mailto:[email protected]>> wrote:
Hello,
Just to add my clarifications. Firstly, Gabe is right that the
classification of instructions was left out and I haven't got round
to putting it in. I can do that, but not for a week or so.
Secondly, Steve is also right, the out-of-order scheduling happens
and instructions do get executed when they become ready.
Power should work just fine with O3CPU and I've used it a fair bit
without problems. All the SPEC 2000 integer benchmarks work on it,
for example. However, if you do come across something that isn't
working just let me know and I'll try to work out a fix with you.
Cheers
Tim
On Thu, 02 Dec 2010 14:27:32 -0500, Steve Reinhardt
<[email protected] <mailto:[email protected]>> wrote:
No, that's not true... the out-of-order scheduling will happen
regardless of
functional unit assignment. I'm guessing that what happens is
that all
instructions get assigned to some default functional unit type
(probably
integer ALU), and I'm pretty sure the default O3 model has
multiple integer
ALUs, so I'm pretty confident you'd be getting out-of-order
behavior. It's
just not accurately reflecting the resource constraints of how
instructions
would map to different units.
Steve
On Thu, Dec 2, 2010 at 10:57 AM, Sameh Galal
<[email protected] <mailto:[email protected]>> wrote:
Thanks for the info. If that's true, then none of the
instructions are
assigned to any functional unit, i assume the machine just
behaves like an
in-order machine which is not what the O3 cpu model was
built for ..
Sameh
On Wed, Dec 1, 2010 at 10:58 PM, Gabe Black
<[email protected] <mailto:[email protected]>> wrote:
It should work functionally. It's quite possible classifying
instructions like that in Power was left for after
things worked
functionally and never revisited. This is almost
certainly the case for
some of the other ISAs. You can attempt to change the
isa description
yourself so that the right op class is used. Because the
description is
built in a custom language it can be tricky to figure
out what's going
on, but if Power is structured similar to Alpha then the
op class
setting code may be pretty easy to port if it isn't in
there already.
When you configure the functional unit in O3, don't
change the file in
src/ since those files only set the default value.
You'll want to change
the value in the CPU you're instantiating in a
configuration script.
That way you won't have to recompile M5 to try a new value.
Gabe
Sameh Galal wrote:
> Hi,
> I have a quick question about how PowerPC out of
order cpu model in SE
> mode. Is the out of order model fully supported in
PowerPC
>
> The reason I am asking, is that it is not clear to me
how the
> functional units of the PowerPC architecture are
assigned their
> latencies. I found that the file
src\cpu\o3\FuncUnitConfig.py contains
> the functional unit configuration and which
instructions the units
> handle. For example the FP_MultDiv unit handles the
FloatMult
> instructions among other instructions
>
> class FP_MultDiv(FUDesc):
> opList = [ OpDesc(opClass='FloatMult', opLat=4),
> OpDesc(opClass='FloatDiv', opLat=12,
issueLat=12),
> OpDesc(opClass='FloatSqrt', opLat=24,
issueLat=24) ]
> count = 2
>
> However when I grep the source folder for FloatMult,
I find that only
> the alpha architecture instruction decoder assigns
the Opclass types.
> So how is the simulation of powerpc functional units
done?
>
> [same...@cyclades-master m5]$ grep -r FloatMult ./src
> ./src/arch/alpha/isa/decoder.isa:
0x02: muls({{
> Fc = Fa * Fb; }}, FloatMultOp);
> ./src/arch/alpha/isa/decoder.isa:
0x02: muls({{
> Fc.sf = Fa.sf * Fb.sf; }}, FloatMultOp);
> ./src/arch/alpha/isa/decoder.isa:
0x22: mult({{
> Fc = Fa * Fb; }}, FloatMultOp);
> ./src/cpu/FuncUnit.py: 'FloatCmp', 'FloatCvt',
'FloatMult',
> 'FloatDiv', 'FloatSqrt',
> ./src/cpu/o3/FuncUnitConfig.py: opList = [
> OpDesc(opClass='FloatMult', opLat=4),
> ./src/cpu/op_class.hh:const OpClass FloatMultOp =
Enums::FloatMult;
>
> Thanks for clarifying.
> Sameh
>
------------------------------------------------------------------------
>
> _______________________________________________
> m5-users mailing list
> [email protected] <mailto:[email protected]>
> http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
_______________________________________________
m5-users mailing list
[email protected] <mailto:[email protected]>
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
_______________________________________________
m5-users mailing list
[email protected] <mailto:[email protected]>
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
--
Timothy M. Jones
http://homepages.inf.ed.ac.uk/tjones1
The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.
_______________________________________________
m5-users mailing list
[email protected] <mailto:[email protected]>
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users
--
Timothy M. Jones
http://homepages.inf.ed.ac.uk/tjones1
The University of Edinburgh is a charitable body, registered in
Scotland, with registration number SC005336.
_______________________________________________
m5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/m5-users