RU2818498C1 - Способ распределения данных по многофункциональным блокам процессора со сверхдлинной командной строкой - Google Patents

Способ распределения данных по многофункциональным блокам процессора со сверхдлинной командной строкой Download PDF

Info

Publication number
RU2818498C1
RU2818498C1 RU2024105071A RU2024105071A RU2818498C1 RU 2818498 C1 RU2818498 C1 RU 2818498C1 RU 2024105071 A RU2024105071 A RU 2024105071A RU 2024105071 A RU2024105071 A RU 2024105071A RU 2818498 C1 RU2818498 C1 RU 2818498C1
Authority
RU
Russia
Prior art keywords
operands
execution
operand
long
memory
Prior art date
Application number
RU2024105071A
Other languages
English (en)
Inventor
Алексей Александрович Толмачев
Дмитрий Сергеевич Викторов
Андрей Александрович Почтарев
Original Assignee
Федеральное государственное казённое военное образовательное учреждение высшего образования "Военная академия воздушно-космической обороны имени Маршала Советского Союза Г.К. Жукова" Министерства обороны Российской Федерации
Filing date
Publication date
Application filed by Федеральное государственное казённое военное образовательное учреждение высшего образования "Военная академия воздушно-космической обороны имени Маршала Советского Союза Г.К. Жукова" Министерства обороны Российской Федерации filed Critical Федеральное государственное казённое военное образовательное учреждение высшего образования "Военная академия воздушно-космической обороны имени Маршала Советского Союза Г.К. Жукова" Министерства обороны Российской Федерации
Application granted granted Critical
Publication of RU2818498C1 publication Critical patent/RU2818498C1/ru

Links

Images

Abstract

Изобретение относится к области вычислительной техники. Технический результат заключается в сокращении времени обработки цифровых данных процессорами со сверхдлинной командной строкой. Технический результат достигается за счет выполнения многофункциональными блоками исполнительного устройства операций, получения результатов и передачи результатов выполнения в устройство управления для определения наличия первого и второго операндов и готовности к выполнению следующих длинных команд, коммутатор результатов для распределения множества результатов выполнения длинной команды между регистрами регистровой памяти операндов в интересах выполнения следующей длинной команды и оперативную память для хранения всех данных при решении задачи; определения устройством управления при наличии первого и второго операндов команд, готовых к выполнению, и передачи операндов посредством командной памяти и регистровой памяти команд в коммутатор операндов, а также передачи операндов из регистровой памяти операндов в коммутатор операндов и распределения операндов коммутатором операндов между многофункциональными блоками исполнительного устройства и передачи для параллельного выполнения; выполнения многофункциональными блоками исполнительного устройства операций и получения результата выполнения параллельной программы с временной параметризацией и передачи результата для записи в оперативную память. 5 ил.

Description

