Can there be a case in a cache employing a MESI protocol (has l1 and l2 inclusivity employed) where l2 can send an invalid instruction to an already invalid line in l1.
Cache coherence- MESI protocol
323 views Asked by user8768024 At
2
There are 2 answers
0
Leeor
On
There could be a scenario where the L2 simply does not know if the L1 has the line, because the L1 is allowed to silently drop it.
In fact, if the L2 is inclusive, there's hardly any reason to waste bandwidth when evicting a non-modified line from the L1 (capacity eviction), because the L2 already has a copy and there's no change. It is therefore likely that many lines in the L2 are still there long after they were evicted from the L1. An eviction from the L2 when it finally arrives (later, since it's bigger) would have to send back a snoop to enforce inclusiveness, because it can't be sure if the line is still in the L1 or not.
Related Questions in CPU-ARCHITECTURE
- What is causing the store latency in this program?
- what's the difference between "nn layout" and "nt layout"
- Will a processor with such a defect work?
- How do i find number of Cycles of a processor?
- Why does LLVM-MCA measure an execution stall?
- Can out-of-order execution of CPU affect the order of new operator in C++?
- running SPEC in gem5 using the SimPoint methodology
- Why don't x86-64 (or other architectures) implement division by 10?
- warn: MOVNTDQ: Ignoring non-temporal hint, modeling as cacheable!, While simulating x86 with spec2006 benchamrks I am getting stuck in warn message
- arithmetic intensity of zgemv versus dgemv/sgemv?
- What is the microcode scoreboard?
- Why don't x86/ARM CPU just stop speculation for indirect branches when hardware prediction is not available?
- Question about the behaviour of registers
- How to increase throughput of random memory reads/writes on multi-GB buffers?
- RISVC Single Cycle Processor Data Path and Testbench
Related Questions in CPU-CACHE
- How CPUs Use the LOCK Prefix to Implement Cache Locking and ensure memory consistency
- How to check whether the PCIe Memory-mapped BAR region is cacheable or uncacheable
- Are RISC-V SH and SB instructions allowed to communicate with the cache?
- for remote socket cache-to-cache data transfer, why data homed in reader socket shows higher latency than data homed in writer socket?
- Performance implications of aliasing in VIPT cache
- Why do fast memory writes when run over multiple threads take much more time vs when they are run on a single thread?
- question regarding the behavior of the program in Meltdown attack
- Seeking Verification: MIPS Cache Set Update Analysis
- OS cache/memory hierarchy: How does writing to a new file work?
- Can there be a cache block with the same Tag-ID in different Sets?
- is it a way to do a "store" operation without fetching in case of cache miss
- why is there a need to stop prefetching to pages when a write happens to it?
- is it possible that a cpu has several L3 level caches?
- Are 64-byte CPU cache line reads aligned on 64-byte boundaries?
- how cpu cache when physical address is not contiguous
Related Questions in SECOND-LEVEL-CACHE
- Is there a way to fetch Associated Entity from second level Cache instead of hitting the DB in Hibernate?
- What is the difference between putting @Cache in Entities and @QueryHints in Queries?
- Unable to implement Second Level Cache in Hibernate
- Bad performance with hibernate with second level cache when query cache enabled
- How to 2nd level cache a Lazy Loaded Collection in Hibernate?
- Multi-tenant-Architecture and Second level caching issues (spring, hibernate 5.4.21.Final , multi-tenancy, caching ehcache )
- Hazelcast + Hibernate query slowdown when using second level cache
- Is there a recommended maximum number of Hibernate 2nd level cache regions?
- Why does the StackExchangeRedis NHibernate Second Level Cache require a locking mechanism?
- Hibernate LOG: A soft-locked cache entry was expired by the underlying cache
- How can I ensure that 2nd level cache is enabled in spring boot app?
- Doctrine's Second Level Cache doesn't show new items
- Confusion about Spring Caching abstraction and Hibernate 2nd level cache
- Is it a good approach to use Hibernate second level cache providers in production environment?
- Hibernate second level entity cache invalidation in multitenant environment with Infinispan
Related Questions in MESI
- How CPUs Use the LOCK Prefix to Implement Cache Locking and ensure memory consistency
- Can CPU load data from another CPU's cache using LOCK CMPXCHG instruction in x86?
- How `memory_order_relaxed` is enough in TTAS spinlock for Arm64?
- Invalidation of an Exclusive cache line
- Is it Possible for a Thread to Read Stale Data Due to CPU Core Switching in a Multi-threaded Environment?
- Confusing "Memory Barrier Example 1" in 《Memory Barriers: a Hardware View for Software Hackers》?
- optimal to flush low-contention atomic from caches?
- How is message queue implemented in cache coherence protocol?
- Does Cache Coherence always prevent reading a stale value? Do invalidation queues allow it?
- Data races with MESI optimization
- Shortcomings of cache coherence alternative
- cache coherence - Why are some steps considered exclusive?
- how to fix the problem while cpu store buffer cause data unconsistency?
- Cache coherence systems from a timing point of view
- Cache coherence state machine
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Popular Tags
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
An "invalidate request", you mean?
I guess so, if L2 doesn't filter its requests according to what it knows about L1, it might just always send an INVD to L1 every time it evicts a line. No idea if this is plausible for a real design. (Eviction from L2 could be caused by a HW or SW prefetch into L2, rather than in response to L1 write-back.)
Or if the CPU core can invalidate a line in L1 at the same time that L2 is sending an invalidate, the INVD could arrive in L1 after it's already invalidated the line.