Software Solutions CACHE COHERENCE AND THE MESI PROTOCOL
COMPUTER ORGANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION
Software cache coherence schemes attempt to avoid the need for additional hard-
ware circuitry and logic by relying on the compiler and operating system to deal with
the problem. Software approaches are attractive because the overhead of detecting
potential problems is transferred from run time to compile time, and the design
complexity is transferred from hardware to software. On the other hand, compile-
time software approaches generally must make conservative decisions, leading to
inefficient cache utilization.
Compiler-based coherence mechanisms perform an analysis on the code to
determine which data items may become unsafe for caching, and they mark those
items accordingly. The operating system or hardware then prevents noncacheable
items from being cached.
The simplest approach is to prevent any shared data variables from being
cached. This is too conservative, because a shared data structure may be exclusively
used during some periods and may be effectively read-only during other periods. It
is only during periods when at least one process may update the variable and at least
one other process may access the variable that cache coherence is an issue.
More efficient approaches analyze the code to determine safe periods for
shared variables. The compiler then inserts instructions into the generated code
to enforce cache coherence during the critical periods. A number of techniques
have been developed for performing the analysis and for enforcing the results; see
[LILJ93] and [STEN90] for surveys.
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步