On Thu, May 30, 2024 at 02:59:38PM +0800, Dongsheng Yang wrote:
在 2024/5/29 星期三 下午 11:25, Gregory Price 写道:
There are some (FAMFS, for example). The coherence state of these
systems tend to be less volatile (e.g. mappings are read-only), or
they have inherent design limitations (cacheline-sized message passing
via write-ahead logging only).
Can you explain more about this? I understand that if the reader in the
writer-reader model is using a readonly mapping, the interaction will be
much simpler. However, after the writer writes data, if we don't have a
mechanism to flush and invalidate puncturing all caches, how can the
readonly reader access the new data?
This is exactly right, so the coherence/correctness of the data needs to
be enforced in some other way.
Generally speaking, the WPQs will *eventually* get flushed. As such,
the memory will *eventually* become coherent. So if you set up the
following pattern, you will end up with an "eventually coherent" system
1) Writer instantiates the memory to be used
2) Writer calculates and records a checksum of that data into memory
3) Writer invalidates everything
4) Reader maps the memory
5) Reader reads the checksum and calculates the checksum of the data
a) if the checksums match, the data is coherent
b) if they don't, we must wait longer for the queues to flush
This is just one example of a system design which enforces coherence by
placing the limitation on the system that the data will never change
once it becomes coherent.
Whatever the case, regardless of the scheme you come up with, you will
end up with a system where the data must be inspected and validated
before it can be used. This has the limiting factor of performance:
throughput will be limited by how fast you can validate the data.
~Gregory
.