在CPU Hit/MIss时,Cache和Main Memory之间交互策略 | 您所在的位置:网站首页 › 摄影光影技巧创意分析 › 在CPU Hit/MIss时,Cache和Main Memory之间交互策略 |
关键词:Hit、Miss、Read Through、Read Allocate、Write Through、Write Back、Write Allocate、No Write Allocate等。 对Cache和Main Memory之间数据维护设计到性能问题,也涉及到一致性问题。 了解下面各种策略,有利于理解Cache和Main Memory行为和配置Cache属性。 1. 各种策略行为和优缺点Read Through:CPU Read data Through(not Allocate) Cache to Main Memory. Read Allocate:CPU Read data from Main Memory and Allocate it in cache Write Through:CPU Write data Through Cache to Main Memory。 Write Back:CPU Write data Back to Cache. Write Allocate: CPU Write data to Main Memory and Allocate it in Cache. No Write Allocate: CPU Write data to Main Memory, but No Allocate it in Cache. Read/Write在Hit/Miss情况下,不同策略的表现行为: 行为 Read Hit CPU直接从Cache获取数据。Miss Read Through直接从Main Memory读取内容到CPU,不经过Cache。 避免Cache占用,但是对统一内容连续读效率很低。 Read Allocate No Read Through 先把数据从Main Memory读取到Cache中,再从Cache中读取数据到CPU。 占用Cache, Write Hit Write Through 把数据同时从CPU写到Cache和Main Memory中。 优点: - 未命中的读不会导致写到Main Memory。 - 较易实现。 - Main Memory中内容往往是最新的,也即一致性。缺点: - 写入Main Memory较慢。 - 每次写操作都会触发访问Main Memory。 - 所需带宽更大。 Write Back只把数据从CPU写到Cache中。 后续可以通过flush方式把数据从Cache写入到Main Memory中。 优点: - 写的速度非常快,Cache访问速度远高于Main Memory。 - 多次到Cache的写只需一次到Main Memory的写。 - 所需带宽更小。缺点: - 实现较难 - Main Memory数据和Cache中不一致。 - 导致Cache替换的读操作会将dirty快写入Main Memory。 Miss Write Allocate先把要写的数据从Main Memory载入到Cache中,CPU将数据写入到Cache中。 后续通过flush将数据从Cache写入到Main Memory中。 No Write Allocate 数据在Main Memory中被修改,直接从CPU写入到Main Memory中。不会被加载到Cache中。 2. Write策略组合不同Write Hit和Write MIss策略组合下的行为: Write Hit Policy Write Miss Policy Write Through Write AllocateHit:将数据写入Cache和Main Memory。 Miss:将数据从Main Memory读到Cache中,然后CPU Hit,CPU再写到Cache和Main Memory中。 当Miss的时候将数据带到Cache中,然后再将数据写入Cache和Main Memory,其中Cache的操作不太合情理。 Write Through No Write AllocateHit:将数据写入到Cache和Main Memory。 Miss:更新Main Memory中内容,并且不会在Cache中存在相关内容。 后续内容写入将更新Main Memory,因为使用了Write Through策略。因此,节省了一些时间,不会在Miss时将内容带进Cache中,因为它看起来毫无用处。 Write Back Write AllocateHit:将数据写入Cache并更新dirty位,Main Memory不会被更新。 Miss:更新Main Memory中的内容并将该块带到Cache中; 对同一块的后续写入,如果该块最初导致未命中,则下次将命中Cache,为该块设置脏位。这将消除额外的Main Memory访问,并比Write Through与Write Allocate组合执行更加有效。 Write Back No Write AllocateHit:当它写入Cache设置块的脏位时,Main Memory不会被更新; MIss:更新Main Memory中的块,而不将该块带到Cache中; 对同一块的后续写入,如果该块最初为Miss,则会一直导致Miss,并导致执行效率非常低。 所以常见的组合是Write Through-No Write Allocate和Write Back-Write Allocate。 3. 一个ARM内存实例下图是M33的Cache策略实例: 参考文档: 《Interaction Policies with Main Memory》 《Write Through and Write Back in Cache》 |
CopyRight 2018-2019 实验室设备网 版权所有 |