Caching 缓存读写

Caching 缓存读写,caching,memory,computer-architecture,Caching,Memory,Computer Architecture,我正在阅读有关缓存写策略的文章,我只想知道我是否正确理解了这一点 当读取导致缓存未命中时,它将获取该内存块并将其放入缓存。缓存写未命中意味着程序要写入的内存位置不在缓存中,对吗?所以我正在阅读回信的描述,根据维基百科的说法如下: 最初,只对缓存进行写入。对备份存储的写入被推迟,直到包含数据的缓存块即将被新内容修改/替换 所以缓存块的内存可以被替换的唯一时间是在读取期间,对吗?写操作只会改变内存中某个特定位置的数据,如果是命中的话,这将在缓存块中,但它会使块中的实际内存位置保持不变,对吗 这是我对

我正在阅读有关缓存写策略的文章,我只想知道我是否正确理解了这一点

当读取导致缓存未命中时,它将获取该内存块并将其放入缓存。缓存写未命中意味着程序要写入的内存位置不在缓存中,对吗?所以我正在阅读回信的描述,根据维基百科的说法如下:

最初,只对缓存进行写入。对备份存储的写入被推迟,直到包含数据的缓存块即将被新内容修改/替换

所以缓存块的内存可以被替换的唯一时间是在读取期间,对吗?写操作只会改变内存中某个特定位置的数据,如果是命中的话,这将在缓存块中,但它会使块中的实际内存位置保持不变,对吗

这是我对它的理解,我只是想确保它是正确的

编辑:等等,我想在缓存未命中期间,它也将替换/更新缓存块。…

实际上解释得很好。一方面,回写与直写定义了将数据写入备份存储器(也称为主存)的时间:

直写–同步写入缓存和备份存储。 回写或回写–最初,只对缓存进行写入。对备份存储的写入被推迟,直到包含数据的缓存块即将被新内容修改/替换。 另一方面,write allocate vs.no write allocate定义了如何处理写未命中,即是否将来自备份存储的数据带入缓存:

Write allocate aka Write-fetch-on-Write–丢失写入位置的数据被加载到缓存中,然后执行写入命中操作。在这种方法中,写入未命中与读取未命中类似。 无写分配又名写无分配或回写–漏写位置的数据不会加载到缓存,而是直接写入备份存储。在这种方法中,只缓存系统读取。 事实上,这解释得很好。一方面,回写与直写定义了将数据写入备份存储器(也称为主存)的时间:

直写–同步写入缓存和备份存储。 回写或回写–最初,只对缓存进行写入。对备份存储的写入被推迟,直到包含数据的缓存块即将被新内容修改/替换。 另一方面,write allocate vs.no write allocate定义了如何处理写未命中,即是否将来自备份存储的数据带入缓存:

Write allocate aka Write-fetch-on-Write–丢失写入位置的数据被加载到缓存中,然后执行写入命中操作。在这种方法中,写入未命中与读取未命中类似。 无写分配又名写无分配或回写–漏写位置的数据不会加载到缓存,而是直接写入备份存储。在这种方法中,只缓存系统读取。
+1技术上,写入分配不需要从备份存储加载数据;对于每字节有效位,任何写操作都可以分配一条缓存线,但不能从后备存储器读取,数据缓存块零/分配指令也可以避免所有权读取。旁注:急切写回在学术上被视为带宽使用优化,早期写回利用空闲内存通道或打开的DRAM页面。这还可以通过允许关闭更多缓存来节省能源,或者关闭电源,直到SECDE仅对ED足够,而不需要写回。哦,并且没有写分配静态缓存写入,即,不仅缓存系统读取,而且在对同一缓存块进行读取之前,它不会缓存写入。在这种方法中,一个块只在读取时分配/输入到缓存中。写入命中将有其值缓存。这显然是必要和适当的,但初学者可能会误解甚至有点含糊不清的语句。+1从技术上讲,write allocate不需要从备份存储加载数据;对于每字节有效位,任何写操作都可以分配一条缓存线,但不能从后备存储器读取,数据缓存块零/分配指令也可以避免所有权读取。旁注:急切写回在学术上被视为带宽使用优化,早期写回利用空闲内存通道或打开的DRAM页面。这还可以通过允许关闭更多缓存来节省能源,或者关闭电源,直到SECDED仅对ED足够,而不需要写回。哦,并且没有写分配仍然缓存写入,即,不仅缓存系统读取,在读取完成之前,它根本不会缓存写入 到同一缓存块。在这种方法中,一个块只在读取时分配/输入到缓存中。写入命中将有其值缓存。这显然是必要和适当的,但初学者可能会误解甚至是适度含糊的陈述。