RU2818497C1 - Способ распределения данных по монофункциональным блокам процессора с управлением потоком данных - Google Patents
Способ распределения данных по монофункциональным блокам процессора с управлением потоком данных Download PDFInfo
- Publication number
- RU2818497C1 RU2818497C1 RU2024105067A RU2024105067A RU2818497C1 RU 2818497 C1 RU2818497 C1 RU 2818497C1 RU 2024105067 A RU2024105067 A RU 2024105067A RU 2024105067 A RU2024105067 A RU 2024105067A RU 2818497 C1 RU2818497 C1 RU 2818497C1
- Authority
- RU
- Russia
- Prior art keywords
- operand
- commands
- command
- execution
- values
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 23
- 230000005540 biological transmission Effects 0.000 claims abstract description 7
- 238000005070 sampling Methods 0.000 claims description 8
- 239000000126 substance Substances 0.000 abstract 1
- 238000004458 analytical method Methods 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 2
- 238000005206 flow analysis Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 1
- KRTSDMXIXPKRQR-AATRIKPKSA-N monocrotophos Chemical compound CNC(=O)\C=C(/C)OP(=O)(OC)OC KRTSDMXIXPKRQR-AATRIKPKSA-N 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Abstract
Изобретение относится к области вычислительной техники. Технический результат заключается в сокращении времени обработки цифровых данных процессорами с управлением потоком данных. Технический результат достигается за счет выполнения монофункциональными блоками исполнительного устройства подмножества команд и получения результатов значений операндов для последующих команд; передачи исполнительным устройством результатов выполнения команд для дублирования значений операндов в коммутатор операндов, записи в ячейки памяти данных и передачи посредством коммутатора команд в последующие команды, которые используют эти результаты в качестве значения первого или второго операнда, содержащего поле значения полученного результата, поля двух номеров команд, использующих данное значение в качестве операнда, и два поля указателей, определяющих характер использования рассматриваемого значения в качестве первого операнда и/или второго операнда; и выполнения монофункциональными блоками исполнительного устройства подмножества команд и получения результата выполнения параллельной программы с временной параметризацией и передачи результата для записи в память данных. 1 ил.
Description
Изобретение относится к области обработки цифровых данных с помощью электронных устройств, а именно к способам распределения данных по монофункциональным блокам, предназначенных для процессоров с управлением потоком данных (Data Flow Control (DFCJ) и может быть использовано для сокращения времени обработки цифровых данных процессорами DFC.
Известен способ автоматического распараллеливания программ, заключающийся в том, что в алгоритмической части программы предварительно получают граф потока управления, дерево доминаторов, дерево циклов, граф потока данных; выполняют подстановки промежуточного представления процедур в места вызовов; выполняют межпроцедурный анализ потока данных; для обнаружения эквивалентных операций выполняют анализ потока данных, предпочтительно способом нумераций значений; выполняют анализ переменных цикла на инвариантность и индуктивность; выполняют анализ операций доступа в массивы, строят индексы доступа в массивы в виде канонических форм сумм произведений; выполняют слияния циклов; выполняют вынос инвариантных условий; изменяют порядок обхода итерационного пространства циклов; выполняют анализ параллельных циклов [1].
Известен способ построения программы, заключающийся в определении в исходном коде программы на ассемблере помеченные циклы и классифицируют их на несколько предопределенных типов, выравнивают адреса начала помеченных циклов, если это требуется для цикла данного типа путем добавления ассемблерных инструкций и, сохраняя исходный код на ассемблере в памяти, строят путем компиляции и компоновки модифицированный ассемблерный код для устройства назначения [2].
Недостатками данных способов являются отсутствие учета конкретной архитектуры процессора и отсутствие учета параметра времени работы монофункциональных блоков процессора.
Одним из возможных путей повышения эффективности обработки данных является организация распределения данных процессов в монофункциональных блоках процессора. Однако при распределении данных программы в монофункциональных блоках возникают проблемы временной синхронизации, что приводит к снижению эффективности цифровой обработки данных, что необходимо учитывать при выборе моментов времени начала выполнения операторов при параллельном выполнении исходной программы.
Цель изобретения - повысить эффективность цифровой обработки данных (снизить время обработки данных) за счет оптимизации равномерности загрузки монофункциональных блоков процессора.
Указанная цель достигается способом распределения данных по монофункциональным блокам процессора с управлением потоком данных, заключающимся в выполнении следующих процедур:
1. Загрузка имеющихся значений операндов.
2. Загрузка нумерованных последовательностей управляющих операций, определяющих дальнейшие направления вычислительного процесса и арифметических операций.
3. Определение связей операций между собой, запись операций и связей, и передача сигнала на дублирование значений соответствующих операндов для использования в командах различных этапов обработки данных.
4. Дублирование значений операндов и запись этих значений в поля первого или второго операндов и передача значений операндов для формирования команд готовых к выполнению, т.е. имеющих значения всех ее операндов.
5. Определение подмножества готовых к выполнению команд и передача управляющих и арифметических операций для формирования команд готовых к выполнению.
6. Формирование подмножества готовых команд, содержащих поле операции, поле значения первого операнда, поле значения второго операнда, адрес памяти для временного хранения результата выполнения операции, а также поля признаков наличия в команде значений соответствующих операндов и готовности команды к выполнению, и распределение на монофункциональные блоки исполнительного устройства для параллельного выполнения с учетом параметра времени, т.е. времени начала выполнения и длительности выполнения каждой операции, чем больше длительность выполнения операции, тем раньше операция должна начать выполнение.
7. Выполнение монофункциональными блоками исполнительного устройства подмножества команд и получение результатов значений операндов для последующих команд.
8. Передача результатов выполнения команд для дублирования значений операндов, записи и передача в последующие команды, которые используют эти результаты в качестве значения первого или второго операнда, содержащего поле значения полученного результата, поля двух номеров команд, использующих данное значение в качестве операнда, и два поля указателей, определяющих характер использования рассматриваемого значения в качестве первого операнда и/или второго операнда.
9. Выполнение монофункциональными блоками исполнительного устройства подмножества команд и получение результата выполнения параллельной программы с временной параметризацией и передача результата для записи.
Таким образом, для повышения эффективности цифровой обработки данных (снижения времени обработки данных) следует разработать временные нити программы с учетом требования оптимизации равномерности загрузки монофункциональных блоков в процессе параллельного решения задачи, тем самым, обеспечить необходимую временную синхронизацию монофункциональных блоков процессора.
Новыми признаками, обладающими существенными отличиями, являются: 1. Учет архитектуры процессора с управлением потоком данных.
2. Учет параметра времени начала выполнения операторов параллельного алгоритма в монофункциональных блоках процессора с управлением потоком данных.
Данные признаки обладают существенными отличиями, так как в известных способах не обнаружены.
Применение новых признаков, в совокупности с известными позволит повысить эффективность цифровой обработки данных за счет оптимизации равномерности загрузки монофункциональных блоков процессора в процессе параллельного решения задачи.
Способ распределения данных по монофункциональным блокам процессора с управлением потоком данных реализуется следующим образом.
На фиг.1 показана схема основных компонентов процессора с управлением потоком данных, состоящего из коммутатора операндов 1, памяти связей команд 2, памяти команд 3, блока выборки команд 4, коммутатора команд 5, исполнительного устройства 6 и памяти данных 7, которые реализует предложенный способ. Коммутатор операндов 1 обеспечивает распределение значений результатов выполнения операций и запись этих значений в поля первого и второго операндов соответствующих ячеек памяти команд для формирования команд готовых к выполнению. Память связей команд 2 хранит массив связей для рассматриваемых входных и связанных команд программы. Память команд 3 хранит множества командных ячеек программы в процессе решения задачи. Блок выборки команд 4 обеспечивает определение подмножества готовых к выполнению команд программы. Коммутатор команд 5 обеспечивает распределение множества готовых к выполнению команд на соответствующие монофункциональные блоки исполнительного устройства для их параллельного выполнения. Исполнительное устройство 6 представляет собой множество монофункциональных блоков различных типов, обеспечивающих возможность решения задачи. Монофункциональные блоки 61 представляют собой операционные блоки, выполняющие каждым блоком только один тип операции (деления, умножения, вычитания, суммирования, суммирования по модулю 2 и др.). Память данных 7 обеспечивает хранение всех используемых при решении задач данных.
Рассмотрим пошаговое выполнение предложенного способа в описанной выше системе (Фиг. 1). Загрузка из памяти данных 7 в коммутатор операндов 1 имеющихся значений операндов (шаг 1). Загрузка из памяти данных 7 в блок выборки команд 4 нумерованных последовательностей управляющих операций, определяющих дальнейшие направления вычислительного процесса и арифметических операций (шаг 2). Определение блоком выборки команд 4 связей операций между собой, запись операций и связей в память связей команд 2, и передача коммутатору операндов 1 сигнала на дублирование значений соответствующих операндов для использования в командах различных этапов обработки данных (шаг 3). Дублирование коммутатором операндов 1 значений операндов и запись этих значений в поля первого или второго операндов соответствующих ячеек памяти команд 3 и передача из памяти команд 3 значений операндов в коммутатор команд 5 для формирования команд готовых к выполнению, т.е. имеющих значения всех ее операндов (шаг 4). Определение блоком выборки команд 4 подмножества готовых к выполнению команд и передача из памяти связей команд 2 управляющих и арифметических операций в коммутатор команд 5 для формирования команд готовых к выполнению (шаг 5). Формирование коммутатором команд 5 подмножества готовых команд, содержащих поле операции, поле значения первого операнда, поле значения второго операнда, адрес памяти для временного хранения результата выполнения операции, а также поля признаков наличия в команде значений соответствующих операндов и готовности команды к выполнению, и распределение на монофункциональные блоки 61 исполнительного устройства 6 для параллельного выполнения с учетом параметра времени, т.е. времени начала выполнения и длительности выполнения каждой операции, чем больше длительность выполнения операции, тем раньше операция должна начать выполнение (шаг 6). Выполнение монофункциональными блоками 61 исполнительного устройства 6 подмножества команд и получение результатов значений операндов для последующих команд (шаг 7). Передача исполнительным устройством 6 результатов выполнения команд для дублирования значений операндов в коммутатор операндов 2, записи в ячейки памяти данных и передача по средствам коммутатора команд 5 в последующие команды, которые используют эти результаты в качестве значения первого или второго операнда, содержащего поле значения полученного результата, поля двух номеров команд, использующих данное значение в качестве операнда, и два поля указателей, определяющих характер использования рассматриваемого значения в качестве первого операнда и/или второго операнда (шаг 8). Выполнение монофункциональными блоками 61 исполнительного устройства 6 подмножества команд и получение результата выполнения параллельной программы с временной параметризацией и передача результата для записи в память данных 7 (шаг 9).
Таким образом, предлагаемый способ позволит снизить время обработки данных на монофункциональных блоках процессора до 8% при распределении данных по монофункциональным блокам процессора с управлением потоком данных, то есть повысить эффективность цифровой обработки данных за счет оптимизации равномерности загрузки монофункциональных блоков процессора в процессе параллельного решения задачи.
Источники информации
1. Дроздов А.Ю., Новиков С.В. Способ автоматического распараллеливания программ. Патент на изобретение №2411569, бюл. №4, 2011 г. (аналог).
2. Яковлев С.В., Сафонов И.В., Быкова Т.В. Способ построения программы. Патент на изобретение №2406112, бюл. №34, 2010 г. (прототип).
Claims (11)
- Способ распределения данных по монофункциональным блокам процессора с управлением потоком данных, заключающийся в том, что для реализации способа устройствами процессора выполняются следующие операции:
- загрузка из памяти данных в коммутатор операндов имеющихся значений операндов;
- загрузка из памяти данных в блок выборки команд нумерованных последовательностей управляющих операций, определяющих дальнейшие направления вычислительного процесса и арифметических операций;
- определение блоком выборки команд связей операций между собой, запись операций и связей в память связей команд, и передача коммутатору операндов сигнала на дублирование значений соответствующих операндов для использования в командах различных этапов обработки данных;
- дублирование коммутатором операндов значений операндов и запись этих значений в поля первого или второго операндов соответствующих ячеек памяти команд и передача из памяти команд значений операндов в коммутатор команд для формирования команд, готовых к выполнению, т.е. имеющих значения всех ее операндов;
- определение блоком выборки команд подмножества готовых к выполнению команд и передача из памяти связей команд управляющих и арифметических операций в коммутатор команд для формирования команд, готовых к выполнению;
- передача блоком выборки команд из памяти связей команд управляющих и арифметических операций в коммутатор команд для формирования команд, готовых к выполнению;
- формирование коммутатором команд подмножества готовых команд, содержащих поле операции, поле значения первого операнда, поле значения второго операнда, адрес памяти для временного хранения результата выполнения операции, а также поля признаков наличия в команде значений соответствующих операндов и готовности команды к выполнению, и распределение на монофункциональные блоки исполнительного устройства для параллельного выполнения с учетом параметра времени, т.е. времени начала выполнения и длительности выполнения каждой операции, чем больше длительность выполнения операции, тем раньше операция должна начать выполнение;
- выполнение монофункциональными блоками исполнительного устройства подмножества команд и получение результатов значений операндов для последующих команд;
- передача исполнительным устройством результатов выполнения команд для дублирования значений операндов в коммутатор операндов, записи в ячейки памяти данных и передача посредством коммутатора команд в последующие команды, которые используют эти результаты в качестве значения первого или второго операнда, содержащего поле значения полученного результата, поля двух номеров команд, использующих данное значение в качестве операнда, и два поля указателей, определяющих характер использования рассматриваемого значения в качестве первого операнда и/или второго операнда;
- выполнение монофункциональными блоками исполнительного устройства подмножества команд и получение результата выполнения параллельной программы с временной параметризацией и передача результата для записи в память данных.
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2022134539A Previously-Filed-Application RU2022134539A (ru) | 2022-12-26 | Способ распределения данных по монофункциональным блокам процессора с управлением потоком данных |
Publications (1)
Publication Number | Publication Date |
---|---|
RU2818497C1 true RU2818497C1 (ru) | 2024-05-02 |
Family
ID=
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020054051A1 (en) * | 1998-12-29 | 2002-05-09 | Patrick G. Ladd | Parallel programming development environment |
US20070271547A1 (en) * | 2001-12-04 | 2007-11-22 | Abraham Gulko | Parallel computing system, method and architecture |
US20120131552A1 (en) * | 2010-11-19 | 2012-05-24 | Microsoft Corporation | Read-only communication operator |
RU2559723C2 (ru) * | 2011-03-29 | 2015-08-10 | Мицубиси Хеви Индастриз, Лтд. | Система параллельной обработки данных и способ работы системы параллельной обработки данных |
RU2691860C1 (ru) * | 2018-06-25 | 2019-06-18 | Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" | Способ распараллеливания программ в среде логического программирования в вычислительной системе |
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020054051A1 (en) * | 1998-12-29 | 2002-05-09 | Patrick G. Ladd | Parallel programming development environment |
US20070271547A1 (en) * | 2001-12-04 | 2007-11-22 | Abraham Gulko | Parallel computing system, method and architecture |
US20120131552A1 (en) * | 2010-11-19 | 2012-05-24 | Microsoft Corporation | Read-only communication operator |
RU2559723C2 (ru) * | 2011-03-29 | 2015-08-10 | Мицубиси Хеви Индастриз, Лтд. | Система параллельной обработки данных и способ работы системы параллельной обработки данных |
RU2691860C1 (ru) * | 2018-06-25 | 2019-06-18 | Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" | Способ распараллеливания программ в среде логического программирования в вычислительной системе |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11645358B2 (en) | Generation of executable files corresponding to neural network models | |
Bernstein | Multiplication by integer constants | |
Aho et al. | On finding lowest common ancestors in trees | |
US5146594A (en) | Method of producing object program based on interprocedural dataflow analysis of a source program | |
CN102053817B (zh) | 用于执行乘法累加运算的设备和方法 | |
US6973644B2 (en) | Program interpreter | |
JP2500079B2 (ja) | プログラムの最適化方法及びコンパイラ・システム | |
JP6913693B2 (ja) | ベクトル演算を実行する際にアドレス衝突を管理するための装置及び方法 | |
JP2000305809A (ja) | メモリアクセス解析方法、メモリアクセス追跡装置、コンピュータ読取可能な記録媒体 | |
US6425124B1 (en) | Resource allocation device for reducing the size and run time of a machine language program | |
KR20140033616A (ko) | 혼합 모드 프로그램의 소스 코드 오류 위치 검출 장치 및 방법 | |
Caamaño et al. | APOLLO: Automatic speculative polyhedral loop optimizer | |
US11842188B2 (en) | Continuous integration and deployment pipeline selection based on dynamic mapping | |
CN113553057B (zh) | 一种针对不同架构的gpu进行并行计算的优化系统 | |
Knuth | Invited papers: History of writing compilers | |
RU2818497C1 (ru) | Способ распределения данных по монофункциональным блокам процессора с управлением потоком данных | |
US20050166194A1 (en) | Method and apparatus for static single assignment form dead code elimination | |
RU2820032C1 (ru) | Способ распределения данных по монофункциональным блокам процессоров вычислительной системы с управлением потоком данных | |
Nicolau et al. | Using an oracle to measure potential parallelism in single instruction stream programs | |
RU2818498C1 (ru) | Способ распределения данных по многофункциональным блокам процессора со сверхдлинной командной строкой | |
US20050198468A1 (en) | Method and apparatus for superword register value numbering | |
RU2820034C1 (ru) | Способ временной синхронизации работы вычислительной системы с реконфигурируемой архитектурой | |
RU2685018C1 (ru) | Способ распараллеливания программ в вычислительной системе | |
Corbett | Enhanced arithmetic for Fortran | |
Mosaner | Machine-Learning-Based Optimization Heuristics in Dynamic Compilers/submitted by DI Raphael Moaner, BSc |