From: Rick Jones <rick.jones2@hp.com>
To: netdev@oss.sgi.com
Subject: Re: [RFC] TCP congestion schedulers
Date: Tue, 29 Mar 2005 10:58:56 -0800 [thread overview]
Message-ID: <4249A570.90709@hp.com> (raw)
In-Reply-To: <20050329091725.4f955ee7@dxpl.pdx.osdl.net>
I took the liberty of asking one of the IA64 guru's about the indirect calls.
This is what he had to say (reposted with his permision if not my complete
comprehension :)
<excerpt>
McKinley-type cores (includes Madison, etc.)
do not have indirect branch target hardware. Instead, indirect
branches are executed as follows:
At the time an indirect branch is fetched, the frontend reads the
contents of the branch register that contains the branch target. The
contents of that register is then used as the predicted target.
For example, "br.call.sptk.many rp=b6" would read register "b6" at the
time the "br.call" is fetched by the frontend and then the contents of
"b6" is used as the predicted target.
This has the following implications:
(1) To _guarantee_ correct prediction, the branch register has to be
loaded way before the indirect branch direction (at least 6
front-end L1I cache accesses; which is up to 6 bundle-pairs or 36
instructions, I believe).
(2) If (1) isn't possible (it often isn't, in small functions),
another possibility is to test whether the branch targets one of a
few common targets and, if so, invoke those targets via direct
branches. This is generally done automatically by compilers (at
least if there is PBO info or a programmer-provided hint
available), but sadly GCC doesn't do this at the moment.
The good news is that since McKinley-types cores don't have
complicated branch-target predictors, misprediction penalty is
_relative_ small (10 cycles). The bad news is that the network path
is extremely sensitive to even such relatively small penalities, it
does make a significant difference.
As mentioned earlier, we could fix some of the most egregious effects
with a "call_likely" macro which hints which target(s) are the most
likely ones.
</excerpt>
rick jones
netperf feedback always welcome...
next prev parent reply other threads:[~2005-03-29 18:58 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-02-23 21:30 [PATCH] select congestion control with one sysctl Baruch Even
2005-02-23 21:57 ` David S. Miller
2005-02-24 0:23 ` Stephen Hemminger
2005-02-24 0:33 ` David S. Miller
2005-02-26 9:41 ` Arnaldo Carvalho de Melo
[not found] ` <421D30FA.1060900@ev-en.org>
[not found] ` <20050225120814.5fa77b13@dxpl.pdx.osdl.net>
[not found] ` <20050309210442.3e9786a6.davem@davemloft.net>
[not found] ` <4230288F.1030202@ev-en.org>
[not found] ` <20050310182629.1eab09ec.davem@davemloft.net>
[not found] ` <20050311120054.4bbf675a@dxpl.pdx.osdl.net>
[not found] ` <20050311201011.360c00da.davem@davemloft.net>
2005-03-14 23:17 ` [RFC] TCP congestion schedulers Stephen Hemminger
2005-03-15 19:54 ` John Heffner
2005-03-15 22:16 ` John Heffner
2005-03-18 4:12 ` David S. Miller
2005-03-18 12:53 ` Arnaldo Carvalho de Melo
2005-03-18 13:43 ` jamal
2005-03-18 16:13 ` Arnaldo Carvalho de Melo
2005-03-18 16:45 ` Stephen Hemminger
2005-03-18 16:59 ` Arnaldo Carvalho de Melo
2005-03-19 20:19 ` Andi Kleen
2005-03-21 21:25 ` John Heffner
2005-03-21 21:51 ` David S. Miller
2005-03-21 22:30 ` Baruch Even
2005-03-22 0:10 ` Rick Jones
2005-03-22 1:41 ` Olaf Kirch
2005-03-22 7:41 ` Andi Kleen
2005-03-28 23:51 ` Stephen Hemminger
2005-03-29 15:25 ` Andi Kleen
2005-03-29 17:17 ` Stephen Hemminger
2005-03-29 18:58 ` Rick Jones [this message]
2005-03-30 9:41 ` Matt Mackall
2005-03-29 19:32 ` John Heffner
2005-03-29 20:03 ` David S. Miller
2005-03-29 20:09 ` Rick Jones
2005-04-08 19:33 ` John Heffner
2005-04-08 20:20 ` Rick Jones
2005-02-24 1:05 ` [PATCH] select congestion control with one sysctl Daniele Lacamera
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4249A570.90709@hp.com \
--to=rick.jones2@hp.com \
--cc=netdev@oss.sgi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).