復(fù)現(xiàn)代碼序列2b進(jìn)行,其中在本申請的上下文中的代碼序列是指令序列/命令序列或者IEC 61131-3構(gòu)造的序列。
[0105]對于這些復(fù)現(xiàn)序列,通過執(zhí)行相應(yīng)程序部分的詳細(xì)執(zhí)行時間測量2c來得到更準(zhǔn)確估計。
[0106]具體實(shí)現(xiàn)可能基于指令跟蹤或機(jī)器學(xué)習(xí)的統(tǒng)計分析。在任何情況下,實(shí)現(xiàn)能夠跟蹤代碼序列的執(zhí)行時間間隔,表示最好情況和最壞情況執(zhí)行時間,和/或?qū)⑵浯鎯υ谙鄳?yīng)數(shù)據(jù)庫中。
[0107]這個細(xì)化可作為性能估計工具的開發(fā)的組成部分進(jìn)行,或者甚至可由控制應(yīng)用開發(fā)人員來指導(dǎo),例如以便獲得應(yīng)用的關(guān)鍵部分的更準(zhǔn)確估計。這個步驟對作為例如ABB資料庫所提供的組成部分的簡圖也可能是極為有用的。
[0108]此外,所創(chuàng)建的模型或數(shù)據(jù)結(jié)構(gòu)不僅孤立地考慮代碼序列的執(zhí)行時間,而且還提供與其交織和互相關(guān)有關(guān)的信息。因此,如果代碼序列A的執(zhí)行時間受到代碼序列B提前運(yùn)行的事實(shí)影響,則這個信息也由所創(chuàng)建模型或數(shù)據(jù)結(jié)構(gòu)來考慮。
[0109]此后,基于所存儲代碼序列定時數(shù)據(jù)3a,初步定時模型3b在第三工作流程階段3中已經(jīng)創(chuàng)建,其中在另一步驟,比較模型預(yù)測和測量,并且第二階段2以及第三階段3重復(fù)進(jìn)行到取得預(yù)期精度并且最終確定和創(chuàng)建CPU定時模型4。
[0110]此外,標(biāo)準(zhǔn)靜態(tài)分析技術(shù)能夠應(yīng)用并且用來確定任意控制應(yīng)用的可能執(zhí)行時間,如圖2更詳細(xì)所示。
[0111]逐步地,控制應(yīng)用20的結(jié)構(gòu)必須分解為代碼序列22,所創(chuàng)建數(shù)據(jù)定時結(jié)構(gòu)和定時模型4可分別對其提供執(zhí)行時間估計3a,其然后可被查找或檢索和處理24。
[0112]如果沒有較長代碼序列的信息在定時模型中是可用的,則在另一步驟,可能需要將程序分解到單獨(dú)機(jī)器指令的等級。
[0113]后一情況始終是可能的,并且能夠利用最好情況估計以及最壞情況估計。
[0114]累積24具體通過使用程序的語法樹、按照由底向上方式進(jìn)行。
[0115]為了考慮高速緩存或其他共享資源的不利影響,在另一步驟,加值26應(yīng)當(dāng)添加到分別使用定時模型和定時數(shù)據(jù)結(jié)構(gòu)4所創(chuàng)建的最壞情況性能估計。
[0116]這個加值26可能基于體驗(yàn)、控制應(yīng)用的模擬或執(zhí)行。最在可能的是基于如模型開發(fā)期間所使用的相似細(xì)化技術(shù)來確定每控制器變體的加值26的準(zhǔn)則。
[0117]因此,報告最好情況執(zhí)行時間和最壞情況執(zhí)行時間的估計(28)。
[0118]按照現(xiàn)代編程和/或工程工具,控制應(yīng)用使用代碼生成從基于頻繁再使用的子組件(資料庫)的圖形表示來開發(fā)。這允許關(guān)于指令的某些序列或模式重復(fù)出現(xiàn)的合理假設(shè)。因此,可能不需要處理器流水線的一般模型或數(shù)據(jù)結(jié)構(gòu)以獲得控制應(yīng)用的適當(dāng)準(zhǔn)確性能估計,并且本發(fā)明應(yīng)當(dāng)一般可適用于這一類程序。
[0119]本發(fā)明也特別可適用于具有多核控制器和異構(gòu)執(zhí)行單元的將來控制系統(tǒng)。
[0120]模型生成能夠單獨(dú)對各潛在執(zhí)行單元來執(zhí)行。確定復(fù)現(xiàn)代碼序列的估計的過程能夠高度自動化,因?yàn)闇y量設(shè)置能夠再用于不同執(zhí)行單元。
[0121]在應(yīng)用開發(fā)期間,單獨(dú)模型能夠用來判定應(yīng)用的哪些部分最佳地運(yùn)行于哪一個執(zhí)行單元。這在自動化和/或過程工業(yè)中的控制或者多個控制裝置的操作期間鑒于維護(hù)和升級以及修復(fù)活動也可能是重要。
[0122]作為另一實(shí)施例和代替使用應(yīng)用的固定集合僅一次分別得出CPU定時模型和數(shù)據(jù)結(jié)構(gòu)的備選解決方案,它也可在正常應(yīng)用開發(fā)期間即時細(xì)化,如圖3所示。對此的唯一附加要求在于,具有充分測量能力的控制器硬件是可用的。這甚至可能在工廠中進(jìn)行,以觀測實(shí)際執(zhí)行。圖3中,示出用于在新控制應(yīng)用的開發(fā)期間細(xì)化定時數(shù)據(jù)結(jié)構(gòu)的工作流程或過程,其中在第一步驟310開始于新開發(fā)的應(yīng)用300,新控制應(yīng)用的新代碼序列基于可用和所提供CPU定時數(shù)據(jù)結(jié)構(gòu)4以及可訪問地存儲在代碼序列定時數(shù)據(jù)庫3a中的代碼序列定時數(shù)據(jù)來識別。在第二步驟340,測量所識別序列的相應(yīng)執(zhí)行時間。在另一步驟350,新代碼序列的BCET和/或WCET被確定并且傳遞到和/或存儲在代碼序列數(shù)據(jù)庫3a中。此外,所確定的BCET和/或WCET值在至少一個另一處理步驟360中使用和處理,以更新和/或修改CPU定時數(shù)據(jù)結(jié)構(gòu)4。
[0123]圖4a中示范所示的機(jī)器代碼使用ABB的工程工具Compact Control Builder (其用來開發(fā)控制應(yīng)用)來生成。對于左側(cè)的最粗粒度變體,直接使用基本塊的所有指令。這意味著,摘要I (Digest I)的值通過將MD5哈希函數(shù)應(yīng)用于操作碼序列(mflr、stwu、stw、lwz、lwz、lwz、cmpw1、be)來計算。對于所有其他基本塊(其在代碼中以標(biāo)簽來標(biāo)記),按照相同方式來計算摘要。
[0124]在另一個示范實(shí)施例中,對于更細(xì)粒度的表征,摘要能夠使用滑動窗口方式來計算,其分解機(jī)器代碼中的基本塊,其中為了從基本塊來生成指令序列,通過使用固定步幅跨基本塊移動固定大小的窗口來確定序列。
[0125]這在圖4b中使用4個指令的窗口大小和2個指令的步幅示出。對于摘要1,計算操作碼序列(mflr、stwu、stw、lwz)的哈希值。步幅值只能小于或等于窗口大小,因?yàn)樵静⒎前瑏碜曰緣K的所有指令。
[0126]選擇小于窗口大小的步幅值使得更可能捕獲復(fù)現(xiàn)序列。在基本塊末尾,窗口大小在它原本跨基本塊末尾移動時被削減。對于這個示例的最后一個窗口,削減窗口大小,并且因而摘要9僅從單操作碼blr來計算。
[0127]此外,在另一步驟,在用于定時模型生成的訓(xùn)練應(yīng)用已經(jīng)劃分為摘要之后,摘要值能夠用來檢測復(fù)現(xiàn)代碼序列?;A(chǔ)假設(shè)和規(guī)則在于,具有相同摘要的序列將具有相同執(zhí)行時間。為了降低表征復(fù)現(xiàn)序列的執(zhí)行時間所需的測量工作量,定時模型中包含的序列的數(shù)量盡可能少。另一方面,模型應(yīng)當(dāng)包含足夠的指令序列,因此很少需要在表征新開發(fā)控制應(yīng)用的執(zhí)行時間時回退到單指令基準(zhǔn)模型。
[0128]圖5和圖6中,示出在不同域、具體是石油氣和紙張(OGP)以及采礦工業(yè)中具有不同窗口大小和步幅區(qū)域的復(fù)現(xiàn)代碼段的示范統(tǒng)計評估,以便更好地理解復(fù)現(xiàn)區(qū)域的數(shù)量、窗口大小和步幅大小之間的關(guān)系和相關(guān)性。
[0129]此外,為了促進(jìn)定時模型的使用,提出潛在執(zhí)行時間的3值表示。相應(yīng)地,應(yīng)用的ACET、BCET和WCET可直接向用戶呈現(xiàn)。由此,用戶在開發(fā)階段和操作階段已經(jīng)更好地獲悉應(yīng)用的潛在行為,并且還獲得關(guān)于應(yīng)用變化的直接反饋。
[0130]其外觀的實(shí)物模型在圖7的底部示出。
[0131]此外,除了向用戶或操作人員給予反饋之外,平均情況執(zhí)行時間估計也能夠通過僅考慮包含在典型執(zhí)行中的應(yīng)用的部分來顯著改進(jìn)。因此,用戶或操作人員必須提供關(guān)于預(yù)計或典型程序路徑的所需認(rèn)識,其常常能夠因用戶和/或操作員對應(yīng)用的體驗(yàn)和知識而進(jìn)行。結(jié)合復(fù)現(xiàn)代碼序列的先前所述的ACET估計和結(jié)構(gòu)程序信息,可實(shí)現(xiàn)典型情況的更準(zhǔn)確近似。
[0132]其原因在于,執(zhí)行時間異常值不太可能影響平均情況估計的結(jié)果。對所觀測程序運(yùn)行的執(zhí)行時間簡單地求平均的標(biāo)準(zhǔn)方式仍然包括這類奇異值,但是所提出的方式允許排除這類典型執(zhí)行。最后,執(zhí)行時間的3值表示仍然使最壞情況對用戶是顯式的,并且因此與標(biāo)準(zhǔn)WCET分析相比,沒有丟失信息。
[0133]在另一實(shí)施例中,如果圖7所示代碼的編程人員或者操作人員認(rèn)識到循環(huán)中的條件表達(dá)式通常立即評估為“真”,它們能夠?qū)⑾鄳?yīng)代碼區(qū)域標(biāo)記為典型執(zhí)行的一部分。這在圖7中通過對相應(yīng)代碼區(qū)域加陰影示出。
[0134]相似標(biāo)記功能性可易于添加到任何代碼編輯器。雖然這是人為示例,但是相似模式常常能夠見于控制應(yīng)用、例如用于初始化代碼。
[0135]在另一個實(shí)施例中,這個信息可自動轉(zhuǎn)化為全局限(global bound)計算分析步驟的限制,它能夠用來限制經(jīng)過CFG的程序路徑。因此,通過ACET步驟的全局分析所確定的程序路徑不再考慮最壞情況路徑而考慮典型路徑。
[0136]本例的所產(chǎn)生程序路徑在圖8中示出。繪制為虛線的邊緣以及臨近它們的頻率注釋描述典型路徑。因此,沿這個路徑的基本塊的每個正好運(yùn)行一次。使用這個信息和各基本塊的執(zhí)行時間(其也在圖8中對CFG注釋),能夠得出25個循環(huán)的ACET。相應(yīng)ACET公式在圖8的下部示出。即使在基本塊的平均情況與最壞情況執(zhí)行時間之間僅存在小差異,考慮與典型程序路徑有關(guān)的信息也仍然能夠降低靜態(tài)定時分析的過度估計。雖然現(xiàn)有WCET分析工具已經(jīng)支持相似路徑限制,但是基礎(chǔ)定時模型始終是完全最壞情況分析。
[0137]ACET估計以及與典型程序路徑有關(guān)的用戶提供信息的組合允許比采用現(xiàn)有解決方案要更準(zhǔn)確地表征程序的典型執(zhí)行時間。因此,它超出傳統(tǒng)BCET和WCET分析。由于仍然表示W(wǎng)CET和BCET分析的結(jié)果,所以信息仍然是定時分析的用戶可用的。
[0138]添加平均