Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1531

.pdf
Скачиваний:
2
Добавлен:
15.11.2022
Размер:
52.65 Mб
Скачать

∆ = 0,5p будет существовать минимум 0 и максимум 1 входное событие. В случае периодического потока события с джиттером J эти кривые сдвигаются на эту величину. Верхняя граница смещается влево, нижняя граница смещается вправо. Предполагается, что джиттер не накапливается. Верхнее подчеркивание в обозначении α символизирует входящее событие.

Полезная вычислительная и коммуникационная пропускная способность может быть описана функциями обслуживания:

βu(∆), βl(∆) IR 0; ∆ IR 0.

Эти функции позволяют моделировать ситуации, в которых изменяется полезная пропускная способность. На рис. 101 показана коммуникационная пропускная способность TDMA-шины (time division multiple access – множественный доступ с временным разделением).

Рис. 101. Функции обслуживания для TDMA-шины

Распределение выполняется периодически с периодом p. Арбитр выделяет шину на время s (окно). Во время этого окна шина достигает ширины полосы в b единиц.

Верхняя граница достигается, если шина выделяется точно во время, когда начинается отсчет. Количество переданных данных тогда увеличивается линейно. Нижняя граница достигается, если шина была только что освобождена, когда начался отсчет ∆. Затем необходимо ждать p−s единиц времени, пока шина не будет выделена снова.

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

До сих пор не было информации об объеме работы, требуемой для каждого входящего события. Этот объем работы представляется от-

181

дельными функциями γu(e), γl(e) IR ≥ 0 для каждой последовательности e входящих событий. Эта информация может быть получена из границ времени выполнения кода для обработки каждого из событий. На рис. 102 приведен пример таких функций. Этот пример базируется на предположении, что для обработки одиночного события требуется от 3 до 4 единиц времени.

Рис. 102. Характеристика объема работы

Соответственно, объем работы для одиночного события варьируется между 3 и 4 единицами времени, объем работы для двух событий варьируется между 6 и 8 единицами времени и т.д. Пунктирные линии не являются частью функции, так как она определена только для целого числа событий. Объем работы, получающийся из входного потока событий, теперь может быть легко вычислен. Верхняя и нижняя границы характеризуются функциями

αu(∆) = γu( αu(∆)); αl(∆) = γl( αl(∆)).

Должна быть достаточной вычислительная или коммуникационная пропускная способность для обработки этого объема. Число событий, которое может быть обработано с полезной вычислительной пропускной способностью, может быть вычислено следующим образом:

 

 

 

 

u(∆) = (γl)1u(∆));

(1)

 

β

 

 

 

l(∆) = (γu)1l(∆)).

(2)

 

 

β

Равенства (1) и (2) используют обратные функции

γu ((γu)1)

и γl ((γl)1) для конвертирования границ полезной пропускной способно-

182

сти (измеряется действительными значениями времени) в границы, измеряемые в терминах числа событий, которые могут быть обработаны.

Основываясь на этой информации, можно получить свойства выходных потоков событий из входных потоков событий. Предположим, что входной поток характеризуется границами [ αl, αu]. Затем вычисляем характеристики выходных потоков, как, например, соответствующие границам [ αl, αu’] исходящего потока событий и оставшейся пропускной способности, полезной для других задач. Эту оставшуюся пропускную способность получают преобразованием кривых обслуживания [ β l, βu] в кривые обслуживания [ βl, βu] (рис. 103). Эта оставшаяся пропускная способность может быть использована для низкоприоритетных задач для выполнения на том же процессоре.

Рис. 103. Преобразование потока событий и пропускной способности компонентами реального времени

Исходящие потоки и оставшаяся пропускная способность ограничиваются следующими функциями:

αu= [( αu βu) βl] βu;

αl= [( α l βu) βl] βl;

βu= ( βu αl) 0;

βl= ( βl αu) 0.

Операции, используемые в этих равенствах, определяются следующим образом:

183

(f g)(t) = inf 0 ≤ u t{f (t − u) + g(u)};

(f g)(t) = sup 0 ≤ u t{f (t − u) + g(u)};

(f g)(t) = sup u ≥ 0{f (t + u) − g(u)}; (f g)(t) = inf u ≥ 0{f (t + u) − g(u)},

где – оператор минимума; inf – точная нижняя граница; sup – точная верхняя граница.

По существу, эти равенства характеризуют исходящие потоки и пропускную способность. Эти равенства были адаптированы из теории связи. Для работы с ними можно просто использовать инструмен-

тарий Matlab.

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

