TW201003517A - Code evaluation for in-order processing - Google Patents

Code evaluation for in-order processing Download PDF

Info

Publication number
TW201003517A
TW201003517A TW098112210A TW98112210A TW201003517A TW 201003517 A TW201003517 A TW 201003517A TW 098112210 A TW098112210 A TW 098112210A TW 98112210 A TW98112210 A TW 98112210A TW 201003517 A TW201003517 A TW 201003517A
Authority
TW
Taiwan
Prior art keywords
execution
instruction
hazard
instructions
processor
Prior art date
Application number
TW098112210A
Other languages
English (en)
Inventor
Ramakrishnan S Ganesh
Rajiv B Narayan
Satyanarayanan Jayaraman
Ming Hu
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of TW201003517A publication Critical patent/TW201003517A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)

Description

201003517 六、發明說明: 【發明所屬之技術領域】 本揭示案一般而言係關於依序處理之碼評估 【先前技術】 技術之進步已產生較小且較強大之個人計算器件。舉例 2言’當前存在各種攜帶型個人計算器件,包括無線計算 件’諸如攜帶型無線電話、個人數位助理(pda)及傳呼
器件,其體積小、重量輕且易於由使用者攜帶。更具體而 …如蜂巢式電話及網際網路協定⑽電話之搞帶型無 線電話可經由無線網路傳達語音及資料封包。另外,許多 此等無線電話包括併入於其中之其他類型之器件。舉例而 無線電話亦可包括靜態數位相機、數位視訊相機、數 Γ錄器及音訊檔案播放器。又,此等無線電話可處理可 =丁指令,包括軟體應用程式’諸如可用以存取網際網路 之網頁瀏覽器應用程式。 勺括:待在此寺摘▼型個人計算器件處處理之電腦程式可 I ‘,,,入碼,組譯該碼,測試該碼及校正錯誤。詳言之, 對於不包括用以I貞測並解務产宝f 4上 特殊场…… 解析危害(诸如’貧料相依危害)之 将琛硬體之依序處理器, 開發及料㈣計此4“之彳貞職㈣在軟體之 圏及I 間執订。然而’當軟體碼包括條件分支、迴 圈及其他非順序碼時負 【發明内容】 _—正危告變得愈加困難。 在一特定實施例中,捃-^ Μ . 揭不一種评估用於使用依序執行
執仃處理器的程式碼的方法。該方法包括識別具J I39566.doc 201003517 :固:仃源路徑之一第一指令。該方法亦包括:產生基於— Γ條件識別多個指令之—執行順序的-第-執行路徑模 a ^方法進—步包括產生基於—第二條件識別一第二指 執行順序的—第二執行路徑模型。第—執行路徑模 二第二執行路徑模型各自包括第一指令。該方法進一步 二蝴寺執行路徑模型中之至少一者以識別一危害條 在另一特定實施例中,兮 程式碼。該方法亦包括識職=收用於該處理器之 之M , 53別基於一第一條件識別多個指令 之-執行順序的一第一執行仔列 識別-第二指令之一執行順序 ::弟-條件 Μ i-τ γ- λ, « 弟—執仃佇列。該第一 進一二:該第广執行仵列包括至少-共同指令。該方法 υ I括孑估该第一執行件 並報告-危害條件。亥苐一執行仔列以識別 ^另肖疋實施例中,揭示-種包括用以儲存用於化序 處理器之程式指令之記憶體的系:存用於依序 件,其用於基於至少_侔件八系、、先包括模型化構 至少兩個並行執行路徑模型。該系統包Si::指Π 於識別並報告該等並行執行路徑模型構2其用 危害條件。 主夕一者中之一 在另-特定實施例中’揭示一種處理器 括可由一處理器執行之操作指令。該等摔作;=,其包 識別-經寫入待由一依序處理器執行之電腦:二括用以 件分支的指令。該等操作指令亦 ^中之一條 M基於垓條件分支 139566.doc 201003517 之一第一條件評估一第一執行路徑且用以基於該條件分支 之一第二條件評估一第二執行路徑的指令。該等操作指令 進一步包括用以報告―與該第—執行路#或該第二執行路 徑中之任一者相關聯之危害條件的指令。 由所揭示實施例提供之特定優勢包括軟體開發之改良速 度、碼危害之減少發生及待由依序處理器執行之程式之較 短設計循環。 優點及 圖式簡
在番閱70整申凊案之後,本揭示案之其他態樣 特徵將變得顯而易I’完整申請案包括以下部分 單δ兒明、貫施方式及申請專利範圍。 【實施方式】 參看圖1’描1會—碼評估系統之特定說明性實施例且將 其一般地指定為100。系統100接收包括條件分支指令刚 之程式碼102。第—執行佇列110基於第-條件1〇6識別第 -指令集-之執行順序,指定為一。第二 谓於第:條件⑽識別第:指令㈣之執行順序,指 疋為’’Ζη程式執打根據遵循第-指令集112之第一扣 令順序m或根據遵循第二指令集122之 曰 有條件地繼續進行。 貝斤124 =寺::施例中’程式碼1〇2包括在系統!。。處接收之 処里益處之執仃之耵評估的指令 列110及第二指令佇列〗7Λ叮宜从v 乐扣?分 基於條件分支指令104之可能 結果來識別。舉例而 例而^條件分支指令104可包括一停件 跳躍指令至—特定目標指令。當不執行跳躍時,第一執 ^ 139566.doc 201003517 仔mio可以待由處理器執行之指令112填充。當執行跳躍 時,第二執行佇列12〇可以待由處理器執行之指令122填 充。在此說明性實例中,帛—執行仔mio及第二執行传 列120皆包括跳躍目標指令。該系統可評估第一執行佇歹: 110及第二執行佇列120兩者以識別並報告與執行佇列110 及120中之任一者相關聯之危害條件。 藉由評估多個條件執行仔列11〇及120,系統1〇〇允許沿 處理器處之多個執行流程侧程式危害。舉例而言,指^ 歸因於跳躍、迴圈及其他程式分支邏輯之條件執行以:: 件或有條件執行之個別指令在於運行時間解析此等條件 % ’可遮蔽所執行指令之間的資料相依。 ;° =系 '充1 〇〇處偵測到之危害條件包括資料相依危害, 二 w使用由先岫指令產生之結果的稍後指令在先前指令 ' 果寫入至一目標位址或暫存器之前執行時。亦可 、、H S線貝源危害’諸如當在—管線式處理器處執行之 指:需要同時存取相同硬體資源時。亦可偵測到程式 °諸如不歸因於資料相依之指令之間的最小執行 距離。 在特疋實施例中,系統100可作為處理器處之電路實 施以在處理1 D处之執行之別評估並偵測潛在危害。然而, 貝知例中,系統! 〇〇為諸如結合組譯器或編譯 器使用之評估1 B 、 工具之部分。使用評估工具,可改良軟體開 發循環時間,日 可減 >、新軟aa投向市場之開發成本及時 間。 139566.doc 201003517 參看圖2,描检—m 用以評估碼之系統之特定說明性告# 例且將其-般地指定為200。系統包括—代二 -,代表檔案加包括待提供至組譯器22〇之程式石^ 組譯器細之輸出(諸如,目標碼222)提供至依序執行處: 器230。在-較實施例中,依序執行處理器η㈣有a 露管線’意謂處理器23〇不對指令重排序且不 _ 或氣泡(bubble)插入$R 1 ; — 彡拖入至官線中以防止指令之間的相依危 害。 檔案2〇1包括產生—結果之第一指令a 2〇2。當—條件評 估為真k ’條件跳躍指令2()4使程式執行跳躍至目標指令B 208 ’且當該條件評估為假時,繼續執行順序指令「η及 E 206。目標指令3 2G8使用由指令A 2()2產生之 在指令B 208之執行之後,處理繼續指令F。 ^ 應將樓案2G1之指令2G2至2Q8理解為軟體程式之說明性 部分’軟體程式可包括自始至終具有多個條件及分支指令 之任-數目之行之碼。另外’如關於圖7將更詳細地解 釋’ 案2 01可進一步# ;j^么日 取次_ / ^ ^邑括組泽态貢訊(諸如,程式標註 (pragma)資訊)以使組譯器22〇能夠評估含於多個原始樓案 中之程式碼。 參看圖3’描繪程式碼執行模型之特定說明性實施例且 將其-般地指定為300。第-執行路徑模型包括由鍵路31〇 及312指示之第一邏輯區塊302、第二邏輯區塊3〇4及第三 邏輯區塊306。第二執行路徑模型包括由鏈路32〇指示之第 一邏輯區塊302及第三邏輯區塊3〇6。在一說明性實施例 139566.doc 201003517 中,執行模型可由圖2中描繪之對檔案2〇1之指令進行操作 的組譯器220產生。 第一邏輯區塊302包括產生一結果之指令A ,其後接著為 說明為條件跳躍之條件分支指令3〇8。第二邏輯區塊3〇4包 括待基於與分支指令308相關聯之第一條件執行之多個指 令。第三邏輯區塊306包括分支指令之目標B,其使用指令 A之結果。 在一特疋貫施例中,產生邏輯區塊3〇2、3〇4及3〇6以在 識別多個資料執行模㈣識恥持分群之碼段。多個資料 執仃核型可基於與一指令之多個執行源路徑相關聯之條件 產生。舉例而言,指令八及條件分支指令3〇8,以及條件分 士指令之目標B包括於第一執行路徑模型及第二執行路徑 杈型中。第二邏輯區塊3〇4中之指令c、〇及£基於條件分 支指令3G8有條件地執行。可評估執行路徑模型中之每— 者以識別一危害條件。 之特定說明性實施例且 條件分支指令(諸如,— 參看圖4,描繪程式碼執行佇列 將其一般地指定為4〇〇。回應於— 迴圈指令或—條件跳躍指令)識別第-執行仔列41〇及第二 執行仵列420。在-說明性實施例中,諸如藉由圖2之組譯 器謂於圖3中說明之執行路經模型建構第一執行仵列 41 0及第二執行符列42〇。 第一執行仔列4Π)包括產生—結果之第—指令AW。指 令A M2之後接著為條件跳躍指令414(注意指令順序為自 仔列之底部至頂部)’#中將該條件評估為真,使得採用 139566.doc 201003517 至目標指令B 418之跳躍。目標指令B 418使用由a们產 生之結果。另外’兩個「無操作」(N〇p)指令416已包括於 條件跳躍指令414與目標指令B川之㈤,以反映—跳躍指 令需要三個執行循環在處理器處完成的條件。 八第二執行件列420包括產生一結果之第-指令A 422。指 7 A 422之後接著為條件指令424,其中與條件指令々I 4相 反’將該條件評估為假,使得不採用執行分支。指令c、 D及E 426在條件指令424之後包括於第二執行仔列中, 其後接著為條件指令424之目標指令B 428。 如所說明,第一執行佇列41〇包括圖3中描繪之第一、第 二及第三邏輯區塊302至306,且第二執行佇列42〇包括圖3 中描繪之第一邏輯區塊3〇2及第三邏輯區塊3〇6,但無 邏輯區塊304。 2看圖5,描繪一用以評估程式碼之滑動窗之特定說明 性實施例且將其一般地指定為5〇〇。經由至少—滑動窗WO 評估第一執行佇列5丨〇及第二執行佇列52〇。當滑動窗53〇 在由箭頭532指示之方向上遍曆執行佇列51〇、52〇時,滑 動窗530將危害規則54〇應用至執行佇列51〇、52〇中在滑動 窗530内之指+。在—說明性實施例中,執行彳宁列训及 520可為圖4中描繪之執行佇列41〇及42〇。 如所說明’第-執行㈣51G包括#採用條件跳躍指令 時待執行之指令,包括反映與執行跳躍操作相關聯之延遲 的無操作(NOP)指令。第二執行仔列52〇包括當不採用條件 跳躍指令時待執行之指令。兩個執行佇列51〇及52〇包括跳 139566.doc •9- 201003517 躍目標指令B,其使用由先前指令A產生之結果。 在一特定實施例中,滑動窗53〇將包括資料危害規則 之危害規則540應用至執行佇列5 j 〇及52〇中之每一者。資 料危害規則544可指示在產生一結果之第一指令與使用該 結果之第二指令之間允許的最小距離或指令循環數目。在 所說明之實例中,四個指令之最小距離體現在滑動窗53〇 之高度上。 舉例而言,可在執行佇列510及52〇之一或多者中評估指 令A。滑動窗530可經定位以指示指令A之最小距離内之指 令,其中此等指令將不能夠使用由指令A產生之結果。如 所說明,使用先前指令A之結果之跳躍目標指令B在第一 執行佇列510中(亦即,當採用跳躍時)位於滑動窗53〇内, 但在第二執行佇列520中(亦即’當不採用跳躍時)不位於滑 動窗530内。因此,當採用跳躍時與指令A&B相關聯之資 料危害被情測且可被報告或校正。若兩個條件執行流程未 經5平估且若替代地滑動窗在寫入時未應用至碼,則資料危 害可保持未經偵測。 在一特定實施例中,滑動窗530亦可應用資源危害規則 5 46以判定請求硬體資源之不同指令之間的潛在或實際衝 突。舉例而言,滑動窗530可存取一管線資源表,諸如圖6 中描繪之管線資源利用表610。在—特定實施例中,滑動 窗530應用程式流程危害規則548以判定除了資料相依之外 個別指令位於彼此之一或多個預定最小距離内的潛在或實 際發生。 139566.doc •10· 201003517 在一特定實施你丨φ 害、程式流程危害或〜㈣評估資料危害、資源危 σ S '、任一組合。舉例而言,滑動窗530 Ί 组態以經由多次經過該等執 估程式流程,或可烊祛u么 』甲之次夕者而坪 危害類型。儘管將rt類型而未必評估所有各種 51〇及52〇,以^^53()描緣為並行地評估執行件列 列之並行評估且了T例中滑動窗530可不執行執行件 —或多個執行㈣ 地順序地心任—其他順序評估 52= , ⑽物料_列训及 /、爲施例中,例如藉由將一或多個執行 54。二:饋入,經組態以在接收指令時應用危害規則 及520了^夕固狀錢或其他電路(未圖示),執行仔列510 及520可應用至「固定 為具有對應n料盡管將滑動窗530輯 、 。距離之回度,但滑動窗530可呈 有:與資料危害距離相關聯之「高度」或評估範圍。舉例 而5 ’作為說明性非限制實例,當評估在六個時脈循環中 元成每-指令之管線處理器之危害時,滑動窗53〇可呈有 跨越六個指令之評估範圍,且可應用一或多個「子窗」、, =如:指令窗用於資源危害,四指令窗用於資料危害及兩 曰令囪用於某些程式流程危害。 參看圖6,描繪一管線資源危害評估之特定說明性實施 例亡將其一般地指定為_。將管線資源利用表㈣應用至 =打仔列620以產生-資源危害判定結構63()。在一說明性 實施例中,管線資源利用表61〇對於圖5中描纷之滑動窗 139566.doc 201003517 530為可存取的以評估資源危害。 在一特定實施例中,管線資源利用表6 1 0包括與一或多 個特定指令相關聯之靜態預定義資源資訊。舉例而言,與 一或多個指令相關聯之資源資訊可不動態地改變。在一特 定實施例中,管線資源利用表61〇包括與一或多個指令相 關聯之動態資源資訊。舉例而言,一特定指令所需要之資 源可基於執行一或多個其他指令而改變。為了說明,載入 包括由一隨後指令使用之資料之快取行的一先前指令將阻 止在隨後指令中载人相同快取行,且因此釋放進行此所需 要之貪源。此動態資源資訊可在管線資源利用表㈣處更 新。 如所說明’管線資源利用表61〇包括具有與指令相關聯 之列及與時脈循環相關聯之行的表。每一表項指示在開始 指令執行之後在相關聯數目之時脈循環處由相關聯指令使 ::一或多個資源。舉例而言,指令蚊執行需要自開始 私々Α之執行之後,在3個時晰 ni , f脈循裱處使用資源X,在4個 叫脈循環處使用資源γ,且在 s ^ . 在5個扦脈循環處使用資源X。 作為另-實例,㈣k執行不需要資源。 例包括快取、變換後備緩 、’貝原之貫 ㈣叫、資料或位址匯流排 ranSatl〇n 1〇〇^ίά6 或其任一組合。 暫存器槽案、其他硬體資源 / —特定實施例巾’當評姑執行仵列62。時,資、 判定結構630可動態地產生。卷^ ^貝源危告 令時,資源危害判定結構63〇 a估執仃仔列620之每一指 虽前時脈循環遞增,且添 139566.doc 201003517 表ό 1 0之指令相關聯之資料。當一 疋結構6;30之單一行中複製時,可 加與來自管線資源利用 共同ΐ源在資源危害判 偵測到危害。 舉例而言,如所說日月,指令Α在時脈循 艰i处開始,且在 時脈循環3、4及5處分別使用資源x、Y及X。「if」指令在 時脈猶環2處開如,B yu … 7 ° 在T脈循環4、5及6處使用資源z。 才曰々C在時脈循環3處開弘 ^ 開始且在時脈循環5、7及8處分別 使用資源X、W及X。因屮托人Λ m ^ 一 ,曰々及c在時脈循環5處均使 用貝源X,從而指示一管線資源危害。 參看圖7,描繪—用以绰 d %式碼之系統之特定 貫施例且將其—般地指定為7 〇 (^季# 7 η # 糸統70〇包括用以儲存用 於依序處理器(未圖示) 于用 )之釦式扣令的記憶體702。記 702搞接至模型化邏輯雷 〜 κ±3 、輯电路704及評估邏輯電路7〇6。坪估 邏軻電路706耦接至經組態以 J估 7〇8。 座生報告720之報告邏輯電路 十 '尘化邏輯電路7〇4、評估 路706、報告邏輯電路7〇8或其任 电 憶體702之處理器可讀„ 自諸如記 器7Π)的部分。舉例而言 7的處理 丨粗7〇2可由處理器7】 且可具有可由處理器71〇執行 咳取 知作私令。該等操作护a 可包括用以識別經寫入待 卞作“ 中之條件分支的沪八田 处里-處執仃之電腦程式 第-執行路徑且用以基於條件八:件:支之弟-條件評估 行路徑的指令,及用以報主^之弟—條件評估第二執 D〃弟—執行路徑及第二執行路 139566.doc •13- 201003517 2中之任-者相關聯之危害條件的指令。在—特定實施例 中,換型化邏輯電路704及評估邏輯電路7〇6中之至少一者 經組態以產生或評估至少兩個並行執行路徑模型。 在一特定實施例中’模型化邏輯電路7〇4經組態以基於 至少-條件分支指令判定程式指令之至少兩個並行執行路 徑模型。在—特定實施财,模型化邏輯電路704經组能 則妾收儲存於記憶體7()2處之第—稽案712處之程式指令^ 第-部分。模型化邏輯電路7〇4亦可經組態以接收儲存於 第一檔案712處且與儲存於記憶體7〇2處之第二檔案了^處 之私式指令的第二部分相關聯的組譯器輔助資訊Μ〗。模 型化邏輯電路704可經組態以產生包括諸如圖3中描繪之至 少兩個並行執行路徑模型的執行模型資訊716。 在一特定實施例中,處理器71〇執行組譯器程式指令 以、’、。5產生執行模型資訊716而產生用於作為模組寫入第 一檔案712、第二檔案714及可選地一或多個其他檔案(未 圖不)處之程式指令的目標碼。在組譯器程式可約束於評 估第一檔案712之範疇中的情況下,組譯器輔助資訊a]可 使組譯器能夠檢查第一檔案712與第二檔案714之間的指令 間相依及危害。在一特定實施例中,組譯器輔助資訊Μ] 包括經定義以將一程式流程指令之目標處之指令資料提供 至另私案的組澤器程式標註或指引。舉例而言,當一程 式流程指令由組譯器在第一檔案712處遭遇時,組譯器可 言試在第一檔案712内解析該程式流程。若組譯器在第一 檔案712内不能解析該程式流程,則組譯器可自動地搜尋 139566.doc -14- 201003517 組譯器輔助資訊722,諸如M& ^ ώ 错由在第二檔案714中定位用於 程式流程目標之-Μ個料餘定義。 用於 在特疋只施例中,評估邏輯電路706經組雄以气 行模型資訊716之並行執行路徑模型中之至少」者:二 危害條件。在一特定實施例 J ^矸估邈輯電路706包括處 m、以填充對應於並行執行路徑模型中 -者之第-指令執彳収對絲並行執㈣徑
第二者之第二指令執行件列(諸如,圖4中描繪之執 410及420)的一部分。 J 丁 J 在一特定實施例t,評估邏輯電路7〇6包括處理哭7i〇之 經組態以評估多個執行仔列以偵測資料相依危害、㈣危 害及程式流程危害中之至少一者的_部分。在一說明性實 把例中’評估邏輯電路706 έ» έθ #、,,〇· '二、,且,占以使用如圖5中描鳍_之滑 動窗530及相關聯危害規則54Q,使用如圖㈠描繪之管線 貧源危害表61G或其任—組合產生並評估多個執行仔列。 在一特定實施财,報告邏輯電路服㈣態以報告危 。條件舉例而吕’報告邏輯電路7〇8可包括處理器^之 ㈣態以執行用以產生報告72〇以包括行數且指示錯誤及 吳原因的#曰令的一部分。在評估跨越多個棺案Ν2及4 之-或多個條件分支之情況下,報告72〇可進一步識別與 位於第1案712 '第二棺案714、其他播案(未圖示)或其 ^ 、’且口處之至少一指令相關聯的錯誤。在一特定實施例 中,報告720指示在自執行第一檔案712處之指令跳躍至開 始執订第—檔案714處之第一指令之前插入用以延遲電腦 139566.doc •15· 201003517 程式之執行的指令。 參看圖8,描繪用以評估程式碼之 — w / 弟一貫施例ήΑ 流程圖。在-特定實施例中,評估用於使用依序執行二 線執行處理器的程式碼。在一說明性實施例中,該方法吕 由圖7中描繪之系統700根據圖!至圖6中描緣之實施Ζ 或多者執行。 該方法包括在802處,接收用於處理器之程式碼 =4’識別包括一分支指令的第—邏輯指令區塊。繼續 6 ’基於第—條件識別包括多個指令的第二邏輯扑八 :塊。繼續進行至_ ’識別包括至少一共同指令的第曰: 邈輯指令區塊’該至少一共同指令包括該分支指令之…: 支目標。移動至810,在一特定實施例中,將第一邏輯: 塊連結至第三邏輯區塊。 繼續進行至812, Ρ執行㈣基於第__條件識別多個 指令之執行順序。前進至814’第二執行仔列基於第二條 件識別第二指令之執行順序。舉例而言,可回應於一迴圈 指令或條件跳躍指令識別第—執行仔列及第二執行仔列。 為了說明’-迴圈指令可指示至一先前指令的條件或非條 件返回。在一特定實施例中,笛 Λ J T第一執行佇列及第二執行佇 列包括至少一共同指令。 在一特定實施例中,第-執行仔列包括與第一邏輯指令 區塊、第二邏輯指令區塊及第三邏輯指令區塊相關聯之指 令。第二執行仔列可包括與第—邏輯指令區塊及第三邏輯 指令區塊相關聯之指令。舉例而言’第一執行作列可對應 139566.doc 16 - 201003517 於未經採用之條件 仔列可對應於細採用(堵如,執行作列420),且第二執行 作列410)。 用之條件跳躍(諸如,圖4中描繪之執行 繼續至816,坪 -危害條件。移動至8:執行仔=二執行件列以識別 動窗將危害規則應用至说二知疋只施例中’使用-滑 列。危害規則可包括令來評估第二執行仵 使用滑動窗坪估第危告㈣及管線資源規則。藉由 對應於經採用之^行㈣,可(諸如)在第二執行仔列 休用之條件跳躍時偵 保持未經偵測。亦 边寺危害否則可 源規則來評估第一執滑動窗應用危害規則及管線資 測之危害條件執订作列。繼續進行至⑵,報告所谓 /看圖9 &繪用以評估程式碼之方法之第 4圖。該方法可評估用於使用依序執行之管 器的程式碼。在—今❹者 视饤之吕線執仃處理 海 生Λ細例中,該方法可由圖7 _浐 、·會之系統700根據圖!至 田 執行。 會之貝把例中之-或多者 在902處’識別具有多個執行源路徑之 至904,產生基於第— 彳夕動 件識別夕個指令之執行順序的第 一執行路徑模型。繼續至9〇6,產 的弟 -沪入少IS ^ 生基於第一條件識別第 之執订順序的第二執行路經模型。第一執行路徑模 罜及第二執行路徑模型可各自包括第一指令。 、 在一特定實施例中,第一勃杆牧/ 描, 執仃路徑模型及第二執行路护 含於不同擋案中。該等檔案中之至少—者可包括料 139566.doc -】7· 201003517 等檔案中之另—者相關聯之_ 〜* 助^可由一組譯器使用以評估執行路徑模型:亥、·且#裔輔 則進至908 ’評估執行路徑模 危害條件。繼續進行至91〇 之至乂 一者以識別一 線資源利用表以識別盘第—執^特定實施例中,存取管 關聯之資源。在-特^於執订路徑模型内之特定指令相 牡符疋貫施例中, 該特定指令相關聯之靜態預定資源資訊:在、1二括與 中,管線資源利用表亦包括與該特特疋實施例 源資訊。 、曰7相關聯之動態資 移動至912 ’偵測—产堂a & 件。卢一 —、巴13 U牛且報告所偵測之危害條 河产金^ !^例中’危害條件可為資料相依危害、資 源危害或私式流程危害中之—或多者。 、 熟習此項技術者將瞭解’可將 :所描述的各種說明性邏輯區塊、組態:=: ,法步驟貫施為電子硬體、電腦軟體或兩者之紐人。為了 =地說明硬體與軟體之此可互換性,各種說明:組件、 ㈣、偷、電路及步驟6在上文大體按其功能性 :以描述。此功能性係實施為硬體還是軟體視特定岸用及 t於整個系統上之設計約束而定。熟習此項技術者可針 十母-特疋應用以不同方式實施所描述之功能性 等實施決策不應被解釋為會導致脫離本揭示宰之範:。 亩Γ合本文中揭示之實施例描述之方法或演算法之;驟可 直接體現於硬體中、藉由處理器執行之軟體模組中或兩者 之組合中。軟體模組可駐留於隨機存取記憶體(咖)、快 139566.doc •18- 201003517 閃記憶體、唯讀記憶體(ROM)、可程式化唯讀記憶體 (PROM)、可抹除唯讀記憶體(EPR0M)、電可抹除唯讀記 憶體(EEPROM)、暫存器、硬碟、抽取式碟、緊密光碟唯 讀記憶體(CD-ROM)或此項技術中已知之任一其他形式之 儲存媒體中。一例示性儲存媒體耦接至處理器,使得處理 器可自儲存媒體讀取資訊及將資訊寫入至儲存媒體。在替 代例中,儲存媒體可整合至處理器。處理器及儲存媒體可 ( 駐留在特殊應用積體電路(ASIC)中。ASIC可駐留在計算器 V 件或使用者終端機中。在替代例中,處理器及儲存媒體可 作為離散組件而駐留於計算器件或使用者終端機中。 制提供所揭示實施例之先前描述以使熟習此項技術者能夠 製造或使用所揭示實施例。熟習此項技術者將易於瞭解此 等實施例之各種修改,且本文中所定義之一般原理可在不 脫離本揭示案之範壽的情況下應用於其他實施例。因而, 本揭示案及圖式將被視為說明性而非限制性的。因此,不 〇 2欲=本揭*案限制於本文中所展示之實;^,而是將符 可此與如由以下申請專利範圍所界定之原理及新穎特徵 - 一致之最廣泛範疇。 【圖式簡單說明】 圖1為一碼評估系統之實施例的總圖; θ /用以°平估碼之系統之實施例的方jt鬼圖; 圖3為耘式碼執行模型之實施例的總圖; 圖4為^式碼執行佇列之實施例的總圖; 圖5為用以啤从i D卞估程式碼之滑動窗之實施例的總圖; 139566.doc ,19- 201003517 圖6為s線貪源危害評估之實施例的總圖; 圖7為用u評估程式碼之系統之實施例的方塊圖; 圖8為用以評估碼之方法之第一實施例的流程圖;及 圖9為用以評估碼之方法之第二實施例的流程圖。 【主要元件符號說明】 100 碼β平估系統之特定說明性實施例/系統 102 程式碼 104 條件分支指令 106 第一條件 108 第二條件 110 第一執行彳宁列 112 第一指令集/指令 114 第一指令順序 120 第二執行仔列 122 第二指令集/指令 124 苐一指令順序 200 201 、、估馬之系統之特定說明性實施例/系統 檔案 202 第—指令A 204 條件跳躍指令 206 順序指令C、;〇及£ 208 目標指令B 220 組譯器 222 目標媽 139566.doc •20- 201003517 230 依序執行處理器 300 程式碼執行模型之特定說明性實施例 302 第一邏輯區塊 304 第二邏輯區塊 306 第三邏輯區塊 308 條件分支指令 310 鏈路 312 鍵路 320 鍵路 400 程式碼執行佇列之特定說明性實施例 410 第一執行佇列 412 第一指令A 414 條件跳躍指令 416 「無操作」(NOP)指令 418 目標指令B 420 第二執行佇列 422 第一指令A 424 條件指令 426 指令C、D及E 428 目標指令B 500 用以評估程式碼之滑動窗之特定說明性實施例 510 第一執行佇列 520 第二執行佇列 530 滑動窗 532 箭頭 139566.doc -21 - 201003517 540 544 546 548 600 610 620 630 700 702 704 706 708 710 712 714 716 718 720 722 W X Y z 139566.doc 危害規則 資料危害規則 資源危害規則 程式流程危害規則 管線資源危害評估之特定說明性實施例 管線資源利用表 執行彳宁列 資源危害判定結構 用以評估程式碼之糸統之特定說明性貫施例/ 系統 記憶體 模型化邏輯電路 評估邏輯電路 報告邏輯電路 處理器 第一檔案 第二檔案 執行模型資訊 組譯器程式指令 報告 組譯器輔助資訊 資源 資源 資源 資源 -22-

Claims (1)

  1. 201003517 七、申請專利範圍: 1 _ 一種評估用於一俤田#广α ρ Α 使用依序執行之管線執 碼的方法,該方法包含· 处里态之私式 接收用於該處理器之程式碼; 識別基於一第—條件識別多個指A — 第一執行佇列; g v之―執行順序的— 識別基於一第二條件識別—第二护八 一第二執行佇列,其中該第9令之—執行順序的 列包括至少-共同指令; 订<丁列及該第二執行仵 評估該第一執行佇列及該第_ 條件;及 執仃佇列以識別一危害 報告該危害條件。 2. 如請求項丨之方法,其進一步包含. 識別包括-分支指令之-第4 基於該第-條件識別包括該多個指:2; υ 令區塊;及 弟二邏輯指 識別包括該至少一共同指令 ^ _第三 該至少—共同指令包括該分支指令之—、扣々區塊, 3. 如請求項2之方法’其進_步二::2:標。 結至該第三邏輯區塊,其中兮笛 璉輯區塊連 遴輯區塊、該第二邏輯區塊及 匕括5亥第一 該第二執行仵列包括該第—邏;^邏輯區塊,且其中 塊。 輯區塊及該第三邏輯區 4_如請求们之方法’其進—步 1更用-滑動窗將危害 139566.doc t 201003517 5. 6. 7. 8. 9. 10. 11. 規則應用至該滑動窗内之指令來評估哕 如請求項4之方法,其中該等危害規二:,行件列。 則及管線資源規則。 、。冑料危害規 如請求項1之方法’其中該第-執行仵列及該第二執> 細系回應於一迴圈指令或—條件跳躍指令而識;, -種評估用於—使㈣序執行之管線執 碼的方法,該方法包含: 时之知式 識別具有多個執行源路徑之一第—指令; 斤產生基於-第—條件識別多個指令之_執行順序的— 第一執行路徑模型; 一產生基於-第二條件識別—第二指令之—執行順序的 -第二執行路徑模型’其中該第—執行路徑模型及該第 二執行路徑模型包括該第一指令;及 評估該等執行路徑模型中之至少一者以識別一危害條 件。 ’、 如明求項7之方法,其進一步包含偵測該危害條件且報 告該所偵測之危害條件。 如請求項7之方法’其中該危害條件為一資料相依危 害、—資源危害及一程式流程危害中之一者。 如請求項7之方法,其進一步包含: 存取一管線資源利用表以識別與該第一執行路徑模型 内之—特定指令相關聯之資源。 如請求項10之方法,其中該管線資源利用表包括與該特 疋才s令相關聯之靜態資源資訊。 139566.doc 201003517 12· ^請求項1G之方法,其中該管線資源利用表包括與該特 定指令相關聯之動態資源資訊。 13. 如請求項7之方法,其中該第一執行路徑模型及該第二 執行路徑模型含於不同檔案中,且其中該等檔案中之I 少一者包括與該等檔案中之另一者相關聯之組譯器輔助 資訊。 14. 如請求項13之方法,其中該組譯器辅助資訊由一組譯器 使用以評估該執行路徑模型。 15. —種系統,其包含: 一記憶體,其用以儲存用於-依序處理器之 令; 2型化構件,其用於基於該等程式指令巾之至少—條 ^ U令判定該等程式指令之至少兩個並行執行路 模型; U +。平估構件,其用於識別該等並行執行路徑模型中之至 少一者中之一危害條件;及 =告構件’其用以報告該危害條件。 月长項15之系統,其中該模型化構件經組態以接收健 存於該記憶體處之—筮_ 一部八 第棺案處之該等程式指令的一第 儲广二且其中該模型化邏輯電路進-步經組態以接收 案斤°亥第一槽案處且與儲存於該記憶體處之-第二檔 資:之該等程式指令的—第二部分相關聯的組譯器辅助 1 7 ·如請求項 該 、 ’、、’、 其中該評估構件包括一處理器 139566.doc 201003517 j理器經組態以填充對應於該等並行執行路徑模型中之 一第—者之一第一指令執行佇列及對應於該等並行執 路控模型中之—第二者之一第二指令執行疗列。 18.如凊,項15之系統,其中該評估構件包括—處理器,該 :理::經組態以評估多個執行佇列以偵測一資料相依危 。 貧源危害及一程式流程危害中之至少一者。 凊求们5之“ ’其中該模型化構件及該評估構件尹 至少—者包括經組態以產生或評估 行路徑模型的電路。 至夕兩個亚仃執 2〇·^處理器可讀媒體,其具有可由—處理器執行之操作 才曰令,該等操作指令包含·· 用以識別一經寫入待在一依 式令之-條件分支的指令; 處執仃之電腦程 用以基於該條件分支之—第一條件評估 徑且用以基於該條件分支之帛執仃路 路徑的指H 一條件評估一第二執行 用以報告與該第—執行路徑及哼 —者相關ί4 Μ第一執行路徑中之任 者相關聯之-危害條件的指令。 21 ·如凊求項2〇之處理器可讀媒體,其 — 件的該蓉户八4 j “ 用从報告一危害條 的亥“令包括用以產生具有行數且_ 錯誤之—原因的原始碼之 丁數且心不—錯誤及該 尽始碼之—報告的指令。 22.如凊求項21之處理器 式指令之一第一…寒體,其中該條件分支係在程 於-第二槽案處::報。進-步識別與位 扎々相關聯的—錯誤。 139566.doc 201003517 23.如請求項22之處理器可讀媒體,其中該報告指示在跳躍 以執行該第二檔案處之一第一指令之前插入用以延遲該 電腦程式之執行的指令。
    139566.doc
