瞬态和非瞬态存储器在ARM中的概念和优点?

ach*_*ora 1 memory arm cpu-architecture mmu

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

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

arm-v7-ar第134页

“对于包含大物理地址扩展名的ARMv7-A实现,将由IMPLEMENTATIONATION定义是否为可缓存的Normal内存区域支持Transient属性。如果实现支持此属性,则Normal内存区域的可能的可缓存性属性集将变为:
•直写式可缓存,非瞬态
•写回式可缓存,非瞬态
•直写式可缓存,瞬态
•回写式可缓存,瞬态
•不可缓存。”

Not*_*hat 5

ARM ARM在您引用该部分之后不久说:

临时属性表示缓存的好处是相对较短的时间,因此最好限制分配,以避免可能抛出其他较少临时的条目。

换句话说,这是对缓存系统的提示。正如Peter在评论中建议的那样,当缓存具有可预测的替换策略(例如LRU或循环)时,可以通过直接分配到已经非常接近逐出的位置来实现。另一种选择是将临时/非临时访问仅分配给较低级别​​的缓存,因为这些访问通常表示比L1中热门内容少使用的数据。

从理论上讲,这对某些流类型的工作负载有好处-例如,通过将大型数据缓冲区映射为可缓存但是瞬态的,通过这些缓冲区工作的处理算法仍可以从访问位置方面受益于缓存(即,在同一位置多次命中)行)和自​​动预取后续行(用于常规访问模式),但不会在其余缓存中影响和中断指令获取,堆栈访问等操作。但是,另一方面,大多数现代高速缓存都足够聪明,至少可以检测到持续的常规访问模式并自动进入非分配流式传输模式,这完全透明地提供了某些相同的好处,而无需程序员费心处理属性。

从实践的角度来看,最重要的问题是根本是否值得担心:总的来说,不是。快速浏览了一些TRM之后,Cortex-A7 完全忽略了瞬态属性如果尝试使用 Cortex-A15,它实际上可能会出问题Cortex-A12 / 17和Marvell的v7内核(根据公开的Armada XP功能规范)似乎根本没有提及,因此,在没有任何特定于实现的特定定义的情况下,我想他们也很可能会忽略它(尤其是因为他们还提到了伪随机缓存替换策略)。我不知道有关高通Krait或任何其他实现的信息,因为没有公开文档。

据我对CPU设计了解很少,瞬时属性给人的印象是这些功能之一,不仅在特定的利基市场之外没有任何好处,而且还增加了设计和验证的成本。换句话说,我怀疑有人会没有一个非常具体的要求,尽管事实上它已经存在于体系结构中,这意味着几乎肯定有一些硬件在运行某些工作负载,而这些工作负载更适合实现它。但是,除非您已经知道拥有硬件和工作量,否则我倾向于将其遗忘。