Or use a PLB

By: anon2 (anon.delete@this.anon.com), September 22, 2021 4:09 pm
Room: Moderated Discussions
Linus Torvalds (torvalds.delete@this.linux-foundation.org) on September 22, 2021 11:50 am wrote:
> sr (nobody.delete@this.nowhere.com) on September 22, 2021 6:55 am wrote:
> >
> > Why would segments need different page tables? What would
> > be point of doing so instead of different processes?
> A segment (or whatever you want to call it: as mentioned, people don't like some of the historical connotations,
> and depending on which part of the problem you care about you might want to call it a "capability pointer")
> is much more interesting if it gives you access to other peoples address spaces.

PowerPC does this. Maybe it's good for a special case of database with big shared memory buffer cache segment that is mapped by a lot of processes. Aside from that, how interesting is it really?

> If it only partitions up an existing address space - like the x86 segments did - it
> means that segments are no good for data sharing. You can only share data if you share
> the page tables, so you don't actually get any advantage from using segments.
> End result: all sane operating systems ended up saying "we'll just make segments the
> maximum size, and you can just use a flat address space to access all memory".
> IOW, The i386 segments fundamentally didn't really add any functionality,
> they only made it more inconvenient to access memory.
> The only time segments are useful is if they give you added capabilities. And no, "limiting access"
> is not really an added capability from a user standpoint, despite how many computer architects
> want to do it. You need to give people something, and in that context you can then add permissions
> as a part of the parcel. Not just say "this adds no other value than limit you".
> So in the original 8086, people used segments - not because they liked them,
> but because segments was how you could access more than 64kB of memory.
> In the 80286, people used segments - again not because they liked them, but because they could (repeat after
> me) access more than 64kB of memory, but also because they could use them to handle fragmented memory (the
> 286 segments were virtual addresses, not just extra phyiscal bits) and to implement security in the OS.
> In the 80386 world? Nobody sane uses segments, because you can access the full address space
> without them, and you can do better security without them too. Paging is just so superior. Segments
> don't really add anything. They only make for problems, they don't make for solutions.
> (Yeah, there is one special case: people use segments to get access to some thread-local storage.
> So honesty in advertising - segments are still used even in the 64-bit world, but they aren't
> actually used "as segments" - they are used pretty much purely as a thread-local base address
> pointer, and the "segment" use is really just a convenient special addressing mode).
> But segments could be used to add something. You could use segments as a way to
> reach into another process' address space, and use them for controlled cross-process
> communication. Or on a kernel or VMM level, you could use segments as the way to access
> user memory or the virtual guest memory, or things like memory-mapped IO.
> IOW, you could use segments to get a bigger address space, like they did in 8086.
> That's not how 80386+ segments work, but other architectures have that kind of functionality (although they
> tend to be called "address spaces", not segments), where instead of having segment overrides like x86 has,
> they have address space bits in the instructions to do special loads from other memory domains.
> Segments could do things like that. Would it be a good idea? Probably not - history really hasn't
> been gentle to the idea of having complicated memory indirection, and segments very much are just
> an "added indirection and complication". But things like that could at least make segments part
> of the solution rather than being part of the problem, like they mostly are now.
> But back when segments very much were part of the solution, people pretty much universally hated
> them. They hated them on 8086, they hated them even more on 80286. And they weren't good in
> any other architecture either, it's just that at least on x86 they were successful.
> Linus

