qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] TCG and branches


From: Richard Henderson
Subject: Re: [Qemu-devel] TCG and branches
Date: Sat, 6 Aug 2016 08:13:55 +0530
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.1.1

On 07/31/2016 05:23 AM, Benjamin Herrenschmidt wrote:
The first obvious thing that comes to mind is to avoid stopping the
TB on a non-taken conditional branch. The reason that can't be done
today, from my limited understanding of things, is because we only
support index 0 and 1 today for gen_goto_tb().

Correct.

Now I haven't completely figured out how TB linkage works under the
hood but do you know of any fundamental reason why we have that limit ?

Could we, for example, have a limit of, for example, 8 and only break
the TB after a branch if we have less than 2 left ?

We do borrow low bits of a pointer (to a TranslationBlock) in implementing exit_tb. See TB_EXIT_MASK and the large block comment just above its definition in tcg/tcg.h.

However, increasing the alignment of TranslationBlock ought to be trivial, giving you as many bits as required. With that, I see no reason in principal that this wouldn't work.

Such a change would need some measurement to see how often this occurs, and how much this helps the actual runtime performance.


r~



reply via email to

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