오브젝트 코드 옵티마이저
Object code optimizer오브젝트 코드 옵티마이저는 포스트 패스 옵티마이저 또는 코드의 작은 섹션의 경우 소스 언어 컴파일 스텝(오브젝트 코드 또는 바이너리 파일)에서 출력을 가져와 보다 알고리즘적으로 효율적인 대체 코드(일반적으로 향상된 spee)로 코드 식별 가능 섹션을 대체하려고 합니다.d)
예
- "IBM Automatic Binary Optimizer for z/OS[1]"(ABO)는 소스를 다시 컴파일할 필요 없이 IBM[2] Z 메인프레임에서 COBOL 애플리케이션의 성능을 최적화하도록 설계된 최첨단 기술로 2015년에 도입되었습니다.최신 Enterprise COBOL에 [3]탑재된 고급 최적화 기술을 사용합니다.ABO는 프로그램 로직에 영향을 주지 않고 컴파일된 바이너리를 최적화합니다.그 결과, 애플리케이션의 실행 속도는 빨라지지만 동작은 변하지 않기 때문에 테스트 작업을 줄일 수 있습니다.클라이언트는 일반적으로 새 컴파일러 또는 IBM Z 하드웨어 버전으로 업그레이드할 때 코드의 100%를 재컴파일하지 않으므로, 재컴파일되지 않은 코드는 새 IBM Z 하드웨어의 기능을 활용할 수 없습니다.이제 ABO를 통해 고객은 비즈니스 크리티컬 COBOL 애플리케이션의 CPU 활용률과 운영 비용을 절감할 수 있는 옵션이 하나 더 생겼습니다.ABO를 시스템에 설치하지 않고도 ABO 평가판 클라우드 서비스를 통해 ABO를 사용해 볼 수 있습니다.
- 최초의 "COBOL 옵티마이저"는 1970년대 중반 Capex Corporation에 의해 COBOL용으로 개발되었습니다.이 경우, 이러한 유형의 최적화 도구는 표준 IBM COBOL 컴파일러의 '약점'에 대한 지식에 의존했으며, 실제로 객체 코드의 섹션을 보다 효율적인 코드로 대체(또는 패치 적용)했습니다.치환 코드는 예를 들어 선형 테이블 검색을 바이너리 검색으로 대체하거나, 경우에 따라서는 비교적 느린 명령을 컨텍스트 내에서 기능적으로 동등한 알려진 더 빠른 명령으로 간단히 대체할 수 있습니다.이 기술은 현재 강도 감소로 알려져 있습니다.예를 들어 IBM/360 하드웨어에서는
CLI특정 모델에 따라 명령 속도가 2배에서 5배까지 빨라졌습니다.CLC단일 바이트 [5][6]비교에 대한 명령입니다.
이점
기존 프로그램을 다시 최적화하는 주요 장점은 이미 컴파일된 고객 프로그램(오브젝트 코드)의 재고량을 최소한의 노력으로 거의 즉시 개선할 수 있으며, 고정 비용(전용 소프트웨어 가격)으로 CPU 리소스를 절감할 수 있다는 것입니다.단점은 예를 들어 COBOL의 새로운 릴리스에서는 변경 가능성이 있는 내부 COBOL 알고리즘에 대응하기 위해 최적화 도구에 대한 유지보수가 필요하다는 것입니다.그러나 COBOL 컴파일러의 새로운 릴리스가 하드웨어 업그레이드와 자주 겹치기 때문에, 일반적으로 더 빠른 하드웨어는 애플리케이션 프로그램이 미리 최적화된 버전으로 복구되는 것을 보완하는 것 이상입니다(지원하는 옵티마이저가 출시될 때까지).
기타 옵티마이저
일부 바이너리 옵티마이저는 일반적인 데이터 압축 기술을 사용하여 바이너리 파일의 크기를 줄이고 스토리지 요건과 전송 및 로드 시간을 줄이지만 런타임 성능은 향상되지 않습니다.중복 라이브러리 모듈을 실제로 통합하면 메모리 요건도 줄어듭니다.
일부 바이너리 옵티마이저는 런타임 메트릭(프로파일링)을 사용하여 JIT 컴파일러와 유사한 기술을 사용하여 자기성찰적으로 성능을 향상시킵니다.
최근의 동향
다양한 플랫폼을 위해 최근에 개발된 '이진 옵티마이저'는 다음과 같습니다. 일부는 참신함을 주장하지만, 기본적으로 위에서 설명한 것과 동일한(또는 유사한) 기법을 사용합니다.
- IBM Automatic Binary Optimizer for z/OS(ABO)(2015)[1]
- IBM Automatic Binary Optimizer for z/OS(ABO) 평가판 클라우드 서비스(2020)[4]
- Sun Studio Binary Code[7] Optimizer - 미리 프로파일 단계가 필요합니다.
- IBM T. J. Watson Res의 Dynamic Binary Optimizer 설계 및 엔지니어링.센터 (2005년 [8][9]2월)
- QuaC: 고속 런타임 코드 생성을[10] 위한 바이너리 최적화(JIT의 일부 요소가 포함되어 있는 것 같습니다)
- 다이너모리오
- COBRA: 멀티스레드 애플리케이션을[11] 위한 적응형 런타임 바이너리 최적화 프레임워크
- Spike 실행 가능한 최적화 도구(Unix 커널)[12]
- 링크 타임 및 런타임에[13] "SOLAR" 소프트웨어 최적화
- 다이니마이즈: CPU 퍼포먼스 가상화[14]
- BOLT: LLVM 프레임워크 위에 구축된 포스트 링크 최적화 도구.샘플 기반 프로파일링을 통해 BOLT는 피드백 지향 최적화와 링크 타임 최적화를 모두 통해 구축된 고도로 최적화된 바이너리에서도 실제 애플리케이션의 성능을 향상시킵니다.GCC 및 Clang 컴파일러의 경우, BOLT는 FDO 및 LTO에 더해 바이너리 속도를 최대 20.4%, FDO 및 LTO [15]없이 바이너리를 구축한 경우 최대 52.1% 향상시킵니다.
「 」를 참조해 주세요.
레퍼런스
- ^ a b "IBM Automatic Binary Optimizer for z/OS - Overview". www.ibm.com. 2015. Archived from the original on 2020-10-18. Retrieved 2020-05-15.
- ^ "IBM Z Mainframe Servers and Software". www.ibm.com. Archived from the original on 2017-12-22. Retrieved 2018-08-23.
- ^ "IBM Enterprise COBOL for z/OS - Overview". www.ibm.com. Archived from the original on 2021-09-23. Retrieved 2021-10-27.
- ^ a b "IBM Automatic Binary Optimizer for z/OS Trial Cloud Service". optimizer.ibm.com. 2020. Archived from the original on 2021-01-19. Retrieved 2021-10-27.
- ^ "Archived copy" (PDF). Archived from the original (PDF) on 2010-07-11. Retrieved 2010-01-07.
{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크) - ^ Evans, Michael (1982-12-01). "Software engineering for the Cobol environment". Communications of the ACM. 25 (12): 874–882. doi:10.1145/358728.358732. S2CID 17268690. Archived from the original on 2021-10-27. Retrieved 2021-10-27.
- ^ "Archived copy". Archived from the original on 2010-07-22. Retrieved 2010-01-07.
{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크) - ^ Duesterwald, E. (2005). "Design and Engineering of a Dynamic Binary Optimizer". Proceedings of the IEEE. 93 (2): 436–448. doi:10.1109/JPROC.2004.840302. S2CID 2217101.
- ^ Xu, Chaohao; Li, Jianhui; Bao, Tao; Wang, Yun; Huang, Bo (2007-06-13). "Metadata driven memory optimizations in dynamic binary translator". Proceedings of the 3rd international conference on Virtual execution environments - VEE '07. Association for Computing Machinery. pp. 148–157. doi:10.1145/1254810.1254831. ISBN 978-1-59593630-1. S2CID 15234434. Archived from the original on 2021-10-27. Retrieved 2021-10-27 – via ACM Digital Library.
- ^ "Archived copy" (PDF). Archived (PDF) from the original on 2009-04-19. Retrieved 2010-01-07.
{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크) - ^ Kim, Jinpyo; Hsu, Wei-Chung; Yew, Pen-Chung (2007). "COBRA: An Adaptive Runtime Binary Optimization Framework for Multithreaded Applications". 2007 International Conference on Parallel Processing (ICPP 2007). p. 25. doi:10.1109/ICPP.2007.23. ISBN 978-0-7695-2933-2. S2CID 15079211.
- ^ "Archived copy" (PDF). Archived from the original (PDF) on 2010-09-11. Retrieved 2010-01-07.
{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크) - ^ ""SOLAR" Software Optimization at Link-time And Run-time".
- ^ "Dynimize Product Overview". dynimize.com. Archived from the original on 2021-10-25. Retrieved 2021-04-26.
- ^ Panchenko, Maksim; Auler, Rafael; Nell, Bill; Ottoni, Guilherme (2019-02-16). "BOLT: a practical binary optimizer for data centers and beyond". Proceedings of the 2019 IEEE/ACM International Symposium on Code Generation and Optimization: 2–14. arXiv:1807.06735. doi:10.1109/CGO.2019.8661201. ISBN 978-1-7281-1436-1. S2CID 49869552.