JP2022542007A - テスト・ベクタを使用した高水準コンストラクトの最適化の自動検証 - Google Patents
テスト・ベクタを使用した高水準コンストラクトの最適化の自動検証 Download PDFInfo
- Publication number
- JP2022542007A JP2022542007A JP2022500767A JP2022500767A JP2022542007A JP 2022542007 A JP2022542007 A JP 2022542007A JP 2022500767 A JP2022500767 A JP 2022500767A JP 2022500767 A JP2022500767 A JP 2022500767A JP 2022542007 A JP2022542007 A JP 2022542007A
- Authority
- JP
- Japan
- Prior art keywords
- machine instructions
- executable code
- generating
- computer
- level
- 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
- 238000005457 optimization Methods 0.000 title claims abstract description 42
- 238000012795 verification Methods 0.000 title claims abstract description 18
- 238000012360 testing method Methods 0.000 title claims description 109
- 239000013598 vector Substances 0.000 title claims description 45
- 238000000034 method Methods 0.000 claims abstract description 77
- 238000004590 computer program Methods 0.000 claims abstract description 64
- 230000006870 function Effects 0.000 claims description 70
- 230000006399 behavior Effects 0.000 claims description 60
- 238000012545 processing Methods 0.000 claims description 50
- 238000003860 storage Methods 0.000 claims description 36
- 230000004044 response Effects 0.000 claims description 15
- 238000010586 diagram Methods 0.000 description 20
- 230000006872 improvement Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 230000008901 benefit Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 239000000203 mixture Substances 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000001131 transforming effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000009172 bursting Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 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/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- 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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
オンデマンド・セルフサービス:クラウド・コンシューマは、サーバ時間およびネットワーク・ストレージなどのコンピューティング機能を、このサービスのプロバイダとのヒューマン・インタラクションを必要とすることなく必要に応じて自動的に一方向的に設定することができる。
ブロード・ネットワーク・アクセス:機能は、ネットワーク上で利用可能であり、機能には、異種のシンまたはシック・クライアント・プラットフォーム(例えば移動電話、ラップトップ、およびPDA)による使用を促進する標準的機構を通してアクセスされる。
リソース・プーリング(resource pooling):マルチテナント・モデルを使用して多数のコンシューマにサービスを提供するために、プロバイダのコンピューティング・リソースがプールされており、要求に応じて、異なる物理および仮想リソースが動的に割当ておよび再割当てされる。コンシューマは一般に、提供されたリソースの正確な位置を制御できずまたは正確な位置を知らないが、より高次の抽象化レベル(例えば国、州、またはデータセンター)で位置を指定することができることがあるという意味で、位置独立の感覚がある。
ラピッド・エラスティシティ(rapid elasticity):機能は、素早くスケールアウトするために迅速かつ弾力的に、場合によっては自動的に割り当てることができ、素早くスケールインするために迅速にリリースすることができる。コンシューマにとって、割当てに利用可能な機能はしばしば無限であるように見え、いつでも好きな量だけ購入することができる。
メジャード・サービス(measured service):クラウド・システムは、サービスのタイプ(例えば、ストレージ、処理、バンド幅、および使用中ユーザ・アカウント)に対して適切なある抽象化レベルで計測機能に介入することによって、リソースの使用状況を自動的に制御および最適化する。リソースの使用状況を監視、制御、および報告して、利用されているサービスのプロバイダとコンシューマの両方に透明性を提供することができる。
ソフトウェア・アズ・ア・サービス(SaaS):コンシューマに提供されるこの機能は、クラウド・インフラストラクチャ上で実行しているプロバイダのアプリケーションを使用する機能である。ウェブ・ブラウザなどのシン・クライアント・インタフェース(例えばウェブ・ベースの電子メール)を通してさまざまなクライアント・デバイスからそれらのアプリケーションにアクセス可能である。場合によっては限られたユーザ固有のアプリケーション構成の設定を除けば、コンシューマは、ネットワーク、サーバ、オペレーティング・システム、ストレージ、または個々のアプリケーション機能さえを含む基礎をなすクラウド・インフラストラクチャを管理も制御もしない。
プラットフォーム・アズ・ア・サービス(PaaS):コンシューマに提供されるこの機能は、クラウド・インフラストラクチャ上で、プロバイダがサポートするプログラミング言語およびツールを使用して作成されたコンシューマ作成または取得のアプリケーションを展開する機能である。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基礎をなすクラウド・インフラストラクチャを管理も制御もしないが、展開されたアプリケーションおよび場合によってはアプリケーション・ホスティング環境構成は制御することができる。
インフラストラクチャ・アズ・ア・サービス(IaaS):コンシューマに提供されるこの機能は、処理、ストレージ、ネットワーク、および他の基本的なコンピューティング・リソースを割り当てる機能であり、ここで、コンシューマは任意のソフトウェアを展開および実行することができ、これらのソフトウェアは、オペレーティング・システムおよびアプリケーションを含むことができる。コンシューマは、基礎をなすクラウド・インフラストラクチャを管理も制御もしないが、オペレーティング・システム、ストレージ、および展開されたアプリケーションは制御することができ、場合によっては、選択されたネットワーク構成要素(例えばホスト・ファイアウォール)を限定的に制御することができる。
プライベート・クラウド:このクラウド・インフラストラクチャは、組織体のためだけに運営される。インフラストラクチャは、その組織体または第三者が管理することができ、オンプレミス(on-premises)またはオフプレミス(off-premises)で存在することができる。
コミュニティ・クラウド:このクラウド・インフラストラクチャは、いくつかの組織体によって共有され、利害(例えばミッション、セキュリティ要件、ポリシー、およびコンプライアンス上の問題)を共有する特定のコミュニティをサポートする。インフラストラクチャは、その組織体または第三者が管理することができ、オンプレミスまたはオフプレミスで存在することができる。
パブリック・クラウド:このクラウド・インフラストラクチャは、一般大衆または大きな産業グループが利用可能であり、クラウド・サービスを販売している組織体によって所有される。
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、固有の実体を維持しているが、データおよびアプリケーション・ポータビリティを可能にする標準化された技術または独占技術(例えばクラウド間のロード・バランシングのためのクラウド・バースティング(cloud bursting))によって1つに結合された2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の合成体である。
Claims (28)
- 高水準コンストラクトの最適化の自動検証のためのコンピュータ実施方法であって、
前記方法が、
コンパイラによって、第1の実行可能コードを、コンピュータ・プログラムをコンパイルすることにより生成すること
を含み、前記コンピュータ・プログラムが高水準コンストラクトを含み、
前記コンパイルすることが、
前記高水準コンストラクトに対する第1の一組の機械命令を生成すること、および
前記第1の実行可能コードに、前記高水準コンストラクトに対するコンパイル時情報を格納すること
を含み、
前記方法がさらに、
バイナリ・オプティマイザによって、前記第1の実行可能コードを最適化すること
を含み、
前記最適化することが、
前記第1の実行可能コードを、前記コンピュータ・プログラムの中間言語(IL)表現に変換すること
を含み、前記IL表現が、前記コンパイル時情報に基づく、前記高水準コンストラクトに対応する一組のIL命令を含み、
前記最適化することがさらに、
前記コンピュータ・プログラムの前記IL表現に基づいて第2の実行可能コードを生成すること
を含み、
前記第2の実行可能コードを生成することが、
前記高水準コンストラクトの前記IL表現に基づいて、前記高水準コンストラクトに対する第2の一組の機械命令を生成すること、
前記第1の一組の機械命令と前記第2の一組の機械命令との振る舞いが一致するとの判定に基づいて、前記第2の実行可能コードに前記第2の一組の機械命令を含めること、および
前記第1の一組の機械命令と前記第2の一組の機械命令との振る舞いが一致しないとの判定に基づいて、前記第2の実行可能コードに前記第1の一組の機械命令を含めること
を含む、
コンピュータ実施方法。 - 前記第1の一組の機械命令と前記第2の一組の機械命令との振る舞いが一致するとの前記判定が充足可能性ソルバに基づく、
請求項1に記載のコンピュータ実施方法。 - 前記第1の一組の機械命令と前記第2の一組の機械命令との振る舞いが一致すると判定することが、
複数のテストを含むテスト・ベクタを生成すること、
前記テスト・ベクタの中のそれぞれのテストを、前記高水準コンストラクトに関連する前記第1の一組の機械命令および前記第2の一組の機械命令に対して実行すること、ならびに
前記テスト・ベクタの中の前記それぞれのテストの出力を比較すること
を含み、
前記第1の一組の機械命令と前記第2の一組の機械命令とに関してそれぞれの前記出力が一致することに基づいて、前記振る舞いは一致すると判定される、
請求項1または2に記載のコンピュータ実施方法。 - 前記テスト・ベクタの中のテストを実行することが、
前記第1の一組の機械命令に対する第1のラッパ関数を生成すること、
実行する前記テストに応じた入力を用いて前記第1のラッパ関数を実行し、第1の一組の出力を収集すること、
前記第2の一組の機械命令に対する第2のラッパ関数を生成すること、および
実行する前記テストに応じた前記入力を用いて前記第2のラッパ関数を実行し、第2の一組の出力を収集すること
を含む、
請求項3に記載のコンピュータ実施方法。 - 前記第1のラッパ関数が第1の例外ハンドラでエンクローズされており、前記第2のラッパ関数が第2の例外ハンドラでエンクローズされている、
請求項4に記載のコンピュータ実施方法。 - テストの第1の出力が前記第1の一組の機械命令に対する例外であること、および前記テストの第2の出力が前記第2の一組の機械命令に対する前記例外であることに基づいて、前記振る舞いは一致すると判定される、
請求項3ないし5のいずれかに記載のコンピュータ実施方法。 - 前記コンパイル時情報が、前記高水準コンストラクトの識別、前記第1の一組の機械命令の位置、前記第1の一組の機械命令に対する入力および出力の位置を含む、
請求項1ないし6のいずれかに記載のコンピュータ実施方法。 - 前記コンパイラが、コンパイラの第1のインスタンスであり、前記コンパイラの前記第1のインスタンスの設定とは異なる設定を有する前記コンパイラの第2のインスタンスが、前記第2の実行可能コードを生成する目的に使用される、
請求項1ないし7のいずれかに記載のコンピュータ実施方法。 - 前記方法がさらに、一組の入力について、前記第1の一組の機械命令と前記第2の一組の機械命令との振る舞いが一致しないとの判定に基づいて、
前記第1の一組の機械命令と、前記第2の一組の機械命令と、前記高水準コンストラクトへの入力を調べる追加された関数とを含む第3の実行可能コードであり、前記入力が所定の一組の入力からのものであることに応答して前記第1の一組の機械命令を実行させ、そうでないことに応答して前記第2の一組の機械命令を実行させる、前記第3の実行可能コードを生成すること
を含む、
請求項1ないし8のいずれかに記載のコンピュータ実施方法。 - 前記第1の一組の機械命令と前記第2の一組の機械命令との振る舞いが一致すると判定することが、
複数のテストを含むテスト・ベクタを生成すること、
前記テスト・ベクタの中のそれぞれのテストを、前記高水準コンストラクトに関連する前記第1の一組の機械命令および前記第2の一組の機械命令に対して実行すること、ならびに
前記テスト・ベクタの中の前記それぞれのテストの出力を比較すること
を含み、
前記第1の一組の機械命令と前記第2の一組の機械命令とに関してそれぞれの前記出力が一致することに基づいて、前記振る舞いは一致すると判定される、
請求項9に記載の方法。 - 前記テスト・ベクタの中のテストを実行することが、
前記第1の一組の機械命令に対する第1のラッパ関数を生成すること、
実行する前記テストに応じた入力を用いて前記第1のラッパ関数を実行し、第1の一組の出力を収集すること、
前記第2の一組の機械命令に対する第2のラッパ関数を生成すること、および
実行する前記テストに応じた前記入力を用いて前記第2のラッパ関数を実行し、第2の一組の出力を収集すること
を含む、
請求項10に記載のコンピュータ実施方法。 - システムであって、
メモリと、
前記メモリに結合されたプロセッサと
を備え、前記プロセッサが、高水準コンストラクトの最適化の自動検証のための方法を実行するように構成されており、
前記方法が、
コンパイラによって、第1の実行可能コードを、コンピュータ・プログラムをコンパイルすることにより生成すること
を含み、前記コンピュータ・プログラムが高水準コンストラクトを含み、
前記コンパイルすることが、
前記高水準コンストラクトに対する第1の一組の機械命令を生成すること、および
前記第1の実行可能コードに、前記高水準コンストラクトに対するコンパイル時情報を格納すること
を含み、
前記方法がさらに、
バイナリ・オプティマイザによって、前記第1の実行可能コードを最適化すること
を含み、
前記最適化することが、
前記第1の実行可能コードを中間言語(IL)表現に変換すること
を含み、前記IL表現が、前記コンパイル時情報に基づく、前記高水準コンストラクトに対応する一組のIL命令を含み、
前記最適化することがさらに、
前記IL表現に基づいて第2の実行可能コードを生成すること
を含み、前記第2の実行可能コードが、前記高水準コンストラクトに対する第2の一組の機械命令を含み、
前記最適化することがさらに、
前記バイナリ・オプティマイザによって、前記第1の一組の機械命令と前記第2の一組の機械命令とを比較すること、および
前記第1の一組の機械命令と前記第2の一組の機械命令との振る舞いが一致するとの判定に基づいて、前記第1の実行可能コードを前記第2の実行可能コードに置き換えること
を含む、
システム。 - 前記第1の一組の機械命令と前記第2の一組の機械命令との前記振る舞いが一致するとの前記判定が充足可能性ソルバに基づく、
請求項12に記載のシステム。 - 前記第1の一組の機械命令と前記第2の一組の機械命令との振る舞いが一致すると判定することが、
複数のテストを含むテスト・ベクタを生成すること、
前記テスト・ベクタの中のそれぞれのテストを、前記高水準コンストラクトに関連する前記第1の一組の機械命令および前記第2の一組の機械命令に対して実行すること、ならびに
前記テスト・ベクタの中の前記それぞれのテストの出力を比較すること
を含み、
前記第1の一組の機械命令と前記第2の一組の機械命令とに関してそれぞれの前記出力が一致することに基づいて、前記振る舞いは一致すると判定される、
請求項12または13に記載のシステム。 - 前記テスト・ベクタの中のテストを実行することが、
前記第1の一組の機械命令に対する第1のラッパ関数を生成すること、
実行する前記テストに応じた入力を用いて前記第1のラッパ関数を実行し、第1の一組の出力を収集すること、
前記第2の一組の機械命令に対する第2のラッパ関数を生成すること、および
実行する前記テストに応じた前記入力を用いて前記第2のラッパ関数を実行し、第2の一組の出力を収集すること
を含む、
請求項14に記載のシステム。 - 前記第1のラッパ関数が第1の例外ハンドラでエンクローズされており、前記第2のラッパ関数が第2の例外ハンドラでエンクローズされている、
請求項15に記載のシステム。 - テストの第1の出力が前記第1の一組の機械命令に対する例外であること、および前記テストの第2の出力が前記第2の一組の機械命令に対する前記例外であることに基づいて、前記振る舞いは一致すると判定される、
請求項14ないし16のいずれかに記載のシステム。 - 前記コンパイル時情報が、前記高水準コンストラクトの識別、前記第1の一組の機械命令の位置、前記第1の一組の機械命令に対する入力および出力の位置を含む、
請求項12ないし17のいずれかに記載のシステム。 - 前記コンパイラが、コンパイラの第1のインスタンスであり、前記コンパイラの前記第1のインスタンスの設定とは異なる設定を有する前記コンパイラの第2のインスタンスが、前記第2の実行可能コードを生成する目的に使用される、
請求項12ないし18のいずれかに記載のシステム。 - 前記方法がさらに、一組の入力について、前記第1の一組の機械命令と前記第2の一組の機械命令との振る舞いが一致しないとの判定に基づいて、
前記第1の一組の機械命令と、前記第2の一組の機械命令と、前記高水準コンストラクトへの入力を調べる追加された関数とを含む第3の実行可能コードであり、前記入力が所定の一組の入力からのものであることに応答して前記第1の一組の機械命令を実行させ、そうでないことに応答して前記第2の一組の機械命令を実行させる、前記第3の実行可能コードを生成すること
を含む、
請求項12ないし19のいずれかに記載のシステム。 - 前記第1の一組の機械命令と前記第2の一組の機械命令との振る舞いが一致すると判定することが、
複数のテストを含むテスト・ベクタを生成すること、
前記テスト・ベクタの中のそれぞれのテストを、前記高水準コンストラクトに関連する前記第1の一組の機械命令および前記第2の一組の機械命令に対して実行すること、ならびに
前記テスト・ベクタの中の前記それぞれのテストの出力を比較すること
を含み、
前記第1の一組の機械命令と前記第2の一組の機械命令とに関してそれぞれの前記出力が一致することに基づいて、前記振る舞いは一致すると判定される、
請求項20に記載のシステム。 - 高水準コンストラクトの最適化の自動検証のためのコンピュータ・プログラム製品であって、
前記コンピュータ・プログラム製品が、
処理回路によって可読のコンピュータ可読ストレージ媒体であり、請求項1ないし11のいずれかに記載の方法を実行するために前記処理回路が実行するための命令を記憶した、前記コンピュータ可読ストレージ媒体
を含む、
コンピュータ・プログラム製品。 - コンピュータ可読媒体上に記憶された、デジタル・コンピュータの内部メモリにロード可能なコンピュータ・プログラムであって、
前記プログラムがコンピュータ上で実行されたときに請求項1ないし11のいずれかに記載の方法を実行するためのソフトウェア・コード部分を含む、
コンピュータ・プログラム。 - 高水準コンストラクトの最適化の自動検証のためのコンピュータ実施方法であって、
前記方法が、
コンパイラによって、第1の実行可能コードを、コンピュータ・プログラムをコンパイルすることにより生成すること
を含み、前記コンピュータ・プログラムが高水準コンストラクトを含み、
前記コンパイルすることが、
前記高水準コンストラクトに対する第1の一組の機械命令を生成すること、および
前記第1の実行可能コードに、前記高水準コンストラクトに対するコンパイル時情報を格納すること
を含み、
前記方法がさらに、
オプティマイザによって、前記第1の実行可能コードを最適化すること
を含み、
前記最適化することが、
前記第1の実行可能コードを中間言語(IL)表現に変換すること
を含み、前記IL表現が、前記コンパイル時情報に基づく、前記高水準コンストラクトに対応する一組のIL命令を含み、
前記最適化することがさらに、
前記IL表現に基づいて第2の実行可能コードを生成すること
を含み、前記第2の実行可能コードが、前記高水準コンストラクトに対する第2の一組の機械命令を含み、
前記最適化することがさらに、
一組の入力について、前記第1の一組の機械命令と前記第2の一組の機械命令との振る舞いが一致しないとの判定に基づいて、
前記第1の一組の機械命令と、前記第2の一組の機械命令と、前記高水準コンストラクトへの入力を調べる追加された関数とを含む第3の実行可能コードであり、前記入力が所定の一組の入力からのものであることに応答して前記第1の一組の機械命令を実行させ、そうでないことに応答して前記第2の一組の機械命令を実行させる、前記第3の実行可能コードを生成すること
を含む、
コンピュータ実施方法。 - 前記第1の一組の機械命令と前記第2の一組の機械命令との振る舞いが一致すると判定することが、
複数のテストを含むテスト・ベクタを生成すること、
前記テスト・ベクタの中のそれぞれのテストを、前記高水準コンストラクトに関連する前記第1の一組の機械命令および前記第2の一組の機械命令に対して実行すること、ならびに
前記テスト・ベクタの中の前記それぞれのテストの出力を比較すること
を含み、
前記第1の一組の機械命令と前記第2の一組の機械命令とに関してそれぞれの前記出力が一致することに基づいて、前記振る舞いは一致すると判定される、
請求項24に記載のコンピュータ実施方法。 - 前記テスト・ベクタの中のテストを実行することが、
前記第1の一組の機械命令に対する第1のラッパ関数を生成すること、
実行する前記テストに応じた入力を用いて前記第1のラッパ関数を実行し、第1の一組の出力を収集すること、
前記第2の一組の機械命令に対する第2のラッパ関数を生成すること、および
実行する前記テストに応じた前記入力を用いて前記第2のラッパ関数を実行し、第2の一組の出力を収集すること
を含む、
請求項25に記載のコンピュータ実施方法。 - システムであって、
メモリと、
前記メモリに結合されたプロセッサと
を備え、前記プロセッサが、高水準コンストラクトの最適化の自動検証のための方法を実行するように構成されており、
前記方法が、
コンパイラによって、第1の実行可能コードを、コンピュータ・プログラムをコンパイルすることにより生成すること
を含み、前記コンピュータ・プログラムが高水準コンストラクトを含み、
前記コンパイルすることが、
前記高水準コンストラクトに対する第1の一組の機械命令を生成すること、および
前記第1の実行可能コードに、前記高水準コンストラクトに対するコンパイル時情報を格納すること
を含み、
前記方法がさらに、
オプティマイザによって、前記第1の実行可能コードを最適化すること
を含み、
前記最適化することが、
前記第1の実行可能コードを中間言語(IL)表現に変換すること
を含み、前記IL表現が、前記コンパイル時情報に基づく、前記高水準コンストラクトに対応する一組のIL命令を含み、
前記最適化することがさらに、
前記IL表現に基づいて第2の実行可能コードを生成すること
を含み、前記第2の実行可能コードが、前記高水準コンストラクトに対する第2の一組の機械命令を含み、
前記最適化することがさらに、
一組の入力について、前記第1の一組の機械命令と前記第2の一組の機械命令との振る舞いが一致しないとの判定に基づいて、
前記第1の一組の機械命令と、前記第2の一組の機械命令と、前記高水準コンストラクトへの入力を調べる追加された関数とを含む第3の実行可能コードであり、前記入力が所定の一組の入力からのものであることに応答して前記第1の一組の機械命令を実行させ、そうでないことに応答して前記第2の一組の機械命令を実行させる、前記第3の実行可能コードを生成すること
を含む、
システム。 - 前記第1の一組の機械命令と前記第2の一組の機械命令との振る舞いが一致すると判定することが、
複数のテストを含むテスト・ベクタを生成すること、
前記テスト・ベクタの中のそれぞれのテストを、前記高水準コンストラクトに関連する前記第1の一組の機械命令および前記第2の一組の機械命令に対して実行すること、ならびに
前記テスト・ベクタの中の前記それぞれのテストの出力を比較すること
を含み、
前記第1の一組の機械命令と前記第2の一組の機械命令とに関してそれぞれの前記出力が一致することに基づいて、前記振る舞いは一致すると判定される、
請求項27に記載のシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/527,362 | 2019-07-31 | ||
US16/527,362 US10776255B1 (en) | 2019-07-31 | 2019-07-31 | Automatic verification of optimization of high level constructs using test vectors |
PCT/IB2020/057017 WO2021019401A1 (en) | 2019-07-31 | 2020-07-24 | Automatic verification of optimization of high level constructs using test vectors |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2022542007A true JP2022542007A (ja) | 2022-09-29 |
JPWO2021019401A5 JPWO2021019401A5 (ja) | 2022-12-08 |
JP7410269B2 JP7410269B2 (ja) | 2024-01-09 |
Family
ID=72425773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022500767A Active JP7410269B2 (ja) | 2019-07-31 | 2020-07-24 | テスト・ベクタを使用した高水準コンストラクトの最適化の自動検証 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10776255B1 (ja) |
JP (1) | JP7410269B2 (ja) |
CN (1) | CN114174983B (ja) |
DE (1) | DE112020003634T5 (ja) |
GB (1) | GB2604237B (ja) |
WO (1) | WO2021019401A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11886848B2 (en) | 2022-05-25 | 2024-01-30 | International Business Machines Corporation | Binary translation using raw binary code with compiler produced metadata |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4057938B2 (ja) | 2003-03-26 | 2008-03-05 | 株式会社東芝 | コンパイラ、コンパイル方法、及びプログラム開発ツール |
US20060031820A1 (en) * | 2004-08-09 | 2006-02-09 | Aizhong Li | Method for program transformation and apparatus for COBOL to Java program transformation |
US7624384B2 (en) * | 2004-11-30 | 2009-11-24 | Intel Corporation | Apparatus, system, and method of dynamic binary translation with translation reuse |
US8103674B2 (en) | 2007-12-21 | 2012-01-24 | Microsoft Corporation | E-matching for SMT solvers |
US8381175B2 (en) * | 2010-03-16 | 2013-02-19 | Microsoft Corporation | Low-level code rewriter verification |
US8832672B2 (en) * | 2011-01-28 | 2014-09-09 | International Business Machines Corporation | Ensuring register availability for dynamic binary optimization |
CN102622260B (zh) * | 2012-02-27 | 2014-12-10 | 中国科学院计算技术研究所 | 一种在线迭代编译的优化方法和优化系统 |
US8959495B2 (en) * | 2012-09-14 | 2015-02-17 | Oracle International Corporation | Unifying static and dynamic compiler optimizations in source-code bases |
JP5967618B2 (ja) * | 2013-04-17 | 2016-08-10 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 二進化十進数型変数へのアクセスを有する言語のバイナリコードを最適化する方法、並びにそのコンピュータ及びコンピュータ・プログラム |
JP5988444B2 (ja) | 2014-02-14 | 2016-09-07 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 最適化したバイナリー・モジュールをテストする方法、並びに、当該最適化したバイナリー・モジュールをテストするためのコンピュータ及びそのコンピュータ・プログラム |
US9442707B2 (en) * | 2014-06-25 | 2016-09-13 | Microsoft Technology Licensing, Llc | Incremental whole program compilation of code |
US10261889B2 (en) * | 2014-06-25 | 2019-04-16 | Microsoft Technology Licensing, Llc | Techniques for edit-and-continue and enhanced optimized debugging on optimized code |
US9563536B1 (en) * | 2015-10-19 | 2017-02-07 | International Business Machines Corporation | Performance neutral isolation of runtime discrepancies in binary code |
US9715377B1 (en) | 2016-01-04 | 2017-07-25 | International Business Machines Corporation | Behavior based code recompilation triggering scheme |
CA3016684A1 (en) * | 2016-03-11 | 2017-09-14 | Lzlabs Gmbh | Load module compiler |
US10579498B2 (en) * | 2016-07-31 | 2020-03-03 | Microsoft Technology Licensing, Llc. | Debugging tool for a JIT compiler |
US10809985B2 (en) | 2017-03-09 | 2020-10-20 | Microsoft Technology Licensing, Llc | Instrumenting program code |
US10514909B2 (en) * | 2017-03-29 | 2019-12-24 | Technion Research & Development Foundation Limited | Similarity of binaries |
US10339837B1 (en) * | 2018-06-01 | 2019-07-02 | Polyverse Corporation | Distribution of scrambled binary output using a randomized compiler |
-
2019
- 2019-07-31 US US16/527,362 patent/US10776255B1/en active Active
-
2020
- 2020-07-24 WO PCT/IB2020/057017 patent/WO2021019401A1/en active Application Filing
- 2020-07-24 GB GB2201366.8A patent/GB2604237B/en active Active
- 2020-07-24 JP JP2022500767A patent/JP7410269B2/ja active Active
- 2020-07-24 CN CN202080052336.6A patent/CN114174983B/zh active Active
- 2020-07-24 DE DE112020003634.0T patent/DE112020003634T5/de active Pending
Also Published As
Publication number | Publication date |
---|---|
GB2604237B (en) | 2023-03-22 |
US10776255B1 (en) | 2020-09-15 |
GB2604237A (en) | 2022-08-31 |
CN114174983B (zh) | 2022-10-11 |
JP7410269B2 (ja) | 2024-01-09 |
CN114174983A (zh) | 2022-03-11 |
DE112020003634T5 (de) | 2022-06-09 |
WO2021019401A1 (en) | 2021-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109976761B (zh) | 软件开发工具包的生成方法、装置及终端设备 | |
US8732674B1 (en) | Revertable managed execution image instrumentation | |
JP5951022B2 (ja) | デコード時間命令最適化を用いた、強化されたアプリケーション・バイナリ・インターフェース(abi)のためのコードのリンク | |
JP6044968B2 (ja) | デコード時間命令最適化を用いた、強化されたアプリケーション・バイナリ・インターフェース(abi)のためのコードのコンパイル | |
US11074154B2 (en) | Identifying a source file for use in debugging compiled code | |
JP2017516210A (ja) | 動的に生成されたパターンベースクラスの構造識別 | |
TW201308209A (zh) | 運行時間系統 | |
CN111124420A (zh) | 编译方法、装置、电子设备及可读存储介质 | |
JP2023507709A (ja) | 統合された参照及び二次のマーキング | |
US9250936B2 (en) | Enhanced array class | |
JP7410269B2 (ja) | テスト・ベクタを使用した高水準コンストラクトの最適化の自動検証 | |
US9519566B2 (en) | Modeling memory use of applications | |
US11983090B2 (en) | Setting breakpoints for source code segments enclosed by macros | |
US11573777B2 (en) | Method and apparatus for enabling autonomous acceleration of dataflow AI applications | |
US10248554B2 (en) | Embedding profile tests into profile driven feedback generated binaries | |
US11347523B2 (en) | Updated shared library reloading without stopping the execution of an application | |
US11157252B2 (en) | Assessment of the benefit of post-inlining program transformation in inlining decisions | |
US20150220310A1 (en) | Object field optimization | |
US20220058006A1 (en) | Runtime type identification of an object utilizing class inheritance relationships |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20220518 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20221128 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20221223 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20231130 |
|
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: 20231205 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20231221 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7410269 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |