JP6957528B2 - コンパイラ挿入変換コードを用いた冗長スレッドのフィンガープリンティング - Google Patents
コンパイラ挿入変換コードを用いた冗長スレッドのフィンガープリンティング Download PDFInfo
- Publication number
- JP6957528B2 JP6957528B2 JP2018565057A JP2018565057A JP6957528B2 JP 6957528 B2 JP6957528 B2 JP 6957528B2 JP 2018565057 A JP2018565057 A JP 2018565057A JP 2018565057 A JP2018565057 A JP 2018565057A JP 6957528 B2 JP6957528 B2 JP 6957528B2
- Authority
- JP
- Japan
- Prior art keywords
- thread
- comparison
- redundant
- value
- code
- 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.)
- Active
Links
- 238000013519 translation Methods 0.000 title description 5
- 238000012545 processing Methods 0.000 claims description 64
- 230000015654 memory Effects 0.000 claims description 26
- 238000000034 method Methods 0.000 claims description 25
- 230000004044 response Effects 0.000 claims description 11
- 238000004364 calculation method Methods 0.000 description 16
- 238000006243 chemical reaction Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 230000008901 benefit Effects 0.000 description 7
- 238000012937 correction Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000002730 additional effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
Images
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- 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/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1492—Generic software techniques for error detection or fault masking by run-time replication performed by the application software
- G06F11/1494—N-modular type
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1629—Error detection by comparing the output of redundant processing systems
-
- 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
-
- 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/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/453—Data distribution
- G06F8/454—Consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1629—Error detection by comparing the output of redundant processing systems
- G06F11/1633—Error detection by comparing the output of redundant processing systems using mutual exchange of the output between the redundant processing components
-
- 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/805—Real-time
-
- 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/83—Indexing scheme relating to error detection, to error correction, and to monitoring the solution involving signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Devices For Executing Special Programs (AREA)
- Retry When Errors Occur (AREA)
Description
Claims (15)
- 計算ユニットの1つ以上の処理要素が、前記1つ以上の処理要素に対するイベントトリガに応じて、
前記計算ユニットの冗長スレッドによって実行された演算の結果の少なくとも1回の比較を選択的にバイパスすることであって、前記選択的にバイパスすることは、前記冗長スレッドによって以前に実行された少なくとも1つの演算の結果の以前の比較以降に設定可能な回数だけ前記イベントトリガが発生したと判別したことに基づいて行われる、ことを含む、
方法。 - 前記設定可能な回数は1よりも大きい、
請求項1の方法。 - 前記イベントトリガは、前記結果をメモリに記憶するために前記冗長スレッドによって実行されるストア命令である、
請求項1又は2の方法。 - 前記結果を、以前の符号化値及び初期値のうち少なくとも1つと共にハッシュすることによって、前記結果の符号化値を生成することをさらに含む、
請求項1〜3の何れかの方法。 - 前記結果をハッシュするのに使用されるコード値のルックアップテーブルを生成するためにコンパイル中にコードを挿入することによって、前記冗長スレッドによって実行されるプログラムコードを修正することをさらに含む、
請求項1〜4の何れかの方法。 - 前記コンパイル中にプログラムコードを修正することは、前記冗長スレッド毎にカウンタを初期化することをさらに含み、前記冗長スレッドが前記イベントトリガを実行したことに応じて各カウンタがインクリメントされ、前記カウンタの値は、前記少なくとも1回の比較を選択的にバイパスするか否かを判別するために、前記設定可能な回数と比較される、
請求項5の方法。 - 前記コンパイル中にプログラムコードを修正することは、前記結果をハッシュして符号化値を生成し、前記カウンタの値を前記設定可能な回数と比較して前記少なくとも1回の比較を選択的にバイパスするか否かを判別し、前記比較用のイベントトリガが前記設定可能な回数だけ発生したと判別したことに応じて、前記冗長スレッド間で前記符号化値を共有及び比較するためのコードを挿入することをさらに含む、
請求項6の方法。 - 前記コンパイル中にプログラムコードを修正することは、前記冗長スレッドが前記プログラムコードを終了する前に、未処理の共有及び比較演算を実行するか否かを判別するためのコードを挿入することをさらに含む、
請求項7の方法。 - 第1スレッドを実行するための第1処理要素と、
前記第1スレッドに対して冗長な少なくとも1つの第2スレッドを実行するための少なくとも1つの第2処理要素と、を備え、
前記第1スレッド及び前記少なくとも1つの第2スレッドは、前記第1スレッド及び前記少なくとも1つの第2スレッドによって実行された演算の結果の比較を選択的にバイパスし、前記比較を選択的にバイパスすることは、前記比較用のイベントトリガに応じて、冗長スレッドによって以前に実行された少なくとも1回の演算の結果の以前の比較以降に設定可能な回数だけ前記イベントトリガが発生したと判別したことに基づいて行われる、
装置。 - 前記イベントトリガは、前記結果を記憶するために前記冗長スレッドによって実行されるストア命令である、
請求項9の装置。 - 前記第1スレッド及び前記少なくとも1つの第2スレッドは、前記結果を、以前の符号化値及び初期値のうち少なくとも1つと共にハッシュすることによって、符号化値を生成する、
請求項9又は10の装置。 - 前記第1処理要素と、前記少なくとも1つの第2処理要素と、を含む複数の処理要素をさらに備え、
前記複数の処理要素は、前記結果をハッシュして符号化値を生成するのに使用されるコード値のルックアップテーブルを生成するためにコンパイル中にコードを挿入することによって、前記第1スレッド及び前記少なくとも1つの第2スレッドによって実行されるプログラムコードを修正するように構成されたコンパイラを実装する、
請求項9〜11の何れかの装置。 - 前記第1スレッド及び前記少なくとも1つの第2スレッドのためのカウンタを実装するように構成されたメモリをさらに備え、
前記コンパイラは、前記カウンタを初期化するように構成されており、前記第1スレッド又は前記少なくとも1つの第2スレッドは、前記イベントトリガを実行したことに応じて対応するカウンタをインクリメントし、前記カウンタの値は、前記少なくとも1回の比較を選択的にバイパスするか否かを判別するために、前記設定可能な回数と比較される、
請求項12の装置。 - 前記コンパイラは、前記結果をハッシュし、前記カウンタの値を前記設定可能な回数と比較して前記少なくとも1回の比較を選択的にバイパスするか否かを判別し、前記比較用のイベントトリガが前記設定可能な回数だけ発生したと判別したことに応じて、前記第1スレッド及び前記少なくとも1つの第2スレッドの間で前記符号化値を共有及び比較するためのコードを挿入するように構成されている、
請求項13の装置。 - 前記コンパイラは、前記第1スレッド及び前記少なくとも1つの第2スレッドが前記プログラムコードを終了する前に、未処理の共有及び比較演算を実行するか否かを判別するためのコードを挿入するように構成されている、
請求項14の装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/188,304 US10013240B2 (en) | 2016-06-21 | 2016-06-21 | Fingerprinting of redundant threads using compiler-inserted transformation code |
US15/188,304 | 2016-06-21 | ||
PCT/US2017/038524 WO2017223189A1 (en) | 2016-06-21 | 2017-06-21 | Fingerprinting of redundant threads using compiler-inserted transformation code |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2019526102A JP2019526102A (ja) | 2019-09-12 |
JP6957528B2 true JP6957528B2 (ja) | 2021-11-02 |
Family
ID=60659566
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018565057A Active JP6957528B2 (ja) | 2016-06-21 | 2017-06-21 | コンパイラ挿入変換コードを用いた冗長スレッドのフィンガープリンティング |
Country Status (6)
Country | Link |
---|---|
US (1) | US10013240B2 (ja) |
EP (1) | EP3472698B1 (ja) |
JP (1) | JP6957528B2 (ja) |
KR (1) | KR102410349B1 (ja) |
CN (1) | CN109313551B (ja) |
WO (1) | WO2017223189A1 (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10042687B2 (en) * | 2016-08-08 | 2018-08-07 | Advanced Micro Devices, Inc. | Paired value comparison for redundant multi-threading operations |
US10467390B1 (en) | 2016-08-18 | 2019-11-05 | Snap Inc. | Cyclically dependent checks for software tamper-proofing |
US10817289B2 (en) * | 2017-10-03 | 2020-10-27 | Nvidia Corp. | Optimizing software-directed instruction replication for GPU error detection |
CN108228256B (zh) * | 2018-02-05 | 2022-01-04 | 武汉斗鱼网络科技有限公司 | 代码同步方法、装置、计算机可读介质及终端 |
US10540260B2 (en) * | 2018-02-23 | 2020-01-21 | Intel Corporation | Dynamic instruction latency management in SIMD machines |
US10691430B2 (en) * | 2018-08-27 | 2020-06-23 | Intel Corporation | Latency scheduling mehanism |
GB2579590B (en) | 2018-12-04 | 2021-10-13 | Imagination Tech Ltd | Workload repetition redundancy |
GB2579591B (en) * | 2018-12-04 | 2022-10-26 | Imagination Tech Ltd | Buffer checker |
CN112668004B (zh) * | 2019-10-16 | 2022-06-21 | 武汉斗鱼网络科技有限公司 | 一种基于llvm的函数校验方法及相关装置 |
CN112463218B (zh) * | 2020-11-27 | 2022-12-09 | 成都海光微电子技术有限公司 | 指令发射控制方法及电路、数据处理方法及电路 |
GB2619357A (en) * | 2022-05-30 | 2023-12-06 | Advanced Risc Mach Ltd | Data processors |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004059481A2 (en) * | 2002-12-16 | 2004-07-15 | Globespanvirata Incorporated | System and method for scheduling thread execution |
US7243262B2 (en) * | 2003-08-29 | 2007-07-10 | Intel Corporation | Incremental checkpointing in a multi-threaded architecture |
US7861228B2 (en) * | 2003-12-03 | 2010-12-28 | Hewlett-Packard Development Company, L.P. | Variable delay instruction for implementation of temporal redundancy |
US20050193283A1 (en) * | 2003-12-30 | 2005-09-01 | Reinhardt Steven K. | Buffering unchecked stores for fault detection in redundant multithreading systems using speculative memory support |
US7353365B2 (en) | 2004-09-29 | 2008-04-01 | Intel Corporation | Implementing check instructions in each thread within a redundant multithreading environments |
US7321989B2 (en) | 2005-01-05 | 2008-01-22 | The Aerospace Corporation | Simultaneously multithreaded processing and single event failure detection method |
US7774787B2 (en) * | 2005-01-11 | 2010-08-10 | Microsoft Corporation | Method for specifying and verifying multi-threaded object-oriented programs with invariants |
US7624448B2 (en) * | 2006-03-04 | 2009-11-24 | 21St Century Technologies, Inc. | Intelligent intrusion detection system utilizing enhanced graph-matching of network activity with context data |
US8266697B2 (en) * | 2006-03-04 | 2012-09-11 | 21St Century Technologies, Inc. | Enabling network intrusion detection by representing network activity in graphical form utilizing distributed data sensors to detect and transmit activity data |
US8190982B2 (en) * | 2006-09-29 | 2012-05-29 | University Of Connecticut | Error-tolerant multi-threaded memory systems with reduced error accumulation |
US8484516B2 (en) * | 2007-04-11 | 2013-07-09 | Qualcomm Incorporated | Inter-thread trace alignment method and system for a multi-threaded processor |
US7865770B2 (en) * | 2008-01-10 | 2011-01-04 | Advanced Micro Devices, Inc. | Processor including efficient signature generation for logic error protection |
US8359578B2 (en) * | 2008-10-01 | 2013-01-22 | Nec Laboratories America, Inc. | Symbolic reduction of dynamic executions of concurrent programs |
US9081688B2 (en) * | 2008-12-30 | 2015-07-14 | Intel Corporation | Obtaining data for redundant multithreading (RMT) execution |
US9594648B2 (en) * | 2008-12-30 | 2017-03-14 | Intel Corporation | Controlling non-redundant execution in a redundant multithreading (RMT) processor |
US10235220B2 (en) * | 2012-01-23 | 2019-03-19 | Advanced Micro Devices, Inc. | Multithreaded computing |
JP5850774B2 (ja) | 2012-03-22 | 2016-02-03 | ルネサスエレクトロニクス株式会社 | 半導体集積回路装置及びそれを用いたシステム |
US9047192B2 (en) | 2012-12-21 | 2015-06-02 | Advanced Micro Devices, Inc. | Signature-based store checking buffer |
US9026847B2 (en) | 2012-12-21 | 2015-05-05 | Advanced Micro Devices, Inc. | Hardware based redundant multi-threading inside a GPU for improved reliability |
US9274904B2 (en) * | 2013-06-18 | 2016-03-01 | Advanced Micro Devices, Inc. | Software only inter-compute unit redundant multithreading for GPUs |
CN103699458B (zh) * | 2013-06-28 | 2017-02-01 | 中国科学院计算技术研究所 | 一种提高动态冗余多线程性能和降低功耗开销的方法及系统 |
US9317379B2 (en) * | 2014-01-24 | 2016-04-19 | International Business Machines Corporation | Using transactional execution for reliability and recovery of transient failures |
US9535696B1 (en) * | 2016-01-04 | 2017-01-03 | International Business Machines Corporation | Instruction to cancel outstanding cache prefetches |
-
2016
- 2016-06-21 US US15/188,304 patent/US10013240B2/en active Active
-
2017
- 2017-06-21 EP EP17816132.9A patent/EP3472698B1/en active Active
- 2017-06-21 JP JP2018565057A patent/JP6957528B2/ja active Active
- 2017-06-21 KR KR1020187036106A patent/KR102410349B1/ko active IP Right Grant
- 2017-06-21 WO PCT/US2017/038524 patent/WO2017223189A1/en unknown
- 2017-06-21 CN CN201780036459.9A patent/CN109313551B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
WO2017223189A1 (en) | 2017-12-28 |
CN109313551A (zh) | 2019-02-05 |
KR20190010592A (ko) | 2019-01-30 |
EP3472698B1 (en) | 2023-01-11 |
KR102410349B1 (ko) | 2022-06-17 |
US20170364332A1 (en) | 2017-12-21 |
CN109313551B (zh) | 2021-02-23 |
JP2019526102A (ja) | 2019-09-12 |
US10013240B2 (en) | 2018-07-03 |
EP3472698A1 (en) | 2019-04-24 |
EP3472698A4 (en) | 2020-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6957528B2 (ja) | コンパイラ挿入変換コードを用いた冗長スレッドのフィンガープリンティング | |
KR102098548B1 (ko) | 블록체인에서 블록 데이터를 검증하기 위한 방법 및 장치 | |
US11263520B2 (en) | Instruction generation process multiplexing method and device | |
US20210124644A1 (en) | Securing against errors in an error correcting code (ecc) implemented in an automotive system | |
US8606791B2 (en) | Concurrently accessed hash table | |
CN107807839B (zh) | 一种修改虚拟机内存数据的方法、装置及电子设备 | |
KR101105474B1 (ko) | 범위 검출을 수행하기 위한 명령어 및 로직 | |
EP3757860A1 (en) | Providing improved efficiency for metadata usages | |
JP2020091868A (ja) | 作業負荷の繰り返し冗長化 | |
CN109661652A (zh) | 使用系统调用序列的异常检测 | |
JP5507573B2 (ja) | ポイズン・ビット・エラー検査コード手法 | |
CN109074256A (zh) | 在执行向量操作时管理地址冲突的装置及方法 | |
JP6205168B2 (ja) | 並列構造化重複検出を利用する並列モデル検査のためのシステムおよび方法 | |
US9734620B2 (en) | Apparatus and method for graphics state management | |
US20210103564A1 (en) | Garbage collection for hash-based data structures | |
CN107908954B (zh) | 一种基于地址压缩技术的动态检测gpu上内存溢出的方法 | |
US10496433B2 (en) | Modification of context saving functions | |
US12019629B2 (en) | Hash-based data structure | |
US20130166887A1 (en) | Data processing apparatus and data processing method | |
Soroushnia et al. | High performance pattern matching on heterogeneous platform | |
CN109871355B (zh) | 一种快照元数据存储方法、装置及设备、介质 | |
US20140344793A1 (en) | Apparatus and method for executing code | |
US11630667B2 (en) | Dedicated vector sub-processor system | |
US10078586B2 (en) | Out-of-range reference detection device, method, and recording medium | |
US20240184670A1 (en) | Alias-free tagged error correcting codes for machine memory operations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200616 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20210430 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210601 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210826 |
|
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: 20210907 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20211006 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6957528 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |