qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v4 00/11] TCG optimizations for 2.10
@ 2017-04-27  3:29 Emilio G. Cota
  2017-04-27  3:29 ` [Qemu-devel] [PATCH v4 01/11] exec-all: export tb_htable_lookup Emilio G. Cota
                   ` (12 more replies)
  0 siblings, 13 replies; 20+ messages in thread
From: Emilio G. Cota @ 2017-04-27  3:29 UTC (permalink / raw)
  To: qemu-devel
  Cc: Paolo Bonzini, Peter Crosthwaite, Richard Henderson,
	Peter Maydell, Eduardo Habkost, Andrzej Zaborowski,
	Aurelien Jarno, Alexander Graf, Stefan Weil, qemu-arm,
	alex.bennee, Pranith Kumar

v3 for context: https://lists.gnu.org/archive/html/qemu-devel/2017-04/msg04795.html

Changes from v3:

- Added reviewed-by tags.

- Added a couple of suggested-by tags that I forgot to add in v3
  regarding lookup_and_goto_ptr and i386's implementation of goto_ptr.

- lookup_tb_ptr
  + Dropped the unnecessary exit_request check, as suggested by Paolo and
    Richard.
  + Only get the CPU state if we get a tb from the jmp_cache, as suggested
    by Richard.
  + Added tb_htable_lookup if we miss in tb_jmp_cache, as suggested by
    Richard. This requires an extra patch to export tb_htable_lookup.

- goto_ptr: add IMPL(has_goto_ptr), as pointed out by Richard.

- target/arm: added a comment about gen_jr. See the v3 thread for why
  it is needed.

- target/i386: use TCGV_UNUSED instead of (ab)using NULL on a TCGv,
  as suggested by Richard. Also took his suggestion to simplify
  the addition of jr + cs_base.
  To minimize churn I renamed gen_eob_worker to do_gen_eob_worker,
  which takes the newly added argument.

I have *not* re-run all experiments, because it takes several hours and
performance hasn't changed much from v3, as can be seen in these two charts:
* spec06int user-mode, test input, v2.9.0 baseline: http://imgur.com/ME2eMq1
* spec06int softmmu, test input, v3 baseline: http://imgur.com/Clolu9Z
The perf differences are mostly due to adding the htable check. Note that
its impact is small, since tb_jmp_cache has a %hit rate in the high 90's.

You can inspect/fetch the changes at:
  https://github.com/cota/qemu/tree/tcg-opt-v4

Thanks,

		Emilio

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2017-04-27 10:16 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-04-27  3:29 [Qemu-devel] [PATCH v4 00/11] TCG optimizations for 2.10 Emilio G. Cota
2017-04-27  3:29 ` [Qemu-devel] [PATCH v4 01/11] exec-all: export tb_htable_lookup Emilio G. Cota
2017-04-27  3:29 ` [Qemu-devel] [PATCH v4 02/11] tcg-runtime: add lookup_tb_ptr helper Emilio G. Cota
2017-04-27  3:29 ` [Qemu-devel] [PATCH v4 03/11] tcg: introduce goto_ptr opcode Emilio G. Cota
2017-04-27  8:09   ` Richard Henderson
2017-04-27  3:29 ` [Qemu-devel] [PATCH v4 04/11] tcg: export tcg_gen_lookup_and_goto_ptr Emilio G. Cota
2017-04-27  3:29 ` [Qemu-devel] [PATCH v4 05/11] tcg/i386: implement goto_ptr op Emilio G. Cota
2017-04-27  3:29 ` [Qemu-devel] [PATCH v4 06/11] target/arm: optimize cross-page direct jumps in softmmu Emilio G. Cota
2017-04-27  3:29 ` [Qemu-devel] [PATCH v4 07/11] target/arm: optimize indirect branches Emilio G. Cota
2017-04-27  9:36   ` Aurelien Jarno
2017-04-27  9:42     ` Richard Henderson
2017-04-27 10:15       ` Aurelien Jarno
2017-04-27  9:41   ` Alex Bennée
2017-04-27  3:29 ` [Qemu-devel] [PATCH v4 08/11] target/i386: introduce gen_jr helper to generate lookup_and_goto_ptr Emilio G. Cota
2017-04-27  8:12   ` Richard Henderson
2017-04-27  3:29 ` [Qemu-devel] [PATCH v4 09/11] target/i386: optimize cross-page direct jumps in softmmu Emilio G. Cota
2017-04-27  3:29 ` [Qemu-devel] [PATCH v4 10/11] target/i386: optimize indirect branches Emilio G. Cota
2017-04-27  3:29 ` [Qemu-devel] [PATCH v4 11/11] tb-hash: improve tb_jmp_cache hash function in user mode Emilio G. Cota
2017-04-27  3:32 ` [Qemu-devel] [PATCH v4 00/11] TCG optimizations for 2.10 Emilio G. Cota
2017-04-27  9:39 ` Aurelien Jarno

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).