Hardware Transactional Memory, the end?

By: Andrey (andrey.semashev.delete@this.gmail.com), August 24, 2022 3:54 am
Room: Moderated Discussions
anon2 (anon.delete@this.anon.com) on August 23, 2022 8:50 pm wrote:
> Andrey (andrey.semashev.delete@this.gmail.com) on August 23, 2022 6:01 pm wrote:
> > --- (---.delete@this.redheron.com) on August 23, 2022 10:00 am wrote:
> > > Andrey (andrey.semashev.delete@this.gmail.com) on August 23, 2022 6:29 am wrote:
> > > > --- (---.delete@this.redheron.com) on August 21, 2022 9:27 pm wrote:
> > > > > Andrey (andrey.semashev.delete@this.gmail.com) on August 21, 2022 6:39 pm wrote:
> > > > > >
> > > > > > The key advantage of transactional memory is atomicity of *multiple* memory accesses,
> > > > > > at potentially distant memory locations. No predictor will give you that.
> > > > >
> > > > > I'm no expert, but this seems to me too strong a claim.
> > > > > I make no claims as to whether it's a good use of transistors, but I could imagine a two
> > > > > level system that starts by detecting patterns of atomics that occur close to each in
> > > > > time, and that that then predicts an overall outcome, all held as speculative in the same
> > > > > way as HTM (ie vie special "don't propagate this" bits in each cache line)...
> > > >
> > > > Architecturally, two atomic operations are distinct and are not atomic in combination. This is regardless
> > > > of whether the particular hardware manages to somehow commit the two operations as one atomic operation.
> > > > Being architecturally atomic is what is important here because that is what software relies on.
> > > >
> > > > HTM, on the other hand, is architectural (i.e. not speculative). That is, the architecture guarantees,
> > > > within set limits, that a certain sequence of operations will execute atomically.
> > >
> > > I understand this Andrey, but you apparently did not understand the distinction I was trying to make.
> > > Is what people want from HTM
> > > - PERFORMANCE (which can be achieved, I think, by speculation, as I suggested) OR
> > > - EASIER writing of code (which can be achieved, I think, by language+compiler, with
> > > any theoretical performance that's left on the table being made up by speculation).
> > >
> > > HTM is a means to an end, it's not an end in itself. But is that end
> > > - performance OR
> > > - making it easier to write reliable parallel code
> > > ?
> >
> > All other things being equal, HTM does not make it easier to write code compared to locking. In fact,
> > it makes it more complex, at least in case of Intel TSX, as you have to implement two code paths, one
> > of them involving a lock.
>
> It was absolutely *supposed* to make writing code easier. This was the entire promise of the thing from the beginning.
> The theory was that the fallback path was supposed to be when you had a true conflict, so a highly scalable fallback
> path would not be required (because you were conflicting the same data anyway). In theory.

I deliberately said "all other things being equal", and that includes the code design. Given the coarse grained locking code, replacing (or rather, augmenting) the code with HTM does not simplify the code. On the contrary, it makes the code more complex as it now has both the locking path and the transactional path. Given the fine grained locking code, you can augment the fine grained locks with short transactions and have the same increase of code complexity as with coarse grained locks.

The promise was that given the coarse grained locking design one could use HTM to achieve better performance on it instead of increasing the code complexity by changing the design to lock-free techniques or fine grained locking. This is very different from promising to reduce code complexity. And what I'm saying is if you do change the design anyway, the performance of the changed design with HTM on top of that could be better still - at the expense of yet higher code complexity. So the code complexity argument is definitely not in favor of HTM, and never was.
< Previous Post in ThreadNext Post in Thread >
TopicPosted ByDate
Hardware Transactional Memory, the end?rwessel2022/08/20 06:50 PM
  Hardware Transactional Memory, the end?Kara2022/08/20 11:04 PM
    Hardware Transactional Memory, the end?dmcq2022/08/21 11:36 AM
      Hardware Transactional Memory, the end?rwessel2022/08/21 12:17 PM
        Hardware Transactional Memory, the end?---2022/08/21 01:26 PM
          Hardware Transactional Memory, the end?Andrey2022/08/21 06:39 PM
            Hardware Transactional Memory, the end?---2022/08/21 09:27 PM
              Hardware Transactional Memory, the end?Andrey2022/08/23 06:29 AM
                Hardware Transactional Memory, the end?---2022/08/23 10:00 AM
                  Hardware Transactional Memory, the end?iz2022/08/23 01:20 PM
                    Hardware Transactional Memory, the end?anonymou52022/08/23 02:57 PM
                  Hardware Transactional Memory, the end?Andrey2022/08/23 06:01 PM
                    Hardware Transactional Memory, the end?Anon2022/08/23 06:28 PM
                      Hardware Transactional Memory, the end?Andrey2022/08/24 04:10 AM
                        Hardware Transactional Memory, the end?Anon2022/08/24 08:50 AM
                          Hardware Transactional Memory, the end?rwessel2022/08/24 09:35 AM
                          Hardware Transactional Memory, the end?Etienne2022/08/25 01:54 AM
                            Hardware Transactional Memory, the end?Anon2022/08/25 05:25 AM
                              Hardware Transactional Memory, the end?Etienne2022/08/25 06:24 AM
                                Hardware Transactional Memory, the end?rwessel2022/08/25 08:16 AM
                                  Hardware Transactional Memory, the end?Linus Torvalds2022/08/25 10:16 AM
                                    Hardware Transactional Memory, the end?rwessel2022/08/25 11:00 AM
                                  Hardware Transactional Memory, the end?Etienne2022/08/26 12:54 PM
                    Hardware Transactional Memory, the end?anon22022/08/23 08:50 PM
                      Hardware Transactional Memory, the end?Andrey2022/08/24 03:54 AM
                        Hardware Transactional Memory, the end?anon22022/08/24 04:54 AM
                      Hardware Transactional Memory, the end?Simon Farnsworth2022/08/24 03:58 AM
                        Hardware Transactional Memory, the end?Konrad Schwarz2022/08/28 06:12 AM
          Hardware Transactional Memory, the end?Linus Torvalds2022/08/21 06:58 PM
            Hardware Transactional Memory, the end?rwessel2022/08/21 08:02 PM
              Hardware Transactional Memory, the end?anon22022/08/21 09:31 PM
                Hardware Transactional Memory, the end?dmcq2022/08/22 07:14 AM
                  Hardware Transactional Memory, the end?anon22022/08/23 12:15 AM
                    Hardware Transactional Memory, the end?dmcq2022/08/24 03:50 AM
                      Hardware Transactional Memory, the end?Linus Torvalds2022/08/24 11:56 AM
                        Hardware Transactional Memory, the end?dmcq2022/08/25 04:39 PM
            Hardware Transactional Memory, the end?---2022/08/21 09:33 PM
              Hardware Transactional Memory, the end?Linus Torvalds2022/08/22 11:32 AM
                Hardware Transactional Memory, the end?Anon2022/08/22 12:35 PM
                  Hardware Transactional Memory, the end?rwessel2022/08/22 04:47 PM
                Hardware Transactional Memory, the end?gpd2022/08/26 03:07 AM
                  Hardware Transactional Memory, the end?Michael S2022/08/26 03:46 AM
                    Hardware Transactional Memory, the end?Linus Torvalds2022/08/26 11:01 AM
                      Hardware Transactional Memory, the end?rwessel2022/08/26 06:08 PM
                        Hardware Transactional Memory, the end?anonymou52022/08/26 07:52 PM
  Hardware Transactional Memory, the end?zArchJon2022/08/24 10:12 AM
Reply to this Topic
Name:
Email:
Topic:
Body: No Text
How do you spell tangerine? 🍊