Re: [PATCH resend 5/9] MIPS: sync after cacheflush

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Maciej W. Rozycki
Date: Wednesday, October 20, 2010 - 10:26 am

On Wed, 20 Oct 2010, Gleb O. Raiko wrote:


 I'm not sure what you mean: whether the processor will snoop the value to 
read in the store buffer or will it stall until the buffer has drained and 
issue the load on the external bus?

 I can't see the behaviour of uncached loads wrt uncached stores clearly 
documented anywhere for the R4400 processor (DEC used the SC variation, 
BTW).  There's no mention of uncached loads to have SYNC properties.  
Therefore in the context of one or more pending uncached stores I can 
assume one of the three for an uncached load:

1. If the addresses match, then the value loaded is snooped in (retrieved 
   from) the store buffer, no external cycle on the bus is seen.  This is 
   what the R2020 WB did.

2. The load bypasses the stores and therefore reaches the external bus 
   before the stores.  This is what the R3220 MB did and I believe the 
   R2020 WB defaulted to in the case of no address match.

3. The load stalls until the outstanding stores have completed and only 
   then appears on the external bus.

There's no hurt from using SYNC here and its semantics make it clear it 
enforces the case #3 above even if not otherwise guaranteed.  Otherwise I 
think the case #2 would be a reasonable default (i.e. one I'd recommend to 
a processor designer) as draining the store buffer on any uncached load 
whether needed or not is a waste of performance.


 Ah, I could have added it myself ;) -- oddly enough even though the 
driver originated from DEC, they only used/tested it with x86 systems 
apparently, rather than the obvious choice of the Alpha that implemented a 
much, much weaker ordering model that any MIPS chip ever did.

  Maciej
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 2/9] MIPS: Add BMIPS processor types to Kconfig, Kevin Cernekee, (Sat Oct 16, 2:22 pm)
[PATCH 3/9] MIPS: Add BMIPS CP0 register definitions, Kevin Cernekee, (Sat Oct 16, 2:22 pm)
[PATCH 4/9] MIPS: Install handlers for software IRQs, Kevin Cernekee, (Sat Oct 16, 2:22 pm)
[PATCH resend 5/9] MIPS: sync after cacheflush, Kevin Cernekee, (Sat Oct 16, 2:22 pm)
[PATCH v2 resend 7/9] MIPS: Move FIXADDR_TOP into spaces.h, Kevin Cernekee, (Sat Oct 16, 2:22 pm)
[PATCH resend 8/9] MIPS: Honor L2 bypass bit, Kevin Cernekee, (Sat Oct 16, 2:22 pm)
Re: [PATCH 2/9] MIPS: Add BMIPS processor types to Kconfig, Florian Fainelli, (Sun Oct 17, 10:01 am)
Re: [PATCH resend 5/9] MIPS: sync after cacheflush, Shinya Kuribayashi, (Mon Oct 18, 6:44 am)
Re: [PATCH resend 5/9] MIPS: sync after cacheflush, Kevin Cernekee, (Mon Oct 18, 11:34 am)
Re: [PATCH resend 5/9] MIPS: sync after cacheflush, Ralf Baechle, (Mon Oct 18, 12:19 pm)
Re: [PATCH resend 5/9] MIPS: sync after cacheflush, Kevin Cernekee, (Mon Oct 18, 12:41 pm)
Re: [PATCH resend 5/9] MIPS: sync after cacheflush, Ralf Baechle, (Mon Oct 18, 3:50 pm)
Re: [PATCH resend 5/9] MIPS: sync after cacheflush, Shinya Kuribayashi, (Mon Oct 18, 5:03 pm)
Re: [PATCH resend 5/9] MIPS: sync after cacheflush, Maciej W. Rozycki, (Mon Oct 18, 5:45 pm)
Re: [PATCH resend 5/9] MIPS: sync after cacheflush, Kevin Cernekee, (Mon Oct 18, 5:51 pm)
Re: [PATCH resend 5/9] MIPS: sync after cacheflush, Maciej W. Rozycki, (Mon Oct 18, 5:57 pm)
Re: [PATCH resend 5/9] MIPS: sync after cacheflush, Gleb O. Raiko, (Tue Oct 19, 1:54 am)
Re: [PATCH resend 5/9] MIPS: sync after cacheflush, Ralf Baechle, (Tue Oct 19, 2:17 am)
Re: [PATCH resend 5/9] MIPS: sync after cacheflush, Gleb O. Raiko, (Tue Oct 19, 3:15 am)
Re: [PATCH resend 5/9] MIPS: sync after cacheflush, Ralf Baechle, (Tue Oct 19, 5:34 am)
Re: [PATCH resend 5/9] MIPS: sync after cacheflush, Shinya Kuribayashi, (Tue Oct 19, 6:30 am)
Re: [PATCH resend 8/9] MIPS: Honor L2 bypass bit, Ralf Baechle, (Tue Oct 19, 9:16 am)
Re: [PATCH resend 5/9] MIPS: sync after cacheflush, Maciej W. Rozycki, (Tue Oct 19, 1:11 pm)
Re: [PATCH 3/9] MIPS: Add BMIPS CP0 register definitions, Ralf Baechle, (Wed Oct 20, 12:23 am)
Re: [PATCH resend 5/9] MIPS: sync after cacheflush, Gleb O. Raiko, (Wed Oct 20, 1:05 am)
Re: [PATCH resend 5/9] MIPS: sync after cacheflush, Maciej W. Rozycki, (Wed Oct 20, 10:26 am)
Re: [PATCH resend 5/9] MIPS: sync after cacheflush, Gleb O. Raiko, (Thu Oct 21, 1:52 am)
Re: [PATCH resend 5/9] MIPS: sync after cacheflush, Maciej W. Rozycki, (Sat Oct 23, 10:12 pm)