第一次设计高速缓存时,是将其随机映射到一些内存地址,还是在开始时是空的,并且仅在处理器加载或存储指令之后才填充内存/较低级别的高速缓存数据?
我有这个问题,因为我已经为L1缓存设计了RTL。因此,我应该将其保留为空白,等待任何处理器请求读/写,还是只用一些内存映射数据填充它,然后据此理解命中/未命中?
首先设计?您是说先上电吗?正常的方法是从所有无效标签开始(因此,数据数组中的内容或其他任何地方都没有关系)。
不难想象,如果缓存中的所有数据都是随机初始化的,那么某些行将是有效的,不是肮脏的,并且其内容与RAM / ROM中的实际内容不同,因此显然您不应该这样做。例如,在这个不同步的L1中击中引导ROM代码将是不好的!
如果在开机时将内存的任何部分初始化为已知的内容(如全零),则理论上您可以初始化缓存标签和数据,以便缓存该内存。
如果您将缓存初始化为对于与内存中的内存不匹配的任何地方都有效,则需要将其初始化为脏磁盘,这将在驱逐各行以支持CPU实际需要时触发回写操作,从而使没道理
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句