Transactional memory

By: David Kanter (, September 23, 2010 11:05 pm
Room: Moderated Discussions
Linus Torvalds ( on 9/23/10 wrote:
>Paul A. Clayton ( on 9/23/10 wrote:
>>I suspect in practice is rather difficult to evaluate at
>>this point. As far as I know, the only hardware TM
>>systems have been the Sun-internal (never sold--did anyone
>>outside of Sun even get to play with early prototypes?)
>>Rock and Azul Systems implementation--which has entry-price
>>and non-open development issues.
>Heh. And the x86 emulation processors from Transmeta, that
>I worked on for several years.

IIRC the "TM" in TMTA chips was the gated store buffer, which was limited to 32 stores. Is that what you are referring to?

>For JITted code, transactions work fine. Why? Because if
>you overflow the transaction size (or other limits: there
>are always things like physical IO that cannot be done
>speculatively), you just retranslate.
>For static code, you need static recovery. And that is
>quite expensive. It's been tried, btw. Look at the IA64
>static alias analysis hardware. Exact same deal. Suddenly
>you cannot afford to take any risks, because the cost of
>a mispredict is too high.
>It was a damn stupid idea in alias analysis, it's an even
>worse idea in transactional memory. All worthwhile loads
>are simply too dynamic to be handled well by static choices
>made at compile time.
>So yes, I do have personal experience with transactional
>memory, and know something about the issues. It's good for
>some things, but it's really bad for others. And I can
>pretty much guarantee that you need hardware support
>for the "dynamic" aspects in order to make it palatable in
>a general-purpose CPU.
>For Azul, I bet that they depend on the JIT nature of the
>code they run, and avoid the issues that way. Again, it's
>a very specialized use where transactional memory works
>fine. Also, the Java world has all those specialized atomics
>with thread-safe hash tables etc - and you can make those
>kinds of trivial "extended atomics" using transactional
>memory. It's just a few memory operations, after all, you
>end up using your fancy transactional memory just as an
>extended "load locked + store conditional".

I think Azul had something much simpler than TM. I think they are now porting to nehalem-ex, so they clearly don't need TM for some of their stuff.

>But in a general-purpose setup where you actually want to
>give good support to software and make the transactions
>easy to use in a generic way (rather than as a few
>library functions to do some trivial atomic sequence), you
>need more.
>I'm personally convinced that part of the "more" that you
>need is good hardware support for doing a transaction
>failure predictor. Basically identical to branch prediction,
>but predicting whether a transaction will fail, and not
>even doing the speculative arm. Exactly so that you don't
>get the horrible downside of static code that ends up
>always failing and sucking horribly for that case (again,
>think IA64 aliases, but think about how the failure case
>happens after hundreds of instructions when the transaction
>size ends up being too big - so the downside is huge)

Yes that's quite likely, although depends on TX size. The larger your TX, the more important it will be.

< Previous Post in ThreadNext Post in Thread >
TopicPosted ByDate
T3 announcedMax2010/09/21 03:42 AM
  T3 announcedsomeone2010/09/21 04:53 AM
    T3 announcedanon2010/09/21 05:05 AM
      T3 announcedlurker2010/09/21 06:11 AM
      T3 announcedJesper Frimann2010/09/21 06:21 AM
      T3 announcedPhil2010/09/21 11:59 PM
        T3 announcedMichael S2010/09/22 05:16 AM
  T3 announcedLinus Torvalds2010/09/21 06:15 AM
    T3 announcedanon2010/09/21 08:31 AM
      Transactional memory Paul A. Clayton2010/09/21 09:52 AM
        Transactional memory Linus Torvalds2010/09/21 11:21 AM
          Transactional memory Paul A. Clayton2010/09/23 06:30 AM
            Transactional memory Linus Torvalds2010/09/23 07:01 AM
              Transactional memory David Kanter2010/09/23 11:05 PM
                Transactional memory Linus Torvalds2010/09/24 06:59 AM
                  Transactional memory David Kanter2010/09/25 08:27 AM
                    'dynamic fallback'?Paul A. Clayton2010/09/25 10:28 AM
                      'dynamic fallback'?Linus Torvalds2010/09/25 12:23 PM
                        'dynamic fallback'?blaine2010/09/25 01:16 PM
                Cliff Click Jr. on Azul's HTMPaul A. Clayton2010/09/24 01:19 PM
              Transactional memory Foo_2010/09/24 02:08 AM
    T3 announcedblaine2010/09/21 10:43 AM
      no news from FujitsuMax2010/09/21 09:37 PM
Reply to this Topic
Body: No Text
How do you spell tangerine? ūüćä