gpt4 book ai didi

mips - MIPS r10000 如何获取隐藏指令缓存延迟?

转载 作者:行者123 更新时间:2023-12-03 18:33:45 26 4
gpt4 key购买 nike

我正在研究 mips r10000 的不同管道阶段.论文说
该处理器每次从指令高速缓存中获取 4 条指令。但是指令缓存的延迟必须超过一个周期,虽然我不知道指令缓存的确切命中延迟,L1数据缓存的命中延迟在Haswell处理器大约是 4 个周期。

因此,如果我们假设 L1 指令缓存延迟为 3-4 个周期,处理器如何每个周期获取 4 条指令?

最佳答案

MIPS R10000 有一个单周期延迟指令高速缓存,并且可以在一个高速缓存 block 内获取四个指令的连续 block ,而没有对齐限制。

从机械上讲,这可能意味着它使用了至少部分独立寻址的四个 SRAM 组(可以共享缓存集地址解码)。
4 Bank Array of 16 Words

由于每个存储体都是可独立寻址的,如图所示,可以访问 16 个字中包含的任何四个字的连续序列。寻址行 [0, 0, 0, 0] 得到字 [0, 1, 2, 3](字 0-3); rows [1, 0 , 0, 0] 获取单词 [4, 1, 2, 3](单词 1-4); rows [1, 1, 0, 0] 获取单词 [4, 5, 2, 3](单词 2-5); ...; rows [3, 3, 3, 2] 获取单词 [12, 13, 14, 11](单词 11-14); rows [3, 3, 3, 3] 获取单词 [12, 13, 14, 15](单词 12-15)。

(相同的存储可以跨越缓存 block 边界,但随后必须并行确认两个缓存 block 命中。对先前访问方式的内存会将其减少为对较大缓存 block 中顺序访问的常见情况的一组检查; 一组使用memoized方式,另一组在进入新的缓存 block 时执行正常检查。页面交叉是类似的问题。)

(多指令获取的常见替代方案确实具有自然对齐 block 的对齐约束,例如 16 字节。)

在第二个流水线阶段(解码)检测到分支之前,该处理器不会重定向指令获取,因此即使预测正确,所采用的分支也会引入一个周期气泡。由于执行在第四个流水线阶段开始并且指令被乱序执行,因此可能直到某些周期之后才能确定不正确的预测。 (错误预测的采用分支可能会解码已在采用分支气泡中提取的指令,因为这些指令存储在“恢复缓存”中。)

指令缓冲可以消除此类危险,因为由于数据依赖性和其他危险,吞吐量很少接近最大值。

通常,高速缓存可以在每次提取时提供多个字(自然对齐限制有助于单个存储体提供 block )或在每个周期被多次访问(例如,比流水线的其他部分更深入地流水线化指令高速缓存或使用昂贵的多端口SRAM)。

只要每个周期都提供一个新地址,就可以在每个周期提取多个连续指令。如果每个周期有两个地址可用(预测),则可以在同一个周期中获取已采取分支之后的指令。 (另一种减少分支损失的方法——并提供其他分支后优化机会——是使用跟踪缓存。)

关于mips - MIPS r10000 如何获取隐藏指令缓存延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52244725/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com