Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Apr 2000 19:37:00 -0700 (PDT)
From:      Matthew Dillon <dillon@apollo.backplane.com>
To:        Terry Lambert <tlambert@primenet.com>
Cc:        tlambert@primenet.com (Terry Lambert), jgowdy@home.com (Jeremiah Gowdy), smp@csn.net (Steve Passe), jim@thehousleys.net (James Housley), freebsd-smp@FreeBSD.ORG
Subject:   Re: hlt instructions and temperature issues
Message-ID:  <200004290237.TAA21020@apollo.backplane.com>
References:   <200004290120.SAA11745@usr08.primenet.com>

next in thread | previous in thread | raw e-mail | index | archive | help
:>     We should consider testing other possible solutions, such as having a
:>     really tight idle loop that stays in the same cacheline and thus does
:>     not greatly exercise the cpu's circuitry, resulting in less heat without
:>     having to HLT.  
:
:I think that going outside is the least of the heat dissipation
:workies; it strikes me that line drivers are not where the heat
:is coming from, and that running over the same cache line would
:be a very bad thing.

    Heat dissipation is caused mainly by gates on the chip changing state.
    You can reduce the amount of gates that change state in a good portion
    of the chip with careful coding.  We aren't just talking about external
    accesses here, though they are a big part of it.  We are talking about,
    for example, isolating the idle loop within a single code cache line 
    and the data accesses within a single data cache line.  By doing so
    the cache memory addressing will not change and since the cache memory
    is essentially static ram using combinational decoding, this will save
    a considerable amount of power and thus a considerable amount of heat.

    I'm not sure if there are any tricks we can play to reduce dissipation
    in the pipeline.  Sometimes running very long-running instructions, like
    DIV (try -1/-1 for example) in the middle of the loop works.

:The other problem with this idea is that you rely on a shootdown
:notification for a data change in order to exit the loop, and
:that is, defacto, an IPI in all but name.

    We would rely on a data-change.  The point is that the data change
    is generated by an outside source (such as an interrupt or one of the
    cpu's that IS running).  A data change is very different from an IPI.
    The overhead is much, much lower.

:I think the numbers for a 2 CPU system with Loqui's patch were
:extremely exagerated by the CPU stalling-until-interrupt issue,
:and that the heat numbers will not be nearly so good, even on a
:totally "correct" solotuion because of this.  I expect your
:approach would result in temeperatures nearly as high, if not
:downright indistinguishable from, the measured numbers for an
:unmodified system.

    Possibly, but possibly not.  I don't know the intel architecture well
    enough to say for sure.  I've done a lot of low-power design so I do
    know that these sorts of tricks work - often quite well.  But Intel
    has never been particularly good at doing low-power cpu designs.

						-Matt

:This is really not an issue, anyway, except for power consumption
:and heat dissipation critical environments, but that said, if it's
:for an SMP box going into a colocation server room rack somewhere
:in a 1U case, this could be significant for some percentage of
:users, so maybe it's worth still talking about.  8-).
:
:					Terry Lambert
:					terry@lambert.org




To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-smp" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200004290237.TAA21020>