如果您在哪里重新排列内存地址缓存位分配,有什么区别吗?

问题描述

向我提出的一个有趣的问题是,从标记,缓存索引,偏移量到缓存索引,标记,偏移量的内存地址重新安排是否会产生任何不同?如果内存地址的最高位现在是缓存索引而不是标签,是否可能会出现任何重大问题?那些cpu如何访问这些位?顺序还是全部?

解决方法

三个因素使按更高有效位索引高速缓存没有吸引力。首先,仅将更重要的位用于索引编制会倾向于增加冲突遗漏。在大于缓存块大小的粒度上,空间局部性是常见的(否则,适度大小的TLB将无效)。例如,使用多个缓存块的任何堆栈帧都将发生冲突,用尽关联性,相邻帧也将发生冲突。 (如果将空间局部性限制在缓存块内,TLB的效率将大大降低。这也将阻止使用“预先验证的”标签(其中将TLB条目号用于标签),就像一些Itanium实现一样;“ {{ 3}}”(AndréSeznec,1996年)描述了基本概念。

第二,对于允许同义词的虚拟地址系统(将物理页面映射到两个不同的虚拟地址),不能使用仅使用页面偏移量内的位将所有同义词映射到同一集合的直接技术。还可以使用其他技术来处理同义词,但是这种方法是常用的。

第三,通过使用较低有效位索引高速缓存,可以在地址计算完成之前开始高速缓存访​​问。由于base + offset是常见的寻址模式,因此通常会针对延迟进行优化。加法是从最低有效位到最高有效位进行的,因此结果的最低有效位可以更早地获得。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...