[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 0/7] TCG global variables clean-up
From: |
Blue Swirl |
Subject: |
Re: [Qemu-devel] [PATCH v2 0/7] TCG global variables clean-up |
Date: |
Sat, 27 Oct 2012 14:34:34 +0000 |
On Fri, Oct 26, 2012 at 6:32 AM, Evgeny Voevodin <address@hidden> wrote:
> Today I made more precise testing with usage of --enable-profiler.
>
> Here is the test procedure:
> 1. Boot Linux Kernel 5 times.
> 2. For each iteration wait while "JIT cycles" is stable for ~10 seconds
> 3. Write down the "cycles/op"
>
> Here are the results:
>
> Before clean-up:
> min: 731.9
> max: 735.8
> avg: 734.3
> standard deviation: ~2 = 0.3%
> Avarage cycles/op = 734 +- 2
>
> After clean-up:
> min: 747.2
> max: 751.7
> avg: 750.5
> standard deviation: ~2 = 0.3%
> Avarage cycles/op = 750 +- 2
> Slow-down of TCG code generation = 2.2%
>
>
> After clean-up with TCGContext *const tcg_cur_ctx:
> min: 730.6
> max: 733.2
> avg: 728.7
> standard deviation: ~2 = 0.3%
> Avarage cycles/op = 729 +- 2
> Slow-down of TCG code generation = 0%
>
> I suggest to define tcg_cur_ctx as TCGContext *const.
> Then we will get rid of TCG code generation slow-down and also
> will have no usage of global variables.
How does this compare with the original version without pointers? I
think that version may be safer to be assumed to be optimized by the
compiler.
>
>
> On 10/25/2012 10:45 AM, Evgeny Voevodin wrote:
>>
>> Here are the results of tests before and after this patch series was
>> applied:
>>
>> * EEMBC CoreMark (before -> after)
>> - Guest: Exynos4210 ARMv7, Linux (Custom buildroot image)
>> - Host: Intel(R) Core(TM) i5 CPU 750 @ 2.67GHz, 4GB RAM, Linux
>> - Results: 1148.105626 -> 1161.440186 (+1.16%)
>>
>> * nbench (before -> after)
>> - Guest: Exynos4210 ARMv7, Linux (Custom buildroot image)
>> - Host: Intel(R) Core(TM) i5 CPU 750 @ 2.67GHz, 4GB RAM, Linux
>> - Results
>> . MEMORY INDEX: 1.864 -> 1.862 (-0.11%)
>> . INTEGER INDEX: 2.518 -> 2.523 (+0.2%)
>> . FLOATING-POINT INDEX: 0.385 -> 0.394 (+2.34%)
>>
>>
>> Those tests show that it became even faster :))
>>
>> But I'm quite sceptical about such results.
>> The thing is that in case of nbench it prints the warning if results are
>> not 95% statistically accurate.
>> So we can be sure that nbench result is 95% accurate.
>> And it's obvious that result shown above are in the scope of this
>> accuracy.
>> I don't know the accuracy of CoreMark.
>>
>> So, the main decision we can make that this patch series didn't
>> introduce any slow-down comparable to inaccuracy of the measurement.
>>
>> Is this enough?
>>
>> On 10/23/2012 10:21 AM, Evgeny Voevodin wrote:
>>>
>>> This set of patches moves global variables to tcg_ctx:
>>> gen_opc_ptr
>>> gen_opparam_ptr
>>> gen_opc_buf
>>> gen_opparam_buf
>>>
>>> Build tested for all targets.
>>> Execution tested on ARM.
>>>
>>> I didn't notice any slow-down of kernel boot after this set was applied.
>>>
>>> Changelog:
>>> v1->v2:
>>> Introduced TCGContext *tcg_cur_ctx global to use in those places where
>>> we don't
>>> have an interface to pass pointer to tcg_ctx.
>>> Code style clean-up
>>>
>>> Evgeny (2):
>>> tcg/tcg.h: Duplicate global TCG variables in TCGContext
>>> TCG: Remove unused global variables
>>>
>>> Evgeny Voevodin (5):
>>> translate-all.c: Introduce TCGContext *tcg_cur_ctx
>>> TCG: Use gen_opc_ptr from context instead of global variable.
>>> TCG: Use gen_opparam_ptr from context instead of global variable.
>>> TCG: Use gen_opc_buf from context instead of global variable.
>>> TCG: Use gen_opparam_buf from context instead of global variable.
>>>
>>> gen-icount.h | 2 +-
>>> target-alpha/translate.c | 10 +-
>>> target-arm/translate.c | 10 +-
>>> target-cris/translate.c | 13 +-
>>> target-i386/translate.c | 10 +-
>>> target-lm32/translate.c | 13 +-
>>> target-m68k/translate.c | 10 +-
>>> target-microblaze/translate.c | 13 +-
>>> target-mips/translate.c | 11 +-
>>> target-openrisc/translate.c | 13 +-
>>> target-ppc/translate.c | 11 +-
>>> target-s390x/translate.c | 11 +-
>>> target-sh4/translate.c | 10 +-
>>> target-sparc/translate.c | 10 +-
>>> target-unicore32/translate.c | 10 +-
>>> target-xtensa/translate.c | 8 +-
>>> tcg/optimize.c | 62 ++++----
>>> tcg/tcg-op.h | 324
>>> ++++++++++++++++++++---------------------
>>> tcg/tcg.c | 85 ++++++-----
>>> tcg/tcg.h | 11 +-
>>> translate-all.c | 4 +-
>>> 21 files changed, 328 insertions(+), 323 deletions(-)
>>>
>>
>>
>
>
> --
> Kind regards,
> Evgeny Voevodin,
> Technical Leader,
> Mobile Group,
> Samsung Moscow Research Center,
> e-mail: address@hidden
- [Qemu-devel] [PATCH v2 6/7] TCG: Use gen_opparam_buf from context instead of global variable., (continued)
- [Qemu-devel] [PATCH v2 6/7] TCG: Use gen_opparam_buf from context instead of global variable., Evgeny Voevodin, 2012/10/23
- [Qemu-devel] [PATCH v2 4/7] TCG: Use gen_opparam_ptr from context instead of global variable., Evgeny Voevodin, 2012/10/23
- [Qemu-devel] [PATCH v2 5/7] TCG: Use gen_opc_buf from context instead of global variable., Evgeny Voevodin, 2012/10/23
- [Qemu-devel] [PATCH v2 3/7] TCG: Use gen_opc_ptr from context instead of global variable., Evgeny Voevodin, 2012/10/23
- Re: [Qemu-devel] [PATCH v2 0/7] TCG global variables clean-up, Evgeny Voevodin, 2012/10/23
- Re: [Qemu-devel] [PATCH v2 0/7] TCG global variables clean-up, Evgeny Voevodin, 2012/10/24
- Re: [Qemu-devel] [PATCH v2 0/7] TCG global variables clean-up, Evgeny Voevodin, 2012/10/25