Я читал раздел предсказания динамического ветвления в главе 5 книги Computer Organization and Design: The Hardware/Software Interface 5th Edition Паттерсона и Хеннесси, когда наткнулся на следующую диаграмму состояний 2-битного предсказателя:
2-битный предсказатель должен изменить свое предсказание после того, как он предсказал дважды неправильно. Но согласно этой диаграмме, когда мы начинаем с нижнего левого состояния, если машина дважды предсказывает «НЕ ВЗЯТ» тогда, когда ветвь должна была быть «ВЗЯТА», тогда достигается верхнее правое состояние ПРОГНОЗ ВЫПОЛНЕН. Однако здесь машина изменит состояние на правый нижний PREDICT NOT TAKEN, даже если она предскажет неправильно, когда ветвь должна была быть «НЕ ВЗЯТА» только один раз.
Разве это не неправильное поведение и означает ли это, что конечный автомат неверен или я что-то упускаю?
В нижнем темном состоянии NOT TAKEN, когда ветвь TAKEN дважды, вы можете видеть, что достигнутое состояние является светлым «неуверенным» состоянием, тогда как, по моему мнению, оно должно было быть темным «уверенным» состоянием, так как ветвь проделал одно и то же действие два раза подряд.