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