TWI304548B - Method, system, computer readable recording medium recording instructions for counting instruction execution and data accesses for specific types of instructions - Google Patents
Method, system, computer readable recording medium recording instructions for counting instruction execution and data accesses for specific types of instructions Download PDFInfo
- Publication number
- TWI304548B TWI304548B TW093133193A TW93133193A TWI304548B TW I304548 B TWI304548 B TW I304548B TW 093133193 A TW093133193 A TW 093133193A TW 93133193 A TW93133193 A TW 93133193A TW I304548 B TWI304548 B TW I304548B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- program
- instructions
- cache
- indicator
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 76
- 238000012545 processing Methods 0.000 claims description 46
- 230000008569 process Effects 0.000 claims description 26
- 230000006870 function Effects 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 16
- 241000282320 Panthera leo Species 0.000 claims description 2
- 238000012937 correction Methods 0.000 claims description 2
- 238000012544 monitoring process Methods 0.000 description 41
- 238000010586 diagram Methods 0.000 description 28
- 239000000872 buffer Substances 0.000 description 21
- 238000004458 analytical method Methods 0.000 description 18
- 230000007246 mechanism Effects 0.000 description 14
- 239000003795 chemical substances by application Substances 0.000 description 10
- 230000009471 action Effects 0.000 description 9
- 239000000463 material Substances 0.000 description 9
- 238000005070 sampling Methods 0.000 description 6
- 238000013519 translation Methods 0.000 description 5
- 102100034013 Gamma-glutamyl phosphate reductase Human genes 0.000 description 4
- 238000009877 rendering Methods 0.000 description 4
- 241000255925 Diptera Species 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 206010011469 Crying Diseases 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 210000004556 brain Anatomy 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- NYPYHUZRZVSYKL-UHFFFAOYSA-N 2-azaniumyl-3-(4-hydroxy-3,5-diiodophenyl)propanoate Chemical compound OC(=O)C(N)CC1=CC(I)=C(O)C(I)=C1 NYPYHUZRZVSYKL-UHFFFAOYSA-N 0.000 description 1
- 241000272517 Anseriformes Species 0.000 description 1
- 235000002566 Capsicum Nutrition 0.000 description 1
- 101150055094 PMC1 gene Proteins 0.000 description 1
- 241000282376 Panthera tigris Species 0.000 description 1
- 239000006002 Pepper Substances 0.000 description 1
- 235000016761 Piper aduncum Nutrition 0.000 description 1
- 235000017804 Piper guineense Nutrition 0.000 description 1
- 244000203593 Piper nigrum Species 0.000 description 1
- 235000008184 Piper nigrum Nutrition 0.000 description 1
- 102100038208 RNA exonuclease 4 Human genes 0.000 description 1
- 101150073729 Rexo4 gene Proteins 0.000 description 1
- 244000007853 Sarothamnus scoparius Species 0.000 description 1
- 101100290680 Schizosaccharomyces pombe (strain 972 / ATCC 24843) med1 gene Proteins 0.000 description 1
- 101100400958 Schizosaccharomyces pombe (strain 972 / ATCC 24843) med14 gene Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 235000013405 beer Nutrition 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 239000011230 binding agent Substances 0.000 description 1
- 239000008280 blood Substances 0.000 description 1
- 210000004369 blood Anatomy 0.000 description 1
- 230000000747 cardiac effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- PNDPGZBMCMUPRI-UHFFFAOYSA-N iodine Chemical compound II PNDPGZBMCMUPRI-UHFFFAOYSA-N 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000000819 phase cycle Methods 0.000 description 1
- 238000009958 sewing Methods 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 210000002784 stomach Anatomy 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007306 turnover Effects 0.000 description 1
- 238000009941 weaving Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
- Advance Control (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
1304548 九、發明說明: 本申請案與以下同時提出申請的發明申請案相關,並 引用為參考資料,包括:「用以計算指令執行與資料存取 之方法與裝置(Method and Apparatus for Counting Instruction Execution and Data Accesses)」,申請案 號—_,代理人案號AUS920030477US1 ;「選擇性地計 异指令與資料存取之方法與裝置(Method and Apparatus for Selectively Counting Instructions and Data
Accesses)」,申請案號_,代理人案號 AUS920030478US1 ;「在執行已標記指令與存取已標記記憶 體位址時用以產生中斷的方法與裝置(Method and Apparatus for Generating interrupts Upon Execution of Marked Instructions and Upon Access to Marked
Memory Locations)」,申請案號_,代理人案號 AUS920030479US1,「計异貧料存取與指令執行超過一次數 的方法與裝置(Method and Apparatus for Counting Data Accesses and Instruction Executions that Exceed a Threshold)」,申請案號— ,代理人案號 AUS920030480US1 ;「計算執行特定指令與特定資料位置存 取次數的方法與裝置(Method and Apparatus for Counting Execution of Specific instructions and Accesses to Specific Data Locations)」,申請案號 _,代理人案號AUS920030481US1 ;「用於個別指令 與記憶體位置的除錯方法與裝置(Method and Apparatus 理慈 4旧M/04115TW,AUS9-2003-0546(儿) 5 1304548 for Debug Support for Individual Instructions and
Memory Locations)」,申請案號_,代理人案號 AUS920030482US1 ;「自主性選擇指令以選擇性計數的方法 與裝置(Method and Apparatus to Autonomically Select instructions for Selective Counting)」,申請案號 _,代理人案號AUS920030483US1 ;「自主性計算應 用指令存取次數的方法與裝置(Method and Apparatus to Autonomically Count Instruction Execution for
Applications)」,申請案號_,代理人案號 AUS920030484US1 ;「自主性對特定指令產生例外情形的方 法與裝置(Method and Apparatus to Autonomically Take an Exception on Specified instructions)」,申請案號 -,代理人案號AUS920030485US1 ;「自主性描繪應 用程式的方法與裝置(Method and Apparatus to Autonomically Profile Applications)」,申請案號 _,代理人案號AUS920030486US1 ;以及「計算指令 與記憶體位置範圍的方法與裝置(Method and Apparatus for Counting Instruction and Memory Location
Ranges)」,申請案號一一一,代理人案號 AUS920030487US1 。 ^ 【發明所屬之技術領域】 本發明係有關於一改良的資料處理系統(data processing system),特別是與取得資料處理系統内之效 能資料(performance data)的方法與裝置有關。更特別的 是’本發明提供硬體支援軟體工具以取得資料處理系統内 理慈 4旧M/04115TW,AUS9-2003_0546(JL) 6 1304548 之效能資料的方法與裝置。 【先前技術】 ,資料處理纽與資料處理祕内所執行的應用程 式進行分析與強化效能時,知道資料處理系統内有那 ==在5職統=#料會有幫助。要能財效管理與強 ^料處_統’需要知道各種系統#源是如何以及何時 被存取。當各種軟舰雜式在資料處理纽中執行時, 了以,用效能工具(performance tool)來監測與檢杳資 系統中的資源消耗量。舉例來說,效能工具二= ==只是指出佔用最多記德體== 硬體效能工具可内建於系統中,或 成種知的 二技有術種藉 ===:來說,追蹤工具可=組= 外,追蹤工且件的所有進入記錄與離開記錄。另 求所分配到;;者’ f f己錄每—記憶體配置請 生時,即產般來說,當有這樣的事件發 的記錄對(pairs of (Λ. StamPed)的記錄。對應 記錄任意程式碣片段HU進f記錄類似,也可用來 與結束,還有各件1/0或資料傳輸的開始 要二要;^==::: 麵 4IB_4mTW , AUS9-2〇〇3 〇546㈨ 1304548 腦處理術語中稱為搜尋「熱點(hot Sp〇t)」。理想的情況, 曰想要將這種熱點隔離在程式碼層級的指令以及/或來 源行,以便將注意力放在如何讓程式碼提昇最多的地 方。 另一種追蹤技術是定期取樣程式的執行流程,以找出 程式可能會花大量時間處理的地方。這個技術是定期中斷 應用程式或資料處理系統的執行工作,稱為取樣基礎的描 繚(sample-based profiling)。在每一次中斷中,則是以 預定的時間長短來記錄資訊,或是以預定的事件次數為 主。舉例來說,找出程式中目前正在使用的執行緒(直為 =前在受測的大程式中可執行的一小部份),以程式計數 ,在此一期間進行記錄。在處理時間之後,這些數值可對 知負載圖(load map)或符號表(Symb〇i table)來加以分 析,而有關時間如何使用的輪廓檔案(pr〇file)可以從分 析中求得。 建構這類工具來找出特定情況或問題的解答可能會 才匕很多時間,並且很難調整讓這些軟體不去影響受測系 統。本發明了解到利用硬體來協助開發工具與分析問題可 ,幅降低開發軟體工具所需投注的心力。此外,由於處理 器密度不斷增加,顧硬體協助的方式也可提供額外的除 錯(debug)與分析功能。 因此,若能提供改良的方法、裝置與電腦指令,以硬 體協助軟體工具分析資料處理系統内之效能,將大有裨 益。 【發明内容】 本务明&供用以處理指令的一方法、裝置與電腦指 理慈 4旧M/04115TW,AUS9-2003-0546(JL) 8 1304548 令。因應接收到一指令’此指令用以 理器的指令快取内執行,因而顺理系統中處 關’以及此指令是否屬於一指令範此指令相 相關,且指令屬於指令範圍内的以= 【實施方式】 圖1所不為可用來實施本發明的資料 圖:用戶端謂的一個範例是一㈣腦, 行土發日:程序所㈣程式碼或指令1戶端⑽採用湓 ^件互連(PCI)的本地匯流排架構。儘管在範例中是 但同樣也可採用其他架構,例如圖形加速琿 ^AGP)與工業標準架構(ISA)。處理II 102與主記憶體104 透過PCI橋接器1〇8連接至pCI本地匯流排1〇6。pci橋 接器108也可包括内建記憶體控制器與快取記憶體,以供 ,理器102使用。其他與PCI本地匯流排1〇6連接的方^ 還有直接元件互連或是透過附加機板(以心;^ board)連 接。在所示的範例中,區域網路(LAN)配接卡110、小型電 腦系統介面(SCSI)主機匯流排配接卡112、以及擴充匯流 排介面114均以直接元件連結的方式連至PCi匯流排 106。而音效卡116、顯示卡118、以及音效/視訊卡119 係以附加機板插入擴充槽的方式連接至PCI匯流排106。 擴充匯流排介面114提供連接至鍵盤與滑鼠配接卡12〇、 數據機122、以及附加記憶體124。SCSI主機匯流排配接 卡112提供連接至硬碟機126、磁帶機128、以及光碟機 (CD-ROM) 130。典型的PCI本地匯流排可支援3至4個PCI 擴充槽或附加的連線器。 理慈 4旧M/04115TW,AUS9-2003-0546(JL) 1304548 次粗ϊ,處理11102執行一作業系統,用以協調與控制 貝^处理糸統100内的各種元件。作業系统可以是微軟的 in ows ΧΡ -類的商用軟體,並可配合物件導向程式系統 备妓aIa ’提供用戶端100 # Java程式或應用程式向作業 二二呼、4 Javaj 為昇陽公司(Sun Microsystems)的 二^作業系統、物件導向程式系統、以及應用程式或其 的指令都位於儲存裝置城碟機126上,可被載入 二己憶體104,而經由處理器1〇2執行。 技藝者應該知道®1的硬體有各種實施方式。 二;^内ί硬體或週邊裝置,如快閃唯讀記憶體⑽M)、 ιίΐίΐ'體、或者是辆等,都可絲取代或附加在圖 資料處理I統^樣的’本發明的程序也可運用在多處理器 目例t說’用戶端⑽如果賴地設定為網路電腦, 、β此不θ包括SCSI主機匯流排配接卡112、碑機 130 0 + 配接ϊίϊ)括某翻路通訊介面,像是LAN 阳接卡110、數據機122、或類似的裝置。在另 立的系統’不需要依賴某種網路通訊 Ρ了開機。又在另一例中,用戶端100可以是個人數 位助理(PDA),_唯讀記憶體⑽_及/ 非揮發性記憶體,來儲存作業^ ίΐζ, 者產生的資料。圖1所描述的範例以 及上述的乾例並不代表任何架構的限制。 鮮所述的ΐ序(process)是由處翻102透過電 執行。這些指令可存放在記憶體中,例如主記憶 _ 104、e憶體124、或者在一或多個週邊襞置126_13^ MM 4IBM/04115TW » AUS9-2003-0546(JL) 1304548 内0 抑-2為根據本發明一較佳實施例,用以處理資料的處 理器系統的方塊圖,處理器21〇可以是圖1中所使用的處 理器102。 在一較佳實施例中,處理器21〇為單一積體電路超純 量微處理器(single integrated circuit superscalar microprocessor)。因此在下面的討論中,處理器2i〇包 括各種單元(unit)、暫存器(regis1:er)、緩衝記憶體 (buffer)、記憶體、以及其他部份,皆是由積體電路所形 成。同樣在此較佳實施例中,處理器21〇是採用精簡指令 集(fISC)的技術。如圖2所示,系統匯流排2u連接到處 理器210的匯流排介面單元(ΒΙϋ) 212。βιυ 212控制系統 匯流排211與處理器210之間的資訊傳輸。 BIU 212連接到處理器21〇的指令快取214與資料快 取216。指令快取214將輸出指令至序列器單元(sequencer unit)218。序列器單元218因應來自指令快取214的指 令,而選擇性出指令給處理器21〇的其他執行電路。 除了序列器單元218外,在較佳實施例中,處理器21〇 1執行電路包含多個執行單元,亦即分支單元22〇、定點 單兀 A (’’FXUA”)222、定點單元 b ("FHJB”)224、複雜 定點單元CXFXU”)226、載入/儲存單元(1〇ad/st〇re unit,LSU ) 228、以及浮點單元("fpu”)230。FXUA 222、 FXUB 224、CFXU 226、以犮LSU 228從通用架構暫存器 C’GPRs”)232以及定點重新命名緩衝器⑴㈣―叩― rename buffers) 234處輸入來源運算元資訊(s〇urce operand information)。此外,FXUA 222 與 FXUB 224 從 進位位元(CA )暫存為239處輸入一「進位位元(carry 理慈 4旧M/04115TW,AUS9-2003-0546(儿) 11 l3〇4548 bit)」。FXUA 222、FXUB 224、CFXU 9卯T。 輸出運算結果(目的地運算元資訊),用以^ U 228 新命名緩衝器234内所選擇的項目重 =,透過特殊用途暫存器處理單元(s^ 與輸入來源運算元資訊以及目的地運算元資訊。· 重新7”器“)2°36以及浮點 輸出運算結果(目的地元資訊; 新命名緩衝器238内所選擇的項目中。 /,,''重 於入22^(L〇ad)指令,LSU 228從資料快取⑽處 ,入貝訊並複製至所選擇的重新命名緩衝器234和238其 中之一。如果資訊沒有儲存在資料快取216中則資料快 取216從系統記憶體239處輸入(透過Bm 212盥系统匯 此資訊。.另外,資料快取216可輸出資訊(透 ,12與系統匯流排211)至連接系統匯流排2Π的 糸統纪憶體239。因應一儲存(store)指令,LSU 228從所 ,擇的GPR 232與FPR 236其中之一處輸入資訊,並複製 負訊至貧料快取216。 一序列器單元218由GPR 232與FPR 236處輸出與輸入 ,訊。分支單元220從序列器單元218處輸入指令與訊 $,以指示出處理器21〇的狀態。分支單元22〇因應此種 指令與訊號,而輸出訊號(至序列器單元218),以指示出 儲存有指令序列的合適記憶位址,以供處理器210執行。 序列為單元218因應來自分支單元220的訊號,而從指令 快取214處輸入所指示的指令序列。如果一或多個指令序 列沒有儲存在指令快取214中,那麼指令快取214則從連 接系統匯流排211的系統記憶體239處,輸入此類指令(透 理慈 4旧M/04115TW,AUS9-2003-0546(JL) 12 1304548 過BIU 212與系統匯流排211)。 序列器單元218因應指令快取214所輪入的指人 指令選擇性地配送給所選擇的執行單元220、222: 226、228、以及230其中之一。每一執行單元會執 多個特定類別的指令。舉例來說’ FXUA 222蛊FXUB 對來源運算元執行第一類的定點數學運算,像是加二 AND、OR,以及X〇R等。CFXU 226對來源運算元 =一' 類的定點數學運算’像是定點乘與除。削23 = 算元執行浮點運算’如浮點乘與除。 “、 由於資訊是儲存在所選擇的重新命名緩衝器234直中 之一,因此資訊會被關聯至一儲存位置(比如GpR 3、 進位位元(CA)暫存1 242其中之一),其係由指令所被指 派的所選_重新命名緩姉來辨識。因應來自序列 元218的訊號,儲存在所選擇的重新命名緩 ^ 之一的資訊’會被複製至相關的GPR 232其中&一。 產生此資訊指令的「完成(completing)」,序列器單元zjg 主導重新命名緩衝器234中所儲存的資訊進行複製。這個 複製動作稱為「回寫(writeback)」。 由於負汛疋儲存在所選擇的重新命名緩衝琴mg豆中 之一,因此資訊係關聯至潰236其中之一。因應來自 列器單元218的訊號’將儲存在所選擇的重新命名緩衝器 238其中之一的資訊,複製至所關聯的FPR 236苴中之一。 因應產生此資訊指令的「完成(e_eting)」:序列器單 ^ 218主導重新命名緩衝器238中所儲存 進 製,以完成指令。 處理斋210藉由在多個執行單元22〇、222、224、226、 228以及230之中’同時處理多重指令以達到高效能。因 理慈 4旧M/04115TW,AUS9-2003-0546(儿) 13 1304548 此,母一才日令疋在一組階段序列(seqUence 对呢的)中 ,而與其他指令的階段是平行地處理。這種技術稱為 「管線化(pipelining)」。在示範實施例中,指令經由6 階的處理,也就是取回(fetch)、解碼(dec〇de)、配送 (dispatch)、執行(execute)、完成(compieti〇n)以及回 寫0 在取回階段(stage),序列器單元218選擇性地輸入 (從指令快取214) —或多個指令,而這些指令是來自儲 存指令序列的一或多個記憶體位址,而更與分支單元22〇 以及序列器單元218有關。 在解碼階段,序列器單元218最多解出4個取回的指 令。 在配送階段,序列器單元218在保留重新命名緩衝器 的項目(entry)給已配送指令的結果(目的地運算元資訊) 後,選擇性地配送最多4個已解碼的指令(因應^碼^段 的解碼工作)給所選擇的執行單元22〇、222、四4、226、 228、以及230其中之-。在配送階段,運算元資訊被提 ,給所選擇接受配送指令的執行單元。處理器21()根據排 疋的次序配送指令。 在執行階段,執行單元執行它們所收到 出結果(目的地運算元資訊),以儲存在重新=緩^ 234 ^ 238所選擇的項目中,如上所述。利用這種方式, ,理器210可以不按照排定的(pr〇grammed)次序來執行指 *7 ° 在完成階段,序列器單元218指示一指令已「 處理器210根據排定的次序來「完成」指人 在回寫階段,序列器單元218主導重新;名緩衝器234 理慈 4旧M/04115TW,AUS9-2003-0546(JL) 1304548 與238的資訊,被分別複製至gpr 232以及FPR 236。序 态單元218主導所選擇的重新命名緩衝器中所儲存的資 §fL,以進行此類複製。同樣地,在一特定指令的回寫階段 中,處理器210因應特定指令而更新其架構狀態。處理器 210根據排定的次序而處理個別指令的回寫階段。處理器 210在特^情況下,可將指令的完成階段與回寫階段合併。 在示範實施例中,每一指令需要一個機器週期 (machine cycle)來完成每一個指令處理階段。不過,還 有些指令(如CFXU 226所執行的複雜定點指令)需要一 ,以上的聊。目此,特定指令的執行與完細段可能會 有不同峡遲,這是gj耻前的指令所需完成的時間不一 樣的關係。 成緩衝器248被提供於序列器單元218中,以追蹤 單兀中所執行的多個指令是否完成。如果接到指示有 一指令或一群指令已成功地完成,依照應用程士所指定的 順序,此時可利用完成緩衝器248啟動傳送上 的結果,給相關的通用暫存器。 一
此外,處理器210也包括效能監測單元240,其連接 J指^陳214錢處理器210中的其他單元。利用效能 監測早元240可監測處理器210的作業,其在此實施例中 種軟體可存取的機制,可以提供詳細的資訊以描述指 々執行資源以及儲存控制的使用量。雖然沒有在圖2中繪 出,然效能監測單元240可連接到處理器210的每一個功 食^元,用以監測處理器210的所有運作,比如說包括重 斤.建立事件間的關係、辨識錯誤觸發(false triggering)、辨識效能瓶頸、監測管線堵塞、監測閒置 處理器週期、蚊配送鱗、決定分纽率、蚊資料存 理慈 4IBM/04115TW,AUS9_20〇3-〇546gL) 1304548 '辨識連續指令的執行鮮、辨識 斷GnhibUed interrupt)、以及決定表現效率。 取未命的時間、指令執行、分支事件、快 效能監測單元240包括計數器241—242(其數量依各訾 3而定,如2至8),計數器標示為PMC1與PMC2,用J ^异所選擇事件的發生次數。效能制單元24()進 /至少一個監測模式控制暫存器(MMCR)。在此例中,右? 去固MMCR 243與244用來標示計數器241一242的功用 =241 -242與MMCR 243-244較佳為做成SPR的形式了 項寫則透過MFSPR (從SPR傳出)與MTSPR (由spR接 ,齡’並由㈣I 226執行。不過,在另一實施合f中收 计數态241-242與MMCR 243-244也可以單純是用1/〇空 ,中的位址來實施。在又一實施例中,控制暫存器與計數 器可透過索引暫存器(index register)來間接地存取。此 一實施例是以英特爾(Intel)公司的IA-64架構來實施。 此外’處理器210也包括中斷單元250,其連接至才t 令快取214。另外,雖然在圖2中沒有繪出,j旦中斷單^ 250可連接至處理器210中的其它功能單元。中斷單元25〇 可從其他功能單元處接收訊號,並啟動一動作,像是啟動 錯誤處理或陷阱程序(trap process)。在這些例子中,中 斷單元250可在執行程式的過程中,用來產^ _斷 (exception) 〇 J^ 本發明可在執行程式的過程中,監測特定指令的執^一 與存取特定記憶體位置。具體來說,有一備用攔位(spa= f ield)可用來容納一指標(indicator),以辨識出此指令 或記憶體位置正被效能監測單元所監測,或是被處理 理慈 4旧M/04115TW,AUS9-2003-0546(JL) 16 1304548 ,其它it件所制中。另外,減可_在其他與指令或 心隐體位置有關的位置。在這個例子巾,指標是^置於指 令通常是制侧攔位,但是树候是延伸指令空間 在這種情況下’處理器的架構可能需要修 t ί架構改成65位元架構來容納指 i的有關時’指™至資料’或資料所 ,3絲縣發明—較佳實補,綱處理與指標有 巧"的兀件。指令快取300接收包裹(bundle)3〇2,指 :快取300是圖2的指令快取214的一個範例,而包裹則 ,指令群。這類的指令群通常可見於英特爾的u—64處理 器’而指令快取300則處理用來執行的指令。 匕做為此指令處理的一部份,指令快取3〇〇會決定那些 $令和指標有關,這些指標在此範例中又可稱為「效能指 ,」。訊號304與效能指標有關,因此,指令所用訊號3〇4 會傳送給效能監測單元306,而效能監測單元3〇6為圄2 中所示效能監測單元240的一個範例。 為圖2 、、當指令快取300確定有與指標相關的指令出現時,會 傳送訊號以I員示有一已標示的指令被執行過了。在這些& ,中,已標示的指令是與效能指標有關的指令。另外,效 旎指標可顯示在包裹内的所有項目或指令已被標示為需 要被計數。另外,這類指令所用的訊號會透過指令快取3〇〇 來傳送給合適的功能單元。而在不同的實施方式下,可使 用效能監測單元306以外的功能單元來計算指令的執行 數。在此,效能指標位於指令/或包裹内,而快取單元(指 令快取300)偵測到指標,並傳送訊號給效能監測單元3⑽。 當效能監測單元306接收到這些指令的訊號,效能監 理慈 4旧M/04115TW,AUS9-2003-0546(JL) 17 1304548 3早^^口异t 304執行時的相關事件數。如圖所 效能監測單元306係以與指令或 的i件數ΐϊϊ义來計算與指令或記憶體位置有關 π,那麵快取3GG所收到的指令沒有效能指 訌ΐ相關的事件不會列人計數。總括來說, ίϊίΐΐ 每—指令鱗—職體位置的 (L果效ί監測單元306係設定為可以計算已標示指令 i iiriructi〇n)的模式,效能監測單元3〇6則計算 ϊίΐί關指令的事件數。在某些情況下,效能監測 ΐίΓίΐί疋為執行其他類型的計數工作,像是計算所 有才曰7的執行次數,這是目前已有的功能。 θ同^存取記憶體位置的資料來說,資料和指標是由像 j 2 Τ示的資料快取216來處理,而非交由指令快取來 傳送的訊號顯示標示的記憶體位置已被效 月匕应測早兀306存取。已標示的記憶體位置和已標示的指 々類似,這類記憶體位置與效能指標有關。 4為根據本發明一較佳實施例,將效能指標與指令 或記憶體位置產生關連的機制的示意圖。處理器由快 取402接收指令’而在此範例中’指標不是存在資料所在 的指t或記憶體位置内,而是儲存在分離的效能操縱陰影 快取(performance instrumentation shadow cache)404 内,匕可以是任何儲存裝置,如系統記憶體、快閃記憶體、 快取或磁碟中。 §處理斋400從快取4〇2接收到指令,處理器4〇〇會 檢查效忐操縱陰影快取4〇4的指令是否與效能指標有關。 18 理慈 4IBM/04115TW,AUS9-2003-0546(儿) 1304548 f存,記憶體^的資料時也會有同樣檢查。在一實施例 一,70整的陰影字元(Sha(J〇W w〇rcJ)會提供給相對應的字 元’而不會影響實際的資料區段。換句話說,處理器働 了以,快取402的架構或組態維持不變。在這些範例中, 疋以子元對子元的映射方式(mapping) 。不過也有別的映 射方式’如每—資料字元有—個陰影位元,而效能操縱陰 景》快取404内的一位元對應一個資料字元。 一以此種架構來說,編譯器(c〇mpiler)利用此特點,為 資料區域在另一分離的工作區域產生除錯資訊,以除錯符 號(symbol)的方式類似。當載入一模組時,載入器(1〇ader) 會準備額外的資訊、效能指標,使得當指令載入至快取4〇2 時,可將其併入效能操縱陰影快取。這些快取區域可能會 混雜的(intermingled),或者是經由標示,或藉由操作模 式來分辨。處理器400使用效能指標來決定相關的資料存 取與指令執行動作是如何計數,或會產生例外情況。在這 些例子中,除錯器(debugger)或效能分析程式 (performance analysis program)會設定一程序,以 了解 在執行指令時,是否要用到陰影資訊。 圖5為本發明一較佳實施例中一包裹的示意圖。包裹 500包含指令槽502、指令槽504、指令槽506以及樣板 (template)508。如圖所示,包裹5〇〇有128位元,每一 才曰令槽有41位元,而樣板508包含5個位元。樣板5〇8 用來標示現階段包裹的結束,並且將指令槽内的指令映射 至不同類型的執行單元。 ' 包衷500内的備用位元用來存放本發明中所提到的指 標’舉例來說,指標510、512、514分別位於指令槽5〇2、 504與506中。這些指標的形式不一,大小也根據特定的 理慈 4旧M/04115TW,AUS9-2003-0546(JL) 1304548 實施方式而有不同。指標可以採用單一位元或多位元的方 式。單一位元可用來指示在執行指令時,此事件會被計 數。而多位元可用來識別一臨界值(threshold),像是指 令執行所用的處理器數目或時脈週期數,會在事件計數之 前被傳送。此外,這些位元甚至可用作特定指令的計數 裔。指標也可使用類似的攔位,以標記資料或記憶體位置。 另外,樣板508可用來容納一群相關指標的包裹,所 以一個位元可用來識別包裹中所有的指令。另外,包裹本 身可以延伸到256位元,或其他的位元數,以便容納效能 指標所用的額外資訊。 圖6A與6B為本發明一較佳實施例的示意圖,說明具 有效能指標的子常式,及具有效能指標的資料。其中圖6A 的子常式(subroutine) 600包含數個指令,而指令6〇2、 6$4、以及606與效能指標有關,這些指令又稱為已標記 指令^。^這些指令被執行時,與指令相關的事件會被計算 以獲得資料,並提供給軟體工具來分析資料處理系統在執 行子常式600時的效能。 匕西貧或包含資料的記憶體位置也可以用類似方式以 指標做標記,而在這些範例中,指標係用來計算存取資料 或圮憶體位置的次數。在圖6B中,資料61〇包含與效能 關的資料。資料612與資料614為資料61〇中與效 月匕指標相關的區段,而這些與指標相關的資料區段同時也 稱為已標記資料。 匕⑨^ 7為根據本發明一較佳實施例,用以處理包含效能 ,標指令的程序之流糊。圖7所示的程序可以應用在指 々快取中,如圖2的指令快取214。 程序一開始為接收一包裹(步驟700),在範例中每一 理慈 4旧M/04115TW,AUS9.20你〇546(jl) 1304548 1 固包表的格式與圖5的包裹500相似。識別包裹内的指令 =驟702)。決定是否有與指令相關的效能指標(步驟 項決定可透過檢查指令或包裹中合適的棚位來達 η。另外,可利用如圖4的效能操縱陰影快取am來檢杳 疋否有效能指標與此指令相關。 一 如果有效能指標,則會傳輸一訊號至效能監測單元 ^驟706)。效能監測單元收到訊號後,將會計算與指令 =仃相關的事件。此外,並處理指令(步驟708)。處理指 々包例如傳送指令至適當的功能單元以供執行。
Pic後,決定包裹中是否有額外未處理的指令(步驟 L Y,如果有的話,程序返回上述的步驟702,不然就結 束程序。回到步驟7〇4,如果沒有效能指標,則接 步驟708。 匕一圖8為根據本發明一較佳實施例,用以選擇性地傳送 才曰々、、、〇中斷早元的程序之流程圖。圖8所示的程序可以應 ,,指令快取,如圖2的指令快取242。這個程序是用在 監單元可能會漏失某些事件的_。糊來說,效 能監測單元計算事件次數。當發生快取未命中的情形時, 傳送一訊,給效能監測單元。當對應的快取線(cache line) 所用的元資料(meta data)被載入快取時,也會發出適當 虎。如果元資料顯示要提出例外情況時,則傳送一訊 號給中斷單元,其中訊號顯示要提出例外情況。 t程序一開始為接收一包裹(步驟800);識別包裹内的 指令(步驟802);決定是否有與指令相關的效能指標(步驟 804)。傳送至_斷單元的訊號,用以顯示要提出例外情 ,,且此與傳送至效能監測單元的訊號不一樣,舉例來 说,指令可能與特定的效能指標有關,此效能指標具有第 21 理慈 4IBM/04115TW,AUS9-2003-0546(JL) l3〇454g 傳1至中斷單元。效能指標的第二數值則 第-數值’則傳送訊號至中斷單元(步二有 收到讯號會啟動合適的呼叫流程支援1 ^ =pp〇rt),以處理此情。舉例來說,呼叫流程支援w ΪΪΐ單元^絲快取内指令缝料時,所發生的快取 議隨包裹巾是时麟未處理_令(步驟 )’如果有的話,程序返回上述步驟8〇2,不然就結束 it _步驟804,如果沒有效能指標’職接進至步 鄉 i5U8 〇 圖9為根據本發明一較佳實施例,因應存取與一效能 指標有關的記憶體位置,用以產生中斷的程序之流程圖。 圖9所不的程序可以應用在資料快取,如圖2的資料快取 246 ° ' 程序開始為識別用以存取記憶體位置的要求(步驟 9〇γ)。因應到識別此要求,決定是否有與記憶體位置相關 的效旎指標(步驟902),如果有效能指標與記憶體位置相 關’則傳送訊號給中斷單元以產生中斷(步驟9〇4),接著 存取記憶體位置(步驟9〇6)後結束程序。 圖10為根據本發明一較佳實施例,用以計算事件次 數,程序之流程圖。圖1〇所示的程序可以應用在效能監 測單元,如圖2的效能監測單元240。 程序一開始為從指令快取接收到一訊號,顯示已經處 理了一個具有效能指標的指令(步驟1000),接著計算與被 理慈 4旧M/04115TW , AUS9-2003-0546(儿) 1304548 ΐίϊϊϊίϊΐ件的次數(步驟_),然後結束程序。 事件擅可儲存在計數n,如圖2的計數器241。 沪八f it根據本發明一較佳實施例,用以選擇性計瞀 ί =流f圖。圖11所示的程序可以應用:旨令; 取,如圖2的指令快取214。 曰7厌 八為決定是付㈣與效魅標相關的指 驟j = ’在此範例中’指標引發處理器計算= i有令的事件次數。另外,指標本身也可以是^ 二用來,示要啟動新的計數模式。如果收到具有指標的 則設定-旗標(flag)以開始計算指令的事件次數 y驟1102)。這個旗獅示賴開料算指令的事件次 數。 ”,/夬定是否已接收到具有指標的指令(步驟 1104),另外,指標本身也可以是指令,用來指示要停止 新的^數模式。如果收有指標的齡,解除旗標以停 止計异指令的事件錄(步驟聰),織停止程序。 步,1100與1104的指標可以是同一個,由指標觸發 旗標的設定與解除。在另—實施例巾,可以使用不同指 標,其中第:個指標僅設定旗標,而第二個指標用來解除 旗標。快取單丨(如指令快取與資料快取)#效能監測單 元之間用以顯示計數模式的通訊,可以簡單地使用一個高 訊號(high signal)來表示開始計數,然後用一個低訊& (low signal)來顯示不再計數。 产圖12為根據本發明一較佳實施例,用以選擇性地計 算指令的程序流程圖。圖12所示的程序可以應用在指令 快取,如圖2的指令快取214。 程序一開始為檢查旗標(步驟12〇〇),決定是否已經設 理慈 4旧M/04115TW,AUS9-2003-0546(JL) 23 1304548 定旗標(步驟1202)。如果已姆机々被描油、、 監測單元,以啟動此單元來外^傳达訊號給效能 著社击叙皮π日丨來计""^事件次數(步驟1204),接 元ί瞀塞杜二教/丰I專送訊號給效能監測單元,以取消單 口十^事件-人數(步驟1206),然後、纟士走敍皮。 後,所,程序是在指令與一效能指標相關 ί來件次數。因此,可以用比較少的位 此與了叫外部子常式::的數,因 ηϋ為根據本發明—較佳實施例’用以識別超過- 令的程序流糊。目13所示的程序可以應用在 才曰々快取,如圖2的指令快取214。 7 οηη、程序一開始為接收與效能指標有關的指令(步驟 ^ 〇〇)。識別指令的臨界值(步驟1302)。在這些範例中, 臨界值與完成指令所需的處理器個數或時脈( 哪le)有關。如果存取快取所㈣快取延^cache l^tei^y)或時間量超過臨界值,則事件會被計算進來。在 這些範例中,臨界值是設定在指標内。 曰「舉例來說,3個位元可以設定8種不同的臨界值,像 是yxxl」=10個週期(cycle),而「χ1χ」=5〇個週期,以 及J?jX」=100個週期。利用這3個位元的一些組合可用 來設^臨界值的數值,實際上也可根據特定的實施方式, 使用較多或較少的位元,或者指定不同的數值。這些位元 =包含的意義也可以透過介面來控制,例如使用一組暫存 态,以設定每一位元的意義。可因應此一特定目的,而將 暫存器加入處理器架構中。 執行指令的週期會被監測(步驟1304)。決定此一指令 是否已經超過臨界值(步驟1306),如果超過臨界值,則會 理慈 4旧M/04115TW,AUS9-2003-0546(JL) 1304548 執$—選擇的動作(步驟1308),所選擇的動作會根據特定 的實施方式,而有不同的形式,舉例來說,每當超過臨界 值則計數器則增加一次。另外,也可產生中斷,而中斷將 控制權交給另一程序以收集資料。比如說,資料可能包含 一呼叫堆疊(call stack)和有關呼叫堆疊的資訊。堆疊是 ,留的s己憶體區域,一或多個程式會在其中儲存狀態資 料’比如說流程(procedure)與功能呼叫位址、已傳遞的 參數、效能監測計數器數值、以及有時候會有本地的變數。 在步驟1310,決定是否要結束監測。步驟υιό可以 一if行一個指令,當已經執行指令或超過臨界值時,則 傳送§fL號。在這個例子中,執行單一指令會送出一個訊 號三如果同時執行多個指令時,可能需要好幾個訊號來顯 不母-指令已被執行。在—些實酬巾,可以翻取樣方 法,其中在一個時點只有一個指令能使用臨界值。這可以 經由僅支援在處理器的指令佇列内一特定位置的指 =。在其他實補巾,如果至少—個已標示指令超過臨 界值,則可傳送—訊號。針對每—個超過臨界值的指 可提出或產生個別的訊號。 如果要結束監測,則傳送收集到的資 龄 ;步,,接著結束程序。否則,程以 1304。在步驟1306 ’如果指令沒有超過臨 古 接進至步驟131G。 柱序會直 類似的程序可以應用於資料快取,如 ,加,以監測記憶體位置的存取動作3圖 ^可用於識別存取記憶體位置的資料所需週^ 憶體位置的資料所需的時3過Λ 的界值時,則加以計數或產生中斷。 寻疋 理慈 4旧M/04115TW,AUS9-2003-0546(JL) 25 1304548 在其他範例中,指標可以被加入至指令 記憶體位置内的次粗袼々^ 口 μ a首疋和 能择㈣^的貝枓放在―起。另卜,這標可位於效 油快取,或者是與指令料侧的記憶體内。 位置i取動==!;較’用以監測記憶體 ? 乍的私序&耘圖,圖14的程序可用於資料快 妒他H的指令快取214,這個程序可用來計算對記憶 體位址中貧料的存取次數。 unnft 一開始為接收與效能指標有關的資料(步驟 定一記憶體位置的資料是否已被存取(步驟 果記憶體位置已被存取,則增加計數器的計數 侧)。決定是否要結束監測(步驟14G6),如果要 ^的話,鱗止程序。酬,回難序1402。在步驟 1402,如果記憶體位置沒有被存取,則程序進至步驟14〇6。 =15所示為根據本發明一較佳實施例,說明用以產 生兀_貝料〇1^乜(13仏)(例如效能指標)的元件之方塊圖。 編譯器(compiler)可支援内嵌於來源的命令,用以顯示要 產生兀身料。編譯器15〇〇可產生執行用的指令15〇2,以 及=於監測,元資料。當齡或資躲取分頁被載入至記 憶體’作鮮統的程式載人11/連結如⑽加/馳⑹ 以及/或者效能監測程式則讀取編譯器15〇〇所產生的元 資料,並且將元資料載人至記憶體中,例如記憶體監測區 段1506。區段本身可標示為元資料15〇4。記憶體可接受 的元資^格式,、可以是效能監測區段15〇6内編譯器產生 的區段資料格式,並且將資料填Μ部的效能操縱陰影快 取,以下描述與圖17相關的動作。 ,在-個實施例中,格式的每_個區塊(bl〇ck)或區段 對照(sector reference)具有一個效能操縱陰影快取的項 理慈 4旧IW04115TW,AUS9-2003-0546(儿) 26 1304548 目(entry),並且將元資料15〇4搬移(move)至相對應的陰 影快取項目中。快取本身的内建格式也可修改為包含元資 料1504,而不會使用到效能操縱陰影快取。在指令流本身 包含元資料的實施例中,載入器(l〇ader)會更新指令流, 以包含合適的指標以及工作區域,或編譯器15〇〇會產生 包含元資料1504的程式碼。不論在那種情形下,一旦載 入程式碼後,處理器就會接收到元資料丨5〇4。 此外,元資料1504可以放在與指令15〇2相關的效能 操縱陰影記憶體1505中,編譯器1500產生的資訊放在表 (table)中或除錯資料區段(debug data section),由效 能監測程式載入資訊至效能操縱陰影快取15〇5的陰影資 料區域。另外,也可由作業系統和處理器共同合作,自動 地將資料放入除錯區域。 接著可以由處理器1508來執行指令1502,編譯器 1500可在處理器1508中設定一個暫存器,如模式暫存器 (^iode register)1510。在有設定暫存器的情況下,處理 恭1508在執行指令1502時,會檢視位於效能操縱陰影快 取1505内的元資料1504,以確定元資料15〇4中的指標是 否與被執行的指令1502有關。這些效能指標是由程序加 以處理,可參考上述的圖2至14。如果未設定模式暫存器 1510 ’則執行指令15〇2時會忽略元資料15〇4。 記憶體位置1512内的資料也可用類似的流程執行。 ,照特定的實施方式,元資料15〇4可以放在指令内或資 料p丄而不是放在效能操縱陰影記憶體15〇5内。不過,、 把兀資料1504放在效能操縱陰影記憶體15〇5,可動能 地產生元資料1504。 乂動心 這個特點可以在不用修改程式的情況下,進行指令的 M4IBM/04115TW , AUS9.2003-0546(JL) 1304548 選擇與監測。換句話說,可以在指令1502經編譯以供處 理器1508執行之後,編譯器1500再產生元資料15〇4。設 疋模式暫存器1510可以讓處理器1508檢視效能操縱陰影 記憶體1505内的元資料1504,而不用修改指令1502。在 這些範例中,元資料1504係為效能指標的形式,以告知 處理器1508如何執行指令1502以及/或者存取記憶體位 置1512内的資料。 " 圖16說明本發明一較佳實施例中所用的元資料。元 資料1600為圖15所述之元資料1504的一例,元資料是 由編澤器’像是編譯器15〇〇所產生。 在這個範例中,元資料1600包含5個項目1602、 1604、1606、1608,以及1610。在此範例中,元資料1600 中如程式碼1612所示,每一個項目包括一個偏移量 (offset)、一個長度(iength),還有一個描述程式碼使用 方式的旗標。 項目1602具有〇偏移量和120位元組(byte)的項目 長度。旗標1614顯示在項目長度1616範圍内的所有指令 都要被記數。在這些範例中,每一指令具有4位元組的長 度。項目1604具有4位元組的項目長度,其對應一個指 令。旗標1618顯示在執行此一指令時應該要產生一例外 (exception)。 在項目1606中,偏移量為16〇位元組的指令會與旗 標1620相關聯,而此旗標則顯示如果超過臨界值(1〇〇個 週期)的指令會被計數。 項目1608内的旗標1622顯示應該對具有256位元組 $移量的指令開始追蹤,而項目161〇内的旗標1624顯示 停止追縱,而其中指令的偏移值為512位元組。 理慈 4IBM/〇4115TW,AUS9-2003-0546(JL) 28 1304548 這些旗標可用來產生與指令相關的效能指標。作業系 統移動編譯器產生的元資料,並且將元資料放進效能操縱 陰影記憶體内處理,如圖15的效能操縱陰影記憶體1506。 另外,元資料也可放進指令内的欄位,視特定的實施方式 而定。 圖17為本發明一較佳實施例中,用於載入和維護效 能操縱陰影快取所用的元件示意圖。在此範例中,現有的 快取1700具有主要區段(primary segment)1702。主要區 段 1702 具有區塊 1704、1706、1708、1710、1712、1714、 1716、1718、1720、1722 ’ 以及 1724。解譯表(translation table)1726係用來將主要區段17〇2内的區塊 1704-1724 ’對照至效能設置(perfinst)區段1728内的區 塊。在此區段内的資料會被放至新的效能操縱陰影快取 1730 〇 在程式編澤期間’編譯器會產生一個新的效能工具資 料區段。在程式載入期間,載入器查詢處理器以決定快取 線大小。載入器分析(parse)效能設置區段1728,並根 據處理器要求的格式架構一個陰影區段,提供給載入器所 載入的任何文字或資料區段。此一陰影區段會被放至新的 效能操縱陰影快取1730。 在每一個陰影區段内的區塊包含元資料,用於對應的 主要快取區塊内的指令或資料。元資料包括,比如說,在 主要區段1702的區塊内每一標籤項目(tagged item)的旗 標、標籤攔位(tag field)、臨界值與計數攔位。元資料 同樣也可包含一個旗標,用以代表區塊中所有的指令或資 載入态為主要區段1702内的每一區塊建構一個對應 理慈 4旧M/04115TW,AUS9-2003-0546(JL) 29 1304548 表,也就是轉譯表1726,對應至相對的效能設置區段的區 塊’比如說區段1728内的區塊1732、1734、1736、1738、 1740、1742、1744、1746、1748、1750、以及 1752。此外, 載入器記錄此對應表的表頭(轉譯表1726),以及主要區段 1702的位置與大小予處理器。 在分頁置換的期間’分頁軟體(paging software)提 供新的介面,以便將效能設置區段1728與對應的主要區 段1702取得關連性,當主要區段17〇2將分頁移進或移出 時(pages in or out),區段1728也同樣的將分頁移進或 移出。 在快取線置換的期間,處理器具有新的效能操縱陰影 快取1730,以及直接與現有資料與指令快取(如現有的快 取’〇)相關聯的快取框(cache frame)。當處理器的指 令或資料快取載入新的快取線時,此快取同時必需將相對 應的效能設置區塊載入至新的效能操縱陰影快取173〇。處 理器看到的是(在程式載入時由載入器所提供的暫存資 料),處理器將區塊載入快取中,而快取具有相關的效能 設置區段,如效能設置區段1728。處理器檢視與此區段相 關的轉譯表1726,為即將載入的區塊找到一個對應的效能 設置區塊,並將效能設置區塊載入新的效能操縱陰影快取 1730。在這些範例中,與元資料相關的快取未命中並不會 被特別標示,也不會和主要快取區塊(如主要區段17〇2) 的資料所發生的快取未命中有不一樣的處理方式。 圖18為根據本發明一較佳實施例,用以產生指令所 用的元資料的程序之流程圖。圖18所示的程序可以用效 能監測程式來實施。 程序一開始為識別要用來描繪(profiHng)的指令 30 理慈 4旧M/04115TW,AUS9-2003-0546(JL) 1304548 :驟18GG) ’舉例來說,此指令可以是被執行超過一選擇 的指令。會產生已識別的指令的元資料(步驟18〇2)。 ,資料採取效能指標的形式,而舉例來說,效能指標可在 母次指令被執行時遞增計數;執行指令所需的週期數目超 過-臨界值時則遞增計數;計算是在這織令後所有指令 ,所有事件次數;或計算@應指令執行而發生的事件次 數。在較佳實施例中,計數器位於相關的效能操縱陰影快 取内,並且需要用到數個位元,讓快取内的資料或指令, 以及保留給計數用途的位元之間,可以具有一對一的 應。 、 m接著讓元資料關聯至指令(步驟1804),然後決定是否 還有更多要處理的指令(步驟1806)。如果有額外的指令, 則程序回到步驟18〇〇,否則就結束程序。另外也可利用相 似的私序來動態地產生記憶體位置内資料所用的元資料。 圖19為根據本發明一較佳實施例,用以產生記憔體 位置所關元資料的程序之絲圖。目19的程序可^利 用像是圖15的編譯器1500來實施。 耘序一開始為識別要用來描繪的記憶體位置(步驟 1900),步驟19〇〇是因偵測到已標記位置的存取動作而發 生^在步驟1902中,為已識別的記憶體位置產生元資料", 元資料採取效能指標的形式,而效能指標可以在每次記憶 體位置被存㈣遞增計數;或存取記鋪位置所需的週^ ^目超過一臨界值時則遞增計數;或者是計算所有存取記 =體位置的次數。接魏元資侧聯至記鐘位置(步^ 4^,然後決定是否還有更多要處理記憶體位置(步驟 1906),如果有額外的指令,則程序回到步驟19〇〇, 就結束程序。 、 理慈 4旧M/04115TW , AUS9-2003-0546(JL) 1304548 圖20為根據本發明一較佳實施 的=之流程圖。圖2〇所示的 在才曰7决取,如圖2的指令快取214。 器是指令(步驟2_,接著決定計數 曰it?(步驟2〇〇2)。計數器可以包括在指μ =關,則增加計數器的計數(步驟㈣,並 =’則不增加計數器的計數並結束程序 過臨界值,_數n可齡被纽。科數盗超 計ί器,在^中時,則其大小會有限制。在此 ί時候合定一 τ界值’用以顯示計數器什 刀圖貝μ 用應用程式介面(api)來存取資料。 圖21為根據本發明一較佳實施例,用以 憶體位置存取次數的程序之流麵。圖21 。二 3用在指令快取,如圖2的資料快取216與指^快^ 程序一開始會偵測對一記憶體位置的存取 ΐί,巧/是否與記憶體位置相 2102)。计數盗可以包括在記憶體位置中,或 能操縱陰雜取。如果計數H與記髓位置 === 計數器的計數(步驟2104)並結束程序。若否,則j e = 數器的計數並結束程序。 ⑷不牦加计 圖22所示為本發明一較佳實施例中,用 執行指令或存取記憶體位置的資訊的元件。在此J f關 指令單to 22GG執行指令22G2並增加計數器22Q4 =十數。 理慈 4旧M/04115TW,AUS9-2003-0546gL) 32 1304548 每執行指令2202 -次,就增加計數器一次。在此範例中, 指令單元2200可以用圖2的指令快取214實施。 當指令或資料快取分頁(pages)被載入記憶體時,作 業系統的程式載入器/連結器(loader/linker)以及/ 者效能監測程式會讀取編譯器所產生的元資料,並且定 計數是與指令或㈣存取有關,接魏人程序(丨⑽ P騰ss)會配㈣料區域,輯持計數驗於效能設置 ^perfnist)區段内。計數器的大小與資料存取的精細程度 (granularity)會決定要配置多少工作區域。 、單關子中,存取資料或指令的精細程度可 J^字?別、(所以讀取字元_任何位元轉可視為-二人存取)’而計數也可是一個字元大小。在此例中,主 區又與效置區段之間存在著—對多的對映關係(不一 定,-整個字元來包含計數或臨界值)。載人程序配置一 陰f彡分頁:並且告魏伽陰影分妹容納計 &三照關係的細節已於圖17中說明。處理器的快 維持—個陰影區塊項目,以指示對應的分頁要容納 椒個儀_她的支援程度 ,另施财’編譯㈣置卫作區域以便保持計 J,並亡顯示這些工作區域在所產生的資料區域内的位 叙:m内的項目可以指示資料的開頭、資料的位元組 貝料的精細程度、計數區域的開頭、以及每一 ,的精^程度。在上述任—狀況下,處理器載人元^料並 料填充其内部(陰影)快取。在圖示的實施例中, i" 'ri身經修改以容納4料’接著由載人器更新指令 μ以〇s合適的指標和工作區域,或者是由編譯器產生包 理慈 4IBM/04115TW,AUS9-2003-0546(JL) 33 1304548 ,在載入程式碼之 含元資料的程式碼。在任一種情形下 後5處理态就會接收到元資料。 …ί料f元2206可以用圖2的資料快取咖實施。在 t例中,母一個時間資料2208被存 遞增^數。資料謂與計數器2210都放在^ f ίη。在运些例子中’可以採用一個稱為
KeadDataAccessCoimt (RDAC)的新指令,它可以取得資 址以及暫存H ’並且把與=#料她有關崎數放進暫 存裔。 ,行指令與存取資料等事件都會讓計數器增加計 數^本發明的機制提供一個硬體介面2212以存取收集到 的=料,在範例中,硬體介面2212為作業系統2214 ^應 用程式介面(API),如此一來,分析工具2216可以從計 數态2204與2210取得資料。分析工具2216可以有各種 不同的形式,比如說Linux系統所用的全系統描繪工具 Oprofile。儘管在圖22是以一個介面連接至指令單元以 及資料單元,不過硬體介面2212也可用來存取處理器内 其他單元的資訊。舉例來說,硬體介面2212可具有1個 API,用來存取位於效能監測單元内的計數器的資訊,比 如圖2中效能監測單元240内的計數器241與242的資訊。 圖23所示為本發明一較佳實施例中,用以自主性地 修改程式内的程式碼,以便選擇性的計算或描繪程式碼區 段的元件之方塊圖,其中描纷工具(profiler)23〇〇是程 式,像是tprof,可用來識別如程式中的高用量程序,例 如程式2302。在範例中,「tprof」是一個計時器描繪工具 (timer profiler),包括在 IBM 公司的 AIX(Advanced
Interactive Executive)作業系統中。此程式由一計時器 理慈 4旧M/04115TW,AUS9-2003-0546(JL) 34 1304548 所啟動後開始祕。當計時n停止,tprof會酬所執行 的指令。tprof是一種CPU描繪工t〇〇1), 可用於系統效能分析。此工具屬於分析工具的一種,並且 採用取樣肋,包括町的麵:藉由時間姐能監測計 數器定期情祕;決较巾斷的程式碼的位址,以及程 序名稱(process id,pid)與執行緒名稱(thread id tid”在軟體追蹤緩衝器内記錄一個TpR〇Fh〇〇k ;回到受 中斷的程式碼。 另外,也可以用效能監測計數器的一個固定數目的計 數值來取代計時器。這個程式會描繪(profile)子常式 (subroutine) ’以用來顯示時間是花在程式的何處。如果 程式的用量超過一定的臨界值,則可稱為「熱門(h〇t)」。 利用描繪工具2300所提供的資訊,可以識別程式23〇2中 欲調查的常式(routine of interest) ’如子常式2304。 藉由此資訊,子常式2304内的指令可以經由分析工 具2306自主性地修改,以便計算子常式2304的執行次 數。分析工具2306可以識別其他額外的常式並加以修改, 舉例來說,子常式2304是欲調查的常式,而它的指令可 經由修改,以計算此子常式2304的執行次數。修改常式 的程式碼包括讓效能指標與每個這類子常式中的一或多 的指令產生關連。 當分析工具2306修改過這些常式内的指令,接著由 處理器2308執行程式2302,處理器2308則執行程式2302 並提供這些常式的計數,舉例來說,處理器2308可以用 上述的機制計算已執行的指令以及執行常式所用的週期 數目。 圖24為本發明一較佳實施例中,用以動態增加或連 理慈 4旧M/04115TW,AUS9-2003-0546(JL) 35 1304548 結效能指標盘—扣人 用像是圖23、的分^工=程圖。圖24中的程序可以 才,用以取得m=實施。分析I具是一種程 的ΐίϋ何可量測的參數,像是執行時間、 式 量 行的常式、已執行的胜二壮ΓΤ双…冬疋机仃時間、已執 程序-開始為利二:η,已,,的,憶體位置。 別欲調查的指令工的資料來識 計時器描心二:= j V驟2404 ’要將指標加人指令也可以不用修改指令 1C:而疋彳木用效能操縱陰影記憶體來放置效能指標 (如圖15的效能操縱陰影記憶體15〇6)。在此情況下,在 内可設定一暫存器,用以顯示在執行指令時,應該 要檢查效能操縱陰影記憶體是否有效能指標。 步驟2406中,決定是否有額外已識別的指令要修改, 如果有額外的指令要修改,則程序回到步驟2402,若否, 則結束程序。 圖25為本發明一較佳實施例中,透過連結效能指標 與一分頁内的指令,以掃瞒分頁的元件示意圖。本發明的 機制使用效此指標’來進行指標操縱(instrumenting)或 修改,每次在程式中一個分頁(page)。 在此例中,程式2500包含三個分頁,即分頁2502、 2504、以及 2506。掃瞎常駐程式(scanning daemon)2508 將效能指標關聯至程式2500内的指令,每次一或多個分 頁。舉例來說,在分頁2502内的指令可藉由掃瞄常駐程 式與效能指標取得關連。接著處理器2510執行程式2500, 36 理慈 4旧M/04115TW,AUS9-2003-0546(JL) 1304548 執行程式2500所得的資料會被收集起來。舉例來說,資 料包括有因應分頁2502内指令所發生的事件次數、分頁 2502内每一指令執行的次數、以及/或者識別拜訪分百 2502的次數。 、 接者’知瞒常駐程式可能會移除分頁2502内的指令 的效能指標,並且讓效能指標與分頁2504内的指令取;^ 關連。接著處理器2510會再一次執行程式2500,而執行 程式所得的資料會被收集起來。然後,分頁2506内的指 令在程式2500執行時會被修改,以便收集分頁上的資料。 如此一來,通常沒有被程式(例如計時器描繪工具) 所記錄的常式使用量也可以被辨識出。計時器描繪工具不 會記錄某些常式的用量,因為其可能無法中斷,或者是因 為取樣的時序(timing)可能會造成同步的非隨機行為 (synchronous non-random behavior)。藉由修改程式 2500 的才曰令,便可以計异常式或其他模組的次數,其中計數不 會受到影響’而糸統也不會受到擾亂。這樣的方式,可避 免以中斷方式來計數。此外,儘管操縱程式碼為一次一個 分頁’但也可用其他指令群組(gr0Uping 1η3Ϊηισΐ^〇η3) 來掃瞄程式,像是程式中的模組。舉例來說,群組可能是 單一可執行程式、程式庫(library)、一群被選擇的函數、 或者是一群被選擇的分頁。 圖26為本發明一較佳實施例中,將指標加入一分頁 内指令的程序流程圖。圖26所述的程序可以用程式實施, 如圖25的掃瞄常駐程式2508。 首先,識別一組選擇的分頁(步驟2600),在此例中, 這些分頁是程式中需要掃瞄或操縱的;接著選擇這組分頁 中的一個分頁以進行修改(步驟2602);而後將指標關聯至 37 理慈 4IBM/04115TW,AUS9-2003-0546(JL) 1304548 所選擇分頁中的所有指令(步驟26〇4) 驟·);然後判定這組分頁中所有的/頁步 過(f驟纖),如果都已掃i則結束程序。但it 2不二(斤有都已掃瞄過,則選擇下-個分頁(步ί 2610),並且程序會回到步驟26〇4。 =6所示的程序將指令群組以分頁顯示,而在 的實,例下’其他型態的指令群組,比如組成程式的g 、、且,也可以用同樣方式掃瞄或操縱。 -stad°的資訊中’—程式識別來自 ^的呼叫者(eaUer)。此—程式可_常式中所發生 的=牛’並藉由識別已經發出的函數呼叫(functi〇n ca ’提供巾的所發生事件的概要。不過這個程 舄要用到内嵌於程式碼的指令,才能獲得此資訊。 本發明的機制可以識別呼叫和回傳,而不用執行特殊 的程式碼操縱。尤其是,在特定的一組指令上產生中斷的 函數也可以用來蒐集系統與應用的資訊。在範例中,用以 呼叫回傳的指令,係與產生中_效魅標有關。 —藉由重新回到呼叫堆疊,可以取得整個呼叫堆疊以進 行分析。「堆疊巡視(stack walk)」也可稱為「堆疊倒回 (stack unwind)」,而「巡視堆疊(walking the stad〇」 也可描述為「倒回堆疊(unwinding伽stack)」,每一個 術5吾都代表了程序中不同的象徵(metaph〇r)。當程序必須 依次依循步驟或框(frame)來取得並處理堆疊框(stack frame)時,程序可被視為「巡視中(walking)」。當程序所 取付與處理的一個指向另一個的堆疊框時,此一程序也可 描述為/倒回中^^以呢^並且指標④以时⑹和它 們的資Λ必須透過峰多指標指示反參照(pointer 理慈 4旧M/04115TW,AUS9-2003-0546(JL) 38 1304548 dereference)來進行「倒回」的動作。 在中斷時,堆疊倒Θ | > η/ (i , . / Λ 1 胃依照函數/方法呼叫
(funcWmethod calls)的順序來 :J 5有:指,執行。啤叫堆疊是有:欠= (offset)。舉例來說,如果f式A 式^ 2 BJTt式C,並且理器正在執行常式c中的=吊時式 麻H豐ί。當常式C將控制權交回給常式B時,那 ^呼叫堆豐為AB。為了驗的表示以及方便在報 譯:式名稱通常沒有加上任何偏移量的資訊 程式的執行情形’但是接下來並不考慮有 η因此,在帽處理或者是由特殊效能赫有關的指令 處理工作中’所產生的取樣式輪廓檔案資訊 (sample-based profile information)會反映出呼叫堆聶 的取樣,而不像某些程式計數器取樣技術,僅提供可能ς 呼叫堆疊的葉點(leaf)。在此所指的葉點是分支的端點, 也,是沒有衍伸(descendant)的節點。衍伸點為母節點的 子節點,而葉點則是沒有子節點的節點。 田圖27為根據本發明一較佳實施例,用以描述包含堆 璺框的呼叫堆疊示意圖。「堆疊」就是保留的記憶體區域, 以讓一或多個程式來儲存狀態資料,如流程和函數呼叫位 址、已傳送參數、有時候也有本地的變數。「堆疊框」是 一個執行緒的堆疊的一部分,代表本地儲存的單!;函數呼 叫(function invocation)(如引數、回傳位址、回傳數 值、以及本地變數)。每一個使用中的執行緒可以使用一 部分的系統記憶體以配置其堆疊空間。執行緒的堆疊包含 aM4IBM/04115TW » AUS9-2003-0546(JL) 39 1304548 二序列的堆·。在執行緒堆疊上的框組代表在任何時間 ’此執行緒的執行狀態。由於堆疊框一般來說是互相連 〜,(例如,每個堆疊框指向前一個堆疊框),通常可以 =溯序列堆豐框,以便找出呼叫堆疊。呼叫堆疊代表所 ^尚,完成的函數呼叫—換句話說,它反映在任何時點 的函數呼叫序列(function inv〇cati〇n sequence)。 呼叫堆疊270()包含的資訊’可朗目前正在執行的 吊式、啟動它的常式,諸如此類,一直連到主程式。呼叫 堆疊2700包含數個堆疊框27〇2、27〇4、27〇6、以及27〇8。 在所^的範例中,堆疊框2702是在呼叫堆疊27〇〇頂端, ^堆疊框2708是在呼叫堆疊2700底端,呼叫堆疊頂端也 可稱為「根(root)」。大多數作業系統都有的中斷 (1 nterrupt)被修改以獲取已中斷執行緒的程式計數器數 值(J)cv),以及一指標,以指到此執行緒現在正在使用的 ^豐框。在Intel的架構中,通常是以暫存器的内容來表 不·· E—IP (程式計數器)以及EBp (指向堆疊框的指標)。 田藉由存取現在正在使用的堆疊框,就可以發揮(傳統) 堆:£框連結規則(Hnkage conventi〇n)的優點,以便將所 有的框連結在一起。在標準的連結方式中同樣也有規定, 函,回傳位址剛好放在已啟動函數(inv〇ked functi〇n)的 堆宜,之上,這也可以用來確定已啟動函數的位址。儘管 在,疋以Intel架構為例,但是本發明不在此限,大多數 =架構採用連結規則,也可以利用修改過的描繪中斷處理 器(profiling interrupt handler)來瀏覽。 當中斷發生時,所取得的第一個參數為程式計數器數 值,^個數值是一指標,指向已中斷執行緒的現行堆疊框 的頂端。在所述的範例中,此數值會指向堆疊框27〇8的 40 理慈 4IBM/04115TW,AUS9-2003-0546(儿) 1304548
EBP 2708a。接著,EBP 2708a 指向堆疊框 2706 的 EBP 2706a,然後指向堆疊框2704的EBP 2704a,然後是堆疊 框 2702 的 EBP 2702a。EIP 2702b 至 2708b 位於堆疊^ 2702至2708中,用以識別呼叫常式的回傳位址。這些常 式可透過這些位址來識別,因此,藉由在堆疊上巡視了或 倒回,以收集所有的回傳位址,就可以定義常式。 B立在某些情況下很難取得完整的呼叫堆疊,因為在某些 中可能不易追縱,比如說—個具有呼叫堆疊的應用程 :呼叫具有另一呼叫堆疊的核心(kernei)。本發明的 制所提供的硬體支援避免了這一些問題。 呼叫發明—較佳實補,贱識別有關於 來集實施圖28所述之流程可,如^ 哞叫r叫與喃旨令㈣麵),用於 有常一曰:也疋用來決定程序在何時有被呼叫還 系統哞叫,以及系統呼叫發出的回傳等。得 mi讓效月匕才曰標與已識別的呼叫以及回傳指令取 ί測單匕收隼32丄然後執行程式(步驟2804);從效能 以S:集結束程序。收集資訊 用氺物π Γ 的硬體介面2212進行,其中API可 中不同的功能單元所收集的資料。 用爽m便可識別出常式的哞叫者。此一資訊可 呈現血執要追蹤的樹狀結構(tree),並且 的程資=構利用類似於分析工具所提供 M4IBM/04115TW,AUS9.2003.0546(JL) 41 1304548 —严29為根據本發明一較佳實施例,當指令已超過限 疋執行次數,用以識別常式的程序之流程圖。圖洲所述 J程序可以利用處理器内的-個功能單元,例如圖2的指 々快取214來實施。此㈣可縣_已執行的指令的次 數,然後在這些指令的發生次數超過一定次數後,產生一 中斷。 首先,決定是否有偵測到所選擇的指令被執行(步驟 290〇2,這是藉由檢查每個已執行指令,看看指令是否和 一=效能,標有關來達成。效能指標可以透過不同的工具 與才曰令取得關連,例如透過圖15的編譯器15〇〇或圖22 的分析工具2216。 如果有個包含效能指標的指令已執行過,卻沒有被識 別出來,程序會回到步驟29〇〇,直接偵測到所選擇的指令 ,止。如果所選擇的指令已被識別為已執行過,具有已設 定的臨界值的計數H會增加計數,以便計算特定指令的執 行頻率(步驟2902)。在這些範例中,每一個受監測的指令 都有指派的計數器。 接著,決定是否已經達到所設定的臨界值(步驟 2904)。臨界值是事先藉由所記錄的快取未命中次數 ^每一快取階層相決定。不過,增加的次數制來判定 快取干預(其他處理器存取)所造成_題。重複以 數值執行可用來識別效能最差的區域。 在這些範例中,指令可與一個指標相關,而其中指椤 包含-指示,表示有監、令的執行,以及提供計數^ 此外,計數的規則可用來識別中斷何時會產生,舉^ 說’當指令已經執行超過13次的時候,可產生中斷。 如果沒有超過臨界值,程序回到步驟29〇〇,若已到達 理慈 4旧M/04115TW,AUS9-2003-0546(vJL) 42 1304548 臨界值,則傳送中斷給監測程式(步 接 所得到的;f可用。途’而從這類計數 財碼產生的· g)整在處珊的齡架射有核的提稍膝於 ,者的程序流巧。 得來識別常式中的呼叫,也 接菩堆疊與常式的呼叫者(步驟3000); ϊϊί 榻取指令執行的計數(步驟3002),所得的 i中斷计數器;接著重設計數器(步驟3004); 步驟_6) °在圖30的程序中所得的資 ^者'。s、卿外財式,肋遞迴地制而識別常式的 指令^ίΐί本Ϊ明—較佳實酬’所選定要監測的 A二二靶圍的不思圖。在此例中,程式3100包含指 Ζ =與顧,每—個都已被識別為監測的對象, 圍$定在—個指令單元,像是圖2的指令快取 共211母Γ個細係用來告訴處理11在—範圍内執行 ιϋ 有在執行程式3100時進入一範圍的次數。 此外’抵圍暫存器(range registers)麵可用來決定一 理慈 4旧M/04115TW,AUS9_20C^DMeyg 43 1304548 選定類型的指令是否已被識別供執行用途。 、識別指令的類型的方式係利用範圍暫存器_ 外或不_機制’其巾有個機制是使職令符合暫存哭 (IMR, Instruction Match Register) (mas°k) 來識別指令巾的位元’而它們必須符合特定數值,或 識別無關數值的位元’這些位元也可稱為「不須理會的位 7〇(d? not care bit}」。另-個替代方法是使用—個 碼(opcode)或指令類型的清單,其中可利用指 (mdicator)來識別那個指令係與範圍暫存器31〇8共運 作0 < 知々快取3106使用範圍暫存器31〇8來定義指 ,,這些暫存ϋ可能是處理H原有的暫存器,或者是修改 處理器以包含這些键H以絲齡範 ^ 令的,來定義,此外,範圍暫存器_ •錯程式和效能οι具加蚊彡。 队谷樘除 如果指令在-範圍,如指令範圍31〇2或31〇 1 ’則增加指令快取3106中的計數器的計數,另 監測單元,像是圖2的效能監測單元240。 蹤在範圍内,指令執行的次數,還有進入 才曰々靶圍的次數。此外,識別在範圍暫存哭 —μ 圍=巧=型=指令絲31“= if 在此例中,中斷單元執行程式碼,以完成有 關才曰々计數、指令的呼叫堆疊識別與分析, 關分析工作等的程序。 有疋/、他相 %,作也可㈣謝輯方式監測,舉例來 的次數和計算執行指令範圍或31G4内的ί =次數 理慈 4旧M/04115TW,AUS9侧3-〇546(儿) 44 1304548 類似’這些範圍可以位於資料單元,如圖2 財,而資料範圍可以枝為暫存11體 位置的範圍。 圖32為根據本發明一較佳實施例,在一設定範圍内 用以計算拜訪次數與指令執行次數的程序流程圖。圖32 所^之程f可以利用指令單元,例如圖2的指令快取214 施。14個程序在-個指令位址範圍内,可用來識別特 疋或選定類型的指令的執行動作,舉例來說,此一程序可 用來處理一個指令範圍内的分支指令的執行動作。 曰首先,識別要執行的指令(步驟3200);接著決定指令 是否為所選擇的類型(步驟32〇2);利用範圍暫存器以外 的^存器組内的指標或一遮罩組(mask set),可識別指令 型悲’而遮罩或指標就可时決定指令是否為所選擇的類 型。所選擇的類型可以是,比如說分支指令。在範例中,、 所選的分支可用來識別路徑流動(pa^ ,因此是重 點所在、。呼叫與回傳也可鱗類為可絲_並加以處理 的指令類型,因為這類指令可以識別函數以及/或者子常 式。其他可歸類為所麵的類型的指令,是與記憶體存取 有關,特別是重複的指令,比如說字串遷移(string move)。 oow因此,決定指令是否在一設定的指令範圍内(步驟 3204)二此時可以檢查定義一或多個指令範圍的暫存器, 以^出範圍。在這些例子中,設定的指令範圍可提供給某 些私式碼群組(gr〇Uping 〇f c〇de),比如說子常式、程 庫,或者是軟體模組運用。如果指令不在設定的指令範 内,程序回到步驟3202,如果指令在設定的指令範圍内, 則傳送訊號給中斷單元(步驟32〇6)。 在步3206,本發明提供一個方法、裝置與電腦指 理慈 4旧M/04115TW,AUS9-2003-0546(JL) 45 1304548 ί:理指令。在資料處理系統的處理器的指令快取 二,收到-個需要執行的指令,決妓否有 二ίίϊ令是否屬於指令範圍内的特定“疋 型,貝且指令屬於指令範圍内的特定類 出==遞ί:斷單元以執行程式碼,用以處理已發 中斷’程式碼可以簡單地計算指令執行 疊資訊,提供指令使用。接著, 回到步驟3204,如果指令沒有在設定的範圍 3200。在步驟·,若指令並非所選擇= i則程序同樣會回到步驟3200。 、 j料也可運__處理对,在這種實 則,處理所選擇的資料類型,比如說存取未對齊的資二 兀(unaligned data word)。 因此,本發明提供改良的方法、裝置和電腦指令 :测程式執行時提供協助。本發明的機制包括採理哭 看得懂的減,以便計算與指财關的指令的執行次數: ^上描述了各種透過此一機制,用來計數的方法。此 藉由將指標與特定指令關連的方法所取得的資訊,可以讓 本發明的機制在監測與分析程式的效能時,提供各種 的=整方式。此外,如上所述,程式可自動調整,在不修 改程式的情況下,可監酬選擇的指令,甚至是常式和^ 組0 、 ^要注意的是,儘管本發明已經以完整功能的資料處理 系統加以說明,一般熟悉此技藝者應當可以了解本發明的 理慈 4IBM/04115TW,AUS9-2003-0546gL) 46 A304548 舰或其他各 ======媒 =編碼的格式,在特定資料二統=用可;= 中使用 £::¾ 用Χ^ΐΐΓ許多修正與變化。舉例來說,除了使 心袤中的—個攔位,也可以利用—個新的指令或 麵,碼(operation code)來顯示後續的指令、或指 示的指令。同樣的,本發明賴的處理雜構可 交更而納入額外的位元,這樣就可以解決在指令攔位中, 沒有多餘攔位可以放置效能指標的問題。同樣地,儘管本 發明中曾提出像是執行指令,還有執行指令所需的時間, 如時脈或處理器週期,以及像是存取資料所需時間,與輸 入一,式碼區段等事件範例,這些並非用來限制本發明可 以计异的事件類型。任何與執行指令或存取記憶體位置有 關的事件,都可以利用本發明的機制加以計數。 以上所選的實施例是用來解釋本發明的原則以及盆 實際的應用,並且讓其他熟悉此技藝者了解本發明,以& 在其他所考慮的用途上’以各種改良方式達成各種不同的 實施例。 【圖式簡單說明】 理慈 4IBM/04115TW,AUS9-2003-0546(JL) 47 1304548 其中 圖 丄ΐΐΐ本發明的資料處理系統的方塊-, 系統的方姻; 實關収處理#料的處理 器 圖3為根據本發明一較佳實施例, 指令的圖示; 圖4為根據本發明一較佳實施例, 憶體位置產生關連的機制的示意圖 以元件處理與指標有關 將效能指標與指令或記 圖5為根據本發明一杈佳實施例中包裹(bundle)的示意 ^ 6為本發明一較佳實施例中包含效能指標之子常式的示 意圖; 圖7為根據本發明一較佳實施例,用以處理指令的程序 流程圖,其中包含效能指標; 圖8為根據本發明一較佳實施例,用以選擇性傳送指令給 中斷單元的程序的流程圖; 圖9為根據本發明一的較佳實施例,因應存取與一效能指 標有關的記憶體位置,用以產生中斷的程序的流程圖; 圖10為根據本發明一較佳實施例,用以計算事件的程序 的流程圖; 圖11為根據本發明一較佳實施例,用以選擇性計算指令 的程序的流程圖; 圖12為根據本發明一較佳實施例,用以選擇性計算指令 的程序的流程圖; 圖13為根據本發明一較佳實施例,用以識別超過一臨界 理慈 4旧M/04115TW,AUS9-2003-0546(儿) 48 1304548 值的指令的程序的流程圖; =程itir—較佳實施例,存取-記憶體位 圖15二斤,根據本發明一較佳實施例,用以產生元資料 me a a a) #元件方塊圖,例如用以 : 技關巾賴^圖; 於載场維護效能操 較織例,树生指令所用的 =9為=本發明一較佳實施例’用以產生記憶體位置 所用的70貝料的程序流程圖; 圖20為根據本發明一較佳實施例,用以 行次數的鱗流糊; 触實補,肋計算特定記憶體 位置存取次數的程序流程圖; =2,為本發明—較佳實施例中,用來讀取有關執行 才曰令或存取記憶體位置的資訊元件; 圖23所示為本發明一較佳實施例中,用以自主性地化改 式碼’以便選擇性的計算或描繪程式碼區段的 圖24為本發明一較佳實施例中,用以動態增加或連結 能指標與一指令的程序流程圖; 圖25為本發明一較佳實施例中.,透過連結效能指標與— 分頁内指令以便掃瞒分頁的元件示意圖; 圖26為本發明一較佳實施例中,連結指標與一分頁内 令的程序流程圖; 理慈 4旧M/04115TW,AUS9-2003-0546(儿) 49 1304548 ===:!較佳實施例’用以描述包爾框 ,28為根據本發明一較佳實施例,用以識別有關於呼叫 口:回傳指令的事件的程序流程圖,其中資料是嫉能監 早兀所收集; 圖29為根據本發明一較佳實施例,用以識別指令已超過 限定執行次數的程序流程圖; 圖30+為根據本發明一較佳實施例,當特定指令已執行超 過限定次數時,用以檢查呼叫堆疊並識別常式的呼叫 程序流程圖; 圖31為根據本發明一較佳實施例,所選定要監測的指令 與資料範圍的圖示;以及 ^1^2為根據本發明一較佳實施例,在一設定範圍内用以 计鼻拜訪次數與指令執行次數的程序流程圖。 【主要元件符號說明】 100用戶端 102處理器 104主記憶體 1〇6 PCI本地匯流排 108 PCI橋接器 110區域網路配接卡 112 SCSI主機匯流排配接卡114擴充匯流排介面 116音效卡 118顯示卡 Π9音效/視訊卡 120鍵盤與滑鼠配接卡 122數據機 124附加記憶體 126硬碟機 128磁帶機 130光碟機 211系統匯流排 214指令快取 210處理器 212匯流排介面單元 216資料快取 理慈 4旧M/04115TW,AUS9-2003-0546(儿) 50 1304548 218 222 226 230 234 237 238 序列器單元 220 固定點單元A 224 複雜固定點單元 228 浮點單元 232 固定點重新命名緩衝器236 特殊用途暫存器 處理單元 重新命名緩衝器 239 240 效能監測單元 24卜 243、 244監測模式控制暫存 器 248 完成緩衝器 250 中斷單元 300 302 包裹 304 306 效能監測單元 400 402 快取 404 儲存/效能操縱陰影快取 500 包裹 502、 508 樣板 600 602、 604、606 指令 610、 1500 編譯器 1502 1504 元資料 1505 效能操縱陰影記憶體 1506 1508 處理器 1510 1512 記憶體位置 1600 1700 現有快取 1702 1704至1724區塊 1726 1728 效能設置區段 1730 1732至1752 區塊 2200 指令快取 訊號 處理器 分支單元 固定點單元β 载入/儲存單元 通用架構暫存器 浮點架構暫存器 進位位元暫存器 242計數器 504、506指令槽 子常式 612、614 資料 指令 記憶體監測區段 模式暫存器 元資料 主要區段 解譯表 效能操縱陰影快取 指令單元 理慈 4旧M/04115TW,AUS9-2003-0546(JL) 1304548 2202 指令 2204 計數器 2206 資料單元 2208 時間資料 2210 計數器 2212 硬體介面 2214 作業系統 2216 分析工具 2300 描繪工具 2302 程式 2304 手常式 2306 分析工具 2308 處理器 2502、 2504、2506 分頁 2508 掃瞄常駐程式 2510 處理器 2700 呼叫堆疊 2702 、2704 、 2706 、 2708 堆疊框 3100 程式 3102、 3104指令範圍 3106 指令快取 3108 範圍暫存器 3110 資料 3114 資料範圍 理慈 4旧M/04115TW,AUS9-2003-0546(JL) 52
Claims (1)
1304548 m ΐ2. 旧义t..案號.:初你總如後銳明工 乂 ☆式々擁赛_-日修£替 一、申請專利範圍: 1· 一種用於計异特定種類指令之指令執行與資料存取 方法,包含·· •因應接收到用以在一處理器中一指令快取 (instruct ion cache)内執行的一指令,而決定一指標 (indicator)是否與該指令相關,以及該指令是否屬於: 令範圍内的一特定類型;以及 曰 如果該指標是與該指令相關且該指令屬於該指令 内的該特定類型時,則產生一中斷(interrupt)。 鲁 2·如/請求項1所述之方法,其中該產生步驟包含: 從該指令快取傳送一訊號(signal)至該處理器内一 中斷單元;以及 該中=應該中斷單元接收到該訊號’於該帽單元内處理 3.如明求項2所述之方法,其中該處理步驟包含: 執行與該中斷有關的程式碼(code)。 如:月求,3所述之方法,其中該程式瑪記錄—功能 ’所發Z的 5·如明求項3所述之方法,其中該程式 的指令録彳㈣-缝值,型 月长員1所述之方法,其中該指標位於一陰影記憶體 53 ,1304548 96:12ΓΤ^ /_嫌換1_193 96年12月彳2日修正-替換頁 (shadow memory)内 7·如請求項1所述之方法,其中所接收到的該指令以一包 裹(bundle)的形式被收到,而其中該指標包含該包裹的一 欄位中的至少一備用位元(spare bit)。 8·如请求項1所述之方法’其中該指標位於該指令的^一搁 位中。 9·如請求項1所述之方法,其中該特定類型的指令為一分 支指令(branch instruction)。 10.如請求項1所述之方法,其中該指令範圍涵蓋以下其 中之一:一子常式(subroutine)、一程式庫函數(libra^ function)、或者一軟體模組。 衡獅輪取的 二決-定單元’因應接收_以在—處理財—指 取内執订的-指令,而用於決指標是否* ' 關,以及該指令是否屬於—指令__—特 及 於甘’如果該指標是與該指令相關且該指令屬 於如曰令__該特定_時,咖於產生—中^屬 12· j求1fU所述之系統,其中該產生單元包含: '解兀,祕從該指令快轉送―職至該處理 54
修正-替換頁 1304548 器内的一中斷單元;以及 一處理單元,因應該中斷單元接收到該訊號,而用於 該中斷單元内處理該中斷。 13·如請求項12所述之系統,其中該處理單元包含: 一執行單元,用於執行與該中斷有關的程式碼(c〇de)。 14·如請求項13所述之系統,其中該程式碼記錄一功能單 元嘗試存取一快取内之指令時,所發生的快取未命中 (cache miss) 〇 15·如請求項13所述之系統,其中該程式碼計算該特定類 型的指令被執行的一次數值,以及該範圍被拜訪的一次數 值0 16·如請求項13所述之系統,其中該指標位於一陰影記憶 體(shadow memory)内。 17· —種記錄可以執行計算特定種類指令之指令執行與資 料存取的電腦可讀取記錄媒體,包含: ^、 一第一指令集(first instructions),因應接收到用 以在一處理器中一指令快取内執行的一指令,而用於決定 一指標是否與該指令相關,以及該指令是否屬於一指令範 圍内的一特定類型;以及 一第二指令集,如果該指標是與該指令相關且該指令 屬於該指令範圍内的特定類型時,則用於產生一中斷。 55 1304548 _ _ __________mr-puMi·. 和】豪____一似加饮撕."V***仇 | 擎?曰修 ^)^ϋ|3193 L____—一__^一·一一~S&年42^ 12曰修正-替換頁 I8· ”5求項1j所述之記錄媒體,其中該第二指令集包含: 第子指令集(first sub-instructions),用於從 該扣取傳送一訊號至該處理器内的一中斷單元;以及 抑弟—子指令集(sec〇nd sub-instructions),因應該 中斷單元接收到該訊號,而用於該中斷單元内處理該中斷。 19·如請求項18所述之記錄媒體,其中該第二子指令集包 含: ' # 一子指令集,用於執行與該中斷有關的程式碼(code)。 20·如請求項19所述之記錄媒體,其中該程式碼記錄一功 能單元嘗試存取一快取内之指令時,所發生的快取未命中 (cache miss) 〇 21·如請求項19所述之記錄媒體,其中該程式碼計算該特 定類型的指令被執行的一次數值,以及該範圍被拜訪的一 次數值。 ^ 22.如請求項17所述之記錄媒體,其中該指標位於一陰影 記憶體(shadow memory)内。 56
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/704,117 US7257657B2 (en) | 2003-11-06 | 2003-11-06 | Method and apparatus for counting instruction execution and data accesses for specific types of instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
TW200517952A TW200517952A (en) | 2005-06-01 |
TWI304548B true TWI304548B (en) | 2008-12-21 |
Family
ID=34552050
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW093133193A TWI304548B (en) | 2003-11-06 | 2004-11-01 | Method, system, computer readable recording medium recording instructions for counting instruction execution and data accesses for specific types of instructions |
Country Status (3)
Country | Link |
---|---|
US (1) | US7257657B2 (zh) |
CN (1) | CN100351810C (zh) |
TW (1) | TWI304548B (zh) |
Families Citing this family (48)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3808755B2 (ja) * | 2001-11-07 | 2006-08-16 | 富士通株式会社 | Jitコンパイラを備えた仮想計算機 |
US20050071821A1 (en) * | 2003-09-30 | 2005-03-31 | International Business Machines Corporation | Method and apparatus to autonomically select instructions for selective counting |
US7937691B2 (en) * | 2003-09-30 | 2011-05-03 | International Business Machines Corporation | Method and apparatus for counting execution of specific instructions and accesses to specific data locations |
US20050071612A1 (en) * | 2003-09-30 | 2005-03-31 | International Business Machines Corporation | Method and apparatus for generating interrupts upon execution of marked instructions and upon access to marked memory locations |
US20050071516A1 (en) * | 2003-09-30 | 2005-03-31 | International Business Machines Corporation | Method and apparatus to autonomically profile applications |
US20050071611A1 (en) * | 2003-09-30 | 2005-03-31 | International Business Machines Corporation | Method and apparatus for counting data accesses and instruction executions that exceed a threshold |
US20050071608A1 (en) * | 2003-09-30 | 2005-03-31 | International Business Machines Corporation | Method and apparatus for selectively counting instructions and data accesses |
US20050071609A1 (en) * | 2003-09-30 | 2005-03-31 | International Business Machines Corporation | Method and apparatus to autonomically take an exception on specified instructions |
US7373637B2 (en) * | 2003-09-30 | 2008-05-13 | International Business Machines Corporation | Method and apparatus for counting instruction and memory location ranges |
US7395527B2 (en) | 2003-09-30 | 2008-07-01 | International Business Machines Corporation | Method and apparatus for counting instruction execution and data accesses |
US20050071610A1 (en) * | 2003-09-30 | 2005-03-31 | International Business Machines Corporation | Method and apparatus for debug support for individual instructions and memory locations |
US7421681B2 (en) * | 2003-10-09 | 2008-09-02 | International Business Machines Corporation | Method and system for autonomic monitoring of semaphore operation in an application |
US8381037B2 (en) | 2003-10-09 | 2013-02-19 | International Business Machines Corporation | Method and system for autonomic execution path selection in an application |
US20050086455A1 (en) * | 2003-10-16 | 2005-04-21 | International Business Machines Corporation | Method and apparatus for generating interrupts for specific types of instructions |
US7257657B2 (en) | 2003-11-06 | 2007-08-14 | International Business Machines Corporation | Method and apparatus for counting instruction execution and data accesses for specific types of instructions |
US7526757B2 (en) * | 2004-01-14 | 2009-04-28 | International Business Machines Corporation | Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program |
US7415705B2 (en) | 2004-01-14 | 2008-08-19 | International Business Machines Corporation | Autonomic method and apparatus for hardware assist for patching code |
US7895382B2 (en) | 2004-01-14 | 2011-02-22 | International Business Machines Corporation | Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs |
US7421684B2 (en) | 2004-03-22 | 2008-09-02 | International Business Machines Corporation | Method and apparatus for autonomic test case feedback using hardware assistance for data coverage |
US8621444B2 (en) * | 2004-06-01 | 2013-12-31 | The Regents Of The University Of California | Retargetable instruction set simulators |
US20060048011A1 (en) * | 2004-08-26 | 2006-03-02 | International Business Machines Corporation | Performance profiling of microprocessor systems using debug hardware and performance monitor |
US7552477B1 (en) * | 2005-02-23 | 2009-06-23 | Symantec Corporation | Detecting return-to-LIBC buffer overflows via dynamic disassembly of offsets |
US8037526B1 (en) | 2005-03-30 | 2011-10-11 | Symantec Corporation | Detecting buffer overflows using frame pointer characteristics |
US7774758B2 (en) * | 2005-05-16 | 2010-08-10 | Texas Instruments Incorporated | Systems and methods for secure debugging and profiling of a computer system |
US20060277395A1 (en) * | 2005-06-06 | 2006-12-07 | Fowles Richard G | Processor performance monitoring |
US7945953B1 (en) | 2005-07-06 | 2011-05-17 | Symantec Corporation | Method to identify buffer overflows and RLIBC attacks |
US8832416B2 (en) * | 2007-05-24 | 2014-09-09 | International Business Machines Corporation | Method and apparatus for instruction completion stall identification in an information handling system |
CN101520747B (zh) * | 2008-02-29 | 2011-03-30 | 鸿富锦精密工业(深圳)有限公司 | 命令自动统计装置及方法 |
US8234484B2 (en) * | 2008-04-09 | 2012-07-31 | International Business Machines Corporation | Quantifying completion stalls using instruction sampling |
US8255884B2 (en) | 2008-06-06 | 2012-08-28 | International Business Machines Corporation | Optimized scalar promotion with load and splat SIMD instructions |
US8286134B2 (en) * | 2008-07-15 | 2012-10-09 | International Business Machines Corporation | Call stack sampling for a multi-processor system |
US9418005B2 (en) | 2008-07-15 | 2016-08-16 | International Business Machines Corporation | Managing garbage collection in a data processing system |
US20100017583A1 (en) * | 2008-07-15 | 2010-01-21 | International Business Machines Corporation | Call Stack Sampling for a Multi-Processor System |
CN101373443B (zh) * | 2008-09-23 | 2012-11-28 | 北京中星微电子有限公司 | 一种主机响应、停止响应及处理外设中断的方法 |
US20100333071A1 (en) * | 2009-06-30 | 2010-12-30 | International Business Machines Corporation | Time Based Context Sampling of Trace Data with Support for Multiple Virtual Machines |
US9176783B2 (en) | 2010-05-24 | 2015-11-03 | International Business Machines Corporation | Idle transitions sampling with execution context |
US8843684B2 (en) * | 2010-06-11 | 2014-09-23 | International Business Machines Corporation | Performing call stack sampling by setting affinity of target thread to a current process to prevent target thread migration |
US8799872B2 (en) | 2010-06-27 | 2014-08-05 | International Business Machines Corporation | Sampling with sample pacing |
US8799904B2 (en) | 2011-01-21 | 2014-08-05 | International Business Machines Corporation | Scalable system call stack sampling |
US10205640B2 (en) | 2013-04-11 | 2019-02-12 | Oracle International Corporation | Seasonal trending, forecasting, anomaly detection, and endpoint prediction of java heap usage |
US10740358B2 (en) | 2013-04-11 | 2020-08-11 | Oracle International Corporation | Knowledge-intensive data processing system |
CN104050082B (zh) * | 2014-06-17 | 2017-04-26 | 南京大学 | 一种面向修订的条件判定覆盖的测试数据自动生成方法 |
US10248561B2 (en) | 2015-06-18 | 2019-04-02 | Oracle International Corporation | Stateless detection of out-of-memory events in virtual machines |
GB2549511B (en) * | 2016-04-20 | 2019-02-13 | Advanced Risc Mach Ltd | An apparatus and method for performing operations on capability metadata |
US11327797B2 (en) | 2016-05-09 | 2022-05-10 | Oracle International Corporation | Memory usage determination techniques |
US11100001B2 (en) * | 2017-05-04 | 2021-08-24 | Sisense Ltd. | Techniques for improving space utilization in a cache |
CN107544896B (zh) * | 2017-08-11 | 2021-04-20 | 深圳震有科技股份有限公司 | 一种函数调用次数的统计方法、存储介质及终端设备 |
DE112021007374T5 (de) * | 2021-03-25 | 2024-03-07 | Intel Corporation | Hardwareunterstützte speicherzugriffsverfolgung |
Family Cites Families (72)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2253423A5 (zh) | 1973-11-30 | 1975-06-27 | Honeywell Bull Soc Ind | |
US4291371A (en) | 1979-01-02 | 1981-09-22 | Honeywell Information Systems Inc. | I/O Request interrupt mechanism |
US5103394A (en) | 1984-04-30 | 1992-04-07 | Hewlett-Packard Company | Software performance analyzer |
US5212794A (en) | 1990-06-01 | 1993-05-18 | Hewlett-Packard Company | Method for optimizing computer code to provide more efficient execution on computers having cache memories |
US5193180A (en) | 1991-06-21 | 1993-03-09 | Pure Software Inc. | System for modifying relocatable object code files to monitor accesses to dynamically allocated memory |
US5657253A (en) * | 1992-05-15 | 1997-08-12 | Intel Corporation | Apparatus for monitoring the performance of a microprocessor |
US5581778A (en) | 1992-08-05 | 1996-12-03 | David Sarnoff Researach Center | Advanced massively parallel computer using a field of the instruction to selectively enable the profiling counter to increase its value in response to the system clock |
US5450349A (en) * | 1992-10-27 | 1995-09-12 | Digital Equipment Corporation | Computer system performance evaluation system and method |
CA2186349C (en) * | 1994-05-12 | 2008-09-23 | James C. Bunnell | Cpu activity monitoring through cache watching |
US6006033A (en) | 1994-08-15 | 1999-12-21 | International Business Machines Corporation | Method and system for reordering the instructions of a computer program to optimize its execution |
US5659679A (en) | 1995-05-30 | 1997-08-19 | Intel Corporation | Method and apparatus for providing breakpoints on taken jumps and for providing software profiling in a computer system |
US5740413A (en) | 1995-06-19 | 1998-04-14 | Intel Corporation | Method and apparatus for providing address breakpoints, branch breakpoints, and single stepping |
JP3290567B2 (ja) | 1995-08-24 | 2002-06-10 | 富士通株式会社 | プロファイル計装方法 |
US5752062A (en) | 1995-10-02 | 1998-05-12 | International Business Machines Corporation | Method and system for performance monitoring through monitoring an order of processor events during execution in a processing system |
US5691920A (en) | 1995-10-02 | 1997-11-25 | International Business Machines Corporation | Method and system for performance monitoring of dispatch unit efficiency in a processing system |
US5774724A (en) | 1995-11-20 | 1998-06-30 | International Business Machines Coporation | System and method for acquiring high granularity performance data in a computer system |
US5794028A (en) | 1996-10-17 | 1998-08-11 | Advanced Micro Devices, Inc. | Shared branch prediction structure |
US5937437A (en) | 1996-10-28 | 1999-08-10 | International Business Machines Corporation | Method and apparatus for monitoring address translation performance |
US5870576A (en) | 1996-12-16 | 1999-02-09 | Hewlett-Packard Company | Method and apparatus for storing and expanding variable-length program instructions upon detection of a miss condition within an instruction cache containing pointers to compressed instructions for wide instruction word processor architectures |
US6112317A (en) * | 1997-03-10 | 2000-08-29 | Digital Equipment Corporation | Processor performance counter for sampling the execution frequency of individual instructions |
US5857097A (en) * | 1997-03-10 | 1999-01-05 | Digital Equipment Corporation | Method for identifying reasons for dynamic stall cycles during the execution of a program |
US5950009A (en) | 1997-03-10 | 1999-09-07 | International Business Machines Coporation | Method and apparatus for profile-based reordering of program portions in a computer program |
US5966537A (en) | 1997-05-28 | 1999-10-12 | Sun Microsystems, Inc. | Method and apparatus for dynamically optimizing an executable computer program using input data |
US5991708A (en) * | 1997-07-07 | 1999-11-23 | International Business Machines Corporation | Performance monitor and method for performance monitoring within a data processing system |
US5987598A (en) * | 1997-07-07 | 1999-11-16 | International Business Machines Corporation | Method and system for tracking instruction progress within a data processing system |
US5987250A (en) | 1997-08-21 | 1999-11-16 | Hewlett-Packard Company | Transparent instrumentation for computer program behavior analysis |
US5995754A (en) | 1997-10-06 | 1999-11-30 | Sun Microsystems, Inc. | Method and apparatus for dynamically optimizing byte-coded programs |
US6101524A (en) | 1997-10-23 | 2000-08-08 | International Business Machines Corporation | Deterministic replay of multithreaded applications |
US5938778A (en) | 1997-11-10 | 1999-08-17 | International Business Machines Corporation | System and method for tracing instructions in an information handling system without changing the system source code |
US6199154B1 (en) | 1997-11-17 | 2001-03-06 | Advanced Micro Devices, Inc. | Selecting cache to fetch in multi-level cache system based on fetch address source and pre-fetching additional data to the cache for future access |
US6070009A (en) | 1997-11-26 | 2000-05-30 | Digital Equipment Corporation | Method for estimating execution rates of program execution paths |
US6119075A (en) | 1997-11-26 | 2000-09-12 | Digital Equipment Corporation | Method for estimating statistics of properties of interactions processed by a processor pipeline |
US6442585B1 (en) | 1997-11-26 | 2002-08-27 | Compaq Computer Corporation | Method for scheduling contexts based on statistics of memory system interactions in a computer system |
US6256775B1 (en) | 1997-12-11 | 2001-07-03 | International Business Machines Corporation | Facilities for detailed software performance analysis in a multithreaded processor |
US6631514B1 (en) | 1998-01-06 | 2003-10-07 | Hewlett-Packard Development, L.P. | Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations |
JPH11194957A (ja) | 1998-01-07 | 1999-07-21 | Matsushita Electric Ind Co Ltd | デバッグ支援装置、並列実行情報生成装置、及びこれらに適用されるプログラムを記録した記録媒体 |
US6374364B1 (en) | 1998-01-20 | 2002-04-16 | Honeywell International, Inc. | Fault tolerant computing system using instruction counting |
US6067644A (en) | 1998-04-15 | 2000-05-23 | International Business Machines Corporation | System and method monitoring instruction progress within a processor |
US6134676A (en) | 1998-04-30 | 2000-10-17 | International Business Machines Corporation | Programmable hardware event monitoring method |
US6189141B1 (en) | 1998-05-04 | 2001-02-13 | Hewlett-Packard Company | Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control |
US6317820B1 (en) | 1998-06-05 | 2001-11-13 | Texas Instruments Incorporated | Dual-mode VLIW architecture providing a software-controlled varying mix of instruction-level and task-level parallelism |
US6145123A (en) | 1998-07-01 | 2000-11-07 | Advanced Micro Devices, Inc. | Trace on/off with breakpoint register |
US6243804B1 (en) | 1998-07-22 | 2001-06-05 | Scenix Semiconductor, Inc. | Single cycle transition pipeline processing using shadow registers |
US6240510B1 (en) | 1998-08-06 | 2001-05-29 | Intel Corporation | System for processing a cluster of instructions where the instructions are issued to the execution units having a priority order according to a template associated with the cluster of instructions |
US6324689B1 (en) | 1998-09-30 | 2001-11-27 | Compaq Computer Corporation | Mechanism for re-writing an executable having mixed code and data |
US6223338B1 (en) | 1998-09-30 | 2001-04-24 | International Business Machines Corporation | Method and system for software instruction level tracing in a data processing system |
US6192513B1 (en) | 1998-11-02 | 2001-02-20 | Hewlett-Packard Company | Mechanism for finding spare registers in binary code |
US6351844B1 (en) | 1998-11-05 | 2002-02-26 | Hewlett-Packard Company | Method for selecting active code traces for translation in a caching dynamic translator |
US6826749B2 (en) | 1998-12-08 | 2004-11-30 | Nazomi Communications, Inc. | Java hardware accelerator using thread manager |
US6253338B1 (en) | 1998-12-21 | 2001-06-26 | International Business Machines Corporation | System for tracing hardware counters utilizing programmed performance monitor to generate trace interrupt after each branch instruction or at the end of each code basic block |
US6230313B1 (en) | 1998-12-23 | 2001-05-08 | Cray Inc. | Parallelism performance analysis based on execution trace information |
US6378066B1 (en) | 1999-02-04 | 2002-04-23 | Sun Microsystems, Inc. | Method, apparatus, and article of manufacture for developing and executing data flow programs, and optimizing user input specifications |
US6330662B1 (en) | 1999-02-23 | 2001-12-11 | Sun Microsystems, Inc. | Apparatus including a fetch unit to include branch history information to increase performance of multi-cylce pipelined branch prediction structures |
US6430741B1 (en) | 1999-02-26 | 2002-08-06 | Hewlett-Packard Company | System and method for data coverage analysis of a computer program |
US7086035B1 (en) | 1999-05-13 | 2006-08-01 | International Business Machines Corporation | Method and system for counting non-speculative events in a speculative processor |
US6446029B1 (en) | 1999-06-30 | 2002-09-03 | International Business Machines Corporation | Method and system for providing temporal threshold support during performance monitoring of a pipelined processor |
US20030040955A1 (en) | 1999-07-02 | 2003-02-27 | The Nasdaq Stock Market, Inc., A Delaware Corporation | Market monitoring architecture for detecting alert conditions |
US6542985B1 (en) | 1999-09-23 | 2003-04-01 | Unisys Corporation | Event counter |
US6560693B1 (en) | 1999-12-10 | 2003-05-06 | International Business Machines Corporation | Branch history guided instruction/data prefetching |
US6772322B1 (en) * | 2000-01-21 | 2004-08-03 | Intel Corporation | Method and apparatus to monitor the performance of a processor |
US6865663B2 (en) | 2000-02-24 | 2005-03-08 | Pts Corporation | Control processor dynamically loading shadow instruction register associated with memory entry of coprocessor in flexible coupling mode |
US20020073406A1 (en) | 2000-12-12 | 2002-06-13 | Darryl Gove | Using performance counter profiling to drive compiler optimization |
US6480938B2 (en) | 2000-12-15 | 2002-11-12 | Hewlett-Packard Company | Efficient I-cache structure to support instructions crossing line boundaries |
US6857083B2 (en) | 2000-12-18 | 2005-02-15 | International Business Machines Corporation | Method and system for triggering a debugging unit |
US7448025B2 (en) | 2000-12-29 | 2008-11-04 | Intel Corporation | Qualification of event detection by thread ID and thread privilege level |
US7093236B2 (en) | 2001-02-01 | 2006-08-15 | Arm Limited | Tracing out-of-order data |
US20020199179A1 (en) | 2001-06-21 | 2002-12-26 | Lavery Daniel M. | Method and apparatus for compiler-generated triggering of auxiliary codes |
US6742179B2 (en) | 2001-07-12 | 2004-05-25 | International Business Machines Corporation | Restructuring of executable computer code and large data sets |
US6928582B2 (en) | 2002-01-04 | 2005-08-09 | Intel Corporation | Method for fast exception handling |
US7290254B2 (en) | 2003-03-25 | 2007-10-30 | Intel Corporation | Combining compilation and instruction set translation |
US7181723B2 (en) | 2003-05-27 | 2007-02-20 | Intel Corporation | Methods and apparatus for stride profiling a software application |
US7257657B2 (en) | 2003-11-06 | 2007-08-14 | International Business Machines Corporation | Method and apparatus for counting instruction execution and data accesses for specific types of instructions |
-
2003
- 2003-11-06 US US10/704,117 patent/US7257657B2/en not_active Expired - Fee Related
-
2004
- 2004-09-27 CN CNB2004100826766A patent/CN100351810C/zh not_active Expired - Fee Related
- 2004-11-01 TW TW093133193A patent/TWI304548B/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
CN100351810C (zh) | 2007-11-28 |
US20050102493A1 (en) | 2005-05-12 |
TW200517952A (en) | 2005-06-01 |
CN1614570A (zh) | 2005-05-11 |
US7257657B2 (en) | 2007-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI304548B (en) | Method, system, computer readable recording medium recording instructions for counting instruction execution and data accesses for specific types of instructions | |
TWI338218B (en) | Method and apparatus for prefetching data from a data structure | |
Sprunt | Pentium 4 performance-monitoring features | |
JP6058020B2 (ja) | トランザクション実行モードでのランタイム・インスツルメンテーション・サンプリングを実現するためのコンピュータ・プログラム・プロダクト、方法、およびシステム(トランザクション実行モードでのランタイム・インスツルメンテーション・サンプリング) | |
Horowitz et al. | Informing memory operations: Providing memory performance feedback in modern processors | |
US8615619B2 (en) | Qualifying collection of performance monitoring events by types of interrupt when interrupt occurs | |
US8245199B2 (en) | Selectively marking and executing instrumentation code | |
US7814466B2 (en) | Method and apparatus for graphically marking instructions for instrumentation with hardware assistance | |
Lucia et al. | Finding concurrency bugs with context-aware communication graphs | |
US7062684B2 (en) | Enabling tracing of a repeat instruction | |
JP6058012B2 (ja) | ランタイム・インスツルメンテーションを使用してプロセッサのプロセッサ特性情報をモニターするためのコンピュータ・プログラム・プロダクト、方法、およびシステム(プロセッサ特性のランタイム・インスツルメンテーション・モニタリング) | |
US20070260849A1 (en) | Method and apparatus for executing instrumentation code using a target processor | |
Georges et al. | Method-level phase behavior in Java workloads | |
JP6138142B2 (ja) | 被管理ランタイムのためのハードウェア・ベース・ランタイム計装機構 | |
JP6153533B2 (ja) | ランタイム・インストルメンテーション指向サンプリング | |
US20070261032A1 (en) | Method and apparatus for hardware assisted profiling of code | |
US7865703B2 (en) | Method and apparatus for executing instrumentation code within alternative processor resources | |
JP2015516602A (ja) | ランタイム計装制御の状況の決定のためのコンピュータ・プログラム、方法、およびシステム | |
JP6034393B2 (ja) | アドレスによるランタイム・インスツルメンテーション間接サンプリングを実現するためのコンピュータ・プログラム・プロダクト、方法、およびシステム(アドレスによるランタイム・インスツルメンテーション間接サンプリング) | |
Burrows et al. | Efficient and flexible value sampling | |
CN104169887A (zh) | 通过指令操作码的运行时间检测间接采样 | |
TW200527198A (en) | Method and apparatus to autonomically profile applications | |
Huang et al. | Dynamic simplescalar: Simulating java virtual machines | |
US20120198216A1 (en) | Enhanced monitor facility | |
US7783866B2 (en) | Method and apparatus for executing instrumentation code using processor instructions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |