본문 바로가기
Research/Linux

왜 커널을 컴파일 할때 -msoft-float 옵션을 사용합니까?

by sunnyan 2005. 10. 7.
728x90
프로세스가 시스템 콜을 호출 했을때 다시 그 프로세스로 돌아올 수 있도록 커널은 프로세서의 상태를 저장할 필요가 있습니다. 부동 소수점 레지스터는 크기가 커지기 쉽습니다. 그래서 이것들을 저장하거나 불러오는 작업은 비싼 작업입니다. 만약 FPU가 아직 연산을 실행 중이라면 CPU는 그 연산이 완료될때까지 기다리지 않으면 레지스터를 복사할 수 없습니다.

커널 내에서 부동 소수점 레지스터의 사용을 피하는 것이 시스템 콜 실행의 효율을 높일 수 있습니다. sparc등 몇몇 프로세서들은 부동 소수점 문맥 교환을 비활성화 하여 프로세스 교환때 부동 소수점 레지스터의 저장, 불러오기 처리를 생략할 수도 있습니다.

몇몇 아키텍쳐에서는 컴파일러에서 주요한 동작(블록 메모리 복사 등)동작의 속도 향상을 위해 부동 소수점 레지스터를 사용하기 때문에 이 기능을 사용하지 않기 위해서는 '-msoft-float' 옵션이 필요합니다.

728x90