通過彌合嵌入式系統中軟件和硬件之間的差距來實現業務成功
技術解決方案的設計和原型製作階段通常耗時較長,對企業的成功至關重要。這些項目的初始資本投入可能很高。因此,風險和期望也都很高!由於疫情的影響,我們仍在承受著運輸延誤和電子元件短缺的後果,許多公司面臨巨大的壓力,必須按時將產品推向市場並交付已承諾的庫存。
此外,由於應用程式通常需要不斷提升處理能力,硬體資源的競爭也從未停止。這意味著硬體在初期可能配置過高,隨著時間的推移而過時。因此,您需要不斷修改設計,為您的技術產品添加更多硬體功能,從而不必要地增加成本和投資。
最後,要找到同時精通嵌入式系統、硬體和軟體的經驗豐富的員工並非易事。在一些公司,缺乏嵌入式系統經驗的工程師負責領導和開發技術專案。因此,他們可能會選擇開發套件(例如 Jetson Nano、Arduino、Raspberry Pi),因為他們熟悉這些系統,而這些套件具備便於與其他系統整合的標準功能。開發板在工業領域有著獨特的應用,您可以在這篇文章中了解更多資訊。但對於大規模生產而言,情況可能並非如此。
所有這些因素都會對程式語言、演算法架構以及整體應用軟體開發決策產生負面影響。有時,最終的選擇可能是使用標準作業系統,而不是定製或專用作業系統,或使用 Stack Overflow 上的拼湊程式碼,而不是專有演算法。這會導致資源浪費、硬體組件過大、不必要的延誤以及額外的重新設計或認證成本。因此,起初這似乎是一個經濟高效的解決方案,但從長遠來看,您可能會發現它不是最佳選擇。更糟的是,在正常運作期間,硬體滿載運轉會導致發熱、平均故障間隔時間縮短以及更高的維修成本。
演算法架構
讓我們分析一下企業建構演算法架構的常見路徑。遺憾的是,一些從事嵌入式系統開發的工程師在沒有任何計畫或設計的情況下就開始進行程式設計。問題在於,你只能在事後才能知道你的演算法是高效率還是低效。
我們將描述兩個理想演算法的例子:線性演算法和對數演算法。假設每個基本操作耗時一秒鐘。對於線性演算法,隨著輸入數量的增加,執行時間也會增加,如表 1 所示。如果演算法呈現對數特性,則隨著輸入數量的增加,其執行時間將保持穩定(表 2)。例如,二分查找演算法就表現出對數特性。
表 1. 線性演算法的輸入與執行時間的關係。
| 輸入 | 執行時間 |
| 10 | 0.00000001 |
| 100 | 0.0000001 |
| 1 000 | 0.000001 |
| 10億 | 1 |
表 2. 對數演算法的輸入與執行時間的關係。
| 輸入 | 執行時間 |
| 10 | 3.3E-09 |
| 100 | 6.6E-09 |
| 1 000 | 1.0E-08 |
| 10億 | 3.0E-08 |
這兩個例子在現實生活中並不常見,因為演算法很少呈現線性或對數行為。 「愚蠢排序」演算法就是一個例子,它展示了在程式設計之前沒有任何規劃或設計的情況下會產生的結果。這是一個基於隨機抽樣的演算法,其抽樣條件服從階乘分佈(表3)。例如,如果有100個輸入,我們需要3.2E+183年才能解決這個問題。根據NASA的數據,宇宙的年齡為13.7E9年,這意味著如果我們從宇宙誕生之日起就開始運行這個演算法,它仍然無法找到解決方案。為了避免浪費硬體資源,我們應該避免使用像「愚蠢排序」這樣的階乘演算法。
表 3. 階乘演算法的輸入與執行時間的關係。
| 輸入 | 執行時間 | 持續時間(年) |
| 10 | 10 | 3.171E-7 |
| 100 | 1.0E+191 | 3.2E+183 |
| 1 000 | ? | ? |
| 10億 | ? | ? |
事實上,硬體是有限制的。通常,嵌入式系統的時間尺度難以被人類理解。因此,為了便於分析,我們將定義一個更容易理解的時間尺度。對於2014年普通計算機中常見的3.9 GHz處理器,我們可以說一個CPU週期耗時1秒(如表4所示)。在這種情況下,從硬碟讀取一個檔案在最壞情況下可能需要1.5年,或從RAM記憶體讀取一個檔案可能需要32秒。由此可見,設計不佳的演算法會浪費資源。因此,在審查軟體開發流程時,您可能會認為需要更強大、效能更高的硬體。
表 4. 電腦中常規程序的執行時間(以易於理解的比例表示)。
| 活動 | 時間 | 人體尺度 |
| CPU週期 | 0.256 奈秒 | 1秒 |
| 緩存 L1 | 1.026 奈秒 | 4秒 |
| 二級緩存 | 3.077 奈秒 | 12秒 |
| 緩存 L3 | 6.154 奈秒 | 24秒 |
| R.A.M。 記憶 | 8.4 奈秒 | 32秒 |
| 硬碟-最佳情況 | 2.9毫秒 | 132天 |
| 硬碟-最壞情況 | 12毫秒 | 1.5年 |
| 固態硬碟 | 85微秒 | 3天20小時 |
| 背景變化 | 10 微秒 | 10.8 小時 |
| 量子 | 100毫秒 | 12.4年 |
在開發科技產品時,如何才能取得商業成功?
透過精心設計演算法架構,您需要組建一個團隊,其中至少要有一位經驗豐富的嵌入式系統工程師。這位專業人士最擅長設計能夠在特定硬體上運行的演算法。他/她會專注於優化軟體以更好地匹配硬體(而不是反過來),從而帶來更高的投資回報率,並為您省去許多運營和製造方面的麻煩。
嵌入式系統工程師會制定策略、規劃和編程,以避免軟體開發中常見的錯誤,並且能夠預測硬體效能。這意味著挑戰可以減少,更容易取得業務成功。誰知道呢!你甚至可能成為公司工業4.0、物聯網、機器人或影像處理領域的英雄。
