2.1.116. --[no_]unaligned_access

이 옵션을 사용하면 ARM 아키텍쳐 기반 프로세서에서 데이터에 대해 정렬되지 않은 액세스를 사용할 것인지 여부를 설정할 수 있습니다.

기본값

데이터에 대해 정렬되지 않은 액세스를 지원하는 ARM 아키텍쳐 기반 프로세서의 경우 기본값은 --unaligned_access입니다. 해당되는 프로세서는 다음과 같습니다.

  • ARMv6 아키텍처 기반의 모든 프로세서

  • ARMv7-A 및 ARMv7-R 아키텍쳐 기반의 프로세서

데이터에 대해 정렬되지 않은 액세스를 지원하지 않는 ARM 아키텍쳐 기반 프로세서의 경우 기본값은 --no_unaligned_access입니다. 해당되는 프로세서는 다음과 같습니다.

  • ARMv6 이전 아키텍처 기반의 모든 프로세서

  • ARMv7-M 아키텍처 기반의 프로세서

사용법

--unaligned_access

--cpu=ARM1136J-S와 같이 데이터에 대해 정렬되지 않은 액세스를 지원하는 프로세서에 --unaligned_access를 사용하여 패킹된 구조체에 대한 액세스 속도를 증가시킵니다.

정렬되지 않은 지원을 사용하려면 다음과 같은 작업을 수행해야 합니다.

  • 초기화 코드에서 CP15 레지스터 1의 A 비트 및 비트 1을 지워야 합니다.

  • 초기화 코드에서 CP15 레지스터 1의 U 비트 및 비트 22를 설정해야 합니다.

    U 비트의 초기값은 코어에 대한 UBITINIT 입력에 의해 결정됩니다.

RVCT 라이브러리에는 정렬되지 않은 액세스를 검색하도록 설계된 특정 라이브러리 함수의 특수 버전이 포함되어 있습니다. 정렬되지 않은 액세스 지원이 설정된 경우 RVCT 도구는 이러한 라이브러리 함수를 사용하여 정렬되지 않은 액세스를 이용합니다.

--no_unaligned_access

--no_unaligned_access를 사용하여 ARMv6 프로세서에서 정렬되지 않은 워드 및 하프워드 액세스의 생성을 해제합니다.

정렬되지 않은 액세스를 사용하지 않고 ARMv6 타겟에 대한 모듈로 4바이트 정렬 검사를 사용하려면 다음과 같은 작업을 수행해야 합니다.

  • 초기화 코드에서 CP15 레지스터 1의 A 비트 및 비트 1을 설정해야 합니다.

  • 초기화 코드에서 CP15 레지스터 1의 U 비트 및 비트 22를 설정해야 합니다.

    U 비트의 초기값은 코어에 대한 UBITINIT 입력에 의해 결정됩니다.

Note

long long 정수에 대한 정렬되지 않은 액세스와 같이 정렬되지 않은 더블워드 액세스는 ARM 프로세서 코어에서 지원하지 않습니다. 더블워드 액세스는 8바이트 또는 4바이트로 정렬되어야 합니다.

컴파일러에서는 모듈로 8바이트 정렬 검사를 지원하지 않습니다. 즉, CP15 레지스터 1의 구성 U = 0A = 1은 컴파일러에서 지원하지 않으며 RVCT 도구 세트에서는 더욱 더 일반적입니다.

RVCT 라이브러리에는 정렬되지 않은 액세스를 검색하도록 설계된 특정 라이브러리 함수의 특수 버전이 포함되어 있습니다. 정렬되지 않은 액세스 지원이 해제된 경우 이러한 향상된 라이브러리 함수가 사용되지 않도록 하려면 C 및 C++ 소스 파일의 조합과 어셈블리 언어 소스 파일을 컴파일할 때 컴파일러 명령 행과 어셈블러 명령 행 모두에 --no_unaligned_access를 지정해야 합니다.

제한

데이터에 대해 정렬되지 않은 액세스를 지원하는 프로세서를 위해 컴파일된 코드는 소프트웨어에서 선택한 정렬 지원과 프로세서 코어에서 선택한 정렬 지원이 일치하는 경우에만 올바르게 실행됩니다.

추가 참고

Copyright © 2007 ARM Limited. All rights reserved.ARM DUI 0348AK
Non-Confidential