新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 利用工具和技巧應對多核設計領域的挑戰

        利用工具和技巧應對多核設計領域的挑戰

        作者: 時間:2009-08-21 來源:網絡 收藏

          多處理器電腦已存在一段時間了,但工程師們只是在最近幾年才有機會買到具有多個處理器或“核心”的芯片現貨。這些器件分為兩類:對稱型和非對稱型。第一類器件提供同一CPU內核的多個“克隆”,因此稱作對稱型。第二類是將不同類型的CPU、DSP、加速器都放在一個單片系統中。本文將專門介紹第一類多核技術。

          據Extreme Engineering Solutions公司首席執行官Rob Scidmore表示,與多核處理器使用的硬件僅存在很少幾項區別?!疤魬饡霈F在,當你必須把軟件從單核遷移到雙核時。當兩個處理器內核必須通信時,性能可能會降低很多。系統的等待時間變得更長,但吞吐率依然很高。當工程師們為每個內核把應用代碼分解成片段時,就必須應對上述局面。他們必須平衡等待時間和吞吐率?!?/P>

          但是,工程師們經常會把代碼分解成片段。Scidmore解釋說:“他們也許通過以太網端口接收圖像,用算法處理圖像,然后顯示它們。你可以在一個處理器上運行TCP/IP堆棧,在第二個處理器上運行算法,并把第三個處理器專門用于顯示。但是如果你有數千個匯編語言文件,那么你別無選擇,只能回到框圖并從頭開始,并花時間把某個應用劃分成幾個線程。”

          一些為對稱多處理(SMP)提供支持的操作系統(OS)可以提供某種方式來集成舊代碼和新代碼。例如,QNX公司的Neutrino OS提供混合多處理(bound multiprocessing),它使開發人員能使多個進程始終位于某個核心,或稱“鎖定”。QNX公司產品經理Kerry Johnson說:“假設你有一些舊軟件,它們在多核芯片或多處理環境中也許不能恰當運行。代碼可能會假定它擁有對I/O設備等的獨占控制權,這可能會在多核系統中造成一些問題。這種情況下,你可以把軟件‘鎖’在某個內核里,不必修改代碼。然后你可以添加新應用軟件,它將利用剩余內核。舊軟件和新軟件并存于某個多核芯片上的相同OS中?!?/P>

        多核處理器的虛擬化

          Johnson說:“要讓開發人員理解多核芯片不需要每一個內核都擁有自己的OS,這是一個挑戰。具備SMP能力的單一OS可立即監督多個內核的運行情況。隨著更多OS廠商開始支持SMP,開發人員將會更好地理解,他們可以使用一種編程風格,并讓他們的代碼工作在單核、雙核、四核處理器。一套軟件可工作在所有這些環境中。”

          當然,這些必須包含源代碼級調試器。 Johnson解釋說:“設計人員需要一個調試器處理所有這些內核,希望在一個窗口里看到一切,而不是每個內核都有一個調試窗口。在特定時間,無論哪個處理器運行代碼,調試器都必須在斷點停止,追蹤程序執行情況,并在所有內核收集數據,就像它對單核芯片做的那樣?!?/P>

          作為 Neutrino操作系統的一部分,QNX公司在其中提供了一個帶有調試的內核,它使開發人員能用日志記錄低級的狀態變化、中斷等事件。因此人們能看到所有內核的互動。Johnson說:“當內核共享存儲器和I/O設備時,你可能會遇到必須詳細檢查的問題。這個配備了儀器的內核把數據記錄在日志里,并且Momentics系統剖析器可以讓你分析日志記錄的信息。”QNX公司提供帶有調試工具的內核以及未配備調試工具的內核。前者提供一種方法來檢查和測試現場的操作,而后者則略微減少了內核開發成本,并略微增加了內核的代碼空間。

          在把應用軟件放到多核系統中以前,需要多次測試這些軟件。但是,如果原型硬件在代碼準備就緒時就已存在的話,則測試會占用這些昂貴并且難以部署的原型硬件。并且如果把代碼鎖定到多核硬件,就會很快減少在硬件和軟件之間折衷的機會。作為替代辦法,可以考慮在虛擬系統上運行軟件,該系統模仿處理器核心和其它硬件設備。Virtutech公司營銷副總裁 Michel Genard說:“硬件虛擬化使你能做許多探索。你可以看到應用代碼在一個或幾個核心內如何工作。并且你可以觀察為每個內核改變時鐘頻率后造成的影響,但不必改變硬件。無需占用硬件,可以運行自己的應用代碼?!?/P>

          由于虛擬系統控制了時間,因此可以停止所有內核和設備,并且可以向后或向前運行代碼。還可以用檢查點在特定時間訪問來自“內部”核心和所有其它設備的信息。Genard指出:“開發人員告訴我們一些噩夢,比如多核系統中的 SMP競態條件。他們發現幾乎無法在硬件上調試多核應用代碼。另一方面,虛擬環境使他們能再現系統行為。他們可以根據需要‘備份’、檢驗、改變數據,或觀察和改變行為?!?

          虛擬化還有一個好處:開發人員可以確定自己的軟件將如何利用多個內核以及系統的其它硬件,因此他們可以做出設計決定。他們也許會發現,兩個內核將提供與四個內核相同的性能。

          工程師們經常把飛思卡爾、英特爾、博通等公司看作多核芯片廠商,而XMOS Semiconductor和Parallax等其它公司也提供多核器件,但面向不同市場。

          據 XMOS公司首席技術官及創始人之一David May表示,該公司把它的XS1-G多核IC家族定位為“軟件定義芯片”。他說:“XCores也許有些不同尋常,這是因為它們看起來像通用處理器以及與 I/O接口緊密集成的可編程狀態機。它們能做許多你分配給專用硬件做的事情。”每個XCore均位于一個XCore Tile中,后者有自己的寄存器、存儲器、I/O端口以及XLink,XLink與相同或不同IC上的其它Xcore通信。一個XCore能同時執行8個線程。

          開發人員使用XC語言,它是C語言的衍生品,包括輸入與輸出命令以及多種功能,用于將在不同核心上運行的軟件組件。 David May表示,“在盡可能的情況下,程序員擁有與ANSI C相同的操作符和數據類型。軟件開發人員熟悉順序型C程序,他們很快就可領會新的I/O操作?!?/P>

          XC語言的I/O命令控制著I /O端口,并經由XLink通道在XCore之間發送消息。據David May介紹,“XLink連接相同芯片上的各個內核,并且我們可以提供外部鏈路,因此可將兩塊XMOS芯片連接。產品應用多半將使用我們的多個IC。這種情況下,你可簡單地創建IC之間的信號連接。PCB上無需復雜的高速總線或接口。你不必擔心同步操作和操作系統。我們的OS在硬件里面。在我們的處理器上,對多數系統的OS調用就是一兩條指令?!?/P>

          雖然多核應用乍一看也許很復雜,但有許多工具可以幫助開發人員對可用內核加以利用。本文提及的公司提供了一種具有代表性的方式,來幫助人們在產品中輕松使用多核芯片。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 平阳县| 和林格尔县| 电白县| 福泉市| 宁城县| 兰坪| 鄂州市| 黔西县| 滦南县| 绥滨县| 承德市| 博野县| 大港区| 岢岚县| 洛浦县| 锡林郭勒盟| 赤水市| 宜黄县| 芷江| 恩施市| 扎兰屯市| 香港 | 两当县| 花垣县| 天长市| 长治县| 钟祥市| 明水县| 石柱| 凌云县| 宝坻区| 沂水县| 封开县| 墨脱县| 汉沽区| 怀宁县| 周宁县| 长汀县| 安庆市| 盱眙县| 荥阳市|