2.7.4. Модели энергии и мощности

Модели энергии и модели мощности необходимы для оценки соответствующих технических требований. Обе модели тесно связаны, как следует из выражения E = integral(P*dt), где E – энергия, а P – мощность. Эти модели необходимы для оптимизации, нацеленной на снижение потребления энергии и мощности. Они также необходимы для оптимизации, нацеленной науменьшение температуры при работе системы.

Первая модель мощности была предложена в работе [39]. Она опирается на результаты измерения в реальной системе. Измеренная величина затем ассоциируется с выполненными командами. Модель включает так называемые базовые затраты и межкомандные затраты. Базовые затраты команды соответствуют потребляемой энергии из расчета на команду при выполнении бесконечной последовательности экземпляров такой команды. Межкомандные затраты моделируют дополнительно потребляемую энергию процессором при переключении на выполнение другой команды. Дополнительная энергия потребляется, например, из-за переключения функциональных узлов между «включено» и «выключено». Эта модель мощности фокусируется на потреблении процессора и не рассматривает потребляемую мощность памятью или другими частями системы.

184

В работе [40] предложена другая модель. Она базируется на документах, представляющих технические данные (data sheets) компонентов. Преимущество этого подхода в том, что при подсчете потребляемой мощности учитывается вклад всех компонентов встроенной системы. Однако информация в технической документации о средних значениях величин может быть менее точной, чем информация о максимальных и минимальных значениях.

Следующая модель включает детальный анализ эффекта конвейера. Однако она не учитывает операции с многими циклами и конвейерные «пузыри».

Другая модель основывается на точных измерениях с использованием реальной аппаратуры. Учитывается потребление процессора и памяти. Эта модель была интегрирована в компилятор энергии.

Еще одна оценка потребляемой мощности микропроцессорной системы выполняется на основе знаний уровня архитектуры без привлечения детальной информации на уровне электрической схемы или схемы размещения.

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

2.7.5. Тепловая модель

Стремление к высокой производительности встроенных систем увеличило возможность возникновения нагрева компонентов во время работы. Температура различных компонентов встроенных систем может оказывать серьезное воздействие на удобство их эксплуатации. В худшем случае перегрев компонентов может привести к поломке системы. Например, это может вызвать пожар. Перегрев компонентов приводит к тому, что встроенная система сама себя приводит к неисправному состоянию. Однако горячие компоненты могут также иметь другие последствия – отсутствие немедленных отказов. Например, время жизни системы может быть укорочено иногда раньше других факторов.

Тепловое поведение встроенных систем тесно связано с преобразованием электрической энергии в тепловую. Следовательно, тепловая модель обычно связана с моделью энергии. Тепловая модель базируется на

185

законах физики. Теплопроводность есть ключевая величина, рассматриваемая в тепловой модели. Теплопроводность определенного материала отражает количество тепла, передаваемого через покрытие из этого материала площадью A и толщиной L, когда температура на противоположной стороне отличается на 1 К. Обратную величину называют тепловым сопротивлением. Для плотно контактирующих покрытий эффективное общее тепловое сопротивление является суммой их индивидуальных тепловых сопротивлений. Это означает, что тепловое сопротивление суммируется так же, как и электрическое сопротивление в электрических цепях. Это соответствие также распространяется на массу аккумулированного тепла: масса соответствует емкости в электрических цепях. В результате тепловое моделирование обычно использует эквивалентную электрическую модель и хорошо известные приемы для решения уравнений электрических цепей [41].

Вопросы для самоконтроля

1.В чем суть проектирования программного обеспечения встроенных систем, основанного на модели?

2.Из каких элементов состоит модель вычислений?

3.Как в модели потока данных организованы вычисления?

4.Является ли временной автомат подмножеством расширенного автомата. Если да, то почему?

5.Какого рода встроенные системы хорошо описывать на SDL и почему?

6.В чем суть различия синхронных и асинхронных языков для проектирования встроенных систем?

7.Как в SCADE выполняется формальная верификация?

8.Какие механизмы используются на среднем уровне программного обеспечения для реализации одновременного исполнения последовательного кода?

9.Для чего необходим механизм взаимного исключения?

10.Что гарантирует последовательная непротиворечивость памяти?

11.В чем различие между процессами и потоками?

12.Какие средства используют для валидации проектов прикладного ПО?

186

ЗАКЛЮЧЕНИЕ

Вучебном пособии раскрываются особенности встроенных систем, область применения и последовательность их проектирования. Рассмотрены основные компоненты аппаратного обеспечения встроенных систем: процессор, память, устройства ввода-вывода и интерфейсы их взаимодействия. Выбор процессоров для встроенных систем имеет важное значение для программистов. Программисту может потребоваться использовать ассемблер для того, чтобы воспользоваться скрытыми возможностями процессора. Для приложений, требующих точных временных реакций, управление временем в программах может оказаться трудной задачей из-за сбоев конвейера и необходимости учета работы других параллельных ресурсов процессора.

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

Разработчик получает знания о том, какие части адресного пространства относятся к зависимой и энергонезависимой памяти, а также

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

Разработчик получает знания об аппаратном и программном механизмах, используемых для получения процессором данных от датчиков, и о формировании команд для исполнительных механизмов. В фокусе этого знания лежит мост между последовательной природой программы и параллельным физическим миром. Поэтому рассмотрен интерфейс ана- лого-цифрового преобразователя в перспективе цифровой обработки сигналов с учетом квантования, дискретизации и шумов.

187

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

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

Рассмотрен также верхний уровень абстракции программного обеспечения – модели вычислений, позволяющие разрабатывать как спецификации систем, так и их модели для последующей автоматической генерации объектного кода приложения. Модель вычислений позволяет на ранних стадиях проектирования обнаруживать некорректное задание требований и их реализацию. Рассмотрены как синхронные, так и асинхронные модели одновременного поведения. Изучение этих вопросов сформирует знания по эффективной методологии проектирования, основанной на модели.

Впоследней теме учебного пособия рассмотрены вопросы валидации и оценки проекта. Показаны такие инструменты валидации, как моделирование, эмуляция, макетирование и формальная верификация.

Вкачестве составляющих оценки проекта показаны оценки производительности, потребления энергии и выделения тепла.

Успешное освоение содержания дисциплины «Встроенные микропроцессорные системы» позволяет приобрести необходимую квалификацию для разработки функциональных спецификаций на системы управления двигателями летательных аппаратов, опираясь на современные информационные технологии в этой области проектной деятельности.

188

ЗАДАНИЯ

1. Конвейеризация

Рассмотрим таблицу распределения конвейера на рис. 8. Предположим, что процессор располагает логикой продвижения, которая способна сказать, что команда A записывает в тот же регистр, из которого читает команда B, и, следовательно, результат, записанный командой A, может быть прямо продвинут в АЛУ, не дожидаясь завершения записи. Предположим, что логика продвижения не тратит времени.

Дать исправленную таблицу распределения. Сколько циклов потеряют «пузыри»?

2.Иерархия памяти

I.Рассмотрим функцию compute_variance для вычисления дисперсии целых чисел из массива data.

1 int data[N];

2

3int compute_variance() {

4int sum1 = 0, sum2 = 0, result;

5int i;

6

7for(i=0; i < N; i++) {

8sum1 += data[i];

9}

10sum1 /= N;

11

12 for(i=0; i < N; i++) {

13sum2 += data[i] * data[i];

14}

15sum2 /= N;

16

17 result = (sum2 – sum1*sum1);

18

19 return result;

20 }

Предположим, что программа выполняется на 32-разрядном процессоре с кеш прямого отображения с параметрами (m; S; E; B) = (32; 8; 1; 8). Сделаем следующие допущения:

целое представляется 4 Б;

sum1, sum2, result, и I сохраняются в регистрах;

data сохраняется в памяти начиная с адреса 0x0;

189

Необходимо ответить на следующие вопросы:

1.Рассмотрим случай, когда N = 16. Сколько промахов кеш будет

вэтом случае?

2.Предположим N = 32. Вычислить новое значение числа прома-

хов.

3.Рассмотрим выполнение для N = 16 и 2-входовой кеш с параметрами (m; S; E; B) = (32; 8; 2; 4). Сколько промахов кеш будет в этом случае?

II. Кеш использует среднюю часть битов адреса как множество индексов, а старшую – как тег. Почему так сделано? Как изменится производительность кеш, если средние биты использовать как тег, а старшие как индекс?

III. Рассмотрим программу на Си и упрощенное отображение памяти 16-разрядного микроконтроллера, как показано на рисунке.

1

#include <stdio.h>

11 int main() {

2

#define FOO 0x0010

12 n = 0;

3 int n;

13 m = (int*)FOO;

4 int* m;

14 foo(*m);

5 void foo(int a) {

15 printf("n = %d\n", n);

6

if (a > 0) {

16 }

7n = n + 1;

8foo(n);

9}

10}

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

190

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]