СПОСОБ И УСТРОЙСТВО ДЛЯ ПРЕДСКАЗАНИЯ ВЕТВЛЕНИЙ

1. Способ в блоке (500) предсказания ветвлений для предсказания следующей команды выбранной ветви в процессорном блоке (100), содержащем блок (500) предсказания ветвлений, при этом способ содержит этапы, на которых:
принимают счетчик команд, соответствующий адресу команды (действие 201);
определяют поисковый счетчик команд на основе принятого счетчика команд (действие 202);
при помощи поискового счетчика команд находят в памяти (504) истории вариантов по меньшей мере один указатель ветвления, сконфигурированный для указания по меньшей мере одной команды предсказанной выбранной ветви, которая входит в выполняемую ветвь (действие 203);
выбирают первый найденный указатель ветвления в качестве указания первой команды предсказанной выбранной ветви в выполняемой ветви (действие 204);
при помощи первого найденного указателя ветвления, извлекают из памяти (504) истории вариантов адрес источника ветвления для первой команды предсказанной выбранной ветви (действие 205); и
когда извлеченный адрес источника ветвления является адресом источника ветвления, ближайшим к поисковому счетчику команд,
индексируют буфер (506) адресатов ветвлений при помощи извлеченного адреса источника ветвления (действие 207),
выводят адресат ветвления, извлеченный из буфера (506) адресатов ветвлений, в качестве следующего счетчика команд (действие 208) и
останавливают предсказание следующей команды выбранной ветви (действие 209).
2. Способ по п. 1, дополнительно содержащий этап, на котором
если извлеченный адрес источника ветвления не является адресом источника ветвления, ближайшим к поисковому счетчику команд, продолжают поиск (действие 210).
3. Способ по п. 1, в котором нахождение по меньшей мере одного указателя ветвления в памяти (504) истории вариантов для по меньшей мере одного указателя ветвления выполняется одновременно, в течение одного такта, для множества команд, содержащихся в слове памяти команд.
4. Способ по п. 1, дополнительно содержащий этапы, на которых:
буферизуют по меньшей мере одно обновление памяти (504) истории вариантов или по меньшей мере одно обновление буфера (506) адресатов ветвлений в FIFO-памяти (508); и
обновляют память (504) истории вариантов или буфер (506) адресатов ветвлений буферизованным по меньшей мере одним обновлением, когда в памяти (504) истории вариантов или буфере (506) адресатов ветвлений не осуществляется поиск.
5. Способ по п. 1, который выполняется в течение двух тактов процессорного блока (100).
6. Блок (500) предсказания ветвлений для предсказания следующей команды выбранной ветви в процессорном блоке (100),
содержащем блок (500) предсказания ветвлений, при этом блок (500) предсказания ветвлений отличается тем, что содержит:
память (504) истории вариантов, содержащую множество адресов источника ветвления и множество указателей ветвления, причем указатель ветвления сконфигурирован для указания по меньшей мере одной команды предсказанной выбранной ветви для адреса источника ветвления;
буфер (506) адресатов ветвлений, содержащий множество адресатов ветвлений; и
логическая схема (502) предсказания ветвлений, соединенная с памятью (504) истории вариантов и с буфером (506) адресатов ветвлений, при этом логическая схема (502) предсказания ветвлений сконфигурирована:
принимать счетчик команд, соответствующий начальному адресу слова памяти команд,
определять поисковый счетчик команд на основе принятого счетчика команд;
при помощи поискового счетчика команд находить в памяти (504) истории вариантов по меньшей мере один указатель ветвления, причем этот по меньшей мере один указатель ветвления сконфигурирован для указания по меньшей мере одной команды предсказанной выбранной ветви, которая входит в выполняемую ветвь;
выбирать первый найденный указатель ветвления в качестве указания первой команды предсказанной выбранной ветви в выполняемой ветви;
при помощи первого найденного указателя ветвления извлекать
из памяти (504) истории вариантов адрес источника ветвления для первой команды предсказанной выбранной ветви;
если извлеченный адрес источника ветвления является ближайшим адресом источника ветвления к поисковому счетчику команд,
индексировать буфер (506) адресатов ветвлений при помощи извлеченного адреса источника ветвления,
выводить извлеченный адресат ветвления из буфера (506) адресатов ветвлений в качестве следующего счетчика команд и
останавливать предсказание следующей команды выбранной ветви.
7. Блок (500) предсказания ветвлений по п. 6, отличающийся тем, что логическая схема (502) предсказания ветвлений, дополнительно сконфигурирована:
когда извлеченный адрес источника ветвления не является адресом источника ветвления, ближайшим к поисковому счетчику команд, продолжать поиск адреса источника ветвления, который является адресом источника ветвления, ближайшим к поисковому счетчику команд.
8. Блок (500) предсказания ветвлений по п. 6, отличающийся тем, что логическая схема (502) предсказания ветвлений сконфигурирована находить по меньшей мере один указатель ветвления, содержащийся в памяти (504) истории вариантов, одновременно для множества команд, содержащихся в слове памяти команд.
9. Блок (500) предсказания ветвлений по п. 6, отличающийся тем, что логическая схема (502) предсказания ветвлений
сконфигурирована находить по меньшей мере один указатель ветвления в памяти (504) истории вариантов посредством:
отображения поискового счетчика команд на индекс i истории вариантов и,
нахождения при помощи индекса i истории вариантов по меньшей мере одного указателя ветвления, причем этот по меньшей мере один указатель ветвления содержится в элементе памяти (504) истории вариантов, соответствующем индексу i истории вариантов.
10. Блок (500) предсказания ветвлений по п. 6, отличающийся тем, что содержит:
FIFO-память (508), сконфигурированную сохранять по меньшей мере одно обновление памяти (504) истории вариантов или буфера (506) адресатов ветвлений,
при этом логическая схема (502) предсказания ветвлений сконфигурирована буферизовать по меньшей мере одно обновление памяти (504) истории вариантов или буфера (506) адресатов ветвлений в FIFO-памяти (508) и сконфигурирована обновлять память (504) истории вариантов или буфер (506) адресатов ветвлений буферизованным по меньшей мере одним обновлением, когда в памяти (504) истории вариантов не осуществляется поиск или когда буфер (506) адресатов ветвлений не индексируется.
11. Блок (500) предсказания ветвлений по п. 10, отличающийся тем, что упомянутое по меньшей мере одно обновление относится к по меньшей мере одному новому или обновленному адресу источника ветвления, к по меньшей мере одной новой или обновленной команде выбранной ветви или к по меньшей мере одному новому или обновленному адресату ветвления.
12. Блок (500) предсказания ветвлений по п. 6, отличающийся тем, что логическая схема (502) предсказания ветвлений сконфигурирована запускать предсказание следующей команды выбранной ветви по приему сигнала нового ветвления, указывающего, что должно быть выполнено предсказание следующей команды выбранной ветви.
13. Процессорный блок (100), содержащий блок (500) предсказания ветвлений по любому из пп. 6-12.
14. Интегральная схема, содержащая блок (100) обработки по п. 13.
15. Устройство связи, содержащее интегральную схему по п. 14.