-
Notifications
You must be signed in to change notification settings - Fork 17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Why withRvcbm = true
is not compatible with lsuL1Coherency = true
?
#49
Comments
Thanks nlnet, they founded it ^^
Let's say you have a L2 cache, then the CMO should instead ask the L2 to clean / flush / invalidate the address, not the L1 anymore (as far as i understand it) Also, if you have a coherent L2, you kinda expect the DMA to be coherent, and don't need anymore any software flush. All done via hardware. |
I have Tilelink CacheFiber as L2 cache. But if remove
I guess the cache expects that at least one master uses B, C, E channels.
I don't understand. I have L2 cache (CacheFiber) in between of main RAM and everything else. There is no point to flush from L2 to RAM because nothing is connected to RAM directly. I'd expect that CMO instructions should flush data from L1 cache to whatever is below. Could you please explain in more detail how it is supposed to work? |
Let's consider a simple example without DMA. There is only How it can work without lsuL1Coherency? |
Ah, I misunderstood what it is. I was interested mostly in But still, is it normal that tilelink.coherent.CacheFiber doesn't work if lsuL1Coherency is disabled? Did you mean some other implementation of L2 cache?
I guess that additionally to |
Hi ^^
Yes, the L2 cache design doesn't support not having memory coherent masters. That would require some more work to remove a bunch of unused logic.
"This chapter defines the "Zifencei" extension, which includes the FENCE.I instruction that provides => if you are single core, you don't need cbo flush after fence.i |
There is currently only one implementation, which require cpus to be memory coherent |
I noticed that a few days ago CMO clean/flush/invalidate instruction support was added (Thank you! I was waiting for this functionality).
But why it is incompatible with
lsuL1Coherency = true
(assert at LsuL1Plugin.scala:961)? If I am not mistakenlsuL1Coherency
means only that the core can accept external requests to flush specific cache lines. Not clear why CMO conflicts with it.The text was updated successfully, but these errors were encountered: