Example of memory ordering causing excitement in the real world

By: Linus Torvalds (torvalds.delete@this.linux-foundation.org), July 12, 2015 11:24 am
Room: Moderated Discussions
anon (anon.delete@this.anon.com) on July 12, 2015 3:42 am wrote:
>
> So all of that happens inside the core. Memory ordering instructions
> have to prevent these reorderings within the core.

No, they really don't.

Look, let's make this really simple. You have this code:

- store A to location X
- load B from location Y

and you want to move the load earlier, because loads matter from a performance standpoint, and stores don't and can be buffered.

Ignore any SMP issues for now. So imagine that you're running on a UP system, and there is no DMA or anything like that. In fact, ignore even caches. Imagine that the loads and stores go directly to memory, there are no caches, there are no other agents, there is absolutely nothing but you and the memory.

So by definition, any amount of memory barriers between the two operations don't matter. Agreed?

What do you do if you want that sequence to run as fast as possible?

Now, trivially - and traditionally - the thing to do is to just verify that there is no overlap between X and Y, and just do the load early. Agreed?

That actually takes care of a lot of things, and is reasonably simple. You can move lots of loads up much earlier, and life is relatively good. Let's call this "phase 1".

Now, let's say that you want to move the load up early, but the store address isn't known yet. What do you do now? You've taken all the low-hanging fruit, you're doing a reasonable job of OoO and maybe have a hundred+ instructions in flight at a time, and you notice that you still have a fair number of loads from addresses you know early, but you can't actually do yet because they are all interspersed with stores that you haven't the addresses for.

"That sounds unlikely" you say. You'd be wrong. Things like loads from constant areas etc are quite common, but the function prologues have all those silly stores to the stack to save registers etc, so you can't do those critical loads early. So you need to extend on your load re-ordering.

So what do you do? You know that those stores to the stack area are not going to interfere with the loads from the constant area, but how do you prove it? You don't. You set up some simple prediction mechanism, and you say "ok, I'll just assume that when I see a store to the stack with a constant offset, it's spilling registers, and it's not going to affect a load off a random non-stack pointer". So I can move the load up and do it early, and those stack spills won't screw with my critical load.

That sounds like an obvious thing to do, right? When you save your registers to the stack, you're basically going to be loading them the same way 99% of the time, and this means that the loads exposed by your OoO engine going into the next function call can be started early, despite all those pesky function prologue stores.

But you realize that "99% correct" is not quite good enough, so now when you dot he load early, you'll have to *check* that the load was correct. So you have to add support to your core to do speculative loads: do the load early, but leave some kind of marker in your memory subsystem that gets verified when it's time to actually retire the load. So *if* the stores to the stack overwrote the memory location you did the load from early, you notice when you're going to actually retire the load, and instead take a mispredict and re-do the load in order.

And you can tweak that load/store re-ordering prediction any way you want. Maybe you just start with that "stack vs non-stack" heuristic. But I think you'll agree that you might extend it to other scenarios (including some branch-prediction-like thing that remembers which load instructions shouldn't be re-ordered because they caused problems before). That obviously doesn't really change anything. Agreed?

See? None of this has anything to do with SMP so far, and all of this is simple and straightforward, right? Let's call this "leave a marker and do the load speculatively" behavior "phase 2".

And I think we can agree that obviously the CPU that does "phase 2" is the more intelligent one, and likely to be able to perform better. Yes, it's more complexity, but the memory subsystem is so important that that complexity is definitely worth it unless you're doing something really simple.

So, with "phase 1" and "phase 2" in mind, let's see what happens in SMP. We've ignored that entirely so far.

Now, "phase 1" really doesn't work at all in SMP. I think we all agree. You can't reorder a load at all across other stores you do - or even other loads - because you don't know what stores the other CPU's are doing. All in agreement?

In fact, let's introduce caches here. Remember: we didn't have SMP nor caches to worry about in our original model of "phase 1", but we might as well introduce caches now and see what it does.

In particular, you realize that caches fundamentally kind of act like moving that "load B from Y" earlier - the fact that the core cached location "Y" from an earlier situation means that the CPU basically did an early load. That wouldn't have mattered when you were the only owner, but we ignored it for simplicity, and now we realize that caches fundamentally act as that kind of "phase 1" reordering even in the absense of OoO and clever instruction-level re-ordering.

