Десет урока за вградена виртуализация

Виртуална машина. (Април 2019).

Anonim

Някои неща, които трябва да се следят при разработването на продукти за вградения пазар, използващи многоядрени процеси и виртуализация

ЧРЕЗ МАРК ХЕРМЕРИНГ
Вятър речни системи
Alameda, СА
//www.windriver.com

Има много концепции, които трябва да имате предвид, когато разработвате продукти за вградения пазар, като използвате многоядрени процеси и виртуализация. Ето какво считаме за 10-те най-важни.

1. Помислете за опциите за разделяне

Съществуват няколко възможности за разделяне на система за многоезичие. Симетричната многопроцесорна обработка (SMP) е една операционна система, управляваща множество ядра, но това има някои режийни разходи и сложност. Асиметричната многопроцесорна обработка (AMP) може да бъде по-подходяща за вградените приложения, защото използва отделна операционна система на всяко ядро, което позволява на разработчика на системата да комбинира операционни системи в реално време и с отворен код в един и същ дизайн. Той също така позволява на различни операционни системи да работят с различни типове сърцевини, като тези, оптимизирани за графики или работа в мрежа.

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

Фигура 1. Различни многокоренови конфигурации.

Хипервайзорът може да се използва за споделяне на времето с една ядро ​​между няколко операционни системи (работи във виртуални машини). Той може също така да дели четирициклен чип в два двупосочни SMP дяла. На последно място, той може да се използва за наблюдение на асиметрична система за многопроцесорна обработка (или sAMP, за контролирано AMP); ръководителят осигурява зареждане, жизнен цикъл (пауза, рестартиране) и възможности за надеждност и съкращава времето за разработка в сравнение с традиционната AMP система. Виртуализацията осигурява възможност за разделяне и осигурява сигурност и надеждност едновременно.

2. Помислете за избора на операционната система

Multicore и виртуализацията предоставят възможност за комбиниране на различни операционни системи в дялове в един продукт. Например можете да използвате RTOS за важни за времето задачи и да използвате операционна система с общо предназначение, например Linux, за ситуации, в които времето е по-малко важно. Или използвайте RTOS заедно с графичен потребителски интерфейс (GUI), силно отделен, за да можете да актуализирате функционалността на GUI често, без да повлиявате на оперативната (и сертифицирането) на RTOS.

Избирането на операционна система също така позволява на наследствената операционна система и приложенията в един дял, комбинирани с нова операционна система в друга, например, за да добавите повече функционалност към съществуващ продукт.

3. Помислете за консолидация

Multicore предоставя възможност за консолидиране на съществуващите мултипроцесорни проекти в един процесор. Особено в индустрии като медицински и промишлени, практиката беше да се разделят различни нива на сигурност или сертифициране на различни преработватели. Multicore и виртуализацията предоставят възможност да се комбинират тези мултипроцесорни системи в различни ядра на един чип, където виртуализиращият слой поддържа разделянето и гарантира, че системата е сертифицируема (виж фигура 2).

Фигура 2. Мигриране от мултипроцесор към мултикор.

4. Помислете за бъдещето

Може би е подходящо да погледнете архитектурата на вашата система и да се подготвите за бъдещето. Ако използвате едноядрено устройство, помислете дали процесорите ще получат повече ядра само през следващите години. Подготвяйки архитектурата си сега, за да бъдете гъвкави и готови за многоядрени ядра, това може да ви даде крачка за конкуренцията.

5. Помислете за паралелизъм

Множество сърцевини осигуряват истински паралелизъм; различните операции ще се изпълняват в точно същото време, променят променливи и буфери в паметта ви. Съществуващото приложение, което работи перфектно на една единствена сърцевина, може да покаже състоянието на състезанието, когато се изпълнява на многоекратно.

В зависимост от приложението ви има няколко подхода, за да се възползвате от множество ядра. Възможно е да изпълнявате няколко копия на приложението си в SMP, AMP или sAMP конфигурации. Въпросът тук е дали вашето приложение може да се възползва от множество случаи.

Възможно е да има значителни предимства при пренаписването на кода, за да се възползвате от множеството ядра. Това е особено ценно при приложения, които имат няколко отделни потока от дейности, при които всеки поток може да бъде разпределен на отделен процесор, като всички се изпълняват независимо. В еднопроцесорна среда кодът не може да бъде паралелизиран. Пренаписването на кода може да доведе до значително увеличение на скоростта или намаляване на консумацията на енергия за една и съща работа.

