Obțineți succesul în afaceri prin reducerea decalajului dintre software și hardware în sistemele încorporate
Fazele de proiectare și prototipare a soluțiilor tehnologice sunt de obicei lungi și critice pentru succesul afacerii. Investițiile inițiale de capital pot fi mari în aceste proiecte. Prin urmare, mizele și așteptările sunt mari! Întrucât încă suferim consecințele pandemiei în ceea ce privește întârzierile la livrare și penuria de componente electronice, în multe cazuri companiile se confruntă cu o presiune enormă pentru a ajunge pe piață și a trimite stocul asumat la timp.
Există, de asemenea, o luptă constantă pentru resursele hardware, deoarece aplicațiile necesită adesea capacități de procesare tot mai mari. Aceasta înseamnă că hardware-ul va fi probabil supradimensionat la început și învechit în timp. Prin urmare, va trebui să vă revizuiți designul pentru a adăuga constant mai multe capabilități hardware produselor dvs. tehnologice și pentru a crește inutil costurile și investițiile.
În cele din urmă, găsirea de personal experimentat și cunoștințe în sisteme integrate, hardware și software în același timp nu este întotdeauna ușoară. În unele companii, inginerii fără experiență în sisteme integrate conduc și dezvoltă proiecte tehnologice. Prin urmare, aceștia ar putea alege kituri de dezvoltare (Jetson Nano, Arduino, Raspberry PI) datorită familiarității cu aceste sisteme și a caracteristicilor standard care facilitează integrarea cu alte sisteme. Plăcile de dezvoltare au aplicații industriale unice și puteți citi mai multe despre ele în această postare pe blog. Dar acest lucru s-ar putea să nu fie valabil pentru producția de masă.
Toți acești factori pot influența negativ decizia privind programarea limbajelor, arhitectura algoritmilor și dezvoltarea generală a software-ului pentru aplicații. Uneori, decizia se reduce la utilizarea unui sistem de operare standard în locul unuia personalizat sau specializat, cu un cod Stack Overflow collage în loc de un algoritm proprietar. Acest lucru duce la resurse neexploatate, componente hardware supradimensionate, întârzieri inutile, costuri suplimentare de reproiectare sau recertificare. Așadar, la început, aceasta ar putea părea soluția rentabilă, dar s-ar putea să descoperiți că nu a fost cea mai rentabilă soluție pe parcurs. Mai rău, în timpul funcționării normale, hardware-ul care funcționează la capacitate maximă poate duce la supraîncălzire, reducerea timpului mediu dintre defecțiuni și costuri de reparații mai mari.
Arhitectura algoritmului
Să analizăm calea obișnuită pe care o aleg companiile către arhitectura algoritmilor. Din păcate, unii ingineri care lucrează cu sisteme integrate se așează să programeze fără niciun plan sau design. Problema este că veți afla abia ulterior dacă algoritmul dvs. este eficient sau ineficient.
Vom descrie două exemple de algoritmi ideali: liniari și logaritmici. Să presupunem că fiecare operație de bază durează o secundă. În cazul algoritmilor liniari, pe măsură ce intrările cresc, timpul de execuție crește și el, așa cum se vede în Tabelul 1. Dacă acest algoritm s-ar comporta logaritmic, deoarece am avea mai multe intrări, timpul său de execuție ar rămâne stabil (Tabelul 2). De exemplu, algoritmii de căutare binară prezintă un comportament logaritmic.
Tabelul 1. Relația dintre intrări și timpul de execuție al unui algoritm liniar.
| Intrare | Timp de execuție |
| 10 | 0,00000001 |
| 100 | 0,0000001 |
| 1 000 | 0,000001 |
| 1 000 000 000 | 1 |
Tabelul 2. Relația dintre intrări și timpul de execuție al algoritmului logaritmic.
| Intrare | Timpul de execuție |
| 10 | 3.3E-09 |
| 100 | 6.6E-09 |
| 1 000 | 1.0E-08 |
| 1 000 000 000 | 3.0E-08 |
Aceste două exemple nu se găsesc de obicei în viața reală, deoarece algoritmii se comportă cu greu liniar sau logaritmic. Algoritmul „Stupid sort” poate fi folosit ca exemplu al rezultatelor atunci când nu s-a efectuat nicio planificare sau proiectare înainte de a începe programarea. Acesta este un algoritm de structurare bazat pe un test aleatoriu într-un grup de cărți cu comportament factorial (Tabelul 3). În care, dacă avem 100 de intrări, avem 3,2E+183 ani pentru a-l rezolva. Conform NASA, vârsta Universului este de 13,7E9 ani, ceea ce implică faptul că, dacă am executa algoritmul la data creării universului, acesta ar funcționa în continuare fără nicio soluție. Trebuie să evitați algoritmii factoriali, cum ar fi algoritmul „Stupid sort”, pentru a evita risipa resurselor hardware.
Tabelul 3. Relația dintre intrări și timpul de execuție al unui algoritm factorial.
| Intrare | Timp de execuție | Durata în ani |
| 10 | 10 | 3.171E-7 |
| 100 | 1.0E+191 | 3.2E+183 |
| 1 000 | ? | ? |
| 1 000 000 000 | ? | ? |
De fapt, hardware-ul are limitele sale. În general, scalele de timp ale sistemelor integrate sunt dificil de înțeles de către oameni. Din acest motiv, vom defini o scală mai ușor de înțeles pentru această analiză. Pentru procesorul tipic de 3,9 GHz inclus în computerele obișnuite din 2014, putem spune că un ciclu CPU durează 1 secundă, cu timpii arătați în Tabelul 4. În aceste cazuri, citirea unui fișier de pe hard disk ar putea dura în cel mai rău caz 1,5 ani, sau citirea unui fișier din memoria RAM ar putea dura 32 de secunde. După cum puteți vedea, un algoritm prost conceput va irosi resurse. Prin urmare, ați putea crede că aveți nevoie de hardware mai robust, cu capacități sporite, atunci când trebuie să revizuiți modul în care dezvoltați software-ul.
Tabelul 4. Timpii de execuție ai proceselor obișnuite într-un computer la o scară mai ușor de înțeles.
| Activitate | Timp | Scară umană |
| Ciclul CPU | 0,256 ns | 1 secundă |
| Cache L1 | 1,026 ns | 4 secunde |
| Cache L2 | 3,077 ns | 12 secunde |
| Cache L3 | 6.154 ns | 24 de secunde |
| R.A.M. Memorie | 8,4 ns | 32 de secunde |
| Hard disk – în cel mai bun caz | 2,9 ms | 132 de zile |
| Hard disk – cel mai rău caz | 12 ms | 1.5 ani |
| SDD | 85 μs | 3 zile și 20 de ore |
| Schimbarea contextului | 10 μs | 10,8 ore |
| Cuantic | 100 ms | 12,4 ani |
Cum obții succesul în afaceri atunci când dezvolți produse tehnologice?
Cu o arhitectură algoritmică atentă. Trebuie să formați o echipă care include cel puțin un inginer cu experiență în sisteme integrate. Acest profesionist va fi cel mai bine echipat pentru a arhitectura algoritmi care vor rula într-un anumit hardware. Practic, această persoană va îmbunătăți software-ul pentru a se potrivi cel mai bine hardware-ului (nu invers), ceea ce, la rândul său, va oferi o rentabilitate mai bună a investiției și vă va scuti de multe dureri de cap operaționale și de producție.
Un inginer de sisteme integrate va strategiza, va planifica și va programa pentru a evita greșelile comune în dezvoltarea de software și va putea prezice capacitățile hardware-ului. Aceasta înseamnă că provocările pot fi reduse și va fi mai ușor să obții succes în afaceri. Cine știe! S-ar putea chiar să devii eroul Industriei 4.0, al Internetului Lucrurilor, al Roboticii sau al Prelucrarii Imaginilor în compania ta.
Dacă vrei să continui să citești despre acest subiect, poți consulta acest blog. De asemenea, puteți verifică această pagină pentru mai multe informații despre sistemele integrate.
