Por que a Intel mudou o mecanismo de previsão de ramificação estática ao longo desses anos?

Deaqui Eu sei que a Intel implementou vários mecanismos de previsão de ramificação estática nos últimos anos:

80486 idade: sempre não tomada

Pentium4 age: Tomada para trás / para frente não tomada

CPUs mais recentes como Ivy Bridge, Haswell tornaram-se cada vez mais intangíveis, vejaO experimento de Matt G aqui.

E a Intel parece não querer mais falar sobre isso, porque o material mais recente que encontrei no Intel Document foi escrito há cerca de dez anos.

Eu sei que a previsão de ramificação estática é (muito?) Menos importante que dinâmica, mas em algumas situações, a CPU será completamente perdida e os programadores (com compilador) geralmente são o melhor guia. É claro que essas situações geralmente não são gargalo de desempenho, porque uma vez que uma ramificação é frequentemente executada, o preditor dinâmico irá capturá-la.

Como a Intel não declara mais claramente o mecanismo de previsão dinâmica em seu documento, o builtin_expect () do GCC não pode fazer nada além de remover a ramificação improvável do caminho ativo.

Não estou familiarizado com o design da CPU e não sei exatamente qual mecanismo a Intel usa atualmente para seu preditor estático, mas ainda sinto que o melhor mecanismo para a Intel deve documentar claramente sua CPU 'para onde pretendo ir quando o preditor dinâmico falhar , para frente ou para trás ', porque geralmente o programador é o melhor guia da época.

Atualizar:
Eu achei que os tópicos que você mencionou vão gradualmente além do meu conhecimento. Alguns mecanismos de previsão dinâmica e detalhes internos da CPU estão envolvidos aqui, os quais não consigo aprender em dois ou três dias. Então, permita-me encerrar sua discussão temporariamente e recarregar.
Qualquer resposta ainda é bem-vinda aqui, talvez ajude mais pessoas

questionAnswers(3)

yourAnswerToTheQuestion