СОВМЕСТНО ИСПОЛЬЗУЕМЫЕ РЕСУРСЫ В УСТРОЙСТВЕ ОБРАБОТКИ ДАННЫХ ДЛЯ ВЫПОЛНЕНИЯ МНОЖЕСТВА ПОТОКОВ

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