< Previous Post in ThreadNext Post in Thread >
TopicPosted ByDate
POWER10 SAP SD benchmarkanon22021/09/06 03:36 PM
  POWER10 SAP SD benchmarkDaniel B2021/09/07 02:31 AM
    "Cores" (and SPEC)Rayla2021/09/07 07:51 AM
      "Cores" (and SPEC)anon2021/09/07 03:56 PM
  POWER10 SAP SD benchmarkAnon2021/09/07 03:24 PM
    POWER10 SAP SD benchmarkAnon2021/09/07 03:27 PM
  Virtually tagged L1-cachessr2021/09/08 05:49 AM
    Virtually tagged L1-cachesdmcq2021/09/08 08:22 AM
      Virtually tagged L1-cachessr2021/09/08 08:56 AM
      Virtually tagged L1-cachesHugo Décharnes2021/09/08 08:58 AM
        Virtually tagged L1-cachessr2021/09/08 10:09 AM
          Virtually tagged L1-cachesHugo Décharnes2021/09/08 10:46 AM
            Virtually tagged L1-cachessr2021/09/08 11:35 AM
              Virtually tagged L1-cachesHugo Décharnes2021/09/08 12:23 PM
                Virtually tagged L1-cachessr2021/09/08 12:40 PM
                  Virtually tagged L1-cachesanon2021/09/09 03:16 AM
                    Virtually tagged L1-cachesKonrad Schwarz2021/09/10 05:19 AM
                      Virtually tagged L1-cachesHugo Décharnes2021/09/10 06:59 AM
                        Virtually tagged L1-cachesanon2021/09/14 03:17 AM
                          Virtually tagged L1-cachesdmcq2021/09/14 09:34 AM
                            Or use a PLB (NT)Paul A. Clayton2021/09/14 09:45 AM
                              Or use a PLBLinus Torvalds2021/09/14 03:27 PM
                                Or use a PLBanon2021/09/15 12:15 AM
                                  Or use a PLBMichael S2021/09/15 03:21 AM
                                    Or use a PLBdmcq2021/09/15 03:42 PM
                                      Or use a PLBKonrad Schwarz2021/09/16 04:24 AM
                                        Or use a PLBMichael S2021/09/16 10:13 AM
                                          Or use a PLB---2021/09/16 01:02 PM
                                  PLB referencePaul A. Clayton2021/09/18 02:35 PM
                                    PLB referenceMichael S2021/09/18 04:14 PM
                                      Demand paging/translation orthogonalPaul A. Clayton2021/09/19 07:33 AM
                                        Demand paging/translation orthogonalMichael S2021/09/19 09:10 AM
                                      PLB referenceCarson2021/09/20 10:19 PM
                                    PLB referencesr2021/09/20 06:02 AM
                                      PLB referenceMichael S2021/09/20 07:03 AM
                                        PLB referenceLinus Torvalds2021/09/20 12:10 PM
                                  Or use a PLBsr2021/09/20 04:32 AM
                              Or use a PLBsr2021/09/21 09:36 AM
                                Or use a PLBLinus Torvalds2021/09/21 10:04 AM
                                  Or use a PLBsr2021/09/21 10:48 AM
                                    Or use a PLBLinus Torvalds2021/09/21 01:55 PM
                                      Or use a PLBsr2021/09/22 06:55 AM
                                        Or use a PLBrwessel2021/09/22 07:09 AM
                                        Or use a PLBLinus Torvalds2021/09/22 11:50 AM
                                          Or use a PLBsr2021/09/22 01:00 PM
                                            Or use a PLBdmcq2021/09/22 04:07 PM
                                            Or use a PLBEtienne Lorrain2021/09/23 08:50 AM
                                          Or use a PLBanon22021/09/22 04:09 PM
                                            Or use a PLBdmcq2021/09/23 02:35 AM
                                          Or use a PLB2021/09/23 09:37 AM
                                            Or use a PLBLinus Torvalds2021/09/23 12:01 PM
                                              Or use a PLBgpd2021/09/24 03:59 AM
                                                Or use a PLBLinus Torvalds2021/09/24 10:45 AM
                                                  Or use a PLBdmcq2021/09/24 12:43 PM
                                                  Or use a PLBsr2021/09/25 10:19 AM
                                                    Or use a PLBLinus Torvalds2021/09/25 10:44 AM
                                                      Or use a PLBsr2021/09/25 11:11 AM
                                                        Or use a PLBLinus Torvalds2021/09/25 11:31 AM
                                                          Or use a PLBsr2021/09/25 11:52 AM
                                                            Or use a PLBLinus Torvalds2021/09/25 12:05 PM
                                                              Or use a PLBsr2021/09/25 12:23 PM
                                                                Or use a PLBrwessel2021/09/25 03:29 PM
                                                                  Or use a PLBsr2021/10/01 12:22 AM
                                                                    Or use a PLBrwessel2021/10/01 06:19 AM
                                                                      Or use a PLBDavid Hess2021/10/01 10:35 AM
                                                                        Or use a PLBrwessel2021/10/02 04:47 AM
                                                                      Or use a PLBsr2021/10/02 11:16 AM
                                                                        Or use a PLBrwessel2021/10/02 11:53 AM
                                                          Or use a PLBLinus Torvalds2021/09/25 11:57 AM
                                                            Or use a PLBsr2021/09/25 12:07 PM
                                                              Or use a PLBLinus Torvalds2021/09/25 12:21 PM
                                                                Or use a PLBsr2021/09/25 12:40 PM
                                                                  Or use a PLBnksingh2021/09/27 09:07 AM
                                                          Or use a PLB2021/09/27 09:02 AM
                                                            Or use a PLBLinus Torvalds2021/09/27 10:20 AM
                                                              Or use a PLBLinus Torvalds2021/09/27 12:58 PM
                                                                Or use a PLBdmcq2021/09/28 10:59 AM
                                              Or use a PLBsr2021/09/25 10:34 AM
                                                Or use a PLBrwessel2021/09/25 03:44 PM
                                                  Or use a PLBsr2021/10/01 01:04 AM
                                                    Or use a PLBrwessel2021/10/01 06:33 AM
                                                      I386 segmentation highlightssr2021/10/04 07:53 AM
                                                        I386 segmentation highlightsAdrian2021/10/04 09:53 AM
                                                          I386 segmentation highlightssr2021/10/04 10:19 AM
                                                        I386 segmentation highlightsrwessel2021/10/04 04:57 PM
                                                          I386 segmentation highlightssr2021/10/05 11:16 AM
                                                            I386 segmentation highlightsMichael S2021/10/05 12:27 PM
                                                            I386 segmentation highlightsrwessel2021/10/05 04:20 PM
                                                Or use a PLBJohnG2021/09/25 10:18 PM
                                              Or use a PLB2021/09/27 07:37 AM
                                                Or use a PLBHeikki Kultala2021/09/28 03:53 AM
                                                  Or use a PLBrwessel2021/09/28 07:29 AM
                                        Or use a PLBDavid Hess2021/09/23 06:00 PM
                                          Or use a PLBAdrian2021/09/24 01:21 AM
                                            Or use a PLBdmcq2021/09/25 12:41 PM
                                        Or use a PLBblaine2021/09/26 11:19 PM
                                          Or use a PLBDavid Hess2021/09/27 11:35 AM
                                            Or use a PLBblaine2021/09/27 05:19 PM
                                            Or use a PLBAdrian2021/09/27 10:40 PM
                                              Or use a PLBAdrian2021/09/27 10:59 PM
                                                Or use a PLBdmcq2021/09/28 07:45 AM
                                              Or use a PLBrwessel2021/09/28 07:45 AM
                                              Or use a PLBDavid Hess2021/09/28 12:50 PM
                                                Or use a PLBEtienne Lorrain2021/09/30 01:25 AM
                                                  Or use a PLBDavid Hess2021/10/01 10:40 AM
                                  MMU privilegessr2021/09/21 11:07 AM
                                    MMU privilegesLinus Torvalds2021/09/21 01:49 PM
                            Virtually tagged L1-cachesKonrad Schwarz2021/09/16 04:18 AM
                          Virtually tagged L1-cachesCarson2021/09/16 01:12 PM
                            Virtually tagged L1-cachesanon22021/09/16 05:16 PM
                              Virtually tagged L1-cachesrwessel2021/09/16 06:29 PM
                          Virtually tagged L1-cachessr2021/09/20 04:20 AM
              Virtually tagged L1-caches---2021/09/08 02:28 PM
                Virtually tagged L1-cachesanonymou52021/09/08 08:28 PM
                  Virtually tagged L1-cachesanonymou52021/09/08 08:34 PM
                  Virtually tagged L1-caches---2021/09/09 10:14 AM
                    Virtually tagged L1-cachesanonymou52021/09/09 10:44 PM
                Multi-threading?David Kanter2021/09/09 09:32 PM
                  Multi-threading?---2021/09/10 09:19 AM
                Virtually tagged L1-cachessr2021/09/11 01:19 AM
                Virtually tagged L1-cachessr2021/09/11 01:36 AM
                  Virtually tagged L1-caches---2021/09/11 09:53 AM
                    Virtually tagged L1-cachessr2021/09/12 12:43 AM
                      Virtually tagged L1-cachesLinus Torvalds2021/09/12 11:10 AM
                        Virtually tagged L1-cachessr2021/09/12 11:57 AM
                          Virtually tagged L1-cachesdmcq2021/09/13 08:31 AM
                            Virtually tagged L1-cachessr2021/09/20 04:11 AM
            Virtually tagged L1-cachessr2021/09/11 02:49 AM
      Virtually tagged L1-cachesLinus Torvalds2021/09/08 12:34 PM
        Virtually tagged L1-cachesdmcq2021/09/09 02:46 AM
          Virtually tagged L1-cachesdmcq2021/09/09 02:58 AM
          Virtually tagged L1-cachessr2021/09/11 01:29 AM
            Virtually tagged L1-cachesdmcq2021/09/11 08:59 AM
              Virtually tagged L1-cachessr2021/09/12 12:57 AM
                Virtually tagged L1-cachesdmcq2021/09/12 08:44 AM
                  Virtually tagged L1-cachessr2021/09/12 09:48 AM
                    Virtually tagged L1-cachesdmcq2021/09/12 01:22 PM
                      Virtually tagged L1-cachessr2021/09/20 04:40 AM
    Where do you see this information? (NT)anon22021/09/09 02:45 AM
      Where do you see this information?sr2021/09/11 01:40 AM
        Where do you see this information?anon22021/09/11 01:53 AM
          Where do you see this information?sr2021/09/11 02:08 AM
            Thank you (NT)anon22021/09/11 04:31 PM
Reply to this Topic
Body: No Text
How do you spell avocado?