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

时间:2018-09-09 12:52:22

标签: mips cpu-architecture processor

我正在研究mips r10000的不同流水线阶段。报纸说 该处理器每次每个周期从指令缓存中提取4条指令。但是指令缓存的延迟必须超过一个周期,尽管我不知道指令缓存的确切命中延迟,Haswell处理器中L1数据缓存的命中延迟大约是4个周期。

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

1 个答案:

答案 0 :(得分:6)

MIPS R10000具有一个单周期等待时间指令缓存,可以在没有对齐约束的情况下在缓存块内获取四个指令的连续块。

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

由于每个存储体都是可独立寻址的,因此从图中可以看出,可以访问包含在十六个字中的四个字的任何连续序列。对行[0,0,0,0]进行寻址将得到单词[0,1,2,3](单词0-3);第[1,0,0,0]行获取单词[4,1,2,3](单词1-4);第[1,1,0,0]行获取单词[4,5,2,3](单词2-5); ...; [3、3、3、2]行获得单词[12、13、14、11](单词11-14);行[3,3,3,3]获取单词[12,13,14,15](单词12-15)。

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

(多指令提取的常见替代方法的对齐约束确实是自然对齐的块,例如16个字节。)

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

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

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

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