想到啥说啥吧,首先就是2-taken BTB,顾名思义:就是1cycle predicts两个jump的branch。其意义就是提高fetch的efficiency,减少Front-end的bubble。然后你可能好奇BTB是啥,BTB就是(Branch Target Buffer):存储分支指令的目标地址和必要的预测信息,以在下一次遇到同一分支指令时能迅速给出跳转位置。你可以理解为BPU的cache。这个2-taken目前X86俩兄弟早都做了,玩的很花,intel是在32-entry内实现3-4个taken,AMD是在1k-1.5k-entry的L0 BTB的特殊情况下实现2-taken。想法挺好的,就是得拿register去堆,area efficiency不咋滴。ARM这边,对于Apple及Apple类似物来说,目前都还没做,毕竟做2-taken,你得能把timing能closure上。不仅如此你还需要考虑logic complex,and 你需要去改pipeline,(我好奇Nuvia家Apple类似物,想去做server,连2-taken都没做,是能力不行吗),最后就是前面提到的,如果需要large capacity的2-taken BTB,你可能还得用register,那么对area也是考验。ARM公版也是做了2-taken,毕竟ARM公版要考虑server,做2-taken可以适应server的high instructions stress的environment。我记得是在512-enrty的L0 BTB里做的2-taken。WAWEI TSV,这个倒还没做,不清楚为啥,可能和工艺有关吧。然后隔壁RV的香山,MIPS类似物(龙芯那ISA)这俩我记得好像有吧,没印象了,也没关注。