Hi Andreas,

Thanks for your email, the link you sent was very useful in understanding
how to submit the patch.

-Andrea

On Fri, Jun 29, 2012 at 4:40 AM, Andreas Hansson <andreas.hans...@arm.com>wrote:

>  Hi Andrea,****
>
> ** **
>
> Have a look at http://gem5.org/Commit_Access which described how to get
> your patch reviewed. The easiest way of posting patches is using mercurial
> queues and the reviewboard extension. Before posting also have a look at
> the coding style guide.****
>
> ** **
>
> Andreas****
>
> ** **
>
> *From:* gem5-users-boun...@gem5.org [mailto:gem5-users-boun...@gem5.org] *On
> Behalf Of *Andrea Pellegrini
> *Sent:* 28 June 2012 22:55
> *To:* sa...@umich.edu; gem5 users mailing list
> *Subject:* Re: [gem5-users] ZeroReg problem****
>
> ** **
>
> Hi Ali, ****
>
> I got SMT to work on x86. How can I submit a patch to be reviewed?****
>
> Thanks,****
>
> -Andrea****
>
> On Wed, Jun 27, 2012 at 11:32 AM, Andrea Pellegrini <
> andrea.pellegr...@gmail.com> wrote:****
>
> Ali, that it is correct.
>
> I will keep track of these changes to post a review in a few days. Turns
> out that the TLB in X86 does not support SMT either, so I am working on
> fixing that too. ****
>
> ** **
>
> -Andrea****
>
> ** **
>
> On Wed, Jun 27, 2012 at 11:26 AM, Ali Saidi <sa...@umich.edu> wrote:****
>
> Hmm.. I think that must be happening when there is a mispredict and a
> return to architected state. If you don't run into problems with this fix
> over the next few days could you post a patch to the review board (
> reviews.gem5.org)?****
>
>  ****
>
> Thanks,****
>
> Ali****
>
>  ****
>
> On 27.06.2012 11:20, Andrea Pellegrini wrote:****
>
> It turned out that in some bizarre cases a non-zero value was forwarded to
> instructions using a remapped zero register: everything is fine for thread
> 0 (as register 16 is considered the zeroReg throughout the simulator), but
> it crashes and burns when a different "zero register" is assigned to
> threads 1, 2, and 3. ****
>
> In my case, I fixed it always associating the intZeroReg to the mapped
> register (16 for X86):****
>
>
> ---------------------------------------------------------------------------------------------------
> ****
>
> In rename_map.cc, line 147:****
>
>
> ---------------------------------------------------------------------------------------------------
> ****
>
>     if (arch_reg < numLogicalIntRegs) {****
>
>         // Record the current physical register that is renamed to the****
>
>         // requested architected register.****
>
>         prev_reg = intRenameMap[arch_reg].physical_reg;****
>
>         // If it's not referencing the zero register, then rename the****
>
>         // register.****
>
>         if (arch_reg != intZeroReg) {****
>
>             renamed_reg = freeList->getIntReg();****
>
>             intRenameMap[arch_reg].physical_reg = renamed_reg;****
>
>             assert(renamed_reg >= 0 && renamed_reg < numPhysicalIntRegs);\
> ****
>
>         } else {****
>
>             // Otherwise return the zero register so nothing bad happens.*
> ***
>
>             renamed_reg = intZeroReg;****
>
> ---->            prev_reg = intZeroReg; // apell...@umich.edu : fix
> problem in multithreading****
>
>         }****
>
>  ****
>
>
> ---------------------------------------------------------------------------------------------------
> ****
>
>  ****
>
> ** **
>
> On Sun, Jun 24, 2012 at 10:13 AM, Steve Reinhardt <ste...@gmail.com>
> wrote:****
>
> In Alpha, instructions that write the zero reg are generally decoded
> explicitly into no-ops or prefetches, so I'm not too surprised that this
> generally worked (though I also would not be surprised if there were some
> corner cases that don't work that we never identified).  Ideally all ISAs
> would decode instructions with zero-reg targets like this, so that the zero
> reg would never be written and never need to be checked by the CPU model,
> but that never came to pass. ****
>
> Steve ****
>
> ** **
>
> On Sun, Jun 24, 2012 at 6:21 AM, Ali Saidi <sa...@umich.edu> wrote:****
>
> Hi Andrea,****
>
> Yes that sounds like a bug. All threads need to share a zero reg, or the
> zero reg needs to be checked for each thread. I'm curious how that worked
> with alpha. ****
>
> Thanks,****
>
> Ali
>
> Sent from my ARM powered mobile device****
>
>
> On Jun 22, 2012, at 6:22 PM, Andrea Pellegrini <
> andrea.pellegr...@gmail.com> wrote:****
>
>   ****
>
> Hi all, ****
>
> I am doing some experiments w/ SMT and X86 in SE mode. I found something
> funny happening w/ the register file, that I wanted to clarify. ****
>
> Arch register 16 seems to be assigned always to the zeroRegister in the
> rename phase. In the renaming logic, reg 16 is always renamed to the same
> physical register (16 for thread0, 55 for thread1, 94 for thread2 and 133
> for thread3). However, the logic in the rename and in the regfile does not
> match - and this creates some problems. In particular, in the regfile, the
> simulator does not seem to recognize that the register is a zeroReg (as
> determined instead from the rename stage). Is that a bug? ****
>
> Thanks,****
>
> -Andrea****
>
>  ****
>
> ---------------------------****
>
> rename_map.cc****
>
>     if (arch_reg < numLogicalIntRegs) {****
>
>         // Record the current physical register that is renamed to the****
>
>         // requested architected register.****
>
>         prev_reg = intRenameMap[arch_reg].physical_reg;****
>
>         // If it's not referencing the zero register, then rename the****
>
>         // register.****
>
>         if (arch_reg != intZeroReg) {****
>
>             renamed_reg = freeList->getIntReg();****
>
>             intRenameMap[arch_reg].physical_reg = renamed_reg;****
>
>             assert(renamed_reg >= 0 && renamed_reg < numPhysicalIntRegs);*
> ***
>
>  ****
>
> ---------------------------****
>
> regfile.hh:****
>
> ...****
>
>         if (reg_idx != TheISA::ZeroReg)****
>
>             intRegFile[reg_idx] = val;****
>
> ...****
>
> ---------------------------****
>
> Looking at the definition of TheISA::ZeroReg I get:****
>
>  ****
>
> // semantically meaningful register indices****
>
> //There is no such register in X86****
>
> const int ZeroReg = NUM_INTREGS;****
>
>  ****
>
>   _______________________________________________ ****
>
>
> 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****
>
> ** **
>
> ** **
>
> -- IMPORTANT NOTICE: The contents of this email and any attachments are
> confidential and may also be privileged. If you are not the intended
> recipient, please notify the sender immediately and do not disclose the
> contents to any other person, use it for any purpose, or store or copy the
> information in any medium. Thank you.
>
> _______________________________________________
> 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

Reply via email to