Изобретение относится к области обработки цифровых данных с помощью электронных устройств, а именно к способам распределения данных по многофункциональным блокам, предназначенных для процессоров со сверхдлинной командной строкой {Very Long Instruction Word {VLIW), Explicitly Parallel Instruction Computing (EPIC)) и может быть использовано для сокращения времени обработки цифровых данных процессорами VLIW и EPIC.
Известен способ автоматического распараллеливания программ, заключающийся в том, что в алгоритмической части программы предварительно получают граф потока управления, дерево доминаторов, дерево циклов, граф потока данных; выполняют подстановки промежуточного представления процедур в места вызовов; выполняют межпроцедурный анализ потока данных; для обнаружения эквивалентных операций выполняют анализ потока данных, предпочтительно способом нумераций значений; выполняют анализ переменных цикла на инвариантность и индуктивность; выполняют анализ операций доступа в массивы, строят индексы доступа в массивы в виде канонических форм сумм произведений; выполняют слияния циклов; выполняют вынос инвариантных условий; изменяют порядок обхода итерационного пространства циклов; выполняют анализ параллельных циклов [1].
Известен способ построения программы, заключающийся в определении в исходном коде программы на ассемблере помеченные циклы и классифицируют их на несколько предопределенных типов, выравнивают адреса начала помеченных циклов, если это требуется для цикла данного типа путем добавления ассемблерных инструкций и, сохраняя исходный код на ассемблере в памяти, строят путем компиляции и компоновки модифицированный ассемблерный код для устройства назначения [2].
Недостатками данных способов являются отсутствие учета конкретной архитектуры процессора и отсутствие учета параметра времени работы многофункциональных блоков процессора.
Одним из возможных путей повышения эффективности обработки данных является организация распределения данных процессов в многофункциональных блоках процессора. Однако при распределении данных программы в многофункциональных блоках возникают проблемы временной синхронизации, что приводит к снижению эффективности цифровой обработки данных, что необходимо учитывать при выборе моментов времени начала выполнения операторов при параллельном выполнении исходной программы.
Цель изобретения - повысить эффективность цифровой обработки данных (снизить время обработки данных) за счет оптимизации равномерности загрузки многофункциональных блоков процессора.
Указанная цель достигается способом распределения данных по многофункциональным блокам процессора со сверхдлинной командной строкой, заключающимся в выполнении следующих процедур:
1. Загрузка последовательного кода программы в виде нумерованных последовательностей длинных команд, каждая длинная команда включает тип операции, адрес первого операнда, адрес второго операнда и адрес результата, и множество длинных команд включает подмножество взаимно независимых операторов исходной программы с установленными соответствиями каждому оператору момента начала и длительности его реализации определенному временному шагу и распределенными операторами, имеющими одинаковое значение параметра начала реализации, на соответствующий временной шаг, чем больше длительность выполнения операции, тем раньше операция должна начать выполнение, и при наличии первого и второго операндов определены как команды, готовые к выполнению.
2. Загрузка выполняемых длинных команд для хранения.
3. Передача операндов для распределения между многофункциональными блоками исполнительного устройства для параллельного выполнения.
4. Распределение операндов между многофункциональными блоками исполнительного устройства и передача для параллельного выполнения.
5. Выполнение операций, получение результатов и передача результатов выполнения для определения наличии первого и второго операндов и готовности к выполнению следующих длинных команд, для распределения множества результатов выполнения длинной команды в интересах выполнения следующей длинной команды, для хранения всех данных при решении задачи.
6. Определение при наличии первого и второго операндов команд готовых к выполнению и распределение операндов между многофункциональными блоками исполнительного устройства и передача для параллельного выполнения.
7. Выполнение многофункциональными блоками исполнительного устройства операций и получение результата выполнения параллельной программы с временной параметризацией и передача результата для записи.
Таким образом, для повышения эффективности цифровой обработки данных (снижения времени обработки данных) следует разработать временные нити программы с учетом требования оптимизации равномерности загрузки многофункциональных блоков в процессе параллельного решения задачи, тем самым обеспечить необходимую временную синхронизацию многофункциональных блоков процессора.
Новыми признаками, обладающими существенными отличиями, являются:
1. Учет архитектуры процессора со сверхдлинной командной строкой.
2. Учет параметра времени начала выполнения инструкций параллельного алгоритма в многофункциональных блоках процессора со сверхдлинной командной строкой.
Данные признаки обладают существенными отличиями, так как в известных способах не обнаружены.
Применение новых признаков, в совокупности с известными позволит повысить эффективность цифровой обработки данных за счет оптимизации равномерности загрузки многофункциональных блоков процессора в процессе параллельного решения задачи.
Способ распределения данных по многофункциональным блокам процессора со сверхдлинной командной строкой реализуется следующим образом.
На фиг. 1 показана схема основных компонентов процессора со сверхдлинной командной строкой состоящего из устройства управления 1, командной памяти 2, регистровой памяти операндов 3, регистровой памяти команд 4, коммутатора операндов 5, исполнительного устройства 6, включающего многофункциональные блоки 61, коммутатора результатов 7 и оперативной памяти 8, которые реализует предложенный способ. Устройство управления 1 обеспечивает управление обработкой данных и передачей команд в командную память 2 в которой хранится исходный последовательный код программы в виде конечного числа длинных команд, каждая из которых включает тип операции, адрес первого операнда, адрес второго операнда и адрес результата. Регистровая память команд 4 получает выполняемые длинные команды от командной памяти 2 и обеспечивает хранение этих команд программы, управляет коммутатором операндов 5 при распределении операндов между многофункциональными блоками 61 исполнительного устройства 6 и управляет коммутатором результатов 7 при записи результатов операций в регистровую память операндов 3 и оперативную память 8. Регистровая память операндов 3 обеспечивает прием из исполнительного устройства 6 результатов вычислений или выдачу в исполнительное устройство 6 множества операндов (исходных данных и текущих результатов) для операций, входящих в конкретную длинную команду программы. Оперативная память 8 обеспечивает хранение всех используемых при решении задач данных. Исполнительное устройство 6 представляет собой набор многофункциональных блоков 61. Многофункциональные блоки 61 представляют собой операционные блоки, выполняющие арифметические и логические операции над поданными на вход операндами. Коммутатор операндом 5 обеспечивает распределение данных, считываемых из регистровой памяти операндов 3 между блоками исполнительного устройства 6. Коммутатор результатов 7 обеспечивает распределение множества результатов выполнения длинной команды между регистрами памяти операндов 3 для выполнения следующей длинной команды программы.
Рассмотрим пошаговое выполнение предложенного способа в описанной выше системе (фиг. 1). Загрузка устройством управления 1 в командную память 2 для хранения последовательного кода программы (фиг. 2) в виде нумерованных последовательностей длинных команд, каждая длинная команда включает тип операции, адрес первого операнда, адрес второго операнда и адрес результата, и множество длинных команд включает подмножество взаимно независимых операторов исходной программы с установленными соответствиями каждому оператору момента начала и длительности его реализации определенному временному шагу (фиг. 3) и распределенными операторами, имеющими одинаковое значение параметра начала реализации, на соответствующий временной шаг (фиг. 4), чем больше длительность выполнения операции, тем раньше операция должна начать выполнение, и при наличии первого и второго операндов определены как команды, готовые к выполнению (шаг 1). Загрузка из командной памяти 2 в регистровую память команд 4 выполняемых длинных команд для хранения (шаг 2). Передача операндов из регистровой памяти команд 4 в коммутатор операндов 5 для распределения между многофункциональными блоками 61 исполнительного устройства 6 для параллельного выполнения (шаг 3). Распределение операндов коммутатором операндов 5 между многофункциональными блоками 61 исполнительного устройства 6 и передача для параллельного выполнения (шаг 4). Выполнение многофункциональными блоками 61 исполнительного устройства 6 операций, получение результатов и передача результатов выполнения в устройство управления 1 для определения наличии первого и второго операндов и готовности к выполнению следующих длинных команд, коммутатор результатов 7 для распределения множества результатов выполнения длинной команды между регистрами регистровой памяти операндов 3 в интересах выполнения следующей длинной команды, и оперативную память 8 для хранения всех данных при решении задачи (шаг 5). Определение устройством управления 1 при наличии первого и второго операндов команд готовых к выполнению и передача операндов посредством командной памяти 2 и регистровой памяти команд 4 в коммутатор операндов 5, а также передача операндов из регистровой памяти операндов 3 в коммутатор операндов 5 и распределение операндов коммутатор операндов 5 между многофункциональными блоками 61 исполнительного устройства 6 и передача для параллельного выполнения (шаг 6). Выполнение многофункциональными блоками 61 исполнительного устройства 6 операций и получение результата выполнения параллельной программы с временной параметризацией и передача результата для записи в оперативную память 8 (шаг 7). Ниже приведен пример созданного параллельного кода с временной параметризацией (фиг. 5).
Таким образом, предлагаемый способ позволит снизить время обработки данных на многофункциональных блоках процессора до 9% при распределении данных по многофункциональным блокам процессора со сверхдлинной командной строкой, то есть повысить эффективность цифровой обработки данных за счет оптимизации равномерности загрузки многофункциональных блоков процессора в процессе параллельного решения задачи.
Источники информации
1. Дроздов А.Ю., Новиков С.В. Способ автоматического распараллеливания программ. Патент на изобретение № 2411569, бюл. № 4, 2011 г. (аналог).
2. Яковлев С.В., Сафонов И.В., Быкова Т.В. Способ построения программы. Патент на изобретение № 2406112, бюл. № 34, 2010 г. (прототип).

