УДК 681.3.012
Р. А. Бикташев, Р. И. Емельянов
СТРУКТУРНАЯ РЕАЛИЗАЦИЯ И ОЦЕНКА ВРЕМЕННЫХ ХАРАКТЕРИСТИК МНОГОПРОЦЕССОРНЫХ ПЛАНИРОВЩИКОВ С РАСПРЕДЕЛЕННОЙ ОЧЕРЕДЬЮ ЗАДАЧ
Аннотация. Представлены способы включения ядра операционной системы с аппаратной поддержкой в многопроцессорную систему. Показан пример структурной реализации планировщика задач на основе моделей недетерминированных автоматов.
Ключевые слова: ядро операционной системы, планировщик задач, аппаратная поддержка, недетерминированные автоматы, модель.
Традиционно большую часть функций операционных систем (ОС) выполняют программно, что приводит к высоким задержкам в выполнении приложений. Наиболее чувствительно издержки ОС, основанные на программном обеспечении, сказываются на системах реального времени (СРВ). СРВ требуют высокой реакции на запрос, гарантированного времени ответа, что в свою очередь вызывает необходимость повышения производительности операционной системы и особенно систем жесткого реального времени.
В связи с вышесказанным разработчики многопроцессорных операционных систем часть трудоемких функций переносят на аппаратную реализацию, что обусловлено высокой степенью интеграции и низкой стоимостью элементной базы. Аппаратная реализация алгоритмов ОС позволяет в определенной степени уменьшить трудности создания программного обеспечения, а также улучшить совместимость различных версий ОС для компьютеров разных платформ. Кроме того, в значительной степени уменьшается трудоемкость отладки нижних уровней ОС и повышается его корректность благодаря возможностям формального описания функций на языке недетерминированных автоматов (НДА).
Схемная реализация заключается в перенесении компонент ядра операционной системы на уровень специализированного процессора. Она позволяет полностью освободить ядро ОС от функций управления переключением задач и прерываниями, синхронизации процессов, обмена сообщениями и т.д. В результате API-функции, выполняемые в спецпроцессоре, значительно ускоряются, а тщательная отладка аппаратуры современными средствами проектирования программируемой логической интегральной системы (ПЛИС) гарантирует надежность и безопасность операционной системы. Такой подход обеспечивает повышение производительности многопроцессорной системы за счет быстрого выполнения функций ОС по управлению процессами и ресурсами в аппаратных средствах и освобождения центральных процессоров от функций ОС по управлению процессами и ресурсами, что позволяет полностью занять их только выполнением приложений.
Кроме того, аппаратный подход позволяет уменьшить разброс времени (джиттер) выполнения процессов по сравнению с программной реализацией. Это означает, что значительно повышается гарантия выполнения процессов реального времени за заданный интервал.
Возможны три способа включения аппаратного ядра ОС в многопроцессорную систему (МПС):
1) через системную общую шину (рис. 1,а);
2) через выделенную (специальную API-) шину (рис. 1,6);
3) с непосредственными связями (рис. 1,в).
в)
Рис. 1. Схемы включения аппаратного ядра ОС
Второй способ, хотя и требует дополнительных затрат, но не нагружает общую шину, способствует хорошей масштабируемости и высокой пропускной способности обменных операций между API процессорами и аппаратным ядром ОС.
Третий способ наиболее производителен, прост в реализации, но большое количество линий связи может ограничить в некоторой степени масштабируемость МПС.
Существует два варианта построения планировщиков задач МПС: с общей (глобальной) очередью и распределенной (локальной) очередью. Первый вариант сопряжен с большим количеством конфликтов за доступ множества процессоров к очереди задач (к диспетчеру задач), что приводит к простоям процессоров и в конечном счете к потерям производительности [1].
В планировщиках/диспетчерах с локальными очередями у каждого процессора имеется своя очередь задач. Функция диспетчера ограничивается выборкой очередной задачи и назначением ее освободившемуся процессору. При прерываниях по истечении кванта (переключениях контекста) процесс остается в той же очереди, в которой он находился ранее, что не приводит к перезагрузке КЭШ в отличие от планировщиков с общей очередью задач. Таким образом, в вычислительной системе действует одновременно N диспетчеров, в результате чего задачи выбираются из очередей бесконфликтно, поступают в процессоры параллельно, что создает условия для повышения производительности.
Диспетчер задач является распределенным и выполняется в виде независимого аппаратного устройства управления процессами (планировщика) в составе многопроцессорной ОС в соответствии со схемой, представленной на рис. 2.
Рис. 2. Схема подключения устройства управления процессами в многопроцессорную систему
В аппаратной части можно выделить два основных блока: собственно планировщик задач и локальные диспетчеры. Первый принимает извне (например, из внешней памяти) новую задачу, помещает ее в одну из очередей, после чего в работу включается локальный диспетчер. В реальной системе эта процедура заключается в следующем: новой задаче выделяется раздел общей памяти и присваивается соответствующий идентификатор, однозначно указывающий на адрес задачи в памяти. Идентификатор задачи помещается в очередь одного из локальных диспетчеров.
Модель многопроцессорной системы с использованием аппаратного устройства управления процессами представлена на рис. 3. Локальный диспетчер на основании идентификатора прерывает выполнение текущей задачи и организует запуск следующей по очереди задачи.
Рис. 3. Модель многопроцессорной системы с локальными диспетчерами
Интерфейс взаимодействия устройства локального диспетчера с каждым из процессоров и с планировщиком задач представлен на рис. 4.
Планировщик Локальный диспетчер mitieg task_id > task_ieajdy ^ Процессор
-'- wireg proc_zapr procjiinyal
fifo fUl
!-- proc_pzapr proc_liiee fifo_empty
Рис. 4. Интерфейс взаимодействия локального диспетчера с планировщиком задач и процессором
Формализация алгоритма планирования задач
Концептуально алгоритм управления процессами аналогичен алгоритму «спящего парикмахера» и выглядит следующим образом. Первоначально поступившая задача помещается в очередь планировщика и находится в ней до тех пор, пока не получит необходимые ей ресурсы, в число которых входит и место в очереди к одному из процессоров (см. рис. 3). Если имеется свободное место в одной из очередей, то выбранная планировщиком задача занимает его, причем число мест в очереди ограничено некоторым числом. Принятая на обслуживание задача находится в очереди до тех пор, пока не поступит на выполнение в процессор. Если используется режим квантования, то незавершенная задача по окончании текущего кванта помещается в конец той же очереди, где она находилась ранее, иначе результат выдается пользователю, а в очереди освобождается одно место. При завершении задачи локальный диспетчер просматривает очередь, и если в ней имеются заявки на обслуживание, то назначается на выполнение процесс, стоящий в голове списка (очередь типа FIFO). Если очередь пуста, процессор переходит в режим ожидания [2].
Из приведенного описания следует, что алгоритм управления процессами использует схему синхронизации типа «рандеву» [3]. Формальное описание алгоритма взаимо-
действия процессов в данной задаче базируется на использовании моделей недетерминированных автоматов. Модели представляются в виде направленного графа и систем канонических уравнений (СКУ), описывающих все реализуемые события управляющего алгоритма [4].
Для упрощения графа автомата и СКУ принято, что часть функций планировщика и диспетчера задач, связанных с прерываниями по истечении кванта процессорного времени, сохранением и восстановлением контекстов задач, не включены в данную модель, т.е. реализуются традиционно программным путем.
Основные частные события алгоритма представлены в табл. 1. В последней колонке показано их соответствие сигналам на схеме устройства управления процессами.
Таблица 1
Основные частные события алгоритма
Обозначение события Описание частного события Сигналы на схеме
$ Ожидание поступления новой задачи 8_1а$к_аггтей
¡Я Функция состояния очереди (количество задач в очереди ./-го процессора) 8_изв [5...0]
¡РЯ Все очереди заполнены 8_А/о_/иЕ
В _/-й локальной очереди имеются свободные места 8_А/о_и111
¡Я) Выбор очереди с минимальным числом задач и занесение новой задачи в выбранную очередь 8_югтвд
¡Я) Задача в очереди ./-го процессорного узла 8_1азк_т_диеив
Запрос ./-го процессора локальным диспетчером 8_ртос_гарт_)
¡ОР) Задача готова к обслуживанию в _/-м процессоре 8_1азк_твайу_)
¡Р) Подтверждение запроса ./-м процессором 8_ртос_ргарт_)
Свободен _/-й процессор 8_ргос_тев
¡Р] °РТ Задачу _/-й процессор принял 8_ргос_ргтуа1_)
¡А Выполняет обслуживание задачи _/-й процессор Аппаратно не реализовано
¡Я Ожидание поступления задачи в очередь ./-го процессора Внутренний сигнал, на схеме не обозначен
¡г ¡ОР Удалить задачу из очереди --------\\--------
¡г ¡ТО Снять задачу с исполнения --------\\--------
Выполнение задачи закончено
°КТ Выдача результата выполнения текущей задачи
¡Р] Процессор в режиме ожидания
На основании словесно представленного алгоритма управления процессами и введенных событий, реализуемых в этом алгоритме, система канонических уравнений, описывающих эти события, будет иметь вид (1):
- для процесса «клиент», реализуемого локальным диспетчером до момента «рандеву»:
% (г +1) = х2 V ;
Б® (г +1) = Б<Рд V Б§'Б®; б® (г+1)-у Б®Б®;
У/еЛГ
Б® (г +1) = Б® V ;
Бщ(г +1) = БдБр V Бщ БР1 ; (1)
БОР/ (г + 1) = Б2Р}БР2 V БОР/ БРТ ,
где хг означает наличие запроса задачи на постановку в очередь;
- для процесса «сервер», реализуемого процессором до момента «рандеву»:
(г +1) = БР V Б^;
бр2 (г +1) - Б^Б® V БР2 Бщ ; (2)
БРТ (г + 1) - БР2Б2Р] V БРТ Б1Р] •
СКУ, описывающая события после «рандеву»:
Б А (г +1) - Б/Б^ V Б А (Бр V Б/);
БТо(г +1) - БАБЕ VБТоБ/ ; (3)
БЯТ (г +1) - Ба Бе V БЯТ Бто ;
БОР (г + 1) - БКТБТО ;
Б5 (г + 1) - БЯТБОР .
Следует иметь в виду, что выбор очереди для записи в нее вновь поступившей задачи выполняется в соответствии с выражением
Б® -штЬ® [ (4)
(У/еМ)1 и )
Выражение (4) означает взятие функции минимального количества занятых мест из всего массива локальных очередей, где N - число процессоров (очередей) в многопроцессорной системе.
Уравнениям соответствует граф недетерминированного автомата (рис. 5), содержащий клиентскую и серверную части алгоритма управления взаимодействующими процессами до момента «рандеву» (до оператора объединения Д&)) и после «рандеву».
"КЛИЕНТ"
Поступление "рандеву"
запрос процессора
Рис. 5. Граф НДА алгоритма планирования/диспетчеризации с локальными очередями
Представленная система канонических уравнений и граф НДА алгоритма планирования/диспетчеризации с локальными очередями отличается от соответствующей НДА-модели алгоритма планирования/диспетчеризации с глобальными очередями тем, что здесь присутствует алгоритм выбора локальной очереди, куда заносится вновь поступившая задача и отсутствует процедура выбора процессора, поскольку локальную очередь обслуживает единственный процессор, за которым эта очередь закреплена. Функция F(V) является разветвительной вершиной, за которой следует выполнение параллельных процессов, связанных с ожиданием поступления новой задачи в выбранную очередь.
Структура устройства планирования с локальными очередями задач
Аппаратное устройство планирования представлено в виде трех типов блоков (рис. 5): блок назначения задач; N блоков очередей со схемами управления, где N - число процессоров в многопроцессорной системе; блок формирования очередей.
Блок очереди FIFO предназначен для хранения готовых к обслуживанию задач. Число этих блоков равно числу процессоров в системе. Функционально они не отличаются от тех же блоков в диспетчерах с глобальной очередью, но имеют меньшее количество ячеек для хранения задач. И организованы они несколько иначе - например, записывать в очередь может только диспетчер по сигналам записи S_wrreq, подаваемым из блока планирования. Считывание содержимого регистра очереди производится по сигналу S_rdreq, поступающему от каждого процессора по индивидуальным линиям.
Входная шина данных формируется блоком планирования (V_task_id_xz[y...o]) и является общей для всех блоков очереди FIFO. Каждый процессор управляет только своей очередью; другими словами, он может читать содержимое только из одного блока FIFO. Также каждый процессор постоянно сканирует свою очередь (семафорный сигнал S_fifo_empty) на предмет наличия идентификаторов задач. Если в регистрах FIFO имеется идентификатор хотя бы одной задачи, процессор читает его; если нет, то переходит в режим ожидания.
Выходная шина данных из каждой очереди блока FIFO заводится в индивидуальный процессор. Семафорный сигнал S_fifo_full используется блоком назначения задач для указания на заполнение очереди блока FIFO. По этому сигналу диспетчер прекращает прием нового идентификатора в данную очередь.
Блок формирования очередей выбирает из всех N очередей блок FIFO, в котором находится минимальное количество задач (содержащий наименьшее количество записей). Номер очереди FIFO с наименьшим числом записей передается в блок планирования по трехразрядной выходной шине sel [2..0].
Выбор наименее загруженной очереди осуществляется на основании специальных сигналов use [5..0], вырабатываемых блоками очереди FIFO. Число занятых ячеек в каждом блоке очереди формируется как разность содержимого счетчиков записи и чтения. Блок выбора очереди осуществляет вычисление наименьшего значения из всех выставленных на шинах use [5..0] с помощью комбинационной схемы сравнения. На основании этого делается вывод о том, в какую очередь следует загружать идентификатор новой задачи.
Блок назначения задач принимает новый идентификатор задачи и под действием сигналов S_wrreq помещает его в наименее заполненную очередь FIFO. Кроме того, на данный блок может возлагаться функция контроля состояния всех процессоров и функция перераспределения задач по очередям для выравнивания нагрузки на процессоры.
Моделирование алгоритма планирования задач на языке VHDL и анализ результатов
Для моделирования работы планировщика с локальными очередями применялась схема, показанная на рис. 6. Была смоделирована ситуация, когда в систему может поступить одновременно до восьми задач, причем любой процессор обслуживает одну задачу на протяжении случайного периода времени (от 6 до 11 тактов).
Рис. 6. Схема для проведения экспериментальных исследований
Частота некоторых запросов выбрана таким образом, чтобы возникали конфликты за доступ к процессору. Например, второй запрос х7[о] поступил в тот момент, когда процессор занят обслуживанием предыдущего запроса. В состоянии конфликта вновь поступившая задача устанавливается планировщиком в локальную очередь, время ожидания в которой зависит от производительности процессора и трудоемкости задачи. Оценка таких задержек является предметом дальнейших исследований. Для этих целей авторами разрабатываются соответствующие модели массового обслуживания.
Временные диаграммы, полученные в результате проведенного моделирования, представлены на рис. 7.
Рис. 7. Временные диаграммы, полученные в результате проведенного моделирования: xz[7] - xz[0] - идентификаторы задач, поступающие на вход блоков очереди FIFO; sa[7] - sa[o] - обработка процессорами пользовательских задач
Из анализа временных диаграмм можно сделать следующие выводы. Задержка выполнения задач в условиях бесконфликтности (латентность) составляет всего 5-7 процессорных тактов. В современных операционных СРВ, реализованных программно, задержка (обработка запроса) обычно составляет 5-10 тыс. процессорных тактов с учетом обработки прерывания по кванту.
Недостаток планировщика с локальными очередями заключается в отсутствии автоматической балансировки загрузки процессоров, что может приводить к неравномерности загрузки процессоров.
Библиографический список
1. Вашкевич, Н. П. Аппаратная поддержка диспетчера задач с глобальной очередью в многопроцессорных системах / Н. П. Вашкевич, Р. А. Бикташев, А. И. Меркурьев // Известия высших учебных заведений. Поволжский регион. Технические науки. - 2011. - № 3. - С. 3-14.
2. Вашкевич, Н. П. Недетерминированные автоматы и их использование для реализации систем параллельной обработки информации : монография / Н. П. Вашкевич, Р. А. Бикташев. - Пенза : Изд-во ПГУ, 2016. - 394 с.
3. Вашкевич, Н. П. Формализация алгоритмов управления параллельными процессами на основе использования механизма рандеву / Н. П. Вашкевич, Р. А. Бикташев // XXI век: итоги прошлого и проблемы настоящего плюс. - 2011. - № 3 (03). - С. 115-124.
4. Вашкевич, Н. П. Достоинство формального языка, основанного на концепции недетерминизма, при структурной реализации параллельных систем логического управления процессами и ресурсами / Н. П. Вашкевич, Р. А. Бикташев // Известия высших учебных заведений. Поволжский регион. Технические науки. - 2011. - № 1. - С. 3-11.
Бикташев Равиль Айнулович, кандидат технических наук, доцент, кафедра «Вычислительная техника», Пензенский государственный университет. E-mail: [email protected]
Емельянов Роман Игоревич, магистрант, Пензенский государственный университет. E-mail: [email protected]
УДК 681.3.012 Бикташев, Р. А.
Структурная реализация и оценка временных характеристик многопроцессорных планировщиков с распределенной очередью задач / Р. А. Бикташев, Р. И. Емельянов // Вестник Пензенского государственного университета. - 2017. - № 3 (17). - С. 66-75.