ЯЗЫК И КОМПИЛЯТОР, КОТОРЫЕ ФОРМИРУЮТ СИНХРОННЫЕ ЦИФРОВЫЕ СХЕМЫ, КОТОРЫЕ ПОДДЕРЖИВАЮТ ПОРЯДОК ИСПОЛНЕНИЯ ПОТОКОВ

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