Re: [gem5-users] Macro Ops splitting and Register 33

2014-01-13 Thread Martin Brown
Mitch, he may be trying to get the correct register index, but is getting
values like 33 and 1416 instead. Am I right V?

I sort of tried to answer this in your other post
http://www.mail-archive.com/gem5-users@gem5.org/msg09046.html. I got around
it by calling BaseSimpleCPU::getFlatRegIdex(regIdx). I think I did that
because I saw it being done elsewhere, as I was trying to get the logical
register index.

Can anyone verify that this is the right way?


On Fri, Jan 3, 2014 at 8:15 AM, Mitch Hayenga
mitch.hayenga+g...@gmail.comwrote:

 In general control registers are not often renamed (regardless of ISA -
 ARM, x86, etc).  If any instruction modifies the CPSR, it should be marked
 as serializing.  This ensures that any writes to the register will be
 properly seen by any younger instructions.  It works by not letting any
 younger instructions enter the processor back-end until the CPSR write
 completes.  These control registers tend to be mostly read-only, so
 tolerating a pipeline stall on writes is not unreasonable.

 So, it likely is being used, it's just not renamed.


 On Fri, Jan 3, 2014 at 1:41 AM, Vanchinathan Venkataramani 
 dcsv...@gmail.com wrote:

 Thanks a lot for your reply.

 Similar to R33, R37-R39 and so on there is register with id 1416 which
 exists as a source for many instructions. I found that this instruction is
 the CPSR register.

 I tried looking at the rename and iew stages for a given instruction. It
 turns out that this register is being accessed in rename stage but not in
 iew stage. Does this mean that the CPSR is not required for these
 instructions?

 Thanks
 V Vanchinathan


 On Thu, Jan 2, 2014 at 10:03 PM, Mitch Hayenga 
 mitch.hayenga+g...@gmail.com wrote:

 R33 is a zero register.  It is used whenever a zero is required.  It
 is also often sourced unnecessarily if an instruction requires fewer source
 registers.

 In gem5 the basis for splitting is solely up to whoever wrote the ISA
 decoder.  For arm its mostly what you would expect 2 real sources (not
 counting flags that can add more.  R37-39 or so are the flags).

 In the past I tried to find a way to compile without predication too.
 Never found a way.

 Hope this helps.

 Sent from my phone.
 On Jan 2, 2014 7:38 AM, Vanchinathan Venkataramani dcsv...@gmail.com
 wrote:

 Hi all

 I tried to print the list of source registers in a given assembly
 instruction during the decode stage for ARM ISA. It turns out that many
 instructions have Register 33 as one of the source registers. I would like
 to know what this Register 33 signifies.

 Also I would like to know on what basis a macroop is split into
 microops since they introduce a lot of temporary registers.

 Is there a way to disable predication in ARM ISA while compiling?

 Thanks
 V Vanchinathan

 ___
 gem5-users mailing list
 gem5-users@gem5.org
 http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users


 ___
 gem5-users mailing list
 gem5-users@gem5.org
 http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users



 ___
 gem5-users mailing list
 gem5-users@gem5.org
 http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users



 ___
 gem5-users mailing list
 gem5-users@gem5.org
 http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users




-- 
Martin
___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Re: [gem5-users] Macro Ops splitting and Register 33

2014-01-13 Thread Vanchinathan Venkataramani
Thanks Martin for your reply.

Assume that we have an instruction the tries to modify float register f0.
In decode stage, this f0 is modified as 0 + FP_Base_DepTag. If
FP_Base_DepTag = 1344 say, f0 will be decoded as 1344.

Now in rename stage this register index is first checked to know whether it
is INT, FP or Miscellaneous.
For finding this they use FP_Base_DepTag. After finding this, the flattened
index is found. Later they try to get the physical index corresponding to
this flattened index.

This physical index is used for reading the register value for example in
the readFloatReg function in cpu.cc

I hope this understanding is correct.

It is important to note that 1416 is the decoded index for CPSR register
and 33 is the decoded index for Zero register.

Thanks
Vanchinathan V


