多處理器電腦已存在一段時間了,但工程師們只是在最近幾年才有機(jī)會買到具有多個處理器或“核心”的芯片現(xiàn)貨。這些器件分為兩類:對稱型和非對稱型。第一類器件提供同一CPU內(nèi)核的多個“克隆”,因此稱作對稱型。第二類是將不同類型的CPU、DSP、加速器都放在一個單片系統(tǒng)中。本文將專門介紹第一類多核技術(shù)。
據(jù)Extreme Engineering Solutions公司首席執(zhí)行官Rob Scidmore表示,單核處理器與多核處理器使用的硬件僅存在很少幾項(xiàng)區(qū)別?!疤魬?zhàn)會出現(xiàn)在,當(dāng)你必須把軟件從單核遷移到雙核時。當(dāng)兩個處理器內(nèi)核必須通信時,性能可能會降低很多。系統(tǒng)的等待時間變得更長,但吞吐率依然很高。當(dāng)工程師們?yōu)槊總€內(nèi)核把應(yīng)用代碼分解成片段時,就必須應(yīng)對上述局面。他們必須平衡等待時間和吞吐率?!?
但是,工程師們經(jīng)常會把代碼分解成片段。Scidmore解釋說:“他們也許通過以太網(wǎng)端口接收圖像,用算法處理圖像,然后顯示它們。你可以在一個處理器上運(yùn)行TCP/IP堆棧,在第二個處理器上運(yùn)行算法,并把第三個處理器專門用于顯示。但是如果你有數(shù)千個匯編語言文件,那么你別無選擇,只能回到框圖并從頭開始,并花時間把某個應(yīng)用劃分成幾個線程。”
一些為對稱多處理(SMP)提供支持的操作系統(tǒng)(OS)可以提供某種方式來集成舊代碼和新代碼。例如,QNX公司的Neutrino OS提供混合多處理(bound multiprocessing),它使開發(fā)人員能使多個進(jìn)程始終位于某個核心,或稱“鎖定”。QNX公司產(chǎn)品經(jīng)理Kerry Johnson說:“假設(shè)你有一些舊軟件,它們在多核芯片或多處理環(huán)境中也許不能恰當(dāng)運(yùn)行。代碼可能會假定它擁有對I/O設(shè)備等的獨(dú)占控制權(quán),這可能會在多核系統(tǒng)中造成一些問題。這種情況下,你可以把軟件‘鎖’在某個內(nèi)核里,不必修改代碼。然后你可以添加新應(yīng)用軟件,它將利用剩余內(nèi)核。舊軟件和新軟件并存于某個多核芯片上的相同OS中?!?
Johnson說:“要讓開發(fā)人員理解多核芯片不需要每一個內(nèi)核都擁有自己的OS,這是一個挑戰(zhàn)。具備SMP能力的單一OS可立即監(jiān)督多個內(nèi)核的運(yùn)行情況。隨著更多OS廠商開始支持SMP,開發(fā)人員將會更好地理解,他們可以使用一種編程風(fēng)格,并讓他們的代碼工作在單核、雙核、四核處理器。一套軟件工具可工作在所有這些環(huán)境中。”
當(dāng)然,這些工具必須包含源代碼級調(diào)試器。 Johnson解釋說:“設(shè)計人員需要一個調(diào)試器處理所有這些內(nèi)核,希望在一個窗口里看到一切,而不是每個內(nèi)核都有一個調(diào)試窗口。在特定時間,無論哪個處理器運(yùn)行代碼,調(diào)試器都必須在斷點(diǎn)停止,追蹤程序執(zhí)行情況,并在所有內(nèi)核收集數(shù)據(jù),就像它對單核芯片做的那樣。”