※ 引述《imadog (凹呜)》之铭言:
突然想到一个问题
请问BHT跟BTB 是位于CPU里面吗?
还是是memory的一部分啊~
当然是放在 CPU 里呀,先想清楚 BHT (Branch History Table)
跟 BTB (Branch Target Buffer) 是拿来干嘛的吧?
如果你今天放在 Memory 里,你预测 Branch 的 Target Address
还要过数百个 Cycles 才能拿到,那这种最佳化根本没有用啊!
-
一个很容易搞混的观念是,很多人误以为 BTB 一定要跟 BHT 搭配在一起,
但不是的。
BHT 主要是拿来记录 Branch 决定的 "结果",
(如果是 jump 就会是 always jump)
而 BTB 是拿来给 Instruction Fetch Unit 参考下一道指令要抓哪里。
两个通常都是用 PC Address 当作 index,也都是拿来尽量降低 Branch 造成的 Overhead。