[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC 00/16] TCG indirect registers
From: |
Artyom Tarasenko |
Subject: |
Re: [Qemu-devel] [RFC 00/16] TCG indirect registers |
Date: |
Tue, 24 Sep 2013 15:32:27 +0200 |
On Mon, Sep 23, 2013 at 8:06 PM, Richard Henderson <address@hidden> wrote:
> On 09/23/2013 10:23 AM, Blue Swirl wrote:
>> On Fri, Sep 20, 2013 at 12:24 AM, Richard Henderson <address@hidden> wrote:
>>>
>>> This is an attempt to improve performance of target-sparc
>>> by exposing the windowed registers as TCG globals, and all
>>> the optimization that we can do there.
>>>
>>> This is done via allowing tcg_global_mem_new to be used
>>> with any base pointer, not just off of a fixed register.
>>> Thus the sparc windowed registers are globals off cpu_regwptr.
>>
>> Nice and simple.
>>
>> Would it be possible to eliminate regwptr and perform the calculation
>> of the effective register set during compile time? We could get rid of
>> register shuffling (memcpy32) and register access would be much
>> simpler. The downside would be that code which is called from
>> different register window level would need to be recompiled.
>
> An interesting idea. Yes, it would be possible to grab some bits
> from TB->flags and encode the register window setting. I suppose
> it all depends on how much overhead there is from the recompilation
> as opposed to the indirection + memcpys.
Last time I looked into profiler with perl under Debian/sparc64 guest
there was a very small overhead from memcpy32 (less than 1%).
With a newer gcc it could be even less: I couldn't persuade my
gcc (4.4.7) to use sse instructions for memcpy32.
Can't find my profiling results right now, but they were quite close to
Aurelien's ones[1]: tcg_optimize took nearly the same amount of time as
executing the translated code.
Artyom
1. http://www.mail-archive.com/address@hidden/msg171104.html
--
Regards,
Artyom Tarasenko
linux/sparc and solaris/sparc under qemu blog:
http://tyom.blogspot.com/search/label/qemu
- [Qemu-devel] [RFC 10/16] tcg: Change temp_save argument to TCGTemp, (continued)
- [Qemu-devel] [RFC 10/16] tcg: Change temp_save argument to TCGTemp, Richard Henderson, 2013/09/19
- [Qemu-devel] [RFC 11/16] tcg: Introduce temp_load, Richard Henderson, 2013/09/19
- [Qemu-devel] [RFC 12/16] tcg: Tidy temporary allocation, Richard Henderson, 2013/09/19
- [Qemu-devel] [RFC 13/16] tcg: Use temp_idx, Richard Henderson, 2013/09/19
- [Qemu-devel] [RFC 14/16] tcg: Implement indirect memory registers, Richard Henderson, 2013/09/19
- [Qemu-devel] [RFC 15/16] target-sparc: Tidy global register initialization, Richard Henderson, 2013/09/19
- [Qemu-devel] [RFC 16/16] target-sparc: Use global registers for the register window, Richard Henderson, 2013/09/19
- Re: [Qemu-devel] [RFC 00/16] TCG indirect registers, Max Filippov, 2013/09/22
- Re: [Qemu-devel] [RFC 00/16] TCG indirect registers, Blue Swirl, 2013/09/23