JP2012138004A - プログラム解析の方法、システムおよびプログラム - Google Patents
プログラム解析の方法、システムおよびプログラム Download PDFInfo
- Publication number
- JP2012138004A JP2012138004A JP2010290894A JP2010290894A JP2012138004A JP 2012138004 A JP2012138004 A JP 2012138004A JP 2010290894 A JP2010290894 A JP 2010290894A JP 2010290894 A JP2010290894 A JP 2010290894A JP 2012138004 A JP2012138004 A JP 2012138004A
- Authority
- JP
- Japan
- Prior art keywords
- flag
- program
- branch
- history information
- processing unit
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 26
- 230000010365 information processing Effects 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 5
- 230000006870 function Effects 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 6
- 230000006399 behavior Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
-
- 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/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
- G06F11/3096—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents wherein the means or processing minimize the use of computing system or of computing system component resources, e.g. non-intrusive monitoring which minimizes the probe effect: sniffing, intercepting, indirectly deriving the monitored data from other directly available data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- 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/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
【解決手段】
プログラムの開始時に、プログラムの各命令にそれぞれが対応している複数のフラグをディスエーブルに初期化してBHTの初期状態を保存し、分岐命令の実行時に、該当するフラグがイネーブルかディスエーブルかを判定し、該当するフラグがディスエーブルの場合には該当するフラグをイネーブルにし、分岐不成立の場合にはBHTの該当するエントリの履歴情報の値をデクリメントし、分岐成立の場合には該当するエントリの履歴情報の値をインクリメントし、プログラムの終了時に、BHTの終了状態と保存した初期状態からエントリそれぞれの履歴情報の値の差分を取得し、フラグそれぞれの終了状態を取得する。
【選択図】図6
Description
・分岐命令(a)brについての差分データdiffの「+1」とフラグ・データFlagの「1」から、(a)の部分のコードは実行され、分岐命令(a)brの分岐は成立した。
・分岐命令(b)brについてのフラグ・データFlagの「0」から、(b)の部分のコードは実行されなかった。
・分岐命令(c)brについての差分データdiffの「0」とフラグ・データFlagの「1」から、(c)の部分のコードは実行され、分岐命令(c)brの分岐は成立した。その分岐の不成立も1回はあった。
・分岐命令(x)brについての差分データdiffの「+1」とフラグ・データFlagの「1」から、(x)の部分のコードは実行され、分岐命令(x)brの分岐は1回以上成立した。
・分岐命令(a)brについての差分データdiffの「+1」から、(a)の部分のコードは実行され、分岐命令(a)brの分岐は成立した。
・分岐命令(x)brについての差分データdiffの「+1」から、(x)の部分のコードは実行され、分岐命令(x)brの分岐は成立した。
このように、BHT(エントリの履歴ビット)のみによるプログラム解析では、(b)の部分のコードが実行されたかどうかは分からないし、また、(c)の部分のコードは実行されたにも拘らず、(c)の部分のコードが実行されたかどうかも分からない。しかしながら、先に例示したとおり、本発明のように、BFTを設けて分岐成立時に該当フラグをイネーブルにすることにより、それらの問題点は解決される。
・コードAおよびCにおける最初の分岐命令brについての差分データdiffの「0」とフラグ・データFlagの「1」から、コードAおよびCは実行され、それらの常に実行される条件分岐は成立した。
・コードBにおける最初の分岐命令brについての差分データdiffのブランク(更新なし)とフラグ・データFlagのブランク(「0」)から、コードBは実行されなかった。
・コードAが実行されたことが確認されており、コードAおよびCにおける最後の分岐命令brについての差分データdiffが「−1」となり、フラグ・データFlagが「1」となっていることから総合的に判断して、高頻度で成立するコードAの方の分岐命令が実行された後に、高頻度で不成立するコードCの方の分岐命令が実行された。
Claims (9)
- プログラムを解析する方法であって、プロセッサが、
前記プログラムの開始時に、前記プログラムの各命令にそれぞれが対応している複数のフラグを備える第1テーブルの当該フラグをディスエーブルに初期化するステップと、
前記プログラムの開始時に、前記プログラムの各命令にそれぞれが対応している複数のエントリを備え、当該エントリに履歴情報を有する第2テーブルの初期状態を保存するステップと、
分岐命令の実行時に、分岐が成立か不成立かを判定するステップと、
分岐が不成立の場合、前記第2テーブルの該当する前記エントリの前記履歴情報の値をデクリメントするステップと、
分岐が成立の場合、前記第2テーブルの該当する前記エントリの前記履歴情報の値をインクリメントするステップと、
前記第1テーブルの該当する前記フラグがイネーブルかディスエーブルかを判定するステップと、
該当する前記フラグがディスエーブルの場合、該当する前記フラグをイネーブルにするステップと、
前記プログラムを終了するか否かを判定するステップと、
前記プログラムを終了しない場合、前記分岐が成立か不成立かを判定するステップから前記プログラムを終了するか否かを判定するステップまでを繰り返すステップと、
前記プログラムを終了する場合、前記第2テーブルの終了状態と保存した前記初期状態から前記エントリそれぞれの前記履歴情報の値の差分を取得するステップと、
前記第1テーブルの前記フラグそれぞれの終了状態を取得するステップと、
を実行することを含む、プログラム解析方法。 - 前記フラグはフラグ・ビットであり、前記フラグをディスエーブルに初期化するステップは当該フラグ・ビットを0に設定することを含み、前記フラグをイネーブルにするステップは当該フラグ・ビットを1に設定することを含む、請求項1に記載の方法。
- 前記履歴情報は複数のビットからなり、当該複数のビットの最下位ビットを前記フラグにして前記第2テーブルは前記第1テーブルを兼ね、前記フラグをディスエーブルに初期化するステップは当該最下位ビットを0に設定することを含み、前記フラグをイネーブルにするステップは当該最下位ビットを1に設定することを含む、請求項1に記載の方法。
- 前記第2テーブルとして分岐履歴テーブルを用いることを含む、請求項1〜3のいずれか1項に記載の方法。
- プロセッサに、請求項1〜4のいずれか1項に記載の方法の各ステップを実行させるプログラム解析のためのコンピュータ・プログラム。
- プログラムを解析するシステムであって、
プロセッサは、前記プログラムの各命令にそれぞれが対応している複数のフラグを備える第1テーブルと、前記第1テーブルを制御する第1テーブル制御部と、前記プログラムの各命令にそれぞれが対応している複数のエントリを備え、当該エントリに履歴情報を有する第2テーブルと、前記第2テーブルを制御する第2テーブル制御部と、分岐命令を処理し、分岐の成立、不成立の情報を前記第1テーブル制御部および前記第2テーブル制御部に提供する分岐処理部とを含み、
前記第1テーブル制御部はフラグ処理部を備え、当該フラグ処理部は、前記プログラムの開始時に前記フラグをディスエーブルに初期化し、前記分岐処理部から前記分岐成立の情報が提供されたときには該当する前記フラグがイネーブルかディスエーブルかを判定し、該当する前記フラグがディスエーブルの場合には該当する前記フラグをイネーブルにし、前記プログラムの終了時に前記第1テーブルの前記フラグそれぞれの終了状態を提供し、
前記第2テーブル制御部は履歴情報処理部を備え、当該履歴情報処理部は、前記プログラムの開始時に前記エントリの前記履歴情報の初期状態を保存し、前記分岐処理部から前記分岐不成立の情報が提供されたときには該当する前記エントリの前記履歴情報の値をデクリメントし、前記分岐処理部から前記分岐成立の情報が提供されたときには該当する前記エントリの前記履歴情報の値をインクリメントし、前記プログラムの終了時に前記エントリの前記履歴情報の終了状態と保存した前記初期状態から前記エントリそれぞれの前記履歴情報の値の差分を提供する、
プログラム解析システム。 - 前記フラグはフラグ・ビットであり、前記フラグ処理部は、当該フラグ・ビットを0に設定することにより前記フラグをディスエーブルに初期化し、当該フラグ・ビットを1に設定することにより前記フラグをイネーブルにする、請求項6に記載のシステム。
- 前記履歴情報は複数のビットからなり、当該複数のビットの最下位ビットを前記フラグにして前記第2テーブルは前記第1テーブルを兼ね、前記履歴情報処理部は、当該最下位ビットを0に設定することにより前記フラグをディスエーブルに初期化し、当該最下位ビットを1に設定することにより前記フラグをイネーブルにする、請求項6に記載のシステム。
- 前記第2テーブルは分岐履歴テーブルを含む、請求項6〜8のいずれか1項に記載のシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010290894A JP5552042B2 (ja) | 2010-12-27 | 2010-12-27 | プログラム解析の方法、システムおよびプログラム |
US13/332,436 US8990545B2 (en) | 2010-12-27 | 2011-12-21 | Method, system, and computer program for analyzing program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010290894A JP5552042B2 (ja) | 2010-12-27 | 2010-12-27 | プログラム解析の方法、システムおよびプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2012138004A true JP2012138004A (ja) | 2012-07-19 |
JP5552042B2 JP5552042B2 (ja) | 2014-07-16 |
Family
ID=46318478
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010290894A Expired - Fee Related JP5552042B2 (ja) | 2010-12-27 | 2010-12-27 | プログラム解析の方法、システムおよびプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US8990545B2 (ja) |
JP (1) | JP5552042B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10657051B2 (en) * | 2017-12-14 | 2020-05-19 | Macronix International Co., Ltd. | Memory device and operation method thereof |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63228237A (ja) * | 1987-03-17 | 1988-09-22 | Nec Corp | プログラムデバツグ方式 |
JPH10228377A (ja) * | 1996-12-09 | 1998-08-25 | Matsushita Electric Ind Co Ltd | 分岐予測する情報処理装置 |
US6484256B1 (en) * | 1999-08-09 | 2002-11-19 | International Business Machines Corporation | Apparatus and method of branch prediction utilizing a comparison of a branch history table to an aliasing table |
WO2007046324A1 (ja) * | 2005-10-17 | 2007-04-26 | Fukuoka Industry, Science & Technology Foundation | 推定装置、テーブル管理装置、選択装置、テーブル管理方法、そのテーブル管理方法をコンピュータに実現させるプログラム、及び、そのプログラムを記録する記録媒体 |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2064585B (en) | 1979-11-19 | 1983-11-09 | Enthone | Acid zinc electro plating solutions and methods utilizing ethoxylated/propoxylated polyhydric alcohols |
JP2508872B2 (ja) * | 1990-02-27 | 1996-06-19 | 三菱電機株式会社 | プログラマブルコントロ―ラの制御方法 |
JPH0613070A (ja) | 1992-06-29 | 1994-01-21 | Sumitomo Electric Ind Ltd | リチウム二次電池およびリチウム二次電池用負極の製造方法 |
JP3473249B2 (ja) | 1996-03-08 | 2003-12-02 | 株式会社日立製作所 | 中央処理装置 |
WO1998008160A1 (en) * | 1996-08-20 | 1998-02-26 | Idea Corporation | A method for identifying hard-to-predict branches to enhance processor performance |
US6151672A (en) | 1998-02-23 | 2000-11-21 | Hewlett-Packard Company | Methods and apparatus for reducing interference in a branch history table of a microprocessor |
US6233678B1 (en) * | 1998-11-05 | 2001-05-15 | Hewlett-Packard Company | Method and apparatus for profiling of non-instrumented programs and dynamic processing of profile data |
JP2001156321A (ja) | 1999-03-09 | 2001-06-08 | Fuji Xerox Co Ltd | 半導体装置およびその製造方法 |
JP2000293373A (ja) | 1999-04-12 | 2000-10-20 | Hitachi Ltd | 分岐予測装置 |
JP3502592B2 (ja) | 2000-03-02 | 2004-03-02 | 株式会社東芝 | 分岐予測装置 |
DE10121792C2 (de) * | 2000-05-26 | 2003-09-25 | Ibm | Universelle Ladeadresse/Wertevorhersageschema |
GB2366879B (en) * | 2000-09-16 | 2005-02-16 | Ibm | Tracing the execution path of a computer program |
JP3922155B2 (ja) | 2002-10-04 | 2007-05-30 | トヨタ自動車株式会社 | 電動手段付き過給機により冷却を行なう内燃機関 |
US7120784B2 (en) | 2003-04-28 | 2006-10-10 | International Business Machines Corporation | Thread-specific branch prediction by logically splitting branch history tables and predicted target address cache in a simultaneous multithreading processing environment |
US20040225870A1 (en) * | 2003-05-07 | 2004-11-11 | Srinivasan Srikanth T. | Method and apparatus for reducing wrong path execution in a speculative multi-threaded processor |
US20060015706A1 (en) * | 2004-06-30 | 2006-01-19 | Chunrong Lai | TLB correlated branch predictor and method for use thereof |
JP2006053830A (ja) | 2004-08-13 | 2006-02-23 | Toshiba Corp | 分岐予測装置および分岐予測方法 |
FR2886460B1 (fr) | 2005-05-25 | 2007-08-24 | Electricite De France | Sulfurisation et selenisation de couches de cigs electrodepose par recuit thermique |
US7507321B2 (en) | 2006-01-06 | 2009-03-24 | Solopower, Inc. | Efficient gallium thin film electroplating methods and chemistries |
JP5497261B2 (ja) | 2006-12-15 | 2014-05-21 | ローム・アンド・ハース・エレクトロニック・マテリアルズ,エル.エル.シー. | インジウム組成物 |
TW200837430A (en) | 2007-03-09 | 2008-09-16 | Chunghwa Picture Tubes Ltd | Active device array substrate and repair method thereof |
ES2624637T3 (es) | 2008-05-30 | 2017-07-17 | Atotech Deutschland Gmbh | Aditivo de electrogalvanoplastia para la deposición de una aleación de un metal del grupo IB/binaria o ternaria del grupo IB-grupo IIIA/ternaria, cuaternaria o quinaria del grupo IB, el grupo IIIA-grupo VIA |
CN101763248A (zh) * | 2008-12-25 | 2010-06-30 | 世意法(北京)半导体研发有限责任公司 | 用于多模式分支预测器的系统和方法 |
US8566569B2 (en) * | 2010-06-24 | 2013-10-22 | International Business Machines Corporation | State machine-based filtering of pattern history tables based on distinguishable pattern detection |
-
2010
- 2010-12-27 JP JP2010290894A patent/JP5552042B2/ja not_active Expired - Fee Related
-
2011
- 2011-12-21 US US13/332,436 patent/US8990545B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63228237A (ja) * | 1987-03-17 | 1988-09-22 | Nec Corp | プログラムデバツグ方式 |
JPH10228377A (ja) * | 1996-12-09 | 1998-08-25 | Matsushita Electric Ind Co Ltd | 分岐予測する情報処理装置 |
US6484256B1 (en) * | 1999-08-09 | 2002-11-19 | International Business Machines Corporation | Apparatus and method of branch prediction utilizing a comparison of a branch history table to an aliasing table |
WO2007046324A1 (ja) * | 2005-10-17 | 2007-04-26 | Fukuoka Industry, Science & Technology Foundation | 推定装置、テーブル管理装置、選択装置、テーブル管理方法、そのテーブル管理方法をコンピュータに実現させるプログラム、及び、そのプログラムを記録する記録媒体 |
Also Published As
Publication number | Publication date |
---|---|
US8990545B2 (en) | 2015-03-24 |
JP5552042B2 (ja) | 2014-07-16 |
US20120166776A1 (en) | 2012-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8671397B2 (en) | Selective data flow analysis of bounded regions of computer software applications | |
US8214812B2 (en) | Method of interpreting method bytecode and system operated by the same | |
KR101579589B1 (ko) | 파이프라인 프로세서를 위한 정적 분기 예측 방법과 이를 위한 컴파일 방법 | |
US8635627B2 (en) | Method, medium and apparatus storing and restoring register context for fast context switching between tasks | |
CN108595210B (zh) | 实现零开销循环的处理器 | |
JP5808450B1 (ja) | マルチコアプロセッサを使用して逐次プログラムを実行する制御装置 | |
CN106020905B (zh) | 一种微控制器固件开发与更新的方法及系统 | |
JP2008269569A (ja) | コード変換装置 | |
US11226798B2 (en) | Information processing device and information processing method | |
CN112083954B (zh) | 一种gpu中显式独立掩码寄存器的掩码操作方法 | |
JP5421228B2 (ja) | 仮想タスクを使用した関係可視化のためのプログラム、装置およびその方法 | |
US11042378B2 (en) | Propagation instruction to generate a set of predicate flags based on previous and current prediction data | |
US10466974B2 (en) | Independent expression animations | |
JP5552042B2 (ja) | プログラム解析の方法、システムおよびプログラム | |
US20150363241A1 (en) | Method and apparatus to migrate stacks for thread execution | |
JP6510430B2 (ja) | トレースデータ編集装置及び方法 | |
JP2017084361A (ja) | 汎用マイクロプロセッサを用いたplcのデバッグ方法 | |
US8549508B2 (en) | Mechanism for performing instruction scheduling based on register pressure sensitivity | |
JP5021584B2 (ja) | マイコンシミュレータ、そのシミュレーション方法、プログラム、及びコンピュータ読み取り可能な媒体 | |
WO2001090889A3 (en) | Instruction dependency scoreboard with a hierarchical structure | |
US11853193B2 (en) | Inverse performance driven program analysis | |
KR101550652B1 (ko) | 프로그램 개발 환경 제공 장치 및 방법 | |
CN113760364B (zh) | 逻辑器件的控制器 | |
JP2009110455A (ja) | プログラマブル操作表示器、そのプログラム | |
CN115454532A (zh) | 一种安卓注解处理器优化应用启动速度的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20131003 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140418 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140507 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140523 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5552042 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |