專(zhuān)家觀點(diǎn):在多核軟件設(shè)計(jì)中提供協(xié)同性
掃描二維碼
隨時(shí)隨地手機(jī)看文章
數(shù)據(jù)流語(yǔ)言的固有并行特性非常適合于對(duì)協(xié)同系統(tǒng)進(jìn)行編程。
在多核設(shè)計(jì)中,選擇正確的方法來(lái)表達(dá)并行處理是至關(guān)重要的;然而,僅僅那樣并不足以確保一個(gè)項(xiàng)目的成功。在開(kāi)發(fā)為多核處理器準(zhǔn)備的軟件的過(guò)程中,檢查完整的軟件堆棧有助于評(píng)估關(guān)鍵的問(wèn)題。
實(shí)時(shí)軟件堆棧由開(kāi)發(fā)工具、庫(kù)、設(shè)備驅(qū)動(dòng)器和實(shí)時(shí)操作系統(tǒng)等組成。大多數(shù)公司在實(shí)時(shí)軟件堆棧上構(gòu)建的上一代應(yīng)用都是針對(duì)單處理器設(shè)計(jì)的。把這種軟件移植到多核處理器的公司體驗(yàn)了不同級(jí)別的可擴(kuò)展性。
除錯(cuò)工具是開(kāi)發(fā)商用來(lái)深入分析代碼在多核硬件上運(yùn)行過(guò)程的關(guān)鍵軟件堆棧要素之一。在調(diào)試多核系統(tǒng)的過(guò)程中,可視化發(fā)揮特別關(guān)鍵的作用,因?yàn)樗兄陂_(kāi)發(fā)商查看多個(gè)核心在同一時(shí)間的運(yùn)行情況。
在軟件堆棧的底層—上面的每一層都依賴它—是RTOS。多核系統(tǒng)以對(duì)稱(chēng)多處理(SMP)或不對(duì)稱(chēng)多處理(ASMP)為基礎(chǔ)實(shí)現(xiàn)了一個(gè)架構(gòu)方案。RTOS至少要支持一種處理。
在SMP系統(tǒng)中,處理器安裝在同一電路板或芯片上,并共享全局資源,如存儲(chǔ)器、總線和外設(shè)。通用操作系統(tǒng)—如Windows、Mac和LinuxOS—多年來(lái)就支持SMP。然而,一個(gè)RTOS的確定性行為必須被保護(hù),以滿足硬實(shí)時(shí)時(shí)序約束的要求,與此同時(shí),在不同的處理器之間分配任務(wù),因此,對(duì)于要實(shí)現(xiàn)的RTOS供應(yīng)商來(lái)說(shuō),SMP是一項(xiàng)附加的挑戰(zhàn)。傳統(tǒng)上,非常少的商用RTOS支持這種功能,盡管在過(guò)去的幾年中,確實(shí)一窩蜂地添加這種支持。QNX的Neutrino和NI的LabVIEWReal-TimeOS就是支持SMP的兩個(gè)例子。SMP的優(yōu)勢(shì)在于操作系統(tǒng)在可用的處理器核心上處理自動(dòng)加載的平衡任務(wù)。
在不對(duì)稱(chēng)多處理系統(tǒng)中,各個(gè)處理器彼此之間不共享資源。每一個(gè)處理器都需要一個(gè)操作系統(tǒng)(與此相反,SMP僅僅需要一個(gè)操作系統(tǒng)),因此,就招致了更多的開(kāi)發(fā)開(kāi)銷(xiāo)。處理器必須被獨(dú)立的編程,并且要實(shí)現(xiàn)在各個(gè)處理器之間傳輸數(shù)據(jù)的通信方案。
對(duì)于多核開(kāi)發(fā)來(lái)說(shuō),選擇具有SMP支持的操作系統(tǒng)是推薦的實(shí)現(xiàn)方案,因?yàn)樗軌虬l(fā)揮自動(dòng)加載平衡的優(yōu)勢(shì)。