KR101379556B1 - 바이-엔디언 컴파일러를 사용한 코드 최적화 - Google Patents
바이-엔디언 컴파일러를 사용한 코드 최적화 Download PDFInfo
- Publication number
- KR101379556B1 KR101379556B1 KR1020117030086A KR20117030086A KR101379556B1 KR 101379556 B1 KR101379556 B1 KR 101379556B1 KR 1020117030086 A KR1020117030086 A KR 1020117030086A KR 20117030086 A KR20117030086 A KR 20117030086A KR 101379556 B1 KR101379556 B1 KR 101379556B1
- Authority
- KR
- South Korea
- Prior art keywords
- domain
- byte
- pointer
- code
- exchange
- Prior art date
Links
- 238000005457 optimization Methods 0.000 title description 5
- 238000000034 method Methods 0.000 claims abstract description 40
- 230000004044 response Effects 0.000 claims abstract 3
- 230000015654 memory Effects 0.000 claims description 25
- 230000008859 change Effects 0.000 claims description 16
- 230000008569 process Effects 0.000 claims description 11
- 238000004364 calculation method Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 description 15
- 230000014509 gene expression Effects 0.000 description 13
- 230000008901 benefit Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000008030 elimination Effects 0.000 description 4
- 238000003379 elimination reaction Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 101001056699 Homo sapiens Intersectin-2 Proteins 0.000 description 1
- 101000654583 Homo sapiens Splicing factor, suppressor of white-apricot homolog Proteins 0.000 description 1
- 102100025505 Intersectin-2 Human genes 0.000 description 1
- 238000005266 casting Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000013403 standard screening design Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- 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/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
Description
도 2는 본 발명의 일 실시예에 따라 데이터 바이트 순서를 제어함으로써 코드를 최적화하는 방법의 플로우챠트이다.
도 3은 본 발명의 일 실시예에 따른 성능 통계를 저장하기 위한 각종 데이터 기억 장치들의 블록도이다.
도 4는 본 발명의 일 실시예에 따른 시스템의 블록도이다.
Claims (19)
- 컴퓨터 시스템의 프로세서에서 실행되는 컴파일러를 사용해서, 바이트 교환(swap) 연산을 식별하는 단계;
상기 컴파일러를 사용해서, 상기 바이트 교환 연산 및 교환을 허용하는 다른 표현들을 포함하는 도메인을 생성하고, 상기 도메인과 연관된 도메인 엔트리들 및 도메인 엑시트들을 식별하는 단계;
상기 컴파일러를 사용해서, 상기 도메인의 교환을 실행함으로써 성능 이득이 제공될 것이라고 결정하고, 상기 결정에 응답해서, 상기 도메인의 교환을 실행하는 단계; 및
상기 컴퓨터 시스템의 기억 매체에 상기 교환된 도메인을 저장하는 단계
를 포함하는 방법. - 제1항에 있어서,
상기 도메인의 교환을 실행하는 단계는 상기 연관된 도메인 엔트리들 및 도메인 엑시트들 중 적어도 일부의 바이트 순서를 변경하는 단계, 및 상기 도메인의 표현들을 상이한 바이트 순서로 연산되는 대응 연산들로 대체하는 단계를 포함하는 방법. - 제2항에 있어서,
상기 도메인으로의 도메인 엔트리의 바이트 순서를 변경하는 단계는, 상기 도메인 엔트리가 상기 바이트 교환 연산을 포함하면 바이트 교환 연산을 제거하고, 상기 도메인 엔트리가 상기 바이트 교환 연산을 포함하지 않으면 바이트 교환 연산을 삽입하는 단계를 포함하는 방법. - 제2항에 있어서,
상기 도메인으로부터의 도메인 엑시트의 바이트 순서를 변경하는 단계는, 상기 도메인 엑시트가 상기 바이트 교환 연산을 포함하면 바이트 교환 연산을 제거하고, 상기 도메인 엑시트가 상기 바이트 교환 연산을 포함하지 않으면 바이트 교환 연산을 삽입하는 단계를 포함하는 방법. - 제2항에 있어서,
제1 표현으로부터 바이트 교환 연산을 제거하고 제2 표현에 바이트 교환 연산을 삽입하는 단계를 더 포함하고, 상기 제1 표현은 상기 제2 표현의 경로보다 더 인기 있는 경로인 방법. - 제1항에 있어서,
상기 도메인으로부터 제거된 코드의 양에서 상기 도메인에 삽입된 코드의 양을 뺀 것이 임계값보다 더 크다고 결정함으로써 이득을 계산하는 단계를 더 포함하는 방법. - 제6항에 있어서,
상기 이득을 계산하는 단계는 상기 삽입된 코드 및 상기 제거된 코드에 가중치를 주고, 상기 삽입된 코드 및 상기 제거된 코드와 연관된 실행 카운터들을 분석하는 단계를 포함하는 방법. - 제1항에 있어서,
상기 도메인의 교환을 실행하는 단계는 단일 과정으로 상기 도메인의 다수의 연결된 표현들을 최적화하는 단계를 포함하는 방법. - 명령어들이 실행될 때 컴퓨터 시스템이,
상기 컴퓨터 시스템의 프로세서에서의 코드의 실행에 대한 통계 정보를 획득하고 - 상기 통계 정보는 상기 컴퓨터 시스템의 통계 기억 장치에 저장됨 - ;
상기 프로세서에서 실행되는 컴파일러에서, 상기 코드가 연산하는 데이터를 복수의 그룹들로 파싱하며 - 상기 그룹들 각각의 데이터는 상기 코드의 적합한 실행을 위해 동일한 바이트 순서를 가짐 - ;
상기 컴파일러에서, 상기 복수의 그룹들 각각에 대해, 한 그룹의 데이터의 바이트 순서가 프로그래머에게 가시적인지를 결정하고;
상기 바이트 순서가 가시적이지 않은 각각의 그룹에 대해, 상기 컴파일러에서, 상기 바이트 순서의 변경이 성능 이득을 제공하는 지를 결정하며;
상기 바이트 순서의 변경이 성능 이득을 제공하는 각각의 그룹에 대해, 대응 그룹의 바이트 순서를 변경해서 변경된 그룹을 획득하고;
상기 컴퓨터 시스템의 기억 매체에 상기 변경된 그룹들 각각을 저장하도록
하는 상기 명령어들을 포함하는 프로그램을 기록한 컴퓨터 판독가능한 기록매체. - 제9항에 있어서,
실행될 때 상기 컴퓨터 시스템이, 제1 포인터가 제2 포인터에 대한 소스일 때 상기 제1 포인터의 행선지 리스트를 갱신하고, 다른 포인터가 상기 제1 포인터에 대한 소스일 때 상기 제1 포인터의 소스 리스트를 갱신하도록 하는 명령어들을 더 포함하는 프로그램을 기록한 컴퓨터 판독가능한 기록매체. - 제10항에 있어서,
실행될 때 상기 컴퓨터 시스템이, 제3 포인터와 연관된 메모리 액세스가 발생될 때 액세스의 크기로 상기 제3 포인터의 액세스 리스트를 갱신하도록 하는 명령어들을 더 포함하는 프로그램을 기록한 컴퓨터 판독가능한 기록매체. - 제11항에 있어서,
실행될 때 상기 컴퓨터 시스템이, 표현에 대한 바이트 순서 변경으로 인한 성능 이득의 영향을 기반으로 상기 코드의 표현의 이득 카운터를 갱신하도록 하는 명령어들을 더 포함하는 프로그램을 기록한 컴퓨터 판독가능한 기록매체. - 제10항에 있어서,
실행될 때 상기 컴퓨터 시스템이, 상기 소스 리스트 및 상기 행선지 리스트를 통해 타동적으로 달성 가능한 포인터들의 리스트를 생성하도록 하는 명령어들을 더 포함하는 프로그램을 기록한 컴퓨터 판독가능한 기록매체. - 제13항에 있어서,
실행될 때 상기 컴퓨터 시스템이, 상기 소스 리스트 및 상기 행선지 리스트를 통해 타동적으로 달성 가능한 상기 포인터들의 상기 리스트의 유니온이 하나의 비제로 요소(non-zero element)보다 더 많이 포함하지 않고 타동적으로 액세스 가능한 모든 포인터들에 대한 이득 계산의 합이 양수이면 상기 바이트 순서의 변경이 성능 이득을 제공한다고 결정하도록 하는 명령어들을 더 포함하는 프로그램을 기록한 컴퓨터 판독가능한 기록매체. - 명령어들을 실행하는 프로세서 - 상기 프로세서는, 상기 프로세서에서의 코드의 실행에 대한 통계 정보를 획득하고, 상기 코드가 연산하는 데이터를 복수의 그룹들로 파싱하며 - 상기 그룹들 각각의 데이터는 상기 코드의 적합한 실행을 위해 동일한 바이트 순서를 가짐 - , 상기 바이트 순서가 프로그래머에게 가시적이지 않은 각각의 그룹에 대해, 상기 바이트 순서의 변경이 성능 이득을 제공하는 지를 결정하고 만일 그렇다면 대응 그룹의 바이트 순서를 변경해서 변경된 그룹을 획득하고, 본 시스템의 제1 기억 매체에 상기 변경된 그룹들 각각을 저장하도록, 컴파일러를 실행시킴 - ; 및
상기 코드의 각각의 포인터에 대한 소스 리스트, 행선지 리스트, 및 액세스 리스트를 저장하는 기억 장치
를 포함하는 시스템. - 제15항에 있어서,
상기 컴파일러는, 제1 포인터가 제2 포인터에 대한 소스일 때 상기 제1 포인터의 행선지 리스트를 갱신하고, 다른 포인터가 상기 제1 포인터에 대한 소스일 때 상기 제1 포인터의 소스 리스트를 갱신하며, 제3 포인터와 연관된 메모리 액세스가 발생될 때 액세스의 크기로 상기 제3 포인터의 액세스 리스트를 갱신하는 시스템. - 제16항에 있어서,
상기 기억 장치는 표현에 대한 바이트 순서 변경으로 인한 성능 이득의 영향을 기반으로 갱신 가능한 이득 카운터를 더 포함하는 시스템. - 제15항에 있어서,
상기 컴파일러는, 바이트 교환 연산을 식별하고, 상기 바이트 교환 연산 및 교환을 허용하는 다른 표현들을 포함하는 도메인을 생성하며, 상기 도메인과 연관된 도메인 엔트리들 및 도메인 엑시트들을 식별하고, 상기 도메인의 교환을 실행함으로써 성능 이득이 제공될 것이라고 결정하는 시스템. - 제18항에 있어서,
상기 컴파일러는, 상기 결정에 응답해서, 상기 도메인의 교환을 실행하고, 상기 제1 기억 매체에 상기 교환된 도메인을 저장하는 시스템.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/RU2009/000316 WO2010151167A1 (en) | 2009-06-25 | 2009-06-25 | Optimizing code using a bi-endian compiler |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20120058467A KR20120058467A (ko) | 2012-06-07 |
KR101379556B1 true KR101379556B1 (ko) | 2014-04-10 |
Family
ID=43386743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020117030086A KR101379556B1 (ko) | 2009-06-25 | 2009-06-25 | 바이-엔디언 컴파일러를 사용한 코드 최적화 |
Country Status (8)
Country | Link |
---|---|
US (1) | US8910114B2 (ko) |
EP (1) | EP2446352A4 (ko) |
JP (1) | JP5392689B2 (ko) |
KR (1) | KR101379556B1 (ko) |
CN (1) | CN102804142B (ko) |
RU (1) | RU2515546C2 (ko) |
SG (1) | SG175951A1 (ko) |
WO (1) | WO2010151167A1 (ko) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140100841A1 (en) * | 2012-10-09 | 2014-04-10 | Apple Inc. | Testing a Hardware Emulation Model of a Circuit with Software Checker Routines Designed for an RTL Model of the Circuit |
US9619214B2 (en) * | 2014-08-13 | 2017-04-11 | International Business Machines Corporation | Compiler optimizations for vector instructions |
US9588746B2 (en) | 2014-12-19 | 2017-03-07 | International Business Machines Corporation | Compiler method for generating instructions for vector operations on a multi-endian processor |
US10169014B2 (en) | 2014-12-19 | 2019-01-01 | International Business Machines Corporation | Compiler method for generating instructions for vector operations in a multi-endian instruction set |
US9880821B2 (en) | 2015-08-17 | 2018-01-30 | International Business Machines Corporation | Compiler optimizations for vector operations that are reformatting-resistant |
US9594668B1 (en) | 2015-09-04 | 2017-03-14 | International Business Machines Corporation | Debugger display of vector register contents after compiler optimizations for vector instructions |
US11924340B2 (en) * | 2021-11-30 | 2024-03-05 | Oracle International Corporation | Cryptographically secure shuffle with multi-layer randomness |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060125663A1 (en) | 2004-12-13 | 2006-06-15 | Adiletta Matthew J | Method and apparatus for implementing a bi-endian capable compiler |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH05119960A (ja) * | 1991-10-25 | 1993-05-18 | Oki Electric Ind Co Ltd | バイトオーダ依存コーデイング検出方法 |
US5828884A (en) | 1996-05-23 | 1998-10-27 | Advanced Micro Devices, Inc. | Method for compiling a software program and executing on a system which converts data between different endian formats |
US6578193B1 (en) | 1998-03-24 | 2003-06-10 | Novell, Inc. | Endian-neutral loader for interpretive environment |
US7200841B2 (en) | 2003-04-22 | 2007-04-03 | Transitive Limited | Method and apparatus for performing lazy byteswapping optimizations during program code conversion |
GB0309056D0 (en) * | 2003-04-22 | 2003-05-28 | Transitive Technologies Ltd | Block translation optimizations for program code conversion |
US7543284B2 (en) * | 2003-04-22 | 2009-06-02 | Transitive Limited | Partial dead code elimination optimizations for program code conversion |
US7418699B2 (en) * | 2004-02-20 | 2008-08-26 | Intel Corporation | Method and system for performing link-time code optimization without additional code analysis |
US20070016895A1 (en) * | 2005-07-15 | 2007-01-18 | Microsoft Corporation | Selective omission of endian translation to enhance emulator performance |
US7509463B2 (en) | 2005-12-01 | 2009-03-24 | Sony Computer Entertainment, Inc. | Cell processor atomic compare and swap using dedicated synergistic processor element |
US8010957B2 (en) * | 2006-08-01 | 2011-08-30 | International Business Machines Corporation | Compiler for eliminating redundant read-modify-write code sequences in non-vectorizable code |
CN100470484C (zh) | 2007-02-05 | 2009-03-18 | 华南理工大学 | 一种基于hpi模型的热插拔处理方法 |
-
2009
- 2009-06-25 CN CN200980160069.8A patent/CN102804142B/zh not_active Expired - Fee Related
- 2009-06-25 KR KR1020117030086A patent/KR101379556B1/ko not_active IP Right Cessation
- 2009-06-25 EP EP09846596A patent/EP2446352A4/en not_active Withdrawn
- 2009-06-25 US US13/383,427 patent/US8910114B2/en not_active Expired - Fee Related
- 2009-06-25 SG SG2011082187A patent/SG175951A1/en unknown
- 2009-06-25 WO PCT/RU2009/000316 patent/WO2010151167A1/en active Application Filing
- 2009-06-25 JP JP2012514913A patent/JP5392689B2/ja not_active Expired - Fee Related
- 2009-06-25 RU RU2011152760/08A patent/RU2515546C2/ru not_active IP Right Cessation
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060125663A1 (en) | 2004-12-13 | 2006-06-15 | Adiletta Matthew J | Method and apparatus for implementing a bi-endian capable compiler |
Also Published As
Publication number | Publication date |
---|---|
CN102804142A (zh) | 2012-11-28 |
JP2012529698A (ja) | 2012-11-22 |
US8910114B2 (en) | 2014-12-09 |
RU2515546C2 (ru) | 2014-05-10 |
EP2446352A4 (en) | 2012-11-21 |
KR20120058467A (ko) | 2012-06-07 |
RU2011152760A (ru) | 2013-10-27 |
JP5392689B2 (ja) | 2014-01-22 |
CN102804142B (zh) | 2016-03-02 |
EP2446352A1 (en) | 2012-05-02 |
US20120185836A1 (en) | 2012-07-19 |
SG175951A1 (en) | 2011-12-29 |
WO2010151167A1 (en) | 2010-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101379556B1 (ko) | 바이-엔디언 컴파일러를 사용한 코드 최적화 | |
US9798528B2 (en) | Software solution for cooperative memory-side and processor-side data prefetching | |
EP3028149B1 (en) | Software development tool | |
JP5473768B2 (ja) | マルチパス動的プロファイリングのためのコンピュータに実行させる方法、システム及びコンピュータ・プログラム | |
US8886887B2 (en) | Uniform external and internal interfaces for delinquent memory operations to facilitate cache optimization | |
JPH09330233A (ja) | 最適目的コード生成方法 | |
CN105224452B (zh) | 一种针对科学计算程序静态分析性能的预测代价优化方法 | |
US8984231B2 (en) | Methods and apparatus to perform adaptive pre-fetch operations in managed runtime environments | |
JP2007286671A (ja) | ソフトウェア/ハードウェア分割プログラム、および分割方法。 | |
US7143404B2 (en) | Profile-guided data layout | |
US9250939B2 (en) | Information processing device, profile target determining program, and method | |
US20030088863A1 (en) | Method and apparatus for selecting references for prefetching in an optimizing compiler | |
US20030088864A1 (en) | Method and apparatus for inserting prefetch instructions in an optimizing compiler | |
US7779393B1 (en) | System and method for efficient verification of memory consistency model compliance | |
KR101503620B1 (ko) | 지능형 아키텍처 생성기 | |
CN114237612A (zh) | 程序代码的编译方法、装置、电子设备及存储介质 | |
US9940267B2 (en) | Compiler global memory access optimization in code regions using most appropriate base pointer registers | |
CN116775127B (zh) | 一种基于RetroWrite框架的静态符号执行插桩方法 | |
JP3638171B2 (ja) | 資源割付装置 | |
JPH10320212A (ja) | キャッシュ向け最適化方法 | |
Karuri et al. | Memory access micro-profiling for asip design | |
Doerfert et al. | Polyhedral expression propagation | |
CN114217806B (zh) | 基于cache写暗示机制的编译优化方法 | |
CN118672588A (zh) | 智能合约编译方法、系统、电子设备和目标代码运行方法 | |
Fougner | Increasing energy efficiency and instruction scheduling by software prefetching |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
PA0105 | International application |
Patent event date: 20111215 Patent event code: PA01051R01D Comment text: International Patent Application |
|
PA0201 | Request for examination | ||
PG1501 | Laying open of application | ||
E902 | Notification of reason for refusal | ||
PE0902 | Notice of grounds for rejection |
Comment text: Notification of reason for refusal Patent event date: 20130619 Patent event code: PE09021S01D |
|
E701 | Decision to grant or registration of patent right | ||
PE0701 | Decision of registration |
Patent event code: PE07011S01D Comment text: Decision to Grant Registration Patent event date: 20131231 |
|
GRNT | Written decision to grant | ||
PR0701 | Registration of establishment |
Comment text: Registration of Establishment Patent event date: 20140324 Patent event code: PR07011E01D |
|
PR1002 | Payment of registration fee |
Payment date: 20140324 End annual number: 3 Start annual number: 1 |
|
PG1601 | Publication of registration | ||
FPAY | Annual fee payment |
Payment date: 20170302 Year of fee payment: 4 |
|
PR1001 | Payment of annual fee |
Payment date: 20170302 Start annual number: 4 End annual number: 4 |
|
LAPS | Lapse due to unpaid annual fee | ||
PC1903 | Unpaid annual fee |
Termination category: Default of registration fee Termination date: 20190104 |