Agreed? With me so far?

So what do you do? You introduce memory barriers. They make sense even in strictly in-order designs, because as we noticed, caches and store buffer interactionsneed to be serialized too.

And this is where all those f*cking stupid "weak memory ordering" shit architectures are. They got to phase 1, and wanted to do SMP, and even if they weren't even OoO, they had realized that they needed memory barriers to synchronize the store buffer and the cache accesses. Maybe they weren't smart enough to realize that OoO was a good idea, but they had noticed that nonblocking caches were a basic requirement for any kind of performance, so you had multiple loads in flight even in an in-order core, never mind just the store buffer.

So obviously memory barriers are a good idea, and an absolute must. It's what synchronizes all those things.

But it's only "obvious" if you're a CPU designer who is busy sitting in a corner eating paste, and you left behind at that "phase 1" level.

Quite frankly, that "phase 1" argument was valid 20 years ago. Today it really is "paste eater" level crap.

Because look at what happens when you introduce SMP (and caches, I think we can agree that they are just another aspect of the whole "reorder memory accesses") in a "phase 2" design.

Really. Stop here, and think it through yourself. What does a "phase 2" design do in SMP. I'll leave a few empty lines for this concept to sink in.

.

.

.

So the problem with "phase 1" and SMP was that it checked the load against the other known accesses it reordered against, and that obviously only works when you know what those other accesses were - ie locally. "Phase 1" fundamentally doesn't work for SMP.

