ЛОГИКА ОБРАБОТКИ И СПОСОБ ДИСПЕТЧЕРИЗАЦИИ КОМАНД ОТ МНОГОЧИСЛЕННЫХ НИТЕЙ

1. Процессор, содержащий:
первую логику для выборки потока команд, разделенного на множество нитей, для дальнейшей их загрузки в один или более портов выполнения;
вторую логику для идентификации множества ожидающих команд, причем каждая ожидающая команда находится в соответствующей головной части одной из нитей;
третью логику для определения, какие из нитей являются активными;
четвертую логику для определения программной очередности каждой из ожидающих команд; и
пятую логику для согласования ожидающих команд с портами выполнения на основании программной очередности каждой из ожидающих команд и того, является ли активной каждая нить.
2. Процессор по п. 1, дополнительно содержащий:
шестую логику для определения привязки порта одной из ожидающих команд к одному из портов выполнения; и
седьмую логику для согласования ожидающих команд с портами выполнения на основании программной очередности каждой из ожидающих команд, того, является ли активной каждая нить, и привязки порта.
3. Процессор по п. 1, в котором пятая логика для согласования ожидающих команд с портами выполнения дополнительно выполнена с возможностью выполнения в пределах одного тактового цикла процессора.
4. Процессор по п. 1, дополнительно содержащий шестую логику для выработки "one-hot" вектора для заданного одного из портов выполнения, причем вектор включает в себя один положительный бит в индексе одной из ожидающих команд, подлежащей назначению заданному порту выполнения.
5. Процессор по п. 1, дополнительно содержащий:
шестую логику для сохранения ожидающих команд в первом каскаде;
седьмую логику для оценки того, доступны ли необходимые данные для выполнения ожидающих команд;
восьмую логику для продвижения ожидающих команд во второй каскад на основании оценки, что доступны необходимые данные для выполнения ожидающих команд; и
девятую логику для сохранения бита достоверности для каждой из ожидающих команд во втором каскаде, причем бит достоверности показывает, является ли активной соответствующая нить и доступны ли необходимые данные для выполнения соответствующей ожидающей команды.
6. Процессор по п. 1, дополнительно содержащий:
шестую логику для выполнения матричного сравнения программной очередности каждой из ожидающих команд с программной очередностью других ожидающих команд и сохранения результатов в логической матрице, причем каждая из ожидающих команд представлена соответствующей строкой в логической матрице, при этом приоритет каждой из ожидающих команд представлен количеством положительных битов в соответствующей строке; и
седьмую логику для корректировки положительных битов для каждой из соответствующих ожидающих команд в логической матрице для получения модифицированной логической матрицы, связанной с одним из портов выполнения, причем корректировка основана на том, является ли активной соответствующая нить.
7. Процессор по п. 6, дополнительно содержащий восьмую логику для получения "one-hot" вектора диспетчеризации на основании модифицированной логической матрицы и информации о привязке портов, причем вектор включает в себя один положительный бит в индексе одной из ожидающих команд, подлежащей назначению одному из портов выполнения, связанному с модифицированной логической матрицей.
8. Способ, выполняющийся в процессоре и содержащий этапы, на которых:
выбирают поток команд, разделенных на множество нитей, для загрузки в один или более портов выполнения;
идентифицируют множество ожидающих команд, причем каждая ожидающая команда находится в соответствующей головной части одной из нитей;
определяют, какие нити являются активными;
определяют программную очередность каждой из ожидающих команд; и
согласуют ожидающие команды с портами выполнения на основании программной очередности каждой ожидающей команды и того, является ли активной каждая нить.
9. Способ по п. 8, дополнительно содержащий этапы, на которых:
определяют привязку порта одной из ожидающих команд к одному из портов выполнения; и
согласуют ожидающие команды с портами выполнения на основании программной очередности каждой ожидающей команды, того, является ли активной каждая нить, и привязки порта.
10. Способ по п. 8, в котором согласование ожидающих команд с портами выполнения выполняют в пределах одного тактового цикла процессора.
11. Способ по п. 8, дополнительно содержащий этап, на котором вырабатывают "one-hot" вектор для заданного одного из портов выполнения, причем вектор включает в себя один положительный бит в индексе одной из ожидающих команд, подлежащей назначению заданному порту выполнения.
12. Способ по п. 8, дополнительно содержащий этапы, на которых:
сохраняют ожидающие команды в первом каскаде;
оценивают, доступны ли необходимые данные для выполнения ожидающих команд;
продвигают ожидающие команды во второй каскад на основании оценки, что доступны необходимые данные для выполнения ожидающих команд; и
сохраняют бит достоверности для каждой из ожидающих команд во втором каскаде, причем бит достоверности указывает, является ли активной соответствующая нить и доступны ли необходимые данные для выполнения соответствующей ожидающей команды.
13. Способ по п. 8, дополнительно содержащий этапы, на которых:
выполняют матричное сравнение программной очередности каждой из ожидающих команд с программной очередностью других ожидающих команд и сохраняют результаты в логической матрице, причем каждая из ожидающих команд представлена соответствующей строкой в логической матрице, при этом приоритет каждой из ожидающих команд представлен количеством положительных битов в соответствующей строке; и
корректируют положительные биты для каждой из соответствующих ожидающих команд в логической матрице для получения модифицированной логической матрицы, связанной с одним из портов выполнения, причем корректировку выполняют на основании того, является ли активной соответствующая нить.
14. Система, содержащая:
первую логику для выборки потока команд, разделенного на множество нитей, для загрузки в один или более портов выполнения;
вторую логику для идентификации множества ожидающих команд, причем каждая ожидающая команда находится в соответствующей головной части одной из нитей;
третью логику для определения того, какие из нитей являются активными;
четвертую логику для определения программной очередности каждой из ожидающих команд; и
пятую логику для согласования ожидающих команд с портами выполнения на основании программной очередности каждой из ожидающих команд и того, является ли активной каждая нить.
15. Система по п. 14, дополнительно содержащая:
шестую логику для определения привязки порта одной из ожидающих команд к одному из портов выполнения; и
седьмую логику для согласования ожидающих команд с портами выполнения на основании программной очередности каждой ожидающей команды, того, является ли активной каждая нить, и привязки порта.
16. Система по п. 14, в которой пятая логика для согласования ожидающих команд с портами выполнения дополнительно выполнена с возможностью выполнения в пределах одного тактового цикла процессора.
17. Система по п. 14, дополнительно содержащая шестую логику для выработки "one-hot" вектора для заданного одного из портов выполнения, причем вектор включает в себя один положительный бит в индексе одной из ожидающих команд, подлежащей назначению заданному порту выполнения.
18. Система по п. 14, дополнительно содержащая:
шестую логику для сохранения ожидающих команд в первом каскаде;
седьмую логику для оценки того, доступны ли необходимые данные для выполнения ожидающих команд;
восьмую логику для продвижения ожидающих команд во второй каскад на основании оценки, что доступны необходимые данные для выполнения ожидающих команд; и
девятую логику для сохранения бита достоверности для каждой из ожидающих команд во втором каскаде, при этом бит достоверности указывает, является ли активной соответствующая нить и доступны ли необходимые данные для выполнения соответствующей ожидающей команды.
19. Система по п. 14, дополнительно содержащая:
шестую логику для выполнения матричного сравнения программной очередности каждой из ожидающих команд с программной очередностью других ожидающих команд и сохранения результатов в логической матрице, причем каждая из ожидающих команд представлена соответствующей строкой в логической матрице, при этом приоритет каждой из ожидающих команд представлен количеством положительных битов в соответствующей строке; и
седьмую логику для корректировки положительных битов для каждой из соответствующих ожидающих команд в логической матрице для получения модифицированной логической матрицы, связанной с одним из портов выполнения, причем корректировка основана на том, является ли активной соответствующая нить.
20. Система по п. 14, дополнительно содержащая восьмую логику для получения "one-hot" вектора диспетчеризации на основании модифицированной логической матрицы и информации о привязке портов, при этом вектор включает в себя один положительный бит в индексе одной из ожидающих команд, подлежащей назначению одному из портов выполнения, связанному с модифицированной логической матрицей.