6. Имайте предвид ресурсите

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

Входът / изходът може да бъде пречка, която може да бъде преодоляна или чрез увеличаване на входно-изходните ресурси, или чрез осигуряване на ефективно картографиране на входящите данни върху множество ядра. За някои системи това може да бъде толкова просто, колкото разпределянето на определено ядро ​​на набор от входове / изходи, но за други може да е по-сложно. Това може да повлияе и върху избора на многоекологична софтуерна архитектура с различни начини за разпределяне на операционните системи към сърцевините.

7. Не забравяйте сигурността

Едно от ключовите предимства на виртуализацията е способността да се направи системата по-сигурна. Чрез стартиране на ключови приложения като контрол на достъпа или управление на ресурсите в една виртуална машина с висока сигурност, други приложения могат да бъдат добавени към системата без да се прави компромис със сигурността. Това става все по-важно, тъй като промишлените и вградени системи имат все повече и повече мрежови връзки.

8. Не забравяйте стартирането

Стартирането на виртуализирана система с множество ядра не е просто въпрос на натискане на превключвателя On. Софтуерът трябва да съзнава, че е многоекранна система и извежда едно ядро ​​в едноядрен режим, за да стартира първоначалните тестове на паметта и I / O; в противен случай се появява хаос, с множество ядра, които тестват спомени и периферни устройства, които биха могли да бъдат случайни. Това е особено важно при нулиране на системата или прекъсване на захранването, тъй като таблото може да се включи по различен начин в сесия за отстраняване на грешки.

Отново, хипервайзорът осигурява тази функционалност извън кутията. Концепцията, свързана с стартирането, е надстройването на полето. Много системи получават актуализации в полето и трябва да рестартират с актуализация в възможно най-кратък срок. Виртуализацията предоставя добри възможности, защото е лесно да се стартира допълнителна операционна система за гореща резервна част, която може да поеме товара, докато оригиналната операционна система се рестартира. Тази гореща резервна може да има същата сърцевина като операционната система, която носи товара, или може да работи на отделно ядро.

9. Не забравяйте инструментите

С вградените системи, които нарастват по размер, предизвикателството често не е просто отстраняване на грешки, а откриваме какво да отстраняваме. Анализните инструменти осигуряват преглед на системата (следи от събития, използване на паметта, покритие на кода и много други), за да откриете области, където изпълнението е повредено, така че да може да се използва дебъгер за разследване на действителния код.

Отстраняването на грешки в мултикорната система е малко по-включено от едноядрената система. Помислете за спиране на заявка на едно ядро. Другите ядра в системата все още постигат напредък. Следователно, всички буфери за комуникация между приложенията на различни ядра ще се запълнят и препълват бързо. Също така, опитването да се определи състоянието на глобалната система над всички ядра е трудно, без да може да се спрат всички ядра наведнъж. Отстраняването на грешки на чип чрез интерфейси JTAG дава възможност за спиране на всички ядра на чип (почти) наведнъж и същевременно може да бъде много полезно при стартиране на системата (вж. № 8).

10. Изследвайте и измервайте

Многоелементните системи са изцяло нов подход за вградения дизайнер и могат да осигурят значителни ползи за ефективността и икономии на разходи. Но те са силно зависими от приложението. Говоренето с някои експерти ще помогне да се съсредоточи върху точните нужди на проекта.

Намирането на най-добрата мултикорейна конфигурация (SMP, AMP, sAMP или виртуализирано) не е лесно; това изисква внимателно разследване. Дори тогава не е възможно да се предвиди точно изпълнението на дадено приложение на дадена конфигурация с висока степен на сигурност.

Установяването на конфигурацията и изпълнението на референтните показатели е наистина единственият начин да се гарантира правилното функциониране. Сравнителните показатели обаче са много общи и вашето приложение може да подчертае хардуера по различен начин от бенчмарка.

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

пример

През последните години бяха въведени хипервайзори за вградени системи. Едно такова предлагане е Hypervisor на Wind River, който наскоро беше обновен до версия 1.1 и работи с едноядрени и многоядрени процесори. Новите функции включват поддръжка на най-новите микроархитектури на Intel, като Nehalem базирани процесори (с поддръжка на QorIQ на Freescale след тази година), интеграция с най-новите версии на VxWorks и Wind River Linux, като същевременно поддържа и други операционни системи за по-голяма гъвкавост, за интервиртуална машинна комуникация и оптимизация за използване във връзка с дебъгване на On-Chip 3.2. ■