2010-03-28 60 views
2

考慮單個靜態分支的以下實際結果序列。 T意味着分支被採取。 N表示不採取分支。對於這個問題,假設這是該程序中唯一的分支。分支預測

T T [T N T N T T [T N T N T T [T N T N

假設使用分支歷史-即,一比特BHR的一個位兩級分支預測。由於程序中只有一個分支,因此BHR如何與分支機構串聯以建立BHT索引並不重要。假定BHT使用一位計數器,並且所有條目再次被初始化爲N.該序列中的哪個分支將被錯誤預測?使用下表。 alt text http://img641.imageshack.us/img641/7117/branch.jpg

現在我不是問這個問題的答案,而不是指南和指針。兩級分支預測指標意味着什麼?它是如何工作的? BHR和BHT代表什麼?

回答

10

我對現代的CPU微架構讀昂納霧的文本在http://www.agner.org/optimize/#manuals,具體而言,第三個以後只真正得到分支預測:http://www.agner.org/optimize/microarchitecture.pdf

如果要善於低級編程,你應該大概讀一遍。如果您只想知道分支預測器的工作方式,請閱讀微體系結構手冊中有關分支預測的章節。它使用來自過去處理器的真實分支預測器來解釋事物是如何工作的,從概念上簡單的預測器開始,例如在P1中找到的預測器,並逐漸添加更多特性,直到找到當今處理器中的怪物。

+0

您的文章中哪種分支類型是上述問題? – aherlambang 2010-03-29 14:03:42

+0

這是一個自適應兩級預測器,具有一點本地分支歷史記錄,就像在PMMX及以上版本中一樣。 – 2010-03-30 03:14:01

2

維基百科:Branch predictor

一個兩級自適應預測 記住上次n的歷史 出現分支,並使用一個 飽和計數器爲每個 可能的2n歷史模式。

BHR:分支歷史寄存器
BHT:分支歷史表

這兩個詞的兩種解釋,簡單和沒有提及他們的首字母縮寫,在上面鏈接的文章部分。