Claims (8)

  1. Способ распределения данных по многофункциональным блокам процессора со сверхдлинной командной строкой, заключающийся в том, что для реализации способа устройствами процессора выполняются следующие операции:
  2. загрузка устройством управления в командную память для хранения последовательного кода программы в виде нумерованных последовательностей длинных команд, каждая длинная команда включает тип операции, адрес первого операнда, адрес второго операнда и адрес результата, а множество длинных команд включает подмножество взаимно независимых операторов исходной программы с установленными соответствиями каждому оператору момента начала и длительности его реализации определенному временному шагу и распределенными операторами, имеющими одинаковое значение параметра начала реализации, на соответствующий временной шаг, чем больше длительность выполнения операции, тем раньше операция должна начать выполнение, и при наличии первого и второго операндов определены как команды, готовые к выполнению;
  3. загрузка из командной памяти в регистровую память команд выполняемых длинных команд для хранения;
  4. передача операндов из регистровой памяти команд в коммутатор операндов для распределения между многофункциональными блоками исполнительного устройства для параллельного выполнения;
  5. распределение операндов коммутатором операндов между многофункциональными блоками исполнительного устройства и передача для параллельного выполнения;
  6. выполнение многофункциональными блоками исполнительного устройства операций, получение результатов и передача результатов выполнения в устройство управления для определения наличия первого и второго операндов и готовности к выполнению следующих длинных команд, коммутатор результатов для распределения множества результатов выполнения длинной команды между регистрами регистровой памяти операндов в интересах выполнения следующей длинной команды и оперативную память для хранения всех данных при решении задачи;
  7. определение устройством управления при наличии первого и второго операндов команд, готовых к выполнению, и передача операндов посредством командной памяти и регистровой памяти команд в коммутатор операндов, а также передача операндов из регистровой памяти операндов в коммутатор операндов и распределение операндов коммутатором операндов между многофункциональными блоками исполнительного устройства и передача для параллельного выполнения;
  8. выполнение многофункциональными блоками исполнительного устройства операций и получение результата выполнения параллельной программы с временной параметризацией и передача результата для записи в оперативную память.
