qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v7 04/11] target-mips: improve exception handlin


From: Pavel Dovgaluk
Subject: Re: [Qemu-devel] [PATCH v7 04/11] target-mips: improve exception handling
Date: Fri, 28 Aug 2015 12:08:36 +0300

> From: Aurelien Jarno [mailto:address@hidden
> On 2015-08-13 14:12, Leon Alrae wrote:
> > On 10/07/2015 10:57, Pavel Dovgalyuk wrote:
> > > @@ -2364,14 +2363,12 @@ static void gen_st_cond (DisasContext *ctx, 
> > > uint32_t opc, int rt,
> > >  #if defined(TARGET_MIPS64)
> > >      case OPC_SCD:
> > >      case R6_OPC_SCD:
> > > -        save_cpu_state(ctx, 1);
> > >          op_st_scd(t1, t0, rt, ctx);
> > >          opn = "scd";
> > >          break;
> > >  #endif
> > >      case OPC_SC:
> > >      case R6_OPC_SC:
> > > -        save_cpu_state(ctx, 1);
> > >          op_st_sc(t1, t0, rt, ctx);
> > >          opn = "sc";
> > >          break;
> >
> > Wouldn't we be better off assuming that conditional stores in linux-user
> > always take an exception (we generate fake EXCP_SC exception) and avoid
> > retranslation? After applying these changes I observed significant impact on
> > performance in linux-user multithreaded apps, for instance c11-atomic-exec
> > test before the change took just 2 seconds to finish, whereas now more than 
> > 30...
> 
> This really show the impact of retranslation and why we should avoid
> it when not necessary. Coming back to the issue here, the fact that we
> go through retranslation is actually due to the fact that
> helper_raise_exception has been changed to go through retranslation.
> 
> Given the code path between user-mode and softmmu is quite different,
> we definitely need a different code path wrt exception and retranslation
> for the two cases. That said if we want deterministic code execution
> (the original purpose of this patch), I don't see how we can do without
> forcing retranslation. Pavel, do you have an idea for that?

There is only one case when we can execute without retranslation -
when the instruction is the last instruction in translation block.
Then we can setup PC and flags before this last instruction.
If the exception happens, we can just break the execution.
The drawback of this method is breaking translation blocks into
the smaller parts.

Pavel Dovgalyuk




reply via email to

[Prev in Thread] Current Thread [Next in Thread]