Постигнете бизнес успех чрез преодоляване на пропастта между софтуер и хардуер във вградените системи
Фазите на проектиране и създаване на прототипи на технологични решения обикновено са дълги и критични за успеха на бизнеса. Първоначалните капиталови инвестиции в тези проекти могат да бъдат високи. Следователно, залозите и очакванията са високи! Тъй като все още страдаме от последиците от пандемията по отношение на забавяния на доставките и недостиг на електронни компоненти, в много случаи компаниите изпитват огромен натиск да достигнат до пазара и да изпратят ангажираните стоки навреме.
Съществува и постоянна битка за хардуерни ресурси, тъй като приложенията често изискват нарастващи процесорни възможности. Това означава, че хардуерът вероятно ще бъде прекалено голям в началото и остарял с времето. Следователно ще трябва да преработвате дизайна си, за да добавяте постоянно повече хардуерни възможности към технологичните си продукти и ненужно да увеличавате разходите и инвестициите.
И накрая, намирането на опитен персонал, който едновременно е запознат с вградени системи, хардуер и софтуер, не винаги е лесно. В някои компании инженери без опит във вградените системи ръководят и разработват технологични проекти. В резултат на това те може да изберат комплекти за разработчици (Jetson Nano, Arduino, Raspberry PI) поради познаването на тези системи и стандартните функции, които улесняват интеграцията с други системи. Платките за разработчици имат уникални индустриални приложения и можете да прочетете повече за тях в тази публикация в блога. Но това може да не е така за масовото производство.
Всички тези фактори могат да повлияят негативно на решението относно езиковото програмиране, архитектурата на алгоритмите и цялостното разработване на приложен софтуер. Понякога решението се свежда до използване на стандартна операционна система вместо персонализирана или специализирана, с код за колаж на Stack Overflow, вместо собствен алгоритъм. Това води до неизползвани ресурси, прекалено големи хардуерни компоненти, ненужни забавяния, допълнителни разходи за редизайн или повторно сертифициране. Така че, в началото това може да изглежда като рентабилно решение, но в бъдеще може да се окаже, че не е най-рентабилното. Нещо повече, по време на нормална работа, хардуерът, работещ с пълен капацитет, може да доведе до прегряване, намалено средно време между повреди и по-големи разходи за ремонт.
Архитектура на алгоритмите
Нека анализираме общия път, който компаниите поемат към архитектурата на алгоритмите. За съжаление, някои инженери, работещи с вградени системи, сядат да програмират без никакъв план или дизайн. Проблемът е, че ще разберете едва след това дали вашият алгоритъм е ефективен или неефективен.
Ще опишем два примера за идеални алгоритми: линеен и логаритмичен. Нека приемем, че всяка основна операция отнема секунда. В случая на линейните алгоритми, с увеличаване на входните данни, времето за изпълнение също се увеличава, както се вижда в Таблица 1. Ако този алгоритъм се държеше логаритмично, тъй като имахме повече входни данни, времето му за изпълнение щеше да остане стабилно (Таблица 2). Например, алгоритмите за двоично търсене показват логаритмично поведение.
Таблица 1. Връзка между входните данни и времето за изпълнение на линеен алгоритъм.
| Вход | Време за изпълнение |
| 10 | 0.00000001 |
| 100 | 0.0000001 |
| 1 000 | 0,000001 |
| 1 000 000 000 | 1 |
Таблица 2. Връзка между входните данни и времето за изпълнение на логаритмичен алгоритъм.
| Вход | Време за изпълнение |
| 10 | 3.3E-09 |
| 100 | 6.6E-09 |
| 1 000 | 1.0E-08 |
| 1 000 000 000 | 3.0E-08 |
Тези два примера обикновено не се срещат в реалния живот, защото алгоритмите едва ли се държат линейно или логаритмично. Алгоритъмът „Глупаво сортиране“ може да се използва като пример за резултатите, когато не е извършено планиране или проектиране преди да започнете програмирането. Това е структуриращ алгоритъм, базиран на случаен тест в група карти с факториално поведение (Таблица 3). В който, ако имаме 100 входа, имаме 3.2E+183 години, за да го решим. Според НАСА възрастта на Вселената е 13,7E9 години, което означава, че ако изпълним алгоритъма на датата на създаването на Вселената, той все още ще работи без решение. Искате да стоите далеч от факториални алгоритми, като алгоритъма „Глупаво сортиране“, за да избегнете разхищение на хардуерни ресурси.
Таблица 3. Връзка между входните данни и времето за изпълнение на факториален алгоритъм.
| Вход | Време за изпълнение | Продължителност в години |
| 10 | 10 | 3.171E-7 |
| 100 | 1.0E+191 | 3.2E+183 |
| 1 000 | ? | ? |
| 1 000 000 000 | ? | ? |
Всъщност хардуерът има своите ограничения. Като цяло, времевите скали на вградените системи са трудни за разбиране от хората. Поради тази причина ще дефинираме скала, която е по-лесна за разбиране за този анализ. За типичния 3,9 GHz процесор, включен в обикновените компютри от 2014 г., можем да кажем, че един цикъл на процесора отнема 1 секунда, като времената са показани в Таблица 4. В тези случаи четенето на файл от твърдия диск може да отнеме в най-лошия случай 1,5 години или четенето на файл в RAM паметта може да отнеме 32 секунди. Както можете да видите, лошо проектиран алгоритъм ще хаби ресурси. Следователно, може да си помислите, че се нуждаете от по-мощен хардуер с увеличени възможности, когато трябва да прегледате как разработвате софтуера.
Таблица 4. Времена за изпълнение на редовни процеси в компютър в по-лесен за разбиране мащаб.
| Дейност | Време | Човешки мащаб |
| Цикъл на процесора | 0,256 нс | 1 секунда |
| Кеш L1 | 1.026 нс | 4 секунди |
| Кеш L2 | 3.077 нс | 12 секунди |
| Кеш L3 | 6.154 нс | 24 секунди |
| R.A.M. Памет | 8,4 нс | 32 секунди |
| Твърд диск – най-добрият случай | 2,9 мс | 132 дни |
| Твърд диск – в най-лошия случай | 12 мс | 1.5 години |
| СДД | 85 μs | 3 дни и 20 часа |
| Промяна на контекста | 10 μs | 10,8 часа |
| Квантов | 100 мс | 12,4 години |
Как постигате бизнес успех, когато разработвате технологични продукти?
С внимателна архитектура на алгоритмите. Трябва да сформирате екип, който включва поне един опитен инженер по вградени системи. Този професионалист ще бъде най-добре подготвен да проектира алгоритми, които ще работят на специфичен хардуер. Този човек ще подобри софтуера, за да съответства най-добре на хардуера (не обратното), което от своя страна ще осигури по-добра възвръщаемост на инвестициите и ще ви спести много оперативни и производствени главоболия.
Системният инженер, специализиран в вградени системи, ще разработва стратегии, ще планира и програмира, за да избегне често срещани грешки при разработването на софтуер, и ще може да предвижда възможностите на хардуера. Това означава, че предизвикателствата могат да бъдат намалени и ще бъде по-лесно да се постигне бизнес успех. Кой знае! Може дори да станете герой на Индустрия 4.0, Интернет на нещата, Роботиката или Обработката на изображения във вашата компания.
Ако искате да продължите да четете по тази тема, можете да разгледате този блог. Можете също така разгледайте тази страница за повече информация относно вградените системи.
