實(shí)施例涉及對(duì)電子控制單元上的一組任務(wù)進(jìn)行劃分。
多核心處理器集成在單個(gè)芯片內(nèi)并且通常指具有兩個(gè)或者更多個(gè)獨(dú)立處理單元的單個(gè)計(jì)算單元,該處理單元一般稱為核心。該核心通常實(shí)施讀取以及執(zhí)行編程指令。該指令的實(shí)例是添加數(shù)據(jù)以及移動(dòng)數(shù)據(jù)。多核心處理器的效率在于核心可以并行地同時(shí)運(yùn)行多個(gè)指令。
存儲(chǔ)布局影響電子控制單元(ECU)的緩存啟動(dòng)架構(gòu)的存儲(chǔ)寬帶。例如,如果多核心處理器的設(shè)計(jì)無(wú)效,則在多核心間的任務(wù)未得到恰當(dāng)平衡的情況下可能在檢索數(shù)據(jù)時(shí)出現(xiàn)瓶頸,這也會(huì)影響通信成本。
技術(shù)實(shí)現(xiàn)要素:
實(shí)施例的優(yōu)點(diǎn)在于:對(duì)全局存儲(chǔ)器中的數(shù)據(jù)的訪問(wèn)進(jìn)行優(yōu)化,以便使儲(chǔ)存在相應(yīng)位置中的且由相應(yīng)任務(wù)訪問(wèn)的數(shù)據(jù)由同一相應(yīng)核心來(lái)處理。此外,核心間的工作負(fù)荷在多核心處理器的相應(yīng)數(shù)量的核心之間達(dá)到平衡,從而使每個(gè)相應(yīng)核心均履行類似的工作負(fù)荷量處理。本文描述的實(shí)施例基于重新排序技術(shù)生成了多個(gè)排列,該重新排序技術(shù)用于基于訪問(wèn)存儲(chǔ)位置來(lái)將相應(yīng)任務(wù)與相應(yīng)存儲(chǔ)位置進(jìn)行配對(duì)?;谄谕暮诵臄?shù)量來(lái)對(duì)該排列進(jìn)行分割和細(xì)分,直到標(biāo)識(shí)在核心間生成平衡工作負(fù)荷的以及使通信成本最小化的相應(yīng)排列。
實(shí)施例設(shè)想了一種用于對(duì)多核心電子控制單元(ECU)上的任務(wù)進(jìn)行劃分的方法。在存儲(chǔ)器中提取鏈接映射文件的信號(hào)列表。該鏈接映射文件包括對(duì)在全局存儲(chǔ)裝置內(nèi)訪問(wèn)數(shù)據(jù)的位置進(jìn)行詳細(xì)說(shuō)明的文本文件。獲取來(lái)自信號(hào)列表的與執(zhí)行的任務(wù)相關(guān)的存儲(chǔ)訪問(wèn)蹤跡。標(biāo)識(shí)每個(gè)任務(wù)訪問(wèn)存儲(chǔ)位置的次數(shù)以及ECU上的相應(yīng)任務(wù)工作負(fù)荷。在每個(gè)任務(wù)與每個(gè)訪問(wèn)的存儲(chǔ)位置之間生成關(guān)聯(lián)圖。該關(guān)聯(lián)圖標(biāo)識(shí)每個(gè)任務(wù)與每個(gè)存儲(chǔ)位置之間的鏈接關(guān)系度。對(duì)該關(guān)聯(lián)圖重新排序以便使具有較大鏈接關(guān)系度的相應(yīng)任務(wù)和相關(guān)聯(lián)的存儲(chǔ)位置彼此鄰近。將多核心處理器劃分為相應(yīng)數(shù)量的核心,其中,按照使相應(yīng)核心中工作負(fù)荷的大體上平衡的函數(shù)來(lái)履行在相應(yīng)數(shù)量的核心之間分配任務(wù)和存儲(chǔ)位置。
附圖說(shuō)明
圖1是用于優(yōu)化任務(wù)劃分的硬件的框圖。
圖2是示例性加權(quán)關(guān)聯(lián)矩陣。
圖3是初始排列的示例性二分圖。
圖4是重新排序的排列和劃分的示例性二分圖。
圖5是用于優(yōu)化任務(wù)劃分的方法的流程圖。
具體實(shí)施方式
圖1是用于優(yōu)化任務(wù)劃分的硬件的框圖。在電子控制單元(ECU)10上對(duì)執(zhí)行應(yīng)用代碼的相應(yīng)算法進(jìn)行執(zhí)行。所執(zhí)行的算法是將在生產(chǎn)中被執(zhí)行的那些程序(例如,車輛發(fā)動(dòng)機(jī)控制器、計(jì)算機(jī)、游戲、工廠設(shè)備、或者利用電子控制單元的任何其他電子控制器)。將數(shù)據(jù)寫入全局存儲(chǔ)裝置12內(nèi)的多個(gè)地址并且進(jìn)行讀取。
映射鏈接文件14是文本文件,該文本文件對(duì)儲(chǔ)存在全局存儲(chǔ)裝置12內(nèi)的可執(zhí)行文件內(nèi)部的數(shù)據(jù)和代碼的位置進(jìn)行詳細(xì)說(shuō)明。映射鏈接文件14包括包含事件日志的跟蹤文件,該事件日志描述了針對(duì)代碼和數(shù)據(jù)的儲(chǔ)存位置在全局存儲(chǔ)裝置12內(nèi)出現(xiàn)的事務(wù)。因此,可以獲取對(duì)當(dāng)應(yīng)用代碼由ECU 10執(zhí)行時(shí)訪問(wèn)的所有任務(wù)和相關(guān)聯(lián)的存儲(chǔ)地址進(jìn)行標(biāo)識(shí)的鏈接文件映射14。
挖掘處理器16用于履行如下操作:來(lái)自全局存儲(chǔ)裝置12的數(shù)據(jù)挖掘18、對(duì)任務(wù)和相關(guān)聯(lián)的存儲(chǔ)位置重新排序20、標(biāo)識(shí)排列的工作負(fù)荷22、以及對(duì)任務(wù)和相關(guān)聯(lián)的存儲(chǔ)位置進(jìn)行劃分24以便設(shè)計(jì)多核心處理器。
關(guān)于數(shù)據(jù)挖掘,針對(duì)每個(gè)任務(wù)(例如,A、B、C、D)構(gòu)建如圖2中圖示的存儲(chǔ)訪問(wèn)命中次數(shù)表。術(shù)語(yǔ)“命中次數(shù)”指的是相應(yīng)任務(wù)傳遞信號(hào)以訪問(wèn)全局存儲(chǔ)器的相應(yīng)存儲(chǔ)地址的次數(shù)?;诿写螖?shù)來(lái)構(gòu)建矩陣X。如在圖2中示出的,矩陣的水平行中列出了任務(wù),并且矩陣的縱列中列出了表示訪問(wèn)全局存儲(chǔ)裝置的存儲(chǔ)位置的信號(hào)。如在矩陣中示出的,任務(wù)A訪問(wèn)sa五次并且訪問(wèn)sd二十次。任務(wù)B訪問(wèn)sa十次、訪問(wèn)sb一次、訪問(wèn)sd六次、方位se一次以及訪問(wèn)sf一次。矩陣使每個(gè)任務(wù)與每個(gè)存儲(chǔ)位置相關(guān)聯(lián),并且標(biāo)識(shí)相應(yīng)任務(wù)訪問(wèn)存儲(chǔ)位置以儲(chǔ)存和讀取數(shù)據(jù)的次數(shù)。
在生成矩陣X之后,挖掘處理器生成排列,該排列用于對(duì)提供最有效的劃分以均勻地分布ECU的工作負(fù)荷的相應(yīng)排列進(jìn)行標(biāo)識(shí)。
排列是排序任務(wù)和存儲(chǔ)位置的多個(gè)列表。如在圖3中示出的,構(gòu)建了關(guān)聯(lián)圖,諸如,二分圖。應(yīng)理解,在不偏離本發(fā)明的范圍的情況下,可以使用其他類型的圖或者工具。如在圖3中示出的,二分圖的左側(cè)上的縱列中列出了任務(wù)(例如,字母順序)。二分圖的右側(cè)上的第二縱列中列出了訪問(wèn)的存儲(chǔ)位置。為了二分圖的目的,任務(wù)將稱為任務(wù)節(jié)點(diǎn),并且訪問(wèn)的存儲(chǔ)位置將稱為存儲(chǔ)節(jié)點(diǎn)。當(dāng)在相應(yīng)任務(wù)節(jié)點(diǎn)與相應(yīng)存儲(chǔ)節(jié)點(diǎn)之間出現(xiàn)命中時(shí),畫一條線來(lái)連接相應(yīng)任務(wù)節(jié)點(diǎn)與相應(yīng)存儲(chǔ)節(jié)點(diǎn)?;诿写螖?shù)來(lái)對(duì)連接任務(wù)節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的線進(jìn)行加權(quán),如圖3中示出的。在二分圖中,線的權(quán)重越重,任務(wù)節(jié)點(diǎn)與存儲(chǔ)節(jié)點(diǎn)之間的命中次數(shù)就越大。在如圖3中示出的初始排列中,連接任務(wù)節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的線可以是遠(yuǎn)側(cè)的,意味著在第一縱列的頂部處的任務(wù)節(jié)點(diǎn)可以連接至在第二縱列的底部處的存儲(chǔ)節(jié)點(diǎn)。如果在兩個(gè)縱列的中途點(diǎn)處均勻地劃分該排列,則可能在兩個(gè)核心之間出現(xiàn)大量通信(例如,交叉通信),這可以是無(wú)效的并且增加通信成本,并且更加具體地,如果兩個(gè)核心之間的那些相應(yīng)交叉通信鏈路是加權(quán)嚴(yán)重的通信鏈路,則可以導(dǎo)致更大的無(wú)效度。此外,如果那些計(jì)算密集的任務(wù)被分配至相應(yīng)核心,則相應(yīng)核心可以實(shí)施更多工作負(fù)荷處理。因此,通過(guò)對(duì)任務(wù)節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)進(jìn)行重新排序制作了多個(gè)排列。
圖4圖示了在已經(jīng)對(duì)存儲(chǔ)位置進(jìn)行重新排序的情況下的相應(yīng)排列。多個(gè)技術(shù)可以用于對(duì)存儲(chǔ)節(jié)點(diǎn)進(jìn)行重新排序以便實(shí)現(xiàn)效率并且使通信成本最小化。一個(gè)這種技術(shù)可以包括但不限于,對(duì)任務(wù)節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)進(jìn)行重新排序,以便使與所有其他配對(duì)相比具有嚴(yán)重加權(quán)線(例如,多次命中)的相應(yīng)任務(wù)節(jié)點(diǎn)和相關(guān)聯(lián)的存儲(chǔ)節(jié)點(diǎn)在二分圖中彼此鄰近。
使用加權(quán)的鄰近矩陣來(lái)履行對(duì)二分圖的頂點(diǎn)的重新排序,該加權(quán)的鄰近矩陣是使用圖2中的矩陣X來(lái)構(gòu)建的。關(guān)于矩陣W,通過(guò)找出頂點(diǎn)的排列{1,...,N}來(lái)實(shí)現(xiàn)任務(wù)節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的期望順序,從而圖中的鄰近頂點(diǎn)是最相關(guān)聯(lián)的頂點(diǎn)。這種排列表示由同一組任務(wù)頻繁訪問(wèn)的數(shù)據(jù)可以適應(yīng)局部數(shù)據(jù)緩存。算術(shù)上,期望的重新排序的排列可以表達(dá)為:
這等于找出逆排列π(-1),從而使如下能量函數(shù)最小化:
解決上述問(wèn)題大概是通過(guò)使用第二最小本征值針對(duì)如下本征方程計(jì)算本征矢量(q2)來(lái)完成:
(D-W)q=λDq
其中,拉普拉斯矩陣L=D-W,次數(shù)矩陣D是對(duì)角線的,并且被定義為
因此獲取的q2按照升序進(jìn)行分類。在分類之后的頂點(diǎn)的索引是期望排列{π1,...,πN}。然后通過(guò)如下方式來(lái)推導(dǎo)出任務(wù)節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的順序:根據(jù)排列結(jié)果來(lái)重新布置二分圖中的任務(wù)節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)。
如在圖4中圖示的,有效地對(duì)該列表進(jìn)行了重新排序。任務(wù)節(jié)點(diǎn)A和存儲(chǔ)節(jié)點(diǎn)sd處于最高命中(例如,20)之間并且因此彼此鄰近。類似地,圖4中示出了,任務(wù)節(jié)點(diǎn)B鄰近存儲(chǔ)節(jié)點(diǎn)sa,并且任務(wù)節(jié)點(diǎn)C和任務(wù)節(jié)點(diǎn)D鄰近存儲(chǔ)節(jié)點(diǎn)sb。此外,任務(wù)節(jié)點(diǎn)A與存儲(chǔ)節(jié)點(diǎn)sa具有多次命中,并且任務(wù)節(jié)點(diǎn)B與存儲(chǔ)節(jié)點(diǎn)sd具有多次命中。因此,自此任務(wù)節(jié)點(diǎn)A和任務(wù)節(jié)點(diǎn)B在第一縱列中彼此鄰近,存儲(chǔ)節(jié)點(diǎn)sa和存儲(chǔ)節(jié)點(diǎn)sb定位為在第二縱列中彼此鄰近。該重新排序通過(guò)消除核心之間的交叉通信而提供有效的通信。
為了使工作負(fù)荷均等以確保核心的工作負(fù)荷進(jìn)行均勻地分布,使多個(gè)任務(wù)節(jié)點(diǎn)間具有最高工作負(fù)荷的任務(wù)節(jié)點(diǎn)和相關(guān)聯(lián)的存儲(chǔ)節(jié)點(diǎn)的前兩個(gè)配對(duì)分離并且定位在二分圖的相對(duì)端處。這確保了多個(gè)任務(wù)間具有最高工作負(fù)荷的這兩個(gè)相應(yīng)任務(wù)節(jié)點(diǎn)將不會(huì)處于同一核心內(nèi),如若不然這將使單個(gè)核心的工作負(fù)荷超載。在對(duì)這兩對(duì)任務(wù)重新排序之后,使剩余任務(wù)節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)間具有下一最高工作負(fù)荷的任務(wù)節(jié)點(diǎn)和相關(guān)聯(lián)的存儲(chǔ)節(jié)點(diǎn)的下一配對(duì)分離并且定位為緊挨著先前分離的任務(wù)節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)。該過(guò)程繼續(xù)在可用的任務(wù)節(jié)點(diǎn)和相關(guān)聯(lián)的存儲(chǔ)節(jié)點(diǎn)間具有下一最高工作負(fù)荷的任務(wù)節(jié)點(diǎn)和相關(guān)聯(lián)的存儲(chǔ)節(jié)點(diǎn)的下一相應(yīng)配對(duì)中進(jìn)行,直到將所有可用的任務(wù)節(jié)點(diǎn)和相關(guān)聯(lián)的存儲(chǔ)節(jié)點(diǎn)都分配在二分圖內(nèi)。這產(chǎn)生了工作負(fù)荷的均勻分布,從而可以如所示出那樣在中間均等地分割該二分圖,并且大體上類似地在相應(yīng)核心之間分布工作負(fù)荷。如在圖4中的二分圖中示出的,劃分線26使二分圖的相應(yīng)任務(wù)節(jié)點(diǎn)和相關(guān)聯(lián)的存儲(chǔ)節(jié)點(diǎn)分離以便標(biāo)識(shí)應(yīng)將哪些任務(wù)分配至相應(yīng)核心。圖示了針對(duì)每個(gè)相應(yīng)任務(wù)節(jié)點(diǎn)的示例性工作負(fù)荷百分比。任務(wù)A代表15%的工作負(fù)荷用量,任務(wù)B代表40%的工作負(fù)荷用量,任務(wù)C代表30%的工作負(fù)荷用量,并且任務(wù)D代表15%的工作負(fù)荷用量。因此,在該實(shí)例中,55%的工作負(fù)荷用量將由第一核心履行,并且45%的工作負(fù)荷將由第二核心履行。應(yīng)注意,任務(wù)節(jié)點(diǎn)和相關(guān)聯(lián)的存儲(chǔ)節(jié)點(diǎn)的相應(yīng)最重工作負(fù)荷將保留在相應(yīng)核心中,與核心之間的交叉通信截然相反。即是說(shuō),具有升高的命中的任務(wù)節(jié)點(diǎn)和相關(guān)聯(lián)的存儲(chǔ)節(jié)點(diǎn)將處于同一核心內(nèi)。應(yīng)理解,一些任務(wù)節(jié)點(diǎn)將與不同核心中的存儲(chǔ)節(jié)點(diǎn)交叉通信;然而,與核心內(nèi)保持的嚴(yán)重加權(quán)通信相比,這種通信將較少。
此外,一旦兩個(gè)核心已經(jīng)被劃分,如果核心需要進(jìn)行附加劃分(例如,4個(gè)核心),則可以在不進(jìn)行重新排序的情況下基于使工作負(fù)荷平衡和使通信成本最小化來(lái)對(duì)劃分的核心進(jìn)行再次細(xì)分??商娲?,若需要,則可以將重新排序技術(shù)應(yīng)用于已經(jīng)被劃分的核心,以便對(duì)相應(yīng)任務(wù)和其中的存儲(chǔ)器進(jìn)行重新排序并且然后進(jìn)一步細(xì)分核心。
可以應(yīng)用劃分的多個(gè)排列來(lái)找出最有效的劃分,最有效的劃分在處理器的核心之間產(chǎn)生最平衡的工作負(fù)荷并且還使通信成本最小化。
圖5圖示了用于對(duì)多核心ECU上運(yùn)行的任務(wù)進(jìn)行劃分的技術(shù)的流程圖。在步驟30中,通過(guò)相應(yīng)電子控制單元來(lái)執(zhí)行作為任務(wù)的軟件程序的應(yīng)用代碼。在全局存儲(chǔ)裝置(例如,未在挖掘處理器上的存儲(chǔ)器)上執(zhí)行讀取操作和寫入操作兩者。
在步驟31中,從全局存儲(chǔ)器中的鏈接映射文件提取信號(hào)列表。該信號(hào)列表對(duì)應(yīng)用代碼執(zhí)行的任務(wù)命中的存儲(chǔ)位置的蹤跡進(jìn)行標(biāo)識(shí)。
在步驟32中,通過(guò)挖掘處理器來(lái)收集存儲(chǔ)訪問(wèn)蹤跡。
在步驟33中,針對(duì)每個(gè)存儲(chǔ)位置構(gòu)建包括任務(wù)存儲(chǔ)訪問(wèn)次數(shù)(即,命中)的矩陣。應(yīng)理解,相應(yīng)任務(wù)和相應(yīng)存儲(chǔ)位置可以沒有任何命中,并且在這種情況下,條目將顯示為“0”或者保留為空白以指示任務(wù)未訪問(wèn)相位置。
在步驟34中,生成包括關(guān)聯(lián)圖(例如,二分圖)的多個(gè)排列,該關(guān)聯(lián)圖示出了由應(yīng)用代碼執(zhí)行的任務(wù)節(jié)點(diǎn)與任務(wù)節(jié)點(diǎn)訪問(wèn)的相應(yīng)存儲(chǔ)節(jié)點(diǎn)之間的鏈接關(guān)系。每個(gè)排列均利用最佳排序算法來(lái)確定任務(wù)節(jié)點(diǎn)和相關(guān)聯(lián)的存儲(chǔ)節(jié)點(diǎn)的相應(yīng)順序。任務(wù)節(jié)點(diǎn)與彼此間具有命中的那些存儲(chǔ)節(jié)點(diǎn)相關(guān)聯(lián)并且彼此鄰近。任務(wù)節(jié)點(diǎn)和相關(guān)聯(lián)的存儲(chǔ)節(jié)點(diǎn)最佳地定位在關(guān)聯(lián)圖中,從而使處理器的核心內(nèi)的工作負(fù)荷用量在被劃分時(shí)大體上平衡。
在步驟35中,對(duì)該關(guān)聯(lián)性進(jìn)行劃分以便標(biāo)識(shí)當(dāng)在ECU上執(zhí)行任務(wù)時(shí)哪些任務(wù)與哪個(gè)核心相關(guān)聯(lián)。該劃分將基于平衡工作負(fù)荷和最小化的通信成本針對(duì)相應(yīng)任務(wù)節(jié)點(diǎn)和相關(guān)聯(lián)的存儲(chǔ)節(jié)點(diǎn)選擇分離點(diǎn)?;贓CU中需要核心數(shù)量來(lái)履行附加劃分。
在步驟36中,使用所選擇的排列來(lái)設(shè)計(jì)和產(chǎn)生多核心ECU的任務(wù)劃分。
盡管已經(jīng)詳細(xì)地描述了本發(fā)明的某些實(shí)施例,但本發(fā)明所涉及領(lǐng)域的技術(shù)人員將意識(shí)到用于實(shí)踐如通過(guò)如下權(quán)利要求書定義出的本發(fā)明的多種替代設(shè)計(jì)和實(shí)施例。