volatile 키워드란?
- volatile 키워드는 volatile 키워드를 사용한 변수에 대한 컴파일 최적화에서 제외시키기 위해 사용하는 키워드입니다.
컴파일 최적화란?
- 컴파일러가 프로그래머가 작성한 소스 코드를 컴파일 할 때 불필요한 코드를 개선하거나 제거하여 성능 및 메모리 사용량을 최적화하는 기능을 말합니다.
volatile 키워드와 최적화 컴파일 on/off
- 컴파일 옵션에서 최적화 컴파일 '사용 안 함'으로 설정할 경우 모든 코드를 대상으로 컴파일 최적화를 수행하지 않기 때문에 컴파일 최적화를 끈 환경에서는 volatile 키워드는 어떤 기능도 수행하지 않습니다.
volatile과 비순차적 명령어 처리( OOOE : Out-of-order Execution )
- 컴파일러 최적화에 의한 명령어 코드 최적화랑 CPU가 명령어 파이프라인의 최적화를 위해서 사용하는 OOOE는 서로 완전히 다른 기능입니다. 컴파일 최적화는 컴파일러가 진행하고 OOOE는 CPU 내부에서 제공하는 기능이기 때문에 volatile을 사용한다고 해서 OOOE를 막을 수는 없습니다.
volatile 키워드를 사용하는 이유
- 컴파일 최적화로 인해서 이전에 레지스터에 저장된 주소를 재활용하여 명령어를 수행하거나 멀티 쓰레드 환경이나 임베디드 환경에서 프로그래머가 의도하지 않는 로직으로 수행될 수 있기 때문에 필요에 따라서 volatile을 사용해야합니다.
'Programming Language > C, C++' 카테고리의 다른 글
const 멤버 함수 (0) | 2023.01.27 |
---|---|
inline과 매크로 함수 (0) | 2023.01.27 |
#define, typedef, using 사용법과 차이 (0) | 2022.10.22 |
'if-else'문과 'switch-case'의 차이점 (0) | 2022.10.10 |
래퍼런스( Reference )와 포인터( Pointer )의 차이 (0) | 2022.10.08 |