Erzielen Sie Geschäftserfolg, indem Sie die Lücke zwischen Software und Hardware in eingebetteten Systemen schließen
Die Design- und Prototyping-Phasen technologischer Lösungen sind in der Regel langwierig und entscheidend für den Geschäftserfolg. Bei diesen Projekten können die anfänglichen Kapitalinvestitionen hoch sein. Folglich sind die Einsätze und Erwartungen hoch! Da wir immer noch unter den Folgen der Pandemie in Form von Lieferverzögerungen und Engpässen bei elektronischen Bauteilen leiden, stehen Unternehmen in vielen Fällen unter einem enormen Druck, den Markt zu erreichen und zugesagte Lagerbestände pünktlich zu versenden.
Außerdem gibt es einen ständigen Kampf um Hardware-Ressourcen, da Anwendungen oft steigende Verarbeitungskapazitäten erfordern. Das bedeutet, dass die Hardware zu Beginn wahrscheinlich überdimensioniert und mit der Zeit veraltet sein wird. Sie müssen daher Ihr Design überarbeiten, um Ihren technologischen Produkten ständig mehr Hardwarefunktionen hinzuzufügen und Kosten und Investitionen unnötig in die Höhe zu treiben.
Schließlich ist es nicht immer einfach, erfahrenes Personal zu finden, das sich gleichzeitig mit eingebetteten Systemen, Hardware und Software auskennt. In einigen Unternehmen leiten und entwickeln Ingenieure ohne Erfahrung mit eingebetteten Systemen Technologieprojekte. Daher entscheiden sie sich möglicherweise für Entwicklerkits (Jetson Nano, Arduino, Raspberry PI), da sie mit diesen Systemen vertraut sind und über Standardfunktionen verfügen, die die Integration mit anderen Systemen erleichtern. Entwicklerboards haben einzigartige industrielle Anwendungen, und Sie können in diesem Blogbeitrag mehr darüber lesen. Bei der Massenproduktion ist dies jedoch möglicherweise nicht der Fall.
All diese Faktoren können die Entscheidung über die Sprachprogrammierung, die Algorithmusarchitektur und die gesamte Anwendungssoftwareentwicklung negativ beeinflussen. Manchmal kommt es darauf an, ein Standardbetriebssystem anstelle eines angepassten oder spezialisierten Betriebssystems mit einem Stack Overflow-Collage-Code anstelle eines proprietären Algorithmus zu verwenden. Dies führt zu ungenutzten Ressourcen, überdimensionierten Hardwarekomponenten, unnötigen Verzögerungen, zusätzlichen Neudesign- oder Rezertifizierungskosten. Auf den ersten Blick scheint dies die kosteneffizienteste Lösung zu sein, aber später stellen Sie möglicherweise fest, dass es sich nicht um die kosteneffizienteste Lösung handelt. Was noch schlimmer ist: Während des regulären Betriebs kann die voll ausgelastete Hardware zu Erwärmung, einer kürzeren mittleren Zeit zwischen Ausfällen und höheren Reparaturkosten führen.
Algorithmenarchitektur
Lassen Sie uns den gemeinsamen Weg analysieren, den Unternehmen in Richtung Algorithmusarchitektur einschlagen. Leider programmieren einige Ingenieure, die mit eingebetteten Systemen arbeiten, ohne jeglichen Plan oder Entwurf. Das Problem besteht darin, dass Sie erst im Nachhinein herausfinden, ob Ihr Algorithmus effektiv oder ineffizient ist.
Wir werden zwei Beispiele idealer Algorithmen beschreiben: lineare und logarithmische. Nehmen wir an, dass jeder Grundvorgang eine Sekunde dauert. Bei linearen Algorithmen erhöht sich mit zunehmenden Eingaben auch die Ausführungszeit, wie in Tabelle 1 dargestellt. Wenn sich dieser Algorithmus logarithmisch verhielte, bliebe die Ausführungszeit stabil, da wir mehr Eingaben hätten (Tabelle 2). Beispielsweise weisen binäre Suchalgorithmen ein logarithmisches Verhalten auf.
Tabelle 1. Beziehung zwischen Eingaben und Ausführungszeit eines linearen Algorithmus.
|
Eingabe |
Ausführungszeit |
|
10 |
0,00000001 |
|
100 |
0,0000001 |
|
1 000 |
0,000001 |
|
1 000 000 000 |
1 |
Tabelle 2. Beziehung zwischen Eingaben und Ausführungszeit des logarithmischen Algorithmus.
|
Eingabe |
Ausführungszeit |
|
10 |
3.3E-09 |
|
100 |
6.6E-09 |
|
1 000 |
1.0E-08 |
|
1 000 000 000 |
3.0E-08 |
Diese beiden Beispiele findet man im wirklichen Leben normalerweise nicht, da sich Algorithmen kaum linear oder logarithmisch verhalten. Der „Stupid Sort“-Algorithmus kann als Beispiel für die Ergebnisse verwendet werden, wenn vor dem Programmieren keine Planung oder Gestaltung durchgeführt wurde. Hierbei handelt es sich um einen Strukturierungsalgorithmus, der auf einem Zufallstest in einer Gruppe von Karten mit faktoriellem Verhalten basiert (Tabelle 3). Wenn wir also 100 Eingaben haben, haben wir 3,2E+183 Jahre Zeit, um das Problem zu lösen. Nach Angaben der NASA beträgt das Alter des Universums 13,7E9 Jahre, was bedeutet, dass es immer noch ohne Lösung laufen würde, wenn wir den Algorithmus zum Zeitpunkt der Entstehung des Universums ausführen würden. Sie sollten sich von faktoriellen Algorithmen wie dem „Stupid Sort“-Algorithmus fernhalten, um eine Verschwendung von Hardwareressourcen zu vermeiden.
Tabelle 3. Beziehung zwischen Eingaben und Ausführungszeit eines faktoriellen Algorithmus.
|
Eingabe |
Ausführungszeit |
Dauer in Jahren |
|
10 |
10 |
3.171E-7 |
|
100 |
1.0E+191 |
3.2E+183 |
|
1 000 |
? |
? |
|
1 000 000 000 |
? |
? |
Tatsächlich hat die Hardware ihre Grenzen. Im Allgemeinen sind Zeitskalen eingebetteter Systeme für Menschen schwer zu erfassen. Aus diesem Grund werden wir für diese Analyse eine Skala definieren, die leichter verständlich ist. Für den typischen 3,9-GHz-Prozessor, der in normalen Computern von 2014 enthalten ist, können wir sagen, dass ein CPU-Zyklus 1 Sekunde dauert (siehe Tabelle 4). In diesen Fällen könnte das Lesen einer Datei auf der Festplatte im schlimmsten Fall 1,5 Jahre dauern, oder das Lesen einer Datei im RAM-Speicher könnte 32 Sekunden dauern. Wie Sie sehen, verschwendet ein schlecht konzipierter Algorithmus Ressourcen. Folglich könnten Sie denken, dass Sie robustere Hardware mit erweiterten Funktionen benötigen, wenn Sie überprüfen müssen, wie Sie die Software entwickeln.
Tabelle 4. Ausführungszeiten regulärer Prozesse in einem Computer in einer leichter verständlichen Skala.
|
Aktivität |
Zeit |
Menschlicher Maßstab |
|
CPU-Zyklus |
0,256 ns |
1 Sekunde |
|
Cache L1 |
1,026 ns |
4 Sekunden |
|
Cache L2 |
3.077 ns |
12 Sekunden |
|
Cache L3 |
6,154 ns |
24 Sekunden |
|
R.A.M. Speicher |
8,4 ns |
32 Sekunden |
|
Festplatte – bester Fall |
2,9 ms |
132 Tage |
|
Festplatte – schlimmster Fall |
12 ms |
1,5 Jahre |
|
SDD |
85 μs |
3 Tage und 20 Stunden |
|
Kontextänderung |
10 μs |
10,8 Stunden |
|
Quantum |
100 ms |
12,4 Jahre |
Wie erzielt man geschäftlichen Erfolg bei der Entwicklung technologischer Produkte?
Mit sorgfältiger Algorithmusarchitektur. Sie müssen ein Team zusammenstellen, das mindestens einen erfahrenen Ingenieur für eingebettete Systeme umfasst. Dieser Fachmann ist am besten für die Architektur von Algorithmen gerüstet, die auf einer bestimmten Hardware ausgeführt werden können. Diese Person wird grundsätzlich die Software so verbessern, dass sie am besten zur Hardware passt (nicht umgekehrt), was wiederum zu einer besseren Kapitalrendite führt und Ihnen eine Menge betrieblicher und fertigungsbezogener Probleme erspart.
Ein Ingenieur für eingebettete Systeme wird Strategien entwickeln, planen und programmieren, um häufige Fehler bei der Entwicklung von Software zu vermeiden, und er wird in der Lage sein, Hardwarefunktionen vorherzusagen. Dadurch können die Herausforderungen reduziert werden und es wird einfacher, geschäftliche Erfolge zu erzielen. Wer weiß! Vielleicht werden Sie in Ihrem Unternehmen sogar zum Helden von Industrie 4.0, Internet der Dinge, Robotik oder Bildverarbeitung.
Wenn Sie weiter über dieses Thema lesen möchten, können Sie sich diesen Blog ansehen. Sie können auch auf dieser Seite weitere Informationen zu eingebetteten Systemen finden.


