Independent micro threads

By: Travis Downs (travis.downs.delete@this.gmail.com), December 30, 2018 4:18 pm
Room: Moderated Discussions
If you want to compare it to something, you should at least consider the best software-only solution, which is probably not a 50% unpredictable branch.

Instead, you can transform most (all?) loops of that type via a bitmap-and-post-process technique: in the body of the loop do the same check that would normally the branch, but rather than branching on it, store the result in a bitmap. On x86 this can be done in as little as one instruction (adc) if the condition is based on the carry flag.

The rest of the loop body is just the unconditional work.

Then after the main loop, you process the bitmap, doing the skipped extra work for each set bit. Reconstructing the index probably takes less than a cycle (something like lzcnt + bzhi on x86) throughput and 1 or 2 cycles latency depending on the ISA.

This doesn't work for every loop, but perhaps it works for every type of loop that your micro-threads would work for, since as I understand you are saying the branched-over work is independent per iteration. In fact, it can work for every more types of loop since it only has the weaker requirement that the unconditional work cannot depend on the conditional work from a previous iteration, but conditional work can still depend on prior conditional work since that happens in-order.

This approach is less efficient in the case that the conditional and unconditional parts share significant per element work: e.g., a long calculation shared by both parts, since you'd now have to calculate this twice. You could perhaps store the result of the shared part for consumption during post processing, but you are now eating into your gains. On a machine with many registers you could unroll a lot and use registers to communicate between the main and secondary loops.

