By: dmcq (dmcq.delete@this.fano.co.uk), September 9, 2021 2:58 am
Room: Moderated Discussions
dmcq (dmcq.delete@this.fano.co.uk) on September 9, 2021 2:46 am wrote:
> Linus Torvalds (torvalds.delete@this.linux-foundation.org) on September 8, 2021 12:34 pm wrote:
> > dmcq (dmcq.delete@this.fano.co.uk) on September 8, 2021 8:22 am wrote:
> > > sr (nobody.delete@this.nowhere.com) on September 8, 2021 5:49 am wrote:
> > > > So Power10 is using virtually tagged L1 for both instruction and
> > > > data caches and it does address translation only after L1-miss.
> > >
> > > I know the Linux people say the sky will fall if one does that and it
> > > would involve a bit of trickery but it's certainly what I'd go for.
> >
> > Oh, we don't care about implementation of the L1 caches, and they can use
> > whatever indexing and tags they want as long as they aren't stupid.
> >
> > So it's the historical pure virtually tagged caches that are bad, and that used to be
> > reasonably common. They don't exist any more (apart from possibly some broken toy core
> > used for educational purposes - mostly presumably as a "don't do this" education).
> >
> > People learnt their lesson.
> >
> > You can do entirely virtual L1 lookups if you just have all the pieces in place to avoid the bad semantics
> > that the traditional model had (ie no alias issues, proper
> > writeback, yadda yadda). And you can set up those
> > things at cache fill time, rather than at lookup time (although it is likely a combination of the two).
> >
> > The historical problems are about exposing aliases as lack of coherence, and the crazy performance
> > issues you had with direct-mapped or write-through caches. None of them are fundamental to virtual
> > indexing per se, they are just fundamental to overly simplistic and badly done virtual indexing.
> >
> > There is no way that POWER10 uses the traditional broken purely virtual cache model. It's
> > against the POWER cache coherency architectural guarantees. So they'll have the pieces in
> > place to make them act all coherent in hardware, are are multi-way associative etc etc.
> >
> > (And no, I have no inside knowledge, so the above is based
> > purely on "I seriously doubt some IBM CPU engineer
> > went on a crazy drug-induced architectural rampage and screwed up the latest implementation completely").
> >
> > The problem with the old-school virtual caches was that in order to
> > get cache coherence, you needed to jump through hoops in software.
> >
> > And hey, it's not like old-school physically indexed caches were great either. You can
> > most certainly screw that up too. Make it direct-mapped, and it's hot garbage regardless
> > of how many physical index bits you have, although it's slightly less painfully so.
> >
> > I don't really expect to ever see that kind of a train wreck again.
> >
> > Linus
>
> Yes agree with all that. And by trickery I didn't mean anything too amazing. The problem is to avoid having
> two copies of the same data in L1 because of aliasing. If the L2 cache holds an index into the L1 cache whenever
> data is copied into L1 then it shouldn't be to difficult to evict the old copy before putting in the new. It
> means the data goes ping pong in the L1 cache if one uses aliases at the same time. Probably one would use
> process id as well attached to the virtual address to avoid using the mechanism too much. With this one can
> abort the TLB lookup for L2 as soon as there is a hit in L1, it's never needed for the L1 lookup.
Though I'd still store the physical address from the translation in L1 to help with coherency as things could be popping in and out of L1, one can't be certain there aren't aliases in the pipeline even if they aren't in the cache. Unless of course you block the pipeline until the condition goes away which might also work.
> Linus Torvalds (torvalds.delete@this.linux-foundation.org) on September 8, 2021 12:34 pm wrote:
> > dmcq (dmcq.delete@this.fano.co.uk) on September 8, 2021 8:22 am wrote:
> > > sr (nobody.delete@this.nowhere.com) on September 8, 2021 5:49 am wrote:
> > > > So Power10 is using virtually tagged L1 for both instruction and
> > > > data caches and it does address translation only after L1-miss.
> > >
> > > I know the Linux people say the sky will fall if one does that and it
> > > would involve a bit of trickery but it's certainly what I'd go for.
> >
> > Oh, we don't care about implementation of the L1 caches, and they can use
> > whatever indexing and tags they want as long as they aren't stupid.
> >
> > So it's the historical pure virtually tagged caches that are bad, and that used to be
> > reasonably common. They don't exist any more (apart from possibly some broken toy core
> > used for educational purposes - mostly presumably as a "don't do this" education).
> >
> > People learnt their lesson.
> >
> > You can do entirely virtual L1 lookups if you just have all the pieces in place to avoid the bad semantics
> > that the traditional model had (ie no alias issues, proper
> > writeback, yadda yadda). And you can set up those
> > things at cache fill time, rather than at lookup time (although it is likely a combination of the two).
> >
> > The historical problems are about exposing aliases as lack of coherence, and the crazy performance
> > issues you had with direct-mapped or write-through caches. None of them are fundamental to virtual
> > indexing per se, they are just fundamental to overly simplistic and badly done virtual indexing.
> >
> > There is no way that POWER10 uses the traditional broken purely virtual cache model. It's
> > against the POWER cache coherency architectural guarantees. So they'll have the pieces in
> > place to make them act all coherent in hardware, are are multi-way associative etc etc.
> >
> > (And no, I have no inside knowledge, so the above is based
> > purely on "I seriously doubt some IBM CPU engineer
> > went on a crazy drug-induced architectural rampage and screwed up the latest implementation completely").
> >
> > The problem with the old-school virtual caches was that in order to
> > get cache coherence, you needed to jump through hoops in software.
> >
> > And hey, it's not like old-school physically indexed caches were great either. You can
> > most certainly screw that up too. Make it direct-mapped, and it's hot garbage regardless
> > of how many physical index bits you have, although it's slightly less painfully so.
> >
> > I don't really expect to ever see that kind of a train wreck again.
> >
> > Linus
>
> Yes agree with all that. And by trickery I didn't mean anything too amazing. The problem is to avoid having
> two copies of the same data in L1 because of aliasing. If the L2 cache holds an index into the L1 cache whenever
> data is copied into L1 then it shouldn't be to difficult to evict the old copy before putting in the new. It
> means the data goes ping pong in the L1 cache if one uses aliases at the same time. Probably one would use
> process id as well attached to the virtual address to avoid using the mechanism too much. With this one can
> abort the TLB lookup for L2 as soon as there is a hit in L1, it's never needed for the L1 lookup.
Though I'd still store the physical address from the translation in L1 to help with coherency as things could be popping in and out of L1, one can't be certain there aren't aliases in the pipeline even if they aren't in the cache. Unless of course you block the pipeline until the condition goes away which might also work.
Topic | Posted By | Date |
---|---|---|
POWER10 SAP SD benchmark | anon2 | 2021/09/06 03:36 PM |
POWER10 SAP SD benchmark | Daniel B | 2021/09/07 02:31 AM |
"Cores" (and SPEC) | Rayla | 2021/09/07 07:51 AM |
"Cores" (and SPEC) | anon | 2021/09/07 03:56 PM |
POWER10 SAP SD benchmark | Anon | 2021/09/07 03:24 PM |
POWER10 SAP SD benchmark | Anon | 2021/09/07 03:27 PM |
Virtually tagged L1-caches | sr | 2021/09/08 05:49 AM |
Virtually tagged L1-caches | dmcq | 2021/09/08 08:22 AM |
Virtually tagged L1-caches | sr | 2021/09/08 08:56 AM |
Virtually tagged L1-caches | Hugo Décharnes | 2021/09/08 08:58 AM |
Virtually tagged L1-caches | sr | 2021/09/08 10:09 AM |
Virtually tagged L1-caches | Hugo Décharnes | 2021/09/08 10:46 AM |
Virtually tagged L1-caches | sr | 2021/09/08 11:35 AM |
Virtually tagged L1-caches | Hugo Décharnes | 2021/09/08 12:23 PM |
Virtually tagged L1-caches | sr | 2021/09/08 12:40 PM |
Virtually tagged L1-caches | anon | 2021/09/09 03:16 AM |
Virtually tagged L1-caches | Konrad Schwarz | 2021/09/10 05:19 AM |
Virtually tagged L1-caches | Hugo Décharnes | 2021/09/10 06:59 AM |
Virtually tagged L1-caches | anon | 2021/09/14 03:17 AM |
Virtually tagged L1-caches | dmcq | 2021/09/14 09:34 AM |
Or use a PLB (NT) | Paul A. Clayton | 2021/09/14 09:45 AM |
Or use a PLB | Linus Torvalds | 2021/09/14 03:27 PM |
Or use a PLB | anon | 2021/09/15 12:15 AM |
Or use a PLB | Michael S | 2021/09/15 03:21 AM |
Or use a PLB | dmcq | 2021/09/15 03:42 PM |
Or use a PLB | Konrad Schwarz | 2021/09/16 04:24 AM |
Or use a PLB | Michael S | 2021/09/16 10:13 AM |
Or use a PLB | --- | 2021/09/16 01:02 PM |
PLB reference | Paul A. Clayton | 2021/09/18 02:35 PM |
PLB reference | Michael S | 2021/09/18 04:14 PM |
Demand paging/translation orthogonal | Paul A. Clayton | 2021/09/19 07:33 AM |
Demand paging/translation orthogonal | Michael S | 2021/09/19 09:10 AM |
PLB reference | Carson | 2021/09/20 10:19 PM |
PLB reference | sr | 2021/09/20 06:02 AM |
PLB reference | Michael S | 2021/09/20 07:03 AM |
PLB reference | Linus Torvalds | 2021/09/20 12:10 PM |
Or use a PLB | sr | 2021/09/20 04:32 AM |
Or use a PLB | sr | 2021/09/21 09:36 AM |
Or use a PLB | Linus Torvalds | 2021/09/21 10:04 AM |
Or use a PLB | sr | 2021/09/21 10:48 AM |
Or use a PLB | Linus Torvalds | 2021/09/21 01:55 PM |
Or use a PLB | sr | 2021/09/22 06:55 AM |
Or use a PLB | rwessel | 2021/09/22 07:09 AM |
Or use a PLB | Linus Torvalds | 2021/09/22 11:50 AM |
Or use a PLB | sr | 2021/09/22 01:00 PM |
Or use a PLB | dmcq | 2021/09/22 04:07 PM |
Or use a PLB | Etienne Lorrain | 2021/09/23 08:50 AM |
Or use a PLB | anon2 | 2021/09/22 04:09 PM |
Or use a PLB | dmcq | 2021/09/23 02:35 AM |
Or use a PLB | ⚛ | 2021/09/23 09:37 AM |
Or use a PLB | Linus Torvalds | 2021/09/23 12:01 PM |
Or use a PLB | gpd | 2021/09/24 03:59 AM |
Or use a PLB | Linus Torvalds | 2021/09/24 10:45 AM |
Or use a PLB | dmcq | 2021/09/24 12:43 PM |
Or use a PLB | sr | 2021/09/25 10:19 AM |
Or use a PLB | Linus Torvalds | 2021/09/25 10:44 AM |
Or use a PLB | sr | 2021/09/25 11:11 AM |
Or use a PLB | Linus Torvalds | 2021/09/25 11:31 AM |
Or use a PLB | sr | 2021/09/25 11:52 AM |
Or use a PLB | Linus Torvalds | 2021/09/25 12:05 PM |
Or use a PLB | sr | 2021/09/25 12:23 PM |
Or use a PLB | rwessel | 2021/09/25 03:29 PM |
Or use a PLB | sr | 2021/10/01 12:22 AM |
Or use a PLB | rwessel | 2021/10/01 06:19 AM |
Or use a PLB | David Hess | 2021/10/01 10:35 AM |
Or use a PLB | rwessel | 2021/10/02 04:47 AM |
Or use a PLB | sr | 2021/10/02 11:16 AM |
Or use a PLB | rwessel | 2021/10/02 11:53 AM |
Or use a PLB | Linus Torvalds | 2021/09/25 11:57 AM |
Or use a PLB | sr | 2021/09/25 12:07 PM |
Or use a PLB | Linus Torvalds | 2021/09/25 12:21 PM |
Or use a PLB | sr | 2021/09/25 12:40 PM |
Or use a PLB | nksingh | 2021/09/27 09:07 AM |
Or use a PLB | ⚛ | 2021/09/27 09:02 AM |
Or use a PLB | Linus Torvalds | 2021/09/27 10:20 AM |
Or use a PLB | Linus Torvalds | 2021/09/27 12:58 PM |
Or use a PLB | dmcq | 2021/09/28 10:59 AM |
Or use a PLB | sr | 2021/09/25 10:34 AM |
Or use a PLB | rwessel | 2021/09/25 03:44 PM |
Or use a PLB | sr | 2021/10/01 01:04 AM |
Or use a PLB | rwessel | 2021/10/01 06:33 AM |
I386 segmentation highlights | sr | 2021/10/04 07:53 AM |
I386 segmentation highlights | Adrian | 2021/10/04 09:53 AM |
I386 segmentation highlights | sr | 2021/10/04 10:19 AM |
I386 segmentation highlights | rwessel | 2021/10/04 04:57 PM |
I386 segmentation highlights | sr | 2021/10/05 11:16 AM |
I386 segmentation highlights | Michael S | 2021/10/05 12:27 PM |
I386 segmentation highlights | rwessel | 2021/10/05 04:20 PM |
Or use a PLB | JohnG | 2021/09/25 10:18 PM |
Or use a PLB | ⚛ | 2021/09/27 07:37 AM |
Or use a PLB | Heikki Kultala | 2021/09/28 03:53 AM |
Or use a PLB | rwessel | 2021/09/28 07:29 AM |
Or use a PLB | David Hess | 2021/09/23 06:00 PM |
Or use a PLB | Adrian | 2021/09/24 01:21 AM |
Or use a PLB | dmcq | 2021/09/25 12:41 PM |
Or use a PLB | blaine | 2021/09/26 11:19 PM |
Or use a PLB | David Hess | 2021/09/27 11:35 AM |
Or use a PLB | blaine | 2021/09/27 05:19 PM |
Or use a PLB | Adrian | 2021/09/27 10:40 PM |
Or use a PLB | Adrian | 2021/09/27 10:59 PM |
Or use a PLB | dmcq | 2021/09/28 07:45 AM |
Or use a PLB | rwessel | 2021/09/28 07:45 AM |
Or use a PLB | David Hess | 2021/09/28 12:50 PM |
Or use a PLB | Etienne Lorrain | 2021/09/30 01:25 AM |
Or use a PLB | David Hess | 2021/10/01 10:40 AM |
MMU privileges | sr | 2021/09/21 11:07 AM |
MMU privileges | Linus Torvalds | 2021/09/21 01:49 PM |
Virtually tagged L1-caches | Konrad Schwarz | 2021/09/16 04:18 AM |
Virtually tagged L1-caches | Carson | 2021/09/16 01:12 PM |
Virtually tagged L1-caches | anon2 | 2021/09/16 05:16 PM |
Virtually tagged L1-caches | rwessel | 2021/09/16 06:29 PM |
Virtually tagged L1-caches | sr | 2021/09/20 04:20 AM |
Virtually tagged L1-caches | --- | 2021/09/08 02:28 PM |
Virtually tagged L1-caches | anonymou5 | 2021/09/08 08:28 PM |
Virtually tagged L1-caches | anonymou5 | 2021/09/08 08:34 PM |
Virtually tagged L1-caches | --- | 2021/09/09 10:14 AM |
Virtually tagged L1-caches | anonymou5 | 2021/09/09 10:44 PM |
Multi-threading? | David Kanter | 2021/09/09 09:32 PM |
Multi-threading? | --- | 2021/09/10 09:19 AM |
Virtually tagged L1-caches | sr | 2021/09/11 01:19 AM |
Virtually tagged L1-caches | sr | 2021/09/11 01:36 AM |
Virtually tagged L1-caches | --- | 2021/09/11 09:53 AM |
Virtually tagged L1-caches | sr | 2021/09/12 12:43 AM |
Virtually tagged L1-caches | Linus Torvalds | 2021/09/12 11:10 AM |
Virtually tagged L1-caches | sr | 2021/09/12 11:57 AM |
Virtually tagged L1-caches | dmcq | 2021/09/13 08:31 AM |
Virtually tagged L1-caches | sr | 2021/09/20 04:11 AM |
Virtually tagged L1-caches | sr | 2021/09/11 02:49 AM |
Virtually tagged L1-caches | Linus Torvalds | 2021/09/08 12:34 PM |
Virtually tagged L1-caches | dmcq | 2021/09/09 02:46 AM |
Virtually tagged L1-caches | dmcq | 2021/09/09 02:58 AM |
Virtually tagged L1-caches | sr | 2021/09/11 01:29 AM |
Virtually tagged L1-caches | dmcq | 2021/09/11 08:59 AM |
Virtually tagged L1-caches | sr | 2021/09/12 12:57 AM |
Virtually tagged L1-caches | dmcq | 2021/09/12 08:44 AM |
Virtually tagged L1-caches | sr | 2021/09/12 09:48 AM |
Virtually tagged L1-caches | dmcq | 2021/09/12 01:22 PM |
Virtually tagged L1-caches | sr | 2021/09/20 04:40 AM |
Where do you see this information? (NT) | anon2 | 2021/09/09 02:45 AM |
Where do you see this information? | sr | 2021/09/11 01:40 AM |
Where do you see this information? | anon2 | 2021/09/11 01:53 AM |
Where do you see this information? | sr | 2021/09/11 02:08 AM |
Thank you (NT) | anon2 | 2021/09/11 04:31 PM |