Выявление асинхронного параллелизма

В анализируемой модели, как и в реальном мире и в программном обеспечении все объекты независимы и должны работать асинхронно. Однако в реализации не все объекты должны работать независимо и асинхронно, так как несколько объектов может выполняться на одном процессоре, если известно, что они не могут быть одновременно активными.

Одна из важнейших целей разработки системы – выяснить, какие объекты должны быть активными одновременно (параллельно), а какие бывают активными только в разное время. Эти последние объекты могут быть связаны в одну нить управления (задачу).

Для определения асинхронности (параллельного существования) объ-ектов используется динамическая модель. Два объекта являются существенно асинхронными, если они могут получать события в одно и то же время, не взаимодействуя друг с другом. Если события не синхронизируются, такие объекты не могут быть связаны в одну нить управления.

От асинхронных объектов нужно отличать полностью независимые объекты, которые не только выполняются независимо, но и не обмениваются данными в процессе своей работы. Полностью независимые системы удобны тем, что их можно поместить на разные аппаратные устройства, исключив при этом коммуникационные затраты.

Асинхронные объекты могут выполняться и на одном устройстве (процессоре), если оно имеет систему прерываний и поддерживает режим разделения времени. Во многих случаях необходимость выполнять объекты на разных устройствах следует из постановки задачи. Так, например, в задаче о банковской сети заранее ясно, на каких устройствах должны работать соответствующие объекты.

Распределение модулей и подсистем по процессорам и задачам

Каждый асинхронный (независимый) объект (модуль или подсистема) должен быть приписан к одному из устройств аппаратуры: универсальному процессору или специализированному функциональному устройству. Разработчик системы должен:

— оценить требуемую производительность и требуемые ресурсы;

— выбрать способ реализации подсистем (аппаратный или программный);

— распределить программные подсистемы по процессорам, стремясь удовлетворить их требования по производительности и в то же время сократить межпроцессорные коммуникации.

Оценка требуемых ресурсов

Решение использовать несколько процессоров обычно бывает связано с потребностью иметь более высокую производительность, чем производительность одного процессора. Количество требуемых процессоров зависит от объёма вычислений и производительности компьютера.

Разработчик системы может оценить требуемую производительность процессоров, вычисляя постоянную нагрузку как произведение количества транзакций в секунду на время выполнения одной транзакции (в примере с банковской сетью транзакция – это проводка). Такая оценка не учитывает накладных расходов, связанных со случайными изменениями нагрузки и некоторыми другими факторами. Её следует уточнить.

Замена программ аппаратурой

Аппаратуру следует рассматривать как неизменяемое тщательно оптимизированное программное обеспечение. Каждое устройство может рассматриваться как объект, который работает параллельно с другими объектами. Разработчик может принять решение о замене некоторых объектов подходящими аппаратными устройствами. Обычно такое решение принимается по следующим причинам:

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

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

Рандомно подобранные статьи с сайта:

CppCon 2017: Anthony Williams “Concurrency, Parallelism and Coroutines”


Похожие статьи:

admin