在SoC器件中如何平衡嵌入式軟件的關(guān)鍵作用?
嵌入式系統(tǒng)開發(fā)主要有板級、芯片級與臺式機(jī)三大領(lǐng)域。在本??校饕接懥藨?yīng)用MCU、微處理器、DSP進(jìn)行板級開發(fā)的工具。但是在美國,嵌入式開發(fā)主要指芯片級的SoC(系統(tǒng)芯片)。
在本刊7月期108~110頁上,曾介紹了美國“2007電子高峰會議”上的“SoC軟件設(shè)計討論會”。在此報道的基礎(chǔ)上,這里薈萃了會上的部分精彩問答。
會場:從左至右代表來自:Mentor,MIPS,Tensilica,Wipro
會議舉辦地——美國加州Monterey風(fēng)景
多核環(huán)境vs并行化
主持人:Gartner的John Barber:對于那些利用了并行化的架構(gòu)的設(shè)計,多核環(huán)境構(gòu)成了一大挑戰(zhàn)。如果我們能克服這一挑戰(zhàn),Tensilica的多核推想就可能成真?
Tensilica - Steve Roddy:我認(rèn)為關(guān)鍵在于我們整個行業(yè)嘗試并應(yīng)用通用型計算的架構(gòu),還是去應(yīng)用更適合于嵌入式計算的技術(shù)。我曾經(jīng)對兩種情況進(jìn)行了比較:分別將一個嵌入了Pentium內(nèi)核的器件和一個嵌入式設(shè)計提交流片前的對比。嵌入式設(shè)計利用了如下的優(yōu)勢,即功能度可以劃分為獨立的小系統(tǒng),并在獨立的模塊中實現(xiàn),從而能實現(xiàn)優(yōu)化的功能度。過往,這些都是硬件上的模塊,你在通用型的主控上有軟件API(應(yīng)用程序接口),讓編程者訪問這些硬件上存在的資源。如果你嘗試過一個20~30萬門陣列模塊,這是一種很正常的設(shè)計風(fēng)格。正是因為這些模塊可能恰好是處理器,用處理器進(jìn)行設(shè)計將具有更高的效率,而且用處理器進(jìn)行設(shè)計將更寬容一些,你如果以處理器作為設(shè)計的基礎(chǔ)引擎的話,則在交付流片后還可以對其進(jìn)行重新編程。你有更多的處理器,也不必改變使用的模式,并不意味著你現(xiàn)在要面對另外的15個處理器,而你必須了解另外15種可編程設(shè)計。如果你給編程者所提供的是定義良好的API,以便訪問內(nèi)核-內(nèi)核的資源。一般的編程者都可以輕松地應(yīng)對這樣的編程任務(wù),只有SoC設(shè)計者需要知道某個模塊是處理器,了解并行化軟件的內(nèi)核是如何運作的。
Wipro - Siby Abraham:我與你們的看法有一點不同。如今,談到嵌入式軟件工程,為了利用好多核架構(gòu),你必須擁有編譯器、編程語言。隨著你進(jìn)入更高性能水平,這些工具顯得更為重要。在功能被清晰劃分的地方,我同意你們的看法。但是,我們越來越多地看到,應(yīng)用中所采用的處理器數(shù)量增長很快,而性能如何提高也將成問題。
Tensilica – Steve:隨著時間的推移,軟件的工作變得愈來愈重要。那些目前業(yè)界的標(biāo)準(zhǔn)化組織正在著手進(jìn)行標(biāo)準(zhǔn)的制定,多核組織已經(jīng)建立了一個工作組,著手制定關(guān)于API的標(biāo)準(zhǔn),使之能根據(jù)多核的特點來分配workload。隨著時間的推移,人們必須推出基礎(chǔ)架構(gòu),使開發(fā)者不必去面對多核帶來的復(fù)雜性,不必讓一個半導(dǎo)體公司的客戶、軟件工程師,打開說明書去查清其芯片架構(gòu)的每一個細(xì)節(jié),我們不能強(qiáng)迫每個工程師去了解清楚芯片上的每一個細(xì)節(jié)。
MIPS科技 - Jack Browne:我認(rèn)為,如果你考察器件的復(fù)雜性,130nm的SoC上市前成本是1300~1500萬美元;90nm時,成本是3000萬美元。人們推出了ASSP,他們不是針對某個具體問題進(jìn)行定制的ASIC。在今天的65nm和45nm節(jié)點上,人們的設(shè)計方法是大量地復(fù)用。所以80%的設(shè)計是復(fù)用的。我們需要API來推進(jìn)這些開發(fā)工作,我們可以劃分各種東西,劃分音頻Codec(編/解碼器),此后,我可以將其放到任何一個設(shè)計中。但是,除了API,還應(yīng)該有一個平臺化的架構(gòu),以便保證你的上市時間。
為了實現(xiàn)這一點,我們需要廠商能提供電子系統(tǒng)級的模型,這樣軟件人員不用去讀說明書。只要有一張CD,上面有可執(zhí)行的芯片模型,它的運行速度足夠快。所以,你能夠?qū)崿F(xiàn)你的應(yīng)用。于是,當(dāng)芯片被取回來時,你就有相應(yīng)的軟件了。你可以解決芯片上存在的缺陷。而你可以實現(xiàn)相應(yīng)的并行化,讓芯片上的各個部分能工作。
代碼編寫人力不足?
問:嵌入式軟件的代碼的行數(shù)每年以46%的速度增長。而編寫代碼所動用的人力,則以7.5%的年均增長率成長。你看,這里的障礙在于人力的缺乏。
{{分頁}}
MIPS – Jack:人們解決這個問題的方式,同樣是復(fù)用。每一件產(chǎn)品不能從一張白紙起步——公司采取這種策略的話,就會倒閉。你必須推出相互間有繼承性的產(chǎn)品線。一個好的例子就是802.11。它最早是以小帶寬的b開始的,而g則成為主流,而去年圣誕節(jié),802.11n也降低到了100美元的價位,達(dá)到了消費類的空間。軟件也是這樣運作的。復(fù)雜性在于,你必須讓數(shù)據(jù)包能四處移動,而且讓吞吐率提高2個數(shù)量級。如果你第一個軟件行不通的話,你在開發(fā)第二款產(chǎn)品時就必須重新編寫,而這樣的公司是沒法生存的。我們這個行業(yè)對于那些策略上犯錯誤的公司是很殘酷的。
Mentor – Bill Chown:我繼續(xù)擴(kuò)展這個話題,80%的程序是復(fù)用的。但是并不是每個軟件都有那么高的復(fù)用率。隨著軟件的開發(fā),越來越多的軟件形成了軟件包、軟件棧,從而能被方便地復(fù)用。因此,并不需要人力也增長46%來解決這個問題。我發(fā)現(xiàn)復(fù)用的一個問題是,我的手機(jī)包含了手機(jī)廠商從1990年以來編寫的所有軟件——這里面實在有些是垃圾。
問:軟件46%的增長速度與人力7.5%的增長速度間的差距將會逐年增大,你們最終會遇到人力方面的問題?
Mentor – Bill:我們會發(fā)現(xiàn)類似的情況曾經(jīng)發(fā)生過,在硬件空間中,如今的自動化技術(shù)已經(jīng)無法進(jìn)一步產(chǎn)生動力了。我們就必須引入新的人力,以便在硬件上能進(jìn)一步提升其層次??纯窜浖I(lǐng)域,頭號的軟件工具是什么?是VI。VI中不是全套的自動化工具,它的自動化是在不斷提升的,當(dāng)然不一定與你提到的人力的增長速度同步。它的發(fā)展速度當(dāng)然與軟件代碼的行數(shù)的增加是一致的。在軟件空間中,自動化是一個非常開放的領(lǐng)域,作為我們這樣的自動化廠商來說,軟件業(yè)已經(jīng)習(xí)慣了VI的價格,試圖說服他們,自動化的價格與VI的價格不太一樣,將是一項有趣的挑戰(zhàn)。
Tensilica - Steve:正如Bill提到的那樣,也許現(xiàn)在復(fù)用是過多了,這會影響到用戶的體驗。
協(xié)議棧已成熟?
問:當(dāng)Jack提及802.11時,實際上談?wù)摰氖莾煞N不同的軟件。他所說的是協(xié)議棧,與Paul實際談到的軟件是不一樣的。這個說法對嗎?協(xié)議?,F(xiàn)在是一個比較成熟的技術(shù)了。
MIPS – Jack:隨著程序的行數(shù),例如電視的操作系統(tǒng)軟件從100萬行程序進(jìn)步到300~800萬行,我再添加50萬行,就可以形成相應(yīng)的環(huán)境中間件,則我一旦編寫完一套軟件包,就可以在其他任何地方使用。你應(yīng)該看到的挑戰(zhàn)是——上市的時間。設(shè)計工程師們要完成足夠好的設(shè)計。我進(jìn)行的設(shè)計滿足了客戶的需求,而Steve所做的設(shè)計超出了用戶的需求,其設(shè)計開銷也是我的2倍,而且所花的時間更長,則在市場上我將會取勝。我經(jīng)常遇到同行談技術(shù)上挑戰(zhàn)的困惑:我的設(shè)計更好,但為什么我的競爭對手能賣出去,而我卻不能?當(dāng)設(shè)計足夠好的時候,客戶就愿意為任何別的東西付錢。這就是為什么以前人們?yōu)榱伺⒊绦蚩s小20%而付錢的時代早已一去不復(fù)返的原因,因為內(nèi)存已經(jīng)很便宜了。我在買新手機(jī)時,只要花20美元就可以買到一張1GB的內(nèi)存卡。
低功耗標(biāo)準(zhǔn)化
問:軟件對于SoC的低功耗來說已經(jīng)成為一個關(guān)鍵性的因素?,F(xiàn)在低功耗的標(biāo)準(zhǔn)化吸引了人們的密切關(guān)注,幾家組織已經(jīng)希望我們能在不久的將來制定出大家都同意的標(biāo)準(zhǔn)。
MIPS – Jack:影響功耗的問題有兩個:一是泄漏,為了保證晶體管的速度,現(xiàn)在的柵疊層只有3個分子厚。芯片上一半的功耗都可歸結(jié)為漏電?,F(xiàn)在有許多制造方面的信息,用于解決漏電問題。另一方面,是多核和單核之間的差別。一個雙倍頻運行的處理器內(nèi)核,其功耗將低于多個以一半的頻率運行的內(nèi)核的總功耗。如果你能把任務(wù)分解為若干部分,我可以在多個內(nèi)核上分配這些任務(wù),我可以關(guān)閉其中的若干個內(nèi)核 。我的手機(jī)可以通過802.11網(wǎng)絡(luò)來實現(xiàn),我不需要開啟GSM無線部分。這些系統(tǒng)的定義都可以由客戶通過OEM(委托制造)來完成。你可以看到許多其他的重點,可以是標(biāo)準(zhǔn)化,等等。我們之所以從事這些工作,其原因就是設(shè)法賺錢??蛻艨刹辉敢飧跺X,但他們的確需要解決方案。隨著時間飛輪的轉(zhuǎn)動,我想,我們今天卻沒有我們所需要的吸引力。
Tensilica – Steve:我認(rèn)為要降低功耗,現(xiàn)在的層的劃分太過于分明。在EDA界對共用的流程的討論,通過信息的交換,一個針對具體架構(gòu)的設(shè)計實現(xiàn),可以快速優(yōu)化,以便實現(xiàn)功耗的降低,但是在架構(gòu)層次上實現(xiàn),這里是實現(xiàn)大幅度節(jié)能的地方,無論他是像Jack所說的那樣,可以把任務(wù)分配給多個更小的處理器,并針對特定的功能對處理器進(jìn)行任何優(yōu)化,我們對數(shù)據(jù)流的架構(gòu)進(jìn)行設(shè)計,提供ESL層次的建模,如果你灌入總線的數(shù)據(jù)太多,而且影響到了速度,這就也許在不同的模塊間實現(xiàn)直接連接。通過硬件和軟件方面的建模而實現(xiàn)更高層次上的建模,則可以實現(xiàn)極大的節(jié)約,并了解你的架構(gòu)選擇的影響,以及它是否合適。
互操作和可移植的標(biāo)準(zhǔn)化
問:如何看待開放標(biāo)準(zhǔn)架構(gòu)的發(fā)展潮流,因為這實現(xiàn)了系統(tǒng)間的互操作性,尤其在嵌入式系統(tǒng)間的互操作性和可移植性方面?
{{分頁}}
Tensilica – Steve:這的確是開放式架構(gòu)的事,這又回到了并行化的問題?;ゲ僮餍哉嬲鹱饔玫牡胤?,趨向于我們首先要解決的部分,互操作性在實踐中突出的地方,是我們的具體應(yīng)用間的通信機(jī)制,而不是這些應(yīng)用間的互作用機(jī)制,完全在系統(tǒng)層次上。是否要實現(xiàn)某種程度上的互操作,不妨去看看流程流向哪里。
MIPS – Jack:另一個推動互操作性發(fā)展的動力是如下的事實:軟件的品質(zhì)要達(dá)到可以投產(chǎn)的程度。一旦我擁有802.11解決方案,所有的協(xié)議都已經(jīng)解決。我經(jīng)過驗證,證明其不會丟失包,或者失去對某些包的存儲。這就是我們的下一件產(chǎn)品努力的對象。我要在我的膝上機(jī)上裝上無線LAN,我希望我的手機(jī)裝上無線LAN,我希望我的照相機(jī)也裝上無線LAN。但是一天結(jié)束時,我不用為多出來的價值而付費。所以我希望軟件能夠工作,我并不太在乎它有點過大。因為我面臨的挑戰(zhàn),是保證推向市場的產(chǎn)品能像我所宣稱的那樣工作。
如果我有高品質(zhì)的代碼,我就可以更快地上市。那就是業(yè)界的情況,因為人們所使用的這些裝置是可以互操作的,知道它們能正常工作。在座的人有多少向自己的PC上下載過東西?當(dāng)你直接下載到硬件上時,會導(dǎo)致其他部分的崩潰。當(dāng)我們不能提供相應(yīng)的性能時,就設(shè)法繞開它,這就違反了規(guī)則。系統(tǒng)已經(jīng)變得如此復(fù)雜,以至于你必須進(jìn)行有序的設(shè)計,因此人人都必須遵守規(guī)則。
軟件適配器
問:關(guān)于軟件的復(fù)用性。Siby說,軟件對于性能、內(nèi)存占用、功耗、效率、對駭客的抵御能力和可視化來說,應(yīng)該負(fù)更多的責(zé)任。最終則還是要依賴于硬件來實現(xiàn)。那么,如果你不斷改動模塊的架構(gòu),并改變相應(yīng)的硬件,那么你如何保證軟件的復(fù)用性?
MIPS - Jack:我們必須有一個軟件適配層。也就是說,我可以改變USB端口。我在這個產(chǎn)品上沒有USB,而在其他產(chǎn)品上有5個,最終使軟件并不會在意,因為它是在平臺上運行的。
問:通過適配層能否改動軟件的架構(gòu)?
MIPS – Jack:是的,你所希望做到的是,建立若干個出色的孤島,而我不希望過問這些島的互操作性,我不希望過問芯片上的多個處理器。你不用過問芯片本身,不用過問操作系統(tǒng),不用去管編程手冊。這些島都極為出色,是供應(yīng)鏈上的頂級廠商所開發(fā)的。我們的最佳的產(chǎn)品將通過把這些串聯(lián)起來而形成產(chǎn)品,將其推向產(chǎn)品,而且能工作。所以,它們是獨立的,但人們必須遵循某種規(guī)則,他們必須能信任對方——這些產(chǎn)品是可用的。
Wipro - Siby:我們必然看到軟件的復(fù)用越來越多,而且我們會看到還會推出具有鮮明特色的軟件,體現(xiàn)在硬件架構(gòu)上。
Tensilica – Steve:我認(rèn)為達(dá)到那一點的途徑是找出哪里放置抽象層才具有意義。而對那一點進(jìn)行標(biāo)準(zhǔn)化,的確能提供互操作性。形成先進(jìn)的功能劃分,并保證其性能模塊間的互操作性,對其進(jìn)行優(yōu)化,重新設(shè)定其架構(gòu),或者任何其他的工作,使之能更好地完成其工作,而不必?fù)?dān)心它與系統(tǒng)的其他部分的互操作能力如何。因為你已經(jīng)從這件任務(wù)中解放出來。復(fù)用本身并不能實現(xiàn)復(fù)用。
自動代碼生成器
問:從汽車電子應(yīng)用的角度來看,自動代碼生成器一直得到廣泛的應(yīng)用。它有可能成為未來的解決方案嗎?
MIPS – Jack:我想,汽車業(yè)追求的一點是駕乘的完美性。在某些汽車上,裝備了100多個處理器。而有些汽車所能用到的處理器更少,這是因為人機(jī)接口的應(yīng)用很糟糕。因此客戶無法在對汽車進(jìn)行保養(yǎng)后,通過原先的編程來將座椅回復(fù)原位?,F(xiàn)在是有很多變革,但人們必須在編程語言的層次上開展工作,而我們現(xiàn)在還找不出產(chǎn)出率比C++更高的編程語言。我認(rèn)為那就是挑戰(zhàn)的一部分。
Mentor – Bill:但我的確看到汽車工業(yè)是一個高度講求安全性、品質(zhì)的行業(yè)。新一代代碼的推出也必須滿足法規(guī)和標(biāo)準(zhǔn),而且通過采用這些條文的運用來進(jìn)行修正。汽車、醫(yī)療等行業(yè)都要按規(guī)章來實行,并通過長時間的執(zhí)行來獲得專業(yè)水準(zhǔn),這樣才能承擔(dān)任務(wù)。因此這些規(guī)則將逐步轉(zhuǎn)化成標(biāo)準(zhǔn)和法規(guī)。汽車電子業(yè)推出了許多標(biāo)準(zhǔn)。而在各個模塊間實現(xiàn)標(biāo)準(zhǔn)化的時候,代碼生成器才能真正得到應(yīng)用。但它也會限制革新。
問:在Bosch,80%的代碼是由代碼生成器生成的。
Mentor – Bill:我的確看到了很多這些例子。有趣的一點是,在20%的軟件上仍然能夠?qū)崿F(xiàn)鮮明特色。
產(chǎn)業(yè)斷層
問:我看到了現(xiàn)在有這么多的架構(gòu)和產(chǎn)品,人們使用了大量的IP內(nèi)核、IP處理器,而從架構(gòu)的角度來看,你所看到的架構(gòu)隨著應(yīng)用的不同而有較大的差異。在10多年內(nèi),這會導(dǎo)致大兼并嗎?這個會不會導(dǎo)致專業(yè)的分化,于是會出現(xiàn)大的公司,而且出現(xiàn)一些從軟件上支持他們的、專業(yè)化的小公司?
MIPS – Jack:我在參加一個EDA會議時,一家小公司曾問了同樣的問題。半導(dǎo)體業(yè)和電子業(yè)是存在斷層的行業(yè),它們是由一批獨立的公司來領(lǐng)導(dǎo)的。但是同時,為了獲得最大收入,你必須遵守一些規(guī)則,但是如果我的軟件1990年有這些軟件的話,因為我用的是Nokia,但是,我買了個新手機(jī)后,我所得到的是一張白紙,不用再忍受20年前的程序中的那些錯誤。獨立的空間是有的。當(dāng)新產(chǎn)品和新標(biāo)準(zhǔn)推出后,你會感到斷層,要考慮如何得到足夠的批量,以保證商業(yè)模式的可行性。這也就是適者生存,我們希望存在競爭的原因。
(迎九根據(jù)此次會議的錄音整理)
評論