如何解决如果您在哪里重新排列内存地址缓存位分配,有什么区别吗?
向我提出的一个有趣的问题是,从标记,缓存索引,偏移量到缓存索引,标记,偏移量的内存地址重新安排是否会产生任何不同?如果内存地址的最高位现在是缓存索引而不是标签,是否可能会出现任何重大问题?那些cpu如何访问这些位?顺序还是全部?
解决方法
三个因素使按更高有效位索引高速缓存没有吸引力。首先,仅将更重要的位用于索引编制会倾向于增加冲突遗漏。在大于缓存块大小的粒度上,空间局部性是常见的(否则,适度大小的TLB将无效)。例如,使用多个缓存块的任何堆栈帧都将发生冲突,用尽关联性,相邻帧也将发生冲突。 (如果将空间局部性限制在缓存块内,TLB的效率将大大降低。这也将阻止使用“预先验证的”标签(其中将TLB条目号用于标签),就像一些Itanium实现一样;“ {{ 3}}”(AndréSeznec,1996年)描述了基本概念。
第二,对于允许同义词的虚拟地址系统(将物理页面映射到两个不同的虚拟地址),不能使用仅使用页面偏移量内的位将所有同义词映射到同一集合的直接技术。还可以使用其他技术来处理同义词,但是这种方法是常用的。
第三,通过使用较低有效位索引高速缓存,可以在地址计算完成之前开始高速缓存访问。由于base + offset是常见的寻址模式,因此通常会针对延迟进行优化。加法是从最低有效位到最高有效位进行的,因此结果的最低有效位可以更早地获得。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。