RU2820032C1 - Method of distributing data on monofunctional units of processors of computer system with data flow control - Google Patents
Method of distributing data on monofunctional units of processors of computer system with data flow control Download PDFInfo
- Publication number
- RU2820032C1 RU2820032C1 RU2024105066A RU2024105066A RU2820032C1 RU 2820032 C1 RU2820032 C1 RU 2820032C1 RU 2024105066 A RU2024105066 A RU 2024105066A RU 2024105066 A RU2024105066 A RU 2024105066A RU 2820032 C1 RU2820032 C1 RU 2820032C1
- Authority
- RU
- Russia
- Prior art keywords
- operand
- execution
- command
- values
- commands
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 22
- 230000015654 memory Effects 0.000 claims abstract description 30
- 238000005070 sampling Methods 0.000 claims abstract description 27
- 230000005540 biological transmission Effects 0.000 claims abstract description 9
- 239000012634 fragment Substances 0.000 claims description 20
- 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
- 230000026676 system process Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 1
- 239000000284 extract Substances 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
- 230000008054 signal transmission Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Abstract
Description
Изобретение относится к области обработки цифровых данных с помощью электронных устройств, а именно к способам распределения данных по монофункциональным блокам процессоров, предназначенных для вычислительных систем с управлением потоком данных (Data Flow Control (DFC)) и может быть использовано для сокращения времени обработки цифровых данных вычислительными системами DFC.The invention relates to the field of processing digital data using electronic devices, namely to methods for distributing data across monofunctional processor units designed for computing systems with Data Flow Control (DFC) and can be used to reduce the processing time of digital data by computers DFC systems.
Известен способ автоматического распараллеливания программ, заключающийся в том, что в алгоритмической части программы предварительно получают граф потока управления, дерево доминаторов, дерево циклов, граф потока данных; выполняют подстановки промежуточного представления процедур в места вызовов; выполняют межпроцедурный анализ потока данных; для обнаружения эквивалентных операций выполняют анализ потока данных, предпочтительно способом нумераций значений; выполняют анализ переменных цикла на инвариантность и индуктивность; выполняют анализ операций доступа в массивы, строят индексы доступа в массивы в виде канонических форм сумм произведений; выполняют слияния циклов; выполняют вынос инвариантных условий; изменяют порядок обхода итерационного пространства циклов; выполняют анализ параллельных циклов [1].There is a known method for automatically parallelizing programs, which consists in the fact that in the algorithmic part of the program a control flow graph, a dominator tree, a loop tree, and a data flow graph are first obtained; perform substitutions of intermediate representations of procedures into call places; perform interprocedural data flow analysis; to detect equivalent operations, data flow analysis is performed, preferably in a value numbering manner; perform analysis of loop variables for invariance and inductance; perform analysis of array access operations, construct array access indexes in the form of canonical forms of sums of products; perform cycle merges; carry out the removal of invariant conditions; change the order of traversal of the iterative loop space; perform analysis of parallel loops [1].
Известен способ построения программы, заключающийся в определении в исходном коде программы на ассемблере помеченные циклы и классифицируют их на несколько предопределенных типов, выравнивают адреса начала помеченных циклов, если это требуется для цикла данного типа путем добавления ассемблерных инструкций и, сохраняя исходный код на ассемблере в памяти, строят путем компиляции и компоновки модифицированный ассемблерный код для устройства назначения [2].There is a known method for constructing a program, which consists in defining marked loops in the source code of an assembler program and classifying them into several predefined types, aligning the start addresses of the marked loops, if required for a loop of a given type, by adding assembly instructions and storing the assembler source code in memory , build a modified assembly code for the destination device by compiling and linking [2].
Недостатками данных способов являются отсутствие учета конкретной архитектуры вычислительной системы и отсутствие учета параметра времени работы монофункциональных блоков процессов вычислительной системы.The disadvantages of these methods are the lack of consideration of the specific architecture of the computer system and the lack of consideration of the operating time parameter of monofunctional blocks of computer system processes.
Одним из возможных путей повышения эффективности данных является организация распределения данных в монофункциональных блоках процессов вычислительной системы. Однако при распределении данных программы в монофункциональных блоках процессоров возникают проблемы временной синхронизации, что приводит к снижению эффективности цифровой обработки данных, что необходимо учитывать при выборе моментов времени начала выполнения фрагментов и операторов при параллельном выполнении исходной программы.One of the possible ways to increase data efficiency is to organize data distribution in monofunctional blocks of computer system processes. However, when program data is distributed in monofunctional processor blocks, time synchronization problems arise, which leads to a decrease in the efficiency of digital data processing, which must be taken into account when choosing the start time of execution of fragments and operators during parallel execution of the original program.
Цель изобретения - повысить эффективность цифровой обработки данных (снизить время обработки данных) за счет оптимизации равномерности загрузки монофункциональных блоков процессоров вычислительной системы.The purpose of the invention is to increase the efficiency of digital data processing (reduce data processing time) by optimizing the uniformity of loading of monofunctional units of computer system processors.
Указанная цель достигается способом распределения данных по монофункциональным блокам процессоров вычислительной системы с управлением потоком данных, заключающимся в выполнении следующих процедур:This goal is achieved by distributing data across monofunctional blocks of processors of a computer system with data flow control, which consists in performing the following procedures:
1. Загрузка последовательного кода программы.1. Loading the serial code of the program.
2. Разделение последовательного кода программы на нумерованные фрагменты, распределение фрагментов на процессоры с учетом временной синхронизации выполнения фрагментов, выделение из фрагментов нумерованных последовательностей управляющих операций, определяющих дальнейшие направления вычислительного процесса и арифметических операций, определение связей операций между собой, передача и запись операций и связей.2. Dividing the sequential program code into numbered fragments, distributing the fragments to processors taking into account the time synchronization of fragment execution, isolating from the fragments numbered sequences of control operations that determine the further directions of the computational process and arithmetic operations, determining the connections between operations, transferring and recording operations and connections .
3. Загрузки имеющихся значений операндов в зависимости от распределения каждого фрагмента на процессор;3. Loading the available operand values depending on the distribution of each fragment on the processor;
4. Передача сигналов на дублирование значений соответствующих операндов для использования в командах различных этапов обработки данных;4. Transmission of signals to duplicate the values of the corresponding operands for use in commands at various stages of data processing;
5. Дублирование значений операндов и запись этих значений в поля первого или второго операндов соответствующих ячеек памяти команд и передача из памяти команд значений операндов в блоки выборки команд;5. Duplicating the values of the operands and writing these values into the fields of the first or second operands of the corresponding command memory cells and transferring the operand values from the command memory to the command sampling blocks;
6. Определение подмножества готовых к выполнению команд, т.е. имеющих значения всех ее операндов и передача для формирования команд готовых к выполнению;6. Defining a subset of commands ready to execute, i.e. having the values of all its operands and transmission to form commands ready for execution;
7. Формирование подмножества готовых команд, содержащих поле операции, поле значения первого операнда, поле значения второго операнда, адрес памяти для временного хранения результата выполнения операции, а также поля признаков наличия в команде значений соответствующих операндов и готовности команды к выполнению, и распределение на монофункциональные блоки исполнительных устройств для параллельного выполнения с учетом параметра времени, т.е. времени начала выполнения и длительности выполнения каждой операции, чем больше длительность выполнения операции, тем раньше операция должна начать выполнение;7. Formation of a subset of ready-made commands containing an operation field, a value field of the first operand, a value field of the second operand, a memory address for temporary storage of the result of the operation, as well as fields indicating the presence of the values of the corresponding operands in the command and the readiness of the command for execution, and distribution into monofunctional blocks of actuators for parallel execution taking into account the time parameter, i.e. the start time of execution and the duration of execution of each operation, the longer the duration of the operation, the earlier the operation should begin execution;
8. Выполнение подмножества команд и получение результатов значений операндов для последующих команд;8. Execute a subset of commands and obtain the results of operand values for subsequent commands;
9. Передача результатов выполнения команд для дублирования значений операндов, записи в ячейки памяти данных и передача в последующие команды, которые используют эти результаты в качестве значения первого или второго операнда, содержащего поле значения полученного результата, поля двух номеров команд, использующих данное значение в качестве операнда, и два поля указателей, определяющих характер использования рассматриваемого значения в качестве первого операнда и/или второго операнда;9. Transferring the results of command execution to duplicate the values of the operands, writing to data memory cells and transferring to subsequent commands that use these results as the value of the first or second operand containing the value field of the resulting result, the fields of two command numbers using this value as operand, and two pointer fields defining the nature of the use of the value in question as the first operand and/or second operand;
10. Выполнение подмножества команд и получение результата выполнения параллельной программы с временной параметризацией и передача результата для записи.10. Execution of a subset of commands and obtaining the result of executing a parallel program with time parameterization and transferring the result for recording.
Таким образом, для повышения эффективности цифровой обработки данных (снижения времени обработки данных) следует разработать временные нити программы с учетом требования оптимизации равномерности загрузки монофункциональных блоков процессоров в процессе параллельного решения задачи, тем самым, обеспечить необходимую временную синхронизацию монофункциональных блоков процессоров вычислительной системы.Thus, to increase the efficiency of digital data processing (reduce data processing time), it is necessary to develop temporary program threads taking into account the requirement to optimize the uniformity of loading of monofunctional processor units in the process of parallel solution of the problem, thereby ensuring the necessary time synchronization of monofunctional processor units of a computer system.
Новыми признаками, обладающими существенными отличиями, являются:New features with significant differences are:
1. Учет архитектуры вычислительной системы с управлением потоком данных.1. Taking into account the architecture of a computer system with data flow control.
2. Учет параметра времени начала выполнения операторов параллельного алгоритма в монофункциональных блоках процессоров вычислительной системы с управлением потоком данных.2. Taking into account the parameter of the start time of execution of parallel algorithm operators in monofunctional blocks of processors of a computer system with data flow control.
Данные признаки обладают существенными отличиями, так как в известных способах не обнаружены.These signs have significant differences, since they were not found in known methods.
Применение новых признаков, в совокупности с известными позволит повысить эффективность цифровой обработки данных за счет оптимизации равномерности загрузки монофункциональных блоков процессоров вычислительной системы в процессе параллельного решения задачи.The use of new features, in combination with the known ones, will improve the efficiency of digital data processing by optimizing the uniformity of loading of monofunctional units of computer system processors in the process of parallel solution of the problem.
Способ распределения данных по монофункциональным блокам процессоров вычислительной системы с управлением потоком данных реализуется следующим образом.The method of distributing data among monofunctional blocks of processors of a computer system with data flow control is implemented as follows.
На фиг. 1 показана схема основных компонентов вычислительной системы с управлением потоком данных, состоящей из памяти связей команд 7, блока выборки номера фрагмента 12, синхронизатора 13, памяти данных 14, двух процессоров, которые включают коммутаторы операндов 1, 2, памяти команд 3, 4, блоки выборки команд 5, 6, коммутаторы команд 7, 9 и исполнительные устройства 10, 11, которые реализуют предложенный способ. Коммутатор операндов 1, 2 обеспечивает распределение значений результатов выполнения операций и запись этих значений в поля первого и второго операндов соответствующих ячеек памяти команд для формирования команд готовых к выполнению. Памяти команд 3, 4 хранят множества командных ячеек программы в процессе решения задачи. Блоки выборки команд 5, 6 обеспечивают определение подмножества готовых к выполнению команд программы. Коммутаторы команд 7, 9 обеспечивают распределение множества готовых к выполнению команд на соответствующие монофункциональные блоки исполнительных устройств для их параллельного выполнения. Исполнительные устройства 10, 11 представляют собой множество монофункциональных блоков различных типов, обеспечивающих возможность решения задачи. Монофункциональные блоки 101, 111 представляют собой операционные блоки, выполняющие каждым блоком только один тип операции (деления, умножения, вычитания, суммирования, суммирования по модулю 2 и др.). Память связей команд 8 хранит массив количеств для рассматриваемых входных и связанных команд программы. Блок выборки номера фрагмента программы 12 обеспечивает разделение программы на фрагменты, распределение фрагментов выполняемой программы между процессорами и выделение из фрагментов нумерованных последовательностей управляющих и арифметических операций. Синхронизатор 13 синхронизирует работу блока выборки номера фрагмента программы и процессоров при вычислении и объединении результатов выполнении программы. Память данных 14 обеспечивает хранение всех используемых при решении задач данных.In fig. 1 shows a diagram of the main components of a computer system with data flow control, consisting of a
Рассмотрим пошаговое выполнение предложенного способа в описанной выше системе (Фиг. 1). Загрузка из памяти данных 14 в блок выборки номера фрагмента программы 12 последовательного кода программы (шаг 1). Разделение блоком выборки номера фрагмента программы 12 последовательного кода программы на нумерованные фрагменты, распределение фрагментов на процессоры с учетом временной синхронизации выполнения фрагментов посредством синхронизатора, выделение из фрагментов нумерованных последовательностей управляющих операций, определяющих дальнейшие направления вычислительного процесса и арифметических операций, определение связей операций между собой и передача в блок выборки команд 5, 6, и запись операций и связей в память связей команд 8 (шаг 2). Передача блоком выборки номера фрагмента программы 12 сигналов в память данных 14 для загрузки в соответствующие коммутаторы операндов 1, 2 имеющихся значений операндов в зависимости от распределения каждого фрагмента на процессор (шаг 3). Передача блоком выборки номера фрагмента программы 12 сигналов коммутаторам операндов 1, 2 на дублирование значений соответствующих операндов для использования в командах различных этапов обработки данных (шаг 4). Дублирование коммутаторами операндов 1, 2 значений операндов и запись этих значений в поля первого или второго операндов соответствующих ячеек памяти команд 3, 4 и передача из памяти команд 3, 4 значений операндов в блоки выборки команд 5, 6 (шаг 5). Определение блоками выборки команд 5, 6 подмножества готовых к выполнению команд, т.е. имеющих значения всех ее операндов и передача в коммутаторы команд 7, 9 для формирования команд готовых к выполнению (шаг 6). Формирование коммутаторами команд 7, 9 подмножества готовых команд, содержащих поле операции, поле значения первого операнда, поле значения второго операнда, адрес памяти для временного хранения результата выполнения операции, а также поля признаков наличия в команде значений соответствующих операндов и готовности команды к выполнению, и распределение на монофункциональные блоки 101, 111 исполнительных устройств 10, 11 для параллельного выполнения с учетом параметра времени, т.е. времени начала выполнения и длительности выполнения каждой операции, чем больше длительность выполнения операции, тем раньше операция должна начать выполнение (шаг 7). Выполнение монофункциональными блоками исполнительных устройств подмножества команд и получение результатов значений операндов для последующих команд (шаг 8). Передача исполнительными устройствами результатов выполнения команд для дублирования значений операндов посредством блока выборки номера фрагмента программы в коммутаторы операндов, записи в ячейки памяти данных и передача посредством блоков выборки команд и коммутаторов команд в последующие команды, которые используют эти результаты в качестве значения первого или второго операнда, содержащего поле значения полученного результата, поля двух номеров команд, использующих данное значение в качестве операнда, и два поля указателей, определяющих характер использования рассматриваемого значения в качестве первого операнда и/или второго операнда (шаг 9). Выполнение монофункциональными блоками исполнительных устройств подмножества команд и получение результата выполнения параллельной программы с временной параметризацией и передача результата посредством блока выборки номера фрагмента программы для записи в память данных (шаг 10).Let us consider the step-by-step implementation of the proposed method in the system described above (Fig. 1). Loading from
Таким образом, предлагаемый способ позволит снизить время обработки данных на монофункциональных блоках вычислительной системы до 19% при распределении данных по монофункциональным блокам процессоров вычислительной системы с управлением потоком данных, то есть повысить эффективность цифровой обработки данных за счет оптимизации равномерности загрузки монофункциональных блоков вычислительной системы в процессе параллельного решения задачи.Thus, the proposed method will reduce the time of data processing on monofunctional blocks of a computer system to 19% when distributing data among monofunctional blocks of processors of a computer system with data flow control, that is, increase the efficiency of digital data processing by optimizing the uniformity of loading of monofunctional blocks of a computer system in the process parallel solution of the problem.
Источники информацииInformation sources
1. Дроздов А.Ю., Новиков С.В. Способ автоматического распараллеливания программ. Патент на изобретение №2411569, бюл. №4, 2011 г. (аналог).1. Drozdov A.Yu., Novikov S.V. A method for automatically parallelizing programs. Patent for invention No. 2411569, Bulletin. No. 4, 2011 (analogue).
2. Яковлев С.В., Сафонов И.В., Быкова Т.В. Способ построения программы. Патент на изобретение №2406112, бюл. №34, 2010 г. (прототип).2. Yakovlev S.V., Safonov I.V., Bykova T.V. Method of constructing a program. Patent for invention No. 2406112, bulletin. No. 34, 2010 (prototype).
Claims (11)
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2022134940A Previously-Filed-Application RU2022134940A (en) | 2022-12-27 | METHOD OF DATA DISTRIBUTION AMONG MONO-FUNCTIONAL PROCESSOR UNITS OF A COMPUTER SYSTEM WITH DATA FLOW CONTROL |
Publications (1)
Publication Number | Publication Date |
---|---|
RU2820032C1 true RU2820032C1 (en) | 2024-05-28 |
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 |
RU2685018C1 (en) * | 2018-04-24 | 2019-04-16 | Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" | Program multi-sequencing method in the computer system |
RU2745018C1 (en) * | 2019-12-24 | 2021-03-18 | Федеральное государственное автономное образовательное учреждение высшего образования "Санкт-Петербургский государственный электротехнический университет "ЛЭТИ" им. В.И. Ульянова (Ленина)" | Method for paralleling intellectual data analysis in computer environment |
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 |
RU2685018C1 (en) * | 2018-04-24 | 2019-04-16 | Открытое Акционерное Общество "Информационные Технологии И Коммуникационные Системы" | Program multi-sequencing method in the computer system |
RU2745018C1 (en) * | 2019-12-24 | 2021-03-18 | Федеральное государственное автономное образовательное учреждение высшего образования "Санкт-Петербургский государственный электротехнический университет "ЛЭТИ" им. В.И. Ульянова (Ленина)" | Method for paralleling intellectual data analysis in computer environment |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bernstein | Multiplication by integer constants | |
CN102053817B (en) | For performing equipment and the method for multiplication accumulating operation | |
US4524416A (en) | Stack mechanism with the ability to dynamically alter the size of a stack in a data processing system | |
US4468736A (en) | Mechanism for creating dependency free code for multiple processing elements | |
US4466061A (en) | Concurrent processing elements for using dependency free code | |
US5146594A (en) | Method of producing object program based on interprocedural dataflow analysis of a source program | |
US3573851A (en) | Memory buffer for vector streaming | |
CA1119731A (en) | Multibus processor for increasing execution speed using a pipeline effect | |
JP2500079B2 (en) | Program optimization method and compiler system | |
JP6913693B2 (en) | Devices and methods for managing address collisions when performing vector operations | |
US5036454A (en) | Horizontal computer having register multiconnect for execution of a loop with overlapped code | |
KR20140033616A (en) | Apparatus and method for detecting error and determining corresponding position in source code of mixed mode application program source code thereof | |
KR100316710B1 (en) | Method and Apparatus for Instruction issuing in Out-of-Order for Parallel Processor | |
RU2820032C1 (en) | Method of distributing data on monofunctional units of processors of computer system with data flow control | |
CN114237911A (en) | CUDA-based gene data processing method and device and CUDA framework | |
RU2818497C1 (en) | Method of distributing data on monofunctional processor units with data flow control | |
US20050166194A1 (en) | Method and apparatus for static single assignment form dead code elimination | |
Nicolau et al. | Using an oracle to measure potential parallelism in single instruction stream programs | |
RU2818498C1 (en) | Method of distributing data on multifunctional processor units with very long command line | |
US4456958A (en) | System and method of renaming data items for dependency free code | |
EP0187713B1 (en) | System memory for a reduction processor evaluating programs stored as binary directed graphs employing variable-free applicative language codes | |
Gamaarachchi et al. | Cache friendly optimisation of de bruijn graph based local re-assembly in variant calling | |
RU2066067C1 (en) | Central processor for multiple-processor computer system | |
RU2820034C1 (en) | Method for time synchronization of operation of reconfigurable architecture computer system | |
NL8100631A (en) | PIPELINE DIGITAL PROCESSOR SUITABLE FOR CONDITIONAL OPERATION. |