Gömülü sistemlerde yazılım ve donanım arasındaki boşluğu doldurarak iş başarısı elde edin
Teknolojik çözümlerin tasarım ve prototipleme aşamaları genellikle uzun ve iş başarısı için kritik öneme sahiptir. Bu projelerde başlangıç sermaye yatırımları yüksek olabilir. Sonuç olarak, riskler ve beklentiler de yüksektir! Pandeminin nakliye gecikmeleri ve elektronik bileşen kıtlığı açısından sonuçlarından hala muzdarip olduğumuz için, birçok durumda şirketler pazara ulaşmak ve taahhüt edilen envanteri zamanında göndermek konusunda muazzam bir baskı altındadır.
Ayrıca, uygulamaların sürekli artan işlem gücü gerektirmesi nedeniyle donanım kaynakları için sürekli bir mücadele söz konusudur. Bu, donanımın başlangıçta büyük boyutlu olacağı ve zamanla eskimiş hale geleceği anlamına gelir. Bu nedenle, teknolojik ürünlerinize sürekli olarak daha fazla donanım yeteneği eklemek için tasarımınızı gözden geçirmeniz ve maliyetleri ve yatırımları gereksiz yere artırmanız gerekecektir.
Son olarak, gömülü sistemler, donanım ve yazılım konusunda aynı anda bilgi sahibi deneyimli personel bulmak her zaman kolay değildir. Bazı şirketlerde, gömülü sistemler konusunda deneyimi olmayan mühendisler teknolojik projeleri yönetir ve geliştirir. Sonuç olarak, bu sistemlere aşinalık ve diğer sistemlerle entegrasyonu kolaylaştıran standart özellikler nedeniyle geliştirici kitlerini (Jetson Nano, Arduino, Raspberry PI) tercih edebilirler. Geliştirici kartlarının benzersiz endüstriyel uygulamaları vardır ve bunlar hakkında daha fazla bilgiyi bu blog yazısında bulabilirsiniz. Ancak bu durum seri üretim için geçerli olmayabilir.
Tüm bu faktörler, dil programlama, algoritma mimarisi ve genel uygulama yazılım geliştirme kararlarını olumsuz etkileyebilir. Bazen karar, özelleştirilmiş veya özel bir işletim sistemi yerine standart bir işletim sistemi kullanmaya ve tescilli bir algoritma yerine Stack Overflow'dan alınmış bir kod kullanmaya indirgenebilir. Bu durum, kullanılmayan kaynaklara, aşırı büyük donanım bileşenlerine, gereksiz gecikmelere, ek yeniden tasarım veya yeniden sertifikasyon maliyetlerine yol açar. Bu nedenle, başlangıçta maliyet etkin bir çözüm gibi görünse de, ilerleyen süreçte en maliyet etkin çözüm olmadığını fark edebilirsiniz. Daha da kötüsü, normal çalışma sırasında, donanımın tam kapasiteyle çalışması ısınmaya, arızalar arası ortalama sürenin azalmasına ve daha yüksek onarım maliyetlerine yol açabilir.
Algoritma Mimarisi
Şirketlerin algoritma mimarisine doğru izlediği yaygın yolu analiz edelim. Ne yazık ki, gömülü sistemlerle çalışan bazı mühendisler herhangi bir plan veya tasarım yapmadan programlamaya başlıyorlar. Sorun şu ki, algoritmanızın etkili mi yoksa verimsiz mi olduğunu ancak sonradan anlayacaksınız.
İdeal algoritmaların iki örneğini açıklayacağız: doğrusal ve logaritmik. Her temel işlemin bir saniye sürdüğünü varsayalım. Doğrusal algoritmalarda, girdiler arttıkça yürütme süresi de artar (Tablo 1'de görüldüğü gibi). Eğer bu algoritma logaritmik davransaydı, daha fazla girdi olduğunda yürütme süresi sabit kalırdı (Tablo 2). Örneğin, ikili arama algoritmaları logaritmik bir davranış sergiler.
Tablo 1. Doğrusal bir algoritmanın girdileri ve yürütme süresi arasındaki ilişki.
| Giriş | Yürütme Süresi |
| 10 | 0.00000001 |
| 100 | 0.0000001 |
| 1.000 | 0.000001 |
| 1.000.000.000 | 1 |
Tablo 2. Logaritmik algoritmanın girdileri ve çalışma süresi arasındaki ilişki.
| Giriş | Yürütme süresi |
| 10 | 3.3E-09 |
| 100 | 6.6E-09 |
| 1.000 | 1.0E-08 |
| 1.000.000.000 | 3.0E-08 |
Bu iki örnek, algoritmaların doğrusal veya logaritmik olarak davranması nadir olduğu için gerçek hayatta genellikle bulunmaz. Programlamaya başlamadan önce herhangi bir planlama veya tasarım yapılmadığında elde edilen sonuçlara örnek olarak "Aptal Sıralama" algoritması verilebilir. Bu, faktöriyel davranışa sahip bir kart grubunda rastgele bir teste dayalı bir yapılandırma algoritmasıdır (Tablo 3). 100 girdimiz varsa, çözmek için 3,2E+183 yılımız var. NASA'ya göre, Evrenin yaşı 13,7E9 yıldır; bu da algoritmayı Evrenin yaratıldığı tarihte çalıştırsaydık, hala çözümsüz bir şekilde çalışıyor olacağı anlamına gelir. Donanım kaynaklarını israf etmemek için "Aptal Sıralama" algoritması gibi faktöriyel algoritmalardan uzak durmak istersiniz.
Tablo 3. Faktöriyel algoritmanın girdileri ve çalışma süresi arasındaki ilişki.
| Giriş | Yürütme Süresi | Süre (Yıl) |
| 10 | 10 | 3.171E-7 |
| 100 | 1.0E+191 | 3.2E+183 |
| 1.000 | ? | ? |
| 1.000.000.000 | ? | ? |
Aslında donanımın da sınırlamaları vardır. Genel olarak, gömülü sistemlerin zaman ölçeklerini insanlar için kavramak zordur. Bu nedenle, bu analiz için daha kolay anlaşılabilir bir ölçek tanımlayacağız. 2014 yılındaki normal bilgisayarlarda bulunan tipik 3,9 GHz işlemci için, Tablo 4'te gösterilen sürelerle bir CPU döngüsünün 1 saniye sürdüğünü söyleyebiliriz. Bu durumlarda, sabit sürücüdeki bir dosyayı okumak en kötü senaryoda 1,5 yıl sürebilir veya RAM belleğindeki bir dosyayı okumak 32 saniye sürebilir. Gördüğünüz gibi, kötü tasarlanmış bir algoritma kaynakları israf edecektir. Sonuç olarak, yazılım geliştirmenizi gözden geçirmeniz gerektiğinde, daha yüksek yeteneklere sahip daha sağlam bir donanıma ihtiyacınız olduğunu düşünebilirsiniz.
Tablo 4. Bilgisayarda düzenli işlemlerin yürütme süreleri, daha kolay anlaşılabilir bir ölçekte.
| Aktivite | Zaman | İnsan Ölçeği |
| CPU Döngüsü | 0,256 ns | 1 saniye |
| Önbellek L1 | 1.026 ns | 4 saniye |
| Önbellek L2 | 3.077 ns | 12 saniye |
| Önbellek L3 | 6.154 ns | 24 saniye |
| R.A.M. Hafıza | 8,4 ns | 32 saniye |
| Sabit Disk – en iyi senaryo | 2,9 ms | 132 gün |
| Sabit Disk – en kötü senaryo | 12 ms | 1.5 yıl |
| SDD | 85 μs | 3 gün ve 20 saat |
| Bağlam Değişikliği | 10 μs | 10,8 saat |
| Kuantum | 100 ms | 12,4 yıl |
Teknolojik ürünler geliştirirken iş başarısını nasıl elde edersiniz?
Dikkatli bir algoritma mimarisiyle. En az bir deneyimli gömülü sistem mühendisi içeren bir ekip kurmanız gerekiyor. Bu profesyonel, belirli bir donanımda çalışacak algoritmaları tasarlamak için en uygun kişi olacaktır. Bu kişi temelde yazılımı donanıma en iyi şekilde uyacak şekilde geliştirecektir (tersi değil), bu da yatırım getirisini artıracak ve size birçok operasyonel ve üretim sorunundan kurtaracaktır.
Gömülü sistem mühendisi, yazılım geliştirirken sık yapılan hatalardan kaçınmak için strateji geliştirir, planlama yapar ve programlama yapar; ayrıca donanım yeteneklerini tahmin edebilir. Bu da zorlukların azaltılmasını ve iş başarısının daha kolay elde edilmesini sağlar. Kim bilir! Belki de şirketinizde Endüstri 4.0, Nesnelerin İnterneti, Robotik veya Görüntü İşleme alanlarında kahraman bile olabilirsiniz.
Bu konu hakkında daha fazla bilgi edinmek isterseniz, şunlara göz atabilirsiniz: bu blog. Ayrıca şunları da yapabilirsiniz Bu sayfaya göz atın Gömülü Sistemler hakkında daha fazla bilgi için.