But "phase 2"? Ignore all those memory barrier ideas, because they were just the obvious solution for "phase 1", and they are crap, and they are wrong. Instead, go back to the original phase 2 model: we do the load early, leave a marker in the memory subsystem, and then just check the marker when we actually retire the load in-order (and I say "retire", but it's not necessarily the same as "instruction retirement", you could think of it as a separate in-order queue of "memory access retirements" which might or might not have anything to do with the actual instruction retirement).

And the thing is, that model works fine with caches and with SMP. There are no memory barriers needed. Memory barriers are just pointless crap. They don't add anything at all, they just distract you from the real solution.

So just look at that example of "do a load early" model: just do the load early, you marked it somewhere in the memory subsystem, and you added it to your memory access retirement queue. Now you just need to figure out if anybody did a store that invalidated the load.

And guess what? That's not so hard. If you did an early load, that means that you had to get the cacheline with the load data. Now, how do you figure out whether another store disturbed that data? Sure, you still have the same store buffer logic that you used fro UP for the local stores, but you also see the remote stores: they'd have to get the cacheline from you. So all your "marker in the memory subsystem" has to react to is that the cacheline it marked went away (and maybe the cacheline comes back, but that doesn't help - if it went away, it causes the marker to be "invalid").

See? No memory barriers. No nothing. Just that same model of "load early and mark".

And the important take-away from this is two-fold:

(1) notice how the smarter CPU core that didn't need the memory barriers didn't re-order memory operations less. No sirree! It's the smarter core, and it actually re-o5rders memory operations more aggressively than the stupid core that needed memory barriers.

In fact, please realize that the memory barrier model performs fewer re-orderings even when there are no memory barriers present - but it particularly sucks when you actually use memory barriers. The smart CPU "just works" and continues to re-order operations even when you need strict ordering - because in the (very unlikely) situation that you actually get a conflict, it will re-do things. The stupid memory barrier model will actually slow down (often to a crawl), because the memory barriers will limit its already limited re-ordering much further.

(2) weak memory ordering is an artifact of historical CPU design. It made sense in the exact same way that RISC made sense: it's the same notion of "do as well as you can, with the limitations of the time in place, don't waste any effort on anything 'clever'".

So you have that odd "dip" in the middle where weak memory ordering makes sense. In really old designs, you didn't have caches, and CPU's were in-order, so memory barriers and weak memory ordering was a non-issue. And once you get to a certain point of complexity in your memory pipe, weak ordering again makes no sense because you got sufficiently advanced tools to handle re-ordering that synchronizing things by serializing accesses is just stupid.

The good news is that a weak memory model can be strengthened. IBM could - if they chose to - just say "ok, starting with POWER9, all of those stupid barriers are no-ops, because we just do things right in the core".

The bad news is that the weak memory model people usually have their mental model clouded by their memory barriers, and they continue to claim that it improves performance, despite that clearly not being the case. It's the same way we saw people argue for in-order cores not that many years ago (with BS like "they are more power-efficient". No, they were just simple and stupid, and performed badly enough to negate any power advantage many times over).

(Oh, and a final small note: things aren't quite as black-and-white as "weak memory ordering or not". The x86 memory ordering isn't a total sequential consistency, and there are graduations and variations between "weak" and "strong". The alpha memory ordering is particularly weak and crappy, while the x86 and sparc TSO orderings are fairly strong but allow stores to be re-ordered after loads, which simplifies some things with fairly minimal disadvantages. Note the "after" part - it's actually important that stores can only be delayed but never done early!)

Linus
< Previous Post in ThreadNext Post in Thread >
TopicPosted ByDate
Cyclone Macro-op fusionMaynard Handley2015/07/05 06:01 PM
  Cyclone Macro-op fusionGabriele Svelto2015/07/06 02:11 AM
    Cyclone Macro-op fusionMaynard Handley2015/07/06 10:25 AM
      Cyclone Macro-op fusionWilco2015/07/06 11:17 AM
        Cyclone Macro-op fusionMaynard Handley2015/07/06 12:07 PM
          Cyclone Macro-op fusionMaynard Handley2015/07/06 12:55 PM
            Cyclone Macro-op fusionGabriele Svelto2015/07/07 02:49 AM
      Power8 branch conversionSHK2015/07/06 12:41 PM
        Power8 branch conversionMaynard Handley2015/07/06 01:01 PM
          Power8 branch conversionMaynard Handley2015/07/06 01:09 PM
        Benefit of dynamic hammock predicationPaul A. Clayton2015/07/06 03:02 PM
          Benefit of dynamic hammock predicationMaynard Handley2015/07/06 03:34 PM
            Benefit of dynamic hammock predicationEduardoS2015/07/06 07:56 PM
            Benefit of dynamic hammock predicationPatrick Chase2015/07/06 10:30 PM
          Benefit of dynamic hammock predicationLinus Torvalds2015/07/06 03:59 PM
            Benefit of dynamic hammock predicationWilco2015/07/06 04:35 PM
              Benefit of dynamic hammock predicationLinus Torvalds2015/07/06 05:25 PM
                Benefit of dynamic hammock predicationanon2015/07/06 09:02 PM
            Benefit of dynamic hammock predicationPatrick Chase2015/07/06 10:31 PM
              Benefit of dynamic hammock predicationanon2015/07/06 11:02 PM
              Benefit of dynamic hammock predicationMichael S2015/07/07 01:07 AM
              Benefit of dynamic hammock predicationLinus Torvalds2015/07/07 09:23 AM
                Benefit of dynamic hammock predicationPatrick Chase2015/07/07 10:49 AM
                  Benefit of dynamic hammock predicationSHK2015/07/07 11:34 AM
                  Benefit of dynamic hammock predicationMaynard Handley2015/07/07 12:00 PM
                    Benefit of dynamic hammock predicationExophase2015/07/07 01:26 PM
                      Benefit of dynamic hammock predicationWilco2015/07/07 04:54 PM
                      Benefit of dynamic hammock predicationMaynard Handley2015/07/07 05:25 PM
                    Benefit of dynamic hammock predicationPatrick Chase2015/07/07 02:32 PM
                    Benefit of dynamic hammock predicationMichael S2015/07/08 01:57 AM
                  Benefit of dynamic hammock predicationSylvain Collange2015/07/08 06:30 AM
                    Benefit of dynamic hammock predicationMaynard Handley2015/07/08 09:46 AM
                      Benefit of dynamic hammock predicationSylvain Collange2015/07/08 10:32 AM
                        Benefit of dynamic hammock predicationMaynard Handley2015/07/08 10:57 AM
                        Sadly, skewed associativity has not been broadly adoptedPaul A. Clayton2015/07/08 02:00 PM
                        Prediction quality of A8 and Intel (was Benefit of dynamic hammock predication)Maynard Handley2015/07/08 08:23 PM
                          Prediction quality of A8 and Intel (was Benefit of dynamic hammock predication)David Kanter2015/07/09 07:20 AM
                            Prediction quality of A8 and Intel (was Benefit of dynamic hammock predication)Maynard Handley2015/07/09 10:04 AM
                              Prediction quality of A8 and Intel (was Benefit of dynamic hammock predication)Tim McCaffrey2015/07/09 10:41 AM
                                Prediction quality of A8 and Intel (was Benefit of dynamic hammock predication)Patrick Chase2015/07/09 01:08 PM
                                  Prediction quality of A8 and Intel (was Benefit of dynamic hammock predication)Sylvain Collange2015/07/10 02:03 AM
                              Prediction quality of A8 and Intel (was Benefit of dynamic hammock predication)David Kanter2015/07/09 04:15 PM
                                Prediction quality of A8 and Intel (was Benefit of dynamic hammock predication)Maynard Handley2015/07/09 05:21 PM
                            Prediction quality of A8 and Intel (was Benefit of dynamic hammock predication)Patrick Chase2015/07/09 12:44 PM
                          Prediction quality of A8 and Intel (was Benefit of dynamic hammock predication)Patrick Chase2015/07/09 09:43 AM
                          Prediction quality of A8 and Intel (was Benefit of dynamic hammock predication)someone2015/07/10 05:43 AM
            Benefit of dynamic hammock predicationKonrad Schwarz2015/07/07 07:54 AM
            Benefit of dynamic hammock predicationdmcq2015/07/07 02:38 PM
              Benefit of dynamic hammock predicationLinus Torvalds2015/07/08 08:23 AM
                Benefit of dynamic hammock predicationdmcq2015/07/08 10:11 AM
                  Benefit of dynamic hammock predicationLinus Torvalds2015/07/08 01:38 PM
                    Example of memory ordering causing excitement in the real worldMark Roulo2015/07/08 04:54 PM
                      Example of memory ordering causing excitement in the real worlddmcq2015/07/09 04:37 AM
                        Example of memory ordering causing excitement in the real worldMark Roulo2015/07/09 08:24 AM
                          Example of memory ordering causing excitement in the real worlddmcq2015/07/09 10:09 AM
                          Example of memory ordering causing excitement in the real worldMaynard Handley2015/07/09 10:12 AM
                            Example of memory ordering causing excitement in the real worldLinus Torvalds2015/07/09 12:14 PM
                              Example of memory ordering causing excitement in the real worlddmcq2015/07/09 04:24 PM
                                Example of memory ordering causing excitement in the real worldSimon Farnsworth2015/07/10 01:07 PM
                                  Example of memory ordering causing excitement in the real worlddmcq2015/07/10 03:49 PM
                                    Example of memory ordering causing excitement in the real worldSimon Farnsworth2015/07/12 01:02 PM
                                      Example of memory ordering causing excitement in the real worlddmcq2015/07/13 05:03 AM
                                        Example of memory ordering causing excitement in the real worldMichael S2015/07/13 05:19 AM
                                        Example of memory ordering causing excitement in the real worldSimon Farnsworth2015/07/14 01:21 PM
                                          Example of memory ordering causing excitement in the real worlddmcq2015/07/14 02:54 PM
                                            Example of memory ordering causing excitement in the real worldSimon Farnsworth2015/07/15 01:13 PM
                                              Example of memory ordering causing excitement in the real worlddmcq2015/07/15 03:43 PM
                                                Example of memory ordering causing excitement in the real worldSimon Farnsworth2015/07/16 12:41 PM
                                                  Example of memory ordering causing excitement in the real worldWilco2015/07/17 01:57 PM
                                                    Example of memory ordering causing excitement in the real worldLinus Torvalds2015/07/17 04:29 PM
                                                      Example of memory ordering causing excitement in the real worlddmcq2015/07/18 04:07 AM
                                          Example of memory ordering causing excitement in the real worldJouni Osmala2015/07/16 03:52 AM
                                            Example of memory ordering causing excitement in the real worldSimon Farnsworth2015/07/16 01:05 PM
                                              Example of memory ordering causing excitement in the real worldJouni Osmala2015/07/17 01:18 AM
                                                ISA support for bound checkingMichael S2015/07/17 04:51 AM
                                                  ISA support for bound checkingEtienne2015/07/17 06:39 AM
                                                  MPX on SkylakeMark Roulo2015/07/17 08:19 AM
                                                    MPX on SkylakeMichael S2015/07/17 08:44 AM
                                                      MPX on SkylakeMark Roulo2015/07/17 09:03 AM
                                  Example of memory ordering causing excitement in the real worldanon2015/07/12 03:42 AM
                                    Example of memory ordering causing excitement in the real worlddmcq2015/07/12 10:27 AM
                                    Example of memory ordering causing excitement in the real worldLinus Torvalds2015/07/12 11:24 AM
                                      Example of memory ordering causing excitement in the real worldEduardoS2015/07/12 11:53 AM
                                        Example of memory ordering causing excitement in the real worldLinus Torvalds2015/07/12 01:07 PM
                                          Example of memory ordering causing excitement in the real worldanon2015/07/12 07:52 PM
                                            Example of memory ordering causing excitement in the real worldLinus Torvalds2015/07/13 11:05 AM
                                              Example of memory ordering causing excitement in the real worlddmcq2015/07/13 12:20 PM
                                                Example of memory ordering causing excitement in the real worldLinus Torvalds2015/07/13 01:46 PM
                                                  Example of memory ordering causing excitement in the real worldMaynard Handley2015/07/13 02:10 PM
                                                    Example of memory ordering causing excitement in the real worldanon2015/07/13 08:51 PM
                                                    Simple cores justifying weak ordering?Paul A. Clayton2015/07/14 09:01 AM
                                                      David's Paul A. Clayton2015/07/14 09:37 AM
                                                      David's 2015-07-12 10:34 post confirmed some of that (NT)Paul A. Clayton2015/07/14 09:39 AM
                                                    Example of memory ordering causing excitement in the real worldEtienne2015/07/17 01:15 AM
                                                  Example of memory ordering causing excitement in the real worlddmcq2015/07/13 02:14 PM
                                                  Reality is even worseTerry Gray2015/07/13 06:05 PM
                                                    Reality is even worseKonrad Schwarz2015/07/21 12:13 AM
                                                  A simple CAS/MCAS semantics2015/07/15 12:54 PM
                                                    A simple CAS/MCAS semanticsLinus Torvalds2015/07/15 01:55 PM
                                                    A simple CAS/MCAS semanticsEduardoS2015/07/15 02:31 PM
                                                Example of memory ordering causing excitement in the real worldsylt2015/07/13 02:19 PM
                                                  Example of memory ordering causing excitement in the real worlddmcq2015/07/13 03:24 PM
                                                    Example of memory ordering causing excitement in the real worldEduardoS2015/07/13 04:48 PM
                                                      Example of memory ordering causing excitement in the real worldMaynard Handley2015/07/13 07:18 PM
                                                        Example of memory ordering causing excitement in the real worldEduardoS2015/07/13 07:57 PM
                                                      Example of memory ordering causing excitement in the real worldanon2015/07/13 09:01 PM
                                                    What high level languages do you have in mind?Mark Roulo2015/07/13 05:00 PM
                                                      What high level languages do you have in mind?dmcq2015/07/14 06:54 AM
                                                  Example of memory ordering causing excitement in the real worldWilco2015/07/13 04:36 PM
                                                    Example of memory ordering causing excitement in the real worldEduardoS2015/07/13 04:56 PM
                                                      Example of memory ordering causing excitement in the real worldanon2015/07/13 06:43 PM
                                                        Example of memory ordering causing excitement in the real worldEduardoS2015/07/13 08:11 PM
                                                          Example of memory ordering causing excitement in the real worldanon2015/07/13 09:07 PM
                                      Example of memory ordering causing excitement in the real worldMaynard Handley2015/07/12 12:32 PM
                                        Example of memory ordering causing excitement in the real worldEduardoS2015/07/12 01:35 PM
                                        Example of memory ordering causing excitement in the real worldLinus Torvalds2015/07/12 01:38 PM
                                          Example of memory ordering causing excitement in the real worldEduardoS2015/07/12 06:47 PM
                                            Example of memory ordering causing excitement in the real worldNoSpammer2015/07/13 12:34 PM
                                              Example of memory ordering causing excitement in the real worldWilco2015/07/13 04:50 PM
                                                Example of memory ordering causing excitement in the real worldNoSpammer2015/07/14 02:02 PM
                                                  Example of memory ordering causing excitement in the real worldanon2015/07/14 09:37 PM
                                                    Example of memory ordering causing excitement in the real worldMichael S2015/07/15 01:19 AM
                                                      Example of memory ordering causing excitement in the real worldanon2015/07/15 02:26 AM
                                                        Example of memory ordering causing excitement in the real worldNoSpammer2015/07/15 07:05 AM
                                                          Example of memory ordering causing excitement in the real worlddmcq2015/07/15 08:04 AM
                                                            Example of memory ordering causing excitement in the real worldMichael S2015/07/15 08:29 AM
                                                              Example of memory ordering causing excitement in the real worlddmcq2015/07/15 10:09 AM
                                                              Can string ops use microarchitectural state?Paul A. Clayton2015/07/16 09:33 AM
                                                                Can string ops use microarchitectural state?rwessel2015/07/16 01:00 PM
                                                                  Can string ops use microarchitectural state?Paul A. Clayton2015/07/16 06:16 PM
                                                                    Can string ops use microarchitectural state?rwessel2015/07/16 09:34 PM
                                                                      Can string ops use microarchitectural state?Michael S2015/07/17 05:39 AM
                                                                        Can string ops use microarchitectural state?rwessel2015/07/17 09:02 AM
                                                                Consider interrupt followed by task preemptionMichael S2015/07/16 04:31 PM
                                                                  Consider interrupt followed by task preemptionPaul A. Clayton2015/07/16 06:23 PM
                                                            Example of memory ordering causing excitement in the real worldNoSpammer2015/07/15 12:50 PM
                                                              Example of memory ordering causing excitement in the real worldLinus Torvalds2015/07/15 02:27 PM
                                                                Example of memory ordering causing excitement in the real worldNoSpammer2015/07/15 03:14 PM
                                                                  Example of memory ordering causing excitement in the real worldLinus Torvalds2015/07/15 05:42 PM
                                                      Example of memory ordering causing excitement in the real worldNoSpammer2015/07/15 02:44 AM
                                                    Example of memory ordering causing excitement in the real worldLinus Torvalds2015/07/15 02:17 PM
                                                      Example of memory ordering causing excitement in the real worldWilco2015/07/15 02:43 PM
                                                        Example of memory ordering causing excitement in the real worldanon2015/07/15 05:45 PM
                                                        Example of memory ordering causing excitement in the real worldLinus Torvalds2015/07/15 06:35 PM
                                                          Example of memory ordering causing excitement in the real worlddmcq2015/07/16 02:46 AM
                                                            Example of memory ordering causing excitement in the real worlddmcq2015/07/16 02:49 AM
                                        Example of memory ordering causing excitement in the real worldKonrad Schwarz2015/07/21 07:15 AM
                                      Example of memory ordering causing excitement in the real worldanon2015/07/12 07:42 PM
                                        Example of memory ordering causing excitement in the real worldanon2015/07/12 09:48 PM
                                        Example of memory ordering causing excitement in the real worldDavid Kanter2015/07/12 10:34 PM
                                          Example of memory ordering causing excitement in the real worldMichael S2015/07/13 01:51 AM
                                            Example of memory ordering causing excitement in the real worldDavid Kanter2015/07/13 08:31 AM
                                          Example of memory ordering causing excitement in the real worldanon2015/07/13 06:05 AM
                                            Example of memory ordering causing excitement in the real worldGabriele Svelto2015/07/17 05:40 AM
                                          Example of memory ordering causing excitement in the real worlddmcq2015/07/13 08:09 AM
                                        Example of memory ordering causing excitement in the real worldanon2015/07/13 07:46 AM
                                          Example of memory ordering causing excitement in the real worldanon2015/07/14 04:12 AM
                                        Example of memory ordering causing excitement in the real worlddmcq2015/07/15 03:51 AM
                                          Example of memory ordering causing excitement in the real worldanon2015/07/15 04:38 AM
                                            Example of memory ordering causing excitement in the real worlddmcq2015/07/15 06:21 AM
                                      Store queues in POWER/PowerPC processorsGabriele Svelto2015/07/16 01:55 AM
                                        Not sure about that conclusionDavid Kanter2015/07/16 07:34 AM
                                          The POWER4 had the same structureGabriele Svelto2015/07/17 05:20 AM
                                        Committing stores in program orderPaul A. Clayton2015/07/16 01:35 PM
                                          Committing stores in program orderMaynard Handley2015/07/17 12:52 PM
                                      Example of memory ordering causing excitement in the real worldKonrad Schwarz2015/07/20 04:44 AM
                                        Example of memory ordering causing excitement in the real worldanon2015/07/20 07:29 AM
                                          Example of memory ordering causing excitement in the real worldKonrad Schwarz2015/07/21 12:08 AM
                                            Example of memory ordering causing excitement in the real worlddmcq2015/07/21 01:27 AM
                                            Example of memory ordering causing excitement in the real worldMichael S2015/07/21 03:11 AM
                                              Example of memory ordering causing excitement in the real worldKonrad Schwarz2015/07/21 05:24 AM
                                            Example of memory ordering causing excitement in the real worldanon2015/07/21 06:22 AM
                                              Example of memory ordering causing excitement in the real worldKonrad Schwarz2015/07/21 07:36 AM
                                                Example of memory ordering causing excitement in the real worldanon2015/07/21 08:25 AM
                                              Example of memory ordering causing excitement in the real worldanon2015/07/21 08:17 AM
                                                Example of memory ordering causing excitement in the real worldanon2015/07/21 09:50 AM
                                                Example of memory ordering causing excitement in the real worldGabriele Svelto2015/07/21 12:46 PM
                                                Example of memory ordering causing excitement in the real worldKonrad Schwarz2015/07/22 12:35 AM
                                                  Example of memory ordering causing excitement in the real worldKonrad Schwarz2015/07/22 01:37 AM
                                                  Example of memory ordering causing excitement in the real worldanon2015/07/23 03:17 AM
                                                    Example of memory ordering causing excitement in the real worldKonrad Schwarz2015/07/23 04:59 AM
                                                      Example of memory ordering causing excitement in the real worldMichael S2015/07/23 07:31 AM
                                                        Example of memory ordering causing excitement in the real worldKonrad Schwarz2015/07/23 03:38 PM
                                                          Example of memory ordering causing excitement in the real worldKonrad Schwarz2015/07/23 11:44 PM
                                                            Example of memory ordering causing excitement in the real worlddmcq2015/07/24 01:08 AM
                                    Example of memory ordering causing excitement in the real worlddmcq2015/07/13 07:27 AM
                          Example of memory ordering causing excitement in the real worldKonrad Schwarz2015/07/16 05:11 AM
                      Example of memory ordering causing excitement in the real worldAnonymousse2015/07/16 05:07 AM
          Benefit of dynamic hammock predicationsomeotherdude2015/07/06 05:12 PM
            Benefit of dynamic hammock predicationMichael S2015/07/07 01:19 AM
          Benefit of dynamic hammock predicationPatrick Chase2015/07/06 10:20 PM
            SIMD predication is also helpful, of course (NT)Paul A. Clayton2015/07/07 07:45 AM
        Power8 branch conversionGabriele Svelto2015/07/07 02:50 AM
          isel works for storesPaul A. Clayton2015/07/07 07:43 AM
            isel works for storesPatrick Chase2015/07/07 11:08 AM
            isel DOES NOT work for storessomeotherdude2015/07/07 04:01 PM
              isel DOES NOT work for storesWilco2015/07/07 04:40 PM
              Yes it doesPatrick Chase2015/07/07 11:14 PM
                Yes it doesvvid2015/07/08 09:51 AM
            You don't need isel eitherGabriele Svelto2015/07/08 02:01 AM
              You don't need isel eitherPaul A. Clayton2015/07/08 04:46 AM
                You don't need isel eitherGabriele Svelto2015/07/08 05:22 AM
Reply to this Topic
Name:
Email:
Topic:
Body: No Text
How do you spell green?