嵌入式軟件開發(fā)工具造就更靈活的芯片
不斷演變的軟件開發(fā)方法不只是使基于處理器的設(shè)計(jì)變得更加簡便快捷。一個新興趨勢是,廠商制造更加靈活的硬件,提供使設(shè)計(jì)者更輕松地利用選項(xiàng)并在處理技術(shù)之間遷移的軟件。
要 點(diǎn)
·如何在體系結(jié)構(gòu)日益增多的情況下保持甚至提高軟件生產(chǎn)率?行業(yè)正在努力解決這一難題。
·對于處理器廠商而言,要想使其與眾不同,集成軟件,也可稱為“捆綁”,是一種日益重要的途經(jīng)。
·許多通用和專用方法正在興起和不斷演進(jìn),使設(shè)計(jì)者能探索比以往任何時(shí)候都更多的選擇,并在不同選擇之間轉(zhuǎn)換。
半導(dǎo)體公司正把更多軟件與其各自的處理器產(chǎn)品集成起來,這與過去截然不同,那時(shí)各公司把軟件開發(fā)工作和各種工具留給設(shè)計(jì)公司獨(dú)自完成。最早的軟件與硬件集成產(chǎn)品是匯編器和編譯器等開發(fā)工具,旨在使目標(biāo)處理器的編程更容易。在過去幾十年間,半導(dǎo)體公司及其開發(fā)工具合作伙伴提供的用于支持嵌入式軟件開發(fā)工作的軟件不斷發(fā)展壯大。但這些工作的重點(diǎn)一直是簡化和加快某種目標(biāo)處理器或某個類似處理器家族的使用與開發(fā)(見附文 《軟件生產(chǎn)率》)。至今在半導(dǎo)體公司及其合作伙伴的軟件和硬件集成方式方面出現(xiàn)了一個新趨勢,它不只是使開發(fā)更加簡便快捷,而且還使硬件更加靈活,并使設(shè)計(jì)者能夠在針對某個處理目標(biāo)確定和優(yōu)化設(shè)計(jì)方案之前探索更多選項(xiàng)。
嵌入式處理器市場的軟件開發(fā)面臨的一個挑戰(zhàn)是:如何高效地為設(shè)計(jì)者提供的大量處理器體系結(jié)構(gòu)(參考文獻(xiàn) 1 和參考文獻(xiàn) 2)。存在如此多的處理選項(xiàng)的一個原因是,它是嵌入式設(shè)計(jì)的一個關(guān)鍵考慮事項(xiàng),以便能夠很好地平衡提供的各種功能、特性和功耗,并利用最少的資源實(shí)現(xiàn)更低的成本。有數(shù)十家半導(dǎo)體公司向嵌入式系統(tǒng)設(shè)計(jì)者提供處理器,并且有若干種不同的處理方法集中于如何最好地解決問題(參考文獻(xiàn) 3),例如采用微處理器、微控制器、DSP(數(shù)字信號處理器)、可編程邏輯交換結(jié)構(gòu)、DSC(數(shù)字信號控制器)等。上述每個處理選項(xiàng)在體系結(jié)構(gòu)方面均為各自最擅長處理的任務(wù)類型選擇了一些折中,這經(jīng)常是以其它的體系結(jié)構(gòu)限制為代價(jià),后者在迅速而高效地執(zhí)行這些任務(wù)方面的作用可忽略不計(jì)。
若在單一系統(tǒng)內(nèi)采用 DSP、微處理器、加速邏輯等多個處理選項(xiàng),就會進(jìn)一步提高嵌入式軟件開發(fā)工作的復(fù)雜性。多數(shù)用戶把注意力重點(diǎn)放在臺式機(jī)內(nèi)的 CPU上,但是操縱磁盤驅(qū)動器、網(wǎng)絡(luò)連接、視頻顯示器等外設(shè)是電腦內(nèi)的一些嵌入式處理器。汽車需依靠數(shù)十顆處理器,即使是洗衣機(jī)、微波爐、冰箱等家電也可能使用若干顆微控制器來控制電機(jī)和用戶界面,并監(jiān)視整個系統(tǒng)。上述多個處理單元以更低的功耗和成本提供了恰好足夠的性能。
由于存在大量代碼不兼容的特殊處理選項(xiàng),迫使軟件開發(fā)團(tuán)隊(duì)按照目標(biāo)處理器體系結(jié)構(gòu)來確定其設(shè)計(jì),這是他們必須采取的首要行動之一。由于團(tuán)隊(duì)在一定時(shí)期對于項(xiàng)目最終所需資源知之甚少,因此上述決定對于項(xiàng)目的總體成本、設(shè)計(jì)難度和風(fēng)險(xiǎn)具有重大影響。
靈活的硬件
極為重要的是,半導(dǎo)體公司日益認(rèn)識到:供應(yīng)的軟件、運(yùn)行時(shí)代碼塊、開發(fā)工具再也不只是促進(jìn)各自芯片上市和銷售的輔助工具,其還是整套系統(tǒng)的必要組成部分。事實(shí)上,半導(dǎo)體公司在其芯片配套軟件方面將投入的總資源占開發(fā)預(yù)算的很大、很重要的一部分。處理器公司稱自己未涉足軟件領(lǐng)域的時(shí)代結(jié)束了。半導(dǎo)體公司的重點(diǎn)正在轉(zhuǎn)向那些把系統(tǒng)的某些部分劃分為硬件和軟件的系統(tǒng)公司。它們把其余軟件能力留給設(shè)計(jì)公司,以便添加各自的差異化特性。
半導(dǎo)體公司正在創(chuàng)建和維護(hù)更多的芯片產(chǎn)品配套軟件,這是因?yàn)閷τ谶@些公司而言,利用軟件來繼續(xù)過去十年的整合歷程成本更低,更安全,更靈活。處理器設(shè)備一直在把系統(tǒng)的更多部分集成到單一芯片中,包括外設(shè)、內(nèi)存和存儲器控制器等。然而,把所有功能部件都作為硬件集成起來并不總是切實(shí)可行的。例如,CRC(循環(huán)冗余檢查)在軟件中執(zhí)行時(shí),是一項(xiàng)高成本的功能,但在硬件中實(shí)現(xiàn)則比較簡單。然而只有數(shù)種處理器(如 Microchip 公司的產(chǎn)品)實(shí)際包含集成式 CRC 寄存器。在所有處理器中都包含 CRC 寄存器沒有意義,這是因?yàn)樵S多應(yīng)用不需要它,但是某些情況中,處理器的主要應(yīng)用會足夠多地使用它,因而這就有理由把它包含在芯片中。
處理器廠商對集成軟件看法的改變導(dǎo)致的一個新結(jié)果是,如果廠商和設(shè)計(jì)者能在其提供的處理器當(dāng)中支持靈活性,那么這類軟件就會給他們帶來巨大好處。多數(shù)處理器公司均提供多種處理器體系結(jié)構(gòu),因此它們能更好地面向多種應(yīng)用。為所有這些產(chǎn)品提供有用的集成軟件并非一件易事,特別是如果無法在所有這些體系結(jié)構(gòu)之間支持軟件靈活性。事實(shí)上,雖然一些公司在其部分處理器產(chǎn)品內(nèi)支持靈活性,但提供面向公司所有體系結(jié)構(gòu)的整合且全面的集成軟件套件依然是將來的一個目標(biāo)。該方法不同于能支持半導(dǎo)體廠商整個處理器產(chǎn)品線開發(fā)工作的單一集成軟件開發(fā)環(huán)境。
處理器體系結(jié)構(gòu)變化的趨勢使事情更加復(fù)雜。據(jù) Hi-Tech Software 公司首席執(zhí)行官 ClydeStubbs 表示,與行業(yè)預(yù)期相反的是,處理器體系結(jié)構(gòu)的數(shù)量實(shí)際上一直在增加。在某種意義上,指令集體系結(jié)構(gòu)的這種擴(kuò)散證明了現(xiàn)代編譯器的成功,這是因?yàn)樵趯δ繕?biāo)處理器的指令集進(jìn)行抽象方面,它們做了值得認(rèn)可的工作。雖然一些變化來自特殊執(zhí)行引擎等體系結(jié)構(gòu)特性,但內(nèi)存體系結(jié)構(gòu)能夠容忍內(nèi)存訪問延遲是架構(gòu)差異化的重大推動力量。這種體系結(jié)構(gòu)的變化性是反復(fù)無常的,它是實(shí)際差異化的結(jié)果,體系結(jié)構(gòu)設(shè)計(jì)團(tuán)隊(duì)為針對特定應(yīng)用類別的處理器做一些折中。
這類變化性削弱了第三方IP塊的可用性和高效率代碼(特別是實(shí)時(shí)敏感代碼)的移植性。C和C++等編程語言不包括以適應(yīng)這些在體系結(jié)構(gòu)方面很重要的差異為目標(biāo)的結(jié)構(gòu)。,倘若編譯器需要能夠有效采用這些差異化資源,就必須使用專有語言擴(kuò)展。因此,雖然處理器體系結(jié)構(gòu)在指令級已變得對編譯器更友好,但在現(xiàn)代體系結(jié)構(gòu)的差異化特性方面,它們對編譯器已變得不太友好了。處理器的指令集是較次要的差異化因素,它的內(nèi)存體系結(jié)構(gòu),以及它如何能以并行方式或較低功耗執(zhí)行相關(guān)操作,則是更重要的因素。遺憾的是,這些任務(wù)并非編譯器的強(qiáng)項(xiàng)。
即使在不同處理器之間使用相同指令集,也不足以在它們之間輕松實(shí)現(xiàn)靈活性。獲得 ARM 授權(quán)的組織對各自 ARM7 設(shè)備實(shí)現(xiàn)差異化的方式之一是借助專有的中斷、總線、外設(shè)和內(nèi)存訪問結(jié)構(gòu)。雖然這種方法使處理器能處理某類工作負(fù)荷,但它使兩個使用相同 CPU 的設(shè)備之間的代碼移植復(fù)雜化了。ARM 的 Coretex 體系結(jié)構(gòu)是措施的一部分,其目的是通過為中斷處理指定一致方法等,幫助應(yīng)對這些類型的軟件移植難題。
評論