RU2024105071A 2024-02-27 Способ распределения данных по многофункциональным блокам процессора со сверхдлинной командной строкой RU2818498C1 (ru)

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
RU2022134541A Previously-Filed-Application RU2022134541A (ru) 2022-12-26 Способ распределения данных по многофункциональным блокам процессора со сверхдлинной командной строкой

Publications (1)

Publication Number Publication Date
RU2818498C1 true RU2818498C1 (ru) 2024-05-02

Family

ID=

Citations (5)

* Cited by examiner, † Cited by third party
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 Мицубиси Хеви Индастриз, Лтд. Система параллельной обработки данных и способ работы системы параллельной обработки данных
RU2803581C1 (ru) * 2022-10-25 2023-09-18 Алексей Викторович Малов Способ распараллеливания программ на графическом процессоре вычислительной машины

Patent Citations (5)

* Cited by examiner, † Cited by third party
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 Мицубиси Хеви Индастриз, Лтд. Система параллельной обработки данных и способ работы системы параллельной обработки данных
RU2803581C1 (ru) * 2022-10-25 2023-09-18 Алексей Викторович Малов Способ распараллеливания программ на графическом процессоре вычислительной машины

Similar Documents

Publication Publication Date Title
Zheng et al. AStitch: enabling a new multi-dimensional optimization space for memory-intensive ML training and inference on modern SIMT architectures
JP2500079B2 (ja) プログラムの最適化方法及びコンパイラ・システム
TWI733798B (zh) 在執行向量操作時管理位址衝突的設備及方法
US20020066090A1 (en) Method for removing dependent store-load pair from critical path
JPH0519173B2 (ru)
KR102013582B1 (ko) 혼합 모드 프로그램의 소스 코드 오류 위치 검출 장치 및 방법
KR20200031150A (ko) 데이터 처리장치의 데이터 항목들 내의 성분들의 계수
TW201737067A (zh) 向量預測指令
US6151704A (en) Method for optimizing a loop in a computer program by speculatively removing loads from within the loop
US11842188B2 (en) Continuous integration and deployment pipeline selection based on dynamic mapping
CN105204837B (zh) 一种逻辑编程的实现方法和装置
KR20010001022A (ko) 병렬 프로세서를 위한 무순서 명령어 발행 방법 및 장치
RU2818498C1 (ru) Способ распределения данных по многофункциональным блокам процессора со сверхдлинной командной строкой
Nicolau et al. Using an oracle to measure potential parallelism in single instruction stream programs
RU2818497C1 (ru) Способ распределения данных по монофункциональным блокам процессора с управлением потоком данных
RU2820032C1 (ru) Способ распределения данных по монофункциональным блокам процессоров вычислительной системы с управлением потоком данных
EP1387266A1 (en) Software pipelining for branching control flow
US7080204B2 (en) Cache controller computer system and method for program recompilation
CN110998512A (zh) 在数据处理设备中对连续值进行匹配
EP0180077A2 (en) A data processing machine for compiling computer programs
US20240303056A1 (en) Method and system for compiling applications
RU2786347C1 (ru) Способ автоматического создания параллельной программы с временной параметризацией многопроцессорных вычислительных систем с одинаковым доступом к памяти
US20240303051A1 (en) Method and system for compiling applications
CN115113933B (zh) 用于加速数据运算的装置
US20220012573A1 (en) Neural network accelerators