I'm not sure this is the best software solution, but it's the fastest I've come up with for loops of this type (which arise somewhat frequently in practice).
< Previous Post in ThreadNext Post in Thread >
TopicPosted ByDate
Independent micro threadsBrett2018/12/30 01:55 PM
  Independent micro threadsTravis Downs2018/12/30 04:18 PM
    Independent micro threadsBrett2018/12/30 07:16 PM
      Independent micro threadsTravis Downs2018/12/30 07:34 PM
        Independent micro threadsBrett2018/12/30 07:48 PM
          Independent micro threadsTravis Downs2018/12/30 09:06 PM
            Independent micro threadsBrett2018/12/30 10:57 PM
              Independent micro threadsTravis Downs2018/12/31 12:42 AM
                Independent micro threadsBrett2019/01/01 07:02 PM
                  Independent micro threadsMichael S2019/01/02 02:01 AM
                    Independent micro threadsMaynard Handley2019/01/02 03:29 PM
              Independent micro threadsMontaray Jack2019/01/01 02:12 AM
  Independent micro threadsanon2018/12/30 04:34 PM
  Independent micro threadsPaul A. Clayton2018/12/30 05:15 PM
  Independent micro threadsDavid Hess2018/12/30 06:47 PM
    Independent micro threadsDomaldel2018/12/30 07:06 PM
      Independent micro threadsDavid Hess2018/12/30 07:26 PM
        Independent micro threadsDoug S2018/12/31 10:26 AM
          Independent micro threadsDavid Hess2018/12/31 09:32 PM
            Independent micro threadsDoug S2019/01/01 12:40 AM
              Independent micro threadsDavid Hess2019/01/01 11:41 AM
            Overcomming thermal limits of a high dencity 3D arcitecture (Formerly "Independent micro threads")Domaldel2019/01/01 12:40 AM
              Overcomming thermal limits of a high dencity 3D arcitecture (Formerly "Independent micro threads")Domaldel2019/01/01 12:44 AM
                Overcomming thermal limits of a high dencity 3D arcitecture (Formerly "Independent micro threads")Domaldel2019/01/01 12:49 AM
                  Overcomming thermal limits of a high dencity 3D arcitecture (Formerly "Independent micro threads")Domaldel2019/01/01 12:51 AM
              Overcomming thermal limits of a high dencity 3D arcitecture (Formerly "Independent micro threads")Simon Farnsworth2019/01/01 06:05 AM
                Overcomming thermal limits of a high dencity 3D arcitecture (Formerly "Independent micro threads")Domaldel2019/01/01 08:01 AM
                Overcomming thermal limits of a high dencity 3D arcitecture (Formerly "Independent micro threads")Maynard Handley2019/01/01 01:17 PM
                  Taking things to extremes.Domaldel2019/01/01 05:44 PM
                    Yes, I know, the forum is named *Real* World Tech, but I'm thinking that perhapsDomaldel2019/01/01 05:52 PM
                      Yes, I know, the forum is named *Real* World Tech, but I'm thinking that perhapsMontaray Jack2019/01/02 07:26 AM
                        Yes, I know, the forum is named *Real* World Tech, but I'm thinking that perhapsMontaray Jack2019/01/02 08:21 AM
                    Taking things to extremes.Maynard Handley2019/01/01 06:55 PM
                    Taking things to extremes.Kevin G2019/01/04 08:57 AM
              Overcomming thermal limits of a high dencity 3D arcitecture (Formerly "Independent micro threads")David Hess2019/01/01 11:36 AM
    Independent micro threadsTravis Downs2018/12/30 07:38 PM
    Independent micro threadsBrett2018/12/30 07:41 PM
  Independent micro threadsanon2018/12/30 08:20 PM
    Independent micro threadsBrett2018/12/30 08:51 PM
      Independent micro threadsTravis Downs2018/12/30 09:48 PM
        Mill and Independent micro threadsBrett2019/01/01 07:39 PM
          No. Mill does not get the hit because it does not get the benefit even when correctly predicted.Heikki Kultala2019/01/02 12:29 AM
            No. Mill does not get the hit because it does not get the benefit even when correctly predicted.Brett2019/01/02 01:15 AM
              No. Mill does not get the hit because it does not get the benefit even when correctly predicted.Heikki Kultala2019/01/02 02:22 AM
                No. Mill does not get the hit because it does not get the benefit even when correctly predicted.Brett2019/01/03 01:13 AM
                  "Leaf branch" is not a commonly used termHeikki Kultala2019/01/03 03:48 AM
                    "Leaf branch" is not a commonly used termBrett2019/01/03 04:35 AM
                      You lack parallelism than OoOE givesHeikki Kultala2019/01/03 07:38 AM
                        You lack parallelism than OoOE givesBrett2019/01/04 02:41 AM
                          You lack parallelism than OoOE givesBrett2019/01/04 04:10 PM
                            You lack parallelism than OoOE givesBrett2019/01/05 08:29 PM
                              Mill speculates, more parallelism than OoOE givesBrett2019/01/05 08:31 PM
                                Mill *is* a speculationEric Bron2019/01/06 05:04 AM
                                  Mill *is* a speculationMichael S2019/01/06 05:53 AM
                                    Mill *is* a speculationBrett2019/01/06 09:03 PM
                                  Mill *is* a speculationjuanrga2019/01/06 06:10 AM
                                    probably ~2 (NT)Michael S2019/01/06 06:51 AM
                                  Mill *is* a speculationBrett2019/01/06 01:18 PM
                                    Mill *is* a speculationEric Bron2019/01/06 03:36 PM
                                      Mill *is* a speculationBrett2019/01/06 08:47 PM
                                        Mill *is* a speculationJacob Marley2019/01/06 10:29 PM
                                          Mill *is* a speculationBrett2019/01/07 04:24 AM
                                            Mill *is* a speculationMichael S2019/01/07 05:23 AM
                                            Mill *is* a speculationEric Bron2019/01/07 05:36 AM
                                              Mill *is* a speculationBrett2019/01/07 03:40 PM
                                                Mill *is* a speculationEric Bron2019/01/07 05:32 PM
                                            Mill is something you don't understandHeikki Kultala2019/01/08 04:19 AM
                                              Mill is something you don't understandMichael S2019/01/08 07:44 AM
                                                Itanium and static vs dynamicHeikki Kultala2019/01/09 03:14 AM
                                                  Itanium and static vs dynamicPaul A. Clayton2019/01/09 08:51 AM
                                        Mill *is* a speculationEric Bron2019/01/07 05:27 AM
                                          Mill *is* a speculationEric Bron2019/01/07 06:23 AM
                                      Mill *is* a speculationanon2019/01/07 06:24 AM
                                        Mill *is* a speculationEric Bron2019/01/07 06:52 AM
                                          Mill *is* a speculationanon2019/01/07 08:36 AM
                                            Mill *is* a speculationEric Bron2019/01/07 09:20 AM
                                        Mill *is* a speculationjuanrga2019/01/07 10:22 AM
                                          Mill *is* a speculationanon2019/01/07 01:16 PM
                                        Mill *is* a speculationanon2019/01/07 09:46 PM
                                          Mill *is* a speculationanon2019/01/08 01:56 AM
                                            Mill *is* a speculationanon2019/01/08 03:39 AM
                                              Mill *is* a speculationMichael S2019/01/08 03:52 AM
                                                Mill *is* a speculationanon2019/01/08 10:10 PM
                                                  Wasted width not wasted work.Brett2019/01/09 11:44 AM
                                                    No such thing was declared. (NT)anon2019/01/09 03:41 PM
                                                    Very simple test for new uarch ideassomeone2019/01/10 07:03 AM
                                                      Very simple test for new uarch ideasdmcq2019/01/10 07:21 AM
                                                        Very simple test for new uarch ideasDoug S2019/01/10 10:01 AM
                                                          Very simple test for new uarch ideasDan Fay2019/01/10 01:13 PM
                                                      Very simple test for new uarch ideasanonymous22019/01/10 11:03 AM
                                                        Very simple test for new uarch ideasAlberto2019/01/10 11:32 AM
                                                      Very simple test for new uarch ideasEtienne2019/01/11 03:03 AM
                                                        Very simple test for new uarch ideasFoo_2019/01/11 04:31 AM
                                                          Very simple test for new uarch ideasEtienne2019/01/11 05:51 AM
                                                            Very simple test for new uarch ideasFoo_2019/01/11 05:53 AM
                                                              Very simple test for new uarch ideasdmcq2019/01/11 06:08 AM
                                                              Very simple test for new uarch ideasEtienne2019/01/11 06:13 AM
                                                                Very simple test for new uarch ideasFoo_2019/01/11 06:54 AM
                                                                  Very simple test for new uarch ideasEtienne2019/01/11 07:32 AM
                                                                    Very simple test for new uarch ideasBrett2019/01/11 10:25 AM
                                                                      Very simple test for new uarch ideasMegol2019/01/12 06:29 AM
                                                                        Very simple test for new uarch ideasMichael S2019/01/12 09:21 AM
                                                                          Word salad AI fundamentaliy brokenBrett2019/01/12 01:59 PM
                                                                          Very simple test for new uarch ideasMegol2019/01/13 11:51 AM
                                              Mill *is* a speculationanon2019/01/08 08:50 AM
                                                Mill *is* a speculationEric Bron2019/01/08 09:03 AM
                                                  Mill *is* a speculationanon2019/01/08 09:21 AM
                      "Leaf branch" is not a commonly used termMichael S2019/01/03 07:57 AM
                        "Leaf branch" is not a commonly used termBrett2019/01/04 03:29 AM
                  Calls are not needed for speculation for mill if there are no side effect,and dont help if there areHeikki Kultala2019/01/08 04:28 AM
              No. Mill does not get the hit because it does not get the benefit even when correctly predicted.anon2019/01/02 03:05 AM
              No. Mill does not get the hit because it does not get the benefit even when correctly predicted.Doug S2019/01/02 11:38 AM
                No. Mill does not get the hit because it does not get the benefit even when correctly predicted.rwessel2019/01/02 05:53 PM
                  No. Mill does not get the hit because it does not get the benefit even when correctly predicted.anon2019/01/02 08:56 PM
                    itanicBrett2019/01/03 12:41 AM
                      itanicanon2019/01/03 03:12 AM
                      itanicDavid Hess2019/01/03 08:06 AM
                    No. Mill does not get the hit because it does not get the benefit even when correctly predicted.rwessel2019/01/03 09:18 AM
                      No. Mill does not get the hit because it does not get the benefit even when correctly predicted.anon2019/01/04 05:25 AM
                    Itanium could have been RISC or CISC - same outcomesomeone2019/01/04 07:45 AM
                      Itanium could have been RISC or CISC - same outcomeDoug S2019/01/04 12:39 PM
                        Itanium could have been RISC or CISC - same outcomeJan Olšan2019/01/04 01:58 PM
                          "fluffyRISC" has a namevvid2019/01/04 03:48 PM
                        Itanium could have been RISC or CISC - same outcomeBrett2019/01/04 03:43 PM
                      Itanium could have been RISC or CISC - same outcomeanonymou52019/01/04 12:41 PM
                  No. Mill does not get the hit because it does not get the benefit even when correctly predicted.David Hess2019/01/03 08:15 AM
                No. Mill does not get the hit because it does not get the benefit even when correctly predicted.Maynard Handley2019/01/03 12:24 PM
                  No. Mill does not get the hit because it does not get the benefit even when correctly predicted.Maynard Handley2019/01/03 12:27 PM
                    No. Mill does not get the hit because it does not get the benefit even when correctly predicted.dmcq2019/01/04 01:59 AM
                  EPIC target marketsFoo_2019/01/04 06:29 AM
                    EPIC target marketsDoug S2019/01/04 12:42 PM
                      Lack of future visionDoug S2019/01/04 12:57 PM
                        Lack of future visionBrett2019/01/04 02:59 PM
                          Lack of future visionDoug S2019/01/04 04:25 PM
                            Lack of future visionBrett2019/01/04 05:18 PM
                              Lack of future visionDoug S2019/01/05 12:47 AM
                                Lack of future visionBrett2019/01/05 02:06 PM
                                  Lack of future visiondmcq2019/01/05 02:22 PM
                                  Lack of future visionanon2019/01/05 03:01 PM
                                    Lack of future visionMichael S2019/01/05 04:18 PM
                                      Lack of future visionanon2019/01/05 06:14 PM
                                        Lack of future visionMichael S2019/01/06 02:01 AM
                                          Lack of future visionanon2019/01/06 03:23 AM
                                          Mitch Alsup's MY66000 uses IF-like predication (I think) (NT)Paul A. Clayton2019/01/06 04:54 PM
                                            ??? (NT)Michael S2019/01/07 05:25 AM
                                            88K ? (NT)anonymous22019/01/07 04:20 PM
                                          Modestly expanded response: MY66000 predicate shadowPaul A. Clayton2019/01/07 11:53 AM
                      Thanks for the correction (NT)Foo_2019/01/04 04:31 PM
              No. Mill does not get the hit because it does not get the benefit even when correctly predicted.sdrc2019/01/04 07:36 AM
          Mill and Independent micro threadsMichael S2019/01/02 02:32 AM
Reply to this Topic
Name:
Email:
Topic:
Body: No Text
How do you spell green?