On Tue, Jan 14, 2014 at 6:40 AM, Martin Brown mbr...@cs.fsu.edu wrote:

 Mitch, he may be trying to get the correct register index, but is getting
 values like 33 and 1416 instead. Am I right V?

 I sort of tried to answer this in your other post
 http://www.mail-archive.com/gem5-users@gem5.org/msg09046.html. I got
 around it by calling BaseSimpleCPU::getFlatRegIdex(regIdx). I think I did
 that because I saw it being done elsewhere, as I was trying to get the
 logical register index.

 Can anyone verify that this is the right way?


 On Fri, Jan 3, 2014 at 8:15 AM, Mitch Hayenga 
 mitch.hayenga+g...@gmail.com wrote:

 In general control registers are not often renamed (regardless of ISA -
 ARM, x86, etc).  If any instruction modifies the CPSR, it should be marked
 as serializing.  This ensures that any writes to the register will be
 properly seen by any younger instructions.  It works by not letting any
 younger instructions enter the processor back-end until the CPSR write
 completes.  These control registers tend to be mostly read-only, so
 tolerating a pipeline stall on writes is not unreasonable.

 So, it likely is being used, it's just not renamed.


 On Fri, Jan 3, 2014 at 1:41 AM, Vanchinathan Venkataramani 
 dcsv...@gmail.com wrote:

 Thanks a lot for your reply.

 Similar to R33, R37-R39 and so on there is register with id 1416 which
 exists as a source for many instructions. I found that this instruction is
 the CPSR register.

 I tried looking at the rename and iew stages for a given instruction. It
 turns out that this register is being accessed in rename stage but not in
 iew stage. Does this mean that the CPSR is not required for these
 instructions?

 Thanks
 V Vanchinathan


 On Thu, Jan 2, 2014 at 10:03 PM, Mitch Hayenga 
 mitch.hayenga+g...@gmail.com wrote:

 R33 is a zero register.  It is used whenever a zero is required.  It
 is also often sourced unnecessarily if an instruction requires fewer source
 registers.

 In gem5 the basis for splitting is solely up to whoever wrote the ISA
 decoder.  For arm its mostly what you would expect 2 real sources (not
 counting flags that can add more.  R37-39 or so are the flags).

 In the past I tried to find a way to compile without predication too.
 Never found a way.

 Hope this helps.

 Sent from my phone.
 On Jan 2, 2014 7:38 AM, Vanchinathan Venkataramani dcsv...@gmail.com
 wrote:

 Hi all

 I tried to print the list of source registers in a given assembly
 instruction during the decode stage for ARM ISA. It turns out that many
 instructions have Register 33 as one of the source registers. I would like
 to know what this Register 33 signifies.

 Also I would like to know on what basis a macroop is split into
 microops since they introduce a lot of temporary registers.

 Is there a way to disable predication in ARM ISA while compiling?

 Thanks
 V Vanchinathan

 ___
 gem5-users mailing list
 gem5-users@gem5.org
 http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users


 ___
 gem5-users mailing list
 gem5-users@gem5.org
 http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users



 ___
 gem5-users mailing list
 gem5-users@gem5.org
 http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users



 ___
 gem5-users mailing list
 gem5-users@gem5.org
 http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users




 --
 Martin

 ___
 gem5-users mailing list
 gem5-users@gem5.org
 http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Re: [gem5-users] Macro Ops splitting and Register 33

2014-01-03 Thread Mitch Hayenga
In general control registers are not often renamed (regardless of ISA -
ARM, x86, etc).  If any instruction modifies the CPSR, it should be marked
as serializing.  This ensures that any writes to the register will be
properly seen by any younger instructions.  It works by not letting any
younger instructions enter the processor back-end until the CPSR write
completes.  These control registers tend to be mostly read-only, so
tolerating a pipeline stall on writes is not unreasonable.

So, it likely is being used, it's just not renamed.


