{"id":566,"date":"2019-10-16T16:06:22","date_gmt":"2019-10-16T10:36:22","guid":{"rendered":"https:\/\/binaryterms.com\/?p=566"},"modified":"2021-11-17T13:01:04","modified_gmt":"2021-11-17T07:31:04","slug":"cache-coherence","status":"publish","type":"post","link":"https:\/\/binaryterms.com\/cache-coherence.html","title":{"rendered":"Cache Coherence"},"content":{"rendered":"<p><strong>Cache Coherence <\/strong>assures the <strong>data consistency<\/strong> among the various memory blocks in the system, i.e. local cache memory of each processor and the common memory shared by the processors. It confirms that each copy of a data block among the caches of the processors has a consistent value.<\/p>\n<p>In this section, we will discuss the cache coherence problem and the protocol for resolving the cache coherence problem.<\/p>\n<h2>Content: Cache Coherence in Computer Architecture<\/h2>\n<ol>\n<li><a href=\"#CacheCoherenceProblem\">Cache Coherence Problem<\/a><\/li>\n<li><a href=\"#MemoryBlockStates\">Memory Block States<\/a><\/li>\n<li><a href=\"#CacheCoherenceProtocols\">Cache Coherence Protocols<\/a>\n<ul>\n<li><a href=\"#Write-ThroughProtocol\">Write-Through Protocol<\/a><\/li>\n<li><a href=\"#Write-BackProtocol\">Write-Back Protocol<\/a><\/li>\n<li><a href=\"#SnoopyProtocol\">Snoopy Protocol<\/a><\/li>\n<li><a href=\"#DirectoryProtocol\">Directory Protocol<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#KeyTakeaways\">Key Takeaways<\/a><\/li>\n<\/ol>\n<p><a name=\"CacheCoherenceProblem\"><\/a><\/p>\n<h3>What is Cache Coherence Problem?<\/h3>\n<p>In a multiprocessor environment, all the processors in the system share the <strong>main memory<\/strong> via a <strong>bus<\/strong>. Now, keeping a common cache for all the processors will enhance the size of the cache thereby slowing down the performance of the system.<\/p>\n<p>For better performance, each processor implements its own <strong>cache<\/strong>. Processors may share the same data block by keeping a copy of this data block in their cache. The figure below shows how processors P1, P3 &amp; Pn have the copy of shared data block X of main memory in their caches.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-575\" src=\"https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/cache-coherence-1.jpg\" alt=\"cache coherence 1\" width=\"600\" height=\"424\" srcset=\"https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/cache-coherence-1.jpg 600w, https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/cache-coherence-1-300x212.jpg 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>In case, the processor P1 modifies the copy of shared memory block X\u00a0 present in its cache. It would result in <strong>data inconsistency<\/strong>. As the processor <strong>P1<\/strong> will have the <strong>modified copy<\/strong> of the shared memory block i.e. X1. But, the <strong>main memory<\/strong> and other processors&#8217; <strong>cache<\/strong> will have the <strong>old copy <\/strong>of the shared memory block X. And this problem is the <strong>cache coherence problem<\/strong>.<\/p>\n<p>The figure below shows the cache coherence problem in a multiprocessing environment.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-568\" src=\"https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/Cache-coherence-problem.jpg\" alt=\"Cache coherence problem\" width=\"600\" height=\"406\" srcset=\"https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/Cache-coherence-problem.jpg 600w, https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/Cache-coherence-problem-300x203.jpg 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>Well, this cache coherence problem can be sorted using the protocols discussed below. But before getting into the protocols we will discuss some terminologies associated to cache coherence problem.<\/p>\n<p><a name=\"MemoryBlockStates\"><\/a><\/p>\n<h3>States of Memory Block in Cache memory<\/h3>\n<p>If we talk about the cache memory it is subdivided into a number of blocks. And whenever a processor requires a data block it first checks it in its own cache memory. If it is not there the data is retrieved from the main memory and a copy of it is placed in the cache block.<\/p>\n<p>Now to maintain the cache coherency the cache controller maintain some information to keep the the caches of other processors in the system synchronized, while a processor is modifying its copy of data that is also shared by other processors in the system. So the cache controller maintains the state for every cache block of the cache memory which helps in maintaining the coherency.<\/p>\n<p>Let us discuss them one by one:<\/p>\n<ul>\n<li><strong>Modify (M):<\/strong> The data block in a cache is <strong>modified<\/strong> and the processor modifying the data block is the owner of that data block. This copy of the data block is not available with any other caches in the system.<br \/>\nThe <strong>main memory<\/strong> copy for the same data block does <strong>not contain the modified value<\/strong> of the data block. If the processor wants to modify it again, it doesn&#8217;t need to broadcast this request over the bus again.<\/li>\n<li><strong>Exclusive (E): <\/strong>When the processor wants to modify a data block in its cache, it broadcast the request to invalidate the copy of the same data block in other caches.<br \/>\nSo, the data block to be modified is now only with the <strong>processor that wishes to modify<\/strong> it and with the <strong>main memory<\/strong>. Here, the processor is the exclusive owner of the data block.<\/li>\n<li><strong>Shared (S):<\/strong> A data block in the main memory is shared by many processors in the system and all the processors have a <strong>valid copy of the data block <\/strong>in their caches.<\/li>\n<li><strong>Invalid (I):<\/strong> The cache has a data block that does <strong>not have valid data<\/strong>. If it wants to read or write\/modify this data block it has to send a request to the owner of the same data block.<\/li>\n<\/ul>\n<p><a name=\"CacheCoherenceProtocols\"><\/a><\/p>\n<h2>Cache Coherence Protocols<\/h2>\n<p><a name=\"Write-ThroughProtocol\"><\/a><\/p>\n<h3>1. Write-Through Protocol<\/h3>\n<p>In write-through protocol when a processor modifies a data block in its cache, it immediately <strong>updates the main memory<\/strong> with the new copy of the same data block. So, the main memory here always has consistent data.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-581\" src=\"https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/Write-Through-protocol-2.jpg\" alt=\"Write Through protocol 2\" width=\"600\" height=\"493\" srcset=\"https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/Write-Through-protocol-2.jpg 600w, https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/Write-Through-protocol-2-300x247.jpg 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>The write-through protocols have two versions and those are:<\/p>\n<ol>\n<li>Updating Values in Other Caches<\/li>\n<li>Invalidating Values in Other Caches.<\/li>\n<\/ol>\n<p><strong>Updating Values\u00a0<\/strong><\/p>\n<p>Let us understand the <strong>first version<\/strong> where the <strong>inconsistent copies<\/strong> of shared data are updated in other caches.<\/p>\n<ol>\n<li>Whenever a processor modifies a shared data block in its cache, it immediately updates the same data block in the main memory.<\/li>\n<li>Now other processors with the same data block present in their cache will have inconsistent data. So the processor that has modified the shared data block, broadcast the modified data to all the other processors in the system.<\/li>\n<li>When the other processors in the system receive the broadcasted modified data they verify whether they have the same data block present in their cache. If yes, the content of that data block is modified as specified in broadcasted data else the broadcasted data is discarded.<\/li>\n<\/ol>\n<p><strong>Invalidating Values\u00a0<\/strong><\/p>\n<p>Now, let us see the <strong>second version<\/strong> where the <strong>inconsistent copies<\/strong> in other processors caches are <strong>invalidated.<\/strong><\/p>\n<ol>\n<li>Whenever a processor modifies a data block present in its cache memory, it immediately updates the same data block in the main memory.<\/li>\n<li>The processor modifying the data block broadcast request to other processors present in the system to<strong> invalidate the copies of the same data block<\/strong> in their caches.<\/li>\n<\/ol>\n<p><a name=\"Write-BackProtocol\"><\/a><\/p>\n<h3>2. Write-Back Protocol<\/h3>\n<p>This protocol permits the processor to <strong>modify a data block<\/strong> only if it acquires <strong>ownership<\/strong>.<\/p>\n<p><strong>Steps to Acquire Ownership<\/strong><\/p>\n<ol>\n<li>Initially, the <strong>memory<\/strong> is the <strong>owner<\/strong> of all the data blocks and it retains that ownership when a processor reads a data block and sites its copy in its cache.<\/li>\n<li>When a <strong>processor<\/strong> wants to <strong>modify<\/strong> a data block in its cache it has to confirm that it is an <strong>exclusive owner<\/strong> of that data block.\n<ul>\n<li>For this, it has to first <strong>invalidate<\/strong> the copies of this data block in the <strong>other caches<\/strong> by broadcasting an invalidating request to all processors.<\/li>\n<li>Once it has become the exclusive owner, it can modify the data block.<\/li>\n<\/ul>\n<\/li>\n<li>If any processor wants to <strong>read<\/strong> this modified data block it has to send the <strong>request<\/strong> to the <strong>current owner processor<\/strong> of that data block.<\/li>\n<li>The owner forwards the data to the <strong>requesting processor<\/strong> and to the <strong>main memory<\/strong>.<\/li>\n<li>The <strong>main memory<\/strong> updates the content of the data block that has been modified and <strong>reacquires its ownership<\/strong> again over the data block.<br \/>\nIf any processor requires this data block it will be serviced by the main memory.<\/li>\n<\/ol>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-580\" src=\"https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/Write-Back-protocol-1.jpg\" alt=\"Write Back protocol 1\" width=\"600\" height=\"436\" srcset=\"https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/Write-Back-protocol-1.jpg 600w, https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/Write-Back-protocol-1-300x218.jpg 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p><strong>Modify Data<\/strong><\/p>\n<p>If another processor in the system wishes to <strong>modify\/write<\/strong> the data block that has been modified. It sends a request to the current owner. The current owner sends the <strong>data and control<\/strong> over the block to the requesting processor.<\/p>\n<p>Now, the requesting processor is the owner. It modifies the data block and also services the other processor\u2019s request for the data block. Here the modified data block is <strong>not updated in the main memory.<\/strong> Since only the owner is authorized to modify the data block.<br \/>\n<a name=\"SnoopyProtocol\"><\/a><\/p>\n<h3>3. Snoopy Protocol<\/h3>\n<p>In the multiprocessor environment, all the processors are connected to memory modules via a <strong>single bus<\/strong>. The transaction between the processors and the memory module i.e. read, write, invalidate request for the data block occurs via bus.<\/p>\n<p>If we implement the <strong>cache controller<\/strong> to every processor&#8217;s cache in the system, it will <strong>snoop<\/strong> all the <strong>transactions over the bus<\/strong> and perform the appropriate action. So, we can say that the Snoopy protocol is the <strong>hardware solution<\/strong> to the cache coherence problem.<\/p>\n<p>It is used for small multiprocessor environments as the large shared-memory multiprocessors are connected via the interconnection network.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-571\" src=\"https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/Snoopy-cache-protocol.jpg\" alt=\"Snoopy cache protocol\" width=\"600\" height=\"348\" srcset=\"https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/Snoopy-cache-protocol.jpg 600w, https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/Snoopy-cache-protocol-300x174.jpg 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>Consider a scenario from write-back, if a processor has just modified a data block in its cache, and is a current owner of the block.<\/p>\n<p>Now, if processor P1 wishes to modify the same data block that has been modified. P1 would broadcast the invalidation request on the bus and becomes the owner for that data block and modify the data block. The other processors who have the copy of the same data block <strong>snoop<\/strong> the bus and invalidate their copy of the data block (I). It updates memory using the write-back protocol.<br \/>\n<a name=\"DirectoryProtocol\"><\/a><\/p>\n<h3>4. Directory-Based Cache Coherence Protocol<\/h3>\n<p>Directory-Based cache coherence protocol is a <strong>hardware solution<\/strong> to the cache coherence problem. It is implemented in a <strong>large multiprocessor system<\/strong> where the shared memory and processors are connected using the <strong>interconnection network<\/strong>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-572\" src=\"https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/Directory-based-protocol.jpg\" alt=\"Directory-based protocol\" width=\"600\" height=\"313\" srcset=\"https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/Directory-based-protocol.jpg 600w, https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/Directory-based-protocol-300x157.jpg 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>The <strong>directories<\/strong> are implemented in <strong>each memory module<\/strong> of the multiprocessors system. These directories keep the record of all the actions taken to each data block i.e. whether a data block in the cache of a processor is invalid, or is being modified, or is in the shared state. Due to its <strong>cost<\/strong> and <strong>complexity<\/strong> directory-based cache coherence protocols are implemented only to large multiprocessors systems.<\/p>\n<p><a name=\"KeyTakeaways\"><\/a><\/p>\n<div id=\"keytake\">\n<h3>Key Takeaways<\/h3>\n<ul>\n<li>Cache coherence promises <strong>data consistency<\/strong> among all the memory blocks in the system (cache memory of various processors and the main memory).<\/li>\n<li>Whenever a processor modifies a data block in its cache, the copies of the same data block in other caches and the memory are not updated. So, the other caches would have the <strong>old copy<\/strong> of the same data block. This leads to <strong>data inconsistency<\/strong> and it\u2019s a <strong>cache coherence problem<\/strong>.<\/li>\n<li>We have the protocols to maintain the cache coherence in the system like <strong>write-through<\/strong> protocol, <strong>write-back<\/strong> protocol, <strong>snoopy<\/strong> protocol, and <strong>directory-based<\/strong> protocol.<\/li>\n<li>Along with the protocol mentioned above, there are several other approaches to maintain cache coherence in the system.<\/li>\n<\/ul>\n<\/div>\n<p>So, cache coherence is one of the important things to be maintained by the processor. Ignoring it wouldn\u2019t work and will shows disastrous results.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cache Coherence assures the data consistency among the various memory blocks in the system, i.e. local cache memory of each processor and the common memory shared by the processors. It confirms that each copy of a data block among the caches of the processors has a consistent value. In this section, we will discuss the [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[3],"tags":[],"class_list":{"0":"post-566","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-computer-architecture","7":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>What is Cache Coherence? Problem &amp; Protocols -Binary Terms<\/title>\n<meta name=\"description\" content=\"Cache Coherence feature assures the data consistency among the various memory blocks in the system, i.e. local cache memory of each processor and the common memory shared by the processors.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/binaryterms.com\/cache-coherence.html\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What is Cache Coherence? Problem &amp; Protocols -Binary Terms\" \/>\n<meta property=\"og:description\" content=\"Cache Coherence feature assures the data consistency among the various memory blocks in the system, i.e. local cache memory of each processor and the common memory shared by the processors.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/binaryterms.com\/cache-coherence.html\" \/>\n<meta property=\"og:site_name\" content=\"Binary Terms\" \/>\n<meta property=\"article:published_time\" content=\"2019-10-16T10:36:22+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-11-17T07:31:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/cache-coherence-1.jpg\" \/>\n<meta name=\"author\" content=\"Neha T\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Neha T\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/binaryterms.com\/cache-coherence.html#article\",\"isPartOf\":{\"@id\":\"https:\/\/binaryterms.com\/cache-coherence.html\"},\"author\":{\"name\":\"Neha T\",\"@id\":\"https:\/\/binaryterms.com\/#\/schema\/person\/e495f1d57f5c0a4c521cc3dba95661fe\"},\"headline\":\"Cache Coherence\",\"datePublished\":\"2019-10-16T10:36:22+00:00\",\"dateModified\":\"2021-11-17T07:31:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/binaryterms.com\/cache-coherence.html\"},\"wordCount\":1626,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/binaryterms.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/binaryterms.com\/cache-coherence.html#primaryimage\"},\"thumbnailUrl\":\"https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/cache-coherence-1.jpg\",\"articleSection\":[\"Computer Architecture\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/binaryterms.com\/cache-coherence.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/binaryterms.com\/cache-coherence.html\",\"url\":\"https:\/\/binaryterms.com\/cache-coherence.html\",\"name\":\"What is Cache Coherence? Problem & Protocols -Binary Terms\",\"isPartOf\":{\"@id\":\"https:\/\/binaryterms.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/binaryterms.com\/cache-coherence.html#primaryimage\"},\"image\":{\"@id\":\"https:\/\/binaryterms.com\/cache-coherence.html#primaryimage\"},\"thumbnailUrl\":\"https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/cache-coherence-1.jpg\",\"datePublished\":\"2019-10-16T10:36:22+00:00\",\"dateModified\":\"2021-11-17T07:31:04+00:00\",\"description\":\"Cache Coherence feature assures the data consistency among the various memory blocks in the system, i.e. local cache memory of each processor and the common memory shared by the processors.\",\"breadcrumb\":{\"@id\":\"https:\/\/binaryterms.com\/cache-coherence.html#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/binaryterms.com\/cache-coherence.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/binaryterms.com\/cache-coherence.html#primaryimage\",\"url\":\"https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/cache-coherence-1.jpg\",\"contentUrl\":\"https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/cache-coherence-1.jpg\",\"width\":600,\"height\":424,\"caption\":\"cache coherence 1\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/binaryterms.com\/cache-coherence.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/binaryterms.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cache Coherence\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/binaryterms.com\/#website\",\"url\":\"https:\/\/binaryterms.com\/\",\"name\":\"Binary Terms\",\"description\":\"The Computer Science &amp; IT Guide\",\"publisher\":{\"@id\":\"https:\/\/binaryterms.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/binaryterms.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/binaryterms.com\/#organization\",\"name\":\"Binary Terms\",\"url\":\"https:\/\/binaryterms.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/binaryterms.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/binaryterms.com\/wp-content\/uploads\/2020\/05\/binary-terms-logo1.png\",\"contentUrl\":\"https:\/\/binaryterms.com\/wp-content\/uploads\/2020\/05\/binary-terms-logo1.png\",\"width\":400,\"height\":63,\"caption\":\"Binary Terms\"},\"image\":{\"@id\":\"https:\/\/binaryterms.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/binaryterms.com\/#\/schema\/person\/e495f1d57f5c0a4c521cc3dba95661fe\",\"name\":\"Neha T\",\"url\":\"https:\/\/binaryterms.com\/author\/author\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"What is Cache Coherence? Problem & Protocols -Binary Terms","description":"Cache Coherence feature assures the data consistency among the various memory blocks in the system, i.e. local cache memory of each processor and the common memory shared by the processors.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/binaryterms.com\/cache-coherence.html","og_locale":"en_GB","og_type":"article","og_title":"What is Cache Coherence? Problem & Protocols -Binary Terms","og_description":"Cache Coherence feature assures the data consistency among the various memory blocks in the system, i.e. local cache memory of each processor and the common memory shared by the processors.","og_url":"https:\/\/binaryterms.com\/cache-coherence.html","og_site_name":"Binary Terms","article_published_time":"2019-10-16T10:36:22+00:00","article_modified_time":"2021-11-17T07:31:04+00:00","og_image":[{"url":"https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/cache-coherence-1.jpg","type":"","width":"","height":""}],"author":"Neha T","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Neha T","Estimated reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/binaryterms.com\/cache-coherence.html#article","isPartOf":{"@id":"https:\/\/binaryterms.com\/cache-coherence.html"},"author":{"name":"Neha T","@id":"https:\/\/binaryterms.com\/#\/schema\/person\/e495f1d57f5c0a4c521cc3dba95661fe"},"headline":"Cache Coherence","datePublished":"2019-10-16T10:36:22+00:00","dateModified":"2021-11-17T07:31:04+00:00","mainEntityOfPage":{"@id":"https:\/\/binaryterms.com\/cache-coherence.html"},"wordCount":1626,"commentCount":0,"publisher":{"@id":"https:\/\/binaryterms.com\/#organization"},"image":{"@id":"https:\/\/binaryterms.com\/cache-coherence.html#primaryimage"},"thumbnailUrl":"https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/cache-coherence-1.jpg","articleSection":["Computer Architecture"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/binaryterms.com\/cache-coherence.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/binaryterms.com\/cache-coherence.html","url":"https:\/\/binaryterms.com\/cache-coherence.html","name":"What is Cache Coherence? Problem & Protocols -Binary Terms","isPartOf":{"@id":"https:\/\/binaryterms.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/binaryterms.com\/cache-coherence.html#primaryimage"},"image":{"@id":"https:\/\/binaryterms.com\/cache-coherence.html#primaryimage"},"thumbnailUrl":"https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/cache-coherence-1.jpg","datePublished":"2019-10-16T10:36:22+00:00","dateModified":"2021-11-17T07:31:04+00:00","description":"Cache Coherence feature assures the data consistency among the various memory blocks in the system, i.e. local cache memory of each processor and the common memory shared by the processors.","breadcrumb":{"@id":"https:\/\/binaryterms.com\/cache-coherence.html#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/binaryterms.com\/cache-coherence.html"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/binaryterms.com\/cache-coherence.html#primaryimage","url":"https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/cache-coherence-1.jpg","contentUrl":"https:\/\/binaryterms.com\/wp-content\/uploads\/2019\/10\/cache-coherence-1.jpg","width":600,"height":424,"caption":"cache coherence 1"},{"@type":"BreadcrumbList","@id":"https:\/\/binaryterms.com\/cache-coherence.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/binaryterms.com\/"},{"@type":"ListItem","position":2,"name":"Cache Coherence"}]},{"@type":"WebSite","@id":"https:\/\/binaryterms.com\/#website","url":"https:\/\/binaryterms.com\/","name":"Binary Terms","description":"The Computer Science &amp; IT Guide","publisher":{"@id":"https:\/\/binaryterms.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/binaryterms.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/binaryterms.com\/#organization","name":"Binary Terms","url":"https:\/\/binaryterms.com\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/binaryterms.com\/#\/schema\/logo\/image\/","url":"https:\/\/binaryterms.com\/wp-content\/uploads\/2020\/05\/binary-terms-logo1.png","contentUrl":"https:\/\/binaryterms.com\/wp-content\/uploads\/2020\/05\/binary-terms-logo1.png","width":400,"height":63,"caption":"Binary Terms"},"image":{"@id":"https:\/\/binaryterms.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/binaryterms.com\/#\/schema\/person\/e495f1d57f5c0a4c521cc3dba95661fe","name":"Neha T","url":"https:\/\/binaryterms.com\/author\/author"}]}},"_links":{"self":[{"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/posts\/566","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/comments?post=566"}],"version-history":[{"count":9,"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/posts\/566\/revisions"}],"predecessor-version":[{"id":3123,"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/posts\/566\/revisions\/3123"}],"wp:attachment":[{"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/media?parent=566"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/categories?post=566"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/binaryterms.com\/wp-json\/wp\/v2\/tags?post=566"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}