Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Memory coherence
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
'''Memory coherence''' is an issue that affects the design of [[computer system]]s in which two or more [[Central processing unit|processor]]s or [[Multi core|cores]] share a common area of [[memory (computers)|memory]].<ref name="censier98">{{Cite journal |first1=L.M. |last1=Censier |first2=P. |last2=Feautrier |title=A New Solution to Coherence Problems in Multicache Systems |journal=IEEE Transactions on Computers |volume=C-27 |issue=12 |pages=1112β18 |date=December 1978 |doi=10.1109/TC.1978.1675013|s2cid=5898229 }}</ref><ref name="smith82">{{Cite journal |first1=Alan Jay |last1=Smith |title=Cache Memories |journal=ACM Computing Surveys |volume=14 |issue=3 |pages=473β530 |date=September 1982 |doi=10.1145/356887.356892 |s2cid=6023466 }}</ref><ref name="li89">{{Cite journal |first1=Kai |last1=Li |first2=Paul |last2=Hudak |title=Memory coherence in shared virtual memory systems |journal= ACM Transactions on Computer Systems|volume=7 |issue=4 |pages=321β59 |date=November 1989 |doi=10.1145/75104.75105 |s2cid=1678750 |doi-access=free }}</ref><ref name="stenstrom90">{{Cite journal |first1=Per |last1=Stenstrom |title=A survey of cache coherence schemes for multiprocessors |journal=IEEE Computer |volume=23 |issue=6 |pages=12β24 |date=June 1990 |doi=10.1109/2.55497}}</ref> In a [[uniprocessor]] system (where there exists only one core), there is only one [[processing element]] doing all the work and therefore only one processing element that can read or write from/to a given memory location. As a result, when a value is changed, all subsequent read operations of the corresponding memory location will see the updated value, even if it is [[cache (computing)|cache]]d. Conversely, in [[multiprocessor]] (or [[Multi core|multicore]]) systems, there are two or more processing elements working at the same time, and so it is possible that they simultaneously access the same memory location. Provided none of them changes the data in this location, they can share it indefinitely and cache it as they please. But as soon as one updates the location, the others might work on an out-of-date copy that, e.g., resides in their local cache. Consequently, some scheme is required to notify all the processing elements of changes to shared values; such a scheme is known as a '''memory coherence protocol''', and if such a protocol is employed the system is said to have a '''coherent memory'''. The exact nature and meaning of the memory coherency is determined by the [[consistency model]] that the coherence protocol implements. In order to write correct concurrent programs, programmers must be aware of the exact consistency model that is employed by their systems. When implemented in hardware, the coherency protocol can, for example, be [[Directory-based coherence protocols|directory-based]] or [[Bus sniffing|snooping]]-based (also called ''sniffing''). Specific protocols include the [[MSI protocol]] and its derivatives [[MESI protocol|MESI]], [[MOSI protocol|MOSI]] and [[MOESI protocol|MOESI]]. == See also == *[[Cache coherence]] *[[Distributed shared memory]] *[[Race condition]] == References == {{Reflist|35em}} {{Parallel Computing}} {{DEFAULTSORT:Memory Coherence}} [[Category:Computer memory]] [[Category:Parallel computing]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite journal
(
edit
)
Template:Parallel Computing
(
edit
)
Template:Reflist
(
edit
)