From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LkFAl-0000eF-4z for qemu-devel@nongnu.org; Thu, 19 Mar 2009 06:08:23 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LkFAg-0000da-9N for qemu-devel@nongnu.org; Thu, 19 Mar 2009 06:08:22 -0400 Received: from [199.232.76.173] (port=46771 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LkFAg-0000dX-5U for qemu-devel@nongnu.org; Thu, 19 Mar 2009 06:08:18 -0400 Received: from main.gmane.org ([80.91.229.2]:59403 helo=ciao.gmane.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1LkFAf-0006e7-N7 for qemu-devel@nongnu.org; Thu, 19 Mar 2009 06:08:17 -0400 Received: from list by ciao.gmane.org with local (Exim 4.43) id 1LkFAW-0002H7-TT for qemu-devel@nongnu.org; Thu, 19 Mar 2009 10:08:08 +0000 Received: from 141.76.6.219 ([141.76.6.219]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 19 Mar 2009 10:08:08 +0000 Received: from usenet by 141.76.6.219 with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 19 Mar 2009 10:08:08 +0000 From: Steffen Liebergeld Date: Thu, 19 Mar 2009 10:07:57 +0000 (UTC) Message-ID: References: <49BF8A5B.7070706@siemens.com> <200903171251.41148.paul@codesourcery.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: news Subject: [Qemu-devel] Re: branches are expensive Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Hi Paul, Paul Brook schrieb: >> The ratio is quite bad. Do you have any documentation on when Qemu does the >> chaining and more important, when it does not. For example are >> unconditional jumps always chained, or only in one direction (forward or >> backward). > > Direct jumps[1] within the same page are chained (including ). Indirect > jumps[2] and direct jumps to a different page are not chained. Chaining jumps > between pages would require breaking TB chains every time a TLB flush occurs. I've tested Qemu 0.10.0 and with i386-softmmu on a i386 host I get the following numbers: direct jump count 70%, 2 jumps 54% For qemu-system-arm on an ARM host, the numbers look like this: direct jump count 47%, 2 jumps 40% For completeness I tested qemu-system-arm on a i386 host as well: direct jump count 44%, 2 jumps 37% So it looks like the chaining on ARM targets is not as effective as on i386 targets (regardless of the guest, I used the same guest setup, compiled for different architectures, on all tests). Do you have any ideas why this is the case? > Unchained jumps just a two stage lookup to cache frequently used entries. Many thanks for your explanations. > Paul > > [1] b, b and bl > [2] bx, mov pc, ldr pc, pop {pc} Greetings, Steffen