On Fri, Jan 3, 2014 at 1:41 AM, Vanchinathan Venkataramani 
dcsv...@gmail.com wrote:

 Thanks a lot for your reply.

 Similar to R33, R37-R39 and so on there is register with id 1416 which
 exists as a source for many instructions. I found that this instruction is
 the CPSR register.

 I tried looking at the rename and iew stages for a given instruction. It
 turns out that this register is being accessed in rename stage but not in
 iew stage. Does this mean that the CPSR is not required for these
 instructions?

 Thanks
 V Vanchinathan


 On Thu, Jan 2, 2014 at 10:03 PM, Mitch Hayenga 
 mitch.hayenga+g...@gmail.com wrote:

 R33 is a zero register.  It is used whenever a zero is required.  It is
 also often sourced unnecessarily if an instruction requires fewer source
 registers.

 In gem5 the basis for splitting is solely up to whoever wrote the ISA
 decoder.  For arm its mostly what you would expect 2 real sources (not
 counting flags that can add more.  R37-39 or so are the flags).

 In the past I tried to find a way to compile without predication too.
 Never found a way.

 Hope this helps.

 Sent from my phone.
 On Jan 2, 2014 7:38 AM, Vanchinathan Venkataramani dcsv...@gmail.com
 wrote:

 Hi all

 I tried to print the list of source registers in a given assembly
 instruction during the decode stage for ARM ISA. It turns out that many
 instructions have Register 33 as one of the source registers. I would like
 to know what this Register 33 signifies.

 Also I would like to know on what basis a macroop is split into microops
 since they introduce a lot of temporary registers.

 Is there a way to disable predication in ARM ISA while compiling?

 Thanks
 V Vanchinathan

 ___
 gem5-users mailing list
 gem5-users@gem5.org
 http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users


 ___
 gem5-users mailing list
 gem5-users@gem5.org
 http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users



 ___
 gem5-users mailing list
 gem5-users@gem5.org
 http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Re: [gem5-users] Macro Ops splitting and Register 33

2014-01-02 Thread Mitch Hayenga
R33 is a zero register.  It is used whenever a zero is required.  It is
also often sourced unnecessarily if an instruction requires fewer source
registers.

In gem5 the basis for splitting is solely up to whoever wrote the ISA
decoder.  For arm its mostly what you would expect 2 real sources (not
counting flags that can add more.  R37-39 or so are the flags).

In the past I tried to find a way to compile without predication too. Never
found a way.

Hope this helps.

Sent from my phone.
On Jan 2, 2014 7:38 AM, Vanchinathan Venkataramani dcsv...@gmail.com
wrote:

 Hi all

 I tried to print the list of source registers in a given assembly
 instruction during the decode stage for ARM ISA. It turns out that many
 instructions have Register 33 as one of the source registers. I would like
 to know what this Register 33 signifies.

 Also I would like to know on what basis a macroop is split into microops
 since they introduce a lot of temporary registers.

 Is there a way to disable predication in ARM ISA while compiling?

 Thanks
 V Vanchinathan

 ___
 gem5-users mailing list
 gem5-users@gem5.org
 http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Re: [gem5-users] Macro Ops splitting and Register 33

2014-01-02 Thread Vanchinathan Venkataramani
Thanks a lot for your reply.

Similar to R33, R37-R39 and so on there is register with id 1416 which
exists as a source for many instructions. I found that this instruction is
the CPSR register.

I tried looking at the rename and iew stages for a given instruction. It
turns out that this register is being accessed in rename stage but not in
iew stage. Does this mean that the CPSR is not required for these
instructions?

Thanks
V Vanchinathan


On Thu, Jan 2, 2014 at 10:03 PM, Mitch Hayenga mitch.hayenga+g...@gmail.com
 wrote:

 R33 is a zero register.  It is used whenever a zero is required.  It is
 also often sourced unnecessarily if an instruction requires fewer source
 registers.

 In gem5 the basis for splitting is solely up to whoever wrote the ISA
 decoder.  For arm its mostly what you would expect 2 real sources (not
 counting flags that can add more.  R37-39 or so are the flags).

 In the past I tried to find a way to compile without predication too.
 Never found a way.

 Hope this helps.

 Sent from my phone.
 On Jan 2, 2014 7:38 AM, Vanchinathan Venkataramani dcsv...@gmail.com
 wrote:

 Hi all

 I tried to print the list of source registers in a given assembly
 instruction during the decode stage for ARM ISA. It turns out that many
 instructions have Register 33 as one of the source registers. I would like
 to know what this Register 33 signifies.

 Also I would like to know on what basis a macroop is split into microops
 since they introduce a lot of temporary registers.

 Is there a way to disable predication in ARM ISA while compiling?

 Thanks
 V Vanchinathan

 ___
 gem5-users mailing list
 gem5-users@gem5.org
 http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users


 ___
 gem5-users mailing list
 gem5-users@gem5.org
 http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

___
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users