KR100854720B1 - 루프 통합 방법 및 루프 통합 장치 - Google Patents
루프 통합 방법 및 루프 통합 장치 Download PDFInfo
- Publication number
- KR100854720B1 KR100854720B1 KR1020070028856A KR20070028856A KR100854720B1 KR 100854720 B1 KR100854720 B1 KR 100854720B1 KR 1020070028856 A KR1020070028856 A KR 1020070028856A KR 20070028856 A KR20070028856 A KR 20070028856A KR 100854720 B1 KR100854720 B1 KR 100854720B1
- Authority
- KR
- South Korea
- Prior art keywords
- guard
- loop
- register
- instruction
- period
- Prior art date
Links
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
-
- 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
- G06F8/4441—Reducing the execution time required by the program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
Abstract
Description
Claims (14)
- 다중 루프 중 가장 안쪽 루프(inner-most loop)의 외부 연산이 조건문의 조건이 만족되는 경우에 실행되도록 하여 상기 가장 안쪽 루프를 제거하는 단계;상기 조건문을 이프 컨버젼(if conversion)하여 가드 코드를 생성하는 단계;레지스터에 저장된 상기 가장 안쪽 루프의 반복(iteration) 횟수에 상응하는 주기와 관련된 정보를 기초로, 상기 가드 코드의 가드의 논리값을 결정하는 명령어를 이용하여 상기 가드의 논리값을 결정하는 단계; 및상기 결정된 가드의 논리값에 따라 상기 가장 안쪽 루프의 외부 연산을 실행하는 단계를 포함하는 것을 특징으로 하는 루프 통합 방법.
- 제1항에 있어서,상기 레지스터에 저장된 상기 주기와 관련된 정보는 복수의 비트들을 포함하고,상기 명령어는 상기 복수의 비트들 중 어느 하나의 비트를 상기 가드의 논리값으로 결정하는 것을 특징으로 하는 루프 통합 방법.
- 제1항에 있어서,상기 가드의 논리값을 결정하는 단계는상기 주기와 관련된 정보를 상기 레지스터에 저장하고, 상기 명령어가 호출될 때마다 1씩 증가하는 논리값을 갖는 카운터의 출력과 상기 레지스터에 저장된 상기 주기와 관련된 정보를 비교하여 상기 가드의 논리값을 결정하는 것을 특징으로 하는 루프 통합 방법.
- 제1항에 있어서,상기 가드의 논리값을 결정하는 단계는상기 레지스터의 상기 주기에 상응하는 주소에 제1 레벨값을 저장하고, 상기 명령어가 호출될 때마다 상기 레지스터에 대한 리드(read) 주소를 증가시켜서 상기 가드의 논리값을 결정하는 것을 특징으로 하는 루프 통합 방법.
- 삭제
- 제1항에 있어서,상기 다중 루프는 이중 루프인 것을 특징으로 하는 루프 통합 방법.
- 다중 루프 중 가장 안쪽 루프의 외부 연산이 조건문의 조건이 만족되는 경우에 실행되도록 하여 상기 가장 안쪽 루프가 제거되고 상기 조건문이 가드 코드로 이프 컨버젼되어있는 프로그램이 기록된 기록매체에 있어서, 레지스터에 저장된 상기 가장 안쪽 루프의 반복 횟수에 상응하는 주기와 관련된 정보를 기초로, 상기 가드 코드의 가드가 결정되는 것을 특징으로 하는 프로그램이 기록된 기록 매체.
- 제1항, 제3항, 제4항 또는 제6항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
- 다중 루프 중 가장 안쪽 루프(inner-most loop)의 외부 연산이 조건문의 조건이 만족되는 경우에 실행되도록 하여 상기 가장 안쪽 루프를 제거하는 루프 제거부;상기 조건문을 이프 컨버젼(if conversion)하여 가드 코드를 생성 가드 코드 생성부;레지스터에 저장된 상기 가장 안쪽 루프의 반복(iteration) 횟수에 상응하는 주기와 관련된 정보를 기초로, 상기 가드 코드의 가드의 논리값을 결정하는 명령어를 이용하여 상기 가드의 논리값을 결정하는 가드 변환부; 및상기 결정된 가드의 논리값에 따라 상기 가장 안쪽 루프의 외부 연산을 실행하는 연산 실행부를 포함하는 것을 특징으로 하는 루프 통합 장치.
- 제9항에 있어서,상기 레지스터에 저장된 상기 주기와 관련된 정보는 복수의 비트들을 포함하고,상기 명령어는 상기 복수의 비트들 중 어느 하나의 비트를 상기 가드의 논리값으로 결정하는 것을 특징으로 하는 루프 통합 장치.
- 제9항에 있어서,상기 가드 변환부는상기 주기와 관련된 정보를 상기 레지스터에 저장하고, 상기 명령어가 호출될 때마다 1씩 증가하는 논리값을 갖는 카운터의 출력과 상기 레지스터에 저장된 상기 주기와 관련된 정보를 비교하여 상기 가드의 논리값을 결정하는 것을 특징으로 하는 루프 통합 장치.
- 제9항에 있어서,상기 가드 변환부는상기 레지스터의 상기 주기에 상응하는 주소에 제1 레벨값을 저장하고, 상기 명령어가 호출될 때마다 상기 레지스터의 리드 주소를 증가시켜서 상기 가드의 논리값을 결정하는 것을 특징으로 하는 루프 통합 장치.
- 삭제
- 제9항에 있어서,상기 다중 루프는 이중 루프인 것을 특징으로 하는 루프 통합 장치.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070028856A KR100854720B1 (ko) | 2007-03-23 | 2007-03-23 | 루프 통합 방법 및 루프 통합 장치 |
US11/843,357 US8549507B2 (en) | 2007-03-23 | 2007-08-22 | Loop coalescing method and loop coalescing device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020070028856A KR100854720B1 (ko) | 2007-03-23 | 2007-03-23 | 루프 통합 방법 및 루프 통합 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR100854720B1 true KR100854720B1 (ko) | 2008-08-27 |
Family
ID=39775994
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020070028856A KR100854720B1 (ko) | 2007-03-23 | 2007-03-23 | 루프 통합 방법 및 루프 통합 장치 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8549507B2 (ko) |
KR (1) | KR100854720B1 (ko) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9043774B2 (en) * | 2008-02-12 | 2015-05-26 | William G. Bently | Systems and methods for information flow analysis |
US10261793B2 (en) | 2011-12-16 | 2019-04-16 | International Business Machines Corporation | Instruction predication using instruction address pattern matching |
US20140189666A1 (en) * | 2012-12-27 | 2014-07-03 | Scott A. Krig | Automatic pipeline composition |
US11093224B2 (en) * | 2019-04-24 | 2021-08-17 | International Business Machines Corporation | Compilation to reduce number of instructions for deep learning processor |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH064300A (ja) * | 1992-06-18 | 1994-01-14 | Fujitsu Ltd | 多重ループの一重化装置 |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5361354A (en) * | 1991-12-17 | 1994-11-01 | Cray Research, Inc. | Optimization of alternate loop exits |
US5634046A (en) * | 1994-09-30 | 1997-05-27 | Microsoft Corporation | General purpose use of a stack pointer register |
JPH08115220A (ja) | 1994-10-14 | 1996-05-07 | Hitachi Ltd | ループ最適化方法 |
US5848285A (en) * | 1995-12-26 | 1998-12-08 | Cypress Semiconductor Corporation | Macrocell having a dual purpose input register for use in a logic device |
US5958048A (en) * | 1996-08-07 | 1999-09-28 | Elbrus International Ltd. | Architectural support for software pipelining of nested loops |
JPH10124315A (ja) * | 1996-10-18 | 1998-05-15 | Hitachi Ltd | 分岐処理方法およびそのための情報処理装置 |
US5822593A (en) * | 1996-12-06 | 1998-10-13 | Xerox Corporation | High-level loop fusion |
GB2323190B (en) * | 1997-03-14 | 2001-09-19 | Nokia Mobile Phones Ltd | Executing nested loops |
US6041181A (en) * | 1997-07-23 | 2000-03-21 | International Business Machines Corporation | Method of, system for, and computer program product for providing quick fusion in WHERE constructs |
US6070011A (en) * | 1997-10-21 | 2000-05-30 | Hewlett-Packard Co. | Compiler for performing a loop fusion, dependent upon loop peeling and/or loop reversal |
US6301706B1 (en) * | 1997-12-31 | 2001-10-09 | Elbrus International Limited | Compiler method and apparatus for elimination of redundant speculative computations from innermost loops |
JP3324486B2 (ja) | 1998-01-27 | 2002-09-17 | 日本電気株式会社 | ループ最適化方式およびそのプログラム記録媒体 |
JP3887097B2 (ja) | 1998-02-24 | 2007-02-28 | 富士通株式会社 | コンパイル方法,コンパイル装置および、コンパイル用プログラムを記憶したコンピュータ読み取り可能な記憶媒体 |
US6243734B1 (en) * | 1998-10-30 | 2001-06-05 | Intel Corporation | Computer product and method for sparse matrices |
US6820250B2 (en) * | 1999-06-07 | 2004-11-16 | Intel Corporation | Mechanism for software pipelining loop nests |
CA2288614C (en) * | 1999-11-08 | 2004-05-11 | Robert J. Blainey | Loop allocation for optimizing compilers |
US7302557B1 (en) * | 1999-12-27 | 2007-11-27 | Impact Technologies, Inc. | Method and apparatus for modulo scheduled loop execution in a processor architecture |
US6754893B2 (en) * | 1999-12-29 | 2004-06-22 | Texas Instruments Incorporated | Method for collapsing the prolog and epilog of software pipelined loops |
US20020144092A1 (en) * | 2001-01-31 | 2002-10-03 | Siroyan Limited. | Handling of loops in processors |
US7302680B2 (en) * | 2002-11-04 | 2007-11-27 | Intel Corporation | Data repacking for memory accesses |
US7249248B2 (en) * | 2002-11-25 | 2007-07-24 | Intel Corporation | Method, apparatus, and system for variable increment multi-index looping operations |
US7086047B1 (en) * | 2002-12-04 | 2006-08-01 | Xilinx, Inc. | Determining hardware generated by high level language compilation through loop optimizations |
CA2430383A1 (en) * | 2003-05-30 | 2004-11-30 | Ibm Canada Limited - Ibm Canada Limitee | Efficiently releasing locks when an exception occurs |
US9977674B2 (en) * | 2003-10-14 | 2018-05-22 | Intel Corporation | Micro-operation generator for deriving a plurality of single-destination micro-operations from a given predicated instruction |
JP2005222262A (ja) | 2004-02-05 | 2005-08-18 | Hitachi Ltd | ループ融合方法及びプログラムコードの生成方法 |
US7210024B2 (en) * | 2005-02-10 | 2007-04-24 | Qualcomm Incorporated | Conditional instruction execution via emissary instruction for condition evaluation |
US7689980B2 (en) * | 2005-09-30 | 2010-03-30 | Intel Corporation | Splitting the computation space to optimize parallel code |
US7757222B2 (en) * | 2005-09-30 | 2010-07-13 | Intel Corporation | Generating efficient parallel code using partitioning, coalescing, and degenerative loop and guard removal |
US8136102B2 (en) * | 2006-06-20 | 2012-03-13 | Google Inc. | Systems and methods for compiling an application for a parallel-processing computer system |
US8146066B2 (en) * | 2006-06-20 | 2012-03-27 | Google Inc. | Systems and methods for caching compute kernels for an application running on a parallel-processing computer system |
US8136104B2 (en) * | 2006-06-20 | 2012-03-13 | Google Inc. | Systems and methods for determining compute kernels for an application in a parallel-processing computer system |
US8234636B2 (en) * | 2006-09-12 | 2012-07-31 | International Business Machines Corporation | Source code modification technique |
US8225295B2 (en) * | 2007-09-21 | 2012-07-17 | Jens Palsberg | Register allocation by puzzle solving |
-
2007
- 2007-03-23 KR KR1020070028856A patent/KR100854720B1/ko active IP Right Grant
- 2007-08-22 US US11/843,357 patent/US8549507B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH064300A (ja) * | 1992-06-18 | 1994-01-14 | Fujitsu Ltd | 多重ループの一重化装置 |
Also Published As
Publication number | Publication date |
---|---|
US20080235657A1 (en) | 2008-09-25 |
US8549507B2 (en) | 2013-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5707011B2 (ja) | 統合分岐先・述語予測 | |
KR100875836B1 (ko) | 병렬 처리 vliw 컴퓨터를 위한 인스트럭션 명령어 압축장치 및 그 방법 | |
US9946523B2 (en) | Multiple pass compiler instrumentation infrastructure | |
JP5583514B2 (ja) | バイナリコードを最適化するコンパイル方法、及びそのコンパイラシステム、並びにコンピュータ・プログラム | |
JP2004302706A (ja) | プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム | |
KR100854720B1 (ko) | 루프 통합 방법 및 루프 통합 장치 | |
JP2000207223A (ja) | 並列処理向けのプログラム処理方法および装置、並びに並列処理向けのプログラム処理を実行するプログラムを記録した記録媒体および並列処理向けの命令列を記録した記録媒体 | |
JP2001166947A (ja) | コンパイル処理方式 | |
US10325844B2 (en) | Modifying execution flow in save-to-return code scenarios | |
US7673284B2 (en) | Method and system for versioning codes based on relative alignment for single instruction multiple data units | |
KR102147355B1 (ko) | 프로그램 변환 방법 및 장치 | |
US8812410B2 (en) | Efficient data profiling to optimize system performance | |
US10769063B2 (en) | Spin-less work-stealing for parallel copying garbage collection | |
US20120017070A1 (en) | Compile system, compile method, and storage medium storing compile program | |
US20080282237A1 (en) | Method and Apparatus For Generating Execution Equivalence Information | |
KR20220067961A (ko) | 프로세싱-인-메모리 및 프로세싱-인-메모리를 이용한 인스트럭션 출력 방법 | |
CN113031952A (zh) | 深度学习模型的执行代码的确定方法、装置及存储介质 | |
JP2011039857A (ja) | プログラム変換処理装置、データ処理装置、プログラム変換処理方法およびデータ処理方法 | |
JP3276479B2 (ja) | コンパイル方式 | |
Koshelev et al. | Interprocedural taint analysis for LLVM-bitcode | |
JP7244756B2 (ja) | 分析プログラム、プログラム分析方法およびプログラム分析装置 | |
JP2019185486A (ja) | コード変換装置、コード変換方法、及びコード変換プログラム | |
JP6254352B2 (ja) | ループのプロローグまたはエピローグの無効演算を処理する装置及び方法 | |
JP3323147B2 (ja) | コンパイル装置、コンパイル方法およびコンパイラプログラムを記録した記録媒体 | |
JP5016288B2 (ja) | 最適化処理方法、及びその言語処理系 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20120716 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20130724 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20140721 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20150716 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20160718 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20170719 Year of fee payment: 10 |
|
FPAY | Annual fee payment |
Payment date: 20180717 Year of fee payment: 11 |
|
FPAY | Annual fee payment |
Payment date: 20190717 Year of fee payment: 12 |