Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






В: Отличия ядра встраиваемой системы от настольной системы






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

О: векторные расширения - это дополнение в набор команд процессора, содержащее специализированные типы данных, регистры и инструкции, ориентированные на использование парадигмы SIMD.

В современных процессорах размер вектора в случае вычислений с одинарной точностью составляет 8, а для вычислений с двойной точностью 4 (набор инструкций AVX2, который использует 16 YMM регистров).

В настоящее время векторные расширения присутствуют в наборах команд процессоров различных производителей и архитектур. Так, в центральных процессорах Intel соответствующие наборы команд эволюционировали по пути MMX – SSE – SSE2 – SSE3 – SSE4 – AVX, преодолев путь от векторной целочисленной арифметики, организованной на специализированных 64-разрядных регистрах, и ориентированной преимущественно на обработку звука и видео, до широкого спектра арифметических операций с плавающей запятой, работающей на 256-разрядных регистрах, и операций управления работой подсистемы памяти. Так же необходимо упомянуть дополнение 3DNow!, в свое время реализованное в только процессорах AMD, а также расширение NEON, активно развивающееся в процессорах архитектуры ARM встраиваемых систем.

В: Приведите пример кода, который можно векторизовать и пример который нельзя.

О: Векторизация накладывает ряд ограничений на код циклов:

· Требуется независимость итераций. Чем меньше зависимостей, тем больше потенциала для параллелизма.

· Нежелательно вызывать функции в вычислительно трудоемких циклах. Однако вызов функции тоже не приговор. Компилятор может встроить код функции и успешно векторизовать цикл.

· Необходимо следить за выравниванием данных в памяти, устранять противоречия.

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

· Над однотипными данными должны выполняться однотипные операции

Пример кода, который успешно векторизуется компилятором:

for (int i = 0; i < n; i++)

c[i] = a[i] * b[i] + a[i];

Пример невекторизуемого кода:

for (int i = 1; i < n; i++)

a[i] = a[i-1] + calc(n-i);

 

В: Отличия ядра встраиваемой системы от настольной системы

О: Изначально операционная система Linux и ее соответствующее окружение были предназначены для настольных систем. Однако когда Linux начал проникать во встраиваемые системы, встала задача уменьшения расхода памяти ядра. Зачастую подход к уменьшению размера ядра состоит в удалении неиспользуемого кода. Действительно, в ядре встраиваемой системы можно отказаться от многих функционалов, необходимых в работе с настольной системой. Во встраиваемой системе логичнее сразу связать необходимые модули с ядром, таким образом необходимость в загружаемых модулях отпадает. Помимо кода поддержки загружаемых модулей в ядре, можно сэкономить место и на пользовательских программах для загрузки модулей. (insmod, rmmod и lsmod)

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

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

-------------------------------------------------------------------------------------

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

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






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.