TW098112210A 2008-04-17 2009-04-13 Code evaluation for in-order processing TW201003517A (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/104,586 US8612944B2 (en) 2008-04-17 2008-04-17 Code evaluation for in-order processing

Publications (1)

Publication Number Publication Date
TW201003517A true TW201003517A (en) 2010-01-16

Family

ID=40822974

Family Applications (1)

Application Number Title Priority Date Filing Date
TW098112210A TW201003517A (en) 2008-04-17 2009-04-13 Code evaluation for in-order processing

Country Status (3)

Country Link
US (1) US8612944B2 (zh)
TW (1) TW201003517A (zh)
WO (1) WO2009129052A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9996348B2 (en) 2012-06-14 2018-06-12 Apple Inc. Zero cycle load
US11068271B2 (en) 2014-07-28 2021-07-20 Apple Inc. Zero cycle move using free list counts
US11416254B2 (en) 2019-12-05 2022-08-16 Apple Inc. Zero cycle load bypass in a decode group

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9900302B2 (en) 2016-06-22 2018-02-20 FinancialForce.com, Inc. Seamless authentication for an application development platform
US10984359B2 (en) * 2016-06-23 2021-04-20 FinancialForce.com, Inc. Combining batch and queueable technologies in a salesforce platform for large volume parallel processing
US10496741B2 (en) 2016-09-21 2019-12-03 FinancialForce.com, Inc. Dynamic intermediate templates for richly formatted output
US10282274B2 (en) * 2017-06-14 2019-05-07 Microsoft Technology Licensing, Llc Presenting differences between code entity invocations
US11038689B2 (en) 2018-03-01 2021-06-15 FinancialForce.com, Inc. Efficient block chain generation
US10846481B2 (en) 2018-06-29 2020-11-24 FinancialForce.com, Inc. Method and system for bridging disparate platforms to automate a natural language interface
US11200143B2 (en) 2019-01-08 2021-12-14 FinancialForce.com, Inc. Software development framework for a cloud computing platform
US10922485B2 (en) 2019-07-10 2021-02-16 FinancialForce.com, Inc. Platform interpretation of user input converted into standardized input
US11200062B2 (en) 2019-08-26 2021-12-14 Apple Inc. History file for previous register mapping storage and last reference indication

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5053986A (en) * 1990-02-21 1991-10-01 Stardent Computer, Inc. Circuit for preservation of sign information in operations for comparison of the absolute value of operands
US5878244A (en) * 1995-01-25 1999-03-02 Advanced Micro Devices, Inc. Reorder buffer configured to allocate storage capable of storing results corresponding to a maximum number of concurrently receivable instructions regardless of a number of instructions received
JP3113792B2 (ja) 1995-04-27 2000-12-04 松下電器産業株式会社 最適化装置
US5983342A (en) * 1996-09-12 1999-11-09 Advanced Micro Devices, Inc. Superscalar microprocessor employing a future file for storing results into multiportion registers
US5860018A (en) * 1997-06-25 1999-01-12 Sun Microsystems, Inc. Method for tracking pipeline resources in a superscalar processor
JP3535354B2 (ja) 1997-08-27 2004-06-07 株式会社東芝 ストール検出表示装置及び方法
JP3595158B2 (ja) 1998-03-13 2004-12-02 株式会社東芝 命令割り当て方法及び命令割り当て装置
US6490673B1 (en) 1998-11-27 2002-12-03 Matsushita Electric Industrial Co., Ltd Processor, compiling apparatus, and compile program recorded on a recording medium
GB0215029D0 (en) 2002-06-28 2002-08-07 Critical Blue Ltd Strand based execution
US6957325B1 (en) 2002-07-01 2005-10-18 Mindspeed Technologies, Inc. System and method for detecting program hazards in processors with unprotected pipelines
US7020765B2 (en) 2002-09-27 2006-03-28 Lsi Logic Corporation Marking queue for simultaneous execution of instructions in code block specified by conditional execution instruction
WO2004072796A2 (en) 2003-02-05 2004-08-26 Arizona Board Of Regents Reconfigurable processing
US20050125786A1 (en) 2003-12-09 2005-06-09 Jinquan Dai Compiler with two phase bi-directional scheduling framework for pipelined processors
TWI285841B (en) 2004-07-16 2007-08-21 Samsung Electronics Co Ltd Branch target buffer, branch target buffer memory array, branch prediction unit and processor with a function of branch instruction predictions
TW200739419A (en) 2006-04-07 2007-10-16 Univ Feng Chia Prediction mechanism of a program backward jump instruction

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9996348B2 (en) 2012-06-14 2018-06-12 Apple Inc. Zero cycle load
US11068271B2 (en) 2014-07-28 2021-07-20 Apple Inc. Zero cycle move using free list counts
US11416254B2 (en) 2019-12-05 2022-08-16 Apple Inc. Zero cycle load bypass in a decode group

Also Published As

Publication number Publication date
US20090265531A1 (en) 2009-10-22
WO2009129052A1 (en) 2009-10-22
US8612944B2 (en) 2013-12-17

Similar Documents

Publication Publication Date Title
TW201003517A (en) Code evaluation for in-order processing
Chattopadhyay et al. A unified WCET analysis framework for multicore platforms
Li et al. T-check: bug finding for sensor networks
JP5536052B2 (ja) ループ制御システムおよび方法
US9459989B2 (en) Method and apparatus for reverse debugging source code using causal analysis
Jin et al. Fate and FreeWill in error traces
US20170010957A1 (en) Method for Multithreaded Program Output Uniqueness Testing and Proof-Generation, Based on Program Constraint Construction
US20120222035A1 (en) Priority Inheritance in Multithreaded Systems
JP2014501412A5 (zh)
US10564992B2 (en) Simulation apparatus and storage medium
CN110892384B (zh) 对处理器未定义行为依赖的重放时间行程跟踪
US8539467B2 (en) Method and data processing system for solving resource conflicts in assembler programs
Chen et al. Compensate or ignore? Meeting control robustness requirements through adaptive soft-error handling
Ganty et al. Verifying liveness for asynchronous programs
Park et al. Concurrent breakpoints
CN106293641B (zh) 基于流水线重构的超长指令字体系架构性能模拟方法
CN110543353B (zh) 结合符号执行和路径模型检验的mpi程序验证方法、系统及介质
US10671512B2 (en) Processor memory reordering hints in a bit-accurate trace
US20110022373A1 (en) Model checking of liveness property in a phase abstracted model
Azar et al. Distributed error confinement
Salmerón et al. Integrating model checking and simulation for protocol optimization
CN111552652B (zh) 基于人工智能芯片的数据处理方法、装置和存储介质
KR101360221B1 (ko) 인스트럭션 캐시 관리 방법 및 그 방법을 이용하는프로세서
US20170132094A1 (en) Technologies for analyzing persistent memory programs
JP6943890B2 (ja) 命令パケットのためのパリティ