Memory ARM中瞬时和非瞬时存储器的概念和优点?

Memory ARM中瞬时和非瞬时存储器的概念和优点?,memory,arm,cpu-architecture,mmu,Memory,Arm,Cpu Architecture,Mmu,在ARM体系结构手册中提到,缓存可以是瞬态的,也可以是非瞬态的,并且是实现定义的。我无法理解有关缓存的瞬时内存的概念和用法。我正在尝试编写启用MMU的软件,我已经启用了一级缓存和二级缓存。我正在使用LPAE。我知道MAIR寄存器控制这个属性。我没有得到任何关于它的好文件 我想知道这个概念,以便我想检查一下将其应用于当前设计的可行性 arm-v7-a-r第134页 “对于包含大物理地址扩展的ARMv7-A实现,可缓存正常内存区域是否支持临时属性是由实现定义的。如果实现支持此属性,则正常内存区域的可

在ARM体系结构手册中提到,缓存可以是瞬态的,也可以是非瞬态的,并且是实现定义的。我无法理解有关缓存的瞬时内存的概念和用法。我正在尝试编写启用MMU的软件,我已经启用了一级缓存和二级缓存。我正在使用LPAE。我知道MAIR寄存器控制这个属性。我没有得到任何关于它的好文件

我想知道这个概念,以便我想检查一下将其应用于当前设计的可行性

arm-v7-a-r第134页

“对于包含大物理地址扩展的ARMv7-A实现,可缓存正常内存区域是否支持临时属性是由实现定义的。如果实现支持此属性,则正常内存区域的可能缓存属性集变为:
•直写可缓存、非瞬态
•回写可缓存、非瞬态
•通过可缓存的瞬态写入
•回写可缓存,瞬时

•不可缓存。”

在您引用的零件之后不久,ARM说:

transient属性表示缓存的好处是时间相对较短,因此最好限制分配,以避免可能丢弃其他不太短暂的条目

换句话说,这是对缓存系统的提示,当缓存具有可预测的替换策略(例如LRU或循环)时,可以通过直接分配到已经非常接近收回的位置来实现。另一种选择是暂时性/非暂时性访问只分配到较低级别的缓存中,因为这些缓存通常表示比一级缓存中的热门数据更不常用的数据

这在理论上对某些流式工作负载有好处——例如,通过将大型数据缓冲区映射为可缓存但暂时的,通过这些缓冲区工作的处理算法在访问位置(即同一行中的多个命中)方面仍然可以从缓存中获益以及针对常规访问模式自动预取后续行,但不会影响和中断缓存其余部分中的指令获取、堆栈访问等。然而,另一方面,大多数现代缓存足够聪明,至少能够检测到持续的定期写入访问模式,并自动进入非分配流模式,这完全透明地提供了一些相同的好处,而不需要程序员处理属性

从实践的角度来看,最重要的问题是它是否值得担心:一般来说,它不值得担心。快速浏览了一些TRM,Cortex-A7;皮质-A15;而Marvell的v7核心(per the)似乎根本没有提到它,因此在没有任何特定于实现的定义的情况下,我猜他们可能也会忽略它(特别是因为他们还提到了伪随机缓存替换策略)。我不知道Qualcomm Krait或任何其他实现,因为还没有公开文档


从我对CPU设计所知甚少的情况来看,瞬态属性给人的印象是,它是一种特性,不仅在某个特定的领域之外没有任何好处,而且还为设计和验证增加了相对较大的成本。换句话说,我怀疑没有一个非常具体的需求的人会去那里,尽管事实上它存在于架构中,这意味着几乎可以肯定有一些硬件在那里运行一些工作负载,这对于实现它来说是更好的。除非你已经知道你有那个硬件和那个工作负载,否则我倾向于忘记它。

随机猜测:“瞬态”意味着内存区域往往没有有用的时间局部性。i、 您可以缓存它,但可能不应该从其他区域逐出线。e、 g.可能在集合的LRU位置(而不是通常的MRU位置)的缓存中插入“瞬态”行,因此它是下一个被逐出的行。您是否看到引用部分后面的句子?“transient属性表示缓存的好处是时间相对较短,因此最好限制分配,避免丢弃其他不太短暂的条目。”-这就是它的全部内容。“我正在尝试实现一个MMU”是指您实际上正在设计硬件,还是仅仅编写使用MMU的软件?在后一种情况下,首先要考虑的是您所针对的系统是否支持瞬态提示;大多数人没有。我只是在“编写使用MMU的软件”。您的意思是应该有特殊的硬件支持来实现它,还是说它是由实现定义的。我的第一个评论是基于这样一个假设,即您正在设计硬件来实现这些语义。基于Notlikethat的评论,我似乎是对的,我的建议将是合理的实施。假设硬件是这样工作的。它不会基于计时器无理由地故意使缓存无效;这没有好处。在编写软件时,可能只是将重用价值低的数据放在一个“暂时”内存区域中。这非常详细。谢谢